@servicetitan/startup 38.0.0 → 38.2.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 (429) hide show
  1. package/bin/js-yaml.js +2 -2
  2. package/dist/cli/commands/build.d.ts.map +1 -1
  3. package/dist/cli/commands/build.js +32 -10
  4. package/dist/cli/commands/build.js.map +1 -1
  5. package/dist/cli/commands/bundle-package.d.ts +6 -0
  6. package/dist/cli/commands/bundle-package.d.ts.map +1 -0
  7. package/dist/cli/commands/bundle-package.js +59 -0
  8. package/dist/cli/commands/bundle-package.js.map +1 -0
  9. package/dist/cli/commands/bundle-vite.js +13 -4
  10. package/dist/cli/commands/bundle-vite.js.map +1 -1
  11. package/dist/cli/commands/bundle-webpack.js +13 -4
  12. package/dist/cli/commands/bundle-webpack.js.map +1 -1
  13. package/dist/cli/commands/clean.js +13 -4
  14. package/dist/cli/commands/clean.js.map +1 -1
  15. package/dist/cli/commands/command.d.ts +13 -0
  16. package/dist/cli/commands/command.d.ts.map +1 -0
  17. package/dist/cli/commands/command.js +74 -0
  18. package/dist/cli/commands/command.js.map +1 -0
  19. package/dist/cli/commands/convert-eslint-config.js +14 -7
  20. package/dist/cli/commands/convert-eslint-config.js.map +1 -1
  21. package/dist/cli/commands/eslint.js +13 -4
  22. package/dist/cli/commands/eslint.js.map +1 -1
  23. package/dist/cli/commands/init.d.ts.map +1 -1
  24. package/dist/cli/commands/init.js +13 -5
  25. package/dist/cli/commands/init.js.map +1 -1
  26. package/dist/cli/commands/install.d.ts.map +1 -1
  27. package/dist/cli/commands/install.js +14 -21
  28. package/dist/cli/commands/install.js.map +1 -1
  29. package/dist/cli/commands/kendo-ui-license.js +13 -4
  30. package/dist/cli/commands/kendo-ui-license.js.map +1 -1
  31. package/dist/cli/commands/lint.js +13 -4
  32. package/dist/cli/commands/lint.js.map +1 -1
  33. package/dist/cli/commands/mfe-check.d.ts.map +1 -1
  34. package/dist/cli/commands/mfe-check.js +15 -7
  35. package/dist/cli/commands/mfe-check.js.map +1 -1
  36. package/dist/cli/commands/mfe-generate-metadata.js +13 -4
  37. package/dist/cli/commands/mfe-generate-metadata.js.map +1 -1
  38. package/dist/cli/commands/mfe-list.js +13 -4
  39. package/dist/cli/commands/mfe-list.js.map +1 -1
  40. package/dist/cli/commands/mfe-package-clean.js +13 -4
  41. package/dist/cli/commands/mfe-package-clean.js.map +1 -1
  42. package/dist/cli/commands/mfe-package-publish.js +13 -4
  43. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  44. package/dist/cli/commands/mfe-package-rollback.js +13 -4
  45. package/dist/cli/commands/mfe-package-rollback.js.map +1 -1
  46. package/dist/cli/commands/mfe-publish.js +13 -4
  47. package/dist/cli/commands/mfe-publish.js.map +1 -1
  48. package/dist/cli/commands/mfe-purge-cache.js +13 -4
  49. package/dist/cli/commands/mfe-purge-cache.js.map +1 -1
  50. package/dist/cli/commands/prepare-package.js +13 -4
  51. package/dist/cli/commands/prepare-package.js.map +1 -1
  52. package/dist/cli/commands/registry/build.d.ts +1 -1
  53. package/dist/cli/commands/registry/build.d.ts.map +1 -1
  54. package/dist/cli/commands/registry/build.js +3 -5
  55. package/dist/cli/commands/registry/build.js.map +1 -1
  56. package/dist/cli/commands/registry/bundle-package.d.ts +41 -0
  57. package/dist/cli/commands/registry/bundle-package.d.ts.map +1 -0
  58. package/dist/cli/commands/registry/bundle-package.js +54 -0
  59. package/dist/cli/commands/registry/bundle-package.js.map +1 -0
  60. package/dist/cli/commands/registry/command-registry.d.ts +42 -18
  61. package/dist/cli/commands/registry/command-registry.d.ts.map +1 -1
  62. package/dist/cli/commands/registry/command-registry.js +10 -19
  63. package/dist/cli/commands/registry/command-registry.js.map +1 -1
  64. package/dist/cli/commands/registry/install.d.ts +0 -16
  65. package/dist/cli/commands/registry/install.d.ts.map +1 -1
  66. package/dist/cli/commands/registry/install.js +1 -17
  67. package/dist/cli/commands/registry/install.js.map +1 -1
  68. package/dist/cli/commands/registry/start.d.ts +1 -1
  69. package/dist/cli/commands/registry/start.d.ts.map +1 -1
  70. package/dist/cli/commands/registry/start.js +3 -5
  71. package/dist/cli/commands/registry/start.js.map +1 -1
  72. package/dist/cli/commands/review/review.js +14 -7
  73. package/dist/cli/commands/review/review.js.map +1 -1
  74. package/dist/cli/commands/review/rules/no-deprecated-content-base.js +1 -3
  75. package/dist/cli/commands/review/rules/no-deprecated-content-base.js.map +1 -1
  76. package/dist/cli/commands/review/rules/no-direct-peer-dependencies.js +1 -3
  77. package/dist/cli/commands/review/rules/no-direct-peer-dependencies.js.map +1 -1
  78. package/dist/cli/commands/review/rules/no-typescript-entry-point.js +1 -3
  79. package/dist/cli/commands/review/rules/no-typescript-entry-point.js.map +1 -1
  80. package/dist/cli/commands/review/rules/prefer-open-ended-peer-dependencies.js +5 -12
  81. package/dist/cli/commands/review/rules/prefer-open-ended-peer-dependencies.js.map +1 -1
  82. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js +5 -12
  83. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js.map +1 -1
  84. package/dist/cli/commands/review/rules/require-explicit-side-effects.js +1 -3
  85. package/dist/cli/commands/review/rules/require-explicit-side-effects.js.map +1 -1
  86. package/dist/cli/commands/review/rules/require-one-collection-version.js +1 -3
  87. package/dist/cli/commands/review/rules/require-one-collection-version.js.map +1 -1
  88. package/dist/cli/commands/review/rules/require-servicetitan-scope.js +1 -3
  89. package/dist/cli/commands/review/rules/require-servicetitan-scope.js.map +1 -1
  90. package/dist/cli/commands/review/rules/require-tsconfig-references.js +1 -3
  91. package/dist/cli/commands/review/rules/require-tsconfig-references.js.map +1 -1
  92. package/dist/cli/commands/review/utils/compare-version.js +8 -19
  93. package/dist/cli/commands/review/utils/compare-version.js.map +1 -1
  94. package/dist/cli/commands/run-task.d.ts +1 -0
  95. package/dist/cli/commands/run-task.d.ts.map +1 -1
  96. package/dist/cli/commands/run-task.js +20 -6
  97. package/dist/cli/commands/run-task.js.map +1 -1
  98. package/dist/cli/commands/start.d.ts.map +1 -1
  99. package/dist/cli/commands/start.js +37 -14
  100. package/dist/cli/commands/start.js.map +1 -1
  101. package/dist/cli/commands/stylelint.js +13 -4
  102. package/dist/cli/commands/stylelint.js.map +1 -1
  103. package/dist/cli/commands/styles-check.js +13 -4
  104. package/dist/cli/commands/styles-check.js.map +1 -1
  105. package/dist/cli/commands/test/runners/jest.js +1 -3
  106. package/dist/cli/commands/test/runners/jest.js.map +1 -1
  107. package/dist/cli/commands/test/tests.js +13 -4
  108. package/dist/cli/commands/test/tests.js.map +1 -1
  109. package/dist/cli/commands/types.d.ts +1 -6
  110. package/dist/cli/commands/types.d.ts.map +1 -1
  111. package/dist/cli/commands/types.js +2 -20
  112. package/dist/cli/commands/types.js.map +1 -1
  113. package/dist/cli/commands/upload-sourcemaps.js +17 -13
  114. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  115. package/dist/cli/index.js +1 -0
  116. package/dist/cli/index.js.map +1 -1
  117. package/dist/cli/tasks/cli-task.d.ts +3 -0
  118. package/dist/cli/tasks/cli-task.d.ts.map +1 -1
  119. package/dist/cli/tasks/cli-task.js +41 -9
  120. package/dist/cli/tasks/cli-task.js.map +1 -1
  121. package/dist/cli/tasks/swc-compile-package/get-swc-options.d.ts +9 -1
  122. package/dist/cli/tasks/swc-compile-package/get-swc-options.d.ts.map +1 -1
  123. package/dist/cli/tasks/swc-compile-package/get-swc-options.js +18 -2
  124. package/dist/cli/tasks/swc-compile-package/get-swc-options.js.map +1 -1
  125. package/dist/cli/tasks/swc-compile-package/swc-compile-package.d.ts +3 -1
  126. package/dist/cli/tasks/swc-compile-package/swc-compile-package.d.ts.map +1 -1
  127. package/dist/cli/tasks/swc-compile-package/swc-compile-package.js +17 -3
  128. package/dist/cli/tasks/swc-compile-package/swc-compile-package.js.map +1 -1
  129. package/dist/cli/tasks/task.d.ts +2 -1
  130. package/dist/cli/tasks/task.d.ts.map +1 -1
  131. package/dist/cli/tasks/task.js +6 -3
  132. package/dist/cli/tasks/task.js.map +1 -1
  133. package/dist/cli/tasks/tsc-compile/tsc-compile.js +1 -3
  134. package/dist/cli/tasks/tsc-compile/tsc-compile.js.map +1 -1
  135. package/dist/cli/utils/cli-git.d.ts +7 -0
  136. package/dist/cli/utils/cli-git.d.ts.map +1 -1
  137. package/dist/cli/utils/cli-git.js +30 -0
  138. package/dist/cli/utils/cli-git.js.map +1 -1
  139. package/dist/cli/utils/cli-npm.d.ts.map +1 -1
  140. package/dist/cli/utils/cli-npm.js +8 -1
  141. package/dist/cli/utils/cli-npm.js.map +1 -1
  142. package/dist/cli/utils/cli-os.d.ts +7 -1
  143. package/dist/cli/utils/cli-os.d.ts.map +1 -1
  144. package/dist/cli/utils/cli-os.js +42 -0
  145. package/dist/cli/utils/cli-os.js.map +1 -1
  146. package/dist/cli/utils/compile.d.ts.map +1 -1
  147. package/dist/cli/utils/compile.js +7 -4
  148. package/dist/cli/utils/compile.js.map +1 -1
  149. package/dist/cli/utils/copy-files.js +1 -0
  150. package/dist/cli/utils/copy-files.js.map +1 -1
  151. package/dist/cli/utils/index.d.ts +1 -1
  152. package/dist/cli/utils/index.d.ts.map +1 -1
  153. package/dist/cli/utils/index.js +1 -1
  154. package/dist/cli/utils/index.js.map +1 -1
  155. package/dist/cli/utils/process-tree.js +2 -6
  156. package/dist/cli/utils/process-tree.js.map +1 -1
  157. package/dist/cli/utils/resolve-bundler.d.ts.map +1 -1
  158. package/dist/cli/utils/resolve-bundler.js +2 -1
  159. package/dist/cli/utils/resolve-bundler.js.map +1 -1
  160. package/dist/cli/utils/ts-config.d.ts +1 -1
  161. package/dist/cli/utils/ts-config.d.ts.map +1 -1
  162. package/dist/cli/utils/ts-config.js +1 -3
  163. package/dist/cli/utils/ts-config.js.map +1 -1
  164. package/dist/cli/utils/with-exponential-backoff.d.ts +7 -0
  165. package/dist/cli/utils/with-exponential-backoff.d.ts.map +1 -0
  166. package/dist/cli/utils/with-exponential-backoff.js +28 -0
  167. package/dist/cli/utils/with-exponential-backoff.js.map +1 -0
  168. package/dist/core/constants.d.ts +2 -0
  169. package/dist/core/constants.d.ts.map +1 -1
  170. package/dist/core/constants.js +6 -1
  171. package/dist/core/constants.js.map +1 -1
  172. package/dist/postinstall.js +118 -0
  173. package/dist/scripts/generate-bin-wrappers.js +203 -0
  174. package/dist/storybook-config/swc.d.ts +6 -0
  175. package/dist/storybook-config/swc.d.ts.map +1 -1
  176. package/dist/storybook-config/webpack-final.d.ts.map +1 -1
  177. package/dist/storybook-config/webpack-final.js +2 -1
  178. package/dist/storybook-config/webpack-final.js.map +1 -1
  179. package/dist/telemetry/index.d.ts +3 -0
  180. package/dist/telemetry/index.d.ts.map +1 -0
  181. package/dist/telemetry/index.js +21 -0
  182. package/dist/telemetry/index.js.map +1 -0
  183. package/dist/telemetry/telemetry.d.ts +15 -0
  184. package/dist/telemetry/telemetry.d.ts.map +1 -0
  185. package/dist/telemetry/telemetry.js +176 -0
  186. package/dist/telemetry/telemetry.js.map +1 -0
  187. package/dist/utils/exit-when-parent-exits.d.ts +6 -0
  188. package/dist/utils/exit-when-parent-exits.d.ts.map +1 -0
  189. package/dist/utils/exit-when-parent-exits.js +37 -0
  190. package/dist/utils/exit-when-parent-exits.js.map +1 -0
  191. package/dist/utils/find-up.d.ts +1 -1
  192. package/dist/utils/find-up.d.ts.map +1 -1
  193. package/dist/utils/find-up.js +2 -2
  194. package/dist/utils/find-up.js.map +1 -1
  195. package/dist/utils/get-configuration.d.ts +6 -3
  196. package/dist/utils/get-configuration.d.ts.map +1 -1
  197. package/dist/utils/get-configuration.js +10 -2
  198. package/dist/utils/get-configuration.js.map +1 -1
  199. package/dist/utils/index.d.ts +1 -0
  200. package/dist/utils/index.d.ts.map +1 -1
  201. package/dist/utils/index.js +1 -0
  202. package/dist/utils/index.js.map +1 -1
  203. package/dist/utils/log.js +1 -3
  204. package/dist/utils/log.js.map +1 -1
  205. package/dist/vite/build-shared-dependencies.d.ts.map +1 -1
  206. package/dist/vite/build-shared-dependencies.js +2 -0
  207. package/dist/vite/build-shared-dependencies.js.map +1 -1
  208. package/dist/vite/config/base-config.d.ts.map +1 -1
  209. package/dist/vite/config/base-config.js +12 -1
  210. package/dist/vite/config/base-config.js.map +1 -1
  211. package/dist/vite/config/create-filtering-logger.d.ts.map +1 -1
  212. package/dist/vite/config/create-filtering-logger.js +6 -2
  213. package/dist/vite/config/create-filtering-logger.js.map +1 -1
  214. package/dist/vite/config/create-vite-config.js +7 -2
  215. package/dist/vite/config/create-vite-config.js.map +1 -1
  216. package/dist/vite/config/load-config-file.js +8 -19
  217. package/dist/vite/config/load-config-file.js.map +1 -1
  218. package/dist/vite/index.d.ts +2 -0
  219. package/dist/vite/index.d.ts.map +1 -1
  220. package/dist/vite/index.html +2 -2
  221. package/dist/vite/index.js +16 -0
  222. package/dist/vite/index.js.map +1 -1
  223. package/dist/vite/plugins/chain-source-maps-plugin.js +1 -1
  224. package/dist/vite/plugins/chain-source-maps-plugin.js.map +1 -1
  225. package/dist/vite/plugins/clean-plugin.js +1 -1
  226. package/dist/vite/plugins/clean-plugin.js.map +1 -1
  227. package/dist/vite/plugins/css-injector-plugin.js +1 -1
  228. package/dist/vite/plugins/css-injector-plugin.js.map +1 -1
  229. package/dist/vite/plugins/design-system-guard-plugin.d.ts.map +1 -1
  230. package/dist/vite/plugins/design-system-guard-plugin.js +10 -5
  231. package/dist/vite/plugins/design-system-guard-plugin.js.map +1 -1
  232. package/dist/vite/plugins/dev-server-routing-plugin.js +1 -1
  233. package/dist/vite/plugins/dev-server-routing-plugin.js.map +1 -1
  234. package/dist/vite/plugins/externals-plugin.d.ts.map +1 -1
  235. package/dist/vite/plugins/externals-plugin.js +11 -5
  236. package/dist/vite/plugins/externals-plugin.js.map +1 -1
  237. package/dist/vite/plugins/html-plugin.d.ts.map +1 -1
  238. package/dist/vite/plugins/html-plugin.js +5 -3
  239. package/dist/vite/plugins/html-plugin.js.map +1 -1
  240. package/dist/vite/plugins/ignore-modules-plugin.d.ts +2 -2
  241. package/dist/vite/plugins/ignore-modules-plugin.d.ts.map +1 -1
  242. package/dist/vite/plugins/ignore-modules-plugin.js +36 -24
  243. package/dist/vite/plugins/ignore-modules-plugin.js.map +1 -1
  244. package/dist/vite/plugins/index.d.ts +3 -0
  245. package/dist/vite/plugins/index.d.ts.map +1 -1
  246. package/dist/vite/plugins/index.js +3 -0
  247. package/dist/vite/plugins/index.js.map +1 -1
  248. package/dist/vite/plugins/less-tilde-plugin.d.ts +8 -0
  249. package/dist/vite/plugins/less-tilde-plugin.d.ts.map +1 -0
  250. package/dist/vite/plugins/less-tilde-plugin.js +53 -0
  251. package/dist/vite/plugins/less-tilde-plugin.js.map +1 -0
  252. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js +1 -1
  253. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js.map +1 -1
  254. package/dist/vite/plugins/metadata-plugin.js +1 -1
  255. package/dist/vite/plugins/metadata-plugin.js.map +1 -1
  256. package/dist/vite/plugins/moment-locales-plugin.d.ts +1 -1
  257. package/dist/vite/plugins/moment-locales-plugin.d.ts.map +1 -1
  258. package/dist/vite/plugins/moment-locales-plugin.js +30 -14
  259. package/dist/vite/plugins/moment-locales-plugin.js.map +1 -1
  260. package/dist/vite/plugins/react-refresh-plugin/index.d.ts +2 -0
  261. package/dist/vite/plugins/react-refresh-plugin/index.d.ts.map +1 -0
  262. package/dist/vite/plugins/react-refresh-plugin/index.js +20 -0
  263. package/dist/vite/plugins/react-refresh-plugin/index.js.map +1 -0
  264. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.d.ts +4 -0
  265. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.d.ts.map +1 -0
  266. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.js +143 -0
  267. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.js.map +1 -0
  268. package/dist/vite/plugins/react-refresh-plugin/refresh-runtime.js +113 -0
  269. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.d.ts.map +1 -1
  270. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js +14 -11
  271. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js.map +1 -1
  272. package/dist/vite/plugins/style-urls-plugin.js +1 -1
  273. package/dist/vite/plugins/style-urls-plugin.js.map +1 -1
  274. package/dist/vite/plugins/virtual-modules-plugin.d.ts.map +1 -1
  275. package/dist/vite/plugins/virtual-modules-plugin.js +9 -6
  276. package/dist/vite/plugins/virtual-modules-plugin.js.map +1 -1
  277. package/dist/vite/plugins/window-externals-plugin.d.ts +22 -0
  278. package/dist/vite/plugins/window-externals-plugin.d.ts.map +1 -0
  279. package/dist/vite/plugins/window-externals-plugin.js +74 -0
  280. package/dist/vite/plugins/window-externals-plugin.js.map +1 -0
  281. package/dist/webpack/bundle-webpack.d.ts.map +1 -1
  282. package/dist/webpack/bundle-webpack.js +6 -1
  283. package/dist/webpack/bundle-webpack.js.map +1 -1
  284. package/dist/webpack/configs/optimization-config.js +17 -12
  285. package/dist/webpack/configs/optimization-config.js.map +1 -1
  286. package/dist/webpack/configs/output-config.js +1 -1
  287. package/dist/webpack/configs/output-config.js.map +1 -1
  288. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js +1 -3
  289. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js.map +1 -1
  290. package/dist/webpack/loaders/expose-loader/__tests__/__mocks__/configuration.expose-loader.js +13 -0
  291. package/dist/webpack/loaders/expose-loader/__tests__/__mocks__/index.js +1 -0
  292. package/dist/webpack/utils/index.d.ts +1 -0
  293. package/dist/webpack/utils/index.d.ts.map +1 -1
  294. package/dist/webpack/utils/index.js +1 -0
  295. package/dist/webpack/utils/index.js.map +1 -1
  296. package/dist/webpack/utils/normalize-proxy-config.d.ts +6 -0
  297. package/dist/webpack/utils/normalize-proxy-config.d.ts.map +1 -0
  298. package/dist/webpack/utils/normalize-proxy-config.js +52 -0
  299. package/dist/webpack/utils/normalize-proxy-config.js.map +1 -0
  300. package/package.json +32 -26
  301. package/src/cli/commands/__tests__/build.test.ts +81 -20
  302. package/src/cli/commands/__tests__/bundle-package.test.ts +65 -0
  303. package/src/cli/commands/__tests__/command.test.ts +154 -0
  304. package/src/cli/commands/__tests__/init.test.ts +1 -1
  305. package/src/cli/commands/__tests__/install.test.ts +5 -72
  306. package/src/cli/commands/__tests__/mfe-check.test.ts +26 -5
  307. package/src/cli/commands/__tests__/run-task.test.ts +20 -1
  308. package/src/cli/commands/__tests__/start.test.ts +77 -16
  309. package/src/cli/commands/build.ts +15 -6
  310. package/src/cli/commands/bundle-package.ts +20 -0
  311. package/src/cli/commands/command.ts +64 -0
  312. package/src/cli/commands/init.ts +0 -1
  313. package/src/cli/commands/install.ts +5 -21
  314. package/src/cli/commands/mfe-check.ts +6 -10
  315. package/src/cli/commands/registry/build.ts +3 -2
  316. package/src/cli/commands/registry/bundle-package.ts +22 -0
  317. package/src/cli/commands/registry/command-registry.ts +2 -0
  318. package/src/cli/commands/registry/install.ts +1 -6
  319. package/src/cli/commands/registry/start.ts +3 -2
  320. package/src/cli/commands/run-task.ts +8 -2
  321. package/src/cli/commands/start.ts +17 -6
  322. package/src/cli/commands/types.ts +2 -6
  323. package/src/cli/index.ts +3 -0
  324. package/src/cli/tasks/__tests__/cli-task.test.ts +181 -69
  325. package/src/cli/tasks/__tests__/task.test.ts +40 -45
  326. package/src/cli/tasks/cli-task.ts +43 -2
  327. package/src/cli/tasks/swc-compile-package/__tests__/get-swc-options.test.ts +46 -4
  328. package/src/cli/tasks/swc-compile-package/__tests__/swc-compile-package.test.ts +25 -4
  329. package/src/cli/tasks/swc-compile-package/get-swc-options.ts +14 -1
  330. package/src/cli/tasks/swc-compile-package/swc-compile-package.ts +6 -2
  331. package/src/cli/tasks/task.ts +8 -2
  332. package/src/cli/tasks/tsc-compile/__tests__/tsc-compile.test.ts +8 -32
  333. package/src/cli/tasks/tsc-compile-package/__tests__/tsc-compile-package.test.ts +10 -19
  334. package/src/cli/utils/__tests__/cli-git.test.ts +54 -3
  335. package/src/cli/utils/__tests__/cli-npm.test.ts +33 -0
  336. package/src/cli/utils/__tests__/cli-os.test.ts +183 -4
  337. package/src/cli/utils/__tests__/compile.test.ts +37 -2
  338. package/src/cli/utils/__tests__/copy-files.test.ts +1 -1
  339. package/src/cli/utils/__tests__/with-exponential-backoff.test.ts +119 -0
  340. package/src/cli/utils/cli-git.ts +27 -1
  341. package/src/cli/utils/cli-npm.ts +19 -4
  342. package/src/cli/utils/cli-os.ts +44 -0
  343. package/src/cli/utils/compile.ts +8 -1
  344. package/src/cli/utils/copy-files.ts +1 -1
  345. package/src/cli/utils/index.ts +1 -1
  346. package/src/cli/utils/resolve-bundler.ts +2 -1
  347. package/src/cli/utils/ts-config.ts +1 -1
  348. package/src/cli/utils/with-exponential-backoff.ts +28 -0
  349. package/src/core/constants.ts +2 -0
  350. package/src/storybook-config/__tests__/vite-final.test.ts +6 -0
  351. package/src/storybook-config/__tests__/webpack-final.test.ts +26 -12
  352. package/src/storybook-config/webpack-final.ts +10 -4
  353. package/src/telemetry/__tests__/telemetry.test.ts +326 -0
  354. package/src/telemetry/index.ts +2 -0
  355. package/src/telemetry/telemetry.ts +134 -0
  356. package/src/utils/__tests__/exit-when-parent-exits.test.ts +87 -0
  357. package/src/utils/__tests__/find-up.test.ts +49 -0
  358. package/src/utils/__tests__/get-configuration.test.ts +62 -0
  359. package/src/utils/exit-when-parent-exits.ts +33 -0
  360. package/src/utils/find-up.ts +2 -2
  361. package/src/utils/get-configuration.ts +14 -5
  362. package/src/utils/index.ts +1 -0
  363. package/src/vite/__tests__/build-shared-dependencies.test.ts +39 -5
  364. package/src/vite/build-shared-dependencies.ts +2 -1
  365. package/src/vite/config/__tests__/base-config.test.ts +12 -4
  366. package/src/vite/config/__tests__/create-css-config.test.ts +2 -6
  367. package/src/vite/config/__tests__/create-filtering-logger.test.ts +3 -2
  368. package/src/vite/config/__tests__/create-vite-config.test.ts +6 -3
  369. package/src/vite/config/base-config.ts +13 -1
  370. package/src/vite/config/create-filtering-logger.ts +8 -2
  371. package/src/vite/config/create-vite-config.ts +6 -3
  372. package/src/vite/index.html +2 -2
  373. package/src/vite/index.ts +2 -0
  374. package/src/vite/plugins/__tests__/chain-source-maps-plugin.test.ts +1 -1
  375. package/src/vite/plugins/__tests__/clean-plugin.test.ts +1 -1
  376. package/src/vite/plugins/__tests__/css-injector-plugin.test.ts +1 -1
  377. package/src/vite/plugins/__tests__/design-system-guard-plugin.test.ts +15 -3
  378. package/src/vite/plugins/__tests__/dev-server-routing-plugin.test.ts +1 -1
  379. package/src/vite/plugins/__tests__/externals-plugin.test.ts +24 -3
  380. package/src/vite/plugins/__tests__/html-plugin.test.ts +10 -3
  381. package/src/vite/plugins/__tests__/html-template.test.ts +10 -2
  382. package/src/vite/plugins/__tests__/ignore-modules-plugin.test.ts +30 -6
  383. package/src/vite/plugins/__tests__/less-tilde-plugin.test.ts +91 -0
  384. package/src/vite/plugins/__tests__/metadata-plugin.test.ts +1 -1
  385. package/src/vite/plugins/__tests__/moment-locales-plugin.test.ts +35 -25
  386. package/src/vite/plugins/__tests__/style-urls-plugin.test.ts +1 -1
  387. package/src/vite/plugins/__tests__/virtual-modules-plugin.test.ts +20 -9
  388. package/src/vite/plugins/__tests__/window-externals-plugin.test.ts +128 -0
  389. package/src/vite/plugins/chain-source-maps-plugin.ts +1 -1
  390. package/src/vite/plugins/clean-plugin.ts +1 -1
  391. package/src/vite/plugins/css-injector-plugin.ts +1 -1
  392. package/src/vite/plugins/design-system-guard-plugin.ts +11 -8
  393. package/src/vite/plugins/dev-server-routing-plugin.ts +1 -1
  394. package/src/vite/plugins/externals-plugin.ts +15 -6
  395. package/src/vite/plugins/html-plugin.ts +4 -2
  396. package/src/vite/plugins/ignore-modules-plugin.ts +32 -23
  397. package/src/vite/plugins/index.ts +3 -0
  398. package/src/vite/plugins/less-tilde-plugin.ts +64 -0
  399. package/src/vite/plugins/magic-comments-plugin/magic-comments-plugin.ts +1 -1
  400. package/src/vite/plugins/metadata-plugin.ts +1 -1
  401. package/src/vite/plugins/moment-locales-plugin.ts +24 -14
  402. package/src/vite/plugins/react-refresh-plugin/README.md +165 -0
  403. package/src/vite/plugins/react-refresh-plugin/__tests__/react-refresh-plugin.test.ts +366 -0
  404. package/src/vite/plugins/react-refresh-plugin/__tests__/refresh-runtime.test.ts +193 -0
  405. package/src/vite/plugins/react-refresh-plugin/index.ts +1 -0
  406. package/src/vite/plugins/react-refresh-plugin/react-refresh-plugin.ts +144 -0
  407. package/src/vite/plugins/react-refresh-plugin/refresh-runtime.js +113 -0
  408. package/src/vite/plugins/shared-dependencies-plugin/__tests__/shared-dependencies-plugin.test.ts +21 -16
  409. package/src/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.ts +13 -12
  410. package/src/vite/plugins/style-urls-plugin.ts +1 -1
  411. package/src/vite/plugins/virtual-modules-plugin.ts +8 -7
  412. package/src/vite/plugins/window-externals-plugin.ts +94 -0
  413. package/src/webpack/__tests__/bundle-webpack.test.ts +32 -0
  414. package/src/webpack/__tests__/create-webpack-config-shared-dependencies.test.ts +27 -1
  415. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +17 -5
  416. package/src/webpack/__tests__/create-webpack-config.test.ts +10 -6
  417. package/src/webpack/bundle-webpack.ts +7 -1
  418. package/src/webpack/configs/optimization-config.ts +22 -11
  419. package/src/webpack/configs/output-config.ts +1 -1
  420. package/src/webpack/utils/__tests__/normalize-proxy-config.test.ts +121 -0
  421. package/src/webpack/utils/index.ts +1 -0
  422. package/src/webpack/utils/normalize-proxy-config.ts +59 -0
  423. package/tsconfig/types.d.ts +10 -0
  424. package/dist/cli/utils/get-bundle-command.d.ts +0 -3
  425. package/dist/cli/utils/get-bundle-command.d.ts.map +0 -1
  426. package/dist/cli/utils/get-bundle-command.js +0 -16
  427. package/dist/cli/utils/get-bundle-command.js.map +0 -1
  428. package/src/cli/utils/__tests__/get-bundle-command.test.ts +0 -23
  429. package/src/cli/utils/get-bundle-command.ts +0 -5
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/commands/registry/command-registry.ts"],"sourcesContent":["import { CommandName } from '../../../utils';\nimport { Command, CommandEntry, Newable } from '../types';\nimport { entry as build } from './build';\nimport { entry as bundleVite } from './bundle-vite';\nimport { entry as bundleWebpack } from './bundle-webpack';\nimport { entry as clean } from './clean';\nimport { entry as convertEslintConfig } from './convert-eslint-config';\nimport { entry as eslint } from './eslint';\nimport { entry as init } from './init';\nimport { entry as install } from './install';\nimport { entry as kendoUiLicense } from './kendo-ui-license';\nimport { entry as lint } from './lint';\nimport { entry as mfeCheck } from './mfe-check';\nimport { entry as mfeGenerateMetadata } from './mfe-generate-metadata';\nimport { entry as mfeList } from './mfe-list';\nimport { entry as mfePackageClean } from './mfe-package-clean';\nimport { entry as mfePackagePublish } from './mfe-package-publish';\nimport { entry as mfePackageRollback } from './mfe-package-rollback';\nimport { entry as mfePublish } from './mfe-publish';\nimport { entry as mfePurgeCache } from './mfe-purge-cache';\nimport { entry as preparePackage } from './prepare-package';\nimport { entry as review } from './review';\nimport { entry as start } from './start';\nimport { entry as stylelint } from './stylelint';\nimport { entry as stylesCheck } from './styles-check';\nimport { entry as task } from './task';\nimport { entry as test } from './test-command';\nimport { entry as uploadSourcemaps } from './upload-sourcemaps';\n\nexport interface CommandRegistryEntry extends CommandEntry {\n load: () => Promise<Newable<Command>>;\n}\n\nfunction toPascalCase(name: string): string {\n return name\n .split('-')\n .map(part => part[0].toUpperCase() + part.slice(1))\n .join('');\n}\n\ninterface MakeEntryOptions {\n path?: string;\n className?: string;\n}\n\nfunction makeEntry<K extends CommandName, T extends CommandEntry>(\n key: K,\n entry: T,\n options: MakeEntryOptions = {}\n) {\n const { path = key, className = toPascalCase(path) } = options;\n return {\n [key]: {\n ...entry,\n load: () => import(`../${path}`).then(m => m[className]),\n },\n } as { [k in K]: T & CommandRegistryEntry };\n}\n\n/*\n * Each makeEntry call returns a single-key object. Spreading them preserves the\n * per-command type information, as opposed to widening each value to the union\n * return type.\n */\nexport const commandRegistry = {\n ...makeEntry(CommandName.build, build),\n ...makeEntry(CommandName['bundle-vite'], bundleVite),\n ...makeEntry(CommandName['bundle-webpack'], bundleWebpack),\n ...makeEntry(CommandName.clean, clean),\n ...makeEntry(CommandName['convert-eslint-config'], convertEslintConfig),\n ...makeEntry(CommandName.eslint, eslint, { className: 'ESLintCommand' }),\n ...makeEntry(CommandName.init, init),\n ...makeEntry(CommandName.install, install),\n ...makeEntry(CommandName['kendo-ui-license'], kendoUiLicense, { className: 'KendoUILicense' }),\n ...makeEntry(CommandName.lint, lint),\n ...makeEntry(CommandName['mfe-check'], mfeCheck),\n ...makeEntry(CommandName['mfe-generate-metadata'], mfeGenerateMetadata),\n ...makeEntry(CommandName['mfe-list'], mfeList, { className: 'MFEList' }),\n ...makeEntry(CommandName['mfe-package-clean'], mfePackageClean, {\n className: 'MFEPackageClean',\n }),\n ...makeEntry(CommandName['mfe-package-publish'], mfePackagePublish, {\n className: 'MFEPackagePublish',\n }),\n ...makeEntry(CommandName['mfe-package-rollback'], mfePackageRollback, {\n className: 'MFEPackageRollback',\n }),\n ...makeEntry(CommandName['mfe-publish'], mfePublish, { className: 'MFEPublish' }),\n ...makeEntry(CommandName['mfe-purge-cache'], mfePurgeCache, {\n className: 'MFEPurgeCache',\n }),\n ...makeEntry(CommandName['prepare-package'], preparePackage),\n ...makeEntry(CommandName.review, review),\n ...makeEntry(CommandName.start, start),\n ...makeEntry(CommandName.stylelint, stylelint),\n ...makeEntry(CommandName['styles-check'], stylesCheck),\n ...makeEntry(CommandName.task, task, { path: 'run-task' }),\n ...makeEntry(CommandName.test, test, { className: 'Tests' }),\n ...makeEntry(CommandName['upload-sourcemaps'], uploadSourcemaps),\n} satisfies Record<CommandName, CommandRegistryEntry>;\n"],"names":["commandRegistry","toPascalCase","name","split","map","part","toUpperCase","slice","join","makeEntry","key","entry","options","path","className","load","then","m","CommandName","build","bundleVite","bundleWebpack","clean","convertEslintConfig","eslint","init","install","kendoUiLicense","lint","mfeCheck","mfeGenerateMetadata","mfeList","mfePackageClean","mfePackagePublish","mfePackageRollback","mfePublish","mfePurgeCache","preparePackage","review","start","stylelint","stylesCheck","task","test","uploadSourcemaps"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/cli/commands/registry/command-registry.ts"],"sourcesContent":["import { CommandName } from '../../../utils';\nimport { Command, CommandEntry, Newable } from '../types';\nimport { entry as build } from './build';\nimport { entry as bundlePackage } from './bundle-package';\nimport { entry as bundleVite } from './bundle-vite';\nimport { entry as bundleWebpack } from './bundle-webpack';\nimport { entry as clean } from './clean';\nimport { entry as convertEslintConfig } from './convert-eslint-config';\nimport { entry as eslint } from './eslint';\nimport { entry as init } from './init';\nimport { entry as install } from './install';\nimport { entry as kendoUiLicense } from './kendo-ui-license';\nimport { entry as lint } from './lint';\nimport { entry as mfeCheck } from './mfe-check';\nimport { entry as mfeGenerateMetadata } from './mfe-generate-metadata';\nimport { entry as mfeList } from './mfe-list';\nimport { entry as mfePackageClean } from './mfe-package-clean';\nimport { entry as mfePackagePublish } from './mfe-package-publish';\nimport { entry as mfePackageRollback } from './mfe-package-rollback';\nimport { entry as mfePublish } from './mfe-publish';\nimport { entry as mfePurgeCache } from './mfe-purge-cache';\nimport { entry as preparePackage } from './prepare-package';\nimport { entry as review } from './review';\nimport { entry as start } from './start';\nimport { entry as stylelint } from './stylelint';\nimport { entry as stylesCheck } from './styles-check';\nimport { entry as task } from './task';\nimport { entry as test } from './test-command';\nimport { entry as uploadSourcemaps } from './upload-sourcemaps';\n\nexport interface CommandRegistryEntry extends CommandEntry {\n load: () => Promise<Newable<Command>>;\n}\n\nfunction toPascalCase(name: string): string {\n return name\n .split('-')\n .map(part => part[0].toUpperCase() + part.slice(1))\n .join('');\n}\n\ninterface MakeEntryOptions {\n path?: string;\n className?: string;\n}\n\nfunction makeEntry<K extends CommandName, T extends CommandEntry>(\n key: K,\n entry: T,\n options: MakeEntryOptions = {}\n) {\n const { path = key, className = toPascalCase(path) } = options;\n return {\n [key]: {\n ...entry,\n load: () => import(`../${path}`).then(m => m[className]),\n },\n } as { [k in K]: T & CommandRegistryEntry };\n}\n\n/*\n * Each makeEntry call returns a single-key object. Spreading them preserves the\n * per-command type information, as opposed to widening each value to the union\n * return type.\n */\nexport const commandRegistry = {\n ...makeEntry(CommandName.build, build),\n ...makeEntry(CommandName['bundle-package'], bundlePackage),\n ...makeEntry(CommandName['bundle-vite'], bundleVite),\n ...makeEntry(CommandName['bundle-webpack'], bundleWebpack),\n ...makeEntry(CommandName.clean, clean),\n ...makeEntry(CommandName['convert-eslint-config'], convertEslintConfig),\n ...makeEntry(CommandName.eslint, eslint, { className: 'ESLintCommand' }),\n ...makeEntry(CommandName.init, init),\n ...makeEntry(CommandName.install, install),\n ...makeEntry(CommandName['kendo-ui-license'], kendoUiLicense, { className: 'KendoUILicense' }),\n ...makeEntry(CommandName.lint, lint),\n ...makeEntry(CommandName['mfe-check'], mfeCheck),\n ...makeEntry(CommandName['mfe-generate-metadata'], mfeGenerateMetadata),\n ...makeEntry(CommandName['mfe-list'], mfeList, { className: 'MFEList' }),\n ...makeEntry(CommandName['mfe-package-clean'], mfePackageClean, {\n className: 'MFEPackageClean',\n }),\n ...makeEntry(CommandName['mfe-package-publish'], mfePackagePublish, {\n className: 'MFEPackagePublish',\n }),\n ...makeEntry(CommandName['mfe-package-rollback'], mfePackageRollback, {\n className: 'MFEPackageRollback',\n }),\n ...makeEntry(CommandName['mfe-publish'], mfePublish, { className: 'MFEPublish' }),\n ...makeEntry(CommandName['mfe-purge-cache'], mfePurgeCache, {\n className: 'MFEPurgeCache',\n }),\n ...makeEntry(CommandName['prepare-package'], preparePackage),\n ...makeEntry(CommandName.review, review),\n ...makeEntry(CommandName.start, start),\n ...makeEntry(CommandName.stylelint, stylelint),\n ...makeEntry(CommandName['styles-check'], stylesCheck),\n ...makeEntry(CommandName.task, task, { path: 'run-task' }),\n ...makeEntry(CommandName.test, test, { className: 'Tests' }),\n ...makeEntry(CommandName['upload-sourcemaps'], uploadSourcemaps),\n} satisfies Record<CommandName, CommandRegistryEntry>;\n"],"names":["commandRegistry","toPascalCase","name","split","map","part","toUpperCase","slice","join","makeEntry","key","entry","options","path","className","load","then","m","CommandName","build","bundlePackage","bundleVite","bundleWebpack","clean","convertEslintConfig","eslint","init","install","kendoUiLicense","lint","mfeCheck","mfeGenerateMetadata","mfeList","mfePackageClean","mfePackagePublish","mfePackageRollback","mfePublish","mfePurgeCache","preparePackage","review","start","stylelint","stylesCheck","task","test","uploadSourcemaps"],"mappings":"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"}
@@ -1,21 +1,5 @@
1
1
  export declare const entry: {
2
2
  allowRunFromGlobal: true;
3
3
  description: string;
4
- options: {
5
- fix: {
6
- boolean: true;
7
- description: string;
8
- hidden: true;
9
- };
10
- quiet: {
11
- boolean: true;
12
- description: string;
13
- hidden: true;
14
- };
15
- token: {
16
- boolean: true;
17
- description: string;
18
- };
19
- };
20
4
  };
