@simplysm/sd-cli 14.0.30 → 14.0.32

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
@@ -4,7 +4,7 @@ import module from "module";
4
4
  import { cpx, fsx, pathx } from "@simplysm/core-node";
5
5
  import { consola, LogLevels } from "consola";
6
6
  import type { NpmConfig, SdElectronConfig } from "../sd-config.types.js";
7
- import { createEnvBanner } from "../utils/esbuild-config.js";
7
+ import { createEnvBanner } from "../esbuild/esbuild-config.js";
8
8
 
9
9
  export class Electron {
10
10
  private static readonly _logger = consola.withTag("sd:cli:electron");
@@ -93,14 +93,7 @@ export class Electron {
93
93
  await this._copyPublicAssets();
94
94
 
95
95
  const esbuild = await import("esbuild");
96
- const entryPoint = pathx.posixResolve(this._pkgPath, "src/electron-main.ts");
97
-
98
- if (!(await fsx.exists(entryPoint))) {
99
- throw new Error(`electron-main.ts 파일을 찾을 수 없습니다: ${entryPoint}`);
100
- }
101
-
102
- const builtinModules = module.builtinModules.flatMap((m) => [m, `node:${m}`]);
103
- const reinstallDeps = this._config.reinstallDependencies ?? [];
96
+ const baseOptions = await this._createBaseEsbuildOptions({ ELECTRON_DEV_URL: url });
104
97
 
105
98
  let currentElectron: cpx.SpawnProcess | null = null;
106
99
  let isRestarting = false;
@@ -124,21 +117,9 @@ export class Electron {
124
117
  });
125
118
  };
126
119
 
127
- const envBanner = createEnvBanner({ ELECTRON_DEV_URL: url, ...this._config.env });
128
- const bannerJs =
129
- "import { createRequire } from 'module'; const require = createRequire(import.meta.url);" +
130
- envBanner;
131
-
132
120
  Electron._logger.debug("esbuild context 생성 시작");
