@servicetitan/startup 38.0.0 → 38.1.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 (395) 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 +22 -9
  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 +9 -0
  16. package/dist/cli/commands/command.d.ts.map +1 -0
  17. package/dist/cli/commands/command.js +35 -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.js +13 -4
  24. package/dist/cli/commands/init.js.map +1 -1
  25. package/dist/cli/commands/install.js +13 -4
  26. package/dist/cli/commands/install.js.map +1 -1
  27. package/dist/cli/commands/kendo-ui-license.js +13 -4
  28. package/dist/cli/commands/kendo-ui-license.js.map +1 -1
  29. package/dist/cli/commands/lint.js +13 -4
  30. package/dist/cli/commands/lint.js.map +1 -1
  31. package/dist/cli/commands/mfe-check.d.ts.map +1 -1
  32. package/dist/cli/commands/mfe-check.js +15 -7
  33. package/dist/cli/commands/mfe-check.js.map +1 -1
  34. package/dist/cli/commands/mfe-generate-metadata.js +13 -4
  35. package/dist/cli/commands/mfe-generate-metadata.js.map +1 -1
  36. package/dist/cli/commands/mfe-list.js +13 -4
  37. package/dist/cli/commands/mfe-list.js.map +1 -1
  38. package/dist/cli/commands/mfe-package-clean.js +13 -4
  39. package/dist/cli/commands/mfe-package-clean.js.map +1 -1
  40. package/dist/cli/commands/mfe-package-publish.js +13 -4
  41. package/dist/cli/commands/mfe-package-publish.js.map +1 -1
  42. package/dist/cli/commands/mfe-package-rollback.js +13 -4
  43. package/dist/cli/commands/mfe-package-rollback.js.map +1 -1
  44. package/dist/cli/commands/mfe-publish.js +13 -4
  45. package/dist/cli/commands/mfe-publish.js.map +1 -1
  46. package/dist/cli/commands/mfe-purge-cache.js +13 -4
  47. package/dist/cli/commands/mfe-purge-cache.js.map +1 -1
  48. package/dist/cli/commands/prepare-package.js +13 -4
  49. package/dist/cli/commands/prepare-package.js.map +1 -1
  50. package/dist/cli/commands/registry/build.d.ts +1 -1
  51. package/dist/cli/commands/registry/build.d.ts.map +1 -1
  52. package/dist/cli/commands/registry/build.js +3 -5
  53. package/dist/cli/commands/registry/build.js.map +1 -1
  54. package/dist/cli/commands/registry/bundle-package.d.ts +41 -0
  55. package/dist/cli/commands/registry/bundle-package.d.ts.map +1 -0
  56. package/dist/cli/commands/registry/bundle-package.js +54 -0
  57. package/dist/cli/commands/registry/bundle-package.js.map +1 -0
  58. package/dist/cli/commands/registry/command-registry.d.ts +42 -2
  59. package/dist/cli/commands/registry/command-registry.d.ts.map +1 -1
  60. package/dist/cli/commands/registry/command-registry.js +10 -19
  61. package/dist/cli/commands/registry/command-registry.js.map +1 -1
  62. package/dist/cli/commands/registry/start.d.ts +1 -1
  63. package/dist/cli/commands/registry/start.d.ts.map +1 -1
  64. package/dist/cli/commands/registry/start.js +3 -5
  65. package/dist/cli/commands/registry/start.js.map +1 -1
  66. package/dist/cli/commands/review/review.js +14 -7
  67. package/dist/cli/commands/review/review.js.map +1 -1
  68. package/dist/cli/commands/review/rules/no-deprecated-content-base.js +1 -3
  69. package/dist/cli/commands/review/rules/no-deprecated-content-base.js.map +1 -1
  70. package/dist/cli/commands/review/rules/no-direct-peer-dependencies.js +1 -3
  71. package/dist/cli/commands/review/rules/no-direct-peer-dependencies.js.map +1 -1
  72. package/dist/cli/commands/review/rules/no-typescript-entry-point.js +1 -3
  73. package/dist/cli/commands/review/rules/no-typescript-entry-point.js.map +1 -1
  74. package/dist/cli/commands/review/rules/prefer-open-ended-peer-dependencies.js +5 -12
  75. package/dist/cli/commands/review/rules/prefer-open-ended-peer-dependencies.js.map +1 -1
  76. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js +5 -12
  77. package/dist/cli/commands/review/rules/require-compatible-launch-darkly-sdk.js.map +1 -1
  78. package/dist/cli/commands/review/rules/require-explicit-side-effects.js +1 -3
  79. package/dist/cli/commands/review/rules/require-explicit-side-effects.js.map +1 -1
  80. package/dist/cli/commands/review/rules/require-one-collection-version.js +1 -3
  81. package/dist/cli/commands/review/rules/require-one-collection-version.js.map +1 -1
  82. package/dist/cli/commands/review/rules/require-servicetitan-scope.js +1 -3
  83. package/dist/cli/commands/review/rules/require-servicetitan-scope.js.map +1 -1
  84. package/dist/cli/commands/review/rules/require-tsconfig-references.js +1 -3
  85. package/dist/cli/commands/review/rules/require-tsconfig-references.js.map +1 -1
  86. package/dist/cli/commands/review/utils/compare-version.js +8 -19
  87. package/dist/cli/commands/review/utils/compare-version.js.map +1 -1
  88. package/dist/cli/commands/run-task.d.ts +1 -0
  89. package/dist/cli/commands/run-task.d.ts.map +1 -1
  90. package/dist/cli/commands/run-task.js +20 -6
  91. package/dist/cli/commands/run-task.js.map +1 -1
  92. package/dist/cli/commands/start.d.ts.map +1 -1
  93. package/dist/cli/commands/start.js +28 -13
  94. package/dist/cli/commands/start.js.map +1 -1
  95. package/dist/cli/commands/stylelint.js +13 -4
  96. package/dist/cli/commands/stylelint.js.map +1 -1
  97. package/dist/cli/commands/styles-check.js +13 -4
  98. package/dist/cli/commands/styles-check.js.map +1 -1
  99. package/dist/cli/commands/test/runners/jest.js +1 -3
  100. package/dist/cli/commands/test/runners/jest.js.map +1 -1
  101. package/dist/cli/commands/test/tests.js +13 -4
  102. package/dist/cli/commands/test/tests.js.map +1 -1
  103. package/dist/cli/commands/types.d.ts +1 -6
  104. package/dist/cli/commands/types.d.ts.map +1 -1
  105. package/dist/cli/commands/types.js +2 -20
  106. package/dist/cli/commands/types.js.map +1 -1
  107. package/dist/cli/commands/upload-sourcemaps.js +17 -13
  108. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  109. package/dist/cli/index.js +1 -0
  110. package/dist/cli/index.js.map +1 -1
  111. package/dist/cli/tasks/cli-task.d.ts +3 -0
  112. package/dist/cli/tasks/cli-task.d.ts.map +1 -1
  113. package/dist/cli/tasks/cli-task.js +41 -9
  114. package/dist/cli/tasks/cli-task.js.map +1 -1
  115. package/dist/cli/tasks/swc-compile-package/get-swc-options.d.ts +9 -1
  116. package/dist/cli/tasks/swc-compile-package/get-swc-options.d.ts.map +1 -1
  117. package/dist/cli/tasks/swc-compile-package/get-swc-options.js +18 -2
  118. package/dist/cli/tasks/swc-compile-package/get-swc-options.js.map +1 -1
  119. package/dist/cli/tasks/swc-compile-package/swc-compile-package.d.ts +3 -1
  120. package/dist/cli/tasks/swc-compile-package/swc-compile-package.d.ts.map +1 -1
  121. package/dist/cli/tasks/swc-compile-package/swc-compile-package.js +17 -3
  122. package/dist/cli/tasks/swc-compile-package/swc-compile-package.js.map +1 -1
  123. package/dist/cli/tasks/task.d.ts +2 -1
  124. package/dist/cli/tasks/task.d.ts.map +1 -1
  125. package/dist/cli/tasks/task.js +6 -3
  126. package/dist/cli/tasks/task.js.map +1 -1
  127. package/dist/cli/tasks/tsc-compile/tsc-compile.js +1 -3
  128. package/dist/cli/tasks/tsc-compile/tsc-compile.js.map +1 -1
  129. package/dist/cli/utils/cli-npm.d.ts.map +1 -1
  130. package/dist/cli/utils/cli-npm.js +8 -1
  131. package/dist/cli/utils/cli-npm.js.map +1 -1
  132. package/dist/cli/utils/cli-os.d.ts +1 -0
  133. package/dist/cli/utils/cli-os.d.ts.map +1 -1
  134. package/dist/cli/utils/cli-os.js +20 -0
  135. package/dist/cli/utils/cli-os.js.map +1 -1
  136. package/dist/cli/utils/compile.d.ts.map +1 -1
  137. package/dist/cli/utils/compile.js +7 -4
  138. package/dist/cli/utils/compile.js.map +1 -1
  139. package/dist/cli/utils/copy-files.js +1 -0
  140. package/dist/cli/utils/copy-files.js.map +1 -1
  141. package/dist/cli/utils/index.d.ts +1 -1
  142. package/dist/cli/utils/index.d.ts.map +1 -1
  143. package/dist/cli/utils/index.js +1 -1
  144. package/dist/cli/utils/index.js.map +1 -1
  145. package/dist/cli/utils/process-tree.js +2 -6
  146. package/dist/cli/utils/process-tree.js.map +1 -1
  147. package/dist/cli/utils/resolve-bundler.d.ts.map +1 -1
  148. package/dist/cli/utils/resolve-bundler.js +2 -1
  149. package/dist/cli/utils/resolve-bundler.js.map +1 -1
  150. package/dist/cli/utils/ts-config.d.ts +1 -1
  151. package/dist/cli/utils/ts-config.d.ts.map +1 -1
  152. package/dist/cli/utils/ts-config.js +1 -3
  153. package/dist/cli/utils/ts-config.js.map +1 -1
  154. package/dist/cli/utils/with-exponential-backoff.d.ts +7 -0
  155. package/dist/cli/utils/with-exponential-backoff.d.ts.map +1 -0
  156. package/dist/cli/utils/with-exponential-backoff.js +28 -0
  157. package/dist/cli/utils/with-exponential-backoff.js.map +1 -0
  158. package/dist/core/constants.d.ts +2 -0
  159. package/dist/core/constants.d.ts.map +1 -1
  160. package/dist/core/constants.js +6 -1
  161. package/dist/core/constants.js.map +1 -1
  162. package/dist/postinstall.js +118 -0
  163. package/dist/scripts/generate-bin-wrappers.js +203 -0
  164. package/dist/storybook-config/swc.d.ts +6 -0
  165. package/dist/storybook-config/swc.d.ts.map +1 -1
  166. package/dist/storybook-config/webpack-final.d.ts.map +1 -1
  167. package/dist/storybook-config/webpack-final.js +2 -1
  168. package/dist/storybook-config/webpack-final.js.map +1 -1
  169. package/dist/utils/exit-when-parent-exits.d.ts +6 -0
  170. package/dist/utils/exit-when-parent-exits.d.ts.map +1 -0
  171. package/dist/utils/exit-when-parent-exits.js +37 -0
  172. package/dist/utils/exit-when-parent-exits.js.map +1 -0
  173. package/dist/utils/find-up.d.ts +1 -1
  174. package/dist/utils/find-up.d.ts.map +1 -1
  175. package/dist/utils/find-up.js +2 -2
  176. package/dist/utils/find-up.js.map +1 -1
  177. package/dist/utils/get-configuration.d.ts +6 -3
  178. package/dist/utils/get-configuration.d.ts.map +1 -1
  179. package/dist/utils/get-configuration.js +10 -2
  180. package/dist/utils/get-configuration.js.map +1 -1
  181. package/dist/utils/index.d.ts +1 -0
  182. package/dist/utils/index.d.ts.map +1 -1
  183. package/dist/utils/index.js +1 -0
  184. package/dist/utils/index.js.map +1 -1
  185. package/dist/utils/log.js +1 -3
  186. package/dist/utils/log.js.map +1 -1
  187. package/dist/vite/build-shared-dependencies.d.ts.map +1 -1
  188. package/dist/vite/build-shared-dependencies.js +2 -0
  189. package/dist/vite/build-shared-dependencies.js.map +1 -1
  190. package/dist/vite/config/base-config.d.ts.map +1 -1
  191. package/dist/vite/config/base-config.js +12 -1
  192. package/dist/vite/config/base-config.js.map +1 -1
  193. package/dist/vite/config/create-vite-config.js +7 -2
  194. package/dist/vite/config/create-vite-config.js.map +1 -1
  195. package/dist/vite/config/load-config-file.js +8 -19
  196. package/dist/vite/config/load-config-file.js.map +1 -1
  197. package/dist/vite/index.d.ts +2 -0
  198. package/dist/vite/index.d.ts.map +1 -1
  199. package/dist/vite/index.html +2 -2
  200. package/dist/vite/index.js +16 -0
  201. package/dist/vite/index.js.map +1 -1
  202. package/dist/vite/plugins/chain-source-maps-plugin.js +1 -1
  203. package/dist/vite/plugins/chain-source-maps-plugin.js.map +1 -1
  204. package/dist/vite/plugins/clean-plugin.js +1 -1
  205. package/dist/vite/plugins/clean-plugin.js.map +1 -1
  206. package/dist/vite/plugins/css-injector-plugin.js +1 -1
  207. package/dist/vite/plugins/css-injector-plugin.js.map +1 -1
  208. package/dist/vite/plugins/design-system-guard-plugin.d.ts.map +1 -1
  209. package/dist/vite/plugins/design-system-guard-plugin.js +10 -5
  210. package/dist/vite/plugins/design-system-guard-plugin.js.map +1 -1
  211. package/dist/vite/plugins/dev-server-routing-plugin.js +1 -1
  212. package/dist/vite/plugins/dev-server-routing-plugin.js.map +1 -1
  213. package/dist/vite/plugins/externals-plugin.d.ts.map +1 -1
  214. package/dist/vite/plugins/externals-plugin.js +11 -5
  215. package/dist/vite/plugins/externals-plugin.js.map +1 -1
  216. package/dist/vite/plugins/html-plugin.d.ts.map +1 -1
  217. package/dist/vite/plugins/html-plugin.js +5 -3
  218. package/dist/vite/plugins/html-plugin.js.map +1 -1
  219. package/dist/vite/plugins/ignore-modules-plugin.d.ts +2 -2
  220. package/dist/vite/plugins/ignore-modules-plugin.d.ts.map +1 -1
  221. package/dist/vite/plugins/ignore-modules-plugin.js +36 -24
  222. package/dist/vite/plugins/ignore-modules-plugin.js.map +1 -1
  223. package/dist/vite/plugins/index.d.ts +3 -0
  224. package/dist/vite/plugins/index.d.ts.map +1 -1
  225. package/dist/vite/plugins/index.js +3 -0
  226. package/dist/vite/plugins/index.js.map +1 -1
  227. package/dist/vite/plugins/less-tilde-plugin.d.ts +8 -0
  228. package/dist/vite/plugins/less-tilde-plugin.d.ts.map +1 -0
  229. package/dist/vite/plugins/less-tilde-plugin.js +53 -0
  230. package/dist/vite/plugins/less-tilde-plugin.js.map +1 -0
  231. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js +1 -1
  232. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js.map +1 -1
  233. package/dist/vite/plugins/metadata-plugin.js +1 -1
  234. package/dist/vite/plugins/metadata-plugin.js.map +1 -1
  235. package/dist/vite/plugins/moment-locales-plugin.d.ts +1 -1
  236. package/dist/vite/plugins/moment-locales-plugin.d.ts.map +1 -1
  237. package/dist/vite/plugins/moment-locales-plugin.js +30 -14
  238. package/dist/vite/plugins/moment-locales-plugin.js.map +1 -1
  239. package/dist/vite/plugins/react-refresh-plugin/index.d.ts +2 -0
  240. package/dist/vite/plugins/react-refresh-plugin/index.d.ts.map +1 -0
  241. package/dist/vite/plugins/react-refresh-plugin/index.js +20 -0
  242. package/dist/vite/plugins/react-refresh-plugin/index.js.map +1 -0
  243. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.d.ts +4 -0
  244. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.d.ts.map +1 -0
  245. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.js +143 -0
  246. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.js.map +1 -0
  247. package/dist/vite/plugins/react-refresh-plugin/refresh-runtime.js +113 -0
  248. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.d.ts.map +1 -1
  249. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js +14 -11
  250. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js.map +1 -1
  251. package/dist/vite/plugins/style-urls-plugin.js +1 -1
  252. package/dist/vite/plugins/style-urls-plugin.js.map +1 -1
  253. package/dist/vite/plugins/virtual-modules-plugin.d.ts.map +1 -1
  254. package/dist/vite/plugins/virtual-modules-plugin.js +9 -6
  255. package/dist/vite/plugins/virtual-modules-plugin.js.map +1 -1
  256. package/dist/vite/plugins/window-externals-plugin.d.ts +22 -0
  257. package/dist/vite/plugins/window-externals-plugin.d.ts.map +1 -0
  258. package/dist/vite/plugins/window-externals-plugin.js +74 -0
  259. package/dist/vite/plugins/window-externals-plugin.js.map +1 -0
  260. package/dist/webpack/bundle-webpack.d.ts.map +1 -1
  261. package/dist/webpack/bundle-webpack.js +6 -1
  262. package/dist/webpack/bundle-webpack.js.map +1 -1
  263. package/dist/webpack/configs/optimization-config.js +4 -4
  264. package/dist/webpack/configs/optimization-config.js.map +1 -1
  265. package/dist/webpack/configs/output-config.js +1 -1
  266. package/dist/webpack/configs/output-config.js.map +1 -1
  267. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js +1 -3
  268. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js.map +1 -1
  269. package/dist/webpack/loaders/expose-loader/__tests__/__mocks__/configuration.expose-loader.js +13 -0
  270. package/dist/webpack/loaders/expose-loader/__tests__/__mocks__/index.js +1 -0
  271. package/dist/webpack/utils/index.d.ts +1 -0
  272. package/dist/webpack/utils/index.d.ts.map +1 -1
  273. package/dist/webpack/utils/index.js +1 -0
  274. package/dist/webpack/utils/index.js.map +1 -1
  275. package/dist/webpack/utils/normalize-proxy-config.d.ts +6 -0
  276. package/dist/webpack/utils/normalize-proxy-config.d.ts.map +1 -0
  277. package/dist/webpack/utils/normalize-proxy-config.js +52 -0
  278. package/dist/webpack/utils/normalize-proxy-config.js.map +1 -0
  279. package/package.json +24 -21
  280. package/src/cli/commands/__tests__/build.test.ts +33 -19
  281. package/src/cli/commands/__tests__/bundle-package.test.ts +65 -0
  282. package/src/cli/commands/__tests__/command.test.ts +42 -0
  283. package/src/cli/commands/__tests__/mfe-check.test.ts +26 -5
  284. package/src/cli/commands/__tests__/run-task.test.ts +20 -1
  285. package/src/cli/commands/__tests__/start.test.ts +35 -15
  286. package/src/cli/commands/build.ts +6 -5
  287. package/src/cli/commands/bundle-package.ts +20 -0
  288. package/src/cli/commands/command.ts +14 -0
  289. package/src/cli/commands/mfe-check.ts +6 -10
  290. package/src/cli/commands/registry/build.ts +3 -2
  291. package/src/cli/commands/registry/bundle-package.ts +22 -0
  292. package/src/cli/commands/registry/command-registry.ts +2 -0
  293. package/src/cli/commands/registry/start.ts +3 -2
  294. package/src/cli/commands/run-task.ts +8 -2
  295. package/src/cli/commands/start.ts +9 -5
  296. package/src/cli/commands/types.ts +2 -6
  297. package/src/cli/index.ts +3 -0
  298. package/src/cli/tasks/__tests__/cli-task.test.ts +181 -69
  299. package/src/cli/tasks/__tests__/task.test.ts +40 -45
  300. package/src/cli/tasks/cli-task.ts +43 -2
  301. package/src/cli/tasks/swc-compile-package/__tests__/get-swc-options.test.ts +46 -4
  302. package/src/cli/tasks/swc-compile-package/__tests__/swc-compile-package.test.ts +25 -4
  303. package/src/cli/tasks/swc-compile-package/get-swc-options.ts +14 -1
  304. package/src/cli/tasks/swc-compile-package/swc-compile-package.ts +6 -2
  305. package/src/cli/tasks/task.ts +8 -2
  306. package/src/cli/tasks/tsc-compile/__tests__/tsc-compile.test.ts +8 -32
  307. package/src/cli/tasks/tsc-compile-package/__tests__/tsc-compile-package.test.ts +10 -19
  308. package/src/cli/utils/__tests__/cli-npm.test.ts +33 -0
  309. package/src/cli/utils/__tests__/cli-os.test.ts +86 -3
  310. package/src/cli/utils/__tests__/compile.test.ts +37 -2
  311. package/src/cli/utils/__tests__/copy-files.test.ts +1 -1
  312. package/src/cli/utils/__tests__/with-exponential-backoff.test.ts +119 -0
  313. package/src/cli/utils/cli-npm.ts +19 -4
  314. package/src/cli/utils/cli-os.ts +14 -0
  315. package/src/cli/utils/compile.ts +8 -1
  316. package/src/cli/utils/copy-files.ts +1 -1
  317. package/src/cli/utils/index.ts +1 -1
  318. package/src/cli/utils/resolve-bundler.ts +2 -1
  319. package/src/cli/utils/ts-config.ts +1 -1
  320. package/src/cli/utils/with-exponential-backoff.ts +28 -0
  321. package/src/core/constants.ts +2 -0
  322. package/src/storybook-config/__tests__/vite-final.test.ts +6 -0
  323. package/src/storybook-config/__tests__/webpack-final.test.ts +26 -12
  324. package/src/storybook-config/webpack-final.ts +10 -4
  325. package/src/utils/__tests__/exit-when-parent-exits.test.ts +87 -0
  326. package/src/utils/__tests__/find-up.test.ts +49 -0
  327. package/src/utils/__tests__/get-configuration.test.ts +62 -0
  328. package/src/utils/exit-when-parent-exits.ts +33 -0
  329. package/src/utils/find-up.ts +2 -2
  330. package/src/utils/get-configuration.ts +14 -5
  331. package/src/utils/index.ts +1 -0
  332. package/src/vite/__tests__/build-shared-dependencies.test.ts +39 -5
  333. package/src/vite/build-shared-dependencies.ts +2 -1
  334. package/src/vite/config/__tests__/base-config.test.ts +12 -4
  335. package/src/vite/config/__tests__/create-css-config.test.ts +2 -6
  336. package/src/vite/config/__tests__/create-vite-config.test.ts +6 -3
  337. package/src/vite/config/base-config.ts +13 -1
  338. package/src/vite/config/create-vite-config.ts +6 -3
  339. package/src/vite/index.html +2 -2
  340. package/src/vite/index.ts +2 -0
  341. package/src/vite/plugins/__tests__/chain-source-maps-plugin.test.ts +1 -1
  342. package/src/vite/plugins/__tests__/clean-plugin.test.ts +1 -1
  343. package/src/vite/plugins/__tests__/css-injector-plugin.test.ts +1 -1
  344. package/src/vite/plugins/__tests__/design-system-guard-plugin.test.ts +15 -3
  345. package/src/vite/plugins/__tests__/dev-server-routing-plugin.test.ts +1 -1
  346. package/src/vite/plugins/__tests__/externals-plugin.test.ts +24 -3
  347. package/src/vite/plugins/__tests__/html-plugin.test.ts +10 -3
  348. package/src/vite/plugins/__tests__/html-template.test.ts +10 -2
  349. package/src/vite/plugins/__tests__/ignore-modules-plugin.test.ts +30 -6
  350. package/src/vite/plugins/__tests__/less-tilde-plugin.test.ts +91 -0
  351. package/src/vite/plugins/__tests__/metadata-plugin.test.ts +1 -1
  352. package/src/vite/plugins/__tests__/moment-locales-plugin.test.ts +35 -25
  353. package/src/vite/plugins/__tests__/style-urls-plugin.test.ts +1 -1
  354. package/src/vite/plugins/__tests__/virtual-modules-plugin.test.ts +20 -9
  355. package/src/vite/plugins/__tests__/window-externals-plugin.test.ts +128 -0
  356. package/src/vite/plugins/chain-source-maps-plugin.ts +1 -1
  357. package/src/vite/plugins/clean-plugin.ts +1 -1
  358. package/src/vite/plugins/css-injector-plugin.ts +1 -1
  359. package/src/vite/plugins/design-system-guard-plugin.ts +11 -8
  360. package/src/vite/plugins/dev-server-routing-plugin.ts +1 -1
  361. package/src/vite/plugins/externals-plugin.ts +15 -6
  362. package/src/vite/plugins/html-plugin.ts +4 -2
  363. package/src/vite/plugins/ignore-modules-plugin.ts +32 -23
  364. package/src/vite/plugins/index.ts +3 -0
  365. package/src/vite/plugins/less-tilde-plugin.ts +64 -0
  366. package/src/vite/plugins/magic-comments-plugin/magic-comments-plugin.ts +1 -1
  367. package/src/vite/plugins/metadata-plugin.ts +1 -1
  368. package/src/vite/plugins/moment-locales-plugin.ts +24 -14
  369. package/src/vite/plugins/react-refresh-plugin/README.md +165 -0
  370. package/src/vite/plugins/react-refresh-plugin/__tests__/react-refresh-plugin.test.ts +366 -0
  371. package/src/vite/plugins/react-refresh-plugin/__tests__/refresh-runtime.test.ts +193 -0
  372. package/src/vite/plugins/react-refresh-plugin/index.ts +1 -0
  373. package/src/vite/plugins/react-refresh-plugin/react-refresh-plugin.ts +144 -0
  374. package/src/vite/plugins/react-refresh-plugin/refresh-runtime.js +113 -0
  375. package/src/vite/plugins/shared-dependencies-plugin/__tests__/shared-dependencies-plugin.test.ts +21 -16
  376. package/src/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.ts +13 -12
  377. package/src/vite/plugins/style-urls-plugin.ts +1 -1
  378. package/src/vite/plugins/virtual-modules-plugin.ts +8 -7
  379. package/src/vite/plugins/window-externals-plugin.ts +94 -0
  380. package/src/webpack/__tests__/bundle-webpack.test.ts +32 -0
  381. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +17 -5
  382. package/src/webpack/__tests__/create-webpack-config.test.ts +10 -6
  383. package/src/webpack/bundle-webpack.ts +7 -1
  384. package/src/webpack/configs/optimization-config.ts +3 -3
  385. package/src/webpack/configs/output-config.ts +1 -1
  386. package/src/webpack/utils/__tests__/normalize-proxy-config.test.ts +121 -0
  387. package/src/webpack/utils/index.ts +1 -0
  388. package/src/webpack/utils/normalize-proxy-config.ts +59 -0
  389. package/tsconfig/types.d.ts +10 -0
  390. package/dist/cli/utils/get-bundle-command.d.ts +0 -3
  391. package/dist/cli/utils/get-bundle-command.d.ts.map +0 -1
  392. package/dist/cli/utils/get-bundle-command.js +0 -16
  393. package/dist/cli/utils/get-bundle-command.js.map +0 -1
  394. package/src/cli/utils/__tests__/get-bundle-command.test.ts +0 -23
  395. package/src/cli/utils/get-bundle-command.ts +0 -5