21
5
  //# sourceMappingURL=install.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/registry/install.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;CAQO,CAAC"}
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/registry/install.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK;;;CAGO,CAAC"}
@@ -11,23 +11,7 @@ Object.defineProperty(exports, "entry", {
11
11
  const _defineentry = require("./define-entry");
12
12
  const entry = (0, _defineentry.defineEntry)({
13
13
  allowRunFromGlobal: true,
14
- description: 'Install project dependencies',
15
- options: {
16
- fix: {
17
- boolean: true,
18
- description: 'Update and dedupe package-lock.json',
19
- hidden: true
20
- },
21
- quiet: {
22
- boolean: true,
23
- description: 'Suppress output',
24
- hidden: true
25
- },
26
- token: {
27
- boolean: true,
28
- description: 'Configure npm token'
29
- }
30
- }
14
+ description: 'Removed. Run `npx --yes @servicetitan/install` directly instead.'
31
15
  });
32
16
 
33
17
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/commands/registry/install.ts"],"sourcesContent":["import type { CommandEntry } from '../types';\nimport { defineEntry } from './define-entry';\n\nexport const entry = defineEntry({\n allowRunFromGlobal: true,\n description: 'Install project dependencies',\n options: {\n fix: { boolean: true, description: 'Update and dedupe package-lock.json', hidden: true },\n quiet: { boolean: true, description: 'Suppress output', hidden: true },\n token: { boolean: true, description: 'Configure npm token' },\n },\n} satisfies CommandEntry);\n"],"names":["entry","defineEntry","allowRunFromGlobal","description","options","fix","boolean","hidden","quiet","token"],"mappings":";;;;+BAGaA;;;eAAAA;;;6BAFe;AAErB,MAAMA,QAAQC,IAAAA,wBAAW,EAAC;IAC7BC,oBAAoB;IACpBC,aAAa;IACbC,SAAS;QACLC,KAAK;YAAEC,SAAS;YAAMH,aAAa;YAAuCI,QAAQ;QAAK;QACvFC,OAAO;YAAEF,SAAS;YAAMH,aAAa;YAAmBI,QAAQ;QAAK;QACrEE,OAAO;YAAEH,SAAS;YAAMH,aAAa;QAAsB;IAC/D;AACJ"}
1
+ {"version":3,"sources":["../../../../src/cli/commands/registry/install.ts"],"sourcesContent":["import type { CommandEntry } from '../types';\nimport { defineEntry } from './define-entry';\n\nexport const entry = defineEntry({\n allowRunFromGlobal: true,\n description: 'Removed. Run `npx --yes @servicetitan/install` directly instead.',\n} satisfies CommandEntry);\n"],"names":["entry","defineEntry","allowRunFromGlobal","description"],"mappings":";;;;+BAGaA;;;eAAAA;;;6BAFe;AAErB,MAAMA,QAAQC,IAAAA,wBAAW,EAAC;IAC7BC,oBAAoB;IACpBC,aAAa;AACjB"}
@@ -5,7 +5,7 @@ export declare const entry: {
5
5
  bundler: {
6
6
  choices: readonly ["vite", "webpack"];
7
7
  description: string;
8
- defaultDescription: string;
8
+ defaultDescription: "webpack";
9
9
  };
10
10
  codeCoverage: {
11
11
  boolean: true;
@@ -1 +1 @@
1
- {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/registry/start.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBO,CAAC"}
1
+ {"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/registry/start.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBO,CAAC"}
@@ -8,18 +8,16 @@ Object.defineProperty(exports, "entry", {
8
8
  return entry;
9
9
  }
10
10
  });
11
+ const _core = require("../../../core");
11
12
  const _defineentry = require("./define-entry");
12
13
  const entry = (0, _defineentry.defineEntry)({
13
14
  description: 'Run project in development mode',
14
15
  greedy: true,
15
16
  options: {
16
17
  bundler: {
17
- choices: [
18
- 'vite',
19
- 'webpack'
20
- ],
18
+ choices: _core.bundleConstants.bundlers,
21
19
  description: 'Bundler',
22
- defaultDescription: 'webpack'
20
+ defaultDescription: _core.bundleConstants.defaultBundler
23
21
  },
24
22
  codeCoverage: {
25
23
  boolean: true,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/commands/registry/start.ts"],"sourcesContent":["import type { CommandEntry } from '../types';\nimport { defineEntry } from './define-entry';\n\nexport const entry = defineEntry({\n description: 'Run project in development mode',\n greedy: true,\n options: {\n bundler: {\n choices: ['vite', 'webpack'] as const,\n description: 'Bundler',\n defaultDescription: 'webpack',\n },\n codeCoverage: { boolean: true, description: 'Instrument code for coverage analysis?' },\n config: { string: true, hidden: true, description: 'Use specified configuration' },\n ignore: { array: true, string: true, description: 'Packages to skip' },\n scope: { array: true, string: true, description: 'Packages to run and watch' },\n useTsc: { boolean: true, description: 'Use tsc to compile packages?' },\n useVite: { boolean: true, hidden: true, description: 'Deprecated: use --bundler=vite' },\n },\n} satisfies CommandEntry);\n"],"names":["entry","defineEntry","description","greedy","options","bundler","choices","defaultDescription","codeCoverage","boolean","config","string","hidden","ignore","array","scope","useTsc","useVite"],"mappings":";;;;+BAGaA;;;eAAAA;;;6BAFe;AAErB,MAAMA,QAAQC,IAAAA,wBAAW,EAAC;IAC7BC,aAAa;IACbC,QAAQ;IACRC,SAAS;QACLC,SAAS;YACLC,SAAS;gBAAC;gBAAQ;aAAU;YAC5BJ,aAAa;YACbK,oBAAoB;QACxB;QACAC,cAAc;YAAEC,SAAS;YAAMP,aAAa;QAAyC;QACrFQ,QAAQ;YAAEC,QAAQ;YAAMC,QAAQ;YAAMV,aAAa;QAA8B;QACjFW,QAAQ;YAAEC,OAAO;YAAMH,QAAQ;YAAMT,aAAa;QAAmB;QACrEa,OAAO;YAAED,OAAO;YAAMH,QAAQ;YAAMT,aAAa;QAA4B;QAC7Ec,QAAQ;YAAEP,SAAS;YAAMP,aAAa;QAA+B;QACrEe,SAAS;YAAER,SAAS;YAAMG,QAAQ;YAAMV,aAAa;QAAiC;IAC1F;AACJ"}
1
+ {"version":3,"sources":["../../../../src/cli/commands/registry/start.ts"],"sourcesContent":["import { bundleConstants } from '../../../core';\nimport type { CommandEntry } from '../types';\nimport { defineEntry } from './define-entry';\n\nexport const entry = defineEntry({\n description: 'Run project in development mode',\n greedy: true,\n options: {\n bundler: {\n choices: bundleConstants.bundlers,\n description: 'Bundler',\n defaultDescription: bundleConstants.defaultBundler,\n },\n codeCoverage: { boolean: true, description: 'Instrument code for coverage analysis?' },\n config: { string: true, hidden: true, description: 'Use specified configuration' },\n ignore: { array: true, string: true, description: 'Packages to skip' },\n scope: { array: true, string: true, description: 'Packages to run and watch' },\n useTsc: { boolean: true, description: 'Use tsc to compile packages?' },\n useVite: { boolean: true, hidden: true, description: 'Deprecated: use --bundler=vite' },\n },\n} satisfies CommandEntry);\n"],"names":["entry","defineEntry","description","greedy","options","bundler","choices","bundleConstants","bundlers","defaultDescription","defaultBundler","codeCoverage","boolean","config","string","hidden","ignore","array","scope","useTsc","useVite"],"mappings":";;;;+BAIaA;;;eAAAA;;;sBAJmB;6BAEJ;AAErB,MAAMA,QAAQC,IAAAA,wBAAW,EAAC;IAC7BC,aAAa;IACbC,QAAQ;IACRC,SAAS;QACLC,SAAS;YACLC,SAASC,qBAAe,CAACC,QAAQ;YACjCN,aAAa;YACbO,oBAAoBF,qBAAe,CAACG,cAAc;QACtD;QACAC,cAAc;YAAEC,SAAS;YAAMV,aAAa;QAAyC;QACrFW,QAAQ;YAAEC,QAAQ;YAAMC,QAAQ;YAAMb,aAAa;QAA8B;QACjFc,QAAQ;YAAEC,OAAO;YAAMH,QAAQ;YAAMZ,aAAa;QAAmB;QACrEgB,OAAO;YAAED,OAAO;YAAMH,QAAQ;YAAMZ,aAAa;QAA4B;QAC7EiB,QAAQ;YAAEP,SAAS;YAAMV,aAAa;QAA+B;QACrEkB,SAAS;YAAER,SAAS;YAAMG,QAAQ;YAAMb,aAAa;QAAiC;IAC1F;AACJ"}
@@ -24,9 +24,7 @@ function _define_property(obj, key, value) {
24
24
  configurable: true,
25
25
  writable: true
26
26
  });
27
- } else {
28
- obj[key] = value;
29
- }
27
+ } else obj[key] = value;
30
28
  return obj;
31
29
  }
32
30
  function _interop_require_default(obj) {
@@ -36,12 +34,21 @@ function _interop_require_default(obj) {
36
34
  }
37
35
  function _ts_decorate(decorators, target, key, desc) {
38
36
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
39
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
40
- else for(var i = decorators.length - 1; i >= 0; i--)if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
37
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
38
+ r = Reflect.decorate(decorators, target, key, desc);
39
+ } else {
40
+ for(var i = decorators.length - 1; i >= 0; i--){
41
+ if (d = decorators[i]) {
42
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
43
+ }
44
+ }
45
+ }
41
46
  return c > 3 && r && Object.defineProperty(target, key, r), r;
42
47
  }
43
- function _ts_metadata(k, v) {
44
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
48
+ function _ts_metadata(metadataKey, metadataValue) {
49
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
50
+ return Reflect.metadata(metadataKey, metadataValue);
51
+ }
45
52
  }
46
53
  const collator = new Intl.Collator();
47
54
  class Review extends _types.Command {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/commands/review/review.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport chalk from 'chalk';\nimport terminalLink from 'terminal-link';\nimport {\n findPackages,\n getReviewConfiguration,\n log,\n logErrors,\n readJsonSafe,\n toArray,\n} from '../../../utils';\nimport type { entry } from '../registry/review';\nimport { Command } from '../types';\nimport { rules } from './rules';\nimport {\n ErrorSeverity,\n FixCategory,\n Level,\n Package,\n PackageError,\n PackageRule,\n Project,\n RuleConfiguration,\n} from './types';\nimport {\n collateDependencies,\n ErrorSummary,\n formatLocation,\n indent,\n pluralize,\n summarize,\n} from './utils';\n\nconst collator = new Intl.Collator();\n\nexport class Review extends Command<typeof entry> {\n private readonly severityToLabel: Record<ErrorSeverity, string> = {\n [ErrorSeverity.warning]: chalk.yellow('warning'),\n [ErrorSeverity.error]: chalk.red('error'),\n };\n\n private readonly levelToSeverity: Partial<Record<Level, ErrorSeverity>> = {\n warn: ErrorSeverity.warning,\n error: ErrorSeverity.error,\n };\n\n @logErrors\n async execute() {\n const errors = this.args.fix ? this.fixErrors() : this.findErrors();\n const summary = this.reportErrors(errors);\n return summary.error > 0 ? Promise.reject() : Promise.resolve();\n }\n\n private createProject(): Project {\n const root = readJsonSafe('package.json');\n if (!root?.workspaces) {\n throw new Error('this command must be run from the workspace root directory');\n }\n\n const packageManager = getPackageManager();\n if (!packageManager.hasValidLockFile()) {\n throw new Error(`missing or invalid lock file: ${packageManager.lockFileName}`);\n }\n\n root.location = '.'; // identifies the root package.json for rules that care\n\n const config = getReviewConfiguration();\n const packages: Package[] = [root, ...findPackages()];\n const dependencies = sortByKey(collateDependencies(packages));\n this.debug('review:packages', packages);\n this.debug('review:dependencies', dependencies);\n\n return {\n config,\n dependencies,\n packageManager,\n packages,\n };\n }\n\n private debug(namespace: string, data: any) {\n /* istanbul ignore next: debug only */\n log.debug(namespace, () => data && JSON.stringify(data, null, 2));\n }\n\n private findErrors(project?: Project) {\n const errors = this.runRules(project ?? this.createProject());\n this.debug('review:errors', errors);\n return errors;\n }\n\n private fixErrors() {\n const rulesById = rules.reduce<Record<string, PackageRule>>((result, rule) => {\n result[rule.id] = rule;\n return result;\n }, {});\n\n let project = this.createProject();\n let errors = this.findErrors(project);\n let totalFixed = 0;\n\n for (const category of [FixCategory.isolated, FixCategory.normal, FixCategory.lockFile]) {\n const fixable = errors.filter(({ fixable }) => fixable === category);\n if (fixable.length === 0) {\n continue;\n }\n\n fixable.forEach(error => {\n const rule = rulesById[error.id];\n if (rule.fix) {\n log.text(`Fixing ${this.formatError({ ...error, details: '', location: '' })}`);\n rule.fix(error, project);\n totalFixed += 1;\n }\n });\n\n project.packageManager.installPackages({ fix: true }, { stdio: 'inherit' });\n project = this.createProject();\n errors = this.findErrors(project);\n }\n\n if (totalFixed > 0) {\n let summary = `Fixed ${pluralize(totalFixed, 'problem')}`;\n if (errors.length) {\n summary = `${summary}, ${pluralize(errors.length, 'problem remains', 'problems remain')}:\\n`;\n }\n log.info(summary);\n }\n\n return errors;\n }\n\n private formatError(error: PackageError) {\n const { location, message, severity = ErrorSeverity.error } = error;\n\n const label = indent(this.severityToLabel[severity], location ? 1 : 0);\n const details = error.details ? `\\n${indent(error.details, location ? 2 : 1)}` : '';\n const link = this.getLink(error);\n\n return `${label} ${message} ${link}${details}`;\n }\n\n private reportErrors(errors: PackageError[]) {\n let prevLocation: string | undefined;\n\n errors.forEach((error, index) => {\n const { location } = error;\n if (index > 0 && (!location || location !== prevLocation)) {\n log.text('');\n }\n if (location && location !== prevLocation) {\n log.text(chalk.underline(formatLocation(location)));\n prevLocation = location;\n }\n log.text(this.formatError(error));\n });\n\n const summary = summarize(errors);\n this.reportSummary(summary);\n return summary;\n }\n\n private reportSummary({ error, warning, fixable }: ErrorSummary) {\n if (error + warning === 0) {\n return log.success('0 problems');\n }\n\n log.text('');\n\n const severity = error ? 'error' : 'warning';\n log[severity](\n `${pluralize(error + warning, 'problem')} (${pluralize(error, 'error')}, ${pluralize(warning, 'warning')})`\n );\n\n if (fixable.error + fixable.warning > 0) {\n log[severity](\n `${pluralize(fixable.error, 'error')} and ${pluralize(fixable.warning, 'warning')} potentially fixable with --fix option`\n );\n }\n }\n\n private runRules(project: Project): PackageError[] {\n const selected = this.getSelectedRules();\n return rules\n .filter(({ id }) => !selected || selected.has(id))\n .flatMap(rule => this.runRule(rule, project))\n .filter(error => !!error)\n .sort(compareError);\n }\n\n private runRule(rule: PackageRule, project: Project) {\n const level = this.getLevel(project.config.rules?.[rule.id]);\n if (level === 'off') {\n return;\n }\n\n return this.transform(rule.run(project), level);\n }\n\n private transform(errors?: PackageError | PackageError[], level?: 'error' | 'warn') {\n const severity = level && this.levelToSeverity[level];\n return errors && severity ? toArray(errors).map(error => ({ ...error, severity })) : errors;\n }\n\n private getLevel(config?: RuleConfiguration) {\n if (typeof config === 'string') {\n return config;\n }\n if (Array.isArray(config) && typeof config[0] === 'string') {\n return config[0];\n }\n }\n\n private getLink({ id }: PackageError) {\n const url = `https://docs.st.dev/docs/frontend/uikit/startup/review#${id}`;\n return chalk.dim(terminalLink(id, url));\n }\n\n private getSelectedRules() {\n const rule = this.args.rule;\n return rule ? new Set(rule.filter(id => !!id)) : undefined;\n }\n}\n\nfunction compareError(\n { location: locationA = '', severity: severityA = ErrorSeverity.error }: PackageError,\n { location: locationB = '', severity: severityB = ErrorSeverity.error }: PackageError\n) {\n return locationA === locationB ? severityA - severityB : collator.compare(locationA, locationB);\n}\n\nfunction sortByKey<T>(obj: Record<string, T>): Record<string, T> {\n return Object.fromEntries(Object.entries(obj).sort(([a], [b]) => collator.compare(a, b)));\n}\n"],"names":["Review","collator","Intl","Collator","Command","execute","errors","args","fix","fixErrors","findErrors","summary","reportErrors","error","Promise","reject","resolve","createProject","root","readJsonSafe","workspaces","Error","packageManager","getPackageManager","hasValidLockFile","lockFileName","location","config","getReviewConfiguration","packages","findPackages","dependencies","sortByKey","collateDependencies","debug","namespace","data","log","JSON","stringify","project","runRules","rulesById","rules","reduce","result","rule","id","totalFixed","category","FixCategory","isolated","normal","lockFile","fixable","filter","length","forEach","text","formatError","details","installPackages","stdio","pluralize","info","message","severity","ErrorSeverity","label","indent","severityToLabel","link","getLink","prevLocation","index","chalk","underline","formatLocation","summarize","reportSummary","warning","success","selected","getSelectedRules","has","flatMap","runRule","sort","compareError","level","getLevel","transform","run","levelToSeverity","toArray","map","Array","isArray","url","dim","terminalLink","Set","undefined","yellow","red","warn","locationA","severityA","locationB","severityB","compare","obj","Object","fromEntries","entries","a","b"],"mappings":";;;;+BAmCaA;;;eAAAA;;;yBAnCqB;8DAChB;qEACO;uBAQlB;uBAEiB;uBACF;wBAUf;wBAQA;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEP,MAAMC,WAAW,IAAIC,KAAKC,QAAQ;AAE3B,MAAMH,eAAeI,cAAO;IAW/B,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,iBAAiBC,IAAAA,0BAAiB;QACxC,IAAI,CAACD,eAAeE,gBAAgB,IAAI;YACpC,MAAM,IAAIH,MAAM,CAAC,8BAA8B,EAAEC,eAAeG,YAAY,EAAE;QAClF;QAEAP,KAAKQ,QAAQ,GAAG,KAAK,uDAAuD;QAE5E,MAAMC,SAASC,IAAAA,6BAAsB;QACrC,MAAMC,WAAsB;YAACX;eAASY,IAAAA,mBAAY;SAAG;QACrD,MAAMC,eAAeC,UAAUC,IAAAA,2BAAmB,EAACJ;QACnD,IAAI,CAACK,KAAK,CAAC,mBAAmBL;QAC9B,IAAI,CAACK,KAAK,CAAC,uBAAuBH;QAElC,OAAO;YACHJ;YACAI;YACAT;YACAO;QACJ;IACJ;IAEQK,MAAMC,SAAiB,EAAEC,IAAS,EAAE;QACxC,oCAAoC,GACpCC,UAAG,CAACH,KAAK,CAACC,WAAW,IAAMC,QAAQE,KAAKC,SAAS,CAACH,MAAM,MAAM;IAClE;IAEQ1B,WAAW8B,OAAiB,EAAE;QAClC,MAAMlC,SAAS,IAAI,CAACmC,QAAQ,CAACD,oBAAAA,qBAAAA,UAAW,IAAI,CAACvB,aAAa;QAC1D,IAAI,CAACiB,KAAK,CAAC,iBAAiB5B;QAC5B,OAAOA;IACX;IAEQG,YAAY;QAChB,MAAMiC,YAAYC,YAAK,CAACC,MAAM,CAA8B,CAACC,QAAQC;YACjED,MAAM,CAACC,KAAKC,EAAE,CAAC,GAAGD;YAClB,OAAOD;QACX,GAAG,CAAC;QAEJ,IAAIL,UAAU,IAAI,CAACvB,aAAa;QAChC,IAAIX,SAAS,IAAI,CAACI,UAAU,CAAC8B;QAC7B,IAAIQ,aAAa;QAEjB,KAAK,MAAMC,YAAY;YAACC,mBAAW,CAACC,QAAQ;YAAED,mBAAW,CAACE,MAAM;YAAEF,mBAAW,CAACG,QAAQ;SAAC,CAAE;YACrF,MAAMC,UAAUhD,OAAOiD,MAAM,CAAC,CAAC,EAAED,OAAO,EAAE,GAAKA,YAAYL;YAC3D,IAAIK,QAAQE,MAAM,KAAK,GAAG;gBACtB;YACJ;YAEAF,QAAQG,OAAO,CAAC5C,CAAAA;gBACZ,MAAMiC,OAAOJ,SAAS,CAAC7B,MAAMkC,EAAE,CAAC;gBAChC,IAAID,KAAKtC,GAAG,EAAE;oBACV6B,UAAG,CAACqB,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAACC,WAAW,CAAC;wBAAE,GAAG9C,KAAK;wBAAE+C,SAAS;wBAAIlC,UAAU;oBAAG,IAAI;oBAC9EoB,KAAKtC,GAAG,CAACK,OAAO2B;oBAChBQ,cAAc;gBAClB;YACJ;YAEAR,QAAQlB,cAAc,CAACuC,eAAe,CAAC;gBAAErD,KAAK;YAAK,GAAG;gBAAEsD,OAAO;YAAU;YACzEtB,UAAU,IAAI,CAACvB,aAAa;YAC5BX,SAAS,IAAI,CAACI,UAAU,CAAC8B;QAC7B;QAEA,IAAIQ,aAAa,GAAG;YAChB,IAAIrC,UAAU,CAAC,MAAM,EAAEoD,IAAAA,iBAAS,EAACf,YAAY,YAAY;YACzD,IAAI1C,OAAOkD,MAAM,EAAE;gBACf7C,UAAU,GAAGA,QAAQ,EAAE,EAAEoD,IAAAA,iBAAS,EAACzD,OAAOkD,MAAM,EAAE,mBAAmB,mBAAmB,GAAG,CAAC;YAChG;YACAnB,UAAG,CAAC2B,IAAI,CAACrD;QACb;QAEA,OAAOL;IACX;IAEQqD,YAAY9C,KAAmB,EAAE;QACrC,MAAM,EAAEa,QAAQ,EAAEuC,OAAO,EAAEC,WAAWC,qBAAa,CAACtD,KAAK,EAAE,GAAGA;QAE9D,MAAMuD,QAAQC,IAAAA,cAAM,EAAC,IAAI,CAACC,eAAe,CAACJ,SAAS,EAAExC,WAAW,IAAI;QACpE,MAAMkC,UAAU/C,MAAM+C,OAAO,GAAG,CAAC,EAAE,EAAES,IAAAA,cAAM,EAACxD,MAAM+C,OAAO,EAAElC,WAAW,IAAI,IAAI,GAAG;QACjF,MAAM6C,OAAO,IAAI,CAACC,OAAO,CAAC3D;QAE1B,OAAO,GAAGuD,MAAM,CAAC,EAAEH,QAAQ,CAAC,EAAEM,OAAOX,SAAS;IAClD;IAEQhD,aAAaN,MAAsB,EAAE;QACzC,IAAImE;QAEJnE,OAAOmD,OAAO,CAAC,CAAC5C,OAAO6D;YACnB,MAAM,EAAEhD,QAAQ,EAAE,GAAGb;YACrB,IAAI6D,QAAQ,KAAM,CAAA,CAAChD,YAAYA,aAAa+C,YAAW,GAAI;gBACvDpC,UAAG,CAACqB,IAAI,CAAC;YACb;YACA,IAAIhC,YAAYA,aAAa+C,cAAc;gBACvCpC,UAAG,CAACqB,IAAI,CAACiB,cAAK,CAACC,SAAS,CAACC,IAAAA,sBAAc,EAACnD;gBACxC+C,eAAe/C;YACnB;YACAW,UAAG,CAACqB,IAAI,CAAC,IAAI,CAACC,WAAW,CAAC9C;QAC9B;QAEA,MAAMF,UAAUmE,IAAAA,iBAAS,EAACxE;QAC1B,IAAI,CAACyE,aAAa,CAACpE;QACnB,OAAOA;IACX;IAEQoE,cAAc,EAAElE,KAAK,EAAEmE,OAAO,EAAE1B,OAAO,EAAgB,EAAE;QAC7D,IAAIzC,QAAQmE,YAAY,GAAG;YACvB,OAAO3C,UAAG,CAAC4C,OAAO,CAAC;QACvB;QAEA5C,UAAG,CAACqB,IAAI,CAAC;QAET,MAAMQ,WAAWrD,QAAQ,UAAU;QACnCwB,UAAG,CAAC6B,SAAS,CACT,GAAGH,IAAAA,iBAAS,EAAClD,QAAQmE,SAAS,WAAW,EAAE,EAAEjB,IAAAA,iBAAS,EAAClD,OAAO,SAAS,EAAE,EAAEkD,IAAAA,iBAAS,EAACiB,SAAS,WAAW,CAAC,CAAC;QAG/G,IAAI1B,QAAQzC,KAAK,GAAGyC,QAAQ0B,OAAO,GAAG,GAAG;YACrC3C,UAAG,CAAC6B,SAAS,CACT,GAAGH,IAAAA,iBAAS,EAACT,QAAQzC,KAAK,EAAE,SAAS,KAAK,EAAEkD,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,CAAC1C,CAAAA,QAAS,CAAC,CAACA,OAClB0E,IAAI,CAACC;IACd;IAEQF,QAAQxC,IAAiB,EAAEN,OAAgB,EAAE;YACrBA;QAA5B,MAAMiD,QAAQ,IAAI,CAACC,QAAQ,EAAClD,wBAAAA,QAAQb,MAAM,CAACgB,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,UAAUrF,MAAsC,EAAEmF,KAAwB,EAAE;QAChF,MAAMvB,WAAWuB,SAAS,IAAI,CAACI,eAAe,CAACJ,MAAM;QACrD,OAAOnF,UAAU4D,WAAW4B,IAAAA,cAAO,EAACxF,QAAQyF,GAAG,CAAClF,CAAAA,QAAU,CAAA;gBAAE,GAAGA,KAAK;gBAAEqD;YAAS,CAAA,KAAM5D;IACzF;IAEQoF,SAAS/D,MAA0B,EAAE;QACzC,IAAI,OAAOA,WAAW,UAAU;YAC5B,OAAOA;QACX;QACA,IAAIqE,MAAMC,OAAO,CAACtE,WAAW,OAAOA,MAAM,CAAC,EAAE,KAAK,UAAU;YACxD,OAAOA,MAAM,CAAC,EAAE;QACpB;IACJ;IAEQ6C,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,CAACvC,IAAI,CAACuC,IAAI;QAC3B,OAAOA,OAAO,IAAIuD,IAAIvD,KAAKS,MAAM,CAACR,CAAAA,KAAM,CAAC,CAACA,OAAOuD;IACrD;;QA1LG,gBACH,uBAAiBhC,mBAAiD;YAC9D,CAACH,qBAAa,CAACa,OAAO,CAAC,EAAEL,cAAK,CAAC4B,MAAM,CAAC;YACtC,CAACpC,qBAAa,CAACtD,KAAK,CAAC,EAAE8D,cAAK,CAAC6B,GAAG,CAAC;QACrC,IAEA,uBAAiBX,mBAAyD;YACtEY,MAAMtC,qBAAa,CAACa,OAAO;YAC3BnE,OAAOsD,qBAAa,CAACtD,KAAK;QAC9B;;AAkLJ;;;;;;;AAEA,SAAS2E,aACL,EAAE9D,UAAUgF,YAAY,EAAE,EAAExC,UAAUyC,YAAYxC,qBAAa,CAACtD,KAAK,EAAgB,EACrF,EAAEa,UAAUkF,YAAY,EAAE,EAAE1C,UAAU2C,YAAY1C,qBAAa,CAACtD,KAAK,EAAgB;IAErF,OAAO6F,cAAcE,YAAYD,YAAYE,YAAY5G,SAAS6G,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,GAAKnH,SAAS6G,OAAO,CAACK,GAAGC;AACzF"}
1
+ {"version":3,"sources":["../../../../src/cli/commands/review/review.ts"],"sourcesContent":["import { getPackageManager } from '@servicetitan/install';\nimport chalk from 'chalk';\nimport terminalLink from 'terminal-link';\nimport {\n findPackages,\n getReviewConfiguration,\n log,\n logErrors,\n readJsonSafe,\n toArray,\n} from '../../../utils';\nimport type { entry } from '../registry/review';\nimport { Command } from '../types';\nimport { rules } from './rules';\nimport {\n ErrorSeverity,\n FixCategory,\n Level,\n Package,\n PackageError,\n PackageRule,\n Project,\n RuleConfiguration,\n} from './types';\nimport {\n collateDependencies,\n ErrorSummary,\n formatLocation,\n indent,\n pluralize,\n summarize,\n} from './utils';\n\nconst collator = new Intl.Collator();\n\nexport class Review extends Command<typeof entry> {\n private readonly severityToLabel: Record<ErrorSeverity, string> = {\n [ErrorSeverity.warning]: chalk.yellow('warning'),\n [ErrorSeverity.error]: chalk.red('error'),\n };\n\n private readonly levelToSeverity: Partial<Record<Level, ErrorSeverity>> = {\n warn: ErrorSeverity.warning,\n error: ErrorSeverity.error,\n };\n\n @logErrors\n async execute() {\n const errors = this.args.fix ? this.fixErrors() : this.findErrors();\n const summary = this.reportErrors(errors);\n return summary.error > 0 ? Promise.reject() : Promise.resolve();\n }\n\n private createProject(): Project {\n const root = readJsonSafe('package.json');\n if (!root?.workspaces) {\n throw new Error('this command must be run from the workspace root directory');\n }\n\n const packageManager = getPackageManager();\n if (!packageManager.hasValidLockFile()) {\n throw new Error(`missing or invalid lock file: ${packageManager.lockFileName}`);\n }\n\n root.location = '.'; // identifies the root package.json for rules that care\n\n const config = getReviewConfiguration();\n const packages: Package[] = [root, ...findPackages()];\n const dependencies = sortByKey(collateDependencies(packages));\n this.debug('review:packages', packages);\n this.debug('review:dependencies', dependencies);\n\n return {\n config,\n dependencies,\n packageManager,\n packages,\n };\n }\n\n private debug(namespace: string, data: any) {\n /* istanbul ignore next: debug only */\n log.debug(namespace, () => data && JSON.stringify(data, null, 2));\n }\n\n private findErrors(project?: Project) {\n const errors = this.runRules(project ?? this.createProject());\n this.debug('review:errors', errors);\n return errors;\n }\n\n private fixErrors() {\n const rulesById = rules.reduce<Record<string, PackageRule>>((result, rule) => {\n result[rule.id] = rule;\n return result;\n }, {});\n\n let project = this.createProject();\n let errors = this.findErrors(project);\n let totalFixed = 0;\n\n for (const category of [FixCategory.isolated, FixCategory.normal, FixCategory.lockFile]) {\n const fixable = errors.filter(({ fixable }) => fixable === category);\n if (fixable.length === 0) {\n continue;\n }\n\n fixable.forEach(error => {\n const rule = rulesById[error.id];\n if (rule.fix) {\n log.text(`Fixing ${this.formatError({ ...error, details: '', location: '' })}`);\n rule.fix(error, project);\n totalFixed += 1;\n }\n });\n\n project.packageManager.installPackages({ fix: true }, { stdio: 'inherit' });\n project = this.createProject();\n errors = this.findErrors(project);\n }\n\n if (totalFixed > 0) {\n let summary = `Fixed ${pluralize(totalFixed, 'problem')}`;\n if (errors.length) {\n summary = `${summary}, ${pluralize(errors.length, 'problem remains', 'problems remain')}:\\n`;\n }\n log.info(summary);\n }\n\n return errors;\n }\n\n private formatError(error: PackageError) {\n const { location, message, severity = ErrorSeverity.error } = error;\n\n const label = indent(this.severityToLabel[severity], location ? 1 : 0);\n const details = error.details ? `\\n${indent(error.details, location ? 2 : 1)}` : '';\n const link = this.getLink(error);\n\n return `${label} ${message} ${link}${details}`;\n }\n\n private reportErrors(errors: PackageError[]) {\n let prevLocation: string | undefined;\n\n errors.forEach((error, index) => {\n const { location } = error;\n if (index > 0 && (!location || location !== prevLocation)) {\n log.text('');\n }\n if (location && location !== prevLocation) {\n log.text(chalk.underline(formatLocation(location)));\n prevLocation = location;\n }\n log.text(this.formatError(error));\n });\n\n const summary = summarize(errors);\n this.reportSummary(summary);\n return summary;\n }\n\n private reportSummary({ error, warning, fixable }: ErrorSummary) {\n if (error + warning === 0) {\n return log.success('0 problems');\n }\n\n log.text('');\n\n const severity = error ? 'error' : 'warning';\n log[severity](\n `${pluralize(error + warning, 'problem')} (${pluralize(error, 'error')}, ${pluralize(warning, 'warning')})`\n );\n\n if (fixable.error + fixable.warning > 0) {\n log[severity](\n `${pluralize(fixable.error, 'error')} and ${pluralize(fixable.warning, 'warning')} potentially fixable with --fix option`\n );\n }\n }\n\n private runRules(project: Project): PackageError[] {\n const selected = this.getSelectedRules();\n return rules\n .filter(({ id }) => !selected || selected.has(id))\n .flatMap(rule => this.runRule(rule, project))\n .filter(error => !!error)\n .sort(compareError);\n }\n\n private runRule(rule: PackageRule, project: Project) {\n const level = this.getLevel(project.config.rules?.[rule.id]);\n if (level === 'off') {\n return;\n }\n\n return this.transform(rule.run(project), level);\n }\n\n private transform(errors?: PackageError | PackageError[], level?: 'error' | 'warn') {\n const severity = level && this.levelToSeverity[level];\n return errors && severity ? toArray(errors).map(error => ({ ...error, severity })) : errors;\n }\n\n private getLevel(config?: RuleConfiguration) {\n if (typeof config === 'string') {\n return config;\n }\n if (Array.isArray(config) && typeof config[0] === 'string') {\n return config[0];\n }\n }\n\n private getLink({ id }: PackageError) {\n const url = `https://docs.st.dev/docs/frontend/uikit/startup/review#${id}`;\n return chalk.dim(terminalLink(id, url));\n }\n\n private getSelectedRules() {\n const rule = this.args.rule;\n return rule ? new Set(rule.filter(id => !!id)) : undefined;\n }\n}\n\nfunction compareError(\n { location: locationA = '', severity: severityA = ErrorSeverity.error }: PackageError,\n { location: locationB = '', severity: severityB = ErrorSeverity.error }: PackageError\n) {\n return locationA === locationB ? severityA - severityB : collator.compare(locationA, locationB);\n}\n\nfunction sortByKey<T>(obj: Record<string, T>): Record<string, T> {\n return Object.fromEntries(Object.entries(obj).sort(([a], [b]) => collator.compare(a, b)));\n}\n"],"names":["Review","collator","Intl","Collator","Command","execute","errors","args","fix","fixErrors","findErrors","summary","reportErrors","error","Promise","reject","resolve","createProject","root","readJsonSafe","workspaces","Error","packageManager","getPackageManager","hasValidLockFile","lockFileName","location","config","getReviewConfiguration","packages","findPackages","dependencies","sortByKey","collateDependencies","debug","namespace","data","log","JSON","stringify","project","runRules","rulesById","rules","reduce","result","rule","id","totalFixed","category","FixCategory","isolated","normal","lockFile","fixable","filter","length","forEach","text","formatError","details","installPackages","stdio","pluralize","info","message","severity","ErrorSeverity","label","indent","severityToLabel","link","getLink","prevLocation","index","chalk","underline","formatLocation","summarize","reportSummary","warning","success","selected","getSelectedRules","has","flatMap","runRule","sort","compareError","level","getLevel","transform","run","levelToSeverity","toArray","map","Array","isArray","url","dim","terminalLink","Set","undefined","yellow","red","warn","locationA","severityA","locationB","severityB","compare","obj","Object","fromEntries","entries","a","b"],"mappings":"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"}
@@ -19,9 +19,7 @@ function _define_property(obj, key, value) {
19
19
  configurable: true,
20
20
  writable: true
21
21
  });
22
- } else {
23
- obj[key] = value;
24
- }
22
+ } else obj[key] = value;
25
23
  return obj;
26
24
  }
27
25
  class NoDeprecatedContentBase {
@@ -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,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
+ {"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"}
@@ -19,9 +19,7 @@ function _define_property(obj, key, value) {
19
19
  configurable: true,
20
20
  writable: true
21
21
  });
22
- } else {
23
- obj[key] = value;
24
- }
22
+ } else obj[key] = value;
25
23
  return obj;
26
24
  }
