@servicetitan/startup 33.1.0 → 34.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (449) hide show
  1. package/dist/cli/commands/build.d.ts +48 -22
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +72 -52
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/bundle-package.d.ts +54 -10
  6. package/dist/cli/commands/bundle-package.d.ts.map +1 -1
  7. package/dist/cli/commands/bundle-package.js +40 -0
  8. package/dist/cli/commands/bundle-package.js.map +1 -1
  9. package/dist/cli/commands/clean.d.ts +4 -0
  10. package/dist/cli/commands/clean.d.ts.map +1 -1
  11. package/dist/cli/commands/clean.js +50 -16
  12. package/dist/cli/commands/clean.js.map +1 -1
  13. package/dist/cli/commands/convert-eslint-config.d.ts +1 -1
  14. package/dist/cli/commands/convert-eslint-config.d.ts.map +1 -1
  15. package/dist/cli/commands/convert-eslint-config.js +2 -15
  16. package/dist/cli/commands/convert-eslint-config.js.map +1 -1
  17. package/dist/cli/commands/eslint.d.ts +29 -7
  18. package/dist/cli/commands/eslint.d.ts.map +1 -1
  19. package/dist/cli/commands/eslint.js +18 -6
  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 +6 -0
  23. package/dist/cli/commands/get-command.js.map +1 -1
  24. package/dist/cli/commands/index.d.ts +2 -2
  25. package/dist/cli/commands/index.d.ts.map +1 -1
  26. package/dist/cli/commands/index.js +2 -2
  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 +8 -6
  31. package/dist/cli/commands/init.js.map +1 -1
  32. package/dist/cli/commands/install.d.ts +27 -15
  33. package/dist/cli/commands/install.d.ts.map +1 -1
  34. package/dist/cli/commands/install.js +18 -16
  35. package/dist/cli/commands/install.js.map +1 -1
  36. package/dist/cli/commands/kendo-ui-license.d.ts +1 -0
  37. package/dist/cli/commands/kendo-ui-license.d.ts.map +1 -1
  38. package/dist/cli/commands/kendo-ui-license.js +1 -0
  39. package/dist/cli/commands/kendo-ui-license.js.map +1 -1
  40. package/dist/cli/commands/lint.d.ts +51 -17
  41. package/dist/cli/commands/lint.d.ts.map +1 -1
  42. package/dist/cli/commands/lint.js +36 -26
  43. package/dist/cli/commands/lint.js.map +1 -1
  44. package/dist/cli/commands/mfe-check.d.ts +52 -0
  45. package/dist/cli/commands/mfe-check.d.ts.map +1 -0
  46. package/dist/cli/commands/mfe-check.js +145 -0
  47. package/dist/cli/commands/mfe-check.js.map +1 -0
  48. package/dist/cli/commands/mfe-generate-metadata.d.ts +20 -0
  49. package/dist/cli/commands/mfe-generate-metadata.d.ts.map +1 -0
  50. package/dist/cli/commands/mfe-generate-metadata.js +93 -0
  51. package/dist/cli/commands/mfe-generate-metadata.js.map +1 -0
  52. package/dist/cli/commands/mfe-list.d.ts +52 -15
  53. package/dist/cli/commands/mfe-list.d.ts.map +1 -1
  54. package/dist/cli/commands/mfe-list.js +42 -29
  55. package/dist/cli/commands/mfe-list.js.map +1 -1
  56. package/dist/cli/commands/mfe-package-clean.d.ts +34 -15
  57. package/dist/cli/commands/mfe-package-clean.d.ts.map +1 -1
  58. package/dist/cli/commands/mfe-package-clean.js +43 -34
  59. package/dist/cli/commands/mfe-package-clean.js.map +1 -1
  60. package/dist/cli/commands/mfe-package-publish.d.ts +60 -22
  61. package/dist/cli/commands/mfe-package-publish.d.ts.map +1 -1
  62. package/dist/cli/commands/mfe-package-publish.js +137 -78
  63. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  64. package/dist/cli/commands/mfe-package-rollback.d.ts +40 -0
  65. package/dist/cli/commands/mfe-package-rollback.d.ts.map +1 -0
  66. package/dist/cli/commands/mfe-package-rollback.js +119 -0
  67. package/dist/cli/commands/mfe-package-rollback.js.map +1 -0
  68. package/dist/cli/commands/mfe-publish.d.ts +36 -11
  69. package/dist/cli/commands/mfe-publish.d.ts.map +1 -1
  70. package/dist/cli/commands/mfe-publish.js +72 -22
  71. package/dist/cli/commands/mfe-publish.js.map +1 -1
  72. package/dist/cli/commands/prepare-package.d.ts +14 -5
  73. package/dist/cli/commands/prepare-package.d.ts.map +1 -1
  74. package/dist/cli/commands/prepare-package.js +20 -0
  75. package/dist/cli/commands/prepare-package.js.map +1 -1
  76. package/dist/cli/commands/review/review.d.ts +17 -8
  77. package/dist/cli/commands/review/review.d.ts.map +1 -1
  78. package/dist/cli/commands/review/review.js +16 -21
  79. package/dist/cli/commands/review/review.js.map +1 -1
  80. package/dist/cli/commands/review/rules/index.d.ts.map +1 -1
  81. package/dist/cli/commands/review/rules/index.js +3 -1
  82. package/dist/cli/commands/review/rules/index.js.map +1 -1
  83. package/dist/cli/commands/review/rules/no-deprecated-content-base.js.map +1 -1
  84. package/dist/cli/commands/review/rules/prefer-open-ended-peer-dependencies.js.map +1 -1
  85. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js +4 -4
  86. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js.map +1 -1
  87. package/dist/cli/commands/review/rules/require-one-collection-version.js +1 -2
  88. package/dist/cli/commands/review/rules/require-one-collection-version.js.map +1 -1
  89. package/dist/cli/commands/review/rules/require-one-uikit-version.d.ts.map +1 -1
  90. package/dist/cli/commands/review/rules/require-one-uikit-version.js +1 -0
  91. package/dist/cli/commands/review/rules/require-one-uikit-version.js.map +1 -1
  92. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.d.ts.map +1 -1
  93. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.js +8 -8
  94. package/dist/cli/commands/review/rules/require-project-version-in-root-node-modules.js.map +1 -1
  95. package/dist/cli/commands/review/rules/require-tsconfig-references.d.ts +24 -0
  96. package/dist/cli/commands/review/rules/require-tsconfig-references.d.ts.map +1 -0
  97. package/dist/cli/commands/review/rules/require-tsconfig-references.js +146 -0
  98. package/dist/cli/commands/review/rules/require-tsconfig-references.js.map +1 -0
  99. package/dist/cli/commands/review/utils/collate-dependencies.js +1 -3
  100. package/dist/cli/commands/review/utils/collate-dependencies.js.map +1 -1
  101. package/dist/cli/commands/review/utils/compare-version.js +2 -2
  102. package/dist/cli/commands/review/utils/compare-version.js.map +1 -1
  103. package/dist/cli/commands/review/utils/set-version.js +1 -1
  104. package/dist/cli/commands/review/utils/set-version.js.map +1 -1
  105. package/dist/cli/commands/run-task.d.ts +29 -7
  106. package/dist/cli/commands/run-task.d.ts.map +1 -1
  107. package/dist/cli/commands/run-task.js +21 -8
  108. package/dist/cli/commands/run-task.js.map +1 -1
  109. package/dist/cli/commands/run-task.test.js +14 -2
  110. package/dist/cli/commands/run-task.test.js.map +1 -1
  111. package/dist/cli/commands/start.d.ts +38 -18
  112. package/dist/cli/commands/start.d.ts.map +1 -1
  113. package/dist/cli/commands/start.js +65 -45
  114. package/dist/cli/commands/start.js.map +1 -1
  115. package/dist/cli/commands/stylelint.d.ts +29 -7
  116. package/dist/cli/commands/stylelint.d.ts.map +1 -1
  117. package/dist/cli/commands/stylelint.js +18 -6
  118. package/dist/cli/commands/stylelint.js.map +1 -1
  119. package/dist/cli/commands/test/runners/vitest.js +1 -1
  120. package/dist/cli/commands/test/runners/vitest.js.map +1 -1
  121. package/dist/cli/commands/test/tests.d.ts +25 -5
  122. package/dist/cli/commands/test/tests.d.ts.map +1 -1
  123. package/dist/cli/commands/test/tests.js +22 -14
  124. package/dist/cli/commands/test/tests.js.map +1 -1
  125. package/dist/cli/commands/types.d.ts +51 -10
  126. package/dist/cli/commands/types.d.ts.map +1 -1
  127. package/dist/cli/commands/types.js +1 -0
  128. package/dist/cli/commands/types.js.map +1 -1
  129. package/dist/cli/commands/upload-sourcemaps.d.ts +26 -6
  130. package/dist/cli/commands/upload-sourcemaps.d.ts.map +1 -1
  131. package/dist/cli/commands/upload-sourcemaps.js +27 -4
  132. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  133. package/dist/cli/commands/utils.d.ts +4 -0
  134. package/dist/cli/commands/utils.d.ts.map +1 -0
  135. package/dist/cli/commands/utils.js +28 -0
  136. package/dist/cli/commands/utils.js.map +1 -0
  137. package/dist/cli/index.js +8 -5
  138. package/dist/cli/index.js.map +1 -1
  139. package/dist/cli/tasks/cli-task.d.ts.map +1 -1
  140. package/dist/cli/tasks/cli-task.js +1 -1
  141. package/dist/cli/tasks/cli-task.js.map +1 -1
  142. package/dist/cli/tasks/swc-compile-package.d.ts +1 -2
  143. package/dist/cli/tasks/swc-compile-package.d.ts.map +1 -1
  144. package/dist/cli/tasks/swc-compile-package.js.map +1 -1
  145. package/dist/cli/tasks/tsc-compile-package.d.ts +1 -2
  146. package/dist/cli/tasks/tsc-compile-package.d.ts.map +1 -1
  147. package/dist/cli/tasks/tsc-compile-package.js.map +1 -1
  148. package/dist/cli/tasks/tsc-compile.d.ts +1 -2
  149. package/dist/cli/tasks/tsc-compile.d.ts.map +1 -1
  150. package/dist/cli/tasks/tsc-compile.js.map +1 -1
  151. package/dist/cli/utils/bundle.d.ts.map +1 -1
  152. package/dist/cli/utils/bundle.js +2 -2
  153. package/dist/cli/utils/bundle.js.map +1 -1
  154. package/dist/cli/utils/check-startup-location.d.ts +4 -0
  155. package/dist/cli/utils/check-startup-location.d.ts.map +1 -0
  156. package/dist/cli/utils/check-startup-location.js +27 -0
  157. package/dist/cli/utils/check-startup-location.js.map +1 -0
  158. package/dist/cli/utils/cli-npm.d.ts +6 -0
  159. package/dist/cli/utils/cli-npm.d.ts.map +1 -1
  160. package/dist/cli/utils/cli-npm.js +25 -3
  161. package/dist/cli/utils/cli-npm.js.map +1 -1
  162. package/dist/cli/utils/compile-less.js +1 -1
  163. package/dist/cli/utils/compile-less.js.map +1 -1
  164. package/dist/cli/utils/constants.d.ts +2 -0
  165. package/dist/cli/utils/constants.d.ts.map +1 -0
  166. package/dist/cli/utils/constants.js +13 -0
  167. package/dist/cli/utils/constants.js.map +1 -0
  168. package/dist/cli/utils/copy-files.d.ts.map +1 -1
  169. package/dist/cli/utils/copy-files.js.map +1 -1
  170. package/dist/cli/utils/eslint.d.ts +1 -2
  171. package/dist/cli/utils/eslint.d.ts.map +1 -1
  172. package/dist/cli/utils/eslint.js.map +1 -1
  173. package/dist/cli/utils/index.d.ts +2 -0
  174. package/dist/cli/utils/index.d.ts.map +1 -1
  175. package/dist/cli/utils/index.js +2 -0
  176. package/dist/cli/utils/index.js.map +1 -1
  177. package/dist/cli/utils/is-module-installed.js +1 -1
  178. package/dist/cli/utils/is-module-installed.js.map +1 -1
  179. package/dist/cli/utils/lerna-exec.d.ts.map +1 -1
  180. package/dist/cli/utils/lerna-exec.js +1 -3
  181. package/dist/cli/utils/lerna-exec.js.map +1 -1
  182. package/dist/cli/utils/process-tree.js.map +1 -1
  183. package/dist/cli/utils/set-node-options.js +2 -4
  184. package/dist/cli/utils/set-node-options.js.map +1 -1
  185. package/dist/cli/utils/stylelint.d.ts +1 -2
  186. package/dist/cli/utils/stylelint.d.ts.map +1 -1
  187. package/dist/cli/utils/stylelint.js.map +1 -1
  188. package/dist/index.d.ts +1 -1
  189. package/dist/index.d.ts.map +1 -1
  190. package/dist/index.js +1 -1
  191. package/dist/index.js.map +1 -1
  192. package/dist/jest/resolver.js +2 -2
  193. package/dist/jest/resolver.js.map +1 -1
  194. package/dist/jest/svg-transformer.d.ts.map +1 -1
  195. package/dist/jest/svg-transformer.js.map +1 -1
  196. package/dist/utils/find-packages.js +1 -1
  197. package/dist/utils/find-packages.js.map +1 -1
  198. package/dist/utils/format-relative-date.js +1 -1
  199. package/dist/utils/format-relative-date.js.map +1 -1
  200. package/dist/utils/get-configuration.d.ts +3 -0
  201. package/dist/utils/get-configuration.d.ts.map +1 -1
  202. package/dist/utils/get-configuration.js +14 -11
  203. package/dist/utils/get-configuration.js.map +1 -1
  204. package/dist/utils/get-destination-folders.d.ts.map +1 -1
  205. package/dist/utils/get-destination-folders.js.map +1 -1
  206. package/dist/utils/get-folders.d.ts.map +1 -1
  207. package/dist/utils/get-folders.js.map +1 -1
  208. package/dist/utils/get-jest-config.js +1 -1
  209. package/dist/utils/get-jest-config.js.map +1 -1
  210. package/dist/utils/get-package-data.js +1 -1
  211. package/dist/utils/get-package-data.js.map +1 -1
  212. package/dist/utils/get-packages.js.map +1 -1
  213. package/dist/utils/index.d.ts +1 -0
  214. package/dist/utils/index.d.ts.map +1 -1
  215. package/dist/utils/index.js +1 -0
  216. package/dist/utils/index.js.map +1 -1
  217. package/dist/utils/load-shared-dependencies.js.map +1 -1
  218. package/dist/utils/prettify.d.ts +13 -0
  219. package/dist/utils/prettify.d.ts.map +1 -0
  220. package/dist/utils/prettify.js +48 -0
  221. package/dist/utils/prettify.js.map +1 -0
  222. package/dist/utils/read-json.js +1 -1
  223. package/dist/utils/read-json.js.map +1 -1
  224. package/dist/utils/transform-svg.js +2 -2
  225. package/dist/utils/transform-svg.js.map +1 -1
  226. package/dist/webpack/configs/cache-config.js +1 -1
  227. package/dist/webpack/configs/cache-config.js.map +1 -1
  228. package/dist/webpack/configs/optimization-config.js +3 -4
  229. package/dist/webpack/configs/optimization-config.js.map +1 -1
  230. package/dist/webpack/configs/output-config.js +1 -1
  231. package/dist/webpack/configs/output-config.js.map +1 -1
  232. package/dist/webpack/configs/plugins/assets-manifest-plugin.d.ts.map +1 -1
  233. package/dist/webpack/configs/plugins/assets-manifest-plugin.js +5 -5
  234. package/dist/webpack/configs/plugins/assets-manifest-plugin.js.map +1 -1
  235. package/dist/webpack/configs/plugins/bundle-analyser-plugin.d.ts.map +1 -1
  236. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js +1 -1
  237. package/dist/webpack/configs/plugins/bundle-analyser-plugin.js.map +1 -1
  238. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.d.ts.map +1 -1
  239. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js +6 -9
  240. package/dist/webpack/configs/plugins/define-exposed-dependencies-plugin.js.map +1 -1
  241. package/dist/webpack/configs/plugins/html-tags-plugin.js +1 -1
  242. package/dist/webpack/configs/plugins/html-tags-plugin.js.map +1 -1
  243. package/dist/webpack/configs/plugins/ignore-plugin/check-resource.js +1 -1
  244. package/dist/webpack/configs/plugins/ignore-plugin/check-resource.js.map +1 -1
  245. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.d.ts.map +1 -1
  246. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js.map +1 -1
  247. package/dist/webpack/configs/plugins/moment-locales-plugin.js +1 -1
  248. package/dist/webpack/configs/plugins/moment-locales-plugin.js.map +1 -1
  249. package/dist/webpack/configs/plugins/watch-run-plugin.d.ts.map +1 -1
  250. package/dist/webpack/configs/plugins/watch-run-plugin.js.map +1 -1
  251. package/dist/webpack/configs/types.d.ts +1 -0
  252. package/dist/webpack/configs/types.d.ts.map +1 -1
  253. package/dist/webpack/configs/utils/build-metadata.d.ts +10 -0
  254. package/dist/webpack/configs/utils/build-metadata.d.ts.map +1 -0
  255. package/dist/webpack/configs/utils/build-metadata.js +50 -0
  256. package/dist/webpack/configs/utils/build-metadata.js.map +1 -0
  257. package/dist/webpack/configs/utils/generate-metadata.d.ts.map +1 -1
  258. package/dist/webpack/configs/utils/generate-metadata.js +5 -24
  259. package/dist/webpack/configs/utils/generate-metadata.js.map +1 -1
  260. package/dist/webpack/configs/utils/get-exposed-dependencies.d.ts +3 -0
  261. package/dist/webpack/configs/utils/get-exposed-dependencies.d.ts.map +1 -0
  262. package/dist/webpack/configs/utils/get-exposed-dependencies.js +21 -0
  263. package/dist/webpack/configs/utils/get-exposed-dependencies.js.map +1 -0
  264. package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js +1 -1
  265. package/dist/webpack/configs/utils/get-launchdarkly-sdk-version.js.map +1 -1
  266. package/dist/webpack/configs/utils/index.d.ts +1 -0
  267. package/dist/webpack/configs/utils/index.d.ts.map +1 -1
  268. package/dist/webpack/configs/utils/index.js +1 -0
  269. package/dist/webpack/configs/utils/index.js.map +1 -1
  270. package/dist/webpack/create-webpack-config.js +10 -4
  271. package/dist/webpack/create-webpack-config.js.map +1 -1
  272. package/dist/webpack/loaders/expose-loader/index.d.ts.map +1 -1
  273. package/dist/webpack/loaders/expose-loader/index.js.map +1 -1
  274. package/dist/webpack/loaders/expose-loader/runtime/get-global-this.js +1 -1
  275. package/dist/webpack/loaders/expose-loader/runtime/get-global-this.js.map +1 -1
  276. package/dist/webpack/loaders/expose-loader/utils/get-new-user-request.js +2 -2
  277. package/dist/webpack/loaders/expose-loader/utils/get-new-user-request.js.map +1 -1
  278. package/dist/webpack/utils/stringify-config.js +2 -2
  279. package/dist/webpack/utils/stringify-config.js.map +1 -1
  280. package/dist/webpack/utils/testing/get-compiler.d.ts.map +1 -1
  281. package/dist/webpack/utils/testing/get-compiler.js +1 -1
  282. package/dist/webpack/utils/testing/get-compiler.js.map +1 -1
  283. package/dist/webpack/utils/testing/get-errors.d.ts.map +1 -1
  284. package/dist/webpack/utils/testing/get-errors.js.map +1 -1
  285. package/dist/webpack/utils/testing/get-warnings.d.ts.map +1 -1
  286. package/dist/webpack/utils/testing/get-warnings.js.map +1 -1
  287. package/dist/webpack/utils/testing/read-asset.d.ts.map +1 -1
  288. package/dist/webpack/utils/testing/read-asset.js +1 -1
  289. package/dist/webpack/utils/testing/read-asset.js.map +1 -1
  290. package/dist/webpack/utils/testing/read-assets.d.ts.map +1 -1
  291. package/dist/webpack/utils/testing/read-assets.js.map +1 -1
  292. package/package.json +35 -41
  293. package/src/cli/commands/__tests__/build.test.ts +32 -9
  294. package/src/cli/commands/__tests__/bundle-package.test.ts +2 -1
  295. package/src/cli/commands/__tests__/clean.test.ts +99 -8
  296. package/src/cli/commands/__tests__/convert-eslint-config.test.ts +14 -9
  297. package/src/cli/commands/__tests__/eslint.test.ts +1 -1
  298. package/src/cli/commands/__tests__/get-command.test.ts +3 -1
  299. package/src/cli/commands/__tests__/init.test.ts +14 -1
  300. package/src/cli/commands/__tests__/install.test.ts +6 -2
  301. package/src/cli/commands/__tests__/kendo-ui-license.test.ts +7 -2
  302. package/src/cli/commands/__tests__/lint.test.ts +4 -2
  303. package/src/cli/commands/__tests__/mfe-check.test.ts +346 -0
  304. package/src/cli/commands/__tests__/mfe-generate-metadata.test.ts +160 -0
  305. package/src/cli/commands/__tests__/mfe-list.test.ts +8 -1
  306. package/src/cli/commands/__tests__/mfe-package-clean.test.ts +0 -1
  307. package/src/cli/commands/__tests__/mfe-package-publish.test.ts +322 -93
  308. package/src/cli/commands/__tests__/mfe-package-rollback.test.ts +196 -0
  309. package/src/cli/commands/__tests__/mfe-publish.test.ts +65 -5
  310. package/src/cli/commands/__tests__/prepare-package.test.ts +3 -0
  311. package/src/cli/commands/__tests__/start.test.ts +30 -7
  312. package/src/cli/commands/__tests__/stylelint.test.ts +1 -1
  313. package/src/cli/commands/__tests__/styles-check.test.ts +1 -2
  314. package/src/cli/commands/__tests__/upload-sourcemaps.test.ts +3 -6
  315. package/src/cli/commands/build.ts +35 -26
  316. package/src/cli/commands/bundle-package.ts +11 -10
  317. package/src/cli/commands/clean.ts +51 -5
  318. package/src/cli/commands/convert-eslint-config.ts +3 -12
  319. package/src/cli/commands/eslint.ts +9 -11
  320. package/src/cli/commands/get-command.ts +6 -1
  321. package/src/cli/commands/index.ts +2 -2
  322. package/src/cli/commands/init.ts +7 -9
  323. package/src/cli/commands/install.ts +11 -13
  324. package/src/cli/commands/kendo-ui-license.ts +1 -1
  325. package/src/cli/commands/lint.ts +12 -18
  326. package/src/cli/commands/mfe-check.ts +166 -0
  327. package/src/cli/commands/mfe-generate-metadata.ts +69 -0
  328. package/src/cli/commands/mfe-list.ts +28 -30
  329. package/src/cli/commands/mfe-package-clean.ts +29 -34
  330. package/src/cli/commands/mfe-package-publish.ts +153 -87
  331. package/src/cli/commands/mfe-package-rollback.ts +100 -0
  332. package/src/cli/commands/mfe-publish.ts +80 -27
  333. package/src/cli/commands/prepare-package.ts +6 -5
  334. package/src/cli/commands/review/__tests__/review.test.ts +18 -19
  335. package/src/cli/commands/review/review.ts +11 -20
  336. package/src/cli/commands/review/rules/__tests__/no-deprecated-content-base.test.ts +1 -1
  337. package/src/cli/commands/review/rules/__tests__/no-deprecated-startup-install.test.ts +0 -1
  338. package/src/cli/commands/review/rules/__tests__/no-direct-peer-dependencies.test.ts +1 -1
  339. package/src/cli/commands/review/rules/__tests__/no-typescript-entry-point.test.ts +0 -1
  340. package/src/cli/commands/review/rules/__tests__/require-all-react-dependencies.test.ts +0 -1
  341. package/src/cli/commands/review/rules/__tests__/require-compatible-launch-darkly-sdk.test.ts +2 -2
  342. package/src/cli/commands/review/rules/__tests__/require-explicit-side-effects.test.ts +0 -1
  343. package/src/cli/commands/review/rules/__tests__/require-npmrc.test.ts +0 -1
  344. package/src/cli/commands/review/rules/__tests__/require-one-anvil-uikit-contrib-version.test.ts +1 -2
  345. package/src/cli/commands/review/rules/__tests__/require-one-collection-version.test.ts +0 -1
  346. package/src/cli/commands/review/rules/__tests__/require-one-package-version.test.ts +0 -1
  347. package/src/cli/commands/review/rules/__tests__/require-one-react-version.test.ts +0 -1
  348. package/src/cli/commands/review/rules/__tests__/require-one-uikit-version.test.ts +1 -1
  349. package/src/cli/commands/review/rules/__tests__/require-project-version-in-root-node-modules.test.ts +2 -3
  350. package/src/cli/commands/review/rules/__tests__/require-servicetitan-scope.test.ts +0 -1
  351. package/src/cli/commands/review/rules/__tests__/require-tsconfig-references.test.ts +315 -0
  352. package/src/cli/commands/review/rules/index.ts +2 -0
  353. package/src/cli/commands/review/rules/require-compatible-launch-darkly-sdk.ts +1 -1
  354. package/src/cli/commands/review/rules/require-one-uikit-version.ts +1 -0
  355. package/src/cli/commands/review/rules/require-project-version-in-root-node-modules.ts +3 -3
  356. package/src/cli/commands/review/rules/require-tsconfig-references.ts +157 -0
  357. package/src/cli/commands/review/utils/__tests__/set-version.test.ts +0 -1
  358. package/src/cli/commands/run-task.test.ts +15 -3
  359. package/src/cli/commands/run-task.ts +12 -14
  360. package/src/cli/commands/start.ts +75 -59
  361. package/src/cli/commands/stylelint.ts +9 -11
  362. package/src/cli/commands/test/runners/__tests__/jest.test.ts +1 -2
  363. package/src/cli/commands/test/runners/vitest.ts +1 -1
  364. package/src/cli/commands/test/tests.ts +13 -15
  365. package/src/cli/commands/types.ts +53 -7
  366. package/src/cli/commands/upload-sourcemaps.ts +14 -12
  367. package/src/cli/commands/utils.ts +6 -0
  368. package/src/cli/index.ts +11 -7
  369. package/src/cli/tasks/__tests__/cli-task.test.ts +1 -1
  370. package/src/cli/tasks/__tests__/swc-compile-package.test.ts +3 -1
  371. package/src/cli/tasks/__tests__/tsc-compile-package.test.ts +2 -0
  372. package/src/cli/tasks/__tests__/tsc-compile.test.ts +3 -13
  373. package/src/cli/tasks/cli-task.ts +1 -1
  374. package/src/cli/tasks/swc-compile-package.ts +1 -3
  375. package/src/cli/tasks/tsc-compile-package.ts +1 -2
  376. package/src/cli/tasks/tsc-compile.ts +1 -2
  377. package/src/cli/utils/__tests__/bundle.test.ts +1 -2
  378. package/src/cli/utils/__tests__/check-args.test.ts +1 -1
  379. package/src/cli/utils/__tests__/check-startup-location.test.ts +88 -0
  380. package/src/cli/utils/__tests__/cli-git.test.ts +1 -2
  381. package/src/cli/utils/__tests__/cli-npm.test.ts +51 -2
  382. package/src/cli/utils/__tests__/cli-os.test.ts +1 -2
  383. package/src/cli/utils/__tests__/compile.test.ts +1 -1
  384. package/src/cli/utils/__tests__/copy-files.test.ts +0 -1
  385. package/src/cli/utils/__tests__/eslint.test.ts +1 -1
  386. package/src/cli/utils/__tests__/lerna-exec.test.ts +1 -2
  387. package/src/cli/utils/__tests__/maybe-create-git-folder.test.ts +0 -1
  388. package/src/cli/utils/__tests__/set-node-options.test.ts +0 -1
  389. package/src/cli/utils/__tests__/stylelint.test.ts +1 -1
  390. package/src/cli/utils/bundle.ts +1 -3
  391. package/src/cli/utils/check-startup-location.ts +21 -0
  392. package/src/cli/utils/cli-npm.ts +22 -0
  393. package/src/cli/utils/compile-less.ts +1 -1
  394. package/src/cli/utils/constants.ts +1 -0
  395. package/src/cli/utils/copy-files.ts +0 -1
  396. package/src/cli/utils/eslint.ts +1 -3
  397. package/src/cli/utils/index.ts +2 -0
  398. package/src/cli/utils/lerna-exec.ts +0 -1
  399. package/src/cli/utils/stylelint.ts +1 -2
  400. package/src/index.ts +1 -1
  401. package/src/jest/svg-transformer.ts +0 -1
  402. package/src/utils/__tests__/get-branch-configs.test.ts +0 -1
  403. package/src/utils/__tests__/get-configuration.test.ts +0 -1
  404. package/src/utils/__tests__/get-destination-folders.test.ts +1 -2
  405. package/src/utils/__tests__/get-folders.test.ts +0 -1
  406. package/src/utils/__tests__/get-jest-config.test.ts +1 -2
  407. package/src/utils/__tests__/get-package-data.test.ts +1 -2
  408. package/src/utils/__tests__/get-packages.test.ts +1 -1
  409. package/src/utils/__tests__/get-startup-version.test.ts +0 -1
  410. package/src/utils/__tests__/get-tsconfig.test.ts +0 -1
  411. package/src/utils/__tests__/load-shared-dependencies.test.ts +1 -1
  412. package/src/utils/__tests__/log.test.ts +1 -1
  413. package/src/utils/__tests__/prettify.test.ts +80 -0
  414. package/src/utils/__tests__/read-json.test.ts +0 -1
  415. package/src/utils/find-packages.ts +1 -1
  416. package/src/utils/get-configuration.ts +8 -7
  417. package/src/utils/get-destination-folders.ts +0 -1
  418. package/src/utils/get-folders.ts +0 -1
  419. package/src/utils/get-jest-config.ts +1 -1
  420. package/src/utils/index.ts +1 -0
  421. package/src/utils/prettify.ts +36 -0
  422. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +6 -2
  423. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +7 -4
  424. package/src/webpack/__tests__/create-webpack-config.test.ts +8 -4
  425. package/src/webpack/configs/cache-config.ts +1 -1
  426. package/src/webpack/configs/plugins/assets-manifest-plugin.ts +1 -1
  427. package/src/webpack/configs/plugins/bundle-analyser-plugin.ts +2 -2
  428. package/src/webpack/configs/plugins/define-exposed-dependencies-plugin.ts +6 -15
  429. package/src/webpack/configs/plugins/ignore-plugin/__tests__/get-package-json.test.ts +1 -1
  430. package/src/webpack/configs/plugins/ignore-plugin/__tests__/is-optional-peer-dependency.test.ts +1 -1
  431. package/src/webpack/configs/plugins/ignore-plugin/ignore-plugin.ts +0 -1
  432. package/src/webpack/configs/plugins/watch-run-plugin.ts +0 -1
  433. package/src/webpack/configs/types.ts +1 -0
  434. package/src/webpack/configs/utils/__tests__/build-metadata.test.ts +71 -0
  435. package/src/webpack/configs/utils/__tests__/generate-metadata.test.ts +42 -46
  436. package/src/webpack/configs/utils/__tests__/get-exposed-dependencies.test.ts +39 -0
  437. package/src/webpack/configs/utils/__tests__/get-web-components-version.test.ts +0 -1
  438. package/src/webpack/configs/utils/build-metadata.ts +40 -0
  439. package/src/webpack/configs/utils/generate-metadata.ts +7 -21
  440. package/src/webpack/configs/utils/get-exposed-dependencies.ts +17 -0
  441. package/src/webpack/configs/utils/index.ts +1 -0
  442. package/src/webpack/create-webpack-config.ts +3 -3
  443. package/src/webpack/loaders/expose-loader/__tests__/index.test.ts +0 -2
  444. package/src/webpack/loaders/expose-loader/index.ts +0 -1
  445. package/src/webpack/utils/testing/get-compiler.ts +1 -3
  446. package/src/webpack/utils/testing/get-errors.ts +0 -1
  447. package/src/webpack/utils/testing/get-warnings.ts +0 -1
  448. package/src/webpack/utils/testing/read-asset.ts +1 -2
  449. package/src/webpack/utils/testing/read-assets.ts +0 -1
