From bb33e241ed076672e1c7b577c755d8a56428082b Mon Sep 17 00:00:00 2001 From: Yavor Ivanov Date: Tue, 2 Jul 2024 11:58:38 +0300 Subject: [PATCH] Add taskUtil as dependency to moduleBundler --- lib/processors/bundlers/moduleBundler.js | 13 +- lib/tasks/bundlers/generateBundle.js | 2 +- .../bundlers/generateComponentPreload.js | 3 +- lib/tasks/bundlers/generateLibraryPreload.js | 2 +- test/lib/tasks/bundlers/generateBundle.js | 18 ++- .../bundlers/generateComponentPreload.js | 24 ++-- .../tasks/bundlers/generateLibraryPreload.js | 111 ++++++++++++------ 7 files changed, 111 insertions(+), 62 deletions(-) diff --git a/lib/processors/bundlers/moduleBundler.js b/lib/processors/bundlers/moduleBundler.js index 24d31dc54..a1c9f1703 100644 --- a/lib/processors/bundlers/moduleBundler.js +++ b/lib/processors/bundlers/moduleBundler.js @@ -135,11 +135,12 @@ const log = getLogger("builder:processors:bundlers:moduleBundler"); * @param {string} [parameters.options.targetUi5CoreVersion] Optional semver compliant sap.ui.core project version, e.g '2.0.0'. This allows the bundler to make assumptions on available runtime APIs. Omit if the ultimate UI5 version at runtime is unknown or can't be determined. + * @param {@ui5/project/build/helpers/TaskUtil|object} [parameters.taskUtil] TaskUtil * @returns {Promise} * Promise resolving with module bundle resources */ /* eslint-enable max-len */ -export default function({resources, options: { +export default function({resources, taskUtil, options: { bundleDefinition, bundleOptions, moduleNameMapping, targetUi5CoreVersion }}) { // Apply defaults without modifying the passed object @@ -152,12 +153,8 @@ export default function({resources, options: { ignoreMissingModules: false }, bundleOptions); - // Take the project from the resources if available. - // It's needed for specVersion check. If unavailable, - // the specVersion would be treated as the most recent one. - const project = resources?.[0]?.getProject(); // Apply defaults without modifying the passed object - bundleDefinition = applyDefaultsToBundleDefinition(bundleDefinition, project?.getSpecVersion()); + bundleDefinition = applyDefaultsToBundleDefinition(bundleDefinition, taskUtil); const pool = new LocatorResourcePool({ ignoreMissingModules: bundleOptions.ignoreMissingModules @@ -200,7 +197,7 @@ export default function({resources, options: { }); } -function applyDefaultsToBundleDefinition(bundleDefinition, specVersion) { +function applyDefaultsToBundleDefinition(bundleDefinition, taskUtil) { bundleDefinition.sections = bundleDefinition?.sections?.map((section) => { const defaultValues = { resolve: false, @@ -213,7 +210,7 @@ function applyDefaultsToBundleDefinition(bundleDefinition, specVersion) { // Since specVersion: 4.0 "require" section starts loading asynchronously. // If specVersion cannot be determined, the latest spec is taken into account. // This is a breaking change in specVersion: 4.0 - if (section.mode === "require" && (!specVersion || specVersion.gte("4.0"))) { + if (section.mode === "require" && (!taskUtil || taskUtil.getProject().getSpecVersion().gte("4.0"))) { defaultValues.async = true; } diff --git a/lib/tasks/bundlers/generateBundle.js b/lib/tasks/bundlers/generateBundle.js index d1fbc748c..92b0a6058 100644 --- a/lib/tasks/bundlers/generateBundle.js +++ b/lib/tasks/bundlers/generateBundle.js @@ -103,7 +103,7 @@ export default async function({ if (coreVersion) { options.targetUi5CoreVersion = coreVersion; } - return moduleBundler({options, resources}).then((bundles) => { + return moduleBundler({options, resources, taskUtil}).then((bundles) => { return Promise.all(bundles.map(({bundle, sourceMap} = {}) => { if (!bundle) { // Skip empty bundles diff --git a/lib/tasks/bundlers/generateComponentPreload.js b/lib/tasks/bundlers/generateComponentPreload.js index 2effe8f42..351608ce8 100644 --- a/lib/tasks/bundlers/generateComponentPreload.js +++ b/lib/tasks/bundlers/generateComponentPreload.js @@ -159,7 +159,8 @@ export default async function({ } return moduleBundler({ resources, - options + options, + taskUtil }); })); }) diff --git a/lib/tasks/bundlers/generateLibraryPreload.js b/lib/tasks/bundlers/generateLibraryPreload.js index b87756c2a..f40179877 100644 --- a/lib/tasks/bundlers/generateLibraryPreload.js +++ b/lib/tasks/bundlers/generateLibraryPreload.js @@ -265,7 +265,7 @@ export default async function({workspace, taskUtil, options: {skipBundles = [], if (coreVersion) { options.targetUi5CoreVersion = coreVersion; } - return moduleBundler({options, resources}); + return moduleBundler({options, resources, taskUtil}); }; return nonDbgWorkspace.byGlob("/**/*.{js,json,xml,html,properties,library,js.map}").then(async (resources) => { diff --git a/test/lib/tasks/bundlers/generateBundle.js b/test/lib/tasks/bundlers/generateBundle.js index 3546fb96d..d2f63a1f0 100644 --- a/test/lib/tasks/bundlers/generateBundle.js +++ b/test/lib/tasks/bundlers/generateBundle.js @@ -98,7 +98,8 @@ test.serial("generateBundle: No taskUtil, no bundleOptions", async (t) => { bundleDefinition, bundleOptions: undefined }, - resources + resources, + taskUtil: undefined }]); t.is(combo.byGlob.callCount, 1, @@ -171,7 +172,8 @@ test.serial("generateBundle: No bundleOptions, with taskUtil", async (t) => { bundleOptions: undefined, targetUi5CoreVersion: "1.120.0", }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, @@ -292,7 +294,8 @@ test.serial("generateBundle: bundleOptions: optimize=false, with taskUtil", asyn }, targetUi5CoreVersion: "1.120.0", }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, @@ -415,7 +418,8 @@ test.serial("generateBundle: bundleOptions: sourceMap=false, with taskUtil", asy bundleOptions, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, @@ -513,7 +517,8 @@ test.serial("generateBundle: Empty bundle (skipIfEmpty=true)", async (t) => { bundleOptions, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, @@ -640,7 +645,8 @@ test.serial("generateBundle: No bundleOptions, with taskUtil, UI5 Version >= 2", bundleOptions: undefined, targetUi5CoreVersion: "2.0.0", }, - resources + resources, + taskUtil }]); t.is(combo.byGlob.callCount, 0, diff --git a/test/lib/tasks/bundlers/generateComponentPreload.js b/test/lib/tasks/bundlers/generateComponentPreload.js index 93fe021af..c68a5cd36 100644 --- a/test/lib/tasks/bundlers/generateComponentPreload.js +++ b/test/lib/tasks/bundlers/generateComponentPreload.js @@ -96,7 +96,8 @@ test.serial("generateComponentPreload - one namespace", async (t) => { ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(byGlob.callCount, 1, @@ -188,7 +189,8 @@ test.serial("generateComponentPreload - one namespace - excludes", async (t) => ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(byGlob.callCount, 1, @@ -293,7 +295,8 @@ test.serial("generateComponentPreload - one namespace - excludes w/o namespace", ignoreMissingModules: true } }, - resources + resources, + taskUtil }]); t.is(byGlob.callCount, 1, @@ -414,7 +417,8 @@ test.serial("generateComponentPreload - multiple namespaces - excludes", async ( ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -455,7 +459,8 @@ test.serial("generateComponentPreload - multiple namespaces - excludes", async ( ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(byGlob.callCount, 1, @@ -599,7 +604,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -648,7 +654,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -690,7 +697,8 @@ test.serial("generateComponentPreload - nested namespaces - excludes", async (t) ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(log.warn.callCount, 1, "log.warn should be called once"); diff --git a/test/lib/tasks/bundlers/generateLibraryPreload.js b/test/lib/tasks/bundlers/generateLibraryPreload.js index d6f66d8e0..ec1ef8113 100644 --- a/test/lib/tasks/bundlers/generateLibraryPreload.js +++ b/test/lib/tasks/bundlers/generateLibraryPreload.js @@ -82,7 +82,8 @@ test.serial("generateLibraryPreload", async (t) => { ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -111,7 +112,8 @@ test.serial("generateLibraryPreload", async (t) => { skipIfEmpty: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -136,7 +138,8 @@ test.serial("generateLibraryPreload", async (t) => { skipIfEmpty: true } }, - resources + resources, + taskUtil: undefined }]); t.is(workspace.byGlob.callCount, 2, @@ -209,7 +212,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -239,7 +243,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: false } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -287,7 +292,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: true } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -328,7 +334,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( addTryCatchRestartWrapper: false } }, - resources + resources, + taskUtil: undefined }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -386,7 +393,8 @@ test.serial("generateLibraryPreload for sap.ui.core (w/o ui5loader.js)", async ( ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(workspace.byGlob.callCount, 2, @@ -503,7 +511,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -535,7 +544,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -584,7 +594,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -627,7 +638,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -686,7 +698,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -716,7 +729,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -742,7 +756,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js)", async (t }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); }); @@ -846,7 +861,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -878,7 +894,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -927,7 +944,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -970,7 +988,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined moduleNameMapping: {}, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -1029,7 +1048,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -1059,7 +1079,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -1085,7 +1106,8 @@ test.serial("generateLibraryPreload for sap.ui.core with old specVersion defined }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); }); @@ -1194,7 +1216,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1224,7 +1247,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1250,7 +1274,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.is(workspace.byGlob.callCount, 2, @@ -1370,7 +1395,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1400,7 +1426,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1426,7 +1453,8 @@ test.serial("generateLibraryPreload for sap.ui.core with own bundle configuratio }, targetUi5CoreVersion: "1.120.0" }, - resources + resources, + taskUtil }]); t.is(workspace.byGlob.callCount, 2, @@ -1549,7 +1577,8 @@ test.serial("generateLibraryPreload with excludes", async (t) => { ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(workspace.byGlob.callCount, 2, @@ -1614,7 +1643,8 @@ test.serial("generateLibraryPreload with invalid excludes", async (t) => { ignoreMissingModules: true } }, - resources + resources, + taskUtil: undefined }]); t.is(log.warn.callCount, 2, "log.warn should be called twice"); @@ -1737,7 +1767,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(1).args, [{ options: { @@ -1769,7 +1800,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi moduleNameMapping: {}, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(2).args, [{ options: { @@ -1818,7 +1850,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(3).args, [{ options: { @@ -1861,7 +1894,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi moduleNameMapping: {}, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(4).args, [{ options: { @@ -1920,7 +1954,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(5).args, [{ options: { @@ -1950,7 +1985,8 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); t.deepEqual(moduleBundlerStub.getCall(6).args, [{ options: { @@ -1976,6 +2012,7 @@ test.serial("generateLibraryPreload for sap.ui.core (/w ui5loader.js), UI5 Versi }, targetUi5CoreVersion: "2.0.0" }, - resources + resources, + taskUtil }]); });