Skip to content

Commit 473a8e9

Browse files
committed
Support pre-release versions
1 parent 7b1aa80 commit 473a8e9

File tree

1 file changed

+37
-9
lines changed

1 file changed

+37
-9
lines changed

prember-urls.js

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,21 @@ module.exports = function () {
2424

2525
const fullProjectVersions = readdirSync(
2626
`ember-api-docs-data/json-docs/${p}`
27-
).filter((v) => v.match(/\d+\.\d+\.\d+/));
27+
).filter((v) => !!semver.valid(v));
2828

2929
// add landing page for each of the projects versions
30-
const projectVersions = fullProjectVersions.map((v) => {
31-
let [, major, minor] = v.match(/(\d+)\.(\d+)\.\d+/);
32-
return `${major}.${minor}`;
33-
}); // uniq
30+
const projectVersions = fullProjectVersions
31+
.map((v) => {
32+
let parsed = semver.parse(v);
33+
if (!parsed) return null;
34+
if (parsed.prerelease && parsed.prerelease.length > 0) {
35+
return `${parsed.major}.${parsed.minor}.${
36+
parsed.patch
37+
}-${parsed.prerelease.join('.')}`;
38+
}
39+
return `${parsed.major}.${parsed.minor}`;
40+
})
41+
.filter(Boolean);
3442

3543
const uniqueProjectVersions = [...new Set(projectVersions)];
3644

@@ -45,9 +53,18 @@ module.exports = function () {
4553
const oldVersions = ['1.13', '2.18', '3.28', '4.4', '4.8', '4.12'];
4654

4755
uniqueProjectVersions.forEach((uniqVersion) => {
56+
let isPreRelease = uniqVersion.includes('-');
57+
let baseVersion = isPreRelease ? uniqVersion.split('-')[0] : uniqVersion;
58+
59+
if (
60+
!oldVersions.includes(baseVersion) &&
61+
!semver.valid(`${baseVersion}.0`)
62+
) {
63+
return;
64+
}
4865
if (
49-
!oldVersions.includes(uniqVersion) &&
50-
!semver.gte(`${uniqVersion}.0`, '5.0.0')
66+
!oldVersions.includes(baseVersion) &&
67+
!semver.gte(`${baseVersion}.0`, '5.0.0')
5168
) {
5269
return;
5370
}
@@ -56,14 +73,25 @@ module.exports = function () {
5673

5774
const sortedPatchVersions = fullProjectVersions
5875
.filter((projectVersion) => {
59-
// console.log("comparing", projectVersion, uniqVersion, semver.satisfies(projectVersion, uniqVersion))
60-
return semver.satisfies(projectVersion, uniqVersion);
76+
let parsed = semver.parse(projectVersion);
77+
if (!parsed) return false;
78+
if (isPreRelease) {
79+
return (
80+
`${parsed.major}.${parsed.minor}.${
81+
parsed.patch
82+
}-${parsed.prerelease.join('.')}` === uniqVersion
83+
);
84+
} else {
85+
return `${parsed.major}.${parsed.minor}` === uniqVersion;
86+
}
6187
})
6288
.sort(cmp);
6389

6490
const highestPatchVersion =
6591
sortedPatchVersions[sortedPatchVersions.length - 1];
6692

93+
if (!highestPatchVersion) return;
94+
6795
const revIndex = require(`${__dirname}/ember-api-docs-data/rev-index/${p}-${highestPatchVersion}.json`);
6896

6997
['classes', 'namespaces', 'modules'].forEach((entity) => {

0 commit comments

Comments
 (0)