@simplysm/sd-cli 14.0.42 → 14.0.44

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 (338) hide show
  1. package/dist/angular/angular-compiler.d.ts +0 -35
  2. package/dist/angular/angular-compiler.d.ts.map +1 -1
  3. package/dist/angular/angular-compiler.js +0 -374
  4. package/dist/angular/angular-compiler.js.map +1 -1
  5. package/dist/angular/hmr-candidates.d.ts +13 -0
  6. package/dist/angular/hmr-candidates.d.ts.map +1 -0
  7. package/dist/angular/hmr-candidates.js +230 -0
  8. package/dist/angular/hmr-candidates.js.map +1 -0
  9. package/dist/angular/ngtsc-build-core.d.ts +41 -37
  10. package/dist/angular/ngtsc-build-core.d.ts.map +1 -1
  11. package/dist/angular/ngtsc-build-core.js +155 -52
  12. package/dist/angular/ngtsc-build-core.js.map +1 -1
  13. package/dist/angular/vite-angular-plugin.d.ts +1 -1
  14. package/dist/angular/vite-angular-plugin.d.ts.map +1 -1
  15. package/dist/angular/vite-angular-plugin.js +63 -56
  16. package/dist/angular/vite-angular-plugin.js.map +1 -1
  17. package/dist/angular/web-worker-transformer.d.ts +9 -0
  18. package/dist/angular/web-worker-transformer.d.ts.map +1 -0
  19. package/dist/angular/web-worker-transformer.js +73 -0
  20. package/dist/angular/web-worker-transformer.js.map +1 -0
  21. package/dist/capacitor/capacitor.d.ts.map +1 -1
  22. package/dist/capacitor/capacitor.js +6 -4
  23. package/dist/capacitor/capacitor.js.map +1 -1
  24. package/dist/commands/check.d.ts +1 -1
  25. package/dist/commands/check.d.ts.map +1 -1
  26. package/dist/commands/check.js +15 -65
  27. package/dist/commands/check.js.map +1 -1
  28. package/dist/commands/publish/deployment-phase.d.ts.map +1 -1
  29. package/dist/commands/publish/deployment-phase.js +13 -5
  30. package/dist/commands/publish/deployment-phase.js.map +1 -1
  31. package/dist/commands/publish/npm-publisher.js +1 -1
  32. package/dist/commands/publish/npm-publisher.js.map +1 -1
  33. package/dist/commands/publish/publish-command.js +1 -1
  34. package/dist/commands/publish/publish-command.js.map +1 -1
  35. package/dist/commands/publish/version-upgrade.d.ts.map +1 -1
  36. package/dist/commands/publish/version-upgrade.js +16 -13
  37. package/dist/commands/publish/version-upgrade.js.map +1 -1
  38. package/dist/commands/replace-deps.d.ts.map +1 -1
  39. package/dist/commands/replace-deps.js +2 -1
  40. package/dist/commands/replace-deps.js.map +1 -1
  41. package/dist/deps/replace-deps/collect-deps.d.ts.map +1 -1
  42. package/dist/deps/replace-deps/collect-deps.js +5 -2
  43. package/dist/deps/replace-deps/collect-deps.js.map +1 -1
  44. package/dist/deps/replace-deps/replace-deps-resolve.d.ts.map +1 -1
  45. package/dist/deps/replace-deps/replace-deps-resolve.js +6 -7
  46. package/dist/deps/replace-deps/replace-deps-resolve.js.map +1 -1
  47. package/dist/deps/replace-deps/replace-deps.d.ts +21 -3
  48. package/dist/deps/replace-deps/replace-deps.d.ts.map +1 -1
  49. package/dist/deps/replace-deps/replace-deps.js +175 -66
  50. package/dist/deps/replace-deps/replace-deps.js.map +1 -1
  51. package/dist/electron/electron.js +7 -7
  52. package/dist/electron/electron.js.map +1 -1
  53. package/dist/engines/BaseEngine.d.ts.map +1 -1
  54. package/dist/engines/BaseEngine.js +2 -5
  55. package/dist/engines/BaseEngine.js.map +1 -1
  56. package/dist/engines/EsbuildClientEngine.d.ts.map +1 -1
  57. package/dist/engines/EsbuildClientEngine.js +16 -9
  58. package/dist/engines/EsbuildClientEngine.js.map +1 -1
  59. package/dist/engines/NgtscEngine.d.ts +4 -4
  60. package/dist/engines/NgtscEngine.d.ts.map +1 -1
  61. package/dist/engines/NgtscEngine.js +5 -5
  62. package/dist/engines/NgtscEngine.js.map +1 -1
  63. package/dist/engines/TscEngine.d.ts.map +1 -1
  64. package/dist/engines/TscEngine.js +0 -2
  65. package/dist/engines/TscEngine.js.map +1 -1
  66. package/dist/engines/types.d.ts +2 -0
  67. package/dist/engines/types.d.ts.map +1 -1
  68. package/dist/esbuild/esbuild-angular-compiler-plugin.d.ts +36 -0
  69. package/dist/esbuild/esbuild-angular-compiler-plugin.d.ts.map +1 -0
  70. package/dist/esbuild/esbuild-angular-compiler-plugin.js +464 -0
  71. package/dist/esbuild/esbuild-angular-compiler-plugin.js.map +1 -0
  72. package/dist/esbuild/esbuild-client-config.d.ts +8 -2
  73. package/dist/esbuild/esbuild-client-config.d.ts.map +1 -1
  74. package/dist/esbuild/esbuild-client-config.js +48 -33
  75. package/dist/esbuild/esbuild-client-config.js.map +1 -1
  76. package/dist/esbuild/esbuild-postcss-plugin.d.ts.map +1 -1
  77. package/dist/esbuild/esbuild-postcss-plugin.js +9 -6
  78. package/dist/esbuild/esbuild-postcss-plugin.js.map +1 -1
  79. package/dist/esbuild/esbuild-tsc-plugin.d.ts +4 -1
  80. package/dist/esbuild/esbuild-tsc-plugin.d.ts.map +1 -1
  81. package/dist/esbuild/esbuild-tsc-plugin.js +27 -23
  82. package/dist/esbuild/esbuild-tsc-plugin.js.map +1 -1
  83. package/dist/esbuild/file-reference-tracker.d.ts +24 -0
  84. package/dist/esbuild/file-reference-tracker.d.ts.map +1 -0
  85. package/dist/esbuild/file-reference-tracker.js +57 -0
  86. package/dist/esbuild/file-reference-tracker.js.map +1 -0
  87. package/dist/esbuild/lmdb-cache-store.d.ts +18 -0
  88. package/dist/esbuild/lmdb-cache-store.d.ts.map +1 -0
  89. package/dist/esbuild/lmdb-cache-store.js +41 -0
  90. package/dist/esbuild/lmdb-cache-store.js.map +1 -0
  91. package/dist/esbuild/load-result-cache.d.ts +17 -0
  92. package/dist/esbuild/load-result-cache.d.ts.map +1 -0
  93. package/dist/esbuild/load-result-cache.js +61 -0
  94. package/dist/esbuild/load-result-cache.js.map +1 -0
  95. package/dist/index.d.ts +3 -0
  96. package/dist/index.d.ts.map +1 -1
  97. package/dist/index.js +2 -0
  98. package/dist/index.js.map +1 -1
  99. package/dist/lint/lint-core.js +7 -7
  100. package/dist/lint/lint-core.js.map +1 -1
  101. package/dist/orchestrators/BaseOrchestrator.js +2 -2
  102. package/dist/orchestrators/BaseOrchestrator.js.map +1 -1
  103. package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
  104. package/dist/orchestrators/BuildOrchestrator.js +5 -19
  105. package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
  106. package/dist/orchestrators/DevOrchestrator.js +5 -5
  107. package/dist/orchestrators/DevOrchestrator.js.map +1 -1
  108. package/dist/orchestrators/WatchOrchestrator.js +6 -6
  109. package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
  110. package/dist/runtime/ResultCollector.d.ts +1 -0
  111. package/dist/runtime/ResultCollector.d.ts.map +1 -1
  112. package/dist/runtime/ResultCollector.js.map +1 -1
  113. package/dist/runtime/engine-watch-events.d.ts.map +1 -1
  114. package/dist/runtime/engine-watch-events.js +3 -0
  115. package/dist/runtime/engine-watch-events.js.map +1 -1
  116. package/dist/runtime/rebuild-manager.js +1 -1
  117. package/dist/runtime/rebuild-manager.js.map +1 -1
  118. package/dist/runtime/worker-utils.js +1 -1
  119. package/dist/runtime/worker-utils.js.map +1 -1
  120. package/dist/sd-cli-entry.d.ts.map +1 -1
  121. package/dist/sd-cli-entry.js +4 -3
  122. package/dist/sd-cli-entry.js.map +1 -1
  123. package/dist/sd-cli.js +3 -3
  124. package/dist/sd-cli.js.map +1 -1
  125. package/dist/ts-compiler/SdTsCompiler.d.ts +39 -0
  126. package/dist/ts-compiler/SdTsCompiler.d.ts.map +1 -0
  127. package/dist/ts-compiler/SdTsCompiler.js +593 -0
  128. package/dist/ts-compiler/SdTsCompiler.js.map +1 -0
  129. package/dist/ts-compiler/sd-ts-compiler-options.d.ts +40 -0
  130. package/dist/ts-compiler/sd-ts-compiler-options.d.ts.map +1 -0
  131. package/dist/ts-compiler/sd-ts-compiler-options.js +2 -0
  132. package/dist/ts-compiler/sd-ts-compiler-options.js.map +1 -0
  133. package/dist/ts-compiler/sd-ts-compiler-result.d.ts +34 -0
  134. package/dist/ts-compiler/sd-ts-compiler-result.d.ts.map +1 -0
  135. package/dist/ts-compiler/sd-ts-compiler-result.js +2 -0
  136. package/dist/ts-compiler/sd-ts-compiler-result.js.map +1 -0
  137. package/dist/utils/copy-public.d.ts +6 -4
  138. package/dist/utils/copy-public.d.ts.map +1 -1
  139. package/dist/utils/copy-public.js +9 -7
  140. package/dist/utils/copy-public.js.map +1 -1
  141. package/dist/utils/diagnostic-utils.d.ts +2 -3
  142. package/dist/utils/diagnostic-utils.d.ts.map +1 -1
  143. package/dist/utils/diagnostic-utils.js +8 -9
  144. package/dist/utils/diagnostic-utils.js.map +1 -1
  145. package/dist/utils/output-utils.d.ts +8 -2
  146. package/dist/utils/output-utils.d.ts.map +1 -1
  147. package/dist/utils/output-utils.js +32 -8
  148. package/dist/utils/output-utils.js.map +1 -1
  149. package/dist/workers/client.worker.d.ts +1 -1
  150. package/dist/workers/client.worker.d.ts.map +1 -1
  151. package/dist/workers/client.worker.js +115 -110
  152. package/dist/workers/client.worker.js.map +1 -1
  153. package/dist/workers/incremental-mtime-tracker.d.ts +13 -0
  154. package/dist/workers/incremental-mtime-tracker.d.ts.map +1 -0
  155. package/dist/workers/incremental-mtime-tracker.js +65 -0
  156. package/dist/workers/incremental-mtime-tracker.js.map +1 -0
  157. package/dist/workers/library-build.worker.d.ts +0 -2
  158. package/dist/workers/library-build.worker.d.ts.map +1 -1
  159. package/dist/workers/library-build.worker.js +169 -70
  160. package/dist/workers/library-build.worker.js.map +1 -1
  161. package/dist/workers/server-build.worker.d.ts.map +1 -1
  162. package/dist/workers/server-build.worker.js +30 -57
  163. package/dist/workers/server-build.worker.js.map +1 -1
  164. package/dist/workers/server-esbuild-context.d.ts +7 -0
  165. package/dist/workers/server-esbuild-context.d.ts.map +1 -1
  166. package/dist/workers/server-esbuild-context.js +11 -2
  167. package/dist/workers/server-esbuild-context.js.map +1 -1
  168. package/package.json +5 -4
  169. package/src/angular/angular-compiler.ts +0 -502
  170. package/src/angular/hmr-candidates.ts +295 -0
  171. package/src/angular/ngtsc-build-core.ts +192 -91
  172. package/src/angular/vite-angular-plugin.ts +71 -65
  173. package/src/angular/web-worker-transformer.ts +117 -0
  174. package/src/capacitor/capacitor.ts +6 -4
  175. package/src/commands/check.ts +17 -76
  176. package/src/commands/publish/deployment-phase.ts +11 -7
  177. package/src/commands/publish/npm-publisher.ts +1 -1
  178. package/src/commands/publish/publish-command.ts +1 -1
  179. package/src/commands/publish/version-upgrade.ts +44 -35
  180. package/src/commands/replace-deps.ts +3 -1
  181. package/src/deps/replace-deps/collect-deps.ts +4 -2
  182. package/src/deps/replace-deps/replace-deps-resolve.ts +12 -7
  183. package/src/deps/replace-deps/replace-deps.ts +191 -69
  184. package/src/electron/electron.ts +7 -7
  185. package/src/engines/BaseEngine.ts +2 -6
  186. package/src/engines/EsbuildClientEngine.ts +16 -10
  187. package/src/engines/NgtscEngine.ts +7 -7
  188. package/src/engines/TscEngine.ts +0 -2
  189. package/src/engines/types.ts +2 -0
  190. package/src/esbuild/esbuild-angular-compiler-plugin.ts +647 -0
  191. package/src/esbuild/esbuild-client-config.ts +57 -41
  192. package/src/esbuild/esbuild-postcss-plugin.ts +9 -6
  193. package/src/esbuild/esbuild-tsc-plugin.ts +33 -23
  194. package/src/esbuild/file-reference-tracker.ts +61 -0
  195. package/src/esbuild/lmdb-cache-store.ts +46 -0
  196. package/src/esbuild/load-result-cache.ts +85 -0
  197. package/src/index.ts +5 -0
  198. package/src/lint/lint-core.ts +7 -7
  199. package/src/orchestrators/BaseOrchestrator.ts +2 -2
  200. package/src/orchestrators/BuildOrchestrator.ts +5 -24
  201. package/src/orchestrators/DevOrchestrator.ts +5 -5
  202. package/src/orchestrators/WatchOrchestrator.ts +6 -6
  203. package/src/runtime/ResultCollector.ts +1 -0
  204. package/src/runtime/engine-watch-events.ts +3 -0
  205. package/src/runtime/rebuild-manager.ts +1 -1
  206. package/src/runtime/worker-utils.ts +1 -1
  207. package/src/sd-cli-entry.ts +5 -3
  208. package/src/sd-cli.ts +4 -4
  209. package/src/ts-compiler/SdTsCompiler.ts +815 -0
  210. package/src/ts-compiler/sd-ts-compiler-options.ts +46 -0
  211. package/src/ts-compiler/sd-ts-compiler-result.ts +34 -0
  212. package/src/utils/copy-public.ts +9 -6
  213. package/src/utils/diagnostic-utils.ts +8 -9
  214. package/src/utils/output-utils.ts +38 -8
  215. package/src/workers/client.worker.ts +141 -126
  216. package/src/workers/incremental-mtime-tracker.ts +68 -0
  217. package/src/workers/library-build.worker.ts +214 -75
  218. package/src/workers/server-build.worker.ts +31 -61
  219. package/src/workers/server-esbuild-context.ts +14 -2
  220. package/tests/angular/fixtures/packages/basic-app/dist/styles.css +3 -0
  221. package/tests/angular/fixtures/packages/basic-app/scss/styles.scss +5 -0
  222. package/tests/angular/ngtsc-build-core.acc.spec.ts +210 -0
  223. package/tests/angular/ngtsc-build-core.spec.ts +52 -0
  224. package/tests/angular/vite-angular-plugin-sdtscompiler.verify.md +13 -0
  225. package/tests/angular/web-worker-transformer.spec.ts +154 -0
  226. package/tests/capacitor/capacitor-build.spec.ts +1 -1
  227. package/tests/capacitor/capacitor-icon.spec.ts +1 -1
  228. package/tests/capacitor/capacitor-init.spec.ts +1 -1
  229. package/tests/commands/check.spec.ts +90 -104
  230. package/tests/commands/publish.spec.ts +12 -4
  231. package/tests/commands/slice3-severity-cleanup.verify.md +12 -0
  232. package/tests/commands/version-upgrade.acc.spec.ts +210 -0
  233. package/tests/commands/version-upgrade.spec.ts +148 -0
  234. package/tests/deps/replace-deps/collect-deps.acc.spec.ts +62 -0
  235. package/tests/deps/replace-deps/collect-deps.spec.ts +49 -0
  236. package/tests/deps/replace-deps/replace-deps-filter.spec.ts +103 -0
  237. package/tests/deps/replace-deps/replace-deps-perf.verify.md +15 -0
  238. package/tests/deps/replace-deps/replace-deps-resolve.acc.spec.ts +124 -0
  239. package/tests/deps/replace-deps/replace-deps-setup.acc.spec.ts +156 -0
  240. package/tests/electron/electron.spec.ts +4 -1
  241. package/tests/engines/engine-adapter-isolation.spec.ts +5 -6
  242. package/tests/engines/engine-duplicate-output-removal.verify.md +10 -0
  243. package/tests/engines/esbuild-client-engine.acc.spec.ts +79 -0
  244. package/tests/engines/esbuild-client-engine.spec.ts +73 -3
  245. package/tests/esbuild/esbuild-angular-compiler-plugin-hmr.verify.md +23 -0
  246. package/tests/esbuild/esbuild-angular-compiler-plugin-onload.verify.md +21 -0
  247. package/tests/esbuild/esbuild-angular-compiler-plugin-onstart-extraction.verify.md +16 -0
  248. package/tests/esbuild/esbuild-angular-compiler-plugin-sdtscompiler.verify.md +15 -0
  249. package/tests/esbuild/esbuild-angular-compiler-plugin-stylesheet.verify.md +31 -0
  250. package/tests/esbuild/esbuild-angular-compiler-plugin-worker.verify.md +31 -0
  251. package/tests/esbuild/esbuild-angular-compiler-plugin.spec.ts +397 -0
  252. package/tests/esbuild/esbuild-angular-compiler-plugin.verify.md +21 -0
  253. package/tests/esbuild/esbuild-postcss-plugin-chunking.verify.md +17 -0
  254. package/tests/esbuild/esbuild-postcss-plugin.acc.spec.ts +152 -0
  255. package/tests/esbuild/esbuild-tsc-plugin-imports.verify.md +13 -0
  256. package/tests/esbuild/esbuild-tsc-plugin.acc.spec.ts +56 -111
  257. package/tests/esbuild/esbuild-tsc-plugin.spec.ts +116 -52
  258. package/tests/esbuild/file-reference-tracker.spec.ts +99 -0
  259. package/tests/esbuild/lmdb-cache-store.spec.ts +58 -0
  260. package/tests/esbuild/load-result-cache.acc.spec.ts +55 -0
  261. package/tests/esbuild/load-result-cache.spec.ts +133 -0
  262. package/tests/orchestrators/build-orchestrator.spec.ts +4 -3
  263. package/tests/orchestrators/dev-orchestrator.spec.ts +5 -5
  264. package/tests/orchestrators/slice1-stdout-to-consola.verify.md +10 -0
  265. package/tests/orchestrators/typecheck-orchestrator.spec.ts +1 -1
  266. package/tests/orchestrators/watch-orchestrator.spec.ts +7 -7
  267. package/tests/runtime/result-collector.spec.ts +64 -0
  268. package/tests/sd-cli-entry.spec.ts +3 -4
  269. package/tests/sd-cli-log-tag.verify.md +11 -0
  270. package/tests/ts-compiler/SdTsCompiler-affected-files.verify.md +8 -0
  271. package/tests/ts-compiler/SdTsCompiler-diagnostics.verify.md +12 -0
  272. package/tests/ts-compiler/SdTsCompiler-emit.verify.md +9 -0
  273. package/tests/ts-compiler/SdTsCompiler.acc.spec.ts +603 -0
  274. package/tests/ts-compiler/SdTsCompiler.spec.ts +265 -0
  275. package/tests/ts-compiler/SdTsCompiler.verify.md +41 -0
  276. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-browser.tsbuildinfo +1 -0
  277. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-node.tsbuildinfo +1 -0
  278. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck.tsbuildinfo +1 -0
  279. package/tests/ts-compiler/fixtures/non-angular-pkg/src/index.ts +3 -0
  280. package/tests/ts-compiler/fixtures/non-angular-pkg/src/util.ts +3 -0
  281. package/tests/ts-compiler/fixtures/non-angular-pkg/tests/sample.test-file.ts +3 -0
  282. package/tests/ts-compiler/fixtures/non-angular-pkg/tsconfig.json +12 -0
  283. package/tests/ts-compiler/scss-lint-integration.verify.md +14 -0
  284. package/tests/utils/angular-build.spec.ts +1 -1
  285. package/tests/utils/copy-public-outdir.verify.md +8 -0
  286. package/tests/utils/copy-public.acc.spec.ts +52 -0
  287. package/tests/utils/copy-public.spec.ts +56 -0
  288. package/tests/utils/diagnostic-utils.spec.ts +24 -15
  289. package/tests/utils/engine-watch-events.acc.spec.ts +59 -0
  290. package/tests/utils/engine-watch-events.spec.ts +58 -0
  291. package/tests/utils/esbuild-client-config-integration.verify.md +9 -0
  292. package/tests/utils/esbuild-client-config.acc.spec.ts +45 -61
  293. package/tests/utils/esbuild-client-config.spec.ts +70 -52
  294. package/tests/utils/ngtsc-build-core-write-emit.spec.ts +136 -12
  295. package/tests/utils/ngtsc-build-core.spec.ts +1 -44
  296. package/tests/utils/output-utils.spec.ts +133 -13
  297. package/tests/utils/replace-deps-watch.acc.spec.ts +7 -1
  298. package/tests/utils/replace-deps-watch.spec.ts +57 -1
  299. package/tests/utils/worker-utils.spec.ts +8 -2
  300. package/tests/workers/client-worker-initial-build-error.verify.md +2 -3
  301. package/tests/workers/client-worker-initial-build-warnings.verify.md +7 -0
  302. package/tests/workers/client-worker-mtime-incremental.verify.md +10 -0
  303. package/tests/workers/client-worker-refactor.verify.md +22 -0
  304. package/tests/workers/client-worker-ts-cache-invalidation.verify.md +12 -0
  305. package/tests/workers/client-worker.acc.spec.ts +6 -3
  306. package/tests/workers/incremental-mtime-tracker.acc.spec.ts +144 -0
  307. package/tests/workers/incremental-mtime-tracker.spec.ts +102 -0
  308. package/tests/workers/library-build-lint.spec.ts +40 -45
  309. package/tests/workers/library-build-worker.spec.ts +298 -40
  310. package/tests/workers/server-build-lint.spec.ts +59 -45
  311. package/tests/workers/server-build-worker.spec.ts +63 -24
  312. package/tests/workers/server-esbuild-context.acc.spec.ts +2 -0
  313. package/tests/workers/server-esbuild-context.spec.ts +2 -0
  314. package/tests/workers/server-runtime-worker.spec.ts +1 -1
  315. package/tests/workers/shared-worker-lifecycle.acc.spec.ts +1 -1
  316. package/dist/angular/angular-build-pipeline.d.ts +0 -97
  317. package/dist/angular/angular-build-pipeline.d.ts.map +0 -1
  318. package/dist/angular/angular-build-pipeline.js +0 -285
  319. package/dist/angular/angular-build-pipeline.js.map +0 -1
  320. package/dist/utils/tsc-build.d.ts +0 -51
  321. package/dist/utils/tsc-build.d.ts.map +0 -1
  322. package/dist/utils/tsc-build.js +0 -156
  323. package/dist/utils/tsc-build.js.map +0 -1
  324. package/dist/workers/ngtsc-build.worker.d.ts +0 -23
  325. package/dist/workers/ngtsc-build.worker.d.ts.map +0 -1
  326. package/dist/workers/ngtsc-build.worker.js +0 -267
  327. package/dist/workers/ngtsc-build.worker.js.map +0 -1
  328. package/src/angular/angular-build-pipeline.ts +0 -406
  329. package/src/utils/tsc-build.ts +0 -226
  330. package/src/workers/ngtsc-build.worker.ts +0 -351
  331. package/tests/angular/angular-build-pipeline.spec.ts +0 -247
  332. package/tests/angular/angular-compiler-aot.acc.spec.ts +0 -68
  333. package/tests/angular/angular-compiler-aot.spec.ts +0 -80
  334. package/tests/utils/angular-compiler-emit.spec.ts +0 -666
  335. package/tests/utils/angular-compiler.spec.ts +0 -707
  336. package/tests/utils/tsc-build.spec.ts +0 -527
  337. package/tests/workers/ngtsc-build-lint.spec.ts +0 -141
  338. package/tests/workers/ngtsc-build-worker.spec.ts +0 -199
