@servicetitan/startup 32.2.0 → 32.3.1

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 (244) hide show
  1. package/dist/cli/commands/build.d.ts +36 -7
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +35 -10
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/bundle-package.d.ts +9 -10
  6. package/dist/cli/commands/bundle-package.d.ts.map +1 -1
  7. package/dist/cli/commands/bundle-package.js +6 -22
  8. package/dist/cli/commands/bundle-package.js.map +1 -1
  9. package/dist/cli/commands/clean.d.ts +2 -2
  10. package/dist/cli/commands/clean.d.ts.map +1 -1
  11. package/dist/cli/commands/clean.js +16 -4
  12. package/dist/cli/commands/clean.js.map +1 -1
  13. package/dist/cli/commands/convert-eslint-config.d.ts +2 -2
  14. package/dist/cli/commands/convert-eslint-config.d.ts.map +1 -1
  15. package/dist/cli/commands/convert-eslint-config.js +3 -4
  16. package/dist/cli/commands/convert-eslint-config.js.map +1 -1
  17. package/dist/cli/commands/eslint.d.ts +3 -5
  18. package/dist/cli/commands/eslint.d.ts.map +1 -1
  19. package/dist/cli/commands/eslint.js +2 -18
  20. package/dist/cli/commands/eslint.js.map +1 -1
  21. package/dist/cli/commands/get-command.d.ts.map +1 -1
  22. package/dist/cli/commands/get-command.js +2 -0
  23. package/dist/cli/commands/get-command.js.map +1 -1
  24. package/dist/cli/commands/index.d.ts +0 -1
  25. package/dist/cli/commands/index.d.ts.map +1 -1
  26. package/dist/cli/commands/index.js +0 -1
  27. package/dist/cli/commands/index.js.map +1 -1
  28. package/dist/cli/commands/init.d.ts +10 -6
  29. package/dist/cli/commands/init.d.ts.map +1 -1
  30. package/dist/cli/commands/init.js +9 -8
  31. package/dist/cli/commands/init.js.map +1 -1
  32. package/dist/cli/commands/install.d.ts +21 -7
  33. package/dist/cli/commands/install.d.ts.map +1 -1
  34. package/dist/cli/commands/install.js +33 -11
  35. package/dist/cli/commands/install.js.map +1 -1
  36. package/dist/cli/commands/kendo-ui-license.d.ts +3 -3
  37. package/dist/cli/commands/kendo-ui-license.d.ts.map +1 -1
  38. package/dist/cli/commands/kendo-ui-license.js +17 -5
  39. package/dist/cli/commands/kendo-ui-license.js.map +1 -1
  40. package/dist/cli/commands/lint.d.ts +31 -12
  41. package/dist/cli/commands/lint.d.ts.map +1 -1
  42. package/dist/cli/commands/lint.js +34 -13
  43. package/dist/cli/commands/lint.js.map +1 -1
  44. package/dist/cli/commands/mfe-list.d.ts +46 -0
  45. package/dist/cli/commands/mfe-list.d.ts.map +1 -0
  46. package/dist/cli/commands/mfe-list.js +200 -0
  47. package/dist/cli/commands/mfe-list.js.map +1 -0
  48. package/dist/cli/commands/mfe-package-clean.d.ts +29 -5
  49. package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -1
  50. package/dist/cli/commands/mfe-package-clean.js +28 -5
  51. package/dist/cli/commands/mfe-package-clean.js.map +1 -1
  52. package/dist/cli/commands/mfe-package-publish.d.ts +37 -5
  53. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
  54. package/dist/cli/commands/mfe-package-publish.js +36 -5
  55. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  56. package/dist/cli/commands/mfe-publish.d.ts +17 -4
  57. package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
  58. package/dist/cli/commands/mfe-publish.js +37 -7
  59. package/dist/cli/commands/mfe-publish.js.map +1 -1
  60. package/dist/cli/commands/prepare-package.d.ts +3 -5
  61. package/dist/cli/commands/prepare-package.d.ts.map +1 -1
  62. package/dist/cli/commands/prepare-package.js +2 -18
  63. package/dist/cli/commands/prepare-package.js.map +1 -1
  64. package/dist/cli/commands/review/review.d.ts +14 -6
  65. package/dist/cli/commands/review/review.d.ts.map +1 -1
  66. package/dist/cli/commands/review/review.js +27 -23
  67. package/dist/cli/commands/review/review.js.map +1 -1
  68. package/dist/cli/commands/run-task.d.ts +10 -6
  69. package/dist/cli/commands/run-task.d.ts.map +1 -1
  70. package/dist/cli/commands/run-task.js +16 -13
  71. package/dist/cli/commands/run-task.js.map +1 -1
  72. package/dist/cli/commands/start.d.ts +28 -7
  73. package/dist/cli/commands/start.d.ts.map +1 -1
  74. package/dist/cli/commands/start.js +27 -10
  75. package/dist/cli/commands/start.js.map +1 -1
  76. package/dist/cli/commands/styles-check.d.ts +2 -2
  77. package/dist/cli/commands/styles-check.d.ts.map +1 -1
  78. package/dist/cli/commands/styles-check.js +2 -1
  79. package/dist/cli/commands/styles-check.js.map +1 -1
  80. package/dist/cli/commands/test/tests.d.ts +14 -5
  81. package/dist/cli/commands/test/tests.d.ts.map +1 -1
  82. package/dist/cli/commands/test/tests.js +26 -13
  83. package/dist/cli/commands/test/tests.js.map +1 -1
  84. package/dist/cli/commands/types.d.ts +13 -4
  85. package/dist/cli/commands/types.d.ts.map +1 -1
  86. package/dist/cli/commands/types.js +28 -0
  87. package/dist/cli/commands/types.js.map +1 -1
  88. package/dist/cli/commands/upload-sourcemaps.d.ts +3 -5
  89. package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -1
  90. package/dist/cli/commands/upload-sourcemaps.js +5 -20
  91. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  92. package/dist/cli/index.js +47 -39
  93. package/dist/cli/index.js.map +1 -1
  94. package/dist/cli/tasks/swc-compile-package.d.ts +2 -2
  95. package/dist/cli/tasks/swc-compile-package.d.ts.map +1 -1
  96. package/dist/cli/tasks/swc-compile-package.js.map +1 -1
  97. package/dist/cli/tasks/tsc-compile-package.d.ts +2 -2
  98. package/dist/cli/tasks/tsc-compile-package.d.ts.map +1 -1
  99. package/dist/cli/tasks/tsc-compile-package.js +1 -1
  100. package/dist/cli/tasks/tsc-compile-package.js.map +1 -1
  101. package/dist/cli/tasks/tsc-compile.d.ts +2 -2
  102. package/dist/cli/tasks/tsc-compile.d.ts.map +1 -1
  103. package/dist/cli/tasks/tsc-compile.js.map +1 -1
  104. package/dist/cli/utils/bundle.js +1 -1
  105. package/dist/cli/utils/bundle.js.map +1 -1
  106. package/dist/cli/utils/cli-npm.d.ts +14 -0
  107. package/dist/cli/utils/cli-npm.d.ts.map +1 -1
  108. package/dist/cli/utils/cli-npm.js +44 -0
  109. package/dist/cli/utils/cli-npm.js.map +1 -1
  110. package/dist/cli/utils/cli-os.d.ts +2 -2
  111. package/dist/cli/utils/cli-os.d.ts.map +1 -1
  112. package/dist/cli/utils/cli-os.js +13 -9
  113. package/dist/cli/utils/cli-os.js.map +1 -1
  114. package/dist/cli/utils/eslint.d.ts +2 -1
  115. package/dist/cli/utils/eslint.d.ts.map +1 -1
  116. package/dist/cli/utils/eslint.js.map +1 -1
  117. package/dist/cli/utils/index.d.ts +1 -0
  118. package/dist/cli/utils/index.d.ts.map +1 -1
  119. package/dist/cli/utils/index.js +1 -0
  120. package/dist/cli/utils/index.js.map +1 -1
  121. package/dist/cli/utils/is-tty.d.ts +2 -0
  122. package/dist/cli/utils/is-tty.d.ts.map +1 -0
  123. package/dist/cli/utils/is-tty.js +15 -0
  124. package/dist/cli/utils/is-tty.js.map +1 -0
  125. package/dist/cli/utils/lerna-exec.d.ts.map +1 -1
  126. package/dist/cli/utils/lerna-exec.js +2 -0
  127. package/dist/cli/utils/lerna-exec.js.map +1 -1
  128. package/dist/cli/utils/maybe-create-git-folder.d.ts +2 -3
  129. package/dist/cli/utils/maybe-create-git-folder.d.ts.map +1 -1
  130. package/dist/cli/utils/maybe-create-git-folder.js +4 -9
  131. package/dist/cli/utils/maybe-create-git-folder.js.map +1 -1
  132. package/dist/cli/utils/process-tree.d.ts.map +1 -1
  133. package/dist/cli/utils/process-tree.js +2 -2
  134. package/dist/cli/utils/process-tree.js.map +1 -1
  135. package/dist/cli/utils/set-node-options.d.ts.map +1 -1
  136. package/dist/cli/utils/set-node-options.js +2 -1
  137. package/dist/cli/utils/set-node-options.js.map +1 -1
  138. package/dist/utils/find-packages.d.ts +1 -0
  139. package/dist/utils/find-packages.d.ts.map +1 -1
  140. package/dist/utils/find-packages.js.map +1 -1
  141. package/dist/utils/format-relative-date.d.ts +2 -0
  142. package/dist/utils/format-relative-date.d.ts.map +1 -0
  143. package/dist/utils/format-relative-date.js +60 -0
  144. package/dist/utils/format-relative-date.js.map +1 -0
  145. package/dist/utils/get-configuration.d.ts +1 -0
  146. package/dist/utils/get-configuration.d.ts.map +1 -1
  147. package/dist/utils/get-configuration.js +1 -0
  148. package/dist/utils/get-configuration.js.map +1 -1
  149. package/dist/utils/get-packages.d.ts +3 -5
  150. package/dist/utils/get-packages.d.ts.map +1 -1
  151. package/dist/utils/get-packages.js +1 -4
  152. package/dist/utils/get-packages.js.map +1 -1
  153. package/dist/utils/get-startup-version.d.ts.map +1 -1
  154. package/dist/utils/get-startup-version.js +1 -1
  155. package/dist/utils/get-startup-version.js.map +1 -1
  156. package/dist/utils/index.d.ts +1 -0
  157. package/dist/utils/index.d.ts.map +1 -1
  158. package/dist/utils/index.js +1 -0
  159. package/dist/utils/index.js.map +1 -1
  160. package/dist/webpack/configs/loaders/style-loader.d.ts +1 -1
  161. package/dist/webpack/configs/loaders/style-loader.d.ts.map +1 -1
  162. package/dist/webpack/configs/loaders/style-loader.js +2 -2
  163. package/dist/webpack/configs/loaders/style-loader.js.map +1 -1
  164. package/dist/webpack/configs/optimization-config.js +5 -5
  165. package/dist/webpack/configs/optimization-config.js.map +1 -1
  166. package/dist/webpack/configs/output-config.d.ts.map +1 -1
  167. package/dist/webpack/configs/output-config.js +14 -7
  168. package/dist/webpack/configs/output-config.js.map +1 -1
  169. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -1
  170. package/dist/webpack/configs/plugins/assets-manifest-plugin.js +10 -3
  171. package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -1
  172. package/package.json +9 -8
  173. package/src/cli/commands/__tests__/build.test.ts +1 -1
  174. package/src/cli/commands/__tests__/bundle-package.test.ts +22 -2
  175. package/src/cli/commands/__tests__/install.test.ts +42 -4
  176. package/src/cli/commands/__tests__/lint.test.ts +1 -1
  177. package/src/cli/commands/__tests__/mfe-list.test.ts +394 -0
  178. package/src/cli/commands/__tests__/mfe-publish.test.ts +25 -0
  179. package/src/cli/commands/__tests__/start.test.ts +1 -1
  180. package/src/cli/commands/build.ts +14 -10
  181. package/src/cli/commands/bundle-package.ts +19 -13
  182. package/src/cli/commands/clean.ts +2 -4
  183. package/src/cli/commands/convert-eslint-config.ts +3 -5
  184. package/src/cli/commands/eslint.ts +3 -5
  185. package/src/cli/commands/get-command.ts +2 -0
  186. package/src/cli/commands/index.ts +0 -1
  187. package/src/cli/commands/init.ts +7 -8
  188. package/src/cli/commands/install.ts +24 -11
  189. package/src/cli/commands/kendo-ui-license.ts +4 -6
  190. package/src/cli/commands/lint.ts +19 -19
  191. package/src/cli/commands/mfe-list.ts +173 -0
  192. package/src/cli/commands/mfe-package-clean.ts +25 -4
  193. package/src/cli/commands/mfe-package-publish.ts +33 -4
  194. package/src/cli/commands/mfe-publish.ts +37 -6
  195. package/src/cli/commands/prepare-package.ts +3 -5
  196. package/src/cli/commands/review/review.ts +9 -9
  197. package/src/cli/commands/run-task.ts +15 -11
  198. package/src/cli/commands/start.ts +12 -10
  199. package/src/cli/commands/styles-check.ts +2 -2
  200. package/src/cli/commands/test/__tests__/tests.test.ts +1 -1
  201. package/src/cli/commands/test/tests.ts +20 -10
  202. package/src/cli/commands/types.ts +14 -4
  203. package/src/cli/commands/upload-sourcemaps.ts +3 -5
  204. package/src/cli/index.ts +59 -37
  205. package/src/cli/tasks/swc-compile-package.ts +2 -2
  206. package/src/cli/tasks/tsc-compile-package.ts +4 -3
  207. package/src/cli/tasks/tsc-compile.ts +2 -2
  208. package/src/cli/utils/__tests__/bundle.test.ts +13 -0
  209. package/src/cli/utils/__tests__/cli-npm.test.ts +89 -0
  210. package/src/cli/utils/__tests__/is-tty.test.ts +17 -0
  211. package/src/cli/utils/__tests__/lerna-exec.test.ts +7 -0
  212. package/src/cli/utils/__tests__/maybe-create-git-folder.test.ts +11 -32
  213. package/src/cli/utils/__tests__/set-node-options.test.ts +10 -10
  214. package/src/cli/utils/bundle.ts +1 -1
  215. package/src/cli/utils/cli-npm.ts +34 -0
  216. package/src/cli/utils/cli-os.ts +12 -25
  217. package/src/cli/utils/eslint.ts +2 -1
  218. package/src/cli/utils/index.ts +1 -0
  219. package/src/cli/utils/is-tty.ts +3 -0
  220. package/src/cli/utils/lerna-exec.ts +3 -0
  221. package/src/cli/utils/maybe-create-git-folder.ts +5 -12
  222. package/src/cli/utils/process-tree.ts +4 -2
  223. package/src/cli/utils/set-node-options.ts +2 -1
  224. package/src/utils/__tests__/format-relative-date.test.ts +61 -0
  225. package/src/utils/__tests__/get-packages.test.ts +3 -0
  226. package/src/utils/find-packages.ts +1 -0
  227. package/src/utils/format-relative-date.ts +33 -0
  228. package/src/utils/get-configuration.ts +1 -0
  229. package/src/utils/get-packages.ts +3 -9
  230. package/src/utils/get-startup-version.ts +1 -3
  231. package/src/utils/index.ts +1 -0
  232. package/src/webpack/__mocks__/style-rules.ts +3 -3
  233. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +6 -14
  234. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +52 -29
  235. package/src/webpack/configs/loaders/style-loader.ts +5 -2
  236. package/src/webpack/configs/optimization-config.ts +5 -5
  237. package/src/webpack/configs/output-config.ts +10 -5
  238. package/src/webpack/configs/plugins/assets-manifest-plugin.ts +11 -4
  239. package/dist/cli/commands/get-user-commands.d.ts +0 -7
  240. package/dist/cli/commands/get-user-commands.d.ts.map +0 -1
  241. package/dist/cli/commands/get-user-commands.js +0 -27
  242. package/dist/cli/commands/get-user-commands.js.map +0 -1
  243. package/src/cli/commands/__tests__/get-user-commands.test.ts +0 -27
  244. package/src/cli/commands/get-user-commands.ts +0 -19
