diff --git a/app/adapters/application.js b/app/adapters/application.js index 2a3f95b0..3d6cabab 100644 --- a/app/adapters/application.js +++ b/app/adapters/application.js @@ -44,7 +44,8 @@ export default class Application extends JSONAPIAdapter { let projectName = this.currentProject; if (['namespace', 'class', 'module'].indexOf(modelName) > -1) { - let [version] = id.replace(`${projectName}-`, '').split('-'); + const match = id.match(/\d+\.\d+\.\d+(?:-[\w.]+)?/); + const version = match ? match[0] : null; let revId = this.metaStore.getRevId(projectName, version, modelName, id); let modelNameToUse = modelName; diff --git a/app/utils/get-compact-version.js b/app/utils/get-compact-version.js index 438f4192..708cfd40 100644 --- a/app/utils/get-compact-version.js +++ b/app/utils/get-compact-version.js @@ -1,3 +1,6 @@ export default function getCompactVersion(fullVersion) { + if (fullVersion.includes('-')) { + return fullVersion; + } return fullVersion.split('.').slice(0, 2).join('.'); } diff --git a/package.json b/package.json index 3faba33e..72f330c7 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "test": "tests" }, "scripts": { - "clone": "rm -rf ember-api-docs-data && git clone --depth=1 https://github.com/ember-learn/ember-api-docs-data.git", + "clone": "rm -rf ember-api-docs-data && git clone --depth=1 -b update-api-docs-6.8.0-alpha.1 https://github.com/ember-learn/ember-api-docs-data.git", "build": "ember build --environment=production", "lint": "npm-run-all --aggregate-output --continue-on-error --parallel \"lint:!(fix)\"", "lint:fix": "npm-run-all --aggregate-output --continue-on-error --parallel lint:*:fix", diff --git a/prember-urls.js b/prember-urls.js index e15a5f75..4dae3f3a 100644 --- a/prember-urls.js +++ b/prember-urls.js @@ -24,13 +24,21 @@ module.exports = function () { const fullProjectVersions = readdirSync( `ember-api-docs-data/json-docs/${p}` - ).filter((v) => v.match(/\d+\.\d+\.\d+/)); + ).filter((v) => !!semver.valid(v)); // add landing page for each of the projects versions - const projectVersions = fullProjectVersions.map((v) => { - let [, major, minor] = v.match(/(\d+)\.(\d+)\.\d+/); - return `${major}.${minor}`; - }); // uniq + const projectVersions = fullProjectVersions + .map((v) => { + let parsed = semver.parse(v); + if (!parsed) return null; + if (parsed.prerelease && parsed.prerelease.length > 0) { + return `${parsed.major}.${parsed.minor}.${ + parsed.patch + }-${parsed.prerelease.join('.')}`; + } + return `${parsed.major}.${parsed.minor}`; + }) + .filter(Boolean); const uniqueProjectVersions = [...new Set(projectVersions)]; @@ -55,9 +63,18 @@ module.exports = function () { ]; uniqueProjectVersions.forEach((uniqVersion) => { + let isPreRelease = uniqVersion.includes('-'); + let baseVersion = isPreRelease ? uniqVersion.split('-')[0] : uniqVersion; + if ( - !oldVersions.includes(uniqVersion) && - !semver.gte(`${uniqVersion}.0`, '6.0.0') + !oldVersions.includes(baseVersion) && + !semver.valid(`${baseVersion}.0`) + ) { + return; + } + if ( + !oldVersions.includes(baseVersion) && + !semver.gte(`${baseVersion}.0`, '6.0.0') ) { return; } @@ -66,14 +83,25 @@ module.exports = function () { const sortedPatchVersions = fullProjectVersions .filter((projectVersion) => { - // console.log("comparing", projectVersion, uniqVersion, semver.satisfies(projectVersion, uniqVersion)) - return semver.satisfies(projectVersion, uniqVersion); + let parsed = semver.parse(projectVersion); + if (!parsed) return false; + if (isPreRelease) { + return ( + `${parsed.major}.${parsed.minor}.${ + parsed.patch + }-${parsed.prerelease.join('.')}` === uniqVersion + ); + } else { + return `${parsed.major}.${parsed.minor}` === uniqVersion; + } }) .sort(cmp); const highestPatchVersion = sortedPatchVersions[sortedPatchVersions.length - 1]; + if (!highestPatchVersion) return; + const revIndex = require(`${__dirname}/ember-api-docs-data/rev-index/${p}-${highestPatchVersion}.json`); ['classes', 'namespaces', 'modules'].forEach((entity) => {