@simplysm/sd-cli 14.1.8 → 14.1.10

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 (265) hide show
  1. package/dist/capacitor/capacitor-icon.js +2 -2
  2. package/dist/capacitor/capacitor-icon.js.map +1 -1
  3. package/dist/capacitor/capacitor-npm-config.d.ts +1 -1
  4. package/dist/capacitor/capacitor-npm-config.d.ts.map +1 -1
  5. package/dist/capacitor/capacitor-npm-config.js +11 -18
  6. package/dist/capacitor/capacitor-npm-config.js.map +1 -1
  7. package/dist/capacitor/capacitor.d.ts +1 -1
  8. package/dist/capacitor/capacitor.js +2 -2
  9. package/dist/capacitor/capacitor.js.map +1 -1
  10. package/dist/commands/check.d.ts.map +1 -1
  11. package/dist/commands/check.js +1 -0
  12. package/dist/commands/check.js.map +1 -1
  13. package/dist/commands/device.js +2 -2
  14. package/dist/commands/device.js.map +1 -1
  15. package/dist/commands/init/generators/client.d.ts.map +1 -1
  16. package/dist/commands/init/generators/client.js +1 -0
  17. package/dist/commands/init/generators/client.js.map +1 -1
  18. package/dist/commands/init/generators/root.d.ts.map +1 -1
  19. package/dist/commands/init/generators/root.js +0 -1
  20. package/dist/commands/init/generators/root.js.map +1 -1
  21. package/dist/commands/init/init-client.js +1 -1
  22. package/dist/commands/init/init-client.js.map +1 -1
  23. package/dist/commands/init/init.js +2 -2
  24. package/dist/commands/init/init.js.map +1 -1
  25. package/dist/commands/publish/deployment-phase.d.ts.map +1 -1
  26. package/dist/commands/publish/deployment-phase.js +1 -0
  27. package/dist/commands/publish/deployment-phase.js.map +1 -1
  28. package/dist/commands/publish/npm-publisher.js +3 -3
  29. package/dist/commands/publish/npm-publisher.js.map +1 -1
  30. package/dist/commands/publish/post-publish-phase.d.ts.map +1 -1
  31. package/dist/commands/publish/post-publish-phase.js +1 -0
  32. package/dist/commands/publish/post-publish-phase.js.map +1 -1
  33. package/dist/commands/publish/publish-command.d.ts.map +1 -1
  34. package/dist/commands/publish/publish-command.js +7 -12
  35. package/dist/commands/publish/publish-command.js.map +1 -1
  36. package/dist/deps/replace-deps/collect-deps.js +4 -4
  37. package/dist/deps/replace-deps/collect-deps.js.map +1 -1
  38. package/dist/deps/replace-deps/replace-deps-resolve.d.ts +4 -12
  39. package/dist/deps/replace-deps/replace-deps-resolve.d.ts.map +1 -1
  40. package/dist/deps/replace-deps/replace-deps-resolve.js +13 -49
  41. package/dist/deps/replace-deps/replace-deps-resolve.js.map +1 -1
  42. package/dist/deps/replace-deps/replace-deps.d.ts +2 -2
  43. package/dist/deps/replace-deps/replace-deps.js +3 -3
  44. package/dist/deps/server-externals/server-production-files.d.ts +3 -3
  45. package/dist/deps/server-externals/server-production-files.d.ts.map +1 -1
  46. package/dist/deps/server-externals/server-production-files.js +24 -17
  47. package/dist/deps/server-externals/server-production-files.js.map +1 -1
  48. package/dist/electron/electron.d.ts.map +1 -1
  49. package/dist/electron/electron.js +6 -11
  50. package/dist/electron/electron.js.map +1 -1
  51. package/dist/engines/BaseEngine.d.ts +1 -0
  52. package/dist/engines/BaseEngine.d.ts.map +1 -1
  53. package/dist/engines/BaseEngine.js +2 -1
  54. package/dist/engines/BaseEngine.js.map +1 -1
  55. package/dist/esbuild/esbuild-config.d.ts +6 -2
  56. package/dist/esbuild/esbuild-config.d.ts.map +1 -1
  57. package/dist/esbuild/esbuild-config.js +4 -3
  58. package/dist/esbuild/esbuild-config.js.map +1 -1
  59. package/dist/esbuild/esbuild-tsc-plugin.d.ts.map +1 -1
  60. package/dist/esbuild/esbuild-tsc-plugin.js +3 -1
  61. package/dist/esbuild/esbuild-tsc-plugin.js.map +1 -1
  62. package/dist/orchestrators/BaseOrchestrator.d.ts.map +1 -1
  63. package/dist/orchestrators/BaseOrchestrator.js +1 -0
  64. package/dist/orchestrators/BaseOrchestrator.js.map +1 -1
  65. package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
  66. package/dist/orchestrators/BuildOrchestrator.js +3 -5
  67. package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
  68. package/dist/orchestrators/DevOrchestrator.d.ts.map +1 -1
  69. package/dist/orchestrators/DevOrchestrator.js +1 -0
  70. package/dist/orchestrators/DevOrchestrator.js.map +1 -1
  71. package/dist/orchestrators/ServerRuntimeManager.d.ts.map +1 -1
  72. package/dist/orchestrators/ServerRuntimeManager.js +4 -0
  73. package/dist/orchestrators/ServerRuntimeManager.js.map +1 -1
  74. package/dist/orchestrators/TypecheckOrchestrator.d.ts.map +1 -1
  75. package/dist/orchestrators/TypecheckOrchestrator.js +4 -6
  76. package/dist/orchestrators/TypecheckOrchestrator.js.map +1 -1
  77. package/dist/runtime/engine-watch-events.d.ts.map +1 -1
  78. package/dist/runtime/engine-watch-events.js +5 -0
  79. package/dist/runtime/engine-watch-events.js.map +1 -1
  80. package/dist/runtime/worker-events.d.ts +1 -0
  81. package/dist/runtime/worker-events.d.ts.map +1 -1
  82. package/dist/sd-cli-entry.d.ts.map +1 -1
  83. package/dist/sd-cli-entry.js +0 -4
  84. package/dist/sd-cli-entry.js.map +1 -1
  85. package/dist/sd-cli.js +2 -0
  86. package/dist/sd-cli.js.map +1 -1
  87. package/dist/typecheck/typecheck-non-package.d.ts.map +1 -1
  88. package/dist/typecheck/typecheck-non-package.js +10 -0
  89. package/dist/typecheck/typecheck-non-package.js.map +1 -1
  90. package/dist/utils/package-utils.d.ts +8 -6
  91. package/dist/utils/package-utils.d.ts.map +1 -1
  92. package/dist/utils/package-utils.js +26 -24
  93. package/dist/utils/package-utils.js.map +1 -1
  94. package/dist/utils/workspace-utils.d.ts +17 -0
  95. package/dist/utils/workspace-utils.d.ts.map +1 -0
  96. package/dist/utils/workspace-utils.js +95 -0
  97. package/dist/utils/workspace-utils.js.map +1 -0
  98. package/dist/workers/client.worker.d.ts +1 -0
  99. package/dist/workers/client.worker.d.ts.map +1 -1
  100. package/dist/workers/client.worker.js +8 -3
  101. package/dist/workers/client.worker.js.map +1 -1
  102. package/dist/workers/library-build.worker.d.ts +1 -0
  103. package/dist/workers/library-build.worker.d.ts.map +1 -1
  104. package/dist/workers/library-build.worker.js +3 -2
  105. package/dist/workers/library-build.worker.js.map +1 -1
  106. package/dist/workers/server-build.worker.d.ts +1 -0
  107. package/dist/workers/server-build.worker.d.ts.map +1 -1
  108. package/dist/workers/server-build.worker.js +12 -12
  109. package/dist/workers/server-build.worker.js.map +1 -1
  110. package/dist/workers/server-esbuild-context.d.ts.map +1 -1
  111. package/dist/workers/server-esbuild-context.js +4 -2
  112. package/dist/workers/server-esbuild-context.js.map +1 -1
  113. package/dist/workers/server-runtime.worker.d.ts +1 -0
  114. package/dist/workers/server-runtime.worker.d.ts.map +1 -1
  115. package/dist/workers/server-runtime.worker.js +9 -3
  116. package/dist/workers/server-runtime.worker.js.map +1 -1
  117. package/dist/workers/server-watch-manager.d.ts +1 -1
  118. package/dist/workers/server-watch-manager.d.ts.map +1 -1
  119. package/dist/workers/server-watch-manager.js +2 -2
  120. package/dist/workers/server-watch-manager.js.map +1 -1
  121. package/package.json +11 -11
  122. package/src/capacitor/capacitor-icon.ts +2 -2
  123. package/src/capacitor/capacitor-npm-config.ts +10 -19
  124. package/src/capacitor/capacitor.ts +2 -2
  125. package/src/commands/check.ts +1 -0
  126. package/src/commands/device.ts +2 -2
  127. package/src/commands/init/generators/client.ts +1 -0
  128. package/src/commands/init/generators/root.ts +0 -1
  129. package/src/commands/init/init-client.ts +1 -1
  130. package/src/commands/init/init.ts +2 -2
  131. package/src/commands/init/templates/client/src/sd-env.d.ts +1 -0
  132. package/src/commands/init/templates/workspace-root/mise.toml.hbs +1 -1
  133. package/src/commands/publish/deployment-phase.ts +1 -0
  134. package/src/commands/publish/npm-publisher.ts +3 -3
  135. package/src/commands/publish/post-publish-phase.ts +1 -0
  136. package/src/commands/publish/publish-command.ts +7 -15
  137. package/src/deps/replace-deps/collect-deps.ts +4 -4
  138. package/src/deps/replace-deps/replace-deps-resolve.ts +13 -56
  139. package/src/deps/replace-deps/replace-deps.ts +3 -3
  140. package/src/deps/server-externals/server-production-files.ts +31 -18
  141. package/src/electron/electron.ts +7 -13
  142. package/src/engines/BaseEngine.ts +3 -2
  143. package/src/esbuild/esbuild-config.ts +12 -3
  144. package/src/esbuild/esbuild-tsc-plugin.ts +4 -1
  145. package/src/orchestrators/BaseOrchestrator.ts +1 -0
  146. package/src/orchestrators/BuildOrchestrator.ts +3 -5
  147. package/src/orchestrators/DevOrchestrator.ts +1 -0
  148. package/src/orchestrators/ServerRuntimeManager.ts +4 -0
  149. package/src/orchestrators/TypecheckOrchestrator.ts +4 -6
  150. package/src/runtime/engine-watch-events.ts +7 -1
  151. package/src/runtime/worker-events.ts +1 -0
  152. package/src/sd-cli-entry.ts +0 -9
  153. package/src/sd-cli.ts +2 -0
  154. package/src/typecheck/typecheck-non-package.ts +11 -0
  155. package/src/utils/package-utils.ts +30 -23
  156. package/src/utils/workspace-utils.ts +117 -0
  157. package/src/workers/client.worker.ts +9 -4
  158. package/src/workers/library-build.worker.ts +4 -3
  159. package/src/workers/server-build.worker.ts +13 -13
  160. package/src/workers/server-esbuild-context.ts +5 -2
  161. package/src/workers/server-runtime.worker.ts +10 -3
  162. package/src/workers/server-watch-manager.ts +3 -3
  163. package/tests/capacitor/capacitor-build.spec.ts +142 -142
  164. package/tests/capacitor/capacitor-init.spec.ts +181 -181
  165. package/tests/capacitor/capacitor-npm-config.acc.spec.ts +114 -114
  166. package/tests/capacitor/capacitor-npm-config.spec.ts +94 -94
  167. package/tests/commands/publish-manifest.acc.spec.ts +67 -0
  168. package/tests/deps/replace-deps/collect-deps.acc.spec.ts +16 -1
  169. package/tests/deps/replace-deps/replace-deps-resolve.acc.spec.ts +9 -5
  170. package/tests/deps/replace-deps/replace-deps-setup.acc.spec.ts +3 -3
  171. package/tests/deps/server-externals/server-production-files.spec.ts +68 -0
  172. package/tests/electron/electron.spec.ts +608 -608
  173. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-browser.tsbuildinfo +1 -1
  174. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-node.tsbuildinfo +1 -1
  175. package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck.tsbuildinfo +1 -1
  176. package/tests/utils/engine-watch-events.spec.ts +17 -0
  177. package/tests/utils/esbuild-config.spec.ts +15 -0
  178. package/tests/utils/package-utils.spec.ts +36 -4
  179. package/tests/utils/replace-deps-watch.acc.spec.ts +4 -4
  180. package/tests/utils/replace-deps-watch.spec.ts +3 -3
  181. package/tests/utils/replace-deps.spec.ts +1 -35
  182. package/tests/utils/workspace-utils.spec.ts +87 -0
  183. package/tests/workers/library-build-worker.spec.ts +1 -1
  184. package/tests/workers/server-esbuild-context.spec.ts +4 -3
  185. package/dist/commands/reinstall.d.ts +0 -13
  186. package/dist/commands/reinstall.d.ts.map +0 -1
  187. package/dist/commands/reinstall.js +0 -56
  188. package/dist/commands/reinstall.js.map +0 -1
  189. package/src/commands/init/templates/workspace-root/pnpm-workspace.yaml +0 -5
  190. package/src/commands/reinstall.ts +0 -63
  191. package/tests/angular/angular-compiler-hmr-removal.verify.md +0 -16
  192. package/tests/angular/onbuild-lint-removal.verify.md +0 -8
  193. package/tests/angular/vite-angular-plugin-sdtscompiler.verify.md +0 -13
  194. package/tests/angular/vite-angular-plugin-vitest.verify.md +0 -20
  195. package/tests/capacitor/capacitor-android-exports.verify.md +0 -11
  196. package/tests/commands/publish-npm-local-split.verify.md +0 -9
  197. package/tests/commands/publish-responsibility-split.verify.md +0 -13
  198. package/tests/commands/publish-set.verify.md +0 -7
  199. package/tests/commands/publish-storage-split.verify.md +0 -8
  200. package/tests/commands/slice3-severity-cleanup.verify.md +0 -12
  201. package/tests/deps/deps-directory-separation.verify.md +0 -15
  202. package/tests/deps/replace-deps/replace-deps-perf.verify.md +0 -15
  203. package/tests/deps/server-externals/mise-toml-parse-intent.verify.md +0 -16
  204. package/tests/electron/electron-symlink-cleanup.verify.md +0 -8
  205. package/tests/engines/engine-duplicate-output-removal.verify.md +0 -10
  206. package/tests/engines/engine-typecheck-selection.verify.md +0 -8
  207. package/tests/engines/esbuild-client-engine.verify.md +0 -15
  208. package/tests/engines/normalize-result.verify.md +0 -9
  209. package/tests/engines/vite-dependency-cleanup.verify.md +0 -24
  210. package/tests/esbuild/esbuild-angular-compiler-plugin-hmr.verify.md +0 -23
  211. package/tests/esbuild/esbuild-angular-compiler-plugin-onload.verify.md +0 -21
  212. package/tests/esbuild/esbuild-angular-compiler-plugin-onstart-extraction.verify.md +0 -16
  213. package/tests/esbuild/esbuild-angular-compiler-plugin-sdtscompiler.verify.md +0 -15
  214. package/tests/esbuild/esbuild-angular-compiler-plugin-stylesheet.verify.md +0 -31
  215. package/tests/esbuild/esbuild-angular-compiler-plugin-worker.verify.md +0 -59
  216. package/tests/esbuild/esbuild-angular-compiler-plugin.verify.md +0 -21
  217. package/tests/esbuild/esbuild-postcss-plugin-chunking.verify.md +0 -17
  218. package/tests/esbuild/esbuild-tsc-plugin-imports.verify.md +0 -13
  219. package/tests/esbuild/esbuild-worker-plugin-node.verify.md +0 -12
  220. package/tests/esbuild/esbuild-worker-plugin.verify.md +0 -7
  221. package/tests/orchestrators/dist-delete-watcher.verify.md +0 -10
  222. package/tests/orchestrators/orchestrator-baseenv.verify.md +0 -10
  223. package/tests/orchestrators/orchestrator-diagnostic-formatting.verify.md +0 -10
  224. package/tests/orchestrators/orchestrator-initializemode-signature.verify.md +0 -9
  225. package/tests/orchestrators/slice1-stdout-to-consola.verify.md +0 -10
  226. package/tests/sd-cli-catch-all.verify.md +0 -7
  227. package/tests/sd-cli-log-tag.verify.md +0 -11
  228. package/tests/ts-compiler/SdTsCompiler-affected-files.verify.md +0 -8
  229. package/tests/ts-compiler/SdTsCompiler-crash-handling.verify.md +0 -24
  230. package/tests/ts-compiler/SdTsCompiler-diagnostics.verify.md +0 -12
  231. package/tests/ts-compiler/SdTsCompiler-emit.verify.md +0 -9
  232. package/tests/ts-compiler/SdTsCompiler.verify.md +0 -41
  233. package/tests/ts-compiler/scss-lint-integration.verify.md +0 -14
  234. package/tests/utils/copy-public-outdir.verify.md +0 -8
  235. package/tests/utils/dev-http-server.verify.md +0 -8
  236. package/tests/utils/engine-watch-events.verify.md +0 -17
  237. package/tests/utils/esbuild-client-config-integration.verify.md +0 -9
  238. package/tests/utils/esbuild-client-config-postcss.verify.md +0 -6
  239. package/tests/utils/esbuild-client-config.verify.md +0 -26
  240. package/tests/utils/esbuild-index-html.verify.md +0 -10
  241. package/tests/utils/esbuild-pwa.verify.md +0 -9
  242. package/tests/utils/esbuild-scss-plugin.verify.md +0 -8
  243. package/tests/utils/hmr-service.verify.md +0 -17
  244. package/tests/utils/lint-core-import-paths.verify.md +0 -10
  245. package/tests/utils/replace-deps-split.verify.md +0 -15
  246. package/tests/utils/replace-deps-watch.verify.md +0 -9
  247. package/tests/utils/server-production-files-import-paths.verify.md +0 -14
  248. package/tests/utils/vite-config-cleanup.verify.md +0 -7
  249. package/tests/workers/build-watch-paths-library.verify.md +0 -10
  250. package/tests/workers/build-watch-paths-ngtsc-server.verify.md +0 -12
  251. package/tests/workers/client-worker-browser-support.verify.md +0 -7
  252. package/tests/workers/client-worker-cleanup.verify.md +0 -8
  253. package/tests/workers/client-worker-initial-build-error.verify.md +0 -7
  254. package/tests/workers/client-worker-initial-build-warnings.verify.md +0 -7
  255. package/tests/workers/client-worker-mtime-incremental.verify.md +0 -10
  256. package/tests/workers/client-worker-onend-sync.verify.md +0 -7
  257. package/tests/workers/client-worker-refactor.verify.md +0 -22
  258. package/tests/workers/client-worker-ts-cache-invalidation.verify.md +0 -12
  259. package/tests/workers/dev-port-file.verify.md +0 -6
  260. package/tests/workers/ngtsc-build-rootnames-refresh.verify.md +0 -8
  261. package/tests/workers/server-build-context-dispose.verify.md +0 -8
  262. package/tests/workers/server-build-worker-plugin.verify.md +0 -9
  263. package/tests/workers/server-build-worker-refactoring.verify.md +0 -14
  264. package/tests/workers/server-esbuild-context-integration.verify.md +0 -10
  265. package/tests/workers/server-esbuild-context-tsc.verify.md +0 -7
