@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
@@ -0,0 +1,230 @@
1
+ import ts from "typescript";
2
+ /** HMR 분석 대상 최대 변경 파일 수 */
3
+ export const HMR_MODIFIED_FILE_LIMIT = 32;
4
+ /**
5
+ * HMR 지원 메타데이터 필드.
6
+ * template, templateUrl, styles, styleUrl, stylesUrl만 HMR 업데이트를 지원한다.
7
+ */
8
+ const SUPPORTED_FIELD_NAMES = new Set([
9
+ "template",
10
+ "templateUrl",
11
+ "styles",
12
+ "styleUrl",
13
+ "stylesUrl",
14
+ ]);
15
+ var MetaUpdateAnalysis;
16
+ (function (MetaUpdateAnalysis) {
17
+ MetaUpdateAnalysis[MetaUpdateAnalysis["Supported"] = 0] = "Supported";
18
+ MetaUpdateAnalysis[MetaUpdateAnalysis["Unsupported"] = 1] = "Unsupported";
19
+ MetaUpdateAnalysis[MetaUpdateAnalysis["None"] = 2] = "None";
20
+ })(MetaUpdateAnalysis || (MetaUpdateAnalysis = {}));
21
+ /**
22
+ * 변경된 파일에서 HMR 후보 컴포넌트 클래스를 수집한다.
23
+ *
24
+ * - 템플릿/스타일 파일 변경 → 해당 파일을 사용하는 컴포넌트가 후보
25
+ * - 소스 파일 변경 → 인라인 템플릿/스타일만 변경된 컴포넌트가 후보
26
+ * - 지원 불가 변경(클래스 멤버, 비-컴포넌트 문 변경 등) → 후보 전체 무효화
27
+ */
28
+ export function collectHmrCandidates(modifiedFiles, angularProgram, staleSourceFiles) {
29
+ const compiler = angularProgram.compiler;
30
+ const candidates = new Set();
31
+ for (const file of modifiedFiles) {
32
+ // 템플릿 파일 변경 → 소유 컴포넌트 추가
33
+ const templateFileNodes = compiler.getComponentsWithTemplateFile(file);
34
+ if (templateFileNodes.size > 0) {
35
+ for (const node of templateFileNodes) {
36
+ if (ts.isClassDeclaration(node)) {
37
+ candidates.add(node);
38
+ }
39
+ }
40
+ continue;
41
+ }
42
+ // 스타일 파일 변경 → 소유 컴포넌트 추가
43
+ const styleFileNodes = compiler.getComponentsWithStyleFile(file);
44
+ if (styleFileNodes.size > 0) {
45
+ for (const node of styleFileNodes) {
46
+ if (ts.isClassDeclaration(node)) {
47
+ candidates.add(node);
48
+ }
49
+ }
50
+ continue;
51
+ }
52
+ // 소스 파일 변경 → 상세 분석
53
+ const staleSource = staleSourceFiles?.get(file);
54
+ if (staleSource == null) {
55
+ // 알 수 없는 파일 → full rebuild
56
+ candidates.clear();
57
+ break;
58
+ }
59
+ const updatedSource = compiler.getCurrentProgram().getSourceFile(file);
60
+ if (updatedSource == null) {
61
+ // 더 이상 존재하지 않는 파일 → full rebuild
62
+ candidates.clear();
63
+ break;
64
+ }
65
+ const fileCandidates = analyzeFileUpdates(staleSource, updatedSource, compiler);
66
+ if (fileCandidates != null) {
67
+ for (const node of fileCandidates) {
68
+ candidates.add(node);
69
+ }
70
+ }
71
+ else {
72
+ // 지원 불가 변경 → full rebuild
73
+ candidates.clear();
74
+ break;
75
+ }
76
+ }
77
+ return candidates;
78
+ }
79
+ /**
80
+ * 소스 파일의 변경사항을 분석하여 HMR 후보 컴포넌트를 반환한다.
81
+ * 지원 불가 변경이 있으면 null을 반환한다.
82
+ */
83
+ function analyzeFileUpdates(stale, updated, compiler) {
84
+ if (stale.statements.length !== updated.statements.length) {
85
+ return null;
86
+ }
87
+ const candidates = [];
88
+ for (let i = 0; i < updated.statements.length; ++i) {
89
+ const updatedNode = updated.statements[i];
90
+ const staleNode = stale.statements[i];
91
+ if (ts.isClassDeclaration(updatedNode)) {
92
+ if (!ts.isClassDeclaration(staleNode)) {
93
+ return null;
94
+ }
95
+ // 클래스 이름/상속/수정자 변경 확인
96
+ if (updatedNode.name?.text !== staleNode.name?.text) {
97
+ return null;
98
+ }
99
+ if (!equalRangeText(updatedNode.heritageClauses, updated, staleNode.heritageClauses, stale)) {
100
+ return null;
101
+ }
102
+ const updatedModifiers = ts.getModifiers(updatedNode);
103
+ const staleModifiers = ts.getModifiers(staleNode);
104
+ if (updatedModifiers?.length !== staleModifiers?.length ||
105
+ !updatedModifiers?.every((m) => staleModifiers?.some((sm) => m.kind === sm.kind))) {
106
+ return null;
107
+ }
108
+ // 컴포넌트 클래스 확인
109
+ const meta = compiler.getMeta(updatedNode);
110
+ if (meta?.decorator != null && meta["isComponent"] === true) {
111
+ const updatedDecorators = ts.getDecorators(updatedNode);
112
+ const staleDecorators = ts.getDecorators(staleNode);
113
+ if (staleDecorators == null || staleDecorators.length !== updatedDecorators?.length) {
114
+ return null;
115
+ }
116
+ if (staleDecorators.length > 1) {
117
+ return null;
118
+ }
119
+ const metaDecoratorIndex = updatedDecorators.indexOf(meta.decorator);
120
+ const updatedDecExpr = meta.decorator.expression;
121
+ if (!ts.isCallExpression(updatedDecExpr) ||
122
+ updatedDecExpr.arguments.length !== 1) {
123
+ return null;
124
+ }
125
+ const staleDecExpr = staleDecorators[metaDecoratorIndex].expression;
126
+ if (!ts.isCallExpression(staleDecExpr) ||
127
+ staleDecExpr.arguments.length !== 1) {
128
+ return null;
129
+ }
130
+ // 데코레이터 이름/표현식 비교
131
+ if (!equalRangeText(updatedDecExpr.expression, updated, staleDecExpr.expression, stale)) {
132
+ return null;
133
+ }
134
+ // 메타데이터 변경 분석
135
+ const analysis = analyzeMetaUpdates(staleDecExpr, stale, updatedDecExpr, updated);
136
+ if (analysis === MetaUpdateAnalysis.Unsupported) {
137
+ return null;
138
+ }
139
+ // 클래스 멤버 변경 확인
140
+ if (!equalRangeText(updatedNode.members, updated, staleNode.members, stale)) {
141
+ return null;
142
+ }
143
+ if (analysis === MetaUpdateAnalysis.Supported) {
144
+ candidates.push(updatedNode);
145
+ }
146
+ continue;
147
+ }
148
+ }
149
+ // 비-컴포넌트 문 변경 확인
150
+ if (!equalRangeText(updatedNode, updated, staleNode, stale)) {
151
+ return null;
152
+ }
153
+ }
154
+ return candidates;
155
+ }
156
+ /**
157
+ * 컴포넌트 데코레이터의 메타데이터 필드 변경을 분석한다.
158
+ * 지원 필드(template, styles 등)만 변경되었으면 Supported,
159
+ * 비지원 필드가 변경되었으면 Unsupported,
160
+ * 변경 없으면 None.
161
+ */
162
+ function analyzeMetaUpdates(staleCall, staleSource, updatedCall, updatedSource) {
163
+ const staleObject = staleCall.arguments[0];
164
+ const updatedObject = updatedCall.arguments[0];
165
+ let hasSupportedUpdate = false;
166
+ if (!ts.isObjectLiteralExpression(staleObject) || !ts.isObjectLiteralExpression(updatedObject)) {
167
+ return MetaUpdateAnalysis.Unsupported;
168
+ }
169
+ const supportedFields = new Map();
170
+ const unsupportedFields = [];
171
+ for (const property of staleObject.properties) {
172
+ if (!ts.isPropertyAssignment(property) || ts.isComputedPropertyName(property.name)) {
173
+ return MetaUpdateAnalysis.Unsupported;
174
+ }
175
+ const name = property.name.text;
176
+ if (SUPPORTED_FIELD_NAMES.has(name)) {
177
+ supportedFields.set(name, property.initializer);
178
+ }
179
+ else {
180
+ unsupportedFields.push(property.initializer);
181
+ }
182
+ }
183
+ let j = 0;
184
+ for (const property of updatedObject.properties) {
185
+ if (!ts.isPropertyAssignment(property) || ts.isComputedPropertyName(property.name)) {
186
+ return MetaUpdateAnalysis.Unsupported;
187
+ }
188
+ const name = property.name.text;
189
+ if (SUPPORTED_FIELD_NAMES.has(name)) {
190
+ const staleInitializer = supportedFields.get(name);
191
+ if (staleInitializer == null ||
192
+ !equalRangeText(property.initializer, updatedSource, staleInitializer, staleSource)) {
193
+ hasSupportedUpdate = true;
194
+ }
195
+ supportedFields.delete(name);
196
+ }
197
+ else {
198
+ if (!equalRangeText(property.initializer, updatedSource, unsupportedFields[j++], staleSource)) {
199
+ return MetaUpdateAnalysis.Unsupported;
200
+ }
201
+ }
202
+ }
203
+ if (j !== unsupportedFields.length) {
204
+ return MetaUpdateAnalysis.Unsupported;
205
+ }
206
+ // 남은 supported field → 제거됨 → supported update
207
+ hasSupportedUpdate ||= supportedFields.size > 0;
208
+ return hasSupportedUpdate ? MetaUpdateAnalysis.Supported : MetaUpdateAnalysis.None;
209
+ }
210
+ /**
211
+ * 두 소스 파일 범위의 텍스트를 문자 단위로 비교한다.
212
+ */
213
+ function equalRangeText(firstRange, firstSource, secondRange, secondSource) {
214
+ if (firstRange == null || secondRange == null) {
215
+ return firstRange === secondRange;
216
+ }
217
+ const firstLength = firstRange.end - firstRange.pos;
218
+ const secondLength = secondRange.end - secondRange.pos;
219
+ if (firstLength !== secondLength) {
220
+ return false;
221
+ }
222
+ for (let i = 0; i < firstLength; ++i) {
223
+ if (firstSource.text.charCodeAt(i + firstRange.pos) !==
224
+ secondSource.text.charCodeAt(i + secondRange.pos)) {
225
+ return false;
226
+ }
227
+ }
228
+ return true;
229
+ }
230
+ //# sourceMappingURL=hmr-candidates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hmr-candidates.js","sourceRoot":"","sources":["../../src/angular/hmr-candidates.ts"],"names":[],"mappings":"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"}
@@ -1,37 +1,7 @@
1
- import ts from "typescript";
2
- import type { BuildOutput } from "../engines/types";
3
- import type { SerializedDiagnostic } from "../typecheck/typecheck-serialization";
4
- import type { LintWithProgramResult } from "../lint/lint-with-program";
5
- import type { TypecheckEnv } from "../utils/tsconfig";
6
- export interface NgtscBuildInfo {
7
- name: string;
8
- cwd: string;
9
- pkgDir: string;
10
- output: BuildOutput;
11
- /** 타입체크 환경. 설정 시 getCompilerOptionsForEnv()로 compilerOptions를 조정한다. */
12
- env?: TypecheckEnv;
13
- /** sd.config.ts의 replaceDeps 설정 */
14
- replaceDeps?: Record<string, string>;
15
- }
16
- export interface NgtscBuildResult {
17
- build: {
18
- success: boolean;
19
- errors?: string[];
20
- warnings?: string[];
21
- diagnostics: SerializedDiagnostic[];
22
- };
23
- lint?: LintWithProgramResult;
24
- }
25
- export interface NgtscCombinedBuildEvent {
26
- build: {
27
- success: boolean;
28
- errors?: string[];
29
- warnings?: string[];
30
- };
31
- lint?: LintWithProgramResult;
32
- }
33
- export declare function buildCompilerOptions(baseOptions: ts.CompilerOptions, pkgDir: string, output: BuildOutput): ts.CompilerOptions;
34
- export declare function buildScssLoadPaths(info: NgtscBuildInfo): string[];
1
+ /**
2
+ * 정방향 의존성 맵(소유파일→의존성 Set)에서 역방향 인덱스(의존성→소유파일 Set)를 구축한다.
3
+ */
4
+ export declare function buildReverseDeps(forwardDeps: ReadonlyMap<string, ReadonlySet<string>>): Map<string, Set<string>>;
35
5
  export declare function trackDeps(depsMap: Map<string, Set<string>>, containingFile: string, dependencies: string[]): void;
