@simplysm/sd-cli 14.0.42 → 14.0.43

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 (321) 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 +29 -34
  10. package/dist/angular/ngtsc-build-core.d.ts.map +1 -1
  11. package/dist/angular/ngtsc-build-core.js +90 -51
  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.js +1 -1
  36. package/dist/commands/publish/version-upgrade.js.map +1 -1
  37. package/dist/commands/replace-deps.d.ts.map +1 -1
  38. package/dist/commands/replace-deps.js +2 -1
  39. package/dist/commands/replace-deps.js.map +1 -1
  40. package/dist/deps/replace-deps/collect-deps.d.ts.map +1 -1
  41. package/dist/deps/replace-deps/collect-deps.js +5 -2
  42. package/dist/deps/replace-deps/collect-deps.js.map +1 -1
  43. package/dist/deps/replace-deps/replace-deps.d.ts +21 -3
  44. package/dist/deps/replace-deps/replace-deps.d.ts.map +1 -1
  45. package/dist/deps/replace-deps/replace-deps.js +107 -62
  46. package/dist/deps/replace-deps/replace-deps.js.map +1 -1
  47. package/dist/electron/electron.js +7 -7
  48. package/dist/electron/electron.js.map +1 -1
  49. package/dist/engines/BaseEngine.d.ts.map +1 -1
  50. package/dist/engines/BaseEngine.js +2 -5
  51. package/dist/engines/BaseEngine.js.map +1 -1
  52. package/dist/engines/EsbuildClientEngine.d.ts.map +1 -1
  53. package/dist/engines/EsbuildClientEngine.js +16 -9
  54. package/dist/engines/EsbuildClientEngine.js.map +1 -1
  55. package/dist/engines/NgtscEngine.d.ts +4 -4
  56. package/dist/engines/NgtscEngine.d.ts.map +1 -1
  57. package/dist/engines/NgtscEngine.js +5 -5
  58. package/dist/engines/NgtscEngine.js.map +1 -1
  59. package/dist/engines/TscEngine.d.ts.map +1 -1
  60. package/dist/engines/TscEngine.js +0 -2
  61. package/dist/engines/TscEngine.js.map +1 -1
  62. package/dist/engines/types.d.ts +2 -0
  63. package/dist/engines/types.d.ts.map +1 -1
  64. package/dist/esbuild/esbuild-angular-compiler-plugin.d.ts +36 -0
  65. package/dist/esbuild/esbuild-angular-compiler-plugin.d.ts.map +1 -0
  66. package/dist/esbuild/esbuild-angular-compiler-plugin.js +464 -0
  67. package/dist/esbuild/esbuild-angular-compiler-plugin.js.map +1 -0
  68. package/dist/esbuild/esbuild-client-config.d.ts +8 -2
  69. package/dist/esbuild/esbuild-client-config.d.ts.map +1 -1
  70. package/dist/esbuild/esbuild-client-config.js +48 -33
  71. package/dist/esbuild/esbuild-client-config.js.map +1 -1
  72. package/dist/esbuild/esbuild-tsc-plugin.d.ts +4 -1
  73. package/dist/esbuild/esbuild-tsc-plugin.d.ts.map +1 -1
  74. package/dist/esbuild/esbuild-tsc-plugin.js +27 -23
  75. package/dist/esbuild/esbuild-tsc-plugin.js.map +1 -1
  76. package/dist/esbuild/file-reference-tracker.d.ts +24 -0
  77. package/dist/esbuild/file-reference-tracker.d.ts.map +1 -0
  78. package/dist/esbuild/file-reference-tracker.js +57 -0
  79. package/dist/esbuild/file-reference-tracker.js.map +1 -0
  80. package/dist/esbuild/lmdb-cache-store.d.ts +18 -0
  81. package/dist/esbuild/lmdb-cache-store.d.ts.map +1 -0
  82. package/dist/esbuild/lmdb-cache-store.js +41 -0
  83. package/dist/esbuild/lmdb-cache-store.js.map +1 -0
  84. package/dist/esbuild/load-result-cache.d.ts +17 -0
  85. package/dist/esbuild/load-result-cache.d.ts.map +1 -0
  86. package/dist/esbuild/load-result-cache.js +61 -0
  87. package/dist/esbuild/load-result-cache.js.map +1 -0
  88. package/dist/index.d.ts +3 -0
  89. package/dist/index.d.ts.map +1 -1
  90. package/dist/index.js +2 -0
  91. package/dist/index.js.map +1 -1
  92. package/dist/lint/lint-core.js +7 -7
  93. package/dist/lint/lint-core.js.map +1 -1
  94. package/dist/orchestrators/BaseOrchestrator.js +2 -2
  95. package/dist/orchestrators/BaseOrchestrator.js.map +1 -1
  96. package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
  97. package/dist/orchestrators/BuildOrchestrator.js +5 -19
  98. package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
  99. package/dist/orchestrators/DevOrchestrator.js +5 -5
  100. package/dist/orchestrators/DevOrchestrator.js.map +1 -1
  101. package/dist/orchestrators/WatchOrchestrator.js +6 -6
  102. package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
  103. package/dist/runtime/ResultCollector.d.ts +1 -0
  104. package/dist/runtime/ResultCollector.d.ts.map +1 -1
  105. package/dist/runtime/ResultCollector.js.map +1 -1
  106. package/dist/runtime/engine-watch-events.d.ts.map +1 -1
  107. package/dist/runtime/engine-watch-events.js +3 -0
  108. package/dist/runtime/engine-watch-events.js.map +1 -1
  109. package/dist/runtime/rebuild-manager.js +1 -1
  110. package/dist/runtime/rebuild-manager.js.map +1 -1
  111. package/dist/runtime/worker-utils.js +1 -1
  112. package/dist/runtime/worker-utils.js.map +1 -1
  113. package/dist/sd-cli-entry.d.ts.map +1 -1
  114. package/dist/sd-cli-entry.js +4 -3
  115. package/dist/sd-cli-entry.js.map +1 -1
  116. package/dist/sd-cli.js +3 -3
  117. package/dist/sd-cli.js.map +1 -1
  118. package/dist/ts-compiler/SdTsCompiler.d.ts +39 -0
  119. package/dist/ts-compiler/SdTsCompiler.d.ts.map +1 -0
  120. package/dist/ts-compiler/SdTsCompiler.js +593 -0
  121. package/dist/ts-compiler/SdTsCompiler.js.map +1 -0
  122. package/dist/ts-compiler/sd-ts-compiler-options.d.ts +40 -0
  123. package/dist/ts-compiler/sd-ts-compiler-options.d.ts.map +1 -0
  124. package/dist/ts-compiler/sd-ts-compiler-options.js +2 -0
  125. package/dist/ts-compiler/sd-ts-compiler-options.js.map +1 -0
  126. package/dist/ts-compiler/sd-ts-compiler-result.d.ts +34 -0
  127. package/dist/ts-compiler/sd-ts-compiler-result.d.ts.map +1 -0
  128. package/dist/ts-compiler/sd-ts-compiler-result.js +2 -0
  129. package/dist/ts-compiler/sd-ts-compiler-result.js.map +1 -0
  130. package/dist/utils/copy-public.d.ts +6 -4
  131. package/dist/utils/copy-public.d.ts.map +1 -1
  132. package/dist/utils/copy-public.js +9 -7
  133. package/dist/utils/copy-public.js.map +1 -1
  134. package/dist/utils/diagnostic-utils.d.ts +2 -3
  135. package/dist/utils/diagnostic-utils.d.ts.map +1 -1
  136. package/dist/utils/diagnostic-utils.js +8 -9
  137. package/dist/utils/diagnostic-utils.js.map +1 -1
  138. package/dist/utils/output-utils.d.ts +8 -2
  139. package/dist/utils/output-utils.d.ts.map +1 -1
  140. package/dist/utils/output-utils.js +32 -8
  141. package/dist/utils/output-utils.js.map +1 -1
  142. package/dist/workers/client.worker.d.ts +1 -1
  143. package/dist/workers/client.worker.d.ts.map +1 -1
  144. package/dist/workers/client.worker.js +136 -110
  145. package/dist/workers/client.worker.js.map +1 -1
  146. package/dist/workers/library-build.worker.d.ts +0 -2
  147. package/dist/workers/library-build.worker.d.ts.map +1 -1
  148. package/dist/workers/library-build.worker.js +147 -70
  149. package/dist/workers/library-build.worker.js.map +1 -1
  150. package/dist/workers/server-build.worker.d.ts.map +1 -1
  151. package/dist/workers/server-build.worker.js +30 -57
  152. package/dist/workers/server-build.worker.js.map +1 -1
  153. package/dist/workers/server-esbuild-context.d.ts +7 -0
  154. package/dist/workers/server-esbuild-context.d.ts.map +1 -1
  155. package/dist/workers/server-esbuild-context.js +11 -2
  156. package/dist/workers/server-esbuild-context.js.map +1 -1
  157. package/package.json +5 -4
  158. package/src/angular/angular-compiler.ts +0 -502
  159. package/src/angular/hmr-candidates.ts +295 -0
  160. package/src/angular/ngtsc-build-core.ts +125 -92
  161. package/src/angular/vite-angular-plugin.ts +71 -65
  162. package/src/angular/web-worker-transformer.ts +117 -0
  163. package/src/capacitor/capacitor.ts +6 -4
  164. package/src/commands/check.ts +17 -76
  165. package/src/commands/publish/deployment-phase.ts +11 -7
  166. package/src/commands/publish/npm-publisher.ts +1 -1
  167. package/src/commands/publish/publish-command.ts +1 -1
  168. package/src/commands/publish/version-upgrade.ts +1 -1
  169. package/src/commands/replace-deps.ts +3 -1
  170. package/src/deps/replace-deps/collect-deps.ts +4 -2
  171. package/src/deps/replace-deps/replace-deps.ts +114 -66
  172. package/src/electron/electron.ts +7 -7
  173. package/src/engines/BaseEngine.ts +2 -6
  174. package/src/engines/EsbuildClientEngine.ts +16 -10
  175. package/src/engines/NgtscEngine.ts +7 -7
  176. package/src/engines/TscEngine.ts +0 -2
  177. package/src/engines/types.ts +2 -0
  178. package/src/esbuild/esbuild-angular-compiler-plugin.ts +647 -0
  179. package/src/esbuild/esbuild-client-config.ts +57 -41
  180. package/src/esbuild/esbuild-tsc-plugin.ts +33 -23
  181. package/src/esbuild/file-reference-tracker.ts +61 -0
  182. package/src/esbuild/lmdb-cache-store.ts +46 -0
  183. package/src/esbuild/load-result-cache.ts +85 -0
  184. package/src/index.ts +5 -0
  185. package/src/lint/lint-core.ts +7 -7
  186. package/src/orchestrators/BaseOrchestrator.ts +2 -2
  187. package/src/orchestrators/BuildOrchestrator.ts +5 -24
  188. package/src/orchestrators/DevOrchestrator.ts +5 -5
  189. package/src/orchestrators/WatchOrchestrator.ts +6 -6
  190. package/src/runtime/ResultCollector.ts +1 -0
  191. package/src/runtime/engine-watch-events.ts +3 -0
  192. package/src/runtime/rebuild-manager.ts +1 -1
  193. package/src/runtime/worker-utils.ts +1 -1
  194. package/src/sd-cli-entry.ts +5 -3
  195. package/src/sd-cli.ts +4 -4
  196. package/src/ts-compiler/SdTsCompiler.ts +815 -0
  197. package/src/ts-compiler/sd-ts-compiler-options.ts +46 -0
  198. package/src/ts-compiler/sd-ts-compiler-result.ts +34 -0
  199. package/src/utils/copy-public.ts +9 -6
  200. package/src/utils/diagnostic-utils.ts +8 -9
  201. package/src/utils/output-utils.ts +38 -8
  202. package/src/workers/client.worker.ts +160 -126
  203. package/src/workers/library-build.worker.ts +187 -75
  204. package/src/workers/server-build.worker.ts +31 -61
  205. package/src/workers/server-esbuild-context.ts +14 -2
  206. package/tests/angular/fixtures/packages/basic-app/dist/styles.css +3 -0
  207. package/tests/angular/fixtures/packages/basic-app/scss/styles.scss +5 -0
  208. package/tests/angular/vite-angular-plugin-sdtscompiler.verify.md +13 -0
  209. package/tests/angular/web-worker-transformer.spec.ts +154 -0
  210. package/tests/capacitor/capacitor-build.spec.ts +1 -1
  211. package/tests/capacitor/capacitor-icon.spec.ts +1 -1
  212. package/tests/capacitor/capacitor-init.spec.ts +1 -1
  213. package/tests/commands/check.spec.ts +90 -104
  214. package/tests/commands/publish.spec.ts +12 -4
  215. package/tests/commands/slice3-severity-cleanup.verify.md +12 -0
  216. package/tests/deps/replace-deps/collect-deps.acc.spec.ts +62 -0
  217. package/tests/deps/replace-deps/collect-deps.spec.ts +49 -0
  218. package/tests/deps/replace-deps/replace-deps-filter.spec.ts +103 -0
  219. package/tests/deps/replace-deps/replace-deps-setup.acc.spec.ts +156 -0
  220. package/tests/electron/electron.spec.ts +4 -1
  221. package/tests/engines/engine-adapter-isolation.spec.ts +5 -6
  222. package/tests/engines/engine-duplicate-output-removal.verify.md +10 -0
  223. package/tests/engines/esbuild-client-engine.acc.spec.ts +79 -0
  224. package/tests/engines/esbuild-client-engine.spec.ts +73 -3
  225. package/tests/esbuild/esbuild-angular-compiler-plugin-hmr.verify.md +23 -0
  226. package/tests/esbuild/esbuild-angular-compiler-plugin-onload.verify.md +21 -0
  227. package/tests/esbuild/esbuild-angular-compiler-plugin-onstart-extraction.verify.md +16 -0
  228. package/tests/esbuild/esbuild-angular-compiler-plugin-sdtscompiler.verify.md +15 -0
  229. package/tests/esbuild/esbuild-angular-compiler-plugin-stylesheet.verify.md +31 -0
  230. package/tests/esbuild/esbuild-angular-compiler-plugin-worker.verify.md +31 -0
  231. package/tests/esbuild/esbuild-angular-compiler-plugin.spec.ts +397 -0
  232. package/tests/esbuild/esbuild-angular-compiler-plugin.verify.md +21 -0
  233. package/tests/esbuild/esbuild-tsc-plugin-imports.verify.md +13 -0
  234. package/tests/esbuild/esbuild-tsc-plugin.acc.spec.ts +56 -111
  235. package/tests/esbuild/esbuild-tsc-plugin.spec.ts +116 -52
  236. package/tests/esbuild/file-reference-tracker.spec.ts +99 -0
  237. package/tests/esbuild/lmdb-cache-store.spec.ts +58 -0
  238. package/tests/esbuild/load-result-cache.acc.spec.ts +55 -0
  239. package/tests/esbuild/load-result-cache.spec.ts +133 -0
  240. package/tests/orchestrators/build-orchestrator.spec.ts +4 -3
  241. package/tests/orchestrators/dev-orchestrator.spec.ts +5 -5
  242. package/tests/orchestrators/slice1-stdout-to-consola.verify.md +10 -0
  243. package/tests/orchestrators/typecheck-orchestrator.spec.ts +1 -1
  244. package/tests/orchestrators/watch-orchestrator.spec.ts +7 -7
  245. package/tests/runtime/result-collector.spec.ts +64 -0
  246. package/tests/sd-cli-entry.spec.ts +3 -4
  247. package/tests/sd-cli-log-tag.verify.md +11 -0
  248. package/tests/ts-compiler/SdTsCompiler-affected-files.verify.md +8 -0
  249. package/tests/ts-compiler/SdTsCompiler-diagnostics.verify.md +12 -0
  250. package/tests/ts-compiler/SdTsCompiler-emit.verify.md +9 -0
  251. package/tests/ts-compiler/SdTsCompiler.acc.spec.ts +603 -0
  252. package/tests/ts-compiler/SdTsCompiler.spec.ts +265 -0
  253. package/tests/ts-compiler/SdTsCompiler.verify.md +41 -0
  254. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-browser.tsbuildinfo +1 -0
  255. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-node.tsbuildinfo +1 -0
  256. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck.tsbuildinfo +1 -0
  257. package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.d.ts +2 -0
  258. package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.d.ts.map +1 -0
  259. package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.js +4 -0
  260. package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.js.map +1 -0
  261. package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.d.ts +2 -0
  262. package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.d.ts.map +1 -0
  263. package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.js +4 -0
  264. package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.js.map +1 -0
  265. package/tests/ts-compiler/fixtures/non-angular-pkg/src/index.ts +3 -0
  266. package/tests/ts-compiler/fixtures/non-angular-pkg/src/util.ts +3 -0
  267. package/tests/ts-compiler/fixtures/non-angular-pkg/tests/sample.test-file.ts +3 -0
  268. package/tests/ts-compiler/fixtures/non-angular-pkg/tsconfig.json +12 -0
  269. package/tests/ts-compiler/scss-lint-integration.verify.md +14 -0
  270. package/tests/utils/angular-build.spec.ts +1 -1
  271. package/tests/utils/copy-public-outdir.verify.md +8 -0
  272. package/tests/utils/copy-public.acc.spec.ts +52 -0
  273. package/tests/utils/copy-public.spec.ts +56 -0
  274. package/tests/utils/diagnostic-utils.spec.ts +24 -15
  275. package/tests/utils/engine-watch-events.acc.spec.ts +59 -0
  276. package/tests/utils/engine-watch-events.spec.ts +58 -0
  277. package/tests/utils/esbuild-client-config-integration.verify.md +9 -0
  278. package/tests/utils/esbuild-client-config.acc.spec.ts +45 -61
  279. package/tests/utils/esbuild-client-config.spec.ts +70 -52
  280. package/tests/utils/ngtsc-build-core-write-emit.spec.ts +12 -12
  281. package/tests/utils/ngtsc-build-core.spec.ts +1 -44
  282. package/tests/utils/output-utils.spec.ts +133 -13
  283. package/tests/utils/replace-deps-watch.acc.spec.ts +7 -1
  284. package/tests/utils/replace-deps-watch.spec.ts +57 -1
  285. package/tests/utils/worker-utils.spec.ts +8 -2
  286. package/tests/workers/client-worker-initial-build-error.verify.md +2 -3
  287. package/tests/workers/client-worker-initial-build-warnings.verify.md +7 -0
  288. package/tests/workers/client-worker-refactor.verify.md +22 -0
  289. package/tests/workers/client-worker-ts-cache-invalidation.verify.md +12 -0
  290. package/tests/workers/client-worker.acc.spec.ts +6 -3
  291. package/tests/workers/library-build-lint.spec.ts +40 -45
  292. package/tests/workers/library-build-worker.spec.ts +294 -40
  293. package/tests/workers/server-build-lint.spec.ts +59 -45
  294. package/tests/workers/server-build-worker.spec.ts +63 -24
  295. package/tests/workers/server-esbuild-context.acc.spec.ts +2 -0
  296. package/tests/workers/server-esbuild-context.spec.ts +2 -0
  297. package/tests/workers/server-runtime-worker.spec.ts +1 -1
  298. package/tests/workers/shared-worker-lifecycle.acc.spec.ts +1 -1
  299. package/dist/angular/angular-build-pipeline.d.ts +0 -97
  300. package/dist/angular/angular-build-pipeline.d.ts.map +0 -1
  301. package/dist/angular/angular-build-pipeline.js +0 -285
  302. package/dist/angular/angular-build-pipeline.js.map +0 -1
  303. package/dist/utils/tsc-build.d.ts +0 -51
  304. package/dist/utils/tsc-build.d.ts.map +0 -1
  305. package/dist/utils/tsc-build.js +0 -156
  306. package/dist/utils/tsc-build.js.map +0 -1
  307. package/dist/workers/ngtsc-build.worker.d.ts +0 -23
  308. package/dist/workers/ngtsc-build.worker.d.ts.map +0 -1
  309. package/dist/workers/ngtsc-build.worker.js +0 -267
  310. package/dist/workers/ngtsc-build.worker.js.map +0 -1
  311. package/src/angular/angular-build-pipeline.ts +0 -406
  312. package/src/utils/tsc-build.ts +0 -226
  313. package/src/workers/ngtsc-build.worker.ts +0 -351
  314. package/tests/angular/angular-build-pipeline.spec.ts +0 -247
  315. package/tests/angular/angular-compiler-aot.acc.spec.ts +0 -68
  316. package/tests/angular/angular-compiler-aot.spec.ts +0 -80
  317. package/tests/utils/angular-compiler-emit.spec.ts +0 -666
  318. package/tests/utils/angular-compiler.spec.ts +0 -707
  319. package/tests/utils/tsc-build.spec.ts +0 -527
  320. package/tests/workers/ngtsc-build-lint.spec.ts +0 -141
  321. package/tests/workers/ngtsc-build-worker.spec.ts +0 -199
