@simplysm/sd-cli 14.0.8 → 14.0.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/angular/client-transform-stylesheet.d.ts.map +1 -1
- package/dist/angular/client-transform-stylesheet.js.map +1 -1
- package/dist/angular/vite-angular-plugin.d.ts.map +1 -1
- package/dist/angular/vite-angular-plugin.js +15 -8
- package/dist/angular/vite-angular-plugin.js.map +1 -1
- package/dist/angular/vite-postcss-inline-plugin.d.ts.map +1 -1
- package/dist/angular/vite-postcss-inline-plugin.js.map +1 -1
- package/dist/capacitor/capacitor.d.ts.map +1 -1
- package/dist/capacitor/capacitor.js +41 -41
- package/dist/capacitor/capacitor.js.map +1 -1
- package/dist/commands/build.d.ts.map +1 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/check.d.ts.map +1 -1
- package/dist/commands/check.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/lint.d.ts.map +1 -1
- package/dist/commands/lint.js.map +1 -1
- package/dist/commands/publish.d.ts.map +1 -1
- package/dist/commands/publish.js.map +1 -1
- package/dist/commands/replace-deps.d.ts.map +1 -1
- package/dist/commands/replace-deps.js.map +1 -1
- package/dist/commands/typecheck.d.ts.map +1 -1
- package/dist/commands/typecheck.js +12 -12
- package/dist/commands/typecheck.js.map +1 -1
- package/dist/commands/watch.d.ts.map +1 -1
- package/dist/commands/watch.js.map +1 -1
- package/dist/electron/electron.d.ts.map +1 -1
- package/dist/electron/electron.js +26 -27
- package/dist/electron/electron.js.map +1 -1
- package/dist/engines/BaseEngine.d.ts +1 -5
- package/dist/engines/BaseEngine.d.ts.map +1 -1
- package/dist/engines/BaseEngine.js +7 -16
- package/dist/engines/BaseEngine.js.map +1 -1
- package/dist/engines/NgtscEngine.d.ts.map +1 -1
- package/dist/engines/NgtscEngine.js +10 -11
- package/dist/engines/NgtscEngine.js.map +1 -1
- package/dist/engines/ServerEsbuildEngine.d.ts.map +1 -1
- package/dist/engines/ServerEsbuildEngine.js +10 -11
- package/dist/engines/ServerEsbuildEngine.js.map +1 -1
- package/dist/engines/TscEngine.d.ts.map +1 -1
- package/dist/engines/TscEngine.js +10 -11
- package/dist/engines/TscEngine.js.map +1 -1
- package/dist/engines/ViteEngine.d.ts.map +1 -1
- package/dist/engines/ViteEngine.js +3 -13
- package/dist/engines/ViteEngine.js.map +1 -1
- package/dist/engines/index.d.ts.map +1 -1
- package/dist/engines/index.js.map +1 -1
- package/dist/engines/types.d.ts +3 -6
- package/dist/engines/types.d.ts.map +1 -1
- package/dist/engines/types.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/infra/ResultCollector.d.ts +1 -1
- package/dist/infra/ResultCollector.d.ts.map +1 -1
- package/dist/infra/ResultCollector.js.map +1 -1
- package/dist/infra/SignalHandler.d.ts.map +1 -1
- package/dist/infra/SignalHandler.js.map +1 -1
- package/dist/infra/WorkerManager.d.ts.map +1 -1
- package/dist/infra/WorkerManager.js.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/BuildOrchestrator.js +30 -61
- package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
- package/dist/orchestrators/DevWatchOrchestrator.d.ts +2 -0
- package/dist/orchestrators/DevWatchOrchestrator.d.ts.map +1 -1
- package/dist/orchestrators/DevWatchOrchestrator.js +40 -44
- package/dist/orchestrators/DevWatchOrchestrator.js.map +1 -1
- package/dist/sd-cli-entry.d.ts.map +1 -1
- package/dist/sd-cli-entry.js +2 -13
- package/dist/sd-cli-entry.js.map +1 -1
- package/dist/sd-cli.d.ts.map +1 -1
- package/dist/sd-cli.js.map +1 -1
- package/dist/sd-config.types.d.ts.map +1 -1
- package/dist/sd-config.types.js.map +1 -1
- package/dist/utils/SdCliReporter.d.ts +18 -0
- package/dist/utils/SdCliReporter.d.ts.map +1 -0
- package/dist/utils/SdCliReporter.js +144 -0
- package/dist/utils/SdCliReporter.js.map +1 -0
- package/dist/utils/angular-build.d.ts.map +1 -1
- package/dist/utils/angular-build.js.map +1 -1
- package/dist/utils/angular-compiler.d.ts.map +1 -1
- package/dist/utils/angular-compiler.js +11 -4
- package/dist/utils/angular-compiler.js.map +1 -1
- package/dist/utils/build-env.d.ts.map +1 -1
- package/dist/utils/build-env.js +2 -1
- package/dist/utils/build-env.js.map +1 -1
- package/dist/utils/concurrency.d.ts.map +1 -1
- package/dist/utils/concurrency.js.map +1 -1
- package/dist/utils/copy-public.d.ts.map +1 -1
- package/dist/utils/copy-public.js +21 -21
- package/dist/utils/copy-public.js.map +1 -1
- package/dist/utils/copy-src.d.ts.map +1 -1
- package/dist/utils/copy-src.js +12 -12
- package/dist/utils/copy-src.js.map +1 -1
- package/dist/utils/diagnostic-utils.d.ts.map +1 -1
- package/dist/utils/diagnostic-utils.js +3 -2
- package/dist/utils/diagnostic-utils.js.map +1 -1
- package/dist/utils/engine-stop.d.ts.map +1 -1
- package/dist/utils/engine-stop.js.map +1 -1
- package/dist/utils/esbuild-config.d.ts.map +1 -1
- package/dist/utils/esbuild-config.js +2 -0
- package/dist/utils/esbuild-config.js.map +1 -1
- package/dist/utils/generate-pwa-icons.d.ts.map +1 -1
- package/dist/utils/generate-pwa-icons.js.map +1 -1
- package/dist/utils/hmr-candidates.d.ts.map +1 -1
- package/dist/utils/hmr-candidates.js.map +1 -1
- package/dist/utils/lint-utils.d.ts.map +1 -1
- package/dist/utils/lint-utils.js.map +1 -1
- package/dist/utils/lint-with-program.d.ts.map +1 -1
- package/dist/utils/lint-with-program.js +7 -3
- package/dist/utils/lint-with-program.js.map +1 -1
- package/dist/utils/ngtsc-build-core.d.ts +2 -10
- package/dist/utils/ngtsc-build-core.d.ts.map +1 -1
- package/dist/utils/ngtsc-build-core.js +16 -15
- package/dist/utils/ngtsc-build-core.js.map +1 -1
- package/dist/utils/orchestrator-utils.d.ts.map +1 -1
- package/dist/utils/orchestrator-utils.js.map +1 -1
- package/dist/utils/output-path-rewriter.d.ts.map +1 -1
- package/dist/utils/output-path-rewriter.js +7 -7
- package/dist/utils/output-path-rewriter.js.map +1 -1
- package/dist/utils/output-utils.d.ts.map +1 -1
- package/dist/utils/output-utils.js +1 -1
- package/dist/utils/output-utils.js.map +1 -1
- package/dist/utils/package-utils.d.ts +4 -0
- package/dist/utils/package-utils.d.ts.map +1 -1
- package/dist/utils/package-utils.js +34 -13
- package/dist/utils/package-utils.js.map +1 -1
- package/dist/utils/rebuild-manager.d.ts +1 -1
- package/dist/utils/rebuild-manager.d.ts.map +1 -1
- package/dist/utils/rebuild-manager.js +3 -1
- package/dist/utils/rebuild-manager.js.map +1 -1
- package/dist/utils/replace-deps.d.ts.map +1 -1
- package/dist/utils/replace-deps.js +10 -10
- package/dist/utils/replace-deps.js.map +1 -1
- package/dist/utils/scss-compiler.d.ts.map +1 -1
- package/dist/utils/scss-compiler.js.map +1 -1
- package/dist/utils/sd-config.d.ts.map +1 -1
- package/dist/utils/sd-config.js +2 -3
- package/dist/utils/sd-config.js.map +1 -1
- package/dist/utils/tsc-build.d.ts +3 -1
- package/dist/utils/tsc-build.d.ts.map +1 -1
- package/dist/utils/tsc-build.js +7 -4
- package/dist/utils/tsc-build.js.map +1 -1
- package/dist/utils/tsconfig.d.ts.map +1 -1
- package/dist/utils/tsconfig.js.map +1 -1
- package/dist/utils/typecheck-non-package.d.ts.map +1 -1
- package/dist/utils/typecheck-non-package.js +10 -5
- package/dist/utils/typecheck-non-package.js.map +1 -1
- package/dist/utils/typecheck-serialization.d.ts.map +1 -1
- package/dist/utils/typecheck-serialization.js.map +1 -1
- package/dist/utils/vite-config.d.ts.map +1 -1
- package/dist/utils/vite-config.js +2 -1
- package/dist/utils/vite-config.js.map +1 -1
- package/dist/utils/vite-scope-watch-plugin.d.ts.map +1 -1
- package/dist/utils/vite-scope-watch-plugin.js.map +1 -1
- package/dist/utils/worker-events.d.ts +1 -1
- package/dist/utils/worker-events.d.ts.map +1 -1
- package/dist/utils/worker-events.js +1 -0
- package/dist/utils/worker-events.js.map +1 -1
- package/dist/utils/worker-utils.d.ts +1 -1
- package/dist/utils/worker-utils.d.ts.map +1 -1
- package/dist/utils/worker-utils.js +3 -1
- package/dist/utils/worker-utils.js.map +1 -1
- package/dist/vitest-plugin.d.ts.map +1 -1
- package/dist/vitest-plugin.js.map +1 -1
- package/dist/workers/client.worker.d.ts.map +1 -1
- package/dist/workers/client.worker.js +4 -0
- package/dist/workers/client.worker.js.map +1 -1
- package/dist/workers/library-build.worker.d.ts +2 -10
- package/dist/workers/library-build.worker.d.ts.map +1 -1
- package/dist/workers/library-build.worker.js +38 -14
- package/dist/workers/library-build.worker.js.map +1 -1
- package/dist/workers/lint.worker.d.ts.map +1 -1
- package/dist/workers/lint.worker.js.map +1 -1
- package/dist/workers/ngtsc-build.worker.d.ts.map +1 -1
- package/dist/workers/ngtsc-build.worker.js +40 -14
- package/dist/workers/ngtsc-build.worker.js.map +1 -1
- package/dist/workers/server-build.worker.d.ts +2 -10
- package/dist/workers/server-build.worker.d.ts.map +1 -1
- package/dist/workers/server-build.worker.js +28 -19
- package/dist/workers/server-build.worker.js.map +1 -1
- package/dist/workers/server-runtime.worker.d.ts.map +1 -1
- package/dist/workers/server-runtime.worker.js.map +1 -1
- package/package.json +4 -4
- package/src/angular/vite-angular-plugin.ts +18 -9
- package/src/capacitor/capacitor.ts +41 -41
- package/src/commands/typecheck.ts +12 -12
- package/src/electron/electron.ts +26 -27
- package/src/engines/BaseEngine.ts +8 -19
- package/src/engines/NgtscEngine.ts +11 -11
- package/src/engines/ServerEsbuildEngine.ts +11 -11
- package/src/engines/TscEngine.ts +11 -11
- package/src/engines/ViteEngine.ts +3 -14
- package/src/engines/types.ts +3 -6
- package/src/infra/ResultCollector.ts +1 -1
- package/src/orchestrators/BuildOrchestrator.ts +31 -62
- package/src/orchestrators/DevWatchOrchestrator.ts +41 -44
- package/src/sd-cli-entry.ts +2 -12
- package/src/utils/SdCliReporter.ts +177 -0
- package/src/utils/angular-compiler.ts +11 -4
- package/src/utils/build-env.ts +2 -1
- package/src/utils/copy-public.ts +21 -21
- package/src/utils/copy-src.ts +12 -12
- package/src/utils/diagnostic-utils.ts +3 -2
- package/src/utils/esbuild-config.ts +2 -0
- package/src/utils/lint-with-program.ts +7 -3
- package/src/utils/ngtsc-build-core.ts +18 -18
- package/src/utils/output-path-rewriter.ts +7 -7
- package/src/utils/output-utils.ts +1 -1
- package/src/utils/package-utils.ts +37 -13
- package/src/utils/rebuild-manager.ts +4 -2
- package/src/utils/replace-deps.ts +10 -10
- package/src/utils/sd-config.ts +2 -3
- package/src/utils/tsc-build.ts +9 -4
- package/src/utils/typecheck-non-package.ts +10 -5
- package/src/utils/vite-config.ts +2 -1
- package/src/utils/worker-events.ts +2 -1
- package/src/utils/worker-utils.ts +3 -1
- package/src/workers/client.worker.ts +4 -0
- package/src/workers/library-build.worker.ts +48 -18
- package/src/workers/ngtsc-build.worker.ts +48 -13
- package/src/workers/server-build.worker.ts +30 -23
- package/tests/angular/vite-angular-plugin-hmr-fallback.spec.ts +11 -7
- package/tests/angular/vite-angular-plugin-lint.spec.ts +6 -1
- package/tests/capacitor/capacitor-build.spec.ts +5 -0
- package/tests/capacitor/capacitor-icon.spec.ts +5 -0
- package/tests/capacitor/capacitor-init.spec.ts +5 -0
- package/tests/capacitor/capacitor-run.spec.ts +5 -0
- package/tests/capacitor/capacitor-workspace.spec.ts +5 -0
- package/tests/commands/typecheck.spec.ts +20 -31
- package/tests/electron/electron.spec.ts +5 -0
- package/tests/engines/base-engine.spec.ts +15 -21
- package/tests/engines/engine-lint-integration.spec.ts +5 -10
- package/tests/engines/ngtsc-engine.spec.ts +27 -41
- package/tests/engines/server-esbuild-engine.spec.ts +18 -29
- package/tests/engines/tsc-engine.spec.ts +14 -23
- package/tests/engines/vite-engine.spec.ts +10 -15
- package/tests/infra/result-collector.spec.ts +2 -2
- package/tests/orchestrators/build-orchestrator.spec.ts +19 -29
- package/tests/orchestrators/dev-watch-orchestrator.spec.ts +110 -95
- package/tests/utils/copy-src.spec.ts +25 -19
- package/tests/utils/diagnostic-utils.spec.ts +72 -0
- package/tests/utils/ngtsc-build-core-angular-compiler.spec.ts +2 -3
- package/tests/utils/output-path-rewriter.spec.ts +7 -6
- package/tests/utils/output-utils.spec.ts +5 -5
- package/tests/utils/rebuild-manager.spec.ts +1 -1
- package/tests/utils/sd-config.spec.ts +4 -0
- package/tests/utils/tsc-build.spec.ts +23 -5
- package/tests/workers/library-build-worker.spec.ts +113 -20
- package/tests/workers/ngtsc-build-lint.spec.ts +3 -6
- package/tests/workers/ngtsc-build-worker.spec.ts +17 -19
- package/tests/workers/server-build-lint.spec.ts +4 -1
- package/tests/workers/server-build-worker.spec.ts +19 -22
- package/tests/angular/migration-cleanup.spec.ts +0 -59
|
@@ -86,8 +86,7 @@ function createMockEngine() {
|
|
|
86
86
|
const engine = {
|
|
87
87
|
run: vi.fn().mockResolvedValue({
|
|
88
88
|
success: true,
|
|
89
|
-
|
|
90
|
-
dts: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
89
|
+
build: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
91
90
|
|
|
92
91
|
}),
|
|
93
92
|
startWatch: vi.fn(),
|
|
@@ -161,7 +160,7 @@ describe("executeTypecheck", () => {
|
|
|
161
160
|
}),
|
|
162
161
|
expect.any(Object),
|
|
163
162
|
);
|
|
164
|
-
expect(mockEngines[0].run).toHaveBeenCalledWith({ js: false, dts: false, env: "node" });
|
|
163
|
+
expect(mockEngines[0].run).toHaveBeenCalledWith({ js: false, dts: false, env: "node", includeTests: true });
|
|
165
164
|
});
|
|
166
165
|
|
|
167
166
|
it("excludes scripts packages from typecheck", async () => {
|
|
@@ -217,8 +216,7 @@ describe("executeTypecheck", () => {
|
|
|
217
216
|
const engine = {
|
|
218
217
|
run: vi.fn().mockResolvedValue({
|
|
219
218
|
success: false,
|
|
220
|
-
|
|
221
|
-
dts: { success: false, errors: [], warnings: [], diagnostics: [engineDiag] },
|
|
219
|
+
build: { success: false, errors: [], warnings: [], diagnostics: [engineDiag] },
|
|
222
220
|
|
|
223
221
|
}),
|
|
224
222
|
startWatch: vi.fn(),
|
|
@@ -260,8 +258,7 @@ describe("executeTypecheck", () => {
|
|
|
260
258
|
active--;
|
|
261
259
|
return {
|
|
262
260
|
success: true,
|
|
263
|
-
|
|
264
|
-
dts: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
261
|
+
build: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
265
262
|
|
|
266
263
|
};
|
|
267
264
|
}),
|
|
@@ -341,8 +338,8 @@ describe("executeTypecheck", () => {
|
|
|
341
338
|
|
|
342
339
|
const runCalls = mockEngines.map((e) => e.run.mock.calls[0][0]);
|
|
343
340
|
expect(runCalls).toEqual([
|
|
344
|
-
{ js: false, dts: false, env: "node" },
|
|
345
|
-
{ js: false, dts: false, env: "browser" },
|
|
341
|
+
{ js: false, dts: false, env: "node", includeTests: true },
|
|
342
|
+
{ js: false, dts: false, env: "browser", includeTests: true },
|
|
346
343
|
]);
|
|
347
344
|
});
|
|
348
345
|
|
|
@@ -352,7 +349,7 @@ describe("executeTypecheck", () => {
|
|
|
352
349
|
await executeTypecheck({ targets: [], options: [] });
|
|
353
350
|
|
|
354
351
|
expect(mocks.createBuildEngine).toHaveBeenCalledTimes(1);
|
|
355
|
-
expect(mockEngines[0].run).toHaveBeenCalledWith({ js: false, dts: false, env: "node" });
|
|
352
|
+
expect(mockEngines[0].run).toHaveBeenCalledWith({ js: false, dts: false, env: "node", includeTests: true });
|
|
356
353
|
});
|
|
357
354
|
|
|
358
355
|
it("creates 1 task (browser) for browser target", async () => {
|
|
@@ -361,7 +358,7 @@ describe("executeTypecheck", () => {
|
|
|
361
358
|
await executeTypecheck({ targets: [], options: [] });
|
|
362
359
|
|
|
363
360
|
expect(mocks.createBuildEngine).toHaveBeenCalledTimes(1);
|
|
364
|
-
expect(mockEngines[0].run).toHaveBeenCalledWith({ js: false, dts: false, env: "browser" });
|
|
361
|
+
expect(mockEngines[0].run).toHaveBeenCalledWith({ js: false, dts: false, env: "browser", includeTests: true });
|
|
365
362
|
});
|
|
366
363
|
|
|
367
364
|
it("creates 1 task (node) for server target", async () => {
|
|
@@ -370,7 +367,7 @@ describe("executeTypecheck", () => {
|
|
|
370
367
|
await executeTypecheck({ targets: [], options: [] });
|
|
371
368
|
|
|
372
369
|
expect(mocks.createBuildEngine).toHaveBeenCalledTimes(1);
|
|
373
|
-
expect(mockEngines[0].run).toHaveBeenCalledWith({ js: false, dts: false, env: "node" });
|
|
370
|
+
expect(mockEngines[0].run).toHaveBeenCalledWith({ js: false, dts: false, env: "node", includeTests: true });
|
|
374
371
|
});
|
|
375
372
|
|
|
376
373
|
it("passes env to engine.run() for each task", async () => {
|
|
@@ -454,8 +451,7 @@ describe("executeTypecheck", () => {
|
|
|
454
451
|
const engine = {
|
|
455
452
|
run: vi.fn().mockResolvedValue({
|
|
456
453
|
success: false,
|
|
457
|
-
|
|
458
|
-
dts: { success: false, errors: [], warnings: [], diagnostics: [diag] },
|
|
454
|
+
build: { success: false, errors: [], warnings: [], diagnostics: [diag] },
|
|
459
455
|
|
|
460
456
|
}),
|
|
461
457
|
startWatch: vi.fn(),
|
|
@@ -511,8 +507,7 @@ describe("executeTypecheck", () => {
|
|
|
511
507
|
const engine = {
|
|
512
508
|
run: vi.fn().mockResolvedValue({
|
|
513
509
|
success: true,
|
|
514
|
-
|
|
515
|
-
dts: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
510
|
+
build: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
516
511
|
lint: { success: false, errorCount: 2, warningCount: 1, formattedOutput: "lint errors from pkg" },
|
|
517
512
|
}),
|
|
518
513
|
startWatch: vi.fn(),
|
|
@@ -567,8 +562,7 @@ describe("executeTypecheck", () => {
|
|
|
567
562
|
const engine = {
|
|
568
563
|
run: vi.fn().mockResolvedValue({
|
|
569
564
|
success: true,
|
|
570
|
-
|
|
571
|
-
dts: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
565
|
+
build: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
572
566
|
lint: { success: true, errorCount: 0, warningCount: 0, formattedOutput: "" },
|
|
573
567
|
}),
|
|
574
568
|
startWatch: vi.fn(),
|
|
@@ -663,8 +657,7 @@ describe("executeTypecheck", () => {
|
|
|
663
657
|
const engine = {
|
|
664
658
|
run: vi.fn().mockResolvedValue({
|
|
665
659
|
success: true,
|
|
666
|
-
|
|
667
|
-
dts: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
660
|
+
build: { success: true, errors: [], warnings: [], diagnostics: [] },
|
|
668
661
|
lint: { success: false, errorCount: 2, warningCount: 1, formattedOutput: "lint err" },
|
|
669
662
|
}),
|
|
670
663
|
startWatch: vi.fn(),
|
|
@@ -718,8 +711,7 @@ describe("executeTypecheck", () => {
|
|
|
718
711
|
const engine = {
|
|
719
712
|
run: vi.fn().mockResolvedValue({
|
|
720
713
|
success: false,
|
|
721
|
-
|
|
722
|
-
dts: {
|
|
714
|
+
build: {
|
|
723
715
|
success: false,
|
|
724
716
|
errors: ["[core-node:node] Something went wrong"],
|
|
725
717
|
warnings: [],
|
|
@@ -741,7 +733,7 @@ describe("executeTypecheck", () => {
|
|
|
741
733
|
});
|
|
742
734
|
|
|
743
735
|
// Acceptance: Scenario "복수 엔진이 문자열 에러를 반환"
|
|
744
|
-
it("복수 엔진이 각각
|
|
736
|
+
it("복수 엔진이 각각 build.errors에 메시지를 반환하면 모든 에러 메시지가 formattedOutput에 포함된다", async () => {
|
|
745
737
|
setupDefaults({
|
|
746
738
|
"pkg-a": { target: "node" },
|
|
747
739
|
"pkg-b": { target: "node" },
|
|
@@ -758,8 +750,7 @@ describe("executeTypecheck", () => {
|
|
|
758
750
|
const engine = {
|
|
759
751
|
run: vi.fn().mockResolvedValue({
|
|
760
752
|
success: false,
|
|
761
|
-
|
|
762
|
-
dts: {
|
|
753
|
+
build: {
|
|
763
754
|
success: false,
|
|
764
755
|
errors: [errorMessages[idx]],
|
|
765
756
|
warnings: [],
|
|
@@ -780,16 +771,15 @@ describe("executeTypecheck", () => {
|
|
|
780
771
|
expect(result.formattedOutput).toContain("[pkg-b:node] Error in package B");
|
|
781
772
|
});
|
|
782
773
|
|
|
783
|
-
// Unit: 단일 엔진이
|
|
784
|
-
it("단일 엔진이
|
|
774
|
+
// Unit: 단일 엔진이 build.errors에 복수 메시지를 반환하면 각각 합성 Diagnostic으로 변환된다
|
|
775
|
+
it("단일 엔진이 build.errors에 복수 메시지를 담으면 errorCount가 메시지 수와 일치한다", async () => {
|
|
785
776
|
setupDefaults({ "core-node": { target: "node" } });
|
|
786
777
|
|
|
787
778
|
mocks.createBuildEngine.mockImplementation(() => {
|
|
788
779
|
const engine = {
|
|
789
780
|
run: vi.fn().mockResolvedValue({
|
|
790
781
|
success: false,
|
|
791
|
-
|
|
792
|
-
dts: {
|
|
782
|
+
build: {
|
|
793
783
|
success: false,
|
|
794
784
|
errors: ["Error message 1", "Error message 2", "Error message 3"],
|
|
795
785
|
warnings: [],
|
|
@@ -821,8 +811,7 @@ describe("executeTypecheck", () => {
|
|
|
821
811
|
const engine = {
|
|
822
812
|
run: vi.fn().mockResolvedValue({
|
|
823
813
|
success: false,
|
|
824
|
-
|
|
825
|
-
dts: { success: false, errors: [], warnings: [], diagnostics: [diag] },
|
|
814
|
+
build: { success: false, errors: [], warnings: [], diagnostics: [diag] },
|
|
826
815
|
}),
|
|
827
816
|
startWatch: vi.fn(),
|
|
828
817
|
stop: vi.fn().mockResolvedValue(undefined),
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import path from "path";
|
|
1
2
|
import { describe, it, expect, vi, beforeEach } from "vitest";
|
|
2
3
|
|
|
3
4
|
//#region Mocks
|
|
@@ -25,6 +26,10 @@ vi.mock("@simplysm/core-node", () => ({
|
|
|
25
26
|
exec: mockCpxExec,
|
|
26
27
|
execSync: vi.fn().mockReturnValue({ stdout: "", stderr: "", exitCode: 0 }),
|
|
27
28
|
},
|
|
29
|
+
pathx: {
|
|
30
|
+
posixResolve: (...args: string[]) => path.resolve(...args).replace(/\\/g, "/"),
|
|
31
|
+
posix: (p: string) => p.replace(/\\/g, "/"),
|
|
32
|
+
},
|
|
28
33
|
}));
|
|
29
34
|
|
|
30
35
|
// cpx mock (was execa)
|
|
@@ -46,8 +46,7 @@ function createMockPkg(overrides: Partial<BuildPackageInfo> = {}): BuildPackageI
|
|
|
46
46
|
|
|
47
47
|
function setupDefaultBuildResult(): void {
|
|
48
48
|
mockWorker.build.mockResolvedValue({
|
|
49
|
-
|
|
50
|
-
dts: { success: true, errors: undefined, diagnostics: [] },
|
|
49
|
+
build: { success: true, errors: undefined, warnings: undefined, diagnostics: [] },
|
|
51
50
|
lint: { success: true, errorCount: 0, warningCount: 0, formattedOutput: "" },
|
|
52
51
|
});
|
|
53
52
|
mockWorker.terminate.mockResolvedValue(undefined);
|
|
@@ -78,7 +77,7 @@ describe("BaseEngine", () => {
|
|
|
78
77
|
const buildHandler = mockWorker.on.mock.calls.find(
|
|
79
78
|
(call: any[]) => call[0] === "build",
|
|
80
79
|
)?.[1];
|
|
81
|
-
buildHandler?.({
|
|
80
|
+
buildHandler?.({ build: { success: true } });
|
|
82
81
|
});
|
|
83
82
|
|
|
84
83
|
const engine = new TscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
@@ -101,7 +100,7 @@ describe("BaseEngine", () => {
|
|
|
101
100
|
const buildHandler = mockWorker.on.mock.calls.find(
|
|
102
101
|
(call: any[]) => call[0] === "build",
|
|
103
102
|
)?.[1];
|
|
104
|
-
buildHandler?.({
|
|
103
|
+
buildHandler?.({ build: { success: true } });
|
|
105
104
|
});
|
|
106
105
|
|
|
107
106
|
const engine = new TscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
@@ -114,7 +113,7 @@ describe("BaseEngine", () => {
|
|
|
114
113
|
await engine.stop();
|
|
115
114
|
});
|
|
116
115
|
|
|
117
|
-
it("reports build
|
|
116
|
+
it("reports build result to ResultCollector", async () => {
|
|
118
117
|
const mockResultCollector = { add: vi.fn() };
|
|
119
118
|
|
|
120
119
|
mockWorker.startWatch.mockImplementation(() => {
|
|
@@ -122,8 +121,7 @@ describe("BaseEngine", () => {
|
|
|
122
121
|
(call: any[]) => call[0] === "build",
|
|
123
122
|
)?.[1];
|
|
124
123
|
buildHandler?.({
|
|
125
|
-
|
|
126
|
-
dts: { success: false, errors: ["type error"] },
|
|
124
|
+
build: { success: false, errors: ["type error"] },
|
|
127
125
|
});
|
|
128
126
|
});
|
|
129
127
|
|
|
@@ -137,13 +135,10 @@ describe("BaseEngine", () => {
|
|
|
137
135
|
|
|
138
136
|
const addCalls = mockResultCollector.add.mock.calls;
|
|
139
137
|
const buildResult = addCalls.find((c: any[]) => c[0].type === "build");
|
|
140
|
-
const dtsResult = addCalls.find((c: any[]) => c[0].type === "dts");
|
|
141
138
|
|
|
142
139
|
expect(buildResult).toBeDefined();
|
|
143
|
-
expect(buildResult![0].status).toBe("
|
|
140
|
+
expect(buildResult![0].status).toBe("error");
|
|
144
141
|
expect(buildResult![0].target).toBe("node");
|
|
145
|
-
expect(dtsResult).toBeDefined();
|
|
146
|
-
expect(dtsResult![0].status).toBe("error");
|
|
147
142
|
|
|
148
143
|
await engine.stop();
|
|
149
144
|
});
|
|
@@ -157,7 +152,7 @@ describe("BaseEngine", () => {
|
|
|
157
152
|
const buildHandler = mockWorker.on.mock.calls.find(
|
|
158
153
|
(call: any[]) => call[0] === "build",
|
|
159
154
|
)?.[1];
|
|
160
|
-
buildHandler?.({
|
|
155
|
+
buildHandler?.({ build: { success: true } });
|
|
161
156
|
});
|
|
162
157
|
|
|
163
158
|
const engine = new TscEngine({
|
|
@@ -182,7 +177,7 @@ describe("BaseEngine", () => {
|
|
|
182
177
|
"test-pkg (node)",
|
|
183
178
|
);
|
|
184
179
|
|
|
185
|
-
buildHandler?.({
|
|
180
|
+
buildHandler?.({ build: { success: true } });
|
|
186
181
|
expect(mockResolver).toHaveBeenCalled();
|
|
187
182
|
|
|
188
183
|
await engine.stop();
|
|
@@ -209,7 +204,7 @@ describe("BaseEngine", () => {
|
|
|
209
204
|
const buildHandler = mockWorker.on.mock.calls.find(
|
|
210
205
|
(call: any[]) => call[0] === "build",
|
|
211
206
|
)?.[1];
|
|
212
|
-
buildHandler?.({
|
|
207
|
+
buildHandler?.({ build: { success: true } });
|
|
213
208
|
});
|
|
214
209
|
|
|
215
210
|
const engine = new TscEngine({
|
|
@@ -229,7 +224,7 @@ describe("BaseEngine", () => {
|
|
|
229
224
|
)?.[1];
|
|
230
225
|
|
|
231
226
|
buildStartHandler?.({});
|
|
232
|
-
buildHandler?.({
|
|
227
|
+
buildHandler?.({ build: { success: true } });
|
|
233
228
|
|
|
234
229
|
// The resolver should have been called, which resolves the RebuildManager promise
|
|
235
230
|
expect(resolverFn).toBeDefined();
|
|
@@ -237,7 +232,7 @@ describe("BaseEngine", () => {
|
|
|
237
232
|
await engine.stop();
|
|
238
233
|
});
|
|
239
234
|
|
|
240
|
-
it("
|
|
235
|
+
it("calls registerBuild on initial buildStart as well as rebuilds", async () => {
|
|
241
236
|
const mockRebuildManager = { registerBuild: vi.fn(() => vi.fn()) };
|
|
242
237
|
|
|
243
238
|
mockWorker.startWatch.mockImplementation(() => {
|
|
@@ -251,7 +246,7 @@ describe("BaseEngine", () => {
|
|
|
251
246
|
const buildHandler = mockWorker.on.mock.calls.find(
|
|
252
247
|
(call: any[]) => call[0] === "build",
|
|
253
248
|
)?.[1];
|
|
254
|
-
buildHandler?.({
|
|
249
|
+
buildHandler?.({ build: { success: true } });
|
|
255
250
|
});
|
|
256
251
|
|
|
257
252
|
const engine = new TscEngine({
|
|
@@ -262,8 +257,8 @@ describe("BaseEngine", () => {
|
|
|
262
257
|
|
|
263
258
|
await engine.startWatch({ js: true, dts: true });
|
|
264
259
|
|
|
265
|
-
// registerBuild should
|
|
266
|
-
expect(mockRebuildManager.registerBuild).
|
|
260
|
+
// registerBuild should be called for ALL builds including initial
|
|
261
|
+
expect(mockRebuildManager.registerBuild).toHaveBeenCalledOnce();
|
|
267
262
|
|
|
268
263
|
await engine.stop();
|
|
269
264
|
});
|
|
@@ -276,8 +271,7 @@ describe("BaseEngine", () => {
|
|
|
276
271
|
(call: any[]) => call[0] === "build",
|
|
277
272
|
)?.[1];
|
|
278
273
|
buildHandler?.({
|
|
279
|
-
|
|
280
|
-
dts: { success: true },
|
|
274
|
+
build: { success: true },
|
|
281
275
|
});
|
|
282
276
|
});
|
|
283
277
|
|
|
@@ -48,8 +48,7 @@ function createMockPkg(): BuildPackageInfo {
|
|
|
48
48
|
beforeEach(() => {
|
|
49
49
|
vi.clearAllMocks();
|
|
50
50
|
mockWorker.build.mockResolvedValue({
|
|
51
|
-
|
|
52
|
-
dts: { success: true, diagnostics: [] },
|
|
51
|
+
build: { success: true, diagnostics: [] },
|
|
53
52
|
lint: { success: true, errorCount: 0, warningCount: 0, formattedOutput: "" },
|
|
54
53
|
});
|
|
55
54
|
mockWorker.terminate.mockResolvedValue(undefined);
|
|
@@ -72,8 +71,7 @@ describe("엔진 lint 통합 (Slice 2)", () => {
|
|
|
72
71
|
describe("Scenario: EngineResult includes lint field", () => {
|
|
73
72
|
it("run() returns EngineResult with lint field when worker provides it", async () => {
|
|
74
73
|
mockWorker.build.mockResolvedValue({
|
|
75
|
-
|
|
76
|
-
dts: { success: true, diagnostics: [] },
|
|
74
|
+
build: { success: true, diagnostics: [] },
|
|
77
75
|
lint: { success: false, errorCount: 3, warningCount: 1, formattedOutput: "lint errors" },
|
|
78
76
|
});
|
|
79
77
|
|
|
@@ -92,8 +90,7 @@ describe("엔진 lint 통합 (Slice 2)", () => {
|
|
|
92
90
|
|
|
93
91
|
it("run() returns EngineResult without lint when lint is not in output", async () => {
|
|
94
92
|
mockWorker.build.mockResolvedValue({
|
|
95
|
-
|
|
96
|
-
dts: { success: true, diagnostics: [] },
|
|
93
|
+
build: { success: true, diagnostics: [] },
|
|
97
94
|
});
|
|
98
95
|
|
|
99
96
|
const engine = new TscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
@@ -114,8 +111,7 @@ describe("엔진 lint 통합 (Slice 2)", () => {
|
|
|
114
111
|
(call: any[]) => call[0] === "build",
|
|
115
112
|
)?.[1];
|
|
116
113
|
buildHandler?.({
|
|
117
|
-
|
|
118
|
-
dts: { success: true },
|
|
114
|
+
build: { success: true },
|
|
119
115
|
lint: { success: false, errorCount: 2, warningCount: 0, formattedOutput: "errors" },
|
|
120
116
|
});
|
|
121
117
|
});
|
|
@@ -150,8 +146,7 @@ describe("엔진 lint 통합 (Slice 2)", () => {
|
|
|
150
146
|
(call: any[]) => call[0] === "build",
|
|
151
147
|
)?.[1];
|
|
152
148
|
buildHandler?.({
|
|
153
|
-
|
|
154
|
-
dts: { success: true },
|
|
149
|
+
build: { success: true },
|
|
155
150
|
});
|
|
156
151
|
});
|
|
157
152
|
|
|
@@ -63,8 +63,7 @@ describe("NgtscEngine", () => {
|
|
|
63
63
|
// Acceptance: Scenario "run()으로 one-time 빌드를 수행한다"
|
|
64
64
|
it("creates worker, calls build, and returns EngineResult with js/dts", async () => {
|
|
65
65
|
mockWorker.build.mockResolvedValue({
|
|
66
|
-
|
|
67
|
-
dts: { success: true, errors: undefined, diagnostics: [] },
|
|
66
|
+
build: { success: true, errors: undefined, warnings: undefined, diagnostics: [] },
|
|
68
67
|
});
|
|
69
68
|
|
|
70
69
|
const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
@@ -80,17 +79,15 @@ describe("NgtscEngine", () => {
|
|
|
80
79
|
}),
|
|
81
80
|
);
|
|
82
81
|
expect(result.success).toBe(true);
|
|
83
|
-
expect(result.
|
|
84
|
-
expect(result.
|
|
85
|
-
expect(result.dts.diagnostics).toEqual([]);
|
|
82
|
+
expect(result.build.success).toBe(true);
|
|
83
|
+
expect(result.build.diagnostics).toEqual([]);
|
|
86
84
|
await engine.stop();
|
|
87
85
|
});
|
|
88
86
|
|
|
89
87
|
// Acceptance: Scenario "run()에서 dts: false면 .d.ts를 생략한다"
|
|
90
88
|
it("passes dts:false output flag to worker", async () => {
|
|
91
89
|
mockWorker.build.mockResolvedValue({
|
|
92
|
-
|
|
93
|
-
dts: { success: true, errors: undefined, diagnostics: [] },
|
|
90
|
+
build: { success: true, errors: undefined, warnings: undefined, diagnostics: [] },
|
|
94
91
|
});
|
|
95
92
|
|
|
96
93
|
const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
@@ -105,10 +102,10 @@ describe("NgtscEngine", () => {
|
|
|
105
102
|
// Acceptance: Scenario "TypeScript + Angular diagnostics를 통합 수집한다"
|
|
106
103
|
it("includes diagnostics in result from worker", async () => {
|
|
107
104
|
mockWorker.build.mockResolvedValue({
|
|
108
|
-
|
|
109
|
-
dts: {
|
|
105
|
+
build: {
|
|
110
106
|
success: false,
|
|
111
107
|
errors: ["type error"],
|
|
108
|
+
warnings: undefined,
|
|
112
109
|
diagnostics: [{ code: 2322, category: 1, messageText: "Type error" }],
|
|
113
110
|
},
|
|
114
111
|
});
|
|
@@ -116,19 +113,19 @@ describe("NgtscEngine", () => {
|
|
|
116
113
|
const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
117
114
|
const result = await engine.run({ js: true, dts: true });
|
|
118
115
|
|
|
119
|
-
expect(result.
|
|
120
|
-
expect(result.
|
|
121
|
-
expect(result.
|
|
116
|
+
expect(result.build.success).toBe(false);
|
|
117
|
+
expect(result.build.diagnostics).toHaveLength(1);
|
|
118
|
+
expect(result.build.diagnostics[0].code).toBe(2322);
|
|
122
119
|
await engine.stop();
|
|
123
120
|
});
|
|
124
121
|
|
|
125
122
|
// Acceptance: Scenario "타입 에러가 있어도 빌드 결과를 반환한다"
|
|
126
|
-
it("returns result even when
|
|
123
|
+
it("returns result even when build has errors", async () => {
|
|
127
124
|
mockWorker.build.mockResolvedValue({
|
|
128
|
-
|
|
129
|
-
dts: {
|
|
125
|
+
build: {
|
|
130
126
|
success: false,
|
|
131
127
|
errors: ["TS2322: Type error"],
|
|
128
|
+
warnings: undefined,
|
|
132
129
|
diagnostics: [{ code: 2322, category: 1, messageText: "Type error" }],
|
|
133
130
|
},
|
|
134
131
|
});
|
|
@@ -137,40 +134,36 @@ describe("NgtscEngine", () => {
|
|
|
137
134
|
const result = await engine.run({ js: true, dts: true });
|
|
138
135
|
|
|
139
136
|
expect(result.success).toBe(false);
|
|
140
|
-
expect(result.
|
|
141
|
-
expect(result.
|
|
142
|
-
expect(result.dts.errors).toContain("TS2322: Type error");
|
|
137
|
+
expect(result.build.success).toBe(false);
|
|
138
|
+
expect(result.build.errors).toContain("TS2322: Type error");
|
|
143
139
|
await engine.stop();
|
|
144
140
|
});
|
|
145
141
|
|
|
146
|
-
// Unit:
|
|
147
|
-
it("reflects
|
|
142
|
+
// Unit: build failure reflects in overall success
|
|
143
|
+
it("reflects build failure in result", async () => {
|
|
148
144
|
mockWorker.build.mockResolvedValue({
|
|
149
|
-
|
|
150
|
-
dts: { success: true, errors: undefined, diagnostics: [] },
|
|
145
|
+
build: { success: false, errors: ["ngtsc compilation error"], warnings: undefined, diagnostics: [] },
|
|
151
146
|
});
|
|
152
147
|
|
|
153
148
|
const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
154
149
|
const result = await engine.run({ js: true, dts: true });
|
|
155
150
|
|
|
156
151
|
expect(result.success).toBe(false);
|
|
157
|
-
expect(result.
|
|
158
|
-
expect(result.
|
|
159
|
-
expect(result.dts.success).toBe(true);
|
|
152
|
+
expect(result.build.success).toBe(false);
|
|
153
|
+
expect(result.build.errors).toEqual(["ngtsc compilation error"]);
|
|
160
154
|
await engine.stop();
|
|
161
155
|
});
|
|
162
156
|
|
|
163
157
|
// Unit: warnings are mapped through
|
|
164
158
|
it("maps worker warnings to EngineResult", async () => {
|
|
165
159
|
mockWorker.build.mockResolvedValue({
|
|
166
|
-
|
|
167
|
-
dts: { success: true, errors: undefined, diagnostics: [] },
|
|
160
|
+
build: { success: true, errors: undefined, warnings: ["deprecation warning"], diagnostics: [] },
|
|
168
161
|
});
|
|
169
162
|
|
|
170
163
|
const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
171
164
|
const result = await engine.run({ js: true, dts: true });
|
|
172
165
|
|
|
173
|
-
expect(result.
|
|
166
|
+
expect(result.build.warnings).toEqual(["deprecation warning"]);
|
|
174
167
|
await engine.stop();
|
|
175
168
|
});
|
|
176
169
|
});
|
|
@@ -179,8 +172,7 @@ describe("NgtscEngine", () => {
|
|
|
179
172
|
// Acceptance: Scenario "stop()으로 리소스를 정리한다"
|
|
180
173
|
it("terminates worker on stop", async () => {
|
|
181
174
|
mockWorker.build.mockResolvedValue({
|
|
182
|
-
|
|
183
|
-
dts: { success: true, errors: undefined, diagnostics: [] },
|
|
175
|
+
build: { success: true, errors: undefined, warnings: undefined, diagnostics: [] },
|
|
184
176
|
});
|
|
185
177
|
|
|
186
178
|
const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
@@ -198,8 +190,7 @@ describe("NgtscEngine", () => {
|
|
|
198
190
|
// Unit: run mode doesn't call stopWatch
|
|
199
191
|
it("skips stopWatch in run mode", async () => {
|
|
200
192
|
mockWorker.build.mockResolvedValue({
|
|
201
|
-
|
|
202
|
-
dts: { success: true, errors: undefined, diagnostics: [] },
|
|
193
|
+
build: { success: true, errors: undefined, warnings: undefined, diagnostics: [] },
|
|
203
194
|
});
|
|
204
195
|
|
|
205
196
|
const engine = new NgtscEngine({ cwd: "/root", pkg: createMockPkg() });
|
|
@@ -219,8 +210,7 @@ describe("NgtscEngine", () => {
|
|
|
219
210
|
(call: any[]) => call[0] === "build",
|
|
220
211
|
)?.[1];
|
|
221
212
|
buildHandler?.({
|
|
222
|
-
|
|
223
|
-
dts: { success: true },
|
|
213
|
+
build: { success: true },
|
|
224
214
|
});
|
|
225
215
|
});
|
|
226
216
|
|
|
@@ -238,7 +228,7 @@ describe("NgtscEngine", () => {
|
|
|
238
228
|
});
|
|
239
229
|
|
|
240
230
|
// Unit: watch mode results reported to ResultCollector
|
|
241
|
-
it("reports build
|
|
231
|
+
it("reports build result to ResultCollector", async () => {
|
|
242
232
|
const mockResultCollector = { add: vi.fn() };
|
|
243
233
|
|
|
244
234
|
mockWorker.startWatch.mockImplementation(() => {
|
|
@@ -246,8 +236,7 @@ describe("NgtscEngine", () => {
|
|
|
246
236
|
(call: any[]) => call[0] === "build",
|
|
247
237
|
)?.[1];
|
|
248
238
|
buildHandler?.({
|
|
249
|
-
|
|
250
|
-
dts: { success: false, errors: ["type error"] },
|
|
239
|
+
build: { success: false, errors: ["type error"] },
|
|
251
240
|
});
|
|
252
241
|
});
|
|
253
242
|
|
|
@@ -261,12 +250,9 @@ describe("NgtscEngine", () => {
|
|
|
261
250
|
|
|
262
251
|
const addCalls = mockResultCollector.add.mock.calls;
|
|
263
252
|
const buildResult = addCalls.find((c: any[]) => c[0].type === "build");
|
|
264
|
-
const dtsResult = addCalls.find((c: any[]) => c[0].type === "dts");
|
|
265
253
|
|
|
266
254
|
expect(buildResult).toBeDefined();
|
|
267
|
-
expect(buildResult![0].status).toBe("
|
|
268
|
-
expect(dtsResult).toBeDefined();
|
|
269
|
-
expect(dtsResult![0].status).toBe("error");
|
|
255
|
+
expect(buildResult![0].status).toBe("error");
|
|
270
256
|
|
|
271
257
|
await engine.stop();
|
|
272
258
|
});
|