133
121
  const ctx = await esbuild.context({
134
- entryPoints: [entryPoint],
135
- outfile: pathx.posixResolve(this._srcPath, "electron-main.js"),
136
- platform: "node",
137
- target: "node20",
138
- format: "esm",
139
- bundle: true,
140
- external: ["electron", ...builtinModules, ...reinstallDeps, ...this._exclude],
141
- banner: { js: bannerJs },
122
+ ...baseOptions,
142
123
  plugins: [
143
124
  {
144
125
  name: "electron-restart",
@@ -284,8 +265,13 @@ export class Electron {
284
265
 
285
266
  //#region Private - Bundling
286
267
 
287
- private async _bundleMainProcess(): Promise<void> {
288
- const esbuild = await import("esbuild");
268
+ /**
269
+ * run()과 _bundleMainProcess()가 공유하는 esbuild 옵션을 생성한다.
270
+ * extraEnv가 주어지면 config.env에 병합한다 (run 모드의 ELECTRON_DEV_URL 등).
271
+ */
272
+ private async _createBaseEsbuildOptions(
273
+ extraEnv?: Record<string, string>,
274
+ ): Promise<import("esbuild").BuildOptions> {
289
275
  const entryPoint = pathx.posixResolve(this._pkgPath, "src/electron-main.ts");
290
276
 
291
277
  if (!(await fsx.exists(entryPoint))) {
@@ -295,13 +281,12 @@ export class Electron {
295
281
  const builtinModules = module.builtinModules.flatMap((m) => [m, `node:${m}`]);
296
282
  const reinstallDeps = this._config.reinstallDependencies ?? [];
297
283
 
298
- const envBanner = createEnvBanner(this._config.env);
284
+ const envBanner = createEnvBanner({ ...this._config.env, ...extraEnv });
299
285
  const bannerJs =
300
286
  "import { createRequire } from 'module'; const require = createRequire(import.meta.url);" +
301
287
  envBanner;
302
288
 
303
- Electron._logger.debug(`esbuild 번들링: ${entryPoint}`);
304
- await esbuild.build({
289
+ return {
305
290
  entryPoints: [entryPoint],
306
291
  outfile: pathx.posixResolve(this._srcPath, "electron-main.js"),
307
292
  platform: "node",
@@ -310,7 +295,15 @@ export class Electron {
310
295
  bundle: true,
311
296
  external: ["electron", ...builtinModules, ...reinstallDeps, ...this._exclude],
312
297
  banner: { js: bannerJs },
313
- });
298
+ };
299
+ }
300
+
301
+ private async _bundleMainProcess(): Promise<void> {
302
+ const esbuild = await import("esbuild");
303
+ const options = await this._createBaseEsbuildOptions();
304
+
305
+ Electron._logger.debug(`esbuild 번들링: ${(options.entryPoints as string[])[0]}`);
306
+ await esbuild.build(options);
314
307
  }
315
308
 
316
309
  //#endregion
@@ -1,9 +1,11 @@
1
1
  import { Worker, type WorkerProxy } from "@simplysm/core-node";
2
2
  import { consola } from "consola";
3
- import type { BuildResult, ResultCollector } from "../infra/ResultCollector";
4
- import { stopEngineWorker } from "../utils/engine-stop";
5
- import type { LintWithProgramResult } from "../utils/lint-with-program";
6
- import type { RebuildManager } from "../utils/rebuild-manager";
3
+ import type { BuildResult, ResultCollector } from "../runtime/ResultCollector";
4
+ import { stopEngineWorker } from "../runtime/engine-stop";
5
+ import { setupWatchEvents } from "../runtime/engine-watch-events";
6
+ import type { LintWithProgramResult } from "../lint/lint-with-program";
7
+ import type { RebuildManager } from "../runtime/rebuild-manager";
8
+ import type { SerializedDiagnostic } from "../typecheck/typecheck-serialization";
7
9
  import type { BuildEngine, BuildOutput, EngineResult, PackageInfo } from "./types";
8
10
 
9
11
  const logger = consola.withTag("sd:cli:engine");
@@ -53,7 +55,7 @@ export interface BaseEngineOptions<TPkg extends PackageInfo> {
53
55
  * 이벤트 처리)이 여기에 위치하며, 서브클래스는 추상 메서드를 통해
54
56
  * 워커 경로, 빌드/워치 호출 파라미터, 타겟 결정을 제공한다.
55
57
  *
56
- * ViteEngine은 이 계층에 포함되지 않음 — serverReady 이벤트, port 관리 등 생명주기가 다름.
58
+ * EsbuildClientEngine은 이 계층에 포함되지 않음 — serverReady 이벤트, port 관리 등 생명주기가 다름.
57
59
  */
58
60
  export abstract class BaseEngine<
59
61
  TPkg extends PackageInfo,
@@ -97,12 +99,38 @@ export abstract class BaseEngine<
97
99
  */
98
100
  protected abstract _callStartWatch(output: BuildOutput): Promise<void>;
99
101
 
102
+ /**
103
+ * Worker 빌드 결과를 EngineResult로 정규화한다.
104
+ * errors/warnings가 undefined이면 빈 배열로 변환한다.
105
+ */
106
+ protected _normalizeResult(result: {
107
+ build: {
108
+ success: boolean;
109
+ errors?: string[];
110
+ warnings?: string[];
111
+ diagnostics: SerializedDiagnostic[];
112
+ };
113
+ lint?: LintWithProgramResult;
114
+ }): EngineResult {
115
+ return {
116
+ build: {
117
+ success: result.build.success,
118
+ errors: result.build.errors ?? [],
119
+ warnings: result.build.warnings ?? [],
120
+ diagnostics: result.build.diagnostics,
121
+ },
122
+ lint: result.lint,
123
+ };
124
+ }
125
+
100
126
  /**
101
127
  * 서브클래스가 제공하는 워커 경로로 워커 인스턴스를 생성한다.
102
128
  */
103
129
  protected _createWorker(): void {
104
130
  const workerPath = this._getWorkerPath();
105
- this._worker = Worker.create<TWorkerModule>(workerPath);
131
+ this._worker = Worker.create<TWorkerModule>(workerPath, {
132
+ resourceLimits: { maxOldGenerationSizeMb: 8192 },
133
+ });
106
134
  }
107
135
 
108
136
  /**
@@ -125,87 +153,40 @@ export abstract class BaseEngine<
125
153
  this._isWatchMode = true;
126
154
  this._createWorker();
127
155
 
128
- return new Promise<void>((resolve) => {
129
- let isInitialBuild = true;
130
- let resolver: (() => void) | undefined;
131
- const workerKey = `${this._pkg.name}:build`;
132
-
133
- this._worker!.on("buildStart", () => {
134
- if (this._rebuildManager != null) {
135
- resolver = this._rebuildManager.registerBuild(
136
- workerKey,
137
- `${this._pkg.name} (${this._getTarget()})`,
138
- );
139
- }
140
- });
141
-
142
- this._worker!.on("build", (data) => {
143
- const event = data;
144
-
145
- if (event.build.warnings != null && event.build.warnings.length > 0) {
146
- logger.warn(`${this._pkg.name}: ${event.build.warnings.join(", ")}`);
147
- }
148
-
149
- // 빌드 결과 보고
150
- const buildResult: BuildResult = {
151
- name: this._pkg.name,
152
- target: this._getTarget(),
153
- type: "build",
154
- status: event.build.success ? "success" : "error",
155
- message: event.build.errors?.join("\n"),
156
- };
157
- this._resultCollector?.add(buildResult);
158
-
159
- // 린트 결과 보고 (있는 경우)
160
- if (event.lint != null) {
161
- const lintResult: BuildResult = {
162
- name: this._pkg.name,
163
- target: this._getTarget(),
164
- type: "lint",
165
- status: event.lint.success ? "success" : "error",
166
- message: event.lint.formattedOutput !== "" ? event.lint.formattedOutput : undefined,
167
- };
168
- this._resultCollector?.add(lintResult);
169
- }
170
-
171
- resolver?.();
172
- resolver = undefined;
173
-
174
- if (isInitialBuild) {
175
- isInitialBuild = false;
176
- logger.debug(`[${this._pkg.name}] 초기 빌드 완료 (success: ${event.build.success})`);
177
- resolve();
178
- }
179
- });
180
-
181
- this._worker!.on("error", (data) => {
182
- const event = data as { message: string };
183
- const result: BuildResult = {
156
+ const { waitForInitialBuild, resolveInitialBuild } = setupWatchEvents(this._worker!, {
157
+ name: this._pkg.name,
158
+ target: this._getTarget(),
159
+ resultCollector: this._resultCollector,
160
+ rebuildManager: this._rebuildManager,
161
+ normalizeBuild: (data) =>
162
+ (data as CommonBuildWorkerEvents["build"]).build,
163
+ });
164
+
165
+ // BaseEngine 전용: 경고 로깅 + 린트 결과 보고
166
+ this._worker!.on("build", (data) => {
167
+ const event = data;
168
+
169
+ if (event.build.warnings != null && event.build.warnings.length > 0) {
170
+ logger.warn(`${this._pkg.name}: ${event.build.warnings.join(", ")}`);
171
+ }
172
+
173
+ if (event.lint != null) {
174
+ const lintResult: BuildResult = {
184
175
  name: this._pkg.name,
185
176
  target: this._getTarget(),
186
- type: "build",
187
- status: "error",
188
- message: event.message,
177
+ type: "lint",
178
+ status: event.lint.success ? "success" : "error",
179
+ message: event.lint.formattedOutput !== "" ? event.lint.formattedOutput : undefined,
189
180
  };
190
- this._resultCollector?.add(result);
191
-
192
- resolver?.();
193
- resolver = undefined;
194
-
195
- // 에러 경로: 항상 resolve (reject하지 않음) — 호출자가 ResultCollector에서 상태를 확인
196
- if (isInitialBuild) {
197
- isInitialBuild = false;
198
- resolve();
199
- }
200
- });
201
-
202
- this._callStartWatch(output).catch(() => {
203
- if (isInitialBuild) {
204
- isInitialBuild = false;
205
- resolve();
206
- }
207
- });
181
+ this._resultCollector?.add(lintResult);
182
+ }
183
+ });
184
+
185
+ this._callStartWatch(output).catch(() => {
186
+ resolveInitialBuild();
208
187
  });
188
+
189
+ return waitForInitialBuild();
209
190
  }
210
191
 
211
192
  /**
@@ -3,43 +3,40 @@ import path from "path";
3
3
  import { Worker, type WorkerProxy } from "@simplysm/core-node";
4
4
  import { consola } from "consola";
5
5
  import type * as ClientWorkerModule from "../workers/client.worker";
6
- import type { BuildResult, ResultCollector } from "../infra/ResultCollector";
7
- import { stopEngineWorker } from "../utils/engine-stop";
8
- import type { RebuildManager } from "../utils/rebuild-manager";
6
+ import type { ResultCollector } from "../runtime/ResultCollector";
7
+ import { stopEngineWorker } from "../runtime/engine-stop";
8
+ import { setupWatchEvents, type NormalizedBuildInfo } from "../runtime/engine-watch-events";
9
+ import type { RebuildManager } from "../runtime/rebuild-manager";
9
10
  import type { BuildEngine, BuildOutput, ClientPackageInfo, EngineResult } from "./types";
10
11
 
11
- const logger = consola.withTag("sd:cli:engine:vite");
12
+ const logger = consola.withTag("sd:cli:engine:esbuild-client");
12
13
 
13
14
  /**
14
- * ViteEngine 옵션
15
+ * EsbuildClientEngine 옵션
15
16
  */
16
- export interface ViteEngineOptions {
17
+ export interface EsbuildClientEngineOptions {
17
18
  cwd: string;
18
19
  pkg: ClientPackageInfo;
19
20
  /** 워치 모드 리빌드 보고용 ResultCollector */
20
21
  resultCollector?: ResultCollector;
21
22
  /** 워치 모드 배치 조정용 RebuildManager */
22
23
  rebuildManager?: RebuildManager;
23
- /** sdScopeWatchPlugin용 replaceDeps 항목 */
24
- replaceDeps?: Array<{ packageName: string; sourcePath: string }>;
25
24
  /** 빌드 출력 경로 (미설정 시 pkgDir/dist) */
26
25
  outDir?: string;
27
- /** Vite base 경로 (미설정 시 /{pkgName}/) */
26
+ /** base 경로 (미설정 시 /{pkgName}/) */
28
27
  base?: string;
29
28
  }
30
29
 
31
30
  /**
32
- * 클라이언트 패키지용 Vite 기반 빌드 엔진
31
+ * 클라이언트 패키지용 esbuild 기반 빌드 엔진
33
32
  *
34
- * framework 설정에 따라 sdAngularPlugin 또는 solidPlugin을 사용하며,
35
- * Vite의 createServer/build API를 직접 사용하는 client.worker를 래핑한다.
33
+ * esbuild context + HTTP dev server + HMR service를 사용하는 client.worker를 래핑한다.
36
34
  */
37
- export class ViteEngine implements BuildEngine {
35
+ export class EsbuildClientEngine implements BuildEngine {
38
36
  private readonly _cwd: string;
39
37
  private readonly _pkg: ClientPackageInfo;
40
38
  private readonly _resultCollector: ResultCollector | undefined;
41
39
  private readonly _rebuildManager: RebuildManager | undefined;
42
- private readonly _replaceDeps: Array<{ packageName: string; sourcePath: string }> | undefined;
43
40
  private readonly _outDir: string | undefined;
44
41
  private readonly _base: string | undefined;
45
42
 
@@ -49,12 +46,11 @@ export class ViteEngine implements BuildEngine {
49
46
  /** 개발 서버 포트 (워치 모드에서 serverReady 이벤트로 설정됨) */
50
47
  port: number | undefined;
51
48
 
52
- constructor(options: ViteEngineOptions) {
49
+ constructor(options: EsbuildClientEngineOptions) {
53
50
  this._cwd = options.cwd;
54
51
  this._pkg = options.pkg;
55
52
  this._resultCollector = options.resultCollector;
56
53
  this._rebuildManager = options.rebuildManager;
57
- this._replaceDeps = options.replaceDeps;
58
54
  this._outDir = options.outDir;
59
55
  this._base = options.base;
60
56
  }
@@ -63,23 +59,22 @@ export class ViteEngine implements BuildEngine {
63
59
  * 일회성 빌드 (프로덕션)
64
60
  */
65
61
  async run(_output: BuildOutput): Promise<EngineResult> {
66
- logger.debug(`[${this._pkg.name}] ViteEngine.run 시작`);
62
+ logger.debug(`[${this._pkg.name}] EsbuildClientEngine.run 시작`);
67
63
  this._createWorker();
68
64
 
69
65
  const result = await this._worker!.build({
70
66
  name: this._pkg.name,
71
67
  cwd: this._cwd,
72
68
  pkgDir: this._pkg.dir,
73
- framework: this._pkg.config.framework,
74
69
  env: this._pkg.config.env,
75
70
  configs: this._pkg.config.configs,
76
71
  pwa: this._pkg.config.pwa,
77
- exclude: this._pkg.config.exclude,
78
72
  outDir: this._outDir,
79
73
  base: this._base,
74
+ browserSupport: this._pkg.config.browserSupport,
80
75
  });
81
76
 
82
- logger.debug(`[${this._pkg.name}] ViteEngine.run 완료 (success: ${result.success})`);
77
+ logger.debug(`[${this._pkg.name}] EsbuildClientEngine.run 완료 (success: ${result.success})`);
83
78
  return {
84
79
  build: {
85
80
  success: result.success,
@@ -91,68 +86,34 @@ export class ViteEngine implements BuildEngine {
91
86
  }
92
87
 
93
88
  /**
94
- * 워치 모드 시작 (Vite 개발 서버)
89
+ * 워치 모드 시작 (esbuild watch + HTTP dev server + HMR)
95
90
  * worker의 startWatch()가 완료되면 Promise가 resolve된다.
96
91
  */
97
92
  async startWatch(_output: BuildOutput): Promise<void> {
98
- logger.debug(`[${this._pkg.name}] ViteEngine.startWatch 시작`);
93
+ logger.debug(`[${this._pkg.name}] EsbuildClientEngine.startWatch 시작`);
99
94
  this._isWatchMode = true;
100
95
  this._createWorker();
101
96
 
102
- // serverReady를 감지하여 포트 캡처
97
+ // serverReady를 감지하여 포트 캡처 (EsbuildClientEngine 전용)
103
98
  this._worker!.on("serverReady", (data) => {
104
99
  const event = data as { port: number };
105
100
  this.port = event.port;
106
101
  });
107
102
 
108
- // 리빌드 이벤트 처리 (HMR)
109
- let resolver: (() => void) | undefined;
110
- const workerKey = `${this._pkg.name}:build`;
111
-
112
- this._worker!.on("buildStart", () => {
113
- if (this._rebuildManager != null) {
114
- resolver = this._rebuildManager.registerBuild(workerKey, `${this._pkg.name} (client)`);
115
- }
116
- });
117
-
118
- this._worker!.on("build", (data) => {
119
- const event = data as {
120
- success: boolean;
121
- errors?: string[];
122
- warnings?: string[];
123
- };
124
- const buildResult: BuildResult = {
125
- name: this._pkg.name,
126
- target: "client",
127
- type: "build",
128
- status: event.success ? "success" : "error",
129
- message: event.errors?.join("\n"),
130
- };
131
- this._resultCollector?.add(buildResult);
132
-
133
- resolver?.();
134
- resolver = undefined;
135
- });
136
-
137
- this._worker!.on("scopeRebuild", () => {
138
- logger.info(`${this._pkg.name}: 의존성 변경 감지됨`);
103
+ // 공통 이벤트 처리 (buildStart/build/error)
104
+ setupWatchEvents(this._worker!, {
105
+ name: this._pkg.name,
106
+ target: "client",
107
+ resultCollector: this._resultCollector,
108
+ rebuildManager: this._rebuildManager,
109
+ normalizeBuild: (data) => data as NormalizedBuildInfo,
139
110
  });
111
+ // waitForInitialBuild 미사용 — worker.startWatch() await로 완료 감지
140
112
 
113
+ // EsbuildClientEngine 전용: error 로깅
141
114
  this._worker!.on("error", (data) => {
142
115
  const event = data as { message: string };
143
116
  logger.error(`${this._pkg.name}: ${event.message}`);
144
-
145
- const buildResult: BuildResult = {
146
- name: this._pkg.name,
147
- target: "client",
148
- type: "build",
149
- status: "error",
150
- message: event.message,
151
- };
152
- this._resultCollector?.add(buildResult);
153
-
154
- resolver?.();
155
- resolver = undefined;
156
117
  });
157
118
 
158
119
  const port =
@@ -164,13 +125,11 @@ export class ViteEngine implements BuildEngine {
164
125
  name: this._pkg.name,
165
126
  cwd: this._cwd,
166
127
  pkgDir: this._pkg.dir,
167
- framework: this._pkg.config.framework,
168
128
  port,
169
129
  env: this._pkg.config.env,
170
130
  configs: this._pkg.config.configs,
171
- replaceDeps: this._replaceDeps,
172
131
  pwa: this._pkg.config.pwa,
173
- exclude: this._pkg.config.exclude,
132
+ browserSupport: this._pkg.config.browserSupport,
174
133
  });
175
134
  }
176
135
 
@@ -178,7 +137,7 @@ export class ViteEngine implements BuildEngine {
178
137
  * 엔진을 중지하고 리소스를 정리한다
179
138
  */
180
139
  async stop(): Promise<void> {
181
- logger.debug(`[${this._pkg.name}] ViteEngine stop 시작`);
140
+ logger.debug(`[${this._pkg.name}] EsbuildClientEngine stop 시작`);
182
141
 
183
142
  // .dev-port 파일 삭제
184
143
  const portFile = path.join(this._pkg.dir, "dist", ".dev-port");
@@ -186,7 +145,7 @@ export class ViteEngine implements BuildEngine {
186
145
 
187
146
  await stopEngineWorker(this._worker, this._isWatchMode);
188
147
  this._worker = undefined;
189
- logger.debug(`[${this._pkg.name}] ViteEngine stop 완료`);
148
+ logger.debug(`[${this._pkg.name}] EsbuildClientEngine stop 완료`);
190
149
  }
191
150
 
192
151
  /**
@@ -194,6 +153,8 @@ export class ViteEngine implements BuildEngine {
194
153
  */
195
154
  private _createWorker(): void {
196
155
  const workerPath = import.meta.resolve("../workers/client.worker");
197
- this._worker = Worker.create<typeof ClientWorkerModule>(workerPath);
156
+ this._worker = Worker.create<typeof ClientWorkerModule>(workerPath, {
157
+ resourceLimits: { maxOldGenerationSizeMb: 8192 },
158
+ });
198
159
  }
199
160
  }
@@ -1,6 +1,6 @@
1
1
  import type * as NgtscBuildWorkerModule from "../workers/ngtsc-build.worker";
2
- import type { ResultCollector } from "../infra/ResultCollector";
3
- import type { RebuildManager } from "../utils/rebuild-manager";
2
+ import type { ResultCollector } from "../runtime/ResultCollector";
3
+ import type { RebuildManager } from "../runtime/rebuild-manager";
4
4
  import type { BuildOutput, BuildPackageInfo, EngineResult } from "./types";
5
5
  import { BaseEngine, type CommonBuildWorkerModule } from "./BaseEngine";
6
6
  import { consola } from "consola";
@@ -52,15 +52,7 @@ export class NgtscEngine extends BaseEngine<
52
52
  output,
53
53
  });
54
54
 
55
- return {
56
- build: {
57
- success: result.build.success,
58
- errors: result.build.errors ?? [],
59
- warnings: result.build.warnings ?? [],
60
- diagnostics: result.build.diagnostics,
61
- },
62
- lint: result.lint,
63
- };
55
+ return this._normalizeResult(result);
64
56
  }
65
57
 
66
58
  protected async _callStartWatch(output: BuildOutput): Promise<void> {
@@ -1,6 +1,6 @@
1
1
  import type * as ServerBuildWorkerModule from "../workers/server-build.worker";
2
- import type { ResultCollector } from "../infra/ResultCollector";
3
- import type { RebuildManager } from "../utils/rebuild-manager";
2
+ import type { ResultCollector } from "../runtime/ResultCollector";
3
+ import type { RebuildManager } from "../runtime/rebuild-manager";
4
4
  import type { BuildOutput, EngineResult, ServerPackageInfo } from "./types";
5
5
  import { BaseEngine, type CommonBuildWorkerModule } from "./BaseEngine";
6
6
  import { consola } from "consola";
@@ -57,15 +57,7 @@ export class ServerEsbuildEngine extends BaseEngine<
57
57
  packageManager: this._pkg.config.packageManager,
58
58
  });
59
59
 
60
- return {
61
- build: {
62
- success: result.build.success,
63
- errors: result.build.errors ?? [],
64
- warnings: result.build.warnings ?? [],
65
- diagnostics: result.build.diagnostics,
66
- },
67
- lint: result.lint,
68
- };
60
+ return this._normalizeResult(result);
69
61
  }
70
62
 
71
63
  protected async _callStartWatch(output: BuildOutput): Promise<void> {
@@ -1,6 +1,6 @@
1
1
  import type * as LibraryBuildWorkerModule from "../workers/library-build.worker";
2
- import type { ResultCollector } from "../infra/ResultCollector";
3
- import type { RebuildManager } from "../utils/rebuild-manager";
2
+ import type { ResultCollector } from "../runtime/ResultCollector";
3
+ import type { RebuildManager } from "../runtime/rebuild-manager";
4
4
  import type { BuildOutput, BuildPackageInfo, EngineResult } from "./types";
5
5
  import { BaseEngine, type CommonBuildWorkerModule } from "./BaseEngine";
6
6
  import { consola } from "consola";
@@ -53,15 +53,7 @@ export class TscEngine extends BaseEngine<
53
53
  output,
54
54
  });
55
55
 
56
- return {
57
- build: {
58
- success: result.build.success,
59
- errors: result.build.errors ?? [],
60
- warnings: result.build.warnings ?? [],
61
- diagnostics: result.build.diagnostics,
62
- },
63
- lint: result.lint,
64
- };
56
+ return this._normalizeResult(result);
65
57
  }
66
58
 
67
59
  protected async _callStartWatch(output: BuildOutput): Promise<void> {
@@ -1,11 +1,11 @@
1
1
  import { consola } from "consola";
2
- import type { ResultCollector } from "../infra/ResultCollector";
3
- import type { RebuildManager } from "../utils/rebuild-manager";
2
+ import type { ResultCollector } from "../runtime/ResultCollector";
3
+ import type { RebuildManager } from "../runtime/rebuild-manager";
4
4
  import { hasAngularCoreDependency } from "../utils/package-utils";
5
5
  import { NgtscEngine } from "./NgtscEngine";
6
6
  import { ServerEsbuildEngine } from "./ServerEsbuildEngine";
7
7
  import { TscEngine } from "./TscEngine";
8
- import { ViteEngine } from "./ViteEngine";
8
+ import { EsbuildClientEngine } from "./EsbuildClientEngine";
9
9
  import type { BuildEngine, BuildPackageInfo, ClientPackageInfo, ServerPackageInfo } from "./types";
10
10
 
11
11
  const logger = consola.withTag("sd:cli:engine");
@@ -15,7 +15,7 @@ export type { BuildEngine, BuildOutput, BuildPackageInfo, ClientPackageInfo, Eng
15
15
  /**
16
16
  * 주어진 패키지에 맞는 BuildEngine을 생성한다.
17
17
  *
18
- * 클라이언트 패키지는 ViteEngine을 사용한다.
18
+ * 클라이언트 패키지는 EsbuildClientEngine을 사용한다.
19
19
  * 서버 패키지는 ServerEsbuildEngine을 사용한다.
20
20
  * Angular 라이브러리 패키지(package.json에 @angular/core 의존성 감지)는 NgtscEngine을 사용한다.
21
21
  * 기타 라이브러리 패키지(node/browser/neutral)는 TscEngine을 사용한다.
@@ -28,20 +28,19 @@ export function createBuildEngine(
28
28
  resolvedReplaceDeps?: Array<{ packageName: string; sourcePath: string }>;
29
29
  resultCollector?: ResultCollector;
30
30
  rebuildManager?: RebuildManager;
31
- /** 클라이언트 빌드 출력 경로 (ViteEngine에만 적용) */
31
+ /** 클라이언트 빌드 출력 경로 (EsbuildClientEngine에만 적용) */
32
32
  outDir?: string;
33
- /** Vite base 경로 (ViteEngine에만 적용, 미설정 시 /{pkgName}/) */
33
+ /** base 경로 (EsbuildClientEngine에만 적용, 미설정 시 /{pkgName}/) */
34
34
  base?: string;
35
35
  },
36
36
  ): BuildEngine {
37
37
  if (pkg.config.target === "client") {
38
- logger.debug(`[${pkg.name}] 엔진 선택: ViteEngine (client)`);
39
- return new ViteEngine({
38
+ logger.debug(`[${pkg.name}] 엔진 선택: EsbuildClientEngine (client)`);
39
+ return new EsbuildClientEngine({
40
40
  cwd: options.cwd,
41
41
  pkg: pkg as ClientPackageInfo,
42
42
  resultCollector: options.resultCollector,
43
43
  rebuildManager: options.rebuildManager,
44
- replaceDeps: options.resolvedReplaceDeps,
45
44
  outDir: options.outDir,
46
45
  base: options.base,
47
46
  });
@@ -60,3 +59,24 @@ export function createBuildEngine(
60
59
  logger.debug(`[${pkg.name}] 엔진 선택: TscEngine (target: ${pkg.config.target})`);
61
60
  return new TscEngine({ ...options, pkg: pkg as BuildPackageInfo });
62
61
  }
62
+
63
+ /**
64
+ * 타입체크용 BuildEngine을 생성한다.
65
+ *
66
+ * client target은 browser로 재매핑하여 createBuildEngine에 위임한다.
67
+ * (client 패키지의 타입체크는 EsbuildClientEngine이 아닌 TscEngine/NgtscEngine으로 수행)
68
+ * 그 외 target은 createBuildEngine에 그대로 위임한다.
69
+ */
70
+ export function createTypecheckEngine(
71
+ pkg: BuildPackageInfo | ServerPackageInfo | ClientPackageInfo,
72
+ options: { cwd: string },
73
+ ): BuildEngine {
74
+ if (pkg.config.target === "client") {
75
+ const browserPkg: BuildPackageInfo = {
76
+ ...pkg,
77
+ config: { target: "browser" as const },
78
+ };
79
+ return createBuildEngine(browserPkg, options);
80
+ }
81
+ return createBuildEngine(pkg, options);
82
+ }
@@ -1,7 +1,7 @@
1
1
  import type { SdBuildPackageConfig, SdClientPackageConfig, SdPackageConfig, SdServerPackageConfig } from "../sd-config.types";
2
- import type { SerializedDiagnostic } from "../utils/typecheck-serialization";
2
+ import type { SerializedDiagnostic } from "../typecheck/typecheck-serialization";
3
3
  import type { TypecheckEnv } from "../utils/tsconfig";
4
- import type { LintWithProgramResult } from "../utils/lint-with-program";
4
+ import type { LintWithProgramResult } from "../lint/lint-with-program";
5
5
 
6
6
  /**
7
7
  * 패키지 정보
@@ -81,6 +81,6 @@ export interface BuildEngine {
81
81
  */
82
82
  stop(): Promise<void>;
83
83
 
84
- /** 개발 서버 포트 (ViteEngine의 워치 모드에서 serverReady 이벤트로 설정됨) */
84
+ /** 개발 서버 포트 (EsbuildClientEngine의 워치 모드에서 serverReady 이벤트로 설정됨) */
85
85
  readonly port?: number;
86
86
  }