27
25
  class NoDirectPeerDependencies {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/review/rules/no-direct-peer-dependencies.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages, formatList } from '../utils';\n\ninterface ErrorData {\n dependencies: Record<string, string>;\n directPeerDependencies: string[];\n}\n\ntype RuleError = PackageError<ErrorData>;\n\nexport class NoDirectPeerDependencies implements PackageRule {\n get id() {\n return 'no-direct-peer-dependencies';\n }\n\n run(project: Project): RuleError[] | undefined {\n return checkPackages(this, project, this.checkPackage);\n }\n\n fix({ data, location }: RuleError) {\n const { dependencies, directPeerDependencies } = data ?? {};\n if (!(location && dependencies && directPeerDependencies)) {\n return;\n }\n\n directPeerDependencies.forEach(name => {\n [\n `npm pkg set devDependencies[\"${name}\"]=\"${dependencies[name]}\" -w ${location}`,\n `npm pkg delete dependencies[\"${name}\"] -w ${location}`,\n ].forEach(command => execSync(command, { stdio: 'inherit' }));\n });\n }\n\n private readonly checkPackage = (pkg: Package): RuleError | undefined => {\n const { dependencies = {}, peerDependencies = {} } = pkg;\n const directPeerDependencies = Object.keys(peerDependencies).filter(\n peerDependency => !!dependencies[peerDependency]\n );\n if (directPeerDependencies.length) {\n return {\n id: this.id,\n message: this.formatMessage(pkg.name, directPeerDependencies),\n location: pkg.location,\n fixable: FixCategory.isolated,\n data: { dependencies, directPeerDependencies },\n };\n }\n };\n\n private formatMessage(name: string, dependencies: string[]) {\n if (dependencies.length === 1) {\n return `package \"${name}\" lists \"${dependencies[0]}\" as both a direct and a peer dependency`;\n }\n const list = formatList(dependencies.map(name => `\"${name}\"`));\n return `package \"${name}\" lists ${list} as both direct and peer dependencies`;\n }\n}\n"],"names":["NoDirectPeerDependencies","id","run","project","checkPackages","checkPackage","fix","data","location","dependencies","directPeerDependencies","forEach","name","command","execSync","stdio","formatMessage","length","list","formatList","map","pkg","peerDependencies","Object","keys","filter","peerDependency","message","fixable","FixCategory","isolated"],"mappings":";;;;+BAWaA;;;eAAAA;;;+BAXY;uBACgD;uBAC/B;;;;;;;;;;;;;;AASnC,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,YAAY,EAAEC,sBAAsB,EAAE,GAAGH,iBAAAA,kBAAAA,OAAQ,CAAC;QAC1D,IAAI,CAAEC,CAAAA,YAAYC,gBAAgBC,sBAAqB,GAAI;YACvD;QACJ;QAEAA,uBAAuBC,OAAO,CAACC,CAAAA;YAC3B;gBACI,CAAC,6BAA6B,EAAEA,KAAK,IAAI,EAAEH,YAAY,CAACG,KAAK,CAAC,KAAK,EAAEJ,UAAU;gBAC/E,CAAC,6BAA6B,EAAEI,KAAK,MAAM,EAAEJ,UAAU;aAC1D,CAACG,OAAO,CAACE,CAAAA,UAAWC,IAAAA,uBAAQ,EAACD,SAAS;oBAAEE,OAAO;gBAAU;QAC9D;IACJ;IAkBQC,cAAcJ,IAAY,EAAEH,YAAsB,EAAE;QACxD,IAAIA,aAAaQ,MAAM,KAAK,GAAG;YAC3B,OAAO,CAAC,SAAS,EAAEL,KAAK,SAAS,EAAEH,YAAY,CAAC,EAAE,CAAC,wCAAwC,CAAC;QAChG;QACA,MAAMS,OAAOC,IAAAA,iBAAU,EAACV,aAAaW,GAAG,CAACR,CAAAA,OAAQ,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC;QAC5D,OAAO,CAAC,SAAS,EAAEA,KAAK,QAAQ,EAAEM,KAAK,qCAAqC,CAAC;IACjF;;QAtBA,uBAAiBb,gBAAe,CAACgB;YAC7B,MAAM,EAAEZ,eAAe,CAAC,CAAC,EAAEa,mBAAmB,CAAC,CAAC,EAAE,GAAGD;YACrD,MAAMX,yBAAyBa,OAAOC,IAAI,CAACF,kBAAkBG,MAAM,CAC/DC,CAAAA,iBAAkB,CAAC,CAACjB,YAAY,CAACiB,eAAe;YAEpD,IAAIhB,uBAAuBO,MAAM,EAAE;gBAC/B,OAAO;oBACHhB,IAAI,IAAI,CAACA,EAAE;oBACX0B,SAAS,IAAI,CAACX,aAAa,CAACK,IAAIT,IAAI,EAAEF;oBACtCF,UAAUa,IAAIb,QAAQ;oBACtBoB,SAASC,kBAAW,CAACC,QAAQ;oBAC7BvB,MAAM;wBAAEE;wBAAcC;oBAAuB;gBACjD;YACJ;QACJ;;AASJ"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/review/rules/no-direct-peer-dependencies.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport { FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages, formatList } from '../utils';\n\ninterface ErrorData {\n dependencies: Record<string, string>;\n directPeerDependencies: string[];\n}\n\ntype RuleError = PackageError<ErrorData>;\n\nexport class NoDirectPeerDependencies implements PackageRule {\n get id() {\n return 'no-direct-peer-dependencies';\n }\n\n run(project: Project): RuleError[] | undefined {\n return checkPackages(this, project, this.checkPackage);\n }\n\n fix({ data, location }: RuleError) {\n const { dependencies, directPeerDependencies } = data ?? {};\n if (!(location && dependencies && directPeerDependencies)) {\n return;\n }\n\n directPeerDependencies.forEach(name => {\n [\n `npm pkg set devDependencies[\"${name}\"]=\"${dependencies[name]}\" -w ${location}`,\n `npm pkg delete dependencies[\"${name}\"] -w ${location}`,\n ].forEach(command => execSync(command, { stdio: 'inherit' }));\n });\n }\n\n private readonly checkPackage = (pkg: Package): RuleError | undefined => {\n const { dependencies = {}, peerDependencies = {} } = pkg;\n const directPeerDependencies = Object.keys(peerDependencies).filter(\n peerDependency => !!dependencies[peerDependency]\n );\n if (directPeerDependencies.length) {\n return {\n id: this.id,\n message: this.formatMessage(pkg.name, directPeerDependencies),\n location: pkg.location,\n fixable: FixCategory.isolated,\n data: { dependencies, directPeerDependencies },\n };\n }\n };\n\n private formatMessage(name: string, dependencies: string[]) {\n if (dependencies.length === 1) {\n return `package \"${name}\" lists \"${dependencies[0]}\" as both a direct and a peer dependency`;\n }\n const list = formatList(dependencies.map(name => `\"${name}\"`));\n return `package \"${name}\" lists ${list} as both direct and peer dependencies`;\n }\n}\n"],"names":["NoDirectPeerDependencies","id","run","project","checkPackages","checkPackage","fix","data","location","dependencies","directPeerDependencies","forEach","name","command","execSync","stdio","formatMessage","length","list","formatList","map","pkg","peerDependencies","Object","keys","filter","peerDependency","message","fixable","FixCategory","isolated"],"mappings":";;;;+BAWaA;;;eAAAA;;;+BAXY;uBACgD;uBAC/B;;;;;;;;;;;;AASnC,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,YAAY,EAAEC,sBAAsB,EAAE,GAAGH,iBAAAA,kBAAAA,OAAQ,CAAC;QAC1D,IAAI,CAAEC,CAAAA,YAAYC,gBAAgBC,sBAAqB,GAAI;YACvD;QACJ;QAEAA,uBAAuBC,OAAO,CAACC,CAAAA;YAC3B;gBACI,CAAC,6BAA6B,EAAEA,KAAK,IAAI,EAAEH,YAAY,CAACG,KAAK,CAAC,KAAK,EAAEJ,UAAU;gBAC/E,CAAC,6BAA6B,EAAEI,KAAK,MAAM,EAAEJ,UAAU;aAC1D,CAACG,OAAO,CAACE,CAAAA,UAAWC,IAAAA,uBAAQ,EAACD,SAAS;oBAAEE,OAAO;gBAAU;QAC9D;IACJ;IAkBQC,cAAcJ,IAAY,EAAEH,YAAsB,EAAE;QACxD,IAAIA,aAAaQ,MAAM,KAAK,GAAG;YAC3B,OAAO,CAAC,SAAS,EAAEL,KAAK,SAAS,EAAEH,YAAY,CAAC,EAAE,CAAC,wCAAwC,CAAC;QAChG;QACA,MAAMS,OAAOC,IAAAA,iBAAU,EAACV,aAAaW,GAAG,CAACR,CAAAA,OAAQ,CAAC,CAAC,EAAEA,KAAK,CAAC,CAAC;QAC5D,OAAO,CAAC,SAAS,EAAEA,KAAK,QAAQ,EAAEM,KAAK,qCAAqC,CAAC;IACjF;;QAtBA,uBAAiBb,gBAAe,CAACgB;YAC7B,MAAM,EAAEZ,eAAe,CAAC,CAAC,EAAEa,mBAAmB,CAAC,CAAC,EAAE,GAAGD;YACrD,MAAMX,yBAAyBa,OAAOC,IAAI,CAACF,kBAAkBG,MAAM,CAC/DC,CAAAA,iBAAkB,CAAC,CAACjB,YAAY,CAACiB,eAAe;YAEpD,IAAIhB,uBAAuBO,MAAM,EAAE;gBAC/B,OAAO;oBACHhB,IAAI,IAAI,CAACA,EAAE;oBACX0B,SAAS,IAAI,CAACX,aAAa,CAACK,IAAIT,IAAI,EAAEF;oBACtCF,UAAUa,IAAIb,QAAQ;oBACtBoB,SAASC,kBAAW,CAACC,QAAQ;oBAC7BvB,MAAM;wBAAEE;wBAAcC;oBAAuB;gBACjD;YACJ;QACJ;;AASJ"}
