From 17bca1886c414b26b5f765ec675648445339e5f7 Mon Sep 17 00:00:00 2001 From: Dan Allen Date: Fri, 17 Oct 2025 15:15:14 -0600 Subject: [PATCH] resolves #128 prioritize export from own component version when adding export to exports array on page --- CHANGELOG.adoc | 1 + packages/assembler/lib/assemble-content.js | 8 +++++- .../assembler/test/assemble-content-test.js | 25 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc index 457338b..2128331 100644 --- a/CHANGELOG.adoc +++ b/CHANGELOG.adoc @@ -9,6 +9,7 @@ For a detailed view of what's changed, refer to the {url-repo}/commits[commit hi === Changed * convert page reference to internal reference for any page included in assembly (#127) +* prioritize export from own component version when adding export to exports array on page (#128) === Fixed diff --git a/packages/assembler/lib/assemble-content.js b/packages/assembler/lib/assemble-content.js index 91bf6f5..2b39c8d 100644 --- a/packages/assembler/lib/assemble-content.js +++ b/packages/assembler/lib/assemble-content.js @@ -103,7 +103,13 @@ async function assembleContent (playbook, contentCatalog, converter, { configSou } pages.forEach((fragment, page) => { const assemblerMeta = (page.assembler ??= {}) - ;(assemblerMeta.exports ??= []).push({ fragment, file }) + const exports = (assemblerMeta.exports ??= []) + const exportEntry = { fragment, file } + const insertIdx = exports.findIndex( + ({ file: candidate }) => + !(candidate.src.component === page.src.component && candidate.src.version === page.src.version) + ) + ~insertIdx ? exports.splice(insertIdx, 0, exportEntry) : exports.push(exportEntry) const extnameProp = extname.slice(1) if (extnameProp in assemblerMeta) return Object.defineProperty(assemblerMeta, extnameProp, { diff --git a/packages/assembler/test/assemble-content-test.js b/packages/assembler/test/assemble-content-test.js index 9867713..9ea01aa 100644 --- a/packages/assembler/test/assemble-content-test.js +++ b/packages/assembler/test/assemble-content-test.js @@ -540,6 +540,31 @@ describe('assembleContent()', () => { assert.equal(firstPage.assembler.pdf.file, actualFirstRun[0]) }) + it('should prioritize exports for current component version when storing export on page', async () => { + const scenario = 'insert-pages' + const { playbook, contentCatalog, assemblerConfig: configSource } = await loadScenario(scenario, __dirname) + configSource.build.clean = true + const firstPage = contentCatalog.getPages()[0] + ;(firstPage.assembler = {}).exports = [ + { + file: { + contents: Buffer.from('PDF contents'), + src: { + component: 'other-component', + version: '', + module: 'ROOT', + family: 'export', + relative: 'the-export.pdf', + }, + }, + }, + ] + const actual = await assembleContent(playbook, contentCatalog, convertToPdf, { configSource }) + assert.equal(actual.length, 1) + assert.equal(firstPage.assembler.exports.length, 2) + assert.equal(actual[0], firstPage.assembler.exports[0].file) + }) + it('should use alternative navigation with default profile', async () => { const scenario = 'alternate-nav' const { -- GitLab