@@ -49,7 +49,6 @@ describe("NgtscEngine adapter isolation", () => {
49
49
 
50
50
  const filesToCheck = [
51
51
  path.join(sdCliSrc, "engines", "NgtscEngine.ts"),
52
- path.join(sdCliSrc, "workers", "ngtsc-build.worker.ts"),
53
52
  path.join(sdCliSrc, "angular", "ngtsc-build-core.ts"),
54
53
  path.join(sdCliSrc, "utils", "output-path-rewriter.ts"),
55
54
  ];
@@ -68,13 +67,13 @@ describe("NgtscEngine adapter isolation", () => {
68
67
 
69
68
  it("all Angular API access goes through angular-compiler.ts adapter", () => {
70
69
 
71
- // Angular API 접근은 angular-build-pipeline.ts 통해 angular-compiler.ts로 이루어진다
72
- const buildPipeline = path.resolve(
70
+ // Angular API 접근은 ngtsc-build-core.ts angular-compiler.ts 또는 SdTsCompiler → angular-compiler.ts로 이루어진다
71
+ const compilerFile = path.resolve(
73
72
  import.meta.dirname,
74
- "../../src/angular/angular-build-pipeline.ts",
73
+ "../../src/ts-compiler/SdTsCompiler.ts",
75
74
  );
76
- const content = fs.readFileSync(buildPipeline, "utf-8");
75
+ const content = fs.readFileSync(compilerFile, "utf-8");
77
76
 
78
- expect(content).toContain("./angular-compiler");
77
+ expect(content).toContain("angular-compiler");
79
78
  });
80
79
  });
@@ -0,0 +1,10 @@
1
+ # 엔진별 중복 출력 제거 — LLM 검증
2
+
3
+ ## 검증 항목
4
+
5
+ - [x] esbuild-client-config.ts logLevel이 모든 모드에서 "silent"인지: `esbuild-client-config.ts:191` — `logLevel: "silent"` 확인. 기존 `isDev ? "warning" : "silent"` 삼항 연산자 제거됨
6
+ - [x] EsbuildClientEngine에 중복 error 핸들러가 없는지: `EsbuildClientEngine.ts:103-110` — setupWatchEvents만 error 이벤트 처리. 기존 `worker.on("error", ...)` 핸들러(logger.error 호출) 제거됨
7
+ - [x] EsbuildClientEngine 초기 빌드 실패 시 logger.error 미호출: `EsbuildClientEngine.ts:129-138` — `!result.success` 분기에서 `resultCollector.add()`만 호출. logger.error 줄 제거됨
8
+ - [x] BaseEngine에 logger.warn() 블록이 없는지: `BaseEngine.ts:166-180` — build 이벤트 핸들러에 lint 결과 보고만 존재. warnings에 대한 logger.warn() 블록 제거됨
9
+ - [x] BaseEngine startWatch 실패 시 logger.debug 사용: `BaseEngine.ts:182-183` — `logger.debug(...)` 확인. 기존 `logger.error(...)` → `logger.debug(...)` 변경됨
10
+ - [x] BaseEngine lint 결과 보고 로직 유지: `BaseEngine.ts:170-179` — `event.lint != null` 조건의 ResultCollector 보고 로직이 그대로 유지됨
@@ -163,6 +163,85 @@ describe("EsbuildClientEngine Acceptance", () => {
163
163
  await engine.stop();
164
164
  });
165
165
 
166
+ //#region Feature 2.1: 초기 빌드 warnings → ResultCollector
167
+
168
+ it("초기 빌드 성공 + warnings → ResultCollector에 success + warnings 저장", async () => {
169
+ const mockResultCollector = { add: vi.fn() };
170
+
171
+ mockWorker.startWatch.mockResolvedValue({
172
+ success: true,
173
+ warnings: ["unused variable"],
174
+ });
175
+
176
+ const engine = new EsbuildClientEngine({
177
+ cwd: "/root",
178
+ pkg: createMockPkg(),
179
+ resultCollector: mockResultCollector as any,
180
+ });
181
+
182
+ await engine.startWatch({ js: true, dts: false });
183
+
184
+ const warningReport = mockResultCollector.add.mock.calls.find(
185
+ (c: any[]) => c[0].type === "build" && c[0].warnings != null,
186
+ );
187
+ expect(warningReport).toBeDefined();
188
+ expect(warningReport![0].status).toBe("success");
189
+ expect(warningReport![0].warnings).toBe("unused variable");
190
+
191
+ await engine.stop();
192
+ });
193
+
194
+ it("초기 빌드 실패 + warnings → ResultCollector에 error + warnings 모두 저장", async () => {
195
+ const mockResultCollector = { add: vi.fn() };
196
+
197
+ mockWorker.startWatch.mockResolvedValue({
198
+ success: false,
199
+ errors: ["type error"],
200
+ warnings: ["deprecated API"],
201
+ });
202
+
203
+ const engine = new EsbuildClientEngine({
204
+ cwd: "/root",
205
+ pkg: createMockPkg(),
206
+ resultCollector: mockResultCollector as any,
207
+ });
208
+
209
+ await engine.startWatch({ js: true, dts: false });
210
+
211
+ const errorReport = mockResultCollector.add.mock.calls.find(
212
+ (c: any[]) => c[0].type === "build" && c[0].status === "error",
213
+ );
214
+ expect(errorReport).toBeDefined();
215
+ expect(errorReport![0].message).toContain("type error");
216
+ expect(errorReport![0].warnings).toBe("deprecated API");
217
+
218
+ await engine.stop();
219
+ });
220
+
221
+ it("초기 빌드 성공 + warnings 없음 → ResultCollector에 추가 저장 없음", async () => {
222
+ const mockResultCollector = { add: vi.fn() };
223
+
224
+ mockWorker.startWatch.mockResolvedValue({ success: true });
225
+
226
+ const engine = new EsbuildClientEngine({
227
+ cwd: "/root",
228
+ pkg: createMockPkg(),
229
+ resultCollector: mockResultCollector as any,
230
+ });
231
+
232
+ await engine.startWatch({ js: true, dts: false });
233
+
234
+ // setupWatchEvents에 의한 호출은 있을 수 있으나, startWatch 결과에 의한 추가 저장은 없음
235
+ const warningReport = mockResultCollector.add.mock.calls.find(
236
+ (c: any[]) => c[0].warnings != null,
237
+ );
238
+ expect(warningReport).toBeUndefined();
239
+
240
+ await engine.stop();
241
+ });
242
+
243
+ //#endregion
244
+
166
245
  // Scenario: 엔진 중지
167
246
  it("stop()으로 worker를 종료하고 .dev-port를 삭제한다", async () => {
168
247
  // Given: dev watch 모드가 실행 중이다
@@ -271,7 +271,7 @@ describe("EsbuildClientEngine", () => {
271
271
  await engine.stop();
272
272
  });
273
273
 
274
- it("초기 빌드 실패 시 에러를 logger.error로 출력한다", async () => {
274
+ it("초기 빌드 실패 시 reject하지 않고 정상 완료된다", async () => {
275
275
  mockWorker.startWatch.mockResolvedValue({
276
276
  success: false,
277
277
  errors: ["Module not found: @angular/core", "Syntax error in app.ts"],
@@ -280,8 +280,7 @@ describe("EsbuildClientEngine", () => {
280
280
  const engine = new EsbuildClientEngine({ cwd: "/root", pkg: createMockPkg() });
281
281
  await engine.startWatch({ js: true, dts: false });
282
282
 
283
- // startWatch가 reject하지 않고 정상 완료되는지 확인 (기존 동작 유지)
284
- // 에러 로깅은 verify.md에서 검증
283
+ // startWatch가 reject하지 않고 정상 완료되는지 확인
285
284
  expect(mockWorker.startWatch).toHaveBeenCalled();
286
285
 
287
286
  await engine.stop();
@@ -297,6 +296,77 @@ describe("EsbuildClientEngine", () => {
297
296
  await engine.stop();
298
297
  });
299
298
 
299
+ it("초기 빌드 ��공 + warnings 시 ResultCollector에 success와 warnings가 저장된다", async () => {
300
+ const mockResultCollector = { add: vi.fn(), get: vi.fn(), toMap: vi.fn() };
301
+ mockWorker.startWatch.mockResolvedValue({ success: true, warnings: ["w1", "w2"] });
302
+
303
+ const engine = new EsbuildClientEngine({
304
+ cwd: "/root",
305
+ pkg: createMockPkg(),
306
+ resultCollector: mockResultCollector as any,
307
+ });
308
+ await engine.startWatch({ js: true, dts: false });
309
+
310
+ const addCall = mockResultCollector.add.mock.calls.find(
311
+ (c: any[]) => c[0].warnings != null,
312
+ );
313
+ expect(addCall).toBeDefined();
314
+ expect(addCall![0]).toMatchObject({
315
+ status: "success",
316
+ warnings: "w1\nw2",
317
+ });
318
+
319
+ await engine.stop();
320
+ });
321
+
322
+ it("초기 빌드 실패 + warnings 시 ResultCollector에 에러와 경고 모두 저장된다", async () => {
323
+ const mockResultCollector = { add: vi.fn(), get: vi.fn(), toMap: vi.fn() };
324
+ mockWorker.startWatch.mockResolvedValue({
325
+ success: false,
326
+ errors: ["e1"],
327
+ warnings: ["w1"],
328
+ });
329
+
330
+ const engine = new EsbuildClientEngine({
331
+ cwd: "/root",
332
+ pkg: createMockPkg(),
333
+ resultCollector: mockResultCollector as any,
334
+ });
335
+ await engine.startWatch({ js: true, dts: false });
336
+
337
+ const errorResult = mockResultCollector.add.mock.calls.find(
338
+ (c: any[]) => c[0].status === "error",
339
+ );
340
+ expect(errorResult).toBeDefined();
341
+ expect(errorResult![0]).toMatchObject({
342
+ status: "error",
343
+ message: "e1",
344
+ warnings: "w1",
345
+ });
346
+
347
+ await engine.stop();
348
+ });
349
+
350
+ it("초기 빌드 성공 + warnings 없음 시 ResultCollector에 추가 저장하지 않는다", async () => {
351
+ const mockResultCollector = { add: vi.fn(), get: vi.fn(), toMap: vi.fn() };
352
+ mockWorker.startWatch.mockResolvedValue({ success: true });
353
+
354
+ const engine = new EsbuildClientEngine({
355
+ cwd: "/root",
356
+ pkg: createMockPkg(),
357
+ resultCollector: mockResultCollector as any,
358
+ });
359
+ await engine.startWatch({ js: true, dts: false });
360
+
361
+ // setupWatchEvents에 의한 add 호출만 있고, 초기 빌드 경로의 add 호출은 없어야 한다
362
+ const directAdd = mockResultCollector.add.mock.calls.find(
363
+ (c: any[]) => c[0].target === "client" && (c[0].message != null || c[0].warnings != null),
364
+ );
365
+ expect(directAdd).toBeUndefined();
366
+
367
+ await engine.stop();
368
+ });
369
+
300
370
  it("scopeRebuild 이벤트를 구독하지 않는다", async () => {
301
371
  mockWorker.startWatch.mockResolvedValue({ success: true });
302
372
 
@@ -0,0 +1,23 @@
1
+ # esbuild Angular Compiler Plugin — 증분 빌드 + HMR — LLM 검증
2
+
3
+ ## 검증 항목
4
+
5
+ - [x] **증분 빌드 조건 판단**: `esbuild-angular-compiler-plugin.ts:200` — `angularCompiler != null && sourceFileCache != null && sourceFileCache.modifiedFiles.size > 0`으로 증분 빌드 감지. 첫 빌드는 `angularCompiler == null` 경로로 진입.
6
+
7
+ - [x] **staleSourceFiles 캡처 타이밍**: `esbuild-angular-compiler-plugin.ts:208-219` — `invalidate()` 호출 전에 이전 `ts.Program`에서 stale source files를 캡처. `invalidate` 후에는 캐시에서 삭제되므로 순서가 중요.
8
+
9
+ - [x] **FileReferenceTracker.update → sourceFileCache.invalidate**: `esbuild-angular-compiler-plugin.ts:221-224` — `referencedFileTracker.update()`로 전이적 의존성 확장 후 `invalidate()` 호출. 확장된 파일 집합이 전달됨.
10
+
11
+ - [x] **stale additionalResults 제거**: `esbuild-angular-compiler-plugin.ts:226-229` — expandedModifiedFiles의 각 파일에 대해 `additionalResults.delete()` 호출.
12
+
13
+ - [x] **HMR 활성화 조건**: `esbuild-angular-compiler-plugin.ts:204-206` — `templateUpdates != null && modifiedFiles.size <= 32`. 32개 초과 시 HMR 건너뜀.
14
+
15
+ - [x] **collectHmrCandidates 호출**: `esbuild-angular-compiler-plugin.ts:235-239` — `ngtscProgram`과 `staleSourceFiles`를 전달. `sourceFileCache.modifiedFiles`(확장 전 원본)을 대상으로 분석.
16
+
17
+ - [x] **emitHmrUpdateModule 호출 및 null 처리**: `esbuild-angular-compiler-plugin.ts:259-264` — `emitHmrUpdateModule`이 null/undefined 반환 시 break (templateUpdates 전파 중단). NgCompiler API를 Record 캐스팅으로 접근 (타입이 private이므로).
18
+
19
+ - [x] **templateUpdates Map 전파**: `esbuild-angular-compiler-plugin.ts:266` — `pluginOptions.templateUpdates!.set(updateId, updateText)`로 외부 Map에 직접 기록.
20
+
21
+ - [x] **updateId 형식**: `esbuild-angular-compiler-plugin.ts:256-258` — `encodeURIComponent("{relativePath}@{className}")`. relativePath는 hostDir 기준 상대경로, 백슬래시를 슬래시로 변환.
22
+
23
+ - [x] **hmr-candidates.ts 구조**: `hmr-candidates.ts` — `collectHmrCandidates` 함수가 원본 `hmr-candidates.js`의 로직을 TypeScript로 이식. `analyzeFileUpdates`, `analyzeMetaUpdates`, `equalRangeText` 헬퍼 포함. SUPPORTED_FIELD_NAMES = {template, templateUrl, styles, styleUrl, stylesUrl}.
@@ -0,0 +1,21 @@
1
+ # onLoad 훅 — LLM 검증
2
+
3
+ ## 검증 항목
4
+
5
+ - [x] TS onLoad 훅이 `/\.[cm]?[jt]sx?$/` 필터로 등록된다: :517 `build.onLoad({ filter: /\.[cm]?[jt]sx?$/ }, ...)`
6
+ - [x] JS onLoad 훅이 `/\.[cm]?js$/` 필터로 등록된다: :584 `build.onLoad({ filter: /\.[cm]?js$/ }, ...)`
7
+ - [x] TS onLoad: shouldTsIgnoreJs=true이고 JS 파일이면 undefined 반환: :522 `if (shouldTsIgnoreJs && isJS) return undefined`
8
+ - [x] TS onLoad: 캐시 미스 + hasCompilationErrors이면 `{ contents: '', loader: 'js' }` 반환: :530
9
+ - [x] TS onLoad: 캐시 미스 + allowJs + JS이면 undefined 반환: :535
10
+ - [x] TS onLoad: 캐시 미스 + Angular 데코레이터 없으면 warning 반환: :541-547
11
+ - [x] TS onLoad: 캐시 미스 + Angular 데코레이터 있으면 error 반환: :550-552
12
+ - [x] TS onLoad: string 캐시 + (useTypeScriptTranspilation || isJS)이면 transformData 호출 → Uint8Array 재캐싱: :556-565
13
+ - [x] TS onLoad: Uint8Array 캐시이면 재변환 없이 그대로 반환: :556 조건 `typeof contents === "string"` — Uint8Array는 조건 불일치로 통과
14
+ - [x] TS onLoad: loader 결정 — (useTypeScriptTranspilation || isJS) → 'js', .tsx → 'tsx', 기타 → 'ts': :569-574
15
+ - [x] JS onLoad: createCachedLoad(loadResultCache, callback)으로 래핑: :586
16
+ - [x] JS onLoad: transformFile(request, false, sideEffects) 호출: :589
17
+ - [x] hasSideEffects: advancedOptimizations=false → undefined 반환: :292-293
18
+ - [x] hasSideEffects: advancedOptimizations=true → build.resolve() 호출: :295-298
19
+ - [x] shouldTsIgnoreJs: onStart에서 !compilerOptions.allowJs로 결정: :405
20
+ - [x] useTypeScriptTranspilation: !isolatedModules || !!sourceMap || !!inlineSourceMap으로 결정: :406-407
21
+ - [x] loadResultCache 옵션이 AngularCompilerPluginOptions에 추가됨: :33
@@ -0,0 +1,16 @@
1
+ # onStart 서브함수 추출 — LLM 검증
2
+
3
+ ## 검증 항목
4
+
5
+ - [x] **handleIncrementalBuild 클로저 변수 접근**: `pluginOptions.sourceFileCache!` (314줄), `pluginOptions.templateUpdates` (316줄), `angularCompiler!` (322, 342, 345, 353줄), `referencedFileTracker` (332줄), `additionalResults` (339줄), `cwd` (359줄) — 모두 setup 스코프(248-289줄)에서 선언된 변수를 파라미터 없이 직접 접근. 원본에서 `errors`/`warnings`를 사용하지 않아 파라미터 불필요 (lint 에러로 확인, 제거)
6
+ - [x] **handleFirstBuild 클로저 변수 접근**: `pluginOptions` (378, 387-390줄), `preserveSymlinks` (381줄), `angularCompiler` (394줄 대입), `shouldTsIgnoreJs` (398줄 대입), `useTypeScriptTranspilation` (399줄 대입) — 모두 setup 스코프 변수 직접 접근. 파라미터 없음
7
+ - [x] **createWebWorkerProcessor 클로저 변수 접근**: `build` (410줄), `pluginOptions.sourcemap` (410줄), `cwd` (422, 437줄), `referencedFileTracker` (417, 435줄), `additionalResults` (424, 428줄) — 모두 setup 스코프 변수 직접 접근. `errors`/`warnings`만 파라미터로 전달
8
+ - [x] **onStart 반환값 동일**: onStart 콜백(456-526줄)이 동일한 `result` 객체를 반환 (`errors`/`warnings` 할당 로직 523-525줄 유지). 추출 전과 동일한 `{errors, warnings}` 구조
9
+ - [x] **내부 상태 변화 동일**: `handleIncrementalBuild`에서 `sourceFileCache.invalidate()` (328줄), `additionalResults.delete()` (332줄), `angularCompiler.update()` (335줄), `templateUpdates.set()/clear()` (366, 370줄) — 원본 코드(316-383줄)와 동일한 mutation 순서와 로직
10
+ - [x] **handleFirstBuild 상태 설정**: `angularCompiler = compiler` (394줄), `shouldTsIgnoreJs = !co.allowJs` (398줄), `useTypeScriptTranspilation` (399-400줄) — 원본 코드(384-409줄)와 동일
11
+ - [x] **HMR 실패 시 templateUpdates 초기화**: `updateText === null || updateText === undefined` 조건(364줄) → `pluginOptions.templateUpdates!.clear()` (366줄) + `break` (367줄) — 원본과 동일
12
+ - [x] **Worker 빌드 성공 경로**: `additionalResults.set(fullWorkerPath, {outputFiles, metafile})` (428-431줄) → `workerCodeFile` 찾기 (442-444줄) → 상대 경로 반환 (450-451줄) — 원본과 동일
13
+ - [x] **Worker 빌드 실패 경로**: `errors.push(...workerResult.errors)` (415줄) → `referencedFileTracker.add()` (417-423줄) → `additionalResults.set()` (424줄) → `return workerFile` (425줄) — 원본과 동일
14
+ - [x] **onStart 오케스트레이션 축소**: onStart 콜백이 456-526줄 = ~70줄로 축소됨. 구성: stylesheetErrors 리셋(4줄) + 분기 호출(5줄) + processWebWorker 생성(1줄) + emit(5줄) + diagnostics(8줄) + stylesheet 브릿징(12줄) + 에러 핸들링(13줄) + 결과 반환(3줄)
15
+ - [x] **onLoad/onEnd/onDispose 미변경**: 528줄 이후의 onLoad(528-593줄), onEnd(615-625줄), onDispose(628-632줄) 핸들러가 변경되지 않음
16
+ - [x] **기존 테스트 26개 통과**: vitest run 실행 결과 26 passed, 0 failed
@@ -0,0 +1,15 @@
1
+ # esbuild-angular-compiler-plugin SdTsCompiler 전환 — LLM 검증
2
+
3
+ ## 검증 항목
4
+
5
+ - [x] SdTsCompiler 인스턴스 생성: `:402-414` — `new SdTsCompiler({ pkgDir: path.dirname(pluginOptions.tsconfig), cwd, output: { js: true, dts: false }, sourceFileCache, transformStylesheet, externalStylesheets, compilerOptionsTransformer })` 올바르게 구성
6
+ - [x] compileAsync 호출: `:422-425` — 첫 빌드 시 `compileAsync(undefined, { additionalTransformers })`, 증분 빌드 시 `compileAsync(expandedModifiedFiles, { additionalTransformers })`
7
+ - [x] emitResults → typeScriptFileCache 매핑: `:428-430` — `compileResult.emitResults`를 순회하여 `path.normalize(sourceFileName)` 키로 저장
8
+ - [x] diagnostics 변환: `:441-448` — `convertSerializedDiagnosticToEsbuild(d, compileResult.program, cwd)` 사용, `d.category` 기반 분류
9
+ - [x] HMR staleSourceFiles 캡처: `:380-388` — `lastResult.program.getSourceFile(modifiedFile)` 사용, compileAsync 전에 수행
10
+ - [x] HMR collectHmrCandidates: `:468-471` — `compileResult.ngtscProgram` 사용, staleSourceFiles 전달
11
+ - [x] SCSS bridging: `:451-462` — `pluginOptions.stylesheetDependencies`/`stylesheetErrors` 직접 읽기 (plugin-owned maps)
12
+ - [x] parseTsconfigFile 함수 제거 확인: 파일 전체에서 `parseTsconfigFile` 미발견
13
+ - [x] AngularCompiler import 제거 확인: `:7` — `import type { AngularSourceFileCache }` (type import만 유지)
14
+ - [x] onDispose에서 참조 해제: `sdTsCompiler = undefined; lastResult = undefined;` 확인
15
+ - [x] onLoad 플래그 결정: `:432-438` — `lastResult == null` 조건으로 첫 빌드에서만 결정
@@ -0,0 +1,31 @@
1
+ # Feature 2.1 컴포넌트 스타일시트 번들링 — LLM 검증
2
+
3
+ ## 검증 항목
4
+
5
+ ### AngularCompilerPluginOptions 인터페이스 확장
6
+
7
+ - [x] `stylesheetDependencies?: Map<string, Set<string>>` 필드 존재: `esbuild-angular-compiler-plugin.ts:42` — `Map<string, Set<string>>` 타입으로 선언됨. `createClientTransformStylesheet`의 `scssDependencies` 타입과 일치
8
+ - [x] `stylesheetErrors?: string[]` 필드 존재: `esbuild-angular-compiler-plugin.ts:44` — `string[]` 타입으로 선언됨. `createClientTransformStylesheet`의 `scssErrors` 타입과 일치
9
+
10
+ ### onStart — stylesheetErrors 리셋
11
+
12
+ - [x] 리셋 코드가 try 블록 **앞**에 위치: `esbuild-angular-compiler-plugin.ts:204-207` — `if (pluginOptions.stylesheetErrors != null) { pluginOptions.stylesheetErrors.length = 0; }` 가 `try {` (`:209`) 이전에 위치. 컴파일 실패 시에도 리셋이 보장됨
13
+ - [x] null guard 존재: `pluginOptions.stylesheetErrors != null` 체크로 미제공 시 TypeError 방지
14
+
15
+ ### onStart — stylesheetDependencies → FileReferenceTracker 브릿징
16
+
17
+ - [x] 브릿징 코드가 emit 후, additionalResults 수집 전에 위치: `esbuild-angular-compiler-plugin.ts:315-320` — `emitAffectedFiles` 루프(`:300-303`)와 `diagnostics 수집`(`:305-313`) 후, `additionalResults 에러 수집`(`:322`) 전에 위치
18
+ - [x] `referencedFileTracker.add(containingFile, deps)` 호출: `:318` — Map의 각 엔트리에 대해 `referencedFileTracker.add(containingFile, deps)` 호출. `FileReferenceTracker.add()` 시그니처(`file-reference-tracker.ts:22`)와 일치
19
+ - [x] null guard 존재: `:316` — `pluginOptions.stylesheetDependencies != null` 체크
20
+
21
+ ### onStart — stylesheetErrors → esbuild errors 변환
22
+
23
+ - [x] 변환 코드가 additionalResults 에러 수집 후에 위치: `esbuild-angular-compiler-plugin.ts:329-334` — `additionalResults` 루프(`:322-327`) 후에 위치
24
+ - [x] `{ text: errText, location: null }` 형식으로 push: `:332` — `errors.push({ text: errText, location: null })`. esbuild `PartialMessage` 형식에 부합
25
+ - [x] null guard 존재: `:330` — `pluginOptions.stylesheetErrors != null` 체크
26
+ - [x] 빈 배열 시 push 없음: `for...of` 루프이므로 빈 배열일 때 자연스럽게 0회 실행
27
+
28
+ ### 증분 빌드 전이적 재컴파일 경로
29
+
30
+ - [x] `referencedFileTracker.update(sourceFileCache.modifiedFiles)` 호출: `:231-233` — 증분 빌드 경로에서 `referencedFileTracker.update()`가 호출됨. Feature 2.1에서 등록한 SCSS 의존성이 여기서 전이적으로 확장됨
31
+ - [x] 확장된 파일이 `sourceFileCache.invalidate()`에 전달됨: `:234` — `sourceFileCache.invalidate(expandedModifiedFiles)`. SCSS 의존성 파일 변경 시 해당 스타일시트 파일도 무효화되어 Angular compiler가 컴포넌트를 재컴파일
@@ -0,0 +1,31 @@
1
+ # Web Worker 번들링 — LLM 검증
2
+
3
+ ## 검증 항목
4
+
5
+ ### bundleWebWorker 함수
6
+
7
+ - [x] buildSync 옵션: `esbuild-angular-compiler-plugin.ts:165-177` — platform: "browser", write: false, bundle: true, metafile: true, format: "esm", entryNames: "worker-[hash]", plugins: undefined, supported: undefined 모두 확인
8
+ - [x] sourcemap 전달: `esbuild-angular-compiler-plugin.ts:174` — `sourcemap` 파라미터 직접 전달
9
+ - [x] initialOptions spread: `esbuild-angular-compiler-plugin.ts:165` — `...build.initialOptions`로 target/absWorkingDir/outdir 전달
10
+ - [x] catch — errors/warnings 있으면 반환: `esbuild-angular-compiler-plugin.ts:178-186` — `"errors" in error && "warnings" in error` 확인 후 `error as esbuild.BuildResult` 반환
11
+ - [x] catch — 없으면 re-throw: `esbuild-angular-compiler-plugin.ts:187` — `throw error`
12
+
13
+ ### processWebWorker 콜백
14
+
15
+ - [x] workerFile resolve: `esbuild-angular-compiler-plugin.ts:346` — `path.join(path.dirname(containingFile), workerFile)`
16
+ - [x] 성공 — additionalResults 저장: `esbuild-angular-compiler-plugin.ts:365-368` — `additionalResults.set(fullWorkerPath, { outputFiles, metafile })`
17
+ - [x] 성공 — FileReferenceTracker 등록: `esbuild-angular-compiler-plugin.ts:371-376` — `metafile.inputs` 키를 `path.join(cwd, input)`으로 변환하여 등록
18
+ - [x] 성공 — 반환값: `esbuild-angular-compiler-plugin.ts:379-388` — `/^worker-[A-Z0-9]{8}\.[cm]?js$/` 패턴으로 검색, `path.relative(outdir, ...)` + `replaceAll("\\", "/")` forward slash 반환
19
+ - [x] 에러 — errors push: `esbuild-angular-compiler-plugin.ts:352` — `errors.push(...workerResult.errors)`
20
+ - [x] 에러 — warnings push: `esbuild-angular-compiler-plugin.ts:349` — `warnings.push(...workerResult.warnings)` (성공/실패 공통 실행)
21
+ - [x] 에러 — FileReferenceTracker 등록: `esbuild-angular-compiler-plugin.ts:354-359` — `location?.file` 필터 후 `path.join(cwd, f)` 변환
22
+ - [x] 에러 — additionalResults 저장: `esbuild-angular-compiler-plugin.ts:361` — `{ errors: workerResult.errors }`
23
+ - [x] 에러 — 원본 반환: `esbuild-angular-compiler-plugin.ts:362` — `return workerFile`
24
+
25
+ ### Plugin 통합
26
+
27
+ - [x] import: `esbuild-angular-compiler-plugin.ts:14` — `import { createWorkerTransformer } from "../angular/web-worker-transformer.js"`
28
+ - [x] transformer 생성: `esbuild-angular-compiler-plugin.ts:392` — `createWorkerTransformer(processWebWorker)`
29
+ - [x] emitAffectedFiles 전달: `esbuild-angular-compiler-plugin.ts:393-395` — `{ additionalTransformers: { before: [workerTransformer] } }`
30
+ - [x] 클로저 접근: `esbuild-angular-compiler-plugin.ts:344-389` — onStart 내부에서 생성, `errors`/`warnings`/`additionalResults`/`referencedFileTracker`/`cwd`/`build` 접근 가능
31
+ - [x] onEnd 병합: `esbuild-angular-compiler-plugin.ts:449-460` — additionalResults 순회에서 worker 결과 포함