@servicetitan/startup 36.1.2-canary.1 → 36.1.2-canary.2

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.
Files changed (128) hide show
  1. package/bin/_run.js +77 -0
  2. package/bin/cpx.js +3 -0
  3. package/bin/eslint.js +3 -0
  4. package/bin/jest.js +3 -0
  5. package/bin/js-yaml.js +3 -0
  6. package/bin/json5.js +3 -0
  7. package/bin/kendo-ui-license.js +3 -0
  8. package/bin/lerna.js +3 -0
  9. package/bin/lessc.js +3 -0
  10. package/bin/patch-package.js +3 -0
  11. package/bin/prettier.js +3 -0
  12. package/bin/sass.js +3 -0
  13. package/bin/semver.js +3 -0
  14. package/bin/spack.js +3 -0
  15. package/bin/stylelint.js +3 -0
  16. package/bin/swc.js +3 -0
  17. package/bin/swcx.js +3 -0
  18. package/bin/tcm.js +3 -0
  19. package/bin/ts-jest.js +3 -0
  20. package/bin/ts-node-cwd.js +3 -0
  21. package/bin/ts-node-esm.js +3 -0
  22. package/bin/ts-node-script.js +3 -0
  23. package/bin/ts-node-transpile-only.js +3 -0
  24. package/bin/ts-node.js +3 -0
  25. package/bin/ts-script.js +3 -0
  26. package/bin/tsc.js +3 -0
  27. package/bin/tsserver.js +3 -0
  28. package/bin/vitest.js +3 -0
  29. package/bin/webpack-bundle-analyzer.js +3 -0
  30. package/bin/webpack-dev-server.js +3 -0
  31. package/bin/webpack.js +3 -0
  32. package/dist/cli/commands/clean.d.ts +1 -0
  33. package/dist/cli/commands/clean.d.ts.map +1 -1
  34. package/dist/cli/commands/clean.js +18 -8
  35. package/dist/cli/commands/clean.js.map +1 -1
  36. package/dist/cli/commands/install.js +1 -1
  37. package/dist/cli/commands/install.js.map +1 -1
  38. package/dist/cli/commands/kendo-ui-license.js +1 -2
  39. package/dist/cli/commands/kendo-ui-license.js.map +1 -1
  40. package/dist/cli/commands/prepare-package.js +2 -2
  41. package/dist/cli/commands/prepare-package.js.map +1 -1
  42. package/dist/cli/commands/review/review.d.ts.map +1 -1
  43. package/dist/cli/commands/review/review.js +8 -7
  44. package/dist/cli/commands/review/review.js.map +1 -1
  45. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.d.ts +0 -1
  46. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.d.ts.map +1 -1
  47. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js +12 -18
  48. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js.map +1 -1
  49. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.d.ts.map +1 -1
  50. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.js +9 -4
  51. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.js.map +1 -1
  52. package/dist/cli/commands/review/types.d.ts +2 -8
  53. package/dist/cli/commands/review/types.d.ts.map +1 -1
  54. package/dist/cli/commands/review/types.js.map +1 -1
  55. package/dist/cli/commands/test/runners/vitest.js +4 -2
  56. package/dist/cli/commands/test/runners/vitest.js.map +1 -1
  57. package/dist/cli/utils/index.d.ts +0 -3
  58. package/dist/cli/utils/index.d.ts.map +1 -1
  59. package/dist/cli/utils/index.js +0 -3
  60. package/dist/cli/utils/index.js.map +1 -1
  61. package/dist/cypress/config/webpack-config.d.ts.map +1 -1
  62. package/dist/cypress/config/webpack-config.js +1 -28
  63. package/dist/cypress/config/webpack-config.js.map +1 -1
  64. package/dist/storybook-config/webpack-final.d.ts.map +1 -1
  65. package/dist/storybook-config/webpack-final.js +0 -6
  66. package/dist/storybook-config/webpack-final.js.map +1 -1
  67. package/dist/utils/find-packages.d.ts.map +1 -1
  68. package/dist/utils/find-packages.js +15 -0
  69. package/dist/utils/find-packages.js.map +1 -1
  70. package/dist/utils/get-jest-config.d.ts.map +1 -1
  71. package/dist/utils/get-jest-config.js +6 -4
  72. package/dist/utils/get-jest-config.js.map +1 -1
  73. package/dist/utils/index.d.ts +0 -1
  74. package/dist/utils/index.d.ts.map +1 -1
  75. package/dist/utils/index.js +0 -1
  76. package/dist/utils/index.js.map +1 -1
  77. package/dist/utils/prettify.js +1 -1
  78. package/dist/utils/prettify.js.map +1 -1
  79. package/dist/webpack/configs/cache-config.d.ts.map +1 -1
  80. package/dist/webpack/configs/cache-config.js +3 -1
  81. package/dist/webpack/configs/cache-config.js.map +1 -1
  82. package/dist/webpack/configs/rules/js-rules.d.ts +1 -1
  83. package/dist/webpack/configs/rules/js-rules.d.ts.map +1 -1
  84. package/dist/webpack/configs/rules/js-rules.js +11 -2
  85. package/dist/webpack/configs/rules/js-rules.js.map +1 -1
  86. package/eslint/config.mjs +2 -0
  87. package/package.json +53 -16
  88. package/src/__tests__/postinstall.test.ts +173 -0
  89. package/src/cli/commands/__tests__/clean.test.ts +30 -12
  90. package/src/cli/commands/__tests__/install.test.ts +3 -1
  91. package/src/cli/commands/__tests__/kendo-ui-license.test.ts +4 -4
  92. package/src/cli/commands/__tests__/prepare-package.test.ts +2 -3
  93. package/src/cli/commands/clean.ts +18 -9
  94. package/src/cli/commands/install.ts +1 -1
  95. package/src/cli/commands/kendo-ui-license.ts +1 -1
  96. package/src/cli/commands/prepare-package.ts +1 -1
  97. package/src/cli/commands/review/__mocks__/index.ts +1 -0
  98. package/src/cli/commands/review/__mocks__/mock-package-manager.ts +20 -0
  99. package/src/cli/commands/review/__tests__/review.test.ts +23 -31
  100. package/src/cli/commands/review/review.ts +11 -7
  101. package/src/cli/commands/review/rules/__mocks__/mock-project.ts +2 -1
  102. package/src/cli/commands/review/rules/__tests__/require-compatible-launch-darkly-sdk.test.ts +39 -49
  103. package/src/cli/commands/review/rules/__tests__/require-project-version-in-root-node-modules.test.ts +35 -22
  104. package/src/cli/commands/review/rules/require-compatible-launch-darkly-sdk.ts +13 -28
  105. package/src/cli/commands/review/rules/require-project-version-in-root-node-modules.ts +10 -3
  106. package/src/cli/commands/review/types.ts +3 -12
  107. package/src/cli/commands/test/runners/__tests__/vitest.test.ts +9 -10
  108. package/src/cli/commands/test/runners/vitest.ts +8 -3
  109. package/src/cli/utils/index.ts +10 -3
  110. package/src/cypress/config/__tests__/webpack-config.test.ts +1 -28
  111. package/src/cypress/config/webpack-config.ts +4 -29
  112. package/src/postinstall.js +106 -14
  113. package/src/scripts/__tests__/generate-bin-wrappers.test.ts +226 -0
  114. package/src/scripts/generate-bin-wrappers.js +205 -0
  115. package/src/storybook-config/__tests__/webpack-final.test.ts +0 -25
  116. package/src/storybook-config/webpack-final.ts +0 -4
  117. package/src/utils/__tests__/get-jest-config.test.ts +9 -7
  118. package/src/utils/__tests__/get-packages.test.ts +47 -2
  119. package/src/utils/__tests__/prettify.test.ts +1 -1
  120. package/src/utils/find-packages.ts +16 -0
  121. package/src/utils/get-jest-config.ts +7 -4
  122. package/src/utils/index.ts +0 -1
  123. package/src/utils/prettify.ts +1 -1
  124. package/src/webpack/__tests__/create-webpack-config.test.ts +2 -1
  125. package/src/webpack/configs/cache-config.ts +3 -1
  126. package/src/webpack/configs/rules/js-rules.ts +4 -2
  127. package/src/utils/__tests__/default-excludes.test.ts +0 -25
  128. package/src/utils/default-excludes.ts +0 -24
