@antora/content-classifier 3.0.2 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -76,14 +76,23 @@ class ContentCatalog {
76
76
  if (componentVersions.find(({ version: candidate }) => candidate === version)) {
77
77
  throw new Error(`Duplicate version detected for component ${name}: ${version}`)
78
78
  }
79
- const insertIdx = prerelease
80
- ? componentVersions.findIndex(({ version: candidateVersion, prerelease: candidatePrerelease }) =>
81
- candidatePrerelease ? versionCompare(candidateVersion, version) > 0 : true
82
- )
83
- : componentVersions.findIndex(({ version: candidateVersion, prerelease: candidatePrerelease }) =>
84
- candidatePrerelease ? false : versionCompare(candidateVersion, version) > 0
85
- )
86
- ~insertIdx ? componentVersions.splice(insertIdx, 0, componentVersion) : componentVersions.push(componentVersion)
79
+ let lastVerdict
80
+ const insertIdx = version
81
+ ? componentVersions.findIndex(({ version: candidateVersion, prerelease: candidatePrerelease }) => {
82
+ return (lastVerdict = versionCompare(candidateVersion, version)) > 1
83
+ ? !!prerelease === !!candidatePrerelease
84
+ : lastVerdict > 0 || (lastVerdict < -1 && prerelease && !candidatePrerelease)
85
+ })
86
+ : prerelease
87
+ ? -1
88
+ : ~(~componentVersions.findIndex(({ prerelease: candidatePrerelease }) => !candidatePrerelease) || -1)
89
+ if (~insertIdx) {
90
+ componentVersions.splice(insertIdx, 0, componentVersion)
91
+ } else if (lastVerdict === -1 || !prerelease) {
92
+ componentVersions.push(componentVersion)
93
+ } else {
94
+ componentVersions.unshift(componentVersion)
95
+ }
87
96
  if ((component.latest = componentVersions.find((candidate) => !candidate.prerelease))) {
88
97
  if (componentVersions[0] !== component.latest) component.latestPrerelease = componentVersions[0]
89
98
  } else {
@@ -27,7 +27,7 @@ function versionCompareDesc (a, b) {
27
27
  if (semverA) {
28
28
  return semverB ? -semverCompare(semverA, semverB) : 1
29
29
  } else {
30
- return semverB ? -1 : -a.localeCompare(b, 'en', { numeric: true })
30
+ return semverB ? -1 : -2 * a.localeCompare(b, 'en', { numeric: true })
31
31
  }
32
32
  }
33
33
  return a ? 1 : -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@antora/content-classifier",
3
- "version": "3.0.2",
3
+ "version": "3.0.3",
4
4
  "description": "Organizes aggregated content into a virtual file catalog for use in an Antora documentation pipeline.",
5
5
  "license": "MPL-2.0",
6
6
  "author": "OpenDevise Inc. (https://opendevise.com)",
@@ -16,7 +16,7 @@
16
16
  },
17
17
  "main": "lib/index.js",
18
18
  "dependencies": {
19
- "@antora/logger": "3.0.2",
19
+ "@antora/logger": "3.0.3",
20
20
  "mime-types": "~2.1",
21
21
  "vinyl": "~2.2"
22
22
  },