@@ -83,6 +83,14 @@ describe(`[startup] ${MfeCheck.name}`, () => {
83
83
  });
84
84
  }
85
85
 
86
+ function itReportsCompatibleLightBundle() {
87
+ test('outputs human-readable compatible message', async () => {
88
+ await subject();
89
+
90
+ expect(utils.log.info).toHaveBeenCalledWith('Compatible: light bundle can be used');
91
+ });
92
+ }
93
+
86
94
  test('allows running from global location', () => {
87
95
  expect(entry.allowRunFromGlobal).toBe(true);
88
96
  });
@@ -97,11 +105,7 @@ describe(`[startup] ${MfeCheck.name}`, () => {
97
105
  });
98
106
  });
99
107
 
100
- test('outputs human-readable compatible message', async () => {
101
- await subject();
102
-
103
- expect(utils.log.info).toHaveBeenCalledWith('Compatible: light bundle can be used');
104
- });
108
+ itReportsCompatibleLightBundle();
105
109
 
106
110
  test('does not set exit code', async () => {
107
111
  await subject();
@@ -131,6 +135,23 @@ describe(`[startup] ${MfeCheck.name}`, () => {
131
135
  });
132
136
  });
133
137
  });
138
+
139
+ describe('when host enables expose-shared-dependencies at the top level of cli', () => {
140
+ beforeEach(() => {
141
+ vol.fromJSON({
142
+ '/path/to/host/package.json': JSON.stringify({
143
+ name: 'host-app',
144
+ dependencies: mockMetadata.dependencies,
145
+ cli: {
146
+ 'expose-shared-dependencies': true,
147
+ 'shared-dependencies': mockMetadata.sharedDependencies,
148
+ },
149
+ }),
150
+ });
151
+ });
152
+
153
+ itReportsCompatibleLightBundle();
154
+ });
134
155
  });