@@ -21,9 +21,7 @@ function _define_property(obj, key, value) {
21
21
  configurable: true,
22
22
  writable: true
23
23
  });
24
- } else {
25
- obj[key] = value;
26
- }
24
+ } else obj[key] = value;
27
25
  return obj;
28
26
  }
29
27
  function _interop_require_default(obj) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/review/rules/no-typescript-entry-point.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport path from 'path';\nimport { getFolders, log } from '../../../../utils';\nimport { FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages } from '../utils';\n\ninterface ErrorData {\n key: string;\n value: string;\n}\n\nexport class NoTypescriptEntryPoint implements PackageRule {\n get id() {\n return 'no-typescript-entry-point';\n }\n\n run(project: Project): PackageError<ErrorData>[] {\n return checkPackages(this, project, this.checkEntryPoints);\n }\n\n fix({ data, location }: PackageError<ErrorData>) {\n const { key, value } = data ?? {};\n if (!(key && value && location)) {\n return;\n }\n\n const workspace = path.relative('.', location);\n const { source, destination } = getFolders(location);\n const newValue = value.replace(source, destination).replace(/\\.ts$/, '.js');\n const command = `npm pkg set \"${key}\"=\"${newValue}\" -w ${workspace}`;\n log.debug(`review:${this.id}`, `Running ${command}`);\n execSync(command);\n }\n\n private readonly checkEntryPoints = (pkg: Package) => {\n const errors: PackageError<ErrorData>[] = [];\n const addError = (message: string, data: ErrorData) =>\n errors.push({\n id: this.id,\n message,\n location: pkg.location,\n fixable: FixCategory.normal,\n data,\n });\n\n (['main', 'module', 'exports'] as (keyof Package)[]).forEach(key => {\n const value = pkg[key];\n if (typeof value === 'string' && this.isTypescriptEntryPoint(value)) {\n addError(`\"${key}\" is Typescript: ${value}`, { key, value });\n }\n });\n\n if (pkg.exports && typeof pkg.exports !== 'string') {\n const checkExports = (exports: NonNullable<Package['exports']>, prefix: string) => {\n Object.entries(exports).forEach(([key, value]) => {\n const path = `${prefix}[${key}]`;\n if (typeof value === 'string') {\n if (this.isTypescriptEntryPoint(value)) {\n addError(`\"${path}\" is Typescript: ${value}`, { key: path, value });\n }\n } else if (exports) {\n checkExports(value, path);\n }\n });\n };\n checkExports(pkg.exports, 'exports');\n }\n\n return errors;\n };\n\n private isTypescriptEntryPoint(str: string) {\n return str.endsWith('.ts') && !str.endsWith('.d.ts');\n }\n}\n"],"names":["NoTypescriptEntryPoint","id","run","project","checkPackages","checkEntryPoints","fix","data","location","key","value","workspace","path","relative","source","destination","getFolders","newValue","replace","command","log","debug","execSync","isTypescriptEntryPoint","str","endsWith","pkg","errors","addError","message","push","fixable","FixCategory","normal","forEach","exports","checkExports","prefix","Object","entries"],"mappings":";;;;+BAWaA;;;eAAAA;;;+BAXY;6DACR;uBACe;uBACyC;wBAC3C;;;;;;;;;;;;;;;;;;;AAOvB,MAAMA;IACT,IAAIC,KAAK;QACL,OAAO;IACX;IAEAC,IAAIC,OAAgB,EAA6B;QAC7C,OAAOC,IAAAA,qBAAa,EAAC,IAAI,EAAED,SAAS,IAAI,CAACE,gBAAgB;IAC7D;IAEAC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAA2B,EAAE;QAC7C,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGH,iBAAAA,kBAAAA,OAAQ,CAAC;QAChC,IAAI,CAAEE,CAAAA,OAAOC,SAASF,QAAO,GAAI;YAC7B;QACJ;QAEA,MAAMG,YAAYC,aAAI,CAACC,QAAQ,CAAC,KAAKL;QACrC,MAAM,EAAEM,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU,EAACR;QAC3C,MAAMS,WAAWP,MAAMQ,OAAO,CAACJ,QAAQC,aAAaG,OAAO,CAAC,SAAS;QACrE,MAAMC,UAAU,CAAC,aAAa,EAAEV,IAAI,GAAG,EAAEQ,SAAS,KAAK,EAAEN,WAAW;QACpES,UAAG,CAACC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAACpB,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAEkB,SAAS;QACnDG,IAAAA,uBAAQ,EAACH;IACb;IAuCQI,uBAAuBC,GAAW,EAAE;QACxC,OAAOA,IAAIC,QAAQ,CAAC,UAAU,CAACD,IAAIC,QAAQ,CAAC;IAChD;;QAvCA,uBAAiBpB,oBAAmB,CAACqB;YACjC,MAAMC,SAAoC,EAAE;YAC5C,MAAMC,WAAW,CAACC,SAAiBtB,OAC/BoB,OAAOG,IAAI,CAAC;oBACR7B,IAAI,IAAI,CAACA,EAAE;oBACX4B;oBACArB,UAAUkB,IAAIlB,QAAQ;oBACtBuB,SAASC,kBAAW,CAACC,MAAM;oBAC3B1B;gBACJ;YAEH;gBAAC;gBAAQ;gBAAU;aAAU,CAAuB2B,OAAO,CAACzB,CAAAA;gBACzD,MAAMC,QAAQgB,GAAG,CAACjB,IAAI;gBACtB,IAAI,OAAOC,UAAU,YAAY,IAAI,CAACa,sBAAsB,CAACb,QAAQ;oBACjEkB,SAAS,CAAC,CAAC,EAAEnB,IAAI,iBAAiB,EAAEC,OAAO,EAAE;wBAAED;wBAAKC;oBAAM;gBAC9D;YACJ;YAEA,IAAIgB,IAAIS,OAAO,IAAI,OAAOT,IAAIS,OAAO,KAAK,UAAU;gBAChD,MAAMC,eAAe,CAACD,UAA0CE;oBAC5DC,OAAOC,OAAO,CAACJ,UAASD,OAAO,CAAC,CAAC,CAACzB,KAAKC,MAAM;wBACzC,MAAME,OAAO,GAAGyB,OAAO,CAAC,EAAE5B,IAAI,CAAC,CAAC;wBAChC,IAAI,OAAOC,UAAU,UAAU;4BAC3B,IAAI,IAAI,CAACa,sBAAsB,CAACb,QAAQ;gCACpCkB,SAAS,CAAC,CAAC,EAAEhB,KAAK,iBAAiB,EAAEF,OAAO,EAAE;oCAAED,KAAKG;oCAAMF;gCAAM;4BACrE;wBACJ,OAAO,IAAIyB,UAAS;4BAChBC,aAAa1B,OAAOE;wBACxB;oBACJ;gBACJ;gBACAwB,aAAaV,IAAIS,OAAO,EAAE;YAC9B;YAEA,OAAOR;QACX;;AAKJ"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/review/rules/no-typescript-entry-point.ts"],"sourcesContent":["import { execSync } from 'child_process';\nimport path from 'path';\nimport { getFolders, log } from '../../../../utils';\nimport { FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages } from '../utils';\n\ninterface ErrorData {\n key: string;\n value: string;\n}\n\nexport class NoTypescriptEntryPoint implements PackageRule {\n get id() {\n return 'no-typescript-entry-point';\n }\n\n run(project: Project): PackageError<ErrorData>[] {\n return checkPackages(this, project, this.checkEntryPoints);\n }\n\n fix({ data, location }: PackageError<ErrorData>) {\n const { key, value } = data ?? {};\n if (!(key && value && location)) {\n return;\n }\n\n const workspace = path.relative('.', location);\n const { source, destination } = getFolders(location);\n const newValue = value.replace(source, destination).replace(/\\.ts$/, '.js');\n const command = `npm pkg set \"${key}\"=\"${newValue}\" -w ${workspace}`;\n log.debug(`review:${this.id}`, `Running ${command}`);\n execSync(command);\n }\n\n private readonly checkEntryPoints = (pkg: Package) => {\n const errors: PackageError<ErrorData>[] = [];\n const addError = (message: string, data: ErrorData) =>\n errors.push({\n id: this.id,\n message,\n location: pkg.location,\n fixable: FixCategory.normal,\n data,\n });\n\n (['main', 'module', 'exports'] as (keyof Package)[]).forEach(key => {\n const value = pkg[key];\n if (typeof value === 'string' && this.isTypescriptEntryPoint(value)) {\n addError(`\"${key}\" is Typescript: ${value}`, { key, value });\n }\n });\n\n if (pkg.exports && typeof pkg.exports !== 'string') {\n const checkExports = (exports: NonNullable<Package['exports']>, prefix: string) => {\n Object.entries(exports).forEach(([key, value]) => {\n const path = `${prefix}[${key}]`;\n if (typeof value === 'string') {\n if (this.isTypescriptEntryPoint(value)) {\n addError(`\"${path}\" is Typescript: ${value}`, { key: path, value });\n }\n } else if (exports) {\n checkExports(value, path);\n }\n });\n };\n checkExports(pkg.exports, 'exports');\n }\n\n return errors;\n };\n\n private isTypescriptEntryPoint(str: string) {\n return str.endsWith('.ts') && !str.endsWith('.d.ts');\n }\n}\n"],"names":["NoTypescriptEntryPoint","id","run","project","checkPackages","checkEntryPoints","fix","data","location","key","value","workspace","path","relative","source","destination","getFolders","newValue","replace","command","log","debug","execSync","isTypescriptEntryPoint","str","endsWith","pkg","errors","addError","message","push","fixable","FixCategory","normal","forEach","exports","checkExports","prefix","Object","entries"],"mappings":";;;;+BAWaA;;;eAAAA;;;+BAXY;6DACR;uBACe;uBACyC;wBAC3C;;;;;;;;;;;;;;;;;AAOvB,MAAMA;IACT,IAAIC,KAAK;QACL,OAAO;IACX;IAEAC,IAAIC,OAAgB,EAA6B;QAC7C,OAAOC,IAAAA,qBAAa,EAAC,IAAI,EAAED,SAAS,IAAI,CAACE,gBAAgB;IAC7D;IAEAC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAA2B,EAAE;QAC7C,MAAM,EAAEC,GAAG,EAAEC,KAAK,EAAE,GAAGH,iBAAAA,kBAAAA,OAAQ,CAAC;QAChC,IAAI,CAAEE,CAAAA,OAAOC,SAASF,QAAO,GAAI;YAC7B;QACJ;QAEA,MAAMG,YAAYC,aAAI,CAACC,QAAQ,CAAC,KAAKL;QACrC,MAAM,EAAEM,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU,EAACR;QAC3C,MAAMS,WAAWP,MAAMQ,OAAO,CAACJ,QAAQC,aAAaG,OAAO,CAAC,SAAS;QACrE,MAAMC,UAAU,CAAC,aAAa,EAAEV,IAAI,GAAG,EAAEQ,SAAS,KAAK,EAAEN,WAAW;QACpES,UAAG,CAACC,KAAK,CAAC,CAAC,OAAO,EAAE,IAAI,CAACpB,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAEkB,SAAS;QACnDG,IAAAA,uBAAQ,EAACH;IACb;IAuCQI,uBAAuBC,GAAW,EAAE;QACxC,OAAOA,IAAIC,QAAQ,CAAC,UAAU,CAACD,IAAIC,QAAQ,CAAC;IAChD;;QAvCA,uBAAiBpB,oBAAmB,CAACqB;YACjC,MAAMC,SAAoC,EAAE;YAC5C,MAAMC,WAAW,CAACC,SAAiBtB,OAC/BoB,OAAOG,IAAI,CAAC;oBACR7B,IAAI,IAAI,CAACA,EAAE;oBACX4B;oBACArB,UAAUkB,IAAIlB,QAAQ;oBACtBuB,SAASC,kBAAW,CAACC,MAAM;oBAC3B1B;gBACJ;YAEH;gBAAC;gBAAQ;gBAAU;aAAU,CAAuB2B,OAAO,CAACzB,CAAAA;gBACzD,MAAMC,QAAQgB,GAAG,CAACjB,IAAI;gBACtB,IAAI,OAAOC,UAAU,YAAY,IAAI,CAACa,sBAAsB,CAACb,QAAQ;oBACjEkB,SAAS,CAAC,CAAC,EAAEnB,IAAI,iBAAiB,EAAEC,OAAO,EAAE;wBAAED;wBAAKC;oBAAM;gBAC9D;YACJ;YAEA,IAAIgB,IAAIS,OAAO,IAAI,OAAOT,IAAIS,OAAO,KAAK,UAAU;gBAChD,MAAMC,eAAe,CAACD,UAA0CE;oBAC5DC,OAAOC,OAAO,CAACJ,UAASD,OAAO,CAAC,CAAC,CAACzB,KAAKC,MAAM;wBACzC,MAAME,OAAO,GAAGyB,OAAO,CAAC,EAAE5B,IAAI,CAAC,CAAC;wBAChC,IAAI,OAAOC,UAAU,UAAU;4BAC3B,IAAI,IAAI,CAACa,sBAAsB,CAACb,QAAQ;gCACpCkB,SAAS,CAAC,CAAC,EAAEhB,KAAK,iBAAiB,EAAEF,OAAO,EAAE;oCAAED,KAAKG;oCAAMF;gCAAM;4BACrE;wBACJ,OAAO,IAAIyB,UAAS;4BAChBC,aAAa1B,OAAOE;wBACxB;oBACJ;gBACJ;gBACAwB,aAAaV,IAAIS,OAAO,EAAE;YAC9B;YAEA,OAAOR;QACX;;AAKJ"}
