@servicetitan/startup 38.0.0 → 38.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/js-yaml.js +2 -2
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +22 -9
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/bundle-package.d.ts +6 -0
- package/dist/cli/commands/bundle-package.d.ts.map +1 -0
- package/dist/cli/commands/bundle-package.js +59 -0
- package/dist/cli/commands/bundle-package.js.map +1 -0
- package/dist/cli/commands/bundle-vite.js +13 -4
- package/dist/cli/commands/bundle-vite.js.map +1 -1
- package/dist/cli/commands/bundle-webpack.js +13 -4
- package/dist/cli/commands/bundle-webpack.js.map +1 -1
- package/dist/cli/commands/clean.js +13 -4
- package/dist/cli/commands/clean.js.map +1 -1
- package/dist/cli/commands/command.d.ts +9 -0
- package/dist/cli/commands/command.d.ts.map +1 -0
- package/dist/cli/commands/command.js +35 -0
- package/dist/cli/commands/command.js.map +1 -0
- package/dist/cli/commands/convert-eslint-config.js +14 -7
- package/dist/cli/commands/convert-eslint-config.js.map +1 -1
- package/dist/cli/commands/eslint.js +13 -4
- package/dist/cli/commands/eslint.js.map +1 -1
- package/dist/cli/commands/init.js +13 -4
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.js +13 -4
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/kendo-ui-license.js +13 -4
- package/dist/cli/commands/kendo-ui-license.js.map +1 -1
- package/dist/cli/commands/lint.js +13 -4
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/mfe-check.d.ts.map +1 -1
- package/dist/cli/commands/mfe-check.js +15 -7
- package/dist/cli/commands/mfe-check.js.map +1 -1
- package/dist/cli/commands/mfe-generate-metadata.js +13 -4
- package/dist/cli/commands/mfe-generate-metadata.js.map +1 -1
- package/dist/cli/commands/mfe-list.js +13 -4
- package/dist/cli/commands/mfe-list.js.map +1 -1
- package/dist/cli/commands/mfe-package-clean.js +13 -4
- package/dist/cli/commands/mfe-package-clean.js.map +1 -1
- package/dist/cli/commands/mfe-package-publish.js +13 -4
- package/dist/cli/commands/mfe-package-publish.js.map +1 -1
- package/dist/cli/commands/mfe-package-rollback.js +13 -4
- package/dist/cli/commands/mfe-package-rollback.js.map +1 -1
- package/dist/cli/commands/mfe-publish.js +13 -4
- package/dist/cli/commands/mfe-publish.js.map +1 -1
- package/dist/cli/commands/mfe-purge-cache.js +13 -4
- package/dist/cli/commands/mfe-purge-cache.js.map +1 -1
- package/dist/cli/commands/prepare-package.js +13 -4
- package/dist/cli/commands/prepare-package.js.map +1 -1
- package/dist/cli/commands/registry/build.d.ts +1 -1
- package/dist/cli/commands/registry/build.d.ts.map +1 -1
- package/dist/cli/commands/registry/build.js +3 -5
- package/dist/cli/commands/registry/build.js.map +1 -1
- package/dist/cli/commands/registry/bundle-package.d.ts +41 -0
- package/dist/cli/commands/registry/bundle-package.d.ts.map +1 -0
- package/dist/cli/commands/registry/bundle-package.js +54 -0
- package/dist/cli/commands/registry/bundle-package.js.map +1 -0
- package/dist/cli/commands/registry/command-registry.d.ts +42 -2
- package/dist/cli/commands/registry/command-registry.d.ts.map +1 -1
- package/dist/cli/commands/registry/command-registry.js +10 -19
- package/dist/cli/commands/registry/command-registry.js.map +1 -1
- package/dist/cli/commands/registry/start.d.ts +1 -1
- package/dist/cli/commands/registry/start.d.ts.map +1 -1
- package/dist/cli/commands/registry/start.js +3 -5
- package/dist/cli/commands/registry/start.js.map +1 -1
- package/dist/cli/commands/review/review.js +14 -7
- package/dist/cli/commands/review/review.js.map +1 -1
- package/dist/cli/commands/review/rules/no-deprecated-content-base.js +1 -3
- package/dist/cli/commands/review/rules/no-deprecated-content-base.js.map +1 -1
- package/dist/cli/commands/review/rules/no-direct-peer-dependencies.js +1 -3
- package/dist/cli/commands/review/rules/no-direct-peer-dependencies.js.map +1 -1
- package/dist/cli/commands/review/rules/no-typescript-entry-point.js +1 -3
- package/dist/cli/commands/review/rules/no-typescript-entry-point.js.map +1 -1
- package/dist/cli/commands/review/rules/prefer-open-ended-peer-dependencies.js +5 -12
- package/dist/cli/commands/review/rules/prefer-open-ended-peer-dependencies.js.map +1 -1
- package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js +5 -12
- package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js.map +1 -1
- package/dist/cli/commands/review/rules/require-explicit-side-effects.js +1 -3
- package/dist/cli/commands/review/rules/require-explicit-side-effects.js.map +1 -1
- package/dist/cli/commands/review/rules/require-one-collection-version.js +1 -3
- package/dist/cli/commands/review/rules/require-one-collection-version.js.map +1 -1
- package/dist/cli/commands/review/rules/require-servicetitan-scope.js +1 -3
- package/dist/cli/commands/review/rules/require-servicetitan-scope.js.map +1 -1
- package/dist/cli/commands/review/rules/require-tsconfig-references.js +1 -3
- package/dist/cli/commands/review/rules/require-tsconfig-references.js.map +1 -1
- package/dist/cli/commands/review/utils/compare-version.js +8 -19
- package/dist/cli/commands/review/utils/compare-version.js.map +1 -1
- package/dist/cli/commands/run-task.d.ts +1 -0
- package/dist/cli/commands/run-task.d.ts.map +1 -1
- package/dist/cli/commands/run-task.js +20 -6
- package/dist/cli/commands/run-task.js.map +1 -1
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +28 -13
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/stylelint.js +13 -4
- package/dist/cli/commands/stylelint.js.map +1 -1
- package/dist/cli/commands/styles-check.js +13 -4
- package/dist/cli/commands/styles-check.js.map +1 -1
- package/dist/cli/commands/test/runners/jest.js +1 -3
- package/dist/cli/commands/test/runners/jest.js.map +1 -1
- package/dist/cli/commands/test/tests.js +13 -4
- package/dist/cli/commands/test/tests.js.map +1 -1
- package/dist/cli/commands/types.d.ts +1 -6
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/types.js +2 -20
- package/dist/cli/commands/types.js.map +1 -1
- package/dist/cli/commands/upload-sourcemaps.js +17 -13
- package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
- package/dist/cli/index.js +1 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/tasks/cli-task.d.ts +3 -0
- package/dist/cli/tasks/cli-task.d.ts.map +1 -1
- package/dist/cli/tasks/cli-task.js +41 -9
- package/dist/cli/tasks/cli-task.js.map +1 -1
- package/dist/cli/tasks/swc-compile-package/get-swc-options.d.ts +9 -1
- package/dist/cli/tasks/swc-compile-package/get-swc-options.d.ts.map +1 -1
- package/dist/cli/tasks/swc-compile-package/get-swc-options.js +18 -2
- package/dist/cli/tasks/swc-compile-package/get-swc-options.js.map +1 -1
- package/dist/cli/tasks/swc-compile-package/swc-compile-package.d.ts +3 -1
- package/dist/cli/tasks/swc-compile-package/swc-compile-package.d.ts.map +1 -1
- package/dist/cli/tasks/swc-compile-package/swc-compile-package.js +17 -3
- package/dist/cli/tasks/swc-compile-package/swc-compile-package.js.map +1 -1
- package/dist/cli/tasks/task.d.ts +2 -1
- package/dist/cli/tasks/task.d.ts.map +1 -1
- package/dist/cli/tasks/task.js +6 -3
- package/dist/cli/tasks/task.js.map +1 -1
- package/dist/cli/tasks/tsc-compile/tsc-compile.js +1 -3
- package/dist/cli/tasks/tsc-compile/tsc-compile.js.map +1 -1
- package/dist/cli/utils/cli-npm.d.ts.map +1 -1
- package/dist/cli/utils/cli-npm.js +8 -1
- package/dist/cli/utils/cli-npm.js.map +1 -1
- package/dist/cli/utils/cli-os.d.ts +1 -0
- package/dist/cli/utils/cli-os.d.ts.map +1 -1
- package/dist/cli/utils/cli-os.js +20 -0
- package/dist/cli/utils/cli-os.js.map +1 -1
- package/dist/cli/utils/compile.d.ts.map +1 -1
- package/dist/cli/utils/compile.js +7 -4
- package/dist/cli/utils/compile.js.map +1 -1
- package/dist/cli/utils/copy-files.js +1 -0
- package/dist/cli/utils/copy-files.js.map +1 -1
- package/dist/cli/utils/index.d.ts +1 -1
- package/dist/cli/utils/index.d.ts.map +1 -1
- package/dist/cli/utils/index.js +1 -1
- package/dist/cli/utils/index.js.map +1 -1
- package/dist/cli/utils/process-tree.js +2 -6
- package/dist/cli/utils/process-tree.js.map +1 -1
- package/dist/cli/utils/resolve-bundler.d.ts.map +1 -1
- package/dist/cli/utils/resolve-bundler.js +2 -1
- package/dist/cli/utils/resolve-bundler.js.map +1 -1
- package/dist/cli/utils/ts-config.d.ts +1 -1
- package/dist/cli/utils/ts-config.d.ts.map +1 -1
- package/dist/cli/utils/ts-config.js +1 -3
- package/dist/cli/utils/ts-config.js.map +1 -1
- package/dist/cli/utils/with-exponential-backoff.d.ts +7 -0
- package/dist/cli/utils/with-exponential-backoff.d.ts.map +1 -0
- package/dist/cli/utils/with-exponential-backoff.js +28 -0
- package/dist/cli/utils/with-exponential-backoff.js.map +1 -0
- package/dist/core/constants.d.ts +2 -0
- package/dist/core/constants.d.ts.map +1 -1
- package/dist/core/constants.js +6 -1
- package/dist/core/constants.js.map +1 -1
- package/dist/postinstall.js +118 -0
- package/dist/scripts/generate-bin-wrappers.js +203 -0
- package/dist/storybook-config/swc.d.ts +6 -0
- package/dist/storybook-config/swc.d.ts.map +1 -1
- package/dist/storybook-config/webpack-final.d.ts.map +1 -1
- package/dist/storybook-config/webpack-final.js +2 -1
- package/dist/storybook-config/webpack-final.js.map +1 -1
- package/dist/utils/exit-when-parent-exits.d.ts +6 -0
- package/dist/utils/exit-when-parent-exits.d.ts.map +1 -0
- package/dist/utils/exit-when-parent-exits.js +37 -0
- package/dist/utils/exit-when-parent-exits.js.map +1 -0
- package/dist/utils/find-up.d.ts +1 -1
- package/dist/utils/find-up.d.ts.map +1 -1
- package/dist/utils/find-up.js +2 -2
- package/dist/utils/find-up.js.map +1 -1
- package/dist/utils/get-configuration.d.ts +6 -3
- package/dist/utils/get-configuration.d.ts.map +1 -1
- package/dist/utils/get-configuration.js +10 -2
- package/dist/utils/get-configuration.js.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/log.js +1 -3
- package/dist/utils/log.js.map +1 -1
- package/dist/vite/build-shared-dependencies.d.ts.map +1 -1
- package/dist/vite/build-shared-dependencies.js +2 -0
- package/dist/vite/build-shared-dependencies.js.map +1 -1
- package/dist/vite/config/base-config.d.ts.map +1 -1
- package/dist/vite/config/base-config.js +12 -1
- package/dist/vite/config/base-config.js.map +1 -1
- package/dist/vite/config/create-vite-config.js +7 -2
- package/dist/vite/config/create-vite-config.js.map +1 -1
- package/dist/vite/config/load-config-file.js +8 -19
- package/dist/vite/config/load-config-file.js.map +1 -1
- package/dist/vite/index.d.ts +2 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.html +2 -2
- package/dist/vite/index.js +16 -0
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/plugins/chain-source-maps-plugin.js +1 -1
- package/dist/vite/plugins/chain-source-maps-plugin.js.map +1 -1
- package/dist/vite/plugins/clean-plugin.js +1 -1
- package/dist/vite/plugins/clean-plugin.js.map +1 -1
- package/dist/vite/plugins/css-injector-plugin.js +1 -1
- package/dist/vite/plugins/css-injector-plugin.js.map +1 -1
- package/dist/vite/plugins/design-system-guard-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/design-system-guard-plugin.js +10 -5
- package/dist/vite/plugins/design-system-guard-plugin.js.map +1 -1
- package/dist/vite/plugins/dev-server-routing-plugin.js +1 -1
- package/dist/vite/plugins/dev-server-routing-plugin.js.map +1 -1
- package/dist/vite/plugins/externals-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/externals-plugin.js +11 -5
- package/dist/vite/plugins/externals-plugin.js.map +1 -1
- package/dist/vite/plugins/html-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/html-plugin.js +5 -3
- package/dist/vite/plugins/html-plugin.js.map +1 -1
- package/dist/vite/plugins/ignore-modules-plugin.d.ts +2 -2
- package/dist/vite/plugins/ignore-modules-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/ignore-modules-plugin.js +36 -24
- package/dist/vite/plugins/ignore-modules-plugin.js.map +1 -1
- package/dist/vite/plugins/index.d.ts +3 -0
- package/dist/vite/plugins/index.d.ts.map +1 -1
- package/dist/vite/plugins/index.js +3 -0
- package/dist/vite/plugins/index.js.map +1 -1
- package/dist/vite/plugins/less-tilde-plugin.d.ts +8 -0
- package/dist/vite/plugins/less-tilde-plugin.d.ts.map +1 -0
- package/dist/vite/plugins/less-tilde-plugin.js +53 -0
- package/dist/vite/plugins/less-tilde-plugin.js.map +1 -0
- package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js +1 -1
- package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js.map +1 -1
- package/dist/vite/plugins/metadata-plugin.js +1 -1
- package/dist/vite/plugins/metadata-plugin.js.map +1 -1
- package/dist/vite/plugins/moment-locales-plugin.d.ts +1 -1
- package/dist/vite/plugins/moment-locales-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/moment-locales-plugin.js +30 -14
- package/dist/vite/plugins/moment-locales-plugin.js.map +1 -1
- package/dist/vite/plugins/react-refresh-plugin/index.d.ts +2 -0
- package/dist/vite/plugins/react-refresh-plugin/index.d.ts.map +1 -0
- package/dist/vite/plugins/react-refresh-plugin/index.js +20 -0
- package/dist/vite/plugins/react-refresh-plugin/index.js.map +1 -0
- package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.d.ts +4 -0
- package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.d.ts.map +1 -0
- package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.js +143 -0
- package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.js.map +1 -0
- package/dist/vite/plugins/react-refresh-plugin/refresh-runtime.js +113 -0
- package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js +14 -11
- package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js.map +1 -1
- package/dist/vite/plugins/style-urls-plugin.js +1 -1
- package/dist/vite/plugins/style-urls-plugin.js.map +1 -1
- package/dist/vite/plugins/virtual-modules-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/virtual-modules-plugin.js +9 -6
- package/dist/vite/plugins/virtual-modules-plugin.js.map +1 -1
- package/dist/vite/plugins/window-externals-plugin.d.ts +22 -0
- package/dist/vite/plugins/window-externals-plugin.d.ts.map +1 -0
- package/dist/vite/plugins/window-externals-plugin.js +74 -0
- package/dist/vite/plugins/window-externals-plugin.js.map +1 -0
- package/dist/webpack/bundle-webpack.d.ts.map +1 -1
- package/dist/webpack/bundle-webpack.js +6 -1
- package/dist/webpack/bundle-webpack.js.map +1 -1
- package/dist/webpack/configs/optimization-config.js +4 -4
- package/dist/webpack/configs/optimization-config.js.map +1 -1
- package/dist/webpack/configs/output-config.js +1 -1
- package/dist/webpack/configs/output-config.js.map +1 -1
- package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js +1 -3
- package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js.map +1 -1
- package/dist/webpack/loaders/expose-loader/__tests__/__mocks__/configuration.expose-loader.js +13 -0
- package/dist/webpack/loaders/expose-loader/__tests__/__mocks__/index.js +1 -0
- package/dist/webpack/utils/index.d.ts +1 -0
- package/dist/webpack/utils/index.d.ts.map +1 -1
- package/dist/webpack/utils/index.js +1 -0
- package/dist/webpack/utils/index.js.map +1 -1
- package/dist/webpack/utils/normalize-proxy-config.d.ts +6 -0
- package/dist/webpack/utils/normalize-proxy-config.d.ts.map +1 -0
- package/dist/webpack/utils/normalize-proxy-config.js +52 -0
- package/dist/webpack/utils/normalize-proxy-config.js.map +1 -0
- package/package.json +24 -21
- package/src/cli/commands/__tests__/build.test.ts +33 -19
- package/src/cli/commands/__tests__/bundle-package.test.ts +65 -0
- package/src/cli/commands/__tests__/command.test.ts +42 -0
- package/src/cli/commands/__tests__/mfe-check.test.ts +26 -5
- package/src/cli/commands/__tests__/run-task.test.ts +20 -1
- package/src/cli/commands/__tests__/start.test.ts +35 -15
- package/src/cli/commands/build.ts +6 -5
- package/src/cli/commands/bundle-package.ts +20 -0
- package/src/cli/commands/command.ts +14 -0
- package/src/cli/commands/mfe-check.ts +6 -10
- package/src/cli/commands/registry/build.ts +3 -2
- package/src/cli/commands/registry/bundle-package.ts +22 -0
- package/src/cli/commands/registry/command-registry.ts +2 -0
- package/src/cli/commands/registry/start.ts +3 -2
- package/src/cli/commands/run-task.ts +8 -2
- package/src/cli/commands/start.ts +9 -5
- package/src/cli/commands/types.ts +2 -6
- package/src/cli/index.ts +3 -0
- package/src/cli/tasks/__tests__/cli-task.test.ts +181 -69
- package/src/cli/tasks/__tests__/task.test.ts +40 -45
- package/src/cli/tasks/cli-task.ts +43 -2
- package/src/cli/tasks/swc-compile-package/__tests__/get-swc-options.test.ts +46 -4
- package/src/cli/tasks/swc-compile-package/__tests__/swc-compile-package.test.ts +25 -4
- package/src/cli/tasks/swc-compile-package/get-swc-options.ts +14 -1
- package/src/cli/tasks/swc-compile-package/swc-compile-package.ts +6 -2
- package/src/cli/tasks/task.ts +8 -2
- package/src/cli/tasks/tsc-compile/__tests__/tsc-compile.test.ts +8 -32
- package/src/cli/tasks/tsc-compile-package/__tests__/tsc-compile-package.test.ts +10 -19
- package/src/cli/utils/__tests__/cli-npm.test.ts +33 -0
- package/src/cli/utils/__tests__/cli-os.test.ts +86 -3
- package/src/cli/utils/__tests__/compile.test.ts +37 -2
- package/src/cli/utils/__tests__/copy-files.test.ts +1 -1
- package/src/cli/utils/__tests__/with-exponential-backoff.test.ts +119 -0
- package/src/cli/utils/cli-npm.ts +19 -4
- package/src/cli/utils/cli-os.ts +14 -0
- package/src/cli/utils/compile.ts +8 -1
- package/src/cli/utils/copy-files.ts +1 -1
- package/src/cli/utils/index.ts +1 -1
- package/src/cli/utils/resolve-bundler.ts +2 -1
- package/src/cli/utils/ts-config.ts +1 -1
- package/src/cli/utils/with-exponential-backoff.ts +28 -0
- package/src/core/constants.ts +2 -0
- package/src/storybook-config/__tests__/vite-final.test.ts +6 -0
- package/src/storybook-config/__tests__/webpack-final.test.ts +26 -12
- package/src/storybook-config/webpack-final.ts +10 -4
- package/src/utils/__tests__/exit-when-parent-exits.test.ts +87 -0
- package/src/utils/__tests__/find-up.test.ts +49 -0
- package/src/utils/__tests__/get-configuration.test.ts +62 -0
- package/src/utils/exit-when-parent-exits.ts +33 -0
- package/src/utils/find-up.ts +2 -2
- package/src/utils/get-configuration.ts +14 -5
- package/src/utils/index.ts +1 -0
- package/src/vite/__tests__/build-shared-dependencies.test.ts +39 -5
- package/src/vite/build-shared-dependencies.ts +2 -1
- package/src/vite/config/__tests__/base-config.test.ts +12 -4
- package/src/vite/config/__tests__/create-css-config.test.ts +2 -6
- package/src/vite/config/__tests__/create-vite-config.test.ts +6 -3
- package/src/vite/config/base-config.ts +13 -1
- package/src/vite/config/create-vite-config.ts +6 -3
- package/src/vite/index.html +2 -2
- package/src/vite/index.ts +2 -0
- package/src/vite/plugins/__tests__/chain-source-maps-plugin.test.ts +1 -1
- package/src/vite/plugins/__tests__/clean-plugin.test.ts +1 -1
- package/src/vite/plugins/__tests__/css-injector-plugin.test.ts +1 -1
- package/src/vite/plugins/__tests__/design-system-guard-plugin.test.ts +15 -3
- package/src/vite/plugins/__tests__/dev-server-routing-plugin.test.ts +1 -1
- package/src/vite/plugins/__tests__/externals-plugin.test.ts +24 -3
- package/src/vite/plugins/__tests__/html-plugin.test.ts +10 -3
- package/src/vite/plugins/__tests__/html-template.test.ts +10 -2
- package/src/vite/plugins/__tests__/ignore-modules-plugin.test.ts +30 -6
- package/src/vite/plugins/__tests__/less-tilde-plugin.test.ts +91 -0
- package/src/vite/plugins/__tests__/metadata-plugin.test.ts +1 -1
- package/src/vite/plugins/__tests__/moment-locales-plugin.test.ts +35 -25
- package/src/vite/plugins/__tests__/style-urls-plugin.test.ts +1 -1
- package/src/vite/plugins/__tests__/virtual-modules-plugin.test.ts +20 -9
- package/src/vite/plugins/__tests__/window-externals-plugin.test.ts +128 -0
- package/src/vite/plugins/chain-source-maps-plugin.ts +1 -1
- package/src/vite/plugins/clean-plugin.ts +1 -1
- package/src/vite/plugins/css-injector-plugin.ts +1 -1
- package/src/vite/plugins/design-system-guard-plugin.ts +11 -8
- package/src/vite/plugins/dev-server-routing-plugin.ts +1 -1
- package/src/vite/plugins/externals-plugin.ts +15 -6
- package/src/vite/plugins/html-plugin.ts +4 -2
- package/src/vite/plugins/ignore-modules-plugin.ts +32 -23
- package/src/vite/plugins/index.ts +3 -0
- package/src/vite/plugins/less-tilde-plugin.ts +64 -0
- package/src/vite/plugins/magic-comments-plugin/magic-comments-plugin.ts +1 -1
- package/src/vite/plugins/metadata-plugin.ts +1 -1
- package/src/vite/plugins/moment-locales-plugin.ts +24 -14
- package/src/vite/plugins/react-refresh-plugin/README.md +165 -0
- package/src/vite/plugins/react-refresh-plugin/__tests__/react-refresh-plugin.test.ts +366 -0
- package/src/vite/plugins/react-refresh-plugin/__tests__/refresh-runtime.test.ts +193 -0
- package/src/vite/plugins/react-refresh-plugin/index.ts +1 -0
- package/src/vite/plugins/react-refresh-plugin/react-refresh-plugin.ts +144 -0
- package/src/vite/plugins/react-refresh-plugin/refresh-runtime.js +113 -0
- package/src/vite/plugins/shared-dependencies-plugin/__tests__/shared-dependencies-plugin.test.ts +21 -16
- package/src/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.ts +13 -12
- package/src/vite/plugins/style-urls-plugin.ts +1 -1
- package/src/vite/plugins/virtual-modules-plugin.ts +8 -7
- package/src/vite/plugins/window-externals-plugin.ts +94 -0
- package/src/webpack/__tests__/bundle-webpack.test.ts +32 -0
- package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +17 -5
- package/src/webpack/__tests__/create-webpack-config.test.ts +10 -6
- package/src/webpack/bundle-webpack.ts +7 -1
- package/src/webpack/configs/optimization-config.ts +3 -3
- package/src/webpack/configs/output-config.ts +1 -1
- package/src/webpack/utils/__tests__/normalize-proxy-config.test.ts +121 -0
- package/src/webpack/utils/index.ts +1 -0
- package/src/webpack/utils/normalize-proxy-config.ts +59 -0
- package/tsconfig/types.d.ts +10 -0
- package/dist/cli/utils/get-bundle-command.d.ts +0 -3
- package/dist/cli/utils/get-bundle-command.d.ts.map +0 -1
- package/dist/cli/utils/get-bundle-command.js +0 -16
- package/dist/cli/utils/get-bundle-command.js.map +0 -1
- package/src/cli/utils/__tests__/get-bundle-command.test.ts +0 -23
- package/src/cli/utils/get-bundle-command.ts +0 -5
|
@@ -83,6 +83,14 @@ describe(`[startup] ${MfeCheck.name}`, () => {
|
|
|
83
83
|
});
|
|
84
84
|
}
|
|
85
85
|
|
|
86
|
+
function itReportsCompatibleLightBundle() {
|
|
87
|
+
test('outputs human-readable compatible message', async () => {
|
|
88
|
+
await subject();
|
|
89
|
+
|
|
90
|
+
expect(utils.log.info).toHaveBeenCalledWith('Compatible: light bundle can be used');
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
|
|
86
94
|
test('allows running from global location', () => {
|
|
87
95
|
expect(entry.allowRunFromGlobal).toBe(true);
|
|
88
96
|
});
|
|
@@ -97,11 +105,7 @@ describe(`[startup] ${MfeCheck.name}`, () => {
|
|
|
97
105
|
});
|
|
98
106
|
});
|
|
99
107
|
|
|
100
|
-
|
|
101
|
-
await subject();
|
|
102
|
-
|
|
103
|
-
expect(utils.log.info).toHaveBeenCalledWith('Compatible: light bundle can be used');
|
|
104
|
-
});
|
|
108
|
+
itReportsCompatibleLightBundle();
|
|
105
109
|
|
|
106
110
|
test('does not set exit code', async () => {
|
|
107
111
|
await subject();
|
|
@@ -131,6 +135,23 @@ describe(`[startup] ${MfeCheck.name}`, () => {
|
|
|
131
135
|
});
|
|
132
136
|
});
|
|
133
137
|
});
|
|
138
|
+
|
|
139
|
+
describe('when host enables expose-shared-dependencies at the top level of cli', () => {
|
|
140
|
+
beforeEach(() => {
|
|
141
|
+
vol.fromJSON({
|
|
142
|
+
'/path/to/host/package.json': JSON.stringify({
|
|
143
|
+
name: 'host-app',
|
|
144
|
+
dependencies: mockMetadata.dependencies,
|
|
145
|
+
cli: {
|
|
146
|
+
'expose-shared-dependencies': true,
|
|
147
|
+
'shared-dependencies': mockMetadata.sharedDependencies,
|
|
148
|
+
},
|
|
149
|
+
}),
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
itReportsCompatibleLightBundle();
|
|
154
|
+
});
|
|
134
155
|
});
|
|
135
156
|
|
|
136
157
|
describe('when incompatible', () => {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import { log } from '../../../utils';
|
|
1
|
+
import { exitWhenParentExits, log } from '../../../utils';
|
|
2
2
|
import { SwcCompilePackage, TscCompile, TscCompilePackage } from '../../tasks';
|
|
3
3
|
import { RunTask } from '../run-task';
|
|
4
4
|
|
|
5
5
|
jest.mock('../../../utils', () => ({
|
|
6
6
|
...jest.requireActual('../../../utils'),
|
|
7
|
+
exitWhenParentExits: jest.fn(),
|
|
7
8
|
log: { error: jest.fn(), text: jest.fn() },
|
|
8
9
|
}));
|
|
9
10
|
jest.mock('../../tasks/swc-compile-package');
|
|
@@ -34,9 +35,27 @@ describe(`[startup] ${RunTask.name}`, () => {
|
|
|
34
35
|
|
|
35
36
|
expect(jest.mocked(task).mock.instances[0].execute).toHaveBeenCalled();
|
|
36
37
|
});
|
|
38
|
+
|
|
39
|
+
test(`watches ${task.name} for the parent process to exit`, async () => {
|
|
40
|
+
await subject();
|
|
41
|
+
|
|
42
|
+
expect(jest.mocked(task).mock.instances[0].watchForParentExit).toHaveBeenCalled();
|
|
43
|
+
});
|
|
37
44
|
})
|
|
38
45
|
);
|
|
39
46
|
|
|
47
|
+
describe('watchForParentExit', () => {
|
|
48
|
+
beforeEach(() => (args = {}));
|
|
49
|
+
|
|
50
|
+
const subject = () => new RunTask(args).watchForParentExit();
|
|
51
|
+
|
|
52
|
+
test('does not watch for the parent process to exit', () => {
|
|
53
|
+
subject();
|
|
54
|
+
|
|
55
|
+
expect(exitWhenParentExits).not.toHaveBeenCalled();
|
|
56
|
+
});
|
|
57
|
+
});
|
|
58
|
+
|
|
40
59
|
describe('with empty args', () => {
|
|
41
60
|
beforeEach(() => (args = {}));
|
|
42
61
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createPackage } from '../../../__mocks__';
|
|
2
|
-
import { Package, PackageType, getPackages, log } from '../../../utils';
|
|
2
|
+
import { Package, PackageType, getConfiguration, getPackages, log } from '../../../utils';
|
|
3
3
|
import { compile, lernaExec, typeCheck, watchStdout } from '../../utils';
|
|
4
4
|
import { entry } from '../registry/start';
|
|
5
5
|
import { Start } from '../start';
|
|
@@ -38,6 +38,7 @@ describe(`[startup] ${Start.name}`, () => {
|
|
|
38
38
|
args = {};
|
|
39
39
|
packages = [];
|
|
40
40
|
jest.clearAllMocks();
|
|
41
|
+
jest.mocked(getConfiguration).mockReturnValue({});
|
|
41
42
|
jest.mocked(getPackages).mockImplementation(() => packages);
|
|
42
43
|
jest.mocked(watchStdout).mockImplementation((_process, _indicator, handler) => {
|
|
43
44
|
handler(packages.length);
|
|
@@ -106,6 +107,12 @@ describe(`[startup] ${Start.name}`, () => {
|
|
|
106
107
|
expect(entry.greedy).toBe(true);
|
|
107
108
|
});
|
|
108
109
|
|
|
110
|
+
test('sets process.env.STARTUP_PARENT_PID', async () => {
|
|
111
|
+
await subject();
|
|
112
|
+
|
|
113
|
+
expect(process.env.STARTUP_PARENT_PID).toBe(String(process.pid));
|
|
114
|
+
});
|
|
115
|
+
|
|
109
116
|
describe('with TSC package', () => {
|
|
110
117
|
beforeEach(() => packages.push(createPackage({ type: PackageType.TSC })));
|
|
111
118
|
|
|
@@ -121,7 +128,7 @@ describe(`[startup] ${Start.name}`, () => {
|
|
|
121
128
|
});
|
|
122
129
|
});
|
|
123
130
|
|
|
124
|
-
describe('with
|
|
131
|
+
describe('with bundle package', () => {
|
|
125
132
|
beforeEach(() => packages.push(createPackage({ type: PackageType.Bundle })));
|
|
126
133
|
|
|
127
134
|
itPreparesThePackages();
|
|
@@ -132,11 +139,11 @@ describe(`[startup] ${Start.name}`, () => {
|
|
|
132
139
|
await subject();
|
|
133
140
|
|
|
134
141
|
expect(lernaExec).toHaveBeenCalledWith({
|
|
135
|
-
'cmd': 'startup bundle-
|
|
142
|
+
'cmd': 'startup bundle-package',
|
|
136
143
|
'scope': packages.map(({ name }) => name),
|
|
137
144
|
'parallel': true,
|
|
138
145
|
'stream': true,
|
|
139
|
-
'--': ['--exposed-dependencies', '--use-watch-config'],
|
|
146
|
+
'--': ['--exposed-dependencies', '--use-watch-config', '--bundler webpack'],
|
|
140
147
|
});
|
|
141
148
|
});
|
|
142
149
|
|
|
@@ -144,24 +151,37 @@ describe(`[startup] ${Start.name}`, () => {
|
|
|
144
151
|
await subject();
|
|
145
152
|
|
|
146
153
|
expect(lernaExec).toHaveBeenCalledWith({
|
|
147
|
-
'cmd': 'startup bundle-
|
|
154
|
+
'cmd': 'startup bundle-package',
|
|
148
155
|
'scope': packages.map(({ name }) => name),
|
|
149
156
|
'parallel': true,
|
|
150
157
|
'stream': true,
|
|
151
|
-
'--': ['--watch'],
|
|
158
|
+
'--': ['--watch', '--bundler webpack'],
|
|
152
159
|
});
|
|
153
160
|
});
|
|
154
161
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
test('bundles with Vite in watch mode', async () => {
|
|
162
|
+
function itBundlesWithVite() {
|
|
163
|
+
test('bundles with vite', async () => {
|
|
159
164
|
await subject();
|
|
160
165
|
|
|
161
166
|
expect(lernaExec).toHaveBeenCalledWith(
|
|
162
|
-
expect.objectContaining({
|
|
167
|
+
expect.objectContaining({
|
|
168
|
+
'cmd': 'startup bundle-package',
|
|
169
|
+
'--': ['--watch', '--bundler vite'],
|
|
170
|
+
})
|
|
163
171
|
);
|
|
164
172
|
});
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
describe('with --bundler=vite', () => {
|
|
176
|
+
beforeEach(() => (args.bundler = 'vite'));
|
|
177
|
+
|
|
178
|
+
itBundlesWithVite();
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
describe('with cli.bundler set to vite', () => {
|
|
182
|
+
beforeEach(() => jest.mocked(getConfiguration).mockReturnValue({ bundler: 'vite' }));
|
|
183
|
+
|
|
184
|
+
itBundlesWithVite();
|
|
165
185
|
});
|
|
166
186
|
|
|
167
187
|
describe('with "code-coverage"', () => {
|
|
@@ -172,8 +192,8 @@ describe(`[startup] ${Start.name}`, () => {
|
|
|
172
192
|
|
|
173
193
|
expect(lernaExec).toHaveBeenCalledWith(
|
|
174
194
|
expect.objectContaining({
|
|
175
|
-
'cmd': 'startup bundle-
|
|
176
|
-
'--': ['--watch', '--code-coverage'],
|
|
195
|
+
'cmd': 'startup bundle-package',
|
|
196
|
+
'--': ['--watch', '--code-coverage', '--bundler webpack'],
|
|
177
197
|
})
|
|
178
198
|
);
|
|
179
199
|
});
|
|
@@ -187,8 +207,8 @@ describe(`[startup] ${Start.name}`, () => {
|
|
|
187
207
|
|
|
188
208
|
expect(lernaExec).toHaveBeenCalledWith(
|
|
189
209
|
expect.objectContaining({
|
|
190
|
-
'cmd': 'startup bundle-
|
|
191
|
-
'--': ['--watch', `--config "${args.config}"
|
|
210
|
+
'cmd': 'startup bundle-package',
|
|
211
|
+
'--': ['--watch', `--config "${args.config}"`, '--bundler webpack'],
|
|
192
212
|
})
|
|
193
213
|
);
|
|
194
214
|
});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getPackages, logErrors, PackageType } from '../../utils';
|
|
2
|
-
import { checkArgs, compile,
|
|
2
|
+
import { checkArgs, compile, lernaExec, ProcessTree, resolveBundler, typeCheck } from '../utils';
|
|
3
3
|
import { kendoUILicense } from './kendo-ui-license';
|
|
4
4
|
import type { entry } from './registry/build';
|
|
5
5
|
import { Command } from './types';
|
|
@@ -38,7 +38,7 @@ export class Build extends Command<typeof entry> {
|
|
|
38
38
|
const bundleScope = packages
|
|
39
39
|
.filter(({ type }) => type === PackageType.Bundle)
|
|
40
40
|
.map(({ name }) => name);
|
|
41
|
-
const
|
|
41
|
+
const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];
|
|
42
42
|
const precompileScope = packages
|
|
43
43
|
.filter(({ scripts }) => !!scripts?.precompile)
|
|
44
44
|
.map(({ name }) => name);
|
|
@@ -77,11 +77,11 @@ export class Build extends Command<typeof entry> {
|
|
|
77
77
|
return Promise.resolve();
|
|
78
78
|
}
|
|
79
79
|
return lernaExec({
|
|
80
|
-
'cmd':
|
|
80
|
+
'cmd': 'startup bundle-package',
|
|
81
81
|
'scope': bundleScope,
|
|
82
82
|
'parallel': true,
|
|
83
83
|
'stream': true,
|
|
84
|
-
'--': ['--exposed-dependencies'],
|
|
84
|
+
'--': ['--exposed-dependencies', ...bundlerArg],
|
|
85
85
|
});
|
|
86
86
|
},
|
|
87
87
|
{
|
|
@@ -100,7 +100,7 @@ export class Build extends Command<typeof entry> {
|
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
return lernaExec({
|
|
103
|
-
'cmd':
|
|
103
|
+
'cmd': 'startup bundle-package',
|
|
104
104
|
'scope': bundleScope,
|
|
105
105
|
'stream': true,
|
|
106
106
|
'--': [
|
|
@@ -108,6 +108,7 @@ export class Build extends Command<typeof entry> {
|
|
|
108
108
|
...[this.args.codeCoverage ? '--code-coverage' : undefined],
|
|
109
109
|
...[this.args.stat ? '--stat' : undefined],
|
|
110
110
|
...[this.args.preview ? '--preview' : undefined],
|
|
111
|
+
...bundlerArg,
|
|
111
112
|
].filter(item => !!item) as string[],
|
|
112
113
|
});
|
|
113
114
|
},
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { bundleConstants } from '../../core';
|
|
2
|
+
import { getConfiguration } from '../../utils';
|
|
3
|
+
import { entry } from './registry/bundle-package';
|
|
4
|
+
import { Command } from './types';
|
|
5
|
+
|
|
6
|
+
export class BundlePackage extends Command<typeof entry> {
|
|
7
|
+
async execute() {
|
|
8
|
+
// Local cli.bundler overrides project-wide default in this.args.bundler
|
|
9
|
+
const bundler =
|
|
10
|
+
getConfiguration().bundler ?? this.args.bundler ?? bundleConstants.defaultBundler;
|
|
11
|
+
|
|
12
|
+
if (bundler === 'vite') {
|
|
13
|
+
const { BundleVite } = await import('./bundle-vite');
|
|
14
|
+
await new BundleVite(this.args).execute();
|
|
15
|
+
} else {
|
|
16
|
+
const { BundleWebpack } = await import('./bundle-webpack');
|
|
17
|
+
await new BundleWebpack(this.args).execute();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CommandName, exitWhenParentExits } from '../../utils';
|
|
2
|
+
import { CommandEntry, InferArgs } from './types';
|
|
3
|
+
|
|
4
|
+
export abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {
|
|
5
|
+
constructor(protected readonly args: InferArgs<NonNullable<T['options']>, U>) {}
|
|
6
|
+
|
|
7
|
+
watchForParentExit(name: CommandName): void {
|
|
8
|
+
if ('watch' in this.args && this.args.watch === true) {
|
|
9
|
+
exitWhenParentExits(name);
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
abstract execute(): Promise<void>;
|
|
14
|
+
}
|
|
@@ -2,7 +2,10 @@ import { getPackageManager } from '@servicetitan/install';
|
|
|
2
2
|
import { getVersionMismatches } from '@servicetitan/startup-utils';
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
import { getExposedDependencies, Metadata } from '../../core';
|
|
5
|
+
import type { Configuration } from '../../utils';
|
|
5
6
|
import {
|
|
7
|
+
getSharedDependencies,
|
|
8
|
+
isExposeSharedDependencies,
|
|
6
9
|
isWebComponent,
|
|
7
10
|
loadSharedDependencies,
|
|
8
11
|
log,
|
|
@@ -16,13 +19,7 @@ import { Command } from './types';
|
|
|
16
19
|
interface HostPackageJSON {
|
|
17
20
|
name: string;
|
|
18
21
|
dependencies: Record<string, string>;
|
|
19
|
-
cli?:
|
|
20
|
-
'web-component'?: boolean | string | object;
|
|
21
|
-
'webpack'?: {
|
|
22
|
-
'expose-shared-dependencies'?: boolean;
|
|
23
|
-
'shared-dependencies'?: Record<string, string>;
|
|
24
|
-
};
|
|
25
|
-
};
|
|
22
|
+
cli?: Configuration;
|
|
26
23
|
}
|
|
27
24
|
|
|
28
25
|
interface HostData extends HostPackageJSON {
|
|
@@ -82,7 +79,7 @@ export class MfeCheck extends Command<typeof entry> {
|
|
|
82
79
|
const mfeSharedDependencies = mfeMetadata.sharedDependencies;
|
|
83
80
|
const hostSharedDependencies = loadSharedDependencies(
|
|
84
81
|
hostData.dependencies,
|
|
85
|
-
hostData
|
|
82
|
+
getSharedDependencies(hostData)
|
|
86
83
|
);
|
|
87
84
|
const packageManager = getPackageManager();
|
|
88
85
|
const workspacePackage = packageManager.getWorkspacePackage(hostData.location);
|
|
@@ -99,8 +96,7 @@ export class MfeCheck extends Command<typeof entry> {
|
|
|
99
96
|
);
|
|
100
97
|
|
|
101
98
|
const isHostMfe = isWebComponent(hostData);
|
|
102
|
-
const isSharedDependenciesEnabled =
|
|
103
|
-
hostData.cli?.webpack?.['expose-shared-dependencies'] === true;
|
|
99
|
+
const isSharedDependenciesEnabled = isExposeSharedDependencies(hostData);
|
|
104
100
|
const compatible = !isHostMfe && !mismatchResult && isSharedDependenciesEnabled;
|
|
105
101
|
|
|
106
102
|
return {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bundleConstants } from '../../../core';
|
|
1
2
|
import type { CommandEntry } from '../types';
|
|
2
3
|
import { defineEntry } from './define-entry';
|
|
3
4
|
|
|
@@ -6,9 +7,9 @@ export const entry = defineEntry({
|
|
|
6
7
|
greedy: true,
|
|
7
8
|
options: {
|
|
8
9
|
bundler: {
|
|
9
|
-
choices:
|
|
10
|
+
choices: bundleConstants.bundlers,
|
|
10
11
|
description: 'Bundler',
|
|
11
|
-
defaultDescription:
|
|
12
|
+
defaultDescription: bundleConstants.defaultBundler,
|
|
12
13
|
},
|
|
13
14
|
cdnPath: { string: true, description: 'Base url for application assets' },
|
|
14
15
|
codeCoverage: { boolean: true, description: 'Instrument code for coverage analysis?' },
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { bundleConstants } from '../../../core';
|
|
2
|
+
import type { CommandEntry } from '../types';
|
|
3
|
+
import { defineEntry } from './define-entry';
|
|
4
|
+
|
|
5
|
+
/*
|
|
6
|
+
* Internal dispatcher invoked by `start`/`build` per package. Its options are the union of
|
|
7
|
+
* bundle-vite and bundle-webpack so it can forward them to whichever bundler it delegates to,
|
|
8
|
+
* plus the run's --bundler default.
|
|
9
|
+
*/
|
|
10
|
+
export const entry = defineEntry({
|
|
11
|
+
options: {
|
|
12
|
+
bundler: { choices: bundleConstants.bundlers, hidden: true },
|
|
13
|
+
codeCoverage: { boolean: true, hidden: true },
|
|
14
|
+
config: { string: true, hidden: true },
|
|
15
|
+
exposedDependencies: { boolean: true, hidden: true },
|
|
16
|
+
preview: { boolean: true, hidden: true },
|
|
17
|
+
printConfig: { boolean: true, hidden: true },
|
|
18
|
+
stat: { boolean: true, hidden: true },
|
|
19
|
+
useWatchConfig: { boolean: true, hidden: true },
|
|
20
|
+
watch: { boolean: true, hidden: true },
|
|
21
|
+
},
|
|
22
|
+
} satisfies CommandEntry);
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { CommandName } from '../../../utils';
|
|
2
2
|
import { Command, CommandEntry, Newable } from '../types';
|
|
3
3
|
import { entry as build } from './build';
|
|
4
|
+
import { entry as bundlePackage } from './bundle-package';
|
|
4
5
|
import { entry as bundleVite } from './bundle-vite';
|
|
5
6
|
import { entry as bundleWebpack } from './bundle-webpack';
|
|
6
7
|
import { entry as clean } from './clean';
|
|
@@ -64,6 +65,7 @@ function makeEntry<K extends CommandName, T extends CommandEntry>(
|
|
|
64
65
|
*/
|
|
65
66
|
export const commandRegistry = {
|
|
66
67
|
...makeEntry(CommandName.build, build),
|
|
68
|
+
...makeEntry(CommandName['bundle-package'], bundlePackage),
|
|
67
69
|
...makeEntry(CommandName['bundle-vite'], bundleVite),
|
|
68
70
|
...makeEntry(CommandName['bundle-webpack'], bundleWebpack),
|
|
69
71
|
...makeEntry(CommandName.clean, clean),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { bundleConstants } from '../../../core';
|
|
1
2
|
import type { CommandEntry } from '../types';
|
|
2
3
|
import { defineEntry } from './define-entry';
|
|
3
4
|
|
|
@@ -6,9 +7,9 @@ export const entry = defineEntry({
|
|
|
6
7
|
greedy: true,
|
|
7
8
|
options: {
|
|
8
9
|
bundler: {
|
|
9
|
-
choices:
|
|
10
|
+
choices: bundleConstants.bundlers,
|
|
10
11
|
description: 'Bundler',
|
|
11
|
-
defaultDescription:
|
|
12
|
+
defaultDescription: bundleConstants.defaultBundler,
|
|
12
13
|
},
|
|
13
14
|
codeCoverage: { boolean: true, description: 'Instrument code for coverage analysis?' },
|
|
14
15
|
config: { string: true, hidden: true, description: 'Use specified configuration' },
|
|
@@ -12,15 +12,21 @@ const tasks: Record<string, new (args: { [key: string]: unknown }) => Task> = {
|
|
|
12
12
|
};
|
|
13
13
|
|
|
14
14
|
export class RunTask extends Command<typeof entry> {
|
|
15
|
+
watchForParentExit(): void {
|
|
16
|
+
// No-op: the task being run handles its own parent-exit watch.
|
|
17
|
+
}
|
|
18
|
+
|
|
15
19
|
@logErrors
|
|
16
20
|
async execute() {
|
|
17
21
|
const { _ = [], taskName = this.args._?.[0], taskArgs = [], ...restOptions } = this.args;
|
|
18
22
|
|
|
19
23
|
if (taskName && taskName in tasks) {
|
|
20
|
-
|
|
24
|
+
const task = new tasks[taskName]({
|
|
21
25
|
_: [..._, ...taskArgs],
|
|
22
26
|
...restOptions,
|
|
23
|
-
})
|
|
27
|
+
});
|
|
28
|
+
task.watchForParentExit();
|
|
29
|
+
await task.execute();
|
|
24
30
|
return;
|
|
25
31
|
}
|
|
26
32
|
|
|
@@ -2,10 +2,10 @@ import { getPackages, logErrors, PackageType } from '../../utils';
|
|
|
2
2
|
import {
|
|
3
3
|
checkArgs,
|
|
4
4
|
compile,
|
|
5
|
-
getBundleCommand,
|
|
6
5
|
lernaExec,
|
|
7
6
|
pipeStdout,
|
|
8
7
|
ProcessTree,
|
|
8
|
+
resolveBundler,
|
|
9
9
|
typeCheck,
|
|
10
10
|
watchStdout,
|
|
11
11
|
} from '../utils';
|
|
@@ -28,6 +28,9 @@ export class Start extends Command<typeof entry> {
|
|
|
28
28
|
async execute() {
|
|
29
29
|
checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });
|
|
30
30
|
|
|
31
|
+
// Used by sub-processes to detect this process dying
|
|
32
|
+
process.env.STARTUP_PARENT_PID = String(process.pid);
|
|
33
|
+
|
|
31
34
|
const useTsc = this.args.useTsc;
|
|
32
35
|
|
|
33
36
|
const packages = getPackages({
|
|
@@ -43,7 +46,7 @@ export class Start extends Command<typeof entry> {
|
|
|
43
46
|
const bundleScope = packages
|
|
44
47
|
.filter(({ type }) => type === PackageType.Bundle)
|
|
45
48
|
.map(({ name }) => name);
|
|
46
|
-
const
|
|
49
|
+
const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];
|
|
47
50
|
const precompileScope = packages
|
|
48
51
|
.filter(({ scripts }) => !!scripts?.precompile)
|
|
49
52
|
.map(({ name }) => name);
|
|
@@ -126,11 +129,11 @@ export class Start extends Command<typeof entry> {
|
|
|
126
129
|
return Promise.resolve();
|
|
127
130
|
}
|
|
128
131
|
return lernaExec({
|
|
129
|
-
'cmd':
|
|
132
|
+
'cmd': 'startup bundle-package',
|
|
130
133
|
'scope': bundleScope,
|
|
131
134
|
'parallel': true,
|
|
132
135
|
'stream': true,
|
|
133
|
-
'--': ['--exposed-dependencies', '--use-watch-config'],
|
|
136
|
+
'--': ['--exposed-dependencies', '--use-watch-config', ...bundlerArg],
|
|
134
137
|
});
|
|
135
138
|
},
|
|
136
139
|
{ dependsOn: [StartProcesses.Compile, StartProcesses.PreparePackage] }
|
|
@@ -142,7 +145,7 @@ export class Start extends Command<typeof entry> {
|
|
|
142
145
|
return Promise.resolve();
|
|
143
146
|
}
|
|
144
147
|
return lernaExec({
|
|
145
|
-
'cmd':
|
|
148
|
+
'cmd': 'startup bundle-package',
|
|
146
149
|
'scope': bundleScope,
|
|
147
150
|
'parallel': true,
|
|
148
151
|
'stream': true,
|
|
@@ -150,6 +153,7 @@ export class Start extends Command<typeof entry> {
|
|
|
150
153
|
'--watch',
|
|
151
154
|
this.args.config ? `--config "${this.args.config}"` : undefined,
|
|
152
155
|
this.args.codeCoverage ? '--code-coverage' : undefined,
|
|
156
|
+
...bundlerArg,
|
|
153
157
|
].filter(item => !!item) as string[],
|
|
154
158
|
});
|
|
155
159
|
},
|
|
@@ -56,10 +56,6 @@ export interface CommandEntry {
|
|
|
56
56
|
options?: CommandOptions;
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
export abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {
|
|
60
|
-
constructor(protected readonly args: InferArgs<NonNullable<T['options']>, U>) {}
|
|
61
|
-
|
|
62
|
-
abstract execute(): Promise<void>;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
59
|
export type Newable<T> = new (...args: any[]) => T;
|
|
60
|
+
|
|
61
|
+
export { Command } from './command';
|
package/src/cli/index.ts
CHANGED
|
@@ -69,6 +69,9 @@ async function handleCommand(name: CommandName, argv: any) {
|
|
|
69
69
|
const CommandClass = await entry.load();
|
|
70
70
|
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
71
71
|
const command = new CommandClass({ ...argv, _: argv._.slice(1) });
|
|
72
|
+
|
|
73
|
+
command.watchForParentExit(name);
|
|
74
|
+
|
|
72
75
|
command.execute().catch(() => {
|
|
73
76
|
process.exit(1);
|
|
74
77
|
});
|