@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
|
@@ -49,7 +49,6 @@ describe("NgtscEngine adapter isolation", () => {
|
|
|
49
49
|
|
|
50
50
|
const filesToCheck = [
|
|
51
51
|
path.join(sdCliSrc, "engines", "NgtscEngine.ts"),
|
|
52
|
-
path.join(sdCliSrc, "workers", "ngtsc-build.worker.ts"),
|
|
53
52
|
path.join(sdCliSrc, "angular", "ngtsc-build-core.ts"),
|
|
54
53
|
path.join(sdCliSrc, "utils", "output-path-rewriter.ts"),
|
|
55
54
|
];
|
|
@@ -68,13 +67,13 @@ describe("NgtscEngine adapter isolation", () => {
|
|
|
68
67
|
|
|
69
68
|
it("all Angular API access goes through angular-compiler.ts adapter", () => {
|
|
70
69
|
|
|
71
|
-
// Angular API 접근은
|
|
72
|
-
const
|
|
70
|
+
// Angular API 접근은 ngtsc-build-core.ts → angular-compiler.ts 또는 SdTsCompiler → angular-compiler.ts로 이루어진다
|
|
71
|
+
const compilerFile = path.resolve(
|
|
73
72
|
import.meta.dirname,
|
|
74
|
-
"../../src/
|
|
73
|
+
"../../src/ts-compiler/SdTsCompiler.ts",
|
|
75
74
|
);
|
|
76
|
-
const content = fs.readFileSync(
|
|
75
|
+
const content = fs.readFileSync(compilerFile, "utf-8");
|
|
77
76
|
|
|
78
|
-
expect(content).toContain("
|
|
77
|
+
expect(content).toContain("angular-compiler");
|
|
79
78
|
});
|
|
80
79
|
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# 엔진별 중복 출력 제거 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
- [x] esbuild-client-config.ts logLevel이 모든 모드에서 "silent"인지: `esbuild-client-config.ts:191` — `logLevel: "silent"` 확인. 기존 `isDev ? "warning" : "silent"` 삼항 연산자 제거됨
|
|
6
|
+
- [x] EsbuildClientEngine에 중복 error 핸들러가 없는지: `EsbuildClientEngine.ts:103-110` — setupWatchEvents만 error 이벤트 처리. 기존 `worker.on("error", ...)` 핸들러(logger.error 호출) 제거됨
|
|
7
|
+
- [x] EsbuildClientEngine 초기 빌드 실패 시 logger.error 미호출: `EsbuildClientEngine.ts:129-138` — `!result.success` 분기에서 `resultCollector.add()`만 호출. logger.error 줄 제거됨
|
|
8
|
+
- [x] BaseEngine에 logger.warn() 블록이 없는지: `BaseEngine.ts:166-180` — build 이벤트 핸들러에 lint 결과 보고만 존재. warnings에 대한 logger.warn() 블록 제거됨
|
|
9
|
+
- [x] BaseEngine startWatch 실패 시 logger.debug 사용: `BaseEngine.ts:182-183` — `logger.debug(...)` 확인. 기존 `logger.error(...)` → `logger.debug(...)` 변경됨
|
|
10
|
+
- [x] BaseEngine lint 결과 보고 로직 유지: `BaseEngine.ts:170-179` — `event.lint != null` 조건의 ResultCollector 보고 로직이 그대로 유지됨
|
|
@@ -163,6 +163,85 @@ describe("EsbuildClientEngine Acceptance", () => {
|
|
|
163
163
|
await engine.stop();
|
|
164
164
|
});
|
|
165
165
|
|
|
166
|
+
//#region Feature 2.1: 초기 빌드 warnings → ResultCollector
|
|
167
|
+
|
|
168
|
+
it("초기 빌드 성공 + warnings → ResultCollector에 success + warnings 저장", async () => {
|
|
169
|
+
const mockResultCollector = { add: vi.fn() };
|
|
170
|
+
|
|
171
|
+
mockWorker.startWatch.mockResolvedValue({
|
|
172
|
+
success: true,
|
|
173
|
+
warnings: ["unused variable"],
|
|
174
|
+
});
|
|
175
|
+
|
|
176
|
+
const engine = new EsbuildClientEngine({
|
|
177
|
+
cwd: "/root",
|
|
178
|
+
pkg: createMockPkg(),
|
|
179
|
+
resultCollector: mockResultCollector as any,
|
|
180
|
+
});
|
|
181
|
+
|
|
182
|
+
await engine.startWatch({ js: true, dts: false });
|
|
183
|
+
|
|
184
|
+
const warningReport = mockResultCollector.add.mock.calls.find(
|
|
185
|
+
(c: any[]) => c[0].type === "build" && c[0].warnings != null,
|
|
186
|
+
);
|
|
187
|
+
expect(warningReport).toBeDefined();
|
|
188
|
+
expect(warningReport![0].status).toBe("success");
|
|
189
|
+
expect(warningReport![0].warnings).toBe("unused variable");
|
|
190
|
+
|
|
191
|
+
await engine.stop();
|
|
192
|
+
});
|
|
193
|
+
|
|
194
|
+
it("초기 빌드 실패 + warnings → ResultCollector에 error + warnings 모두 저장", async () => {
|
|
195
|
+
const mockResultCollector = { add: vi.fn() };
|
|
196
|
+
|
|
197
|
+
mockWorker.startWatch.mockResolvedValue({
|
|
198
|
+
success: false,
|
|
199
|
+
errors: ["type error"],
|
|
200
|
+
warnings: ["deprecated API"],
|
|
201
|
+
});
|
|
202
|
+
|
|
203
|
+
const engine = new EsbuildClientEngine({
|
|
204
|
+
cwd: "/root",
|
|
205
|
+
pkg: createMockPkg(),
|
|
206
|
+
resultCollector: mockResultCollector as any,
|
|
207
|
+
});
|
|
208
|
+
|
|
209
|
+
await engine.startWatch({ js: true, dts: false });
|
|
210
|
+
|
|
211
|
+
const errorReport = mockResultCollector.add.mock.calls.find(
|
|
212
|
+
(c: any[]) => c[0].type === "build" && c[0].status === "error",
|
|
213
|
+
);
|
|
214
|
+
expect(errorReport).toBeDefined();
|
|
215
|
+
expect(errorReport![0].message).toContain("type error");
|
|
216
|
+
expect(errorReport![0].warnings).toBe("deprecated API");
|
|
217
|
+
|
|
218
|
+
await engine.stop();
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
it("초기 빌드 성공 + warnings 없음 → ResultCollector에 추가 저장 없음", async () => {
|
|
222
|
+
const mockResultCollector = { add: vi.fn() };
|
|
223
|
+
|
|
224
|
+
mockWorker.startWatch.mockResolvedValue({ success: true });
|
|
225
|
+
|
|
226
|
+
const engine = new EsbuildClientEngine({
|
|
227
|
+
cwd: "/root",
|
|
228
|
+
pkg: createMockPkg(),
|
|
229
|
+
resultCollector: mockResultCollector as any,
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
await engine.startWatch({ js: true, dts: false });
|
|
233
|
+
|
|
234
|
+
// setupWatchEvents에 의한 호출은 있을 수 있으나, startWatch 결과에 의한 추가 저장은 없음
|
|
235
|
+
const warningReport = mockResultCollector.add.mock.calls.find(
|
|
236
|
+
(c: any[]) => c[0].warnings != null,
|
|
237
|
+
);
|
|
238
|
+
expect(warningReport).toBeUndefined();
|
|
239
|
+
|
|
240
|
+
await engine.stop();
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
//#endregion
|
|
244
|
+
|
|
166
245
|
// Scenario: 엔진 중지
|
|
167
246
|
it("stop()으로 worker를 종료하고 .dev-port를 삭제한다", async () => {
|
|
168
247
|
// Given: dev watch 모드가 실행 중이다
|
|
@@ -271,7 +271,7 @@ describe("EsbuildClientEngine", () => {
|
|
|
271
271
|
await engine.stop();
|
|
272
272
|
});
|
|
273
273
|
|
|
274
|
-
it("초기 빌드 실패 시
|
|
274
|
+
it("초기 빌드 실패 시 reject하지 않고 정상 완료된다", async () => {
|
|
275
275
|
mockWorker.startWatch.mockResolvedValue({
|
|
276
276
|
success: false,
|
|
277
277
|
errors: ["Module not found: @angular/core", "Syntax error in app.ts"],
|
|
@@ -280,8 +280,7 @@ describe("EsbuildClientEngine", () => {
|
|
|
280
280
|
const engine = new EsbuildClientEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
281
281
|
await engine.startWatch({ js: true, dts: false });
|
|
282
282
|
|
|
283
|
-
// startWatch가 reject하지 않고 정상 완료되는지 확인
|
|
284
|
-
// 에러 로깅은 verify.md에서 검증
|
|
283
|
+
// startWatch가 reject하지 않고 정상 완료되는지 확인
|
|
285
284
|
expect(mockWorker.startWatch).toHaveBeenCalled();
|
|
286
285
|
|
|
287
286
|
await engine.stop();
|
|
@@ -297,6 +296,77 @@ describe("EsbuildClientEngine", () => {
|
|
|
297
296
|
await engine.stop();
|
|
298
297
|
});
|
|
299
298
|
|
|
299
|
+
it("초기 빌드 ��공 + warnings 시 ResultCollector에 success와 warnings가 저장된다", async () => {
|
|
300
|
+
const mockResultCollector = { add: vi.fn(), get: vi.fn(), toMap: vi.fn() };
|
|
301
|
+
mockWorker.startWatch.mockResolvedValue({ success: true, warnings: ["w1", "w2"] });
|
|
302
|
+
|
|
303
|
+
const engine = new EsbuildClientEngine({
|
|
304
|
+
cwd: "/root",
|
|
305
|
+
pkg: createMockPkg(),
|
|
306
|
+
resultCollector: mockResultCollector as any,
|
|
307
|
+
});
|
|
308
|
+
await engine.startWatch({ js: true, dts: false });
|
|
309
|
+
|
|
310
|
+
const addCall = mockResultCollector.add.mock.calls.find(
|
|
311
|
+
(c: any[]) => c[0].warnings != null,
|
|
312
|
+
);
|
|
313
|
+
expect(addCall).toBeDefined();
|
|
314
|
+
expect(addCall![0]).toMatchObject({
|
|
315
|
+
status: "success",
|
|
316
|
+
warnings: "w1\nw2",
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
await engine.stop();
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
it("초기 빌드 실패 + warnings 시 ResultCollector에 에러와 경고 모두 저장된다", async () => {
|
|
323
|
+
const mockResultCollector = { add: vi.fn(), get: vi.fn(), toMap: vi.fn() };
|
|
324
|
+
mockWorker.startWatch.mockResolvedValue({
|
|
325
|
+
success: false,
|
|
326
|
+
errors: ["e1"],
|
|
327
|
+
warnings: ["w1"],
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
const engine = new EsbuildClientEngine({
|
|
331
|
+
cwd: "/root",
|
|
332
|
+
pkg: createMockPkg(),
|
|
333
|
+
resultCollector: mockResultCollector as any,
|
|
334
|
+
});
|
|
335
|
+
await engine.startWatch({ js: true, dts: false });
|
|
336
|
+
|
|
337
|
+
const errorResult = mockResultCollector.add.mock.calls.find(
|
|
338
|
+
(c: any[]) => c[0].status === "error",
|
|
339
|
+
);
|
|
340
|
+
expect(errorResult).toBeDefined();
|
|
341
|
+
expect(errorResult![0]).toMatchObject({
|
|
342
|
+
status: "error",
|
|
343
|
+
message: "e1",
|
|
344
|
+
warnings: "w1",
|
|
345
|
+
});
|
|
346
|
+
|
|
347
|
+
await engine.stop();
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
it("초기 빌드 성공 + warnings 없음 시 ResultCollector에 추가 저장하지 않는다", async () => {
|
|
351
|
+
const mockResultCollector = { add: vi.fn(), get: vi.fn(), toMap: vi.fn() };
|
|
352
|
+
mockWorker.startWatch.mockResolvedValue({ success: true });
|
|
353
|
+
|
|
354
|
+
const engine = new EsbuildClientEngine({
|
|
355
|
+
cwd: "/root",
|
|
356
|
+
pkg: createMockPkg(),
|
|
357
|
+
resultCollector: mockResultCollector as any,
|
|
358
|
+
});
|
|
359
|
+
await engine.startWatch({ js: true, dts: false });
|
|
360
|
+
|
|
361
|
+
// setupWatchEvents에 의한 add 호출만 있고, 초기 빌드 경로의 add 호출은 없어야 한다
|
|
362
|
+
const directAdd = mockResultCollector.add.mock.calls.find(
|
|
363
|
+
(c: any[]) => c[0].target === "client" && (c[0].message != null || c[0].warnings != null),
|
|
364
|
+
);
|
|
365
|
+
expect(directAdd).toBeUndefined();
|
|
366
|
+
|
|
367
|
+
await engine.stop();
|
|
368
|
+
});
|
|
369
|
+
|
|
300
370
|
it("scopeRebuild 이벤트를 구독하지 않는다", async () => {
|
|
301
371
|
mockWorker.startWatch.mockResolvedValue({ success: true });
|
|
302
372
|
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
# esbuild Angular Compiler Plugin — 증분 빌드 + HMR — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
- [x] **증분 빌드 조건 판단**: `esbuild-angular-compiler-plugin.ts:200` — `angularCompiler != null && sourceFileCache != null && sourceFileCache.modifiedFiles.size > 0`으로 증분 빌드 감지. 첫 빌드는 `angularCompiler == null` 경로로 진입.
|
|
6
|
+
|
|
7
|
+
- [x] **staleSourceFiles 캡처 타이밍**: `esbuild-angular-compiler-plugin.ts:208-219` — `invalidate()` 호출 전에 이전 `ts.Program`에서 stale source files를 캡처. `invalidate` 후에는 캐시에서 삭제되므로 순서가 중요.
|
|
8
|
+
|
|
9
|
+
- [x] **FileReferenceTracker.update → sourceFileCache.invalidate**: `esbuild-angular-compiler-plugin.ts:221-224` — `referencedFileTracker.update()`로 전이적 의존성 확장 후 `invalidate()` 호출. 확장된 파일 집합이 전달됨.
|
|
10
|
+
|
|
11
|
+
- [x] **stale additionalResults 제거**: `esbuild-angular-compiler-plugin.ts:226-229` — expandedModifiedFiles의 각 파일에 대해 `additionalResults.delete()` 호출.
|
|
12
|
+
|
|
13
|
+
- [x] **HMR 활성화 조건**: `esbuild-angular-compiler-plugin.ts:204-206` — `templateUpdates != null && modifiedFiles.size <= 32`. 32개 초과 시 HMR 건너뜀.
|
|
14
|
+
|
|
15
|
+
- [x] **collectHmrCandidates 호출**: `esbuild-angular-compiler-plugin.ts:235-239` — `ngtscProgram`과 `staleSourceFiles`를 전달. `sourceFileCache.modifiedFiles`(확장 전 원본)을 대상으로 분석.
|
|
16
|
+
|
|
17
|
+
- [x] **emitHmrUpdateModule 호출 및 null 처리**: `esbuild-angular-compiler-plugin.ts:259-264` — `emitHmrUpdateModule`이 null/undefined 반환 시 break (templateUpdates 전파 중단). NgCompiler API를 Record 캐스팅으로 접근 (타입이 private이므로).
|
|
18
|
+
|
|
19
|
+
- [x] **templateUpdates Map 전파**: `esbuild-angular-compiler-plugin.ts:266` — `pluginOptions.templateUpdates!.set(updateId, updateText)`로 외부 Map에 직접 기록.
|
|
20
|
+
|
|
21
|
+
- [x] **updateId 형식**: `esbuild-angular-compiler-plugin.ts:256-258` — `encodeURIComponent("{relativePath}@{className}")`. relativePath는 hostDir 기준 상대경로, 백슬래시를 슬래시로 변환.
|
|
22
|
+
|
|
23
|
+
- [x] **hmr-candidates.ts 구조**: `hmr-candidates.ts` — `collectHmrCandidates` 함수가 원본 `hmr-candidates.js`의 로직을 TypeScript로 이식. `analyzeFileUpdates`, `analyzeMetaUpdates`, `equalRangeText` 헬퍼 포함. SUPPORTED_FIELD_NAMES = {template, templateUrl, styles, styleUrl, stylesUrl}.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# onLoad 훅 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
- [x] TS onLoad 훅이 `/\.[cm]?[jt]sx?$/` 필터로 등록된다: :517 `build.onLoad({ filter: /\.[cm]?[jt]sx?$/ }, ...)`
|
|
6
|
+
- [x] JS onLoad 훅이 `/\.[cm]?js$/` 필터로 등록된다: :584 `build.onLoad({ filter: /\.[cm]?js$/ }, ...)`
|
|
7
|
+
- [x] TS onLoad: shouldTsIgnoreJs=true이고 JS 파일이면 undefined 반환: :522 `if (shouldTsIgnoreJs && isJS) return undefined`
|
|
8
|
+
- [x] TS onLoad: 캐시 미스 + hasCompilationErrors이면 `{ contents: '', loader: 'js' }` 반환: :530
|
|
9
|
+
- [x] TS onLoad: 캐시 미스 + allowJs + JS이면 undefined 반환: :535
|
|
10
|
+
- [x] TS onLoad: 캐시 미스 + Angular 데코레이터 없으면 warning 반환: :541-547
|
|
11
|
+
- [x] TS onLoad: 캐시 미스 + Angular 데코레이터 있으면 error 반환: :550-552
|
|
12
|
+
- [x] TS onLoad: string 캐시 + (useTypeScriptTranspilation || isJS)이면 transformData 호출 → Uint8Array 재캐싱: :556-565
|
|
13
|
+
- [x] TS onLoad: Uint8Array 캐시이면 재변환 없이 그대로 반환: :556 조건 `typeof contents === "string"` — Uint8Array는 조건 불일치로 통과
|
|
14
|
+
- [x] TS onLoad: loader 결정 — (useTypeScriptTranspilation || isJS) → 'js', .tsx → 'tsx', 기타 → 'ts': :569-574
|
|
15
|
+
- [x] JS onLoad: createCachedLoad(loadResultCache, callback)으로 래핑: :586
|
|
16
|
+
- [x] JS onLoad: transformFile(request, false, sideEffects) 호출: :589
|
|
17
|
+
- [x] hasSideEffects: advancedOptimizations=false → undefined 반환: :292-293
|
|
18
|
+
- [x] hasSideEffects: advancedOptimizations=true → build.resolve() 호출: :295-298
|
|
19
|
+
- [x] shouldTsIgnoreJs: onStart에서 !compilerOptions.allowJs로 결정: :405
|
|
20
|
+
- [x] useTypeScriptTranspilation: !isolatedModules || !!sourceMap || !!inlineSourceMap으로 결정: :406-407
|
|
21
|
+
- [x] loadResultCache 옵션이 AngularCompilerPluginOptions에 추가됨: :33
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# onStart 서브함수 추출 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
- [x] **handleIncrementalBuild 클로저 변수 접근**: `pluginOptions.sourceFileCache!` (314줄), `pluginOptions.templateUpdates` (316줄), `angularCompiler!` (322, 342, 345, 353줄), `referencedFileTracker` (332줄), `additionalResults` (339줄), `cwd` (359줄) — 모두 setup 스코프(248-289줄)에서 선언된 변수를 파라미터 없이 직접 접근. 원본에서 `errors`/`warnings`를 사용하지 않아 파라미터 불필요 (lint 에러로 확인, 제거)
|
|
6
|
+
- [x] **handleFirstBuild 클로저 변수 접근**: `pluginOptions` (378, 387-390줄), `preserveSymlinks` (381줄), `angularCompiler` (394줄 대입), `shouldTsIgnoreJs` (398줄 대입), `useTypeScriptTranspilation` (399줄 대입) — 모두 setup 스코프 변수 직접 접근. 파라미터 없음
|
|
7
|
+
- [x] **createWebWorkerProcessor 클로저 변수 접근**: `build` (410줄), `pluginOptions.sourcemap` (410줄), `cwd` (422, 437줄), `referencedFileTracker` (417, 435줄), `additionalResults` (424, 428줄) — 모두 setup 스코프 변수 직접 접근. `errors`/`warnings`만 파라미터로 전달
|
|
8
|
+
- [x] **onStart 반환값 동일**: onStart 콜백(456-526줄)이 동일한 `result` 객체를 반환 (`errors`/`warnings` 할당 로직 523-525줄 유지). 추출 전과 동일한 `{errors, warnings}` 구조
|
|
9
|
+
- [x] **내부 상태 변화 동일**: `handleIncrementalBuild`에서 `sourceFileCache.invalidate()` (328줄), `additionalResults.delete()` (332줄), `angularCompiler.update()` (335줄), `templateUpdates.set()/clear()` (366, 370줄) — 원본 코드(316-383줄)와 동일한 mutation 순서와 로직
|
|
10
|
+
- [x] **handleFirstBuild 상태 설정**: `angularCompiler = compiler` (394줄), `shouldTsIgnoreJs = !co.allowJs` (398줄), `useTypeScriptTranspilation` (399-400줄) — 원본 코드(384-409줄)와 동일
|
|
11
|
+
- [x] **HMR 실패 시 templateUpdates 초기화**: `updateText === null || updateText === undefined` 조건(364줄) → `pluginOptions.templateUpdates!.clear()` (366줄) + `break` (367줄) — 원본과 동일
|
|
12
|
+
- [x] **Worker 빌드 성공 경로**: `additionalResults.set(fullWorkerPath, {outputFiles, metafile})` (428-431줄) → `workerCodeFile` 찾기 (442-444줄) → 상대 경로 반환 (450-451줄) — 원본과 동일
|
|
13
|
+
- [x] **Worker 빌드 실패 경로**: `errors.push(...workerResult.errors)` (415줄) → `referencedFileTracker.add()` (417-423줄) → `additionalResults.set()` (424줄) → `return workerFile` (425줄) — 원본과 동일
|
|
14
|
+
- [x] **onStart 오케스트레이션 축소**: onStart 콜백이 456-526줄 = ~70줄로 축소됨. 구성: stylesheetErrors 리셋(4줄) + 분기 호출(5줄) + processWebWorker 생성(1줄) + emit(5줄) + diagnostics(8줄) + stylesheet 브릿징(12줄) + 에러 핸들링(13줄) + 결과 반환(3줄)
|
|
15
|
+
- [x] **onLoad/onEnd/onDispose 미변경**: 528줄 이후의 onLoad(528-593줄), onEnd(615-625줄), onDispose(628-632줄) 핸들러가 변경되지 않음
|
|
16
|
+
- [x] **기존 테스트 26개 통과**: vitest run 실행 결과 26 passed, 0 failed
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# esbuild-angular-compiler-plugin SdTsCompiler 전환 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
- [x] SdTsCompiler 인스턴스 생성: `:402-414` — `new SdTsCompiler({ pkgDir: path.dirname(pluginOptions.tsconfig), cwd, output: { js: true, dts: false }, sourceFileCache, transformStylesheet, externalStylesheets, compilerOptionsTransformer })` 올바르게 구성
|
|
6
|
+
- [x] compileAsync 호출: `:422-425` — 첫 빌드 시 `compileAsync(undefined, { additionalTransformers })`, 증분 빌드 시 `compileAsync(expandedModifiedFiles, { additionalTransformers })`
|
|
7
|
+
- [x] emitResults → typeScriptFileCache 매핑: `:428-430` — `compileResult.emitResults`를 순회하여 `path.normalize(sourceFileName)` 키로 저장
|
|
8
|
+
- [x] diagnostics 변환: `:441-448` — `convertSerializedDiagnosticToEsbuild(d, compileResult.program, cwd)` 사용, `d.category` 기반 분류
|
|
9
|
+
- [x] HMR staleSourceFiles 캡처: `:380-388` — `lastResult.program.getSourceFile(modifiedFile)` 사용, compileAsync 전에 수행
|
|
10
|
+
- [x] HMR collectHmrCandidates: `:468-471` — `compileResult.ngtscProgram` 사용, staleSourceFiles 전달
|
|
11
|
+
- [x] SCSS bridging: `:451-462` — `pluginOptions.stylesheetDependencies`/`stylesheetErrors` 직접 읽기 (plugin-owned maps)
|
|
12
|
+
- [x] parseTsconfigFile 함수 제거 확인: 파일 전체에서 `parseTsconfigFile` 미발견
|
|
13
|
+
- [x] AngularCompiler import 제거 확인: `:7` — `import type { AngularSourceFileCache }` (type import만 유지)
|
|
14
|
+
- [x] onDispose에서 참조 해제: `sdTsCompiler = undefined; lastResult = undefined;` 확인
|
|
15
|
+
- [x] onLoad 플래그 결정: `:432-438` — `lastResult == null` 조건으로 첫 빌드에서만 결정
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Feature 2.1 컴포넌트 스타일시트 번들링 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
### AngularCompilerPluginOptions 인터페이스 확장
|
|
6
|
+
|
|
7
|
+
- [x] `stylesheetDependencies?: Map<string, Set<string>>` 필드 존재: `esbuild-angular-compiler-plugin.ts:42` — `Map<string, Set<string>>` 타입으로 선언됨. `createClientTransformStylesheet`의 `scssDependencies` 타입과 일치
|
|
8
|
+
- [x] `stylesheetErrors?: string[]` 필드 존재: `esbuild-angular-compiler-plugin.ts:44` — `string[]` 타입으로 선언됨. `createClientTransformStylesheet`의 `scssErrors` 타입과 일치
|
|
9
|
+
|
|
10
|
+
### onStart — stylesheetErrors 리셋
|
|
11
|
+
|
|
12
|
+
- [x] 리셋 코드가 try 블록 **앞**에 위치: `esbuild-angular-compiler-plugin.ts:204-207` — `if (pluginOptions.stylesheetErrors != null) { pluginOptions.stylesheetErrors.length = 0; }` 가 `try {` (`:209`) 이전에 위치. 컴파일 실패 시에도 리셋이 보장됨
|
|
13
|
+
- [x] null guard 존재: `pluginOptions.stylesheetErrors != null` 체크로 미제공 시 TypeError 방지
|
|
14
|
+
|
|
15
|
+
### onStart — stylesheetDependencies → FileReferenceTracker 브릿징
|
|
16
|
+
|
|
17
|
+
- [x] 브릿징 코드가 emit 후, additionalResults 수집 전에 위치: `esbuild-angular-compiler-plugin.ts:315-320` — `emitAffectedFiles` 루프(`:300-303`)와 `diagnostics 수집`(`:305-313`) 후, `additionalResults 에러 수집`(`:322`) 전에 위치
|
|
18
|
+
- [x] `referencedFileTracker.add(containingFile, deps)` 호출: `:318` — Map의 각 엔트리에 대해 `referencedFileTracker.add(containingFile, deps)` 호출. `FileReferenceTracker.add()` 시그니처(`file-reference-tracker.ts:22`)와 일치
|
|
19
|
+
- [x] null guard 존재: `:316` — `pluginOptions.stylesheetDependencies != null` 체크
|
|
20
|
+
|
|
21
|
+
### onStart — stylesheetErrors → esbuild errors 변환
|
|
22
|
+
|
|
23
|
+
- [x] 변환 코드가 additionalResults 에러 수집 후에 위치: `esbuild-angular-compiler-plugin.ts:329-334` — `additionalResults` 루프(`:322-327`) 후에 위치
|
|
24
|
+
- [x] `{ text: errText, location: null }` 형식으로 push: `:332` — `errors.push({ text: errText, location: null })`. esbuild `PartialMessage` 형식에 부합
|
|
25
|
+
- [x] null guard 존재: `:330` — `pluginOptions.stylesheetErrors != null` 체크
|
|
26
|
+
- [x] 빈 배열 시 push 없음: `for...of` 루프이므로 빈 배열일 때 자연스럽게 0회 실행
|
|
27
|
+
|
|
28
|
+
### 증분 빌드 전이적 재컴파일 경로
|
|
29
|
+
|
|
30
|
+
- [x] `referencedFileTracker.update(sourceFileCache.modifiedFiles)` 호출: `:231-233` — 증분 빌드 경로에서 `referencedFileTracker.update()`가 호출됨. Feature 2.1에서 등록한 SCSS 의존성이 여기서 전이적으로 확장됨
|
|
31
|
+
- [x] 확장된 파일이 `sourceFileCache.invalidate()`에 전달됨: `:234` — `sourceFileCache.invalidate(expandedModifiedFiles)`. SCSS 의존성 파일 변경 시 해당 스타일시트 파일도 무효화되어 Angular compiler가 컴포넌트를 재컴파일
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Web Worker 번들링 — LLM 검증
|
|
2
|
+
|
|
3
|
+
## 검증 항목
|
|
4
|
+
|
|
5
|
+
### bundleWebWorker 함수
|
|
6
|
+
|
|
7
|
+
- [x] buildSync 옵션: `esbuild-angular-compiler-plugin.ts:165-177` — platform: "browser", write: false, bundle: true, metafile: true, format: "esm", entryNames: "worker-[hash]", plugins: undefined, supported: undefined 모두 확인
|
|
8
|
+
- [x] sourcemap 전달: `esbuild-angular-compiler-plugin.ts:174` — `sourcemap` 파라미터 직접 전달
|
|
9
|
+
- [x] initialOptions spread: `esbuild-angular-compiler-plugin.ts:165` — `...build.initialOptions`로 target/absWorkingDir/outdir 전달
|
|
10
|
+
- [x] catch — errors/warnings 있으면 반환: `esbuild-angular-compiler-plugin.ts:178-186` — `"errors" in error && "warnings" in error` 확인 후 `error as esbuild.BuildResult` 반환
|
|
11
|
+
- [x] catch — 없으면 re-throw: `esbuild-angular-compiler-plugin.ts:187` — `throw error`
|
|
12
|
+
|
|
13
|
+
### processWebWorker 콜백
|
|
14
|
+
|
|
15
|
+
- [x] workerFile resolve: `esbuild-angular-compiler-plugin.ts:346` — `path.join(path.dirname(containingFile), workerFile)`
|
|
16
|
+
- [x] 성공 — additionalResults 저장: `esbuild-angular-compiler-plugin.ts:365-368` — `additionalResults.set(fullWorkerPath, { outputFiles, metafile })`
|
|
17
|
+
- [x] 성공 — FileReferenceTracker 등록: `esbuild-angular-compiler-plugin.ts:371-376` — `metafile.inputs` 키를 `path.join(cwd, input)`으로 변환하여 등록
|
|
18
|
+
- [x] 성공 — 반환값: `esbuild-angular-compiler-plugin.ts:379-388` — `/^worker-[A-Z0-9]{8}\.[cm]?js$/` 패턴으로 검색, `path.relative(outdir, ...)` + `replaceAll("\\", "/")` forward slash 반환
|
|
19
|
+
- [x] 에러 — errors push: `esbuild-angular-compiler-plugin.ts:352` — `errors.push(...workerResult.errors)`
|
|
20
|
+
- [x] 에러 — warnings push: `esbuild-angular-compiler-plugin.ts:349` — `warnings.push(...workerResult.warnings)` (성공/실패 공통 실행)
|
|
21
|
+
- [x] 에러 — FileReferenceTracker 등록: `esbuild-angular-compiler-plugin.ts:354-359` — `location?.file` 필터 후 `path.join(cwd, f)` 변환
|
|
22
|
+
- [x] 에러 — additionalResults 저장: `esbuild-angular-compiler-plugin.ts:361` — `{ errors: workerResult.errors }`
|
|
23
|
+
- [x] 에러 — 원본 반환: `esbuild-angular-compiler-plugin.ts:362` — `return workerFile`
|
|
24
|
+
|
|
25
|
+
### Plugin 통합
|
|
26
|
+
|
|
27
|
+
- [x] import: `esbuild-angular-compiler-plugin.ts:14` — `import { createWorkerTransformer } from "../angular/web-worker-transformer.js"`
|
|
28
|
+
- [x] transformer 생성: `esbuild-angular-compiler-plugin.ts:392` — `createWorkerTransformer(processWebWorker)`
|
|
29
|
+
- [x] emitAffectedFiles 전달: `esbuild-angular-compiler-plugin.ts:393-395` — `{ additionalTransformers: { before: [workerTransformer] } }`
|
|
30
|
+
- [x] 클로저 접근: `esbuild-angular-compiler-plugin.ts:344-389` — onStart 내부에서 생성, `errors`/`warnings`/`additionalResults`/`referencedFileTracker`/`cwd`/`build` 접근 가능
|
|
31
|
+
- [x] onEnd 병합: `esbuild-angular-compiler-plugin.ts:449-460` — additionalResults 순회에서 worker 결과 포함
|