@simplysm/sd-cli 14.0.30 → 14.0.33

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 (626) hide show
  1. package/dist/{utils → angular}/angular-build-pipeline.d.ts +0 -2
  2. package/dist/angular/angular-build-pipeline.d.ts.map +1 -0
  3. package/dist/{utils → angular}/angular-build-pipeline.js +3 -6
  4. package/dist/angular/angular-build-pipeline.js.map +1 -0
  5. package/dist/{utils → angular}/angular-build.d.ts +1 -1
  6. package/dist/angular/angular-build.d.ts.map +1 -0
  7. package/dist/{utils → angular}/angular-build.js +1 -1
  8. package/dist/angular/angular-build.js.map +1 -0
  9. package/dist/{utils → angular}/angular-compiler.d.ts +0 -3
  10. package/dist/angular/angular-compiler.d.ts.map +1 -0
  11. package/dist/{utils → angular}/angular-compiler.js +1 -45
  12. package/dist/angular/angular-compiler.js.map +1 -0
  13. package/dist/angular/client-transform-stylesheet.js +1 -1
  14. package/dist/angular/client-transform-stylesheet.js.map +1 -1
  15. package/dist/{utils → angular}/ngtsc-build-core.d.ts +3 -3
  16. package/dist/angular/ngtsc-build-core.d.ts.map +1 -0
  17. package/dist/angular/ngtsc-build-core.js.map +1 -0
  18. package/dist/angular/scss-compiler.d.ts.map +1 -0
  19. package/dist/angular/scss-compiler.js.map +1 -0
  20. package/dist/angular/vite-angular-plugin.d.ts +2 -10
  21. package/dist/angular/vite-angular-plugin.d.ts.map +1 -1
  22. package/dist/angular/vite-angular-plugin.js +20 -286
  23. package/dist/angular/vite-angular-plugin.js.map +1 -1
  24. package/dist/capacitor/capacitor-build.d.ts +14 -0
  25. package/dist/capacitor/capacitor-build.d.ts.map +1 -0
  26. package/dist/capacitor/capacitor-build.js +105 -0
  27. package/dist/capacitor/capacitor-build.js.map +1 -0
  28. package/dist/capacitor/capacitor-config-writer.d.ts +11 -0
  29. package/dist/capacitor/capacitor-config-writer.d.ts.map +1 -0
  30. package/dist/capacitor/capacitor-config-writer.js +54 -0
  31. package/dist/capacitor/capacitor-config-writer.js.map +1 -0
  32. package/dist/capacitor/capacitor-icon.d.ts +5 -0
  33. package/dist/capacitor/capacitor-icon.d.ts.map +1 -0
  34. package/dist/capacitor/capacitor-icon.js +58 -0
  35. package/dist/capacitor/capacitor-icon.js.map +1 -0
  36. package/dist/capacitor/capacitor-npm-config.d.ts +11 -0
  37. package/dist/capacitor/capacitor-npm-config.d.ts.map +1 -0
  38. package/dist/capacitor/capacitor-npm-config.js +145 -0
  39. package/dist/capacitor/capacitor-npm-config.js.map +1 -0
  40. package/dist/capacitor/capacitor.d.ts +0 -45
  41. package/dist/capacitor/capacitor.d.ts.map +1 -1
  42. package/dist/capacitor/capacitor.js +15 -354
  43. package/dist/capacitor/capacitor.js.map +1 -1
  44. package/dist/commands/check.js +2 -2
  45. package/dist/commands/check.js.map +1 -1
  46. package/dist/commands/dev.d.ts +3 -3
  47. package/dist/commands/dev.d.ts.map +1 -1
  48. package/dist/commands/dev.js +3 -3
  49. package/dist/commands/dev.js.map +1 -1
  50. package/dist/commands/lint.d.ts +1 -1
  51. package/dist/commands/lint.d.ts.map +1 -1
  52. package/dist/commands/lint.js +1 -1
  53. package/dist/commands/lint.js.map +1 -1
  54. package/dist/commands/publish/deployment-phase.d.ts +12 -0
  55. package/dist/commands/publish/deployment-phase.d.ts.map +1 -0
  56. package/dist/commands/publish/deployment-phase.js +94 -0
  57. package/dist/commands/publish/deployment-phase.js.map +1 -0
  58. package/dist/commands/publish/env-utils.d.ts +10 -0
  59. package/dist/commands/publish/env-utils.d.ts.map +1 -0
  60. package/dist/commands/publish/env-utils.js +41 -0
  61. package/dist/commands/publish/env-utils.js.map +1 -0
  62. package/dist/commands/publish/git-phase.d.ts +12 -0
  63. package/dist/commands/publish/git-phase.d.ts.map +1 -0
  64. package/dist/commands/publish/git-phase.js +79 -0
  65. package/dist/commands/publish/git-phase.js.map +1 -0
  66. package/dist/commands/{publish.d.ts → publish/index.d.ts} +1 -1
  67. package/dist/commands/publish/index.d.ts.map +1 -0
  68. package/dist/commands/publish/index.js +211 -0
  69. package/dist/commands/publish/index.js.map +1 -0
  70. package/dist/commands/publish/local-publisher.d.ts +6 -0
  71. package/dist/commands/publish/local-publisher.d.ts.map +1 -0
  72. package/dist/commands/publish/local-publisher.js +16 -0
  73. package/dist/commands/publish/local-publisher.js.map +1 -0
  74. package/dist/commands/publish/npm-publisher.d.ts +6 -0
  75. package/dist/commands/publish/npm-publisher.d.ts.map +1 -0
  76. package/dist/commands/publish/npm-publisher.js +21 -0
  77. package/dist/commands/publish/npm-publisher.js.map +1 -0
  78. package/dist/commands/publish/post-publish-phase.d.ts +8 -0
  79. package/dist/commands/publish/post-publish-phase.d.ts.map +1 -0
  80. package/dist/commands/publish/post-publish-phase.js +34 -0
  81. package/dist/commands/publish/post-publish-phase.js.map +1 -0
  82. package/dist/commands/publish/storage-publisher.d.ts +18 -0
  83. package/dist/commands/publish/storage-publisher.d.ts.map +1 -0
  84. package/dist/commands/publish/storage-publisher.js +173 -0
  85. package/dist/commands/publish/storage-publisher.js.map +1 -0
  86. package/dist/commands/publish/version-upgrade.d.ts +28 -0
  87. package/dist/commands/publish/version-upgrade.d.ts.map +1 -0
  88. package/dist/commands/publish/version-upgrade.js +96 -0
  89. package/dist/commands/publish/version-upgrade.js.map +1 -0
  90. package/dist/commands/replace-deps.js +1 -1
  91. package/dist/commands/replace-deps.js.map +1 -1
  92. package/dist/commands/watch.d.ts +3 -4
  93. package/dist/commands/watch.d.ts.map +1 -1
  94. package/dist/commands/watch.js +3 -4
  95. package/dist/commands/watch.js.map +1 -1
  96. package/dist/deps/replace-deps/collect-deps.d.ts +6 -0
  97. package/dist/deps/replace-deps/collect-deps.d.ts.map +1 -0
  98. package/dist/deps/replace-deps/collect-deps.js +71 -0
  99. package/dist/deps/replace-deps/collect-deps.js.map +1 -0
  100. package/dist/{utils/replace-deps.d.ts → deps/replace-deps/replace-deps-resolve.d.ts} +7 -24
  101. package/dist/deps/replace-deps/replace-deps-resolve.d.ts.map +1 -0
  102. package/dist/{utils/replace-deps.js → deps/replace-deps/replace-deps-resolve.js} +4 -152
  103. package/dist/deps/replace-deps/replace-deps-resolve.js.map +1 -0
  104. package/dist/deps/replace-deps/replace-deps.d.ts +36 -0
  105. package/dist/deps/replace-deps/replace-deps.d.ts.map +1 -0
  106. package/dist/deps/replace-deps/replace-deps.js +155 -0
  107. package/dist/deps/replace-deps/replace-deps.js.map +1 -0
  108. package/dist/{utils → deps/server-externals}/server-production-files.d.ts +1 -1
  109. package/dist/deps/server-externals/server-production-files.d.ts.map +1 -0
  110. package/dist/{utils → deps/server-externals}/server-production-files.js +1 -1
  111. package/dist/deps/server-externals/server-production-files.js.map +1 -0
  112. package/dist/dev-server/dev-http-server.d.ts +23 -0
  113. package/dist/dev-server/dev-http-server.d.ts.map +1 -0
  114. package/dist/dev-server/dev-http-server.js +116 -0
  115. package/dist/dev-server/dev-http-server.js.map +1 -0
  116. package/dist/dev-server/hmr-client-script.d.ts +13 -0
  117. package/dist/dev-server/hmr-client-script.d.ts.map +1 -0
  118. package/dist/dev-server/hmr-client-script.js +73 -0
  119. package/dist/dev-server/hmr-client-script.js.map +1 -0
  120. package/dist/dev-server/hmr-service.d.ts +23 -0
  121. package/dist/dev-server/hmr-service.d.ts.map +1 -0
  122. package/dist/dev-server/hmr-service.js +139 -0
  123. package/dist/dev-server/hmr-service.js.map +1 -0
  124. package/dist/electron/electron.d.ts +5 -0
  125. package/dist/electron/electron.d.ts.map +1 -1
  126. package/dist/electron/electron.js +17 -24
  127. package/dist/electron/electron.js.map +1 -1
  128. package/dist/engines/BaseEngine.d.ts +18 -4
  129. package/dist/engines/BaseEngine.d.ts.map +1 -1
  130. package/dist/engines/BaseEngine.js +45 -66
  131. package/dist/engines/BaseEngine.js.map +1 -1
  132. package/dist/engines/{ViteEngine.d.ts → EsbuildClientEngine.d.ts} +11 -18
  133. package/dist/engines/EsbuildClientEngine.d.ts.map +1 -0
  134. package/dist/engines/{ViteEngine.js → EsbuildClientEngine.js} +28 -55
  135. package/dist/engines/EsbuildClientEngine.js.map +1 -0
  136. package/dist/engines/NgtscEngine.d.ts +2 -2
  137. package/dist/engines/NgtscEngine.d.ts.map +1 -1
  138. package/dist/engines/NgtscEngine.js +1 -9
  139. package/dist/engines/NgtscEngine.js.map +1 -1
  140. package/dist/engines/ServerEsbuildEngine.d.ts +2 -2
  141. package/dist/engines/ServerEsbuildEngine.d.ts.map +1 -1
  142. package/dist/engines/ServerEsbuildEngine.js +1 -9
  143. package/dist/engines/ServerEsbuildEngine.js.map +1 -1
  144. package/dist/engines/TscEngine.d.ts +2 -2
  145. package/dist/engines/TscEngine.d.ts.map +1 -1
  146. package/dist/engines/TscEngine.js +1 -9
  147. package/dist/engines/TscEngine.js.map +1 -1
  148. package/dist/engines/index.d.ts +15 -5
  149. package/dist/engines/index.d.ts.map +1 -1
  150. package/dist/engines/index.js +21 -5
  151. package/dist/engines/index.js.map +1 -1
  152. package/dist/engines/types.d.ts +3 -3
  153. package/dist/engines/types.d.ts.map +1 -1
  154. package/dist/esbuild/esbuild-client-config.d.ts +38 -0
  155. package/dist/esbuild/esbuild-client-config.d.ts.map +1 -0
  156. package/dist/esbuild/esbuild-client-config.js +171 -0
  157. package/dist/esbuild/esbuild-client-config.js.map +1 -0
  158. package/dist/esbuild/esbuild-config.d.ts.map +1 -0
  159. package/dist/{utils → esbuild}/esbuild-config.js +1 -0
  160. package/dist/esbuild/esbuild-config.js.map +1 -0
  161. package/dist/esbuild/esbuild-index-html.d.ts +39 -0
  162. package/dist/esbuild/esbuild-index-html.d.ts.map +1 -0
  163. package/dist/esbuild/esbuild-index-html.js +68 -0
  164. package/dist/esbuild/esbuild-index-html.js.map +1 -0
  165. package/dist/esbuild/esbuild-pwa.d.ts +21 -0
  166. package/dist/esbuild/esbuild-pwa.d.ts.map +1 -0
  167. package/dist/esbuild/esbuild-pwa.js +105 -0
  168. package/dist/esbuild/esbuild-pwa.js.map +1 -0
  169. package/dist/esbuild/esbuild-scss-plugin.d.ts +6 -0
  170. package/dist/esbuild/esbuild-scss-plugin.d.ts.map +1 -0
  171. package/dist/esbuild/esbuild-scss-plugin.js +41 -0
  172. package/dist/esbuild/esbuild-scss-plugin.js.map +1 -0
  173. package/dist/lint/lint-core.d.ts.map +1 -0
  174. package/dist/lint/lint-core.js.map +1 -0
  175. package/dist/lint/lint-utils.d.ts.map +1 -0
  176. package/dist/lint/lint-utils.js.map +1 -0
  177. package/dist/lint/lint-with-program.d.ts.map +1 -0
  178. package/dist/lint/lint-with-program.js.map +1 -0
  179. package/dist/orchestrators/BaseOrchestrator.d.ts +44 -0
  180. package/dist/orchestrators/BaseOrchestrator.d.ts.map +1 -0
  181. package/dist/orchestrators/BaseOrchestrator.js +92 -0
  182. package/dist/orchestrators/BaseOrchestrator.js.map +1 -0
  183. package/dist/orchestrators/BuildOrchestrator.d.ts +45 -3
  184. package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
  185. package/dist/orchestrators/BuildOrchestrator.js +170 -143
  186. package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
  187. package/dist/orchestrators/DevOrchestrator.d.ts +39 -0
  188. package/dist/orchestrators/DevOrchestrator.d.ts.map +1 -0
  189. package/dist/orchestrators/DevOrchestrator.js +249 -0
  190. package/dist/orchestrators/DevOrchestrator.js.map +1 -0
  191. package/dist/orchestrators/ServerRuntimeManager.d.ts +22 -0
  192. package/dist/orchestrators/ServerRuntimeManager.d.ts.map +1 -0
  193. package/dist/orchestrators/ServerRuntimeManager.js +66 -0
  194. package/dist/orchestrators/ServerRuntimeManager.js.map +1 -0
  195. package/dist/orchestrators/TypecheckOrchestrator.d.ts +17 -2
  196. package/dist/orchestrators/TypecheckOrchestrator.d.ts.map +1 -1
  197. package/dist/orchestrators/TypecheckOrchestrator.js +122 -108
  198. package/dist/orchestrators/TypecheckOrchestrator.js.map +1 -1
  199. package/dist/orchestrators/WatchOrchestrator.d.ts +33 -0
  200. package/dist/orchestrators/WatchOrchestrator.d.ts.map +1 -0
  201. package/dist/orchestrators/WatchOrchestrator.js +158 -0
  202. package/dist/orchestrators/WatchOrchestrator.js.map +1 -0
  203. package/dist/orchestrators/types.d.ts +17 -0
  204. package/dist/orchestrators/types.d.ts.map +1 -0
  205. package/dist/orchestrators/types.js +2 -0
  206. package/dist/orchestrators/types.js.map +1 -0
  207. package/dist/runtime/ResultCollector.d.ts.map +1 -0
  208. package/dist/runtime/ResultCollector.js.map +1 -0
  209. package/dist/runtime/SignalHandler.d.ts.map +1 -0
  210. package/dist/runtime/SignalHandler.js.map +1 -0
  211. package/dist/{utils → runtime}/engine-stop.d.ts +1 -1
  212. package/dist/runtime/engine-stop.d.ts.map +1 -0
  213. package/dist/{utils → runtime}/engine-stop.js +1 -1
  214. package/dist/runtime/engine-stop.js.map +1 -0
  215. package/dist/runtime/engine-watch-events.d.ts +43 -0
  216. package/dist/runtime/engine-watch-events.d.ts.map +1 -0
  217. package/dist/runtime/engine-watch-events.js +72 -0
  218. package/dist/runtime/engine-watch-events.js.map +1 -0
  219. package/dist/{utils → runtime}/rebuild-manager.d.ts +1 -0
  220. package/dist/runtime/rebuild-manager.d.ts.map +1 -0
  221. package/dist/{utils → runtime}/rebuild-manager.js +8 -1
  222. package/dist/runtime/rebuild-manager.js.map +1 -0
  223. package/dist/runtime/worker-events.d.ts +22 -0
  224. package/dist/runtime/worker-events.d.ts.map +1 -0
  225. package/dist/runtime/worker-events.js +2 -0
  226. package/dist/runtime/worker-events.js.map +1 -0
  227. package/dist/runtime/worker-utils.d.ts.map +1 -0
  228. package/dist/runtime/worker-utils.js.map +1 -0
  229. package/dist/sd-cli-entry.d.ts.map +1 -1
  230. package/dist/sd-cli-entry.js +61 -54
  231. package/dist/sd-cli-entry.js.map +1 -1
  232. package/dist/sd-cli.js +1 -1
  233. package/dist/sd-cli.js.map +1 -1
  234. package/dist/sd-config.types.d.ts +6 -15
  235. package/dist/sd-config.types.d.ts.map +1 -1
  236. package/dist/typecheck/typecheck-non-package.d.ts.map +1 -0
  237. package/dist/{utils → typecheck}/typecheck-non-package.js +1 -1
  238. package/dist/typecheck/typecheck-non-package.js.map +1 -0
  239. package/dist/typecheck/typecheck-serialization.d.ts.map +1 -0
  240. package/dist/typecheck/typecheck-serialization.js.map +1 -0
  241. package/dist/utils/diagnostic-utils.d.ts +5 -0
  242. package/dist/utils/diagnostic-utils.d.ts.map +1 -1
  243. package/dist/utils/diagnostic-utils.js +15 -0
  244. package/dist/utils/diagnostic-utils.js.map +1 -1
  245. package/dist/utils/orchestrator-utils.d.ts +1 -5
  246. package/dist/utils/orchestrator-utils.d.ts.map +1 -1
  247. package/dist/utils/orchestrator-utils.js +2 -5
  248. package/dist/utils/orchestrator-utils.js.map +1 -1
  249. package/dist/utils/output-utils.d.ts +1 -1
  250. package/dist/utils/output-utils.d.ts.map +1 -1
  251. package/dist/utils/package-classify.d.ts +54 -0
  252. package/dist/utils/package-classify.d.ts.map +1 -0
  253. package/dist/utils/package-classify.js +134 -0
  254. package/dist/utils/package-classify.js.map +1 -0
  255. package/dist/utils/package-utils.d.ts +1 -58
  256. package/dist/utils/package-utils.d.ts.map +1 -1
  257. package/dist/utils/package-utils.js +0 -193
  258. package/dist/utils/package-utils.js.map +1 -1
  259. package/dist/utils/tsc-build.d.ts +1 -1
  260. package/dist/utils/tsc-build.d.ts.map +1 -1
  261. package/dist/utils/tsc-build.js +1 -1
  262. package/dist/utils/tsc-build.js.map +1 -1
  263. package/dist/workers/build-change-filter.d.ts +8 -0
  264. package/dist/workers/build-change-filter.d.ts.map +1 -0
  265. package/dist/workers/build-change-filter.js +16 -0
  266. package/dist/workers/build-change-filter.js.map +1 -0
  267. package/dist/workers/build-watch-paths.d.ts +20 -0
  268. package/dist/workers/build-watch-paths.d.ts.map +1 -0
  269. package/dist/workers/build-watch-paths.js +29 -0
  270. package/dist/workers/build-watch-paths.js.map +1 -0
  271. package/dist/workers/client.worker.d.ts +11 -18
  272. package/dist/workers/client.worker.d.ts.map +1 -1
  273. package/dist/workers/client.worker.js +218 -289
  274. package/dist/workers/client.worker.js.map +1 -1
  275. package/dist/workers/library-build.worker.d.ts +2 -2
  276. package/dist/workers/library-build.worker.d.ts.map +1 -1
  277. package/dist/workers/library-build.worker.js +13 -24
  278. package/dist/workers/library-build.worker.js.map +1 -1
  279. package/dist/workers/lint.worker.d.ts +1 -1
  280. package/dist/workers/lint.worker.d.ts.map +1 -1
  281. package/dist/workers/lint.worker.js +1 -1
  282. package/dist/workers/lint.worker.js.map +1 -1
  283. package/dist/workers/ngtsc-build.worker.d.ts +1 -1
  284. package/dist/workers/ngtsc-build.worker.d.ts.map +1 -1
  285. package/dist/workers/ngtsc-build.worker.js +19 -35
  286. package/dist/workers/ngtsc-build.worker.js.map +1 -1
  287. package/dist/workers/server-build.worker.d.ts +2 -2
  288. package/dist/workers/server-build.worker.d.ts.map +1 -1
  289. package/dist/workers/server-build.worker.js +36 -137
  290. package/dist/workers/server-build.worker.js.map +1 -1
  291. package/dist/workers/server-esbuild-context.d.ts +47 -0
  292. package/dist/workers/server-esbuild-context.d.ts.map +1 -0
  293. package/dist/workers/server-esbuild-context.js +92 -0
  294. package/dist/workers/server-esbuild-context.js.map +1 -0
  295. package/dist/workers/server-runtime.worker.d.ts.map +1 -1
  296. package/dist/workers/server-runtime.worker.js +3 -1
  297. package/dist/workers/server-runtime.worker.js.map +1 -1
  298. package/dist/workers/server-watch-manager.d.ts +44 -0
  299. package/dist/workers/server-watch-manager.d.ts.map +1 -0
  300. package/dist/workers/server-watch-manager.js +87 -0
  301. package/dist/workers/server-watch-manager.js.map +1 -0
  302. package/dist/workers/shared-worker-lifecycle.d.ts +14 -0
  303. package/dist/workers/shared-worker-lifecycle.d.ts.map +1 -0
  304. package/dist/workers/shared-worker-lifecycle.js +17 -0
  305. package/dist/workers/shared-worker-lifecycle.js.map +1 -0
  306. package/package.json +9 -9
  307. package/src/{utils → angular}/angular-build-pipeline.ts +3 -8
  308. package/src/{utils → angular}/angular-build.ts +1 -1
  309. package/src/{utils → angular}/angular-compiler.ts +1 -64
  310. package/src/angular/client-transform-stylesheet.ts +1 -1
  311. package/src/{utils → angular}/ngtsc-build-core.ts +3 -3
  312. package/src/angular/vite-angular-plugin.ts +22 -355
  313. package/src/capacitor/capacitor-build.ts +142 -0
  314. package/src/capacitor/capacitor-config-writer.ts +66 -0
  315. package/src/capacitor/capacitor-icon.ts +75 -0
  316. package/src/capacitor/capacitor-npm-config.ts +192 -0
  317. package/src/capacitor/capacitor.ts +32 -441
  318. package/src/commands/check.ts +2 -2
  319. package/src/commands/dev.ts +6 -6
  320. package/src/commands/lint.ts +1 -1
  321. package/src/commands/publish/deployment-phase.ts +125 -0
  322. package/src/commands/publish/env-utils.ts +44 -0
  323. package/src/commands/publish/git-phase.ts +99 -0
  324. package/src/commands/publish/index.ts +266 -0
  325. package/src/commands/publish/local-publisher.ts +23 -0
  326. package/src/commands/publish/npm-publisher.ts +30 -0
  327. package/src/commands/publish/post-publish-phase.ts +43 -0
  328. package/src/commands/publish/storage-publisher.ts +208 -0
  329. package/src/commands/publish/version-upgrade.ts +132 -0
  330. package/src/commands/replace-deps.ts +1 -1
  331. package/src/commands/watch.ts +6 -7
  332. package/src/deps/replace-deps/collect-deps.ts +92 -0
  333. package/src/{utils/replace-deps.ts → deps/replace-deps/replace-deps-resolve.ts} +4 -188
  334. package/src/deps/replace-deps/replace-deps.ts +193 -0
  335. package/src/{utils → deps/server-externals}/server-production-files.ts +2 -2
  336. package/src/dev-server/dev-http-server.ts +149 -0
  337. package/src/dev-server/hmr-client-script.ts +74 -0
  338. package/src/dev-server/hmr-service.ts +178 -0
  339. package/src/electron/electron.ts +21 -28
  340. package/src/engines/BaseEngine.ts +64 -83
  341. package/src/engines/{ViteEngine.ts → EsbuildClientEngine.ts} +33 -72
  342. package/src/engines/NgtscEngine.ts +3 -11
  343. package/src/engines/ServerEsbuildEngine.ts +3 -11
  344. package/src/engines/TscEngine.ts +3 -11
  345. package/src/engines/index.ts +29 -9
  346. package/src/engines/types.ts +3 -3
  347. package/src/esbuild/esbuild-client-config.ts +230 -0
  348. package/src/{utils → esbuild}/esbuild-config.ts +1 -0
  349. package/src/esbuild/esbuild-index-html.ts +119 -0
  350. package/src/esbuild/esbuild-pwa.ts +139 -0
  351. package/src/esbuild/esbuild-scss-plugin.ts +48 -0
  352. package/src/orchestrators/BaseOrchestrator.ts +118 -0
  353. package/src/orchestrators/BuildOrchestrator.ts +234 -171
  354. package/src/orchestrators/DevOrchestrator.ts +315 -0
  355. package/src/orchestrators/ServerRuntimeManager.ts +85 -0
  356. package/src/orchestrators/TypecheckOrchestrator.ts +166 -117
  357. package/src/orchestrators/WatchOrchestrator.ts +203 -0
  358. package/src/orchestrators/types.ts +18 -0
  359. package/src/{utils → runtime}/engine-stop.ts +1 -1
  360. package/src/runtime/engine-watch-events.ts +121 -0
  361. package/src/{utils → runtime}/rebuild-manager.ts +8 -1
  362. package/src/runtime/worker-events.ts +25 -0
  363. package/src/sd-cli-entry.ts +69 -54
  364. package/src/sd-cli.ts +1 -1
  365. package/src/sd-config.types.ts +6 -16
  366. package/src/{utils → typecheck}/typecheck-non-package.ts +1 -1
  367. package/src/utils/diagnostic-utils.ts +15 -0
  368. package/src/utils/orchestrator-utils.ts +2 -6
  369. package/src/utils/output-utils.ts +1 -1
  370. package/src/utils/package-classify.ts +182 -0
  371. package/src/utils/package-utils.ts +0 -257
  372. package/src/utils/tsc-build.ts +1 -1
  373. package/src/workers/build-change-filter.ts +27 -0
  374. package/src/workers/build-watch-paths.ts +54 -0
  375. package/src/workers/client.worker.ts +258 -328
  376. package/src/workers/library-build.worker.ts +15 -34
  377. package/src/workers/lint.worker.ts +1 -1
  378. package/src/workers/ngtsc-build.worker.ts +19 -46
  379. package/src/workers/server-build.worker.ts +38 -168
  380. package/src/workers/server-esbuild-context.ts +122 -0
  381. package/src/workers/server-runtime.worker.ts +4 -1
  382. package/src/workers/server-watch-manager.ts +124 -0
  383. package/src/workers/shared-worker-lifecycle.ts +24 -0
  384. package/tests/angular/angular-build-pipeline.spec.ts +2 -2
  385. package/tests/angular/angular-compiler-aot.acc.spec.ts +68 -0
  386. package/tests/angular/angular-compiler-aot.spec.ts +80 -0
  387. package/tests/angular/angular-compiler-hmr-removal.verify.md +16 -0
  388. package/tests/angular/vite-angular-plugin-legacy-watch.spec.ts +0 -17
  389. package/tests/angular/vite-angular-plugin-vitest.spec.ts +1 -6
  390. package/tests/angular/vite-angular-plugin-vitest.verify.md +20 -0
  391. package/tests/angular/vite-angular-plugin.spec.ts +4 -178
  392. package/tests/capacitor/capacitor-android.spec.ts +1 -0
  393. package/tests/capacitor/capacitor-build.spec.ts +1 -0
  394. package/tests/capacitor/capacitor-config-writer.acc.spec.ts +108 -0
  395. package/tests/capacitor/capacitor-config-writer.spec.ts +95 -0
  396. package/tests/capacitor/capacitor-icon.spec.ts +1 -0
  397. package/tests/capacitor/capacitor-init.spec.ts +1 -0
  398. package/tests/capacitor/capacitor-npm-config.acc.spec.ts +236 -0
  399. package/tests/capacitor/capacitor-npm-config.spec.ts +132 -0
  400. package/tests/capacitor/capacitor-run.spec.ts +1 -0
  401. package/tests/capacitor/capacitor-workspace.spec.ts +1 -0
  402. package/tests/commands/check.spec.ts +2 -2
  403. package/tests/commands/deployment-phase.acc.spec.ts +142 -0
  404. package/tests/commands/git-phase.acc.spec.ts +158 -0
  405. package/tests/commands/lint.spec.ts +1 -1
  406. package/tests/commands/post-publish-phase.acc.spec.ts +82 -0
  407. package/tests/commands/publish-npm-local-split.verify.md +9 -0
  408. package/tests/commands/publish-responsibility-split.verify.md +13 -0
  409. package/tests/commands/publish-storage-split.verify.md +8 -0
  410. package/tests/commands/publish.spec.ts +1 -1
  411. package/tests/commands/typecheck.spec.ts +18 -18
  412. package/tests/deps/deps-directory-separation.verify.md +15 -0
  413. package/tests/engines/base-engine.spec.ts +65 -6
  414. package/tests/engines/engine-adapter-isolation.spec.ts +11 -18
  415. package/tests/engines/engine-selection.spec.ts +38 -5
  416. package/tests/engines/engine-typecheck-selection.acc.spec.ts +85 -0
  417. package/tests/engines/engine-typecheck-selection.verify.md +8 -0
  418. package/tests/engines/esbuild-client-engine.acc.spec.ts +161 -0
  419. package/tests/engines/esbuild-client-engine.spec.ts +320 -0
  420. package/tests/engines/esbuild-client-engine.verify.md +15 -0
  421. package/tests/engines/normalize-result.verify.md +9 -0
  422. package/tests/engines/vite-dependency-cleanup.verify.md +24 -0
  423. package/tests/orchestrators/build-orchestrator.spec.ts +3 -3
  424. package/tests/orchestrators/dev-orchestrator.spec.ts +799 -0
  425. package/tests/orchestrators/orchestrator-baseenv.verify.md +10 -0
  426. package/tests/orchestrators/orchestrator-diagnostic-formatting.verify.md +10 -0
  427. package/tests/orchestrators/orchestrator-initializemode-signature.verify.md +9 -0
  428. package/tests/orchestrators/typecheck-orchestrator.spec.ts +11 -11
  429. package/tests/orchestrators/watch-orchestrator.spec.ts +511 -0
  430. package/tests/{infra → runtime}/result-collector.spec.ts +1 -1
  431. package/tests/{infra → runtime}/signal-handler.spec.ts +1 -1
  432. package/tests/sd-cli-entry.spec.ts +9 -0
  433. package/tests/utils/angular-build.spec.ts +15 -20
  434. package/tests/utils/angular-compiler-emit.spec.ts +2 -2
  435. package/tests/utils/angular-compiler.spec.ts +2 -2
  436. package/tests/utils/angular-source-file-cache.spec.ts +2 -2
  437. package/tests/utils/concurrency.spec.ts +2 -10
  438. package/tests/utils/dev-http-server.acc.spec.ts +206 -0
  439. package/tests/utils/dev-http-server.spec.ts +181 -0
  440. package/tests/utils/dev-http-server.verify.md +8 -0
  441. package/tests/utils/diagnostic-utils.spec.ts +42 -1
  442. package/tests/utils/engine-stop.spec.ts +1 -1
  443. package/tests/utils/engine-watch-events.acc.spec.ts +217 -0
  444. package/tests/utils/engine-watch-events.spec.ts +141 -0
  445. package/tests/utils/engine-watch-events.verify.md +17 -0
  446. package/tests/utils/esbuild-client-config.acc.spec.ts +443 -0
  447. package/tests/utils/esbuild-client-config.spec.ts +590 -0
  448. package/tests/utils/esbuild-client-config.verify.md +26 -0
  449. package/tests/utils/esbuild-config.spec.ts +11 -1
  450. package/tests/utils/esbuild-index-html.acc.spec.ts +166 -0
  451. package/tests/utils/esbuild-index-html.spec.ts +194 -0
  452. package/tests/utils/esbuild-index-html.verify.md +10 -0
  453. package/tests/utils/esbuild-pwa.acc.spec.ts +203 -0
  454. package/tests/utils/esbuild-pwa.spec.ts +189 -0
  455. package/tests/utils/esbuild-pwa.verify.md +9 -0
  456. package/tests/utils/esbuild-scss-plugin.acc.spec.ts +111 -0
  457. package/tests/utils/esbuild-scss-plugin.spec.ts +150 -0
  458. package/tests/utils/esbuild-scss-plugin.verify.md +8 -0
  459. package/tests/utils/external-modules.spec.ts +1 -1
  460. package/tests/utils/hmr-client-script.acc.spec.ts +128 -0
  461. package/tests/utils/hmr-client-script.spec.ts +44 -0
  462. package/tests/utils/hmr-service-dispatcher.acc.spec.ts +217 -0
  463. package/tests/utils/hmr-service-dispatcher.spec.ts +143 -0
  464. package/tests/utils/hmr-service.acc.spec.ts +139 -0
  465. package/tests/utils/hmr-service.spec.ts +131 -0
  466. package/tests/utils/hmr-service.verify.md +17 -0
  467. package/tests/utils/lint-core.spec.ts +2 -1
  468. package/tests/utils/lint-utils.spec.ts +1 -1
  469. package/tests/utils/lint-with-program.spec.ts +1 -1
  470. package/tests/utils/ngtsc-build-core-write-emit.spec.ts +19 -19
  471. package/tests/utils/ngtsc-build-core.spec.ts +4 -4
  472. package/tests/utils/orchestrator-utils.spec.ts +2 -2
  473. package/tests/utils/output-utils.spec.ts +1 -1
  474. package/tests/utils/package-utils.spec.ts +1 -1
  475. package/tests/utils/rebuild-manager.spec.ts +20 -7
  476. package/tests/utils/replace-deps-split.verify.md +15 -0
  477. package/tests/utils/replace-deps-watch.acc.spec.ts +131 -0
  478. package/tests/utils/replace-deps-watch.spec.ts +91 -0
  479. package/tests/utils/replace-deps-watch.verify.md +9 -0
  480. package/tests/utils/replace-deps.spec.ts +1 -1
  481. package/tests/utils/scss-compiler.spec.ts +1 -1
  482. package/tests/utils/tsc-build.spec.ts +1 -1
  483. package/tests/utils/typecheck-non-package.spec.ts +2 -2
  484. package/tests/utils/worker-utils.spec.ts +2 -1
  485. package/tests/workers/build-change-filter.acc.spec.ts +78 -0
  486. package/tests/workers/build-change-filter.spec.ts +39 -0
  487. package/tests/workers/build-watch-paths-library.verify.md +10 -0
  488. package/tests/workers/build-watch-paths-ngtsc-server.verify.md +12 -0
  489. package/tests/workers/build-watch-paths.acc.spec.ts +101 -0
  490. package/tests/workers/build-watch-paths.spec.ts +121 -0
  491. package/tests/workers/client-worker-browser-support.verify.md +7 -0
  492. package/tests/workers/client-worker-onend-sync.verify.md +7 -0
  493. package/tests/workers/client-worker.acc.spec.ts +185 -0
  494. package/tests/workers/client-worker.spec.ts +91 -178
  495. package/tests/workers/library-build-lint.spec.ts +3 -3
  496. package/tests/workers/library-build-worker.spec.ts +10 -11
  497. package/tests/workers/ngtsc-build-lint.spec.ts +4 -4
  498. package/tests/workers/ngtsc-build-worker.spec.ts +2 -2
  499. package/tests/workers/server-build-lint.spec.ts +4 -4
  500. package/tests/workers/server-build-worker.spec.ts +14 -15
  501. package/tests/workers/server-esbuild-context-integration.verify.md +10 -0
  502. package/tests/workers/server-esbuild-context.acc.spec.ts +98 -0
  503. package/tests/workers/server-esbuild-context.spec.ts +198 -0
  504. package/tests/workers/server-runtime-worker.spec.ts +4 -3
  505. package/tests/workers/server-watch-manager.acc.spec.ts +162 -0
  506. package/tests/workers/server-watch-manager.spec.ts +199 -0
  507. package/tests/workers/shared-worker-lifecycle.acc.spec.ts +27 -0
  508. package/tests/workers/shared-worker-lifecycle.spec.ts +47 -0
  509. package/dist/angular/vite-postcss-inline-plugin.d.ts +0 -18
  510. package/dist/angular/vite-postcss-inline-plugin.d.ts.map +0 -1
  511. package/dist/angular/vite-postcss-inline-plugin.js +0 -108
  512. package/dist/angular/vite-postcss-inline-plugin.js.map +0 -1
  513. package/dist/commands/publish.d.ts.map +0 -1
  514. package/dist/commands/publish.js +0 -689
  515. package/dist/commands/publish.js.map +0 -1
  516. package/dist/engines/ViteEngine.d.ts.map +0 -1
  517. package/dist/engines/ViteEngine.js.map +0 -1
  518. package/dist/infra/ResultCollector.d.ts.map +0 -1
  519. package/dist/infra/ResultCollector.js.map +0 -1
  520. package/dist/infra/SignalHandler.d.ts.map +0 -1
  521. package/dist/infra/SignalHandler.js.map +0 -1
  522. package/dist/orchestrators/DevWatchOrchestrator.d.ts +0 -63
  523. package/dist/orchestrators/DevWatchOrchestrator.d.ts.map +0 -1
  524. package/dist/orchestrators/DevWatchOrchestrator.js +0 -478
  525. package/dist/orchestrators/DevWatchOrchestrator.js.map +0 -1
  526. package/dist/utils/angular-build-pipeline.d.ts.map +0 -1
  527. package/dist/utils/angular-build-pipeline.js.map +0 -1
  528. package/dist/utils/angular-build.d.ts.map +0 -1
  529. package/dist/utils/angular-build.js.map +0 -1
  530. package/dist/utils/angular-compiler.d.ts.map +0 -1
  531. package/dist/utils/angular-compiler.js.map +0 -1
  532. package/dist/utils/engine-stop.d.ts.map +0 -1
  533. package/dist/utils/engine-stop.js.map +0 -1
  534. package/dist/utils/esbuild-config.d.ts.map +0 -1
  535. package/dist/utils/esbuild-config.js.map +0 -1
  536. package/dist/utils/hmr-candidates.d.ts +0 -15
  537. package/dist/utils/hmr-candidates.d.ts.map +0 -1
  538. package/dist/utils/hmr-candidates.js +0 -234
  539. package/dist/utils/hmr-candidates.js.map +0 -1
  540. package/dist/utils/lint-core.d.ts.map +0 -1
  541. package/dist/utils/lint-core.js.map +0 -1
  542. package/dist/utils/lint-utils.d.ts.map +0 -1
  543. package/dist/utils/lint-utils.js.map +0 -1
  544. package/dist/utils/lint-with-program.d.ts.map +0 -1
  545. package/dist/utils/lint-with-program.js.map +0 -1
  546. package/dist/utils/ngtsc-build-core.d.ts.map +0 -1
  547. package/dist/utils/ngtsc-build-core.js.map +0 -1
  548. package/dist/utils/rebuild-manager.d.ts.map +0 -1
  549. package/dist/utils/rebuild-manager.js.map +0 -1
  550. package/dist/utils/replace-deps.d.ts.map +0 -1
  551. package/dist/utils/replace-deps.js.map +0 -1
  552. package/dist/utils/scss-compiler.d.ts.map +0 -1
  553. package/dist/utils/scss-compiler.js.map +0 -1
  554. package/dist/utils/server-production-files.d.ts.map +0 -1
  555. package/dist/utils/server-production-files.js.map +0 -1
  556. package/dist/utils/typecheck-non-package.d.ts.map +0 -1
  557. package/dist/utils/typecheck-non-package.js.map +0 -1
  558. package/dist/utils/typecheck-serialization.d.ts.map +0 -1
  559. package/dist/utils/typecheck-serialization.js.map +0 -1
  560. package/dist/utils/vite-config.d.ts +0 -50
  561. package/dist/utils/vite-config.d.ts.map +0 -1
  562. package/dist/utils/vite-config.js +0 -242
  563. package/dist/utils/vite-config.js.map +0 -1
  564. package/dist/utils/vite-pwa-plugin.d.ts +0 -9
  565. package/dist/utils/vite-pwa-plugin.d.ts.map +0 -1
  566. package/dist/utils/vite-pwa-plugin.js +0 -139
  567. package/dist/utils/vite-pwa-plugin.js.map +0 -1
  568. package/dist/utils/vite-scope-watch-plugin.d.ts +0 -24
  569. package/dist/utils/vite-scope-watch-plugin.d.ts.map +0 -1
  570. package/dist/utils/vite-scope-watch-plugin.js +0 -51
  571. package/dist/utils/vite-scope-watch-plugin.js.map +0 -1
  572. package/dist/utils/worker-events.d.ts +0 -66
  573. package/dist/utils/worker-events.d.ts.map +0 -1
  574. package/dist/utils/worker-events.js +0 -55
  575. package/dist/utils/worker-events.js.map +0 -1
  576. package/dist/utils/worker-utils.d.ts.map +0 -1
  577. package/dist/utils/worker-utils.js.map +0 -1
  578. package/src/angular/vite-postcss-inline-plugin.ts +0 -139
  579. package/src/commands/publish.ts +0 -850
  580. package/src/orchestrators/DevWatchOrchestrator.ts +0 -594
  581. package/src/utils/hmr-candidates.ts +0 -327
  582. package/src/utils/vite-config.ts +0 -318
  583. package/src/utils/vite-pwa-plugin.ts +0 -168
  584. package/src/utils/vite-scope-watch-plugin.ts +0 -77
  585. package/src/utils/worker-events.ts +0 -128
  586. package/tests/angular/angular-compiler-hmr.spec.ts +0 -152
  587. package/tests/angular/hmr-candidates.spec.ts +0 -158
  588. package/tests/angular/linker-disk-cache.spec.ts +0 -171
  589. package/tests/angular/vite-angular-plugin-hmr-fallback.spec.ts +0 -333
  590. package/tests/angular/vite-angular-plugin-hmr.spec.ts +0 -320
  591. package/tests/angular/vite-angular-plugin-scss-hmr.spec.ts +0 -95
  592. package/tests/angular/vite-postcss-inline-plugin.spec.ts +0 -60
  593. package/tests/engines/vite-engine.spec.ts +0 -409
  594. package/tests/orchestrators/dev-watch-orchestrator.spec.ts +0 -1542
  595. package/tests/utils/vite-config.spec.ts +0 -780
  596. package/tests/utils/vite-pwa-plugin.spec.ts +0 -401
  597. package/tests/utils/vite-scope-watch-plugin.spec.ts +0 -218
  598. package/tests/utils/worker-events.spec.ts +0 -147
  599. package/tests/workers/client-worker-legacy.spec.ts +0 -659
  600. /package/dist/{utils → angular}/ngtsc-build-core.js +0 -0
  601. /package/dist/{utils → angular}/scss-compiler.d.ts +0 -0
  602. /package/dist/{utils → angular}/scss-compiler.js +0 -0
  603. /package/dist/{utils → esbuild}/esbuild-config.d.ts +0 -0
  604. /package/dist/{utils → lint}/lint-core.d.ts +0 -0
  605. /package/dist/{utils → lint}/lint-core.js +0 -0
  606. /package/dist/{utils → lint}/lint-utils.d.ts +0 -0
  607. /package/dist/{utils → lint}/lint-utils.js +0 -0
  608. /package/dist/{utils → lint}/lint-with-program.d.ts +0 -0
  609. /package/dist/{utils → lint}/lint-with-program.js +0 -0
  610. /package/dist/{infra → runtime}/ResultCollector.d.ts +0 -0
  611. /package/dist/{infra → runtime}/ResultCollector.js +0 -0
  612. /package/dist/{infra → runtime}/SignalHandler.d.ts +0 -0
  613. /package/dist/{infra → runtime}/SignalHandler.js +0 -0
  614. /package/dist/{utils → runtime}/worker-utils.d.ts +0 -0
  615. /package/dist/{utils → runtime}/worker-utils.js +0 -0
  616. /package/dist/{utils → typecheck}/typecheck-non-package.d.ts +0 -0
  617. /package/dist/{utils → typecheck}/typecheck-serialization.d.ts +0 -0
  618. /package/dist/{utils → typecheck}/typecheck-serialization.js +0 -0
  619. /package/src/{utils → angular}/scss-compiler.ts +0 -0
  620. /package/src/{utils → lint}/lint-core.ts +0 -0
  621. /package/src/{utils → lint}/lint-utils.ts +0 -0
  622. /package/src/{utils → lint}/lint-with-program.ts +0 -0
  623. /package/src/{infra → runtime}/ResultCollector.ts +0 -0
  624. /package/src/{infra → runtime}/SignalHandler.ts +0 -0
  625. /package/src/{utils → runtime}/worker-utils.ts +0 -0
  626. /package/src/{utils → typecheck}/typecheck-serialization.ts +0 -0
@@ -1,18 +1,21 @@
1
- import { createServer, build as viteBuild, type ViteDevServer } from "vite";
2
1
  import path from "path";
3
2
  import fs from "node:fs";
4
- import http from "node:http";
5
- import mime from "mime";
6
3
  import { createWorker } from "@simplysm/core-node";
7
4
  import { err as errNs } from "@simplysm/core-common";
8
- import { consola } from "consola";
9
- import { registerCleanupHandlers, setupWorkerConsola } from "../utils/worker-utils.js";
10
- import { createClientViteConfig } from "../utils/vite-config.js";
11
- import type { ScopeWatchReplaceDep } from "../utils/vite-scope-watch-plugin.js";
12
- import type { SdPwaConfig } from "../sd-config.types.js";
13
- import { loadSdConfig } from "../utils/sd-config.js";
14
-
15
- setupWorkerConsola();
5
+ import { setupWorkerLifecycle } from "./shared-worker-lifecycle.js";
6
+ import {
7
+ createClientEsbuildContext,
8
+ type ClientEsbuildResult,
9
+ } from "../esbuild/esbuild-client-config.js";
10
+ import { generateIndexHtml } from "../esbuild/esbuild-index-html.js";
11
+ import { applyPwa, createPwaHtmlTransform } from "../esbuild/esbuild-pwa.js";
12
+ import { createDevHttpServer, type DevHttpServer } from "../dev-server/dev-http-server.js";
13
+ import { createHmrService, type HmrService } from "../dev-server/hmr-service.js";
14
+ import { createHmrPostTransform } from "../dev-server/hmr-client-script.js";
15
+ import { copyPublicFiles, watchPublicFiles } from "../utils/copy-public.js";
16
+ import type { SdBrowserSupportConfig, SdPwaConfig } from "../sd-config.types.js";
17
+ import type { FsWatcher } from "@simplysm/core-node";
18
+ import type esbuild from "esbuild";
16
19
 
17
20
  //#region Types
18
21
 
@@ -21,24 +24,20 @@ export interface ClientBuildInfo {
21
24
  name: string;
22
25
  cwd: string;
23
26
  pkgDir: string;
24
- /** 클라이언트 프레임워크 선택 */
25
- framework?: "angular" | "solid";
26
- /** Vite dev server 포트 (standalone clients with server: number) */
27
+ /** dev server 포트 (standalone clients with server: number) */
27
28
  port?: number;
28
29
  /** 빌드 시 치환할 환경변수 */
29
30
  env?: Record<string, string>;
30
31
  /** 런타임 설정 (dist/.config.json에 기록) */
31
32
  configs?: Record<string, unknown>;
32
- /** replaceDeps 목록 (dev 모드에서 sdScopeWatchPlugin에 전달) */
33
- replaceDeps?: ScopeWatchReplaceDep[];
34
33
  /** PWA 설정. false로 비활성화. 미설정 시 기본값으로 활성화 */
35
34
  pwa?: false | SdPwaConfig;
36
- /** Vite optimizeDeps.exclude에 전달할 패키지 목록 */
37
- exclude?: string[];
38
35
  /** 빌드 출력 경로 (미설정 시 pkgDir/dist) */
39
36
  outDir?: string;
40
- /** Vite base 경로 (미설정 시 /{pkgName}/) */
37
+ /** base 경로 (미설정 시 /{pkgName}/) */
41
38
  base?: string;
39
+ /** 브라우저 지원 설정 (메인 프로세스에서 전달, Worker 내 sd.config.ts 재로드 방지) */
40
+ browserSupport?: SdBrowserSupportConfig;
42
41
  }
43
42
 
44
43
  /** Client 빌드 결과 */
@@ -54,293 +53,282 @@ export interface ClientWorkerEvents extends Record<string, unknown> {
54
53
  build: ClientBuildResult;
55
54
  serverReady: { port: number };
56
55
  error: { message: string };
57
- scopeRebuild: Record<string, never>;
58
56
  }
59
57
 
60
58
  //#endregion
61
59
 
62
60
  //#region Worker
63
61
 
64
- const logger = consola.withTag("sd:cli:client:worker");
65
-
66
- /** viteBuild({ build: { watch: {} } }) 반환 타입의 최소 인터페이스 */
67
- interface WatcherHandle {
68
- on(event: string, handler: (event: { code: string; error?: { message: string } }) => void): void;
69
- close(): Promise<void>;
70
- }
71
-
72
- let viteServer: ViteDevServer | undefined;
73
- let rollupWatcher: WatcherHandle | undefined;
74
- let legacyHttpServer: http.Server | undefined;
75
-
76
- /** SSE 연결된 클라이언트 목록 (live reload용) */
77
- const sseClients = new Set<http.ServerResponse>();
78
-
79
- /** SSE 연결된 모든 클라이언트에 reload 신호를 전송한다 */
80
- function notifyLiveReload(): void {
81
- for (const client of sseClients) {
82
- client.write("data: reload\n\n");
83
- }
84
- }
85
-
86
-
87
- /** live reload 클라이언트 스크립트 (HTML에 주입) */
88
- const LIVE_RELOAD_SCRIPT = `<script>(function(){var s=new EventSource("__live-reload");s.onmessage=function(){location.reload();};})()</script>`;
89
-
90
- /**
91
- * HTML 응답 시 live reload 스크립트를 </body> 직전에 주입한다.
92
- */
93
- function injectLiveReloadScript(html: string): string {
94
- const idx = html.lastIndexOf("</body>");
95
- if (idx !== -1) {
96
- return html.slice(0, idx) + LIVE_RELOAD_SCRIPT + html.slice(idx);
97
- }
98
- return html + LIVE_RELOAD_SCRIPT;
99
- }
100
-
101
- /**
102
- * legacy dev 모드용 HTTP 정적 파일 서버를 생성한다.
103
- * dist/ 디렉토리의 파일을 서빙하고, SPA fallback + SSE live reload를 지원한다.
104
- */
105
- function createLegacyHttpServer(distDir: string, basePath: string): http.Server {
106
- return http.createServer((req, res) => {
107
- const url = (req.url ?? "/").split("?")[0];
108
-
109
- // basePath prefix 제거
110
- let relativePath: string;
111
- if (url.startsWith(basePath)) {
112
- relativePath = url.slice(basePath.length);
113
- } else {
114
- res.writeHead(404);
115
- res.end("Not Found");
116
- return;
117
- }
118
-
119
- // SSE live reload 엔드포인트
120
- if (relativePath === "__live-reload" || relativePath === "/__live-reload") {
121
- res.writeHead(200, {
122
- "Content-Type": "text/event-stream",
123
- "Cache-Control": "no-cache",
124
- "Connection": "keep-alive",
125
- });
126
- sseClients.add(res);
127
- req.on("close", () => {
128
- sseClients.delete(res);
129
- });
130
- return;
131
- }
132
-
133
- // 빈 경로 또는 / → index.html
134
- if (relativePath === "" || relativePath === "/") {
135
- relativePath = "index.html";
136
- }
62
+ let esbuildResult: ClientEsbuildResult | undefined;
63
+ let devServer: DevHttpServer | undefined;
64
+ let hmrService: HmrService | undefined;
65
+ let publicWatcher: FsWatcher | undefined;
137
66
 
138
- // 선행 슬래시 제거
139
- if (relativePath.startsWith("/")) {
140
- relativePath = relativePath.slice(1);
141
- }
142
-
143
- const filePath = path.join(distDir, relativePath);
144
- const ext = path.extname(filePath);
145
-
146
- // 파일 존재 확인
147
- if (fs.existsSync(filePath) && !fs.statSync(filePath).isDirectory()) {
148
- const contentType = mime.getType(ext) ?? "application/octet-stream";
149
- if (ext === ".html") {
150
- // HTML: live reload 스크립트 주입
151
- const content = injectLiveReloadScript(fs.readFileSync(filePath, "utf-8"));
152
- res.writeHead(200, { "Content-Type": contentType });
153
- res.end(content);
154
- } else {
155
- const content = fs.readFileSync(filePath);
156
- res.writeHead(200, { "Content-Type": contentType });
157
- res.end(content);
158
- }
159
- } else {
160
- // SPA fallback: index.html 반환 (live reload 스크립트 주입)
161
- const indexPath = path.join(distDir, "index.html");
162
- if (fs.existsSync(indexPath)) {
163
- const content = injectLiveReloadScript(fs.readFileSync(indexPath, "utf-8"));
164
- res.writeHead(200, { "Content-Type": "text/html" });
165
- res.end(content);
166
- } else {
167
- res.writeHead(404);
168
- res.end("Not Found");
169
- }
170
- }
171
- });
172
- }
67
+ const { logger, guardStartWatch } = setupWorkerLifecycle("client", async () => {
68
+ await stopWatch();
69
+ });
173
70
 