@@ -0,0 +1,593 @@
1
+ import path from "path";
2
+ import { createHash } from "crypto";
3
+ import ts from "typescript";
4
+ import { consola } from "consola";
5
+ import { pathx } from "@simplysm/core-node";
6
+ import { parseTsconfig, getPackageSourceFiles, getPackageFiles, getCompilerOptionsForEnv, } from "../utils/tsconfig.js";
7
+ import { createOutputPathRewriter, addJsExtensionToImports } from "../utils/output-path-rewriter.js";
8
+ import { serializeDiagnostic } from "../typecheck/typecheck-serialization.js";
9
+ import { isWorkspaceDiagnostic, formatDiagnosticError } from "../utils/diagnostic-utils.js";
10
+ import { NgtscProgram, OptimizeFor } from "../angular/angular-build.js";
11
+ import { AngularSourceFileCache, augmentHostWithCaching, } from "../angular/angular-compiler.js";
12
+ import { createLibraryTransformStylesheet, compileGlobalScss, compileSideEffectScss as compileSideEffectScssEntries, } from "../angular/ngtsc-build-core.js";
13
+ import { LintWithProgramRunner } from "../lint/lint-with-program.js";
14
+ const logger = consola.withTag("sd:cli:SdTsCompiler");
15
+ function hasTemplateExtension(file) {
16
+ const ext = path.extname(file).toLowerCase();
17
+ return ext === ".htm" || ext === ".html" || ext === ".svg";
18
+ }
19
+ function ensureSourceFileVersions(program) {
20
+ const baseGetSourceFiles = program.getSourceFiles;
21
+ program.getSourceFiles = function (...parameters) {
22
+ const files = baseGetSourceFiles.apply(this, parameters);
23
+ for (const file of files) {
24
+ if (file.version == null) {
25
+ file.version = createHash("sha256")
26
+ .update(file.text)
27
+ .digest("hex");
28
+ }
29
+ }
30
+ return files;
31
+ };
32
+ }
33
+ export class SdTsCompiler {
34
+ _options;
35
+ // ── 파생 상태 (첫 compileAsync에서 결정) ──
36
+ _isForAngular;
37
+ _sourceFileCache;
38
+ // ── 컴파일 상태 (compileAsync마다 갱신) ──
39
+ _ngtscProgram;
40
+ _builderProgram;
41
+ // ── 영속 상태 (compileAsync 간 재사용) ──
42
+ _packageJsonCache;
43
+ _diagnosticCache = new WeakMap();
44
+ // ── affected files (compileAsync에서 갱신, emit/diagnostics에서 사용) ──
45
+ _affectedSourceFiles = new Set();
46
+ // ── SCSS 상태 (compileAsync마다 리셋)
47
+ _scssErrors = [];
48
+ _scssDependencies = new Map();
49
+ // ── Side-effect SCSS (compileAsync 간 유지) ──
50
+ _sideEffectScssRegistry = new Map();
51
+ // ── Lint (lazy init, 인스턴스 재사용) ──
52
+ _lintRunner;
53
+ constructor(options) {
54
+ this._options = options;
55
+ }
56
+ _getScssLoadPaths() {
57
+ const { pkgDir, cwd } = this._options;
58
+ return [path.join(pkgDir, "scss"), path.join(cwd, "node_modules")];
59
+ }
60
+ /** Side-effect SCSS 레지스트리 참조 (emit 코드에서 항목 등록용) */
61
+ get sideEffectScssRegistry() {
62
+ return this._sideEffectScssRegistry;
63
+ }
64
+ /** Side-effect SCSS 레지스트리의 모든 항목을 CSS로 컴파일 */
65
+ compileSideEffectScss() {
66
+ const loadPaths = this._getScssLoadPaths();
67
+ compileSideEffectScssEntries(this._sideEffectScssRegistry, loadPaths, this._scssErrors, this._scssDependencies);
68
+ }
69
+ /** SCSS 의존성 역방향 탐색: scssPath에 의존하는 파일 목록 반환 */
70
+ findAffectedByScss(scssPath) {
71
+ const normalizedPath = pathx.posix(scssPath);
72
+ const affected = [];
73
+ for (const [ownerFile, deps] of this._scssDependencies) {
74
+ if (deps.has(normalizedPath)) {
75
+ affected.push(ownerFile);
76
+ }
77
+ }
78
+ return affected;
79
+ }
80
+ async compileAsync(modifiedFiles, emitOptions) {
81
+ const { pkgDir } = this._options;
82
+ const pkgName = path.basename(pkgDir);
83
+ // 1. 증분: sourceFileCache 무효화 + packageJsonCache 클리어
84
+ if (modifiedFiles != null && modifiedFiles.size > 0) {
85
+ if (this._sourceFileCache != null) {
86
+ this._sourceFileCache.invalidate(modifiedFiles);
87
+ }
88
+ // node_modules 변경 시 packageJsonCache 클리어 (stale 모듈 해석 방지)
89
+ if (this._packageJsonCache != null) {
90
+ for (const file of modifiedFiles) {
91
+ if (file.includes("node_modules")) {
92
+ this._packageJsonCache.clear();
93
+ break;
94
+ }
95
+ }
96
+ }
97
+ }
98
+ // 2. tsconfig 파싱 (매 호출)
99
+ const parsed = parseTsconfig(pkgDir);
100
+ const isForAngular = parsed.raw?.angularCompilerOptions != null;
101
+ this._isForAngular = isForAngular;
102
+ const angularCompilerOptions = isForAngular
103
+ ? parsed.raw.angularCompilerOptions
104
+ : undefined;
105
+ logger.debug(`[${pkgName}] isForAngular: ${isForAngular}`);
106
+ // 3. rootNames 필터링
107
+ const rootNames = this._filterRootNames(parsed);
108
+ logger.debug(`[${pkgName}] rootNames: ${rootNames.length}개`);
109
+ // 4. compilerOptions 구성
110
+ const compilerOptions = this._buildCompilerOptions(parsed.options, isForAngular, angularCompilerOptions);
111
+ // 5. SCSS 상태 리셋
112
+ this._scssErrors.length = 0;
113
+ this._scssDependencies.clear();
114
+ // 6. transformStylesheet 결정: isForAngular + 미제공 시 라이브러리 콜백 자동 생성
115
+ let effectiveTransformStylesheet = this._options.transformStylesheet;
116
+ if (isForAngular && effectiveTransformStylesheet == null) {
117
+ const loadPaths = this._getScssLoadPaths();
118
+ effectiveTransformStylesheet = createLibraryTransformStylesheet(loadPaths, this._scssErrors, this._scssDependencies);
119
+ }
120
+ // 7. compiler host 생성
121
+ const host = this._createHost(compilerOptions, isForAngular, effectiveTransformStylesheet);
122
+ // 8. program 생성
123
+ let program;
124
+ let builderProgram;
125
+ if (isForAngular) {
126
+ // Angular: sourceFileCache 확보
127
+ if (this._sourceFileCache == null) {
128
+ this._sourceFileCache = this._options.sourceFileCache ?? new AngularSourceFileCache();
129
+ }
130
+ augmentHostWithCaching(host, this._sourceFileCache);
131
+ // NgtscProgram 생성
132
+ logger.debug(`[${pkgName}] NgtscProgram 생성 중...`);
133
+ const angularProgram = new NgtscProgram(rootNames, compilerOptions, host, this._ngtscProgram);
134
+ const tsProgram = angularProgram.getTsProgram();
135
+ ensureSourceFileVersions(tsProgram);
136
+ builderProgram = ts.createEmitAndSemanticDiagnosticsBuilderProgram(tsProgram, host, this._builderProgram);
137
+ program = tsProgram;
138
+ // 7. Angular analyzeAsync
139
+ logger.debug(`[${pkgName}] AOT analyzeAsync 시작`);
140
+ await angularProgram.compiler.analyzeAsync();
141
+ logger.debug(`[${pkgName}] AOT analyzeAsync 완료`);
142
+ this._ngtscProgram = angularProgram;
143
+ }
144
+ else {
145
+ // Non-Angular: BuilderProgram 직접 생성
146
+ builderProgram = ts.createEmitAndSemanticDiagnosticsBuilderProgram(rootNames, compilerOptions, host, this._builderProgram);
147
+ program = builderProgram.getProgram();
148
+ }
149
+ // 8. affected files 추적
150
+ let affectedFiles;
151
+ if (isForAngular) {
152
+ const result = this._findAffectedFilesForAngular(builderProgram, this._ngtscProgram.compiler, this._sourceFileCache);
153
+ this._affectedSourceFiles = result.affectedSourceFiles;
154
+ affectedFiles = result.affectedPaths;
155
+ }
156
+ else {
157
+ affectedFiles = this._findAffectedFilesForTsc(builderProgram);
158
+ }
159
+ logger.debug(`[${pkgName}] affected files: ${affectedFiles != null ? `${affectedFiles.size}개` : "전체 (global change)"}`);
160
+ // 9. emit 처리
161
+ let emitResults;
162
+ if (isForAngular) {
163
+ emitResults = this._emitAngular(this._ngtscProgram, builderProgram, this._affectedSourceFiles, emitOptions);
164
+ }
165
+ else {
166
+ this._emitTsc(builderProgram);
167
+ }
168
+ // 10. 진단 수집
169
+ let rawDiagnostics;
170
+ if (isForAngular) {
171
+ rawDiagnostics = this._collectDiagnosticsForAngular(this._ngtscProgram, builderProgram, this._affectedSourceFiles);
172
+ }
173
+ else {
174
+ rawDiagnostics = this._collectDiagnosticsForTsc(builderProgram);
175
+ }
176
+ const diagResult = this._finalizeDiagnostics(rawDiagnostics);
177
+ // 11. 글로벌 SCSS + lint 병렬 실행
178
+ const [, lintResult] = await Promise.all([
179
+ // globalScss
180
+ this._options.globalScss === true
181
+ ? Promise.resolve().then(() => {
182
+ const loadPaths = this._getScssLoadPaths();
183
+ const globalScssErrors = compileGlobalScss(pkgDir, loadPaths);
184
+ this._scssErrors.push(...globalScssErrors);
185
+ })
186
+ : Promise.resolve(),
187
+ // lint
188
+ this._options.lint === true
189
+ ? this._runLint(program, affectedFiles)
190
+ : Promise.resolve(undefined),
191
+ ]);
192
+ // 12. 상태 저장
193
+ this._builderProgram = builderProgram;
194
+ logger.debug(`[${pkgName}] compileAsync 완료`);
195
+ return {
196
+ program,
197
+ builderProgram,
198
+ isForAngular,
199
+ affectedFiles,
200
+ diagnostics: diagResult.diagnostics,
201
+ errorCount: diagResult.errorCount,
202
+ warningCount: diagResult.warningCount,
203
+ errors: diagResult.errors,
204
+ ngtscProgram: this._ngtscProgram,
205
+ emitResults,
206
+ lint: lintResult,
207
+ scssErrors: [...this._scssErrors],
208
+ scssDependencies: new Map(this._scssDependencies),
209
+ };
210
+ }
211
+ async _runLint(program, affectedFiles) {
212
+ const { cwd, pkgDir } = this._options;
213
+ const pkgName = path.basename(pkgDir);
214
+ if (this._lintRunner == null) {
215
+ this._lintRunner = new LintWithProgramRunner({
216
+ cwd,
217
+ pkgName,
218
+ });
219
+ }
220
+ logger.debug(`[${pkgName}] lint 시작`);
221
+ const result = await this._lintRunner.lint({
222
+ program,
223
+ affectedFiles,
224
+ });
225
+ logger.debug(`[${pkgName}] lint 완료 (에러: ${result.errorCount}, 경고: ${result.warningCount})`);
226
+ return result;
227
+ }
228
+ _filterRootNames(parsed) {
229
+ const { pkgDir, includeTests } = this._options;
230
+ if (includeTests === true) {
231
+ return getPackageFiles(pkgDir, parsed);
232
+ }
233
+ return getPackageSourceFiles(pkgDir, parsed);
234
+ }
235
+ _buildCompilerOptions(baseOptions, isForAngular, angularCompilerOptions) {
236
+ const { pkgDir, output, env, compilerOptionsTransformer } = this._options;
237
+ const needsEmit = output.js || output.dts;
238
+ // env 조정
239
+ let options = env != null
240
+ ? getCompilerOptionsForEnv(baseOptions, env, pkgDir)
241
+ : { ...baseOptions };
242
+ // output 플래그
243
+ options.sourceMap = !isForAngular && output.js;
244
+ options.incremental = true;
245
+ options.outDir = path.join(pkgDir, "dist");
246
+ if (output.js && output.dts) {
247
+ options.noEmit = false;
248
+ options.emitDeclarationOnly = false;
249
+ options.declaration = true;
250
+ options.declarationMap = true;
251
+ options.declarationDir = path.join(pkgDir, "dist");
252
+ }
253
+ else if (output.js) {
254
+ options.noEmit = false;
255
+ options.emitDeclarationOnly = false;
256
+ options.declaration = false;
257
+ options.declarationMap = false;
258
+ }
259
+ else if (output.dts) {
260
+ options.noEmit = false;
261
+ options.emitDeclarationOnly = true;
262
+ options.declaration = true;
263
+ options.declarationMap = true;
264
+ options.declarationDir = path.join(pkgDir, "dist");
265
+ }
266
+ else {
267
+ options.noEmit = true;
268
+ options.emitDeclarationOnly = false;
269
+ options.declaration = false;
270
+ options.declarationMap = false;
271
+ }
272
+ // Angular compilerOptions 병합
273
+ if (angularCompilerOptions != null) {
274
+ options = { ...options, ...angularCompilerOptions };
275
+ }
276
+ // tsBuildInfoFile
277
+ const envSuffix = env != null ? `-${env}` : "";
278
+ const prefix = isForAngular ? "ngtsc-" : "";
279
+ options.tsBuildInfoFile = path.join(pkgDir, ".cache", needsEmit
280
+ ? `${prefix}build${output.dts ? "" : "-no-dts"}${envSuffix}.tsbuildinfo`
281
+ : `${prefix}typecheck${envSuffix}.tsbuildinfo`);
282
+ // compilerOptionsTransformer 적용
283
+ if (compilerOptionsTransformer != null) {
284
+ options = compilerOptionsTransformer(options);
285
+ }
286
+ return options;
287
+ }
288
+ _createHost(compilerOptions, isForAngular, effectiveTransformStylesheet) {
289
+ const host = ts.createIncrementalCompilerHost(compilerOptions);
290
+ const { pkgDir, output } = this._options;
291
+ const needsEmit = output.js || output.dts;
292
+ // Non-Angular emit용 writeFile 훅
293
+ if (!isForAngular && needsEmit) {
294
+ const rewritePath = createOutputPathRewriter(pkgDir);
295
+ const originalWriteFile = host.writeFile;
296
+ host.writeFile = (fileName, content, writeByteOrderMark, onError, sourceFiles, data) => {
297
+ const result = rewritePath(fileName, content);
298
+ if (result != null) {
299
+ let [newPath, newContent] = result;
300
+ if (newPath.endsWith(".js")) {
301
+ newContent = addJsExtensionToImports(newContent);
302
+ }
303
+ originalWriteFile(newPath, newContent, writeByteOrderMark, onError, sourceFiles, data);
304
+ }
305
+ };
306
+ }
307
+ // Angular host 확장
308
+ if (isForAngular) {
309
+ this._extendHostForAngular(host, effectiveTransformStylesheet);
310
+ }
311
+ // moduleResolutionCache
312
+ const moduleResolutionCache = ts.createModuleResolutionCache(host.getCurrentDirectory(), host.getCanonicalFileName.bind(host), compilerOptions, this._packageJsonCache);
313
+ host.getModuleResolutionCache = () => moduleResolutionCache;
314
+ if (this._packageJsonCache == null) {
315
+ this._packageJsonCache = moduleResolutionCache.getPackageJsonInfoCache();
316
+ }
317
+ return host;
318
+ }
319
+ _collectDiagnosticsForTsc(builderProgram) {
320
+ return [
321
+ ...builderProgram.getConfigFileParsingDiagnostics(),
322
+ ...builderProgram.getSyntacticDiagnostics(),
323
+ ...builderProgram.getOptionsDiagnostics(),
324
+ ...builderProgram.getGlobalDiagnostics(),
325
+ ...builderProgram.getSemanticDiagnostics(),
326
+ ...(!this._options.output.dts ? builderProgram.getProgram().getDeclarationDiagnostics() : []),
327
+ ];
328
+ }
329
+ _collectDiagnosticsForAngular(ngtscProgram, builderProgram, affectedSourceFiles) {
330
+ const angularCompiler = ngtscProgram.compiler;
331
+ const diagnostics = [];
332
+ const optimization = affectedSourceFiles.size === 1 ? OptimizeFor.SingleFile : OptimizeFor.WholeProgram;
333
+ // 1. Option 진단
334
+ diagnostics.push(...builderProgram.getConfigFileParsingDiagnostics());
335
+ diagnostics.push(...angularCompiler.getOptionDiagnostics());
336
+ diagnostics.push(...builderProgram.getOptionsDiagnostics());
337
+ // 2. Global
338
+ diagnostics.push(...builderProgram.getGlobalDiagnostics());
339
+ // 3. 파일별 루프
340
+ for (const sourceFile of builderProgram.getSourceFiles()) {
341
+ if (angularCompiler.ignoreForDiagnostics.has(sourceFile)) {
342
+ continue;
343
+ }
344
+ diagnostics.push(...builderProgram.getSyntacticDiagnostics(sourceFile));
345
+ // TypeScript 5.9 + NgtscProgram: getSemanticDiagnostics 크래시 방어
346
+ let semanticDiags;
347
+ try {
348
+ semanticDiags = builderProgram.getSemanticDiagnostics(sourceFile);
349
+ }
350
+ catch {
351
+ logger.debug(`getSemanticDiagnostics 크래시 (무시): ${sourceFile.fileName}`);
352
+ semanticDiags = [];
353
+ }
354
+ diagnostics.push(...semanticDiags);
355
+ // Declaration files는 Angular 진단 없음
356
+ if (sourceFile.isDeclarationFile) {
357
+ continue;
358
+ }
359
+ // Angular 템플릿 진단 (diagnosticCache 활용)
360
+ if (affectedSourceFiles.has(sourceFile)) {
361
+ const angularDiagnostics = angularCompiler.getDiagnosticsForFile(sourceFile, optimization);
362
+ this._diagnosticCache.set(sourceFile, angularDiagnostics);
363
+ diagnostics.push(...angularDiagnostics);
364
+ }
365
+ else {
366
+ const cached = this._diagnosticCache.get(sourceFile);
367
+ if (cached) {
368
+ diagnostics.push(...cached);
369
+ }
370
+ }
371
+ }
372
+ return diagnostics;
373
+ }
374
+ _finalizeDiagnostics(rawDiagnostics) {
375
+ const filtered = rawDiagnostics.filter((d) => isWorkspaceDiagnostic(d, this._options.cwd));
376
+ const serialized = filtered.map(serializeDiagnostic);
377
+ const errorCount = filtered.filter((d) => d.category === ts.DiagnosticCategory.Error).length;
378
+ const warningCount = filtered.filter((d) => d.category === ts.DiagnosticCategory.Warning).length;
379
+ const errors = filtered
380
+ .filter((d) => d.category === ts.DiagnosticCategory.Error)
381
+ .map((d) => formatDiagnosticError(d, this._options.cwd));
382
+ return {
383
+ diagnostics: serialized,
384
+ errorCount,
385
+ warningCount,
386
+ errors: errors.length > 0 ? errors : undefined,
387
+ };
388
+ }
389
+ _emitTsc(builderProgram) {
390
+ builderProgram.emit();
391
+ }
392
+ _emitAngular(ngtscProgram, builderProgram, affectedSourceFiles, emitOptions) {
393
+ const compilerOptions = builderProgram.getCompilerOptions();
394
+ // noEmit이면 emit 건너뜀
395
+ if (compilerOptions.noEmit) {
396
+ return undefined;
397
+ }
398
+ const angularCompiler = ngtscProgram.compiler;
399
+ const tsProgram = ngtscProgram.getTsProgram();
400
+ // prepareEmit() → Angular transformers 획득
401
+ const transformers = angularCompiler.prepareEmit().transformers;
402
+ transformers.before ??= [];
403
+ transformers.after ??= [];
404
+ // additionalTransformers 병합
405
+ if (emitOptions?.additionalTransformers != null) {
406
+ if (emitOptions.additionalTransformers.before != null) {
407
+ transformers.before.push(...emitOptions.additionalTransformers.before);
408
+ }
409
+ if (emitOptions.additionalTransformers.after != null) {
410
+ transformers.after.push(...emitOptions.additionalTransformers.after);
411
+ }
412
+ }
413
+ // emit 결과를 수집
414
+ const emitResults = [];
415
+ const emitDeclarationOnly = !!compilerOptions.emitDeclarationOnly;
416
+ const writeFileCallback = (filename, contents, _writeByteOrderMark, _onError, sourceFiles) => {
417
+ if (sourceFiles == null || sourceFiles.length === 0) {
418
+ return;
419
+ }
420
+ const sourceFile = ts.getOriginalNode(sourceFiles[0], ts.isSourceFile);
421
+ if (angularCompiler.ignoreForEmit.has(sourceFile)) {
422
+ return;
423
+ }
424
+ angularCompiler.incrementalCompilation.recordSuccessfulEmit(sourceFile);
425
+ emitResults.push({ filename, contents, sourceFileName: sourceFile.fileName });
426
+ };
427
+ // per-file emit
428
+ for (const sourceFile of tsProgram.getSourceFiles()) {
429
+ if (angularCompiler.ignoreForEmit.has(sourceFile)) {
430
+ continue;
431
+ }
432
+ if (sourceFile.isDeclarationFile) {
433
+ continue;
434
+ }
435
+ if (angularCompiler.incrementalCompilation.safeToSkipEmit(sourceFile) &&
436
+ !affectedSourceFiles.has(sourceFile)) {
437
+ continue;
438
+ }
439
+ tsProgram.emit(sourceFile, writeFileCallback, undefined, emitDeclarationOnly, transformers);
440
+ }
441
+ // .tsbuildinfo 영속화 (try-catch: TS 5.9 + NgtscProgram 크래시 방어)
442
+ try {
443
+ builderProgram.emit(undefined, () => { });
444
+ }
445
+ catch {
446
+ logger.debug("builderProgram.emit 크래시 (무시) — tsbuildinfo 영속화 생략");
447
+ }
448
+ // sourceFilter 적용
449
+ logger.debug(`emitAffectedFiles 완료 (${emitResults.length}개 파일)`);
450
+ if (emitOptions?.sourceFilter != null) {
451
+ return emitResults.filter((r) => emitOptions.sourceFilter(r.sourceFileName));
452
+ }
453
+ return emitResults;
454
+ }
455
+ _findAffectedFilesForTsc(builderProgram) {
456
+ const affectedFiles = new Set();
457
+ while (true) {
458
+ const result = builderProgram.getSemanticDiagnosticsOfNextAffectedFile();
459
+ if (result == null)
460
+ break;
461
+ if ("fileName" in result.affected) {
462
+ affectedFiles.add(pathx.posix(result.affected.fileName));
463
+ }
464
+ else {
465
+ // ts.Program 반환 — 전역 변경, 전체 리빌드로 처리
466
+ return undefined;
467
+ }
468
+ }
469
+ return affectedFiles;
470
+ }
471
+ _findAffectedFilesForAngular(builderProgram, angularCompiler, sourceFileCache) {
472
+ logger.debug("Angular affected 파일 탐색 시작");
473
+ const affectedSourceFiles = new Set();
474
+ let isGlobalChange = false;
475
+ while (true) {
476
+ let result;
477
+ try {
478
+ result = builderProgram.getSemanticDiagnosticsOfNextAffectedFile(undefined, (sourceFile) => {
479
+ if (angularCompiler.ignoreForDiagnostics.has(sourceFile) &&
480
+ sourceFile.fileName.endsWith(".ngtypecheck.ts")) {
481
+ const originalFilename = sourceFile.fileName.slice(0, -15) + ".ts";
482
+ const originalSourceFile = builderProgram.getSourceFile(originalFilename);
483
+ if (originalSourceFile) {
484
+ affectedSourceFiles.add(originalSourceFile);
485
+ }
486
+ return true;
487
+ }
488
+ return false;
489
+ });
490
+ }
491
+ catch {
492
+ logger.debug("getSemanticDiagnosticsOfNextAffectedFile 크래시 (무시) — 모든 소스를 affected로 처리");
493
+ for (const sourceFile of builderProgram.getSourceFiles()) {
494
+ if (!angularCompiler.ignoreForDiagnostics.has(sourceFile)) {
495
+ affectedSourceFiles.add(sourceFile);
496
+ }
497
+ }
498
+ break;
499
+ }
500
+ if (!result)
501
+ break;
502
+ if ("fileName" in result.affected) {
503
+ affectedSourceFiles.add(result.affected);
504
+ }
505
+ else {
506
+ isGlobalChange = true;
507
+ for (const sourceFile of builderProgram.getSourceFiles()) {
508
+ if (!angularCompiler.ignoreForDiagnostics.has(sourceFile)) {
509
+ affectedSourceFiles.add(sourceFile);
510
+ }
511
+ }
512
+ }
513
+ }
514
+ // 리소스 의존성 기반 diagnosticCache 무효화
515
+ if (sourceFileCache != null && sourceFileCache.modifiedFiles.size > 0) {
516
+ const normalizedModifiedFiles = new Set();
517
+ for (const f of sourceFileCache.modifiedFiles) {
518
+ normalizedModifiedFiles.add(pathx.posix(f));
519
+ }
520
+ for (const sourceFile of builderProgram.getSourceFiles()) {
521
+ if (angularCompiler.ignoreForEmit.has(sourceFile)) {
522
+ continue;
523
+ }
524
+ const resourceDependencies = angularCompiler.getResourceDependencies(sourceFile);
525
+ for (const resourceDep of resourceDependencies) {
526
+ if (normalizedModifiedFiles.has(pathx.posix(resourceDep))) {
527
+ this._diagnosticCache.delete(sourceFile);
528
+ affectedSourceFiles.add(sourceFile);
529
+ break;
530
+ }
531
+ }
532
+ }
533
+ }
534
+ // affectedPaths 변환
535
+ let affectedPaths;
536
+ if (isGlobalChange) {
537
+ affectedPaths = undefined;
538
+ }
539
+ else {
540
+ const paths = new Set();
541
+ for (const sf of affectedSourceFiles) {
542
+ paths.add(pathx.posix(sf.fileName));
543
+ }
544
+ affectedPaths = paths;
545
+ }
546
+ logger.debug(`Angular affected 파일 탐색 완료 (${affectedSourceFiles.size}개)`);
547
+ return { affectedSourceFiles, affectedPaths };
548
+ }
549
+ _extendHostForAngular(host, effectiveTransformStylesheet) {
550
+ const hostAny = host;
551
+ const { externalStylesheets, sourceFileCache } = this._options;
552
+ const transformStylesheet = effectiveTransformStylesheet;
553
+ // readResource
554
+ hostAny["readResource"] = (fileName) => {
555
+ return host.readFile(fileName) ?? "";
556
+ };
557
+ // transformResource
558
+ if (transformStylesheet != null) {
559
+ hostAny["transformResource"] = async (data, context) => {
560
+ if (context.type !== "style") {
561
+ return null;
562
+ }
563
+ if (data.trim().length === 0) {
564
+ return { content: "" };
565
+ }
566
+ const result = await transformStylesheet(data, context.containingFile, context.resourceFile ?? undefined);
567
+ return typeof result === "string" ? { content: result } : null;
568
+ };
569
+ }
570
+ // getModifiedResourceFiles
571
+ const cache = this._sourceFileCache ?? sourceFileCache;
572
+ if (cache != null) {
573
+ hostAny["getModifiedResourceFiles"] = () => cache.modifiedFiles;
574
+ }
575
+ // resourceNameToFileName
576
+ hostAny["resourceNameToFileName"] = (resourceName, containingFile) => {
577
+ const resolvedPath = path.join(path.dirname(containingFile), resourceName);
578
+ if (!host.fileExists(resolvedPath)) {
579
+ return null;
580
+ }
581
+ if (externalStylesheets == null || hasTemplateExtension(resolvedPath)) {
582
+ return resolvedPath;
583
+ }
584
+ let externalId = externalStylesheets.get(resolvedPath);
585
+ if (externalId == null) {
586
+ externalId = createHash("sha256").update(resolvedPath).digest("hex");
587
+ externalStylesheets.set(resolvedPath, externalId);
588
+ }
589
+ return externalId + ".css";
590
+ };
591
+ }
592
+ }
593
+ //# sourceMappingURL=SdTsCompiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SdTsCompiler.js","sourceRoot":"","sources":["../../src/ts-compiler/SdTsCompiler.ts"],"names":[],"mappings":"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"}