36
6
  export declare function formatScssError(err: unknown, containingFile: string): string;
37
7
  export interface SideEffectScssEntry {
@@ -44,12 +14,46 @@ export interface SideEffectScssOptions {
44
14
  scssErrors: string[];
45
15
  scssDependencies: Map<string, Set<string>>;
46
16
  registry?: Map<string, SideEffectScssEntry>;
17
+ /** sourceFileName → Set<registryKey(=scssAbsPath)> 역방향 인덱스. O(1) 삭제용 */
18
+ registryReverseIndex?: Map<string, Set<string>>;
19
+ /** side-effect SCSS별 의존성 맵. compileScssFile 후 갱신. 증분 판별용 */
20
+ sideEffectScssDeps?: Map<string, Set<string>>;
47
21
  }
48
22
  /**
49
- * 레지스트리의 모든 side-effect SCSS 항목을 CSS로 컴파일한다.
50
- * compileGlobalScss와 동일한 패턴 — 항상 모든 항목을 재컴파일한다.
23
+ * Library용 transformStylesheet 콜백 팩토리.
24
+ * AngularCompiler의 transformStylesheet 옵션에 주입된다.
25
+ *
26
+ * - 외부 .scss 파일: compileScssFile로 CSS 반환 + 의존성 기록
27
+ * - 외부 비-SCSS 파일 (.css 등): null 반환 (readResource가 처리)
28
+ * - 인라인 스타일: compileScssString으로 CSS 반환 + 의존성 기록
29
+ * - 에러 시: scssErrors에 추가, SCSS error comment 반환
30
+ */
31
+ export declare function createLibraryTransformStylesheet(loadPaths: string[], scssErrors: string[], scssDependencies: Map<string, Set<string>>): (data: string, containingFile: string, stylesheetFile?: string) => Promise<string | null>;
32
+ /**
33
+ * 레지스트리의 side-effect SCSS 항목을 CSS로 컴파일한다.
34
+ * changedScssFiles가 제공되면 영향받는 항목만 재컴파일한다 (증분 모드).
35
+ * changedScssFiles가 미제공이면 전체 재컴파일한다 (초기 빌드).
51
36
  * 에러 발생 시 scssErrors에 추가하고 기존 CSS 파일을 보존한다.
52
37
  */
53
- export declare function compileSideEffectScss(registry: ReadonlyMap<string, SideEffectScssEntry>, loadPaths: string[], scssErrors: string[], scssDependencies: Map<string, Set<string>>): void;
38
+ export declare function compileSideEffectScss(registry: ReadonlyMap<string, SideEffectScssEntry>, loadPaths: string[], scssErrors: string[], scssDependencies: Map<string, Set<string>>, changedScssFiles?: ReadonlySet<string>, sideEffectScssDeps?: Map<string, Set<string>>): void;
54
39
  export declare function compileGlobalScss(pkgDir: string, loadPaths: string[]): string[];
40
+ export interface WriteEmitResultsOptions {
41
+ /** 출력 대상 패키지 디렉토리 */
42
+ pkgDir: string;
43
+ /** emit 결과 필터 (src/ 하위만 등) */
44
+ sourceFilter?: (fileName: string) => boolean;
45
+ /** side-effect SCSS 옵션 */
46
+ scss?: SideEffectScssOptions;
47
+ }
48
+ /**
49
+ * emitAffectedFiles 결과를 output-path-rewriting 적용 후 파일로 쓴다.
50
+ * scss 옵션이 제공되면 .js 파일 내 .scss side-effect import를 처리한다:
51
+ * 1. import 경로를 .scss → .css로 변환
52
+ * 2. 참조된 SCSS 파일을 CSS로 컴파일하여 dist에 출력
53
+ */
54
+ export declare function writeEmitResults(emitResults: Iterable<{
55
+ filename: string;
56
+ contents: string;
57
+ sourceFileName?: string;
58
+ }>, pkgDir: string, scss?: SideEffectScssOptions): void;
55
59
  //# sourceMappingURL=ngtsc-build-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngtsc-build-core.d.ts","sourceRoot":"","sources":["../../src/angular/ngtsc-build-core.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,YAAY,CAAC;AAK5B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,WAAW,CAAC;IACpB,uEAAuE;IACvE,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,WAAW,EAAE,oBAAoB,EAAE,CAAA;KAAE,CAAC;IACzG,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACpE,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B;AAMD,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,EAAE,CAAC,eAAe,EAC/B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,GAClB,EAAE,CAAC,eAAe,CAwCpB;AAMD,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,GAAG,MAAM,EAAE,CAKjE;AAID,wBAAgB,SAAS,CACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACjC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EAAE,GACrB,IAAI,CASN;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;CAC7C;AAID;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAClD,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACzC,IAAI,CAaN;AAMD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,EAAE,CAgBV"}
1
+ {"version":3,"file":"ngtsc-build-core.d.ts","sourceRoot":"","sources":["../../src/angular/ngtsc-build-core.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,GACpD,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAa1B;AAED,wBAAgB,SAAS,CACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EACjC,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,MAAM,EAAE,GACrB,IAAI,CASN;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAG5E;AAED,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC5C,wEAAwE;IACxE,oBAAoB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAChD,4DAA4D;IAC5D,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;CAC/C;AAID;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC9C,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GACzC,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA2B3F;AAMD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,WAAW,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAClD,SAAS,EAAE,MAAM,EAAE,EACnB,UAAU,EAAE,MAAM,EAAE,EACpB,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAC1C,gBAAgB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EACtC,kBAAkB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAC5C,IAAI,CA6BN;AAMD,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EAAE,GAClB,MAAM,EAAE,CAgBV;AAMD,MAAM,WAAW,uBAAuB;IACtC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,8BAA8B;IAC9B,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;IAC7C,0BAA0B;IAC1B,IAAI,CAAC,EAAE,qBAAqB,CAAC;CAC9B;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,QAAQ,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,EACtF,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,qBAAqB,GAC3B,IAAI,CA6EN"}
@@ -1,59 +1,27 @@
1
1
  import path from "path";
2
2
  import fs from "fs";
3
- import ts from "typescript";
4
3
  import { err as errNs } from "@simplysm/core-common";
5
4
  import { consola } from "consola";
6
5
  const logger = consola.withTag("sd:cli:ngtsc-build");
7
- import { compileScssFile } from "./scss-compiler.js";
8
- //#endregion
9
- //#region CompilerOptions helpers
10
- export function buildCompilerOptions(baseOptions, pkgDir, output) {
11
- const needsEmit = output.js || output.dts;
12
- const options = {
13
- ...baseOptions,
14
- sourceMap: false,
15
- outDir: path.join(pkgDir, "dist"),
16
- incremental: true,
17
- tsBuildInfoFile: path.join(pkgDir, ".cache", needsEmit ? "ngtsc-build.tsbuildinfo" : "ngtsc-typecheck.tsbuildinfo"),
18
- };
19
- if (output.js && output.dts) {
20
- options.noEmit = false;
21
- options.declaration = true;
22
- options.declarationMap = true;
23
- options.emitDeclarationOnly = false;
24
- options.declarationDir = path.join(pkgDir, "dist");
25
- }
26
- else if (output.js && !output.dts) {
27
- options.noEmit = false;
28
- options.declaration = false;
29
- options.declarationMap = false;
30
- options.emitDeclarationOnly = false;
31
- }
32
- else if (!output.js && output.dts) {
33
- options.noEmit = false;
34
- options.declaration = true;
35
- options.declarationMap = true;
36
- options.emitDeclarationOnly = true;
37
- options.declarationDir = path.join(pkgDir, "dist");
38
- }
39
- else {
40
- // 둘 다 false — 타입체크만 수행
41
- options.noEmit = true;
42
- options.declaration = false;
43
- options.declarationMap = false;
44
- options.emitDeclarationOnly = false;
6
+ import { compileScssFile, compileScssString } from "./scss-compiler.js";
7
+ import { createOutputPathRewriter, rewriteScssImports } from "../utils/output-path-rewriter.js";
8
+ /**
9
+ * 정방향 의존성 맵(소유파일→의존성 Set)에서 역방향 인덱스(의존성→소유파일 Set) 구축한다.
10
+ */
11
+ export function buildReverseDeps(forwardDeps) {
12
+ const reverse = new Map();
13
+ for (const [ownerFile, deps] of forwardDeps) {
14
+ for (const dep of deps) {
15
+ let owners = reverse.get(dep);
16
+ if (owners == null) {
17
+ owners = new Set();
18
+ reverse.set(dep, owners);
19
+ }
20
+ owners.add(ownerFile);
21
+ }
45
22
  }
46
- return options;
47
- }
48
- //#endregion
49
- //#region SCSS loadPaths helper
50
- export function buildScssLoadPaths(info) {
51
- return [
52
- path.join(info.pkgDir, "scss"),
53
- path.join(info.cwd, "node_modules"),
54
- ];
23
+ return reverse;
55
24
  }
56
- //#endregion
57
25
  export function trackDeps(depsMap, containingFile, dependencies) {
58
26
  let deps = depsMap.get(containingFile);
59
27
  if (deps == null) {
@@ -68,20 +36,75 @@ export function formatScssError(err, containingFile) {
68
36
  const message = errNs.message(err);
69
37
  return `SCSS error in ${containingFile}: ${message}`;
70
38
  }
39
+ //#region Library SCSS transform
40
+ /**
41
+ * Library용 transformStylesheet 콜백 팩토리.
42
+ * AngularCompiler의 transformStylesheet 옵션에 주입된다.
43
+ *
44
+ * - 외부 .scss 파일: compileScssFile로 CSS 반환 + 의존성 기록
45
+ * - 외부 비-SCSS 파일 (.css 등): null 반환 (readResource가 처리)
46
+ * - 인라인 스타일: compileScssString으로 CSS 반환 + 의존성 기록
47
+ * - 에러 시: scssErrors에 추가, SCSS error comment 반환
48
+ */
49
+ export function createLibraryTransformStylesheet(loadPaths, scssErrors, scssDependencies) {
50
+ return (data, containingFile, stylesheetFile) => {
51
+ try {
52
+ if (stylesheetFile != null && stylesheetFile.endsWith(".scss")) {
53
+ const result = compileScssFile(stylesheetFile, loadPaths);
54
+ trackDeps(scssDependencies, containingFile, result.dependencies);
55
+ return Promise.resolve(result.css);
56
+ }
57
+ if (stylesheetFile != null) {
58
+ // .css 등 비-SCSS 파일 → null 반환 (readResource가 처리)
59
+ return Promise.resolve(null);
60
+ }
61
+ // 인라인 스타일 — SCSS로 컴파일
62
+ const result = compileScssString(data, containingFile, loadPaths);
63
+ trackDeps(scssDependencies, containingFile, result.dependencies);
64
+ return Promise.resolve(result.css);
65
+ }
66
+ catch (err) {
67
+ scssErrors.push(formatScssError(err, containingFile));
68
+ return Promise.resolve("/* SCSS compilation error */");
69
+ }
70
+ };
71
+ }
72
+ //#endregion
71
73
  //#region Side-effect SCSS
72
74
  /**
73
- * 레지스트리의 모든 side-effect SCSS 항목을 CSS로 컴파일한다.
74
- * compileGlobalScss와 동일한 패턴 항상 모든 항목을 재컴파일한다.
75
+ * 레지스트리의 side-effect SCSS 항목을 CSS로 컴파일한다.
76
+ * changedScssFiles가 제공되면 영향받는 항목만 재컴파일한다 (증분 모드).
77
+ * changedScssFiles가 미제공이면 전체 재컴파일한다 (초기 빌드).
75
78
  * 에러 발생 시 scssErrors에 추가하고 기존 CSS 파일을 보존한다.
76
79
  */
77
- export function compileSideEffectScss(registry, loadPaths, scssErrors, scssDependencies) {
80
+ export function compileSideEffectScss(registry, loadPaths, scssErrors, scssDependencies, changedScssFiles, sideEffectScssDeps) {
78
81
  logger.debug(`side-effect SCSS 컴파일 시작 (${registry.size}개)`);
79
82
  for (const entry of registry.values()) {
83
+ // 증분 모드: 영향받는 항목만 재컴파일
84
+ if (changedScssFiles != null && sideEffectScssDeps != null) {
85
+ const isDirectHit = changedScssFiles.has(entry.scssAbsPath);
86
+ let isDepsHit = false;
87
+ const deps = sideEffectScssDeps.get(entry.scssAbsPath);
88
+ if (deps != null) {
89
+ for (const d of deps) {
90
+ if (changedScssFiles.has(d)) {
91
+ isDepsHit = true;
92
+ break;
93
+ }
94
+ }
95
+ }
96
+ if (!isDirectHit && !isDepsHit)
97
+ continue;
98
+ }
80
99
  try {
81
100
  const result = compileScssFile(entry.scssAbsPath, loadPaths);
82
101
  fs.mkdirSync(path.dirname(entry.cssAbsPath), { recursive: true });
83
102
  fs.writeFileSync(entry.cssAbsPath, result.css, "utf-8");
84
103
  trackDeps(scssDependencies, entry.sourceFileName, result.dependencies);
104
+ // 의존성 기록 (증분 판별용)
105
+ if (sideEffectScssDeps != null) {
106
+ sideEffectScssDeps.set(entry.scssAbsPath, new Set(result.dependencies));
107
+ }
85
108
  }
86
109
  catch (err) {
87
110
  scssErrors.push(formatScssError(err, entry.scssAbsPath));
@@ -109,5 +132,85 @@ export function compileGlobalScss(pkgDir, loadPaths) {
109
132
  logger.debug("global SCSS 컴파일 완료");
110
133
  return errors;
111
134
  }
135
+ /**
136
+ * emitAffectedFiles 결과를 output-path-rewriting 적용 후 파일로 쓴다.
137
+ * scss 옵션이 제공되면 .js 파일 내 .scss side-effect import를 처리한다:
138
+ * 1. import 경로를 .scss → .css로 변환
139
+ * 2. 참조된 SCSS 파일을 CSS로 컴파일하여 dist에 출력
140
+ */
141
+ export function writeEmitResults(emitResults, pkgDir, scss) {
142
+ logger.debug("emit 결과 파일 쓰기 시작");
143
+ const rewritePath = createOutputPathRewriter(pkgDir);
144
+ for (const { filename, contents, sourceFileName } of emitResults) {
145
+ const rewrite = rewritePath(filename, contents);
146
+ if (rewrite == null)
147
+ continue;
148
+ let [newPath, newContent] = rewrite;
149
+ // .js 파일 내 side-effect SCSS import 처리
150
+ if (scss != null && newPath.endsWith(".js")) {
151
+ const { text, scssImports } = rewriteScssImports(newContent);
152
+ newContent = text;
153
+ // 새 항목 등록 전에 이 소스 파일의 기존 레지스트리 항목 제거
154
+ if (scss.registry != null && sourceFileName != null) {
155
+ if (scss.registryReverseIndex != null) {
156
+ // O(1) 삭제: 역방향 인덱스 활용
157
+ const keys = scss.registryReverseIndex.get(sourceFileName);
158
+ if (keys != null) {
159
+ for (const key of keys) {
160
+ scss.registry.delete(key);
161
+ }
162
+ scss.registryReverseIndex.delete(sourceFileName);
163
+ }
164
+ }
165
+ else {
166
+ // 폴백: O(n) 순회 삭제
167
+ for (const [key, entry] of scss.registry) {
168
+ if (entry.sourceFileName === sourceFileName) {
169
+ scss.registry.delete(key);
170
+ }
171
+ }
172
+ }
173
+ }
174
+ if (scssImports.length > 0 && sourceFileName != null) {
175
+ const sourceDir = path.dirname(sourceFileName);
176
+ const outputDir = path.dirname(newPath);
177
+ for (const scssImport of scssImports) {
178
+ const scssAbsPath = path.resolve(sourceDir, scssImport);
179
+ const cssFileName = scssImport.replace(/\.scss$/, ".css");
180
+ const cssAbsPath = path.resolve(outputDir, cssFileName);
181
+ // 레지스트리가 제공된 경우 등록 (scssAbsPath를 키로 사용하여 중복 방지)
182
+ if (scss.registry != null) {
183
+ scss.registry.set(scssAbsPath, { scssAbsPath, cssAbsPath, sourceFileName });
184
+ // 역방향 인덱스 갱신
185
+ if (scss.registryReverseIndex != null) {
186
+ let keys = scss.registryReverseIndex.get(sourceFileName);
187
+ if (keys == null) {
188
+ keys = new Set();
189
+ scss.registryReverseIndex.set(sourceFileName, keys);
190
+ }
191
+ keys.add(scssAbsPath);
192
+ }
193
+ }
194
+ try {
195
+ const result = compileScssFile(scssAbsPath, scss.loadPaths);
196
+ fs.mkdirSync(path.dirname(cssAbsPath), { recursive: true });
197
+ fs.writeFileSync(cssAbsPath, result.css, "utf-8");
198
+ trackDeps(scss.scssDependencies, sourceFileName, result.dependencies);
199
+ // side-effect SCSS 의존성 기록 (증분 판별용)
200
+ if (scss.sideEffectScssDeps != null) {
201
+ scss.sideEffectScssDeps.set(scssAbsPath, new Set(result.dependencies));
202
+ }
203
+ }
204
+ catch (err) {
205
+ scss.scssErrors.push(formatScssError(err, scssAbsPath));
206
+ }
207
+ }
208
+ }
209
+ }
210
+ fs.mkdirSync(path.dirname(newPath), { recursive: true });
211
+ fs.writeFileSync(newPath, newContent, "utf-8");
212
+ }
213
+ logger.debug("emit 결과 파일 쓰기 완료");
214
+ }
112
215
  //#endregion
113
216
  //# sourceMappingURL=ngtsc-build-core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ngtsc-build-core.js","sourceRoot":"","sources":["../../src/angular/ngtsc-build-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngtsc-build-core.js","sourceRoot":"","sources":["../../src/angular/ngtsc-build-core.ts"],"names":[],"mappings":"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"}
@@ -7,7 +7,7 @@ export interface SdAngularPluginOptions {
7
7
  /**
8
8
  * Angular AOT 컴파일을 수행하는 Vite 플러그인 (Vitest 전용).
9
9
  *
10
- * AngularBuildPipeline으로 패키지의 .ts 파일을 AOT 컴파일하고,
10
+ * SdTsCompiler로 패키지의 .ts 파일을 AOT 컴파일하고,
11
11
  * transform 훅에서 컴파일된 JS를 반환한다.
12
12
  */
13
13
  export declare function sdAngularPlugin(options: SdAngularPluginOptions): Plugin;
@@ -1 +1 @@
1
- {"version":3,"file":"vite-angular-plugin.d.ts","sourceRoot":"","sources":["../../src/angular/vite-angular-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAcnC,yBAAyB;AACzB,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAkHvE"}
1
+ {"version":3,"file":"vite-angular-plugin.d.ts","sourceRoot":"","sources":["../../src/angular/vite-angular-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAWnC,yBAAyB;AACzB,MAAM,WAAW,sBAAsB;IACrC,0CAA0C;IAC1C,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,MAAM,CAkHvE"}