@servicetitan/startup 30.3.1 → 31.0.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/index.js +5 -6
- package/dist/cli/commands/build.d.ts +10 -3
- package/dist/cli/commands/build.d.ts.map +1 -1
- package/dist/cli/commands/build.js +124 -48
- package/dist/cli/commands/build.js.map +1 -1
- package/dist/cli/commands/bundle-package.d.ts +0 -2
- package/dist/cli/commands/bundle-package.d.ts.map +1 -1
- package/dist/cli/commands/bundle-package.js +54 -36
- package/dist/cli/commands/bundle-package.js.map +1 -1
- package/dist/cli/commands/clean.d.ts +6 -0
- package/dist/cli/commands/clean.d.ts.map +1 -0
- package/dist/cli/commands/clean.js +55 -0
- package/dist/cli/commands/clean.js.map +1 -0
- package/dist/cli/commands/convert-eslint-config.js +163 -107
- package/dist/cli/commands/convert-eslint-config.js.map +1 -1
- package/dist/cli/commands/eslint.d.ts.map +1 -1
- package/dist/cli/commands/eslint.js +43 -24
- package/dist/cli/commands/eslint.js.map +1 -1
- package/dist/cli/commands/get-command.d.ts.map +1 -1
- package/dist/cli/commands/get-command.js +50 -53
- package/dist/cli/commands/get-command.js.map +1 -1
- package/dist/cli/commands/get-user-commands.js +21 -11
- package/dist/cli/commands/get-user-commands.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +31 -30
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/init.js +74 -48
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/install.d.ts +8 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +61 -23
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/kendo-ui-license.js +48 -31
- package/dist/cli/commands/kendo-ui-license.js.map +1 -1
- package/dist/cli/commands/lint.d.ts +3 -1
- package/dist/cli/commands/lint.d.ts.map +1 -1
- package/dist/cli/commands/lint.js +112 -73
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/mfe-package-clean.js +80 -57
- package/dist/cli/commands/mfe-package-clean.js.map +1 -1
- package/dist/cli/commands/mfe-package-publish.d.ts +1 -0
- package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
- package/dist/cli/commands/mfe-package-publish.js +124 -70
- package/dist/cli/commands/mfe-package-publish.js.map +1 -1
- package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
- package/dist/cli/commands/mfe-publish.js +83 -48
- package/dist/cli/commands/mfe-publish.js.map +1 -1
- package/dist/cli/commands/prepare-package.d.ts +3 -2
- package/dist/cli/commands/prepare-package.d.ts.map +1 -1
- package/dist/cli/commands/prepare-package.js +44 -32
- package/dist/cli/commands/prepare-package.js.map +1 -1
- package/dist/cli/commands/review/__mocks__/expect-calls.d.ts +23 -0
- package/dist/cli/commands/review/__mocks__/expect-calls.d.ts.map +1 -0
- package/dist/cli/commands/review/__mocks__/index.d.ts +2 -0
- package/dist/cli/commands/review/__mocks__/index.d.ts.map +1 -0
- package/dist/cli/commands/review/index.d.ts +3 -0
- package/dist/cli/commands/review/index.d.ts.map +1 -0
- package/dist/cli/commands/review/index.js +20 -0
- package/dist/cli/commands/review/index.js.map +1 -0
- package/dist/cli/commands/review/review.d.ts +28 -0
- package/dist/cli/commands/review/review.d.ts.map +1 -0
- package/dist/cli/commands/review/review.js +239 -0
- package/dist/cli/commands/review/review.js.map +1 -0
- package/dist/cli/commands/review/rules/__mocks__/index.d.ts +4 -0
- package/dist/cli/commands/review/rules/__mocks__/index.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/__mocks__/mock-config.d.ts +7 -0
- package/dist/cli/commands/review/rules/__mocks__/mock-config.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/__mocks__/mock-packages.d.ts +21 -0
- package/dist/cli/commands/review/rules/__mocks__/mock-packages.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/__mocks__/mock-project.d.ts +3 -0
- package/dist/cli/commands/review/rules/__mocks__/mock-project.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/index.d.ts +3 -0
- package/dist/cli/commands/review/rules/index.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/index.js +30 -0
- package/dist/cli/commands/review/rules/index.js.map +1 -0
- package/dist/cli/commands/review/rules/no-typescript-entry-point.d.ts +14 -0
- package/dist/cli/commands/review/rules/no-typescript-entry-point.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/no-typescript-entry-point.js +89 -0
- package/dist/cli/commands/review/rules/no-typescript-entry-point.js.map +1 -0
- package/dist/cli/commands/review/rules/require-explicit-side-effects.d.ts +7 -0
- package/dist/cli/commands/review/rules/require-explicit-side-effects.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/require-explicit-side-effects.js +37 -0
- package/dist/cli/commands/review/rules/require-explicit-side-effects.js.map +1 -0
- package/dist/cli/commands/review/rules/require-npmrc.d.ts +7 -0
- package/dist/cli/commands/review/rules/require-npmrc.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/require-npmrc.js +38 -0
- package/dist/cli/commands/review/rules/require-npmrc.js.map +1 -0
- package/dist/cli/commands/review/rules/require-one-anvil-uikit-contrib-version.d.ts +5 -0
- package/dist/cli/commands/review/rules/require-one-anvil-uikit-contrib-version.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/require-one-anvil-uikit-contrib-version.js +33 -0
- package/dist/cli/commands/review/rules/require-one-anvil-uikit-contrib-version.js.map +1 -0
- package/dist/cli/commands/review/rules/require-one-collection-version.d.ts +45 -0
- package/dist/cli/commands/review/rules/require-one-collection-version.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/require-one-collection-version.js +140 -0
- package/dist/cli/commands/review/rules/require-one-collection-version.js.map +1 -0
- package/dist/cli/commands/review/rules/require-one-package-version.d.ts +20 -0
- package/dist/cli/commands/review/rules/require-one-package-version.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/require-one-package-version.js +70 -0
- package/dist/cli/commands/review/rules/require-one-package-version.js.map +1 -0
- package/dist/cli/commands/review/rules/require-one-uikit-version.d.ts +5 -0
- package/dist/cli/commands/review/rules/require-one-uikit-version.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/require-one-uikit-version.js +40 -0
- package/dist/cli/commands/review/rules/require-one-uikit-version.js.map +1 -0
- package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.d.ts +19 -0
- package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.js +103 -0
- package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.js.map +1 -0
- package/dist/cli/commands/review/rules/require-servicetitan-scope.d.ts +7 -0
- package/dist/cli/commands/review/rules/require-servicetitan-scope.d.ts.map +1 -0
- package/dist/cli/commands/review/rules/require-servicetitan-scope.js +37 -0
- package/dist/cli/commands/review/rules/require-servicetitan-scope.js.map +1 -0
- package/dist/cli/commands/review/types.d.ts +72 -0
- package/dist/cli/commands/review/types.d.ts.map +1 -0
- package/dist/cli/commands/review/types.js +36 -0
- package/dist/cli/commands/review/types.js.map +1 -0
- package/dist/cli/commands/review/utils/apply-filter.d.ts +3 -0
- package/dist/cli/commands/review/utils/apply-filter.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/apply-filter.js +20 -0
- package/dist/cli/commands/review/utils/apply-filter.js.map +1 -0
- package/dist/cli/commands/review/utils/collate-dependencies.d.ts +29 -0
- package/dist/cli/commands/review/utils/collate-dependencies.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/collate-dependencies.js +31 -0
- package/dist/cli/commands/review/utils/collate-dependencies.js.map +1 -0
- package/dist/cli/commands/review/utils/compare-version.d.ts +9 -0
- package/dist/cli/commands/review/utils/compare-version.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/compare-version.js +137 -0
- package/dist/cli/commands/review/utils/compare-version.js.map +1 -0
- package/dist/cli/commands/review/utils/format-depends-on.d.ts +2 -0
- package/dist/cli/commands/review/utils/format-depends-on.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/format-depends-on.js +21 -0
- package/dist/cli/commands/review/utils/format-depends-on.js.map +1 -0
- package/dist/cli/commands/review/utils/format-location.d.ts +2 -0
- package/dist/cli/commands/review/utils/format-location.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/format-location.js +25 -0
- package/dist/cli/commands/review/utils/format-location.js.map +1 -0
- package/dist/cli/commands/review/utils/get-key.d.ts +3 -0
- package/dist/cli/commands/review/utils/get-key.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/get-key.js +20 -0
- package/dist/cli/commands/review/utils/get-key.js.map +1 -0
- package/dist/cli/commands/review/utils/get-max-version.d.ts +2 -0
- package/dist/cli/commands/review/utils/get-max-version.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/get-max-version.js +16 -0
- package/dist/cli/commands/review/utils/get-max-version.js.map +1 -0
- package/dist/cli/commands/review/utils/indent.d.ts +2 -0
- package/dist/cli/commands/review/utils/indent.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/indent.js +17 -0
- package/dist/cli/commands/review/utils/indent.js.map +1 -0
- package/dist/cli/commands/review/utils/index.d.ts +14 -0
- package/dist/cli/commands/review/utils/index.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/index.js +32 -0
- package/dist/cli/commands/review/utils/index.js.map +1 -0
- package/dist/cli/commands/review/utils/is-library.d.ts +3 -0
- package/dist/cli/commands/review/utils/is-library.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/is-library.js +15 -0
- package/dist/cli/commands/review/utils/is-library.js.map +1 -0
- package/dist/cli/commands/review/utils/name-to-location.d.ts +3 -0
- package/dist/cli/commands/review/utils/name-to-location.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/name-to-location.js +18 -0
- package/dist/cli/commands/review/utils/name-to-location.js.map +1 -0
- package/dist/cli/commands/review/utils/pluralize.d.ts +2 -0
- package/dist/cli/commands/review/utils/pluralize.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/pluralize.js +15 -0
- package/dist/cli/commands/review/utils/pluralize.js.map +1 -0
- package/dist/cli/commands/review/utils/set-version.d.ts +10 -0
- package/dist/cli/commands/review/utils/set-version.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/set-version.js +33 -0
- package/dist/cli/commands/review/utils/set-version.js.map +1 -0
- package/dist/cli/commands/review/utils/summarize.d.ts +11 -0
- package/dist/cli/commands/review/utils/summarize.d.ts.map +1 -0
- package/dist/cli/commands/review/utils/summarize.js +30 -0
- package/dist/cli/commands/review/utils/summarize.js.map +1 -0
- package/dist/cli/commands/run-task.js +50 -31
- package/dist/cli/commands/run-task.js.map +1 -1
- package/dist/cli/commands/run-task.test.d.ts +2 -0
- package/dist/cli/commands/run-task.test.d.ts.map +1 -0
- package/dist/cli/commands/start.d.ts +11 -3
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +166 -69
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/styles-check.js +73 -59
- package/dist/cli/commands/styles-check.js.map +1 -1
- package/dist/cli/commands/tests.d.ts +1 -0
- package/dist/cli/commands/tests.d.ts.map +1 -1
- package/dist/cli/commands/tests.js +45 -28
- package/dist/cli/commands/tests.js.map +1 -1
- package/dist/cli/commands/types.d.ts +1 -0
- package/dist/cli/commands/types.d.ts.map +1 -1
- package/dist/cli/commands/types.js +4 -1
- package/dist/cli/commands/types.js.map +1 -1
- package/dist/cli/index.js +43 -34
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/tasks/cli-task.d.ts +0 -1
- package/dist/cli/tasks/cli-task.d.ts.map +1 -1
- package/dist/cli/tasks/cli-task.js +52 -41
- package/dist/cli/tasks/cli-task.js.map +1 -1
- package/dist/cli/tasks/swc-compile-package.d.ts +0 -1
- package/dist/cli/tasks/swc-compile-package.d.ts.map +1 -1
- package/dist/cli/tasks/swc-compile-package.js +75 -34
- package/dist/cli/tasks/swc-compile-package.js.map +1 -1
- package/dist/cli/tasks/task.d.ts +0 -2
- package/dist/cli/tasks/task.d.ts.map +1 -1
- package/dist/cli/tasks/task.js +60 -65
- package/dist/cli/tasks/task.js.map +1 -1
- package/dist/cli/tasks/tsc-compile-package.d.ts +0 -1
- package/dist/cli/tasks/tsc-compile-package.d.ts.map +1 -1
- package/dist/cli/tasks/tsc-compile-package.js +26 -22
- package/dist/cli/tasks/tsc-compile-package.js.map +1 -1
- package/dist/cli/tasks/tsc-compile.d.ts +0 -2
- package/dist/cli/tasks/tsc-compile.d.ts.map +1 -1
- package/dist/cli/tasks/tsc-compile.js +51 -31
- package/dist/cli/tasks/tsc-compile.js.map +1 -1
- package/dist/cli/utils/bundle.d.ts +0 -2
- package/dist/cli/utils/bundle.d.ts.map +1 -1
- package/dist/cli/utils/bundle.js +118 -70
- package/dist/cli/utils/bundle.js.map +1 -1
- package/dist/cli/utils/check-args.d.ts +6 -0
- package/dist/cli/utils/check-args.d.ts.map +1 -0
- package/dist/cli/utils/check-args.js +20 -0
- package/dist/cli/utils/check-args.js.map +1 -0
- package/dist/cli/utils/cli-git.js +23 -9
- package/dist/cli/utils/cli-git.js.map +1 -1
- package/dist/cli/utils/cli-npm.js +62 -23
- package/dist/cli/utils/cli-npm.js.map +1 -1
- package/dist/cli/utils/cli-os.js +34 -33
- package/dist/cli/utils/cli-os.js.map +1 -1
- package/dist/cli/utils/compile-less.d.ts.map +1 -1
- package/dist/cli/utils/compile-less.js +27 -11
- package/dist/cli/utils/compile-less.js.map +1 -1
- package/dist/cli/utils/compile-sass.d.ts.map +1 -1
- package/dist/cli/utils/compile-sass.js +25 -9
- package/dist/cli/utils/compile-sass.js.map +1 -1
- package/dist/cli/utils/compile.d.ts +6 -0
- package/dist/cli/utils/compile.d.ts.map +1 -0
- package/dist/cli/utils/compile.js +33 -0
- package/dist/cli/utils/compile.js.map +1 -0
- package/dist/cli/utils/copy-files.d.ts +8 -0
- package/dist/cli/utils/copy-files.d.ts.map +1 -0
- package/dist/cli/utils/copy-files.js +112 -0
- package/dist/cli/utils/copy-files.js.map +1 -0
- package/dist/cli/utils/eslint.d.ts.map +1 -1
- package/dist/cli/utils/eslint.js +22 -12
- package/dist/cli/utils/eslint.js.map +1 -1
- package/dist/cli/utils/get-module-type.d.ts.map +1 -1
- package/dist/cli/utils/get-module-type.js +21 -13
- package/dist/cli/utils/get-module-type.js.map +1 -1
- package/dist/cli/utils/index.d.ts +7 -5
- package/dist/cli/utils/index.d.ts.map +1 -1
- package/dist/cli/utils/index.js +33 -30
- package/dist/cli/utils/index.js.map +1 -1
- package/dist/cli/utils/is-module-installed.js +11 -4
- package/dist/cli/utils/is-module-installed.js.map +1 -1
- package/dist/cli/utils/lerna-exec.d.ts +4 -3
- package/dist/cli/utils/lerna-exec.d.ts.map +1 -1
- package/dist/cli/utils/lerna-exec.js +40 -19
- package/dist/cli/utils/lerna-exec.js.map +1 -1
- package/dist/cli/utils/maybe-create-git-folder.js +20 -18
- package/dist/cli/utils/maybe-create-git-folder.js.map +1 -1
- package/dist/cli/utils/pipe-stdout.d.ts +3 -0
- package/dist/cli/utils/pipe-stdout.d.ts.map +1 -0
- package/dist/cli/utils/pipe-stdout.js +19 -0
- package/dist/cli/utils/pipe-stdout.js.map +1 -0
- package/dist/cli/utils/process-tree.d.ts +14 -0
- package/dist/cli/utils/process-tree.d.ts.map +1 -0
- package/dist/cli/utils/process-tree.js +78 -0
- package/dist/cli/utils/process-tree.js.map +1 -0
- package/dist/cli/utils/publish.js +12 -6
- package/dist/cli/utils/publish.js.map +1 -1
- package/dist/cli/utils/set-node-options.d.ts +2 -1
- package/dist/cli/utils/set-node-options.d.ts.map +1 -1
- package/dist/cli/utils/set-node-options.js +39 -30
- package/dist/cli/utils/set-node-options.js.map +1 -1
- package/dist/cli/utils/style-extensions.d.ts +2 -0
- package/dist/cli/utils/style-extensions.d.ts.map +1 -0
- package/dist/cli/utils/style-extensions.js +17 -0
- package/dist/cli/utils/style-extensions.js.map +1 -0
- package/dist/cli/utils/tcm.d.ts +5 -2
- package/dist/cli/utils/tcm.d.ts.map +1 -1
- package/dist/cli/utils/tcm.js +51 -46
- package/dist/cli/utils/tcm.js.map +1 -1
- package/dist/cli/utils/type-check.d.ts +7 -0
- package/dist/cli/utils/type-check.d.ts.map +1 -0
- package/dist/cli/utils/type-check.js +33 -0
- package/dist/cli/utils/type-check.js.map +1 -0
- package/dist/cli/utils/watch-stdout.d.ts +3 -0
- package/dist/cli/utils/watch-stdout.d.ts.map +1 -0
- package/dist/cli/utils/watch-stdout.js +26 -0
- package/dist/cli/utils/watch-stdout.js.map +1 -0
- package/dist/index.js +20 -18
- package/dist/index.js.map +1 -1
- package/dist/jest/index.js +12 -4
- package/dist/jest/index.js.map +1 -1
- package/dist/utils/debug.js +23 -11
- package/dist/utils/debug.js.map +1 -1
- package/dist/utils/find-packages.d.ts.map +1 -1
- package/dist/utils/find-packages.js +46 -34
- package/dist/utils/find-packages.js.map +1 -1
- package/dist/utils/format-duration.d.ts +2 -0
- package/dist/utils/format-duration.d.ts.map +1 -0
- package/dist/utils/format-duration.js +24 -0
- package/dist/utils/format-duration.js.map +1 -0
- package/dist/utils/get-branch-configs.js +24 -8
- package/dist/utils/get-branch-configs.js.map +1 -1
- package/dist/utils/get-configuration.d.ts +10 -2
- package/dist/utils/get-configuration.d.ts.map +1 -1
- package/dist/utils/get-configuration.js +120 -52
- package/dist/utils/get-configuration.js.map +1 -1
- package/dist/utils/get-destination-folders.js +25 -18
- package/dist/utils/get-destination-folders.js.map +1 -1
- package/dist/utils/get-folders.d.ts +2 -2
- package/dist/utils/get-folders.d.ts.map +1 -1
- package/dist/utils/get-folders.js +20 -13
- package/dist/utils/get-folders.js.map +1 -1
- package/dist/utils/get-jest-config.js +65 -38
- package/dist/utils/get-jest-config.js.map +1 -1
- package/dist/utils/get-package-data.js +26 -12
- package/dist/utils/get-package-data.js.map +1 -1
- package/dist/utils/get-package-name.js +18 -8
- package/dist/utils/get-package-name.js.map +1 -1
- package/dist/utils/get-packages.d.ts +1 -1
- package/dist/utils/get-packages.d.ts.map +1 -1
- package/dist/utils/get-packages.js +72 -57
- package/dist/utils/get-packages.js.map +1 -1
- package/dist/utils/get-startup-version.js +18 -8
- package/dist/utils/get-startup-version.js.map +1 -1
- package/dist/utils/get-tsconfig.js +19 -12
- package/dist/utils/get-tsconfig.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +34 -29
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/load-shared-dependencies.js +23 -17
- package/dist/utils/load-shared-dependencies.js.map +1 -1
- package/dist/utils/log-errors.d.ts +2 -0
- package/dist/utils/log-errors.d.ts.map +1 -0
- package/dist/utils/log-errors.js +36 -0
- package/dist/utils/log-errors.js.map +1 -0
- package/dist/utils/log.d.ts +0 -1
- package/dist/utils/log.d.ts.map +1 -1
- package/dist/utils/log.js +38 -43
- package/dist/utils/log.js.map +1 -1
- package/dist/utils/pick.js +11 -3
- package/dist/utils/pick.js.map +1 -1
- package/dist/utils/read-json.js +27 -11
- package/dist/utils/read-json.js.map +1 -1
- package/dist/utils/to-array.js +13 -3
- package/dist/utils/to-array.js.map +1 -1
- package/dist/webpack/__mocks__/file-rules.d.ts.map +1 -1
- package/dist/webpack/configs/amd-config.js +13 -3
- package/dist/webpack/configs/amd-config.js.map +1 -1
- package/dist/webpack/configs/cache-config.js +20 -9
- package/dist/webpack/configs/cache-config.js.map +1 -1
- package/dist/webpack/configs/dev-server-config.d.ts +1 -1
- package/dist/webpack/configs/dev-server-config.d.ts.map +1 -1
- package/dist/webpack/configs/dev-server-config.js +47 -45
- package/dist/webpack/configs/dev-server-config.js.map +1 -1
- package/dist/webpack/configs/devtool-config.js +16 -7
- package/dist/webpack/configs/devtool-config.js.map +1 -1
- package/dist/webpack/configs/entry.config.d.ts.map +1 -1
- package/dist/webpack/configs/entry.config.js +28 -7
- package/dist/webpack/configs/entry.config.js.map +1 -1
- package/dist/webpack/configs/externals-config.js +17 -7
- package/dist/webpack/configs/externals-config.js.map +1 -1
- package/dist/webpack/configs/index.d.ts +2 -1
- package/dist/webpack/configs/index.d.ts.map +1 -1
- package/dist/webpack/configs/index.js +30 -28
- package/dist/webpack/configs/index.js.map +1 -1
- package/dist/webpack/configs/loaders/css-loader.js +22 -14
- package/dist/webpack/configs/loaders/css-loader.js.map +1 -1
- package/dist/webpack/configs/loaders/index.d.ts +1 -1
- package/dist/webpack/configs/loaders/index.d.ts.map +1 -1
- package/dist/webpack/configs/loaders/index.js +20 -19
- package/dist/webpack/configs/loaders/index.js.map +1 -1
- package/dist/webpack/configs/loaders/less-loader.js +18 -3
- package/dist/webpack/configs/loaders/less-loader.js.map +1 -1
- package/dist/webpack/configs/loaders/style-loader.js +23 -8
- package/dist/webpack/configs/loaders/style-loader.js.map +1 -1
- package/dist/webpack/configs/loaders/types.js +4 -1
- package/dist/webpack/configs/loaders/types.js.map +1 -1
- package/dist/webpack/configs/module-config.js +17 -5
- package/dist/webpack/configs/module-config.js.map +1 -1
- package/dist/webpack/configs/optimization-config.js +54 -28
- package/dist/webpack/configs/optimization-config.js.map +1 -1
- package/dist/webpack/configs/output-config.js +26 -12
- package/dist/webpack/configs/output-config.js.map +1 -1
- package/dist/webpack/configs/plugins/assets-manifest-plugin.js +23 -14
- package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/bundle-analyser-plugin.js +19 -9
- package/dist/webpack/configs/plugins/bundle-analyser-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +19 -11
- package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.js +17 -7
- package/dist/webpack/configs/plugins/define-exposed-instance-dependencies-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/define-web-component-name-plugin.js +13 -5
- package/dist/webpack/configs/plugins/define-web-component-name-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/filter-warnings-plugin.js +11 -3
- package/dist/webpack/configs/plugins/filter-warnings-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/html-plugin.js +28 -20
- package/dist/webpack/configs/plugins/html-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/ignore-plugin/check-resource.js +24 -13
- package/dist/webpack/configs/plugins/ignore-plugin/check-resource.js.map +1 -1
- package/dist/webpack/configs/plugins/ignore-plugin/get-package-json.js +26 -16
- package/dist/webpack/configs/plugins/ignore-plugin/get-package-json.js.map +1 -1
- package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js +15 -6
- package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/ignore-plugin/index.js +18 -16
- package/dist/webpack/configs/plugins/ignore-plugin/index.js.map +1 -1
- package/dist/webpack/configs/plugins/ignore-plugin/is-optional-peer-dependency.js +22 -12
- package/dist/webpack/configs/plugins/ignore-plugin/is-optional-peer-dependency.js.map +1 -1
- package/dist/webpack/configs/plugins/ignore-plugin/is-optional-react-dom-peer-dependency.js +11 -4
- package/dist/webpack/configs/plugins/ignore-plugin/is-optional-react-dom-peer-dependency.js.map +1 -1
- package/dist/webpack/configs/plugins/index.d.ts +0 -2
- package/dist/webpack/configs/plugins/index.d.ts.map +1 -1
- package/dist/webpack/configs/plugins/index.js +29 -29
- package/dist/webpack/configs/plugins/index.js.map +1 -1
- package/dist/webpack/configs/plugins/mini-css-extract-plugin.js +23 -12
- package/dist/webpack/configs/plugins/mini-css-extract-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/moment-locales-plugin.js +18 -8
- package/dist/webpack/configs/plugins/moment-locales-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/virtual-modules-plugin.js +32 -22
- package/dist/webpack/configs/plugins/virtual-modules-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins/watch-run-plugin.js +23 -15
- package/dist/webpack/configs/plugins/watch-run-plugin.js.map +1 -1
- package/dist/webpack/configs/plugins-config.d.ts.map +1 -1
- package/dist/webpack/configs/plugins-config.js +27 -21
- package/dist/webpack/configs/plugins-config.js.map +1 -1
- package/dist/webpack/configs/resolve-config.js +16 -4
- package/dist/webpack/configs/resolve-config.js.map +1 -1
- package/dist/webpack/configs/rules/css-rules.js +43 -18
- package/dist/webpack/configs/rules/css-rules.js.map +1 -1
- package/dist/webpack/configs/rules/font-rules.js +13 -5
- package/dist/webpack/configs/rules/font-rules.js.map +1 -1
- package/dist/webpack/configs/rules/image-rules.js +13 -5
- package/dist/webpack/configs/rules/image-rules.js.map +1 -1
- package/dist/webpack/configs/rules/index.d.ts +0 -1
- package/dist/webpack/configs/rules/index.d.ts.map +1 -1
- package/dist/webpack/configs/rules/index.js +24 -23
- package/dist/webpack/configs/rules/index.js.map +1 -1
- package/dist/webpack/configs/rules/js-rules.d.ts +1 -1
- package/dist/webpack/configs/rules/js-rules.d.ts.map +1 -1
- package/dist/webpack/configs/rules/js-rules.js +47 -7
- package/dist/webpack/configs/rules/js-rules.js.map +1 -1
- package/dist/webpack/configs/rules/less-rules.js +25 -9
- package/dist/webpack/configs/rules/less-rules.js.map +1 -1
- package/dist/webpack/configs/rules/scss-rules.js +25 -9
- package/dist/webpack/configs/rules/scss-rules.js.map +1 -1
- package/dist/webpack/configs/rules/svg-rules.js +40 -20
- package/dist/webpack/configs/rules/svg-rules.js.map +1 -1
- package/dist/webpack/configs/rules-config.d.ts.map +1 -1
- package/dist/webpack/configs/rules-config.js +34 -19
- package/dist/webpack/configs/rules-config.js.map +1 -1
- package/dist/webpack/configs/stats-config.js +14 -4
- package/dist/webpack/configs/stats-config.js.map +1 -1
- package/dist/webpack/configs/types.d.ts +1 -3
- package/dist/webpack/configs/types.d.ts.map +1 -1
- package/dist/webpack/configs/types.js +4 -1
- package/dist/webpack/configs/types.js.map +1 -1
- package/dist/webpack/configs/utils/generate-metadata.js +40 -22
- package/dist/webpack/configs/utils/generate-metadata.js.map +1 -1
- package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js +20 -11
- package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js.map +1 -1
- package/dist/webpack/configs/utils/get-web-components-version.js +18 -8
- package/dist/webpack/configs/utils/get-web-components-version.js.map +1 -1
- package/dist/webpack/configs/utils/index.js +18 -16
- package/dist/webpack/configs/utils/index.js.map +1 -1
- package/dist/webpack/configs/watch-options-config.d.ts +6 -0
- package/dist/webpack/configs/watch-options-config.d.ts.map +1 -0
- package/dist/webpack/configs/watch-options-config.js +24 -0
- package/dist/webpack/configs/watch-options-config.js.map +1 -0
- package/dist/webpack/create-webpack-config.d.ts.map +1 -1
- package/dist/webpack/create-webpack-config.js +62 -50
- package/dist/webpack/create-webpack-config.js.map +1 -1
- package/dist/webpack/index.d.ts +1 -1
- package/dist/webpack/index.d.ts.map +1 -1
- package/dist/webpack/index.js +18 -17
- package/dist/webpack/index.js.map +1 -1
- package/dist/webpack/loaders/expose-loader/index.js +15 -15
- package/dist/webpack/loaders/expose-loader/index.js.map +1 -1
- package/dist/webpack/loaders/expose-loader/runtime/get-global-this.js +5 -6
- package/dist/webpack/loaders/expose-loader/runtime/get-global-this.js.map +1 -1
- package/dist/webpack/loaders/expose-loader/utils/contextify-request.js +20 -13
- package/dist/webpack/loaders/expose-loader/utils/contextify-request.js.map +1 -1
- package/dist/webpack/loaders/expose-loader/utils/get-new-user-request.js +22 -11
- package/dist/webpack/loaders/expose-loader/utils/get-new-user-request.js.map +1 -1
- package/dist/webpack/loaders/expose-loader/utils/index.js +20 -18
- package/dist/webpack/loaders/expose-loader/utils/index.js.map +1 -1
- package/dist/webpack/loaders/expose-loader/utils/stringify-request.js +20 -12
- package/dist/webpack/loaders/expose-loader/utils/stringify-request.js.map +1 -1
- package/dist/webpack/types.d.ts +0 -4
- package/dist/webpack/types.d.ts.map +1 -1
- package/dist/webpack/types.js +4 -1
- package/dist/webpack/types.js.map +1 -1
- package/dist/webpack/utils/feature-cohort.js +17 -12
- package/dist/webpack/utils/feature-cohort.js.map +1 -1
- package/dist/webpack/utils/get-caller-filename.js +14 -7
- package/dist/webpack/utils/get-caller-filename.js.map +1 -1
- package/dist/webpack/utils/{bundle.d.ts → get-module-entry-path.d.ts} +1 -1
- package/dist/webpack/utils/get-module-entry-path.d.ts.map +1 -0
- package/dist/webpack/utils/get-module-entry-path.js +21 -0
- package/dist/webpack/utils/get-module-entry-path.js.map +1 -0
- package/dist/webpack/utils/hash-mod.js +16 -11
- package/dist/webpack/utils/hash-mod.js.map +1 -1
- package/dist/webpack/utils/index.d.ts +1 -1
- package/dist/webpack/utils/index.d.ts.map +1 -1
- package/dist/webpack/utils/index.js +21 -19
- package/dist/webpack/utils/index.js.map +1 -1
- package/dist/webpack/utils/split-by-entry.js +17 -7
- package/dist/webpack/utils/split-by-entry.js.map +1 -1
- package/dist/webpack/utils/testing/compile.js +12 -4
- package/dist/webpack/utils/testing/compile.js.map +1 -1
- package/dist/webpack/utils/testing/execute.js +26 -13
- package/dist/webpack/utils/testing/execute.js.map +1 -1
- package/dist/webpack/utils/testing/get-compiler.js +34 -24
- package/dist/webpack/utils/testing/get-compiler.js.map +1 -1
- package/dist/webpack/utils/testing/get-errors.js +12 -4
- package/dist/webpack/utils/testing/get-errors.js.map +1 -1
- package/dist/webpack/utils/testing/get-module-source.js +18 -5
- package/dist/webpack/utils/testing/get-module-source.js.map +1 -1
- package/dist/webpack/utils/testing/get-warnings.js +12 -4
- package/dist/webpack/utils/testing/get-warnings.js.map +1 -1
- package/dist/webpack/utils/testing/index.js +28 -20
- package/dist/webpack/utils/testing/index.js.map +1 -1
- package/dist/webpack/utils/testing/normalize-errors.js +11 -3
- package/dist/webpack/utils/testing/normalize-errors.js.map +1 -1
- package/dist/webpack/utils/testing/read-asset.js +20 -11
- package/dist/webpack/utils/testing/read-asset.js.map +1 -1
- package/dist/webpack/utils/testing/read-assets.js +13 -5
- package/dist/webpack/utils/testing/read-assets.js.map +1 -1
- package/package.json +20 -20
- package/src/cli/commands/__tests__/build.test.ts +69 -44
- package/src/cli/commands/__tests__/clean.test.ts +32 -0
- package/src/cli/commands/__tests__/install.test.ts +50 -8
- package/src/cli/commands/__tests__/kendo-ui-license.test.ts +5 -5
- package/src/cli/commands/__tests__/lint.test.ts +4 -0
- package/src/cli/commands/__tests__/mfe-package-publish.test.ts +21 -2
- package/src/cli/commands/__tests__/mfe-publish.test.ts +19 -23
- package/src/cli/commands/__tests__/prepare-package.test.ts +17 -36
- package/src/cli/commands/__tests__/start.test.ts +81 -44
- package/src/cli/commands/__tests__/tests.test.ts +4 -0
- package/src/cli/commands/build.ts +73 -35
- package/src/cli/commands/bundle-package.ts +0 -4
- package/src/cli/commands/clean.ts +24 -0
- package/src/cli/commands/eslint.ts +1 -1
- package/src/cli/commands/get-command.ts +25 -35
- package/src/cli/commands/index.ts +1 -1
- package/src/cli/commands/install.ts +29 -8
- package/src/cli/commands/lint.ts +22 -17
- package/src/cli/commands/mfe-package-publish.ts +22 -5
- package/src/cli/commands/mfe-publish.ts +5 -18
- package/src/cli/commands/prepare-package.ts +8 -12
- package/src/cli/commands/review/__mocks__/expect-calls.ts +48 -0
- package/src/cli/commands/review/__mocks__/index.ts +1 -0
- package/src/cli/commands/review/__tests__/review.test.ts +483 -0
- package/src/cli/commands/review/index.ts +3 -0
- package/src/cli/commands/review/review.ts +247 -0
- package/src/cli/commands/review/rules/__mocks__/index.ts +3 -0
- package/src/cli/commands/review/rules/__mocks__/mock-config.ts +14 -0
- package/src/cli/commands/review/rules/__mocks__/mock-packages.ts +41 -0
- package/src/cli/commands/review/rules/__mocks__/mock-project.ts +11 -0
- package/src/cli/commands/review/rules/__tests__/no-typescript-entry-point.test.ts +166 -0
- package/src/cli/commands/review/rules/__tests__/require-explicit-side-effects.test.ts +113 -0
- package/src/cli/commands/review/rules/__tests__/require-npmrc.test.ts +71 -0
- package/src/cli/commands/review/rules/__tests__/require-one-anvil-uikit-contrib-version.test.ts +33 -0
- package/src/cli/commands/review/rules/__tests__/require-one-collection-version.test.ts +155 -0
- package/src/cli/commands/review/rules/__tests__/require-one-package-version.test.ts +135 -0
- package/src/cli/commands/review/rules/__tests__/require-one-uikit-version.ts +40 -0
- package/src/cli/commands/review/rules/__tests__/require-project-version-in-root-node-modules.test.ts +186 -0
- package/src/cli/commands/review/rules/__tests__/require-servicetitan-scope.test.ts +83 -0
- package/src/cli/commands/review/rules/index.ts +20 -0
- package/src/cli/commands/review/rules/no-typescript-entry-point.ts +78 -0
- package/src/cli/commands/review/rules/require-explicit-side-effects.ts +31 -0
- package/src/cli/commands/review/rules/require-npmrc.ts +27 -0
- package/src/cli/commands/review/rules/require-one-anvil-uikit-contrib-version.ts +20 -0
- package/src/cli/commands/review/rules/require-one-collection-version.ts +169 -0
- package/src/cli/commands/review/rules/require-one-package-version.ts +76 -0
- package/src/cli/commands/review/rules/require-one-uikit-version.ts +27 -0
- package/src/cli/commands/review/rules/require-project-version-in-root-node-modules.ts +104 -0
- package/src/cli/commands/review/rules/require-servicetitan-scope.ts +27 -0
- package/src/cli/commands/review/types.ts +72 -0
- package/src/cli/commands/review/utils/__tests__/compare-version.test.ts +73 -0
- package/src/cli/commands/review/utils/__tests__/get-max-version.test.ts +17 -0
- package/src/cli/commands/review/utils/__tests__/indent.test.ts +41 -0
- package/src/cli/commands/review/utils/__tests__/name-to-location.test.ts +39 -0
- package/src/cli/commands/review/utils/__tests__/set-version.test.ts +84 -0
- package/src/cli/commands/review/utils/apply-filter.ts +14 -0
- package/src/cli/commands/review/utils/collate-dependencies.ts +46 -0
- package/src/cli/commands/review/utils/compare-version.ts +82 -0
- package/src/cli/commands/review/utils/format-depends-on.ts +11 -0
- package/src/cli/commands/review/utils/format-location.ts +8 -0
- package/src/cli/commands/review/utils/get-key.ts +10 -0
- package/src/cli/commands/review/utils/get-max-version.ts +5 -0
- package/src/cli/commands/review/utils/indent.ts +8 -0
- package/src/cli/commands/review/utils/index.ts +13 -0
- package/src/cli/commands/review/utils/is-library.ts +5 -0
- package/src/cli/commands/review/utils/name-to-location.ts +7 -0
- package/src/cli/commands/review/utils/pluralize.ts +3 -0
- package/src/cli/commands/review/utils/set-version.ts +26 -0
- package/src/cli/commands/review/utils/summarize.ts +21 -0
- package/src/cli/commands/run-task.test.ts +60 -0
- package/src/cli/commands/start.ts +130 -55
- package/src/cli/commands/tests.ts +2 -0
- package/src/cli/commands/types.ts +1 -0
- package/src/cli/index.ts +4 -4
- package/src/cli/tasks/__tests__/cli-task.test.ts +16 -4
- package/src/cli/tasks/__tests__/{swc-compile.test.ts → swc-compile-package.test.ts} +75 -36
- package/src/cli/tasks/__tests__/tsc-compile-package.test.ts +1 -0
- package/src/cli/tasks/__tests__/tsc-compile.test.ts +12 -23
- package/src/cli/tasks/cli-task.ts +12 -18
- package/src/cli/tasks/swc-cli.d.ts +12 -1
- package/src/cli/tasks/swc-compile-package.ts +71 -45
- package/src/cli/tasks/task.ts +2 -11
- package/src/cli/tasks/tsc-compile-package.ts +0 -4
- package/src/cli/tasks/tsc-compile.ts +14 -17
- package/src/cli/types/cpx2.d.ts +8 -1
- package/src/cli/utils/__tests__/bundle.test.ts +1 -1
- package/src/cli/utils/__tests__/check-args.test.ts +34 -0
- package/src/cli/utils/__tests__/compile.test.ts +59 -0
- package/src/cli/utils/__tests__/copy-files.test.ts +157 -0
- package/src/cli/utils/__tests__/get-module-type.test.ts +19 -0
- package/src/cli/utils/__tests__/lerna-exec.test.ts +58 -11
- package/src/cli/utils/__tests__/pipe-stdout.test.ts +39 -0
- package/src/cli/utils/__tests__/process-tree.test.ts +175 -0
- package/src/cli/utils/__tests__/set-node-options.test.ts +51 -6
- package/src/cli/utils/__tests__/tcm.test.ts +90 -86
- package/src/cli/utils/__tests__/type-check.test.ts +47 -0
- package/src/cli/utils/__tests__/watch-stdout.test.ts +68 -0
- package/src/cli/utils/bundle.ts +5 -18
- package/src/cli/utils/check-args.ts +13 -0
- package/src/cli/utils/compile-less.ts +0 -1
- package/src/cli/utils/compile-sass.ts +0 -1
- package/src/cli/utils/compile.ts +22 -0
- package/src/cli/utils/copy-files.ts +76 -0
- package/src/cli/utils/eslint.ts +1 -0
- package/src/cli/utils/get-module-type.ts +4 -6
- package/src/cli/utils/index.ts +7 -6
- package/src/cli/utils/lerna-exec.ts +17 -10
- package/src/cli/utils/pipe-stdout.ts +10 -0
- package/src/cli/utils/process-tree.ts +57 -0
- package/src/cli/utils/set-node-options.ts +15 -12
- package/src/cli/utils/style-extensions.ts +1 -0
- package/src/cli/utils/tcm.ts +22 -32
- package/src/cli/utils/type-check.ts +19 -0
- package/src/cli/utils/watch-stdout.ts +24 -0
- package/src/utils/__tests__/format-duration.test.ts +22 -0
- package/src/utils/__tests__/get-configuration.test.ts +44 -2
- package/src/utils/__tests__/get-packages.test.ts +58 -49
- package/src/utils/__tests__/log-errors.test.ts +102 -0
- package/src/utils/__tests__/log.test.ts +1 -86
- package/src/utils/find-packages.ts +12 -6
- package/src/utils/format-duration.ts +13 -0
- package/src/utils/get-configuration.ts +19 -5
- package/src/utils/get-folders.ts +3 -1
- package/src/utils/get-packages.ts +9 -16
- package/src/utils/index.ts +3 -0
- package/src/utils/log-errors.ts +29 -0
- package/src/utils/log.ts +0 -26
- package/src/webpack/__mocks__/file-rules.ts +0 -5
- package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +4 -5
- package/src/webpack/__tests__/create-webpack-config.test.ts +33 -112
- package/src/webpack/configs/dev-server-config.ts +4 -27
- package/src/webpack/configs/devtool-config.ts +2 -2
- package/src/webpack/configs/entry.config.ts +7 -2
- package/src/webpack/configs/index.ts +2 -1
- package/src/webpack/configs/loaders/index.ts +1 -1
- package/src/webpack/configs/optimization-config.ts +2 -2
- package/src/webpack/configs/plugins/index.ts +0 -2
- package/src/webpack/configs/plugins/virtual-modules-plugin.ts +3 -3
- package/src/webpack/configs/plugins-config.ts +0 -4
- package/src/webpack/configs/resolve-config.ts +1 -1
- package/src/webpack/configs/rules/index.ts +0 -1
- package/src/webpack/configs/rules/js-rules.ts +27 -2
- package/src/webpack/configs/rules-config.ts +1 -11
- package/src/webpack/configs/types.ts +1 -3
- package/src/webpack/configs/watch-options-config.ts +17 -0
- package/src/webpack/create-webpack-config.ts +3 -4
- package/src/webpack/index.ts +1 -1
- package/src/webpack/types.ts +0 -4
- package/src/webpack/utils/index.ts +1 -1
- package/dist/__mocks__/create-package.js +0 -17
- package/dist/__mocks__/create-package.js.map +0 -1
- package/dist/__mocks__/index.js +0 -18
- package/dist/__mocks__/index.js.map +0 -1
- package/dist/cli/utils/assets-copy.d.ts +0 -3
- package/dist/cli/utils/assets-copy.d.ts.map +0 -1
- package/dist/cli/utils/assets-copy.js +0 -25
- package/dist/cli/utils/assets-copy.js.map +0 -1
- package/dist/cli/utils/styles-copy.d.ts +0 -3
- package/dist/cli/utils/styles-copy.d.ts.map +0 -1
- package/dist/cli/utils/styles-copy.js +0 -25
- package/dist/cli/utils/styles-copy.js.map +0 -1
- package/dist/cli/utils/tsc.d.ts +0 -5
- package/dist/cli/utils/tsc.d.ts.map +0 -1
- package/dist/cli/utils/tsc.js +0 -37
- package/dist/cli/utils/tsc.js.map +0 -1
- package/dist/webpack/__mocks__/file-rules.js +0 -79
- package/dist/webpack/__mocks__/file-rules.js.map +0 -1
- package/dist/webpack/__mocks__/index.js +0 -19
- package/dist/webpack/__mocks__/index.js.map +0 -1
- package/dist/webpack/__mocks__/style-rules.js +0 -124
- package/dist/webpack/__mocks__/style-rules.js.map +0 -1
- package/dist/webpack/configs/plugins/provide-react-plugin.d.ts +0 -4
- package/dist/webpack/configs/plugins/provide-react-plugin.d.ts.map +0 -1
- package/dist/webpack/configs/plugins/provide-react-plugin.js +0 -13
- package/dist/webpack/configs/plugins/provide-react-plugin.js.map +0 -1
- package/dist/webpack/configs/plugins/ts-checker-plugin.d.ts +0 -4
- package/dist/webpack/configs/plugins/ts-checker-plugin.d.ts.map +0 -1
- package/dist/webpack/configs/plugins/ts-checker-plugin.js +0 -30
- package/dist/webpack/configs/plugins/ts-checker-plugin.js.map +0 -1
- package/dist/webpack/configs/rules/tsx-rules.d.ts +0 -4
- package/dist/webpack/configs/rules/tsx-rules.d.ts.map +0 -1
- package/dist/webpack/configs/rules/tsx-rules.js +0 -44
- package/dist/webpack/configs/rules/tsx-rules.js.map +0 -1
- package/dist/webpack/utils/bundle.d.ts.map +0 -1
- package/dist/webpack/utils/bundle.js +0 -19
- package/dist/webpack/utils/bundle.js.map +0 -1
- package/src/cli/utils/__tests__/assets-copy.test.ts +0 -52
- package/src/cli/utils/__tests__/styles-copy.test.ts +0 -52
- package/src/cli/utils/__tests__/tsc.test.ts +0 -63
- package/src/cli/utils/assets-copy.ts +0 -23
- package/src/cli/utils/styles-copy.ts +0 -23
- package/src/cli/utils/tsc.ts +0 -38
- package/src/webpack/configs/plugins/provide-react-plugin.ts +0 -12
- package/src/webpack/configs/plugins/ts-checker-plugin.ts +0 -33
- package/src/webpack/configs/rules/tsx-rules.ts +0 -48
- /package/src/webpack/utils/{bundle.ts → get-module-entry-path.ts} +0 -0
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { getFolders, log } from '../../../../utils';
|
|
4
|
+
import { FixCategory, Package, PackageError, PackageRule, Project } from '../types';
|
|
5
|
+
import { applyFilter } from '../utils';
|
|
6
|
+
|
|
7
|
+
interface ErrorData {
|
|
8
|
+
key: string;
|
|
9
|
+
value: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export class NoTypescriptEntryPoint implements PackageRule {
|
|
13
|
+
get id() {
|
|
14
|
+
return 'no-typescript-entry-point';
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
run({ config, packages }: Project): PackageError<ErrorData>[] {
|
|
18
|
+
const ruleConfig = config.rules?.[this.id];
|
|
19
|
+
return applyFilter(ruleConfig, packages, ({ name }) => name).flatMap(pkg =>
|
|
20
|
+
this.checkEntryPoints(pkg)
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
fix({ data, location }: PackageError<ErrorData>) {
|
|
25
|
+
const { key, value } = data ?? {};
|
|
26
|
+
if (!(key && value && location)) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
const workspace = path.relative('.', location);
|
|
31
|
+
const { source, destination } = getFolders(location);
|
|
32
|
+
const newValue = value.replace(source, destination).replace(/\.ts$/, '.js');
|
|
33
|
+
const command = `npm pkg set "${key}"="${newValue}" -w ${workspace}`;
|
|
34
|
+
log.debug(`review:${this.id}`, `Running ${command}`);
|
|
35
|
+
execSync(command);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
private checkEntryPoints(pkg: Package) {
|
|
39
|
+
const errors: PackageError<ErrorData>[] = [];
|
|
40
|
+
const addError = (message: string, data: ErrorData) =>
|
|
41
|
+
errors.push({
|
|
42
|
+
id: this.id,
|
|
43
|
+
message,
|
|
44
|
+
location: pkg.location,
|
|
45
|
+
fixable: FixCategory.normal,
|
|
46
|
+
data,
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
(['main', 'module', 'exports'] as (keyof Package)[]).forEach(key => {
|
|
50
|
+
const value = pkg[key];
|
|
51
|
+
if (typeof value === 'string' && this.isTypescriptEntryPoint(value)) {
|
|
52
|
+
addError(`"${key}" is Typescript: ${value}`, { key, value });
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
if (pkg.exports && typeof pkg.exports !== 'string') {
|
|
57
|
+
const checkExports = (exports: NonNullable<Package['exports']>, prefix: string) => {
|
|
58
|
+
Object.entries(exports).forEach(([key, value]) => {
|
|
59
|
+
const path = `${prefix}[${key}]`;
|
|
60
|
+
if (typeof value === 'string') {
|
|
61
|
+
if (this.isTypescriptEntryPoint(value)) {
|
|
62
|
+
addError(`"${path}" is Typescript: ${value}`, { key: path, value });
|
|
63
|
+
}
|
|
64
|
+
} else if (exports) {
|
|
65
|
+
checkExports(value, path);
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
};
|
|
69
|
+
checkExports(pkg.exports, 'exports');
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return errors;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
private isTypescriptEntryPoint(str: string) {
|
|
76
|
+
return str.endsWith('.ts') && !str.endsWith('.d.ts');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ErrorSeverity, Package, PackageError, PackageRule, Project } from '../types';
|
|
2
|
+
import { applyFilter, isLibrary } from '../utils';
|
|
3
|
+
|
|
4
|
+
export class RequireExplicitSideEffects implements PackageRule {
|
|
5
|
+
get id() {
|
|
6
|
+
return 'require-explicit-side-effects';
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
run({ config, packages }: Project): PackageError[] {
|
|
10
|
+
const ruleConfig = config.rules?.[this.id];
|
|
11
|
+
return applyFilter(ruleConfig, packages, ({ name }) => name).reduce((result, pkg) => {
|
|
12
|
+
if (this.needsSideEffects(pkg)) {
|
|
13
|
+
result.push({
|
|
14
|
+
id: this.id,
|
|
15
|
+
message: `package "${pkg.name}" omits sideEffects property`,
|
|
16
|
+
severity: ErrorSeverity.warning,
|
|
17
|
+
location: pkg.location,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}, [] as PackageError[]);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private needsSideEffects(pkg: Package) {
|
|
25
|
+
return (
|
|
26
|
+
isLibrary(pkg) &&
|
|
27
|
+
(pkg.main !== undefined || pkg.exports !== undefined) &&
|
|
28
|
+
pkg.sideEffects === undefined
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { execSync } from 'child_process';
|
|
2
|
+
import { log } from '../../../../utils';
|
|
3
|
+
import { ErrorSeverity, FixCategory, PackageError, PackageRule } from '../types';
|
|
4
|
+
|
|
5
|
+
export class RequireNpmrc implements PackageRule {
|
|
6
|
+
get id() {
|
|
7
|
+
return 'require-npmrc';
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
run(): PackageError | undefined {
|
|
11
|
+
const stdout = execSync('npm config list --json', { encoding: 'utf8' });
|
|
12
|
+
if (JSON.parse(stdout)['legacy-peer-deps'] !== true) {
|
|
13
|
+
return {
|
|
14
|
+
id: this.id,
|
|
15
|
+
message: 'project does not contain .npmrc with legacy-peer-deps=true',
|
|
16
|
+
severity: ErrorSeverity.warning,
|
|
17
|
+
fixable: FixCategory.isolated,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
fix() {
|
|
23
|
+
const command = 'npm config set --location=project legacy-peer-deps=true';
|
|
24
|
+
log.debug(`review:${this.id}`, `Running ${command}`);
|
|
25
|
+
execSync(command);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { RequireOneCollectionVersion } from './require-one-collection-version';
|
|
2
|
+
|
|
3
|
+
const ANVIL_UIKIT_PACKAGES = [
|
|
4
|
+
'@servicetitan/confirm-navigation',
|
|
5
|
+
'@servicetitan/confirm',
|
|
6
|
+
'@servicetitan/culture',
|
|
7
|
+
'@servicetitan/data-query',
|
|
8
|
+
'@servicetitan/datetime-utils',
|
|
9
|
+
'@servicetitan/form-state',
|
|
10
|
+
'@servicetitan/form',
|
|
11
|
+
'@servicetitan/link-item',
|
|
12
|
+
'@servicetitan/notifications',
|
|
13
|
+
'@servicetitan/table',
|
|
14
|
+
];
|
|
15
|
+
|
|
16
|
+
export class RequireOneAnvilUikitContribVersion extends RequireOneCollectionVersion {
|
|
17
|
+
constructor() {
|
|
18
|
+
super({ name: 'anvil-uikit-contrib', packages: ANVIL_UIKIT_PACKAGES });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { log } from '../../../../utils';
|
|
3
|
+
import { FixCategory, Package, PackageError, PackageRule, Project } from '../types';
|
|
4
|
+
import { applyFilter, compareVersion, formatDependsOn, nameToLocation, setVersion } from '../utils';
|
|
5
|
+
|
|
6
|
+
export interface Collection {
|
|
7
|
+
name: string;
|
|
8
|
+
packages: string[];
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Maps version number to packages with that version and their dependents.
|
|
13
|
+
*/
|
|
14
|
+
interface Versions {
|
|
15
|
+
[version: string]: {
|
|
16
|
+
[packageName: string]: string[];
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
interface ErrorData {
|
|
21
|
+
targetVersion: string;
|
|
22
|
+
otherVersions: Versions;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
interface ErrorDetail {
|
|
26
|
+
dependents: string[];
|
|
27
|
+
extra: boolean;
|
|
28
|
+
packageName: string;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export class RequireOneCollectionVersion implements PackageRule {
|
|
32
|
+
constructor(private readonly collection: Collection) {}
|
|
33
|
+
|
|
34
|
+
get id() {
|
|
35
|
+
return `require-one-${this.collection.name}-version`;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
run(project: Project): PackageError<ErrorData> | undefined {
|
|
39
|
+
const versions = this.collateVersions(project);
|
|
40
|
+
|
|
41
|
+
/* istanbul ignore next: debug only */
|
|
42
|
+
log.debug(`review:${this.collection.name}-versions`, () =>
|
|
43
|
+
JSON.stringify(versions, null, 2)
|
|
44
|
+
);
|
|
45
|
+
|
|
46
|
+
const keys = Object.keys(versions);
|
|
47
|
+
if (keys.length <= 1) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const message = `project depends on multiple versions of ${this.collection.name} packages`;
|
|
52
|
+
const details = this.composeDetails(project, versions);
|
|
53
|
+
const targetVersion = keys[0];
|
|
54
|
+
const otherVersions = Object.fromEntries(Object.entries(versions).slice(1));
|
|
55
|
+
return {
|
|
56
|
+
id: this.id,
|
|
57
|
+
message,
|
|
58
|
+
details,
|
|
59
|
+
fixable: FixCategory.normal,
|
|
60
|
+
data: { targetVersion, otherVersions },
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
fix({ data }: PackageError<ErrorData>, project: Project) {
|
|
65
|
+
const { targetVersion, otherVersions } = data ?? {};
|
|
66
|
+
if (!(targetVersion && otherVersions)) {
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
Object.values(otherVersions).forEach(packages => {
|
|
71
|
+
Object.entries(packages).forEach(([name, dependents]) => {
|
|
72
|
+
dependents.forEach(dependent =>
|
|
73
|
+
setVersion({
|
|
74
|
+
project,
|
|
75
|
+
packageName: dependent,
|
|
76
|
+
dependency: name,
|
|
77
|
+
version: targetVersion,
|
|
78
|
+
})
|
|
79
|
+
);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
private collateVersions(project: Project) {
|
|
85
|
+
const dependencies = this.getDependencies(project);
|
|
86
|
+
return this.sortVersions(
|
|
87
|
+
this.collection.packages.reduce<Versions>((result, name) => {
|
|
88
|
+
Object.entries(dependencies[name] ?? {}).forEach(([version, dependents]) => {
|
|
89
|
+
result[version] ??= {};
|
|
90
|
+
result[version][name] = dependents;
|
|
91
|
+
});
|
|
92
|
+
return result;
|
|
93
|
+
}, {})
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
private composeDetails({ packages }: Project, versions: Versions) {
|
|
98
|
+
const extra = this.getExtra(versions);
|
|
99
|
+
return this.sortDetails(this.getDetails(packages, versions, extra)).map(detail =>
|
|
100
|
+
this.formatDetail(detail)
|
|
101
|
+
);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
private formatDetail({ dependents, packageName, extra }: ErrorDetail) {
|
|
105
|
+
return formatDependsOn(dependents, chalk[extra ? 'red' : 'yellow'](packageName));
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
private getDependencies({ config, dependencies }: Project) {
|
|
109
|
+
const ruleConfig = config.rules?.[this.id];
|
|
110
|
+
return Object.fromEntries(
|
|
111
|
+
applyFilter(ruleConfig, Object.entries(dependencies), ([name]) => name)
|
|
112
|
+
) as Project['dependencies'];
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
private getDetails(packages: Package[], versions: Versions, extra: Set<string>) {
|
|
116
|
+
return Object.entries(versions).reduce((result, [version, dependencies]) => {
|
|
117
|
+
Object.entries(dependencies).forEach(([pkg, dependents]) => {
|
|
118
|
+
result.push({
|
|
119
|
+
packageName: `${pkg}@${version}`,
|
|
120
|
+
dependents: dependents.map(name => nameToLocation(name, packages)),
|
|
121
|
+
extra: extra.has(pkg),
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
return result;
|
|
125
|
+
}, [] as ErrorDetail[]);
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* Assumes first version is the most common and the other ones are extra (see sortVersions)
|
|
130
|
+
*/
|
|
131
|
+
private getExtra(versions: Versions): Set<string> {
|
|
132
|
+
return new Set(
|
|
133
|
+
Object.entries(versions)
|
|
134
|
+
.slice(1)
|
|
135
|
+
.flatMap(([_version, dependencies]) =>
|
|
136
|
+
Object.entries(dependencies).map(([pkg]) => pkg)
|
|
137
|
+
)
|
|
138
|
+
);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Orders details so that extraneous packages are at the top
|
|
143
|
+
*/
|
|
144
|
+
private sortDetails(details: ErrorDetail[]) {
|
|
145
|
+
return details.sort((a, b) => {
|
|
146
|
+
if (a.extra === b.extra) {
|
|
147
|
+
return 0;
|
|
148
|
+
}
|
|
149
|
+
return a.extra === true ? -1 : 1;
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
/**
|
|
154
|
+
* Orders versions in descending order by the number of packages using the version
|
|
155
|
+
* and then by version number. I.e., It puts most common version at the top and if
|
|
156
|
+
* multiple versions tie for the top position, it puts the highest version first.
|
|
157
|
+
*/
|
|
158
|
+
private sortVersions(versions: Versions): Versions {
|
|
159
|
+
return Object.fromEntries(
|
|
160
|
+
Object.entries(versions)
|
|
161
|
+
.sort(
|
|
162
|
+
([v1, depsV1], [v2, depsV2]) =>
|
|
163
|
+
Object.keys(depsV1).length - Object.keys(depsV2).length ||
|
|
164
|
+
compareVersion(v1, v2)
|
|
165
|
+
)
|
|
166
|
+
.reverse()
|
|
167
|
+
);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { FixCategory, PackageError, PackageRule, Project } from '../types';
|
|
3
|
+
import { applyFilter, formatDependsOn, getMaxVersion, nameToLocation, setVersion } from '../utils';
|
|
4
|
+
|
|
5
|
+
interface ErrorData {
|
|
6
|
+
name: string;
|
|
7
|
+
versions: Versions;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Maps versions to their dependents
|
|
12
|
+
*/
|
|
13
|
+
interface Versions {
|
|
14
|
+
[key: string]: string[];
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class RequireOnePackageVersion implements PackageRule {
|
|
18
|
+
get id() {
|
|
19
|
+
return 'require-one-package-version';
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
run(project: Project) {
|
|
23
|
+
const errors: PackageError<ErrorData>[] = [];
|
|
24
|
+
|
|
25
|
+
this.getDependencies(project).forEach(([name, versions]) => {
|
|
26
|
+
if (Object.keys(versions).length > 1) {
|
|
27
|
+
const message = `project depends on multiple versions of "${name}"`;
|
|
28
|
+
const details = this.formatDetails(project, versions);
|
|
29
|
+
errors.push({
|
|
30
|
+
id: this.id,
|
|
31
|
+
message,
|
|
32
|
+
details,
|
|
33
|
+
fixable: FixCategory.isolated,
|
|
34
|
+
data: { name, versions },
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
return errors;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
fix({ data }: PackageError<ErrorData>, project: Project) {
|
|
43
|
+
const { name, versions } = data ?? {};
|
|
44
|
+
if (!(name && versions)) {
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
const targetVersion = getMaxVersion(Object.keys(versions));
|
|
49
|
+
Object.entries(versions).forEach(([version, dependents]) => {
|
|
50
|
+
if (version !== targetVersion) {
|
|
51
|
+
dependents.forEach(dependent =>
|
|
52
|
+
setVersion({
|
|
53
|
+
project,
|
|
54
|
+
packageName: dependent,
|
|
55
|
+
dependency: name,
|
|
56
|
+
version: targetVersion,
|
|
57
|
+
})
|
|
58
|
+
);
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
private formatDetails({ packages }: Project, versions: Versions) {
|
|
64
|
+
return Object.entries(versions).map(([version, dependents]) =>
|
|
65
|
+
formatDependsOn(
|
|
66
|
+
dependents.map(name => nameToLocation(name, packages)),
|
|
67
|
+
chalk.yellow(version)
|
|
68
|
+
)
|
|
69
|
+
);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
private getDependencies({ config, dependencies }: Project) {
|
|
73
|
+
const ruleConfig = config.rules?.[this.id];
|
|
74
|
+
return applyFilter(ruleConfig, Object.entries(dependencies), ([name]) => name);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { RequireOneCollectionVersion } from './require-one-collection-version';
|
|
2
|
+
|
|
3
|
+
const UIKIT_PACKAGES = [
|
|
4
|
+
'@servicetitan/ajax-handlers',
|
|
5
|
+
'@servicetitan/error-boundary',
|
|
6
|
+
'@servicetitan/eslint-config',
|
|
7
|
+
'@servicetitan/eslint-plugin',
|
|
8
|
+
'@servicetitan/eslint-plugin-folder-schema',
|
|
9
|
+
'@servicetitan/folder-lint',
|
|
10
|
+
'@servicetitan/hash-browser-router',
|
|
11
|
+
'@servicetitan/ko-bridge',
|
|
12
|
+
'@servicetitan/launchdarkly-service',
|
|
13
|
+
'@servicetitan/lazy-module',
|
|
14
|
+
'@servicetitan/log-service',
|
|
15
|
+
'@servicetitan/react-ioc',
|
|
16
|
+
'@servicetitan/restrict-imports',
|
|
17
|
+
'@servicetitan/startup',
|
|
18
|
+
'@servicetitan/stylelint-config',
|
|
19
|
+
'@servicetitan/suppress-warnings',
|
|
20
|
+
'@servicetitan/web-components',
|
|
21
|
+
];
|
|
22
|
+
|
|
23
|
+
export class RequireOneUikitVersion extends RequireOneCollectionVersion {
|
|
24
|
+
constructor() {
|
|
25
|
+
super({ name: 'uikit', packages: UIKIT_PACKAGES });
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import chalk from 'chalk';
|
|
2
|
+
import { satisfies } from 'semver';
|
|
3
|
+
import { FixCategory, PackageError, PackageRule, Project } from '../types';
|
|
4
|
+
import { applyFilter, getKey, getMaxVersion } from '../utils';
|
|
5
|
+
import { execSync } from 'child_process';
|
|
6
|
+
import { log } from '../../../../utils';
|
|
7
|
+
|
|
8
|
+
interface Mismatch {
|
|
9
|
+
name: string;
|
|
10
|
+
projectVersions: string[];
|
|
11
|
+
rootVersion: string;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
interface ErrorData {
|
|
15
|
+
mismatches: Mismatch[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export class RequireProjectVersionInRootNodeModules implements PackageRule {
|
|
19
|
+
get id() {
|
|
20
|
+
return 'require-project-version-in-root-node-modules';
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
run(project: Project): PackageError<ErrorData> | undefined {
|
|
24
|
+
const mismatches = this.findMismatches(project);
|
|
25
|
+
if (!mismatches.length) {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
return {
|
|
30
|
+
id: this.id,
|
|
31
|
+
message: 'project has unexpected version in root node_modules',
|
|
32
|
+
details: this.formatDetails(mismatches),
|
|
33
|
+
fixable: FixCategory.lockFile,
|
|
34
|
+
location: project.packageLock.location,
|
|
35
|
+
data: { mismatches },
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
fix({ data }: PackageError<ErrorData>, project: Project) {
|
|
40
|
+
const { mismatches } = data ?? {};
|
|
41
|
+
if (!mismatches) {
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
const root = project.packages.find(({ location }) => location === '.');
|
|
46
|
+
if (!root) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const dependencies = mismatches.reduce<Record<string, string>>(
|
|
51
|
+
(result, { name, projectVersions }) => {
|
|
52
|
+
if (!getKey(root, name)) {
|
|
53
|
+
result[name] = getMaxVersion(projectVersions);
|
|
54
|
+
}
|
|
55
|
+
return result;
|
|
56
|
+
},
|
|
57
|
+
{}
|
|
58
|
+
);
|
|
59
|
+
|
|
60
|
+
const entries = Object.entries(dependencies);
|
|
61
|
+
if (entries.length === 0) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/* istanbul ignore next: debug only */
|
|
66
|
+
log.debug(`review:${this.id}`, () => JSON.stringify(dependencies, null, 2));
|
|
67
|
+
|
|
68
|
+
entries.forEach(([name, version]) =>
|
|
69
|
+
execSync(`npm pkg set dependencies["${name}"]="${version}"`, { stdio: 'inherit' })
|
|
70
|
+
);
|
|
71
|
+
|
|
72
|
+
execSync('npx startup install --fix --quiet', { stdio: 'inherit' });
|
|
73
|
+
|
|
74
|
+
entries.forEach(([name]) =>
|
|
75
|
+
execSync(`npm pkg delete dependencies["${name}"]`, { stdio: 'inherit' })
|
|
76
|
+
);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
private formatDetails(mismatches: Mismatch[]) {
|
|
80
|
+
return mismatches.map(({ name, projectVersions, rootVersion }) => {
|
|
81
|
+
const pkg = chalk.yellow(`${name}@${rootVersion}`);
|
|
82
|
+
return `${pkg} does not match ${chalk.yellow(projectVersions.join(', '))}`;
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
private findMismatches(project: Project) {
|
|
87
|
+
const { packageLock } = project;
|
|
88
|
+
return this.getDependencies(project).reduce((result, [name, versions]) => {
|
|
89
|
+
const rootVersion = packageLock.packages[`node_modules/${name}`]?.version;
|
|
90
|
+
if (rootVersion) {
|
|
91
|
+
const projectVersions = Object.keys(versions);
|
|
92
|
+
if (!projectVersions.some(version => satisfies(rootVersion, version))) {
|
|
93
|
+
result.push({ name, projectVersions, rootVersion });
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return result;
|
|
97
|
+
}, [] as Mismatch[]);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
private getDependencies({ config, dependencies }: Project) {
|
|
101
|
+
const ruleConfig = config.rules?.[this.id];
|
|
102
|
+
return applyFilter(ruleConfig, Object.entries(dependencies), ([name]) => name);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { ErrorSeverity, Package, PackageError, PackageRule, Project } from '../types';
|
|
2
|
+
import { applyFilter, isLibrary } from '../utils';
|
|
3
|
+
|
|
4
|
+
export class RequireServiceTitanScope implements PackageRule {
|
|
5
|
+
get id() {
|
|
6
|
+
return 'require-servicetitan-scope';
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
run({ config, packages }: Project): PackageError[] {
|
|
10
|
+
const ruleConfig = config.rules?.[this.id];
|
|
11
|
+
return applyFilter(ruleConfig, packages, ({ name }) => name).reduce((result, pkg) => {
|
|
12
|
+
if (this.needsScope(pkg)) {
|
|
13
|
+
result.push({
|
|
14
|
+
id: this.id,
|
|
15
|
+
message: `package "${pkg.name}" should have @servicetitan scope`,
|
|
16
|
+
severity: ErrorSeverity.warning,
|
|
17
|
+
location: pkg.location,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
return result;
|
|
21
|
+
}, [] as PackageError[]);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private needsScope(pkg: Package) {
|
|
25
|
+
return isLibrary(pkg) && pkg.private !== true && !pkg.name.startsWith('@servicetitan/');
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export abstract class PackageRule {
|
|
2
|
+
abstract get id(): string;
|
|
3
|
+
abstract run(project: Project): PackageError | PackageError[] | undefined;
|
|
4
|
+
abstract fix?(error: PackageError, project: Project): void;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface Project {
|
|
8
|
+
config: ReviewConfiguration;
|
|
9
|
+
dependencies: Dependencies;
|
|
10
|
+
// Only using this subset of package-lock.json
|
|
11
|
+
packageLock: { packages: Record<string, { version: string }>; location: string };
|
|
12
|
+
packages: Package[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Maps package name to versions and dependents of those versions.
|
|
17
|
+
*/
|
|
18
|
+
export interface Dependencies {
|
|
19
|
+
[packageName: string]: {
|
|
20
|
+
[version: string]: string[];
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Subset of package.json used by rules
|
|
26
|
+
*/
|
|
27
|
+
export interface Package {
|
|
28
|
+
cli?: CliOptions;
|
|
29
|
+
dependencies?: Record<string, string>;
|
|
30
|
+
devDependencies?: Record<string, string>;
|
|
31
|
+
exports?: string | Record<string, string | Record<string, string>> | null;
|
|
32
|
+
location: string;
|
|
33
|
+
main?: string;
|
|
34
|
+
module?: string;
|
|
35
|
+
name: string;
|
|
36
|
+
private?: boolean;
|
|
37
|
+
sideEffects?: any;
|
|
38
|
+
workspaces?: string[];
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
interface CliOptions {
|
|
42
|
+
webpack?: false | Record<string, any>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export interface PackageError<T = any> {
|
|
46
|
+
data?: T;
|
|
47
|
+
details?: string | string[];
|
|
48
|
+
fixable?: FixCategory;
|
|
49
|
+
id: string;
|
|
50
|
+
location?: string;
|
|
51
|
+
message: string;
|
|
52
|
+
severity?: ErrorSeverity;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export enum ErrorSeverity {
|
|
56
|
+
error = 1,
|
|
57
|
+
warning = 2,
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export enum FixCategory {
|
|
61
|
+
isolated = 'isolated', // fix examines and changes at most one dependency or package.json, if any
|
|
62
|
+
normal = 'normal', // fix potentially examines and changes multiple dependencies
|
|
63
|
+
lockFile = 'lockFile', // fix examines and changes package-lock.json
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export interface ReviewConfiguration {
|
|
67
|
+
rules?: { [id: string]: RuleConfiguration };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export type RuleConfiguration = Level | [Level] | [Level, { exclude?: string[] }];
|
|
71
|
+
|
|
72
|
+
export type Level = 'warn' | 'error' | 'off';
|