135
156
 
136
157
  describe('when incompatible', () => {
@@ -1,9 +1,10 @@
1
- import { log } from '../../../utils';
1
+ import { exitWhenParentExits, log } from '../../../utils';
2
2
  import { SwcCompilePackage, TscCompile, TscCompilePackage } from '../../tasks';
3
3
  import { RunTask } from '../run-task';
4
4
 
5
5
  jest.mock('../../../utils', () => ({
6
6
  ...jest.requireActual('../../../utils'),
7
+ exitWhenParentExits: jest.fn(),
7
8
  log: { error: jest.fn(), text: jest.fn() },
8
9
  }));
9
10
  jest.mock('../../tasks/swc-compile-package');
@@ -34,9 +35,27 @@ describe(`[startup] ${RunTask.name}`, () => {
34
35
 
35
36
  expect(jest.mocked(task).mock.instances[0].execute).toHaveBeenCalled();
36
37
  });
38
+
39
+ test(`watches ${task.name} for the parent process to exit`, async () => {
40
+ await subject();
41
+
42
+ expect(jest.mocked(task).mock.instances[0].watchForParentExit).toHaveBeenCalled();
43
+ });
37
44
  })
38
45
  );
39
46
 
47
+ describe('watchForParentExit', () => {
48
+ beforeEach(() => (args = {}));
49
+
50
+ const subject = () => new RunTask(args).watchForParentExit();
51
+
52
+ test('does not watch for the parent process to exit', () => {
53
+ subject();
54
+
55
+ expect(exitWhenParentExits).not.toHaveBeenCalled();
56
+ });
57
+ });
58
+
40
59
  describe('with empty args', () => {
41
60
  beforeEach(() => (args = {}));
42
61
 
@@ -1,5 +1,5 @@
1
1
  import { createPackage } from '../../../__mocks__';
2
- import { Package, PackageType, getPackages, log } from '../../../utils';
2
+ import { Package, PackageType, getConfiguration, getPackages, log } from '../../../utils';
3
3
  import { compile, lernaExec, typeCheck, watchStdout } from '../../utils';
4
4
  import { entry } from '../registry/start';
5
5
  import { Start } from '../start';
@@ -38,6 +38,7 @@ describe(`[startup] ${Start.name}`, () => {
38
38
  args = {};
39
39
  packages = [];
40
40
  jest.clearAllMocks();
41
+ jest.mocked(getConfiguration).mockReturnValue({});
41
42
  jest.mocked(getPackages).mockImplementation(() => packages);
42
43
  jest.mocked(watchStdout).mockImplementation((_process, _indicator, handler) => {
43
44
  handler(packages.length);
@@ -106,6 +107,12 @@ describe(`[startup] ${Start.name}`, () => {
106
107
  expect(entry.greedy).toBe(true);
107
108
  });
108
109
 
110
+ test('sets process.env.STARTUP_PARENT_PID', async () => {
111
+ await subject();
112
+
113
+ expect(process.env.STARTUP_PARENT_PID).toBe(String(process.pid));
114
+ });
115
+
109
116
  describe('with TSC package', () => {
110
117
  beforeEach(() => packages.push(createPackage({ type: PackageType.TSC })));
111
118
 
@@ -121,7 +128,7 @@ describe(`[startup] ${Start.name}`, () => {
121
128
  });
122
129
  });
123
130
 
124
- describe('with Webpack package', () => {
131
+ describe('with bundle package', () => {
125
132
  beforeEach(() => packages.push(createPackage({ type: PackageType.Bundle })));
126
133
 
127
134
  itPreparesThePackages();
@@ -132,11 +139,11 @@ describe(`[startup] ${Start.name}`, () => {
132
139
  await subject();
133
140
 
134
141
  expect(lernaExec).toHaveBeenCalledWith({
135
- 'cmd': 'startup bundle-webpack',
142
+ 'cmd': 'startup bundle-package',
136
143
  'scope': packages.map(({ name }) => name),
137
144
  'parallel': true,
138
145
  'stream': true,
139
- '--': ['--exposed-dependencies', '--use-watch-config'],
146
+ '--': ['--exposed-dependencies', '--use-watch-config', '--bundler webpack'],
140
147
  });
141
148
  });
142
149
 
@@ -144,24 +151,37 @@ describe(`[startup] ${Start.name}`, () => {
144
151
  await subject();
145
152
 
146
153
  expect(lernaExec).toHaveBeenCalledWith({
147
- 'cmd': 'startup bundle-webpack',
154
+ 'cmd': 'startup bundle-package',
148
155
  'scope': packages.map(({ name }) => name),
149
156
  'parallel': true,
150
157
  'stream': true,
151
- '--': ['--watch'],
158
+ '--': ['--watch', '--bundler webpack'],
152
159
  });
153
160
  });
154
161
 
155
- describe('with --bundler=vite', () => {
156
- beforeEach(() => (args.bundler = 'vite'));
157
-
158
- test('bundles with Vite in watch mode', async () => {
162
+ function itBundlesWithVite() {
163
+ test('bundles with vite', async () => {
159
164
  await subject();
160
165
 
161
166
  expect(lernaExec).toHaveBeenCalledWith(
162
- expect.objectContaining({ cmd: 'startup bundle-vite' })
167
+ expect.objectContaining({
168
+ 'cmd': 'startup bundle-package',
169
+ '--': ['--watch', '--bundler vite'],
170
+ })
163
171
  );
164
172
  });
173
+ }
174
+
175
+ describe('with --bundler=vite', () => {
176
+ beforeEach(() => (args.bundler = 'vite'));
177
+
178
+ itBundlesWithVite();
179
+ });
180
+
181
+ describe('with cli.bundler set to vite', () => {
182
+ beforeEach(() => jest.mocked(getConfiguration).mockReturnValue({ bundler: 'vite' }));
183
+
184
+ itBundlesWithVite();
165
185
  });
166
186
 
167
187
  describe('with "code-coverage"', () => {
@@ -172,8 +192,8 @@ describe(`[startup] ${Start.name}`, () => {
172
192
 
173
193
  expect(lernaExec).toHaveBeenCalledWith(
174
194
  expect.objectContaining({
175
- 'cmd': 'startup bundle-webpack',
176
- '--': ['--watch', '--code-coverage'],
195
+ 'cmd': 'startup bundle-package',
196
+ '--': ['--watch', '--code-coverage', '--bundler webpack'],
177
197
  })
178
198
  );
179
199
  });
@@ -187,8 +207,8 @@ describe(`[startup] ${Start.name}`, () => {
187
207
 
188
208
  expect(lernaExec).toHaveBeenCalledWith(
189
209
  expect.objectContaining({
190
- 'cmd': 'startup bundle-webpack',
191
- '--': ['--watch', `--config "${args.config}"`],
210
+ 'cmd': 'startup bundle-package',
211
+ '--': ['--watch', `--config "${args.config}"`, '--bundler webpack'],
192
212
  })
193
213
  );
194
214
  });
@@ -1,5 +1,5 @@
1
1
  import { getPackages, logErrors, PackageType } from '../../utils';
2
- import { checkArgs, compile, getBundleCommand, lernaExec, ProcessTree, typeCheck } from '../utils';
2
+ import { checkArgs, compile, lernaExec, ProcessTree, resolveBundler, typeCheck } from '../utils';
3
3
  import { kendoUILicense } from './kendo-ui-license';
4
4
  import type { entry } from './registry/build';
5
5
  import { Command } from './types';
@@ -38,7 +38,7 @@ export class Build extends Command<typeof entry> {
38
38
  const bundleScope = packages
39
39
  .filter(({ type }) => type === PackageType.Bundle)
40
40
  .map(({ name }) => name);
41
- const bundleCmd = getBundleCommand(this.args);
41
+ const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];
42
42
  const precompileScope = packages
43
43
  .filter(({ scripts }) => !!scripts?.precompile)
44
44
  .map(({ name }) => name);
@@ -77,11 +77,11 @@ export class Build extends Command<typeof entry> {
77
77
  return Promise.resolve();
78
78
  }
79
79
  return lernaExec({
80
- 'cmd': bundleCmd,
80
+ 'cmd': 'startup bundle-package',
81
81
  'scope': bundleScope,
82
82
  'parallel': true,
83
83
  'stream': true,
84
- '--': ['--exposed-dependencies'],
84
+ '--': ['--exposed-dependencies', ...bundlerArg],
85
85
  });
86
86
  },
87
87
  {
@@ -100,7 +100,7 @@ export class Build extends Command<typeof entry> {
100
100
  }
101
101
 
102
102
  return lernaExec({
103
- 'cmd': bundleCmd,
103
+ 'cmd': 'startup bundle-package',
104
104
  'scope': bundleScope,
105
105
  'stream': true,
106
106
  '--': [
@@ -108,6 +108,7 @@ export class Build extends Command<typeof entry> {
108
108
  ...[this.args.codeCoverage ? '--code-coverage' : undefined],
109
109
  ...[this.args.stat ? '--stat' : undefined],
110
110
  ...[this.args.preview ? '--preview' : undefined],
111
+ ...bundlerArg,
111
112
  ].filter(item => !!item) as string[],
112
113
  });
113
114
  },
@@ -0,0 +1,20 @@
1
+ import { bundleConstants } from '../../core';
2
+ import { getConfiguration } from '../../utils';
3
+ import { entry } from './registry/bundle-package';
4
+ import { Command } from './types';
5
+
6
+ export class BundlePackage extends Command<typeof entry> {
7
+ async execute() {
8
+ // Local cli.bundler overrides project-wide default in this.args.bundler
9
+ const bundler =
10
+ getConfiguration().bundler ?? this.args.bundler ?? bundleConstants.defaultBundler;
11
+
12
+ if (bundler === 'vite') {
13
+ const { BundleVite } = await import('./bundle-vite');
14
+ await new BundleVite(this.args).execute();
15
+ } else {
16
+ const { BundleWebpack } = await import('./bundle-webpack');
17
+ await new BundleWebpack(this.args).execute();
18
+ }
19
+ }
20
+ }
@@ -0,0 +1,14 @@
1
+ import { CommandName, exitWhenParentExits } from '../../utils';
2
+ import { CommandEntry, InferArgs } from './types';
3
+
4
+ export abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {
5
+ constructor(protected readonly args: InferArgs<NonNullable<T['options']>, U>) {}
6
+
7
+ watchForParentExit(name: CommandName): void {
8
+ if ('watch' in this.args && this.args.watch === true) {
9
+ exitWhenParentExits(name);
10
+ }
11
+ }
12
+
13
+ abstract execute(): Promise<void>;
14
+ }
@@ -2,7 +2,10 @@ import { getPackageManager } from '@servicetitan/install';
2
2
  import { getVersionMismatches } from '@servicetitan/startup-utils';
3
3
  import path from 'node:path';
4
4
  import { getExposedDependencies, Metadata } from '../../core';
5
+ import type { Configuration } from '../../utils';
5
6
  import {
7
+ getSharedDependencies,
8
+ isExposeSharedDependencies,
6
9
  isWebComponent,
7
10
  loadSharedDependencies,
8
11
  log,
@@ -16,13 +19,7 @@ import { Command } from './types';
16
19
  interface HostPackageJSON {
17
20
  name: string;
18
21
  dependencies: Record<string, string>;
19
- cli?: {
20
- 'web-component'?: boolean | string | object;
21
- 'webpack'?: {
22
- 'expose-shared-dependencies'?: boolean;
23
- 'shared-dependencies'?: Record<string, string>;
24
- };
25
- };
22
+ cli?: Configuration;
26
23
  }
27
24
 
28
25
  interface HostData extends HostPackageJSON {
@@ -82,7 +79,7 @@ export class MfeCheck extends Command<typeof entry> {
82
79
  const mfeSharedDependencies = mfeMetadata.sharedDependencies;
83
80
  const hostSharedDependencies = loadSharedDependencies(
84
81
  hostData.dependencies,
85
- hostData.cli?.webpack?.['shared-dependencies']
82
+ getSharedDependencies(hostData)
86
83
  );
87
84
  const packageManager = getPackageManager();
88
85
  const workspacePackage = packageManager.getWorkspacePackage(hostData.location);
@@ -99,8 +96,7 @@ export class MfeCheck extends Command<typeof entry> {
99
96
  );
100
97
 
101
98
  const isHostMfe = isWebComponent(hostData);
102
- const isSharedDependenciesEnabled =
103
- hostData.cli?.webpack?.['expose-shared-dependencies'] === true;
99
+ const isSharedDependenciesEnabled = isExposeSharedDependencies(hostData);
104
100
  const compatible = !isHostMfe && !mismatchResult && isSharedDependenciesEnabled;
105
101
 
106
102
  return {
@@ -1,3 +1,4 @@
1
+ import { bundleConstants } from '../../../core';
1
2
  import type { CommandEntry } from '../types';
2
3
  import { defineEntry } from './define-entry';
3
4
 
@@ -6,9 +7,9 @@ export const entry = defineEntry({
6
7
  greedy: true,
7
8
  options: {
8
9
  bundler: {
9
- choices: ['vite', 'webpack'] as const,
10
+ choices: bundleConstants.bundlers,
10
11
  description: 'Bundler',
11
- defaultDescription: 'webpack',
12
+ defaultDescription: bundleConstants.defaultBundler,
12
13
  },
13
14
  cdnPath: { string: true, description: 'Base url for application assets' },
14
15
  codeCoverage: { boolean: true, description: 'Instrument code for coverage analysis?' },
@@ -0,0 +1,22 @@
1
+ import { bundleConstants } from '../../../core';
2
+ import type { CommandEntry } from '../types';
3
+ import { defineEntry } from './define-entry';
4
+
5
+ /*
6
+ * Internal dispatcher invoked by `start`/`build` per package. Its options are the union of
7
+ * bundle-vite and bundle-webpack so it can forward them to whichever bundler it delegates to,
8
+ * plus the run's --bundler default.
9
+ */
10
+ export const entry = defineEntry({
11
+ options: {
12
+ bundler: { choices: bundleConstants.bundlers, hidden: true },
13
+ codeCoverage: { boolean: true, hidden: true },
14
+ config: { string: true, hidden: true },
15
+ exposedDependencies: { boolean: true, hidden: true },
16
+ preview: { boolean: true, hidden: true },
17
+ printConfig: { boolean: true, hidden: true },
18
+ stat: { boolean: true, hidden: true },
19
+ useWatchConfig: { boolean: true, hidden: true },
20
+ watch: { boolean: true, hidden: true },
21
+ },
22
+ } satisfies CommandEntry);
@@ -1,6 +1,7 @@
1
1
  import { CommandName } from '../../../utils';
2
2
  import { Command, CommandEntry, Newable } from '../types';
3
3
  import { entry as build } from './build';
4
+ import { entry as bundlePackage } from './bundle-package';
4
5
  import { entry as bundleVite } from './bundle-vite';
5
6
  import { entry as bundleWebpack } from './bundle-webpack';
6
7
  import { entry as clean } from './clean';
@@ -64,6 +65,7 @@ function makeEntry<K extends CommandName, T extends CommandEntry>(
64
65
  */
65
66
  export const commandRegistry = {
66
67
  ...makeEntry(CommandName.build, build),
68
+ ...makeEntry(CommandName['bundle-package'], bundlePackage),
67
69
  ...makeEntry(CommandName['bundle-vite'], bundleVite),
68
70
  ...makeEntry(CommandName['bundle-webpack'], bundleWebpack),
69
71
  ...makeEntry(CommandName.clean, clean),
@@ -1,3 +1,4 @@
1
+ import { bundleConstants } from '../../../core';
1
2
  import type { CommandEntry } from '../types';
2
3
  import { defineEntry } from './define-entry';
3
4
 
@@ -6,9 +7,9 @@ export const entry = defineEntry({
6
7
  greedy: true,
7
8
  options: {
8
9
  bundler: {
9
- choices: ['vite', 'webpack'] as const,
10
+ choices: bundleConstants.bundlers,
10
11
  description: 'Bundler',
11
- defaultDescription: 'webpack',
12
+ defaultDescription: bundleConstants.defaultBundler,
12
13
  },
13
14
  codeCoverage: { boolean: true, description: 'Instrument code for coverage analysis?' },
14
15
  config: { string: true, hidden: true, description: 'Use specified configuration' },
@@ -12,15 +12,21 @@ const tasks: Record<string, new (args: { [key: string]: unknown }) => Task> = {
12
12
  };
13
13
 
14
14
  export class RunTask extends Command<typeof entry> {
15
+ watchForParentExit(): void {
16
+ // No-op: the task being run handles its own parent-exit watch.
17
+ }
18
+
15
19
  @logErrors
16
20
  async execute() {
17
21
  const { _ = [], taskName = this.args._?.[0], taskArgs = [], ...restOptions } = this.args;
18
22
 
19
23
  if (taskName && taskName in tasks) {
20
- await new tasks[taskName]({
24
+ const task = new tasks[taskName]({
21
25
  _: [..._, ...taskArgs],
22
26
  ...restOptions,
23
- }).execute();
27
+ });
28
+ task.watchForParentExit();
29
+ await task.execute();
24
30
  return;
25
31
  }
26
32
 
@@ -2,10 +2,10 @@ import { getPackages, logErrors, PackageType } from '../../utils';
2
2
  import {
3
3
  checkArgs,
4
4
  compile,
5
- getBundleCommand,
6
5
  lernaExec,
7
6
  pipeStdout,
8
7
  ProcessTree,
8
+ resolveBundler,
9
9
  typeCheck,
10
10
  watchStdout,
11
11
  } from '../utils';
@@ -28,6 +28,9 @@ export class Start extends Command<typeof entry> {
28
28
  async execute() {
29
29
  checkArgs(this.args, { obsolete: ['--esbuild', '--experimental-bundlers'] });
30
30
 
31
+ // Used by sub-processes to detect this process dying
32
+ process.env.STARTUP_PARENT_PID = String(process.pid);
33
+
31
34
  const useTsc = this.args.useTsc;
32
35
 
33
36
  const packages = getPackages({
@@ -43,7 +46,7 @@ export class Start extends Command<typeof entry> {
43
46
  const bundleScope = packages
44
47
  .filter(({ type }) => type === PackageType.Bundle)
45
48
  .map(({ name }) => name);
46
- const bundleCmd = getBundleCommand(this.args);
49
+ const bundlerArg = [`--bundler ${resolveBundler(this.args)}`];
47
50
  const precompileScope = packages
48
51
  .filter(({ scripts }) => !!scripts?.precompile)
49
52
  .map(({ name }) => name);
@@ -126,11 +129,11 @@ export class Start extends Command<typeof entry> {
126
129
  return Promise.resolve();
127
130
  }
128
131
  return lernaExec({
129
- 'cmd': bundleCmd,
132
+ 'cmd': 'startup bundle-package',
130
133
  'scope': bundleScope,
131
134
  'parallel': true,
132
135
  'stream': true,
133
- '--': ['--exposed-dependencies', '--use-watch-config'],
136
+ '--': ['--exposed-dependencies', '--use-watch-config', ...bundlerArg],
134
137
  });
135
138
  },
136
139
  { dependsOn: [StartProcesses.Compile, StartProcesses.PreparePackage] }
@@ -142,7 +145,7 @@ export class Start extends Command<typeof entry> {
142
145
  return Promise.resolve();
143
146
  }
144
147
  return lernaExec({
145
- 'cmd': bundleCmd,
148
+ 'cmd': 'startup bundle-package',
146
149
  'scope': bundleScope,
147
150
  'parallel': true,
148
151
  'stream': true,
@@ -150,6 +153,7 @@ export class Start extends Command<typeof entry> {
150
153
  '--watch',
151
154
  this.args.config ? `--config "${this.args.config}"` : undefined,
152
155
  this.args.codeCoverage ? '--code-coverage' : undefined,
156
+ ...bundlerArg,
153
157
  ].filter(item => !!item) as string[],
154
158
  });
155
159
  },
@@ -56,10 +56,6 @@ export interface CommandEntry {
56
56
  options?: CommandOptions;
57
57
  }
58
58
 
59
- export abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {
60
- constructor(protected readonly args: InferArgs<NonNullable<T['options']>, U>) {}
61
-
62
- abstract execute(): Promise<void>;
63
- }
64
-
65
59
  export type Newable<T> = new (...args: any[]) => T;
60
+
61
+ export { Command } from './command';
package/src/cli/index.ts CHANGED
@@ -69,6 +69,9 @@ async function handleCommand(name: CommandName, argv: any) {
69
69
  const CommandClass = await entry.load();
70
70
  // eslint-disable-next-line @typescript-eslint/naming-convention
71
71
  const command = new CommandClass({ ...argv, _: argv._.slice(1) });
72
+
73
+ command.watchForParentExit(name);
74
+
72
75
  command.execute().catch(() => {
73
76
  process.exit(1);
74
77
  });