diff --git a/generate-local.js b/generate-local.js index 2b393e7..d9a5f09 100755 --- a/generate-local.js +++ b/generate-local.js @@ -18,8 +18,10 @@ function exit() { } function semverVersion(value) { - if (!/^\d+\.\d+\.\d+$/.test(value)) { - throw new InvalidArgumentError('Not a correctly defined semver version i.e. major.minor.patch'); + if (!/^\d+\.\d+\.\d+(-[0-9A-Za-z-.]+)?$/.test(value)) { + throw new InvalidArgumentError( + 'Not a correctly defined semver version i.e. major.minor.patch or with prerelease', + ); } return value; } diff --git a/index.js b/index.js index fc55633..9d755a4 100755 --- a/index.js +++ b/index.js @@ -5,8 +5,10 @@ import { program, Option, InvalidArgumentError } from 'commander'; import chalk from 'chalk'; function semverVersion(value) { - if (!/^\d+\.\d+\.\d+$/.test(value)) { - throw new InvalidArgumentError('Not a correctly defined semver version i.e. major.minor.patch'); + if (!/^\d+\.\d+\.\d+(-[0-9A-Za-z-.]+)?$/.test(value)) { + throw new InvalidArgumentError( + 'Not a correctly defined semver version i.e. major.minor.patch or with prerelease', + ); } return value; } diff --git a/lib/get-latest-patch-versions.js b/lib/get-latest-patch-versions.js index 816053c..e45e0a0 100644 --- a/lib/get-latest-patch-versions.js +++ b/lib/get-latest-patch-versions.js @@ -1,11 +1,10 @@ import { groupBy } from 'lodash-es'; -import semverCompare from 'semver-compare'; -import semverUtils from 'semver-utils'; +import semver from 'semver'; export function getLatestPatchVersions(versions) { let groupedVersions = groupBy( - versions.sort(semverCompare).map(semverUtils.parse), - v => `${v.major}.${v.minor}`, + versions.sort((a, b) => semver.rcompare(a, b)), + v => `${semver.major(v)}.${semver.minor(v)}`, ); - return Object.values(groupedVersions).map(verGroup => verGroup.pop().version); + return Object.values(groupedVersions).map(verGroup => verGroup[0]); } diff --git a/lib/normalize-ids.js b/lib/normalize-ids.js index 4978232..71b2165 100644 --- a/lib/normalize-ids.js +++ b/lib/normalize-ids.js @@ -13,9 +13,9 @@ function extractRelationship({ id, type }) { return { id, type }; } -function filterForVersion(version) { +function filterForVersion(project, version) { return ({ relationships }) => { - const projectVersion = relationships['project-version'].data.id.split('-').pop(); + const projectVersion = relationships['project-version'].data.id.replace(`${project}-`, ''); return version.version === projectVersion; }; } @@ -56,7 +56,7 @@ async function normalizeIDs(pVersions, projectName) { let projectVersions = pVersions.map(version => { let classes = findType(jsonapidoc, 'class') - .filter(filterForVersion(version)) + .filter(filterForVersion(projectName, version)) .filter(removeLongDocsBecauseEmber1HasWeirdDocs); let namespaces = classes.filter(({ attributes }) => attributes.static === 1); @@ -67,7 +67,7 @@ async function normalizeIDs(pVersions, projectName) { namespaces.forEach(ns => (ns.type = 'namespace')); let modules = findType(jsonapidoc, 'module') - .filter(filterForVersion(version)) + .filter(filterForVersion(projectName, version)) .filter(curry(filter176)(projectName, version.version)); return { diff --git a/package.json b/package.json index 2da6272..603b836 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,8 @@ "semver-compare": "^1.0.0", "semver-extra": "^3.0.0", "semver-utils": "^1.1.4", - "yuidoc-to-jsonapi": "^0.4.1" + "yuidoc-to-jsonapi": "^0.4.1", + "semver": "^7.7.2" }, "devDependencies": { "chai": "^4.2.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a453072..97d9d31 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -68,6 +68,9 @@ importers: rsvp: specifier: ^4.8.5 version: 4.8.5 + semver: + specifier: ^7.7.2 + version: 7.7.2 semver-compare: specifier: ^1.0.0 version: 1.0.0 @@ -1488,8 +1491,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.6.3: - resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + semver@7.7.2: + resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} engines: {node: '>=10'} hasBin: true @@ -1919,7 +1922,7 @@ snapshots: builtins@5.1.0: dependencies: - semver: 7.6.3 + semver: 7.7.2 cacheable-request@2.1.4: dependencies: @@ -2201,7 +2204,7 @@ snapshots: eslint-compat-utils@0.5.1(eslint@8.57.1): dependencies: eslint: 8.57.1 - semver: 7.6.3 + semver: 7.7.2 eslint-config-prettier@9.1.0(eslint@8.57.1): dependencies: @@ -2227,7 +2230,7 @@ snapshots: is-core-module: 2.16.0 minimatch: 3.1.2 resolve: 1.22.9 - semver: 7.6.3 + semver: 7.7.2 eslint-plugin-prettier@5.2.1(eslint-config-prettier@9.1.0(eslint@8.57.1))(eslint@8.57.1)(prettier@3.4.2): dependencies: @@ -3181,7 +3184,7 @@ snapshots: semver@6.3.1: {} - semver@7.6.3: {} + semver@7.7.2: {} serialize-javascript@6.0.2: dependencies: