From ba931e8effb806c1c7ce25ce5eba8d5c33e0c639 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 10 Feb 2026 22:41:30 +0100 Subject: [PATCH 1/2] fix: remove `sortChanges` util --- src/generators/jsx-ast/utils/buildContent.mjs | 10 ++---- src/metadata.mjs | 4 +-- src/utils/__tests__/generators.test.mjs | 35 ------------------- src/utils/generators.mjs | 17 --------- 4 files changed, 4 insertions(+), 62 deletions(-) diff --git a/src/generators/jsx-ast/utils/buildContent.mjs b/src/generators/jsx-ast/utils/buildContent.mjs index 030bfd6b..5444b97a 100644 --- a/src/generators/jsx-ast/utils/buildContent.mjs +++ b/src/generators/jsx-ast/utils/buildContent.mjs @@ -8,7 +8,6 @@ import { buildMetaBarProps } from './buildBarProps.mjs'; import createPropertyTable from './buildPropertyTable.mjs'; import { DOC_NODE_BLOB_BASE_URL } from '../../../constants.mjs'; import { enforceArray } from '../../../utils/array.mjs'; -import { sortChanges } from '../../../utils/generators.mjs'; import createQueries from '../../../utils/queries/index.mjs'; import { JSX_IMPORTS } from '../../web/constants.mjs'; import { @@ -53,17 +52,14 @@ export const gatherChangeEntries = (entry, remark) => { * @param {import('unified').Processor} remark - The remark processor */ export const createChangeElement = (entry, remark) => { - const changeEntries = gatherChangeEntries(entry, remark); + const changes = gatherChangeEntries(entry, remark); - if (!changeEntries.length) { + if (!changes.length) { return null; } - // Sort changes by versions and reverse for newest first - const sortedChanges = sortChanges(changeEntries, 'versions'); - return createJSXElement(JSX_IMPORTS.ChangeHistory.name, { - changes: sortedChanges, + changes, className: 'change-history', }); }; diff --git a/src/metadata.mjs b/src/metadata.mjs index 75f00d3d..885c494c 100644 --- a/src/metadata.mjs +++ b/src/metadata.mjs @@ -2,8 +2,6 @@ import { u as createTree } from 'unist-builder'; -import { sortChanges } from './utils/generators.mjs'; - /** * This method allows us to handle creation of Metadata entries * within the current scope of API docs being parsed @@ -131,7 +129,7 @@ const createMetadata = slugger => { removed_in: removed, n_api_version: napiVersion, updates, - changes: sortChanges(changes), + changes, heading: internalMetadata.heading, stability: internalMetadata.stability, content: section, diff --git a/src/utils/__tests__/generators.test.mjs b/src/utils/__tests__/generators.test.mjs index 2a64b6c6..d6ef025b 100644 --- a/src/utils/__tests__/generators.test.mjs +++ b/src/utils/__tests__/generators.test.mjs @@ -6,7 +6,6 @@ import { getVersionFromSemVer, coerceSemVer, getCompatibleVersions, - sortChanges, } from '../generators.mjs'; describe('groupNodesByModule', () => { @@ -80,37 +79,3 @@ describe('getCompatibleVersions', () => { assert.equal(result.length, 2); }); }); - -describe('sortChanges', () => { - it('sorts changes by version', () => { - const changes = [ - { version: '18.5.0' }, - { version: '16.2.0' }, - { version: '20.1.0' }, - ]; - - const result = sortChanges(changes); - assert.equal(result[0].version, '20.1.0'); - assert.equal(result[1].version, '18.5.0'); - assert.equal(result[2].version, '16.2.0'); - }); - - it('handles array versions', () => { - const changes = [ - { version: ['18.5.0', '18.4.0'] }, - { version: ['16.2.0'] }, - ]; - - const result = sortChanges(changes); - assert.equal(result[0].version[0], '18.5.0'); - assert.equal(result[1].version[0], '16.2.0'); - }); - - it('sorts by custom key', () => { - const changes = [{ customVersion: '18.0.0' }, { customVersion: '16.0.0' }]; - - const result = sortChanges(changes, 'customVersion'); - assert.equal(result[0].customVersion, '18.0.0'); - assert.equal(result[1].customVersion, '16.0.0'); - }); -}); diff --git a/src/utils/generators.mjs b/src/utils/generators.mjs index 08dff9dd..f94de5ff 100644 --- a/src/utils/generators.mjs +++ b/src/utils/generators.mjs @@ -80,23 +80,6 @@ export const getCompatibleVersions = (introduced, releases) => { return releases.filter(release => release.version.major >= coercedMajor); }; -/** - * Maps `updates` into `changes` format, merges them and sorts them by version - * รง - * @param {Array} changes Changes to be merged into updates - * @param {[string='version']} key The key where versions are stored - * @returns {Array} Mapped, merged and sorted changes - */ -export const sortChanges = (changes, key = 'version') => { - // Sorts the updates and changes by the first version on a given entry - return changes.toSorted((a, b) => { - const aVersion = Array.isArray(a[key]) ? a[key][0] : a[key]; - const bVersion = Array.isArray(b[key]) ? b[key][0] : b[key]; - - return compare(coerceSemVer(bVersion), coerceSemVer(aVersion)); - }); -}; - /** * Assigns properties from one or more source objects to the target object * **without overwriting existing keys** in the target. From ef07b8b3a5c5c050edeb7df7e0548810ab1506d1 Mon Sep 17 00:00:00 2001 From: Antoine du Hamel Date: Tue, 10 Feb 2026 22:45:10 +0100 Subject: [PATCH 2/2] fixup! --- src/utils/generators.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/utils/generators.mjs b/src/utils/generators.mjs index f94de5ff..f6d65ef6 100644 --- a/src/utils/generators.mjs +++ b/src/utils/generators.mjs @@ -1,6 +1,6 @@ 'use strict'; -import { coerce, compare, major } from 'semver'; +import { coerce, major } from 'semver'; import { DOC_API_BASE_URL_VERSION } from '../constants.mjs';