@servicetitan/startup 38.0.0 → 38.2.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 +32 -10
- 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 +13 -0
- package/dist/cli/commands/command.d.ts.map +1 -0
- package/dist/cli/commands/command.js +74 -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.d.ts.map +1 -1
- package/dist/cli/commands/init.js +13 -5
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +14 -21
- 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 -18
- 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/install.d.ts +0 -16
- package/dist/cli/commands/registry/install.d.ts.map +1 -1
- package/dist/cli/commands/registry/install.js +1 -17
- package/dist/cli/commands/registry/install.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 +37 -14
- 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-git.d.ts +7 -0
- package/dist/cli/utils/cli-git.d.ts.map +1 -1
- package/dist/cli/utils/cli-git.js +30 -0
- package/dist/cli/utils/cli-git.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 +7 -1
- package/dist/cli/utils/cli-os.d.ts.map +1 -1
- package/dist/cli/utils/cli-os.js +42 -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/telemetry/index.d.ts +3 -0
- package/dist/telemetry/index.d.ts.map +1 -0
- package/dist/telemetry/index.js +21 -0
- package/dist/telemetry/index.js.map +1 -0
- package/dist/telemetry/telemetry.d.ts +15 -0
- package/dist/telemetry/telemetry.d.ts.map +1 -0
- package/dist/telemetry/telemetry.js +176 -0
- package/dist/telemetry/telemetry.js.map +1 -0
- 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-filtering-logger.d.ts.map +1 -1
- package/dist/vite/config/create-filtering-logger.js +6 -2
- package/dist/vite/config/create-filtering-logger.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 +17 -12
- 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 +32 -26
- package/src/cli/commands/__tests__/build.test.ts +81 -20
- package/src/cli/commands/__tests__/bundle-package.test.ts +65 -0
- package/src/cli/commands/__tests__/command.test.ts +154 -0
- package/src/cli/commands/__tests__/init.test.ts +1 -1
- package/src/cli/commands/__tests__/install.test.ts +5 -72
- 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 +77 -16
- package/src/cli/commands/build.ts +15 -6
- package/src/cli/commands/bundle-package.ts +20 -0
- package/src/cli/commands/command.ts +64 -0
- package/src/cli/commands/init.ts +0 -1
- package/src/cli/commands/install.ts +5 -21
- 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/install.ts +1 -6
- package/src/cli/commands/registry/start.ts +3 -2
- package/src/cli/commands/run-task.ts +8 -2
- package/src/cli/commands/start.ts +17 -6
- 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-git.test.ts +54 -3
- package/src/cli/utils/__tests__/cli-npm.test.ts +33 -0
- package/src/cli/utils/__tests__/cli-os.test.ts +183 -4
- 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-git.ts +27 -1
- package/src/cli/utils/cli-npm.ts +19 -4
- package/src/cli/utils/cli-os.ts +44 -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/telemetry/__tests__/telemetry.test.ts +326 -0
- package/src/telemetry/index.ts +2 -0
- package/src/telemetry/telemetry.ts +134 -0
- 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-filtering-logger.test.ts +3 -2
- 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-filtering-logger.ts +8 -2
- 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-shared-dependencies.test.ts +27 -1
- 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 +22 -11
- 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
package/bin/js-yaml.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
// Auto-generated by scripts/generate-bin-wrappers.js - wraps: js-yaml -> bin/js-yaml.
|
|
3
|
-
require('./_run')('js-yaml', 'bin/js-yaml.
|
|
2
|
+
// Auto-generated by scripts/generate-bin-wrappers.js - wraps: js-yaml -> bin/js-yaml.mjs
|
|
3
|
+
require('./_run')('js-yaml', 'bin/js-yaml.mjs');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAYlC,qBAAa,KAAM,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEtC,OAAO;
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAYlC,qBAAa,KAAM,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEtC,OAAO;CA6GhB"}
|
|
@@ -14,12 +14,21 @@ const _kendouilicense = require("./kendo-ui-license");
|
|
|
14
14
|
const _types = require("./types");
|
|
15
15
|
function _ts_decorate(decorators, target, key, desc) {
|
|
16
16
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
17
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
18
|
-
|
|
17
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
18
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
19
|
+
} else {
|
|
20
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
21
|
+
if (d = decorators[i]) {
|
|
22
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
19
26
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
20
27
|
}
|
|
21
|
-
function _ts_metadata(
|
|
22
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
28
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
29
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
30
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
31
|
+
}
|
|
23
32
|
}
|
|
24
33
|
var BuildProcesses = /*#__PURE__*/ function(BuildProcesses) {
|
|
25
34
|
BuildProcesses[BuildProcesses["Precompile"] = 0] = "Precompile";
|
|
@@ -51,12 +60,17 @@ class Build extends _types.Command {
|
|
|
51
60
|
if (packages.length === 0) {
|
|
52
61
|
return;
|
|
53
62
|
}
|
|
63
|
+
this.recordStart('build', {
|
|
64
|
+
bundler: (0, _utils1.resolveBundler)(this.args)
|
|
65
|
+
});
|
|
54
66
|
if (this.args.cdnPath) {
|
|
55
67
|
process.env.CLIENT_CDN_PATH = this.args.cdnPath;
|
|
56
68
|
}
|
|
57
69
|
const scope = packages.map(({ name })=>name);
|
|
58
70
|
const bundleScope = packages.filter(({ type })=>type === _utils.PackageType.Bundle).map(({ name })=>name);
|
|
59
|
-
const
|
|
71
|
+
const bundlerArg = [
|
|
72
|
+
`--bundler ${(0, _utils1.resolveBundler)(this.args)}`
|
|
73
|
+
];
|
|
60
74
|
const precompileScope = packages.filter(({ scripts })=>!!(scripts === null || scripts === void 0 ? void 0 : scripts.precompile)).map(({ name })=>name);
|
|
61
75
|
const processTree = new _utils1.ProcessTree();
|
|
62
76
|
processTree.add(0, ()=>{
|
|
@@ -96,12 +110,13 @@ class Build extends _types.Command {
|
|
|
96
110
|
return Promise.resolve();
|
|
97
111
|
}
|
|
98
112
|
return (0, _utils1.lernaExec)({
|
|
99
|
-
'cmd':
|
|
113
|
+
'cmd': 'startup bundle-package',
|
|
100
114
|
'scope': bundleScope,
|
|
101
115
|
'parallel': true,
|
|
102
116
|
'stream': true,
|
|
103
117
|
'--': [
|
|
104
|
-
'--exposed-dependencies'
|
|
118
|
+
'--exposed-dependencies',
|
|
119
|
+
...bundlerArg
|
|
105
120
|
]
|
|
106
121
|
});
|
|
107
122
|
}, {
|
|
@@ -116,7 +131,7 @@ class Build extends _types.Command {
|
|
|
116
131
|
return Promise.resolve();
|
|
117
132
|
}
|
|
118
133
|
return (0, _utils1.lernaExec)({
|
|
119
|
-
'cmd':
|
|
134
|
+
'cmd': 'startup bundle-package',
|
|
120
135
|
'scope': bundleScope,
|
|
121
136
|
'stream': true,
|
|
122
137
|
'--': [
|
|
@@ -131,7 +146,8 @@ class Build extends _types.Command {
|
|
|
131
146
|
],
|
|
132
147
|
...[
|
|
133
148
|
this.args.preview ? '--preview' : undefined
|
|
134
|
-
]
|
|
149
|
+
],
|
|
150
|
+
...bundlerArg
|
|
135
151
|
].filter((item)=>!!item)
|
|
136
152
|
});
|
|
137
153
|
}, {
|
|
@@ -139,7 +155,13 @@ class Build extends _types.Command {
|
|
|
139
155
|
5
|
|
140
156
|
]
|
|
141
157
|
});
|
|
142
|
-
|
|
158
|
+
try {
|
|
159
|
+
await processTree.run();
|
|
160
|
+
} catch (error) {
|
|
161
|
+
await this.recordEnd(error);
|
|
162
|
+
throw error;
|
|
163
|
+
}
|
|
164
|
+
this.recordEnd();
|
|
143
165
|
}
|
|
144
166
|
}
|
|
145
167
|
_ts_decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/build.ts"],"sourcesContent":["import { getPackages, logErrors, PackageType } from '../../utils';\nimport { checkArgs, compile,
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/build.ts"],"sourcesContent":["import { getPackages, logErrors, PackageType } from '../../utils';\nimport { checkArgs, compile, lernaExec, ProcessTree, resolveBundler, typeCheck } from '../utils';\nimport { kendoUILicense } from './kendo-ui-license';\nimport type { entry } from './registry/build';\nimport { Command } from './types';\n\nenum BuildProcesses {\n Precompile,\n Compile,\n KendoUILicense,\n PreparePackage,\n TypeCheck,\n BundleExposedDependencies,\n Bundle,\n}\n\nexport class Build extends Command<typeof entry> {\n @logErrors\n async execute() {\n checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });\n\n const useTsc = this.args.useTsc;\n\n const packages = getPackages({\n scope: this.args.scope,\n ignore: this.args.ignore,\n type: [PackageType.TSC, PackageType.Bundle],\n });\n if (packages.length === 0) {\n return;\n }\n\n this.recordStart('build', { bundler: resolveBundler(this.args) });\n\n if (this.args.cdnPath) {\n process.env.CLIENT_CDN_PATH = this.args.cdnPath;\n }\n\n const scope = packages.map(({ name }) => name);\n const bundleScope = packages\n .filter(({ type }) => type === PackageType.Bundle)\n .map(({ name }) => name);\n const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];\n const precompileScope = packages\n .filter(({ scripts }) => !!scripts?.precompile)\n .map(({ name }) => name);\n\n const processTree = new ProcessTree<typeof BuildProcesses>();\n\n processTree.add(BuildProcesses.Precompile, () => {\n if (precompileScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n cmd: 'npm run precompile',\n scope: precompileScope,\n parallel: true,\n stream: true,\n });\n });\n processTree.add(BuildProcesses.Compile, () => compile({ packages: scope, useTsc }), {\n dependsOn: [BuildProcesses.Precompile],\n });\n processTree.add(BuildProcesses.KendoUILicense, () => kendoUILicense());\n processTree.add(BuildProcesses.PreparePackage, () =>\n lernaExec({\n cmd: 'startup prepare-package',\n scope,\n stream: true,\n })\n );\n processTree.add(BuildProcesses.TypeCheck, () => typeCheck({ packages: scope }), {\n dependsOn: [BuildProcesses.PreparePackage],\n });\n processTree.add(\n BuildProcesses.BundleExposedDependencies,\n () => {\n if (bundleScope.length === 0) {\n return Promise.resolve();\n }\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'parallel': true,\n 'stream': true,\n '--': ['--exposed-dependencies', ...bundlerArg],\n });\n },\n {\n dependsOn: [\n BuildProcesses.Compile,\n BuildProcesses.KendoUILicense,\n BuildProcesses.PreparePackage,\n ],\n }\n );\n processTree.add(\n BuildProcesses.Bundle,\n () => {\n if (bundleScope.length === 0) {\n return Promise.resolve();\n }\n\n return lernaExec({\n 'cmd': 'startup bundle-package',\n 'scope': bundleScope,\n 'stream': true,\n '--': [\n ...[this.args.config ? `--config \"${this.args.config}\"` : undefined],\n ...[this.args.codeCoverage ? '--code-coverage' : undefined],\n ...[this.args.stat ? '--stat' : undefined],\n ...[this.args.preview ? '--preview' : undefined],\n ...bundlerArg,\n ].filter(item => !!item) as string[],\n });\n },\n { dependsOn: [BuildProcesses.BundleExposedDependencies] }\n );\n\n try {\n await processTree.run();\n } catch (error) {\n await this.recordEnd(error);\n throw error;\n }\n this.recordEnd();\n }\n}\n"],"names":["Build","BuildProcesses","Command","execute","checkArgs","args","obsolete","useTsc","packages","getPackages","scope","ignore","type","PackageType","TSC","Bundle","length","recordStart","bundler","resolveBundler","cdnPath","process","env","CLIENT_CDN_PATH","map","name","bundleScope","filter","bundlerArg","precompileScope","scripts","precompile","processTree","ProcessTree","add","Promise","resolve","lernaExec","cmd","parallel","stream","compile","dependsOn","kendoUILicense","typeCheck","config","undefined","codeCoverage","stat","preview","item","run","error","recordEnd"],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle-package.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/bundle-package.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,aAAc,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAC9C,OAAO;CAahB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "BundlePackage", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return BundlePackage;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _core = require("../../core");
|
|
12
|
+
const _utils = require("../../utils");
|
|
13
|
+
const _types = require("./types");
|
|
14
|
+
function _getRequireWildcardCache(nodeInterop) {
|
|
15
|
+
if (typeof WeakMap !== "function") return null;
|
|
16
|
+
var cacheBabelInterop = new WeakMap();
|
|
17
|
+
var cacheNodeInterop = new WeakMap();
|
|
18
|
+
return (_getRequireWildcardCache = function(nodeInterop) {
|
|
19
|
+
return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
|
|
20
|
+
})(nodeInterop);
|
|
21
|
+
}
|
|
22
|
+
function _interop_require_wildcard(obj, nodeInterop) {
|
|
23
|
+
if (!nodeInterop && obj && obj.__esModule) return obj;
|
|
24
|
+
if (obj === null || typeof obj !== "object" && typeof obj !== "function") return {
|
|
25
|
+
default: obj
|
|
26
|
+
};
|
|
27
|
+
var cache = _getRequireWildcardCache(nodeInterop);
|
|
28
|
+
if (cache && cache.has(obj)) return cache.get(obj);
|
|
29
|
+
var newObj = {
|
|
30
|
+
__proto__: null
|
|
31
|
+
};
|
|
32
|
+
var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
|
|
33
|
+
for(var key in obj){
|
|
34
|
+
if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
|
|
35
|
+
var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
|
|
36
|
+
if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);
|
|
37
|
+
else newObj[key] = obj[key];
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
newObj.default = obj;
|
|
41
|
+
if (cache) cache.set(obj, newObj);
|
|
42
|
+
return newObj;
|
|
43
|
+
}
|
|
44
|
+
class BundlePackage extends _types.Command {
|
|
45
|
+
async execute() {
|
|
46
|
+
var _ref, _getConfiguration_bundler;
|
|
47
|
+
// Local cli.bundler overrides project-wide default in this.args.bundler
|
|
48
|
+
const bundler = (_ref = (_getConfiguration_bundler = (0, _utils.getConfiguration)().bundler) !== null && _getConfiguration_bundler !== void 0 ? _getConfiguration_bundler : this.args.bundler) !== null && _ref !== void 0 ? _ref : _core.bundleConstants.defaultBundler;
|
|
49
|
+
if (bundler === 'vite') {
|
|
50
|
+
const { BundleVite } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./bundle-vite")));
|
|
51
|
+
await new BundleVite(this.args).execute();
|
|
52
|
+
} else {
|
|
53
|
+
const { BundleWebpack } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("./bundle-webpack")));
|
|
54
|
+
await new BundleWebpack(this.args).execute();
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
//# sourceMappingURL=bundle-package.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/bundle-package.ts"],"sourcesContent":["import { bundleConstants } from '../../core';\nimport { getConfiguration } from '../../utils';\nimport { entry } from './registry/bundle-package';\nimport { Command } from './types';\n\nexport class BundlePackage extends Command<typeof entry> {\n async execute() {\n // Local cli.bundler overrides project-wide default in this.args.bundler\n const bundler =\n getConfiguration().bundler ?? this.args.bundler ?? bundleConstants.defaultBundler;\n\n if (bundler === 'vite') {\n const { BundleVite } = await import('./bundle-vite');\n await new BundleVite(this.args).execute();\n } else {\n const { BundleWebpack } = await import('./bundle-webpack');\n await new BundleWebpack(this.args).execute();\n }\n }\n}\n"],"names":["BundlePackage","Command","execute","getConfiguration","bundler","args","bundleConstants","defaultBundler","BundleVite","BundleWebpack"],"mappings":";;;;+BAKaA;;;eAAAA;;;sBALmB;uBACC;uBAET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEjB,MAAMA,sBAAsBC,cAAO;IACtC,MAAMC,UAAU;YAGRC,MAAAA;QAFJ,wEAAwE;QACxE,MAAMC,WACFD,QAAAA,4BAAAA,IAAAA,uBAAgB,IAAGC,OAAO,cAA1BD,uCAAAA,4BAA8B,IAAI,CAACE,IAAI,CAACD,OAAO,cAA/CD,kBAAAA,OAAmDG,qBAAe,CAACC,cAAc;QAErF,IAAIH,YAAY,QAAQ;YACpB,MAAM,EAAEI,UAAU,EAAE,GAAG,MAAM,mEAAA,QAAO;YACpC,MAAM,IAAIA,WAAW,IAAI,CAACH,IAAI,EAAEH,OAAO;QAC3C,OAAO;YACH,MAAM,EAAEO,aAAa,EAAE,GAAG,MAAM,mEAAA,QAAO;YACvC,MAAM,IAAIA,cAAc,IAAI,CAACJ,IAAI,EAAEH,OAAO;QAC9C;IACJ;AACJ"}
|
|
@@ -17,12 +17,21 @@ const _validateshareddependencies = require("../../vite/validate-shared-dependen
|
|
|
17
17
|
const _types = require("./types");
|
|
18
18
|
function _ts_decorate(decorators, target, key, desc) {
|
|
19
19
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
20
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
21
|
-
|
|
20
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
21
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
22
|
+
} else {
|
|
23
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
24
|
+
if (d = decorators[i]) {
|
|
25
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
}
|
|
22
29
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
23
30
|
}
|
|
24
|
-
function _ts_metadata(
|
|
25
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
31
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
33
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
34
|
+
}
|
|
26
35
|
}
|
|
27
36
|
class BundleVite extends _types.Command {
|
|
28
37
|
async execute() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/bundle-vite.ts"],"sourcesContent":["import { build, createServer, preview as previewServer } from 'vite';\nimport { BuildContextOptions, getBuildName, stringifyConfig } from '../../core';\nimport {\n hasHeadlessBundle,\n isExposeSharedDependencies,\n isViteDevServerDisabled,\n isWebComponent,\n log,\n logErrors,\n} from '../../utils';\nimport { buildSharedDependencies } from '../../vite/build-shared-dependencies';\nimport { createViteConfig } from '../../vite/config';\nimport { validateViteSharedDependencies } from '../../vite/validate-shared-dependencies';\nimport { entry } from './registry/bundle-vite';\nimport { Command } from './types';\n\nexport class BundleVite extends Command<typeof entry> {\n @logErrors\n async execute() {\n validateViteSharedDependencies();\n\n const { preview = false, useWatchConfig = false, watch = false } = this.args;\n const isProduction = !(watch || useWatchConfig);\n\n const options: BuildContextOptions = {\n name: getBuildName(),\n isProduction,\n buildStat: this.args.stat,\n };\n\n if (this.args.printConfig) {\n const config = await createViteConfig(options);\n log.text(stringifyConfig(config));\n return;\n }\n\n if (this.args.exposedDependencies) {\n if (watch) {\n throw new Error('cannot bundle exposed dependencies in watch mode');\n }\n if (!isExposeSharedDependencies()) {\n return;\n }\n await buildSharedDependencies(options);\n return;\n }\n\n if (isWebComponent()) {\n // Start builds sequentially to avoid I/O contention during startup\n await buildAndServe({ ...options, light: true }, { watch });\n if (hasHeadlessBundle()) {\n await buildAndServe({ ...options, headless: true }, { watch });\n }\n }\n\n await buildAndServe(options, { watch, preview });\n }\n}\n\nasync function buildAndServe(\n options: BuildContextOptions,\n { watch, preview = false }: { watch: boolean; preview?: boolean }\n): Promise<void> {\n const config = await createViteConfig(options);\n if (watch) {\n if (isViteDevServerDisabled()) {\n /*\n * Create a development build with no HTTP server, using Vite's watcher to rebuild\n * on change. `vite build` forces NODE_ENV to production regardless of `mode`, because\n * Vite treats the two as independent. Set NODE_ENV directly to get a development\n * build; `mode` alone does not change it.\n */\n process.env.NODE_ENV = 'development';\n await build({ ...config, build: { ...config.build, watch: {} } });\n return;\n }\n await serve(config);\n return;\n }\n\n await build(config);\n if (preview) {\n await serve({ ...config, preview: { port: config.server?.port, open: true } }, true);\n }\n}\n\nasync function serve(config: import('vite').InlineConfig, preview = false) {\n const server = preview ? await previewServer(config) : await createServer(config);\n if ('listen' in server) {\n await server.listen();\n }\n server.printUrls();\n server.bindCLIShortcuts({ print: true });\n return server;\n}\n"],"names":["BundleVite","Command","execute","validateViteSharedDependencies","preview","useWatchConfig","watch","args","isProduction","options","name","getBuildName","buildStat","stat","printConfig","config","createViteConfig","log","text","stringifyConfig","exposedDependencies","Error","isExposeSharedDependencies","buildSharedDependencies","isWebComponent","buildAndServe","light","hasHeadlessBundle","headless","isViteDevServerDisabled","process","env","NODE_ENV","build","serve","port","server","open","previewServer","createServer","listen","printUrls","bindCLIShortcuts","print"],"mappings":";;;;+BAgBaA;;;eAAAA;;;sBAhBiD;sBACK;uBAQ5D;yCACiC;wBACP;4CACc;uBAEvB
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/bundle-vite.ts"],"sourcesContent":["import { build, createServer, preview as previewServer } from 'vite';\nimport { BuildContextOptions, getBuildName, stringifyConfig } from '../../core';\nimport {\n hasHeadlessBundle,\n isExposeSharedDependencies,\n isViteDevServerDisabled,\n isWebComponent,\n log,\n logErrors,\n} from '../../utils';\nimport { buildSharedDependencies } from '../../vite/build-shared-dependencies';\nimport { createViteConfig } from '../../vite/config';\nimport { validateViteSharedDependencies } from '../../vite/validate-shared-dependencies';\nimport { entry } from './registry/bundle-vite';\nimport { Command } from './types';\n\nexport class BundleVite extends Command<typeof entry> {\n @logErrors\n async execute() {\n validateViteSharedDependencies();\n\n const { preview = false, useWatchConfig = false, watch = false } = this.args;\n const isProduction = !(watch || useWatchConfig);\n\n const options: BuildContextOptions = {\n name: getBuildName(),\n isProduction,\n buildStat: this.args.stat,\n };\n\n if (this.args.printConfig) {\n const config = await createViteConfig(options);\n log.text(stringifyConfig(config));\n return;\n }\n\n if (this.args.exposedDependencies) {\n if (watch) {\n throw new Error('cannot bundle exposed dependencies in watch mode');\n }\n if (!isExposeSharedDependencies()) {\n return;\n }\n await buildSharedDependencies(options);\n return;\n }\n\n if (isWebComponent()) {\n // Start builds sequentially to avoid I/O contention during startup\n await buildAndServe({ ...options, light: true }, { watch });\n if (hasHeadlessBundle()) {\n await buildAndServe({ ...options, headless: true }, { watch });\n }\n }\n\n await buildAndServe(options, { watch, preview });\n }\n}\n\nasync function buildAndServe(\n options: BuildContextOptions,\n { watch, preview = false }: { watch: boolean; preview?: boolean }\n): Promise<void> {\n const config = await createViteConfig(options);\n if (watch) {\n if (isViteDevServerDisabled()) {\n /*\n * Create a development build with no HTTP server, using Vite's watcher to rebuild\n * on change. `vite build` forces NODE_ENV to production regardless of `mode`, because\n * Vite treats the two as independent. Set NODE_ENV directly to get a development\n * build; `mode` alone does not change it.\n */\n process.env.NODE_ENV = 'development';\n await build({ ...config, build: { ...config.build, watch: {} } });\n return;\n }\n await serve(config);\n return;\n }\n\n await build(config);\n if (preview) {\n await serve({ ...config, preview: { port: config.server?.port, open: true } }, true);\n }\n}\n\nasync function serve(config: import('vite').InlineConfig, preview = false) {\n const server = preview ? await previewServer(config) : await createServer(config);\n if ('listen' in server) {\n await server.listen();\n }\n server.printUrls();\n server.bindCLIShortcuts({ print: true });\n return server;\n}\n"],"names":["BundleVite","Command","execute","validateViteSharedDependencies","preview","useWatchConfig","watch","args","isProduction","options","name","getBuildName","buildStat","stat","printConfig","config","createViteConfig","log","text","stringifyConfig","exposedDependencies","Error","isExposeSharedDependencies","buildSharedDependencies","isWebComponent","buildAndServe","light","hasHeadlessBundle","headless","isViteDevServerDisabled","process","env","NODE_ENV","build","serve","port","server","open","previewServer","createServer","listen","printUrls","bindCLIShortcuts","print"],"mappings":";;;;+BAgBaA;;;eAAAA;;;sBAhBiD;sBACK;uBAQ5D;yCACiC;wBACP;4CACc;uBAEvB;;;;;;;;;;;;;;;;;;;AAEjB,MAAMA,mBAAmBC,cAAO;IACnC,MACMC,UAAU;QACZC,IAAAA,0DAA8B;QAE9B,MAAM,EAAEC,UAAU,KAAK,EAAEC,iBAAiB,KAAK,EAAEC,QAAQ,KAAK,EAAE,GAAG,IAAI,CAACC,IAAI;QAC5E,MAAMC,eAAe,CAAEF,CAAAA,SAASD,cAAa;QAE7C,MAAMI,UAA+B;YACjCC,MAAMC,IAAAA,kBAAY;YAClBH;YACAI,WAAW,IAAI,CAACL,IAAI,CAACM,IAAI;QAC7B;QAEA,IAAI,IAAI,CAACN,IAAI,CAACO,WAAW,EAAE;YACvB,MAAMC,SAAS,MAAMC,IAAAA,wBAAgB,EAACP;YACtCQ,UAAG,CAACC,IAAI,CAACC,IAAAA,qBAAe,EAACJ;YACzB;QACJ;QAEA,IAAI,IAAI,CAACR,IAAI,CAACa,mBAAmB,EAAE;YAC/B,IAAId,OAAO;gBACP,MAAM,IAAIe,MAAM;YACpB;YACA,IAAI,CAACC,IAAAA,iCAA0B,KAAI;gBAC/B;YACJ;YACA,MAAMC,IAAAA,gDAAuB,EAACd;YAC9B;QACJ;QAEA,IAAIe,IAAAA,qBAAc,KAAI;YAClB,mEAAmE;YACnE,MAAMC,cAAc;gBAAE,GAAGhB,OAAO;gBAAEiB,OAAO;YAAK,GAAG;gBAAEpB;YAAM;YACzD,IAAIqB,IAAAA,wBAAiB,KAAI;gBACrB,MAAMF,cAAc;oBAAE,GAAGhB,OAAO;oBAAEmB,UAAU;gBAAK,GAAG;oBAAEtB;gBAAM;YAChE;QACJ;QAEA,MAAMmB,cAAchB,SAAS;YAAEH;YAAOF;QAAQ;IAClD;AACJ;;;;;;;AAEA,eAAeqB,cACXhB,OAA4B,EAC5B,EAAEH,KAAK,EAAEF,UAAU,KAAK,EAAyC;IAEjE,MAAMW,SAAS,MAAMC,IAAAA,wBAAgB,EAACP;IACtC,IAAIH,OAAO;QACP,IAAIuB,IAAAA,8BAAuB,KAAI;YAC3B;;;;;aAKC,GACDC,QAAQC,GAAG,CAACC,QAAQ,GAAG;YACvB,MAAMC,IAAAA,WAAK,EAAC;gBAAE,GAAGlB,MAAM;gBAAEkB,OAAO;oBAAE,GAAGlB,OAAOkB,KAAK;oBAAE3B,OAAO,CAAC;gBAAE;YAAE;YAC/D;QACJ;QACA,MAAM4B,MAAMnB;QACZ;IACJ;IAEA,MAAMkB,IAAAA,WAAK,EAAClB;IACZ,IAAIX,SAAS;YACiCW;QAA1C,MAAMmB,MAAM;YAAE,GAAGnB,MAAM;YAAEX,SAAS;gBAAE+B,IAAI,GAAEpB,iBAAAA,OAAOqB,MAAM,cAAbrB,qCAAAA,eAAeoB,IAAI;gBAAEE,MAAM;YAAK;QAAE,GAAG;IACnF;AACJ;AAEA,eAAeH,MAAMnB,MAAmC,EAAEX,UAAU,KAAK;IACrE,MAAMgC,SAAShC,UAAU,MAAMkC,IAAAA,aAAa,EAACvB,UAAU,MAAMwB,IAAAA,kBAAY,EAACxB;IAC1E,IAAI,YAAYqB,QAAQ;QACpB,MAAMA,OAAOI,MAAM;IACvB;IACAJ,OAAOK,SAAS;IAChBL,OAAOM,gBAAgB,CAAC;QAAEC,OAAO;IAAK;IACtC,OAAOP;AACX"}
|
|
@@ -14,12 +14,21 @@ const _utils1 = require("../utils");
|
|
|
14
14
|
const _types = require("./types");
|
|
15
15
|
function _ts_decorate(decorators, target, key, desc) {
|
|
16
16
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
17
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
18
|
-
|
|
17
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
18
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
19
|
+
} else {
|
|
20
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
21
|
+
if (d = decorators[i]) {
|
|
22
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
19
26
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
20
27
|
}
|
|
21
|
-
function _ts_metadata(
|
|
22
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
28
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
29
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
30
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
31
|
+
}
|
|
23
32
|
}
|
|
24
33
|
class BundleWebpack extends _types.Command {
|
|
25
34
|
async execute() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/bundle-webpack.ts"],"sourcesContent":["import { getTsConfig, log, logErrors, validateSharedDependencies } from '../../utils';\nimport { bundleWebpack } from '../../webpack';\nimport { getModuleType } from '../utils';\nimport type { entry } from './registry/bundle-webpack';\nimport { Command } from './types';\n\nexport class BundleWebpack extends Command<typeof entry> {\n @logErrors\n async execute() {\n validateSharedDependencies();\n\n const {\n config,\n codeCoverage,\n exposedDependencies: emitExposedDependencies,\n stat = false,\n useWatchConfig,\n watch,\n } = this.args;\n\n if (getModuleType(getTsConfig()) !== 'esnext') {\n log.warning(\n 'webpack packages should set compilerOptions.module to \"esnext\" in tsconfig.json'\n );\n }\n\n const options: Parameters<typeof bundleWebpack>[0] = {\n ...(emitExposedDependencies ? {} : { config }),\n codeCoverage,\n emitExposedDependencies,\n useWatchConfig,\n };\n\n await bundleWebpack({ buildStat: stat, ...options, watch });\n }\n}\n"],"names":["BundleWebpack","Command","execute","validateSharedDependencies","config","codeCoverage","exposedDependencies","emitExposedDependencies","stat","useWatchConfig","watch","args","getModuleType","getTsConfig","log","warning","options","bundleWebpack","buildStat"],"mappings":";;;;+BAMaA;;;eAAAA;;;uBAN2D;yBAC1C;wBACA;uBAEN
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/bundle-webpack.ts"],"sourcesContent":["import { getTsConfig, log, logErrors, validateSharedDependencies } from '../../utils';\nimport { bundleWebpack } from '../../webpack';\nimport { getModuleType } from '../utils';\nimport type { entry } from './registry/bundle-webpack';\nimport { Command } from './types';\n\nexport class BundleWebpack extends Command<typeof entry> {\n @logErrors\n async execute() {\n validateSharedDependencies();\n\n const {\n config,\n codeCoverage,\n exposedDependencies: emitExposedDependencies,\n stat = false,\n useWatchConfig,\n watch,\n } = this.args;\n\n if (getModuleType(getTsConfig()) !== 'esnext') {\n log.warning(\n 'webpack packages should set compilerOptions.module to \"esnext\" in tsconfig.json'\n );\n }\n\n const options: Parameters<typeof bundleWebpack>[0] = {\n ...(emitExposedDependencies ? {} : { config }),\n codeCoverage,\n emitExposedDependencies,\n useWatchConfig,\n };\n\n await bundleWebpack({ buildStat: stat, ...options, watch });\n }\n}\n"],"names":["BundleWebpack","Command","execute","validateSharedDependencies","config","codeCoverage","exposedDependencies","emitExposedDependencies","stat","useWatchConfig","watch","args","getModuleType","getTsConfig","log","warning","options","bundleWebpack","buildStat"],"mappings":";;;;+BAMaA;;;eAAAA;;;uBAN2D;yBAC1C;wBACA;uBAEN;;;;;;;;;;;;;;;;;;;AAEjB,MAAMA,sBAAsBC,cAAO;IACtC,MACMC,UAAU;QACZC,IAAAA,iCAA0B;QAE1B,MAAM,EACFC,MAAM,EACNC,YAAY,EACZC,qBAAqBC,uBAAuB,EAC5CC,OAAO,KAAK,EACZC,cAAc,EACdC,KAAK,EACR,GAAG,IAAI,CAACC,IAAI;QAEb,IAAIC,IAAAA,qBAAa,EAACC,IAAAA,kBAAW,SAAQ,UAAU;YAC3CC,UAAG,CAACC,OAAO,CACP;QAER;QAEA,MAAMC,UAA+C;YACjD,GAAIT,0BAA0B,CAAC,IAAI;gBAAEH;YAAO,CAAC;YAC7CC;YACAE;YACAE;QACJ;QAEA,MAAMQ,IAAAA,sBAAa,EAAC;YAAEC,WAAWV;YAAM,GAAGQ,OAAO;YAAEN;QAAM;IAC7D;AACJ"}
|
|
@@ -23,12 +23,21 @@ function _interop_require_default(obj) {
|
|
|
23
23
|
}
|
|
24
24
|
function _ts_decorate(decorators, target, key, desc) {
|
|
25
25
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
26
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
27
|
-
|
|
26
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
27
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
28
|
+
} else {
|
|
29
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
30
|
+
if (d = decorators[i]) {
|
|
31
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
28
35
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
29
36
|
}
|
|
30
|
-
function _ts_metadata(
|
|
31
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
37
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
38
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
39
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
40
|
+
}
|
|
32
41
|
}
|
|
33
42
|
const exec = (0, _nodeutil.promisify)(_nodechild_process.exec);
|
|
34
43
|
var CleanProcesses = /*#__PURE__*/ function(CleanProcesses) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/clean.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport { exec as execAsync, execSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { promisify } from 'node:util';\nimport { log, logErrors } from '../../utils';\nimport { ProcessTree } from '../utils/process-tree';\nimport type { entry } from './registry/clean';\nimport { Command } from './types';\n\nconst exec = promisify(execAsync);\n\nenum CleanProcesses {\n CleanGitWorkingTree,\n ClearJestCache,\n ClearNpxCache,\n ClearPackageManagerCache,\n ResetNx,\n}\n\nexport class Clean extends Command<typeof entry> {\n @logErrors\n async execute() {\n const processTree = new ProcessTree<typeof CleanProcesses>();\n\n processTree.add(CleanProcesses.ResetNx, () => this.runCommand('nx reset'));\n processTree.add(CleanProcesses.ClearJestCache, () => this.runCommand('jest --clearCache'));\n processTree.add(CleanProcesses.ClearPackageManagerCache, () =>\n Promise.resolve(this.clearPackageManagerCache())\n );\n processTree.add(CleanProcesses.ClearNpxCache, () => this.clearNpxCache());\n\n await processTree.run();\n\n this.cleanGitWorkingTree();\n }\n\n private async runCommand(command: string) {\n try {\n log.info(`Running: ${command}`);\n await exec(command);\n } catch (error) {\n log.error(`Error running ${command}: ${error}`);\n }\n }\n\n private cleanGitWorkingTree() {\n // Use exec() to avoid error when startup dependencies are deleted while startup is running\n const command = 'git clean -fdX';\n log.info(`Running: ${command}`);\n exec(command);\n }\n\n private async clearNpxCache() {\n try {\n const npmCacheDir = execSync('npm config get cache').toString().trim();\n const npxCachePath = path.join(npmCacheDir, '_npx');\n\n log.info('Clearing npx cache');\n await fs.promises.rm(npxCachePath, { recursive: true, force: true });\n } catch (error) {\n log.error(`Error clearing npx cache: ${error}`);\n }\n }\n\n private clearPackageManagerCache() {\n try {\n const packageManager = getPackageManager();\n log.info(`Clearing ${packageManager.command} cache`);\n packageManager.clearCache();\n } catch (error) {\n log.error(`Error clearing package manager cache: ${error}`);\n }\n }\n}\n"],"names":["Clean","exec","promisify","execAsync","CleanProcesses","Command","execute","processTree","ProcessTree","add","runCommand","Promise","resolve","clearPackageManagerCache","clearNpxCache","run","cleanGitWorkingTree","command","log","info","error","npmCacheDir","execSync","toString","trim","npxCachePath","path","join","fs","promises","rm","recursive","force","packageManager","getPackageManager","clearCache"],"mappings":";;;;+BAoBaA;;;eAAAA;;;yBApBqB;mCACU;+DAC7B;iEACE;0BACS;uBACK;6BACH;uBAEJ
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/clean.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport { exec as execAsync, execSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { promisify } from 'node:util';\nimport { log, logErrors } from '../../utils';\nimport { ProcessTree } from '../utils/process-tree';\nimport type { entry } from './registry/clean';\nimport { Command } from './types';\n\nconst exec = promisify(execAsync);\n\nenum CleanProcesses {\n CleanGitWorkingTree,\n ClearJestCache,\n ClearNpxCache,\n ClearPackageManagerCache,\n ResetNx,\n}\n\nexport class Clean extends Command<typeof entry> {\n @logErrors\n async execute() {\n const processTree = new ProcessTree<typeof CleanProcesses>();\n\n processTree.add(CleanProcesses.ResetNx, () => this.runCommand('nx reset'));\n processTree.add(CleanProcesses.ClearJestCache, () => this.runCommand('jest --clearCache'));\n processTree.add(CleanProcesses.ClearPackageManagerCache, () =>\n Promise.resolve(this.clearPackageManagerCache())\n );\n processTree.add(CleanProcesses.ClearNpxCache, () => this.clearNpxCache());\n\n await processTree.run();\n\n this.cleanGitWorkingTree();\n }\n\n private async runCommand(command: string) {\n try {\n log.info(`Running: ${command}`);\n await exec(command);\n } catch (error) {\n log.error(`Error running ${command}: ${error}`);\n }\n }\n\n private cleanGitWorkingTree() {\n // Use exec() to avoid error when startup dependencies are deleted while startup is running\n const command = 'git clean -fdX';\n log.info(`Running: ${command}`);\n exec(command);\n }\n\n private async clearNpxCache() {\n try {\n const npmCacheDir = execSync('npm config get cache').toString().trim();\n const npxCachePath = path.join(npmCacheDir, '_npx');\n\n log.info('Clearing npx cache');\n await fs.promises.rm(npxCachePath, { recursive: true, force: true });\n } catch (error) {\n log.error(`Error clearing npx cache: ${error}`);\n }\n }\n\n private clearPackageManagerCache() {\n try {\n const packageManager = getPackageManager();\n log.info(`Clearing ${packageManager.command} cache`);\n packageManager.clearCache();\n } catch (error) {\n log.error(`Error clearing package manager cache: ${error}`);\n }\n }\n}\n"],"names":["Clean","exec","promisify","execAsync","CleanProcesses","Command","execute","processTree","ProcessTree","add","runCommand","Promise","resolve","clearPackageManagerCache","clearNpxCache","run","cleanGitWorkingTree","command","log","info","error","npmCacheDir","execSync","toString","trim","npxCachePath","path","join","fs","promises","rm","recursive","force","packageManager","getPackageManager","clearCache"],"mappings":";;;;+BAoBaA;;;eAAAA;;;yBApBqB;mCACU;+DAC7B;iEACE;0BACS;uBACK;6BACH;uBAEJ;;;;;;;;;;;;;;;;;;;;;;;;AAExB,MAAMC,OAAOC,IAAAA,mBAAS,EAACC,uBAAS;AAEhC,IAAA,AAAKC,wCAAAA;;;;;;WAAAA;EAAAA;AAQE,MAAMJ,cAAcK,cAAO;IAC9B,MACMC,UAAU;QACZ,MAAMC,cAAc,IAAIC,wBAAW;QAEnCD,YAAYE,GAAG,IAAyB,IAAM,IAAI,CAACC,UAAU,CAAC;QAC9DH,YAAYE,GAAG,IAAgC,IAAM,IAAI,CAACC,UAAU,CAAC;QACrEH,YAAYE,GAAG,IAA0C,IACrDE,QAAQC,OAAO,CAAC,IAAI,CAACC,wBAAwB;QAEjDN,YAAYE,GAAG,IAA+B,IAAM,IAAI,CAACK,aAAa;QAEtE,MAAMP,YAAYQ,GAAG;QAErB,IAAI,CAACC,mBAAmB;IAC5B;IAEA,MAAcN,WAAWO,OAAe,EAAE;QACtC,IAAI;YACAC,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEF,SAAS;YAC9B,MAAMhB,KAAKgB;QACf,EAAE,OAAOG,OAAO;YACZF,UAAG,CAACE,KAAK,CAAC,CAAC,cAAc,EAAEH,QAAQ,EAAE,EAAEG,OAAO;QAClD;IACJ;IAEQJ,sBAAsB;QAC1B,2FAA2F;QAC3F,MAAMC,UAAU;QAChBC,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEF,SAAS;QAC9BhB,KAAKgB;IACT;IAEA,MAAcH,gBAAgB;QAC1B,IAAI;YACA,MAAMO,cAAcC,IAAAA,2BAAQ,EAAC,wBAAwBC,QAAQ,GAAGC,IAAI;YACpE,MAAMC,eAAeC,iBAAI,CAACC,IAAI,CAACN,aAAa;YAE5CH,UAAG,CAACC,IAAI,CAAC;YACT,MAAMS,eAAE,CAACC,QAAQ,CAACC,EAAE,CAACL,cAAc;gBAAEM,WAAW;gBAAMC,OAAO;YAAK;QACtE,EAAE,OAAOZ,OAAO;YACZF,UAAG,CAACE,KAAK,CAAC,CAAC,0BAA0B,EAAEA,OAAO;QAClD;IACJ;IAEQP,2BAA2B;QAC/B,IAAI;YACA,MAAMoB,iBAAiBC,IAAAA,0BAAiB;YACxChB,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEc,eAAehB,OAAO,CAAC,MAAM,CAAC;YACnDgB,eAAeE,UAAU;QAC7B,EAAE,OAAOf,OAAO;YACZF,UAAG,CAACE,KAAK,CAAC,CAAC,sCAAsC,EAAEA,OAAO;QAC9D;IACJ;AACJ"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Attributes } from '../../telemetry';
|
|
2
|
+
import { CommandName } from '../../utils';
|
|
3
|
+
import { CommandEntry, InferArgs } from './types';
|
|
4
|
+
export declare abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {
|
|
5
|
+
protected readonly args: InferArgs<NonNullable<T['options']>, U>;
|
|
6
|
+
private commandRun?;
|
|
7
|
+
constructor(args: InferArgs<NonNullable<T['options']>, U>);
|
|
8
|
+
watchForParentExit(name: CommandName): void;
|
|
9
|
+
protected recordStart(command: string, attributes?: Attributes): void;
|
|
10
|
+
protected recordEnd(error?: unknown): Promise<void>;
|
|
11
|
+
abstract execute(): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAuB,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAWlD,8BAAsB,OAAO,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,GAAG,OAAO;IAGhE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAF5E,OAAO,CAAC,UAAU,CAAC,CAAa;gBAED,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5E,kBAAkB,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAM3C,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,UAAU,GAAG,IAAI;IAiBrE,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBnD,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CACpC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "Command", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return Command;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _crypto = require("crypto");
|
|
12
|
+
const _telemetry = require("../../telemetry");
|
|
13
|
+
const _utils = require("../../utils");
|
|
14
|
+
function _define_property(obj, key, value) {
|
|
15
|
+
if (key in obj) {
|
|
16
|
+
Object.defineProperty(obj, key, {
|
|
17
|
+
value: value,
|
|
18
|
+
enumerable: true,
|
|
19
|
+
configurable: true,
|
|
20
|
+
writable: true
|
|
21
|
+
});
|
|
22
|
+
} else obj[key] = value;
|
|
23
|
+
return obj;
|
|
24
|
+
}
|
|
25
|
+
const NS_PER_MS = 1000000;
|
|
26
|
+
class Command {
|
|
27
|
+
watchForParentExit(name) {
|
|
28
|
+
if ('watch' in this.args && this.args.watch === true) {
|
|
29
|
+
(0, _utils.exitWhenParentExits)(name);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
recordStart(command, attributes) {
|
|
33
|
+
if (this.commandRun) {
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
this.commandRun = {
|
|
37
|
+
command,
|
|
38
|
+
runId: (0, _crypto.randomUUID)(),
|
|
39
|
+
startedAt: globalThis.performance.now(),
|
|
40
|
+
attributes
|
|
41
|
+
};
|
|
42
|
+
_telemetry.telemetry.info('command.started', {
|
|
43
|
+
...attributes,
|
|
44
|
+
command,
|
|
45
|
+
runId: this.commandRun.runId
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
recordEnd(error) {
|
|
49
|
+
const run = this.commandRun;
|
|
50
|
+
if (!run) {
|
|
51
|
+
return Promise.resolve();
|
|
52
|
+
}
|
|
53
|
+
this.commandRun = undefined;
|
|
54
|
+
const attributes = {
|
|
55
|
+
...run.attributes,
|
|
56
|
+
command: run.command,
|
|
57
|
+
runId: run.runId,
|
|
58
|
+
duration: Math.round((globalThis.performance.now() - run.startedAt) * NS_PER_MS)
|
|
59
|
+
};
|
|
60
|
+
if (error !== undefined) {
|
|
61
|
+
_telemetry.telemetry.error('command.finished', error, attributes);
|
|
62
|
+
} else {
|
|
63
|
+
_telemetry.telemetry.info('command.finished', attributes);
|
|
64
|
+
}
|
|
65
|
+
return _telemetry.telemetry.flush();
|
|
66
|
+
}
|
|
67
|
+
constructor(args){
|
|
68
|
+
_define_property(this, "args", void 0);
|
|
69
|
+
_define_property(this, "commandRun", void 0);
|
|
70
|
+
this.args = args;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/command.ts"],"sourcesContent":["import { randomUUID } from 'crypto';\nimport { Attributes, telemetry } from '../../telemetry';\nimport { CommandName, exitWhenParentExits } from '../../utils';\nimport { CommandEntry, InferArgs } from './types';\n\nconst NS_PER_MS = 1_000_000;\n\ninterface CommandRun {\n command: string;\n runId: string;\n startedAt: number;\n attributes?: Attributes;\n}\n\nexport abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {\n private commandRun?: CommandRun;\n\n constructor(protected readonly args: InferArgs<NonNullable<T['options']>, U>) {}\n\n watchForParentExit(name: CommandName): void {\n if ('watch' in this.args && this.args.watch === true) {\n exitWhenParentExits(name);\n }\n }\n\n protected recordStart(command: string, attributes?: Attributes): void {\n if (this.commandRun) {\n return;\n }\n this.commandRun = {\n command,\n runId: randomUUID(),\n startedAt: globalThis.performance.now(),\n attributes,\n };\n telemetry.info('command.started', {\n ...attributes,\n command,\n runId: this.commandRun.runId,\n });\n }\n\n protected recordEnd(error?: unknown): Promise<void> {\n const run = this.commandRun;\n if (!run) {\n return Promise.resolve();\n }\n this.commandRun = undefined;\n const attributes = {\n ...run.attributes,\n command: run.command,\n runId: run.runId,\n duration: Math.round((globalThis.performance.now() - run.startedAt) * NS_PER_MS),\n };\n if (error !== undefined) {\n telemetry.error('command.finished', error, attributes);\n } else {\n telemetry.info('command.finished', attributes);\n }\n return telemetry.flush();\n }\n\n abstract execute(): Promise<void>;\n}\n"],"names":["Command","NS_PER_MS","watchForParentExit","name","args","watch","exitWhenParentExits","recordStart","command","attributes","commandRun","runId","randomUUID","startedAt","globalThis","performance","now","telemetry","info","recordEnd","error","run","Promise","resolve","undefined","duration","Math","round","flush"],"mappings":";;;;+BAcsBA;;;eAAAA;;;wBAdK;2BACW;uBACW;;;;;;;;;;;;AAGjD,MAAMC,YAAY;AASX,MAAeD;IAKlBE,mBAAmBC,IAAiB,EAAQ;QACxC,IAAI,WAAW,IAAI,CAACC,IAAI,IAAI,IAAI,CAACA,IAAI,CAACC,KAAK,KAAK,MAAM;YAClDC,IAAAA,0BAAmB,EAACH;QACxB;IACJ;IAEUI,YAAYC,OAAe,EAAEC,UAAuB,EAAQ;QAClE,IAAI,IAAI,CAACC,UAAU,EAAE;YACjB;QACJ;QACA,IAAI,CAACA,UAAU,GAAG;YACdF;YACAG,OAAOC,IAAAA,kBAAU;YACjBC,WAAWC,WAAWC,WAAW,CAACC,GAAG;YACrCP;QACJ;QACAQ,oBAAS,CAACC,IAAI,CAAC,mBAAmB;YAC9B,GAAGT,UAAU;YACbD;YACAG,OAAO,IAAI,CAACD,UAAU,CAACC,KAAK;QAChC;IACJ;IAEUQ,UAAUC,KAAe,EAAiB;QAChD,MAAMC,MAAM,IAAI,CAACX,UAAU;QAC3B,IAAI,CAACW,KAAK;YACN,OAAOC,QAAQC,OAAO;QAC1B;QACA,IAAI,CAACb,UAAU,GAAGc;QAClB,MAAMf,aAAa;YACf,GAAGY,IAAIZ,UAAU;YACjBD,SAASa,IAAIb,OAAO;YACpBG,OAAOU,IAAIV,KAAK;YAChBc,UAAUC,KAAKC,KAAK,CAAC,AAACb,CAAAA,WAAWC,WAAW,CAACC,GAAG,KAAKK,IAAIR,SAAS,AAAD,IAAKZ;QAC1E;QACA,IAAImB,UAAUI,WAAW;YACrBP,oBAAS,CAACG,KAAK,CAAC,oBAAoBA,OAAOX;QAC/C,OAAO;YACHQ,oBAAS,CAACC,IAAI,CAAC,oBAAoBT;QACvC;QACA,OAAOQ,oBAAS,CAACW,KAAK;IAC1B;IA3CA,YAAY,AAAmBxB,IAA6C,CAAE;;QAF9E,uBAAQM,cAAR,KAAA;aAE+BN,OAAAA;IAAgD;AA8CnF"}
|
|
@@ -21,9 +21,7 @@ function _define_property(obj, key, value) {
|
|
|
21
21
|
configurable: true,
|
|
22
22
|
writable: true
|
|
23
23
|
});
|
|
24
|
-
} else
|
|
25
|
-
obj[key] = value;
|
|
26
|
-
}
|
|
24
|
+
} else obj[key] = value;
|
|
27
25
|
return obj;
|
|
28
26
|
}
|
|
29
27
|
function _interop_require_default(obj) {
|
|
@@ -33,12 +31,21 @@ function _interop_require_default(obj) {
|
|
|
33
31
|
}
|
|
34
32
|
function _ts_decorate(decorators, target, key, desc) {
|
|
35
33
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
36
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
37
|
-
|
|
34
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
35
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
36
|
+
} else {
|
|
37
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
38
|
+
if (d = decorators[i]) {
|
|
39
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
38
43
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
39
44
|
}
|
|
40
|
-
function _ts_metadata(
|
|
41
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
45
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
46
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
47
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
48
|
+
}
|
|
42
49
|
}
|
|
43
50
|
const oldConfigFile = '.eslintrc.json';
|
|
44
51
|
const newConfigFile = 'eslint.config.mjs';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/convert-eslint-config.ts"],"sourcesContent":["import fs from 'fs';\nimport { globSync } from 'glob';\nimport JSON5 from 'json5';\nimport { log, logErrors, prettify, toArray } from '../../utils';\nimport type { entry } from './registry/convert-eslint-config';\nimport { Command } from './types';\n\nconst oldConfigFile = '.eslintrc.json';\nconst newConfigFile = 'eslint.config.mjs';\nconst eslintIgnoreFile = '.eslintignore';\n\ninterface Override {\n [key: string]: unknown;\n files?: string[];\n}\n\ninterface V8Config {\n extends?: string | string[];\n ignorePatterns?: string[];\n overrides?: Override[];\n plugins?: string[];\n parserOptions?: Record<string, unknown>;\n rules?: Record<string, unknown>;\n settings?: Record<string, unknown>;\n}\n\ninterface Context {\n flatConfigs: string[];\n imports: {\n [key: string]: string | string[];\n 'eslint/config': string[];\n };\n source: V8Config;\n}\n\ninterface Recipe {\n config: string;\n files?: string[];\n import: { as: string; from?: string };\n}\n\nexport class ConvertEslintConfig extends Command<typeof entry> {\n private static readonly recipes: Record<string, Recipe | null> = {\n '@servicetitan/eslint-config/mono': {\n import: { as: 'mono' },\n config: 'mono',\n },\n '@servicetitan/eslint-config/single': {\n import: { as: 'single' },\n config: 'single',\n },\n 'plugin:chai-friendly/recommended': {\n import: { as: 'pluginChaiFriendly', from: 'eslint-plugin-chai-friendly' },\n config: 'pluginChaiFriendly.configs.recommendedFlat',\n },\n 'plugin:cypress/recommended': {\n import: { as: 'pluginCypress', from: 'eslint-plugin-cypress/flat' },\n config: 'pluginCypress.configs.recommended',\n },\n 'plugin:mocha/recommended': {\n import: { as: 'pluginMocha', from: 'eslint-plugin-mocha' },\n config: 'pluginMocha.configs.flat.recommended',\n },\n 'plugin:storybook/recommended': {\n import: { as: 'storybook', from: 'eslint-plugin-storybook' },\n config: \"storybook.configs['flat/recommended']\",\n },\n 'plugin:testing-library/react': {\n import: { as: 'pluginTestingLibrary', from: 'eslint-plugin-testing-library' },\n config: \"pluginTestingLibrary.configs['flat/react']\",\n files: ['**/*.test.*'],\n },\n 'prettier': null,\n };\n\n @logErrors\n async execute() {\n if (!fs.existsSync(oldConfigFile)) {\n throw new Error(`${oldConfigFile} not found`);\n }\n\n const configFiles = globSync('eslint.config.{js,cjs,mjs}');\n if (configFiles.length > 0) {\n throw new Error(`flat config \"${configFiles[0]}\" already exists`);\n }\n\n log.info(`Processing ${oldConfigFile}`);\n\n const json = this.readJson(oldConfigFile);\n fs.writeFileSync(newConfigFile, this.convert(json), 'utf-8');\n await prettify(newConfigFile);\n\n log.success(`Created ${newConfigFile}`);\n }\n\n private convert(source: V8Config) {\n const context: Context = {\n flatConfigs: [],\n imports: { 'eslint/config': ['defineConfig'] },\n source,\n };\n\n const handlers: { [K in keyof V8Config]: (context: Context) => void } = {\n extends: this.handleExtends.bind(this),\n overrides: this.handleOverrides.bind(this),\n parserOptions: this.handleParserOptions.bind(this),\n plugins: this.handlePlugins.bind(this),\n rules: this.handleRules.bind(this),\n settings: this.handleSettings.bind(this),\n };\n\n // Don't limit handleIgnores to a specific key because it also reads .eslintignore.rc\n this.handleIgnores(context);\n\n // Run handlers in key order to preserve ordering of configs\n Object.keys(context.source).forEach((key: keyof V8Config) => {\n handlers[key]?.(context);\n });\n\n return this.format(context);\n }\n\n private format(context: Context) {\n return `${this.formatImports(context)}\\n\\n${this.formatConfigs(context)}`;\n }\n\n private formatConfigs(context: Context) {\n return `export default defineConfig([\n ${context.flatConfigs.join()}\n ]);`;\n }\n\n private formatImports({ imports }: Context) {\n return Object.entries(imports)\n .map(([pkg, itemOrItems]) => {\n if (typeof itemOrItems === 'string') {\n return `import ${itemOrItems} from '${pkg}';`;\n }\n return `import { ${itemOrItems.join()} } from '${pkg}';`;\n })\n .join('\\n');\n }\n\n private handleExtends({ flatConfigs, imports, source }: Context) {\n const unrecognized: string[] = [];\n const extendsArray = toArray(source.extends);\n\n extendsArray.forEach(entry => {\n const recipe = ConvertEslintConfig.recipes[entry];\n if (recipe) {\n imports[recipe.import.from ?? entry] = recipe.import.as;\n if (recipe.files) {\n flatConfigs.push(`{\n files: ${JSON.stringify(recipe.files)},\n ...${recipe.config}\n }`);\n } else {\n flatConfigs.push(recipe.config);\n }\n } else if (recipe !== null) {\n unrecognized.push(entry);\n }\n });\n\n /*\n * Use extends workaround for anything we didn't recognized\n * https://eslint.org/blog/2025/03/flat-config-extends-define-config-global-ignores/#bringing-back-extends\n */\n\n if (unrecognized.length) {\n flatConfigs.push(JSON.stringify({ extends: unrecognized }));\n }\n }\n\n private handleIgnores({ flatConfigs, imports, source: { ignorePatterns = [] } }: Context) {\n const globs = ignorePatterns.filter(glob => !!glob);\n\n if (fs.existsSync(eslintIgnoreFile)) {\n const fileGlobs = fs\n .readFileSync(eslintIgnoreFile, 'utf-8')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => !!line);\n globs.push(...fileGlobs);\n }\n\n if (globs.length === 0) {\n return;\n }\n\n const normalized = globs.map(normalizeGlob);\n\n imports['eslint/config'].push('globalIgnores');\n flatConfigs.push(`globalIgnores(${JSON.stringify(normalized)})`);\n }\n\n private handleOverrides({\n flatConfigs,\n source: { overrides },\n }: Context & { source: { overrides: NonNullable<Context['source']['overrides']> } }) {\n overrides.forEach(override => {\n flatConfigs.push(JSON.stringify(this.handleOverride(override), null, 2));\n });\n }\n\n private handleOverride({ parserOptions, ...rest }: Override) {\n rest.files = rest.files?.map(normalizeGlob);\n const languageOptions = parserOptions ? { parserOptions } : undefined;\n return { ...rest, languageOptions };\n }\n\n private handlePlugins({\n flatConfigs,\n imports,\n source,\n }: Context & { source: { plugins: NonNullable<Context['source']['plugins']> } }) {\n const plugins: Record<string, string> = {};\n\n source.plugins.forEach(name => {\n const camelized = toCamelCase(name);\n imports[`eslint-plugin-${name}`] = camelized;\n plugins[name] = camelized;\n });\n\n flatConfigs.push(`{\n plugins: {\n ${Object.entries(plugins)\n .map(([key, value]) => `'${key}': ${value}`)\n .join(',\\n')}\n } \n }`);\n }\n\n private handleParserOptions({ flatConfigs, source: { parserOptions } }: Context) {\n flatConfigs.push(JSON.stringify({ languageOptions: { parserOptions } }));\n }\n\n private handleRules({\n flatConfigs,\n source: { rules },\n }: Context & { source: { rules: NonNullable<Context['source']['rules']> } }) {\n const tsPrefix = '@typescript-eslint/';\n const nonTsRules = Object.fromEntries(\n Object.entries(rules).filter(([key]) => !key.startsWith(tsPrefix))\n );\n if (Object.keys(nonTsRules).length) {\n flatConfigs.push(JSON.stringify({ rules: nonTsRules }, null, 2));\n }\n\n const tsRules = Object.fromEntries(\n Object.entries(rules).filter(([key]) => key.startsWith(tsPrefix))\n );\n if (Object.keys(tsRules).length) {\n flatConfigs.push(JSON.stringify({ files: ['**/*.ts{,x}'], rules: tsRules }, null, 2));\n }\n }\n\n private handleSettings({\n flatConfigs,\n source: { settings },\n }: Context & { source: { settings: NonNullable<Context['source']['settings']> } }) {\n flatConfigs.push(JSON.stringify({ settings }));\n }\n\n private readJson(filename: string) {\n return JSON5.parse(fs.readFileSync(filename, 'utf8'));\n }\n}\n\nfunction toCamelCase(str: string) {\n return str.replace(/(-[a-z])/g, ([, letter]) => letter.toUpperCase());\n}\n\nfunction normalizeGlob(glob: string) {\n return glob.includes('/') ? glob.replace(/^(!)?\\//, '$1') : `**/${glob}`;\n}\n"],"names":["ConvertEslintConfig","oldConfigFile","newConfigFile","eslintIgnoreFile","Command","execute","fs","existsSync","Error","configFiles","globSync","length","log","info","json","readJson","writeFileSync","convert","prettify","success","source","context","flatConfigs","imports","handlers","extends","handleExtends","bind","overrides","handleOverrides","parserOptions","handleParserOptions","plugins","handlePlugins","rules","handleRules","settings","handleSettings","handleIgnores","Object","keys","forEach","key","format","formatImports","formatConfigs","join","entries","map","pkg","itemOrItems","unrecognized","extendsArray","toArray","entry","recipe","recipes","import","from","as","files","push","JSON","stringify","config","ignorePatterns","globs","filter","glob","fileGlobs","readFileSync","split","line","trim","normalized","normalizeGlob","override","handleOverride","rest","languageOptions","undefined","name","camelized","toCamelCase","value","tsPrefix","nonTsRules","fromEntries","startsWith","tsRules","filename","JSON5","parse","str","replace","letter","toUpperCase","includes"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/convert-eslint-config.ts"],"sourcesContent":["import fs from 'fs';\nimport { globSync } from 'glob';\nimport JSON5 from 'json5';\nimport { log, logErrors, prettify, toArray } from '../../utils';\nimport type { entry } from './registry/convert-eslint-config';\nimport { Command } from './types';\n\nconst oldConfigFile = '.eslintrc.json';\nconst newConfigFile = 'eslint.config.mjs';\nconst eslintIgnoreFile = '.eslintignore';\n\ninterface Override {\n [key: string]: unknown;\n files?: string[];\n}\n\ninterface V8Config {\n extends?: string | string[];\n ignorePatterns?: string[];\n overrides?: Override[];\n plugins?: string[];\n parserOptions?: Record<string, unknown>;\n rules?: Record<string, unknown>;\n settings?: Record<string, unknown>;\n}\n\ninterface Context {\n flatConfigs: string[];\n imports: {\n [key: string]: string | string[];\n 'eslint/config': string[];\n };\n source: V8Config;\n}\n\ninterface Recipe {\n config: string;\n files?: string[];\n import: { as: string; from?: string };\n}\n\nexport class ConvertEslintConfig extends Command<typeof entry> {\n private static readonly recipes: Record<string, Recipe | null> = {\n '@servicetitan/eslint-config/mono': {\n import: { as: 'mono' },\n config: 'mono',\n },\n '@servicetitan/eslint-config/single': {\n import: { as: 'single' },\n config: 'single',\n },\n 'plugin:chai-friendly/recommended': {\n import: { as: 'pluginChaiFriendly', from: 'eslint-plugin-chai-friendly' },\n config: 'pluginChaiFriendly.configs.recommendedFlat',\n },\n 'plugin:cypress/recommended': {\n import: { as: 'pluginCypress', from: 'eslint-plugin-cypress/flat' },\n config: 'pluginCypress.configs.recommended',\n },\n 'plugin:mocha/recommended': {\n import: { as: 'pluginMocha', from: 'eslint-plugin-mocha' },\n config: 'pluginMocha.configs.flat.recommended',\n },\n 'plugin:storybook/recommended': {\n import: { as: 'storybook', from: 'eslint-plugin-storybook' },\n config: \"storybook.configs['flat/recommended']\",\n },\n 'plugin:testing-library/react': {\n import: { as: 'pluginTestingLibrary', from: 'eslint-plugin-testing-library' },\n config: \"pluginTestingLibrary.configs['flat/react']\",\n files: ['**/*.test.*'],\n },\n 'prettier': null,\n };\n\n @logErrors\n async execute() {\n if (!fs.existsSync(oldConfigFile)) {\n throw new Error(`${oldConfigFile} not found`);\n }\n\n const configFiles = globSync('eslint.config.{js,cjs,mjs}');\n if (configFiles.length > 0) {\n throw new Error(`flat config \"${configFiles[0]}\" already exists`);\n }\n\n log.info(`Processing ${oldConfigFile}`);\n\n const json = this.readJson(oldConfigFile);\n fs.writeFileSync(newConfigFile, this.convert(json), 'utf-8');\n await prettify(newConfigFile);\n\n log.success(`Created ${newConfigFile}`);\n }\n\n private convert(source: V8Config) {\n const context: Context = {\n flatConfigs: [],\n imports: { 'eslint/config': ['defineConfig'] },\n source,\n };\n\n const handlers: { [K in keyof V8Config]: (context: Context) => void } = {\n extends: this.handleExtends.bind(this),\n overrides: this.handleOverrides.bind(this),\n parserOptions: this.handleParserOptions.bind(this),\n plugins: this.handlePlugins.bind(this),\n rules: this.handleRules.bind(this),\n settings: this.handleSettings.bind(this),\n };\n\n // Don't limit handleIgnores to a specific key because it also reads .eslintignore.rc\n this.handleIgnores(context);\n\n // Run handlers in key order to preserve ordering of configs\n Object.keys(context.source).forEach((key: keyof V8Config) => {\n handlers[key]?.(context);\n });\n\n return this.format(context);\n }\n\n private format(context: Context) {\n return `${this.formatImports(context)}\\n\\n${this.formatConfigs(context)}`;\n }\n\n private formatConfigs(context: Context) {\n return `export default defineConfig([\n ${context.flatConfigs.join()}\n ]);`;\n }\n\n private formatImports({ imports }: Context) {\n return Object.entries(imports)\n .map(([pkg, itemOrItems]) => {\n if (typeof itemOrItems === 'string') {\n return `import ${itemOrItems} from '${pkg}';`;\n }\n return `import { ${itemOrItems.join()} } from '${pkg}';`;\n })\n .join('\\n');\n }\n\n private handleExtends({ flatConfigs, imports, source }: Context) {\n const unrecognized: string[] = [];\n const extendsArray = toArray(source.extends);\n\n extendsArray.forEach(entry => {\n const recipe = ConvertEslintConfig.recipes[entry];\n if (recipe) {\n imports[recipe.import.from ?? entry] = recipe.import.as;\n if (recipe.files) {\n flatConfigs.push(`{\n files: ${JSON.stringify(recipe.files)},\n ...${recipe.config}\n }`);\n } else {\n flatConfigs.push(recipe.config);\n }\n } else if (recipe !== null) {\n unrecognized.push(entry);\n }\n });\n\n /*\n * Use extends workaround for anything we didn't recognized\n * https://eslint.org/blog/2025/03/flat-config-extends-define-config-global-ignores/#bringing-back-extends\n */\n\n if (unrecognized.length) {\n flatConfigs.push(JSON.stringify({ extends: unrecognized }));\n }\n }\n\n private handleIgnores({ flatConfigs, imports, source: { ignorePatterns = [] } }: Context) {\n const globs = ignorePatterns.filter(glob => !!glob);\n\n if (fs.existsSync(eslintIgnoreFile)) {\n const fileGlobs = fs\n .readFileSync(eslintIgnoreFile, 'utf-8')\n .split('\\n')\n .map(line => line.trim())\n .filter(line => !!line);\n globs.push(...fileGlobs);\n }\n\n if (globs.length === 0) {\n return;\n }\n\n const normalized = globs.map(normalizeGlob);\n\n imports['eslint/config'].push('globalIgnores');\n flatConfigs.push(`globalIgnores(${JSON.stringify(normalized)})`);\n }\n\n private handleOverrides({\n flatConfigs,\n source: { overrides },\n }: Context & { source: { overrides: NonNullable<Context['source']['overrides']> } }) {\n overrides.forEach(override => {\n flatConfigs.push(JSON.stringify(this.handleOverride(override), null, 2));\n });\n }\n\n private handleOverride({ parserOptions, ...rest }: Override) {\n rest.files = rest.files?.map(normalizeGlob);\n const languageOptions = parserOptions ? { parserOptions } : undefined;\n return { ...rest, languageOptions };\n }\n\n private handlePlugins({\n flatConfigs,\n imports,\n source,\n }: Context & { source: { plugins: NonNullable<Context['source']['plugins']> } }) {\n const plugins: Record<string, string> = {};\n\n source.plugins.forEach(name => {\n const camelized = toCamelCase(name);\n imports[`eslint-plugin-${name}`] = camelized;\n plugins[name] = camelized;\n });\n\n flatConfigs.push(`{\n plugins: {\n ${Object.entries(plugins)\n .map(([key, value]) => `'${key}': ${value}`)\n .join(',\\n')}\n } \n }`);\n }\n\n private handleParserOptions({ flatConfigs, source: { parserOptions } }: Context) {\n flatConfigs.push(JSON.stringify({ languageOptions: { parserOptions } }));\n }\n\n private handleRules({\n flatConfigs,\n source: { rules },\n }: Context & { source: { rules: NonNullable<Context['source']['rules']> } }) {\n const tsPrefix = '@typescript-eslint/';\n const nonTsRules = Object.fromEntries(\n Object.entries(rules).filter(([key]) => !key.startsWith(tsPrefix))\n );\n if (Object.keys(nonTsRules).length) {\n flatConfigs.push(JSON.stringify({ rules: nonTsRules }, null, 2));\n }\n\n const tsRules = Object.fromEntries(\n Object.entries(rules).filter(([key]) => key.startsWith(tsPrefix))\n );\n if (Object.keys(tsRules).length) {\n flatConfigs.push(JSON.stringify({ files: ['**/*.ts{,x}'], rules: tsRules }, null, 2));\n }\n }\n\n private handleSettings({\n flatConfigs,\n source: { settings },\n }: Context & { source: { settings: NonNullable<Context['source']['settings']> } }) {\n flatConfigs.push(JSON.stringify({ settings }));\n }\n\n private readJson(filename: string) {\n return JSON5.parse(fs.readFileSync(filename, 'utf8'));\n }\n}\n\nfunction toCamelCase(str: string) {\n return str.replace(/(-[a-z])/g, ([, letter]) => letter.toUpperCase());\n}\n\nfunction normalizeGlob(glob: string) {\n return glob.includes('/') ? glob.replace(/^(!)?\\//, '$1') : `**/${glob}`;\n}\n"],"names":["ConvertEslintConfig","oldConfigFile","newConfigFile","eslintIgnoreFile","Command","execute","fs","existsSync","Error","configFiles","globSync","length","log","info","json","readJson","writeFileSync","convert","prettify","success","source","context","flatConfigs","imports","handlers","extends","handleExtends","bind","overrides","handleOverrides","parserOptions","handleParserOptions","plugins","handlePlugins","rules","handleRules","settings","handleSettings","handleIgnores","Object","keys","forEach","key","format","formatImports","formatConfigs","join","entries","map","pkg","itemOrItems","unrecognized","extendsArray","toArray","entry","recipe","recipes","import","from","as","files","push","JSON","stringify","config","ignorePatterns","globs","filter","glob","fileGlobs","readFileSync","split","line","trim","normalized","normalizeGlob","override","handleOverride","rest","languageOptions","undefined","name","camelized","toCamelCase","value","tsPrefix","nonTsRules","fromEntries","startsWith","tsRules","filename","JSON5","parse","str","replace","letter","toUpperCase","includes"],"mappings":"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"}
|