@@ -18,15 +18,12 @@ function _check_private_redeclaration(obj, privateCollection) {
18
18
  }
19
19
  }
20
20
  function _class_apply_descriptor_get(receiver, descriptor) {
21
- if (descriptor.get) {
22
- return descriptor.get.call(receiver);
23
- }
21
+ if (descriptor.get) return descriptor.get.call(receiver);
24
22
  return descriptor.value;
25
23
  }
26
24
  function _class_apply_descriptor_set(receiver, descriptor, value) {
27
- if (descriptor.set) {
28
- descriptor.set.call(receiver, value);
29
- } else {
25
+ if (descriptor.set) descriptor.set.call(receiver, value);
26
+ else {
30
27
  if (!descriptor.writable) {
31
28
  throw new TypeError("attempted to set read only private field");
32
29
  }
@@ -34,9 +31,7 @@ function _class_apply_descriptor_set(receiver, descriptor, value) {
34
31
  }
35
32
  }
36
33
  function _class_extract_field_descriptor(receiver, privateMap, action) {
37
- if (!privateMap.has(receiver)) {
38
- throw new TypeError("attempted to " + action + " private field on non-instance");
39
- }
34
+ if (!privateMap.has(receiver)) throw new TypeError("attempted to " + action + " private field on non-instance");
40
35
  return privateMap.get(receiver);
41
36
  }
42
37
  function _class_private_field_get(receiver, privateMap) {
@@ -60,9 +55,7 @@ function _define_property(obj, key, value) {
60
55
  configurable: true,
61
56
  writable: true
62
57
  });
63
- } else {
64
- obj[key] = value;
65
- }
58
+ } else obj[key] = value;
66
59
  return obj;
