@simplysm/sd-cli 14.0.41 → 14.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +29 -34
- package/dist/angular/ngtsc-build-core.d.ts.map +1 -1
- package/dist/angular/ngtsc-build-core.js +90 -51
- 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.js +1 -1
- 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.d.ts +21 -3
- package/dist/deps/replace-deps/replace-deps.d.ts.map +1 -1
- package/dist/deps/replace-deps/replace-deps.js +107 -62
- 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-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 +136 -110
- package/dist/workers/client.worker.js.map +1 -1
- 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 +147 -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 +7 -6
- package/src/angular/angular-compiler.ts +0 -502
- package/src/angular/hmr-candidates.ts +295 -0
- package/src/angular/ngtsc-build-core.ts +125 -92
- 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 +1 -1
- 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.ts +114 -66
- 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-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 +160 -126
- package/src/workers/library-build.worker.ts +187 -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/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/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-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-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/dist/index.d.ts +2 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.d.ts.map +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.js +4 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/index.js.map +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.d.ts +2 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.d.ts.map +1 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.js +4 -0
- package/tests/ts-compiler/fixtures/non-angular-pkg/dist/util.js.map +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 +12 -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-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/library-build-lint.spec.ts +40 -45
- package/tests/workers/library-build-worker.spec.ts +294 -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
|
@@ -17,7 +17,13 @@ describe("watchReplaceDeps onChanged", () => {
|
|
|
17
17
|
tmpDir = await fs.promises.mkdtemp(path.join(os.tmpdir(), "sd-replace-deps-unit-"));
|
|
18
18
|
|
|
19
19
|
// 소스 패키지 생성
|
|
20
|
-
const
|
|
20
|
+
const sourcePkg = path.join(tmpDir, "source-pkg");
|
|
21
|
+
await fs.promises.mkdir(sourcePkg, { recursive: true });
|
|
22
|
+
await fs.promises.writeFile(
|
|
23
|
+
path.join(sourcePkg, "package.json"),
|
|
24
|
+
JSON.stringify({ name: "@test/pkg", files: ["src"] }),
|
|
25
|
+
);
|
|
26
|
+
const sourceDir = path.join(sourcePkg, "src");
|
|
21
27
|
await fs.promises.mkdir(sourceDir, { recursive: true });
|
|
22
28
|
await fs.promises.writeFile(path.join(sourceDir, "index.ts"), "export const v = 1;");
|
|
23
29
|
|
|
@@ -75,6 +81,56 @@ describe("watchReplaceDeps onChanged", () => {
|
|
|
75
81
|
expect(callCount).toBe(1);
|
|
76
82
|
}, 10_000);
|
|
77
83
|
|
|
84
|
+
it("files에 없는 파일의 변경은 감지되지 않는다", async () => {
|
|
85
|
+
const projectRoot = path.join(tmpDir, "project");
|
|
86
|
+
const sourcePath = path.join(tmpDir, "source-pkg");
|
|
87
|
+
|
|
88
|
+
// files에 없는 파일 생성
|
|
89
|
+
await fs.promises.writeFile(path.join(sourcePath, "tsconfig.json"), "{}");
|
|
90
|
+
|
|
91
|
+
let callCount = 0;
|
|
92
|
+
|
|
93
|
+
watchResult = await watchReplaceDeps(projectRoot, { "@test/pkg": sourcePath }, {
|
|
94
|
+
onChanged: () => {
|
|
95
|
+
callCount++;
|
|
96
|
+
},
|
|
97
|
+
});
|
|
98
|
+
|
|
99
|
+
// files에 없는 파일 변경
|
|
100
|
+
await fs.promises.writeFile(path.join(sourcePath, "tsconfig.json"), '{"strict": true}');
|
|
101
|
+
|
|
102
|
+
// 충분한 대기 시간 (300ms 배칭 + 여유)
|
|
103
|
+
await new Promise((r) => setTimeout(r, 1500));
|
|
104
|
+
|
|
105
|
+
// files에 없으므로 감지되지 않음
|
|
106
|
+
expect(callCount).toBe(0);
|
|
107
|
+
}, 10_000);
|
|
108
|
+
|
|
109
|
+
it("npm 기본 파일(README.md) 변경이 감지된다", async () => {
|
|
110
|
+
const projectRoot = path.join(tmpDir, "project");
|
|
111
|
+
const sourcePath = path.join(tmpDir, "source-pkg");
|
|
112
|
+
|
|
113
|
+
// 소스에 README.md 생성
|
|
114
|
+
await fs.promises.writeFile(path.join(sourcePath, "README.md"), "# README v1");
|
|
115
|
+
|
|
116
|
+
let resolveChanged: () => void;
|
|
117
|
+
const changedPromise = new Promise<void>((resolve) => {
|
|
118
|
+
resolveChanged = resolve;
|
|
119
|
+
});
|
|
120
|
+
|
|
121
|
+
watchResult = await watchReplaceDeps(projectRoot, { "@test/pkg": sourcePath }, {
|
|
122
|
+
onChanged: () => {
|
|
123
|
+
resolveChanged();
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
|
|
127
|
+
// README.md 변경
|
|
128
|
+
await fs.promises.writeFile(path.join(sourcePath, "README.md"), "# README v2");
|
|
129
|
+
|
|
130
|
+
// 콜백 호출 대기
|
|
131
|
+
await changedPromise;
|
|
132
|
+
}, 10_000);
|
|
133
|
+
|
|
78
134
|
it("options 파라미터가 undefined일 때 에러가 발생하지 않는다", async () => {
|
|
79
135
|
const projectRoot = path.join(tmpDir, "project");
|
|
80
136
|
const sourcePath = path.join(tmpDir, "source-pkg");
|
|
@@ -11,7 +11,7 @@ describe("setupWorkerConsola", () => {
|
|
|
11
11
|
afterEach(() => {
|
|
12
12
|
consola.level = originalLevel;
|
|
13
13
|
consola.options.reporters = originalReporters;
|
|
14
|
-
if (originalEnv
|
|
14
|
+
if (originalEnv == null) {
|
|
15
15
|
delete process.env["SD_DEBUG"];
|
|
16
16
|
} else {
|
|
17
17
|
process.env["SD_DEBUG"] = originalEnv;
|
|
@@ -40,7 +40,13 @@ describe("createOnceGuard", () => {
|
|
|
40
40
|
it("throws on second call", () => {
|
|
41
41
|
const guard = createOnceGuard("startWatch");
|
|
42
42
|
guard();
|
|
43
|
-
expect(() => guard()).toThrow("
|
|
43
|
+
expect(() => guard()).toThrow("Worker당 한 번만 호출할 수 있습니다: startWatch");
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
it("includes the label in Korean error message", () => {
|
|
47
|
+
const guard = createOnceGuard("myFunction");
|
|
48
|
+
guard();
|
|
49
|
+
expect(() => guard()).toThrow("Worker당 한 번만 호출할 수 있습니다: myFunction");
|
|
44
50
|
});
|
|
45
51
|
});
|
|
46
52
|
|
|
@@ -3,6 +3,5 @@
|
|
|
3
3
|
## 검증 항목
|
|
4
4
|
|
|
5
5
|
- [x] client.worker.ts onEnd에서 초기 빌드 시 errors 필드가 포함되는지: `client.worker.ts:285-291` — `initialBuildResolve`에 `errors: result.errors.map((e) => e.text)` 포함 확인
|
|
6
|
-
- [x] EsbuildClientEngine.startWatch에서 반환값의 success 확인 후
|
|
7
|
-
- [x] esbuild-client-config.ts에서
|
|
8
|
-
- [x] esbuild-client-config.ts에서 build 모드 logLevel이 "silent"인지: 동일 라인 — 삼항 연산자의 false 분기가 `"silent"` 확인
|
|
6
|
+
- [x] EsbuildClientEngine.startWatch에서 반환값의 success 확인 후 ResultCollector에 보고하는지: `EsbuildClientEngine.ts:129-138` — `!result.success` 조건으로 `resultCollector.add()` 호출 확인. logger.error는 Feature 1.2에서 제거됨 (중복 출력 방지)
|
|
7
|
+
- [x] esbuild-client-config.ts에서 logLevel이 "silent"인지: `esbuild-client-config.ts:191` — `logLevel: "silent"` 확인. Feature 1.2에서 dev/build 모두 "silent"로 통일됨
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
# 초기 빌드 warnings 전달 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
- [x] 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
|
+
- [x] warnings가 없을 때 undefined인지: `client.worker.ts:312-314` — `result.warnings.length > 0` 조건으로 빈 배열일 때 undefined 반환 확인
|
|
7
|
+
- [x] ClientBuildResult 인터페이스에 warnings 필드가 있는지: `client.worker.ts:47` — `warnings?: string[]` 확인. 변경 불필요
|
|
@@ -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
|
+
|
|
@@ -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 },
|