@servicetitan/startup 37.0.2 → 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 (433) 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/types.d.ts.map +1 -1
  87. package/dist/cli/commands/review/types.js.map +1 -1
  88. package/dist/cli/commands/review/utils/compare-version.js +8 -19
  89. package/dist/cli/commands/review/utils/compare-version.js.map +1 -1
  90. package/dist/cli/commands/run-task.d.ts +1 -0
  91. package/dist/cli/commands/run-task.d.ts.map +1 -1
  92. package/dist/cli/commands/run-task.js +20 -6
  93. package/dist/cli/commands/run-task.js.map +1 -1
  94. package/dist/cli/commands/start.d.ts.map +1 -1
  95. package/dist/cli/commands/start.js +28 -13
  96. package/dist/cli/commands/start.js.map +1 -1
  97. package/dist/cli/commands/stylelint.js +13 -4
  98. package/dist/cli/commands/stylelint.js.map +1 -1
  99. package/dist/cli/commands/styles-check.js +13 -4
  100. package/dist/cli/commands/styles-check.js.map +1 -1
  101. package/dist/cli/commands/test/runners/jest.js +1 -3
  102. package/dist/cli/commands/test/runners/jest.js.map +1 -1
  103. package/dist/cli/commands/test/tests.js +13 -4
  104. package/dist/cli/commands/test/tests.js.map +1 -1
  105. package/dist/cli/commands/types.d.ts +1 -6
  106. package/dist/cli/commands/types.d.ts.map +1 -1
  107. package/dist/cli/commands/types.js +2 -20
  108. package/dist/cli/commands/types.js.map +1 -1
  109. package/dist/cli/commands/upload-sourcemaps.js +17 -13
  110. package/dist/cli/commands/upload-sourcemaps.js.map +1 -1
  111. package/dist/cli/index.js +1 -0
  112. package/dist/cli/index.js.map +1 -1
  113. package/dist/cli/tasks/cli-task.d.ts +3 -0
  114. package/dist/cli/tasks/cli-task.d.ts.map +1 -1
  115. package/dist/cli/tasks/cli-task.js +41 -9
  116. package/dist/cli/tasks/cli-task.js.map +1 -1
  117. package/dist/cli/tasks/swc-compile-package/get-swc-options.d.ts +9 -1
  118. package/dist/cli/tasks/swc-compile-package/get-swc-options.d.ts.map +1 -1
  119. package/dist/cli/tasks/swc-compile-package/get-swc-options.js +18 -2
  120. package/dist/cli/tasks/swc-compile-package/get-swc-options.js.map +1 -1
  121. package/dist/cli/tasks/swc-compile-package/swc-compile-package.d.ts +3 -1
  122. package/dist/cli/tasks/swc-compile-package/swc-compile-package.d.ts.map +1 -1
  123. package/dist/cli/tasks/swc-compile-package/swc-compile-package.js +17 -3
  124. package/dist/cli/tasks/swc-compile-package/swc-compile-package.js.map +1 -1
  125. package/dist/cli/tasks/task.d.ts +2 -1
  126. package/dist/cli/tasks/task.d.ts.map +1 -1
  127. package/dist/cli/tasks/task.js +6 -3
  128. package/dist/cli/tasks/task.js.map +1 -1
  129. package/dist/cli/tasks/tsc-compile/tsc-compile.js +1 -3
  130. package/dist/cli/tasks/tsc-compile/tsc-compile.js.map +1 -1
  131. package/dist/cli/utils/cli-npm.d.ts.map +1 -1
  132. package/dist/cli/utils/cli-npm.js +8 -1
  133. package/dist/cli/utils/cli-npm.js.map +1 -1
  134. package/dist/cli/utils/cli-os.d.ts +1 -0
  135. package/dist/cli/utils/cli-os.d.ts.map +1 -1
  136. package/dist/cli/utils/cli-os.js +20 -0
  137. package/dist/cli/utils/cli-os.js.map +1 -1
  138. package/dist/cli/utils/compile.d.ts.map +1 -1
  139. package/dist/cli/utils/compile.js +7 -4
  140. package/dist/cli/utils/compile.js.map +1 -1
  141. package/dist/cli/utils/copy-files.js +1 -0
  142. package/dist/cli/utils/copy-files.js.map +1 -1
  143. package/dist/cli/utils/index.d.ts +1 -1
  144. package/dist/cli/utils/index.d.ts.map +1 -1
  145. package/dist/cli/utils/index.js +1 -1
  146. package/dist/cli/utils/index.js.map +1 -1
  147. package/dist/cli/utils/process-tree.js +2 -6
  148. package/dist/cli/utils/process-tree.js.map +1 -1
  149. package/dist/cli/utils/resolve-bundler.d.ts.map +1 -1
  150. package/dist/cli/utils/resolve-bundler.js +2 -1
  151. package/dist/cli/utils/resolve-bundler.js.map +1 -1
  152. package/dist/cli/utils/ts-config.d.ts +1 -1
  153. package/dist/cli/utils/ts-config.d.ts.map +1 -1
  154. package/dist/cli/utils/ts-config.js +1 -3
  155. package/dist/cli/utils/ts-config.js.map +1 -1
  156. package/dist/cli/utils/with-exponential-backoff.d.ts +7 -0
  157. package/dist/cli/utils/with-exponential-backoff.d.ts.map +1 -0
  158. package/dist/cli/utils/with-exponential-backoff.js +28 -0
  159. package/dist/cli/utils/with-exponential-backoff.js.map +1 -0
  160. package/dist/core/constants.d.ts +2 -0
  161. package/dist/core/constants.d.ts.map +1 -1
  162. package/dist/core/constants.js +6 -1
  163. package/dist/core/constants.js.map +1 -1
  164. package/dist/cypress/config/vite-config.d.ts.map +1 -1
  165. package/dist/cypress/config/vite-config.js +23 -3
  166. package/dist/cypress/config/vite-config.js.map +1 -1
  167. package/dist/cypress/config/webpack-config.d.ts.map +1 -1
  168. package/dist/cypress/config/webpack-config.js +5 -0
  169. package/dist/cypress/config/webpack-config.js.map +1 -1
  170. package/dist/postinstall.js +118 -0
  171. package/dist/scripts/generate-bin-wrappers.js +203 -0
  172. package/dist/storybook-config/swc.d.ts +6 -0
  173. package/dist/storybook-config/swc.d.ts.map +1 -1
  174. package/dist/storybook-config/vite-final.d.ts.map +1 -1
  175. package/dist/storybook-config/vite-final.js +32 -6
  176. package/dist/storybook-config/vite-final.js.map +1 -1
  177. package/dist/storybook-config/webpack-final.d.ts.map +1 -1
  178. package/dist/storybook-config/webpack-final.js +3 -1
  179. package/dist/storybook-config/webpack-final.js.map +1 -1
  180. package/dist/utils/exit-when-parent-exits.d.ts +6 -0
  181. package/dist/utils/exit-when-parent-exits.d.ts.map +1 -0
  182. package/dist/utils/exit-when-parent-exits.js +37 -0
  183. package/dist/utils/exit-when-parent-exits.js.map +1 -0
  184. package/dist/utils/find-up.d.ts +1 -1
  185. package/dist/utils/find-up.d.ts.map +1 -1
  186. package/dist/utils/find-up.js +2 -2
  187. package/dist/utils/find-up.js.map +1 -1
  188. package/dist/utils/get-configuration.d.ts +6 -3
  189. package/dist/utils/get-configuration.d.ts.map +1 -1
  190. package/dist/utils/get-configuration.js +10 -2
  191. package/dist/utils/get-configuration.js.map +1 -1
  192. package/dist/utils/index.d.ts +1 -0
  193. package/dist/utils/index.d.ts.map +1 -1
  194. package/dist/utils/index.js +1 -0
  195. package/dist/utils/index.js.map +1 -1
  196. package/dist/utils/log.js +1 -3
  197. package/dist/utils/log.js.map +1 -1
  198. package/dist/vite/build-shared-dependencies.d.ts.map +1 -1
  199. package/dist/vite/build-shared-dependencies.js +2 -0
  200. package/dist/vite/build-shared-dependencies.js.map +1 -1
  201. package/dist/vite/config/base-config.d.ts.map +1 -1
  202. package/dist/vite/config/base-config.js +14 -1
  203. package/dist/vite/config/base-config.js.map +1 -1
  204. package/dist/vite/config/create-filtering-logger.d.ts.map +1 -1
  205. package/dist/vite/config/create-filtering-logger.js +12 -1
  206. package/dist/vite/config/create-filtering-logger.js.map +1 -1
  207. package/dist/vite/config/create-vite-build-context.d.ts.map +1 -1
  208. package/dist/vite/config/create-vite-build-context.js +4 -1
  209. package/dist/vite/config/create-vite-build-context.js.map +1 -1
  210. package/dist/vite/config/create-vite-config.js +7 -2
  211. package/dist/vite/config/create-vite-config.js.map +1 -1
  212. package/dist/vite/config/load-config-file.js +8 -19
  213. package/dist/vite/config/load-config-file.js.map +1 -1
  214. package/dist/vite/index.d.ts +2 -0
  215. package/dist/vite/index.d.ts.map +1 -1
  216. package/dist/vite/index.html +2 -2
  217. package/dist/vite/index.js +16 -0
  218. package/dist/vite/index.js.map +1 -1
  219. package/dist/vite/plugins/chain-source-maps-plugin.js +1 -1
  220. package/dist/vite/plugins/chain-source-maps-plugin.js.map +1 -1
  221. package/dist/vite/plugins/clean-plugin.js +1 -1
  222. package/dist/vite/plugins/clean-plugin.js.map +1 -1
  223. package/dist/vite/plugins/css-injector-plugin.js +1 -1
  224. package/dist/vite/plugins/css-injector-plugin.js.map +1 -1
  225. package/dist/vite/plugins/design-system-guard-plugin.d.ts.map +1 -1
  226. package/dist/vite/plugins/design-system-guard-plugin.js +10 -5
  227. package/dist/vite/plugins/design-system-guard-plugin.js.map +1 -1
  228. package/dist/vite/plugins/dev-server-routing-plugin.d.ts +1 -1
  229. package/dist/vite/plugins/dev-server-routing-plugin.d.ts.map +1 -1
  230. package/dist/vite/plugins/dev-server-routing-plugin.js +4 -3
  231. package/dist/vite/plugins/dev-server-routing-plugin.js.map +1 -1
  232. package/dist/vite/plugins/externals-plugin.d.ts.map +1 -1
  233. package/dist/vite/plugins/externals-plugin.js +11 -5
  234. package/dist/vite/plugins/externals-plugin.js.map +1 -1
  235. package/dist/vite/plugins/html-plugin.d.ts.map +1 -1
  236. package/dist/vite/plugins/html-plugin.js +5 -3
  237. package/dist/vite/plugins/html-plugin.js.map +1 -1
  238. package/dist/vite/plugins/ignore-modules-plugin.d.ts +2 -2
  239. package/dist/vite/plugins/ignore-modules-plugin.d.ts.map +1 -1
  240. package/dist/vite/plugins/ignore-modules-plugin.js +36 -24
  241. package/dist/vite/plugins/ignore-modules-plugin.js.map +1 -1
  242. package/dist/vite/plugins/index.d.ts +3 -0
  243. package/dist/vite/plugins/index.d.ts.map +1 -1
  244. package/dist/vite/plugins/index.js +3 -0
  245. package/dist/vite/plugins/index.js.map +1 -1
  246. package/dist/vite/plugins/istanbul-plugin.d.ts.map +1 -1
  247. package/dist/vite/plugins/istanbul-plugin.js +33 -1
  248. package/dist/vite/plugins/istanbul-plugin.js.map +1 -1
  249. package/dist/vite/plugins/less-tilde-plugin.d.ts +8 -0
  250. package/dist/vite/plugins/less-tilde-plugin.d.ts.map +1 -0
  251. package/dist/vite/plugins/less-tilde-plugin.js +53 -0
  252. package/dist/vite/plugins/less-tilde-plugin.js.map +1 -0
  253. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js +1 -1
  254. package/dist/vite/plugins/magic-comments-plugin/magic-comments-plugin.js.map +1 -1
  255. package/dist/vite/plugins/metadata-plugin.js +1 -1
  256. package/dist/vite/plugins/metadata-plugin.js.map +1 -1
  257. package/dist/vite/plugins/moment-locales-plugin.d.ts +1 -1
  258. package/dist/vite/plugins/moment-locales-plugin.d.ts.map +1 -1
  259. package/dist/vite/plugins/moment-locales-plugin.js +30 -14
  260. package/dist/vite/plugins/moment-locales-plugin.js.map +1 -1
  261. package/dist/vite/plugins/react-refresh-plugin/index.d.ts +2 -0
  262. package/dist/vite/plugins/react-refresh-plugin/index.d.ts.map +1 -0
  263. package/dist/vite/plugins/react-refresh-plugin/index.js +20 -0
  264. package/dist/vite/plugins/react-refresh-plugin/index.js.map +1 -0
  265. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.d.ts +4 -0
  266. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.d.ts.map +1 -0
  267. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.js +143 -0
  268. package/dist/vite/plugins/react-refresh-plugin/react-refresh-plugin.js.map +1 -0
  269. package/dist/vite/plugins/react-refresh-plugin/refresh-runtime.js +113 -0
  270. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.d.ts.map +1 -1
  271. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js +14 -11
  272. package/dist/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.js.map +1 -1
  273. package/dist/vite/plugins/style-urls-plugin.js +1 -1
  274. package/dist/vite/plugins/style-urls-plugin.js.map +1 -1
  275. package/dist/vite/plugins/virtual-modules-plugin.d.ts.map +1 -1
  276. package/dist/vite/plugins/virtual-modules-plugin.js +9 -6
  277. package/dist/vite/plugins/virtual-modules-plugin.js.map +1 -1
  278. package/dist/vite/plugins/window-externals-plugin.d.ts +22 -0
  279. package/dist/vite/plugins/window-externals-plugin.d.ts.map +1 -0
  280. package/dist/vite/plugins/window-externals-plugin.js +74 -0
  281. package/dist/vite/plugins/window-externals-plugin.js.map +1 -0
  282. package/dist/vite/types.d.ts +4 -1
  283. package/dist/vite/types.d.ts.map +1 -1
  284. package/dist/webpack/bundle-webpack.d.ts.map +1 -1
  285. package/dist/webpack/bundle-webpack.js +6 -1
  286. package/dist/webpack/bundle-webpack.js.map +1 -1
  287. package/dist/webpack/configs/optimization-config.js +4 -4
  288. package/dist/webpack/configs/optimization-config.js.map +1 -1
  289. package/dist/webpack/configs/output-config.js +1 -1
  290. package/dist/webpack/configs/output-config.js.map +1 -1
  291. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js +1 -3
  292. package/dist/webpack/configs/plugins/ignore-plugin/ignore-plugin.js.map +1 -1
  293. package/dist/webpack/loaders/expose-loader/__tests__/__mocks__/configuration.expose-loader.js +13 -0
  294. package/dist/webpack/loaders/expose-loader/__tests__/__mocks__/index.js +1 -0
  295. package/dist/webpack/utils/index.d.ts +1 -0
  296. package/dist/webpack/utils/index.d.ts.map +1 -1
  297. package/dist/webpack/utils/index.js +1 -0
  298. package/dist/webpack/utils/index.js.map +1 -1
  299. package/dist/webpack/utils/normalize-proxy-config.d.ts +6 -0
  300. package/dist/webpack/utils/normalize-proxy-config.d.ts.map +1 -0
  301. package/dist/webpack/utils/normalize-proxy-config.js +52 -0
  302. package/dist/webpack/utils/normalize-proxy-config.js.map +1 -0
  303. package/package.json +25 -22
  304. package/src/cli/commands/__tests__/build.test.ts +33 -19
  305. package/src/cli/commands/__tests__/bundle-package.test.ts +65 -0
  306. package/src/cli/commands/__tests__/bundle-vite.test.ts +1 -0
  307. package/src/cli/commands/__tests__/command.test.ts +42 -0
  308. package/src/cli/commands/__tests__/mfe-check.test.ts +26 -5
  309. package/src/cli/commands/__tests__/run-task.test.ts +20 -1
  310. package/src/cli/commands/__tests__/start.test.ts +35 -15
  311. package/src/cli/commands/build.ts +6 -5
  312. package/src/cli/commands/bundle-package.ts +20 -0
  313. package/src/cli/commands/command.ts +14 -0
  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/start.ts +3 -2
  319. package/src/cli/commands/review/types.ts +1 -3
  320. package/src/cli/commands/run-task.ts +8 -2
  321. package/src/cli/commands/start.ts +9 -5
  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-npm.test.ts +33 -0
  335. package/src/cli/utils/__tests__/cli-os.test.ts +86 -3
  336. package/src/cli/utils/__tests__/compile.test.ts +37 -2
  337. package/src/cli/utils/__tests__/copy-files.test.ts +1 -1
  338. package/src/cli/utils/__tests__/with-exponential-backoff.test.ts +119 -0
  339. package/src/cli/utils/cli-npm.ts +19 -4
  340. package/src/cli/utils/cli-os.ts +14 -0
  341. package/src/cli/utils/compile.ts +8 -1
  342. package/src/cli/utils/copy-files.ts +1 -1
  343. package/src/cli/utils/index.ts +1 -1
  344. package/src/cli/utils/resolve-bundler.ts +2 -1
  345. package/src/cli/utils/ts-config.ts +1 -1
  346. package/src/cli/utils/with-exponential-backoff.ts +28 -0
  347. package/src/core/constants.ts +2 -0
  348. package/src/cypress/config/__tests__/vite-config.test.ts +21 -11
  349. package/src/cypress/config/__tests__/webpack-config.test.ts +17 -0
  350. package/src/cypress/config/vite-config.ts +18 -3
  351. package/src/cypress/config/webpack-config.ts +2 -0
  352. package/src/storybook-config/__tests__/vite-final.test.ts +71 -11
  353. package/src/storybook-config/__tests__/webpack-final.test.ts +30 -6
  354. package/src/storybook-config/vite-final.ts +23 -2
  355. package/src/storybook-config/webpack-final.ts +10 -2
  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 +16 -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 +9 -0
  368. package/src/vite/config/__tests__/create-vite-build-context.test.ts +25 -0
  369. package/src/vite/config/__tests__/create-vite-config.test.ts +6 -3
  370. package/src/vite/config/base-config.ts +18 -2
  371. package/src/vite/config/create-filtering-logger.ts +13 -2
  372. package/src/vite/config/create-vite-build-context.ts +1 -0
  373. package/src/vite/config/create-vite-config.ts +6 -3
  374. package/src/vite/index.html +2 -2
  375. package/src/vite/index.ts +2 -0
  376. package/src/vite/plugins/__tests__/chain-source-maps-plugin.test.ts +1 -1
  377. package/src/vite/plugins/__tests__/clean-plugin.test.ts +1 -1
  378. package/src/vite/plugins/__tests__/css-injector-plugin.test.ts +1 -1
  379. package/src/vite/plugins/__tests__/design-system-guard-plugin.test.ts +15 -3
  380. package/src/vite/plugins/__tests__/dev-server-routing-plugin.test.ts +121 -99
  381. package/src/vite/plugins/__tests__/externals-plugin.test.ts +24 -3
  382. package/src/vite/plugins/__tests__/html-plugin.test.ts +10 -3
  383. package/src/vite/plugins/__tests__/html-template.test.ts +10 -2
  384. package/src/vite/plugins/__tests__/ignore-modules-plugin.test.ts +30 -6
  385. package/src/vite/plugins/__tests__/istanbul-plugin.test.ts +42 -1
  386. package/src/vite/plugins/__tests__/less-tilde-plugin.test.ts +91 -0
  387. package/src/vite/plugins/__tests__/metadata-plugin.test.ts +1 -1
  388. package/src/vite/plugins/__tests__/moment-locales-plugin.test.ts +35 -25
  389. package/src/vite/plugins/__tests__/style-urls-plugin.test.ts +1 -1
  390. package/src/vite/plugins/__tests__/virtual-modules-plugin.test.ts +20 -9
  391. package/src/vite/plugins/__tests__/window-externals-plugin.test.ts +128 -0
  392. package/src/vite/plugins/chain-source-maps-plugin.ts +1 -1
  393. package/src/vite/plugins/clean-plugin.ts +1 -1
  394. package/src/vite/plugins/css-injector-plugin.ts +1 -1
  395. package/src/vite/plugins/design-system-guard-plugin.ts +11 -8
  396. package/src/vite/plugins/dev-server-routing-plugin.ts +4 -4
  397. package/src/vite/plugins/externals-plugin.ts +15 -6
  398. package/src/vite/plugins/html-plugin.ts +4 -2
  399. package/src/vite/plugins/ignore-modules-plugin.ts +32 -23
  400. package/src/vite/plugins/index.ts +3 -0
  401. package/src/vite/plugins/istanbul-plugin.ts +28 -1
  402. package/src/vite/plugins/less-tilde-plugin.ts +64 -0
  403. package/src/vite/plugins/magic-comments-plugin/magic-comments-plugin.ts +1 -1
  404. package/src/vite/plugins/metadata-plugin.ts +1 -1
  405. package/src/vite/plugins/moment-locales-plugin.ts +24 -14
  406. package/src/vite/plugins/react-refresh-plugin/README.md +165 -0
  407. package/src/vite/plugins/react-refresh-plugin/__tests__/react-refresh-plugin.test.ts +366 -0
  408. package/src/vite/plugins/react-refresh-plugin/__tests__/refresh-runtime.test.ts +193 -0
  409. package/src/vite/plugins/react-refresh-plugin/index.ts +1 -0
  410. package/src/vite/plugins/react-refresh-plugin/react-refresh-plugin.ts +144 -0
  411. package/src/vite/plugins/react-refresh-plugin/refresh-runtime.js +113 -0
  412. package/src/vite/plugins/shared-dependencies-plugin/__tests__/shared-dependencies-plugin.test.ts +21 -16
  413. package/src/vite/plugins/shared-dependencies-plugin/shared-dependencies-plugin.ts +13 -12
  414. package/src/vite/plugins/style-urls-plugin.ts +1 -1
  415. package/src/vite/plugins/virtual-modules-plugin.ts +8 -7
  416. package/src/vite/plugins/window-externals-plugin.ts +94 -0
  417. package/src/vite/types.ts +4 -1
  418. package/src/webpack/__tests__/bundle-webpack.test.ts +32 -0
  419. package/src/webpack/__tests__/create-webpack-config-web-component.test.ts +17 -5
  420. package/src/webpack/__tests__/create-webpack-config.test.ts +10 -6
  421. package/src/webpack/bundle-webpack.ts +7 -1
  422. package/src/webpack/configs/optimization-config.ts +3 -3
  423. package/src/webpack/configs/output-config.ts +1 -1
  424. package/src/webpack/utils/__tests__/normalize-proxy-config.test.ts +121 -0
  425. package/src/webpack/utils/index.ts +1 -0
  426. package/src/webpack/utils/normalize-proxy-config.ts +59 -0
  427. package/tsconfig/types.d.ts +10 -0
  428. package/dist/cli/utils/get-bundle-command.d.ts +0 -3
  429. package/dist/cli/utils/get-bundle-command.d.ts.map +0 -1
  430. package/dist/cli/utils/get-bundle-command.js +0 -16
  431. package/dist/cli/utils/get-bundle-command.js.map +0 -1
  432. package/src/cli/utils/__tests__/get-bundle-command.test.ts +0 -23
  433. package/src/cli/utils/get-bundle-command.ts +0 -5
