From c5fb2711f688f612647e7907736cf0a11b62a360 Mon Sep 17 00:00:00 2001 From: Matthias Osswald Date: Fri, 14 Jul 2023 09:39:52 +0200 Subject: [PATCH] [FIX] Bundling: Detect manifest.json dependency of Components / Libraries --- lib/lbt/analyzer/ComponentAnalyzer.js | 1 + lib/lbt/resources/ResourcePool.js | 17 +++++++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/lbt/analyzer/ComponentAnalyzer.js b/lib/lbt/analyzer/ComponentAnalyzer.js index aa516bedd..2da95f851 100644 --- a/lib/lbt/analyzer/ComponentAnalyzer.js +++ b/lib/lbt/analyzer/ComponentAnalyzer.js @@ -54,6 +54,7 @@ class ComponentAnalyzer { try { const manifestResource = await this._pool.findResource(manifestName).catch(() => null); if ( manifestResource ) { + info.addDependency(manifestName); const fileContent = await manifestResource.buffer(); this._analyzeManifest( JSON.parse(fileContent.toString()), info ); } else { diff --git a/lib/lbt/resources/ResourcePool.js b/lib/lbt/resources/ResourcePool.js index 8bd68288f..0dcd4b942 100644 --- a/lib/lbt/resources/ResourcePool.js +++ b/lib/lbt/resources/ResourcePool.js @@ -4,6 +4,7 @@ import SmartTemplateAnalyzer from "../analyzer/SmartTemplateAnalyzer.js"; import XMLCompositeAnalyzer from "../analyzer/XMLCompositeAnalyzer.js"; import JSModuleAnalyzer from "../analyzer/JSModuleAnalyzer.js"; import XMLTemplateAnalyzer from "../analyzer/XMLTemplateAnalyzer.js"; +import analyzeLibraryJS from "../analyzer/analyzeLibraryJS.js"; import {getDependencyInfos} from "./LibraryFileAnalyzer.js"; import ModuleInfo from "./ModuleInfo.js"; import ResourceFilterList from "./ResourceFilterList.js"; @@ -95,6 +96,22 @@ async function determineDependencyInfo(resource, rawInfo, pool) { new ComponentAnalyzer(pool).analyze(resource, info), new SmartTemplateAnalyzer(pool).analyze(resource, info) ); + } else if ( /(?:^|\/)library\.js/.test(resource.name) ) { + promises.push( + (async () => { + const ui5Resource = resource.resource; + const libInfo = await analyzeLibraryJS(ui5Resource); + if (!libInfo) { + return; + } + const manifestName = resource.name.replace(/library\.js$/, "manifest.json"); + const manifestResource = await pool.findResource(manifestName).catch(() => null); + if (!manifestResource) { + return; + } + info.addDependency(manifestName); + })() + ) } await Promise.all(promises);