@forge/cli
13.1.013.2.0-next.4-experimental-c6a3916
out/service/module-file-service.js~
out/service/module-file-service.jsModified+22−2
Index: package/out/service/module-file-service.js
===================================================================
--- package/out/service/module-file-service.js
+++ package/out/service/module-file-service.js
@@ -9,8 +9,9 @@
const manifest_merger_1 = require("../module-add/manifest-merger");
const dependencies_merger_1 = require("../module-add/dependencies-merger");
const vite_scaffolder_1 = require("../module-add/vite-scaffolder");
const TEMPLATE_FILES_DIR = 'files';
+const MULTI_ENTRY_PRODUCTS = new Set(['confluence', 'jira', 'jira-service-management']);
class ModuleAddFileService {
checkDependencies(template, force) {
const cwd = process.cwd();
const templateDependencies = template.dependencies ?? {};
@@ -53,9 +54,9 @@
scaffoldChanges,
warnings
};
}
- this.collectScaffoldChanges(cwd, template, manifestChange, options, scaffoldChanges, warnings);
+ this.collectScaffoldChanges(cwd, template, variables, manifestChange, options, scaffoldChanges, warnings);
this.assertNoTargetConflicts(cwd, plannedFiles, options);
await this.copyTemplateFiles(cwd, template, variables);
(0, manifest_merger_1.applyManifestChange)(manifestChange);
for (const change of scaffoldChanges)
@@ -81,13 +82,32 @@
if (unsupportedOps.length) {
warnings.push(cli_shared_1.Text.module.add.warnUnsupportedFileOperations(unsupportedOps.map((op) => `${op.type} ${op.target}`)));
}
}
- collectScaffoldChanges(cwd, template, manifestChange, options, scaffoldChanges, warnings) {
+ collectScaffoldChanges(cwd, template, variables, manifestChange, options, scaffoldChanges, warnings) {
if (!manifestChange || template.uiFramework !== 'custom-ui')
return;
const beforeResources = (yaml_1.default.parse(manifestChange.before)?.resources ?? []);
const afterResources = (yaml_1.default.parse(manifestChange.after)?.resources ?? []);
+ const beforeKeys = new Set(beforeResources.map((r) => r.key));
+ if (!MULTI_ENTRY_PRODUCTS.has(template.product)) {
+ const primaryKey = variables.resourceKey;
+ if (primaryKey && beforeKeys.has(primaryKey)) {
+ throw new Error(cli_shared_1.Text.module.add.errorDuplicateResource(primaryKey));
+ }
+ const newResources = afterResources.filter((r) => !beforeKeys.has(r.key));
+ for (const resource of newResources) {
+ const viteChange = (0, vite_scaffolder_1.planGenericViteConfig)(cwd, resource.key);
+ if (viteChange)
+ scaffoldChanges.push(viteChange);
+ if (resource.key !== primaryKey) {
+ const pkgPlan = (0, dependencies_merger_1.planFrontendPackageJson)(cwd, template, { ...variables, resourceKey: resource.key }, options.force === true);
+ if (pkgPlan.packageJsonChange)
+ scaffoldChanges.push(pkgPlan.packageJsonChange);
+ }
+ }
+ return;
+ }
const beforeEntriesByKey = new Map(beforeResources.map((r) => [r.key, new Set(Object.keys(r.entry ?? {}))]));
for (const resource of afterResources) {
const beforeEntries = beforeEntriesByKey.get(resource.key) ?? new Set();
const newEntries = Object.entries(resource.entry ?? {}).filter(([name]) => !beforeEntries.has(name));