@@ -20,6 +20,7 @@ import {
20
20
  magicCommentsPlugin,
21
21
  metadataPlugin,
22
22
  momentLocalesPlugin,
23
+ reactRefreshPlugin,
23
24
  styleUrlsPlugin,
24
25
  svgrPlugin,
25
26
  virtualModulesPlugin,
@@ -62,6 +63,7 @@ jest.mock('../code-splitting', () => ({
62
63
  }));
63
64
 
64
65
  jest.mock('../../plugins', () => ({
66
+ reactRefreshPlugin: jest.fn(() => ({ name: 'reactRefresh' })),
65
67
  bundleStatPlugin: jest.fn(() => ({ name: 'bundleStat' })),
66
68
  chainSourceMapsPlugin: jest.fn(() => ({ name: 'chainSourceMaps' })),
67
69
  cleanPlugin: jest.fn(() => ({ name: 'clean' })),
@@ -119,6 +121,10 @@ describe(createBaseConfig.name, () => {
119
121
  expect(subject().server!.port).toBe(8080);
120
122
  });
121
123
 
124
+ test('binds dev server to 127.0.0.1', () => {
125
+ expect(subject().server!.host).toBe('127.0.0.1');
126
+ });
127
+
122
128
  test('sets development mode', () => {
123
129
  expect(subject().mode).toBe(bundleConstants.mode.development);
124
130
  });
@@ -195,6 +201,15 @@ describe(createBaseConfig.name, () => {
195
201
  }
196
202
  });
197
203
 
204
+ test('includes startup-utils, react refresh, and react JSX runtimes in optimized dependencies', () => {
205
+ expect(subject().optimizeDeps!.include).toEqual([
206
+ '@servicetitan/startup-utils',
207
+ 'react-refresh/runtime',
208
+ 'react/jsx-runtime',
209
+ 'react/jsx-dev-runtime',
210
+ ]);
211
+ });
212
+
198
213
  describe('when exposeProcessEnv lists a variable', () => {
199
214
  const variable = 'API_URL';
200
215
  const value = 'https://api.example.com';
@@ -219,10 +234,6 @@ describe(createBaseConfig.name, () => {
219
234
  });
220
235
  });
221
236
 
222
- test('includes startup-utils in optimized dependencies', () => {
223
- expect(subject().optimizeDeps!.include).toEqual(['@servicetitan/startup-utils']);
224
- });
225
-
226
237
  test('registers ignoreModulesPlugin for dependency pre-bundling', () => {
227
238
  expect(subject().optimizeDeps!.rolldownOptions).toEqual({
228
239
  plugins: [ignoreModulesPlugin(context)],
@@ -231,6 +242,7 @@ describe(createBaseConfig.name, () => {
231
242
 
232
243
  test('creates plugins from factories, passing context', () => {
233
244
  const factories = [
245
+ reactRefreshPlugin,
234
246
  bundleStatPlugin,
235
247
  cleanPlugin,
236
248
  cssInjectorPlugin,
@@ -31,12 +31,8 @@ describe(createCssConfig.name, () => {
31
31
  });
32
32
 
33
33
  test('sets less math option', () => {
34
- expect(subject()).toEqual(
35
- expect.objectContaining({
36
- preprocessorOptions: {
37
- less: { math: bundleConstants.less.math },
38
- },
39
- })
34
+ expect(subject().preprocessorOptions?.less).toEqual(
35
+ expect.objectContaining({ math: bundleConstants.less.math })
40
36
  );
41
37
  });
42
38
 
@@ -47,5 +47,14 @@ describe(createFilteringLogger.name, () => {
47
47
 
48
48
  itSuppressesMessage();
49
49
  });
50
+
51
+ describe('when message is an ignored-module import warning', () => {
52
+ beforeEach(() => {
53
+ message =
54
+ "[IMPORT_IS_UNDEFINED] Import `DefaultPortalContext` will always be undefined because there is no matching export in '\\0IGNORE_EMPTY:@servicetitan/design-system'";
55
+ });
56
+
57
+ itSuppressesMessage();
58
+ });
50
59
  });
51
60
  });
@@ -29,6 +29,7 @@ describe(createViteBuildContext.name, () => {
29
29
  omitDefault: [],
30
30
  pluginOverrides: { html: {}, svgr: {} },
31
31
  minify: {},
32
+ outDir: undefined,
32
33
  });
33
34
  });
34
35
 
@@ -86,4 +87,28 @@ describe(createViteBuildContext.name, () => {
86
87
  });
87
88
  });
88
89
  });
90
+
91
+ describe('when package.json contains build.outDir', () => {
92
+ const pkgJsonOutDir = 'pkg-dist';
93
+
94
+ beforeEach(() => {
95
+ pkgJsonConfig = { config: { build: { outDir: pkgJsonOutDir } } };
96
+ });
97
+
98
+ test('configures outDir', () => {
99
+ expect(subject().bundlerConfig.outDir).toBe(pkgJsonConfig.config?.build?.outDir);
100
+ });
101
+
102
+ describe('when file config also contains build.outDir', () => {
103
+ const fileOutDir = 'file-dist';
104
+
105
+ beforeEach(() => {
106
+ fileConfig = { config: { build: { outDir: fileOutDir } } };
107
+ });
108
+
109
+ test('file config takes precedence', () => {
110
+ expect(subject().bundlerConfig.outDir).toBe(fileOutDir);
111
+ });
112
+ });
113
+ });
89
114
  });
@@ -118,7 +118,7 @@ describe(createViteConfig.name, () => {
118
118
  });
119
119
 
120
120
  test('sets warmup.clientFiles for the dev server', async () => {
121
- expect((await subject()).server?.warmup?.clientFiles).toBe(warmupFiles);
121
+ expect((await subject()).server?.warmup?.clientFiles).toEqual(warmupFiles);
122
122
  });
123
123
 
124
124
  test('warms the resolved output root', async () => {
@@ -137,8 +137,11 @@ describe(createViteConfig.name, () => {
137
137
  })
138
138
  );
139
139
 
140
- test('consumer clientFiles take precedence', async () => {
141
- expect((await subject()).server?.warmup?.clientFiles).toEqual(['custom/**']);
140
+ test('appends consumer clientFiles to the defaults', async () => {
141
+ expect((await subject()).server?.warmup?.clientFiles).toEqual([
142
+ ...warmupFiles,
143
+ 'custom/**',
144
+ ]);
142
145
  });
143
146
 
144
147
  test('preserves other consumer warmup options', async () => {
@@ -23,6 +23,7 @@ import {
23
23
  magicCommentsPlugin,
24
24
  metadataPlugin,
25
25
  momentLocalesPlugin,
26
+ reactRefreshPlugin,
26
27
  styleUrlsPlugin,
27
28
  svgrPlugin,
28
29
  virtualModulesPlugin,
@@ -51,6 +52,7 @@ function importMetaRemap(
51
52
 
52
53
  function createPlugins(context: ViteBuildContext) {
53
54
  const entries: [string, Plugin[] | Plugin | Promise<Plugin> | undefined][] = [
55
+ ['reactRefresh', reactRefreshPlugin(context)],
54
56
  ['bundleStat', bundleStatPlugin(context)],
55
57
  ['clean', cleanPlugin(context)],
56
58
  ['cssInjector', cssInjectorPlugin(context)],
@@ -83,7 +85,11 @@ export function createBaseConfig(context: ViteBuildContext): InlineConfig {
83
85
  let config: InlineConfig = {
84
86
  cacheDir: `node_modules/.vite/${getBundleType(context) ?? 'host'}`,
85
87
  customLogger: createFilteringLogger(),
86
- server: { port: context.bundlerConfig.port ?? (isWebComponent ? 8888 : 8080) },
88
+ server: {
89
+ // Windows machines can fail to connect to "localhost"; bind to a fixed address instead.
90
+ host: '127.0.0.1',
91
+ port: context.bundlerConfig.port ?? (isWebComponent ? 8888 : 8080),
92
+ },
87
93
  mode: isProduction ? bundleConstants.mode.production : bundleConstants.mode.development,
88
94
  configFile: false,
89
95
  oxc: { legalComments: 'none' },
@@ -102,6 +108,11 @@ export function createBaseConfig(context: ViteBuildContext): InlineConfig {
102
108
  },
103
109
  },
104
110
  define: {
111
+ /*
112
+ * Some dependencies assume Node's `global` exists (webpack polyfills this
113
+ * automatically for browser targets; Vite does not).
114
+ */
115
+ global: 'globalThis',
105
116
  ...importMetaRemap(
106
117
  defineExposedDependencies(context),
107
118
  defineExposedInstanceDependencies(context),
@@ -110,7 +121,12 @@ export function createBaseConfig(context: ViteBuildContext): InlineConfig {
110
121
  ...(getProcessEnv(context) ?? {}),
111
122
  },
112
123
  optimizeDeps: {
113
- include: ['@servicetitan/startup-utils'],
124
+ include: [
125
+ '@servicetitan/startup-utils',
126
+ 'react-refresh/runtime',
127
+ 'react/jsx-runtime',
128
+ 'react/jsx-dev-runtime',
129
+ ],
114
130
  /*
115
131
  * Top-level plugins don't run during dependency pre-bundling, so
116
132
  * register ignoreModulesPlugin again here. Without this, missing
@@ -11,13 +11,24 @@ const SHARED_ASSET_WARNINGS = [
11
11
  ];
12
12
 
13
13
  /*
14
- * Wraps Vite's logger to drop the shared-asset HTML warnings. Everything else passes through.
14
+ * Expected when code feature-detects an optional peer dependency (e.g. `Package.Export
15
+ * === undefined`) and ignoreModulesPlugin has substituted an empty module for it. Matched
16
+ * on the plugin's IGNORE_EMPTY marker so a genuinely undefined export elsewhere still warns.
17
+ */
18
+ const IGNORED_MODULE_WARNINGS = [
19
+ /Import `\w+` will always be undefined because there is no matching export in '\\0IGNORE_EMPTY:[^']+'/,
20
+ ];
21
+
22
+ const SUPPRESSED_WARNINGS = [...SHARED_ASSET_WARNINGS, ...IGNORED_MODULE_WARNINGS];
23
+
24
+ /*
25
+ * Wraps Vite's logger to drop expected warnings. Everything else passes through.
15
26
  */
16
27
  export function createFilteringLogger(): Logger {
17
28
  const logger = createLogger();
18
29
  const { warn, warnOnce } = logger;
19
30
  const isSuppressed = (message: string) =>
20
- SHARED_ASSET_WARNINGS.some(pattern => pattern.test(message));
31
+ SUPPRESSED_WARNINGS.some(pattern => pattern.test(message));
21
32
 
22
33
  logger.warn = (message, options) => {
23
34
  if (!isSuppressed(message)) {
@@ -31,6 +31,7 @@ function createBundlerConfig(
31
31
  svgr: { ...pkgPluginOverrides.svgr, ...filePluginOverrides.svgr },
32
32
  },
33
33
  minify: { ...pkgMinify, ...fileMinify },
34
+ outDir: fileConfig.config?.build?.outDir ?? packageJsonConfig.config?.build?.outDir,
34
35
  };
35
36
  }
36
37
 
@@ -43,12 +43,15 @@ function createDevServerConfig(
43
43
  outputRoot: string
44
44
  ) {
45
45
  const { light, headless, emitExposedDependencies } = viteContext.build;
46
-
46
+ const warmup = finalConfig.server?.warmup;
47
47
  const server = {
48
48
  ...finalConfig.server,
49
49
  warmup: {
50
- clientFiles: getWarmupClientFiles(viteContext, outputRoot),
51
- ...finalConfig.server?.warmup,
50
+ ...warmup,
51
+ clientFiles: [
52
+ ...getWarmupClientFiles(viteContext, outputRoot),
53
+ ...(warmup?.clientFiles ?? []),
54
+ ],
52
55
  },
53
56
  };
54
57
 
@@ -9,7 +9,7 @@
9
9
  <% } %> <% it.css.forEach(function(item) { %>
10
10
  <link href="./<%= item %>" rel="stylesheet" crossorigin="anonymous" />
11
11
  <% }); %> <% it.js.forEach(function(item) { %>
12
- <script src="./<%= item %>"></script>
12
+ <script defer src="./<%= item %>"></script>
13
13
  <% }); %>
14
14
  <script type="text/javascript">
15
15
  <% if (it.isWebComponent) { %>
@@ -25,7 +25,7 @@
25
25
  <% if (it.isWebComponent) { %>
26
26
  import './index';
27
27
  <% } else { %>
28
- import './dist/index';
28
+ import './<%= it.tsOutDir %>/index';
29
29
  <% } %>
30
30
  </script>
31
31
  <% if (it.isWebComponent) { %><<%~ it.name %> /><% } %>
package/src/vite/index.ts CHANGED
@@ -1 +1,3 @@
1
1
  export * from './config/define-config';
2
+ export { lessTildePlugin } from './plugins/less-tilde-plugin';
3
+ export { windowExternalsPlugin, type WindowExternals } from './plugins/window-externals-plugin';
@@ -23,7 +23,7 @@ describe(chainSourceMapsPlugin.name, () => {
23
23
  };
24
24
 
25
25
  test('has correct name', () => {
26
- expect(chainSourceMapsPlugin().name).toBe('chain-source-maps');
26
+ expect(chainSourceMapsPlugin().name).toBe('st:chain-source-maps');
27
27
  });
28
28
 
29
29
  test('returns code with *.js.map sources as absolute paths', () => {
@@ -21,7 +21,7 @@ describe('[startup] cleanPlugin', () => {
21
21
  const plugin = () => cleanPlugin(context);
22
22
 
23
23
  test('returns a plugin named clean', () => {
24
- expect(plugin().name).toBe('clean');
24
+ expect(plugin().name).toBe('st:clean');
25
25
  });
26
26
 
27
27
  test('applies only to build', () => {
@@ -14,7 +14,7 @@ describe(cssInjectorPlugin.name, () => {
14
14
  const subject = () => cssInjectorPlugin(context);
15
15
 
16
16
  test('returns a plugin with correct name', () => {
17
- expect(subject()!.name).toBe('mfe-css-injector');
17
+ expect(subject()!.name).toBe('st:mfe-css-injector');
18
18
  });
19
19
 
20
20
  test('enforces post order', () => {
@@ -17,13 +17,23 @@ describe(designSystemGuardPlugin.name, () => {
17
17
  const subject = () => designSystemGuardPlugin(context);
18
18
 
19
19
  test('creates plugin with correct name', () => {
20
- expect(subject().name).toBe('design-system-guard');
20
+ expect(subject().name).toBe('st:design-system-guard');
21
21
  });
22
22
 
23
23
  test('enforces pre order so it runs before built-in resolvers', () => {
24
24
  expect(subject().enforce).toBe('pre');
25
25
  });
26
26
 
27
+ describe('resolveId filter', () => {
28
+ const subject = () =>
29
+ (designSystemGuardPlugin(context) as { resolveId: { filter: unknown } }).resolveId
30
+ .filter;
31
+
32
+ test('runs the hook only for design-system.css imports', () => {
33
+ expect(subject()).toEqual({ id: /[\\/]design-system\.css$/ });
34
+ });
35
+ });
36
+
27
37
  describe('resolveId', () => {
28
38
  let pluginContext: { error: jest.Mock };
29
39
  let source: string;
@@ -36,8 +46,10 @@ describe(designSystemGuardPlugin.name, () => {
36
46
  });
37
47
 
38
48
  const subject = () => {
39
- const plugin = designSystemGuardPlugin(context);
40
- return (plugin.resolveId as Function).call(pluginContext, source, importer);
49
+ const { resolveId } = designSystemGuardPlugin(context) as {
50
+ resolveId: { handler: Function };
51
+ };
52
+ return resolveId.handler.call(pluginContext, source, importer);
41
53
  };
42
54
 
43
55
  function itReportsNoError() {