diff --git a/src/Umbraco.Web.UI.Client/src/packages/core/modules.js b/src/Umbraco.Web.UI.Client/src/packages/core/modules.js new file mode 100644 index 0000000000..051a9d0ad6 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/core/modules.js @@ -0,0 +1,62 @@ +export const modules = [ + { + src: 'action', + }, + { + src: 'collection', + }, + { + src: 'components', + }, + { + src: 'content-type', + }, + { + src: 'debug', + }, + { + src: 'entity-action', + }, + { + src: 'entity-bulk-action', + }, + { + src: 'extension-registry', + }, + { + src: 'id', + }, + { + src: 'menu', + }, + { + src: 'modal', + }, + { + src: 'notification', + }, + { + src: 'picker-input', + }, + { + src: 'section', + }, + { + src: 'sorter', + }, + { + src: 'store', + }, + { + src: 'tree', + }, + { + src: 'variant', + }, + { + src: 'workspace', + }, + { + src: 'property-editors', + }, +]; diff --git a/src/Umbraco.Web.UI.Client/src/packages/documents/modules.js b/src/Umbraco.Web.UI.Client/src/packages/documents/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/documents/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/media/modules.js b/src/Umbraco.Web.UI.Client/src/packages/media/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/media/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/members/modules.js b/src/Umbraco.Web.UI.Client/src/packages/members/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/members/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/packages/modules.js b/src/Umbraco.Web.UI.Client/src/packages/packages/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/packages/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/search/modules.js b/src/Umbraco.Web.UI.Client/src/packages/search/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/search/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/modules.js b/src/Umbraco.Web.UI.Client/src/packages/settings/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/tags/modules.js b/src/Umbraco.Web.UI.Client/src/packages/tags/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/tags/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/templating/modules.js b/src/Umbraco.Web.UI.Client/src/packages/templating/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/templating/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/translation/modules.js b/src/Umbraco.Web.UI.Client/src/packages/translation/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/translation/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/modules.js b/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/umbraco-news/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/packages/users/modules.js b/src/Umbraco.Web.UI.Client/src/packages/users/modules.js new file mode 100644 index 0000000000..dce5e88291 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/packages/users/modules.js @@ -0,0 +1 @@ +export const modules = []; diff --git a/src/Umbraco.Web.UI.Client/src/rollup.config.js b/src/Umbraco.Web.UI.Client/src/rollup.config.js index 656a977f25..c6a3c1352d 100644 --- a/src/Umbraco.Web.UI.Client/src/rollup.config.js +++ b/src/Umbraco.Web.UI.Client/src/rollup.config.js @@ -4,7 +4,7 @@ import commonjs from '@rollup/plugin-commonjs'; import { nodeResolve } from '@rollup/plugin-node-resolve'; import { readdirSync, lstatSync } from 'fs'; -const readFolders = (path) => readdirSync(path).filter((module) => lstatSync(`${path}/${module}`).isDirectory()); +const readFolders = (path) => readdirSync(path).filter((folder) => lstatSync(`${path}/${folder}`).isDirectory()); const createModuleDescriptors = (folderName) => readFolders(`./src/${folderName}`).map((moduleName) => { return { @@ -17,11 +17,26 @@ const createModuleDescriptors = (folderName) => const exclude = ['css']; const libs = createModuleDescriptors('libs'); -const shared = createModuleDescriptors('shared'); const apps = createModuleDescriptors('apps'); +const shared = createModuleDescriptors('shared'); const packages = createModuleDescriptors('packages'); -const modules = [...libs, ...shared, ...apps, ...packages]; +// Packages are special, they can include multiple modules. We need to handle them differently. +// Modules are exposed as the umbraco-package.ts file in the root of the package. We can look through the exported module const to find the module names and src paths. +const packageSubModules = readFolders('./src/packages').map(async (packageName) => { + const { modules } = await import(`./packages/${packageName}/modules.js`); + + return modules.map((module) => { + return { + name: packageName, + root: `./src/packages/${packageName}/${module.src}`, + dist: `./dist-cms/packages/${packageName}/${module.src}`, + }; + }); +}); + +const something = await Promise.all(packageSubModules); +const modules = [...libs, ...apps, ...shared, ...packages, ...something].flat(); const allowedModules = modules.filter((module) => !exclude.includes(module.name)); export default allowedModules