@@ -9,10 +9,11 @@ Object.defineProperty(exports, "MFEPublish", {
9
9
  }
10
10
  });
11
11
  const _utils = require("../../utils");
12
+ const _utils1 = require("../utils");
12
13
  const _mfepackageclean = require("./mfe-package-clean");
13
14
  const _mfepackagepublish = require("./mfe-package-publish");
15
+ const _mfepackagerollback = require("./mfe-package-rollback");
14
16
  const _types = require("./types");
15
- const _utils1 = require("../utils");
16
17
  function _define_property(obj, key, value) {
17
18
  if (key in obj) {
18
19
  Object.defineProperty(obj, key, {
@@ -35,41 +36,61 @@ function _ts_decorate(decorators, target, key, desc) {
35
36
  function _ts_metadata(k, v) {
36
37
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
37
38
  }
39
+ const mfePublishOwnOptions = {
40
+ clean: {
41
+ boolean: true,
42
+ description: 'Unpublish old versions'
43
+ },
44
+ concurrency: {
45
+ number: true,
46
+ description: 'Publish/unpublish the specified number of packages concurrently',
47
+ defaultDescription: '1'
48
+ },
49
+ rollback: {
50
+ boolean: true,
51
+ description: 'Rollback specified tag to the previous version'
52
+ },
53
+ scope: {
54
+ array: true,
55
+ string: true,
56
+ description: 'Publish/unpublish only the specified packages'
57
+ }
58
+ };
38
59
  class MFEPublish extends _types.Command {
39
60
  static get options() {
40
- const publishOptions = Object.entries(_mfepackagepublish.MFEPackagePublish.options).reduce((result, [key, value])=>{
61
+ const publishOptions = Object.entries(_mfepackagepublish.mfePackagePublishOptions).reduce((result, [key, value])=>{
41
62
  result[key] = {
42
63
  group: 'Publish Options:',
43
64
  ...value
44
65
  };
45
66
  return result;
46
67
  }, {});
47
- const cleanOptions = Object.entries(_mfepackageclean.MFEPackageClean.options).reduce((result, [key, value])=>{
48
- result[Object.hasOwn(publishOptions, key) ? `${key}\u00A0` : key] = {
68
+ const cleanOptions = Object.entries(_mfepackageclean.mfePackageCleanOptions).reduce((result, [key, value])=>{
69
+ // no-break space suffix prevents key collisions
70
+ result[`${key}\u00A0`] = {
49
71
  group: 'Clean Options:',
50
72
  ...value
51
73
  };
52
74
  return result;
53
75
  }, {});
76
+ const rollbackOptions = Object.entries(_mfepackagerollback.mfePackageRollbackOptions).reduce((result, [key, value])=>{
77
+ const optionProps = Object.fromEntries(Object.entries(value).filter(([k])=>k !== 'required'));
78
+ // double no-break space suffix prevents key collisions
79
+ result[`${key}\u00A0\u00A0`] = {
80
+ group: 'Rollback Options:',
81
+ ...optionProps
82
+ };
83
+ return result;
84
+ }, {});
54
85
  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
- },
86
+ ...mfePublishOwnOptions,
68
87
  ...publishOptions,
69
- ...cleanOptions
88
+ ...cleanOptions,
89
+ ...rollbackOptions
70
90
  };
71
91
  }
72
92
  async execute() {
93
+ var _this_args_concurrency;
73
94
  const packages = (0, _utils.getPackages)({
74
95
  scope: this.args.scope,
75
96
  type: _utils.PackageType.Webpack
@@ -77,18 +98,27 @@ class MFEPublish extends _types.Command {
77
98
  if (!packages.length) {
78
99
  throw new Error('no packages found for publication');
79
100
  }
101
+ const isRollback = !!this.args.rollback;
80
102
  const isClean = !!this.args.clean;
81
- var _this_args_concurrency;
103
+ let cmdSuffix;
104
+ let options;
105
+ if (isRollback) {
106
+ cmdSuffix = 'rollback';
107
+ options = this.getRollbackOptions();
108
+ } else {
109
+ cmdSuffix = isClean ? 'clean' : 'publish';
110
+ options = isClean ? this.getCleanOptions() : this.getPublishOptions();
111
+ }
82
112
  await (0, _utils1.lernaExec)({
83
- 'cmd': `startup mfe-package-${isClean ? 'clean' : 'publish'}`,
113
+ 'cmd': `startup mfe-package-${cmdSuffix}`,
84
114
  'parallel': (_this_args_concurrency = this.args.concurrency) !== null && _this_args_concurrency !== void 0 ? _this_args_concurrency : 1,
85
115
  'scope': packages.map(({ name })=>name),
86
116
  'stream': true,
87
- '--': isClean ? this.getCleanOptions() : this.getPublishOptions()
117
+ '--': options
88
118
  });
89
119
  }
90
120
  getPublishOptions() {
91
- const { build, branch, dry, force, registry, tag, uploadSourcemaps } = this.args;
121
+ const { build, branch, dry, force, registry, tag, uploadSourcemaps, trackHistory } = this.args;
92
122
  return [
93
123
  ...[
94
124
  branch && `--branch ${branch}`
@@ -105,6 +135,12 @@ class MFEPublish extends _types.Command {
105
135
  ...[
106
136
  registry && `--registry ${registry}`
107
137
  ],
138
+ ...[
139
+ trackHistory === true && '--track-history'
140
+ ],
141
+ ...[
142
+ trackHistory === false && '--no-track-history'
143
+ ],
108
144
  ...[
109
145
  typeof tag === 'string' && `--tag ${tag}`
110
146
  ],
@@ -116,6 +152,20 @@ class MFEPublish extends _types.Command {
116
152
  ]
117
153
  ].filter((item)=>!!item);
118
154
  }
155
+ getRollbackOptions() {
156
+ const { dry, registry, tag } = this.args;
157
+ return [
158
+ ...[
159
+ dry && '--dry'
160
+ ],
161
+ ...[
162
+ registry && `--registry ${registry}`
163
+ ],
164
+ ...[
165
+ typeof tag === 'string' && `--tag ${tag}`
166
+ ]
167
+ ].filter((item)=>!!item);
168
+ }
119
169
  getCleanOptions() {
120
170
  const { all, branch, count, dry, registry } = this.args;
121
171
  return [
@@ -1 +1 @@
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
+ {"version":3,"sources":["../../../src/cli/commands/mfe-publish.ts"],"sourcesContent":["import { getPackages, isWebComponent, logErrors, PackageType } from '../../utils';\nimport { lernaExec } from '../utils';\nimport { mfePackageCleanOptions } from './mfe-package-clean';\nimport { mfePackagePublishOptions } from './mfe-package-publish';\nimport { mfePackageRollbackOptions } from './mfe-package-rollback';\nimport { Command, CommandOptions } from './types';\n\nconst mfePublishOwnOptions = {\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 rollback: {\n boolean: true,\n description: 'Rollback specified tag to the previous version',\n },\n scope: {\n array: true,\n string: true,\n description: 'Publish/unpublish only the specified packages',\n },\n} satisfies CommandOptions;\n\ntype MFEPublishOptions = typeof mfePublishOwnOptions &\n typeof mfePackagePublishOptions &\n typeof mfePackageCleanOptions &\n // make 'tag' not required for mfe-publish args, since it is only required for rollback\n Omit<typeof mfePackageRollbackOptions, 'tag'> & {\n tag: Omit<typeof mfePackageRollbackOptions.tag, 'required'>;\n };\n\nexport class MFEPublish extends Command<MFEPublishOptions> {\n static readonly description = 'Publish or unpublish MFE packages';\n static get options() {\n const publishOptions = Object.entries(mfePackagePublishOptions).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(mfePackageCleanOptions).reduce(\n (result, [key, value]) => {\n // no-break space suffix prevents key collisions\n result[`${key}\\u00A0`] = {\n group: 'Clean Options:',\n ...value,\n };\n return result;\n },\n {} as NonNullable<typeof Command.options>\n );\n\n const rollbackOptions = Object.entries(mfePackageRollbackOptions).reduce(\n (result, [key, value]) => {\n const optionProps = Object.fromEntries(\n Object.entries(value).filter(([k]) => k !== 'required')\n );\n // double no-break space suffix prevents key collisions\n result[`${key}\\u00A0\\u00A0`] = {\n group: 'Rollback Options:',\n ...optionProps,\n };\n return result;\n },\n {} as NonNullable<typeof Command.options>\n );\n\n return {\n ...mfePublishOwnOptions,\n ...publishOptions,\n ...cleanOptions,\n ...rollbackOptions,\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 isRollback = !!this.args.rollback;\n const isClean = !!this.args.clean;\n\n let cmdSuffix: string;\n let options: string[];\n\n if (isRollback) {\n cmdSuffix = 'rollback';\n options = this.getRollbackOptions();\n } else {\n cmdSuffix = isClean ? 'clean' : 'publish';\n options = isClean ? this.getCleanOptions() : this.getPublishOptions();\n }\n\n await lernaExec({\n 'cmd': `startup mfe-package-${cmdSuffix}`,\n 'parallel': this.args.concurrency ?? 1,\n 'scope': packages.map(({ name }) => name),\n 'stream': true,\n '--': options,\n });\n }\n\n getPublishOptions() {\n const { build, branch, dry, force, registry, tag, uploadSourcemaps, trackHistory } =\n this.args;\n return [\n ...[branch && `--branch ${branch}`],\n ...[build && `--build ${build}`],\n ...[dry && '--dry'],\n ...[force && '--force'],\n ...[registry && `--registry ${registry}`],\n ...[trackHistory === true && '--track-history'],\n ...[trackHistory === false && '--no-track-history'],\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 getRollbackOptions() {\n const { dry, registry, tag } = this.args;\n return [\n ...[dry && '--dry'],\n ...[registry && `--registry ${registry}`],\n ...[typeof tag === 'string' && `--tag ${tag}`],\n ].filter(item => !!item) as string[];\n }\n\n getCleanOptions() {\n const { all, branch, count, dry, registry } = this.args;\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","mfePublishOwnOptions","clean","boolean","description","concurrency","number","defaultDescription","rollback","scope","array","string","Command","options","publishOptions","Object","entries","mfePackagePublishOptions","reduce","result","key","value","group","cleanOptions","mfePackageCleanOptions","rollbackOptions","mfePackageRollbackOptions","optionProps","fromEntries","filter","k","execute","packages","getPackages","args","type","PackageType","Webpack","location","isWebComponent","length","Error","isRollback","isClean","cmdSuffix","getRollbackOptions","getCleanOptions","getPublishOptions","lernaExec","map","name","build","branch","dry","force","registry","tag","uploadSourcemaps","trackHistory","item","all","count"],"mappings":"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"}
@@ -1,8 +1,17 @@
1
- import { Command, CommandArgs } from './types';
2
- interface Args extends CommandArgs {
3
- watch?: boolean;
4
- }
5
- export declare class PreparePackage extends Command<Args> {
1
+ import { Command } from './types';
2
+ declare const options: {
3
+ watch: {
4
+ boolean: true;
5
+ hidden: true;
6
+ };
7
+ };
8
+ export declare class PreparePackage extends Command<typeof options> {
9
+ static readonly options: {
10
+ watch: {
11
+ boolean: true;
12
+ hidden: true;
13
+ };
14
+ };
6
15
  execute(): Promise<void>;
7
16
  }
8
17
  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,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"}
1
+ {"version":3,"file":"prepare-package.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/prepare-package.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAkB,MAAM,SAAS,CAAC;AAElD,QAAA,MAAM,OAAO;;;;;CAEa,CAAC;AAE3B,qBAAa,cAAe,SAAQ,OAAO,CAAC,OAAO,OAAO,CAAC;IACvD,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;MAAW;IAElC,OAAO;CAGV"}
@@ -11,6 +11,19 @@ Object.defineProperty(exports, "PreparePackage", {
11
11
  const _utils = require("../../utils");
12
12
  const _utils1 = require("../utils");
13
13
  const _types = require("./types");
14
+ function _define_property(obj, key, value) {
15
+ if (key in obj) {
16
+ Object.defineProperty(obj, key, {
17
+ value: value,
18
+ enumerable: true,
19
+ configurable: true,
20
+ writable: true
21
+ });
22
+ } else {
23
+ obj[key] = value;
24
+ }
25
+ return obj;
26
+ }
14
27
  function _ts_decorate(decorators, target, key, desc) {
15
28
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
29
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -20,6 +33,12 @@ function _ts_decorate(decorators, target, key, desc) {
20
33
  function _ts_metadata(k, v) {
21
34
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
22
35
  }
36
+ const options = {
37
+ watch: {
38
+ boolean: true,
39
+ hidden: true
40
+ }
41
+ };
23
42
  class PreparePackage extends _types.Command {
24
43
  execute() {
25
44
  return (0, _utils1.copyFiles)({
@@ -27,6 +46,7 @@ class PreparePackage extends _types.Command {
27
46
  });
28
47
  }
29
48
  }
49
+ _define_property(PreparePackage, "options", options);
30
50
  _ts_decorate([
31
51
  _utils.logErrors,
32
52
  _ts_metadata("design:type", Function),
@@ -1 +1 @@
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
+ {"version":3,"sources":["../../../src/cli/commands/prepare-package.ts"],"sourcesContent":["import { logErrors } from '../../utils';\nimport { copyFiles } from '../utils';\nimport { Command, CommandOptions } from './types';\n\nconst options = {\n watch: { boolean: true, hidden: true },\n} satisfies CommandOptions;\n\nexport class PreparePackage extends Command<typeof options> {\n static readonly options = options;\n @logErrors\n execute() {\n return copyFiles({ watch: this.args.watch });\n }\n}\n"],"names":["PreparePackage","options","watch","boolean","hidden","Command","execute","copyFiles","args"],"mappings":";;;;+BAQaA;;;eAAAA;;;uBARa;wBACA;uBACc;;;;;;;;;;;;;;;;;;;;;;;AAExC,MAAMC,UAAU;IACZC,OAAO;QAAEC,SAAS;QAAMC,QAAQ;IAAK;AACzC;AAEO,MAAMJ,uBAAuBK,cAAO;IAGvCC,UAAU;QACN,OAAOC,IAAAA,iBAAS,EAAC;YAAEL,OAAO,IAAI,CAACM,IAAI,CAACN,KAAK;QAAC;IAC9C;AACJ;AALI,iBADSF,gBACOC,WAAUA"}
@@ -1,17 +1,26 @@
1
- import { Command, CommandArgs } from '../types';
2
- interface Args extends CommandArgs {
3
- fix?: boolean;
4
- rule?: string | string[];
5
- }
6
- export declare class Review extends Command<Args> {
1
+ import { Command } from '../types';
2
+ declare const options: {
3
+ fix: {
4
+ boolean: true;
5
+ description: string;
6
+ };
7
+ rule: {
8
+ array: true;
9
+ string: true;
10
+ description: string;
11
+ };
12
+ };
13
+ export declare class Review extends Command<typeof options> {
14
+ static readonly allowRunFromGlobal = true;
7
15
  static readonly description = "Check project for configuration errors";
8
16
  static readonly options: {
9
17
  fix: {
10
- boolean: boolean;
18
+ boolean: true;
11
19
  description: string;
12
20
  };
13
21
  rule: {
14
- array: boolean;
22
+ array: true;
23
+ string: true;
15
24
  description: string;
16
25
  };
17
26
  };
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"review.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/review/review.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,OAAO,EAAkB,MAAM,UAAU,CAAC;AAuBnD,QAAA,MAAM,OAAO;;;;;;;;;;CAGa,CAAC;AAE3B,qBAAa,MAAO,SAAQ,OAAO,CAAC,OAAO,OAAO,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,kBAAkB,QAAQ;IAC1C,MAAM,CAAC,QAAQ,CAAC,WAAW,4CAA4C;IACvE,MAAM,CAAC,QAAQ,CAAC,OAAO;;;;;;;;;;MAAW;IAElC,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"}
@@ -13,9 +13,9 @@ 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");
16
+ const _rules = require("./rules");
16
17
  const _types1 = require("./types");
17
18
  const _utils1 = require("./utils");
18
- const _rules = require("./rules");
19
19
  function _define_property(obj, key, value) {
20
20
  if (key in obj) {
21
21
  Object.defineProperty(obj, key, {
@@ -44,6 +44,17 @@ function _ts_metadata(k, v) {
44
44
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
45
45
  }
46
46
  const collator = new Intl.Collator();
47
+ const options = {
48
+ fix: {
49
+ boolean: true,
50
+ description: 'Fix detected problems'
51
+ },
52
+ rule: {
53
+ array: true,
54
+ string: true,
55
+ description: 'Limit checks to specified rule(s)'
56
+ }
57
+ };
47
58
  class Review extends _types.Command {
48
59
  async execute() {
49
60
  const errors = this.args.fix ? this.fixErrors() : this.findErrors();
@@ -113,7 +124,7 @@ class Review extends _types.Command {
113
124
  totalFixed += 1;
114
125
  }
115
126
  });
116
- (0, _child_process.execSync)('npx startup install --fix --quiet', {
127
+ (0, _child_process.execSync)('npx @servicetitan/install --fix --quiet', {
117
128
  stdio: 'inherit'
118
129
  });
119
130
  project = this.createProject();
@@ -196,15 +207,7 @@ class Review extends _types.Command {
196
207
  }
197
208
  getSelectedRules() {
198
209
  const rule = this.args.rule;
199
- if (typeof rule === 'string' && rule) {
200
- return new Set([
201
- rule
202
- ]);
203
- }
204
- if (Array.isArray(rule)) {
205
- return new Set(rule.filter((id)=>!!id));
206
- }
207
- return undefined;
210
+ return rule ? new Set(rule.filter((id)=>!!id)) : undefined;
208
211
  }
209
212
  constructor(...args){
210
213
  super(...args), _define_property(this, "severityToLabel", {
@@ -216,17 +219,9 @@ class Review extends _types.Command {
216
219
  });
217
220
  }
218
221
  }
222
+ _define_property(Review, "allowRunFromGlobal", true);
219
223
  _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
- });
224
+ _define_property(Review, "options", options);
230
225
  _ts_decorate([
231
226
  _utils.logErrors,
232
227
  _ts_metadata("design:type", Function),
@@ -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, 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
+ {"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, CommandOptions } 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\nconst options = {\n fix: { boolean: true, description: 'Fix detected problems' },\n rule: { array: true, string: true, description: 'Limit checks to specified rule(s)' },\n} satisfies CommandOptions;\n\nexport class Review extends Command<typeof options> {\n static readonly allowRunFromGlobal = true;\n static readonly description = 'Check project for configuration errors';\n static readonly options = options;\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 @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","options","fix","boolean","description","rule","array","string","Command","execute","errors","args","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","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","allowRunFromGlobal","locationA","severityA","locationB","severityB","compare","obj","Object","fromEntries","entries","a","b"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/review/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAiBvC,eAAO,MAAM,KAAK,EAAE,WAAW,EAgB9B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/review/rules/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAkBvC,eAAO,MAAM,KAAK,EAAE,WAAW,EAiB9B,CAAC"}
@@ -23,6 +23,7 @@ const _requireonereactversion = require("./require-one-react-version");
23
23
  const _requireoneuikitversion = require("./require-one-uikit-version");
24
24
  const _requireprojectversioninrootnodemodules = require("./require-project-version-in-root-node-modules");
25
25
  const _requireservicetitanscope = require("./require-servicetitan-scope");
26
+ const _requiretsconfigreferences = require("./require-tsconfig-references");
26
27
  const rules = [
27
28
  new _requireallreactdependencies.RequireAllReactDependencies(),
28
29
  new _requireoneanviluikitcontribversion.RequireOneAnvilUikitContribVersion(),
@@ -38,7 +39,8 @@ const rules = [
38
39
  new _preferopenendedpeerdependencies.PreferOpenEndedPeerDependencies(),
39
40
  new _requireservicetitanscope.RequireServiceTitanScope(),
40
41
  new _requireexplicitsideeffects.RequireExplicitSideEffects(),
41
- new _requirenpmrc.RequireNpmrc()
42
+ new _requirenpmrc.RequireNpmrc(),
43
+ new _requiretsconfigreferences.RequireTsconfigReferences()
42
44
  ];
43
45
 
44
46
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/review/rules/index.ts"],"sourcesContent":["import { PackageRule } from '../types';\nimport { NoDeprecatedContentBase } from './no-deprecated-content-base';\nimport { NoDeprecatedStartupInstall } from './no-deprecated-startup-install';\nimport { NoDirectPeerDependencies } from './no-direct-peer-dependencies';\nimport { NoTypescriptEntryPoint } from './no-typescript-entry-point';\nimport { PreferOpenEndedPeerDependencies } from './prefer-open-ended-peer-dependencies';\nimport { RequireAllReactDependencies } from './require-all-react-dependencies';\nimport { RequireCompatibleLaunchDarklySdk } from './require-compatible-launch-darkly-sdk';\nimport { RequireExplicitSideEffects } from './require-explicit-side-effects';\nimport { RequireNpmrc } from './require-npmrc';\nimport { RequireOneAnvilUikitContribVersion } from './require-one-anvil-uikit-contrib-version';\nimport { RequireOnePackageVersion } from './require-one-package-version';\nimport { RequireOneReactVersion } from './require-one-react-version';\nimport { RequireOneUikitVersion } from './require-one-uikit-version';\nimport { RequireProjectVersionInRootNodeModules } from './require-project-version-in-root-node-modules';\nimport { RequireServiceTitanScope } from './require-servicetitan-scope';\n\nexport const rules: PackageRule[] = [\n new RequireAllReactDependencies(),\n new RequireOneAnvilUikitContribVersion(),\n new RequireOnePackageVersion(),\n new RequireOneReactVersion(),\n new RequireOneUikitVersion(),\n new RequireProjectVersionInRootNodeModules(),\n new RequireCompatibleLaunchDarklySdk(),\n new NoDeprecatedContentBase(),\n new NoDirectPeerDependencies(),\n new NoDeprecatedStartupInstall(),\n new NoTypescriptEntryPoint(),\n new PreferOpenEndedPeerDependencies(),\n new RequireServiceTitanScope(),\n new RequireExplicitSideEffects(),\n new RequireNpmrc(),\n];\n"],"names":["rules","RequireAllReactDependencies","RequireOneAnvilUikitContribVersion","RequireOnePackageVersion","RequireOneReactVersion","RequireOneUikitVersion","RequireProjectVersionInRootNodeModules","RequireCompatibleLaunchDarklySdk","NoDeprecatedContentBase","NoDirectPeerDependencies","NoDeprecatedStartupInstall","NoTypescriptEntryPoint","PreferOpenEndedPeerDependencies","RequireServiceTitanScope","RequireExplicitSideEffects","RequireNpmrc"],"mappings":";;;;+BAiBaA;;;eAAAA;;;yCAhB2B;4CACG;0CACF;wCACF;iDACS;6CACJ;kDACK;4CACN;8BACd;oDACsB;0CACV;wCACF;wCACA;wDACgB;0CACd;AAElC,MAAMA,QAAuB;IAChC,IAAIC,wDAA2B;IAC/B,IAAIC,sEAAkC;IACtC,IAAIC,kDAAwB;IAC5B,IAAIC,8CAAsB;IAC1B,IAAIC,8CAAsB;IAC1B,IAAIC,8EAAsC;IAC1C,IAAIC,kEAAgC;IACpC,IAAIC,gDAAuB;IAC3B,IAAIC,kDAAwB;IAC5B,IAAIC,sDAA0B;IAC9B,IAAIC,8CAAsB;IAC1B,IAAIC,gEAA+B;IACnC,IAAIC,kDAAwB;IAC5B,IAAIC,sDAA0B;IAC9B,IAAIC,0BAAY;CACnB"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/review/rules/index.ts"],"sourcesContent":["import { PackageRule } from '../types';\nimport { NoDeprecatedContentBase } from './no-deprecated-content-base';\nimport { NoDeprecatedStartupInstall } from './no-deprecated-startup-install';\nimport { NoDirectPeerDependencies } from './no-direct-peer-dependencies';\nimport { NoTypescriptEntryPoint } from './no-typescript-entry-point';\nimport { PreferOpenEndedPeerDependencies } from './prefer-open-ended-peer-dependencies';\nimport { RequireAllReactDependencies } from './require-all-react-dependencies';\nimport { RequireCompatibleLaunchDarklySdk } from './require-compatible-launch-darkly-sdk';\nimport { RequireExplicitSideEffects } from './require-explicit-side-effects';\nimport { RequireNpmrc } from './require-npmrc';\nimport { RequireOneAnvilUikitContribVersion } from './require-one-anvil-uikit-contrib-version';\nimport { RequireOnePackageVersion } from './require-one-package-version';\nimport { RequireOneReactVersion } from './require-one-react-version';\nimport { RequireOneUikitVersion } from './require-one-uikit-version';\nimport { RequireProjectVersionInRootNodeModules } from './require-project-version-in-root-node-modules';\nimport { RequireServiceTitanScope } from './require-servicetitan-scope';\nimport { RequireTsconfigReferences } from './require-tsconfig-references';\n\nexport const rules: PackageRule[] = [\n new RequireAllReactDependencies(),\n new RequireOneAnvilUikitContribVersion(),\n new RequireOnePackageVersion(),\n new RequireOneReactVersion(),\n new RequireOneUikitVersion(),\n new RequireProjectVersionInRootNodeModules(),\n new RequireCompatibleLaunchDarklySdk(),\n new NoDeprecatedContentBase(),\n new NoDirectPeerDependencies(),\n new NoDeprecatedStartupInstall(),\n new NoTypescriptEntryPoint(),\n new PreferOpenEndedPeerDependencies(),\n new RequireServiceTitanScope(),\n new RequireExplicitSideEffects(),\n new RequireNpmrc(),\n new RequireTsconfigReferences(),\n];\n"],"names":["rules","RequireAllReactDependencies","RequireOneAnvilUikitContribVersion","RequireOnePackageVersion","RequireOneReactVersion","RequireOneUikitVersion","RequireProjectVersionInRootNodeModules","RequireCompatibleLaunchDarklySdk","NoDeprecatedContentBase","NoDirectPeerDependencies","NoDeprecatedStartupInstall","NoTypescriptEntryPoint","PreferOpenEndedPeerDependencies","RequireServiceTitanScope","RequireExplicitSideEffects","RequireNpmrc","RequireTsconfigReferences"],"mappings":";;;;+BAkBaA;;;eAAAA;;;yCAjB2B;4CACG;0CACF;wCACF;iDACS;6CACJ;kDACK;4CACN;8BACd;oDACsB;0CACV;wCACF;wCACA;wDACgB;0CACd;2CACC;AAEnC,MAAMA,QAAuB;IAChC,IAAIC,wDAA2B;IAC/B,IAAIC,sEAAkC;IACtC,IAAIC,kDAAwB;IAC5B,IAAIC,8CAAsB;IAC1B,IAAIC,8CAAsB;IAC1B,IAAIC,8EAAsC;IAC1C,IAAIC,kEAAgC;IACpC,IAAIC,gDAAuB;IAC3B,IAAIC,kDAAwB;IAC5B,IAAIC,sDAA0B;IAC9B,IAAIC,8CAAsB;IAC1B,IAAIC,gEAA+B;IACnC,IAAIC,kDAAwB;IAC5B,IAAIC,sDAA0B;IAC9B,IAAIC,0BAAY;IAChB,IAAIC,oDAAyB;CAChC"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/review/rules/no-deprecated-content-base.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { ErrorSeverity, FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages } from '../utils';\n\ninterface ErrorData {\n contentBase: string;\n}\n\ntype RuleError = PackageError<ErrorData>;\n\nexport class NoDeprecatedContentBase implements PackageRule {\n get id() {\n return 'no-deprecated-content-base';\n }\n\n run(project: Project): RuleError[] | undefined {\n return checkPackages(this, project, this.checkPackage);\n }\n\n fix({ data, location }: RuleError) {\n const { contentBase } = data ?? {};\n if (!location || contentBase === undefined) {\n return;\n }\n\n const setCommands = Array.isArray(contentBase)\n ? contentBase.map((directory, index) => {\n return `npm pkg set cli.webpack.static[${index}].directory=\"${directory}\" -w ${location}`;\n })\n : [`npm pkg set cli.webpack.static.directory=\"${contentBase}\" -w ${location}`];\n\n [...setCommands, `npm pkg delete cli.webpack.contentBase -w ${location}`].forEach(command =>\n execSync(command, { stdio: 'inherit' })\n );\n }\n\n private readonly checkPackage = (pkg: Package): RuleError | undefined => {\n const { webpack = {} } = pkg.cli ?? {};\n if (webpack && typeof webpack === 'object' && Object.hasOwn(webpack, 'contentBase')) {\n return {\n id: this.id,\n message: `package \"${pkg.name}\" uses deprecated cli.webpack.contentBase configuration`,\n location: pkg.location,\n fixable: FixCategory.isolated,\n severity: ErrorSeverity.warning,\n data: { contentBase: webpack.contentBase },\n };\n }\n };\n}\n"],"names":["NoDeprecatedContentBase","id","run","project","checkPackages","checkPackage","fix","data","location","contentBase","undefined","setCommands","Array","isArray","map","directory","index","forEach","command","execSync","stdio","pkg","webpack","cli","Object","hasOwn","message","name","fixable","FixCategory","isolated","severity","ErrorSeverity","warning"],"mappings":";;;;+BAUaA;;;eAAAA;;;+BAVY;uBAC+D;uBAC1D;;;;;;;;;;;;;;AAQvB,MAAMA;IACT,IAAIC,KAAK;QACL,OAAO;IACX;IAEAC,IAAIC,OAAgB,EAA2B;QAC3C,OAAOC,IAAAA,oBAAa,EAAC,IAAI,EAAED,SAAS,IAAI,CAACE,YAAY;IACzD;IAEAC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAa,EAAE;QAC/B,MAAM,EAAEC,WAAW,EAAE,GAAGF,iBAAAA,kBAAAA,OAAQ,CAAC;QACjC,IAAI,CAACC,YAAYC,gBAAgBC,WAAW;YACxC;QACJ;QAEA,MAAMC,cAAcC,MAAMC,OAAO,CAACJ,eAC5BA,YAAYK,GAAG,CAAC,CAACC,WAAWC;YACxB,OAAO,CAAC,+BAA+B,EAAEA,MAAM,aAAa,EAAED,UAAU,KAAK,EAAEP,UAAU;QAC7F,KACA;YAAC,CAAC,0CAA0C,EAAEC,YAAY,KAAK,EAAED,UAAU;SAAC;QAElF;eAAIG;YAAa,CAAC,0CAA0C,EAAEH,UAAU;SAAC,CAACS,OAAO,CAACC,CAAAA,UAC9EC,IAAAA,uBAAQ,EAACD,SAAS;gBAAEE,OAAO;YAAU;IAE7C;;QAEA,uBAAiBf,gBAAe,CAACgB;gBACJA;YAAzB,MAAM,EAAEC,UAAU,CAAC,CAAC,EAAE,GAAGD,CAAAA,WAAAA,IAAIE,GAAG,cAAPF,sBAAAA,WAAW,CAAC;YACrC,IAAIC,WAAW,OAAOA,YAAY,YAAYE,OAAOC,MAAM,CAACH,SAAS,gBAAgB;gBACjF,OAAO;oBACHrB,IAAI,IAAI,CAACA,EAAE;oBACXyB,SAAS,CAAC,SAAS,EAAEL,IAAIM,IAAI,CAAC,uDAAuD,CAAC;oBACtFnB,UAAUa,IAAIb,QAAQ;oBACtBoB,SAASC,kBAAW,CAACC,QAAQ;oBAC7BC,UAAUC,oBAAa,CAACC,OAAO;oBAC/B1B,MAAM;wBAAEE,aAAaa,QAAQb,WAAW;oBAAC;gBAC7C;YACJ;QACJ;;AACJ"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/review/rules/no-deprecated-content-base.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { ErrorSeverity, FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages } from '../utils';\n\ninterface ErrorData {\n contentBase: string;\n}\n\ntype RuleError = PackageError<ErrorData>;\n\nexport class NoDeprecatedContentBase implements PackageRule {\n get id() {\n return 'no-deprecated-content-base';\n }\n\n run(project: Project): RuleError[] | undefined {\n return checkPackages(this, project, this.checkPackage);\n }\n\n fix({ data, location }: RuleError) {\n const { contentBase } = data ?? {};\n if (!location || contentBase === undefined) {\n return;\n }\n\n const setCommands = Array.isArray(contentBase)\n ? contentBase.map((directory, index) => {\n return `npm pkg set cli.webpack.static[${index}].directory=\"${directory}\" -w ${location}`;\n })\n : [`npm pkg set cli.webpack.static.directory=\"${contentBase}\" -w ${location}`];\n\n [...setCommands, `npm pkg delete cli.webpack.contentBase -w ${location}`].forEach(command =>\n execSync(command, { stdio: 'inherit' })\n );\n }\n\n private readonly checkPackage = (pkg: Package): RuleError | undefined => {\n const { webpack = {} } = pkg.cli ?? {};\n if (webpack && typeof webpack === 'object' && Object.hasOwn(webpack, 'contentBase')) {\n return {\n id: this.id,\n message: `package \"${pkg.name}\" uses deprecated cli.webpack.contentBase configuration`,\n location: pkg.location,\n fixable: FixCategory.isolated,\n severity: ErrorSeverity.warning,\n data: { contentBase: webpack.contentBase },\n };\n }\n };\n}\n"],"names":["NoDeprecatedContentBase","id","run","project","checkPackages","checkPackage","fix","data","location","contentBase","undefined","setCommands","Array","isArray","map","directory","index","forEach","command","execSync","stdio","pkg","webpack","cli","Object","hasOwn","message","name","fixable","FixCategory","isolated","severity","ErrorSeverity","warning"],"mappings":";;;;+BAUaA;;;eAAAA;;;+BAVY;uBAC+D;uBAC1D;;;;;;;;;;;;;;AAQvB,MAAMA;IACT,IAAIC,KAAK;QACL,OAAO;IACX;IAEAC,IAAIC,OAAgB,EAA2B;QAC3C,OAAOC,IAAAA,oBAAa,EAAC,IAAI,EAAED,SAAS,IAAI,CAACE,YAAY;IACzD;IAEAC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAa,EAAE;QAC/B,MAAM,EAAEC,WAAW,EAAE,GAAGF,iBAAAA,kBAAAA,OAAQ,CAAC;QACjC,IAAI,CAACC,YAAYC,gBAAgBC,WAAW;YACxC;QACJ;QAEA,MAAMC,cAAcC,MAAMC,OAAO,CAACJ,eAC5BA,YAAYK,GAAG,CAAC,CAACC,WAAWC;YACxB,OAAO,CAAC,+BAA+B,EAAEA,MAAM,aAAa,EAAED,UAAU,KAAK,EAAEP,UAAU;QAC7F,KACA;YAAC,CAAC,0CAA0C,EAAEC,YAAY,KAAK,EAAED,UAAU;SAAC;QAElF;eAAIG;YAAa,CAAC,0CAA0C,EAAEH,UAAU;SAAC,CAACS,OAAO,CAACC,CAAAA,UAC9EC,IAAAA,uBAAQ,EAACD,SAAS;gBAAEE,OAAO;YAAU;IAE7C;;QAEA,uBAAiBf,gBAAe,CAACgB;gBACJA;YAAzB,MAAM,EAAEC,UAAU,CAAC,CAAC,EAAE,IAAGD,WAAAA,IAAIE,GAAG,cAAPF,sBAAAA,WAAW,CAAC;YACrC,IAAIC,WAAW,OAAOA,YAAY,YAAYE,OAAOC,MAAM,CAACH,SAAS,gBAAgB;gBACjF,OAAO;oBACHrB,IAAI,IAAI,CAACA,EAAE;oBACXyB,SAAS,CAAC,SAAS,EAAEL,IAAIM,IAAI,CAAC,uDAAuD,CAAC;oBACtFnB,UAAUa,IAAIb,QAAQ;oBACtBoB,SAASC,kBAAW,CAACC,QAAQ;oBAC7BC,UAAUC,oBAAa,CAACC,OAAO;oBAC/B1B,MAAM;wBAAEE,aAAaa,QAAQb,WAAW;oBAAC;gBAC7C;YACJ;QACJ;;AACJ"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/review/rules/prefer-open-ended-peer-dependencies.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { satisfies } from 'semver';\nimport { ErrorSeverity, FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages } from '../utils';\n\ninterface ErrorData {\n dependency: string;\n version: string;\n}\n\ntype RuleError = PackageError<ErrorData>;\n\nexport class PreferOpenEndedPeerDependencies implements PackageRule {\n #project!: Project;\n\n get id() {\n return 'prefer-open-ended-peer-dependencies';\n }\n\n run(project: Project): RuleError[] | undefined {\n this.#project = project;\n return checkPackages(this, project, this.checkPackage);\n }\n\n fix({ data, location }: RuleError) {\n const { dependency, version } = data ?? {};\n if (!(location && dependency && version)) {\n return;\n }\n\n const openEndedVersion = version.replace(/^[\\^~]/, '>=');\n const command = `npm pkg set peerDependencies[\"${dependency}\"]=\"${openEndedVersion}\" -w ${location}`;\n execSync(command, { stdio: 'inherit' });\n }\n\n private readonly checkPackage = (pkg: Package): RuleError[] | undefined => {\n return Object.entries(pkg.peerDependencies ?? {}).reduce<RuleError[]>(\n (result, [dependency, version]) => {\n if (this.isViolation(pkg, { dependency, version })) {\n result.push({\n id: this.id,\n message: `package \"${pkg.name}\" has closed-ended peer dependency on \"${dependency}@${version}\"`,\n location: pkg.location,\n severity: ErrorSeverity.warning,\n ...(this.isFixable(version)\n ? { fixable: FixCategory.isolated, data: { dependency, version } }\n : {}),\n });\n }\n return result;\n },\n []\n );\n };\n\n private isExactVersion(version: string) {\n return /^\\d/.test(version);\n }\n\n private isExcluded({ name }: Package, dependency: string) {\n const ruleConfig = this.#project.config.rules?.[this.id];\n if (Array.isArray(ruleConfig)) {\n const { exclude } = ruleConfig[1] ?? {};\n if (typeof exclude === 'object' && !Array.isArray(exclude)) {\n return exclude[name]?.includes(dependency);\n }\n }\n return false;\n }\n\n private isOpenEndedVersion(version: string) {\n return satisfies('999.999.999', version);\n }\n\n private isFixable(version: string) {\n return /^[\\^~]\\d+(\\.\\d+){0,2}$/.test(version);\n }\n\n private isViolation(\n pkg: Package,\n { dependency, version }: { dependency: string; version: string }\n ) {\n return (\n !this.isExactVersion(version) &&\n !this.isOpenEndedVersion(version) &&\n !this.isExcluded(pkg, dependency)\n );\n }\n}\n"],"names":["PreferOpenEndedPeerDependencies","id","run","project","checkPackages","checkPackage","fix","data","location","dependency","version","openEndedVersion","replace","command","execSync","stdio","isExactVersion","test","isExcluded","name","ruleConfig","config","rules","Array","isArray","exclude","includes","isOpenEndedVersion","satisfies","isFixable","isViolation","pkg","Object","entries","peerDependencies","reduce","result","push","message","severity","ErrorSeverity","warning","fixable","FixCategory","isolated"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/review/rules/prefer-open-ended-peer-dependencies.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { satisfies } from 'semver';\nimport { ErrorSeverity, FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages } from '../utils';\n\ninterface ErrorData {\n dependency: string;\n version: string;\n}\n\ntype RuleError = PackageError<ErrorData>;\n\nexport class PreferOpenEndedPeerDependencies implements PackageRule {\n #project!: Project;\n\n get id() {\n return 'prefer-open-ended-peer-dependencies';\n }\n\n run(project: Project): RuleError[] | undefined {\n this.#project = project;\n return checkPackages(this, project, this.checkPackage);\n }\n\n fix({ data, location }: RuleError) {\n const { dependency, version } = data ?? {};\n if (!(location && dependency && version)) {\n return;\n }\n\n const openEndedVersion = version.replace(/^[\\^~]/, '>=');\n const command = `npm pkg set peerDependencies[\"${dependency}\"]=\"${openEndedVersion}\" -w ${location}`;\n execSync(command, { stdio: 'inherit' });\n }\n\n private readonly checkPackage = (pkg: Package): RuleError[] | undefined => {\n return Object.entries(pkg.peerDependencies ?? {}).reduce<RuleError[]>(\n (result, [dependency, version]) => {\n if (this.isViolation(pkg, { dependency, version })) {\n result.push({\n id: this.id,\n message: `package \"${pkg.name}\" has closed-ended peer dependency on \"${dependency}@${version}\"`,\n location: pkg.location,\n severity: ErrorSeverity.warning,\n ...(this.isFixable(version)\n ? { fixable: FixCategory.isolated, data: { dependency, version } }\n : {}),\n });\n }\n return result;\n },\n []\n );\n };\n\n private isExactVersion(version: string) {\n return /^\\d/.test(version);\n }\n\n private isExcluded({ name }: Package, dependency: string) {\n const ruleConfig = this.#project.config.rules?.[this.id];\n if (Array.isArray(ruleConfig)) {\n const { exclude } = ruleConfig[1] ?? {};\n if (typeof exclude === 'object' && !Array.isArray(exclude)) {\n return exclude[name]?.includes(dependency);\n }\n }\n return false;\n }\n\n private isOpenEndedVersion(version: string) {\n return satisfies('999.999.999', version);\n }\n\n private isFixable(version: string) {\n return /^[\\^~]\\d+(\\.\\d+){0,2}$/.test(version);\n }\n\n private isViolation(\n pkg: Package,\n { dependency, version }: { dependency: string; version: string }\n ) {\n return (\n !this.isExactVersion(version) &&\n !this.isOpenEndedVersion(version) &&\n !this.isExcluded(pkg, dependency)\n );\n }\n}\n"],"names":["PreferOpenEndedPeerDependencies","id","run","project","checkPackages","checkPackage","fix","data","location","dependency","version","openEndedVersion","replace","command","execSync","stdio","isExactVersion","test","isExcluded","name","ruleConfig","config","rules","Array","isArray","exclude","includes","isOpenEndedVersion","satisfies","isFixable","isViolation","pkg","Object","entries","peerDependencies","reduce","result","push","message","severity","ErrorSeverity","warning","fixable","FixCategory","isolated"],"mappings":"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"}
@@ -107,7 +107,7 @@ class RequireCompatibleLaunchDarklySdk {
107
107
  }
108
108
  [
109
109
  `npm pkg set dependencies["${JS_CLIENT_SDK}"]=${targetVersion}`,
110
- 'npx startup install --fix --quiet',
110
+ 'npx @servicetitan/install --fix --quiet',
111
111
  `npm pkg delete dependencies["${JS_CLIENT_SDK}"]`
112
112
  ].forEach((command)=>(0, _child_process.execSync)(command, {
113
113
  stdio: 'inherit'
@@ -148,16 +148,16 @@ class RequireCompatibleLaunchDarklySdk {
148
148
  }).version;
149
149
  }
150
150
  getResolvedDependency({ packageName, dependency }) {
151
- const { packages } = _class_private_field_get(this, _project).packageLock;
152
151
  var _ref, _ref1;
153
- return (_ref1 = (_ref = packageName ? packages[`node_modules/${packageName}/node_modules/${dependency}`] : undefined) !== null && _ref !== void 0 ? _ref : packages[`node_modules/${dependency}`]) !== null && _ref1 !== void 0 ? _ref1 : {};
152
+ const { packages } = _class_private_field_get(this, _project).packageLock;
153
+ return (_ref = (_ref1 = packageName ? packages[`node_modules/${packageName}/node_modules/${dependency}`] : undefined) !== null && _ref1 !== void 0 ? _ref1 : packages[`node_modules/${dependency}`]) !== null && _ref !== void 0 ? _ref : {};
154
154
  }
155
155
  getTargetJsClientSdkVersion(packageName) {
156
+ var _dependencies_JS_CLIENT_SDK;
156
157
  const { dependencies = {}, peerDependencies = {} } = this.getResolvedDependency({
157
158
  packageName,
158
159
  dependency: LD_SERVICE
159
160
  });
160
- var _dependencies_JS_CLIENT_SDK;
161
161
  return (_dependencies_JS_CLIENT_SDK = dependencies[JS_CLIENT_SDK]) !== null && _dependencies_JS_CLIENT_SDK !== void 0 ? _dependencies_JS_CLIENT_SDK : peerDependencies[JS_CLIENT_SDK];
162
162
  }
163
163
  constructor(){