@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
@@ -13,12 +13,21 @@ const _types = require("../types");
13
13
  const _runners = require("./runners");
14
14
  function _ts_decorate(decorators, target, key, desc) {
15
15
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
16
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
17
- 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;
16
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
17
+ r = Reflect.decorate(decorators, target, key, desc);
18
+ } else {
19
+ for(var i = decorators.length - 1; i >= 0; i--){
20
+ if (d = decorators[i]) {
21
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
22
+ }
23
+ }
24
+ }
18
25
  return c > 3 && r && Object.defineProperty(target, key, r), r;
19
26
  }
20
- function _ts_metadata(k, v) {
21
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
27
+ function _ts_metadata(metadataKey, metadataValue) {
28
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
29
+ return Reflect.metadata(metadataKey, metadataValue);
30
+ }
22
31
  }
23
32
  class Tests extends _types.Command {
24
33
  async execute() {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/commands/test/tests.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { Config } from '@jest/types';\nimport { getConfiguration, logErrors } from '../../../utils';\nimport type { entry } from '../registry/test-command';\nimport { Command } from '../types';\nimport { Jest, Vitest } from './runners';\n\n/**\n * This class is named \"Tests\" instead of \"Test\" because the corresponding\n * \"test.ts\" would be interpreted as a test file.\n */\nexport class Tests extends Command<typeof entry, Config.Argv> {\n @logErrors\n async execute() {\n const {\n _ = [],\n runner = getConfiguration().testRunner ?? 'jest',\n runnerArgs = [],\n ...restOptions\n } = this.args;\n if (runner === 'jest') {\n await new Jest({ _: [..._, ...runnerArgs], ...restOptions }).run();\n } else if (runner === 'vitest') {\n await new Vitest().run();\n } else {\n throw new Error(`unrecognized runner \"${runner}\"`);\n }\n }\n}\n"],"names":["Tests","Command","execute","getConfiguration","_","runner","testRunner","runnerArgs","restOptions","args","Jest","run","Vitest","Error"],"mappings":"AAAA,uDAAuD;;;;+BAW1CA;;;eAAAA;;;uBAT+B;uBAEpB;yBACK;;;;;;;;;;AAMtB,MAAMA,cAAcC,cAAO;IAC9B,MACMC,UAAU;YAGCC;QAFb,MAAM,EACFC,IAAI,EAAE,EACNC,UAASF,+BAAAA,IAAAA,uBAAgB,IAAGG,UAAU,cAA7BH,0CAAAA,+BAAiC,MAAM,EAChDI,aAAa,EAAE,EACf,GAAGC,aACN,GAAG,IAAI,CAACC,IAAI;QACb,IAAIJ,WAAW,QAAQ;YACnB,MAAM,IAAIK,aAAI,CAAC;gBAAEN,GAAG;uBAAIA;uBAAMG;iBAAW;gBAAE,GAAGC,WAAW;YAAC,GAAGG,GAAG;QACpE,OAAO,IAAIN,WAAW,UAAU;YAC5B,MAAM,IAAIO,eAAM,GAAGD,GAAG;QAC1B,OAAO;YACH,MAAM,IAAIE,MAAM,CAAC,qBAAqB,EAAER,OAAO,CAAC,CAAC;QACrD;IACJ;AACJ"}
1
+ {"version":3,"sources":["../../../../src/cli/commands/test/tests.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/naming-convention */\nimport { Config } from '@jest/types';\nimport { getConfiguration, logErrors } from '../../../utils';\nimport type { entry } from '../registry/test-command';\nimport { Command } from '../types';\nimport { Jest, Vitest } from './runners';\n\n/**\n * This class is named \"Tests\" instead of \"Test\" because the corresponding\n * \"test.ts\" would be interpreted as a test file.\n */\nexport class Tests extends Command<typeof entry, Config.Argv> {\n @logErrors\n async execute() {\n const {\n _ = [],\n runner = getConfiguration().testRunner ?? 'jest',\n runnerArgs = [],\n ...restOptions\n } = this.args;\n if (runner === 'jest') {\n await new Jest({ _: [..._, ...runnerArgs], ...restOptions }).run();\n } else if (runner === 'vitest') {\n await new Vitest().run();\n } else {\n throw new Error(`unrecognized runner \"${runner}\"`);\n }\n }\n}\n"],"names":["Tests","Command","execute","getConfiguration","_","runner","testRunner","runnerArgs","restOptions","args","Jest","run","Vitest","Error"],"mappings":"AAAA,uDAAuD;;;;+BAW1CA;;;eAAAA;;;uBAT+B;uBAEpB;yBACK;;;;;;;;;;;;;;;;;;;AAMtB,MAAMA,cAAcC,cAAO;IAC9B,MACMC,UAAU;YAGCC;QAFb,MAAM,EACFC,IAAI,EAAE,EACNC,UAASF,+BAAAA,IAAAA,uBAAgB,IAAGG,UAAU,cAA7BH,0CAAAA,+BAAiC,MAAM,EAChDI,aAAa,EAAE,EACf,GAAGC,aACN,GAAG,IAAI,CAACC,IAAI;QACb,IAAIJ,WAAW,QAAQ;YACnB,MAAM,IAAIK,aAAI,CAAC;gBAAEN,GAAG;uBAAIA;uBAAMG;iBAAW;gBAAE,GAAGC,WAAW;YAAC,GAAGG,GAAG;QACpE,OAAO,IAAIN,WAAW,UAAU;YAC5B,MAAM,IAAIO,eAAM,GAAGD,GAAG;QAC1B,OAAO;YACH,MAAM,IAAIE,MAAM,CAAC,qBAAqB,EAAER,OAAO,CAAC,CAAC;QACrD;IACJ;AACJ"}
@@ -49,11 +49,6 @@ export interface CommandEntry {
49
49
  allowRunFromGlobal?: boolean;
50
50
  options?: CommandOptions;
51
51
  }
52
- export declare abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {
53
- protected readonly args: InferArgs<NonNullable<T['options']>, U>;
54
- constructor(args: InferArgs<NonNullable<T['options']>, U>);
55
- abstract execute(): Promise<void>;
56
- }
57
52
  export type Newable<T> = new (...args: any[]) => T;
58
- export {};
53
+ export { Command } from './command';
59
54
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;;;;;;;;;GAUG;AACH,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAEtE;;;;;;;;GAQG;AACH,KAAK,mBAAmB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7D,GAAG;KACC,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9D,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,GAAG,OAAO,IAAI,MAAM,CACjE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAC9C,GACG,CAAC,CAAC;AAEN,MAAM,WAAW,YAAY;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,8BAAsB,OAAO,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,EAAE,CAAC,GAAG,OAAO;IAChE,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;gBAA7C,IAAI,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC;IAE5E,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE1D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD;;;;;;;;;;GAUG;AACH,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,KAAK,CAAC;AAEtE;;;;;;;;GAQG;AACH,KAAK,mBAAmB,CAAC,CAAC,IAAI;KACzB,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAC7D,GAAG;KACC,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAC9D,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,SAAS,CAAC,CAAC,SAAS,cAAc,EAAE,CAAC,GAAG,OAAO,IAAI,MAAM,CACjE,mBAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAC9C,GACG,CAAC,CAAC;AAEN,MAAM,WAAW,YAAY;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,CAAC,EAAE,cAAc,CAAC;CAC5B;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;AAEnD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
@@ -5,27 +5,9 @@ Object.defineProperty(exports, "__esModule", {
5
5
  Object.defineProperty(exports, "Command", {
6
6
  enumerable: true,
7
7
  get: function() {
8
- return Command;
8
+ return _command.Command;
9
9
  }
10
10
  });
11
- function _define_property(obj, key, value) {
12
- if (key in obj) {
13
- Object.defineProperty(obj, key, {
14
- value: value,
15
- enumerable: true,
16
- configurable: true,
17
- writable: true
18
- });
19
- } else {
20
- obj[key] = value;
21
- }
22
- return obj;
23
- }
24
- class Command {
25
- constructor(args){
26
- _define_property(this, "args", void 0);
27
- this.args = args;
28
- }
29
- }
11
+ const _command = require("./command");
30
12
 
31
13
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/types.ts"],"sourcesContent":["import type { InferredOptionTypes, Options } from 'yargs';\n\nexport type CommandOptions = Record<string, Options>;\n\n/**\n * Expands a type by resolving any type aliases and intersections into a single object type.\n *\n * This is useful for flattening complex type compositions so their properties are materialized,\n * especially when working with mapped types and conditional types.\n *\n * @template T - The type to expand.\n * @example\n * type Input = { a: string } & { b: number };\n * type Output = Expand<Input>; // { a: string; b: number }\n */\ntype Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;\n\n/**\n * Transforms a type so that properties whose value type includes `undefined`\n * become optional (`?:`), while properties that cannot be `undefined` remain required.\n *\n * @example\n * type Input = { a: string; b: string | undefined; c?: number };\n * type Output = UndefinedToOptional<Input>;\n * // Results in: { a: string; b?: string | undefined; c?: number }\n */\ntype UndefinedToOptional<T> = {\n [K in keyof T as undefined extends T[K] ? never : K]: T[K];\n} & {\n [K in keyof T as undefined extends T[K] ? K : never]?: T[K];\n};\n\n/**\n * Infers the command args type from a yargs options definition object.\n * Makes properties optional unless demandOption is set to true.\n *\n * @example\n * const options = {\n * watch: { boolean: true, description: '...' },\n * outputPath: { string: true, description: '...' },\n * config: { string: true, demandOption: true, description: '...' },\n * } satisfies CommandOptions;\n *\n * type Args = InferArgs<typeof options>;\n * // Results in: { watch?: boolean; outputPath?: string; config: string; }\n */\nexport type InferArgs<T extends CommandOptions, U = unknown> = Expand<\n UndefinedToOptional<InferredOptionTypes<T>>\n> &\n U;\n\nexport interface CommandEntry {\n description?: string;\n greedy?: boolean;\n allowRunFromGlobal?: boolean;\n options?: CommandOptions;\n}\n\nexport abstract class Command<T extends CommandEntry = CommandEntry, U = unknown> {\n constructor(protected readonly args: InferArgs<NonNullable<T['options']>, U>) {}\n\n abstract execute(): Promise<void>;\n}\n\nexport type Newable<T> = new (...args: any[]) => T;\n"],"names":["Command","args"],"mappings":";;;;+BA0DsBA;;;eAAAA;;;;;;;;;;;;;;;;AAAf,MAAeA;IAClB,YAAY,AAAmBC,IAA6C,CAAE;;aAA/CA,OAAAA;IAAgD;AAGnF"}
1
+ {"version":3,"sources":["../../../src/cli/commands/types.ts"],"sourcesContent":["import type { InferredOptionTypes, Options } from 'yargs';\n\nexport type CommandOptions = Record<string, Options>;\n\n/**\n * Expands a type by resolving any type aliases and intersections into a single object type.\n *\n * This is useful for flattening complex type compositions so their properties are materialized,\n * especially when working with mapped types and conditional types.\n *\n * @template T - The type to expand.\n * @example\n * type Input = { a: string } & { b: number };\n * type Output = Expand<Input>; // { a: string; b: number }\n */\ntype Expand<T> = T extends infer O ? { [K in keyof O]: O[K] } : never;\n\n/**\n * Transforms a type so that properties whose value type includes `undefined`\n * become optional (`?:`), while properties that cannot be `undefined` remain required.\n *\n * @example\n * type Input = { a: string; b: string | undefined; c?: number };\n * type Output = UndefinedToOptional<Input>;\n * // Results in: { a: string; b?: string | undefined; c?: number }\n */\ntype UndefinedToOptional<T> = {\n [K in keyof T as undefined extends T[K] ? never : K]: T[K];\n} & {\n [K in keyof T as undefined extends T[K] ? K : never]?: T[K];\n};\n\n/**\n * Infers the command args type from a yargs options definition object.\n * Makes properties optional unless demandOption is set to true.\n *\n * @example\n * const options = {\n * watch: { boolean: true, description: '...' },\n * outputPath: { string: true, description: '...' },\n * config: { string: true, demandOption: true, description: '...' },\n * } satisfies CommandOptions;\n *\n * type Args = InferArgs<typeof options>;\n * // Results in: { watch?: boolean; outputPath?: string; config: string; }\n */\nexport type InferArgs<T extends CommandOptions, U = unknown> = Expand<\n UndefinedToOptional<InferredOptionTypes<T>>\n> &\n U;\n\nexport interface CommandEntry {\n description?: string;\n greedy?: boolean;\n allowRunFromGlobal?: boolean;\n options?: CommandOptions;\n}\n\nexport type Newable<T> = new (...args: any[]) => T;\n\nexport { Command } from './command';\n"],"names":["Command"],"mappings":";;;;+BA4DSA;;;eAAAA,gBAAO;;;yBAAQ"}
@@ -20,15 +20,12 @@ function _check_private_redeclaration(obj, privateCollection) {
20
20
  }
21
21
  }
22
22
  function _class_apply_descriptor_get(receiver, descriptor) {
23
- if (descriptor.get) {
24
- return descriptor.get.call(receiver);
25
- }
23
+ if (descriptor.get) return descriptor.get.call(receiver);
26
24
  return descriptor.value;
27
25
  }
28
26
  function _class_apply_descriptor_set(receiver, descriptor, value) {
29
- if (descriptor.set) {
30
- descriptor.set.call(receiver, value);
31
- } else {
27
+ if (descriptor.set) descriptor.set.call(receiver, value);
28
+ else {
32
29
  if (!descriptor.writable) {
33
30
  throw new TypeError("attempted to set read only private field");
34
31
  }
@@ -36,9 +33,7 @@ function _class_apply_descriptor_set(receiver, descriptor, value) {
36
33
  }
37
34
  }
38
35
  function _class_extract_field_descriptor(receiver, privateMap, action) {
39
- if (!privateMap.has(receiver)) {
40
- throw new TypeError("attempted to " + action + " private field on non-instance");
41
- }
36
+ if (!privateMap.has(receiver)) throw new TypeError("attempted to " + action + " private field on non-instance");
42
37
  return privateMap.get(receiver);
43
38
  }
44
39
  function _class_private_field_get(receiver, privateMap) {
@@ -61,12 +56,21 @@ function _interop_require_default(obj) {
61
56
  }
62
57
  function _ts_decorate(decorators, target, key, desc) {
63
58
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
64
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
65
- 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;
59
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") {
60
+ r = Reflect.decorate(decorators, target, key, desc);
61
+ } else {
62
+ for(var i = decorators.length - 1; i >= 0; i--){
63
+ if (d = decorators[i]) {
64
+ r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
65
+ }
66
+ }
67
+ }
66
68
  return c > 3 && r && Object.defineProperty(target, key, r), r;
67
69
  }
68
- function _ts_metadata(k, v) {
69
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
70
+ function _ts_metadata(metadataKey, metadataValue) {
71
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") {
72
+ return Reflect.metadata(metadataKey, metadataValue);
73
+ }
70
74
  }
71
75
  var _outDir = /*#__PURE__*/ new WeakMap(), _packageJson = /*#__PURE__*/ new WeakMap();
72
76
  class UploadSourcemaps extends _types.Command {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"sourcesContent":["import { isCI } from '@servicetitan/install';\nimport { execSync } from 'child_process';\nimport path from 'path';\nimport { getTsConfig, isWebComponent, log, logErrors, readJson } from '../../utils';\nimport { TSConfig } from '../utils';\nimport type { entry } from './registry/upload-sourcemaps';\nimport { Command } from './types';\n\ninterface PackageJson {\n name: string;\n}\n\nexport class UploadSourcemaps extends Command<typeof entry> {\n #outDir?: string;\n #packageJson?: PackageJson;\n\n @logErrors\n // eslint-disable-next-line @typescript-eslint/require-await\n async execute() {\n this.checkLocation();\n if (!this.checkArgs()) {\n return;\n }\n\n const bundleDir = this.getBundleDir();\n const options = this.getOptions().join(' ');\n this.run(`npx --yes @datadog/datadog-ci@3 sourcemaps upload ${bundleDir} ${options}`);\n }\n\n private checkArgs() {\n if (!process.env.DATADOG_API_KEY) {\n const message = 'DATADOG_API_KEY environment variable is not set';\n if (!isCI()) {\n throw new Error(message);\n }\n log.warning(`${message}; skipping sourcemaps`);\n return false;\n }\n\n return true;\n }\n\n private checkLocation() {\n if (!isWebComponent()) {\n throw new Error(`this command must be run inside a web-component directory`);\n }\n }\n\n private getBundleDir() {\n return path.relative('.', path.join(this.getOutDir(), 'bundle'));\n }\n\n private getMinifiedPrefixPath() {\n const { name } = this.getPackageJson();\n const baseUrl = `https://unpkg.servicetitan.com/${name}@${this.args.releaseVersion}`;\n return `${baseUrl}/${this.getBundleDir().replace(/\\\\/g, '/')}`;\n }\n\n private getOptions() {\n const { dry, releaseVersion } = this.args;\n const service = this.getPackageJson().name.replace(/^[^/]+\\//, '');\n return [\n ...[dry && `--dry-run`],\n `--service=${service}`,\n `--release-version=${releaseVersion}`,\n `--minified-path-prefix=${this.getMinifiedPrefixPath()}`,\n `--project-path=${this.getProjectPath()}`,\n ].filter(item => !!item) as string[];\n }\n\n private getOutDir() {\n if (!this.#outDir) {\n const outDir = new TSConfig(getTsConfig()).getValue<string>('compilerOptions.outDir');\n if (!outDir) {\n throw new Error('compilerOptions.outDir is not configured');\n }\n\n this.#outDir = outDir;\n }\n return this.#outDir;\n }\n\n private getPackageJson() {\n if (!this.#packageJson) {\n this.#packageJson = readJson<PackageJson>('package.json');\n }\n return this.#packageJson;\n }\n\n private getProjectPath() {\n const name = readJson(path.join(this.getOutDir(), 'metadata.json')).name;\n return `${name}/`;\n }\n\n private run(command: string) {\n log.info(`Running: ${command}`);\n return execSync(command, { stdio: 'inherit' });\n }\n}\n"],"names":["UploadSourcemaps","Command","execute","checkLocation","checkArgs","bundleDir","getBundleDir","options","getOptions","join","run","process","env","DATADOG_API_KEY","message","isCI","Error","log","warning","isWebComponent","path","relative","getOutDir","getMinifiedPrefixPath","name","getPackageJson","baseUrl","args","releaseVersion","replace","dry","service","getProjectPath","filter","item","outDir","TSConfig","getTsConfig","getValue","readJson","command","info","execSync","stdio"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/cli/commands/upload-sourcemaps.ts"],"sourcesContent":["import { isCI } from '@servicetitan/install';\nimport { execSync } from 'child_process';\nimport path from 'path';\nimport { getTsConfig, isWebComponent, log, logErrors, readJson } from '../../utils';\nimport { TSConfig } from '../utils';\nimport type { entry } from './registry/upload-sourcemaps';\nimport { Command } from './types';\n\ninterface PackageJson {\n name: string;\n}\n\nexport class UploadSourcemaps extends Command<typeof entry> {\n #outDir?: string;\n #packageJson?: PackageJson;\n\n @logErrors\n // eslint-disable-next-line @typescript-eslint/require-await\n async execute() {\n this.checkLocation();\n if (!this.checkArgs()) {\n return;\n }\n\n const bundleDir = this.getBundleDir();\n const options = this.getOptions().join(' ');\n this.run(`npx --yes @datadog/datadog-ci@3 sourcemaps upload ${bundleDir} ${options}`);\n }\n\n private checkArgs() {\n if (!process.env.DATADOG_API_KEY) {\n const message = 'DATADOG_API_KEY environment variable is not set';\n if (!isCI()) {\n throw new Error(message);\n }\n log.warning(`${message}; skipping sourcemaps`);\n return false;\n }\n\n return true;\n }\n\n private checkLocation() {\n if (!isWebComponent()) {\n throw new Error(`this command must be run inside a web-component directory`);\n }\n }\n\n private getBundleDir() {\n return path.relative('.', path.join(this.getOutDir(), 'bundle'));\n }\n\n private getMinifiedPrefixPath() {\n const { name } = this.getPackageJson();\n const baseUrl = `https://unpkg.servicetitan.com/${name}@${this.args.releaseVersion}`;\n return `${baseUrl}/${this.getBundleDir().replace(/\\\\/g, '/')}`;\n }\n\n private getOptions() {\n const { dry, releaseVersion } = this.args;\n const service = this.getPackageJson().name.replace(/^[^/]+\\//, '');\n return [\n ...[dry && `--dry-run`],\n `--service=${service}`,\n `--release-version=${releaseVersion}`,\n `--minified-path-prefix=${this.getMinifiedPrefixPath()}`,\n `--project-path=${this.getProjectPath()}`,\n ].filter(item => !!item) as string[];\n }\n\n private getOutDir() {\n if (!this.#outDir) {\n const outDir = new TSConfig(getTsConfig()).getValue<string>('compilerOptions.outDir');\n if (!outDir) {\n throw new Error('compilerOptions.outDir is not configured');\n }\n\n this.#outDir = outDir;\n }\n return this.#outDir;\n }\n\n private getPackageJson() {\n if (!this.#packageJson) {\n this.#packageJson = readJson<PackageJson>('package.json');\n }\n return this.#packageJson;\n }\n\n private getProjectPath() {\n const name = readJson(path.join(this.getOutDir(), 'metadata.json')).name;\n return `${name}/`;\n }\n\n private run(command: string) {\n log.info(`Running: ${command}`);\n return execSync(command, { stdio: 'inherit' });\n }\n}\n"],"names":["UploadSourcemaps","Command","execute","checkLocation","checkArgs","bundleDir","getBundleDir","options","getOptions","join","run","process","env","DATADOG_API_KEY","message","isCI","Error","log","warning","isWebComponent","path","relative","getOutDir","getMinifiedPrefixPath","name","getPackageJson","baseUrl","args","releaseVersion","replace","dry","service","getProjectPath","filter","item","outDir","TSConfig","getTsConfig","getValue","readJson","command","info","execSync","stdio"],"mappings":"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"}
package/dist/cli/index.js CHANGED
@@ -63,6 +63,7 @@ async function handleCommand(name, argv) {
63
63
  ...argv,
64
64
  _: argv._.slice(1)
65
65
  });
66
+ command.watchForParentExit(name);
66
67
  command.execute().catch(()=>{
67
68
  process.exit(1);
68
69
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["import chalk from 'chalk';\nimport execa from 'execa';\nimport kebabCase from 'lodash.kebabcase';\nimport path from 'path';\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { getStartupVersion } from '../core';\nimport { CommandName, log } from '../utils';\nimport { commandRegistry } from './commands/registry';\nimport type { CommandOptions } from './commands/types';\nimport { checkStartupLocation, getExitCode, setNodeOptions } from './utils';\n\nconst yargsInstance = yargs(hideBin(process.argv));\n\nObject.values(CommandName)\n .reduce((y, name) => addCommand(name, y), yargsInstance)\n .usage('Usage: startup <command> [options]')\n .epilogue(\n chalk.bold.cyan(`startup cli v${getStartupVersion()}\\n`) +\n `Run ${chalk.bold.cyan('startup <command> --help')} to see command options.\\n` +\n `For detailed documentation, see ${chalk.bold.cyan('https://docs.st.dev/docs/frontend/uikit/startup')}.\\n`\n )\n .demandCommand(1, '')\n .strictCommands()\n .updateStrings({\n 'Unknown command: %s': {\n one: chalk.bold.red('Unknown command: %s'),\n other: chalk.bold.red('Unknown command: %s'),\n } as any,\n })\n .version()\n .wrap(Math.min(100, yargsInstance.terminalWidth()))\n .help()\n .parse();\n\nfunction addCommand(name: CommandName, y: typeof yargs) {\n const entry = commandRegistry[name];\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { description, options: { _, ...options } = {} } = entry;\n const nameWithArgs = name + (_?.description ? ` ${_.description}` : '');\n const groupedOptions = Object.entries(options).reduce((result, [key, value]) => {\n result[kebabCase(key)] = { group: 'Command Options:', ...value };\n return result;\n }, {} as CommandOptions);\n const handler = (argv: any) => handleCommand(name, argv);\n if (description) {\n y.command(nameWithArgs, description, groupedOptions, handler);\n } else {\n y.command(nameWithArgs, false, groupedOptions, handler);\n }\n return y;\n}\n\nasync function handleCommand(name: CommandName, argv: any) {\n const entry = commandRegistry[name];\n\n checkNodeVersion();\n checkStartupLocation(name, entry);\n\n if (setNodeOptions(name, entry)) {\n log.debug('run', `Running ${name} in child process with amended NODE_OPTIONS`);\n execa(process.argv[0], process.argv.slice(1), { stdio: 'inherit' }).catch(reason => {\n process.exit(getExitCode(reason));\n });\n return;\n }\n\n const CommandClass = await entry.load();\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const command = new CommandClass({ ...argv, _: argv._.slice(1) });\n command.execute().catch(() => {\n process.exit(1);\n });\n}\n\nfunction checkNodeVersion() {\n const nodeVersion = Number(process.versions.node.split('.')[0]);\n if (nodeVersion % 2 === 0 || process.env.SKIP_NODE_VERSION_CHECK) {\n return;\n }\n\n const { engines } = require(path.join(__dirname, '../../package.json'));\n log.error(\n `error: node v${nodeVersion} detected, only even-numbered LTS versions ${engines.node} are supported`\n );\n log.text('See https://nodejs.org/en/download for LTS versions');\n process.exit(1);\n}\n"],"names":["yargsInstance","yargs","hideBin","process","argv","Object","values","CommandName","reduce","y","name","addCommand","usage","epilogue","chalk","bold","cyan","getStartupVersion","demandCommand","strictCommands","updateStrings","one","red","other","version","wrap","Math","min","terminalWidth","help","parse","entry","commandRegistry","description","options","_","nameWithArgs","groupedOptions","entries","result","key","value","kebabCase","group","handler","handleCommand","command","checkNodeVersion","checkStartupLocation","setNodeOptions","log","debug","execa","slice","stdio","catch","reason","exit","getExitCode","CommandClass","load","execute","nodeVersion","Number","versions","node","split","env","SKIP_NODE_VERSION_CHECK","engines","require","path","join","__dirname","error","text"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/cli/index.ts"],"sourcesContent":["import chalk from 'chalk';\nimport execa from 'execa';\nimport kebabCase from 'lodash.kebabcase';\nimport path from 'path';\nimport yargs from 'yargs';\nimport { hideBin } from 'yargs/helpers';\nimport { getStartupVersion } from '../core';\nimport { CommandName, log } from '../utils';\nimport { commandRegistry } from './commands/registry';\nimport type { CommandOptions } from './commands/types';\nimport { checkStartupLocation, getExitCode, setNodeOptions } from './utils';\n\nconst yargsInstance = yargs(hideBin(process.argv));\n\nObject.values(CommandName)\n .reduce((y, name) => addCommand(name, y), yargsInstance)\n .usage('Usage: startup <command> [options]')\n .epilogue(\n chalk.bold.cyan(`startup cli v${getStartupVersion()}\\n`) +\n `Run ${chalk.bold.cyan('startup <command> --help')} to see command options.\\n` +\n `For detailed documentation, see ${chalk.bold.cyan('https://docs.st.dev/docs/frontend/uikit/startup')}.\\n`\n )\n .demandCommand(1, '')\n .strictCommands()\n .updateStrings({\n 'Unknown command: %s': {\n one: chalk.bold.red('Unknown command: %s'),\n other: chalk.bold.red('Unknown command: %s'),\n } as any,\n })\n .version()\n .wrap(Math.min(100, yargsInstance.terminalWidth()))\n .help()\n .parse();\n\nfunction addCommand(name: CommandName, y: typeof yargs) {\n const entry = commandRegistry[name];\n\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const { description, options: { _, ...options } = {} } = entry;\n const nameWithArgs = name + (_?.description ? ` ${_.description}` : '');\n const groupedOptions = Object.entries(options).reduce((result, [key, value]) => {\n result[kebabCase(key)] = { group: 'Command Options:', ...value };\n return result;\n }, {} as CommandOptions);\n const handler = (argv: any) => handleCommand(name, argv);\n if (description) {\n y.command(nameWithArgs, description, groupedOptions, handler);\n } else {\n y.command(nameWithArgs, false, groupedOptions, handler);\n }\n return y;\n}\n\nasync function handleCommand(name: CommandName, argv: any) {\n const entry = commandRegistry[name];\n\n checkNodeVersion();\n checkStartupLocation(name, entry);\n\n if (setNodeOptions(name, entry)) {\n log.debug('run', `Running ${name} in child process with amended NODE_OPTIONS`);\n execa(process.argv[0], process.argv.slice(1), { stdio: 'inherit' }).catch(reason => {\n process.exit(getExitCode(reason));\n });\n return;\n }\n\n const CommandClass = await entry.load();\n // eslint-disable-next-line @typescript-eslint/naming-convention\n const command = new CommandClass({ ...argv, _: argv._.slice(1) });\n\n command.watchForParentExit(name);\n\n command.execute().catch(() => {\n process.exit(1);\n });\n}\n\nfunction checkNodeVersion() {\n const nodeVersion = Number(process.versions.node.split('.')[0]);\n if (nodeVersion % 2 === 0 || process.env.SKIP_NODE_VERSION_CHECK) {\n return;\n }\n\n const { engines } = require(path.join(__dirname, '../../package.json'));\n log.error(\n `error: node v${nodeVersion} detected, only even-numbered LTS versions ${engines.node} are supported`\n );\n log.text('See https://nodejs.org/en/download for LTS versions');\n process.exit(1);\n}\n"],"names":["yargsInstance","yargs","hideBin","process","argv","Object","values","CommandName","reduce","y","name","addCommand","usage","epilogue","chalk","bold","cyan","getStartupVersion","demandCommand","strictCommands","updateStrings","one","red","other","version","wrap","Math","min","terminalWidth","help","parse","entry","commandRegistry","description","options","_","nameWithArgs","groupedOptions","entries","result","key","value","kebabCase","group","handler","handleCommand","command","checkNodeVersion","checkStartupLocation","setNodeOptions","log","debug","execa","slice","stdio","catch","reason","exit","getExitCode","CommandClass","load","watchForParentExit","execute","nodeVersion","Number","versions","node","split","env","SKIP_NODE_VERSION_CHECK","engines","require","path","join","__dirname","error","text"],"mappings":"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"}
@@ -10,6 +10,9 @@ export interface CliTaskParameters extends TaskParameters {
10
10
  export declare abstract class CliTask extends Task {
11
11
  private readonly indicators;
12
12
  constructor({ indicators, ...rest }: CliTaskParameters);
13
+ watchForParentExit(): void;
13
14
  protected runChildProcess(command: string, args: string[]): Promise<void>;
15
+ private forwardSignalToChild;
16
+ private killOnParentExit;
14
17
  }
15
18
  //# sourceMappingURL=cli-task.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cli-task.d.ts","sourceRoot":"","sources":["../../../src/cli/tasks/cli-task.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE9C,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACrD,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED,8BAAsB,OAAQ,SAAQ,IAAI;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB;cAKtC,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;CAmClE"}
1
+ {"version":3,"file":"cli-task.d.ts","sourceRoot":"","sources":["../../../src/cli/tasks/cli-task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AAE9C,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACrD,UAAU,EAAE,UAAU,CAAC;CAC1B;AAED,8BAAsB,OAAQ,SAAQ,IAAI;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,EAAE,UAAU,EAAE,GAAG,IAAI,EAAE,EAAE,iBAAiB;IAKtD,kBAAkB,IAAI,IAAI;cAIV,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE;IA6C/D,OAAO,CAAC,oBAAoB;IAkB5B,OAAO,CAAC,gBAAgB;CAQ3B"}
@@ -9,7 +9,8 @@ Object.defineProperty(exports, "CliTask", {
9
9
  }
10
10
  });
11
11
  const _execa = /*#__PURE__*/ _interop_require_default(require("execa"));
12
- const _utils = require("../utils");
12
+ const _utils = require("../../utils");
13
+ const _utils1 = require("../utils");
13
14
  const _task = require("./task");
14
15
  function _define_property(obj, key, value) {
15
16
  if (key in obj) {
@@ -19,9 +20,7 @@ function _define_property(obj, key, value) {
19
20
  configurable: true,
20
21
  writable: true
21
22
  });
22
- } else {
23
- obj[key] = value;
24
- }
23
+ } else obj[key] = value;
25
24
  return obj;
26
25
  }
27
26
  function _interop_require_default(obj) {
@@ -30,13 +29,20 @@ function _interop_require_default(obj) {
30
29
  };
31
30
  }
32
31
  class CliTask extends _task.Task {
32
+ watchForParentExit() {
33
+ // No-op: this task exits automatically when its child process ends
34
+ }
33
35
  async runChildProcess(command, args) {
34
36
  const childProcess = (0, _execa.default)(command, args, this.watch ? {
35
37
  stdio: [
36
38
  'inherit',
37
39
  'pipe',
38
40
  'inherit'
39
- ]
41
+ ],
42
+ /*
43
+ * Put the child in its own process group so we can take down bin
44
+ * wrappers that fork children of their own. Not needed on Windows.
45
+ */ detached: process.platform !== 'win32'
40
46
  } : {
41
47
  stdio: 'inherit'
42
48
  });
@@ -48,18 +54,44 @@ class CliTask extends _task.Task {
48
54
  }
49
55
  return;
50
56
  }
51
- (0, _utils.pipeStdout)(childProcess);
52
- (0, _utils.watchStdout)(childProcess, this.indicators.watchStart, ()=>{
57
+ (0, _utils1.pipeStdout)(childProcess);
58
+ (0, _utils1.watchStdout)(childProcess, this.indicators.watchStart, ()=>{
53
59
  this.taskTimer.start();
54
60
  });
55
- (0, _utils.watchStdout)(childProcess, this.indicators.end, ()=>{
61
+ (0, _utils1.watchStdout)(childProcess, this.indicators.end, ()=>{
56
62
  this.logCompletionResults(this.taskTimer.end());
57
63
  });
58
- (0, _utils.watchStdout)(childProcess, this.indicators.watchEnd, ()=>{
64
+ (0, _utils1.watchStdout)(childProcess, this.indicators.watchEnd, ()=>{
59
65
  this.logCompletionResults(this.taskTimer.end());
60
66
  });
67
+ this.killOnParentExit(childProcess);
68
+ // Forward CTRL-C when signalled, rather than wait for killOnParentExit's slower poll.
69
+ this.forwardSignalToChild(childProcess);
61
70
  await childProcess;
62
71
  }
72
+ forwardSignalToChild(childProcess) {
73
+ if (process.platform === 'win32') {
74
+ return;
75
+ }
76
+ const forward = (signal)=>{
77
+ if (childProcess.pid) {
78
+ _utils.log.info(`${this.name} forwarding signal to child process tree`);
79
+ (0, _utils1.killProcessTree)(childProcess.pid, signal);
80
+ }
81
+ // Re-raise to get Node's default behavior
82
+ process.kill(process.pid, signal);
83
+ };
84
+ process.once('SIGINT', ()=>forward('SIGINT'));
85
+ process.once('SIGTERM', ()=>forward('SIGTERM'));
86
+ }
87
+ killOnParentExit(childProcess) {
88
+ (0, _utils.exitWhenParentExits)(this.name, ()=>{
89
+ if (childProcess.pid) {
90
+ _utils.log.info(`${this.name} killing child process tree`);
91
+ (0, _utils1.killProcessTree)(childProcess.pid);
92
+ }
93
+ });
94
+ }
63
95
  constructor({ indicators, ...rest }){
64
96
  super(rest), _define_property(this, "indicators", void 0);
65
97
  this.indicators = indicators;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/cli/tasks/cli-task.ts"],"sourcesContent":["import execa from 'execa';\nimport { pipeStdout, watchStdout } from '../utils';\nimport { Task, TaskParameters } from './task';\n\nexport interface Indicators {\n end: string;\n watchStart: string;\n watchEnd?: string;\n}\n\nexport interface CliTaskParameters extends TaskParameters {\n indicators: Indicators;\n}\n\nexport abstract class CliTask extends Task {\n private readonly indicators: Indicators;\n\n constructor({ indicators, ...rest }: CliTaskParameters) {\n super(rest);\n this.indicators = indicators;\n }\n\n protected async runChildProcess(command: string, args: string[]) {\n const childProcess = execa(\n command,\n args,\n this.watch\n ? {\n stdio: ['inherit', 'pipe', 'inherit'],\n }\n : {\n stdio: 'inherit',\n }\n );\n\n if (!this.watch) {\n try {\n await childProcess;\n } finally {\n this.logCompletionResults(this.taskTimer.end());\n }\n return;\n }\n\n pipeStdout(childProcess);\n watchStdout(childProcess, this.indicators.watchStart, () => {\n this.taskTimer.start();\n });\n watchStdout(childProcess, this.indicators.end, () => {\n this.logCompletionResults(this.taskTimer.end());\n });\n watchStdout(childProcess, this.indicators.watchEnd, () => {\n this.logCompletionResults(this.taskTimer.end());\n });\n\n await childProcess;\n }\n}\n"],"names":["CliTask","Task","runChildProcess","command","args","childProcess","execa","watch","stdio","logCompletionResults","taskTimer","end","pipeStdout","watchStdout","indicators","watchStart","start","watchEnd","rest"],"mappings":";;;;+BAcsBA;;;eAAAA;;;8DAdJ;uBACsB;sBACH;;;;;;;;;;;;;;;;;;;AAY9B,MAAeA,gBAAgBC,UAAI;IAQtC,MAAgBC,gBAAgBC,OAAe,EAAEC,IAAc,EAAE;QAC7D,MAAMC,eAAeC,IAAAA,cAAK,EACtBH,SACAC,MACA,IAAI,CAACG,KAAK,GACJ;YACIC,OAAO;gBAAC;gBAAW;gBAAQ;aAAU;QACzC,IACA;YACIA,OAAO;QACX;QAGV,IAAI,CAAC,IAAI,CAACD,KAAK,EAAE;YACb,IAAI;gBACA,MAAMF;YACV,SAAU;gBACN,IAAI,CAACI,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;YAChD;YACA;QACJ;QAEAC,IAAAA,iBAAU,EAACP;QACXQ,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACC,UAAU,EAAE;YAClD,IAAI,CAACL,SAAS,CAACM,KAAK;QACxB;QACAH,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACH,GAAG,EAAE;YAC3C,IAAI,CAACF,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;QAChD;QACAE,IAAAA,kBAAW,EAACR,cAAc,IAAI,CAACS,UAAU,CAACG,QAAQ,EAAE;YAChD,IAAI,CAACR,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;QAChD;QAEA,MAAMN;IACV;IAvCA,YAAY,EAAES,UAAU,EAAE,GAAGI,MAAyB,CAAE;QACpD,KAAK,CAACA,OAHV,uBAAiBJ,cAAjB,KAAA;QAII,IAAI,CAACA,UAAU,GAAGA;IACtB;AAqCJ"}
1
+ {"version":3,"sources":["../../../src/cli/tasks/cli-task.ts"],"sourcesContent":["import execa, { ExecaChildProcess } from 'execa';\nimport { exitWhenParentExits, log } from '../../utils';\nimport { killProcessTree, pipeStdout, watchStdout } from '../utils';\nimport { Task, TaskParameters } from './task';\n\nexport interface Indicators {\n end: string;\n watchStart: string;\n watchEnd?: string;\n}\n\nexport interface CliTaskParameters extends TaskParameters {\n indicators: Indicators;\n}\n\nexport abstract class CliTask extends Task {\n private readonly indicators: Indicators;\n\n constructor({ indicators, ...rest }: CliTaskParameters) {\n super(rest);\n this.indicators = indicators;\n }\n\n watchForParentExit(): void {\n // No-op: this task exits automatically when its child process ends\n }\n\n protected async runChildProcess(command: string, args: string[]) {\n const childProcess = execa(\n command,\n args,\n this.watch\n ? {\n stdio: ['inherit', 'pipe', 'inherit'],\n /*\n * Put the child in its own process group so we can take down bin\n * wrappers that fork children of their own. Not needed on Windows.\n */\n detached: process.platform !== 'win32',\n }\n : {\n stdio: 'inherit',\n }\n );\n\n if (!this.watch) {\n try {\n await childProcess;\n } finally {\n this.logCompletionResults(this.taskTimer.end());\n }\n return;\n }\n\n pipeStdout(childProcess);\n watchStdout(childProcess, this.indicators.watchStart, () => {\n this.taskTimer.start();\n });\n watchStdout(childProcess, this.indicators.end, () => {\n this.logCompletionResults(this.taskTimer.end());\n });\n watchStdout(childProcess, this.indicators.watchEnd, () => {\n this.logCompletionResults(this.taskTimer.end());\n });\n\n this.killOnParentExit(childProcess);\n // Forward CTRL-C when signalled, rather than wait for killOnParentExit's slower poll.\n this.forwardSignalToChild(childProcess);\n\n await childProcess;\n }\n\n private forwardSignalToChild(childProcess: ExecaChildProcess) {\n if (process.platform === 'win32') {\n return;\n }\n\n const forward = (signal: NodeJS.Signals) => {\n if (childProcess.pid) {\n log.info(`${this.name} forwarding signal to child process tree`);\n killProcessTree(childProcess.pid, signal);\n }\n // Re-raise to get Node's default behavior\n process.kill(process.pid, signal);\n };\n\n process.once('SIGINT', () => forward('SIGINT'));\n process.once('SIGTERM', () => forward('SIGTERM'));\n }\n\n private killOnParentExit(childProcess: ExecaChildProcess) {\n exitWhenParentExits(this.name, () => {\n if (childProcess.pid) {\n log.info(`${this.name} killing child process tree`);\n killProcessTree(childProcess.pid);\n }\n });\n }\n}\n"],"names":["CliTask","Task","watchForParentExit","runChildProcess","command","args","childProcess","execa","watch","stdio","detached","process","platform","logCompletionResults","taskTimer","end","pipeStdout","watchStdout","indicators","watchStart","start","watchEnd","killOnParentExit","forwardSignalToChild","forward","signal","pid","log","info","name","killProcessTree","kill","once","exitWhenParentExits","rest"],"mappings":";;;;+BAesBA;;;eAAAA;;;8DAfmB;uBACA;wBACgB;sBACpB;;;;;;;;;;;;;;;;;AAY9B,MAAeA,gBAAgBC,UAAI;IAQtCC,qBAA2B;IACvB,mEAAmE;IACvE;IAEA,MAAgBC,gBAAgBC,OAAe,EAAEC,IAAc,EAAE;QAC7D,MAAMC,eAAeC,IAAAA,cAAK,EACtBH,SACAC,MACA,IAAI,CAACG,KAAK,GACJ;YACIC,OAAO;gBAAC;gBAAW;gBAAQ;aAAU;YACrC;;;uBAGC,GACDC,UAAUC,QAAQC,QAAQ,KAAK;QACnC,IACA;YACIH,OAAO;QACX;QAGV,IAAI,CAAC,IAAI,CAACD,KAAK,EAAE;YACb,IAAI;gBACA,MAAMF;YACV,SAAU;gBACN,IAAI,CAACO,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;YAChD;YACA;QACJ;QAEAC,IAAAA,kBAAU,EAACV;QACXW,IAAAA,mBAAW,EAACX,cAAc,IAAI,CAACY,UAAU,CAACC,UAAU,EAAE;YAClD,IAAI,CAACL,SAAS,CAACM,KAAK;QACxB;QACAH,IAAAA,mBAAW,EAACX,cAAc,IAAI,CAACY,UAAU,CAACH,GAAG,EAAE;YAC3C,IAAI,CAACF,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;QAChD;QACAE,IAAAA,mBAAW,EAACX,cAAc,IAAI,CAACY,UAAU,CAACG,QAAQ,EAAE;YAChD,IAAI,CAACR,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG;QAChD;QAEA,IAAI,CAACO,gBAAgB,CAAChB;QACtB,sFAAsF;QACtF,IAAI,CAACiB,oBAAoB,CAACjB;QAE1B,MAAMA;IACV;IAEQiB,qBAAqBjB,YAA+B,EAAE;QAC1D,IAAIK,QAAQC,QAAQ,KAAK,SAAS;YAC9B;QACJ;QAEA,MAAMY,UAAU,CAACC;YACb,IAAInB,aAAaoB,GAAG,EAAE;gBAClBC,UAAG,CAACC,IAAI,CAAC,GAAG,IAAI,CAACC,IAAI,CAAC,wCAAwC,CAAC;gBAC/DC,IAAAA,uBAAe,EAACxB,aAAaoB,GAAG,EAAED;YACtC;YACA,0CAA0C;YAC1Cd,QAAQoB,IAAI,CAACpB,QAAQe,GAAG,EAAED;QAC9B;QAEAd,QAAQqB,IAAI,CAAC,UAAU,IAAMR,QAAQ;QACrCb,QAAQqB,IAAI,CAAC,WAAW,IAAMR,QAAQ;IAC1C;IAEQF,iBAAiBhB,YAA+B,EAAE;QACtD2B,IAAAA,0BAAmB,EAAC,IAAI,CAACJ,IAAI,EAAE;YAC3B,IAAIvB,aAAaoB,GAAG,EAAE;gBAClBC,UAAG,CAACC,IAAI,CAAC,GAAG,IAAI,CAACC,IAAI,CAAC,2BAA2B,CAAC;gBAClDC,IAAAA,uBAAe,EAACxB,aAAaoB,GAAG;YACpC;QACJ;IACJ;IA/EA,YAAY,EAAER,UAAU,EAAE,GAAGgB,MAAyB,CAAE;QACpD,KAAK,CAACA,OAHV,uBAAiBhB,cAAjB,KAAA;QAII,IAAI,CAACA,UAAU,GAAGA;IACtB;AA6EJ"}
@@ -1,5 +1,7 @@
1
1
  import { TSConfig } from '../../utils';
2
- export declare function getSwcOptions(tsConfig: TSConfig): {
2
+ export declare function getSwcOptions(tsConfig: TSConfig, { reactRefresh }?: {
3
+ reactRefresh?: boolean | undefined;
4
+ }): {
3
5
  jsc: {
4
6
  parser: {
5
7
  syntax: "typescript";
@@ -7,11 +9,17 @@ export declare function getSwcOptions(tsConfig: TSConfig): {
7
9
  decorators: true;
8
10
  };
9
11
  target: import("@swc/types").JscTarget | undefined;
12
+ baseUrl: string | undefined;
13
+ paths: {
14
+ [from: string]: string[];
15
+ } | undefined;
10
16
  transform: {
11
17
  legacyDecorator: boolean | undefined;
12
18
  decoratorMetadata: boolean | undefined;
13
19
  react: {
14
20
  runtime: "automatic";
21
+ refresh: boolean;
22
+ development: boolean;
15
23
  };
16
24
  };
17
25
  };
@@ -1 +1 @@
1
- {"version":3,"file":"get-swc-options.d.ts","sourceRoot":"","sources":["../../../../src/cli/tasks/swc-compile-package/get-swc-options.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ;;;;;;;;;;;;;;;;;;;;EA4B/C"}
1
+ {"version":3,"file":"get-swc-options.d.ts","sourceRoot":"","sources":["../../../../src/cli/tasks/swc-compile-package/get-swc-options.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIvC,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,YAAoB,EAAE;;CAAK;;;;;;;;;;;;;;;;;;;;;;;;;;EAwC9E"}
@@ -8,13 +8,25 @@ Object.defineProperty(exports, "getSwcOptions", {
8
8
  return getSwcOptions;
9
9
  }
10
10
  });
11
- function getSwcOptions(tsConfig) {
11
+ const _path = /*#__PURE__*/ _interop_require_default(require("path"));
12
+ function _interop_require_default(obj) {
13
+ return obj && obj.__esModule ? obj : {
14
+ default: obj
15
+ };
16
+ }
17
+ function getSwcOptions(tsConfig, { reactRefresh = false } = {}) {
12
18
  var _tsConfig_getValue;
13
19
  const target = tsConfig.getValue('compilerOptions.target');
14
20
  const legacyDecorator = tsConfig.getValue('compilerOptions.experimentalDecorators');
15
21
  const decoratorMetadata = tsConfig.getValue('compilerOptions.emitDecoratorMetadata');
16
22
  const sourceMaps = tsConfig.getValue('compilerOptions.sourceMap');
17
23
  const module = (_tsConfig_getValue = tsConfig.getValue('compilerOptions.module')) === null || _tsConfig_getValue === void 0 ? void 0 : _tsConfig_getValue.toLowerCase();
24
+ const paths = tsConfig.getValue('compilerOptions.paths');
25
+ /*
26
+ * `compilerOptions.baseUrl` is deprecated in TypeScript, so it's not read here.
27
+ * TS resolves `paths` relative to the tsconfig directory; SWC requires an
28
+ * absolute `jsc.baseUrl` whenever `jsc.paths` is set.
29
+ */ const baseUrl = paths !== undefined ? _path.default.resolve(_path.default.dirname(tsConfig.configPath)) : undefined;
18
30
  return {
19
31
  jsc: {
20
32
  parser: {
@@ -23,11 +35,15 @@ function getSwcOptions(tsConfig) {
23
35
  decorators: true
24
36
  },
25
37
  target,
38
+ baseUrl,
39
+ paths,
26
40
  transform: {
27
41
  legacyDecorator,
28
42
  decoratorMetadata,
29
43
  react: {
30
- runtime: 'automatic'
44
+ runtime: 'automatic',
45
+ refresh: reactRefresh,
46
+ development: reactRefresh
31
47
  }
32
48
  }
33
49
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/tasks/swc-compile-package/get-swc-options.ts"],"sourcesContent":["import type { SwcOptions } from '@swc/cli';\nimport { TSConfig } from '../../utils';\n\ntype JscConfig = NonNullable<SwcOptions['jsc']>;\n\nexport function getSwcOptions(tsConfig: TSConfig) {\n const target = tsConfig.getValue<JscConfig['target']>('compilerOptions.target');\n const legacyDecorator = tsConfig.getValue<boolean>('compilerOptions.experimentalDecorators');\n const decoratorMetadata = tsConfig.getValue<boolean>('compilerOptions.emitDecoratorMetadata');\n const sourceMaps = tsConfig.getValue<SwcOptions['sourceMaps']>('compilerOptions.sourceMap');\n const module = tsConfig.getValue<string>('compilerOptions.module')?.toLowerCase();\n\n return {\n jsc: {\n parser: {\n syntax: 'typescript',\n tsx: true,\n decorators: true,\n },\n target,\n transform: {\n legacyDecorator,\n decoratorMetadata,\n react: {\n runtime: 'automatic',\n },\n },\n },\n sourceMaps,\n module: {\n type: module === 'commonjs' || module === 'nodenext' ? 'commonjs' : 'es6',\n },\n } satisfies SwcOptions;\n}\n"],"names":["getSwcOptions","tsConfig","target","getValue","legacyDecorator","decoratorMetadata","sourceMaps","module","toLowerCase","jsc","parser","syntax","tsx","decorators","transform","react","runtime","type"],"mappings":";;;;+BAKgBA;;;eAAAA;;;AAAT,SAASA,cAAcC,QAAkB;QAK7BA;IAJf,MAAMC,SAASD,SAASE,QAAQ,CAAsB;IACtD,MAAMC,kBAAkBH,SAASE,QAAQ,CAAU;IACnD,MAAME,oBAAoBJ,SAASE,QAAQ,CAAU;IACrD,MAAMG,aAAaL,SAASE,QAAQ,CAA2B;IAC/D,MAAMI,UAASN,qBAAAA,SAASE,QAAQ,CAAS,uCAA1BF,yCAAAA,mBAAqDO,WAAW;IAE/E,OAAO;QACHC,KAAK;YACDC,QAAQ;gBACJC,QAAQ;gBACRC,KAAK;gBACLC,YAAY;YAChB;YACAX;YACAY,WAAW;gBACPV;gBACAC;gBACAU,OAAO;oBACHC,SAAS;gBACb;YACJ;QACJ;QACAV;QACAC,QAAQ;YACJU,MAAMV,WAAW,cAAcA,WAAW,aAAa,aAAa;QACxE;IACJ;AACJ"}
1
+ {"version":3,"sources":["../../../../src/cli/tasks/swc-compile-package/get-swc-options.ts"],"sourcesContent":["import type { SwcOptions } from '@swc/cli';\nimport path from 'path';\nimport { TSConfig } from '../../utils';\n\ntype JscConfig = NonNullable<SwcOptions['jsc']>;\n\nexport function getSwcOptions(tsConfig: TSConfig, { reactRefresh = false } = {}) {\n const target = tsConfig.getValue<JscConfig['target']>('compilerOptions.target');\n const legacyDecorator = tsConfig.getValue<boolean>('compilerOptions.experimentalDecorators');\n const decoratorMetadata = tsConfig.getValue<boolean>('compilerOptions.emitDecoratorMetadata');\n const sourceMaps = tsConfig.getValue<SwcOptions['sourceMaps']>('compilerOptions.sourceMap');\n const module = tsConfig.getValue<string>('compilerOptions.module')?.toLowerCase();\n const paths = tsConfig.getValue<JscConfig['paths']>('compilerOptions.paths');\n /*\n * `compilerOptions.baseUrl` is deprecated in TypeScript, so it's not read here.\n * TS resolves `paths` relative to the tsconfig directory; SWC requires an\n * absolute `jsc.baseUrl` whenever `jsc.paths` is set.\n */\n const baseUrl =\n paths !== undefined ? path.resolve(path.dirname(tsConfig.configPath)) : undefined;\n\n return {\n jsc: {\n parser: {\n syntax: 'typescript',\n tsx: true,\n decorators: true,\n },\n target,\n baseUrl,\n paths,\n transform: {\n legacyDecorator,\n decoratorMetadata,\n react: {\n runtime: 'automatic',\n refresh: reactRefresh,\n development: reactRefresh,\n },\n },\n },\n sourceMaps,\n module: {\n type: module === 'commonjs' || module === 'nodenext' ? 'commonjs' : 'es6',\n },\n } satisfies SwcOptions;\n}\n"],"names":["getSwcOptions","tsConfig","reactRefresh","target","getValue","legacyDecorator","decoratorMetadata","sourceMaps","module","toLowerCase","paths","baseUrl","undefined","path","resolve","dirname","configPath","jsc","parser","syntax","tsx","decorators","transform","react","runtime","refresh","development","type"],"mappings":";;;;+BAMgBA;;;eAAAA;;;6DALC;;;;;;AAKV,SAASA,cAAcC,QAAkB,EAAE,EAAEC,eAAe,KAAK,EAAE,GAAG,CAAC,CAAC;QAK5DD;IAJf,MAAME,SAASF,SAASG,QAAQ,CAAsB;IACtD,MAAMC,kBAAkBJ,SAASG,QAAQ,CAAU;IACnD,MAAME,oBAAoBL,SAASG,QAAQ,CAAU;IACrD,MAAMG,aAAaN,SAASG,QAAQ,CAA2B;IAC/D,MAAMI,UAASP,qBAAAA,SAASG,QAAQ,CAAS,uCAA1BH,yCAAAA,mBAAqDQ,WAAW;IAC/E,MAAMC,QAAQT,SAASG,QAAQ,CAAqB;IACpD;;;;KAIC,GACD,MAAMO,UACFD,UAAUE,YAAYC,aAAI,CAACC,OAAO,CAACD,aAAI,CAACE,OAAO,CAACd,SAASe,UAAU,KAAKJ;IAE5E,OAAO;QACHK,KAAK;YACDC,QAAQ;gBACJC,QAAQ;gBACRC,KAAK;gBACLC,YAAY;YAChB;YACAlB;YACAQ;YACAD;YACAY,WAAW;gBACPjB;gBACAC;gBACAiB,OAAO;oBACHC,SAAS;oBACTC,SAASvB;oBACTwB,aAAaxB;gBACjB;YACJ;QACJ;QACAK;QACAC,QAAQ;YACJmB,MAAMnB,WAAW,cAAcA,WAAW,aAAa,aAAa;QACxE;IACJ;AACJ"}
@@ -1,9 +1,11 @@
1
1
  import { Task } from '../task';
2
2
  interface Args {
3
+ reactRefresh?: boolean;
3
4
  watch?: boolean;
4
5
  }
5
6
  export declare class SwcCompilePackage extends Task {
6
- constructor({ watch }: Args);
7
+ private readonly reactRefresh;
8
+ constructor({ reactRefresh, watch }: Args);
7
9
  execute(): Promise<void>;
8
10
  private getConfig;
9
11
  }
@@ -1 +1 @@
1
- {"version":3,"file":"swc-compile-package.d.ts","sourceRoot":"","sources":["../../../../src/cli/tasks/swc-compile-package/swc-compile-package.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,UAAU,IAAI;IACV,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,qBAAa,iBAAkB,SAAQ,IAAI;gBAC3B,EAAE,KAAK,EAAE,EAAE,IAAI;IAIrB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC9B,OAAO,CAAC,SAAS;CAapB"}
1
+ {"version":3,"file":"swc-compile-package.d.ts","sourceRoot":"","sources":["../../../../src/cli/tasks/swc-compile-package/swc-compile-package.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAG/B,UAAU,IAAI;IACV,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAMD,qBAAa,iBAAkB,SAAQ,IAAI;IACvC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAsB;gBAEvC,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,IAAI;IAKnC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC9B,OAAO,CAAC,SAAS;CAapB"}
@@ -14,6 +14,17 @@ const _utils = require("../../../utils");
14
14
  const _utils1 = require("../../utils");
15
15
  const _task = require("../task");
16
16
  const _getswcoptions = require("./get-swc-options");
17
+ function _define_property(obj, key, value) {
18
+ if (key in obj) {
19
+ Object.defineProperty(obj, key, {
20
+ value: value,
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true
24
+ });
25
+ } else obj[key] = value;
26
+ return obj;
27
+ }
17
28
  function _interop_require_default(obj) {
18
29
  return obj && obj.__esModule ? obj : {
19
30
  default: obj
@@ -61,18 +72,21 @@ class SwcCompilePackage extends _task.Task {
61
72
  cliOptions: getCliOptions(tsConfig, {
62
73
  watch: this.watch
63
74
  }),
64
- swcOptions: (0, _getswcoptions.getSwcOptions)(tsConfig)
75
+ swcOptions: (0, _getswcoptions.getSwcOptions)(tsConfig, {
76
+ reactRefresh: this.reactRefresh
77
+ })
65
78
  }, packageConfig, {
66
79
  arrayMerge: overwriteMerge,
67
80
  clone: false
68
81
  });
69
82
  }
70
- constructor({ watch }){
83
+ constructor({ reactRefresh, watch }){
71
84
  super({
72
85
  name: 'swc-compile-package',
73
86
  global: false,
74
87
  watch
75
- });
88
+ }), _define_property(this, "reactRefresh", void 0);
89
+ this.reactRefresh = reactRefresh;
76
90
  }
77
91
  }
78
92
  function getCliOptions(tsConfig, { watch }) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/cli/tasks/swc-compile-package/swc-compile-package.ts"],"sourcesContent":["import type { Options } from '@swc/cli';\nimport { swcDir } from '@swc/cli';\nimport deepmerge from 'deepmerge';\nimport { getFolders, getSwcCompilePackageConfiguration, getTsConfig, log } from '../../../utils';\nimport { TSConfig } from '../../utils';\nimport { Task } from '../task';\nimport { getSwcOptions } from './get-swc-options';\n\ninterface Args {\n watch?: boolean;\n}\n\nfunction overwriteMerge(_destinationArray: unknown[], sourceArray: unknown[]) {\n return sourceArray;\n}\n\nexport class SwcCompilePackage extends Task {\n constructor({ watch }: Args) {\n super({ name: 'swc-compile-package', global: false, watch });\n }\n\n async execute(): Promise<void> {\n const config = this.getConfig();\n\n /* istanbul ignore next: debug only */\n log.debug('swc-compile-package:config', () => JSON.stringify(config, null, 2));\n\n let callbackFired = false;\n\n return new Promise((resolve, reject) => {\n swcDir({\n ...config,\n callbacks: {\n onSuccess: (e: { duration: number }) => {\n callbackFired = true;\n this.logCompletionResults(this.taskTimer.add(e.duration));\n },\n onFail: (e: { duration: number; reasons: Map<string, string> }) => {\n callbackFired = true;\n log.text([...e.reasons.values()][0]);\n this.logCompletionResults(this.taskTimer.add(e.duration));\n if (!this.watch) {\n reject(new Error('Compilation failed'));\n }\n },\n },\n }).then(() => {\n if (!callbackFired) {\n this.logCompletionResults(this.taskTimer.add(0));\n }\n resolve();\n });\n });\n }\n\n private getConfig(): Options {\n const packageConfig = getSwcCompilePackageConfiguration();\n const tsConfig = new TSConfig(getTsConfig());\n\n return deepmerge(\n {\n cliOptions: getCliOptions(tsConfig, { watch: this.watch }),\n swcOptions: getSwcOptions(tsConfig),\n },\n packageConfig,\n { arrayMerge: overwriteMerge, clone: false }\n );\n }\n}\n\nfunction getCliOptions(tsConfig: TSConfig, { watch }: { watch?: boolean }): Options['cliOptions'] {\n const { source, destination } = getFolders();\n const typedefsPattern = '**/*.d.ts';\n const ignore = tsConfig.getValue('exclude', [\n typedefsPattern,\n '**/__tests__/*',\n '**/*.test.*',\n '**/__mocks__/*',\n '**/*.stories.*',\n ]);\n\n if (!ignore.includes(typedefsPattern)) {\n ignore.push(typedefsPattern);\n }\n\n return {\n extensions: ['.ts', '.tsx'],\n filenames: [source],\n ignore,\n outDir: destination,\n stripLeadingPaths: true,\n watch,\n };\n}\n"],"names":["SwcCompilePackage","overwriteMerge","_destinationArray","sourceArray","Task","execute","config","getConfig","log","debug","JSON","stringify","callbackFired","Promise","resolve","reject","swcDir","callbacks","onSuccess","e","logCompletionResults","taskTimer","add","duration","onFail","text","reasons","values","watch","Error","then","packageConfig","getSwcCompilePackageConfiguration","tsConfig","TSConfig","getTsConfig","deepmerge","cliOptions","getCliOptions","swcOptions","getSwcOptions","arrayMerge","clone","name","global","source","destination","getFolders","typedefsPattern","ignore","getValue","includes","push","extensions","filenames","outDir","stripLeadingPaths"],"mappings":";;;;+BAgBaA;;;eAAAA;;;qBAfU;kEACD;uBAC0D;wBACvD;sBACJ;+BACS;;;;;;AAM9B,SAASC,eAAeC,iBAA4B,EAAEC,WAAsB;IACxE,OAAOA;AACX;AAEO,MAAMH,0BAA0BI,UAAI;IAKvC,MAAMC,UAAyB;QAC3B,MAAMC,SAAS,IAAI,CAACC,SAAS;QAE7B,oCAAoC,GACpCC,UAAG,CAACC,KAAK,CAAC,8BAA8B,IAAMC,KAAKC,SAAS,CAACL,QAAQ,MAAM;QAE3E,IAAIM,gBAAgB;QAEpB,OAAO,IAAIC,QAAQ,CAACC,SAASC;YACzBC,IAAAA,WAAM,EAAC;gBACH,GAAGV,MAAM;gBACTW,WAAW;oBACPC,WAAW,CAACC;wBACRP,gBAAgB;wBAChB,IAAI,CAACQ,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG,CAACH,EAAEI,QAAQ;oBAC3D;oBACAC,QAAQ,CAACL;wBACLP,gBAAgB;wBAChBJ,UAAG,CAACiB,IAAI,CAAC;+BAAIN,EAAEO,OAAO,CAACC,MAAM;yBAAG,CAAC,EAAE;wBACnC,IAAI,CAACP,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG,CAACH,EAAEI,QAAQ;wBACvD,IAAI,CAAC,IAAI,CAACK,KAAK,EAAE;4BACbb,OAAO,IAAIc,MAAM;wBACrB;oBACJ;gBACJ;YACJ,GAAGC,IAAI,CAAC;gBACJ,IAAI,CAAClB,eAAe;oBAChB,IAAI,CAACQ,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC;gBACjD;gBACAR;YACJ;QACJ;IACJ;IAEQP,YAAqB;QACzB,MAAMwB,gBAAgBC,IAAAA,wCAAiC;QACvD,MAAMC,WAAW,IAAIC,gBAAQ,CAACC,IAAAA,kBAAW;QAEzC,OAAOC,IAAAA,kBAAS,EACZ;YACIC,YAAYC,cAAcL,UAAU;gBAAEL,OAAO,IAAI,CAACA,KAAK;YAAC;YACxDW,YAAYC,IAAAA,4BAAa,EAACP;QAC9B,GACAF,eACA;YAAEU,YAAYxC;YAAgByC,OAAO;QAAM;IAEnD;IAlDA,YAAY,EAAEd,KAAK,EAAQ,CAAE;QACzB,KAAK,CAAC;YAAEe,MAAM;YAAuBC,QAAQ;YAAOhB;QAAM;IAC9D;AAiDJ;AAEA,SAASU,cAAcL,QAAkB,EAAE,EAAEL,KAAK,EAAuB;IACrE,MAAM,EAAEiB,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU;IAC1C,MAAMC,kBAAkB;IACxB,MAAMC,SAAShB,SAASiB,QAAQ,CAAC,WAAW;QACxCF;QACA;QACA;QACA;QACA;KACH;IAED,IAAI,CAACC,OAAOE,QAAQ,CAACH,kBAAkB;QACnCC,OAAOG,IAAI,CAACJ;IAChB;IAEA,OAAO;QACHK,YAAY;YAAC;YAAO;SAAO;QAC3BC,WAAW;YAACT;SAAO;QACnBI;QACAM,QAAQT;QACRU,mBAAmB;QACnB5B;IACJ;AACJ"}
1
+ {"version":3,"sources":["../../../../src/cli/tasks/swc-compile-package/swc-compile-package.ts"],"sourcesContent":["import type { Options } from '@swc/cli';\nimport { swcDir } from '@swc/cli';\nimport deepmerge from 'deepmerge';\nimport { getFolders, getSwcCompilePackageConfiguration, getTsConfig, log } from '../../../utils';\nimport { TSConfig } from '../../utils';\nimport { Task } from '../task';\nimport { getSwcOptions } from './get-swc-options';\n\ninterface Args {\n reactRefresh?: boolean;\n watch?: boolean;\n}\n\nfunction overwriteMerge(_destinationArray: unknown[], sourceArray: unknown[]) {\n return sourceArray;\n}\n\nexport class SwcCompilePackage extends Task {\n private readonly reactRefresh: boolean | undefined;\n\n constructor({ reactRefresh, watch }: Args) {\n super({ name: 'swc-compile-package', global: false, watch });\n this.reactRefresh = reactRefresh;\n }\n\n async execute(): Promise<void> {\n const config = this.getConfig();\n\n /* istanbul ignore next: debug only */\n log.debug('swc-compile-package:config', () => JSON.stringify(config, null, 2));\n\n let callbackFired = false;\n\n return new Promise((resolve, reject) => {\n swcDir({\n ...config,\n callbacks: {\n onSuccess: (e: { duration: number }) => {\n callbackFired = true;\n this.logCompletionResults(this.taskTimer.add(e.duration));\n },\n onFail: (e: { duration: number; reasons: Map<string, string> }) => {\n callbackFired = true;\n log.text([...e.reasons.values()][0]);\n this.logCompletionResults(this.taskTimer.add(e.duration));\n if (!this.watch) {\n reject(new Error('Compilation failed'));\n }\n },\n },\n }).then(() => {\n if (!callbackFired) {\n this.logCompletionResults(this.taskTimer.add(0));\n }\n resolve();\n });\n });\n }\n\n private getConfig(): Options {\n const packageConfig = getSwcCompilePackageConfiguration();\n const tsConfig = new TSConfig(getTsConfig());\n\n return deepmerge(\n {\n cliOptions: getCliOptions(tsConfig, { watch: this.watch }),\n swcOptions: getSwcOptions(tsConfig, { reactRefresh: this.reactRefresh }),\n },\n packageConfig,\n { arrayMerge: overwriteMerge, clone: false }\n );\n }\n}\n\nfunction getCliOptions(tsConfig: TSConfig, { watch }: { watch?: boolean }): Options['cliOptions'] {\n const { source, destination } = getFolders();\n const typedefsPattern = '**/*.d.ts';\n const ignore = tsConfig.getValue('exclude', [\n typedefsPattern,\n '**/__tests__/*',\n '**/*.test.*',\n '**/__mocks__/*',\n '**/*.stories.*',\n ]);\n\n if (!ignore.includes(typedefsPattern)) {\n ignore.push(typedefsPattern);\n }\n\n return {\n extensions: ['.ts', '.tsx'],\n filenames: [source],\n ignore,\n outDir: destination,\n stripLeadingPaths: true,\n watch,\n };\n}\n"],"names":["SwcCompilePackage","overwriteMerge","_destinationArray","sourceArray","Task","execute","config","getConfig","log","debug","JSON","stringify","callbackFired","Promise","resolve","reject","swcDir","callbacks","onSuccess","e","logCompletionResults","taskTimer","add","duration","onFail","text","reasons","values","watch","Error","then","packageConfig","getSwcCompilePackageConfiguration","tsConfig","TSConfig","getTsConfig","deepmerge","cliOptions","getCliOptions","swcOptions","getSwcOptions","reactRefresh","arrayMerge","clone","name","global","source","destination","getFolders","typedefsPattern","ignore","getValue","includes","push","extensions","filenames","outDir","stripLeadingPaths"],"mappings":";;;;+BAiBaA;;;eAAAA;;;qBAhBU;kEACD;uBAC0D;wBACvD;sBACJ;+BACS;;;;;;;;;;;;;;;;;AAO9B,SAASC,eAAeC,iBAA4B,EAAEC,WAAsB;IACxE,OAAOA;AACX;AAEO,MAAMH,0BAA0BI,UAAI;IAQvC,MAAMC,UAAyB;QAC3B,MAAMC,SAAS,IAAI,CAACC,SAAS;QAE7B,oCAAoC,GACpCC,UAAG,CAACC,KAAK,CAAC,8BAA8B,IAAMC,KAAKC,SAAS,CAACL,QAAQ,MAAM;QAE3E,IAAIM,gBAAgB;QAEpB,OAAO,IAAIC,QAAQ,CAACC,SAASC;YACzBC,IAAAA,WAAM,EAAC;gBACH,GAAGV,MAAM;gBACTW,WAAW;oBACPC,WAAW,CAACC;wBACRP,gBAAgB;wBAChB,IAAI,CAACQ,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG,CAACH,EAAEI,QAAQ;oBAC3D;oBACAC,QAAQ,CAACL;wBACLP,gBAAgB;wBAChBJ,UAAG,CAACiB,IAAI,CAAC;+BAAIN,EAAEO,OAAO,CAACC,MAAM;yBAAG,CAAC,EAAE;wBACnC,IAAI,CAACP,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG,CAACH,EAAEI,QAAQ;wBACvD,IAAI,CAAC,IAAI,CAACK,KAAK,EAAE;4BACbb,OAAO,IAAIc,MAAM;wBACrB;oBACJ;gBACJ;YACJ,GAAGC,IAAI,CAAC;gBACJ,IAAI,CAAClB,eAAe;oBAChB,IAAI,CAACQ,oBAAoB,CAAC,IAAI,CAACC,SAAS,CAACC,GAAG,CAAC;gBACjD;gBACAR;YACJ;QACJ;IACJ;IAEQP,YAAqB;QACzB,MAAMwB,gBAAgBC,IAAAA,wCAAiC;QACvD,MAAMC,WAAW,IAAIC,gBAAQ,CAACC,IAAAA,kBAAW;QAEzC,OAAOC,IAAAA,kBAAS,EACZ;YACIC,YAAYC,cAAcL,UAAU;gBAAEL,OAAO,IAAI,CAACA,KAAK;YAAC;YACxDW,YAAYC,IAAAA,4BAAa,EAACP,UAAU;gBAAEQ,cAAc,IAAI,CAACA,YAAY;YAAC;QAC1E,GACAV,eACA;YAAEW,YAAYzC;YAAgB0C,OAAO;QAAM;IAEnD;IAnDA,YAAY,EAAEF,YAAY,EAAEb,KAAK,EAAQ,CAAE;QACvC,KAAK,CAAC;YAAEgB,MAAM;YAAuBC,QAAQ;YAAOjB;QAAM,IAH9D,uBAAiBa,gBAAjB,KAAA;QAII,IAAI,CAACA,YAAY,GAAGA;IACxB;AAiDJ;AAEA,SAASH,cAAcL,QAAkB,EAAE,EAAEL,KAAK,EAAuB;IACrE,MAAM,EAAEkB,MAAM,EAAEC,WAAW,EAAE,GAAGC,IAAAA,iBAAU;IAC1C,MAAMC,kBAAkB;IACxB,MAAMC,SAASjB,SAASkB,QAAQ,CAAC,WAAW;QACxCF;QACA;QACA;QACA;QACA;KACH;IAED,IAAI,CAACC,OAAOE,QAAQ,CAACH,kBAAkB;QACnCC,OAAOG,IAAI,CAACJ;IAChB;IAEA,OAAO;QACHK,YAAY;YAAC;YAAO;SAAO;QAC3BC,WAAW;YAACT;SAAO;QACnBI;QACAM,QAAQT;QACRU,mBAAmB;QACnB7B;IACJ;AACJ"}
@@ -26,9 +26,10 @@ export interface TaskParameters {
26
26
  export declare abstract class Task {
27
27
  protected readonly watch: boolean;
28
28
  protected readonly taskTimer: TaskTimer;
29
- private readonly name;
29
+ protected readonly name: string;
30
30
  private readonly global;
31
31
  constructor({ name, watch, global }: TaskParameters);
32
+ watchForParentExit(): void;
32
33
  protected logCompletionResults({ measure, counter, }: {
33
34
  measure: PerformanceMeasure;
34
35
  counter: number;
@@ -1 +1 @@
1
- {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/tasks/task.ts"],"names":[],"mappings":"AAEA,cAAM,SAAS;IAWC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVjC,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,eAAe,GAE1B;gBAE4B,IAAI,EAAE,MAAM;IAIzC,KAAK;IAQL,GAAG;;;;IASH,MAAM;;;;IAeN,GAAG,CAAC,QAAQ,EAAE,MAAM;;;;CAOvB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,8BAAsB,IAAI;IACtB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IACxC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,cAAc;IAQnD,SAAS,CAAC,oBAAoB,CAAC,EAC3B,OAAO,EACP,OAAO,GACV,EAAE;QACC,OAAO,EAAE,kBAAkB,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;KACnB;IAOD,OAAO,CAAC,gBAAgB;IAUxB,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CACpC"}
1
+ {"version":3,"file":"task.d.ts","sourceRoot":"","sources":["../../../src/cli/tasks/task.ts"],"names":[],"mappings":"AAEA,cAAM,SAAS;IAWC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVjC,OAAO,CAAC,OAAO,CAAK;IAEpB,OAAO,KAAK,eAAe,GAE1B;IAED,OAAO,KAAK,eAAe,GAE1B;gBAE4B,IAAI,EAAE,MAAM;IAIzC,KAAK;IAQL,GAAG;;;;IASH,MAAM;;;;IAeN,GAAG,CAAC,QAAQ,EAAE,MAAM;;;;CAOvB;AAED,MAAM,WAAW,cAAc;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACnB;AAED,8BAAsB,IAAI;IACtB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IACxC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,cAAc;IAQnD,kBAAkB,IAAI,IAAI;IAM1B,SAAS,CAAC,oBAAoB,CAAC,EAC3B,OAAO,EACP,OAAO,GACV,EAAE;QACC,OAAO,EAAE,kBAAkB,CAAC;QAC5B,OAAO,EAAE,MAAM,CAAC;KACnB;IAOD,OAAO,CAAC,gBAAgB;IAUxB,QAAQ,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CACpC"}
@@ -17,9 +17,7 @@ function _define_property(obj, key, value) {
17
17
  configurable: true,
18
18
  writable: true
19
19
  });
20
- } else {
21
- obj[key] = value;
22
- }
20
+ } else obj[key] = value;
23
21
  return obj;
24
22
  }
25
23
  class TaskTimer {
@@ -79,6 +77,11 @@ class TaskTimer {
79
77
  }
80
78
  }
81
79
  class Task {
80
+ watchForParentExit() {
81
+ if (this.watch) {
82
+ (0, _utils.exitWhenParentExits)(this.name);
83
+ }
84
+ }
82
85
  logCompletionResults({ measure, counter }) {
83
86
  const enumerator = counter === 0 ? 'Initial ' : 'Subsequent ';
84
87
  _utils.log.info(`${this.watch ? enumerator : ''}${this.name} task completed in ${(0, _utils.formatDuration)(measure.duration)}`);