67
60
  }
68
61
  var _project = /*#__PURE__*/ new WeakMap();
@@ -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":";;;;+BAYaA;;;eAAAA;;;+BAZY;wBACC;uBAC8D;uBAC1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAU1B;AADG,MAAMA;IAGT,IAAIC,KAAK;QACL,OAAO;IACX;IAEAC,IAAIC,OAAgB,EAA2B;uCACtC,UAAWA;QAChB,OAAOC,IAAAA,oBAAa,EAAC,IAAI,EAAED,SAAS,IAAI,CAACE,YAAY;IACzD;IAEAC,IAAI,EAAEC,IAAI,EAAEC,QAAQ,EAAa,EAAE;QAC/B,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAE,GAAGH,iBAAAA,kBAAAA,OAAQ,CAAC;QACzC,IAAI,CAAEC,CAAAA,YAAYC,cAAcC,OAAM,GAAI;YACtC;QACJ;QAEA,MAAMC,mBAAmBD,QAAQE,OAAO,CAAC,UAAU;QACnD,MAAMC,UAAU,CAAC,8BAA8B,EAAEJ,WAAW,IAAI,EAAEE,iBAAiB,KAAK,EAAEH,UAAU;QACpGM,IAAAA,uBAAQ,EAACD,SAAS;YAAEE,OAAO;QAAU;IACzC;IAsBQC,eAAeN,OAAe,EAAE;QACpC,OAAO,MAAMO,IAAI,CAACP;IACtB;IAEQQ,WAAW,EAAEC,IAAI,EAAW,EAAEV,UAAkB,EAAE;YACnC;QAAnB,MAAMW,cAAa,wCAAA,yBAAA,IAAI,EAAC,UAASC,MAAM,CAACC,KAAK,cAA1B,4DAAA,qCAA4B,CAAC,IAAI,CAACrB,EAAE,CAAC;QACxD,IAAIsB,MAAMC,OAAO,CAACJ,aAAa;gBACPA;YAApB,MAAM,EAAEK,OAAO,EAAE,IAAGL,eAAAA,UAAU,CAAC,EAAE,cAAbA,0BAAAA,eAAiB,CAAC;YACtC,IAAI,OAAOK,YAAY,YAAY,CAACF,MAAMC,OAAO,CAACC,UAAU;oBACjDA;gBAAP,QAAOA,gBAAAA,OAAO,CAACN,KAAK,cAAbM,oCAAAA,cAAeC,QAAQ,CAACjB;YACnC;QACJ;QACA,OAAO;IACX;IAEQkB,mBAAmBjB,OAAe,EAAE;QACxC,OAAOkB,IAAAA,iBAAS,EAAC,eAAelB;IACpC;IAEQmB,UAAUnB,OAAe,EAAE;QAC/B,OAAO,yBAAyBO,IAAI,CAACP;IACzC;IAEQoB,YACJC,GAAY,EACZ,EAAEtB,UAAU,EAAEC,OAAO,EAA2C,EAClE;QACE,OACI,CAAC,IAAI,CAACM,cAAc,CAACN,YACrB,CAAC,IAAI,CAACiB,kBAAkB,CAACjB,YACzB,CAAC,IAAI,CAACQ,UAAU,CAACa,KAAKtB;IAE9B;;QA1EA,gCAAA;;mBAAA,KAAA;;QAsBA,uBAAiBJ,gBAAe,CAAC0B;gBACPA;YAAtB,OAAOC,OAAOC,OAAO,EAACF,wBAAAA,IAAIG,gBAAgB,cAApBH,mCAAAA,wBAAwB,CAAC,GAAGI,MAAM,CACpD,CAACC,QAAQ,CAAC3B,YAAYC,QAAQ;gBAC1B,IAAI,IAAI,CAACoB,WAAW,CAACC,KAAK;oBAAEtB;oBAAYC;gBAAQ,IAAI;oBAChD0B,OAAOC,IAAI,CAAC;wBACRpC,IAAI,IAAI,CAACA,EAAE;wBACXqC,SAAS,CAAC,SAAS,EAAEP,IAAIZ,IAAI,CAAC,uCAAuC,EAAEV,WAAW,CAAC,EAAEC,QAAQ,CAAC,CAAC;wBAC/FF,UAAUuB,IAAIvB,QAAQ;wBACtB+B,UAAUC,oBAAa,CAACC,OAAO;wBAC/B,GAAI,IAAI,CAACZ,SAAS,CAACnB,WACb;4BAAEgC,SAASC,kBAAW,CAACC,QAAQ;4BAAErC,MAAM;gCAAEE;gCAAYC;4BAAQ;wBAAE,IAC/D,CAAC,CAAC;oBACZ;gBACJ;gBACA,OAAO0B;YACX,GACA,EAAE;QAEV;;AAmCJ"}
@@ -19,15 +19,12 @@ function _check_private_redeclaration(obj, privateCollection) {
19
19
  }