174
- async function resolvePackageInfo(info: ClientBuildInfo): Promise<{
71
+ function resolvePackageInfo(info: ClientBuildInfo): {
175
72
  pkgName: string;
176
73
  legacyModule: boolean;
177
- }> {
74
+ browserslist: string | string[] | undefined;
75
+ postcssPlugins: [string, (object | string)?][] | undefined;
76
+ } {
178
77
  const pkgJsonPath = path.join(info.pkgDir, "package.json");
179
78
  const pkgName = (
180
79
  JSON.parse(fs.readFileSync(pkgJsonPath, "utf-8")) as { name: string }
181
80
  ).name;
182
- const name = pkgName.replace(/^@[^/]+\//, "");
183
- const sdConfig = await loadSdConfig({ cwd: info.cwd, dev: true, opt: [] });
184
- const pkgConfig = sdConfig.packages[name];
185
- const legacyModule = pkgConfig?.target === "client" ? pkgConfig.browserSupport?.legacyModule === true : false;
186
- return { pkgName, legacyModule };
81
+ return {
82
+ pkgName,
83
+ legacyModule: info.browserSupport?.legacyModule === true,
84
+ browserslist: info.browserSupport?.browserslist,
85
+ postcssPlugins: info.browserSupport?.postCss?.plugins,
86
+ };
187
87
  }
188
88
 
189
89
  /**
190
- * dev server 시작. Vite dev server를 생성하고 listen한다.
191
- * 서버가 준비되면 serverReady 이벤트로 포트를 알린다.
90
+ * 프로덕션 빌드
192
91
  */
193
- async function startWatch(info: ClientBuildInfo): Promise<ClientBuildResult> {
194
- const { pkgName, legacyModule } = await resolvePackageInfo(info);
195
- if (legacyModule) {
196
- return startLegacyWatch(info, pkgName);
197
- }
198
- logger.debug(`[${info.name}] client worker startWatch 시작 (port: ${info.port ?? "auto"})`);
92
+ async function build(info: ClientBuildInfo): Promise<ClientBuildResult> {
93
+ logger.debug(`[${info.name}] client worker build 시작`);
199
94
  try {
95
+ const { pkgName, legacyModule, browserslist, postcssPlugins } =
96
+ resolvePackageInfo(info);
97
+
98
+ const outdir = info.outDir ?? path.join(info.pkgDir, "dist");
99
+
100
+ // 1. public/ 복사
101
+ await copyPublicFiles(info.pkgDir, false);
200
102
 
201
- // polyfills.ts 자동 감지
103
+ // 2. polyfills 감지
202
104
  const polyfillsPath = path.join(info.pkgDir, "src", "polyfills.ts");
203
- const polyfills = fs.existsSync(polyfillsPath) ? ["./src/polyfills.ts"] : undefined;
105
+ const polyfills = fs.existsSync(polyfillsPath) ? ["src/polyfills.ts"] : undefined;
204
106
 
205
- const viteConfig = await createClientViteConfig({
206
- framework: info.framework,
107
+ // 3. esbuild context 생성
108
+ const entryNames = ["main", ...(polyfills != null ? ["polyfills"] : [])];
109
+
110
+ const templateUpdates = new Map<string, string>();
111
+ const ctx = await createClientEsbuildContext({
207
112
  pkgDir: info.pkgDir,
208
- pkgName,
209
- mode: "dev",
210
- serverPort: info.port ?? 0,
113
+ cwd: info.cwd,
114
+ mode: "build",
211
115
  env: info.env,
212
- onBuildStart: () => sender.send("buildStart", {}),
213
- onBuild: (result) => sender.send("build", result),
214
- replaceDeps: info.replaceDeps,
215
- onScopeRebuild: () => sender.send("scopeRebuild", {}),
116
+ outdir,
117
+ browserslist,
216
118
  polyfills,
217
- pwa: info.pwa,
218
- exclude: info.exclude,
119
+ legacyModule,
120
+ postcssPlugins,
121
+ postcssConfigPath: info.pkgDir,
122
+ templateUpdates,
219
123
  });
220
124
 
221
- logger.debug(`[${info.name}] Vite server 생성 시작`);
222
- viteServer = await createServer(viteConfig);
223
- await viteServer.listen();
224
- logger.debug(`[${info.name}] Vite server listen 완료`);
225
-
226
- // 실제 포트 감지
227
- const address = viteServer.httpServer?.address();
228
- const actualPort =
229
- typeof address === "object" && address != null ? address.port : undefined;
230
-
231
- if (actualPort == null) {
232
- sender.send("error", {
233
- message: "Vite dev server 포트를 감지할 수 없습니다.",
234
- });
235
- return {
236
- success: false,
237
- errors: ["Vite dev server 포트를 감지할 수 없습니다."],
238
- };
239
- }
125
+ // 4. 빌드 실행
126
+ const result = await ctx.context.rebuild();
240
127
 
241
- sender.send("serverReady", { port: actualPort });
128
+ // 5. index.html 생성
129
+ const name = pkgName.replace(/^@[^/]+\//, "");
130
+ const basePath = info.base ?? `/${name}/`;
131
+ const indexPath = path.join(info.pkgDir, "src", "index.html");
242
132
 
243
- // .dev-port 기록 (device 명령어에서 자동 탐지용)
244
- const distDir = path.join(info.pkgDir, "dist");
245
- fs.mkdirSync(distDir, { recursive: true });
246
- fs.writeFileSync(path.join(distDir, ".dev-port"), String(actualPort));
133
+ const pwaHtmlTransform =
134
+ info.pwa !== false ? createPwaHtmlTransform() : undefined;
247
135
 
248
- // .config.json 생성
249
- writeConfigJson(distDir, info.configs);
136
+ const indexResult = await generateIndexHtml({
137
+ indexPath,
138
+ metafile: result.metafile!,
139
+ outdir,
140
+ baseHref: basePath,
141
+ mode: "build",
142
+ entryNames,
143
+ postTransform: pwaHtmlTransform,
144
+ });
145
+
146
+ fs.writeFileSync(path.join(outdir, "index.html"), indexResult.content);
250
147
 
251
- return { success: true };
148
+ // 6. PWA 적용
149
+ await applyPwa({
150
+ pkgDir: info.pkgDir,
151
+ pkgName: name,
152
+ cwd: info.cwd,
153
+ outdir,
154
+ baseHref: basePath,
155
+ mode: "build",
156
+ pwa: info.pwa,
157
+ });
158
+
159
+ // 7. 리소스 해제
160
+ await ctx.context.dispose();
161
+ // SourceFileCache는 LMDB 기반. context.dispose()에 의해 정리됨.
162
+
163
+ // 8. .config.json 기록
164
+ writeConfigJson(path.join(info.pkgDir, "dist"), info.configs);
165
+
166
+ logger.debug(`[${info.name}] client worker build 완료`);
167
+ return {
168
+ success: indexResult.errors.length === 0,
169
+ errors: indexResult.errors.length > 0 ? indexResult.errors : undefined,
170
+ warnings: indexResult.warnings.length > 0 ? indexResult.warnings : undefined,
171
+ };
252
172
  } catch (err) {
253
- const message = errNs.message(err);
254
- sender.send("error", { message });
255
- return { success: false, errors: [message] };
173
+ const errors: string[] = [];
174
+ if (err != null && typeof err === "object" && "errors" in err) {
175
+ const buildErrors = (err as { errors: Array<{ text: string }> }).errors;
176
+ errors.push(...buildErrors.map((e) => e.text));
177
+ }
178
+ if (errors.length === 0) {
179
+ errors.push(errNs.message(err));
180
+ }
181
+ logger.debug(`[${info.name}] client worker build 예외: ${errors.join("; ")}`);
182
+ return { success: false, errors };
256
183
  }
257
184
  }
258
185
 
259
186
  /**
260
- * legacy watch 시작. Vite build --watch로 파일 변경을 감시한다.
261
- * legacyModule: true일 때 createServer 대신 사용한다.
187
+ * dev watch 시작
262
188
  */
263
- async function startLegacyWatch(info: ClientBuildInfo, pkgName: string): Promise<ClientBuildResult> {
264
- logger.debug(`[${info.name}] client worker startLegacyWatch 시작`);
189
+ async function startWatch(info: ClientBuildInfo): Promise<ClientBuildResult> {
190
+ guardStartWatch();
191
+ const { pkgName, legacyModule, browserslist, postcssPlugins } =
192
+ resolvePackageInfo(info);
193
+
194
+ logger.debug(
195
+ `[${info.name}] client worker startWatch 시작 (port: ${info.port ?? "auto"}, legacy: ${legacyModule})`,
196
+ );
197
+
265
198
  try {
199
+ const outdir = path.join(info.pkgDir, "dist");
200
+ const name = pkgName.replace(/^@[^/]+\//, "");
201
+ const basePath = info.base ?? `/${name}/`;
266
202
 
267
- // dist 초기화 (첫 빌드만 비움)
268
- const distDir = path.join(info.pkgDir, "dist");
269
- fs.rmSync(distDir, { recursive: true, force: true });
203
+ // 1. dist/ 초기화
204
+ fs.rmSync(outdir, { recursive: true, force: true });
270
205
 
271
- // polyfills.ts 자동 감지
206
+ // 2. public/ 복사 + 감시
207
+ publicWatcher = await watchPublicFiles(info.pkgDir, true);
208
+
209
+ // 3. polyfills 감지
272
210
  const polyfillsPath = path.join(info.pkgDir, "src", "polyfills.ts");
273
- const polyfills = fs.existsSync(polyfillsPath) ? ["./src/polyfills.ts"] : undefined;
211
+ const polyfills = fs.existsSync(polyfillsPath) ? ["src/polyfills.ts"] : undefined;
212
+ const entryNames = ["main", ...(polyfills != null ? ["polyfills"] : [])];
213
+
214
+ // 4. templateUpdates Map + esbuild context 생성
215
+ const templateUpdates = new Map<string, string>();
216
+ let initialBuildResolve: ((result: ClientBuildResult) => void) | undefined;
217
+ let isInitialBuild = true;
274
218
 
275
- const viteConfig = await createClientViteConfig({
276
- framework: info.framework,
219
+ esbuildResult = await createClientEsbuildContext({
277
220
  pkgDir: info.pkgDir,
278
- pkgName,
221
+ cwd: info.cwd,
279
222
  mode: "dev",
280
- serverPort: 0,
281
223
  env: info.env,
282
- watch: true,
283
- onBuildStart: () => sender.send("buildStart", {}),
284
- onBuild: (result) => sender.send("build", result),
285
- replaceDeps: info.replaceDeps,
286
- onScopeRebuild: () => sender.send("scopeRebuild", {}),
224
+ outdir,
225
+ browserslist,
287
226
  polyfills,
288
- pwa: false,
289
- exclude: info.exclude,
290
- });
227
+ legacyModule,
228
+ postcssPlugins,
229
+ postcssConfigPath: info.pkgDir,
230
+ templateUpdates: legacyModule ? undefined : templateUpdates,
231
+ plugins: [
232
+ {
233
+ name: "sd-build-start",
234
+ setup(pluginBuild: esbuild.PluginBuild) {
235
+ pluginBuild.onStart(() => {
236
+ if (!isInitialBuild) {
237
+ sender.send("buildStart", {});
238
+ }
239
+ });
240
+ },
241
+ },
242
+ ],
243
+ onEnd: async (result: esbuild.BuildResult) => {
244
+ try {
245
+ // index.html 재생성
246
+ if (result.metafile != null) {
247
+ const hmrPostTransform = createHmrPostTransform(basePath);
248
+ const indexPath = path.join(info.pkgDir, "src", "index.html");
249
+ const indexResult = await generateIndexHtml({
250
+ indexPath,
251
+ metafile: result.metafile,
252
+ outdir,
253
+ baseHref: basePath,
254
+ mode: "dev",
255
+ entryNames,
256
+ postTransform: hmrPostTransform,
257
+ });
258
+ fs.writeFileSync(path.join(outdir, "index.html"), indexResult.content);
259
+ }
291
260
 
292
- const watcher = (await viteBuild(viteConfig)) as WatcherHandle;
293
- rollupWatcher = watcher;
261
+ // HMR 메시지 디스패치
262
+ if (hmrService != null && result.metafile != null && !isInitialBuild) {
263
+ hmrService.onBuildEnd(result.metafile);
264
+ }
294
265
 
295
- // .config.json 생성
296
- writeConfigJson(path.join(info.pkgDir, "dist"), info.configs);
266
+ // build 이벤트 전송
267
+ const success = result.errors.length === 0;
268
+ if (!isInitialBuild) {
269
+ sender.send("build", {
270
+ success,
271
+ errors:
272
+ result.errors.length > 0
273
+ ? result.errors.map((e) => e.text)
274
+ : undefined,
275
+ warnings:
276
+ result.warnings.length > 0
277
+ ? result.warnings.map((w) => w.text)
278
+ : undefined,
279
+ });
280
+ }
297
281
 
298
- // HTTP 정적 파일 서버 시작
299
- const name = pkgName.replace(/^@[^/]+\//, "");
300
- const basePath = `/${name}/`;
301
- const httpServer = createLegacyHttpServer(distDir, basePath);
302
- legacyHttpServer = httpServer;
303
-
304
- const serverPort = await new Promise<number>((resolve, reject) => {
305
- httpServer.listen(info.port ?? 0, "0.0.0.0", () => {
306
- const addr = httpServer.address();
307
- if (typeof addr === "object" && addr != null) {
308
- resolve(addr.port);
309
- } else {
310
- reject(new Error("HTTP 서버 포트를 감지할 수 없습니다."));
282
+ // 초기 빌드 완료 resolve
283
+ if (isInitialBuild) {
284
+ isInitialBuild = false;
285
+ initialBuildResolve?.({ success });
286
+ }
287
+ } catch (err) {
288
+ const message = errNs.message(err);
289
+ sender.send("error", { message });
290
+ if (isInitialBuild) {
291
+ isInitialBuild = false;
292
+ initialBuildResolve?.({ success: false, errors: [message] });
293
+ }
311
294
  }
312
- });
313
- httpServer.on("error", reject);
295
+ },
314
296
  });
315
297
 
316
- sender.send("serverReady", { port: serverPort });
298
+ // 5. HTTP dev server 생성
299
+ const httpDevServer = createDevHttpServer({
300
+ distDir: outdir,
301
+ basePath,
302
+ port: info.port ?? 0,
303
+ onRequest: (req, res) => hmrService?.handleRequest(req, res) ?? false,
304
+ });
305
+ devServer = httpDevServer;
317
306
 
318
- // .dev-port 기록 (device 명령어에서 자동 탐지용)
319
- fs.writeFileSync(path.join(info.pkgDir, "dist", ".dev-port"), String(serverPort));
307
+ // 6. HMR WebSocket 서비스 생성
308
+ hmrService = createHmrService({
309
+ httpServer: httpDevServer.httpServer,
310
+ basePath,
311
+ templateUpdates,
312
+ });
320
313
 
321
- // 빌드 완료 대기
322
- return await new Promise<ClientBuildResult>((resolve) => {
323
- let firstBuildResolved = false;
314
+ // 7. esbuild watch 시작 + 초기 빌드 대기
315
+ await esbuildResult.context.watch();
324
316
 
325
- watcher.on("event", (event: { code: string; error?: { message: string } }) => {
326
- if (event.code === "END") {
327
- if (!firstBuildResolved) {
328
- firstBuildResolved = true;
329
- resolve({ success: true });
330
- } else {
331
- // 재빌드 완료 → 브라우저 live reload
332
- notifyLiveReload();
333
- }
334
- } else if (event.code === "ERROR") {
335
- const message = event.error?.message ?? "Unknown build error";
336
- sender.send("error", { message });
337
- if (!firstBuildResolved) {
338
- firstBuildResolved = true;
339
- resolve({ success: false, errors: [message] });
340
- }
341
- }
342
- });
317
+ const initialResult = await new Promise<ClientBuildResult>((resolve) => {
318
+ initialBuildResolve = resolve;
343
319
  });
320
+
321
+ // 8. HTTP 서버 시작
322
+ const actualPort = await httpDevServer.listen();
323
+
324
+ // 9. serverReady 이벤트 전송
325
+ sender.send("serverReady", { port: actualPort });
326
+
327
+ // 10. .config.json + .dev-port 기록
328
+ writeConfigJson(outdir, info.configs);
329
+ fs.writeFileSync(path.join(outdir, ".dev-port"), String(actualPort));
330
+
331
+ return initialResult;
344
332
  } catch (err) {
345
333
  const message = errNs.message(err);
346
334
  sender.send("error", { message });
@@ -349,90 +337,36 @@ async function startLegacyWatch(info: ClientBuildInfo, pkgName: string): Promise
349
337
  }
350
338
 
351
339
  /**
352
- * dev server 중지. Vite server 또는 RollupWatcher를 정리한다.
340
+ * dev watch 중지
353
341
  */
354
342
  async function stopWatch(): Promise<void> {
355
- logger.debug("Vite server 정리 시작");
343
+ logger.debug("esbuild watch 정리 시작");
356
344
 
357
- const watcherToClose = rollupWatcher;
358
- rollupWatcher = undefined;
359
- if (watcherToClose != null) {
360
- await watcherToClose.close();
345
+ // 1. esbuild context dispose
346
+ if (esbuildResult != null) {
347
+ await esbuildResult.context.dispose();
348
+ esbuildResult = undefined;
361
349
  }
362
350
 
363
- // SSE 클라이언트 정리
364
- for (const client of sseClients) {
365
- client.end();
366
- }
367
- sseClients.clear();
368
-
369
- const httpServerToClose = legacyHttpServer;
370
- legacyHttpServer = undefined;
371
- if (httpServerToClose != null) {
372
- await new Promise<void>((resolve, reject) => {
373
- httpServerToClose.close((err) => {
374
- if (err != null) reject(err);
375
- else resolve();
376
- });
377
- });
351
+ // 2. HMR 서비스 종료
352
+ if (hmrService != null) {
353
+ hmrService.close();
354
+ hmrService = undefined;
378
355
  }
379
356
 
380
- const serverToClose = viteServer;
381
- viteServer = undefined;
382
- if (serverToClose != null) {
383
- await serverToClose.close();
357
+ // 3. HTTP 서버 종료
358
+ if (devServer != null) {
359
+ await devServer.close();
360
+ devServer = undefined;
384
361
  }
385
362
 
386
- logger.debug("Vite server 정리 완료");
387
- }
388
-
389
- /**
390
- * 프로덕션 빌드. Vite build API로 번들을 생성한다.
391
- */
392
- async function build(info: ClientBuildInfo): Promise<ClientBuildResult> {
393
- logger.debug(`[${info.name}] client worker build 시작`);
394
- try {
395
- const { pkgName } = await resolvePackageInfo(info);
396
-
397
- // polyfills.ts 자동 감지
398
- const polyfillsPath = path.join(info.pkgDir, "src", "polyfills.ts");
399
- const polyfills = fs.existsSync(polyfillsPath) ? ["./src/polyfills.ts"] : undefined;
400
-
401
- let buildSuccess = true;
402
- let buildErrors: string[] | undefined;
403
- let buildWarnings: string[] | undefined;
404
-
405
- const viteConfig = await createClientViteConfig({
406
- framework: info.framework,
407
- pkgDir: info.pkgDir,
408
- pkgName,
409
- mode: "build",
410
- serverPort: 0,
411
- env: info.env,
412
- onBuild: (result) => {
413
- buildSuccess = result.success;
414
- buildErrors = result.errors;
415
- buildWarnings = result.warnings;
416
- },
417
- polyfills,
418
- pwa: info.pwa,
419
- exclude: info.exclude,
420
- outDir: info.outDir,
421
- base: info.base,
422
- });
423
-
424
- await viteBuild(viteConfig);
425
-
426
- // .config.json 생성 (항상 dist/에 기록 — outDir과 무관)
427
- writeConfigJson(path.join(info.pkgDir, "dist"), info.configs);
428
-
429
- logger.debug(`[${info.name}] client worker build 완료`);
430
- return { success: buildSuccess, errors: buildErrors, warnings: buildWarnings };
431
- } catch (err) {
432
- const message = errNs.message(err);
433
- logger.debug(`[${info.name}] client worker build 예외: ${message}`);
434
- return { success: false, errors: [message] };
363
+ // 4. public/ 감시 종료
364
+ if (publicWatcher != null) {
365
+ await publicWatcher.close();
366
+ publicWatcher = undefined;
435
367
  }
368
+
369
+ logger.debug("esbuild watch 정리 완료");
436
370
  }
437
371
 
438
372
  /** .config.json 생성 */
@@ -447,10 +381,6 @@ function writeConfigJson(
447
381
  );
448
382
  }
449
383
 
450
- registerCleanupHandlers(async () => {
451
- await stopWatch();
452
- }, logger);
453
-
454
384
  const sender = createWorker<
455
385
  {
456
386
  build: typeof build;