From cd66852eef396ceaaf78a47a886b8c42b2f48ce9 Mon Sep 17 00:00:00 2001 From: Mads Rasmussen Date: Sun, 11 Feb 2024 22:16:03 +0100 Subject: [PATCH] reuse import util for both tsconfig and test runner --- .../devops/importmap/index.js | 4 +- .../devops/tsconfig/index.js | 26 +-- src/Umbraco.Web.UI.Client/package.json | 3 +- src/Umbraco.Web.UI.Client/tsconfig.json | 202 +++++++++++------- .../web-test-runner.config.mjs | 3 +- 5 files changed, 139 insertions(+), 99 deletions(-) diff --git a/src/Umbraco.Web.UI.Client/devops/importmap/index.js b/src/Umbraco.Web.UI.Client/devops/importmap/index.js index f5c366140c..ec330839eb 100644 --- a/src/Umbraco.Web.UI.Client/devops/importmap/index.js +++ b/src/Umbraco.Web.UI.Client/devops/importmap/index.js @@ -2,7 +2,7 @@ import { packageJsonExports, packageJsonName } from '../package/index.js'; export const createImportMap = (args) => { const imports = { - ...args.defaultImports, + ...args.additionalImports, }; // Iterate over the exports in package.json @@ -12,7 +12,7 @@ export const createImportMap = (args) => { const moduleName = key.replace(/^\.\//, ''); // replace ./dist-cms with src and remove /index.js - const modulePath = value.replace(/^\.\/dist-cms/, './src').replace('.js', '.ts'); + const modulePath = value.replace(/^\.\/dist-cms/, args.rootDir).replace('.js', '.ts'); const importAlias = `${packageJsonName}/${moduleName}`; imports[importAlias] = modulePath; diff --git a/src/Umbraco.Web.UI.Client/devops/tsconfig/index.js b/src/Umbraco.Web.UI.Client/devops/tsconfig/index.js index c78f956a63..69ad7badaa 100644 --- a/src/Umbraco.Web.UI.Client/devops/tsconfig/index.js +++ b/src/Umbraco.Web.UI.Client/devops/tsconfig/index.js @@ -1,6 +1,6 @@ import { writeFileSync } from 'fs'; import { format } from 'prettier'; -import { packageJsonName, packageJsonExports } from '../package/index.js'; +import { createImportMap } from '../importmap/index.js'; const tsconfigPath = 'tsconfig.json'; const tsconfigComment = `// Don't edit this file directly. It is generated by /devops/tsconfig/index.js\n\n`; @@ -37,22 +37,18 @@ const tsConfigBase = { ], }; -const paths = { - '@umbraco-cms/internal/test-utils': ['utils/test-utils.ts'], -}; +const importmap = createImportMap({ + rootDir: './src', + additionalImports: { + '@umbraco-cms/internal/test-utils': './utils/test-utils.ts', + }, +}); -// Iterate over the exports in package.json -for (const [key, value] of Object.entries(packageJsonExports || {})) { - // remove leading ./ - if (value) { - const moduleName = key.replace(/^\.\//, ''); +const paths = {}; - // replace ./dist-cms with src and remove /index.js - const modulePath = value.replace(/^\.\/dist-cms/, 'src').replace(/\/index.js$/, ''); - const importAlias = `${packageJsonName}/${moduleName}`; - - paths[importAlias] = [modulePath]; - } +for (const [key, value] of Object.entries(importmap.imports)) { + const valueAsArray = [value]; + paths[key] = valueAsArray; } tsConfigBase.compilerOptions.paths = paths; diff --git a/src/Umbraco.Web.UI.Client/package.json b/src/Umbraco.Web.UI.Client/package.json index 7fef79fbb4..4dce9f92cb 100644 --- a/src/Umbraco.Web.UI.Client/package.json +++ b/src/Umbraco.Web.UI.Client/package.json @@ -133,8 +133,7 @@ "test": "web-test-runner --coverage", "wc-analyze:vscode": "wca **/*.element.ts --format vscode --outFile dist-cms/vscode-html-custom-data.json", "wc-analyze": "wca **/*.element.ts --outFile dist-cms/custom-elements.json", - "generate:tsconfig": "node ./devops/tsconfig/index.js", - "generate:importmap": "node ./devops/importmap/index.js" + "generate:tsconfig": "node ./devops/tsconfig/index.js" }, "engines": { "node": ">=20.9 <21", diff --git a/src/Umbraco.Web.UI.Client/tsconfig.json b/src/Umbraco.Web.UI.Client/tsconfig.json index 85579a0f6a..6ab8991c6c 100644 --- a/src/Umbraco.Web.UI.Client/tsconfig.json +++ b/src/Umbraco.Web.UI.Client/tsconfig.json @@ -1,4 +1,4 @@ -// Don't edit this file directly. It is generated by /scripts/generate-ts-config.js +// Don't edit this file directly. It is generated by /devops/tsconfig/index.js { "compilerOptions": { @@ -22,125 +22,169 @@ "noFallthroughCasesInSwitch": true, "noImplicitReturns": true, "paths": { - "@umbraco-cms/internal/test-utils": ["utils/test-utils.ts"], - "@umbraco-cms/backoffice/app": ["src/apps/app"], - "@umbraco-cms/backoffice/class-api": ["src/libs/class-api"], - "@umbraco-cms/backoffice/context-api": ["src/libs/context-api"], - "@umbraco-cms/backoffice/controller-api": ["src/libs/controller-api"], - "@umbraco-cms/backoffice/element-api": ["src/libs/element-api"], - "@umbraco-cms/backoffice/extension-api": ["src/libs/extension-api"], - "@umbraco-cms/backoffice/localization-api": ["src/libs/localization-api"], - "@umbraco-cms/backoffice/observable-api": ["src/libs/observable-api"], - "@umbraco-cms/backoffice/auth": ["src/shared/auth"], - "@umbraco-cms/backoffice/event": ["src/packages/core/event"], - "@umbraco-cms/backoffice/lit-element": ["src/packages/core/lit-element"], - "@umbraco-cms/backoffice/icon": ["src/shared/icon-registry"], - "@umbraco-cms/backoffice/models": ["src/shared/models"], - "@umbraco-cms/backoffice/resources": ["src/shared/resources"], - "@umbraco-cms/backoffice/router": ["src/shared/router"], - "@umbraco-cms/backoffice/style": ["src/shared/style"], - "@umbraco-cms/backoffice/utils": ["src/shared/utils"], - "@umbraco-cms/backoffice/action": ["src/packages/core/action"], - "@umbraco-cms/backoffice/collection": ["src/packages/core/collection"], - "@umbraco-cms/backoffice/components": ["src/packages/core/components"], - "@umbraco-cms/backoffice/content-type": [ - "src/packages/core/content-type" + "@umbraco-cms/internal/test-utils": ["./utils/test-utils.ts"], + "@umbraco-cms/backoffice/app": ["src/apps/app/index.ts"], + "@umbraco-cms/backoffice/class-api": ["src/libs/class-api/index.ts"], + "@umbraco-cms/backoffice/context-api": ["src/libs/context-api/index.ts"], + "@umbraco-cms/backoffice/controller-api": [ + "src/libs/controller-api/index.ts" ], - "@umbraco-cms/backoffice/culture": ["src/packages/core/culture"], - "@umbraco-cms/backoffice/data-type": ["src/packages/core/data-type"], - "@umbraco-cms/backoffice/debug": ["src/packages/core/debug"], + "@umbraco-cms/backoffice/element-api": ["src/libs/element-api/index.ts"], + "@umbraco-cms/backoffice/extension-api": [ + "src/libs/extension-api/index.ts" + ], + "@umbraco-cms/backoffice/localization-api": [ + "src/libs/localization-api/index.ts" + ], + "@umbraco-cms/backoffice/observable-api": [ + "src/libs/observable-api/index.ts" + ], + "@umbraco-cms/backoffice/auth": ["src/shared/auth/index.ts"], + "@umbraco-cms/backoffice/event": ["src/packages/core/event/index.ts"], + "@umbraco-cms/backoffice/lit-element": [ + "src/packages/core/lit-element/index.ts" + ], + "@umbraco-cms/backoffice/icon": ["src/shared/icon-registry/index.ts"], + "@umbraco-cms/backoffice/models": ["src/shared/models/index.ts"], + "@umbraco-cms/backoffice/resources": ["src/shared/resources/index.ts"], + "@umbraco-cms/backoffice/router": ["src/shared/router/index.ts"], + "@umbraco-cms/backoffice/style": ["src/shared/style/index.ts"], + "@umbraco-cms/backoffice/utils": ["src/shared/utils/index.ts"], + "@umbraco-cms/backoffice/action": ["src/packages/core/action/index.ts"], + "@umbraco-cms/backoffice/collection": [ + "src/packages/core/collection/index.ts" + ], + "@umbraco-cms/backoffice/components": [ + "src/packages/core/components/index.ts" + ], + "@umbraco-cms/backoffice/content-type": [ + "src/packages/core/content-type/index.ts" + ], + "@umbraco-cms/backoffice/culture": ["src/packages/core/culture/index.ts"], + "@umbraco-cms/backoffice/data-type": [ + "src/packages/core/data-type/index.ts" + ], + "@umbraco-cms/backoffice/debug": ["src/packages/core/debug/index.ts"], "@umbraco-cms/backoffice/entity-action": [ - "src/packages/core/entity-action" + "src/packages/core/entity-action/index.ts" ], "@umbraco-cms/backoffice/entity-bulk-action": [ - "src/packages/core/entity-bulk-action" + "src/packages/core/entity-bulk-action/index.ts" ], "@umbraco-cms/backoffice/extension-registry": [ - "src/packages/core/extension-registry" + "src/packages/core/extension-registry/index.ts" ], "@umbraco-cms/backoffice/server-file-system": [ - "src/packages/core/server-file-system" + "src/packages/core/server-file-system/index.ts" ], - "@umbraco-cms/backoffice/id": ["src/packages/core/id"], + "@umbraco-cms/backoffice/id": ["src/packages/core/id/index.ts"], "@umbraco-cms/backoffice/localization": [ - "src/packages/core/localization" + "src/packages/core/localization/index.ts" ], - "@umbraco-cms/backoffice/menu": ["src/packages/core/menu"], - "@umbraco-cms/backoffice/modal": ["src/packages/core/modal"], + "@umbraco-cms/backoffice/menu": ["src/packages/core/menu/index.ts"], + "@umbraco-cms/backoffice/modal": ["src/packages/core/modal/index.ts"], "@umbraco-cms/backoffice/notification": [ - "src/packages/core/notification" + "src/packages/core/notification/index.ts" ], "@umbraco-cms/backoffice/picker-input": [ - "src/packages/core/picker-input" + "src/packages/core/picker-input/index.ts" + ], + "@umbraco-cms/backoffice/property": [ + "src/packages/core/property/index.ts" ], - "@umbraco-cms/backoffice/property": ["src/packages/core/property"], "@umbraco-cms/backoffice/property-action": [ - "src/packages/core/property-action" + "src/packages/core/property-action/index.ts" ], "@umbraco-cms/backoffice/property-editor": [ - "src/packages/core/property-editor" + "src/packages/core/property-editor/index.ts" + ], + "@umbraco-cms/backoffice/section": ["src/packages/core/section/index.ts"], + "@umbraco-cms/backoffice/sorter": ["src/packages/core/sorter/index.ts"], + "@umbraco-cms/backoffice/store": ["src/packages/core/store/index.ts"], + "@umbraco-cms/backoffice/themes": ["src/packages/core/themes/index.ts"], + "@umbraco-cms/backoffice/tree": ["src/packages/core/tree/index.ts"], + "@umbraco-cms/backoffice/variant": ["src/packages/core/variant/index.ts"], + "@umbraco-cms/backoffice/workspace": [ + "src/packages/core/workspace/index.ts" + ], + "@umbraco-cms/backoffice/repository": [ + "src/packages/core/repository/index.ts" ], - "@umbraco-cms/backoffice/section": ["src/packages/core/section"], - "@umbraco-cms/backoffice/sorter": ["src/packages/core/sorter"], - "@umbraco-cms/backoffice/store": ["src/packages/core/store"], - "@umbraco-cms/backoffice/themes": ["src/packages/core/themes"], - "@umbraco-cms/backoffice/tree": ["src/packages/core/tree"], - "@umbraco-cms/backoffice/variant": ["src/packages/core/variant"], - "@umbraco-cms/backoffice/workspace": ["src/packages/core/workspace"], - "@umbraco-cms/backoffice/repository": ["src/packages/core/repository"], "@umbraco-cms/backoffice/temporary-file": [ - "src/packages/core/temporary-file" + "src/packages/core/temporary-file/index.ts" + ], + "@umbraco-cms/backoffice/block": ["src/packages/block/index.ts"], + "@umbraco-cms/backoffice/audit-log": ["src/packages/audit-log/index.ts"], + "@umbraco-cms/backoffice/dictionary": [ + "src/packages/dictionary/index.ts" + ], + "@umbraco-cms/backoffice/document": [ + "src/packages/documents/documents/index.ts" ], - "@umbraco-cms/backoffice/block": ["src/packages/block"], - "@umbraco-cms/backoffice/audit-log": ["src/packages/audit-log"], - "@umbraco-cms/backoffice/dictionary": ["src/packages/dictionary"], - "@umbraco-cms/backoffice/document": ["src/packages/documents/documents"], "@umbraco-cms/backoffice/document-blueprint": [ - "src/packages/documents/document-blueprints" + "src/packages/documents/document-blueprints/index.ts" ], "@umbraco-cms/backoffice/document-type": [ - "src/packages/documents/document-types" + "src/packages/documents/document-types/index.ts" + ], + "@umbraco-cms/backoffice/media": ["src/packages/media/media/index.ts"], + "@umbraco-cms/backoffice/media-type": [ + "src/packages/media/media-types/index.ts" + ], + "@umbraco-cms/backoffice/member": [ + "src/packages/members/members/index.ts" ], - "@umbraco-cms/backoffice/media": ["src/packages/media/media"], - "@umbraco-cms/backoffice/media-type": ["src/packages/media/media-types"], - "@umbraco-cms/backoffice/member": ["src/packages/members/members"], "@umbraco-cms/backoffice/member-group": [ - "src/packages/members/member-groups" + "src/packages/members/member-groups/index.ts" ], "@umbraco-cms/backoffice/member-type": [ - "src/packages/members/member-types" + "src/packages/members/member-types/index.ts" + ], + "@umbraco-cms/backoffice/package": [ + "src/packages/packages/package/index.ts" + ], + "@umbraco-cms/backoffice/language": ["src/packages/language/index.ts"], + "@umbraco-cms/backoffice/dynamic-root": [ + "src/packages/dynamic-root/index.ts" + ], + "@umbraco-cms/backoffice/logviewer": [ + "src/packages/settings/logviewer/index.ts" ], - "@umbraco-cms/backoffice/package": ["src/packages/packages/package"], - "@umbraco-cms/backoffice/language": ["src/packages/language"], - "@umbraco-cms/backoffice/dynamic-root": ["src/packages/dynamic-root"], - "@umbraco-cms/backoffice/logviewer": ["src/packages/settings/logviewer"], "@umbraco-cms/backoffice/relation-type": [ - "src/packages/relations/relation-types" + "src/packages/relations/relation-types/index.ts" + ], + "@umbraco-cms/backoffice/relations": [ + "src/packages/relations/relations/index.ts" + ], + "@umbraco-cms/backoffice/tags": ["src/packages/tags/index.ts"], + "@umbraco-cms/backoffice/static-file": [ + "src/packages/static-file/index.ts" ], - "@umbraco-cms/backoffice/relations": ["src/packages/relations/relations"], - "@umbraco-cms/backoffice/tags": ["src/packages/tags"], - "@umbraco-cms/backoffice/static-file": ["src/packages/static-file"], "@umbraco-cms/backoffice/partial-view": [ - "src/packages/templating/partial-views" + "src/packages/templating/partial-views/index.ts" ], "@umbraco-cms/backoffice/stylesheet": [ - "src/packages/templating/stylesheets" + "src/packages/templating/stylesheets/index.ts" + ], + "@umbraco-cms/backoffice/template": [ + "src/packages/templating/templates/index.ts" + ], + "@umbraco-cms/backoffice/user-group": [ + "src/packages/user/user-group/index.ts" ], - "@umbraco-cms/backoffice/template": ["src/packages/templating/templates"], - "@umbraco-cms/backoffice/user-group": ["src/packages/user/user-group"], "@umbraco-cms/backoffice/current-user": [ - "src/packages/user/current-user" + "src/packages/user/current-user/index.ts" ], - "@umbraco-cms/backoffice/user": ["src/packages/user/user"], + "@umbraco-cms/backoffice/user": ["src/packages/user/user/index.ts"], "@umbraco-cms/backoffice/user-permission": [ - "src/packages/user/user-permission" + "src/packages/user/user-permission/index.ts" ], "@umbraco-cms/backoffice/code-editor": [ - "src/packages/templating/code-editor" + "src/packages/templating/code-editor/index.ts" ], - "@umbraco-cms/backoffice/external/*": ["src/external/*"], - "@umbraco-cms/backoffice/examples/*": ["./examples/*"], - "@umbraco-cms/backoffice/examples": ["./examples"] + "@umbraco-cms/backoffice/external/*": ["src/external/*/index.ts"], + "@umbraco-cms/backoffice/examples/*": ["./examples/*/index.ts"], + "@umbraco-cms/backoffice/examples": ["./examples/index.ts"] } }, "include": [ diff --git a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs index 6f11a0dd35..3a2e660553 100644 --- a/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs +++ b/src/Umbraco.Web.UI.Client/web-test-runner.config.mjs @@ -26,7 +26,8 @@ export default { importMapsPlugin({ inject: { importMap: createImportMap({ - defaultImports: { + rootDir: './src', + additionalImports: { '@umbraco-cms/internal/test-utils': './utils/test-utils.ts', }, }),