20
20
  }
21
21
  function _class_apply_descriptor_get(receiver, descriptor) {
22
- if (descriptor.get) {
23
- return descriptor.get.call(receiver);
24
- }
22
+ if (descriptor.get) return descriptor.get.call(receiver);
25
23
  return descriptor.value;
26
24
  }
27
25
  function _class_apply_descriptor_set(receiver, descriptor, value) {
28
- if (descriptor.set) {
29
- descriptor.set.call(receiver, value);
30
- } else {
26
+ if (descriptor.set) descriptor.set.call(receiver, value);
27
+ else {
31
28
  if (!descriptor.writable) {
32
29
  throw new TypeError("attempted to set read only private field");
33
30
  }
@@ -35,9 +32,7 @@ function _class_apply_descriptor_set(receiver, descriptor, value) {
35
32
  }
36
33
  }
37
34
  function _class_extract_field_descriptor(receiver, privateMap, action) {
38
- if (!privateMap.has(receiver)) {
39
- throw new TypeError("attempted to " + action + " private field on non-instance");
40
- }
35
+ if (!privateMap.has(receiver)) throw new TypeError("attempted to " + action + " private field on non-instance");
41
36
  return privateMap.get(receiver);
42
37
  }
43
38
  function _class_private_field_get(receiver, privateMap) {
@@ -61,9 +56,7 @@ function _define_property(obj, key, value) {
61
56
  configurable: true,
62
57
  writable: true
63
58
  });
64
- } else {
65
- obj[key] = value;
66
- }
59
+ } else obj[key] = value;
67
60
  return obj;
68
61
  }
