@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
@@ -1,6 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
2
  import path from "path";
3
- import * as tscBuild from "../../src/utils/tsc-build";
4
3
  import * as collectDepsModule from "../../src/deps/replace-deps/collect-deps";
5
4
 
6
5
  //#region Mocks
@@ -12,6 +11,35 @@ let mockSend: ReturnType<typeof vi.fn>;
12
11
  const mockOnChange = vi.fn();
13
12
  const mockWatcherClose = vi.fn();
14
13
 
14
+ // SdTsCompiler mock
15
+ const { mockCompileAsync, MockSdTsCompiler, mockSideEffectScssRegistry } = vi.hoisted(() => {
16
+ const compileAsync = vi.fn();
17
+ const sideEffectScssRegistry = new Map();
18
+ const Compiler = vi.fn().mockImplementation(function (this: any) {
19
+ this.compileAsync = compileAsync;
20
+ this.sideEffectScssRegistry = sideEffectScssRegistry;
21
+ });
22
+ return { mockCompileAsync: compileAsync, MockSdTsCompiler: Compiler, mockSideEffectScssRegistry: sideEffectScssRegistry };
23
+ });
24
+
25
+ vi.mock("../../src/ts-compiler/SdTsCompiler", () => ({
26
+ SdTsCompiler: MockSdTsCompiler,
27
+ }));
28
+
29
+ // ngtsc-build-core mock (writeEmitResults + compileSideEffectScss)
30
+ const { mockWriteEmitResults, mockCompileSideEffectScss } = vi.hoisted(() => {
31
+ return { mockWriteEmitResults: vi.fn(), mockCompileSideEffectScss: vi.fn() };
32
+ });
33
+
34
+ vi.mock("../../src/angular/ngtsc-build-core", async (importOriginal) => {
35
+ const original = await importOriginal<typeof import("../../src/angular/ngtsc-build-core")>();
36
+ return {
37
+ ...original,
38
+ writeEmitResults: mockWriteEmitResults,
39
+ compileSideEffectScss: mockCompileSideEffectScss,
40
+ };
41
+ });
42
+
15
43
  vi.mock("@simplysm/core-node", () => ({
16
44
  createWorker: vi.fn((fns: Record<string, Function>) => {
17
45
  workerFns = fns as any;
@@ -39,18 +67,6 @@ vi.mock("../../src/workers/shared-worker-lifecycle", () => ({
39
67
  })),
40
68
  }));
41
69
 
42
- // tsc build spy
43
- const mockRunTscPackageBuild = vi.spyOn(tscBuild, "runTscPackageBuild").mockReturnValue({
44
- success: true,
45
- errors: undefined,
46
- diagnostics: [],
47
- errorCount: 0,
48
- warningCount: 0,
49
- program: {
50
- getSourceFiles: () => [{ fileName: "/pkg/src/index.ts" }],
51
- },
52
- } as any);
53
-
54
70
  // collect-deps spy
55
71
  const mockCollectDeps = vi.spyOn(collectDepsModule, "collectDeps").mockReturnValue({
56
72
  workspaceDeps: [],
@@ -59,27 +75,33 @@ const mockCollectDeps = vi.spyOn(collectDepsModule, "collectDeps").mockReturnVal
59
75
 
60
76
  //#endregion
61
77
 
78
+ const defaultCompileResult = {
79
+ program: { getSourceFiles: () => [{ fileName: "/pkg/src/index.ts" }] },
80
+ builderProgram: {},
81
+ isForAngular: false,
82
+ affectedFiles: new Set<string>(),
83
+ diagnostics: [] as any[],
84
+ errorCount: 0,
85
+ warningCount: 0,
86
+ errors: undefined as string[] | undefined,
87
+ emitResults: undefined,
88
+ lint: undefined,
89
+ scssErrors: [] as string[],
90
+ scssDependencies: new Map<string, Set<string>>(),
91
+ };
92
+
62
93
  // Import triggers createWorker, capturing the functions
63
94
  await import("../../src/workers/library-build.worker");
64
95
 
65
96
  beforeEach(() => {
66
97
  vi.clearAllMocks();
67
- mockRunTscPackageBuild.mockReturnValue({
68
- success: true,
69
- errors: undefined,
70
- diagnostics: [],
71
- errorCount: 0,
72
- warningCount: 0,
73
- program: {
74
- getSourceFiles: () => [{ fileName: "/pkg/src/index.ts" }],
75
- },
76
- } as any);
98
+ mockCompileAsync.mockResolvedValue({ ...defaultCompileResult });
77
99
  mockCollectDeps.mockReturnValue({ workspaceDeps: [], replaceDeps: [] });
100
+ mockSideEffectScssRegistry.clear();
78
101
  });
79
102
 
80
103
  const buildInfo = {
81
104
  name: "test-pkg",
82
- config: { target: "node" as const },
83
105
  cwd: "/",
84
106
  pkgDir: "/pkg",
85
107
  output: { js: true, dts: true },
@@ -109,16 +131,13 @@ describe("library-build.worker build()", () => {
109
131
 
110
132
  // Unit: tsc failure reflects in build result
111
133
  it("reports failure in build when tsc fails", async () => {
112
- mockRunTscPackageBuild.mockReturnValueOnce({
113
- success: false,
114
- errors: ["TS2345: type error"],
115
- diagnostics: [{ code: 2345, category: 1 }],
134
+ mockCompileAsync.mockResolvedValueOnce({
135
+ ...defaultCompileResult,
116
136
  errorCount: 1,
117
137
  warningCount: 0,
118
- program: {
119
- getSourceFiles: () => [{ fileName: "/pkg/src/index.ts" }],
120
- },
121
- } as any);
138
+ errors: ["TS2345: type error"],
139
+ diagnostics: [{ code: 2345, category: 1 }],
140
+ });
122
141
 
123
142
  const result = await workerFns["build"]({ ...buildInfo, output: { js: true, dts: true } });
124
143
 
@@ -129,6 +148,119 @@ describe("library-build.worker build()", () => {
129
148
 
130
149
  });
131
150
 
151
+ const angularBuildInfo = {
152
+ name: "test-angular-lib",
153
+ cwd: "/workspace",
154
+ pkgDir: "/workspace/packages/test-angular-lib",
155
+ output: { js: true, dts: true, globalScss: true },
156
+ };
157
+
158
+ const angularCompileResult = {
159
+ ...defaultCompileResult,
160
+ program: { getSourceFiles: () => [{ fileName: "/workspace/packages/test-angular-lib/src/index.ts" }] },
161
+ isForAngular: true,
162
+ emitResults: [
163
+ { filename: "/workspace/packages/test-angular-lib/dist/index.js", contents: "export {};", sourceFileName: "/workspace/packages/test-angular-lib/src/index.ts" },
164
+ ],
165
+ };
166
+
167
+ describe("library-build.worker build() — Angular", () => {
168
+ // Acceptance: Angular one-shot build — writeEmitResults 호출
169
+ it("calls writeEmitResults with emitResults filtered to src/", async () => {
170
+ mockCompileAsync.mockResolvedValueOnce({
171
+ ...angularCompileResult,
172
+ emitResults: [
173
+ { filename: "dist/src-file.js", contents: "a", sourceFileName: "/workspace/packages/test-angular-lib/src/src-file.ts" },
174
+ { filename: "dist/ext.js", contents: "b", sourceFileName: "/workspace/packages/test-angular-lib/node_modules/ext.ts" },
175
+ ],
176
+ });
177
+
178
+ await workerFns["build"](angularBuildInfo);
179
+
180
+ expect(mockWriteEmitResults).toHaveBeenCalledTimes(1);
181
+ const emitArg = mockWriteEmitResults.mock.calls[0][0] as any[];
182
+ // src/ 하위만 필터됨
183
+ expect(emitArg).toHaveLength(1);
184
+ expect(emitArg[0].sourceFileName).toContain("src/src-file.ts");
185
+ // pkgDir 전달
186
+ expect(mockWriteEmitResults.mock.calls[0][1]).toBe(angularBuildInfo.pkgDir);
187
+ // Angular build 모드에서 scss 옵션 전달
188
+ expect(mockWriteEmitResults.mock.calls[0][2]).toEqual({
189
+ loadPaths: [
190
+ path.join(angularBuildInfo.pkgDir, "scss"),
191
+ path.join(angularBuildInfo.cwd, "node_modules"),
192
+ ],
193
+ scssErrors: [],
194
+ scssDependencies: expect.any(Map),
195
+ registry: expect.any(Map),
196
+ registryReverseIndex: expect.any(Map),
197
+ sideEffectScssDeps: expect.any(Map),
198
+ });
199
+ });
200
+
201
+ // Acceptance: Angular build with SCSS errors
202
+ it("returns success=false when scssErrors exist", async () => {
203
+ mockCompileAsync.mockResolvedValueOnce({
204
+ ...angularCompileResult,
205
+ scssErrors: ["SCSS error in styles.scss: variable not found"],
206
+ });
207
+
208
+ const result = await workerFns["build"](angularBuildInfo);
209
+
210
+ expect(result.build.success).toBe(false);
211
+ expect(result.build.errors).toContain("SCSS error in styles.scss: variable not found");
212
+ });
213
+
214
+ // Unit: ts errors + scss errors 병합
215
+ it("merges both ts errors and scss errors into build.errors", async () => {
216
+ mockCompileAsync.mockResolvedValueOnce({
217
+ ...angularCompileResult,
218
+ errorCount: 1,
219
+ errors: ["TS2345: type error"],
220
+ scssErrors: ["SCSS error"],
221
+ });
222
+
223
+ const result = await workerFns["build"](angularBuildInfo);
224
+
225
+ expect(result.build.success).toBe(false);
226
+ expect(result.build.errors).toEqual(["TS2345: type error", "SCSS error"]);
227
+ });
228
+
229
+ // Acceptance: Angular build 예외 처리
230
+ it("catches exceptions and returns error result", async () => {
231
+ mockCompileAsync.mockRejectedValueOnce(new Error("Fatal crash"));
232
+
233
+ const result = await workerFns["build"](angularBuildInfo);
234
+
235
+ expect(result.build.success).toBe(false);
236
+ expect(result.build.errors).toContain("Fatal crash");
237
+ expect(result.build.diagnostics).toEqual([]);
238
+ });
239
+
240
+ // Unit: emitResults가 undefined이면 writeEmitResults 미호출
241
+ it("skips writeEmitResults when emitResults is undefined", async () => {
242
+ mockCompileAsync.mockResolvedValueOnce({
243
+ ...angularCompileResult,
244
+ emitResults: undefined,
245
+ });
246
+
247
+ await workerFns["build"](angularBuildInfo);
248
+
249
+ expect(mockWriteEmitResults).not.toHaveBeenCalled();
250
+ });
251
+
252
+ // Unit: globalScss 옵션이 SdTsCompiler에 전달됨
253
+ it("passes globalScss to SdTsCompiler", async () => {
254
+ mockCompileAsync.mockResolvedValueOnce({ ...angularCompileResult });
255
+
256
+ await workerFns["build"](angularBuildInfo);
257
+
258
+ expect(MockSdTsCompiler).toHaveBeenCalledWith(expect.objectContaining({
259
+ globalScss: true,
260
+ }));
261
+ });
262
+ });
263
+
132
264
  describe("library-build.worker startWatch()", () => {
133
265
  // Acceptance: Initial build completes before returning
134
266
  it("completes initial build and sends build event", async () => {
@@ -172,7 +304,7 @@ describe("library-build.worker startWatch()", () => {
172
304
  it("sends error event on rebuild exception", async () => {
173
305
  await workerFns["startWatch"]({ ...buildInfo, output: { js: true, dts: true } });
174
306
 
175
- mockRunTscPackageBuild.mockImplementationOnce(() => { throw new Error("tsc crash"); });
307
+ mockCompileAsync.mockRejectedValueOnce(new Error("tsc crash"));
176
308
  const onChangeCallback = mockOnChange.mock.calls[0][1];
177
309
  mockSend.mockClear();
178
310
 
@@ -219,14 +351,10 @@ describe("library-build.worker startWatch() dependency filter", () => {
219
351
  });
220
352
 
221
353
  const buildInfoWithProgram = () => {
222
- mockRunTscPackageBuild.mockReturnValue({
223
- success: true,
224
- errors: undefined,
225
- diagnostics: [],
226
- errorCount: 0,
227
- warningCount: 0,
354
+ mockCompileAsync.mockResolvedValue({
355
+ ...defaultCompileResult,
228
356
  program: createMockProgram(["/pkg/src/index.ts", "/pkg/src/utils.ts"]),
229
- } as any);
357
+ });
230
358
  };
231
359
 
232
360
  // Acceptance: Skip rebuild when changed file is not in program
@@ -296,6 +424,136 @@ describe("library-build.worker startWatch() dependency filter", () => {
296
424
  });
297
425
  });
298
426
 
427
+ describe("library-build.worker startWatch() — Angular", () => {
428
+ const angularWatchInfo = {
429
+ ...angularBuildInfo,
430
+ replaceDeps: undefined as Record<string, string> | undefined,
431
+ };
432
+
433
+ const angularWatchCompileResult = {
434
+ ...angularCompileResult,
435
+ program: {
436
+ getSourceFiles: () => [
437
+ { fileName: "/workspace/packages/test-angular-lib/src/index.ts" },
438
+ { fileName: "/workspace/packages/test-angular-lib/src/comp.ts" },
439
+ ],
440
+ },
441
+ scssDependencies: new Map<string, ReadonlySet<string>>(),
442
+ };
443
+
444
+ // Acceptance: Angular 초기 빌드 with SCSS globs
445
+ it("starts FsWatcher with scss globs when globalScss is true", async () => {
446
+ mockCompileAsync.mockResolvedValue({ ...angularWatchCompileResult });
447
+
448
+ await workerFns["startWatch"](angularWatchInfo);
449
+
450
+ const { FsWatcher } = await import("@simplysm/core-node");
451
+ const watchPaths = vi.mocked(FsWatcher.watch).mock.calls[0][0];
452
+ // src/**/*.{ts,scss,css} + scss/**/*.{scss,css}
453
+ expect(watchPaths.length).toBeGreaterThanOrEqual(2);
454
+ expect(watchPaths.some((p: string) => p.includes("*.{ts,scss,css}"))).toBe(true);
455
+ expect(watchPaths.some((p: string) => p.includes("*.{scss,css}"))).toBe(true);
456
+ });
457
+
458
+ // Acceptance: Angular 초기 빌드 — writeEmitResults with scss option
459
+ it("calls writeEmitResults with scss option in initial watch build", async () => {
460
+ mockCompileAsync.mockResolvedValue({ ...angularWatchCompileResult });
461
+
462
+ await workerFns["startWatch"](angularWatchInfo);
463
+
464
+ expect(mockWriteEmitResults).toHaveBeenCalledWith(
465
+ expect.any(Array),
466
+ angularWatchInfo.pkgDir,
467
+ expect.objectContaining({
468
+ loadPaths: expect.any(Array),
469
+ scssErrors: expect.any(Array),
470
+ scssDependencies: expect.any(Map),
471
+ registry: mockSideEffectScssRegistry,
472
+ }),
473
+ );
474
+ });
475
+
476
+ // Acceptance: globalScss가 SdTsCompiler에 전달됨
477
+ it("passes globalScss to SdTsCompiler in watch mode", async () => {
478
+ mockCompileAsync.mockResolvedValue({ ...angularWatchCompileResult });
479
+
480
+ await workerFns["startWatch"](angularWatchInfo);
481
+
482
+ expect(MockSdTsCompiler).toHaveBeenCalledWith(expect.objectContaining({
483
+ globalScss: true,
484
+ }));
485
+ });
486
+
487
+ // Acceptance: SCSS 의존성 역방향 탐색
488
+ it("adds SCSS-dependent files to modifiedFiles via combinedScssDeps", async () => {
489
+ const scssDeps = new Map<string, ReadonlySet<string>>();
490
+ scssDeps.set(
491
+ "/workspace/packages/test-angular-lib/src/comp.ts",
492
+ new Set(["/workspace/packages/test-angular-lib/scss/shared.scss"]),
493
+ );
494
+ mockCompileAsync.mockResolvedValue({
495
+ ...angularWatchCompileResult,
496
+ scssDependencies: scssDeps,
497
+ });
498
+
499
+ await workerFns["startWatch"](angularWatchInfo);
500
+
501
+ const onChangeCallback = mockOnChange.mock.calls[0][1];
502
+ mockSend.mockClear();
503
+
504
+ // shared.scss 변경 → comp.ts도 modifiedFiles에 추가
505
+ await onChangeCallback([
506
+ { event: "change", path: "/workspace/packages/test-angular-lib/scss/shared.scss" },
507
+ ]);
508
+
509
+ expect(mockSend).toHaveBeenCalledWith("buildStart", {});
510
+ const compileCall = mockCompileAsync.mock.calls[mockCompileAsync.mock.calls.length - 1];
511
+ const modifiedFiles = compileCall[0] as Set<string>;
512
+ expect(modifiedFiles.has("/workspace/packages/test-angular-lib/scss/shared.scss")).toBe(true);
513
+ expect(modifiedFiles.has("/workspace/packages/test-angular-lib/src/comp.ts")).toBe(true);
514
+ });
515
+
516
+ // Acceptance: SCSS 변경 시 compileSideEffectScss 호출
517
+ it("calls compileSideEffectScss when scss files change", async () => {
518
+ mockCompileAsync.mockResolvedValue({ ...angularWatchCompileResult });
519
+
520
+ await workerFns["startWatch"](angularWatchInfo);
521
+
522
+ const onChangeCallback = mockOnChange.mock.calls[0][1];
523
+ mockCompileSideEffectScss.mockClear();
524
+
525
+ await onChangeCallback([
526
+ { event: "change", path: "/workspace/packages/test-angular-lib/src/styles.scss" },
527
+ { event: "change", path: "/workspace/packages/test-angular-lib/src/index.ts" },
528
+ ]);
529
+
530
+ expect(mockCompileSideEffectScss).toHaveBeenCalledWith(
531
+ mockSideEffectScssRegistry,
532
+ expect.any(Array),
533
+ expect.any(Array),
534
+ expect.any(Map),
535
+ expect.any(Set), // changedScssFiles
536
+ expect.any(Map), // sideEffectScssDeps
537
+ );
538
+ });
539
+
540
+ // Unit: SCSS 미변경 시 compileSideEffectScss 미호출
541
+ it("does not call compileSideEffectScss when no scss changes", async () => {
542
+ mockCompileAsync.mockResolvedValue({ ...angularWatchCompileResult });
543
+
544
+ await workerFns["startWatch"](angularWatchInfo);
545
+
546
+ const onChangeCallback = mockOnChange.mock.calls[0][1];
547
+ mockCompileSideEffectScss.mockClear();
548
+
549
+ await onChangeCallback([
550
+ { event: "change", path: "/workspace/packages/test-angular-lib/src/index.ts" },
551
+ ]);
552
+
553
+ expect(mockCompileSideEffectScss).not.toHaveBeenCalled();
554
+ });
555
+ });
556
+
299
557
  describe("library-build.worker stopWatch()", () => {
300
558
  it("cleans up FsWatcher", async () => {
301
559
  await workerFns["startWatch"]({ ...buildInfo, output: { js: true, dts: true } });
@@ -2,34 +2,35 @@ import { describe, it, expect, vi, beforeEach } from "vitest";
2
2
 
3
3
  // --- Mocks ---
4
4
 
5
- const { mockLintFn, MockLintWithProgramRunner } = vi.hoisted(() => {
6
- const lintFn = vi.fn().mockResolvedValue({
7
- success: true,
8
- errorCount: 0,
9
- warningCount: 0,
10
- formattedOutput: "",
11
- });
12
- const RunnerCls = vi.fn().mockImplementation(function () {
13
- return { lint: lintFn };
14
- });
15
- return { mockLintFn: lintFn, MockLintWithProgramRunner: RunnerCls };
16
- });
17
-
18
- vi.mock("../../src/lint/lint-with-program", () => ({
19
- LintWithProgramRunner: MockLintWithProgramRunner,
20
- }));
21
-
22
- const mockTscResult = {
5
+ // SdTsCompiler mock (js=false path) lint result is part of compileAsync result
6
+ const mockLintResult = {
23
7
  success: true,
24
- errors: undefined,
25
- diagnostics: [],
26
8
  errorCount: 0,
27
9
  warningCount: 0,
28
- program: { getSourceFiles: () => [] },
10
+ formattedOutput: "",
29
11
  };
30
12
 
31
- vi.mock("../../src/utils/tsc-build", () => ({
32
- runTscPackageBuild: vi.fn(() => mockTscResult),
13
+ const mockCompileAsync = vi.fn(() => Promise.resolve({
14
+ program: { getSourceFiles: () => [] },
15
+ builderProgram: {},
16
+ isForAngular: false,
17
+ affectedFiles: undefined,
18
+ diagnostics: [],
19
+ errorCount: 0,
20
+ warningCount: 0,
21
+ errors: undefined as string[] | undefined,
22
+ emitResults: undefined,
23
+ lint: undefined as typeof mockLintResult | undefined,
24
+ scssErrors: [],
25
+ scssDependencies: new Map(),
26
+ }));
27
+
28
+ const MockSdTsCompiler = vi.fn().mockImplementation(function () {
29
+ return { compileAsync: mockCompileAsync };
30
+ });
31
+
32
+ vi.mock("../../src/ts-compiler/SdTsCompiler", () => ({
33
+ SdTsCompiler: MockSdTsCompiler,
33
34
  }));
34
35
 
35
36
  // tsc plugin mock (build() js=true path)
@@ -39,6 +40,7 @@ const mockTscPlugin = {
39
40
  getAffectedFiles: vi.fn(),
40
41
  getDiagnostics: vi.fn((): unknown[] => []),
41
42
  getErrors: vi.fn((): string[] | undefined => undefined),
43
+ getLintResult: vi.fn((): typeof mockLintResult | undefined => undefined),
42
44
  resetBuilderProgram: vi.fn(),
43
45
  };
44
46
 
@@ -114,25 +116,48 @@ await import("../../src/workers/server-build.worker");
114
116
 
115
117
  beforeEach(() => {
116
118
  vi.clearAllMocks();
117
- mockLintFn.mockResolvedValue({
118
- success: true,
119
+ mockCompileAsync.mockResolvedValue({
120
+ program: { getSourceFiles: () => [] },
121
+ builderProgram: {},
122
+ isForAngular: false,
123
+ affectedFiles: undefined,
124
+ diagnostics: [],
119
125
  errorCount: 0,
120
126
  warningCount: 0,
121
- formattedOutput: "",
127
+ errors: undefined,
128
+ emitResults: undefined,
129
+ lint: undefined,
130
+ scssErrors: [],
131
+ scssDependencies: new Map(),
122
132
  });
123
- mockTscResult.program = { getSourceFiles: () => [] } as any;
124
133
 
125
134
  // Reset tsc plugin mock
126
135
  mockTscPlugin.getProgram.mockReset();
127
136
  mockTscPlugin.getAffectedFiles.mockReset();
128
137
  mockTscPlugin.getDiagnostics.mockReset().mockReturnValue([]);
129
138
  mockTscPlugin.getErrors.mockReset().mockReturnValue(undefined);
139
+ mockTscPlugin.getLintResult.mockReset().mockReturnValue(undefined);
130
140
  mockTscPlugin.resetBuilderProgram.mockReset();
131
141
  });
132
142
 
133
143
  describe("server-build.worker lint integration (Slice 3)", () => {
134
- describe("Scenario: server-build.worker runs lint after typecheck", () => {
135
- it("returns lint result in build output when lint is enabled", async () => {
144
+ describe("Scenario: js=false lint via SdTsCompiler", () => {
145
+ it("returns lint result from SdTsCompiler when lint is enabled", async () => {
146
+ mockCompileAsync.mockResolvedValueOnce({
147
+ program: { getSourceFiles: () => [] },
148
+ builderProgram: {},
149
+ isForAngular: false,
150
+ affectedFiles: undefined,
151
+ diagnostics: [],
152
+ errorCount: 0,
153
+ warningCount: 0,
154
+ errors: undefined,
155
+ emitResults: undefined,
156
+ lint: mockLintResult,
157
+ scssErrors: [],
158
+ scssDependencies: new Map(),
159
+ });
160
+
136
161
  const result = await workerMethods["build"]({
137
162
  name: "my-server",
138
163
  cwd: "/workspace",
@@ -141,19 +166,13 @@ describe("server-build.worker lint integration (Slice 3)", () => {
141
166
  });
142
167
 
143
168
  expect(result).toHaveProperty("lint");
144
- expect(result.lint).toEqual({
145
- success: true,
146
- errorCount: 0,
147
- warningCount: 0,
148
- formattedOutput: "",
149
- });
169
+ expect(result.lint).toEqual(mockLintResult);
150
170
  });
151
171
  });
152
172
 
153
- describe("Scenario: build js=true runs lint using tscPlugin.getProgram()", () => {
154
- it("returns lint result using plugin program when js=true and lint enabled", async () => {
155
- const fakeProgram = { getSourceFiles: () => [] };
156
- mockTscPlugin.getProgram.mockReturnValue(fakeProgram);
173
+ describe("Scenario: js=true lint via tscPlugin.getLintResult()", () => {
174
+ it("returns lint result from tsc plugin when js=true and lint enabled", async () => {
175
+ mockTscPlugin.getLintResult.mockReturnValue(mockLintResult);
157
176
 
158
177
  const result = await workerMethods["build"]({
159
178
  name: "my-server",
@@ -163,12 +182,7 @@ describe("server-build.worker lint integration (Slice 3)", () => {
163
182
  });
164
183
 
165
184
  expect(result).toHaveProperty("lint");
166
- expect(result.lint).toEqual({
167
- success: true,
168
- errorCount: 0,
169
- warningCount: 0,
170
- formattedOutput: "",
171
- });
185
+ expect(result.lint).toEqual(mockLintResult);
172
186
  });
173
187
  });
174
188