@@ -1,8 +0,0 @@
1
- # Feature 3.1 client.worker.ts 호출부 업데이트 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - resolvePackageInfo에서 tsconfigPath 반환 제거: 반환 타입이 `{ pkgName: string }`으로 변경됨. 함수 내부에서 `tsconfigPath` 변수 선언 및 계산이 제거됨. 모든 호출부(startWatch:199, startLegacyWatch:266, build:396)에서 `{ pkgName }`으로만 구조분해.
6
- - startWatch에서 제거된 옵션 미전달: `createClientViteConfig` 호출에서 `tsconfigPath`, `browserslist`, `postCssPlugins`, `legacyModule`, `enableLint` 모두 제거됨.
7
- - startLegacyWatch에서 제거된 옵션 미전달: 동일하게 5개 옵션 모두 제거됨.
8
- - build에서 제거된 옵션 미전달: 동일하게 5개 옵션 모두 제거됨.
@@ -1,7 +0,0 @@
1
- # 초기 빌드 에러 보고 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - client.worker.ts onEnd에서 초기 빌드 시 errors 필드가 포함되는지: `client.worker.ts:285-291` — `initialBuildResolve`에 `errors: result.errors.map((e) => e.text)` 포함 확인
6
- - EsbuildClientEngine.startWatch에서 반환값의 success 확인 후 ResultCollector에 보고하는지: `EsbuildClientEngine.ts:129-138` — `!result.success` 조건으로 `resultCollector.add()` 호출 확인. logger.error는 Feature 1.2에서 제거됨 (중복 출력 방지)
7
- - esbuild-client-config.ts에서 logLevel이 "silent"인지: `esbuild-client-config.ts:191` — `logLevel: "silent"` 확인. Feature 1.2에서 dev/build 모두 "silent"로 통일됨
@@ -1,7 +0,0 @@
1
- # 초기 빌드 warnings 전달 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - client.worker.ts의 initialBuildResolve에 warnings 필드가 포함되는지: `client.worker.ts:305-315` — `initialBuildResolve`에 `warnings: result.warnings.length > 0 ? result.warnings.map(formatEsbuildMessage) : undefined` 포함 확인. 후속 빌드(line 295-298)와 동일 패턴
6
- - warnings가 없을 때 undefined인지: `client.worker.ts:312-314` — `result.warnings.length > 0` 조건으로 빈 배열일 때 undefined 반환 확인
7
- - ClientBuildResult 인터페이스에 warnings 필드가 있는지: `client.worker.ts:47` — `warnings?: string[]` 확인. 변경 불필요
@@ -1,10 +0,0 @@
1
- # client.worker mtime 증분 추적 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - createSourceFileCachePlugin이 IncrementalMtimeTracker를 사용하는지 확인: `client.worker.ts:198` — `const mtimeTracker = new IncrementalMtimeTracker();` 확인됨
6
- - onStart에서 detectChanges 결과로 invalidate가 호출되는지 확인: `client.worker.ts:210-213` — `mtimeTracker.detectChanges(watchTargets)` 결과를 `sourceFileCache.invalidate(changedFiles)`에 전달. 기존 로직과 동작 동일
7
- - onEnd에서 updateMtimes가 호출되는지 확인: `client.worker.ts:228` — `mtimeTracker.updateMtimes(watchTargets)` 호출 확인. `prevMtimes.clear()` + 전체 순회 제거됨
8
- - esbuildResult == null 가드가 유지되는지 확인: onStart의 `if (esbuildResult != null)` (라인 202), onEnd의 `if (esbuildResult == null) return;` (라인 222) 모두 유지됨
9
- - isInitialBuild 가드와 sender.send("buildStart")가 유지되는지 확인: `client.worker.ts:216-218` — `if (!isInitialBuild) { sender.send("buildStart", {}); }` 유지됨
10
- - import 경로에 .js 확장자가 없는지 확인: `client.worker.ts:20` — `from "./incremental-mtime-tracker"` (확장자 없음)
@@ -1,7 +0,0 @@
1
- # onEnd 비동기 동기화 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - onEnd 타입이 `void | Promise<void>`를 허용: `esbuild-client-config.ts:29` — `onEnd?: (result: esbuild.BuildResult) => void | Promise<void>;`
6
- - sd-on-end 플러그인이 onEnd 반환값을 return: `esbuild-client-config.ts:220` — `return options.onEnd!(result);`
7
- - client.worker.ts onEnd가 async 직접 전달 (fire-and-forget 제거): `client.worker.ts:240` — `onEnd: async (result: esbuild.BuildResult) => {` (이전의 `void (async () => { ... })()` 패턴 제거됨)
@@ -1,22 +0,0 @@
1
- # client.worker.ts startWatch 서브함수 추출 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - createSourceFileCachePlugin이 모듈 스코프에 존재하고 esbuild.Plugin을 반환한다: lines 192-250, `function createSourceFileCachePlugin(): esbuild.Plugin` 반환 타입 명시, `name: "sd-build-start"` 유지
6
- - createDevBuildEndHandler가 모듈 스코프에 존재하고 onEnd 콜백을 반환한다: lines 255-322, 반환 타입 `(result: esbuild.BuildResult) => Promise<void>`
7
- - startWatch에서 추출 함수를 호출한다: line 385 `plugins: [createSourceFileCachePlugin()]`, line 386 `onEnd: createDevBuildEndHandler(basePath, actualPort, outdir, entryNames, info.pkgDir)`
8
- - 파일 변경 감지 로직이 동일하다: createSourceFileCachePlugin onStart (lines 198-230) — watchFiles + typeScriptFileCache 순회, mtime 비교, invalidate 호출, buildStart 이벤트 전송 모두 원본과 동일
9
- - mtime 기록 로직이 동일하다: createSourceFileCachePlugin onEnd (lines 232-247) — prevMtimes.clear() + mtime 기록 원본과 동일
10
- - index.html 재생성 로직이 동일하다: createDevBuildEndHandler (lines 264-279) — lastMetafile 보관 + generateIndexHtml + writeFileSync 원본과 동일
11
- - HMR 디스패치 로직이 동일하다: lines 281-284, `hmrService.onBuildEnd(result.metafile)` 조건부 호출 원본과 동일
12
- - build 이벤트 전송 로직이 동일하다: lines 286-300, `sender.send("build", ...)` 조건부 호출 원본과 동일
13
- - 초기 빌드 resolve 로직이 동일하다: lines 302-312, `isInitialBuild = false` + `initialBuildResolve?.()` 원본과 동일
14
- - 에러 핸들링 로직이 동일하다: lines 313-320, catch 블록 원본과 동일
15
- - 외부 인터페이스가 변경되지 않았다: export는 `export default sender`만 존재 (line 501), ClientBuildInfo/ClientBuildResult/ClientWorkerEvents 타입 변경 없음
16
- - build 함수가 변경되지 않았다: lines 96-187, 원본과 동일
17
- - stopWatch에 리셋 로직이 추가되었다: lines 472-475, `lastMetafile = undefined`, `isInitialBuild = true`, `initialBuildResolve = undefined`
18
- - stopWatch 기존 정리 로직이 변경되지 않았다: lines 439-470, 5단계 정리(esbuild dispose, HMR 종료, HTTP 종료, public 감시 종료, index.html 감시 종료) 원본과 동일
19
- - 모듈 스코프 변수가 올바르게 선언되었다: lines 67-69, 기존 변수(62-66) 바로 아래 배치
20
- - startWatch가 ~110줄로 축소되었다: lines 327-434 = 107줄 (목표 ~110줄 달성)
21
- - index.html watcher에서 lastMetafile 접근이 정상 동작한다: line 400, `if (lastMetafile == null) return;` — 모듈 스코프 변수로 접근
22
- - 기존 테스트 6개 전부 통과: client-worker.spec.ts (3), client-worker.acc.spec.ts (3) — 회귀 없음
@@ -1,12 +0,0 @@
1
- # sd-build-start 플러그인 TypeScript 파일 감시 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - onStart에서 `typeScriptFileCache.keys()`가 watchTargets에 포함: `client.worker.ts:266` — `...typeScriptFileCache.keys()`가 `watchTargets` 배열에 spread되어 포함됨
6
- - onStart에서 `loadResultCache.watchFiles`도 여전히 watchTargets에 포함: `client.worker.ts:265` — `...loadResultCache.watchFiles`가 첫 번째로 spread됨 (기존 JS 동작 보존)
7
- - onStart에서 watchTargets의 각 파일에 대해 mtime 비교 수행: `client.worker.ts:268-279` — `for (const file of watchTargets)` 루프에서 `fs.statSync(file).mtimeMs`와 `prevMtimes.get(file)` 비교
8
- - 초기 빌드 직후 prevMtimes가 비어있으면 mtime 비교 스킵: `client.worker.ts:271-273` — `prev != null` 조건에 의해 `prevMtimes`에 없는 파일은 `changedFiles`에 추가되지 않음
9
- - onEnd에서 `typeScriptFileCache.keys()`가 prevMtimes 기록 대상에 포함: `client.worker.ts:297` — `...esbuildResult.sourceFileCache.typeScriptFileCache.keys()`가 watchTargets에 spread됨
10
- - onEnd에서 `loadResultCache.watchFiles`도 여전히 prevMtimes 기록 대상에 포함: `client.worker.ts:296` — `...esbuildResult.sourceFileCache.loadResultCache.watchFiles`가 첫 번째로 spread됨
11
- - `typeScriptFileCache`가 `sourceFileCache`에서 destructuring으로 접근: `client.worker.ts:260` — `const { loadResultCache, typeScriptFileCache } = esbuildResult.sourceFileCache;` SourceFileCache의 public 속성 (`source-file-cache.js:52`)
12
- - 삭제된 TS 파일에 대한 catch 처리: `client.worker.ts:275-279` — `catch` 블록에서 `prevMtimes.has(file)`인 경우 `changedFiles`에 추가 (기존 로직 동일)
@@ -1,6 +0,0 @@
1
- # 포트 파일 기록/삭제 — LLM 검증
2
-
3
- ## 검증 항목
4
- - client.worker에서 dev 모드 serverReady 후 writeDevPort 호출: `client.worker.ts:250-253` — serverReady(248) 직후 `fs.writeFileSync(path.join(distDir, ".dev-port"), String(actualPort))` 확인
5
- - client.worker에서 legacy 모드 serverReady 후 writeDevPort 호출: `client.worker.ts:331-332` — serverReady(329) 직후 `fs.writeFileSync(path.join(info.pkgDir, "dist", ".dev-port"), String(serverPort))` 확인
6
- - ViteEngine.stop()에서 deleteDevPort 호출: `ViteEngine.ts:202-204` — `fs.unlinkSync(portFile)` with try-catch 확인
@@ -1,8 +0,0 @@
1
- # ngtsc watch rootNames 갱신 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - onChange에서 addOrRemove === true일 때 parseTsconfig + getPackageSourceFiles + pipeline.updateRootNames 호출: `ngtsc-build.worker.ts:299-306` — `if (addOrRemove)` 블록 내에서 `parseTsconfig(watchInfo!.pkgDir)` → `getPackageSourceFiles()` 또는 `getPackageFiles()` → `pipeline.updateRootNames(newSourceFiles)` 호출 체인이 정확히 구현됨
6
- - includeTests 분기가 초기 설정(line 233-235)과 동일 패턴: 초기 설정 `watchInfo.output.includeTests === true ? getPackageFiles(...) : getPackageSourceFiles(...)` (line 233-235)와 onChange 내 분기 `watchInfo!.output.includeTests === true ? getPackageFiles(...) : getPackageSourceFiles(...)` (line 302-304)가 동일한 패턴을 사용
7
- - addOrRemove === false일 때 rootNames 미갱신: `if (addOrRemove)` 블록(line 300-306) 내부에서만 rootNames 재스캔이 수행되므로, addOrRemove가 false일 때는 `pipeline.updateRootNames()`가 호출되지 않음. `shouldSkipRebuild`(line 293)에서 `hasAddOrRemove`가 false이고 변경 파일이 lastSourceFilePaths에 있으면 정상적으로 `pipeline.update(modifiedFiles)`만 실행됨
8
- - rootNames 재스캔이 shouldSkipRebuild 이후 + pipeline.update() 이전에 위치: line 293에서 shouldSkipRebuild 체크 → line 299에서 rootNames 재스캔 → line 310에서 pipeline.update(). 올바른 순서
@@ -1,8 +0,0 @@
1
- # esbuild context dispose 안전성 -- LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - try-finally 패턴 적용: `server-build.worker.ts:434-442` — oldContext 캡처 후 try 블록에서 새 context 생성, finally에서 oldContext.dispose() 호출
6
- - 성공 시 dispose: try 블록에서 새 context 생성 성공 → finally에서 oldContext.dispose() 실행
7
- - 실패 시 dispose: createEsbuildWatchContext() 예외 시 → finally에서 oldContext.dispose() 실행 보장
8
- - null 안전: `if (oldContext != null)` 가드로 oldContext가 없는 경우(output.js=false 등) 안전
@@ -1,9 +0,0 @@
1
- # Feature 1.3 서버 빌드에 Worker 플러그인 적용 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - 프로덕션 빌드에 Worker 플러그인 포함: `server-build.worker.ts:169`에서 `plugins: [createWorkerBundlePlugin(), tscPlugin.plugin]`로 설정됨. Worker 플러그인이 tsc 플러그인보다 앞에 위치.
6
- - Watch/dev 빌드에 Worker 플러그인 포함: `server-esbuild-context.ts:66-69`에서 `workerPlugin` 변수로 생성 후 tsc 유무에 따라 `[workerPlugin, tscPlugin.plugin]` 또는 `[workerPlugin]`으로 설정됨.
7
- - Worker 패턴 없는 서버 코드 투명 통과: `esbuild-worker-plugin.ts:83-85`에서 `content.includes("Worker")`가 false면 즉시 `undefined` 반환. `esbuild-worker-plugin.ts:197`의 onLoad에서 `result == null`이면 `undefined` 반환하여 다음 핸들러에 위임.
8
- - 기존 tsc 플러그인/external 처리 미변경: `createServerEsbuildOptions` 함수 미수정. tsc 플러그인 생성 로직 미변경. external 처리 미변경.
9
- - import 경로에 `.js` 확장자 미사용: 두 파일 모두 `from "../esbuild/esbuild-worker-plugin"` (확장자 없음)
@@ -1,14 +0,0 @@
1
- # server-build.worker.ts 리팩토링 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - rebuildAll()이 startWatch() 내부 클로저로 정의: `server-build.worker.ts:272` — startWatch (`:259`) 내부에 `async function rebuildAll()` 정의 확인
6
- - lastBuilderProgram이 startWatch 로컬 변수: `server-build.worker.ts:264` — `let lastBuilderProgram` startWatch 함수 스코프 내 정의 확인
7
- - watchLintRunner가 startWatch 로컬 변수: `server-build.worker.ts:265` — `let watchLintRunner` startWatch 함수 스코프 내 정의 확인
8
- - watchInfo 모듈 스코프 변수 제거: 모듈 스코프에 `watchInfo` 선언 없음 확인, startWatch의 `info` 파라미터를 직접 사용
9
- - cleanup()에서 lastBuilderProgram 참조 제거: `server-build.worker.ts:108-123` — cleanup 함수에 lastBuilderProgram 참조 없음 확인
10
- - startWatch에서 createContext에 tsc 옵션 전달: `server-build.worker.ts:348-359` — `tsc: { cwd, output: { dts }, env, includeTests }` 옵션 포함 확인
11
- - build() js=true에서 createTscPlugin 로컬 생성: `server-build.worker.ts:153-159` — build 함수 내 `const tscPlugin = createTscPlugin({...})` 확인
12
- - build() js=false에서 runTscPackageBuild 직접 호출: `server-build.worker.ts:192-199` — `runTscPackageBuild({...})` 직접 호출 확인
13
- - 외부 인터페이스(ServerBuildInfo/WatchInfo/Result/WorkerEvents) 변경 없음: 타입 정의 `:33-96` 변경 없음 확인
14
- - runTscPackageBuild import 유지: `server-build.worker.ts:19` — import 존재 확인 (js=false fallback용)
@@ -1,10 +0,0 @@
1
- # rebuildAll이 esbuild context 모듈의 rebuild 사용 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - rebuildAll()이 esbuildCtx.rebuild()를 호출한다: `server-build.worker.ts` line 252에서 `const esbuildPromise = info.output.js ? esbuildCtx.rebuild() : null;` 확인. 기존 inline esbuild.rebuild() 호출이 모듈 함수로 대체됨.
6
- - rebuild() 결과의 null 처리: line 301에서 `(await esbuildPromise) ?? { success: true, ... }` — esbuildCtx.rebuild()가 null 반환 시 (context 없음) 기본 성공 결과로 폴백.
7
- - cleanup()이 esbuildCtx.dispose()를 호출한다: `server-build.worker.ts` line 104에서 `await esbuildCtx.dispose();` 확인. 기존 inline context dispose가 모듈 함수로 대체됨.
8
- - startWatch()가 esbuildCtx.createContext()를 호출한다: line 345에서 `await esbuildCtx.createContext({...})` 확인. 기존 createEsbuildWatchContext 로컬 함수가 제거됨.
9
- - onChange의 context 재생성이 esbuildCtx.recreateContext()를 사용한다: line 395에서 `await esbuildCtx.recreateContext({...})` 확인. LOGIC-001 패턴이 모듈 내부로 캡슐화됨.
10
- - metafile 필터링이 esbuildCtx.getMetafile()/hasContext()를 사용한다: lines 408, 414에서 `esbuildCtx.hasContext()`, `esbuildCtx.getMetafile()` 확인.
@@ -1,7 +0,0 @@
1
- # server-esbuild-context tsc 통합 — LLM 검증
2
-
3
- ## 검증 항목
4
-
5
- - `EsbuildContextOptions.tsc`가 optional이므로 `server-watch-manager.ts:66-71`의 기존 `recreateContext()` 호출이 타입 에러 없이 동작: 확인 — `tsc` 미전달 시 기존 플러그인 재사용 로직 정상
6
- - `server-watch-manager.spec.ts` 8개 테스트 전부 통과: 확인 — 회귀 없음
7
- - `server-watch-manager.ts`에 코드 변경 없음: 확인 — 파일 미수정