@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
@@ -1,51 +0,0 @@
1
- import ts from "typescript";
2
- import { type TypecheckEnv } from "./tsconfig";
3
- import { type SerializedDiagnostic } from "../typecheck/typecheck-serialization";
4
- /**
5
- * 패키지 모드 tsc 빌드 옵션
6
- */
7
- export interface TscPackageBuildOptions {
8
- pkgDir: string;
9
- cwd: string;
10
- /** 출력 제어 플래그: emit할 파일 종류 */
11
- output: {
12
- js: boolean;
13
- dts: boolean;
14
- };
15
- /** 미리 파싱된 tsconfig. 제공 시 parseTsconfig() 호출을 스킵한다. */
16
- parsedConfig?: ts.ParsedCommandLine;
17
- /** 타입체크 환경. 설정 시 getCompilerOptionsForEnv()로 compilerOptions를 조정한다. */
18
- env?: TypecheckEnv;
19
- /** 타입체크 전용 모드에서 tests/ 파일 포함 여부. 기본값 false. */
20
- includeTests?: boolean;
21
- /** 이전 빌드의 BuilderProgram. watch 모드에서 SourceFile 재사용을 위해 전달한다. */
22
- oldBuilderProgram?: ts.EmitAndSemanticDiagnosticsBuilderProgram;
23
- }
24
- /**
25
- * 패키지 모드 tsc 빌드 결과
26
- */
27
- export interface TscPackageBuildResult {
28
- success: boolean;
29
- errors?: string[];
30
- diagnostics: SerializedDiagnostic[];
31
- errorCount: number;
32
- warningCount: number;
33
- /** lint-with-program 통합을 위해 노출된 ts.Program */
34
- program?: ts.Program;
35
- /** 이 빌드에서 영향받은 파일 (정규화된 순방향 슬래시 경로).
36
- * watch 모드에서 증분 lint에 사용한다. */
37
- affectedFiles?: ReadonlySet<string>;
38
- /** 다음 빌드에서 SourceFile 재사용을 위한 BuilderProgram.
39
- * watch 모드에서 이 값을 저장해두고 다음 빌드 시 oldBuilderProgram으로 전달한다. */
40
- builderProgram?: ts.EmitAndSemanticDiagnosticsBuilderProgram;
41
- }
42
- /**
43
- * 패키지에 대해 TypeScript 증분 빌드를 실행한다.
44
- *
45
- * - output.js || output.dts: emit 모드 (src 파일만, 출력 파일 생성)
46
- * - 둘 다 아님: 타입체크만 (기본 src 파일만, includeTests=true이면 src + test 파일)
47
- *
48
- * 실행 간 증분 컴파일을 위해 tsBuildInfoFile을 사용한다.
49
- */
50
- export declare function runTscPackageBuild(options: TscPackageBuildOptions): TscPackageBuildResult;
51
- //# sourceMappingURL=tsc-build.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tsc-build.d.ts","sourceRoot":"","sources":["../../src/utils/tsc-build.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,YAAY,CAAC;AAM5B,OAAO,EAKL,KAAK,YAAY,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAItG;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,6BAA6B;IAC7B,MAAM,EAAE;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,OAAO,CAAA;KAAE,CAAC;IACtC,sDAAsD;IACtD,YAAY,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC;IACpC,uEAAuE;IACvE,GAAG,CAAC,EAAE,YAAY,CAAC;IACnB,+CAA+C;IAC/C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,EAAE,CAAC,wCAAwC,CAAC;CACjE;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,oBAAoB,EAAE,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,8CAA8C;IAC9C,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC;IACrB;oCACgC;IAChC,aAAa,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACpC;kEAC8D;IAC9D,cAAc,CAAC,EAAE,EAAE,CAAC,wCAAwC,CAAC;CAC9D;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,qBAAqB,CAkKzF"}
@@ -1,156 +0,0 @@
1
- import path from "path";
2
- import ts from "typescript";
3
- import { err as errNs } from "@simplysm/core-common";
4
- import { consola } from "consola";
5
- const logger = consola.withTag("sd:cli:tsc-build");
6
- import { pathx } from "@simplysm/core-node";
7
- import { parseTsconfig, getPackageSourceFiles, getPackageFiles, getCompilerOptionsForEnv, } from "./tsconfig.js";
8
- import { serializeDiagnostic } from "../typecheck/typecheck-serialization.js";
9
- import { createOutputPathRewriter, addJsExtensionToImports } from "./output-path-rewriter.js";
10
- import { isWorkspaceDiagnostic, formatDiagnosticError } from "./diagnostic-utils.js";
11
- /**
12
- * 패키지에 대해 TypeScript 증분 빌드를 실행한다.
13
- *
14
- * - output.js || output.dts: emit 모드 (src 파일만, 출력 파일 생성)
15
- * - 둘 다 아님: 타입체크만 (기본 src 파일만, includeTests=true이면 src + test 파일)
16
- *
17
- * 실행 간 증분 컴파일을 위해 tsBuildInfoFile을 사용한다.
18
- */
19
- export function runTscPackageBuild(options) {
20
- try {
21
- const { pkgDir, output, env } = options;
22
- const needsEmit = output.js || output.dts;
23
- const pkgName = path.basename(pkgDir);
24
- logger.debug(`[${pkgName}] tsc 빌드 시작 (env: ${env ?? "none"}, js: ${output.js}, dts: ${output.dts})`);
25
- const parsedConfig = options.parsedConfig ?? parseTsconfig(pkgDir);
26
- const baseOptions = env != null
27
- ? getCompilerOptionsForEnv(parsedConfig.options, env, pkgDir)
28
- : parsedConfig.options;
29
- let rootFiles;
30
- if (needsEmit || !options.includeTests) {
31
- rootFiles = getPackageSourceFiles(pkgDir, parsedConfig);
32
- }
33
- else {
34
- rootFiles = getPackageFiles(pkgDir, parsedConfig);
35
- }
36
- logger.debug(`[${pkgName}] rootFiles: ${rootFiles.length}개`);
37
- const envSuffix = env != null ? `-${env}` : "";
38
- const tsBuildInfoFile = path.join(pkgDir, ".cache", needsEmit
39
- ? `build${output.dts ? "" : "-no-dts"}${envSuffix}.tsbuildinfo`
40
- : `typecheck${envSuffix}.tsbuildinfo`);
41
- const compilerOptions = {
42
- ...baseOptions,
43
- sourceMap: output.js,
44
- incremental: true,
45
- tsBuildInfoFile,
46
- };
47
- if (output.js && output.dts) {
48
- compilerOptions.noEmit = false;
49
- compilerOptions.emitDeclarationOnly = false;
50
- compilerOptions.declaration = true;
51
- compilerOptions.declarationMap = true;
52
- compilerOptions.outDir = path.join(pkgDir, "dist");
53
- compilerOptions.declarationDir = path.join(pkgDir, "dist");
54
- }
55
- else if (output.js) {
56
- compilerOptions.noEmit = false;
57
- compilerOptions.emitDeclarationOnly = false;
58
- compilerOptions.declaration = false;
59
- compilerOptions.declarationMap = false;
60
- compilerOptions.outDir = path.join(pkgDir, "dist");
61
- }
62
- else if (output.dts) {
63
- compilerOptions.noEmit = false;
64
- compilerOptions.emitDeclarationOnly = true;
65
- compilerOptions.declaration = true;
66
- compilerOptions.declarationMap = true;
67
- compilerOptions.outDir = path.join(pkgDir, "dist");
68
- compilerOptions.declarationDir = path.join(pkgDir, "dist");
69
- }
70
- else {
71
- compilerOptions.noEmit = true;
72
- compilerOptions.emitDeclarationOnly = false;
73
- compilerOptions.declaration = false;
74
- compilerOptions.declarationMap = false;
75
- }
76
- const host = ts.createIncrementalCompilerHost(compilerOptions);
77
- if (needsEmit) {
78
- const rewritePath = createOutputPathRewriter(pkgDir);
79
- const originalWriteFile = host.writeFile;
80
- host.writeFile = (fileName, content, writeByteOrderMark, onError, sourceFiles, data) => {
81
- const result = rewritePath(fileName, content);
82
- if (result != null) {
83
- let [newPath, newContent] = result;
84
- if (newPath.endsWith(".js")) {
85
- newContent = addJsExtensionToImports(newContent);
86
- }
87
- originalWriteFile(newPath, newContent, writeByteOrderMark, onError, sourceFiles, data);
88
- }
89
- };
90
- }
91
- const builderProgram = ts.createEmitAndSemanticDiagnosticsBuilderProgram(rootFiles, compilerOptions, host, options.oldBuilderProgram);
92
- // builder program의 증분 분석을 통해 affected 파일을 추적한다.
93
- // getSemanticDiagnosticsOfNextAffectedFile은 마지막 빌드 이후 변경된 파일을 순회한다.
94
- // affected는 ts.SourceFile 또는 ts.Program(전역 스코프 변경 시)일 수 있다.
95
- let affectedFiles = new Set();
96
- while (true) {
97
- const result = builderProgram.getSemanticDiagnosticsOfNextAffectedFile();
98
- if (result == null)
99
- break;
100
- if ("fileName" in result.affected) {
101
- affectedFiles?.add(pathx.posix(result.affected.fileName));
102
- }
103
- else {
104
- // ts.Program 반환 — 전역 변경, 전체 재빌드로 처리
105
- affectedFiles = undefined;
106
- }
107
- }
108
- logger.debug(`[${pkgName}] affected files: ${affectedFiles != null ? `${affectedFiles.size}개` : "전체 (global change)"}`);
109
- const emitResult = builderProgram.emit();
110
- const allDiagnostics = [
111
- ...builderProgram.getConfigFileParsingDiagnostics(),
112
- ...builderProgram.getSyntacticDiagnostics(),
113
- ...builderProgram.getOptionsDiagnostics(),
114
- ...builderProgram.getGlobalDiagnostics(),
115
- ...builderProgram.getSemanticDiagnostics(),
116
- ...(!output.dts ? builderProgram.getProgram().getDeclarationDiagnostics() : []),
117
- ...emitResult.diagnostics,
118
- ];
119
- // 워크스페이스 범위: node_modules 제외, 모든 워크스페이스 진단 유지
120
- const filteredDiagnostics = allDiagnostics.filter((d) => isWorkspaceDiagnostic(d, options.cwd));
121
- const serializedDiagnostics = filteredDiagnostics.map(serializeDiagnostic);
122
- const errorCount = filteredDiagnostics.filter((d) => d.category === ts.DiagnosticCategory.Error).length;
123
- const warningCount = filteredDiagnostics.filter((d) => d.category === ts.DiagnosticCategory.Warning).length;
124
- const errors = filteredDiagnostics
125
- .filter((d) => d.category === ts.DiagnosticCategory.Error)
126
- .map(formatDiagnosticError);
127
- logger.debug(`[${pkgName}] tsc 빌드 완료 (에러: ${errorCount}, 경고: ${warningCount})`);
128
- return {
129
- success: errorCount === 0,
130
- errors: errors.length > 0 ? errors : undefined,
131
- diagnostics: serializedDiagnostics,
132
- errorCount,
133
- warningCount,
134
- program: builderProgram.getProgram(),
135
- affectedFiles,
136
- builderProgram,
137
- };
138
- }
139
- catch (err) {
140
- const message = errNs.message(err);
141
- const stack = err instanceof Error ? err.stack : undefined;
142
- const pkgName = path.basename(options.pkgDir);
143
- logger.debug(`[${pkgName}] tsc 빌드 예외 발생: ${message}`);
144
- if (stack != null) {
145
- logger.debug(`[${pkgName}] 스택 트레이스:\n${stack}`);
146
- }
147
- return {
148
- success: false,
149
- errors: [message],
150
- diagnostics: [],
151
- errorCount: 1,
152
- warningCount: 0,
153
- };
154
- }
155
- }
156
- //# sourceMappingURL=tsc-build.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tsc-build.js","sourceRoot":"","sources":["../../src/utils/tsc-build.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- import { type NgtscBuildInfo, type NgtscBuildResult, type NgtscCombinedBuildEvent } from "../angular/ngtsc-build-core";
2
- export type { NgtscBuildInfo, NgtscBuildResult, NgtscCombinedBuildEvent };
3
- export interface NgtscBuildWorkerEvents extends Record<string, unknown> {
4
- buildStart: Record<string, never>;
5
- build: NgtscCombinedBuildEvent;
6
- error: {
7
- message: string;
8
- };
9
- }
10
- declare function build(info: NgtscBuildInfo): Promise<NgtscBuildResult>;
11
- declare function startWatch(info: NgtscBuildInfo): Promise<void>;
12
- declare function stopWatch(): Promise<void>;
13
- declare const sender: {
14
- send<TEventName extends string>(event: TEventName, data?: NgtscBuildWorkerEvents[TEventName] | undefined): void;
15
- __methods: {
16
- build: typeof build;
17
- startWatch: typeof startWatch;
18
- stopWatch: typeof stopWatch;
19
- };
20
- __events: NgtscBuildWorkerEvents;
21
- };
22
- export default sender;
23
- //# sourceMappingURL=ngtsc-build.worker.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngtsc-build.worker.d.ts","sourceRoot":"","sources":["../../src/workers/ngtsc-build.worker.ts"],"names":[],"mappings":"AAMA,OAAO,EAKL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAE7B,MAAM,6BAA6B,CAAC;AAcrC,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;AAE1E,MAAM,WAAW,sBAAuB,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IACrE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAClC,KAAK,EAAE,uBAAuB,CAAC;IAC/B,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAC5B;AAyBD,iBAAe,KAAK,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAyEpE;AA4FD,iBAAe,UAAU,CAAC,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA4G7D;AAED,iBAAe,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAExC;AAID,QAAA,MAAM,MAAM;;;eACD,OAAO,KAAK;oBAAc,OAAO,UAAU;mBAAa,OAAO,SAAS;;;CAMjF,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -1,267 +0,0 @@
1
- import path from "path";
2
- import { createWorker, FsWatcher, pathx } from "@simplysm/core-node";
3
- import { err as errNs } from "@simplysm/core-common";
4
- import { setupWorkerLifecycle } from "./shared-worker-lifecycle.js";
5
- import { buildWatchPaths } from "./build-watch-paths.js";
6
- import { hasFileAddOrRemove, shouldSkipRebuild } from "./build-change-filter.js";
7
- import { buildCompilerOptions, buildScssLoadPaths, compileSideEffectScss, compileGlobalScss, } from "../angular/ngtsc-build-core.js";
8
- import { serializeDiagnostic } from "../typecheck/typecheck-serialization.js";
9
- import { LintWithProgramRunner } from "../lint/lint-with-program.js";
10
- import { parseTsconfig, getPackageSourceFiles, getPackageFiles, getCompilerOptionsForEnv, } from "../utils/tsconfig.js";
11
- import { AngularBuildPipeline } from "../angular/angular-build-pipeline.js";
12
- import { AngularSourceFileCache } from "../angular/angular-compiler.js";
13
- //#endregion
14
- //#region Resource Management
15
- let fsWatcher;
16
- async function cleanup() {
17
- const watcherToClose = fsWatcher;
18
- fsWatcher = undefined;
19
- _watchPipeline = undefined;
20
- lastSourceFilePaths = undefined;
21
- if (watcherToClose != null) {
22
- await watcherToClose.close();
23
- }
24
- }
25
- const { logger, guardStartWatch } = setupWorkerLifecycle("ngtsc-build", cleanup);
26
- //#endregion
27
- //#region build (one-time build)
28
- async function build(info) {
29
- logger.debug(`[${info.name}] ngtsc worker build 시작 (pkgDir: ${info.pkgDir})`);
30
- try {
31
- const buildInfo = { ...info, env: info.output.env };
32
- const parsedConfig = parseTsconfig(buildInfo.pkgDir);
33
- const sourceFiles = buildInfo.output.includeTests === true
34
- ? getPackageFiles(buildInfo.pkgDir, parsedConfig)
35
- : getPackageSourceFiles(buildInfo.pkgDir, parsedConfig);
36
- const baseOptions = buildInfo.env != null
37
- ? getCompilerOptionsForEnv(parsedConfig.options, buildInfo.env, buildInfo.pkgDir)
38
- : parsedConfig.options;
39
- const compilerOptions = buildCompilerOptions(baseOptions, buildInfo.pkgDir, buildInfo.output);
40
- const angularOptions = (parsedConfig.raw?.angularCompilerOptions ?? {});
41
- const pipeline = new AngularBuildPipeline({
42
- mode: "library",
43
- pkgDir: buildInfo.pkgDir,
44
- cwd: buildInfo.cwd,
45
- rootNames: sourceFiles,
46
- compilerOptions,
47
- angularCompilerOptions: angularOptions,
48
- });
49
- const pipelineResult = await pipeline.initialize();
50
- // emit → 디스크 쓰기 (src/ 하위만)
51
- const normalizedSrcDir = pathx.posix(path.join(buildInfo.pkgDir, "src"));
52
- pipeline.writeEmitResults({
53
- pkgDir: buildInfo.pkgDir,
54
- sourceFilter: (fileName) => pathx.posix(fileName).startsWith(normalizedSrcDir + "/"),
55
- });
56
- // global SCSS
57
- const globalScssErrors = compileGlobalScss(buildInfo.pkgDir, buildScssLoadPaths(buildInfo));
58
- // diagnostics 직렬화
59
- const rawDiags = pipeline.collectRawDiagnostics();
60
- const serialized = rawDiags.map(serializeDiagnostic);
61
- const errors = pipelineResult.diagnostics.errors.map((e) => e.message);
62
- const allErrors = [...errors, ...pipelineResult.scssErrors, ...globalScssErrors];
63
- const result = {
64
- build: {
65
- success: pipelineResult.diagnostics.errors.length === 0
66
- && pipelineResult.scssErrors.length === 0
67
- && globalScssErrors.length === 0,
68
- errors: allErrors.length > 0 ? allErrors : undefined,
69
- diagnostics: serialized,
70
- },
71
- };
72
- // lint
73
- if (info.output.lint === true) {
74
- logger.debug(`[${info.name}] lint 시작`);
75
- const lintRunner = new LintWithProgramRunner({
76
- cwd: info.cwd,
77
- pkgName: info.name,
78
- });
79
- result.lint = await lintRunner.lint({ program: pipeline.getTsProgram() });
80
- logger.debug(`[${info.name}] lint 완료`);
81
- }
82
- logger.debug(`[${info.name}] ngtsc worker build 완료 (build.success: ${result.build.success})`);
83
- return result;
84
- }
85
- catch (err) {
86
- const message = errNs.message(err);
87
- logger.debug(`[${info.name}] ngtsc worker build 예외 발생: ${message}`);
88
- return {
89
- build: { success: false, errors: [message], diagnostics: [] },
90
- };
91
- }
92
- }
93
- //#endregion
94
- //#region startWatch (watch mode)
95
- let watchInfo;
96
- let _watchPipeline;
97
- let watchLintRunner;
98
- let lastSourceFilePaths;
99
- const sideEffectScssRegistry = new Map();
100
- function extractSourceFilePaths(program) {
101
- const paths = new Set();
102
- for (const sf of program.getSourceFiles()) {
103
- paths.add(pathx.posix(sf.fileName));
104
- }
105
- return paths;
106
- }
107
- /**
108
- * Pipeline 빌드 결과 + side-effect/global SCSS를 통합하여 NgtscCombinedBuildEvent를 생성한다.
109
- */
110
- async function buildWatchEvent(info, pipeline, loadPaths, hasScssChanges, affectedFileNames) {
111
- logger.debug(`[${info.name}] buildWatchEvent 시작`);
112
- const normalizedSrcDir = pathx.posix(path.join(info.pkgDir, "src"));
113
- // Pipeline의 SCSS 의존성 맵을 공유하여 역방향 탐색 통합
114
- const scssDepsMap = pipeline.getScssDependencies();
115
- const sideEffectScssErrors = [];
116
- // emit → 디스크 쓰기 (src/ 하위만)
117
- pipeline.writeEmitResults({
118
- pkgDir: info.pkgDir,
119
- sourceFilter: (fileName) => pathx.posix(fileName).startsWith(normalizedSrcDir + "/"),
120
- scss: {
121
- loadPaths,
122
- scssErrors: sideEffectScssErrors,
123
- scssDependencies: scssDepsMap,
124
- registry: sideEffectScssRegistry,
125
- },
126
- });
127
- // side-effect SCSS 컴파일 (.scss/.css 변경 시에만)
128
- if (hasScssChanges) {
129
- compileSideEffectScss(sideEffectScssRegistry, loadPaths, sideEffectScssErrors, scssDepsMap);
130
- }
131
- // global SCSS 컴파일
132
- const globalScssErrors = compileGlobalScss(info.pkgDir, loadPaths);
133
- const diagnostics = pipeline.getDiagnostics();
134
- const pipelineScssErrors = pipeline.getScssErrors();
135
- const errors = diagnostics.errors.map((e) => e.message);
136
- const allErrors = [...errors, ...pipelineScssErrors, ...sideEffectScssErrors, ...globalScssErrors];
137
- // lint 실행 (활성화 시)
138
- let lint;
139
- if (info.output.lint === true) {
140
- logger.debug(`[${info.name}] lint 시작`);
141
- if (watchLintRunner == null) {
142
- watchLintRunner = new LintWithProgramRunner({
143
- cwd: info.cwd,
144
- pkgName: info.name,
145
- });
146
- }
147
- lint = await watchLintRunner.lint({
148
- program: pipeline.getTsProgram(),
149
- affectedFiles: affectedFileNames,
150
- });
151
- logger.debug(`[${info.name}] lint 완료`);
152
- }
153
- logger.debug(`[${info.name}] buildWatchEvent 완료`);
154
- return {
155
- build: {
156
- success: diagnostics.errors.length === 0
157
- && pipelineScssErrors.length === 0
158
- && sideEffectScssErrors.length === 0
159
- && globalScssErrors.length === 0,
160
- errors: allErrors.length > 0 ? allErrors : undefined,
161
- },
162
- lint,
163
- };
164
- }
165
- async function startWatch(info) {
166
- guardStartWatch();
167
- watchInfo = { ...info, env: info.output.env };
168
- try {
169
- // tsconfig 파싱 및 컴파일러 옵션 준비
170
- const parsedConfig = parseTsconfig(watchInfo.pkgDir);
171
- const sourceFiles = watchInfo.output.includeTests === true
172
- ? getPackageFiles(watchInfo.pkgDir, parsedConfig)
173
- : getPackageSourceFiles(watchInfo.pkgDir, parsedConfig);
174
- const baseOptions = watchInfo.env != null
175
- ? getCompilerOptionsForEnv(parsedConfig.options, watchInfo.env, watchInfo.pkgDir)
176
- : parsedConfig.options;
177
- const compilerOptions = buildCompilerOptions(baseOptions, watchInfo.pkgDir, watchInfo.output);
178
- const angularOptions = (parsedConfig.raw?.angularCompilerOptions ?? {});
179
- const loadPaths = buildScssLoadPaths(watchInfo);
180
- // Pipeline 생성 + 초기 빌드
181
- const sourceFileCache = new AngularSourceFileCache();
182
- const pipeline = new AngularBuildPipeline({
183
- mode: "library",
184
- pkgDir: watchInfo.pkgDir,
185
- cwd: watchInfo.cwd,
186
- rootNames: sourceFiles,
187
- compilerOptions,
188
- angularCompilerOptions: angularOptions,
189
- sourceFileCache,
190
- });
191
- _watchPipeline = pipeline;
192
- await pipeline.initialize();
193
- lastSourceFilePaths = extractSourceFilePaths(pipeline.getTsProgram());
194
- const initialResult = await buildWatchEvent(watchInfo, pipeline, loadPaths, true);
195
- sender.send("build", initialResult);
196
- // workspace 의존성 경로 + replaceDeps 수집
197
- const { watchPaths } = buildWatchPaths({
198
- pkgDir: watchInfo.pkgDir,
199
- cwd: watchInfo.cwd,
200
- srcGlobs: ["*.{ts,scss,css}"],
201
- extraDirs: [{ dir: "scss", globs: ["*.{scss,css}"] }],
202
- replaceDeps: watchInfo.replaceDeps,
203
- });
204
- // FsWatcher 시작
205
- logger.debug(`[${watchInfo.name}] FsWatcher 시작`);
206
- fsWatcher = await FsWatcher.watch(watchPaths);
207
- fsWatcher.onChange({ delay: 300 }, async (changedFiles) => {
208
- try {
209
- const addOrRemove = hasFileAddOrRemove(changedFiles);
210
- // 변경된 파일 수집 (전체 변경 + SCSS 의존성 역방향 탐색)
211
- const modifiedFiles = new Set();
212
- for (const f of changedFiles) {
213
- modifiedFiles.add(f.path);
214
- // Pipeline의 SCSS 역방향 탐색
215
- if (f.path.endsWith(".scss") || f.path.endsWith(".css")) {
216
- for (const affected of pipeline.findAffectedByScss(f.path)) {
217
- modifiedFiles.add(affected);
218
- }
219
- }
220
- }
221
- // 의존성 필터: 관련 변경이 없으면 리빌드 건너뜀
222
- if (shouldSkipRebuild(modifiedFiles, addOrRemove, lastSourceFilePaths, logger)) {
223
- return;
224
- }
225
- sender.send("buildStart", {});
226
- // 파일 추가/삭제 시 rootNames 재스캔
227
- if (addOrRemove) {
228
- const newParsedConfig = parseTsconfig(watchInfo.pkgDir);
229
- const newSourceFiles = watchInfo.output.includeTests === true
230
- ? getPackageFiles(watchInfo.pkgDir, newParsedConfig)
231
- : getPackageSourceFiles(watchInfo.pkgDir, newParsedConfig);
232
- pipeline.updateRootNames(newSourceFiles);
233
- }
234
- // Pipeline 증분 업데이트 (SCSS 의존성 초기화 포함)
235
- pipeline.clearScssDependencies();
236
- const updateResult = await pipeline.update(modifiedFiles);
237
- // 리빌드 후 소스 파일 경로 업데이트
238
- lastSourceFilePaths = extractSourceFilePaths(pipeline.getTsProgram());
239
- // 증분 lint를 위해 영향받은 ts.SourceFile 집합을 파일명 문자열로 변환
240
- const affectedFileNames = new Set();
241
- for (const sf of updateResult.affectedFiles) {
242
- affectedFileNames.add(pathx.posix(sf.fileName));
243
- }
244
- const hasScssChanges = changedFiles.some((f) => f.path.endsWith(".scss") || f.path.endsWith(".css"));
245
- const result = await buildWatchEvent(watchInfo, pipeline, loadPaths, hasScssChanges, affectedFileNames);
246
- sender.send("build", result);
247
- }
248
- catch (err) {
249
- sender.send("error", { message: errNs.message(err) });
250
- }
251
- });
252
- }
253
- catch (err) {
254
- sender.send("error", { message: errNs.message(err) });
255
- }
256
- }
257
- async function stopWatch() {
258
- await cleanup();
259
- }
260
- //#endregion
261
- const sender = createWorker({
262
- build,
263
- startWatch,
264
- stopWatch,
265
- });
266
- export default sender;
267
- //# sourceMappingURL=ngtsc-build.worker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ngtsc-build.worker.js","sourceRoot":"","sources":["../../src/workers/ngtsc-build.worker.ts"],"names":[],"mappings":"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"}