@servicetitan/startup 37.0.2 → 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/types.d.ts.map +1 -1
- package/dist/cli/commands/review/types.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/cypress/config/vite-config.d.ts.map +1 -1
- package/dist/cypress/config/vite-config.js +23 -3
- package/dist/cypress/config/vite-config.js.map +1 -1
- package/dist/cypress/config/webpack-config.d.ts.map +1 -1
- package/dist/cypress/config/webpack-config.js +5 -0
- package/dist/cypress/config/webpack-config.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/vite-final.d.ts.map +1 -1
- package/dist/storybook-config/vite-final.js +32 -6
- package/dist/storybook-config/vite-final.js.map +1 -1
- package/dist/storybook-config/webpack-final.d.ts.map +1 -1
- package/dist/storybook-config/webpack-final.js +3 -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 +14 -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 +12 -1
- package/dist/vite/config/create-filtering-logger.js.map +1 -1
- package/dist/vite/config/create-vite-build-context.d.ts.map +1 -1
- package/dist/vite/config/create-vite-build-context.js +4 -1
- package/dist/vite/config/create-vite-build-context.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.d.ts +1 -1
- package/dist/vite/plugins/dev-server-routing-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/dev-server-routing-plugin.js +4 -3
- 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/istanbul-plugin.d.ts.map +1 -1
- package/dist/vite/plugins/istanbul-plugin.js +33 -1
- package/dist/vite/plugins/istanbul-plugin.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/vite/types.d.ts +4 -1
- package/dist/vite/types.d.ts.map +1 -1
- 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 +25 -22
- 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__/bundle-vite.test.ts +1 -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/review/types.ts +1 -3
- 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/cypress/config/__tests__/vite-config.test.ts +21 -11
- package/src/cypress/config/__tests__/webpack-config.test.ts +17 -0
- package/src/cypress/config/vite-config.ts +18 -3
- package/src/cypress/config/webpack-config.ts +2 -0
- package/src/storybook-config/__tests__/vite-final.test.ts +71 -11
- package/src/storybook-config/__tests__/webpack-final.test.ts +30 -6
- package/src/storybook-config/vite-final.ts +23 -2
- package/src/storybook-config/webpack-final.ts +10 -2
- 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 +16 -4
- package/src/vite/config/__tests__/create-css-config.test.ts +2 -6
- package/src/vite/config/__tests__/create-filtering-logger.test.ts +9 -0
- package/src/vite/config/__tests__/create-vite-build-context.test.ts +25 -0
- package/src/vite/config/__tests__/create-vite-config.test.ts +6 -3
- package/src/vite/config/base-config.ts +18 -2
- package/src/vite/config/create-filtering-logger.ts +13 -2
- package/src/vite/config/create-vite-build-context.ts +1 -0
- 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 +121 -99
- 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__/istanbul-plugin.test.ts +42 -1
- 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 +4 -4
- 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/istanbul-plugin.ts +28 -1
- 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/vite/types.ts +4 -1
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/init.ts"],"sourcesContent":["import { gitCloneRepo, gitIsReachable } from '@servicetitan/install';\nimport fs from 'fs';\nimport path from 'path';\nimport { log, logErrors } from '../../utils';\nimport type { entry } from './registry/init';\nimport { Command } from './types';\n\nconst REPO_NAME = 'frontend-example';\n\nexport class Init extends Command<typeof entry> {\n @logErrors\n async execute() {\n const destination = path.resolve(this.args.output ?? '.');\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n } else if (!fs.lstatSync(destination).isDirectory()) {\n throw new Error(`${destination} is not a directory`);\n } else if (fs.readdirSync(destination).length !== 0) {\n throw new Error(`${destination} is not an empty directory`);\n }\n\n if (this.cloneRepo(destination)) {\n log.info(`copied example project to ${destination}`);\n return;\n }\n\n if (!gitIsReachable({ name: REPO_NAME })) {\n throw new Error(`could not read servicetitan/${REPO_NAME} repository`);\n }\n\n return Promise.resolve();\n }\n\n cloneRepo(destination: string) {\n const ok = gitCloneRepo({ destination, name: REPO_NAME });\n if (!ok) {\n return false;\n }\n\n fs.rmSync(path.join(destination, '.git'), { recursive: true, force: true });\n fs.rmSync(path.join(destination, '.github', 'CODEOWNERS'));\n fs.rmSync(path.join(destination, 'package-lock.json'));\n return true;\n }\n}\n"],"names":["Init","REPO_NAME","Command","execute","destination","path","resolve","args","output","fs","existsSync","mkdirSync","recursive","lstatSync","isDirectory","Error","readdirSync","length","cloneRepo","log","info","gitIsReachable","name","Promise","ok","gitCloneRepo","rmSync","join","force"],"mappings":";;;;+BASaA;;;eAAAA;;;yBATgC;2DAC9B;6DACE;uBACc;uBAEP
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/init.ts"],"sourcesContent":["import { gitCloneRepo, gitIsReachable } from '@servicetitan/install';\nimport fs from 'fs';\nimport path from 'path';\nimport { log, logErrors } from '../../utils';\nimport type { entry } from './registry/init';\nimport { Command } from './types';\n\nconst REPO_NAME = 'frontend-example';\n\nexport class Init extends Command<typeof entry> {\n @logErrors\n async execute() {\n const destination = path.resolve(this.args.output ?? '.');\n if (!fs.existsSync(destination)) {\n fs.mkdirSync(destination, { recursive: true });\n } else if (!fs.lstatSync(destination).isDirectory()) {\n throw new Error(`${destination} is not a directory`);\n } else if (fs.readdirSync(destination).length !== 0) {\n throw new Error(`${destination} is not an empty directory`);\n }\n\n if (this.cloneRepo(destination)) {\n log.info(`copied example project to ${destination}`);\n return;\n }\n\n if (!gitIsReachable({ name: REPO_NAME })) {\n throw new Error(`could not read servicetitan/${REPO_NAME} repository`);\n }\n\n return Promise.resolve();\n }\n\n cloneRepo(destination: string) {\n const ok = gitCloneRepo({ destination, name: REPO_NAME });\n if (!ok) {\n return false;\n }\n\n fs.rmSync(path.join(destination, '.git'), { recursive: true, force: true });\n fs.rmSync(path.join(destination, '.github', 'CODEOWNERS'));\n fs.rmSync(path.join(destination, 'package-lock.json'));\n return true;\n }\n}\n"],"names":["Init","REPO_NAME","Command","execute","destination","path","resolve","args","output","fs","existsSync","mkdirSync","recursive","lstatSync","isDirectory","Error","readdirSync","length","cloneRepo","log","info","gitIsReachable","name","Promise","ok","gitCloneRepo","rmSync","join","force"],"mappings":";;;;+BASaA;;;eAAAA;;;yBATgC;2DAC9B;6DACE;uBACc;uBAEP;;;;;;;;;;;;;;;;;;;;;;;;AAExB,MAAMC,YAAY;AAEX,MAAMD,aAAaE,cAAO;IAC7B,MACMC,UAAU;YACqB;QAAjC,MAAMC,cAAcC,aAAI,CAACC,OAAO,EAAC,oBAAA,IAAI,CAACC,IAAI,CAACC,MAAM,cAAhB,+BAAA,oBAAoB;QACrD,IAAI,CAACC,WAAE,CAACC,UAAU,CAACN,cAAc;YAC7BK,WAAE,CAACE,SAAS,CAACP,aAAa;gBAAEQ,WAAW;YAAK;QAChD,OAAO,IAAI,CAACH,WAAE,CAACI,SAAS,CAACT,aAAaU,WAAW,IAAI;YACjD,MAAM,IAAIC,MAAM,GAAGX,YAAY,mBAAmB,CAAC;QACvD,OAAO,IAAIK,WAAE,CAACO,WAAW,CAACZ,aAAaa,MAAM,KAAK,GAAG;YACjD,MAAM,IAAIF,MAAM,GAAGX,YAAY,0BAA0B,CAAC;QAC9D;QAEA,IAAI,IAAI,CAACc,SAAS,CAACd,cAAc;YAC7Be,UAAG,CAACC,IAAI,CAAC,CAAC,0BAA0B,EAAEhB,aAAa;YACnD;QACJ;QAEA,IAAI,CAACiB,IAAAA,uBAAc,EAAC;YAAEC,MAAMrB;QAAU,IAAI;YACtC,MAAM,IAAIc,MAAM,CAAC,4BAA4B,EAAEd,UAAU,WAAW,CAAC;QACzE;QAEA,OAAOsB,QAAQjB,OAAO;IAC1B;IAEAY,UAAUd,WAAmB,EAAE;QAC3B,MAAMoB,KAAKC,IAAAA,qBAAY,EAAC;YAAErB;YAAakB,MAAMrB;QAAU;QACvD,IAAI,CAACuB,IAAI;YACL,OAAO;QACX;QAEAf,WAAE,CAACiB,MAAM,CAACrB,aAAI,CAACsB,IAAI,CAACvB,aAAa,SAAS;YAAEQ,WAAW;YAAMgB,OAAO;QAAK;QACzEnB,WAAE,CAACiB,MAAM,CAACrB,aAAI,CAACsB,IAAI,CAACvB,aAAa,WAAW;QAC5CK,WAAE,CAACiB,MAAM,CAACrB,aAAI,CAACsB,IAAI,CAACvB,aAAa;QACjC,OAAO;IACX;AACJ"}
|
|
@@ -14,12 +14,21 @@ const _utils = 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 Install extends _types.Command {
|
|
25
34
|
async execute() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { getStartupVersion } from '../../core';\nimport { log, logErrors } from '../../utils';\nimport type { entry } from './registry/install';\nimport { Command } from './types';\n\nexport class Install extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (!this.args.quiet) {\n log.info(`startup cli v${getStartupVersion()}`);\n }\n\n const options = [\n this.args.fix ? '--fix' : '',\n this.args.quiet ? '--quiet' : '',\n this.args.token === true ? '--token' : '',\n this.args.token === false ? '--no-token' : '',\n ].filter(option => !!option);\n\n const command = `npx --yes @servicetitan/install ${options.join(' ')}`.trim();\n\n log.debug('install', command);\n\n execSync(command, { stdio: 'inherit' });\n\n return Promise.resolve(); // stops \"async method has no 'await' expression\" lint error\n }\n}\n"],"names":["Install","Command","execute","args","quiet","log","info","getStartupVersion","options","fix","token","filter","option","command","join","trim","debug","execSync","stdio","Promise","resolve"],"mappings":";;;;+BAMaA;;;eAAAA;;;+BANY;sBACS;uBACH;uBAEP
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { getStartupVersion } from '../../core';\nimport { log, logErrors } from '../../utils';\nimport type { entry } from './registry/install';\nimport { Command } from './types';\n\nexport class Install extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (!this.args.quiet) {\n log.info(`startup cli v${getStartupVersion()}`);\n }\n\n const options = [\n this.args.fix ? '--fix' : '',\n this.args.quiet ? '--quiet' : '',\n this.args.token === true ? '--token' : '',\n this.args.token === false ? '--no-token' : '',\n ].filter(option => !!option);\n\n const command = `npx --yes @servicetitan/install ${options.join(' ')}`.trim();\n\n log.debug('install', command);\n\n execSync(command, { stdio: 'inherit' });\n\n return Promise.resolve(); // stops \"async method has no 'await' expression\" lint error\n }\n}\n"],"names":["Install","Command","execute","args","quiet","log","info","getStartupVersion","options","fix","token","filter","option","command","join","trim","debug","execSync","stdio","Promise","resolve"],"mappings":";;;;+BAMaA;;;eAAAA;;;+BANY;sBACS;uBACH;uBAEP;;;;;;;;;;;;;;;;;;;AAEjB,MAAMA,gBAAgBC,cAAO;IAChC,MACMC,UAAU;QACZ,IAAI,CAAC,IAAI,CAACC,IAAI,CAACC,KAAK,EAAE;YAClBC,UAAG,CAACC,IAAI,CAAC,CAAC,aAAa,EAAEC,IAAAA,uBAAiB,KAAI;QAClD;QAEA,MAAMC,UAAU;YACZ,IAAI,CAACL,IAAI,CAACM,GAAG,GAAG,UAAU;YAC1B,IAAI,CAACN,IAAI,CAACC,KAAK,GAAG,YAAY;YAC9B,IAAI,CAACD,IAAI,CAACO,KAAK,KAAK,OAAO,YAAY;YACvC,IAAI,CAACP,IAAI,CAACO,KAAK,KAAK,QAAQ,eAAe;SAC9C,CAACC,MAAM,CAACC,CAAAA,SAAU,CAAC,CAACA;QAErB,MAAMC,UAAU,CAAC,gCAAgC,EAAEL,QAAQM,IAAI,CAAC,MAAM,CAACC,IAAI;QAE3EV,UAAG,CAACW,KAAK,CAAC,WAAWH;QAErBI,IAAAA,uBAAQ,EAACJ,SAAS;YAAEK,OAAO;QAAU;QAErC,OAAOC,QAAQC,OAAO,IAAI,4DAA4D;IAC1F;AACJ"}
|
|
@@ -27,12 +27,21 @@ function _interop_require_default(obj) {
|
|
|
27
27
|
}
|
|
28
28
|
function _ts_decorate(decorators, target, key, desc) {
|
|
29
29
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
30
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
31
|
-
|
|
30
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
31
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
32
|
+
} else {
|
|
33
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
34
|
+
if (d = decorators[i]) {
|
|
35
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
32
39
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
33
40
|
}
|
|
34
|
-
function _ts_metadata(
|
|
35
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
41
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
42
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
43
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
44
|
+
}
|
|
36
45
|
}
|
|
37
46
|
const ENCODED_LICENSE = `
|
|
38
47
|
ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklreEpReUo5LmV5SndjbTlrZFdOMGN5STZXM3Np
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/kendo-ui-license.ts"],"sourcesContent":["import execa from 'execa';\nimport { log, logErrors } from '../../utils';\nimport { isModuleInstalled } from '../utils';\nimport type { entry } from './registry/kendo-ui-license';\nimport { Command } from './types';\n\nconst ENCODED_LICENSE = `\n ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklreEpReUo5LmV5SndjbTlrZFdOMGN5STZXM3Np\n ZEhKcFlXd2lPbVpoYkhObExDSmpiMlJsSWpvaVMwVk9SRTlWU1ZKRlFVTlVJaXdpYkdsalpXNXpa\n VVY0Y0dseVlYUnBiMjVFWVhSbElqb3hOelEwT1RneU1USXdmU3g3SW5SeWFXRnNJanBtWVd4elpT\n d2lZMjlrWlNJNklrdEZUa1JQVlVsRFQwMVFURVZVUlNJc0lteHBZMlZ1YzJWRmVIQnBjbUYwYVc5\n dVJHRjBaU0k2TVRjME5EazRNakV5TUgwc2V5SjBjbWxoYkNJNlptRnNjMlVzSW1OdlpHVWlPaUpM\n UlU1RVQxVkpWbFZGSWl3aWJHbGpaVzV6WlVWNGNHbHlZWFJwYjI1RVlYUmxJam94TnpRME9UZ3lN\n VEl3ZlN4N0luUnlhV0ZzSWpwbVlXeHpaU3dpWTI5a1pTSTZJa3RGVGtSUFZVbEJUa2RWVEVGU0lp\n d2liR2xqWlc1elpVVjRjR2x5WVhScGIyNUVZWFJsSWpveE56UTBPVGd5TVRJd2ZWMHNJbWx1ZEdW\n bmNtbDBlU0k2SWxFNFpEVkdkMnR2Y1dsdWRGTkZiVXhYTTNwSVVuaDZiVTU1UVQwaUxDSnNhV05s\n Ym5ObFNHOXNaR1Z5SWpvaVlXTm9hWFpwWTJoNVlXNUFjMlZ5ZG1salpYUnBkR0Z1TG1OdmJTSXNJ\n bWxoZENJNk1UY3hPVFV5T0RnNU1pd2lZWFZrSWpvaVlXTm9hWFpwWTJoNVlXNUFjMlZ5ZG1salpY\n UnBkR0Z1TG1OdmJTSXNJblZ6WlhKSlpDSTZJalUxWXpsak1tSXpMVE5rWkRVdE5ETTVZeTA0Tm1V\n eUxXRTBNV0V6T0RReE5HSXdZaUo5LlE5Yi10em9CNXFFRVV0QXZudTJGVFdULVBram0yeFFxVGll\n T29rWjA3dmd6VFJVLXVnRHoxb2l3VTUzNTNzajhaQ2FQUFUzdTZqWnhsOWU0dXVJdkxpV05ManFW\n N29pR2FoVHhXbm0ydTAzZkxZUWhxbUg2T3dmYjBxcWs0TnFwbWRfZDhwZmtJa3J4YXRlY3FCdjBl\n UVk1N3Zjd3FOLVRqZm0td0FxMmt6RXRZd3NFT0JlMGtyLTFqVzBjYzBudHJadmZEcEVYLUFGZVE1\n cF95MzhxQkJucFBvVjlOYXB0Mi1aN0JMdTZhdEVDUUIxd3FDSjdCdUlpZERBWVlxdGhvU0gxOEZE\n V29BdUhQNU9DbjM3ZENBQU1PVFlqOEJUdDdLNWlyNHR6R0ZVNTdxY2VKeTNRQUhjWlNURGxpZnU5\n cXVKMjkyQnJuS3FveGlLUDA3UXIxUQ==\n`.replace(/\\s/g, '');\nconst ENVIRONMENT_VARIABLE = 'KENDO_UI_LICENSE';\nconst LICENSE = Buffer.from(ENCODED_LICENSE, 'base64').toString('ascii');\nconst LICENSING_PACKAGE = '@progress/kendo-licensing';\n\nexport class KendoUILicense extends Command<typeof entry> {\n async execute() {\n if (!isModuleInstalled(LICENSING_PACKAGE)) {\n return;\n }\n\n await this.activateLicense();\n }\n\n @logErrors\n private async activateLicense() {\n const env = !process.env[ENVIRONMENT_VARIABLE]\n ? { [ENVIRONMENT_VARIABLE]: LICENSE }\n : undefined;\n\n log.info(\n env\n ? 'Activating Kendo UI with embedded license...'\n : `Activating Kendo UI with license from environment...`\n );\n\n try {\n await execa('kendo-ui-license', ['activate', '--no-install'], {\n env,\n stdio: 'inherit',\n });\n } catch (error: any) {\n throw new Error(`command failed with exit code ${error.exitCode}`);\n }\n }\n}\n\nexport async function kendoUILicense() {\n return new KendoUILicense({}).execute();\n}\n"],"names":["KendoUILicense","kendoUILicense","ENCODED_LICENSE","replace","ENVIRONMENT_VARIABLE","LICENSE","Buffer","from","toString","LICENSING_PACKAGE","Command","execute","isModuleInstalled","activateLicense","env","process","undefined","log","info","execa","stdio","error","Error","exitCode"],"mappings":";;;;;;;;;;;QA+BaA;eAAAA;;QAgCSC;eAAAA;;;8DA/DJ;uBACa;wBACG;uBAEV
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/kendo-ui-license.ts"],"sourcesContent":["import execa from 'execa';\nimport { log, logErrors } from '../../utils';\nimport { isModuleInstalled } from '../utils';\nimport type { entry } from './registry/kendo-ui-license';\nimport { Command } from './types';\n\nconst ENCODED_LICENSE = `\n ZXlKaGJHY2lPaUpTVXpJMU5pSXNJblI1Y0NJNklreEpReUo5LmV5SndjbTlrZFdOMGN5STZXM3Np\n ZEhKcFlXd2lPbVpoYkhObExDSmpiMlJsSWpvaVMwVk9SRTlWU1ZKRlFVTlVJaXdpYkdsalpXNXpa\n VVY0Y0dseVlYUnBiMjVFWVhSbElqb3hOelEwT1RneU1USXdmU3g3SW5SeWFXRnNJanBtWVd4elpT\n d2lZMjlrWlNJNklrdEZUa1JQVlVsRFQwMVFURVZVUlNJc0lteHBZMlZ1YzJWRmVIQnBjbUYwYVc5\n dVJHRjBaU0k2TVRjME5EazRNakV5TUgwc2V5SjBjbWxoYkNJNlptRnNjMlVzSW1OdlpHVWlPaUpM\n UlU1RVQxVkpWbFZGSWl3aWJHbGpaVzV6WlVWNGNHbHlZWFJwYjI1RVlYUmxJam94TnpRME9UZ3lN\n VEl3ZlN4N0luUnlhV0ZzSWpwbVlXeHpaU3dpWTI5a1pTSTZJa3RGVGtSUFZVbEJUa2RWVEVGU0lp\n d2liR2xqWlc1elpVVjRjR2x5WVhScGIyNUVZWFJsSWpveE56UTBPVGd5TVRJd2ZWMHNJbWx1ZEdW\n bmNtbDBlU0k2SWxFNFpEVkdkMnR2Y1dsdWRGTkZiVXhYTTNwSVVuaDZiVTU1UVQwaUxDSnNhV05s\n Ym5ObFNHOXNaR1Z5SWpvaVlXTm9hWFpwWTJoNVlXNUFjMlZ5ZG1salpYUnBkR0Z1TG1OdmJTSXNJ\n bWxoZENJNk1UY3hPVFV5T0RnNU1pd2lZWFZrSWpvaVlXTm9hWFpwWTJoNVlXNUFjMlZ5ZG1salpY\n UnBkR0Z1TG1OdmJTSXNJblZ6WlhKSlpDSTZJalUxWXpsak1tSXpMVE5rWkRVdE5ETTVZeTA0Tm1V\n eUxXRTBNV0V6T0RReE5HSXdZaUo5LlE5Yi10em9CNXFFRVV0QXZudTJGVFdULVBram0yeFFxVGll\n T29rWjA3dmd6VFJVLXVnRHoxb2l3VTUzNTNzajhaQ2FQUFUzdTZqWnhsOWU0dXVJdkxpV05ManFW\n N29pR2FoVHhXbm0ydTAzZkxZUWhxbUg2T3dmYjBxcWs0TnFwbWRfZDhwZmtJa3J4YXRlY3FCdjBl\n UVk1N3Zjd3FOLVRqZm0td0FxMmt6RXRZd3NFT0JlMGtyLTFqVzBjYzBudHJadmZEcEVYLUFGZVE1\n cF95MzhxQkJucFBvVjlOYXB0Mi1aN0JMdTZhdEVDUUIxd3FDSjdCdUlpZERBWVlxdGhvU0gxOEZE\n V29BdUhQNU9DbjM3ZENBQU1PVFlqOEJUdDdLNWlyNHR6R0ZVNTdxY2VKeTNRQUhjWlNURGxpZnU5\n cXVKMjkyQnJuS3FveGlLUDA3UXIxUQ==\n`.replace(/\\s/g, '');\nconst ENVIRONMENT_VARIABLE = 'KENDO_UI_LICENSE';\nconst LICENSE = Buffer.from(ENCODED_LICENSE, 'base64').toString('ascii');\nconst LICENSING_PACKAGE = '@progress/kendo-licensing';\n\nexport class KendoUILicense extends Command<typeof entry> {\n async execute() {\n if (!isModuleInstalled(LICENSING_PACKAGE)) {\n return;\n }\n\n await this.activateLicense();\n }\n\n @logErrors\n private async activateLicense() {\n const env = !process.env[ENVIRONMENT_VARIABLE]\n ? { [ENVIRONMENT_VARIABLE]: LICENSE }\n : undefined;\n\n log.info(\n env\n ? 'Activating Kendo UI with embedded license...'\n : `Activating Kendo UI with license from environment...`\n );\n\n try {\n await execa('kendo-ui-license', ['activate', '--no-install'], {\n env,\n stdio: 'inherit',\n });\n } catch (error: any) {\n throw new Error(`command failed with exit code ${error.exitCode}`);\n }\n }\n}\n\nexport async function kendoUILicense() {\n return new KendoUILicense({}).execute();\n}\n"],"names":["KendoUILicense","kendoUILicense","ENCODED_LICENSE","replace","ENVIRONMENT_VARIABLE","LICENSE","Buffer","from","toString","LICENSING_PACKAGE","Command","execute","isModuleInstalled","activateLicense","env","process","undefined","log","info","execa","stdio","error","Error","exitCode"],"mappings":";;;;;;;;;;;QA+BaA;eAAAA;;QAgCSC;eAAAA;;;8DA/DJ;uBACa;wBACG;uBAEV;;;;;;;;;;;;;;;;;;;;;;;;AAExB,MAAMC,kBAAkB,CAAC;;;;;;;;;;;;;;;;;;;;AAoBzB,CAAC,CAACC,OAAO,CAAC,OAAO;AACjB,MAAMC,uBAAuB;AAC7B,MAAMC,UAAUC,OAAOC,IAAI,CAACL,iBAAiB,UAAUM,QAAQ,CAAC;AAChE,MAAMC,oBAAoB;AAEnB,MAAMT,uBAAuBU,cAAO;IACvC,MAAMC,UAAU;QACZ,IAAI,CAACC,IAAAA,yBAAiB,EAACH,oBAAoB;YACvC;QACJ;QAEA,MAAM,IAAI,CAACI,eAAe;IAC9B;IAEA,MACcA,kBAAkB;QAC5B,MAAMC,MAAM,CAACC,QAAQD,GAAG,CAACV,qBAAqB,GACxC;YAAE,CAACA,qBAAqB,EAAEC;QAAQ,IAClCW;QAENC,UAAG,CAACC,IAAI,CACJJ,MACM,iDACA,CAAC,oDAAoD,CAAC;QAGhE,IAAI;YACA,MAAMK,IAAAA,cAAK,EAAC,oBAAoB;gBAAC;gBAAY;aAAe,EAAE;gBAC1DL;gBACAM,OAAO;YACX;QACJ,EAAE,OAAOC,OAAY;YACjB,MAAM,IAAIC,MAAM,CAAC,8BAA8B,EAAED,MAAME,QAAQ,EAAE;QACrE;IACJ;AACJ;;;;;;;AAEO,eAAetB;IAClB,OAAO,IAAID,eAAe,CAAC,GAAGW,OAAO;AACzC"}
|
|
@@ -14,12 +14,21 @@ const _stylelint = require("../utils/stylelint");
|
|
|
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 Lint extends _types.Command {
|
|
25
34
|
async execute() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/lint.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { getPackages, log, logErrors } from '../../utils';\nimport { eslint, lernaExec } from '../utils';\nimport { stylelint } from '../utils/stylelint';\nimport type { entry } from './registry/lint';\nimport { Command } from './types';\n\nexport class Lint extends Command<typeof entry> {\n async execute() {\n await this.checkStyles();\n await this.eslint();\n await this.stylelint();\n }\n\n @logErrors\n private async eslint() {\n if (this.useParallelESLint()) {\n const { fix, ignore, scope } = this.args;\n const packages = getPackages({ scope, ignore });\n const args = fix ? ['--fix'] : [];\n\n await lernaExec({\n 'cmd': 'startup eslint',\n 'scope': packages.map(({ name }) => name),\n 'bail': false,\n '--': args,\n });\n return;\n }\n\n log.info('Running eslint...');\n await eslint({ fix: this.args.fix, paths: this.paths });\n }\n\n @logErrors\n private async stylelint() {\n log.info('Running stylelint...');\n await stylelint({ fix: this.args.fix, paths: this.paths });\n }\n\n @logErrors\n private async checkStyles() {\n const { ignore, scope } = this.args;\n\n const packages = ignore || scope ? getPackages({ ignore, scope }) : undefined;\n\n await lernaExec({\n cmd: 'startup styles-check',\n scope: packages?.map(({ name }) => name),\n stream: true,\n });\n }\n\n private useParallelESLint() {\n const { parallel, scope, ignore } = this.args;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return !this.paths.length && (parallel || scope?.length || ignore?.length);\n }\n\n private get paths() {\n const { _ = [], paths = [] } = this.args;\n return [..._, ...paths];\n }\n}\n"],"names":["Lint","Command","execute","checkStyles","eslint","stylelint","useParallelESLint","fix","ignore","scope","args","packages","getPackages","lernaExec","map","name","log","info","paths","undefined","cmd","stream","parallel","length","_"],"mappings":"AAAA,uDAAuD;;;;+BAO1CA;;;eAAAA;;;uBAN+B;wBACV;2BACR;uBAEF
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/lint.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { getPackages, log, logErrors } from '../../utils';\nimport { eslint, lernaExec } from '../utils';\nimport { stylelint } from '../utils/stylelint';\nimport type { entry } from './registry/lint';\nimport { Command } from './types';\n\nexport class Lint extends Command<typeof entry> {\n async execute() {\n await this.checkStyles();\n await this.eslint();\n await this.stylelint();\n }\n\n @logErrors\n private async eslint() {\n if (this.useParallelESLint()) {\n const { fix, ignore, scope } = this.args;\n const packages = getPackages({ scope, ignore });\n const args = fix ? ['--fix'] : [];\n\n await lernaExec({\n 'cmd': 'startup eslint',\n 'scope': packages.map(({ name }) => name),\n 'bail': false,\n '--': args,\n });\n return;\n }\n\n log.info('Running eslint...');\n await eslint({ fix: this.args.fix, paths: this.paths });\n }\n\n @logErrors\n private async stylelint() {\n log.info('Running stylelint...');\n await stylelint({ fix: this.args.fix, paths: this.paths });\n }\n\n @logErrors\n private async checkStyles() {\n const { ignore, scope } = this.args;\n\n const packages = ignore || scope ? getPackages({ ignore, scope }) : undefined;\n\n await lernaExec({\n cmd: 'startup styles-check',\n scope: packages?.map(({ name }) => name),\n stream: true,\n });\n }\n\n private useParallelESLint() {\n const { parallel, scope, ignore } = this.args;\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n return !this.paths.length && (parallel || scope?.length || ignore?.length);\n }\n\n private get paths() {\n const { _ = [], paths = [] } = this.args;\n return [..._, ...paths];\n }\n}\n"],"names":["Lint","Command","execute","checkStyles","eslint","stylelint","useParallelESLint","fix","ignore","scope","args","packages","getPackages","lernaExec","map","name","log","info","paths","undefined","cmd","stream","parallel","length","_"],"mappings":"AAAA,uDAAuD;;;;+BAO1CA;;;eAAAA;;;uBAN+B;wBACV;2BACR;uBAEF;;;;;;;;;;;;;;;;;;;AAEjB,MAAMA,aAAaC,cAAO;IAC7B,MAAMC,UAAU;QACZ,MAAM,IAAI,CAACC,WAAW;QACtB,MAAM,IAAI,CAACC,MAAM;QACjB,MAAM,IAAI,CAACC,SAAS;IACxB;IAEA,MACcD,SAAS;QACnB,IAAI,IAAI,CAACE,iBAAiB,IAAI;YAC1B,MAAM,EAAEC,GAAG,EAAEC,MAAM,EAAEC,KAAK,EAAE,GAAG,IAAI,CAACC,IAAI;YACxC,MAAMC,WAAWC,IAAAA,kBAAW,EAAC;gBAAEH;gBAAOD;YAAO;YAC7C,MAAME,OAAOH,MAAM;gBAAC;aAAQ,GAAG,EAAE;YAEjC,MAAMM,IAAAA,iBAAS,EAAC;gBACZ,OAAO;gBACP,SAASF,SAASG,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;gBACpC,QAAQ;gBACR,MAAML;YACV;YACA;QACJ;QAEAM,UAAG,CAACC,IAAI,CAAC;QACT,MAAMb,IAAAA,cAAM,EAAC;YAAEG,KAAK,IAAI,CAACG,IAAI,CAACH,GAAG;YAAEW,OAAO,IAAI,CAACA,KAAK;QAAC;IACzD;IAEA,MACcb,YAAY;QACtBW,UAAG,CAACC,IAAI,CAAC;QACT,MAAMZ,IAAAA,oBAAS,EAAC;YAAEE,KAAK,IAAI,CAACG,IAAI,CAACH,GAAG;YAAEW,OAAO,IAAI,CAACA,KAAK;QAAC;IAC5D;IAEA,MACcf,cAAc;QACxB,MAAM,EAAEK,MAAM,EAAEC,KAAK,EAAE,GAAG,IAAI,CAACC,IAAI;QAEnC,MAAMC,WAAWH,UAAUC,QAAQG,IAAAA,kBAAW,EAAC;YAAEJ;YAAQC;QAAM,KAAKU;QAEpE,MAAMN,IAAAA,iBAAS,EAAC;YACZO,KAAK;YACLX,KAAK,EAAEE,qBAAAA,+BAAAA,SAAUG,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;YACnCM,QAAQ;QACZ;IACJ;IAEQf,oBAAoB;QACxB,MAAM,EAAEgB,QAAQ,EAAEb,KAAK,EAAED,MAAM,EAAE,GAAG,IAAI,CAACE,IAAI;QAC7C,wEAAwE;QACxE,OAAO,CAAC,IAAI,CAACQ,KAAK,CAACK,MAAM,IAAKD,CAAAA,aAAYb,kBAAAA,4BAAAA,MAAOc,MAAM,MAAIf,mBAAAA,6BAAAA,OAAQe,MAAM,CAAD;IAC5E;IAEA,IAAYL,QAAQ;QAChB,MAAM,EAAEM,IAAI,EAAE,EAAEN,QAAQ,EAAE,EAAE,GAAG,IAAI,CAACR,IAAI;QACxC,OAAO;eAAIc;eAAMN;SAAM;IAC3B;AACJ"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mfe-check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mfe-check.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/mfe-check.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAqBlC,qBAAa,QAAS,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEzC,OAAO;IAoBb,OAAO,CAAC,kBAAkB;IAkB1B,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,mBAAmB;CA2B9B"}
|
|
@@ -21,12 +21,21 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
}
|
|
22
22
|
function _ts_decorate(decorators, target, key, desc) {
|
|
23
23
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
24
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
25
|
-
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
25
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
26
|
+
} else {
|
|
27
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
28
|
+
if (d = decorators[i]) {
|
|
29
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
26
33
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
27
34
|
}
|
|
28
|
-
function _ts_metadata(
|
|
29
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
35
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
36
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
37
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
38
|
+
}
|
|
30
39
|
}
|
|
31
40
|
class MfeCheck extends _types.Command {
|
|
32
41
|
async execute() {
|
|
@@ -57,9 +66,8 @@ class MfeCheck extends _types.Command {
|
|
|
57
66
|
};
|
|
58
67
|
}
|
|
59
68
|
checkCompatibility(mfeMetadata, hostData) {
|
|
60
|
-
var _hostData_cli_webpack, _hostData_cli, _hostData_cli_webpack1, _hostData_cli1;
|
|
61
69
|
const mfeSharedDependencies = mfeMetadata.sharedDependencies;
|
|
62
|
-
const hostSharedDependencies = (0, _utils.loadSharedDependencies)(hostData.dependencies, (
|
|
70
|
+
const hostSharedDependencies = (0, _utils.loadSharedDependencies)(hostData.dependencies, (0, _utils.getSharedDependencies)(hostData));
|
|
63
71
|
const packageManager = (0, _install.getPackageManager)();
|
|
64
72
|
const workspacePackage = packageManager.getWorkspacePackage(hostData.location);
|
|
65
73
|
const exposedDependencies = (0, _core.getExposedDependencies)(hostSharedDependencies, (dependency)=>{
|
|
@@ -71,7 +79,7 @@ class MfeCheck extends _types.Command {
|
|
|
71
79
|
});
|
|
72
80
|
const mismatchResult = (0, _startuputils.getVersionMismatches)(exposedDependencies, mfeMetadata.dependencies, mfeSharedDependencies);
|
|
73
81
|
const isHostMfe = (0, _utils.isWebComponent)(hostData);
|
|
74
|
-
const isSharedDependenciesEnabled = (
|
|
82
|
+
const isSharedDependenciesEnabled = (0, _utils.isExposeSharedDependencies)(hostData);
|
|
75
83
|
const compatible = !isHostMfe && !mismatchResult && isSharedDependenciesEnabled;
|
|
76
84
|
return {
|
|
77
85
|
name: mfeMetadata.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/mfe-check.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport { getVersionMismatches } from '@servicetitan/startup-utils';\nimport path from 'node:path';\nimport { getExposedDependencies, Metadata } from '../../core';\nimport {\n isWebComponent,\n loadSharedDependencies,\n log,\n logErrors,\n readJson,\n toArray,\n} from '../../utils';\nimport type { entry } from './registry/mfe-check';\nimport { Command } from './types';\n\ninterface HostPackageJSON {\n name: string;\n dependencies: Record<string, string>;\n cli?:
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/mfe-check.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport { getVersionMismatches } from '@servicetitan/startup-utils';\nimport path from 'node:path';\nimport { getExposedDependencies, Metadata } from '../../core';\nimport type { Configuration } from '../../utils';\nimport {\n getSharedDependencies,\n isExposeSharedDependencies,\n isWebComponent,\n loadSharedDependencies,\n log,\n logErrors,\n readJson,\n toArray,\n} from '../../utils';\nimport type { entry } from './registry/mfe-check';\nimport { Command } from './types';\n\ninterface HostPackageJSON {\n name: string;\n dependencies: Record<string, string>;\n cli?: Configuration;\n}\n\ninterface HostData extends HostPackageJSON {\n location: string;\n}\n\ninterface CompatibilityResult {\n name: string;\n compatible: boolean;\n bundleType: 'light' | 'full';\n mismatches?: Record<string, { host: string; package: string }>;\n isSharedDependenciesEnabled: boolean;\n isHostMfe: boolean;\n}\n\nexport class MfeCheck extends Command<typeof entry> {\n @logErrors\n async execute() {\n const { metadata: metadataPath, hostPackageJson, json } = this.args;\n const mfeMetadata = readJson<Metadata>(path.resolve(metadataPath));\n const hostPackageJsonPaths = toArray(hostPackageJson);\n const hostData = this.getHostPackageData(hostPackageJsonPaths);\n const result = this.checkCompatibility(mfeMetadata, hostData);\n\n if (json) {\n this.outputJson(result);\n } else {\n this.outputHumanReadable(result);\n }\n\n if (!result.compatible) {\n process.exitCode = 1;\n }\n\n return Promise.resolve();\n }\n\n private getHostPackageData(packageJsonPaths: string[]): HostData {\n const packages = packageJsonPaths.map(packageJsonPath =>\n readJson<HostPackageJSON>(path.resolve(packageJsonPath))\n );\n const mergedDependencies = packages.reduceRight<HostPackageJSON['dependencies']>(\n (result, currentPackage) => Object.assign(result, currentPackage.dependencies),\n {}\n );\n const mainPackage = packages[0];\n\n return {\n name: mainPackage.name,\n cli: mainPackage.cli,\n dependencies: mergedDependencies,\n location: path.dirname(path.resolve(packageJsonPaths[0])),\n };\n }\n\n private checkCompatibility(mfeMetadata: Metadata, hostData: HostData): CompatibilityResult {\n const mfeSharedDependencies = mfeMetadata.sharedDependencies;\n const hostSharedDependencies = loadSharedDependencies(\n hostData.dependencies,\n getSharedDependencies(hostData)\n );\n const packageManager = getPackageManager();\n const workspacePackage = packageManager.getWorkspacePackage(hostData.location);\n const exposedDependencies = getExposedDependencies(\n hostSharedDependencies,\n dependency =>\n packageManager.getResolvedVersion({ workspacePackage, dependency }) ??\n hostData.dependencies[dependency]\n );\n const mismatchResult = getVersionMismatches(\n exposedDependencies,\n mfeMetadata.dependencies,\n mfeSharedDependencies\n );\n\n const isHostMfe = isWebComponent(hostData);\n const isSharedDependenciesEnabled = isExposeSharedDependencies(hostData);\n const compatible = !isHostMfe && !mismatchResult && isSharedDependenciesEnabled;\n\n return {\n name: mfeMetadata.name,\n compatible,\n bundleType: compatible ? 'light' : 'full',\n isSharedDependenciesEnabled,\n isHostMfe,\n ...(mismatchResult ? { mismatches: mismatchResult } : {}),\n };\n }\n\n private outputJson(result: CompatibilityResult) {\n process.stdout.write(JSON.stringify(result, null, 2) + '\\n');\n }\n\n private outputHumanReadable(result: CompatibilityResult) {\n log.info(`Checking ${result.name}...`);\n\n if (result.isHostMfe) {\n log.error('Skipping compatibility check because host is an MFE');\n return;\n }\n\n if (result.compatible) {\n log.info('Compatible: light bundle can be used');\n return;\n }\n\n if (result.mismatches) {\n log.error('Dependency mismatch found:');\n\n for (const [dep, versions] of Object.entries(result.mismatches)) {\n log.error(` ${dep}: host=${versions.host}, package=${versions.package}`);\n }\n }\n\n if (!result.isSharedDependenciesEnabled) {\n log.error('expose-shared-dependencies is not enabled in host package.json');\n }\n\n log.error('Result: full bundle required');\n }\n}\n"],"names":["MfeCheck","Command","execute","metadata","metadataPath","hostPackageJson","json","args","mfeMetadata","readJson","path","resolve","hostPackageJsonPaths","toArray","hostData","getHostPackageData","result","checkCompatibility","outputJson","outputHumanReadable","compatible","process","exitCode","Promise","packageJsonPaths","packages","map","packageJsonPath","mergedDependencies","reduceRight","currentPackage","Object","assign","dependencies","mainPackage","name","cli","location","dirname","mfeSharedDependencies","sharedDependencies","hostSharedDependencies","loadSharedDependencies","getSharedDependencies","packageManager","getPackageManager","workspacePackage","getWorkspacePackage","exposedDependencies","getExposedDependencies","dependency","getResolvedVersion","mismatchResult","getVersionMismatches","isHostMfe","isWebComponent","isSharedDependenciesEnabled","isExposeSharedDependencies","bundleType","mismatches","stdout","write","JSON","stringify","log","info","error","dep","versions","entries","host","package"],"mappings":"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"}
|
|
@@ -21,12 +21,21 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
}
|
|
22
22
|
function _ts_decorate(decorators, target, key, desc) {
|
|
23
23
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
24
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
25
|
-
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
25
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
26
|
+
} else {
|
|
27
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
28
|
+
if (d = decorators[i]) {
|
|
29
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
26
33
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
27
34
|
}
|
|
28
|
-
function _ts_metadata(
|
|
29
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
35
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
36
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
37
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
38
|
+
}
|
|
30
39
|
}
|
|
31
40
|
class MfeGenerateMetadata extends _types.Command {
|
|
32
41
|
async execute() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/mfe-generate-metadata.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { buildMetadata } from '../../core';\nimport {\n getFolders,\n getPackageData,\n getPackageName,\n isWebComponent,\n loadSharedDependencies,\n log,\n logErrors,\n} from '../../utils';\nimport type { entry } from './registry/mfe-generate-metadata';\nimport { Command } from './types';\n\nexport class MfeGenerateMetadata extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (!isWebComponent()) {\n throw new Error('this command must be run inside a web-component directory');\n }\n\n const { output } = this.args;\n\n const { destination } = getFolders();\n const name = getPackageName();\n const packageData = getPackageData();\n const sharedDependencies = loadSharedDependencies(\n packageData.dependencies,\n packageData.sharedDependencies\n );\n\n const metadata = buildMetadata({\n destination,\n name,\n version: packageData.version,\n dependencies: packageData.dependencies,\n sharedDependencies,\n packageManager: getPackageManager(),\n });\n\n const jsonOutput = JSON.stringify(metadata, null, 2);\n\n if (output) {\n const outputPath = path.resolve(output);\n const outputDir = path.dirname(outputPath);\n\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n fs.writeFileSync(outputPath, jsonOutput, 'utf8');\n log.info(`Metadata written to ${outputPath}`);\n } else {\n process.stdout.write(jsonOutput + '\\n');\n }\n\n return Promise.resolve();\n }\n}\n"],"names":["MfeGenerateMetadata","Command","execute","isWebComponent","Error","output","args","destination","getFolders","name","getPackageName","packageData","getPackageData","sharedDependencies","loadSharedDependencies","dependencies","metadata","buildMetadata","version","packageManager","getPackageManager","jsonOutput","JSON","stringify","outputPath","path","resolve","outputDir","dirname","fs","existsSync","mkdirSync","recursive","writeFileSync","log","info","process","stdout","write","Promise"],"mappings":";;;;+BAgBaA;;;eAAAA;;;yBAhBqB;+DACnB;iEACE;sBACa;uBASvB;uBAEiB
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/mfe-generate-metadata.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { buildMetadata } from '../../core';\nimport {\n getFolders,\n getPackageData,\n getPackageName,\n isWebComponent,\n loadSharedDependencies,\n log,\n logErrors,\n} from '../../utils';\nimport type { entry } from './registry/mfe-generate-metadata';\nimport { Command } from './types';\n\nexport class MfeGenerateMetadata extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (!isWebComponent()) {\n throw new Error('this command must be run inside a web-component directory');\n }\n\n const { output } = this.args;\n\n const { destination } = getFolders();\n const name = getPackageName();\n const packageData = getPackageData();\n const sharedDependencies = loadSharedDependencies(\n packageData.dependencies,\n packageData.sharedDependencies\n );\n\n const metadata = buildMetadata({\n destination,\n name,\n version: packageData.version,\n dependencies: packageData.dependencies,\n sharedDependencies,\n packageManager: getPackageManager(),\n });\n\n const jsonOutput = JSON.stringify(metadata, null, 2);\n\n if (output) {\n const outputPath = path.resolve(output);\n const outputDir = path.dirname(outputPath);\n\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n fs.writeFileSync(outputPath, jsonOutput, 'utf8');\n log.info(`Metadata written to ${outputPath}`);\n } else {\n process.stdout.write(jsonOutput + '\\n');\n }\n\n return Promise.resolve();\n }\n}\n"],"names":["MfeGenerateMetadata","Command","execute","isWebComponent","Error","output","args","destination","getFolders","name","getPackageName","packageData","getPackageData","sharedDependencies","loadSharedDependencies","dependencies","metadata","buildMetadata","version","packageManager","getPackageManager","jsonOutput","JSON","stringify","outputPath","path","resolve","outputDir","dirname","fs","existsSync","mkdirSync","recursive","writeFileSync","log","info","process","stdout","write","Promise"],"mappings":";;;;+BAgBaA;;;eAAAA;;;yBAhBqB;+DACnB;iEACE;sBACa;uBASvB;uBAEiB;;;;;;;;;;;;;;;;;;;;;;;;AAEjB,MAAMA,4BAA4BC,cAAO;IAC5C,MACMC,UAAU;QACZ,IAAI,CAACC,IAAAA,qBAAc,KAAI;YACnB,MAAM,IAAIC,MAAM;QACpB;QAEA,MAAM,EAAEC,MAAM,EAAE,GAAG,IAAI,CAACC,IAAI;QAE5B,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU;QAClC,MAAMC,OAAOC,IAAAA,qBAAc;QAC3B,MAAMC,cAAcC,IAAAA,qBAAc;QAClC,MAAMC,qBAAqBC,IAAAA,6BAAsB,EAC7CH,YAAYI,YAAY,EACxBJ,YAAYE,kBAAkB;QAGlC,MAAMG,WAAWC,IAAAA,mBAAa,EAAC;YAC3BV;YACAE;YACAS,SAASP,YAAYO,OAAO;YAC5BH,cAAcJ,YAAYI,YAAY;YACtCF;YACAM,gBAAgBC,IAAAA,0BAAiB;QACrC;QAEA,MAAMC,aAAaC,KAAKC,SAAS,CAACP,UAAU,MAAM;QAElD,IAAIX,QAAQ;YACR,MAAMmB,aAAaC,iBAAI,CAACC,OAAO,CAACrB;YAChC,MAAMsB,YAAYF,iBAAI,CAACG,OAAO,CAACJ;YAE/B,IAAI,CAACK,eAAE,CAACC,UAAU,CAACH,YAAY;gBAC3BE,eAAE,CAACE,SAAS,CAACJ,WAAW;oBAAEK,WAAW;gBAAK;YAC9C;YAEAH,eAAE,CAACI,aAAa,CAACT,YAAYH,YAAY;YACzCa,UAAG,CAACC,IAAI,CAAC,CAAC,oBAAoB,EAAEX,YAAY;QAChD,OAAO;YACHY,QAAQC,MAAM,CAACC,KAAK,CAACjB,aAAa;QACtC;QAEA,OAAOkB,QAAQb,OAAO;IAC1B;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 collator = new Intl.Collator();
|
|
34
43
|
class MFEList extends _types.Command {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/mfe-list.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { npmWhoAmI } from '@servicetitan/install';\nimport chalk from 'chalk';\nimport Table from 'cli-table3';\nimport readline from 'readline/promises';\nimport {\n formatRelativeDate,\n getPackages,\n isWebComponent,\n log,\n logErrors,\n PackageType,\n} from '../../utils';\nimport { isTTY, NPMPackageInfo, npmView, runCommand } from '../utils';\nimport type { entry } from './registry/mfe-list';\nimport { Command } from './types';\nimport { DEFAULT_MFE_REGISTRY } from './utils';\n\nconst collator = new Intl.Collator();\n\nexport class MFEList extends Command<typeof entry> {\n @logErrors\n async execute() {\n await this.login();\n\n this.packageNames.forEach((name, index) => {\n const info = npmView({ packageName: name, registry: this.registry });\n if (info) {\n if (index > 0) {\n process.stdout.write('\\n');\n }\n\n process.stdout.write(this.getCaption(info) + '\\n');\n const table = this.getTable(info);\n if (table) {\n process.stdout.write(table + '\\n');\n }\n }\n });\n }\n\n private getCaption(info: NPMPackageInfo) {\n return [\n chalk.bold.cyan(info.name),\n info.version && `version: ${info.version}`,\n `versions: ${Object.keys(this.getTime(info)).length}`,\n ]\n .filter(el => !!el)\n .join(' | ');\n }\n\n private getTable(info: NPMPackageInfo) {\n const times = Object.entries(this.getTime(info)).sort(\n ([, a], [, b]) => -1 * collator.compare(a, b)\n );\n const versionTags = this.getVersionTags(info);\n const versions = this.args.tagged\n ? times.filter(([version]) => !!versionTags[version])\n : times.slice(0, this.limit);\n\n /* istanbul ignore next: debug only */\n log.debug('mfe-list', () =>\n JSON.stringify({ name: info.name, versionTags, versions }, null, 2)\n );\n\n if (versions.length === 0) {\n return '';\n }\n\n const table = new Table({\n head: ['Version', 'Tag', 'When'].map(title => chalk.bold.cyan(title)),\n style: { head: [] },\n });\n\n versions.forEach(([version, timestamp]) => {\n const when = formatRelativeDate(new Date(timestamp));\n const tag = (versionTags[version] ?? []).join(', ');\n table.push([version, chalk.bold.cyan(tag), when]);\n });\n\n return table.toString();\n }\n\n private getTime(info: NPMPackageInfo) {\n const { time: { created, modified, ...time } = {} } = info;\n return time;\n }\n\n private getVersionTags({ 'dist-tags': distTags = {} }: NPMPackageInfo) {\n return Object.entries(distTags).reduce<Record<string, string[]>>(\n (result, [name, version]) => {\n result[version] ??= [];\n result[version].push(name);\n return result;\n },\n {}\n );\n }\n\n private async ask(question: string) {\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n const answer = await rl.question(question);\n rl.close();\n return answer.trim().toLowerCase();\n }\n\n private async login() {\n if (\n this.registry !== DEFAULT_MFE_REGISTRY ||\n npmWhoAmI({ registry: this.registry }) !== undefined\n ) {\n return;\n }\n\n const message = `This machine is not authorized to access ${this.registry}.`;\n if (!isTTY()) {\n throw new Error(message);\n }\n\n const answer = await this.ask(chalk.bold.cyan(`${message} Authorize? [Y/n] `));\n if (answer && answer !== 'y') {\n throw new Error('Not authorized');\n }\n\n await runCommand(`npx --yes verdaccio-okta-oauth@latest --registry=${this.registry}`, {\n quiet: true,\n });\n }\n\n private get limit() {\n if (this.args.all) {\n return Number.MAX_SAFE_INTEGER;\n }\n return this.args.limit && this.args.limit > 0 ? this.args.limit : 20;\n }\n\n private get packageNames() {\n const { _ = [], packageNames = [] } = this.args;\n if (_.length || packageNames.length) {\n return [..._, ...packageNames];\n }\n\n return getPackages({ ignore: this.args.ignore, type: PackageType.Bundle })\n .filter(isWebComponent)\n .map(({ name }) => name)\n .sort((a, b) => collator.compare(a, b));\n }\n\n private get registry() {\n return this.args.registry ?? DEFAULT_MFE_REGISTRY;\n }\n}\n"],"names":["MFEList","collator","Intl","Collator","Command","execute","login","packageNames","forEach","name","index","info","npmView","packageName","registry","process","stdout","write","getCaption","table","getTable","chalk","bold","cyan","version","Object","keys","getTime","length","filter","el","join","times","entries","sort","a","b","compare","versionTags","getVersionTags","versions","args","tagged","slice","limit","log","debug","JSON","stringify","Table","head","map","title","style","timestamp","when","formatRelativeDate","Date","tag","push","toString","time","created","modified","distTags","reduce","result","ask","question","rl","readline","createInterface","input","stdin","output","answer","close","trim","toLowerCase","DEFAULT_MFE_REGISTRY","npmWhoAmI","undefined","message","isTTY","Error","runCommand","quiet","all","Number","MAX_SAFE_INTEGER","_","getPackages","ignore","type","PackageType","Bundle","isWebComponent"],"mappings":"AAAA,uDAAuD;;;;+BAoB1CA;;;eAAAA;;;yBAnBa;8DACR;kEACA;iEACG;uBAQd;wBACoD;uBAEnC;wBACa
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/mfe-list.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { npmWhoAmI } from '@servicetitan/install';\nimport chalk from 'chalk';\nimport Table from 'cli-table3';\nimport readline from 'readline/promises';\nimport {\n formatRelativeDate,\n getPackages,\n isWebComponent,\n log,\n logErrors,\n PackageType,\n} from '../../utils';\nimport { isTTY, NPMPackageInfo, npmView, runCommand } from '../utils';\nimport type { entry } from './registry/mfe-list';\nimport { Command } from './types';\nimport { DEFAULT_MFE_REGISTRY } from './utils';\n\nconst collator = new Intl.Collator();\n\nexport class MFEList extends Command<typeof entry> {\n @logErrors\n async execute() {\n await this.login();\n\n this.packageNames.forEach((name, index) => {\n const info = npmView({ packageName: name, registry: this.registry });\n if (info) {\n if (index > 0) {\n process.stdout.write('\\n');\n }\n\n process.stdout.write(this.getCaption(info) + '\\n');\n const table = this.getTable(info);\n if (table) {\n process.stdout.write(table + '\\n');\n }\n }\n });\n }\n\n private getCaption(info: NPMPackageInfo) {\n return [\n chalk.bold.cyan(info.name),\n info.version && `version: ${info.version}`,\n `versions: ${Object.keys(this.getTime(info)).length}`,\n ]\n .filter(el => !!el)\n .join(' | ');\n }\n\n private getTable(info: NPMPackageInfo) {\n const times = Object.entries(this.getTime(info)).sort(\n ([, a], [, b]) => -1 * collator.compare(a, b)\n );\n const versionTags = this.getVersionTags(info);\n const versions = this.args.tagged\n ? times.filter(([version]) => !!versionTags[version])\n : times.slice(0, this.limit);\n\n /* istanbul ignore next: debug only */\n log.debug('mfe-list', () =>\n JSON.stringify({ name: info.name, versionTags, versions }, null, 2)\n );\n\n if (versions.length === 0) {\n return '';\n }\n\n const table = new Table({\n head: ['Version', 'Tag', 'When'].map(title => chalk.bold.cyan(title)),\n style: { head: [] },\n });\n\n versions.forEach(([version, timestamp]) => {\n const when = formatRelativeDate(new Date(timestamp));\n const tag = (versionTags[version] ?? []).join(', ');\n table.push([version, chalk.bold.cyan(tag), when]);\n });\n\n return table.toString();\n }\n\n private getTime(info: NPMPackageInfo) {\n const { time: { created, modified, ...time } = {} } = info;\n return time;\n }\n\n private getVersionTags({ 'dist-tags': distTags = {} }: NPMPackageInfo) {\n return Object.entries(distTags).reduce<Record<string, string[]>>(\n (result, [name, version]) => {\n result[version] ??= [];\n result[version].push(name);\n return result;\n },\n {}\n );\n }\n\n private async ask(question: string) {\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n const answer = await rl.question(question);\n rl.close();\n return answer.trim().toLowerCase();\n }\n\n private async login() {\n if (\n this.registry !== DEFAULT_MFE_REGISTRY ||\n npmWhoAmI({ registry: this.registry }) !== undefined\n ) {\n return;\n }\n\n const message = `This machine is not authorized to access ${this.registry}.`;\n if (!isTTY()) {\n throw new Error(message);\n }\n\n const answer = await this.ask(chalk.bold.cyan(`${message} Authorize? [Y/n] `));\n if (answer && answer !== 'y') {\n throw new Error('Not authorized');\n }\n\n await runCommand(`npx --yes verdaccio-okta-oauth@latest --registry=${this.registry}`, {\n quiet: true,\n });\n }\n\n private get limit() {\n if (this.args.all) {\n return Number.MAX_SAFE_INTEGER;\n }\n return this.args.limit && this.args.limit > 0 ? this.args.limit : 20;\n }\n\n private get packageNames() {\n const { _ = [], packageNames = [] } = this.args;\n if (_.length || packageNames.length) {\n return [..._, ...packageNames];\n }\n\n return getPackages({ ignore: this.args.ignore, type: PackageType.Bundle })\n .filter(isWebComponent)\n .map(({ name }) => name)\n .sort((a, b) => collator.compare(a, b));\n }\n\n private get registry() {\n return this.args.registry ?? DEFAULT_MFE_REGISTRY;\n }\n}\n"],"names":["MFEList","collator","Intl","Collator","Command","execute","login","packageNames","forEach","name","index","info","npmView","packageName","registry","process","stdout","write","getCaption","table","getTable","chalk","bold","cyan","version","Object","keys","getTime","length","filter","el","join","times","entries","sort","a","b","compare","versionTags","getVersionTags","versions","args","tagged","slice","limit","log","debug","JSON","stringify","Table","head","map","title","style","timestamp","when","formatRelativeDate","Date","tag","push","toString","time","created","modified","distTags","reduce","result","ask","question","rl","readline","createInterface","input","stdin","output","answer","close","trim","toLowerCase","DEFAULT_MFE_REGISTRY","npmWhoAmI","undefined","message","isTTY","Error","runCommand","quiet","all","Number","MAX_SAFE_INTEGER","_","getPackages","ignore","type","PackageType","Bundle","isWebComponent"],"mappings":"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"}
|
|
@@ -14,12 +14,21 @@ const _types = require("./types");
|
|
|
14
14
|
const _utils2 = require("./utils");
|
|
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 MFEPackageClean extends _types.Command {
|
|
25
34
|
async execute() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/mfe-package-clean.ts"],"sourcesContent":["import { getBranchesConfigs, isWebComponent, log, logErrors, readJson } from '../../utils';\nimport { gitGetBranch, npmGetPackageVersionsDetails, npmUnpublish, Version } from '../utils';\nimport type { entry } from './registry/mfe-package-clean';\nimport { Command } from './types';\nimport { DEFAULT_MFE_REGISTRY } from './utils';\n\nexport class MFEPackageClean extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (!isWebComponent()) {\n throw new Error('only web-components can be cleaned');\n }\n\n const data = this.getCleanData();\n const packageName = readJson('package.json').name;\n const branchedVersions = this.getBranchedVersions(packageName, data.registry);\n\n log.info(`branched versions (${data.count}):`, JSON.stringify(branchedVersions, null, 2));\n\n const branchedVersionsToClean: Record<string, Version[]> = {};\n for (const [branch, versions] of Object.entries(branchedVersions)) {\n // Limit branches for now\n if (!data.branches.includes(branch)) {\n log.info(`ignoring unrecognized branch \"${branch}\"`);\n continue;\n }\n\n branchedVersionsToClean[branch] = this.excludeTagged(versions)\n .sort(({ date: adt }, { date: bdt }) => (adt > bdt ? -1 : 1))\n .slice(data.count);\n }\n\n log.info('found versions for unpublish:', JSON.stringify(branchedVersionsToClean, null, 2));\n const unVersions = Object.keys(branchedVersionsToClean).reduce(\n (out, br) => [...out, ...branchedVersionsToClean[br].map(({ name }) => name)],\n []\n );\n\n if (this.args.dry) {\n return;\n }\n\n for (const version of unVersions) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await npmUnpublish(data.registry, packageName, version);\n } catch {\n log.error(`error while removing ${packageName} version ${version}`);\n }\n }\n }\n\n private excludeTagged(versions: Version[]) {\n return versions.filter(({ name, tag }) => {\n if (tag) {\n log.info(`ignoring version ${name} tagged \"${tag}\"`);\n return false;\n }\n return true;\n });\n }\n\n private getCleanData(): {\n count: number;\n registry: string;\n branches: string[];\n } {\n let count = this.args.count;\n if (!count || count < 0) {\n count = 5;\n }\n\n let branches: string[];\n\n if (this.args.all === true) {\n branches = Object.keys(getBranchesConfigs());\n } else if (typeof this.args.branch === 'string') {\n branches = [this.args.branch];\n } else {\n branches = [gitGetBranch()];\n }\n\n const registry = this.args.registry ?? DEFAULT_MFE_REGISTRY;\n\n return { count, registry, branches };\n }\n\n private getBranchedVersions(packageName: string, registry: string) {\n const versions = npmGetPackageVersionsDetails(registry, packageName);\n const branchedVersions: Record<string, Version[]> = {};\n\n function addVersion(branch: string, version: Version) {\n branchedVersions[branch] ??= [];\n branchedVersions[branch].push(version);\n }\n\n for (const version of versions) {\n const { name } = version;\n if (!name.startsWith('0.0.0-')) {\n continue;\n }\n\n const buildVersion = name.replace('0.0.0-', '');\n\n // master version generated by nerdbank versioning\n if (/^(\\d+)\\.(\\d+)\\.(\\d+)$/.test(buildVersion)) {\n addVersion('master', version);\n continue;\n }\n\n // branch version generated by nerdbank versioning\n const match1 = buildVersion.match(/^(\\d+)\\.(\\d+)\\.(\\d+)-([\\dA-Za-z-]+).([\\dA-Za-z]+)$/);\n if (match1?.length) {\n addVersion(match1[4], version);\n continue;\n }\n\n // branch version generated by mfe-publisher versioning\n const match2 = buildVersion.match(/^([\\dA-Za-z-]+).([\\dA-Za-z]+)$/);\n if (match2?.length) {\n addVersion(match2[1], version);\n continue;\n }\n\n log.info(`skipping unrecognized version: ${name}`);\n }\n\n return branchedVersions;\n }\n}\n"],"names":["MFEPackageClean","Command","execute","isWebComponent","Error","data","getCleanData","packageName","readJson","name","branchedVersions","getBranchedVersions","registry","log","info","count","JSON","stringify","branchedVersionsToClean","branch","versions","Object","entries","branches","includes","excludeTagged","sort","date","adt","bdt","slice","unVersions","keys","reduce","out","br","map","args","dry","version","npmUnpublish","error","filter","tag","all","getBranchesConfigs","gitGetBranch","DEFAULT_MFE_REGISTRY","npmGetPackageVersionsDetails","addVersion","push","startsWith","buildVersion","replace","test","match1","match","length","match2"],"mappings":";;;;+BAMaA;;;eAAAA;;;uBANgE;wBACK;uBAE1D;wBACa
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/mfe-package-clean.ts"],"sourcesContent":["import { getBranchesConfigs, isWebComponent, log, logErrors, readJson } from '../../utils';\nimport { gitGetBranch, npmGetPackageVersionsDetails, npmUnpublish, Version } from '../utils';\nimport type { entry } from './registry/mfe-package-clean';\nimport { Command } from './types';\nimport { DEFAULT_MFE_REGISTRY } from './utils';\n\nexport class MFEPackageClean extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (!isWebComponent()) {\n throw new Error('only web-components can be cleaned');\n }\n\n const data = this.getCleanData();\n const packageName = readJson('package.json').name;\n const branchedVersions = this.getBranchedVersions(packageName, data.registry);\n\n log.info(`branched versions (${data.count}):`, JSON.stringify(branchedVersions, null, 2));\n\n const branchedVersionsToClean: Record<string, Version[]> = {};\n for (const [branch, versions] of Object.entries(branchedVersions)) {\n // Limit branches for now\n if (!data.branches.includes(branch)) {\n log.info(`ignoring unrecognized branch \"${branch}\"`);\n continue;\n }\n\n branchedVersionsToClean[branch] = this.excludeTagged(versions)\n .sort(({ date: adt }, { date: bdt }) => (adt > bdt ? -1 : 1))\n .slice(data.count);\n }\n\n log.info('found versions for unpublish:', JSON.stringify(branchedVersionsToClean, null, 2));\n const unVersions = Object.keys(branchedVersionsToClean).reduce(\n (out, br) => [...out, ...branchedVersionsToClean[br].map(({ name }) => name)],\n []\n );\n\n if (this.args.dry) {\n return;\n }\n\n for (const version of unVersions) {\n try {\n // eslint-disable-next-line no-await-in-loop\n await npmUnpublish(data.registry, packageName, version);\n } catch {\n log.error(`error while removing ${packageName} version ${version}`);\n }\n }\n }\n\n private excludeTagged(versions: Version[]) {\n return versions.filter(({ name, tag }) => {\n if (tag) {\n log.info(`ignoring version ${name} tagged \"${tag}\"`);\n return false;\n }\n return true;\n });\n }\n\n private getCleanData(): {\n count: number;\n registry: string;\n branches: string[];\n } {\n let count = this.args.count;\n if (!count || count < 0) {\n count = 5;\n }\n\n let branches: string[];\n\n if (this.args.all === true) {\n branches = Object.keys(getBranchesConfigs());\n } else if (typeof this.args.branch === 'string') {\n branches = [this.args.branch];\n } else {\n branches = [gitGetBranch()];\n }\n\n const registry = this.args.registry ?? DEFAULT_MFE_REGISTRY;\n\n return { count, registry, branches };\n }\n\n private getBranchedVersions(packageName: string, registry: string) {\n const versions = npmGetPackageVersionsDetails(registry, packageName);\n const branchedVersions: Record<string, Version[]> = {};\n\n function addVersion(branch: string, version: Version) {\n branchedVersions[branch] ??= [];\n branchedVersions[branch].push(version);\n }\n\n for (const version of versions) {\n const { name } = version;\n if (!name.startsWith('0.0.0-')) {\n continue;\n }\n\n const buildVersion = name.replace('0.0.0-', '');\n\n // master version generated by nerdbank versioning\n if (/^(\\d+)\\.(\\d+)\\.(\\d+)$/.test(buildVersion)) {\n addVersion('master', version);\n continue;\n }\n\n // branch version generated by nerdbank versioning\n const match1 = buildVersion.match(/^(\\d+)\\.(\\d+)\\.(\\d+)-([\\dA-Za-z-]+).([\\dA-Za-z]+)$/);\n if (match1?.length) {\n addVersion(match1[4], version);\n continue;\n }\n\n // branch version generated by mfe-publisher versioning\n const match2 = buildVersion.match(/^([\\dA-Za-z-]+).([\\dA-Za-z]+)$/);\n if (match2?.length) {\n addVersion(match2[1], version);\n continue;\n }\n\n log.info(`skipping unrecognized version: ${name}`);\n }\n\n return branchedVersions;\n }\n}\n"],"names":["MFEPackageClean","Command","execute","isWebComponent","Error","data","getCleanData","packageName","readJson","name","branchedVersions","getBranchedVersions","registry","log","info","count","JSON","stringify","branchedVersionsToClean","branch","versions","Object","entries","branches","includes","excludeTagged","sort","date","adt","bdt","slice","unVersions","keys","reduce","out","br","map","args","dry","version","npmUnpublish","error","filter","tag","all","getBranchesConfigs","gitGetBranch","DEFAULT_MFE_REGISTRY","npmGetPackageVersionsDetails","addVersion","push","startsWith","buildVersion","replace","test","match1","match","length","match2"],"mappings":"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"}
|
|
@@ -21,12 +21,21 @@ function _interop_require_default(obj) {
|
|
|
21
21
|
}
|
|
22
22
|
function _ts_decorate(decorators, target, key, desc) {
|
|
23
23
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
24
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function")
|
|
25
|
-
|
|
24
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
|
|
25
|
+
r = Reflect.decorate(decorators, target, key, desc);
|
|
26
|
+
} else {
|
|
27
|
+
for(var i = decorators.length - 1; i >= 0; i--){
|
|
28
|
+
if (d = decorators[i]) {
|
|
29
|
+
r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
26
33
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
27
34
|
}
|
|
28
|
-
function _ts_metadata(
|
|
29
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function")
|
|
35
|
+
function _ts_metadata(metadataKey, metadataValue) {
|
|
36
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
|
|
37
|
+
return Reflect.metadata(metadataKey, metadataValue);
|
|
38
|
+
}
|
|
30
39
|
}
|
|
31
40
|
class MFEPackagePublish extends _types.Command {
|
|
32
41
|
async execute() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/cli/commands/mfe-package-publish.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { EntryPoint, EntryPoints, Metadata } from '../../core';\nimport {\n getBranchesConfigs,\n getFolders,\n isWebComponent,\n log,\n logErrors,\n readJson,\n} from '../../utils';\nimport {\n DRY_RUN_PREFIX,\n getDefaultBuildVersion,\n gitGetBranch,\n gitGetCommitHash,\n npmGetPackageVersions,\n npmPackageSet,\n npmPublish,\n npmTagVersion,\n npmView,\n runCommand,\n} from '../utils';\nimport type { entry } from './registry/mfe-package-publish';\nimport { Command } from './types';\nimport { DEFAULT_MFE_REGISTRY, buildRollbackTag, purgeCache } from './utils';\n\ninterface PublishData {\n branch: string;\n buildVersion: string;\n dry: boolean;\n force: boolean;\n isBranchConfigured: boolean;\n registry: string;\n tag: string;\n uploadSourcemaps: boolean;\n version: string;\n trackHistory: boolean;\n publishedTags: Record<string, string>;\n}\n\ninterface PackageJson {\n name: string;\n private?: boolean;\n files?: string[];\n}\n\nexport class MFEPackagePublish extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (this.args.dry) {\n log.warning('DRY-RUN MODE ENABLED, WILL NOT PUBLISH PACKAGES');\n }\n\n const packageJson = readJson<PackageJson>('package.json');\n\n const data = this.getPublishData(packageJson.name);\n if (!this.checkPackage(packageJson, data)) {\n return;\n }\n\n await this.maybeApplyRollbackTag(packageJson.name, data);\n\n await this.maybePublishPackage(packageJson, data);\n\n const { dry, tag } = data;\n if (this.args.purgeCache !== false && !dry) {\n purgeCache({ packageName: packageJson.name, tag });\n }\n\n if (data.uploadSourcemaps) {\n this.uploadSourcemaps(data);\n }\n }\n\n private get dryRunPrefix() {\n return this.args.dry ? DRY_RUN_PREFIX : '';\n }\n\n private checkPackage(\n packageJson: PackageJson,\n { branch, force, isBranchConfigured }: PublishData\n ) {\n if (!isWebComponent()) {\n throw new Error('only web-components can be published');\n }\n\n if (packageJson.private) {\n log.warning('package is private, skipping publish');\n return false;\n }\n\n if (!isBranchConfigured && !force) {\n throw new Error(\n `branch \"${branch}\" is not configured for publishing, use --force flag to publish if needed`\n );\n }\n\n return true;\n }\n\n private async maybePublishPackage(packageJson: PackageJson, data: PublishData) {\n try {\n const { dry, registry, tag, version } = data;\n\n const versions = npmGetPackageVersions(registry, packageJson.name);\n if (versions.includes(version)) {\n log.warning(\n `${this.dryRunPrefix}${packageJson.name} version ${version} is already published, skipping publish`\n );\n\n log.info(`${this.dryRunPrefix}Tagging version ${version} with tag \"${tag}\"`);\n\n if (!dry) {\n await npmTagVersion({\n packageName: packageJson.name,\n packageVersion: version,\n registry,\n tag,\n });\n }\n\n return;\n }\n\n this.validateMetadata(version);\n\n await npmPackageSet('version', version);\n await npmPackageSet('publishConfig.registry', registry);\n await this.setPackageFiles(packageJson);\n\n log.info(`${this.dryRunPrefix}Publishing ${packageJson.name} version ${version}`);\n await npmPublish({ dry, tag });\n } catch (error) {\n log.error(`Failed to publish package ${packageJson.name}`);\n\n const versionOriginallyTaggedWithRollback =\n data.publishedTags[buildRollbackTag(data.tag)];\n\n if (versionOriginallyTaggedWithRollback) {\n await this.restoreRollbackTag(\n packageJson.name,\n data,\n versionOriginallyTaggedWithRollback\n );\n }\n throw error;\n }\n }\n\n private uploadSourcemaps({ dry, version }: PublishData) {\n const options = [...[dry && '--dry'], `--releaseVersion=${version}`].filter(\n option => !!option\n ) as string[];\n\n runCommand(`npx startup upload-sourcemaps ${options.join(' ')}`);\n }\n\n private getPublishData(packageName: string): PublishData {\n const cli = this.args;\n const branch = cli.branch ?? gitGetBranch();\n const branchConfig = getBranchesConfigs()[branch];\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const buildVersion = cli.build || getDefaultBuildVersion(branch, gitGetCommitHash());\n const registry = cli.registry ?? DEFAULT_MFE_REGISTRY;\n const tag = cli.tag ?? branchConfig?.publishTag ?? '';\n const uploadSourcemaps = cli.uploadSourcemaps ?? branchConfig?.uploadSourcemaps ?? true;\n const version = '0.0.0-' + buildVersion;\n const publishedTags = npmView({ packageName, registry })?.['dist-tags'] ?? {};\n\n return {\n branch,\n buildVersion,\n dry: !!cli.dry,\n force: !!cli.force,\n isBranchConfigured: !!branchConfig,\n publishedTags,\n registry,\n tag: tag || 'latest',\n trackHistory: cli.trackHistory ?? true,\n uploadSourcemaps,\n version,\n };\n }\n\n private async setPackageFiles({ files: inputFiles }: PackageJson) {\n let outputFiles = ['dist/bundle', 'dist/metadata.json', 'package.json'];\n\n if (inputFiles?.length) {\n const index = inputFiles.findIndex(file => file === 'dist');\n if (index < 0) {\n return;\n }\n outputFiles = [\n ...inputFiles.slice(0, index),\n ...outputFiles.filter(file => file.startsWith('dist')),\n ...inputFiles.slice(index + 1),\n ];\n }\n\n for (let i = 0, n = outputFiles.length; i < n; i++) {\n // eslint-disable-next-line no-await-in-loop\n await npmPackageSet(`files[${i}]`, outputFiles[i]);\n }\n }\n\n private validateMetadata(version: string) {\n const { destination: outDir } = getFolders();\n\n const metadataJson = path.join(outDir, 'metadata.json');\n if (!fs.existsSync(metadataJson)) {\n throw new Error(`${metadataJson} is not present`);\n }\n\n const metadata = readJson<Metadata>(metadataJson);\n this.validateEntryPoints(outDir, metadata);\n\n fs.writeFileSync(metadataJson, JSON.stringify({ ...metadata, version }, null, 2), 'utf-8');\n }\n\n private validateEntryPoints(outDir: string, { entrypoints = {} }: Metadata) {\n const keys: (keyof EntryPoints)[] = ['full', 'light'];\n keys.forEach(name =>\n this.validateEntryPoint({ entryPoint: entrypoints[name], name, outDir })\n );\n }\n\n private validateEntryPoint({\n entryPoint = {},\n name,\n outDir,\n }: {\n entryPoint?: EntryPoint;\n name: keyof EntryPoints;\n outDir: string;\n }) {\n const keys: (keyof EntryPoint)[] = ['css', 'js'];\n keys.forEach(key => {\n if (!entryPoint[key]) {\n throw new Error(`${name}.${key} not found in metadata.json`);\n }\n entryPoint[key].forEach(filename => {\n if (!fs.existsSync(path.join(outDir, 'bundle', name, filename))) {\n throw new Error(`referenced bundle ${filename} was not found`);\n }\n });\n });\n }\n\n private async maybeApplyRollbackTag(packageName: string, data: PublishData) {\n const { dry, registry, tag, trackHistory, version, publishedTags } = data;\n\n if (!trackHistory) {\n log.info('Track history is turned off, skipping rollback tag');\n return;\n }\n\n const previousVersion = publishedTags[tag];\n\n if (!previousVersion) {\n log.info(`No previous version published with tag \"${tag}\", skipping rollback tag`);\n return;\n }\n\n if (previousVersion === version) {\n log.info(`Version \"${version}\" is already tagged \"${tag}\", skipping rollback tag`);\n return;\n }\n\n const prevTag = buildRollbackTag(tag);\n\n log.info(\n `${this.dryRunPrefix}Tagging previous version ${previousVersion} with tag \"${prevTag}\"`\n );\n\n if (!dry) {\n await npmTagVersion({\n packageName,\n packageVersion: previousVersion,\n registry,\n tag: prevTag,\n });\n }\n }\n\n private async restoreRollbackTag(\n packageName: string,\n { registry, tag }: PublishData,\n version: string\n ) {\n const rollbackTag = buildRollbackTag(tag);\n\n log.info(`Restoring rollback tag ${rollbackTag} back to version ${version}`);\n\n await npmTagVersion({\n packageName,\n packageVersion: version,\n registry,\n tag: rollbackTag,\n });\n }\n}\n"],"names":["MFEPackagePublish","Command","execute","args","dry","log","warning","packageJson","readJson","data","getPublishData","name","checkPackage","maybeApplyRollbackTag","maybePublishPackage","tag","purgeCache","packageName","uploadSourcemaps","dryRunPrefix","DRY_RUN_PREFIX","branch","force","isBranchConfigured","isWebComponent","Error","private","registry","version","versions","npmGetPackageVersions","includes","info","npmTagVersion","packageVersion","validateMetadata","npmPackageSet","setPackageFiles","npmPublish","error","versionOriginallyTaggedWithRollback","publishedTags","buildRollbackTag","restoreRollbackTag","options","filter","option","runCommand","join","cli","npmView","gitGetBranch","branchConfig","getBranchesConfigs","buildVersion","build","getDefaultBuildVersion","gitGetCommitHash","DEFAULT_MFE_REGISTRY","publishTag","trackHistory","files","inputFiles","outputFiles","length","index","findIndex","file","slice","startsWith","i","n","destination","outDir","getFolders","metadataJson","path","fs","existsSync","metadata","validateEntryPoints","writeFileSync","JSON","stringify","entrypoints","keys","forEach","validateEntryPoint","entryPoint","key","filename","previousVersion","prevTag","rollbackTag"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../../src/cli/commands/mfe-package-publish.ts"],"sourcesContent":["import fs from 'fs';\nimport path from 'path';\nimport { EntryPoint, EntryPoints, Metadata } from '../../core';\nimport {\n getBranchesConfigs,\n getFolders,\n isWebComponent,\n log,\n logErrors,\n readJson,\n} from '../../utils';\nimport {\n DRY_RUN_PREFIX,\n getDefaultBuildVersion,\n gitGetBranch,\n gitGetCommitHash,\n npmGetPackageVersions,\n npmPackageSet,\n npmPublish,\n npmTagVersion,\n npmView,\n runCommand,\n} from '../utils';\nimport type { entry } from './registry/mfe-package-publish';\nimport { Command } from './types';\nimport { DEFAULT_MFE_REGISTRY, buildRollbackTag, purgeCache } from './utils';\n\ninterface PublishData {\n branch: string;\n buildVersion: string;\n dry: boolean;\n force: boolean;\n isBranchConfigured: boolean;\n registry: string;\n tag: string;\n uploadSourcemaps: boolean;\n version: string;\n trackHistory: boolean;\n publishedTags: Record<string, string>;\n}\n\ninterface PackageJson {\n name: string;\n private?: boolean;\n files?: string[];\n}\n\nexport class MFEPackagePublish extends Command<typeof entry> {\n @logErrors\n async execute() {\n if (this.args.dry) {\n log.warning('DRY-RUN MODE ENABLED, WILL NOT PUBLISH PACKAGES');\n }\n\n const packageJson = readJson<PackageJson>('package.json');\n\n const data = this.getPublishData(packageJson.name);\n if (!this.checkPackage(packageJson, data)) {\n return;\n }\n\n await this.maybeApplyRollbackTag(packageJson.name, data);\n\n await this.maybePublishPackage(packageJson, data);\n\n const { dry, tag } = data;\n if (this.args.purgeCache !== false && !dry) {\n purgeCache({ packageName: packageJson.name, tag });\n }\n\n if (data.uploadSourcemaps) {\n this.uploadSourcemaps(data);\n }\n }\n\n private get dryRunPrefix() {\n return this.args.dry ? DRY_RUN_PREFIX : '';\n }\n\n private checkPackage(\n packageJson: PackageJson,\n { branch, force, isBranchConfigured }: PublishData\n ) {\n if (!isWebComponent()) {\n throw new Error('only web-components can be published');\n }\n\n if (packageJson.private) {\n log.warning('package is private, skipping publish');\n return false;\n }\n\n if (!isBranchConfigured && !force) {\n throw new Error(\n `branch \"${branch}\" is not configured for publishing, use --force flag to publish if needed`\n );\n }\n\n return true;\n }\n\n private async maybePublishPackage(packageJson: PackageJson, data: PublishData) {\n try {\n const { dry, registry, tag, version } = data;\n\n const versions = npmGetPackageVersions(registry, packageJson.name);\n if (versions.includes(version)) {\n log.warning(\n `${this.dryRunPrefix}${packageJson.name} version ${version} is already published, skipping publish`\n );\n\n log.info(`${this.dryRunPrefix}Tagging version ${version} with tag \"${tag}\"`);\n\n if (!dry) {\n await npmTagVersion({\n packageName: packageJson.name,\n packageVersion: version,\n registry,\n tag,\n });\n }\n\n return;\n }\n\n this.validateMetadata(version);\n\n await npmPackageSet('version', version);\n await npmPackageSet('publishConfig.registry', registry);\n await this.setPackageFiles(packageJson);\n\n log.info(`${this.dryRunPrefix}Publishing ${packageJson.name} version ${version}`);\n await npmPublish({ dry, tag });\n } catch (error) {\n log.error(`Failed to publish package ${packageJson.name}`);\n\n const versionOriginallyTaggedWithRollback =\n data.publishedTags[buildRollbackTag(data.tag)];\n\n if (versionOriginallyTaggedWithRollback) {\n await this.restoreRollbackTag(\n packageJson.name,\n data,\n versionOriginallyTaggedWithRollback\n );\n }\n throw error;\n }\n }\n\n private uploadSourcemaps({ dry, version }: PublishData) {\n const options = [...[dry && '--dry'], `--releaseVersion=${version}`].filter(\n option => !!option\n ) as string[];\n\n runCommand(`npx startup upload-sourcemaps ${options.join(' ')}`);\n }\n\n private getPublishData(packageName: string): PublishData {\n const cli = this.args;\n const branch = cli.branch ?? gitGetBranch();\n const branchConfig = getBranchesConfigs()[branch];\n\n // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing\n const buildVersion = cli.build || getDefaultBuildVersion(branch, gitGetCommitHash());\n const registry = cli.registry ?? DEFAULT_MFE_REGISTRY;\n const tag = cli.tag ?? branchConfig?.publishTag ?? '';\n const uploadSourcemaps = cli.uploadSourcemaps ?? branchConfig?.uploadSourcemaps ?? true;\n const version = '0.0.0-' + buildVersion;\n const publishedTags = npmView({ packageName, registry })?.['dist-tags'] ?? {};\n\n return {\n branch,\n buildVersion,\n dry: !!cli.dry,\n force: !!cli.force,\n isBranchConfigured: !!branchConfig,\n publishedTags,\n registry,\n tag: tag || 'latest',\n trackHistory: cli.trackHistory ?? true,\n uploadSourcemaps,\n version,\n };\n }\n\n private async setPackageFiles({ files: inputFiles }: PackageJson) {\n let outputFiles = ['dist/bundle', 'dist/metadata.json', 'package.json'];\n\n if (inputFiles?.length) {\n const index = inputFiles.findIndex(file => file === 'dist');\n if (index < 0) {\n return;\n }\n outputFiles = [\n ...inputFiles.slice(0, index),\n ...outputFiles.filter(file => file.startsWith('dist')),\n ...inputFiles.slice(index + 1),\n ];\n }\n\n for (let i = 0, n = outputFiles.length; i < n; i++) {\n // eslint-disable-next-line no-await-in-loop\n await npmPackageSet(`files[${i}]`, outputFiles[i]);\n }\n }\n\n private validateMetadata(version: string) {\n const { destination: outDir } = getFolders();\n\n const metadataJson = path.join(outDir, 'metadata.json');\n if (!fs.existsSync(metadataJson)) {\n throw new Error(`${metadataJson} is not present`);\n }\n\n const metadata = readJson<Metadata>(metadataJson);\n this.validateEntryPoints(outDir, metadata);\n\n fs.writeFileSync(metadataJson, JSON.stringify({ ...metadata, version }, null, 2), 'utf-8');\n }\n\n private validateEntryPoints(outDir: string, { entrypoints = {} }: Metadata) {\n const keys: (keyof EntryPoints)[] = ['full', 'light'];\n keys.forEach(name =>\n this.validateEntryPoint({ entryPoint: entrypoints[name], name, outDir })\n );\n }\n\n private validateEntryPoint({\n entryPoint = {},\n name,\n outDir,\n }: {\n entryPoint?: EntryPoint;\n name: keyof EntryPoints;\n outDir: string;\n }) {\n const keys: (keyof EntryPoint)[] = ['css', 'js'];\n keys.forEach(key => {\n if (!entryPoint[key]) {\n throw new Error(`${name}.${key} not found in metadata.json`);\n }\n entryPoint[key].forEach(filename => {\n if (!fs.existsSync(path.join(outDir, 'bundle', name, filename))) {\n throw new Error(`referenced bundle ${filename} was not found`);\n }\n });\n });\n }\n\n private async maybeApplyRollbackTag(packageName: string, data: PublishData) {\n const { dry, registry, tag, trackHistory, version, publishedTags } = data;\n\n if (!trackHistory) {\n log.info('Track history is turned off, skipping rollback tag');\n return;\n }\n\n const previousVersion = publishedTags[tag];\n\n if (!previousVersion) {\n log.info(`No previous version published with tag \"${tag}\", skipping rollback tag`);\n return;\n }\n\n if (previousVersion === version) {\n log.info(`Version \"${version}\" is already tagged \"${tag}\", skipping rollback tag`);\n return;\n }\n\n const prevTag = buildRollbackTag(tag);\n\n log.info(\n `${this.dryRunPrefix}Tagging previous version ${previousVersion} with tag \"${prevTag}\"`\n );\n\n if (!dry) {\n await npmTagVersion({\n packageName,\n packageVersion: previousVersion,\n registry,\n tag: prevTag,\n });\n }\n }\n\n private async restoreRollbackTag(\n packageName: string,\n { registry, tag }: PublishData,\n version: string\n ) {\n const rollbackTag = buildRollbackTag(tag);\n\n log.info(`Restoring rollback tag ${rollbackTag} back to version ${version}`);\n\n await npmTagVersion({\n packageName,\n packageVersion: version,\n registry,\n tag: rollbackTag,\n });\n }\n}\n"],"names":["MFEPackagePublish","Command","execute","args","dry","log","warning","packageJson","readJson","data","getPublishData","name","checkPackage","maybeApplyRollbackTag","maybePublishPackage","tag","purgeCache","packageName","uploadSourcemaps","dryRunPrefix","DRY_RUN_PREFIX","branch","force","isBranchConfigured","isWebComponent","Error","private","registry","version","versions","npmGetPackageVersions","includes","info","npmTagVersion","packageVersion","validateMetadata","npmPackageSet","setPackageFiles","npmPublish","error","versionOriginallyTaggedWithRollback","publishedTags","buildRollbackTag","restoreRollbackTag","options","filter","option","runCommand","join","cli","npmView","gitGetBranch","branchConfig","getBranchesConfigs","buildVersion","build","getDefaultBuildVersion","gitGetCommitHash","DEFAULT_MFE_REGISTRY","publishTag","trackHistory","files","inputFiles","outputFiles","length","index","findIndex","file","slice","startsWith","i","n","destination","outDir","getFolders","metadataJson","path","fs","existsSync","metadata","validateEntryPoints","writeFileSync","JSON","stringify","entrypoints","keys","forEach","validateEntryPoint","entryPoint","key","filename","previousVersion","prevTag","rollbackTag"],"mappings":";;;;+BA+CaA;;;eAAAA;;;2DA/CE;6DACE;uBASV;wBAYA;uBAEiB;wBAC2C;;;;;;;;;;;;;;;;;;;;;;;;AAsB5D,MAAMA,0BAA0BC,cAAO;IAC1C,MACMC,UAAU;QACZ,IAAI,IAAI,CAACC,IAAI,CAACC,GAAG,EAAE;YACfC,UAAG,CAACC,OAAO,CAAC;QAChB;QAEA,MAAMC,cAAcC,IAAAA,eAAQ,EAAc;QAE1C,MAAMC,OAAO,IAAI,CAACC,cAAc,CAACH,YAAYI,IAAI;QACjD,IAAI,CAAC,IAAI,CAACC,YAAY,CAACL,aAAaE,OAAO;YACvC;QACJ;QAEA,MAAM,IAAI,CAACI,qBAAqB,CAACN,YAAYI,IAAI,EAAEF;QAEnD,MAAM,IAAI,CAACK,mBAAmB,CAACP,aAAaE;QAE5C,MAAM,EAAEL,GAAG,EAAEW,GAAG,EAAE,GAAGN;QACrB,IAAI,IAAI,CAACN,IAAI,CAACa,UAAU,KAAK,SAAS,CAACZ,KAAK;YACxCY,IAAAA,kBAAU,EAAC;gBAAEC,aAAaV,YAAYI,IAAI;gBAAEI;YAAI;QACpD;QAEA,IAAIN,KAAKS,gBAAgB,EAAE;YACvB,IAAI,CAACA,gBAAgB,CAACT;QAC1B;IACJ;IAEA,IAAYU,eAAe;QACvB,OAAO,IAAI,CAAChB,IAAI,CAACC,GAAG,GAAGgB,sBAAc,GAAG;IAC5C;IAEQR,aACJL,WAAwB,EACxB,EAAEc,MAAM,EAAEC,KAAK,EAAEC,kBAAkB,EAAe,EACpD;QACE,IAAI,CAACC,IAAAA,qBAAc,KAAI;YACnB,MAAM,IAAIC,MAAM;QACpB;QAEA,IAAIlB,YAAYmB,OAAO,EAAE;YACrBrB,UAAG,CAACC,OAAO,CAAC;YACZ,OAAO;QACX;QAEA,IAAI,CAACiB,sBAAsB,CAACD,OAAO;YAC/B,MAAM,IAAIG,MACN,CAAC,QAAQ,EAAEJ,OAAO,yEAAyE,CAAC;QAEpG;QAEA,OAAO;IACX;IAEA,MAAcP,oBAAoBP,WAAwB,EAAEE,IAAiB,EAAE;QAC3E,IAAI;YACA,MAAM,EAAEL,GAAG,EAAEuB,QAAQ,EAAEZ,GAAG,EAAEa,OAAO,EAAE,GAAGnB;YAExC,MAAMoB,WAAWC,IAAAA,6BAAqB,EAACH,UAAUpB,YAAYI,IAAI;YACjE,IAAIkB,SAASE,QAAQ,CAACH,UAAU;gBAC5BvB,UAAG,CAACC,OAAO,CACP,GAAG,IAAI,CAACa,YAAY,GAAGZ,YAAYI,IAAI,CAAC,SAAS,EAAEiB,QAAQ,uCAAuC,CAAC;gBAGvGvB,UAAG,CAAC2B,IAAI,CAAC,GAAG,IAAI,CAACb,YAAY,CAAC,gBAAgB,EAAES,QAAQ,WAAW,EAAEb,IAAI,CAAC,CAAC;gBAE3E,IAAI,CAACX,KAAK;oBACN,MAAM6B,IAAAA,qBAAa,EAAC;wBAChBhB,aAAaV,YAAYI,IAAI;wBAC7BuB,gBAAgBN;wBAChBD;wBACAZ;oBACJ;gBACJ;gBAEA;YACJ;YAEA,IAAI,CAACoB,gBAAgB,CAACP;YAEtB,MAAMQ,IAAAA,qBAAa,EAAC,WAAWR;YAC/B,MAAMQ,IAAAA,qBAAa,EAAC,0BAA0BT;YAC9C,MAAM,IAAI,CAACU,eAAe,CAAC9B;YAE3BF,UAAG,CAAC2B,IAAI,CAAC,GAAG,IAAI,CAACb,YAAY,CAAC,WAAW,EAAEZ,YAAYI,IAAI,CAAC,SAAS,EAAEiB,SAAS;YAChF,MAAMU,IAAAA,kBAAU,EAAC;gBAAElC;gBAAKW;YAAI;QAChC,EAAE,OAAOwB,OAAO;YACZlC,UAAG,CAACkC,KAAK,CAAC,CAAC,0BAA0B,EAAEhC,YAAYI,IAAI,EAAE;YAEzD,MAAM6B,sCACF/B,KAAKgC,aAAa,CAACC,IAAAA,wBAAgB,EAACjC,KAAKM,GAAG,EAAE;YAElD,IAAIyB,qCAAqC;gBACrC,MAAM,IAAI,CAACG,kBAAkB,CACzBpC,YAAYI,IAAI,EAChBF,MACA+B;YAER;YACA,MAAMD;QACV;IACJ;IAEQrB,iBAAiB,EAAEd,GAAG,EAAEwB,OAAO,EAAe,EAAE;QACpD,MAAMgB,UAAU;eAAI;gBAACxC,OAAO;aAAQ;YAAE,CAAC,iBAAiB,EAAEwB,SAAS;SAAC,CAACiB,MAAM,CACvEC,CAAAA,SAAU,CAAC,CAACA;QAGhBC,IAAAA,kBAAU,EAAC,CAAC,8BAA8B,EAAEH,QAAQI,IAAI,CAAC,MAAM;IACnE;IAEQtC,eAAeO,WAAmB,EAAe;YAEtCgC,aAKEA,eACLA,MAAAA,UACaA,OAAAA,8BAaPA;YAXIC;QAVtB,MAAMD,MAAM,IAAI,CAAC9C,IAAI;QACrB,MAAMkB,UAAS4B,cAAAA,IAAI5B,MAAM,cAAV4B,yBAAAA,cAAcE,IAAAA,oBAAY;QACzC,MAAMC,eAAeC,IAAAA,yBAAkB,GAAE,CAAChC,OAAO;QAEjD,wEAAwE;QACxE,MAAMiC,eAAeL,IAAIM,KAAK,IAAIC,IAAAA,8BAAsB,EAACnC,QAAQoC,IAAAA,wBAAgB;QACjF,MAAM9B,YAAWsB,gBAAAA,IAAItB,QAAQ,cAAZsB,2BAAAA,gBAAgBS,4BAAoB;QACrD,MAAM3C,OAAMkC,QAAAA,WAAAA,IAAIlC,GAAG,cAAPkC,sBAAAA,WAAWG,yBAAAA,mCAAAA,aAAcO,UAAU,cAAnCV,kBAAAA,OAAuC;QACnD,MAAM/B,oBAAmB+B,SAAAA,wBAAAA,IAAI/B,gBAAgB,cAApB+B,mCAAAA,wBAAwBG,yBAAAA,mCAAAA,aAAclC,gBAAgB,cAAtD+B,mBAAAA,QAA0D;QACnF,MAAMrB,UAAU,WAAW0B;QAC3B,MAAMb,0BAAgBS,WAAAA,IAAAA,eAAO,EAAC;YAAEjC;YAAaU;QAAS,gBAAhCuB,+BAAAA,QAAoC,CAAC,YAAY,yCAAI,CAAC;QAE5E,OAAO;YACH7B;YACAiC;YACAlD,KAAK,CAAC,CAAC6C,IAAI7C,GAAG;YACdkB,OAAO,CAAC,CAAC2B,IAAI3B,KAAK;YAClBC,oBAAoB,CAAC,CAAC6B;YACtBX;YACAd;YACAZ,KAAKA,OAAO;YACZ6C,YAAY,GAAEX,oBAAAA,IAAIW,YAAY,cAAhBX,+BAAAA,oBAAoB;YAClC/B;YACAU;QACJ;IACJ;IAEA,MAAcS,gBAAgB,EAAEwB,OAAOC,UAAU,EAAe,EAAE;QAC9D,IAAIC,cAAc;YAAC;YAAe;YAAsB;SAAe;QAEvE,IAAID,uBAAAA,iCAAAA,WAAYE,MAAM,EAAE;YACpB,MAAMC,QAAQH,WAAWI,SAAS,CAACC,CAAAA,OAAQA,SAAS;YACpD,IAAIF,QAAQ,GAAG;gBACX;YACJ;YACAF,cAAc;mBACPD,WAAWM,KAAK,CAAC,GAAGH;mBACpBF,YAAYlB,MAAM,CAACsB,CAAAA,OAAQA,KAAKE,UAAU,CAAC;mBAC3CP,WAAWM,KAAK,CAACH,QAAQ;aAC/B;QACL;QAEA,IAAK,IAAIK,IAAI,GAAGC,IAAIR,YAAYC,MAAM,EAAEM,IAAIC,GAAGD,IAAK;YAChD,4CAA4C;YAC5C,MAAMlC,IAAAA,qBAAa,EAAC,CAAC,MAAM,EAAEkC,EAAE,CAAC,CAAC,EAAEP,WAAW,CAACO,EAAE;QACrD;IACJ;IAEQnC,iBAAiBP,OAAe,EAAE;QACtC,MAAM,EAAE4C,aAAaC,MAAM,EAAE,GAAGC,IAAAA,iBAAU;QAE1C,MAAMC,eAAeC,aAAI,CAAC5B,IAAI,CAACyB,QAAQ;QACvC,IAAI,CAACI,WAAE,CAACC,UAAU,CAACH,eAAe;YAC9B,MAAM,IAAIlD,MAAM,GAAGkD,aAAa,eAAe,CAAC;QACpD;QAEA,MAAMI,WAAWvE,IAAAA,eAAQ,EAAWmE;QACpC,IAAI,CAACK,mBAAmB,CAACP,QAAQM;QAEjCF,WAAE,CAACI,aAAa,CAACN,cAAcO,KAAKC,SAAS,CAAC;YAAE,GAAGJ,QAAQ;YAAEnD;QAAQ,GAAG,MAAM,IAAI;IACtF;IAEQoD,oBAAoBP,MAAc,EAAE,EAAEW,cAAc,CAAC,CAAC,EAAY,EAAE;QACxE,MAAMC,OAA8B;YAAC;YAAQ;SAAQ;QACrDA,KAAKC,OAAO,CAAC3E,CAAAA,OACT,IAAI,CAAC4E,kBAAkB,CAAC;gBAAEC,YAAYJ,WAAW,CAACzE,KAAK;gBAAEA;gBAAM8D;YAAO;IAE9E;IAEQc,mBAAmB,EACvBC,aAAa,CAAC,CAAC,EACf7E,IAAI,EACJ8D,MAAM,EAKT,EAAE;QACC,MAAMY,OAA6B;YAAC;YAAO;SAAK;QAChDA,KAAKC,OAAO,CAACG,CAAAA;YACT,IAAI,CAACD,UAAU,CAACC,IAAI,EAAE;gBAClB,MAAM,IAAIhE,MAAM,GAAGd,KAAK,CAAC,EAAE8E,IAAI,2BAA2B,CAAC;YAC/D;YACAD,UAAU,CAACC,IAAI,CAACH,OAAO,CAACI,CAAAA;gBACpB,IAAI,CAACb,WAAE,CAACC,UAAU,CAACF,aAAI,CAAC5B,IAAI,CAACyB,QAAQ,UAAU9D,MAAM+E,YAAY;oBAC7D,MAAM,IAAIjE,MAAM,CAAC,kBAAkB,EAAEiE,SAAS,cAAc,CAAC;gBACjE;YACJ;QACJ;IACJ;IAEA,MAAc7E,sBAAsBI,WAAmB,EAAER,IAAiB,EAAE;QACxE,MAAM,EAAEL,GAAG,EAAEuB,QAAQ,EAAEZ,GAAG,EAAE6C,YAAY,EAAEhC,OAAO,EAAEa,aAAa,EAAE,GAAGhC;QAErE,IAAI,CAACmD,cAAc;YACfvD,UAAG,CAAC2B,IAAI,CAAC;YACT;QACJ;QAEA,MAAM2D,kBAAkBlD,aAAa,CAAC1B,IAAI;QAE1C,IAAI,CAAC4E,iBAAiB;YAClBtF,UAAG,CAAC2B,IAAI,CAAC,CAAC,wCAAwC,EAAEjB,IAAI,wBAAwB,CAAC;YACjF;QACJ;QAEA,IAAI4E,oBAAoB/D,SAAS;YAC7BvB,UAAG,CAAC2B,IAAI,CAAC,CAAC,SAAS,EAAEJ,QAAQ,qBAAqB,EAAEb,IAAI,wBAAwB,CAAC;YACjF;QACJ;QAEA,MAAM6E,UAAUlD,IAAAA,wBAAgB,EAAC3B;QAEjCV,UAAG,CAAC2B,IAAI,CACJ,GAAG,IAAI,CAACb,YAAY,CAAC,yBAAyB,EAAEwE,gBAAgB,WAAW,EAAEC,QAAQ,CAAC,CAAC;QAG3F,IAAI,CAACxF,KAAK;YACN,MAAM6B,IAAAA,qBAAa,EAAC;gBAChBhB;gBACAiB,gBAAgByD;gBAChBhE;gBACAZ,KAAK6E;YACT;QACJ;IACJ;IAEA,MAAcjD,mBACV1B,WAAmB,EACnB,EAAEU,QAAQ,EAAEZ,GAAG,EAAe,EAC9Ba,OAAe,EACjB;QACE,MAAMiE,cAAcnD,IAAAA,wBAAgB,EAAC3B;QAErCV,UAAG,CAAC2B,IAAI,CAAC,CAAC,uBAAuB,EAAE6D,YAAY,iBAAiB,EAAEjE,SAAS;QAE3E,MAAMK,IAAAA,qBAAa,EAAC;YAChBhB;YACAiB,gBAAgBN;YAChBD;YACAZ,KAAK8E;QACT;IACJ;AACJ"}
|