diff --git a/src/Umbraco.Web.UI.Client/src/external/lodash/index.ts b/src/Umbraco.Web.UI.Client/src/external/lodash/index.ts new file mode 100644 index 0000000000..85f5525d23 --- /dev/null +++ b/src/Umbraco.Web.UI.Client/src/external/lodash/index.ts @@ -0,0 +1 @@ +export { debounce, clamp, groupBy } from 'lodash-es'; diff --git a/src/Umbraco.Web.UI.Client/src/mocks/data/utils.ts b/src/Umbraco.Web.UI.Client/src/mocks/data/utils.ts index 97cc81bfaf..d035861e81 100644 --- a/src/Umbraco.Web.UI.Client/src/mocks/data/utils.ts +++ b/src/Umbraco.Web.UI.Client/src/mocks/data/utils.ts @@ -1,4 +1,3 @@ -import { template } from 'lodash-es'; import type { ContentTreeItemResponseModel, DocumentTreeItemResponseModel, diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/data-types/modals/data-type-picker-flow/data-type-picker-flow-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/data-types/modals/data-type-picker-flow/data-type-picker-flow-modal.element.ts index ae48d1b7c8..1a64f808a4 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/data-types/modals/data-type-picker-flow/data-type-picker-flow-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/data-types/modals/data-type-picker-flow/data-type-picker-flow-modal.element.ts @@ -2,7 +2,7 @@ import { css, html } from '@umbraco-cms/backoffice/external/lit'; import { UUITextStyles } from '@umbraco-ui/uui-css/lib'; import { customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import { repeat } from '@umbraco-cms/backoffice/external/lit'; -import { groupBy } from 'lodash-es'; +import { groupBy } from '@umbraco-cms/backoffice/external/lodash'; import type { UUIInputEvent } from '@umbraco-ui/uui'; import { UmbDataTypeRepository } from '../../repository/data-type.repository.js'; import { diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/data-types/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/data-types/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.ts index 30793287a3..9e4b716eb3 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/data-types/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/data-types/modals/property-editor-ui-picker/property-editor-ui-picker-modal.element.ts @@ -2,7 +2,7 @@ import { css, html } from '@umbraco-cms/backoffice/external/lit'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { customElement, property, state } from '@umbraco-cms/backoffice/external/lit'; import { repeat } from '@umbraco-cms/backoffice/external/lit'; -import { groupBy } from 'lodash-es'; +import { groupBy } from '@umbraco-cms/backoffice/external/lodash'; import type { UUIInputEvent } from '@umbraco-ui/uui'; import { UmbPropertyEditorUIPickerModalData, diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/logviewer/components/donut-chart/donut-chart.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/logviewer/components/donut-chart/donut-chart.element.ts index dcddafc358..a6af285873 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/logviewer/components/donut-chart/donut-chart.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/logviewer/components/donut-chart/donut-chart.element.ts @@ -1,7 +1,7 @@ import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html, LitElement, svg } from '@umbraco-cms/backoffice/external/lit'; import { customElement, property, query, queryAssignedElements, state } from '@umbraco-cms/backoffice/external/lit'; -import { clamp } from 'lodash-es'; +import { clamp } from '@umbraco-cms/backoffice/external/lodash'; import { UmbDonutSliceElement } from './donut-slice.element.js'; export interface Circle { diff --git a/src/Umbraco.Web.UI.Client/src/packages/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts b/src/Umbraco.Web.UI.Client/src/packages/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts index 9d012ae7a2..b74b7eaa34 100644 --- a/src/Umbraco.Web.UI.Client/src/packages/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts +++ b/src/Umbraco.Web.UI.Client/src/packages/settings/logviewer/workspace/views/search/components/log-viewer-log-level-filter-menu.element.ts @@ -2,7 +2,7 @@ import { UUICheckboxElement } from '@umbraco-ui/uui'; import { UUITextStyles } from '@umbraco-ui/uui-css'; import { css, html } from '@umbraco-cms/backoffice/external/lit'; import { customElement, queryAll, state } from '@umbraco-cms/backoffice/external/lit'; -import { debounce } from 'lodash-es'; +import { debounce } from '@umbraco-cms/backoffice/external/lodash'; import { UmbLogViewerWorkspaceContext, UMB_APP_LOG_VIEWER_CONTEXT_TOKEN } from '../../../logviewer.context.js'; import { LogLevelModel } from '@umbraco-cms/backoffice/backend-api'; import { UmbLitElement } from '@umbraco-cms/internal/lit-element'; diff --git a/src/Umbraco.Web.UI.Client/src/rollup.config.js b/src/Umbraco.Web.UI.Client/src/rollup.config.js index 639dbb9c26..9546d577d1 100644 --- a/src/Umbraco.Web.UI.Client/src/rollup.config.js +++ b/src/Umbraco.Web.UI.Client/src/rollup.config.js @@ -1,57 +1,35 @@ import esbuild from 'rollup-plugin-esbuild'; import commonjs from '@rollup/plugin-commonjs'; import { nodeResolve } from '@rollup/plugin-node-resolve'; +import { readdirSync, lstatSync } from 'fs'; -export default [ - { - input: './src/external/backend-api/index.ts', - external: [], - output: { - dir: `./dist-cms/external/backend-api`, - format: 'es', - preserveModules: true, - preserveModulesRoot: `./external/backend-api`, - }, - plugins: [nodeResolve(), commonjs(), esbuild()], - }, - { - input: './src/external/openid/index.ts', - output: { - dir: `./dist-cms/external/openid`, - format: 'es', - }, - plugins: [nodeResolve(), commonjs(), esbuild()], - }, - { - input: './src/external/rxjs/index.ts', - output: { - dir: `./dist-cms/external/rxjs`, - format: 'es', - }, - plugins: [nodeResolve(), commonjs(), esbuild()], - }, - { - input: './src/external/router-slot/index.ts', - output: { - dir: `./dist-cms/external/router-slot`, - format: 'es', - }, - plugins: [nodeResolve(), commonjs(), esbuild()], - }, - { - input: './src/external/uuid/index.ts', - output: { - dir: `./dist-cms/external/uuid`, - format: 'es', - }, - plugins: [nodeResolve(), commonjs(), esbuild()], - }, - { - input: './src/external/lit/index.ts', - output: { - dir: `./dist-cms/external/lit`, - format: 'es', - }, - plugins: [nodeResolve(), commonjs(), esbuild()], - }, -]; +const readFolders = (path) => readdirSync(path).filter((folder) => lstatSync(`${path}/${folder}`).isDirectory()); +const createModuleDescriptors = (folderName) => + readFolders(`./src/${folderName}`).map((moduleName) => { + return { + name: moduleName, + file: `index.ts`, + root: `./src/${folderName}/${moduleName}`, + dist: `./dist-cms/${folderName}/${moduleName}`, + }; + }); + +const externals = createModuleDescriptors('external'); +const exclude = []; +const allowed = externals.filter((module) => !exclude.includes(module.name)); + +export default allowed + .map((module) => { + /** @type {import('rollup').RollupOptions[]} */ + return [ + { + input: `./src/external/${module.name}/index.ts`, + output: { + dir: `./dist-cms/external/${module.name}`, + format: 'es', + }, + plugins: [nodeResolve(), commonjs(), esbuild()], + }, + ]; + }) + .flat(); diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index a2469899a9..4aaf67f196 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -24,6 +24,7 @@ "@umbraco-cms/backoffice/external/rxjs": ["src/external/rxjs"], "@umbraco-cms/backoffice/external/router-slot": ["src/external/router-slot"], "@umbraco-cms/backoffice/external/uuid": ["src/external/uuid"], + "@umbraco-cms/backoffice/external/lodash": ["src/external/lodash"], "@umbraco-cms/backoffice/context-api": ["src/libs/context-api"], "@umbraco-cms/backoffice/controller-api": ["src/libs/controller-api"],