@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.
- package/dist/angular/angular-compiler.d.ts +0 -35
- package/dist/angular/angular-compiler.d.ts.map +1 -1
- package/dist/angular/angular-compiler.js +0 -374
- package/dist/angular/angular-compiler.js.map +1 -1
- package/dist/angular/hmr-candidates.d.ts +13 -0
- package/dist/angular/hmr-candidates.d.ts.map +1 -0
- package/dist/angular/hmr-candidates.js +230 -0
- package/dist/angular/hmr-candidates.js.map +1 -0
- package/dist/angular/ngtsc-build-core.d.ts +41 -37
- package/dist/angular/ngtsc-build-core.d.ts.map +1 -1
- package/dist/angular/ngtsc-build-core.js +155 -52
- package/dist/angular/ngtsc-build-core.js.map +1 -1
- package/dist/angular/vite-angular-plugin.d.ts +1 -1
- package/dist/angular/vite-angular-plugin.d.ts.map +1 -1
- package/dist/angular/vite-angular-plugin.js +63 -56
- package/dist/angular/vite-angular-plugin.js.map +1 -1
- package/dist/angular/web-worker-transformer.d.ts +9 -0
- package/dist/angular/web-worker-transformer.d.ts.map +1 -0
- package/dist/angular/web-worker-transformer.js +73 -0
- package/dist/angular/web-worker-transformer.js.map +1 -0
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +6 -4
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/check.d.ts +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js +15 -65
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/publish/deployment-phase.d.ts.map +1 -1
- package/dist/commands/publish/deployment-phase.js +13 -5
- package/dist/commands/publish/deployment-phase.js.map +1 -1
- package/dist/commands/publish/npm-publisher.js +1 -1
- package/dist/commands/publish/npm-publisher.js.map +1 -1
- package/dist/commands/publish/publish-command.js +1 -1
- package/dist/commands/publish/publish-command.js.map +1 -1
- package/dist/commands/publish/version-upgrade.d.ts.map +1 -1
- package/dist/commands/publish/version-upgrade.js +16 -13
- package/dist/commands/publish/version-upgrade.js.map +1 -1
- package/dist/commands/replace-deps.d.ts.map +1 -1
- package/dist/commands/replace-deps.js +2 -1
- package/dist/commands/replace-deps.js.map +1 -1
- package/dist/deps/replace-deps/collect-deps.d.ts.map +1 -1
- package/dist/deps/replace-deps/collect-deps.js +5 -2
- package/dist/deps/replace-deps/collect-deps.js.map +1 -1
- package/dist/deps/replace-deps/replace-deps-resolve.d.ts.map +1 -1
- package/dist/deps/replace-deps/replace-deps-resolve.js +6 -7
- package/dist/deps/replace-deps/replace-deps-resolve.js.map +1 -1
- package/dist/deps/replace-deps/replace-deps.d.ts +21 -3
- package/dist/deps/replace-deps/replace-deps.d.ts.map +1 -1
- package/dist/deps/replace-deps/replace-deps.js +175 -66
- package/dist/deps/replace-deps/replace-deps.js.map +1 -1
- package/dist/electron/electron.js +7 -7
- package/dist/electron/electron.js.map +1 -1
- package/dist/engines/BaseEngine.d.ts.map +1 -1
- package/dist/engines/BaseEngine.js +2 -5
- package/dist/engines/BaseEngine.js.map +1 -1
- package/dist/engines/EsbuildClientEngine.d.ts.map +1 -1
- package/dist/engines/EsbuildClientEngine.js +16 -9
- package/dist/engines/EsbuildClientEngine.js.map +1 -1
- package/dist/engines/NgtscEngine.d.ts +4 -4
- package/dist/engines/NgtscEngine.d.ts.map +1 -1
- package/dist/engines/NgtscEngine.js +5 -5
- package/dist/engines/NgtscEngine.js.map +1 -1
- package/dist/engines/TscEngine.d.ts.map +1 -1
- package/dist/engines/TscEngine.js +0 -2
- package/dist/engines/TscEngine.js.map +1 -1
- package/dist/engines/types.d.ts +2 -0
- package/dist/engines/types.d.ts.map +1 -1
- package/dist/esbuild/esbuild-angular-compiler-plugin.d.ts +36 -0
- package/dist/esbuild/esbuild-angular-compiler-plugin.d.ts.map +1 -0
- package/dist/esbuild/esbuild-angular-compiler-plugin.js +464 -0
- package/dist/esbuild/esbuild-angular-compiler-plugin.js.map +1 -0
- package/dist/esbuild/esbuild-client-config.d.ts +8 -2
- package/dist/esbuild/esbuild-client-config.d.ts.map +1 -1
- package/dist/esbuild/esbuild-client-config.js +48 -33
- package/dist/esbuild/esbuild-client-config.js.map +1 -1
- package/dist/esbuild/esbuild-postcss-plugin.d.ts.map +1 -1
- package/dist/esbuild/esbuild-postcss-plugin.js +9 -6
- package/dist/esbuild/esbuild-postcss-plugin.js.map +1 -1
- package/dist/esbuild/esbuild-tsc-plugin.d.ts +4 -1
- package/dist/esbuild/esbuild-tsc-plugin.d.ts.map +1 -1
- package/dist/esbuild/esbuild-tsc-plugin.js +27 -23
- package/dist/esbuild/esbuild-tsc-plugin.js.map +1 -1
- package/dist/esbuild/file-reference-tracker.d.ts +24 -0
- package/dist/esbuild/file-reference-tracker.d.ts.map +1 -0
- package/dist/esbuild/file-reference-tracker.js +57 -0
- package/dist/esbuild/file-reference-tracker.js.map +1 -0
- package/dist/esbuild/lmdb-cache-store.d.ts +18 -0
- package/dist/esbuild/lmdb-cache-store.d.ts.map +1 -0
- package/dist/esbuild/lmdb-cache-store.js +41 -0
- package/dist/esbuild/lmdb-cache-store.js.map +1 -0
- package/dist/esbuild/load-result-cache.d.ts +17 -0
- package/dist/esbuild/load-result-cache.d.ts.map +1 -0
- package/dist/esbuild/load-result-cache.js +61 -0
- package/dist/esbuild/load-result-cache.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/lint/lint-core.js +7 -7
- package/dist/lint/lint-core.js.map +1 -1
- package/dist/orchestrators/BaseOrchestrator.js +2 -2
- package/dist/orchestrators/BaseOrchestrator.js.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js +5 -19
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
- package/dist/orchestrators/DevOrchestrator.js +5 -5
- package/dist/orchestrators/DevOrchestrator.js.map +1 -1
- package/dist/orchestrators/WatchOrchestrator.js +6 -6
- package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
- package/dist/runtime/ResultCollector.d.ts +1 -0
- package/dist/runtime/ResultCollector.d.ts.map +1 -1
- package/dist/runtime/ResultCollector.js.map +1 -1
- package/dist/runtime/engine-watch-events.d.ts.map +1 -1
- package/dist/runtime/engine-watch-events.js +3 -0
- package/dist/runtime/engine-watch-events.js.map +1 -1
- package/dist/runtime/rebuild-manager.js +1 -1
- package/dist/runtime/rebuild-manager.js.map +1 -1
- package/dist/runtime/worker-utils.js +1 -1
- package/dist/runtime/worker-utils.js.map +1 -1
- package/dist/sd-cli-entry.d.ts.map +1 -1
- package/dist/sd-cli-entry.js +4 -3
- package/dist/sd-cli-entry.js.map +1 -1
- package/dist/sd-cli.js +3 -3
- package/dist/sd-cli.js.map +1 -1
- package/dist/ts-compiler/SdTsCompiler.d.ts +39 -0
- package/dist/ts-compiler/SdTsCompiler.d.ts.map +1 -0
- package/dist/ts-compiler/SdTsCompiler.js +593 -0
- package/dist/ts-compiler/SdTsCompiler.js.map +1 -0
- package/dist/ts-compiler/sd-ts-compiler-options.d.ts +40 -0
- package/dist/ts-compiler/sd-ts-compiler-options.d.ts.map +1 -0
- package/dist/ts-compiler/sd-ts-compiler-options.js +2 -0
- package/dist/ts-compiler/sd-ts-compiler-options.js.map +1 -0
- package/dist/ts-compiler/sd-ts-compiler-result.d.ts +34 -0
- package/dist/ts-compiler/sd-ts-compiler-result.d.ts.map +1 -0
- package/dist/ts-compiler/sd-ts-compiler-result.js +2 -0
- package/dist/ts-compiler/sd-ts-compiler-result.js.map +1 -0
- package/dist/utils/copy-public.d.ts +6 -4
- package/dist/utils/copy-public.d.ts.map +1 -1
- package/dist/utils/copy-public.js +9 -7
- package/dist/utils/copy-public.js.map +1 -1
- package/dist/utils/diagnostic-utils.d.ts +2 -3
- package/dist/utils/diagnostic-utils.d.ts.map +1 -1
- package/dist/utils/diagnostic-utils.js +8 -9
- package/dist/utils/diagnostic-utils.js.map +1 -1
- package/dist/utils/output-utils.d.ts +8 -2
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js +32 -8
- package/dist/utils/output-utils.js.map +1 -1
- package/dist/workers/client.worker.d.ts +1 -1
- package/dist/workers/client.worker.d.ts.map +1 -1
- package/dist/workers/client.worker.js +115 -110
- package/dist/workers/client.worker.js.map +1 -1
- package/dist/workers/incremental-mtime-tracker.d.ts +13 -0
- package/dist/workers/incremental-mtime-tracker.d.ts.map +1 -0
- package/dist/workers/incremental-mtime-tracker.js +65 -0
- package/dist/workers/incremental-mtime-tracker.js.map +1 -0
- package/dist/workers/library-build.worker.d.ts +0 -2
- package/dist/workers/library-build.worker.d.ts.map +1 -1
- package/dist/workers/library-build.worker.js +169 -70
- package/dist/workers/library-build.worker.js.map +1 -1
- package/dist/workers/server-build.worker.d.ts.map +1 -1
- package/dist/workers/server-build.worker.js +30 -57
- package/dist/workers/server-build.worker.js.map +1 -1
- package/dist/workers/server-esbuild-context.d.ts +7 -0
- package/dist/workers/server-esbuild-context.d.ts.map +1 -1
- package/dist/workers/server-esbuild-context.js +11 -2
- package/dist/workers/server-esbuild-context.js.map +1 -1
- package/package.json +5 -4
- package/src/angular/angular-compiler.ts +0 -502
- package/src/angular/hmr-candidates.ts +295 -0
- package/src/angular/ngtsc-build-core.ts +192 -91
- package/src/angular/vite-angular-plugin.ts +71 -65
- package/src/angular/web-worker-transformer.ts +117 -0
- package/src/capacitor/capacitor.ts +6 -4
- package/src/commands/check.ts +17 -76
- package/src/commands/publish/deployment-phase.ts +11 -7
- package/src/commands/publish/npm-publisher.ts +1 -1
- package/src/commands/publish/publish-command.ts +1 -1
- package/src/commands/publish/version-upgrade.ts +44 -35
- package/src/commands/replace-deps.ts +3 -1
- package/src/deps/replace-deps/collect-deps.ts +4 -2
- package/src/deps/replace-deps/replace-deps-resolve.ts +12 -7
- package/src/deps/replace-deps/replace-deps.ts +191 -69
- package/src/electron/electron.ts +7 -7
- package/src/engines/BaseEngine.ts +2 -6
- package/src/engines/EsbuildClientEngine.ts +16 -10
- package/src/engines/NgtscEngine.ts +7 -7
- package/src/engines/TscEngine.ts +0 -2
- package/src/engines/types.ts +2 -0
- package/src/esbuild/esbuild-angular-compiler-plugin.ts +647 -0
- package/src/esbuild/esbuild-client-config.ts +57 -41
- package/src/esbuild/esbuild-postcss-plugin.ts +9 -6
- package/src/esbuild/esbuild-tsc-plugin.ts +33 -23
- package/src/esbuild/file-reference-tracker.ts +61 -0
- package/src/esbuild/lmdb-cache-store.ts +46 -0
- package/src/esbuild/load-result-cache.ts +85 -0
- package/src/index.ts +5 -0
- package/src/lint/lint-core.ts +7 -7
- package/src/orchestrators/BaseOrchestrator.ts +2 -2
- package/src/orchestrators/BuildOrchestrator.ts +5 -24
- package/src/orchestrators/DevOrchestrator.ts +5 -5
- package/src/orchestrators/WatchOrchestrator.ts +6 -6
- package/src/runtime/ResultCollector.ts +1 -0
- package/src/runtime/engine-watch-events.ts +3 -0
- package/src/runtime/rebuild-manager.ts +1 -1
- package/src/runtime/worker-utils.ts +1 -1
- package/src/sd-cli-entry.ts +5 -3
- package/src/sd-cli.ts +4 -4
- package/src/ts-compiler/SdTsCompiler.ts +815 -0
- package/src/ts-compiler/sd-ts-compiler-options.ts +46 -0
- package/src/ts-compiler/sd-ts-compiler-result.ts +34 -0
- package/src/utils/copy-public.ts +9 -6
- package/src/utils/diagnostic-utils.ts +8 -9
- package/src/utils/output-utils.ts +38 -8
- package/src/workers/client.worker.ts +141 -126
- package/src/workers/incremental-mtime-tracker.ts +68 -0
- package/src/workers/library-build.worker.ts +214 -75
- package/src/workers/server-build.worker.ts +31 -61
- package/src/workers/server-esbuild-context.ts +14 -2
- package/tests/angular/fixtures/packages/basic-app/dist/styles.css +3 -0
- package/tests/angular/fixtures/packages/basic-app/scss/styles.scss +5 -0
- package/tests/angular/ngtsc-build-core.acc.spec.ts +210 -0
- package/tests/angular/ngtsc-build-core.spec.ts +52 -0
- package/tests/angular/vite-angular-plugin-sdtscompiler.verify.md +13 -0
- package/tests/angular/web-worker-transformer.spec.ts +154 -0
- package/tests/capacitor/capacitor-build.spec.ts +1 -1
- package/tests/capacitor/capacitor-icon.spec.ts +1 -1
- package/tests/capacitor/capacitor-init.spec.ts +1 -1
- package/tests/commands/check.spec.ts +90 -104
- package/tests/commands/publish.spec.ts +12 -4
- package/tests/commands/slice3-severity-cleanup.verify.md +12 -0
- package/tests/commands/version-upgrade.acc.spec.ts +210 -0
- package/tests/commands/version-upgrade.spec.ts +148 -0
- package/tests/deps/replace-deps/collect-deps.acc.spec.ts +62 -0
- package/tests/deps/replace-deps/collect-deps.spec.ts +49 -0
- package/tests/deps/replace-deps/replace-deps-filter.spec.ts +103 -0
- package/tests/deps/replace-deps/replace-deps-perf.verify.md +15 -0
- package/tests/deps/replace-deps/replace-deps-resolve.acc.spec.ts +124 -0
- package/tests/deps/replace-deps/replace-deps-setup.acc.spec.ts +156 -0
- package/tests/electron/electron.spec.ts +4 -1
- package/tests/engines/engine-adapter-isolation.spec.ts +5 -6
- package/tests/engines/engine-duplicate-output-removal.verify.md +10 -0
- package/tests/engines/esbuild-client-engine.acc.spec.ts +79 -0
- package/tests/engines/esbuild-client-engine.spec.ts +73 -3
- package/tests/esbuild/esbuild-angular-compiler-plugin-hmr.verify.md +23 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-onload.verify.md +21 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-onstart-extraction.verify.md +16 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-sdtscompiler.verify.md +15 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-stylesheet.verify.md +31 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin-worker.verify.md +31 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin.spec.ts +397 -0
- package/tests/esbuild/esbuild-angular-compiler-plugin.verify.md +21 -0
- package/tests/esbuild/esbuild-postcss-plugin-chunking.verify.md +17 -0
- package/tests/esbuild/esbuild-postcss-plugin.acc.spec.ts +152 -0
- package/tests/esbuild/esbuild-tsc-plugin-imports.verify.md +13 -0
- package/tests/esbuild/esbuild-tsc-plugin.acc.spec.ts +56 -111
- package/tests/esbuild/esbuild-tsc-plugin.spec.ts +116 -52
- package/tests/esbuild/file-reference-tracker.spec.ts +99 -0
- package/tests/esbuild/lmdb-cache-store.spec.ts +58 -0
- package/tests/esbuild/load-result-cache.acc.spec.ts +55 -0
- package/tests/esbuild/load-result-cache.spec.ts +133 -0
- package/tests/orchestrators/build-orchestrator.spec.ts +4 -3
- package/tests/orchestrators/dev-orchestrator.spec.ts +5 -5
- package/tests/orchestrators/slice1-stdout-to-consola.verify.md +10 -0
- package/tests/orchestrators/typecheck-orchestrator.spec.ts +1 -1
- package/tests/orchestrators/watch-orchestrator.spec.ts +7 -7
- package/tests/runtime/result-collector.spec.ts +64 -0
- package/tests/sd-cli-entry.spec.ts +3 -4
- package/tests/sd-cli-log-tag.verify.md +11 -0
- package/tests/ts-compiler/SdTsCompiler-affected-files.verify.md +8 -0
- package/tests/ts-compiler/SdTsCompiler-diagnostics.verify.md +12 -0
- package/tests/ts-compiler/SdTsCompiler-emit.verify.md +9 -0
- package/tests/ts-compiler/SdTsCompiler.acc.spec.ts +603 -0
- package/tests/ts-compiler/SdTsCompiler.spec.ts +265 -0
- package/tests/ts-compiler/SdTsCompiler.verify.md +41 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-browser.tsbuildinfo +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck-node.tsbuildinfo +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/.cache/typecheck.tsbuildinfo +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/src/index.ts +3 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/src/util.ts +3 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/tests/sample.test-file.ts +3 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/tsconfig.json +12 -0
- package/tests/ts-compiler/scss-lint-integration.verify.md +14 -0
- package/tests/utils/angular-build.spec.ts +1 -1
- package/tests/utils/copy-public-outdir.verify.md +8 -0
- package/tests/utils/copy-public.acc.spec.ts +52 -0
- package/tests/utils/copy-public.spec.ts +56 -0
- package/tests/utils/diagnostic-utils.spec.ts +24 -15
- package/tests/utils/engine-watch-events.acc.spec.ts +59 -0
- package/tests/utils/engine-watch-events.spec.ts +58 -0
- package/tests/utils/esbuild-client-config-integration.verify.md +9 -0
- package/tests/utils/esbuild-client-config.acc.spec.ts +45 -61
- package/tests/utils/esbuild-client-config.spec.ts +70 -52
- package/tests/utils/ngtsc-build-core-write-emit.spec.ts +136 -12
- package/tests/utils/ngtsc-build-core.spec.ts +1 -44
- package/tests/utils/output-utils.spec.ts +133 -13
- package/tests/utils/replace-deps-watch.acc.spec.ts +7 -1
- package/tests/utils/replace-deps-watch.spec.ts +57 -1
- package/tests/utils/worker-utils.spec.ts +8 -2
- package/tests/workers/client-worker-initial-build-error.verify.md +2 -3
- package/tests/workers/client-worker-initial-build-warnings.verify.md +7 -0
- package/tests/workers/client-worker-mtime-incremental.verify.md +10 -0
- package/tests/workers/client-worker-refactor.verify.md +22 -0
- package/tests/workers/client-worker-ts-cache-invalidation.verify.md +12 -0
- package/tests/workers/client-worker.acc.spec.ts +6 -3
- package/tests/workers/incremental-mtime-tracker.acc.spec.ts +144 -0
- package/tests/workers/incremental-mtime-tracker.spec.ts +102 -0
- package/tests/workers/library-build-lint.spec.ts +40 -45
- package/tests/workers/library-build-worker.spec.ts +298 -40
- package/tests/workers/server-build-lint.spec.ts +59 -45
- package/tests/workers/server-build-worker.spec.ts +63 -24
- package/tests/workers/server-esbuild-context.acc.spec.ts +2 -0
- package/tests/workers/server-esbuild-context.spec.ts +2 -0
- package/tests/workers/server-runtime-worker.spec.ts +1 -1
- package/tests/workers/shared-worker-lifecycle.acc.spec.ts +1 -1
- package/dist/angular/angular-build-pipeline.d.ts +0 -97
- package/dist/angular/angular-build-pipeline.d.ts.map +0 -1
- package/dist/angular/angular-build-pipeline.js +0 -285
- package/dist/angular/angular-build-pipeline.js.map +0 -1
- package/dist/utils/tsc-build.d.ts +0 -51
- package/dist/utils/tsc-build.d.ts.map +0 -1
- package/dist/utils/tsc-build.js +0 -156
- package/dist/utils/tsc-build.js.map +0 -1
- package/dist/workers/ngtsc-build.worker.d.ts +0 -23
- package/dist/workers/ngtsc-build.worker.d.ts.map +0 -1
- package/dist/workers/ngtsc-build.worker.js +0 -267
- package/dist/workers/ngtsc-build.worker.js.map +0 -1
- package/src/angular/angular-build-pipeline.ts +0 -406
- package/src/utils/tsc-build.ts +0 -226
- package/src/workers/ngtsc-build.worker.ts +0 -351
- package/tests/angular/angular-build-pipeline.spec.ts +0 -247
- package/tests/angular/angular-compiler-aot.acc.spec.ts +0 -68
- package/tests/angular/angular-compiler-aot.spec.ts +0 -80
- package/tests/utils/angular-compiler-emit.spec.ts +0 -666
- package/tests/utils/angular-compiler.spec.ts +0 -707
- package/tests/utils/tsc-build.spec.ts +0 -527
- package/tests/workers/ngtsc-build-lint.spec.ts +0 -141
- package/tests/workers/ngtsc-build-worker.spec.ts +0 -199
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# client.worker.ts startWatch 서브함수 추출 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
- [x] createSourceFileCachePlugin이 모듈 스코프에 존재하고 esbuild.Plugin을 반환한다: lines 192-250, `function createSourceFileCachePlugin(): esbuild.Plugin` 반환 타입 명시, `name: "sd-build-start"` 유지
|
|
6
|
+
- [x] createDevBuildEndHandler가 모듈 스코프에 존재하고 onEnd 콜백을 반환한다: lines 255-322, 반환 타입 `(result: esbuild.BuildResult) => Promise<void>`
|
|
7
|
+
- [x] startWatch에서 추출 함수를 호출한다: line 385 `plugins: [createSourceFileCachePlugin()]`, line 386 `onEnd: createDevBuildEndHandler(basePath, actualPort, outdir, entryNames, info.pkgDir)`
|
|
8
|
+
- [x] 파일 변경 감지 로직이 동일하다: createSourceFileCachePlugin onStart (lines 198-230) — watchFiles + typeScriptFileCache 순회, mtime 비교, invalidate 호출, buildStart 이벤트 전송 모두 원본과 동일
|
|
9
|
+
- [x] mtime 기록 로직이 동일하다: createSourceFileCachePlugin onEnd (lines 232-247) — prevMtimes.clear() + mtime 기록 원본과 동일
|
|
10
|
+
- [x] index.html 재생성 로직이 동일하다: createDevBuildEndHandler (lines 264-279) — lastMetafile 보관 + generateIndexHtml + writeFileSync 원본과 동일
|
|
11
|
+
- [x] HMR 디스패치 로직이 동일하다: lines 281-284, `hmrService.onBuildEnd(result.metafile)` 조건부 호출 원본과 동일
|
|
12
|
+
- [x] build 이벤트 전송 로직이 동일하다: lines 286-300, `sender.send("build", ...)` 조건부 호출 원본과 동일
|
|
13
|
+
- [x] 초기 빌드 resolve 로직이 동일하다: lines 302-312, `isInitialBuild = false` + `initialBuildResolve?.()` 원본과 동일
|
|
14
|
+
- [x] 에러 핸들링 로직이 동일하다: lines 313-320, catch 블록 원본과 동일
|
|
15
|
+
- [x] 외부 인터페이스가 변경되지 않았다: export는 `export default sender`만 존재 (line 501), ClientBuildInfo/ClientBuildResult/ClientWorkerEvents 타입 변경 없음
|
|
16
|
+
- [x] build 함수가 변경되지 않았다: lines 96-187, 원본과 동일
|
|
17
|
+
- [x] stopWatch에 리셋 로직이 추가되었다: lines 472-475, `lastMetafile = undefined`, `isInitialBuild = true`, `initialBuildResolve = undefined`
|
|
18
|
+
- [x] stopWatch 기존 정리 로직이 변경되지 않았다: lines 439-470, 5단계 정리(esbuild dispose, HMR 종료, HTTP 종료, public 감시 종료, index.html 감시 종료) 원본과 동일
|
|
19
|
+
- [x] 모듈 스코프 변수가 올바르게 선언되었다: lines 67-69, 기존 변수(62-66) 바로 아래 배치
|
|
20
|
+
- [x] startWatch가 ~110줄로 축소되었다: lines 327-434 = 107줄 (목표 ~110줄 달성)
|
|
21
|
+
- [x] index.html watcher에서 lastMetafile 접근이 정상 동작한다: line 400, `if (lastMetafile == null) return;` — 모듈 스코프 변수로 접근
|
|
22
|
+
- [x] 기존 테스트 6개 전부 통과: client-worker.spec.ts (3), client-worker.acc.spec.ts (3) — 회귀 없음
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# sd-build-start 플러그인 TypeScript 파일 감시 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
- [x] onStart에서 `typeScriptFileCache.keys()`가 watchTargets에 포함: `client.worker.ts:266` — `...typeScriptFileCache.keys()`가 `watchTargets` 배열에 spread되어 포함됨
|
|
6
|
+
- [x] onStart에서 `loadResultCache.watchFiles`도 여전히 watchTargets에 포함: `client.worker.ts:265` — `...loadResultCache.watchFiles`가 첫 번째로 spread됨 (기존 JS 동작 보존)
|
|
7
|
+
- [x] onStart에서 watchTargets의 각 파일에 대해 mtime 비교 수행: `client.worker.ts:268-279` — `for (const file of watchTargets)` 루프에서 `fs.statSync(file).mtimeMs`와 `prevMtimes.get(file)` 비교
|
|
8
|
+
- [x] 초기 빌드 직후 prevMtimes가 비어있으면 mtime 비교 스킵: `client.worker.ts:271-273` — `prev != null` 조건에 의해 `prevMtimes`에 없는 파일은 `changedFiles`에 추가되지 않음
|
|
9
|
+
- [x] onEnd에서 `typeScriptFileCache.keys()`가 prevMtimes 기록 대상에 포함: `client.worker.ts:297` — `...esbuildResult.sourceFileCache.typeScriptFileCache.keys()`가 watchTargets에 spread됨
|
|
10
|
+
- [x] onEnd에서 `loadResultCache.watchFiles`도 여전히 prevMtimes 기록 대상에 포함: `client.worker.ts:296` — `...esbuildResult.sourceFileCache.loadResultCache.watchFiles`가 첫 번째로 spread됨
|
|
11
|
+
- [x] `typeScriptFileCache`가 `sourceFileCache`에서 destructuring으로 접근: `client.worker.ts:260` — `const { loadResultCache, typeScriptFileCache } = esbuildResult.sourceFileCache;` SourceFileCache의 public 속성 (`source-file-cache.js:52`)
|
|
12
|
+
- [x] 삭제된 TS 파일에 대한 catch 처리: `client.worker.ts:275-279` — `catch` 블록에서 `prevMtimes.has(file)`인 경우 `changedFiles`에 추가 (기존 로직 동일)
|
|
@@ -122,10 +122,12 @@ describe("client.worker build() — Acceptance", () => {
|
|
|
122
122
|
const result = await workerFns["build"](baseBuildInfo);
|
|
123
123
|
|
|
124
124
|
expect(result.success).toBe(false);
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
// formatEsbuildMessages가 ANSI 색상 코드를 포함하므로 부분 문자열 매칭
|
|
126
|
+
const errorsJoined = result.errors!.join("\n");
|
|
127
|
+
expect(errorsJoined).toContain("Could not resolve 'missing-module'");
|
|
128
|
+
expect(errorsJoined).toContain("Syntax error in file.ts");
|
|
127
129
|
// 요약 메시지("Build failed with 2 errors")가 아닌 상세 에러만 포함
|
|
128
|
-
expect(
|
|
130
|
+
expect(errorsJoined).not.toContain("Build failed with 2 errors");
|
|
129
131
|
});
|
|
130
132
|
|
|
131
133
|
// Scenario: 일반 Error 발생 시 기존 폴백이 동작한다
|
|
@@ -183,3 +185,4 @@ describe("client.worker build() — browserSupport 전달", () => {
|
|
|
183
185
|
);
|
|
184
186
|
});
|
|
185
187
|
});
|
|
188
|
+
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { IncrementalMtimeTracker } from "../../src/workers/incremental-mtime-tracker";
|
|
6
|
+
|
|
7
|
+
describe("IncrementalMtimeTracker — Acceptance", () => {
|
|
8
|
+
let tmpDir: string;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "mtime-acc-"));
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
function createFile(name: string): string {
|
|
19
|
+
const filePath = path.join(tmpDir, name);
|
|
20
|
+
fs.writeFileSync(filePath, `content-${name}`, "utf-8");
|
|
21
|
+
return filePath;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function touchFile(filePath: string): void {
|
|
25
|
+
const stat = fs.statSync(filePath);
|
|
26
|
+
const newTime = stat.mtimeMs / 1000 + 2;
|
|
27
|
+
fs.utimesSync(filePath, newTime, newTime);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Scenario: 변경된 파일만 mtime 갱신
|
|
31
|
+
it("onEnd에서 변경된 파일만 stat 호출한다", () => {
|
|
32
|
+
const tracker = new IncrementalMtimeTracker();
|
|
33
|
+
const fileA = createFile("a.ts");
|
|
34
|
+
const fileB = createFile("b.ts");
|
|
35
|
+
const fileC = createFile("c.ts");
|
|
36
|
+
const targets = [fileA, fileB, fileC];
|
|
37
|
+
|
|
38
|
+
// 초기 빌드: prevMtimes 채우기
|
|
39
|
+
tracker.updateMtimes(targets);
|
|
40
|
+
|
|
41
|
+
// 파일 A 변경
|
|
42
|
+
touchFile(fileA);
|
|
43
|
+
|
|
44
|
+
// onStart: 변경 감지
|
|
45
|
+
const changed = tracker.detectChanges(targets);
|
|
46
|
+
expect(changed.size).toBe(1);
|
|
47
|
+
expect(changed.has(fileA)).toBe(true);
|
|
48
|
+
|
|
49
|
+
// onEnd: 증분 갱신 — 변경된 A만 stat
|
|
50
|
+
const spy = vi.spyOn(fs, "statSync");
|
|
51
|
+
tracker.updateMtimes(targets);
|
|
52
|
+
const statPaths = spy.mock.calls.map((c) => c[0]);
|
|
53
|
+
expect(statPaths).toContain(fileA);
|
|
54
|
+
expect(statPaths).not.toContain(fileB);
|
|
55
|
+
expect(statPaths).not.toContain(fileC);
|
|
56
|
+
spy.mockRestore();
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// Scenario: 새로 추가된 파일만 stat 호출
|
|
60
|
+
it("onEnd에서 새로 추가된 파일만 stat 호출한다", () => {
|
|
61
|
+
const tracker = new IncrementalMtimeTracker();
|
|
62
|
+
const fileA = createFile("a.ts");
|
|
63
|
+
const fileB = createFile("b.ts");
|
|
64
|
+
|
|
65
|
+
tracker.updateMtimes([fileA, fileB]);
|
|
66
|
+
|
|
67
|
+
const fileC = createFile("c.ts");
|
|
68
|
+
tracker.detectChanges([fileA, fileB, fileC]);
|
|
69
|
+
|
|
70
|
+
const spy = vi.spyOn(fs, "statSync");
|
|
71
|
+
tracker.updateMtimes([fileA, fileB, fileC]);
|
|
72
|
+
const statPaths = spy.mock.calls.map((c) => c[0]);
|
|
73
|
+
expect(statPaths).toEqual([fileC]);
|
|
74
|
+
spy.mockRestore();
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
// Scenario: 변경도 신규도 없으면 stat 호출 0회
|
|
78
|
+
it("변경도 신규도 없으면 onEnd에서 stat 호출이 0회이다", () => {
|
|
79
|
+
const tracker = new IncrementalMtimeTracker();
|
|
80
|
+
const fileA = createFile("a.ts");
|
|
81
|
+
const fileB = createFile("b.ts");
|
|
82
|
+
|
|
83
|
+
tracker.updateMtimes([fileA, fileB]);
|
|
84
|
+
tracker.detectChanges([fileA, fileB]);
|
|
85
|
+
|
|
86
|
+
const spy = vi.spyOn(fs, "statSync");
|
|
87
|
+
tracker.updateMtimes([fileA, fileB]);
|
|
88
|
+
expect(spy.mock.calls).toHaveLength(0);
|
|
89
|
+
spy.mockRestore();
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
// Scenario: 삭제된 파일이 prevMtimes에서 제거된다
|
|
93
|
+
it("삭제된 파일은 이후 빌드에서 변경으로 감지되지 않는다", () => {
|
|
94
|
+
const tracker = new IncrementalMtimeTracker();
|
|
95
|
+
const fileA = createFile("a.ts");
|
|
96
|
+
const fileB = createFile("b.ts");
|
|
97
|
+
|
|
98
|
+
tracker.updateMtimes([fileA, fileB]);
|
|
99
|
+
|
|
100
|
+
// fileB를 watchTargets에서 제거
|
|
101
|
+
tracker.detectChanges([fileA]);
|
|
102
|
+
tracker.updateMtimes([fileA]);
|
|
103
|
+
|
|
104
|
+
// fileB를 다시 추가 — "신규" 파일이므로 changedFiles에 포함되지 않음
|
|
105
|
+
const changed = tracker.detectChanges([fileA, fileB]);
|
|
106
|
+
expect(changed.has(fileB)).toBe(false);
|
|
107
|
+
});
|
|
108
|
+
|
|
109
|
+
// Scenario: mtime 변경된 파일이 changedFiles에 포함된다
|
|
110
|
+
it("mtime이 변경된 파일이 changedFiles에 포함된다", () => {
|
|
111
|
+
const tracker = new IncrementalMtimeTracker();
|
|
112
|
+
const fileA = createFile("a.ts");
|
|
113
|
+
|
|
114
|
+
tracker.updateMtimes([fileA]);
|
|
115
|
+
touchFile(fileA);
|
|
116
|
+
|
|
117
|
+
const changed = tracker.detectChanges([fileA]);
|
|
118
|
+
expect(changed.has(fileA)).toBe(true);
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
// Scenario: 삭제된 파일이 changedFiles에 포함된다
|
|
122
|
+
it("삭제된 파일이 changedFiles에 포함된다", () => {
|
|
123
|
+
const tracker = new IncrementalMtimeTracker();
|
|
124
|
+
const fileA = createFile("a.ts");
|
|
125
|
+
|
|
126
|
+
tracker.updateMtimes([fileA]);
|
|
127
|
+
fs.unlinkSync(fileA);
|
|
128
|
+
|
|
129
|
+
const changed = tracker.detectChanges([fileA]);
|
|
130
|
+
expect(changed.has(fileA)).toBe(true);
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
// Scenario: 신규 파일은 changedFiles에 포함되지 않는다
|
|
134
|
+
it("신규 파일은 changedFiles에 포함되지 않는다", () => {
|
|
135
|
+
const tracker = new IncrementalMtimeTracker();
|
|
136
|
+
const fileA = createFile("a.ts");
|
|
137
|
+
|
|
138
|
+
tracker.updateMtimes([fileA]);
|
|
139
|
+
|
|
140
|
+
const fileB = createFile("b.ts");
|
|
141
|
+
const changed = tracker.detectChanges([fileA, fileB]);
|
|
142
|
+
expect(changed.has(fileB)).toBe(false);
|
|
143
|
+
});
|
|
144
|
+
});
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import os from "node:os";
|
|
4
|
+
import path from "node:path";
|
|
5
|
+
import { IncrementalMtimeTracker } from "../../src/workers/incremental-mtime-tracker";
|
|
6
|
+
|
|
7
|
+
describe("IncrementalMtimeTracker", () => {
|
|
8
|
+
let tmpDir: string;
|
|
9
|
+
|
|
10
|
+
beforeEach(() => {
|
|
11
|
+
tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), "mtime-unit-"));
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
afterEach(() => {
|
|
15
|
+
fs.rmSync(tmpDir, { recursive: true, force: true });
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
function createFile(name: string): string {
|
|
19
|
+
const filePath = path.join(tmpDir, name);
|
|
20
|
+
fs.writeFileSync(filePath, name, "utf-8");
|
|
21
|
+
return filePath;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
it("빈 watchTargets로 detectChanges하면 빈 Set을 반환한다", () => {
|
|
25
|
+
const tracker = new IncrementalMtimeTracker();
|
|
26
|
+
const changed = tracker.detectChanges([]);
|
|
27
|
+
expect(changed.size).toBe(0);
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
it("빈 watchTargets로 updateMtimes하면 stat 호출이 없다", () => {
|
|
31
|
+
const tracker = new IncrementalMtimeTracker();
|
|
32
|
+
const spy = vi.spyOn(fs, "statSync");
|
|
33
|
+
tracker.updateMtimes([]);
|
|
34
|
+
expect(spy.mock.calls).toHaveLength(0);
|
|
35
|
+
spy.mockRestore();
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
it("모든 파일이 watchTargets에서 제거되면 이후 detectChanges에서 감지되지 않는다", () => {
|
|
39
|
+
const tracker = new IncrementalMtimeTracker();
|
|
40
|
+
const fileA = createFile("a.ts");
|
|
41
|
+
const fileB = createFile("b.ts");
|
|
42
|
+
|
|
43
|
+
tracker.updateMtimes([fileA, fileB]);
|
|
44
|
+
|
|
45
|
+
// 모든 파일 제거
|
|
46
|
+
tracker.detectChanges([]);
|
|
47
|
+
tracker.updateMtimes([]);
|
|
48
|
+
|
|
49
|
+
// 다시 추가 — "신규"로 취급
|
|
50
|
+
const changed = tracker.detectChanges([fileA]);
|
|
51
|
+
expect(changed.has(fileA)).toBe(false);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
it("동일 파일이 watchTargets에 중복되어도 정상 동작한다", () => {
|
|
55
|
+
const tracker = new IncrementalMtimeTracker();
|
|
56
|
+
const fileA = createFile("a.ts");
|
|
57
|
+
|
|
58
|
+
tracker.updateMtimes([fileA, fileA]);
|
|
59
|
+
|
|
60
|
+
const changed = tracker.detectChanges([fileA]);
|
|
61
|
+
expect(changed.size).toBe(0);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
it("detectChanges 없이 연속 updateMtimes를 호출하면 모두 신규로 처리된다", () => {
|
|
65
|
+
const tracker = new IncrementalMtimeTracker();
|
|
66
|
+
const fileA = createFile("a.ts");
|
|
67
|
+
|
|
68
|
+
const spy = vi.spyOn(fs, "statSync");
|
|
69
|
+
tracker.updateMtimes([fileA]);
|
|
70
|
+
expect(spy.mock.calls).toHaveLength(1);
|
|
71
|
+
spy.mockRestore();
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
it("존재하지 않는 파일은 detectChanges에서 prevMtimes에 없으면 무시된다", () => {
|
|
75
|
+
const tracker = new IncrementalMtimeTracker();
|
|
76
|
+
const nonExistent = path.join(tmpDir, "ghost.ts");
|
|
77
|
+
|
|
78
|
+
const changed = tracker.detectChanges([nonExistent]);
|
|
79
|
+
expect(changed.size).toBe(0);
|
|
80
|
+
});
|
|
81
|
+
|
|
82
|
+
it("updateMtimes 중 stat이 실패하는 변경 파일은 prevMtimes에서 제거된다", () => {
|
|
83
|
+
const tracker = new IncrementalMtimeTracker();
|
|
84
|
+
const fileA = createFile("a.ts");
|
|
85
|
+
|
|
86
|
+
tracker.updateMtimes([fileA]);
|
|
87
|
+
|
|
88
|
+
// 파일 삭제 후 detectChanges — changedFiles에 포함
|
|
89
|
+
fs.unlinkSync(fileA);
|
|
90
|
+
tracker.detectChanges([fileA]);
|
|
91
|
+
|
|
92
|
+
// updateMtimes — stat 실패 → prevMtimes에서 제거
|
|
93
|
+
tracker.updateMtimes([fileA]);
|
|
94
|
+
|
|
95
|
+
// 파일 재생성
|
|
96
|
+
const fileANew = createFile("a.ts");
|
|
97
|
+
|
|
98
|
+
// 다음 detectChanges — "신규"로 취급 (prevMtimes에 없으므로)
|
|
99
|
+
const changed = tracker.detectChanges([fileANew]);
|
|
100
|
+
expect(changed.has(fileANew)).toBe(false);
|
|
101
|
+
});
|
|
102
|
+
});
|
|
@@ -1,41 +1,24 @@
|
|
|
1
1
|
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
|
-
import * as tscBuildModule from "../../src/utils/tsc-build";
|
|
3
2
|
|
|
4
3
|
// --- Mocks ---
|
|
5
4
|
|
|
6
|
-
const {
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
warningCount: 0,
|
|
11
|
-
formattedOutput: "",
|
|
5
|
+
const { mockCompileAsync, MockSdTsCompiler } = vi.hoisted(() => {
|
|
6
|
+
const compileAsync = vi.fn();
|
|
7
|
+
const Compiler = vi.fn().mockImplementation(function () {
|
|
8
|
+
return { compileAsync };
|
|
12
9
|
});
|
|
13
|
-
|
|
14
|
-
return { lint: lintFn };
|
|
15
|
-
});
|
|
16
|
-
return { mockLintFn: lintFn, MockLintWithProgramRunner: RunnerCls };
|
|
10
|
+
return { mockCompileAsync: compileAsync, MockSdTsCompiler: Compiler };
|
|
17
11
|
});
|
|
18
12
|
|
|
19
|
-
vi.mock("../../src/
|
|
20
|
-
|
|
13
|
+
vi.mock("../../src/ts-compiler/SdTsCompiler", () => ({
|
|
14
|
+
SdTsCompiler: MockSdTsCompiler,
|
|
21
15
|
}));
|
|
22
16
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
warningCount: 0,
|
|
29
|
-
program: { getSourceFiles: () => [] },
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
const runTscSpy = vi.spyOn(tscBuildModule, "runTscPackageBuild")
|
|
33
|
-
.mockReturnValue(mockTscResult as any);
|
|
34
|
-
|
|
35
|
-
vi.mock("../../src/runtime/worker-utils", () => ({
|
|
36
|
-
registerCleanupHandlers: vi.fn(),
|
|
37
|
-
createOnceGuard: vi.fn(() => vi.fn()),
|
|
38
|
-
setupWorkerConsola: vi.fn(),
|
|
17
|
+
vi.mock("../../src/workers/shared-worker-lifecycle", () => ({
|
|
18
|
+
setupWorkerLifecycle: vi.fn(() => ({
|
|
19
|
+
logger: { debug: vi.fn(), warn: vi.fn() },
|
|
20
|
+
guardStartWatch: vi.fn(),
|
|
21
|
+
})),
|
|
39
22
|
}));
|
|
40
23
|
|
|
41
24
|
vi.mock("@simplysm/core-node", () => ({
|
|
@@ -52,6 +35,21 @@ vi.mock("../../src/deps/replace-deps/collect-deps", () => ({
|
|
|
52
35
|
collectDeps: vi.fn(() => ({ workspaceDeps: [], replaceDeps: [] })),
|
|
53
36
|
}));
|
|
54
37
|
|
|
38
|
+
const defaultCompileResult = {
|
|
39
|
+
program: { getSourceFiles: () => [] },
|
|
40
|
+
builderProgram: {},
|
|
41
|
+
isForAngular: false,
|
|
42
|
+
affectedFiles: new Set<string>(),
|
|
43
|
+
diagnostics: [] as any[],
|
|
44
|
+
errorCount: 0,
|
|
45
|
+
warningCount: 0,
|
|
46
|
+
errors: undefined as string[] | undefined,
|
|
47
|
+
emitResults: undefined,
|
|
48
|
+
lint: undefined as any,
|
|
49
|
+
scssErrors: [] as string[],
|
|
50
|
+
scssDependencies: new Map<string, Set<string>>(),
|
|
51
|
+
};
|
|
52
|
+
|
|
55
53
|
const workerMethods: Record<string, Function> = {};
|
|
56
54
|
|
|
57
55
|
await import("../../src/workers/library-build.worker");
|
|
@@ -60,33 +58,31 @@ await import("../../src/workers/library-build.worker");
|
|
|
60
58
|
|
|
61
59
|
beforeEach(() => {
|
|
62
60
|
vi.clearAllMocks();
|
|
63
|
-
|
|
64
|
-
mockLintFn.mockResolvedValue({
|
|
65
|
-
success: true,
|
|
66
|
-
errorCount: 0,
|
|
67
|
-
warningCount: 0,
|
|
68
|
-
formattedOutput: "",
|
|
69
|
-
});
|
|
70
|
-
mockTscResult.program = { getSourceFiles: () => [] } as any;
|
|
61
|
+
mockCompileAsync.mockResolvedValue({ ...defaultCompileResult });
|
|
71
62
|
});
|
|
72
63
|
|
|
73
64
|
describe("library-build.worker lint integration (Slice 3)", () => {
|
|
74
65
|
describe("Scenario: library-build.worker runs lint after typecheck", () => {
|
|
75
66
|
it("returns lint result in build output when lint is enabled", async () => {
|
|
67
|
+
const lintResult = {
|
|
68
|
+
success: true,
|
|
69
|
+
errorCount: 0,
|
|
70
|
+
warningCount: 0,
|
|
71
|
+
formattedOutput: "",
|
|
72
|
+
};
|
|
73
|
+
mockCompileAsync.mockResolvedValueOnce({
|
|
74
|
+
...defaultCompileResult,
|
|
75
|
+
lint: lintResult,
|
|
76
|
+
});
|
|
77
|
+
|
|
76
78
|
const result = await workerMethods["build"]({
|
|
77
79
|
name: "my-lib",
|
|
78
|
-
config: { target: "node" },
|
|
79
80
|
cwd: "/workspace",
|
|
80
81
|
pkgDir: "/workspace/packages/my-lib",
|
|
81
82
|
output: { js: true, dts: true, lint: true },
|
|
82
83
|
});
|
|
83
84
|
|
|
84
|
-
expect(result.lint).toEqual(
|
|
85
|
-
success: true,
|
|
86
|
-
errorCount: 0,
|
|
87
|
-
warningCount: 0,
|
|
88
|
-
formattedOutput: "",
|
|
89
|
-
});
|
|
85
|
+
expect(result.lint).toEqual(lintResult);
|
|
90
86
|
});
|
|
91
87
|
});
|
|
92
88
|
|
|
@@ -94,7 +90,6 @@ describe("library-build.worker lint integration (Slice 3)", () => {
|
|
|
94
90
|
it("does not run lint when output.lint is false", async () => {
|
|
95
91
|
const result = await workerMethods["build"]({
|
|
96
92
|
name: "my-lib",
|
|
97
|
-
config: { target: "node" },
|
|
98
93
|
cwd: "/workspace",
|
|
99
94
|
pkgDir: "/workspace/packages/my-lib",
|
|
100
95
|
output: { js: true, dts: true },
|