69
62
  function _interop_require_default(obj) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/review/rules/require-compatible-launch-darkly-sdk.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport { satisfies } from 'semver';\nimport { FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { applyFilter, checkPackages, setVersion } from '../utils';\n\nconst JS_CLIENT_SDK = 'launchdarkly-js-client-sdk';\nconst LD_SERVICE = '@servicetitan/launchdarkly-service';\n\ninterface ErrorData {\n name?: string;\n actualVersion: string;\n targetVersion: string;\n}\n\ntype RuleError = PackageError<ErrorData>;\n\nexport class RequireCompatibleLaunchDarklySdk implements PackageRule {\n #project!: Project;\n\n get id() {\n return 'require-compatible-launch-darkly-sdk';\n }\n\n run(project: Project): RuleError | RuleError[] | undefined {\n this.#project = project;\n\n /*\n * Pass an empty filter object to checkPackages to disable its filtering.\n * The project-level check is only useful when there are no package-level\n * errors so we need an accurate count.\n */\n const errors = checkPackages({}, project, this.checkPackage);\n\n if (!errors.length) {\n return this.checkProject();\n }\n\n return applyFilter(project.config.rules?.[this.id], errors, ({ data }) => data!.name!);\n }\n\n fix({ data }: RuleError, project: Project) {\n const { name, targetVersion } = data ?? {};\n if (!targetVersion) {\n return;\n }\n if (name) {\n setVersion({\n project,\n packageName: name,\n dependency: JS_CLIENT_SDK,\n version: targetVersion,\n });\n return;\n }\n\n [\n `npm pkg set dependencies[\"${JS_CLIENT_SDK}\"]=${targetVersion}`,\n 'npx @servicetitan/install --fix --quiet',\n `npm pkg delete dependencies[\"${JS_CLIENT_SDK}\"]`,\n ].forEach(command => execSync(command, { stdio: 'inherit' }));\n }\n\n private readonly checkPackage = ({\n dependencies = {},\n location,\n name,\n }: Package): RuleError | undefined => {\n if (!dependencies[JS_CLIENT_SDK]) {\n return;\n }\n\n const actualVersion = this.getActualJsClientSdkVersion(location);\n const targetVersion = this.getTargetJsClientSdkVersion(location);\n if (actualVersion && targetVersion && !satisfies(actualVersion, targetVersion)) {\n return this.createError({\n message: `package \"${name}\" depends on an incompatible version of ${JS_CLIENT_SDK}`,\n location,\n data: { name, actualVersion, targetVersion },\n });\n }\n };\n\n private checkProject() {\n const actualVersion = this.getActualJsClientSdkVersion();\n const targetVersion = this.getTargetJsClientSdkVersion();\n if (actualVersion && targetVersion && !satisfies(actualVersion, targetVersion)) {\n return this.createError({\n message: `project depends on an incompatible version of ${JS_CLIENT_SDK}`,\n location: this.#project.packageManager.lockFileName,\n data: { actualVersion, targetVersion },\n });\n }\n }\n\n private createError(params: { message: string; location: string; data: ErrorData }): RuleError {\n const { message, data, location } = params;\n return {\n id: this.id,\n message,\n details: this.formatDetails(data),\n location,\n fixable: data.name ? FixCategory.isolated : FixCategory.lockFile,\n data,\n };\n }\n\n private formatDetails({ actualVersion, targetVersion }: ErrorData) {\n return `${chalk.yellow(actualVersion)} does not match ${targetVersion}`;\n }\n\n private getActualJsClientSdkVersion(workspacePackage = '') {\n return this.#project.packageManager.getResolvedVersion({\n workspacePackage,\n dependency: JS_CLIENT_SDK,\n });\n }\n\n private getTargetJsClientSdkVersion(workspacePackage = '') {\n return this.#project.packageManager.getDeclaredVersion({\n workspacePackage,\n declaredBy: LD_SERVICE,\n dependency: JS_CLIENT_SDK,\n });\n }\n}\n"],"names":["RequireCompatibleLaunchDarklySdk","JS_CLIENT_SDK","LD_SERVICE","id","run","project","errors","checkPackages","checkPackage","length","checkProject","applyFilter","config","rules","data","name","fix","targetVersion","setVersion","packageName","dependency","version","forEach","command","execSync","stdio","actualVersion","getActualJsClientSdkVersion","getTargetJsClientSdkVersion","satisfies","createError","message","location","packageManager","lockFileName","params","details","formatDetails","fixable","FixCategory","isolated","lockFile","chalk","yellow","workspacePackage","getResolvedVersion","getDeclaredVersion","declaredBy","dependencies"],"mappings":";;;;+BAiBaA;;;eAAAA;;;8DAjBK;+BACO;wBACC;uBAC+C;uBAClB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEvD,MAAMC,gBAAgB;AACtB,MAAMC,aAAa;IAWf;AADG,MAAMF;IAGT,IAAIG,KAAK;QACL,OAAO;IACX;IAEAC,IAAIC,OAAgB,EAAuC;YAcpCA;uCAbd,UAAWA;QAEhB;;;;SAIC,GACD,MAAMC,SAASC,IAAAA,oBAAa,EAAC,CAAC,GAAGF,SAAS,IAAI,CAACG,YAAY;QAE3D,IAAI,CAACF,OAAOG,MAAM,EAAE;YAChB,OAAO,IAAI,CAACC,YAAY;QAC5B;QAEA,OAAOC,IAAAA,kBAAW,GAACN,wBAAAA,QAAQO,MAAM,CAACC,KAAK,cAApBR,4CAAAA,qBAAsB,CAAC,IAAI,CAACF,EAAE,CAAC,EAAEG,QAAQ,CAAC,EAAEQ,IAAI,EAAE,GAAKA,KAAMC,IAAI;IACxF;IAEAC,IAAI,EAAEF,IAAI,EAAa,EAAET,OAAgB,EAAE;QACvC,MAAM,EAAEU,IAAI,EAAEE,aAAa,EAAE,GAAGH,iBAAAA,kBAAAA,OAAQ,CAAC;QACzC,IAAI,CAACG,eAAe;YAChB;QACJ;QACA,IAAIF,MAAM;YACNG,IAAAA,iBAAU,EAAC;gBACPb;gBACAc,aAAaJ;gBACbK,YAAYnB;gBACZoB,SAASJ;YACb;YACA;QACJ;QAEA;YACI,CAAC,0BAA0B,EAAEhB,cAAc,GAAG,EAAEgB,eAAe;YAC/D;YACA,CAAC,6BAA6B,EAAEhB,cAAc,EAAE,CAAC;SACpD,CAACqB,OAAO,CAACC,CAAAA,UAAWC,IAAAA,uBAAQ,EAACD,SAAS;gBAAEE,OAAO;YAAU;IAC9D;IAsBQf,eAAe;QACnB,MAAMgB,gBAAgB,IAAI,CAACC,2BAA2B;QACtD,MAAMV,gBAAgB,IAAI,CAACW,2BAA2B;QACtD,IAAIF,iBAAiBT,iBAAiB,CAACY,IAAAA,iBAAS,EAACH,eAAeT,gBAAgB;YAC5E,OAAO,IAAI,CAACa,WAAW,CAAC;gBACpBC,SAAS,CAAC,8CAA8C,EAAE9B,eAAe;gBACzE+B,UAAU,yBAAA,IAAI,EAAC,UAASC,cAAc,CAACC,YAAY;gBACnDpB,MAAM;oBAAEY;oBAAeT;gBAAc;YACzC;QACJ;IACJ;IAEQa,YAAYK,MAA8D,EAAa;QAC3F,MAAM,EAAEJ,OAAO,EAAEjB,IAAI,EAAEkB,QAAQ,EAAE,GAAGG;QACpC,OAAO;YACHhC,IAAI,IAAI,CAACA,EAAE;YACX4B;YACAK,SAAS,IAAI,CAACC,aAAa,CAACvB;YAC5BkB;YACAM,SAASxB,KAAKC,IAAI,GAAGwB,kBAAW,CAACC,QAAQ,GAAGD,kBAAW,CAACE,QAAQ;YAChE3B;QACJ;IACJ;IAEQuB,cAAc,EAAEX,aAAa,EAAET,aAAa,EAAa,EAAE;QAC/D,OAAO,GAAGyB,cAAK,CAACC,MAAM,CAACjB,eAAe,gBAAgB,EAAET,eAAe;IAC3E;IAEQU,4BAA4BiB,mBAAmB,EAAE,EAAE;QACvD,OAAO,yBAAA,IAAI,EAAC,UAASX,cAAc,CAACY,kBAAkB,CAAC;YACnDD;YACAxB,YAAYnB;QAChB;IACJ;IAEQ2B,4BAA4BgB,mBAAmB,EAAE,EAAE;QACvD,OAAO,yBAAA,IAAI,EAAC,UAASX,cAAc,CAACa,kBAAkB,CAAC;YACnDF;YACAG,YAAY7C;YACZkB,YAAYnB;QAChB;IACJ;;QA1GA,gCAAA;;mBAAA,KAAA;;QA6CA,uBAAiBO,gBAAe,CAAC,EAC7BwC,eAAe,CAAC,CAAC,EACjBhB,QAAQ,EACRjB,IAAI,EACE;YACN,IAAI,CAACiC,YAAY,CAAC/C,cAAc,EAAE;gBAC9B;YACJ;YAEA,MAAMyB,gBAAgB,IAAI,CAACC,2BAA2B,CAACK;YACvD,MAAMf,gBAAgB,IAAI,CAACW,2BAA2B,CAACI;YACvD,IAAIN,iBAAiBT,iBAAiB,CAACY,IAAAA,iBAAS,EAACH,eAAeT,gBAAgB;gBAC5E,OAAO,IAAI,CAACa,WAAW,CAAC;oBACpBC,SAAS,CAAC,SAAS,EAAEhB,KAAK,wCAAwC,EAAEd,eAAe;oBACnF+B;oBACAlB,MAAM;wBAAEC;wBAAMW;wBAAeT;oBAAc;gBAC/C;YACJ;QACJ;;AA4CJ"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/review/rules/require-compatible-launch-darkly-sdk.ts"],"sourcesContent":["import chalk from 'chalk';\nimport { execSync } from 'child_process';\nimport { satisfies } from 'semver';\nimport { FixCategory, Package, PackageError, PackageRule, Project } from '../types';\nimport { applyFilter, checkPackages, setVersion } from '../utils';\n\nconst JS_CLIENT_SDK = 'launchdarkly-js-client-sdk';\nconst LD_SERVICE = '@servicetitan/launchdarkly-service';\n\ninterface ErrorData {\n name?: string;\n actualVersion: string;\n targetVersion: string;\n}\n\ntype RuleError = PackageError<ErrorData>;\n\nexport class RequireCompatibleLaunchDarklySdk implements PackageRule {\n #project!: Project;\n\n get id() {\n return 'require-compatible-launch-darkly-sdk';\n }\n\n run(project: Project): RuleError | RuleError[] | undefined {\n this.#project = project;\n\n /*\n * Pass an empty filter object to checkPackages to disable its filtering.\n * The project-level check is only useful when there are no package-level\n * errors so we need an accurate count.\n */\n const errors = checkPackages({}, project, this.checkPackage);\n\n if (!errors.length) {\n return this.checkProject();\n }\n\n return applyFilter(project.config.rules?.[this.id], errors, ({ data }) => data!.name!);\n }\n\n fix({ data }: RuleError, project: Project) {\n const { name, targetVersion } = data ?? {};\n if (!targetVersion) {\n return;\n }\n if (name) {\n setVersion({\n project,\n packageName: name,\n dependency: JS_CLIENT_SDK,\n version: targetVersion,\n });\n return;\n }\n\n [\n `npm pkg set dependencies[\"${JS_CLIENT_SDK}\"]=${targetVersion}`,\n 'npx @servicetitan/install --fix --quiet',\n `npm pkg delete dependencies[\"${JS_CLIENT_SDK}\"]`,\n ].forEach(command => execSync(command, { stdio: 'inherit' }));\n }\n\n private readonly checkPackage = ({\n dependencies = {},\n location,\n name,\n }: Package): RuleError | undefined => {\n if (!dependencies[JS_CLIENT_SDK]) {\n return;\n }\n\n const actualVersion = this.getActualJsClientSdkVersion(location);\n const targetVersion = this.getTargetJsClientSdkVersion(location);\n if (actualVersion && targetVersion && !satisfies(actualVersion, targetVersion)) {\n return this.createError({\n message: `package \"${name}\" depends on an incompatible version of ${JS_CLIENT_SDK}`,\n location,\n data: { name, actualVersion, targetVersion },\n });\n }\n };\n\n private checkProject() {\n const actualVersion = this.getActualJsClientSdkVersion();\n const targetVersion = this.getTargetJsClientSdkVersion();\n if (actualVersion && targetVersion && !satisfies(actualVersion, targetVersion)) {\n return this.createError({\n message: `project depends on an incompatible version of ${JS_CLIENT_SDK}`,\n location: this.#project.packageManager.lockFileName,\n data: { actualVersion, targetVersion },\n });\n }\n }\n\n private createError(params: { message: string; location: string; data: ErrorData }): RuleError {\n const { message, data, location } = params;\n return {\n id: this.id,\n message,\n details: this.formatDetails(data),\n location,\n fixable: data.name ? FixCategory.isolated : FixCategory.lockFile,\n data,\n };\n }\n\n private formatDetails({ actualVersion, targetVersion }: ErrorData) {\n return `${chalk.yellow(actualVersion)} does not match ${targetVersion}`;\n }\n\n private getActualJsClientSdkVersion(workspacePackage = '') {\n return this.#project.packageManager.getResolvedVersion({\n workspacePackage,\n dependency: JS_CLIENT_SDK,\n });\n }\n\n private getTargetJsClientSdkVersion(workspacePackage = '') {\n return this.#project.packageManager.getDeclaredVersion({\n workspacePackage,\n declaredBy: LD_SERVICE,\n dependency: JS_CLIENT_SDK,\n });\n }\n}\n"],"names":["RequireCompatibleLaunchDarklySdk","JS_CLIENT_SDK","LD_SERVICE","id","run","project","errors","checkPackages","checkPackage","length","checkProject","applyFilter","config","rules","data","name","fix","targetVersion","setVersion","packageName","dependency","version","forEach","command","execSync","stdio","actualVersion","getActualJsClientSdkVersion","getTargetJsClientSdkVersion","satisfies","createError","message","location","packageManager","lockFileName","params","details","formatDetails","fixable","FixCategory","isolated","lockFile","chalk","yellow","workspacePackage","getResolvedVersion","getDeclaredVersion","declaredBy","dependencies"],"mappings":"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"}
@@ -18,9 +18,7 @@ function _define_property(obj, key, value) {
18
18
  configurable: true,
19
19
  writable: true
20
20
  });
21
- } else {
22
- obj[key] = value;
23
- }
21
+ } else obj[key] = value;
24
22
  return obj;
25
23
  }
26
24
  class RequireExplicitSideEffects {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/review/rules/require-explicit-side-effects.ts"],"sourcesContent":["import { ErrorSeverity, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages, isLibrary } from '../utils';\n\nexport class RequireExplicitSideEffects implements PackageRule {\n get id() {\n return 'require-explicit-side-effects';\n }\n\n run(project: Project): PackageError[] {\n return checkPackages(this, project, this.checkSideEffects);\n }\n\n private readonly checkSideEffects = (pkg: Package) => {\n if (this.needsSideEffects(pkg)) {\n return {\n id: this.id,\n message: `package \"${pkg.name}\" omits sideEffects property`,\n severity: ErrorSeverity.warning,\n location: pkg.location,\n };\n }\n };\n\n private needsSideEffects(pkg: Package) {\n return (\n isLibrary(pkg) &&\n (pkg.main !== undefined || pkg.exports !== undefined) &&\n pkg.sideEffects === undefined\n );\n }\n}\n"],"names":["RequireExplicitSideEffects","id","run","project","checkPackages","checkSideEffects","needsSideEffects","pkg","isLibrary","main","undefined","exports","sideEffects","message","name","severity","ErrorSeverity","warning","location"],"mappings":";;;;+BAGaA;;;eAAAA;;;uBAH8D;uBAClC;;;;;;;;;;;;;;AAElC,MAAMA;IACT,IAAIC,KAAK;QACL,OAAO;IACX;IAEAC,IAAIC,OAAgB,EAAkB;QAClC,OAAOC,IAAAA,oBAAa,EAAC,IAAI,EAAED,SAAS,IAAI,CAACE,gBAAgB;IAC7D;IAaQC,iBAAiBC,GAAY,EAAE;QACnC,OACIC,IAAAA,gBAAS,EAACD,QACTA,CAAAA,IAAIE,IAAI,KAAKC,aAAaH,IAAII,OAAO,KAAKD,SAAQ,KACnDH,IAAIK,WAAW,KAAKF;IAE5B;;QAjBA,uBAAiBL,oBAAmB,CAACE;YACjC,IAAI,IAAI,CAACD,gBAAgB,CAACC,MAAM;gBAC5B,OAAO;oBACHN,IAAI,IAAI,CAACA,EAAE;oBACXY,SAAS,CAAC,SAAS,EAAEN,IAAIO,IAAI,CAAC,4BAA4B,CAAC;oBAC3DC,UAAUC,oBAAa,CAACC,OAAO;oBAC/BC,UAAUX,IAAIW,QAAQ;gBAC1B;YACJ;QACJ;;AASJ"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/review/rules/require-explicit-side-effects.ts"],"sourcesContent":["import { ErrorSeverity, Package, PackageError, PackageRule, Project } from '../types';\nimport { checkPackages, isLibrary } from '../utils';\n\nexport class RequireExplicitSideEffects implements PackageRule {\n get id() {\n return 'require-explicit-side-effects';\n }\n\n run(project: Project): PackageError[] {\n return checkPackages(this, project, this.checkSideEffects);\n }\n\n private readonly checkSideEffects = (pkg: Package) => {\n if (this.needsSideEffects(pkg)) {\n return {\n id: this.id,\n message: `package \"${pkg.name}\" omits sideEffects property`,\n severity: ErrorSeverity.warning,\n location: pkg.location,\n };\n }\n };\n\n private needsSideEffects(pkg: Package) {\n return (\n isLibrary(pkg) &&\n (pkg.main !== undefined || pkg.exports !== undefined) &&\n pkg.sideEffects === undefined\n );\n }\n}\n"],"names":["RequireExplicitSideEffects","id","run","project","checkPackages","checkSideEffects","needsSideEffects","pkg","isLibrary","main","undefined","exports","sideEffects","message","name","severity","ErrorSeverity","warning","location"],"mappings":";;;;+BAGaA;;;eAAAA;;;uBAH8D;uBAClC;;;;;;;;;;;;AAElC,MAAMA;IACT,IAAIC,KAAK;QACL,OAAO;IACX;IAEAC,IAAIC,OAAgB,EAAkB;QAClC,OAAOC,IAAAA,oBAAa,EAAC,IAAI,EAAED,SAAS,IAAI,CAACE,gBAAgB;IAC7D;IAaQC,iBAAiBC,GAAY,EAAE;QACnC,OACIC,IAAAA,gBAAS,EAACD,QACTA,CAAAA,IAAIE,IAAI,KAAKC,aAAaH,IAAII,OAAO,KAAKD,SAAQ,KACnDH,IAAIK,WAAW,KAAKF;IAE5B;;QAjBA,uBAAiBL,oBAAmB,CAACE;YACjC,IAAI,IAAI,CAACD,gBAAgB,CAACC,MAAM;gBAC5B,OAAO;oBACHN,IAAI,IAAI,CAACA,EAAE;oBACXY,SAAS,CAAC,SAAS,EAAEN,IAAIO,IAAI,CAAC,4BAA4B,CAAC;oBAC3DC,UAAUC,oBAAa,CAACC,OAAO;oBAC/BC,UAAUX,IAAIW,QAAQ;gBAC1B;YACJ;QACJ;;AASJ"}
@@ -20,9 +20,7 @@ function _define_property(obj, key, value) {
20
20
  configurable: true,
21
21
  writable: true
22
22
  });
23
- } else {
24
- obj[key] = value;
25
- }
23
+ } else obj[key] = value;
26
24
  return obj;
27
25
  }
28
26
  function _interop_require_default(obj) {