@@ -9,6 +9,9 @@ Object.defineProperty(exports, "MFEPublish", {
9
9
  }
10
10
  });
11
11
  const _utils = require("../../utils");
12
+ const _mfepackageclean = require("./mfe-package-clean");
13
+ const _mfepackagepublish = require("./mfe-package-publish");
14
+ const _types = require("./types");
12
15
  const _utils1 = require("../utils");
13
16
  function _define_property(obj, key, value) {
14
17
  if (key in obj) {
@@ -32,9 +35,39 @@ function _ts_decorate(decorators, target, key, desc) {
32
35
  function _ts_metadata(k, v) {
33
36
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
34
37
  }
35
- class MFEPublish {
36
- description() {
37
- return 'publish or unpublish MFE packages';
38
+ class MFEPublish extends _types.Command {
39
+ static get options() {
40
+ const publishOptions = Object.entries(_mfepackagepublish.MFEPackagePublish.options).reduce((result, [key, value])=>{
41
+ result[key] = {
42
+ group: 'Publish Options:',
43
+ ...value
44
+ };
45
+ return result;
46
+ }, {});
47
+ const cleanOptions = Object.entries(_mfepackageclean.MFEPackageClean.options).reduce((result, [key, value])=>{
48
+ result[Object.hasOwn(publishOptions, key) ? `${key}\u00A0` : key] = {
49
+ group: 'Clean Options:',
50
+ ...value
51
+ };
52
+ return result;
53
+ }, {});
54
+ return {
55
+ clean: {
56
+ boolean: true,
57
+ description: 'Unpublish old versions'
58
+ },
59
+ concurrency: {
60
+ number: true,
61
+ description: 'Publish/unpublish the specified number of packages concurrently',
62
+ defaultDescription: '1'
63
+ },
64
+ scope: {
65
+ array: true,
66
+ description: 'Publish/unpublish only the specified packages'
67
+ },
68
+ ...publishOptions,
69
+ ...cleanOptions
70
+ };
38
71
  }
39
72
  async execute() {
40
73
  const packages = (0, _utils.getPackages)({
@@ -103,11 +136,8 @@ class MFEPublish {
103
136
  ]
104
137
  ].filter((item)=>!!item);
105
138
  }
106
- constructor(args){
107
- _define_property(this, "args", void 0);
108
- this.args = args;
109
- }
110
139
  }
140
+ _define_property(MFEPublish, "description", 'Publish or unpublish MFE packages');
111
141
  _ts_decorate([
112
142
  _utils.logErrors,
113
143
  _ts_metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/mfe-publish.ts"],"sourcesContent":["import { getPackages, isWebComponent, logErrors, PackageType } from '../../utils';\nimport { Args as CleanArgs } from './mfe-package-clean';\nimport { Args as PublishArgs } from './mfe-package-publish';\nimport { Command } from './types';\nimport { lernaExec } from '../utils';\n\ninterface Args extends PublishArgs, CleanArgs {\n clean?: boolean;\n concurrency?: number;\n scope?: string | string[];\n}\n\nexport class MFEPublish implements Command {\n constructor(private readonly args: Args) {}\n\n description() {\n return 'publish or unpublish MFE packages';\n }\n\n @logErrors\n async execute() {\n const packages = getPackages({ scope: this.args.scope, type: PackageType.Webpack }).filter(\n ({ location }) => isWebComponent(location)\n );\n\n if (!packages.length) {\n throw new Error('no packages found for publication');\n }\n\n const isClean = !!this.args.clean;\n await lernaExec({\n 'cmd': `startup mfe-package-${isClean ? 'clean' : 'publish'}`,\n 'parallel': this.args.concurrency ?? 1,\n 'scope': packages.map(({ name }) => name),\n 'stream': true,\n '--': isClean ? this.getCleanOptions() : this.getPublishOptions(),\n });\n }\n\n getPublishOptions() {\n const { build, branch, dry, force, registry, tag, uploadSourcemaps } = this\n .args as PublishArgs;\n return [\n ...[branch && `--branch ${branch}`],\n ...[build && `--build ${build}`],\n ...[dry && '--dry'],\n ...[force && '--force'],\n ...[registry && `--registry ${registry}`],\n ...[typeof tag === 'string' && `--tag ${tag}`],\n ...[uploadSourcemaps === true && `--upload-sourcemaps`],\n ...[uploadSourcemaps === false && `--no-upload-sourcemaps`],\n ].filter(item => !!item) as string[];\n }\n\n getCleanOptions() {\n const { all, branch, count, dry, registry } = this.args as CleanArgs;\n return [\n ...[all && '--all'],\n ...[typeof branch === 'string' && `--branch ${branch}`],\n ...[count && `--count ${count}`],\n ...[dry && '--dry'],\n ...[registry && `--registry ${registry}`],\n ].filter(item => !!item) as string[];\n }\n}\n"],"names":["MFEPublish","description","execute","packages","getPackages","scope","args","type","PackageType","Webpack","filter","location","isWebComponent","length","Error","isClean","clean","lernaExec","concurrency","map","name","getCleanOptions","getPublishOptions","build","branch","dry","force","registry","tag","uploadSourcemaps","item","all","count"],"mappings":";;;;+BAYaA;;;eAAAA;;;uBAZuD;wBAI1C;;;;;;;;;;;;;;;;;;;;;;;AAQnB,MAAMA;IAGTC,cAAc;QACV,OAAO;IACX;IAEA,MACMC,UAAU;QACZ,MAAMC,WAAWC,IAAAA,kBAAW,EAAC;YAAEC,OAAO,IAAI,CAACC,IAAI,CAACD,KAAK;YAAEE,MAAMC,kBAAW,CAACC,OAAO;QAAC,GAAGC,MAAM,CACtF,CAAC,EAAEC,QAAQ,EAAE,GAAKC,IAAAA,qBAAc,EAACD;QAGrC,IAAI,CAACR,SAASU,MAAM,EAAE;YAClB,MAAM,IAAIC,MAAM;QACpB;QAEA,MAAMC,UAAU,CAAC,CAAC,IAAI,CAACT,IAAI,CAACU,KAAK;YAGjB;QAFhB,MAAMC,IAAAA,iBAAS,EAAC;YACZ,OAAO,CAAC,oBAAoB,EAAEF,UAAU,UAAU,WAAW;YAC7D,YAAY,CAAA,yBAAA,IAAI,CAACT,IAAI,CAACY,WAAW,cAArB,oCAAA,yBAAyB;YACrC,SAASf,SAASgB,GAAG,CAAC,CAAC,EAAEC,IAAI,EAAE,GAAKA;YACpC,UAAU;YACV,MAAML,UAAU,IAAI,CAACM,eAAe,KAAK,IAAI,CAACC,iBAAiB;QACnE;IACJ;IAEAA,oBAAoB;QAChB,MAAM,EAAEC,KAAK,EAAEC,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAEC,QAAQ,EAAEC,GAAG,EAAEC,gBAAgB,EAAE,GAAG,IAAI,CACtEvB,IAAI;QACT,OAAO;eACA;gBAACkB,UAAU,CAAC,SAAS,EAAEA,QAAQ;aAAC;eAChC;gBAACD,SAAS,CAAC,QAAQ,EAAEA,OAAO;aAAC;eAC7B;gBAACE,OAAO;aAAQ;eAChB;gBAACC,SAAS;aAAU;eACpB;gBAACC,YAAY,CAAC,WAAW,EAAEA,UAAU;aAAC;eACtC;gBAAC,OAAOC,QAAQ,YAAY,CAAC,MAAM,EAAEA,KAAK;aAAC;eAC3C;gBAACC,qBAAqB,QAAQ,CAAC,mBAAmB,CAAC;aAAC;eACpD;gBAACA,qBAAqB,SAAS,CAAC,sBAAsB,CAAC;aAAC;SAC9D,CAACnB,MAAM,CAACoB,CAAAA,OAAQ,CAAC,CAACA;IACvB;IAEAT,kBAAkB;QACd,MAAM,EAAEU,GAAG,EAAEP,MAAM,EAAEQ,KAAK,EAAEP,GAAG,EAAEE,QAAQ,EAAE,GAAG,IAAI,CAACrB,IAAI;QACvD,OAAO;eACA;gBAACyB,OAAO;aAAQ;eAChB;gBAAC,OAAOP,WAAW,YAAY,CAAC,SAAS,EAAEA,QAAQ;aAAC;eACpD;gBAACQ,SAAS,CAAC,QAAQ,EAAEA,OAAO;aAAC;eAC7B;gBAACP,OAAO;aAAQ;eAChB;gBAACE,YAAY,CAAC,WAAW,EAAEA,UAAU;aAAC;SAC5C,CAACjB,MAAM,CAACoB,CAAAA,OAAQ,CAAC,CAACA;IACvB;IAlDA,YAAY,AAAiBxB,IAAU,CAAE;;aAAZA,OAAAA;IAAa;AAmD9C"}
1
+ {"version":3,"sources":["../../../src/cli/commands/mfe-publish.ts"],"sourcesContent":["import { getPackages, isWebComponent, logErrors, PackageType } from '../../utils';\nimport { Args as CleanArgs, MFEPackageClean } from './mfe-package-clean';\nimport { Args as PublishArgs, MFEPackagePublish } from './mfe-package-publish';\nimport { Command } from './types';\nimport { lernaExec } from '../utils';\n\ninterface Args extends PublishArgs, CleanArgs {\n clean?: boolean;\n concurrency?: number;\n scope?: string | string[];\n}\n\nexport class MFEPublish extends Command<Args> {\n static readonly description = 'Publish or unpublish MFE packages';\n static get options() {\n const publishOptions = Object.entries(MFEPackagePublish.options).reduce(\n (result, [key, value]) => {\n result[key] = { group: 'Publish Options:', ...value };\n return result;\n },\n {} as NonNullable<typeof Command.options>\n );\n\n const cleanOptions = Object.entries(MFEPackageClean.options).reduce(\n (result, [key, value]) => {\n result[Object.hasOwn(publishOptions, key) ? `${key}\\u00A0` : key] = {\n group: 'Clean Options:',\n ...value,\n };\n return result;\n },\n {} as NonNullable<typeof Command.options>\n );\n\n return {\n clean: { boolean: true, description: 'Unpublish old versions' },\n concurrency: {\n number: true,\n description: 'Publish/unpublish the specified number of packages concurrently',\n defaultDescription: '1',\n },\n scope: {\n array: true,\n description: 'Publish/unpublish only the specified packages',\n },\n ...publishOptions,\n ...cleanOptions,\n };\n }\n\n @logErrors\n async execute() {\n const packages = getPackages({ scope: this.args.scope, type: PackageType.Webpack }).filter(\n ({ location }) => isWebComponent(location)\n );\n\n if (!packages.length) {\n throw new Error('no packages found for publication');\n }\n\n const isClean = !!this.args.clean;\n await lernaExec({\n 'cmd': `startup mfe-package-${isClean ? 'clean' : 'publish'}`,\n 'parallel': this.args.concurrency ?? 1,\n 'scope': packages.map(({ name }) => name),\n 'stream': true,\n '--': isClean ? this.getCleanOptions() : this.getPublishOptions(),\n });\n }\n\n getPublishOptions() {\n const { build, branch, dry, force, registry, tag, uploadSourcemaps } = this\n .args as PublishArgs;\n return [\n ...[branch && `--branch ${branch}`],\n ...[build && `--build ${build}`],\n ...[dry && '--dry'],\n ...[force && '--force'],\n ...[registry && `--registry ${registry}`],\n ...[typeof tag === 'string' && `--tag ${tag}`],\n ...[uploadSourcemaps === true && `--upload-sourcemaps`],\n ...[uploadSourcemaps === false && `--no-upload-sourcemaps`],\n ].filter(item => !!item) as string[];\n }\n\n getCleanOptions() {\n const { all, branch, count, dry, registry } = this.args as CleanArgs;\n return [\n ...[all && '--all'],\n ...[typeof branch === 'string' && `--branch ${branch}`],\n ...[count && `--count ${count}`],\n ...[dry && '--dry'],\n ...[registry && `--registry ${registry}`],\n ].filter(item => !!item) as string[];\n }\n}\n"],"names":["MFEPublish","Command","options","publishOptions","Object","entries","MFEPackagePublish","reduce","result","key","value","group","cleanOptions","MFEPackageClean","hasOwn","clean","boolean","description","concurrency","number","defaultDescription","scope","array","execute","packages","getPackages","args","type","PackageType","Webpack","filter","location","isWebComponent","length","Error","isClean","lernaExec","map","name","getCleanOptions","getPublishOptions","build","branch","dry","force","registry","tag","uploadSourcemaps","item","all","count"],"mappings":"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"}
@@ -1,10 +1,8 @@
1
- import { Command } from './types';
2
- interface Args {
1
+ import { Command, CommandArgs } from './types';
2
+ interface Args extends CommandArgs {
3
3
  watch?: boolean;
4
4
  }
5
- export declare class PreparePackage implements Command {
6
- private readonly args;
7
- constructor(args: Args);
5
+ export declare class PreparePackage extends Command<Args> {
8
6
  execute(): Promise<void>;
9
7
  }
10
8
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"prepare-package.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/prepare-package.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,UAAU,IAAI;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,cAAe,YAAW,OAAO;IAC9B,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAGvC,OAAO;CAGV"}
1
+ {"version":3,"file":"prepare-package.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/prepare-package.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,qBAAa,cAAe,SAAQ,OAAO,CAAC,IAAI,CAAC;IAE7C,OAAO;CAGV"}
@@ -10,19 +10,7 @@ Object.defineProperty(exports, "PreparePackage", {
10
10
  });
11
11
  const _utils = require("../../utils");
12
12
  const _utils1 = require("../utils");
13
- function _define_property(obj, key, value) {
14
- if (key in obj) {
15
- Object.defineProperty(obj, key, {
16
- value: value,
17
- enumerable: true,
18
- configurable: true,
19
- writable: true
20
- });
21
- } else {
22
- obj[key] = value;
23
- }
24
- return obj;
25
- }
13
+ const _types = require("./types");
26
14
  function _ts_decorate(decorators, target, key, desc) {
27
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
28
16
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -32,16 +20,12 @@ function _ts_decorate(decorators, target, key, desc) {
32
20
  function _ts_metadata(k, v) {
33
21
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
34
22
  }
35
- class PreparePackage {
23
+ class PreparePackage extends _types.Command {
36
24
  execute() {
37
25
  return (0, _utils1.copyFiles)({
38
26
  watch: this.args.watch
39
27
  });
40
28
  }
41
- constructor(args){
42
- _define_property(this, "args", void 0);
43
- this.args = args;
44
- }
45
29
  }
46
30
  _ts_decorate([
47
31
  _utils.logErrors,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/prepare-package.ts"],"sourcesContent":["import { logErrors } from '../../utils';\nimport { copyFiles } from '../utils';\nimport { Command } from './types';\n\ninterface Args {\n watch?: boolean;\n}\n\nexport class PreparePackage implements Command {\n constructor(private readonly args: Args) {}\n\n @logErrors\n execute() {\n return copyFiles({ watch: this.args.watch });\n }\n}\n"],"names":["PreparePackage","execute","copyFiles","watch","args"],"mappings":";;;;+BAQaA;;;eAAAA;;;uBARa;wBACA;;;;;;;;;;;;;;;;;;;;;;;AAOnB,MAAMA;IAITC,UAAU;QACN,OAAOC,IAAAA,iBAAS,EAAC;YAAEC,OAAO,IAAI,CAACC,IAAI,CAACD,KAAK;QAAC;IAC9C;IALA,YAAY,AAAiBC,IAAU,CAAE;;aAAZA,OAAAA;IAAa;AAM9C"}
1
+ {"version":3,"sources":["../../../src/cli/commands/prepare-package.ts"],"sourcesContent":["import { logErrors } from '../../utils';\nimport { copyFiles } from '../utils';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n watch?: boolean;\n}\n\nexport class PreparePackage extends Command<Args> {\n @logErrors\n execute() {\n return copyFiles({ watch: this.args.watch });\n }\n}\n"],"names":["PreparePackage","Command","execute","copyFiles","watch","args"],"mappings":";;;;+BAQaA;;;eAAAA;;;uBARa;wBACA;uBACW;;;;;;;;;;AAM9B,MAAMA,uBAAuBC,cAAO;IAEvCC,UAAU;QACN,OAAOC,IAAAA,iBAAS,EAAC;YAAEC,OAAO,IAAI,CAACC,IAAI,CAACD,KAAK;QAAC;IAC9C;AACJ"}
@@ -1,14 +1,22 @@
1
- import { Command } from '../types';
2
- interface Args {
1
+ import { Command, CommandArgs } from '../types';
2
+ interface Args extends CommandArgs {
3
3
  fix?: boolean;
4
4
  rule?: string | string[];
5
5
  }
6
- export declare class Review implements Command {
7
- private readonly args;
6
+ export declare class Review extends Command<Args> {
7
+ static readonly description = "Check project for configuration errors";
8
+ static readonly options: {
9
+ fix: {
10
+ boolean: boolean;
11
+ description: string;
12
+ };
13
+ rule: {
14
+ array: boolean;
15
+ description: string;
16
+ };
17
+ };
8
18
  private readonly severityToLabel;
9
19
  private readonly levelToSeverity;
10
- constructor(args: Args);
11
- description(): string;
12
20
  execute(): Promise<void>;
13
21
  private createProject;
14
22
  private debug;
@@ -1 +1 @@
1
- {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/review/review.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAwBnC,UAAU,IAAI;IACV,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,MAAO,YAAW,OAAO;IAWtB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVjC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG9B;gBAE2B,IAAI,EAAE,IAAI;IAEvC,WAAW;IAKL,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;CAU3B"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/review/review.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAwBhD,UAAU,IAAK,SAAQ,WAAW;IAC9B,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC5B;AAED,qBAAa,MAAO,SAAQ,OAAO,CAAC,IAAI,CAAC;IACrC,MAAM,CAAC,QAAQ,CAAC,WAAW,4CAA4C;IACvE,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;MAGrB;IAEF,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;CAU3B"}
@@ -12,7 +12,8 @@ const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
12
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
- const _types = require("./types");
15
+ const _types = require("../types");
16
+ const _types1 = require("./types");
16
17
  const _utils1 = require("./utils");
17
18
  const _rules = require("./rules");
18
19
  function _define_property(obj, key, value) {
@@ -43,10 +44,7 @@ function _ts_metadata(k, v) {
43
44
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
44
45
  }
45
46
  const collator = new Intl.Collator();
46
- class Review {
47
- description() {
48
- return 'check project for configuration errors';
49
- }
47
+ class Review extends _types.Command {
50
48
  async execute() {
51
49
  const errors = this.args.fix ? this.fixErrors() : this.findErrors();
52
50
  const summary = this.reportErrors(errors);
@@ -95,9 +93,9 @@ class Review {
95
93
  let errors = this.findErrors(project);
96
94
  let totalFixed = 0;
97
95
  for (const category of [
98
- _types.FixCategory.isolated,
99
- _types.FixCategory.normal,
100
- _types.FixCategory.lockFile
96
+ _types1.FixCategory.isolated,
97
+ _types1.FixCategory.normal,
98
+ _types1.FixCategory.lockFile
101
99
  ]){
102
100
  const fixable = errors.filter(({ fixable })=>fixable === category);
103
101
  if (fixable.length === 0) {
@@ -131,7 +129,7 @@ class Review {
131
129
  return errors;
132
130
  }
133
131
  formatError(error) {
134
- const { location, message, severity = _types.ErrorSeverity.error } = error;
132
+ const { location, message, severity = _types1.ErrorSeverity.error } = error;
135
133
  const label = (0, _utils1.indent)(this.severityToLabel[severity], location ? 1 : 0);
136
134
  const details = error.details ? `\n${(0, _utils1.indent)(error.details, location ? 2 : 1)}` : '';
137
135
  const link = this.getLink(error);
@@ -208,28 +206,34 @@ class Review {
208
206
  }
209
207
  return undefined;
210
208
  }
211
- constructor(args){
212
- _define_property(this, "args", void 0);
213
- _define_property(this, "severityToLabel", void 0);
214
- _define_property(this, "levelToSeverity", void 0);
215
- this.args = args;
216
- this.severityToLabel = {
217
- [_types.ErrorSeverity.warning]: _chalk.default.yellow('warning'),
218
- [_types.ErrorSeverity.error]: _chalk.default.red('error')
219
- };
220
- this.levelToSeverity = {
221
- warn: _types.ErrorSeverity.warning,
222
- error: _types.ErrorSeverity.error
223
- };
209
+ constructor(...args){
210
+ super(...args), _define_property(this, "severityToLabel", {
211
+ [_types1.ErrorSeverity.warning]: _chalk.default.yellow('warning'),
212
+ [_types1.ErrorSeverity.error]: _chalk.default.red('error')
213
+ }), _define_property(this, "levelToSeverity", {
214
+ warn: _types1.ErrorSeverity.warning,
215
+ error: _types1.ErrorSeverity.error
216
+ });
224
217
  }
225
218
  }
219
+ _define_property(Review, "description", 'Check project for configuration errors');
220
+ _define_property(Review, "options", {
221
+ fix: {
222
+ boolean: true,
223
+ description: 'Fix detected problems'
224
+ },
225
+ rule: {
226
+ array: true,
227
+ description: 'Limit checks to specified rule(s)'
228
+ }
229
+ });
226
230
  _ts_decorate([
227
231
  _utils.logErrors,
228
232
  _ts_metadata("design:type", Function),
229
233
  _ts_metadata("design:paramtypes", []),
230
234
  _ts_metadata("design:returntype", Promise)
231
235
  ], Review.prototype, "execute", null);
232
- function compareError({ location: locationA = '', severity: severityA = _types.ErrorSeverity.error }, { location: locationB = '', severity: severityB = _types.ErrorSeverity.error }) {
236
+ function compareError({ location: locationA = '', severity: severityA = _types1.ErrorSeverity.error }, { location: locationB = '', severity: severityB = _types1.ErrorSeverity.error }) {
233
237
  return locationA === locationB ? severityA - severityB : collator.compare(locationA, locationB);
234
238
  }
235
239
  function sortByKey(obj) {
@@ -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 { Command } from '../types';\n\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';\nimport { rules } from './rules';\n\nconst collator = new Intl.Collator();\n\ninterface Args {\n fix?: boolean;\n rule?: string | string[];\n}\n\nexport class Review implements Command {\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 constructor(private readonly args: Args) {}\n\n description() {\n return 'check project for configuration errors';\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 startup 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 if (typeof rule === 'string' && rule) {\n return new Set([rule]);\n }\n if (Array.isArray(rule)) {\n return new Set(rule.filter(id => !!id));\n }\n return 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","description","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":";;;;+BAwCaA;;;eAAAA;;;8DAxCK;+BACO;qEACA;uBAQlB;uBAYA;wBAQA;uBACe;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEtB,MAAMC,WAAW,IAAIC,KAAKC,QAAQ;AAO3B,MAAMH;IAaTI,cAAc;QACV,OAAO;IACX;IAEA,MACMC,UAAU;QACZ,MAAMC,SAAS,IAAI,CAACC,IAAI,CAACC,GAAG,GAAG,IAAI,CAACC,SAAS,KAAK,IAAI,CAACC,UAAU;QACjE,MAAMC,UAAU,IAAI,CAACC,YAAY,CAACN;QAClC,OAAOK,QAAQE,KAAK,GAAG,IAAIC,QAAQC,MAAM,KAAKD,QAAQE,OAAO;IACjE;IAEQC,gBAAyB;QAC7B,MAAMC,OAAOC,IAAAA,mBAAY,EAAC;QAC1B,IAAI,EAACD,iBAAAA,2BAAAA,KAAME,UAAU,GAAE;YACnB,MAAM,IAAIC,MAAM;QACpB;QAEA,MAAMC,cAAcH,IAAAA,mBAAY,EAAyB;QACzD,IAAI,EAACG,wBAAAA,kCAAAA,YAAaC,QAAQ,GAAE;YACxB,MAAM,IAAIF,MAAM;QACpB;QAEAH,KAAKM,QAAQ,GAAG,KAAK,uDAAuD;QAC5EF,YAAYE,QAAQ,GAAG;QAEvB,MAAMC,SAASC,IAAAA,6BAAsB;QACrC,MAAMH,WAAsB;YAACL;eAASS,IAAAA,mBAAY;SAAG;QACrD,MAAMC,eAAeC,UAAUC,IAAAA,2BAAmB,EAACP;QACnD,IAAI,CAACQ,KAAK,CAAC,mBAAmBR;QAC9B,IAAI,CAACQ,KAAK,CAAC,uBAAuBH;QAElC,OAAO;YAAEH;YAAQG;YAAcN;YAAaC;QAAS;IACzD;IAEQQ,MAAMC,SAAiB,EAAEC,IAAS,EAAE;QACxC,oCAAoC,GACpCC,UAAG,CAACH,KAAK,CAACC,WAAW,IAAMC,QAAQE,KAAKC,SAAS,CAACH,MAAM,MAAM;IAClE;IAEQvB,WAAW2B,OAAiB,EAAE;QAClC,MAAM/B,SAAS,IAAI,CAACgC,QAAQ,CAACD,oBAAAA,qBAAAA,UAAW,IAAI,CAACpB,aAAa;QAC1D,IAAI,CAACc,KAAK,CAAC,iBAAiBzB;QAC5B,OAAOA;IACX;IAEQG,YAAY;QAChB,MAAM8B,YAAYC,YAAK,CAACC,MAAM,CAA8B,CAACC,QAAQC;YACjED,MAAM,CAACC,KAAKC,EAAE,CAAC,GAAGD;YAClB,OAAOD;QACX,GAAG,CAAC;QAEJ,IAAIL,UAAU,IAAI,CAACpB,aAAa;QAChC,IAAIX,SAAS,IAAI,CAACI,UAAU,CAAC2B;QAC7B,IAAIQ,aAAa;QAEjB,KAAK,MAAMC,YAAY;YAACC,kBAAW,CAACC,QAAQ;YAAED,kBAAW,CAACE,MAAM;YAAEF,kBAAW,CAACG,QAAQ;SAAC,CAAE;YACrF,MAAMC,UAAU7C,OAAO8C,MAAM,CAAC,CAAC,EAAED,OAAO,EAAE,GAAKA,YAAYL;YAC3D,IAAIK,QAAQE,MAAM,KAAK,GAAG;gBACtB;YACJ;YAEAF,QAAQG,OAAO,CAACzC,CAAAA;gBACZ,MAAM8B,OAAOJ,SAAS,CAAC1B,MAAM+B,EAAE,CAAC;gBAChC,IAAID,KAAKnC,GAAG,EAAE;oBACV0B,UAAG,CAACqB,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAACC,WAAW,CAAC;wBAAE,GAAG3C,KAAK;wBAAE4C,SAAS;wBAAIjC,UAAU;oBAAG,IAAI;oBAC9EmB,KAAKnC,GAAG,CAACK,OAAOwB;oBAChBQ,cAAc;gBAClB;YACJ;YAEAa,IAAAA,uBAAQ,EAAC,qCAAqC;gBAAEC,OAAO;YAAU;YACjEtB,UAAU,IAAI,CAACpB,aAAa;YAC5BX,SAAS,IAAI,CAACI,UAAU,CAAC2B;QAC7B;QAEA,IAAIQ,aAAa,GAAG;YAChB,IAAIlC,UAAU,CAAC,MAAM,EAAEiD,IAAAA,iBAAS,EAACf,YAAY,YAAY;YACzD,IAAIvC,OAAO+C,MAAM,EAAE;gBACf1C,UAAU,GAAGA,QAAQ,EAAE,EAAEiD,IAAAA,iBAAS,EAACtD,OAAO+C,MAAM,EAAE,mBAAmB,mBAAmB,GAAG,CAAC;YAChG;YACAnB,UAAG,CAAC2B,IAAI,CAAClD;QACb;QAEA,OAAOL;IACX;IAEQkD,YAAY3C,KAAmB,EAAE;QACrC,MAAM,EAAEW,QAAQ,EAAEsC,OAAO,EAAEC,WAAWC,oBAAa,CAACnD,KAAK,EAAE,GAAGA;QAE9D,MAAMoD,QAAQC,IAAAA,cAAM,EAAC,IAAI,CAACC,eAAe,CAACJ,SAAS,EAAEvC,WAAW,IAAI;QACpE,MAAMiC,UAAU5C,MAAM4C,OAAO,GAAG,CAAC,EAAE,EAAES,IAAAA,cAAM,EAACrD,MAAM4C,OAAO,EAAEjC,WAAW,IAAI,IAAI,GAAG;QACjF,MAAM4C,OAAO,IAAI,CAACC,OAAO,CAACxD;QAE1B,OAAO,GAAGoD,MAAM,CAAC,EAAEH,QAAQ,CAAC,EAAEM,OAAOX,SAAS;IAClD;IAEQ7C,aAAaN,MAAsB,EAAE;QACzC,IAAIgE;QAEJhE,OAAOgD,OAAO,CAAC,CAACzC,OAAO0D;YACnB,MAAM,EAAE/C,QAAQ,EAAE,GAAGX;YACrB,IAAI0D,QAAQ,KAAM,CAAA,CAAC/C,YAAYA,aAAa8C,YAAW,GAAI;gBACvDpC,UAAG,CAACqB,IAAI,CAAC;YACb;YACA,IAAI/B,YAAYA,aAAa8C,cAAc;gBACvCpC,UAAG,CAACqB,IAAI,CAACiB,cAAK,CAACC,SAAS,CAACC,IAAAA,sBAAc,EAAClD;gBACxC8C,eAAe9C;YACnB;YACAU,UAAG,CAACqB,IAAI,CAAC,IAAI,CAACC,WAAW,CAAC3C;QAC9B;QAEA,MAAMF,UAAUgE,IAAAA,iBAAS,EAACrE;QAC1B,IAAI,CAACsE,aAAa,CAACjE;QACnB,OAAOA;IACX;IAEQiE,cAAc,EAAE/D,KAAK,EAAEgE,OAAO,EAAE1B,OAAO,EAAgB,EAAE;QAC7D,IAAItC,QAAQgE,YAAY,GAAG;YACvB,OAAO3C,UAAG,CAAC4C,OAAO,CAAC;QACvB;QAEA5C,UAAG,CAACqB,IAAI,CAAC;QAET,MAAMQ,WAAWlD,QAAQ,UAAU;QACnCqB,UAAG,CAAC6B,SAAS,CACT,GAAGH,IAAAA,iBAAS,EAAC/C,QAAQgE,SAAS,WAAW,EAAE,EAAEjB,IAAAA,iBAAS,EAAC/C,OAAO,SAAS,EAAE,EAAE+C,IAAAA,iBAAS,EAACiB,SAAS,WAAW,CAAC,CAAC;QAG/G,IAAI1B,QAAQtC,KAAK,GAAGsC,QAAQ0B,OAAO,GAAG,GAAG;YACrC3C,UAAG,CAAC6B,SAAS,CACT,GAAGH,IAAAA,iBAAS,EAACT,QAAQtC,KAAK,EAAE,SAAS,KAAK,EAAE+C,IAAAA,iBAAS,EAACT,QAAQ0B,OAAO,EAAE,WAAW,sCAAsC,CAAC;QAEjI;IACJ;IAEQvC,SAASD,OAAgB,EAAkB;QAC/C,MAAM0C,WAAW,IAAI,CAACC,gBAAgB;QACtC,OAAOxC,YAAK,CACPY,MAAM,CAAC,CAAC,EAAER,EAAE,EAAE,GAAK,CAACmC,YAAYA,SAASE,GAAG,CAACrC,KAC7CsC,OAAO,CAACvC,CAAAA,OAAQ,IAAI,CAACwC,OAAO,CAACxC,MAAMN,UACnCe,MAAM,CAACvC,CAAAA,QAAS,CAAC,CAACA,OAClBuE,IAAI,CAACC;IACd;IAEQF,QAAQxC,IAAiB,EAAEN,OAAgB,EAAE;YACrBA;QAA5B,MAAMiD,QAAQ,IAAI,CAACC,QAAQ,EAAClD,wBAAAA,QAAQZ,MAAM,CAACe,KAAK,cAApBH,4CAAAA,qBAAsB,CAACM,KAAKC,EAAE,CAAC;QAC3D,IAAI0C,UAAU,OAAO;YACjB;QACJ;QAEA,OAAO,IAAI,CAACE,SAAS,CAAC7C,KAAK8C,GAAG,CAACpD,UAAUiD;IAC7C;IAEQE,UAAUlF,MAAsC,EAAEgF,KAAwB,EAAE;QAChF,MAAMvB,WAAWuB,SAAS,IAAI,CAACI,eAAe,CAACJ,MAAM;QACrD,OAAOhF,UAAUyD,WAAW4B,IAAAA,cAAO,EAACrF,QAAQsF,GAAG,CAAC/E,CAAAA,QAAU,CAAA;gBAAE,GAAGA,KAAK;gBAAEkD;YAAS,CAAA,KAAMzD;IACzF;IAEQiF,SAAS9D,MAA0B,EAAE;QACzC,IAAI,OAAOA,WAAW,UAAU;YAC5B,OAAOA;QACX;QACA,IAAIoE,MAAMC,OAAO,CAACrE,WAAW,OAAOA,MAAM,CAAC,EAAE,KAAK,UAAU;YACxD,OAAOA,MAAM,CAAC,EAAE;QACpB;IACJ;IAEQ4C,QAAQ,EAAEzB,EAAE,EAAgB,EAAE;QAClC,MAAMmD,MAAM,CAAC,uDAAuD,EAAEnD,IAAI;QAC1E,OAAO4B,cAAK,CAACwB,GAAG,CAACC,IAAAA,qBAAY,EAACrD,IAAImD;IACtC;IAEQf,mBAAmB;QACvB,MAAMrC,OAAO,IAAI,CAACpC,IAAI,CAACoC,IAAI;QAC3B,IAAI,OAAOA,SAAS,YAAYA,MAAM;YAClC,OAAO,IAAIuD,IAAI;gBAACvD;aAAK;QACzB;QACA,IAAIkD,MAAMC,OAAO,CAACnD,OAAO;YACrB,OAAO,IAAIuD,IAAIvD,KAAKS,MAAM,CAACR,CAAAA,KAAM,CAAC,CAACA;QACvC;QACA,OAAOuD;IACX;IAvLA,YAAY,AAAiB5F,IAAU,CAAE;;QAVzC,uBAAiB4D,mBAAjB,KAAA;QAKA,uBAAiBuB,mBAAjB,KAAA;aAK6BnF,OAAAA;aAVZ4D,kBAAiD;YAC9D,CAACH,oBAAa,CAACa,OAAO,CAAC,EAAEL,cAAK,CAAC4B,MAAM,CAAC;YACtC,CAACpC,oBAAa,CAACnD,KAAK,CAAC,EAAE2D,cAAK,CAAC6B,GAAG,CAAC;QACrC;aAEiBX,kBAAyD;YACtEY,MAAMtC,oBAAa,CAACa,OAAO;YAC3BhE,OAAOmD,oBAAa,CAACnD,KAAK;QAC9B;IAE0C;AAwL9C;;;;;;;AAEA,SAASwE,aACL,EAAE7D,UAAU+E,YAAY,EAAE,EAAExC,UAAUyC,YAAYxC,oBAAa,CAACnD,KAAK,EAAgB,EACrF,EAAEW,UAAUiF,YAAY,EAAE,EAAE1C,UAAU2C,YAAY1C,oBAAa,CAACnD,KAAK,EAAgB;IAErF,OAAO0F,cAAcE,YAAYD,YAAYE,YAAYzG,SAAS0G,OAAO,CAACJ,WAAWE;AACzF;AAEA,SAAS5E,UAAa+E,GAAsB;IACxC,OAAOC,OAAOC,WAAW,CAACD,OAAOE,OAAO,CAACH,KAAKxB,IAAI,CAAC,CAAC,CAAC4B,EAAE,EAAE,CAACC,EAAE,GAAKhH,SAAS0G,OAAO,CAACK,GAAGC;AACzF"}
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 { Command, CommandArgs } from '../types';\n\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';\nimport { rules } from './rules';\n\nconst collator = new Intl.Collator();\n\ninterface Args extends CommandArgs {\n fix?: boolean;\n rule?: string | string[];\n}\n\nexport class Review extends Command<Args> {\n static readonly description = 'Check project for configuration errors';\n static readonly options = {\n fix: { boolean: true, description: 'Fix detected problems' },\n rule: { array: true, description: 'Limit checks to specified rule(s)' },\n };\n\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 startup 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 if (typeof rule === 'string' && rule) {\n return new Set([rule]);\n }\n if (Array.isArray(rule)) {\n return new Set(rule.filter(id => !!id));\n }\n return 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","description","options","boolean","array","locationA","severityA","locationB","severityB","compare","obj","Object","fromEntries","entries","a","b"],"mappings":"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"}
@@ -1,11 +1,15 @@
1
- import { Command } from './types';
2
- interface Args {
3
- [key: string]: unknown;
1
+ import { Command, CommandArgs } from './types';
2
+ interface Args extends CommandArgs {
4
3
  _: string[];
4
+ taskName?: string;
5
+ taskArgs?: string[];
5
6
  }
6
- export declare class RunTask implements Command {
7
- private readonly args;
8
- constructor(args: Args);
7
+ export declare class RunTask extends Command<Args> {
8
+ static readonly options: {
9
+ _: {
10
+ description: string;
11
+ };
12
+ };
9
13
  execute(): Promise<void>;
10
14
  }
11
15
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"run-task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAMlC,UAAU,IAAI;IACV,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IAEvB,CAAC,EAAE,MAAM,EAAE,CAAC;CACf;AAQD,qBAAa,OAAQ,YAAW,OAAO;IACvB,OAAO,CAAC,QAAQ,CAAC,IAAI;gBAAJ,IAAI,EAAE,IAAI;IAGjC,OAAO;CAahB"}
1
+ {"version":3,"file":"run-task.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/run-task.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,CAAC,EAAE,MAAM,EAAE,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAQD,qBAAa,OAAQ,SAAQ,OAAO,CAAC,IAAI,CAAC;IACtC,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;MAErB;IAGI,OAAO;CAchB"}
@@ -1,4 +1,4 @@
1
- "use strict";
1
+ /* eslint-disable @typescript-eslint/naming-convention */ "use strict";
2
2
  Object.defineProperty(exports, "__esModule", {
3
3
  value: true
4
4
  });
@@ -12,6 +12,7 @@ const _utils = require("../../utils");
12
12
  const _swccompilepackage = require("../tasks/swc-compile-package");
13
13
  const _tsccompilepackage = require("../tasks/tsc-compile-package");
14
14
  const _tsccompile = require("../tasks/tsc-compile");
15
+ const _types = require("./types");
15
16
  function _define_property(obj, key, value) {
16
17
  if (key in obj) {
17
18
  Object.defineProperty(obj, key, {
@@ -39,26 +40,28 @@ const tasks = {
39
40
  'swc-compile-package': _swccompilepackage.SwcCompilePackage,
40
41
  'tsc-compile': _tsccompile.TscCompile
41
42
  };
42
- class RunTask {
43
+ class RunTask extends _types.Command {
43
44
  async execute() {
44
- const taskName = this.args._[0];
45
+ const { _, taskName = this.args._[0], taskArgs = [], ...restOptions } = this.args;
45
46
  if (taskName in tasks) {
46
- // eslint-disable-next-line @typescript-eslint/naming-convention
47
- const trimArgs = {
48
- ...this.args,
49
- _: this.args._.slice(1)
50
- };
51
- await new tasks[taskName](trimArgs).execute();
47
+ await new tasks[taskName]({
48
+ _: [
49
+ ..._,
50
+ ...taskArgs
51
+ ],
52
+ ...restOptions
53
+ }).execute();
52
54
  return;
53
55
  }
54
56
  _utils.log.error(`Unknown task: "${taskName}"`);
55
57
  _utils.log.text(`\nSupported tasks: "${Object.keys(tasks).join('", "')}"`);
56
58
  }
57
- constructor(args){
58
- _define_property(this, "args", void 0);
59
- this.args = args;
60
- }
61
59
  }
60
+ _define_property(RunTask, "options", {
61
+ _: {
62
+ description: '<taskName> [taskArgs...]'
63
+ }
64
+ });
62
65
  _ts_decorate([
63
66
  _utils.logErrors,
64
67
  _ts_metadata("design:type", Function),
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/run-task.ts"],"sourcesContent":["import { log, logErrors } from '../../utils';\nimport { Command } from './types';\nimport { SwcCompilePackage } from '../tasks/swc-compile-package';\nimport { TscCompilePackage } from '../tasks/tsc-compile-package';\nimport { TscCompile } from '../tasks/tsc-compile';\nimport { Task } from '../tasks/task';\n\ninterface Args {\n [key: string]: unknown;\n // eslint-disable-next-line @typescript-eslint/naming-convention\n _: string[];\n}\n\nconst tasks: Record<string, new (args: Args) => Task> = {\n 'tsc-compile-package': TscCompilePackage,\n 'swc-compile-package': SwcCompilePackage,\n 'tsc-compile': TscCompile,\n};\n\nexport class RunTask implements Command {\n constructor(private readonly args: Args) {}\n\n @logErrors\n async execute() {\n const taskName = this.args._[0];\n\n if (taskName in tasks) {\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const trimArgs = { ...this.args, _: this.args._.slice(1) };\n await new tasks[taskName](trimArgs).execute();\n return;\n }\n\n log.error(`Unknown task: \"${taskName}\"`);\n log.text(`\\nSupported tasks: \"${Object.keys(tasks).join('\", \"')}\"`);\n }\n}\n"],"names":["RunTask","tasks","TscCompilePackage","SwcCompilePackage","TscCompile","execute","taskName","args","_","trimArgs","slice","log","error","text","Object","keys","join"],"mappings":";;;;+BAmBaA;;;eAAAA;;;uBAnBkB;mCAEG;mCACA;4BACP;;;;;;;;;;;;;;;;;;;;;;;AAS3B,MAAMC,QAAkD;IACpD,uBAAuBC,oCAAiB;IACxC,uBAAuBC,oCAAiB;IACxC,eAAeC,sBAAU;AAC7B;AAEO,MAAMJ;IAGT,MACMK,UAAU;QACZ,MAAMC,WAAW,IAAI,CAACC,IAAI,CAACC,CAAC,CAAC,EAAE;QAE/B,IAAIF,YAAYL,OAAO;YACnB,gEAAgE;YAChE,MAAMQ,WAAW;gBAAE,GAAG,IAAI,CAACF,IAAI;gBAAEC,GAAG,IAAI,CAACD,IAAI,CAACC,CAAC,CAACE,KAAK,CAAC;YAAG;YACzD,MAAM,IAAIT,KAAK,CAACK,SAAS,CAACG,UAAUJ,OAAO;YAC3C;QACJ;QAEAM,UAAG,CAACC,KAAK,CAAC,CAAC,eAAe,EAAEN,SAAS,CAAC,CAAC;QACvCK,UAAG,CAACE,IAAI,CAAC,CAAC,oBAAoB,EAAEC,OAAOC,IAAI,CAACd,OAAOe,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE;IAfA,YAAY,AAAiBT,IAAU,CAAE;;aAAZA,OAAAA;IAAa;AAgB9C"}
1
+ {"version":3,"sources":["../../../src/cli/commands/run-task.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { log, logErrors } from '../../utils';\nimport { SwcCompilePackage } from '../tasks/swc-compile-package';\nimport { TscCompilePackage } from '../tasks/tsc-compile-package';\nimport { TscCompile } from '../tasks/tsc-compile';\nimport { Task } from '../tasks/task';\nimport { Command, CommandArgs } from './types';\n\ninterface Args extends CommandArgs {\n _: string[];\n taskName?: string;\n taskArgs?: string[];\n}\n\nconst tasks: Record<string, new (args: { [key: string]: unknown }) => Task> = {\n 'tsc-compile-package': TscCompilePackage,\n 'swc-compile-package': SwcCompilePackage,\n 'tsc-compile': TscCompile,\n};\n\nexport class RunTask extends Command<Args> {\n static readonly options = {\n _: { description: '<taskName> [taskArgs...]' },\n };\n\n @logErrors\n async execute() {\n const { _, taskName = this.args._[0], taskArgs = [], ...restOptions } = this.args;\n\n if (taskName in tasks) {\n await new tasks[taskName]({\n _: [..._, ...taskArgs],\n ...restOptions,\n }).execute();\n return;\n }\n\n log.error(`Unknown task: \"${taskName}\"`);\n log.text(`\\nSupported tasks: \"${Object.keys(tasks).join('\", \"')}\"`);\n }\n}\n"],"names":["RunTask","tasks","TscCompilePackage","SwcCompilePackage","TscCompile","Command","execute","_","taskName","args","taskArgs","restOptions","log","error","text","Object","keys","join","options","description"],"mappings":"AAAA,uDAAuD;;;;+BAoB1CA;;;eAAAA;;;uBAnBkB;mCACG;mCACA;4BACP;uBAEU;;;;;;;;;;;;;;;;;;;;;;;AAQrC,MAAMC,QAAwE;IAC1E,uBAAuBC,oCAAiB;IACxC,uBAAuBC,oCAAiB;IACxC,eAAeC,sBAAU;AAC7B;AAEO,MAAMJ,gBAAgBK,cAAO;IAKhC,MACMC,UAAU;QACZ,MAAM,EAAEC,CAAC,EAAEC,WAAW,IAAI,CAACC,IAAI,CAACF,CAAC,CAAC,EAAE,EAAEG,WAAW,EAAE,EAAE,GAAGC,aAAa,GAAG,IAAI,CAACF,IAAI;QAEjF,IAAID,YAAYP,OAAO;YACnB,MAAM,IAAIA,KAAK,CAACO,SAAS,CAAC;gBACtBD,GAAG;uBAAIA;uBAAMG;iBAAS;gBACtB,GAAGC,WAAW;YAClB,GAAGL,OAAO;YACV;QACJ;QAEAM,UAAG,CAACC,KAAK,CAAC,CAAC,eAAe,EAAEL,SAAS,CAAC,CAAC;QACvCI,UAAG,CAACE,IAAI,CAAC,CAAC,oBAAoB,EAAEC,OAAOC,IAAI,CAACf,OAAOgB,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtE;AACJ;AAnBI,iBADSjB,SACOkB,WAAU;IACtBX,GAAG;QAAEY,aAAa;IAA2B;AACjD"}
@@ -1,16 +1,37 @@
1
- import { Command } from './types';
2
- interface Args {
1
+ import { Command, CommandArgs } from './types';
2
+ interface Args extends CommandArgs {
3
3
  'config'?: string;
4
4
  'code-coverage'?: boolean;
5
5
  'ignore'?: string | string[];
6
6
  'scope'?: string | string[];
7
7
  'use-tsc'?: boolean;
8
8
  }
9
- export declare class Start implements Command {
10
- private readonly args;
11
- readonly greedy = true;
12
- constructor(args: Args);
13
- description(): string;
9
+ export declare class Start extends Command<Args> {
10
+ static readonly description = "Run project in development mode";
11
+ static readonly greedy = true;
12
+ static readonly options: {
13
+ config: {
14
+ string: boolean;
15
+ hidden: boolean;
16
+ description: string;
17
+ };
18
+ 'code-coverage': {
19
+ boolean: boolean;
20
+ description: string;
21
+ };
22
+ ignore: {
23
+ array: boolean;
24
+ description: string;
25
+ };
26
+ scope: {
27
+ array: boolean;
28
+ description: string;
29
+ };
30
+ 'use-tsc': {
31
+ boolean: boolean;
32
+ description: string;
33
+ };
34
+ };
14
35
  execute(): Promise<void>;
15
36
  }
16
37
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,UAAU,IAAI;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAYD,qBAAa,KAAM,YAAW,OAAO;IAGrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAFjC,QAAQ,CAAC,MAAM,QAAQ;gBAEM,IAAI,EAAE,IAAI;IAEvC,WAAW;IAKL,OAAO;CA+HhB"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/start.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE/C,UAAU,IAAK,SAAQ,WAAW;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAYD,qBAAa,KAAM,SAAQ,OAAO,CAAC,IAAI,CAAC;IACpC,MAAM,CAAC,QAAQ,CAAC,WAAW,qCAAqC;IAChE,MAAM,CAAC,QAAQ,CAAC,MAAM,QAAQ;IAC9B,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;MAMrB;IAGI,OAAO;CA+HhB"}
@@ -10,6 +10,7 @@ Object.defineProperty(exports, "Start", {
10
10
  });
11
11
  const _utils = require("../../utils");
12
12
  const _utils1 = require("../utils");
13
+ const _types = require("./types");
13
14
  function _define_property(obj, key, value) {
14
15
  if (key in obj) {
15
16
  Object.defineProperty(obj, key, {
@@ -42,10 +43,7 @@ var StartProcesses = /*#__PURE__*/ function(StartProcesses) {
42
43
  StartProcesses[StartProcesses["BundlePackage"] = 6] = "BundlePackage";
43
44
  return StartProcesses;
44
45
  }(StartProcesses || {});
45
- class Start {
46
- description() {
47
- return 'run project in development mode';
48
- }
46
+ class Start extends _types.Command {
49
47
  async execute() {
50
48
  (0, _utils1.checkArgs)(this.args, {
51
49
  obsolete: [
@@ -169,13 +167,32 @@ class Start {
169
167
  });
170
168
  await processTree.run();
171
169
  }
172
- constructor(args){
173
- _define_property(this, "args", void 0);
174
- _define_property(this, "greedy", void 0);
175
- this.args = args;
176
- this.greedy = true;
177
- }
178
170
  }
171
+ _define_property(Start, "description", 'Run project in development mode');
172
+ _define_property(Start, "greedy", true);
173
+ _define_property(Start, "options", {
174
+ 'config': {
175
+ string: true,
176
+ hidden: true,
177
+ description: 'Use specified configuration'
178
+ },
179
+ 'code-coverage': {
180
+ boolean: true,
181
+ description: 'Instrument code for coverage analysis?'
182
+ },
183
+ 'ignore': {
184
+ array: true,
185
+ description: 'Packages to skip'
186
+ },
187
+ 'scope': {
188
+ array: true,
189
+ description: 'Packages to run and watch'
190
+ },
191
+ 'use-tsc': {
192
+ boolean: true,
193
+ description: 'Use tsc to compile packages?'
194
+ }
195
+ });
179
196
  _ts_decorate([
180
197
  _utils.logErrors,
181
198
  _ts_metadata("design:type", Function),