package/bin/_run.js ADDED
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Shared helper for bin wrappers generated by scripts/generate-bin-wrappers.js.
3
+ *
4
+ * Locates a dependency's bin script by walking up the node_modules tree from
5
+ * the caller's directory, then executes it with the same argv. Works with both
6
+ * npm (flat hoisting) and pnpm (strict isolation).
7
+ *
8
+ * Caveat (npm only): if npm nests a different version of a package inside
9
+ * startup's node_modules and startup's bin wrapper is installed last, the
10
+ * consumer may get startup's version instead of their own. Keeping versions
11
+ * compatible avoids this. Not an issue under pnpm, which links direct
12
+ * dependencies' bins separately.
13
+ */
14
+ const { execFileSync } = require('child_process');
15
+ const fs = require('fs');
16
+ const path = require('path');
17
+
18
+ function exec(script) {
19
+ try {
20
+ execFileSync(process.execPath, [script, ...process.argv.slice(2)], {
21
+ stdio: 'inherit',
22
+ });
23
+ } catch (e) {
24
+ process.exit(e.status || 1);
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Walk up the directory tree from this package, checking for target in each
30
+ * node_modules directory along the way. Covers:
31
+ * - npm nesting: @servicetitan/startup/node_modules/<target>
32
+ * - npm hoisting: <project>/node_modules/<target>
33
+ * - pnpm: .pnpm/node_modules/<target> (pnpm-hoisted deps)
34
+ */
35
+ function findInFileSystem(target) {
36
+ let dir = path.resolve(__dirname, '..');
37
+ while (dir !== path.dirname(dir)) {
38
+ const candidate = path.join(dir, 'node_modules', target);
39
+ if (fs.existsSync(candidate)) {
40
+ return candidate;
41
+ }
42
+ dir = path.dirname(dir);
43
+ }
44
+ }
45
+
46
+ function resolve(pkg, binPath) {
47
+ const target = `${pkg}/${binPath}`;
48
+
49
+ // Try require.resolve first — it follows pnpm's dependency graph correctly
50
+ try {
51
+ return require.resolve(target);
52
+ } catch (e) {
53
+ /*
54
+ * Fall through on resolution errors; some packages use "exports" which
55
+ * blocks subpath access (ERR_PACKAGE_PATH_NOT_EXPORTED).
56
+ */
57
+ if (e.code !== 'MODULE_NOT_FOUND' && e.code !== 'ERR_PACKAGE_PATH_NOT_EXPORTED') {
58
+ throw e;
59
+ }
60
+ }
61
+
62
+ /*
63
+ * require.resolve fails when the package uses "exports" to block subpath
64
+ * access. Fall back to a direct filesystem lookup.
65
+ */
66
+ return findInFileSystem(target);
67
+ }
68
+
69
+ module.exports = function run(pkg, binPath) {
70
+ const script = resolve(pkg, binPath);
71
+ if (!script) {
72
+ // eslint-disable-next-line no-console
73
+ console.error(`@servicetitan/startup: cannot find ${pkg}/${binPath}`);
74
+ process.exit(1);
75
+ }
76
+ exec(script);
77
+ };
package/bin/cpx.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: cpx2 -> bin/index.js
3
+ require('./_run')('cpx2', 'bin/index.js');
package/bin/eslint.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: eslint -> ./bin/eslint.js
3
+ require('./_run')('eslint', './bin/eslint.js');
package/bin/jest.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: jest -> ./bin/jest.js
3
+ require('./_run')('jest', './bin/jest.js');
package/bin/js-yaml.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: js-yaml -> bin/js-yaml.js
3
+ require('./_run')('js-yaml', 'bin/js-yaml.js');
package/bin/json5.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: json5 -> lib/cli.js
3
+ require('./_run')('json5', 'lib/cli.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: @progress/kendo-licensing -> bin/kendo-ui-license.js
3
+ require('./_run')('@progress/kendo-licensing', 'bin/kendo-ui-license.js');
package/bin/lerna.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: lerna -> dist/cli.js
3
+ require('./_run')('lerna', 'dist/cli.js');
package/bin/lessc.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: less -> ./bin/lessc
3
+ require('./_run')('less', './bin/lessc');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: patch-package -> ./index.js
3
+ require('./_run')('patch-package', './index.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: prettier -> ./bin/prettier.cjs
3
+ require('./_run')('prettier', './bin/prettier.cjs');
package/bin/sass.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: sass -> sass.js
3
+ require('./_run')('sass', 'sass.js');
package/bin/semver.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: semver -> bin/semver.js
3
+ require('./_run')('semver', 'bin/semver.js');
package/bin/spack.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: @swc/cli -> ./bin/spack.js
3
+ require('./_run')('@swc/cli', './bin/spack.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: stylelint -> bin/stylelint.mjs
3
+ require('./_run')('stylelint', 'bin/stylelint.mjs');
package/bin/swc.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: @swc/cli -> ./bin/swc.js
3
+ require('./_run')('@swc/cli', './bin/swc.js');
package/bin/swcx.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: @swc/cli -> ./bin/swcx.js
3
+ require('./_run')('@swc/cli', './bin/swcx.js');
package/bin/tcm.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: typed-css-modules -> lib/cli.js
3
+ require('./_run')('typed-css-modules', 'lib/cli.js');
package/bin/ts-jest.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: ts-jest -> cli.js
3
+ require('./_run')('ts-jest', 'cli.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: ts-node -> dist/bin-cwd.js
3
+ require('./_run')('ts-node', 'dist/bin-cwd.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: ts-node -> dist/bin-esm.js
3
+ require('./_run')('ts-node', 'dist/bin-esm.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: ts-node -> dist/bin-script.js
3
+ require('./_run')('ts-node', 'dist/bin-script.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: ts-node -> dist/bin-transpile.js
3
+ require('./_run')('ts-node', 'dist/bin-transpile.js');
package/bin/ts-node.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: ts-node -> dist/bin.js
3
+ require('./_run')('ts-node', 'dist/bin.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: ts-node -> dist/bin-script-deprecated.js
3
+ require('./_run')('ts-node', 'dist/bin-script-deprecated.js');
package/bin/tsc.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: typescript -> ./bin/tsc
3
+ require('./_run')('typescript', './bin/tsc');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: typescript -> ./bin/tsserver
3
+ require('./_run')('typescript', './bin/tsserver');
package/bin/vitest.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: vitest -> ./vitest.mjs
3
+ require('./_run')('vitest', './vitest.mjs');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: webpack-bundle-analyzer -> lib/bin/analyzer.js
3
+ require('./_run')('webpack-bundle-analyzer', 'lib/bin/analyzer.js');
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: webpack-dev-server -> bin/webpack-dev-server.js
3
+ require('./_run')('webpack-dev-server', 'bin/webpack-dev-server.js');
package/bin/webpack.js ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ // Auto-generated by scripts/generate-bin-wrappers.js - wraps: webpack -> bin/webpack.js
3
+ require('./_run')('webpack', 'bin/webpack.js');
@@ -5,5 +5,6 @@ export declare class Clean extends Command<typeof entry> {
5
5
  private runCommand;
6
6
  private cleanGitWorkingTree;
7
7
  private clearNpxCache;
8
+ private clearPackageManagerCache;
8
9
  }
9
10
  //# sourceMappingURL=clean.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAYlC,qBAAa,KAAM,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEtC,OAAO;YAiBC,UAAU;IASxB,OAAO,CAAC,mBAAmB;YAOb,aAAa;CAW9B"}
1
+ {"version":3,"file":"clean.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/clean.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAYlC,qBAAa,KAAM,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAEtC,OAAO;YAeC,UAAU;IASxB,OAAO,CAAC,mBAAmB;YAOb,aAAa;IAY3B,OAAO,CAAC,wBAAwB;CASnC"}
@@ -8,6 +8,7 @@ Object.defineProperty(exports, "Clean", {
8
8
  return Clean;
9
9
  }
10
10
  });
11
+ const _install = require("@servicetitan/install");
11
12
  const _nodechild_process = require("node:child_process");
12
13
  const _nodefs = /*#__PURE__*/ _interop_require_default(require("node:fs"));
13
14
  const _nodepath = /*#__PURE__*/ _interop_require_default(require("node:path"));
@@ -31,20 +32,20 @@ function _ts_metadata(k, v) {
31
32
  }
32
33
  const exec = (0, _nodeutil.promisify)(_nodechild_process.exec);
33
34
  var CleanProcesses = /*#__PURE__*/ function(CleanProcesses) {
34
- CleanProcesses[CleanProcesses["ResetNx"] = 0] = "ResetNx";
35
+ CleanProcesses[CleanProcesses["CleanGitWorkingTree"] = 0] = "CleanGitWorkingTree";
35
36
  CleanProcesses[CleanProcesses["ClearJestCache"] = 1] = "ClearJestCache";
36
- CleanProcesses[CleanProcesses["ClearNpmCache"] = 2] = "ClearNpmCache";
37
- CleanProcesses[CleanProcesses["ClearNpxCache"] = 3] = "ClearNpxCache";
38
- CleanProcesses[CleanProcesses["CleanGitWorkingTree"] = 4] = "CleanGitWorkingTree";
37
+ CleanProcesses[CleanProcesses["ClearNpxCache"] = 2] = "ClearNpxCache";
38
+ CleanProcesses[CleanProcesses["ClearPackageManagerCache"] = 3] = "ClearPackageManagerCache";
39
+ CleanProcesses[CleanProcesses["ResetNx"] = 4] = "ResetNx";
39
40
  return CleanProcesses;
40
41
  }(CleanProcesses || {});
41
42
  class Clean extends _types.Command {
42
43
  async execute() {
43
44
  const processTree = new _processtree.ProcessTree();
44
- processTree.add(0, ()=>this.runCommand('npx nx reset'));
45
- processTree.add(1, ()=>this.runCommand('npx jest --clearCache'));
46
- processTree.add(2, ()=>this.runCommand('npm cache clear --force'));
47
- processTree.add(3, ()=>this.clearNpxCache());
45
+ processTree.add(4, ()=>this.runCommand('nx reset'));
46
+ processTree.add(1, ()=>this.runCommand('jest --clearCache'));
47
+ processTree.add(3, ()=>Promise.resolve(this.clearPackageManagerCache()));
48
+ processTree.add(2, ()=>this.clearNpxCache());
48
49
  await processTree.run();
49
50
  this.cleanGitWorkingTree();
50
51
  }
@@ -75,6 +76,15 @@ class Clean extends _types.Command {
75
76
  _utils.log.error(`Error clearing npx cache: ${error}`);
76
77
  }
77
78
  }
79
+ clearPackageManagerCache() {
80
+ try {
81
+ const packageManager = (0, _install.getPackageManager)();
82
+ _utils.log.info(`Clearing ${packageManager.command} cache`);
83
+ packageManager.clearCache();
84
+ } catch (error) {
85
+ _utils.log.error(`Error clearing package manager cache: ${error}`);
86
+ }
87
+ }
78
88
  }
79
89
  _ts_decorate([
80
90
  _utils.logErrors,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/clean.ts"],"sourcesContent":["import { exec as execAsync, execSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { promisify } from 'node:util';\nimport { log, logErrors } from '../../utils';\nimport { ProcessTree } from '../utils/process-tree';\nimport type { entry } from './registry/clean';\nimport { Command } from './types';\n\nconst exec = promisify(execAsync);\n\nenum CleanProcesses {\n ResetNx,\n ClearJestCache,\n ClearNpmCache,\n ClearNpxCache,\n CleanGitWorkingTree,\n}\n\nexport class Clean extends Command<typeof entry> {\n @logErrors\n async execute() {\n const processTree = new ProcessTree<typeof CleanProcesses>();\n\n processTree.add(CleanProcesses.ResetNx, () => this.runCommand('npx nx reset'));\n processTree.add(CleanProcesses.ClearJestCache, () =>\n this.runCommand('npx jest --clearCache')\n );\n processTree.add(CleanProcesses.ClearNpmCache, () =>\n this.runCommand('npm cache clear --force')\n );\n processTree.add(CleanProcesses.ClearNpxCache, () => this.clearNpxCache());\n\n await processTree.run();\n\n this.cleanGitWorkingTree();\n }\n\n private async runCommand(command: string) {\n try {\n log.info(`Running: ${command}`);\n await exec(command);\n } catch (error) {\n log.error(`Error running ${command}: ${error}`);\n }\n }\n\n private cleanGitWorkingTree() {\n // Use exec() to avoid error when startup dependencies are deleted while startup is running\n const command = 'git clean -fdX';\n log.info(`Running: ${command}`);\n exec(command);\n }\n\n private async clearNpxCache() {\n try {\n const npmCacheDir = execSync('npm config get cache').toString().trim();\n const npxCachePath = path.join(npmCacheDir, '_npx');\n\n log.info('Clearing npx cache');\n await fs.promises.rm(npxCachePath, { recursive: true, force: true });\n } catch (error) {\n log.error(`Error clearing npx cache: ${error}`);\n }\n }\n}\n"],"names":["Clean","exec","promisify","execAsync","CleanProcesses","Command","execute","processTree","ProcessTree","add","runCommand","clearNpxCache","run","cleanGitWorkingTree","command","log","info","error","npmCacheDir","execSync","toString","trim","npxCachePath","path","join","fs","promises","rm","recursive","force"],"mappings":";;;;+BAmBaA;;;eAAAA;;;mCAnB+B;+DAC7B;iEACE;0BACS;uBACK;6BACH;uBAEJ;;;;;;;;;;;;;;;AAExB,MAAMC,OAAOC,IAAAA,mBAAS,EAACC,uBAAS;AAEhC,IAAA,AAAKC,wCAAAA;;;;;;WAAAA;EAAAA;AAQE,MAAMJ,cAAcK,cAAO;IAC9B,MACMC,UAAU;QACZ,MAAMC,cAAc,IAAIC,wBAAW;QAEnCD,YAAYE,GAAG,IAAyB,IAAM,IAAI,CAACC,UAAU,CAAC;QAC9DH,YAAYE,GAAG,IAAgC,IAC3C,IAAI,CAACC,UAAU,CAAC;QAEpBH,YAAYE,GAAG,IAA+B,IAC1C,IAAI,CAACC,UAAU,CAAC;QAEpBH,YAAYE,GAAG,IAA+B,IAAM,IAAI,CAACE,aAAa;QAEtE,MAAMJ,YAAYK,GAAG;QAErB,IAAI,CAACC,mBAAmB;IAC5B;IAEA,MAAcH,WAAWI,OAAe,EAAE;QACtC,IAAI;YACAC,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEF,SAAS;YAC9B,MAAMb,KAAKa;QACf,EAAE,OAAOG,OAAO;YACZF,UAAG,CAACE,KAAK,CAAC,CAAC,cAAc,EAAEH,QAAQ,EAAE,EAAEG,OAAO;QAClD;IACJ;IAEQJ,sBAAsB;QAC1B,2FAA2F;QAC3F,MAAMC,UAAU;QAChBC,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEF,SAAS;QAC9Bb,KAAKa;IACT;IAEA,MAAcH,gBAAgB;QAC1B,IAAI;YACA,MAAMO,cAAcC,IAAAA,2BAAQ,EAAC,wBAAwBC,QAAQ,GAAGC,IAAI;YACpE,MAAMC,eAAeC,iBAAI,CAACC,IAAI,CAACN,aAAa;YAE5CH,UAAG,CAACC,IAAI,CAAC;YACT,MAAMS,eAAE,CAACC,QAAQ,CAACC,EAAE,CAACL,cAAc;gBAAEM,WAAW;gBAAMC,OAAO;YAAK;QACtE,EAAE,OAAOZ,OAAO;YACZF,UAAG,CAACE,KAAK,CAAC,CAAC,0BAA0B,EAAEA,OAAO;QAClD;IACJ;AACJ"}
1
+ {"version":3,"sources":["../../../src/cli/commands/clean.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport { exec as execAsync, execSync } from 'node:child_process';\nimport fs from 'node:fs';\nimport path from 'node:path';\nimport { promisify } from 'node:util';\nimport { log, logErrors } from '../../utils';\nimport { ProcessTree } from '../utils/process-tree';\nimport type { entry } from './registry/clean';\nimport { Command } from './types';\n\nconst exec = promisify(execAsync);\n\nenum CleanProcesses {\n CleanGitWorkingTree,\n ClearJestCache,\n ClearNpxCache,\n ClearPackageManagerCache,\n ResetNx,\n}\n\nexport class Clean extends Command<typeof entry> {\n @logErrors\n async execute() {\n const processTree = new ProcessTree<typeof CleanProcesses>();\n\n processTree.add(CleanProcesses.ResetNx, () => this.runCommand('nx reset'));\n processTree.add(CleanProcesses.ClearJestCache, () => this.runCommand('jest --clearCache'));\n processTree.add(CleanProcesses.ClearPackageManagerCache, () =>\n Promise.resolve(this.clearPackageManagerCache())\n );\n processTree.add(CleanProcesses.ClearNpxCache, () => this.clearNpxCache());\n\n await processTree.run();\n\n this.cleanGitWorkingTree();\n }\n\n private async runCommand(command: string) {\n try {\n log.info(`Running: ${command}`);\n await exec(command);\n } catch (error) {\n log.error(`Error running ${command}: ${error}`);\n }\n }\n\n private cleanGitWorkingTree() {\n // Use exec() to avoid error when startup dependencies are deleted while startup is running\n const command = 'git clean -fdX';\n log.info(`Running: ${command}`);\n exec(command);\n }\n\n private async clearNpxCache() {\n try {\n const npmCacheDir = execSync('npm config get cache').toString().trim();\n const npxCachePath = path.join(npmCacheDir, '_npx');\n\n log.info('Clearing npx cache');\n await fs.promises.rm(npxCachePath, { recursive: true, force: true });\n } catch (error) {\n log.error(`Error clearing npx cache: ${error}`);\n }\n }\n\n private clearPackageManagerCache() {\n try {\n const packageManager = getPackageManager();\n log.info(`Clearing ${packageManager.command} cache`);\n packageManager.clearCache();\n } catch (error) {\n log.error(`Error clearing package manager cache: ${error}`);\n }\n }\n}\n"],"names":["Clean","exec","promisify","execAsync","CleanProcesses","Command","execute","processTree","ProcessTree","add","runCommand","Promise","resolve","clearPackageManagerCache","clearNpxCache","run","cleanGitWorkingTree","command","log","info","error","npmCacheDir","execSync","toString","trim","npxCachePath","path","join","fs","promises","rm","recursive","force","packageManager","getPackageManager","clearCache"],"mappings":";;;;+BAoBaA;;;eAAAA;;;yBApBqB;mCACU;+DAC7B;iEACE;0BACS;uBACK;6BACH;uBAEJ;;;;;;;;;;;;;;;AAExB,MAAMC,OAAOC,IAAAA,mBAAS,EAACC,uBAAS;AAEhC,IAAA,AAAKC,wCAAAA;;;;;;WAAAA;EAAAA;AAQE,MAAMJ,cAAcK,cAAO;IAC9B,MACMC,UAAU;QACZ,MAAMC,cAAc,IAAIC,wBAAW;QAEnCD,YAAYE,GAAG,IAAyB,IAAM,IAAI,CAACC,UAAU,CAAC;QAC9DH,YAAYE,GAAG,IAAgC,IAAM,IAAI,CAACC,UAAU,CAAC;QACrEH,YAAYE,GAAG,IAA0C,IACrDE,QAAQC,OAAO,CAAC,IAAI,CAACC,wBAAwB;QAEjDN,YAAYE,GAAG,IAA+B,IAAM,IAAI,CAACK,aAAa;QAEtE,MAAMP,YAAYQ,GAAG;QAErB,IAAI,CAACC,mBAAmB;IAC5B;IAEA,MAAcN,WAAWO,OAAe,EAAE;QACtC,IAAI;YACAC,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEF,SAAS;YAC9B,MAAMhB,KAAKgB;QACf,EAAE,OAAOG,OAAO;YACZF,UAAG,CAACE,KAAK,CAAC,CAAC,cAAc,EAAEH,QAAQ,EAAE,EAAEG,OAAO;QAClD;IACJ;IAEQJ,sBAAsB;QAC1B,2FAA2F;QAC3F,MAAMC,UAAU;QAChBC,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEF,SAAS;QAC9BhB,KAAKgB;IACT;IAEA,MAAcH,gBAAgB;QAC1B,IAAI;YACA,MAAMO,cAAcC,IAAAA,2BAAQ,EAAC,wBAAwBC,QAAQ,GAAGC,IAAI;YACpE,MAAMC,eAAeC,iBAAI,CAACC,IAAI,CAACN,aAAa;YAE5CH,UAAG,CAACC,IAAI,CAAC;YACT,MAAMS,eAAE,CAACC,QAAQ,CAACC,EAAE,CAACL,cAAc;gBAAEM,WAAW;gBAAMC,OAAO;YAAK;QACtE,EAAE,OAAOZ,OAAO;YACZF,UAAG,CAACE,KAAK,CAAC,CAAC,0BAA0B,EAAEA,OAAO;QAClD;IACJ;IAEQP,2BAA2B;QAC/B,IAAI;YACA,MAAMoB,iBAAiBC,IAAAA,0BAAiB;YACxChB,UAAG,CAACC,IAAI,CAAC,CAAC,SAAS,EAAEc,eAAehB,OAAO,CAAC,MAAM,CAAC;YACnDgB,eAAeE,UAAU;QAC7B,EAAE,OAAOf,OAAO;YACZF,UAAG,CAACE,KAAK,CAAC,CAAC,sCAAsC,EAAEA,OAAO;QAC9D;IACJ;AACJ"}
@@ -31,7 +31,7 @@ class Install extends _types.Command {
31
31
  this.args.token === true ? '--token' : '',
32
32
  this.args.token === false ? '--no-token' : ''
33
33
  ].filter((option)=>!!option);
34
- const command = `npx @servicetitan/install ${options.join(' ')}`.trim();
34
+ const command = `npx --yes @servicetitan/install ${options.join(' ')}`.trim();
35
35
  _utils.log.debug('install', command);
36
36
  (0, _child_process.execSync)(command, {
37
37
  stdio: 'inherit'
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { getStartupVersion, 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 @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":";;;;+BAKaA;;;eAAAA;;;+BALY;uBACyB;uBAE1B;;;;;;;;;;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,wBAAiB,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,0BAA0B,EAAEL,QAAQM,IAAI,CAAC,MAAM,CAACC,IAAI;QAErEV,UAAG,CAACW,KAAK,CAAC,WAAWH;QAErBI,IAAAA,uBAAQ,EAACJ,SAAS;YAAEK,OAAO;QAAU;QAErC,OAAOC,QAAQC,OAAO,IAAI,4DAA4D;IAC1F;AACJ"}
1
+ {"version":3,"sources":["../../../src/cli/commands/install.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { getStartupVersion, 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":";;;;+BAKaA;;;eAAAA;;;+BALY;uBACyB;uBAE1B;;;;;;;;;;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,wBAAiB,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"}
@@ -71,8 +71,7 @@ class KendoUILicense extends _types.Command {
71
71
  } : undefined;
72
72
  _utils.log.info(env ? 'Activating Kendo UI with embedded license...' : `Activating Kendo UI with license from environment...`);
73
73
  try {
74
- await (0, _execa.default)('npx', [
75
- 'kendo-ui-license',
74
+ await (0, _execa.default)('kendo-ui-license', [
76
75
  'activate',
77
76
  '--no-install'
78
77
  ], {
@@ -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('npx', ['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,OAAO;gBAAC;gBAAoB;gBAAY;aAAe,EAAE;gBACjEL;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"}
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"}
@@ -9,7 +9,7 @@ Object.defineProperty(exports, "PreparePackage", {
9
9
  }
10
10
  });
11
11
  const _utils = require("../../utils");
12
- const _utils1 = require("../utils");
12
+ const _copyfiles = require("../utils/copy-files");
13
13
  const _types = require("./types");
14
14
  function _ts_decorate(decorators, target, key, desc) {
15
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
@@ -22,7 +22,7 @@ function _ts_metadata(k, v) {
22
22
  }
23
23
  class PreparePackage extends _types.Command {
24
24
  execute() {
25
- return (0, _utils1.copyFiles)({
25
+ return (0, _copyfiles.copyFiles)({
26
26
  watch: this.args.watch
27
27
  });
28
28
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/prepare-package.ts"],"sourcesContent":["import { logErrors } from '../../utils';\nimport { copyFiles } from '../utils';\nimport type { entry } from './registry/prepare-package';\nimport { Command } from './types';\n\nexport class PreparePackage extends Command<typeof entry> {\n @logErrors\n execute() {\n return copyFiles({ watch: this.args.watch });\n }\n}\n"],"names":["PreparePackage","Command","execute","copyFiles","watch","args"],"mappings":";;;;+BAKaA;;;eAAAA;;;uBALa;wBACA;uBAEF;;;;;;;;;;AAEjB,MAAMA,uBAAuBC,cAAO;IAEvCC,UAAU;QACN,OAAOC,IAAAA,iBAAS,EAAC;YAAEC,OAAO,IAAI,CAACC,IAAI,CAACD,KAAK;QAAC;IAC9C;AACJ"}
1
+ {"version":3,"sources":["../../../src/cli/commands/prepare-package.ts"],"sourcesContent":["import { logErrors } from '../../utils';\nimport { copyFiles } from '../utils/copy-files';\nimport type { entry } from './registry/prepare-package';\nimport { Command } from './types';\n\nexport class PreparePackage extends Command<typeof entry> {\n @logErrors\n execute() {\n return copyFiles({ watch: this.args.watch });\n }\n}\n"],"names":["PreparePackage","Command","execute","copyFiles","watch","args"],"mappings":";;;;+BAKaA;;;eAAAA;;;uBALa;2BACA;uBAEF;;;;;;;;;;AAEjB,MAAMA,uBAAuBC,cAAO;IAEvCC,UAAU;QACN,OAAOC,IAAAA,oBAAS,EAAC;YAAEC,OAAO,IAAI,CAACC,IAAI,CAACD,KAAK;QAAC;IAC9C;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/review/review.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAuBnC,qBAAa,MAAO,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAGI,OAAO;IAMb,OAAO,CAAC,aAAa;IAuBrB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAyCjB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,gBAAgB;CAI3B"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/review/review.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAuBnC,qBAAa,MAAO,SAAQ,OAAO,CAAC,OAAO,KAAK,CAAC;IAC7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAGI,OAAO;IAMb,OAAO,CAAC,aAAa;IA2BrB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,UAAU;IAMlB,OAAO,CAAC,SAAS;IAyCjB,OAAO,CAAC,WAAW;IAUnB,OAAO,CAAC,YAAY;IAoBpB,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,OAAO;IASf,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,OAAO;IAKf,OAAO,CAAC,gBAAgB;CAI3B"}
@@ -8,8 +8,8 @@ Object.defineProperty(exports, "Review", {
8
8
  return Review;
9
9
  }
10
10
  });
11
+ const _install = require("@servicetitan/install");
11
12
  const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
12
- const _child_process = require("child_process");
13
13
  const _terminallink = /*#__PURE__*/ _interop_require_default(require("terminal-link"));
14
14
  const _utils = require("../../../utils");
15
15
  const _types = require("../types");
@@ -55,12 +55,11 @@ class Review extends _types.Command {
55
55
  if (!(root === null || root === void 0 ? void 0 : root.workspaces)) {
56
56
  throw new Error('this command must be run from the workspace root directory');
57
57
  }
58
- const packageLock = (0, _utils.readJsonSafe)('package-lock.json');
59
- if (!(packageLock === null || packageLock === void 0 ? void 0 : packageLock.packages)) {
60
- throw new Error('this command must be run with valid package-lock.json');
58
+ const packageManager = (0, _install.getPackageManager)();
59
+ if (!packageManager.hasValidLockFile()) {
60
+ throw new Error(`missing or invalid lock file: ${packageManager.lockFileName}`);
61
61
  }
62
62
  root.location = '.'; // identifies the root package.json for rules that care
63
- packageLock.location = './package-lock.json';
64
63
  const config = (0, _utils.getReviewConfiguration)();
65
64
  const packages = [
66
65
  root,
@@ -72,7 +71,7 @@ class Review extends _types.Command {
72
71
  return {
73
72
  config,
74
73
  dependencies,
75
- packageLock,
74
+ packageManager,
76
75
  packages
77
76
  };
78
77
  }
@@ -113,7 +112,9 @@ class Review extends _types.Command {
113
112
  totalFixed += 1;
114
113
  }
115
114
  });
116
- (0, _child_process.execSync)('npx @servicetitan/install --fix --quiet', {
115
+ project.packageManager.installPackages({
116
+ fix: true
117
+ }, {
117
118
  stdio: 'inherit'
118
119
  });
119
120
  project = this.createProject();
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/commands/review/review.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport terminalLink from 'terminal-link';\nimport {\n findPackages,\n getReviewConfiguration,\n log,\n logErrors,\n readJsonSafe,\n toArray,\n} from '../../../utils';\nimport type { entry } from '../registry/review';\nimport { Command } from '../types';\nimport { rules } from './rules';\nimport {\n ErrorSeverity,\n FixCategory,\n Level,\n Package,\n PackageError,\n PackageRule,\n Project,\n RuleConfiguration,\n} from './types';\nimport {\n collateDependencies,\n ErrorSummary,\n formatLocation,\n indent,\n pluralize,\n summarize,\n} from './utils';\n\nconst collator = new Intl.Collator();\n\nexport class Review extends Command<typeof entry> {\n private readonly severityToLabel: Record<ErrorSeverity, string> = {\n [ErrorSeverity.warning]: chalk.yellow('warning'),\n [ErrorSeverity.error]: chalk.red('error'),\n };\n\n private readonly levelToSeverity: Partial<Record<Level, ErrorSeverity>> = {\n warn: ErrorSeverity.warning,\n error: ErrorSeverity.error,\n };\n\n @logErrors\n async execute() {\n const errors = this.args.fix ? this.fixErrors() : this.findErrors();\n const summary = this.reportErrors(errors);\n return summary.error > 0 ? Promise.reject() : Promise.resolve();\n }\n\n private createProject(): Project {\n const root = readJsonSafe('package.json');\n if (!root?.workspaces) {\n throw new Error('this command must be run from the workspace root directory');\n }\n\n const packageLock = readJsonSafe<Project['packageLock']>('package-lock.json');\n if (!packageLock?.packages) {\n throw new Error('this command must be run with valid package-lock.json');\n }\n\n root.location = '.'; // identifies the root package.json for rules that care\n packageLock.location = './package-lock.json';\n\n const config = getReviewConfiguration();\n const packages: Package[] = [root, ...findPackages()];\n const dependencies = sortByKey(collateDependencies(packages));\n this.debug('review:packages', packages);\n this.debug('review:dependencies', dependencies);\n\n return { config, dependencies, packageLock, packages };\n }\n\n private debug(namespace: string, data: any) {\n /* istanbul ignore next: debug only */\n log.debug(namespace, () => data && JSON.stringify(data, null, 2));\n }\n\n private findErrors(project?: Project) {\n const errors = this.runRules(project ?? this.createProject());\n this.debug('review:errors', errors);\n return errors;\n }\n\n private fixErrors() {\n const rulesById = rules.reduce<Record<string, PackageRule>>((result, rule) => {\n result[rule.id] = rule;\n return result;\n }, {});\n\n let project = this.createProject();\n let errors = this.findErrors(project);\n let totalFixed = 0;\n\n for (const category of [FixCategory.isolated, FixCategory.normal, FixCategory.lockFile]) {\n const fixable = errors.filter(({ fixable }) => fixable === category);\n if (fixable.length === 0) {\n continue;\n }\n\n fixable.forEach(error => {\n const rule = rulesById[error.id];\n if (rule.fix) {\n log.text(`Fixing ${this.formatError({ ...error, details: '', location: '' })}`);\n rule.fix(error, project);\n totalFixed += 1;\n }\n });\n\n execSync('npx @servicetitan/install --fix --quiet', { stdio: 'inherit' });\n project = this.createProject();\n errors = this.findErrors(project);\n }\n\n if (totalFixed > 0) {\n let summary = `Fixed ${pluralize(totalFixed, 'problem')}`;\n if (errors.length) {\n summary = `${summary}, ${pluralize(errors.length, 'problem remains', 'problems remain')}:\\n`;\n }\n log.info(summary);\n }\n\n return errors;\n }\n\n private formatError(error: PackageError) {\n const { location, message, severity = ErrorSeverity.error } = error;\n\n const label = indent(this.severityToLabel[severity], location ? 1 : 0);\n const details = error.details ? `\\n${indent(error.details, location ? 2 : 1)}` : '';\n const link = this.getLink(error);\n\n return `${label} ${message} ${link}${details}`;\n }\n\n private reportErrors(errors: PackageError[]) {\n let prevLocation: string | undefined;\n\n errors.forEach((error, index) => {\n const { location } = error;\n if (index > 0 && (!location || location !== prevLocation)) {\n log.text('');\n }\n if (location && location !== prevLocation) {\n log.text(chalk.underline(formatLocation(location)));\n prevLocation = location;\n }\n log.text(this.formatError(error));\n });\n\n const summary = summarize(errors);\n this.reportSummary(summary);\n return summary;\n }\n\n private reportSummary({ error, warning, fixable }: ErrorSummary) {\n if (error + warning === 0) {\n return log.success('0 problems');\n }\n\n log.text('');\n\n const severity = error ? 'error' : 'warning';\n log[severity](\n `${pluralize(error + warning, 'problem')} (${pluralize(error, 'error')}, ${pluralize(warning, 'warning')})`\n );\n\n if (fixable.error + fixable.warning > 0) {\n log[severity](\n `${pluralize(fixable.error, 'error')} and ${pluralize(fixable.warning, 'warning')} potentially fixable with --fix option`\n );\n }\n }\n\n private runRules(project: Project): PackageError[] {\n const selected = this.getSelectedRules();\n return rules\n .filter(({ id }) => !selected || selected.has(id))\n .flatMap(rule => this.runRule(rule, project))\n .filter(error => !!error)\n .sort(compareError);\n }\n\n private runRule(rule: PackageRule, project: Project) {\n const level = this.getLevel(project.config.rules?.[rule.id]);\n if (level === 'off') {\n return;\n }\n\n return this.transform(rule.run(project), level);\n }\n\n private transform(errors?: PackageError | PackageError[], level?: 'error' | 'warn') {\n const severity = level && this.levelToSeverity[level];\n return errors && severity ? toArray(errors).map(error => ({ ...error, severity })) : errors;\n }\n\n private getLevel(config?: RuleConfiguration) {\n if (typeof config === 'string') {\n return config;\n }\n if (Array.isArray(config) && typeof config[0] === 'string') {\n return config[0];\n }\n }\n\n private getLink({ id }: PackageError) {\n const url = `https://docs.st.dev/docs/frontend/uikit/startup/review#${id}`;\n return chalk.dim(terminalLink(id, url));\n }\n\n private getSelectedRules() {\n const rule = this.args.rule;\n return rule ? new Set(rule.filter(id => !!id)) : undefined;\n }\n}\n\nfunction compareError(\n { location: locationA = '', severity: severityA = ErrorSeverity.error }: PackageError,\n { location: locationB = '', severity: severityB = ErrorSeverity.error }: PackageError\n) {\n return locationA === locationB ? severityA - severityB : collator.compare(locationA, locationB);\n}\n\nfunction sortByKey<T>(obj: Record<string, T>): Record<string, T> {\n return Object.fromEntries(Object.entries(obj).sort(([a], [b]) => collator.compare(a, b)));\n}\n"],"names":["Review","collator","Intl","Collator","Command","execute","errors","args","fix","fixErrors","findErrors","summary","reportErrors","error","Promise","reject","resolve","createProject","root","readJsonSafe","workspaces","Error","packageLock","packages","location","config","getReviewConfiguration","findPackages","dependencies","sortByKey","collateDependencies","debug","namespace","data","log","JSON","stringify","project","runRules","rulesById","rules","reduce","result","rule","id","totalFixed","category","FixCategory","isolated","normal","lockFile","fixable","filter","length","forEach","text","formatError","details","execSync","stdio","pluralize","info","message","severity","ErrorSeverity","label","indent","severityToLabel","link","getLink","prevLocation","index","chalk","underline","formatLocation","summarize","reportSummary","warning","success","selected","getSelectedRules","has","flatMap","runRule","sort","compareError","level","getLevel","transform","run","levelToSeverity","toArray","map","Array","isArray","url","dim","terminalLink","Set","undefined","yellow","red","warn","locationA","severityA","locationB","severityB","compare","obj","Object","fromEntries","entries","a","b"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/cli/commands/review/review.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport chalk from 'chalk';\nimport terminalLink from 'terminal-link';\nimport {\n findPackages,\n getReviewConfiguration,\n log,\n logErrors,\n readJsonSafe,\n toArray,\n} from '../../../utils';\nimport type { entry } from '../registry/review';\nimport { Command } from '../types';\nimport { rules } from './rules';\nimport {\n ErrorSeverity,\n FixCategory,\n Level,\n Package,\n PackageError,\n PackageRule,\n Project,\n RuleConfiguration,\n} from './types';\nimport {\n collateDependencies,\n ErrorSummary,\n formatLocation,\n indent,\n pluralize,\n summarize,\n} from './utils';\n\nconst collator = new Intl.Collator();\n\nexport class Review extends Command<typeof entry> {\n private readonly severityToLabel: Record<ErrorSeverity, string> = {\n [ErrorSeverity.warning]: chalk.yellow('warning'),\n [ErrorSeverity.error]: chalk.red('error'),\n };\n\n private readonly levelToSeverity: Partial<Record<Level, ErrorSeverity>> = {\n warn: ErrorSeverity.warning,\n error: ErrorSeverity.error,\n };\n\n @logErrors\n async execute() {\n const errors = this.args.fix ? this.fixErrors() : this.findErrors();\n const summary = this.reportErrors(errors);\n return summary.error > 0 ? Promise.reject() : Promise.resolve();\n }\n\n private createProject(): Project {\n const root = readJsonSafe('package.json');\n if (!root?.workspaces) {\n throw new Error('this command must be run from the workspace root directory');\n }\n\n const packageManager = getPackageManager();\n if (!packageManager.hasValidLockFile()) {\n throw new Error(`missing or invalid lock file: ${packageManager.lockFileName}`);\n }\n\n root.location = '.'; // identifies the root package.json for rules that care\n\n const config = getReviewConfiguration();\n const packages: Package[] = [root, ...findPackages()];\n const dependencies = sortByKey(collateDependencies(packages));\n this.debug('review:packages', packages);\n this.debug('review:dependencies', dependencies);\n\n return {\n config,\n dependencies,\n packageManager,\n packages,\n };\n }\n\n private debug(namespace: string, data: any) {\n /* istanbul ignore next: debug only */\n log.debug(namespace, () => data && JSON.stringify(data, null, 2));\n }\n\n private findErrors(project?: Project) {\n const errors = this.runRules(project ?? this.createProject());\n this.debug('review:errors', errors);\n return errors;\n }\n\n private fixErrors() {\n const rulesById = rules.reduce<Record<string, PackageRule>>((result, rule) => {\n result[rule.id] = rule;\n return result;\n }, {});\n\n let project = this.createProject();\n let errors = this.findErrors(project);\n let totalFixed = 0;\n\n for (const category of [FixCategory.isolated, FixCategory.normal, FixCategory.lockFile]) {\n const fixable = errors.filter(({ fixable }) => fixable === category);\n if (fixable.length === 0) {\n continue;\n }\n\n fixable.forEach(error => {\n const rule = rulesById[error.id];\n if (rule.fix) {\n log.text(`Fixing ${this.formatError({ ...error, details: '', location: '' })}`);\n rule.fix(error, project);\n totalFixed += 1;\n }\n });\n\n project.packageManager.installPackages({ fix: true }, { stdio: 'inherit' });\n project = this.createProject();\n errors = this.findErrors(project);\n }\n\n if (totalFixed > 0) {\n let summary = `Fixed ${pluralize(totalFixed, 'problem')}`;\n if (errors.length) {\n summary = `${summary}, ${pluralize(errors.length, 'problem remains', 'problems remain')}:\\n`;\n }\n log.info(summary);\n }\n\n return errors;\n }\n\n private formatError(error: PackageError) {\n const { location, message, severity = ErrorSeverity.error } = error;\n\n const label = indent(this.severityToLabel[severity], location ? 1 : 0);\n const details = error.details ? `\\n${indent(error.details, location ? 2 : 1)}` : '';\n const link = this.getLink(error);\n\n return `${label} ${message} ${link}${details}`;\n }\n\n private reportErrors(errors: PackageError[]) {\n let prevLocation: string | undefined;\n\n errors.forEach((error, index) => {\n const { location } = error;\n if (index > 0 && (!location || location !== prevLocation)) {\n log.text('');\n }\n if (location && location !== prevLocation) {\n log.text(chalk.underline(formatLocation(location)));\n prevLocation = location;\n }\n log.text(this.formatError(error));\n });\n\n const summary = summarize(errors);\n this.reportSummary(summary);\n return summary;\n }\n\n private reportSummary({ error, warning, fixable }: ErrorSummary) {\n if (error + warning === 0) {\n return log.success('0 problems');\n }\n\n log.text('');\n\n const severity = error ? 'error' : 'warning';\n log[severity](\n `${pluralize(error + warning, 'problem')} (${pluralize(error, 'error')}, ${pluralize(warning, 'warning')})`\n );\n\n if (fixable.error + fixable.warning > 0) {\n log[severity](\n `${pluralize(fixable.error, 'error')} and ${pluralize(fixable.warning, 'warning')} potentially fixable with --fix option`\n );\n }\n }\n\n private runRules(project: Project): PackageError[] {\n const selected = this.getSelectedRules();\n return rules\n .filter(({ id }) => !selected || selected.has(id))\n .flatMap(rule => this.runRule(rule, project))\n .filter(error => !!error)\n .sort(compareError);\n }\n\n private runRule(rule: PackageRule, project: Project) {\n const level = this.getLevel(project.config.rules?.[rule.id]);\n if (level === 'off') {\n return;\n }\n\n return this.transform(rule.run(project), level);\n }\n\n private transform(errors?: PackageError | PackageError[], level?: 'error' | 'warn') {\n const severity = level && this.levelToSeverity[level];\n return errors && severity ? toArray(errors).map(error => ({ ...error, severity })) : errors;\n }\n\n private getLevel(config?: RuleConfiguration) {\n if (typeof config === 'string') {\n return config;\n }\n if (Array.isArray(config) && typeof config[0] === 'string') {\n return config[0];\n }\n }\n\n private getLink({ id }: PackageError) {\n const url = `https://docs.st.dev/docs/frontend/uikit/startup/review#${id}`;\n return chalk.dim(terminalLink(id, url));\n }\n\n private getSelectedRules() {\n const rule = this.args.rule;\n return rule ? new Set(rule.filter(id => !!id)) : undefined;\n }\n}\n\nfunction compareError(\n { location: locationA = '', severity: severityA = ErrorSeverity.error }: PackageError,\n { location: locationB = '', severity: severityB = ErrorSeverity.error }: PackageError\n) {\n return locationA === locationB ? severityA - severityB : collator.compare(locationA, locationB);\n}\n\nfunction sortByKey<T>(obj: Record<string, T>): Record<string, T> {\n return Object.fromEntries(Object.entries(obj).sort(([a], [b]) => collator.compare(a, b)));\n}\n"],"names":["Review","collator","Intl","Collator","Command","execute","errors","args","fix","fixErrors","findErrors","summary","reportErrors","error","Promise","reject","resolve","createProject","root","readJsonSafe","workspaces","Error","packageManager","getPackageManager","hasValidLockFile","lockFileName","location","config","getReviewConfiguration","packages","findPackages","dependencies","sortByKey","collateDependencies","debug","namespace","data","log","JSON","stringify","project","runRules","rulesById","rules","reduce","result","rule","id","totalFixed","category","FixCategory","isolated","normal","lockFile","fixable","filter","length","forEach","text","formatError","details","installPackages","stdio","pluralize","info","message","severity","ErrorSeverity","label","indent","severityToLabel","link","getLink","prevLocation","index","chalk","underline","formatLocation","summarize","reportSummary","warning","success","selected","getSelectedRules","has","flatMap","runRule","sort","compareError","level","getLevel","transform","run","levelToSeverity","toArray","map","Array","isArray","url","dim","terminalLink","Set","undefined","yellow","red","warn","locationA","severityA","locationB","severityB","compare","obj","Object","fromEntries","entries","a","b"],"mappings":"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"}
@@ -15,7 +15,6 @@ export declare class RequireCompatibleLaunchDarklySdk implements PackageRule {
15
15
  private createError;
16
16
  private formatDetails;
17
17
  private getActualJsClientSdkVersion;
18
- private getResolvedDependency;
19
18
  private getTargetJsClientSdkVersion;
20
19
  }
21
20
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"require-compatible-launch-darkly-sdk.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/review/rules/require-compatible-launch-darkly-sdk.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAMpF,UAAU,SAAS;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAEzC,qBAAa,gCAAiC,YAAW,WAAW;;IAGhE,IAAI,EAAE,WAEL;IAED,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,EAAE,GAAG,SAAS;IAiB1D,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;IAsBzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAkB3B;IAEF,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,qBAAqB;IAiB7B,OAAO,CAAC,2BAA2B;CAQtC"}
1
+ {"version":3,"file":"require-compatible-launch-darkly-sdk.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/review/rules/require-compatible-launch-darkly-sdk.ts"],"names":[],"mappings":"AAGA,OAAO,EAAwB,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAMpF,UAAU,SAAS;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACzB;AAED,KAAK,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;AAEzC,qBAAa,gCAAiC,YAAW,WAAW;;IAGhE,IAAI,EAAE,WAEL;IAED,GAAG,CAAC,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,SAAS,EAAE,GAAG,SAAS;IAiB1D,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO;IAsBzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAkB3B;IAEF,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAIrB,OAAO,CAAC,2BAA2B;IAOnC,OAAO,CAAC,2BAA2B;CAOtC"}