@simplysm/sd-cli 14.0.75 → 14.0.77

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/dist/angular/ngtsc-build-core.js +2 -2
  2. package/dist/angular/ngtsc-build-core.js.map +1 -1
  3. package/dist/angular/vite-angular-plugin.js +2 -2
  4. package/dist/angular/vite-angular-plugin.js.map +1 -1
  5. package/dist/capacitor/capacitor-android.js +2 -2
  6. package/dist/capacitor/capacitor-android.js.map +1 -1
  7. package/dist/capacitor/capacitor-build.js +2 -2
  8. package/dist/capacitor/capacitor-build.js.map +1 -1
  9. package/dist/capacitor/capacitor-icon.js +2 -2
  10. package/dist/capacitor/capacitor-icon.js.map +1 -1
  11. package/dist/capacitor/capacitor-npm-config.js +2 -2
  12. package/dist/capacitor/capacitor-npm-config.js.map +1 -1
  13. package/dist/capacitor/capacitor.d.ts.map +1 -1
  14. package/dist/capacitor/capacitor.js +2 -2
  15. package/dist/capacitor/capacitor.js.map +1 -1
  16. package/dist/commands/check.d.ts.map +1 -1
  17. package/dist/commands/check.js +2 -3
  18. package/dist/commands/check.js.map +1 -1
  19. package/dist/commands/device.js +2 -2
  20. package/dist/commands/device.js.map +1 -1
  21. package/dist/commands/init/init.js +2 -2
  22. package/dist/commands/init/init.js.map +1 -1
  23. package/dist/commands/publish/deployment-phase.d.ts +2 -2
  24. package/dist/commands/publish/deployment-phase.d.ts.map +1 -1
  25. package/dist/commands/publish/deployment-phase.js.map +1 -1
  26. package/dist/commands/publish/git-phase.d.ts +3 -3
  27. package/dist/commands/publish/git-phase.d.ts.map +1 -1
  28. package/dist/commands/publish/git-phase.js.map +1 -1
  29. package/dist/commands/publish/local-publisher.d.ts +2 -2
  30. package/dist/commands/publish/local-publisher.d.ts.map +1 -1
  31. package/dist/commands/publish/local-publisher.js.map +1 -1
  32. package/dist/commands/publish/npm-publisher.d.ts +2 -2
  33. package/dist/commands/publish/npm-publisher.d.ts.map +1 -1
  34. package/dist/commands/publish/npm-publisher.js.map +1 -1
  35. package/dist/commands/publish/post-publish-phase.d.ts +2 -2
  36. package/dist/commands/publish/post-publish-phase.d.ts.map +1 -1
  37. package/dist/commands/publish/post-publish-phase.js.map +1 -1
  38. package/dist/commands/publish/publish-command.js +2 -2
  39. package/dist/commands/publish/publish-command.js.map +1 -1
  40. package/dist/commands/publish/storage-publisher.d.ts +3 -3
  41. package/dist/commands/publish/storage-publisher.d.ts.map +1 -1
  42. package/dist/commands/publish/storage-publisher.js.map +1 -1
  43. package/dist/commands/replace-deps.js +2 -2
  44. package/dist/commands/replace-deps.js.map +1 -1
  45. package/dist/deps/replace-deps/collect-deps.js +2 -2
  46. package/dist/deps/replace-deps/collect-deps.js.map +1 -1
  47. package/dist/deps/replace-deps/replace-deps-resolve.d.ts +2 -2
  48. package/dist/deps/replace-deps/replace-deps-resolve.d.ts.map +1 -1
  49. package/dist/deps/replace-deps/replace-deps-resolve.js.map +1 -1
  50. package/dist/deps/replace-deps/replace-deps.d.ts.map +1 -1
  51. package/dist/deps/replace-deps/replace-deps.js +4 -3
  52. package/dist/deps/replace-deps/replace-deps.js.map +1 -1
  53. package/dist/deps/server-externals/server-production-files.js +2 -2
  54. package/dist/deps/server-externals/server-production-files.js.map +1 -1
  55. package/dist/electron/electron.d.ts.map +1 -1
  56. package/dist/electron/electron.js +2 -2
  57. package/dist/electron/electron.js.map +1 -1
  58. package/dist/engines/BaseEngine.js +2 -2
  59. package/dist/engines/BaseEngine.js.map +1 -1
  60. package/dist/engines/EsbuildClientEngine.js +2 -2
  61. package/dist/engines/EsbuildClientEngine.js.map +1 -1
  62. package/dist/engines/NgtscEngine.js +2 -2
  63. package/dist/engines/NgtscEngine.js.map +1 -1
  64. package/dist/engines/ServerEsbuildEngine.js +2 -2
  65. package/dist/engines/ServerEsbuildEngine.js.map +1 -1
  66. package/dist/engines/TscEngine.js +2 -2
  67. package/dist/engines/TscEngine.js.map +1 -1
  68. package/dist/engines/engine-factory.js +2 -2
  69. package/dist/engines/engine-factory.js.map +1 -1
  70. package/dist/esbuild/esbuild-angular-compiler-plugin.js +2 -2
  71. package/dist/esbuild/esbuild-angular-compiler-plugin.js.map +1 -1
  72. package/dist/esbuild/esbuild-config.js +2 -2
  73. package/dist/esbuild/esbuild-config.js.map +1 -1
  74. package/dist/lint/lint-core.d.ts.map +1 -1
  75. package/dist/lint/lint-core.js +2 -3
  76. package/dist/lint/lint-core.js.map +1 -1
  77. package/dist/lint/lint-with-program.js +2 -2
  78. package/dist/lint/lint-with-program.js.map +1 -1
  79. package/dist/orchestrators/BaseOrchestrator.d.ts.map +1 -1
  80. package/dist/orchestrators/BaseOrchestrator.js +3 -2
  81. package/dist/orchestrators/BaseOrchestrator.js.map +1 -1
  82. package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -1
  83. package/dist/orchestrators/BuildOrchestrator.js +2 -2
  84. package/dist/orchestrators/BuildOrchestrator.js.map +1 -1
  85. package/dist/orchestrators/TypecheckOrchestrator.d.ts.map +1 -1
  86. package/dist/orchestrators/TypecheckOrchestrator.js +2 -2
  87. package/dist/orchestrators/TypecheckOrchestrator.js.map +1 -1
  88. package/dist/runtime/rebuild-manager.d.ts +2 -2
  89. package/dist/runtime/rebuild-manager.d.ts.map +1 -1
  90. package/dist/runtime/rebuild-manager.js +1 -1
  91. package/dist/runtime/rebuild-manager.js.map +1 -1
  92. package/dist/sd-cli-entry.js +2 -2
  93. package/dist/sd-cli-entry.js.map +1 -1
  94. package/dist/sd-cli.js +2 -2
  95. package/dist/sd-cli.js.map +1 -1
  96. package/dist/ts-compiler/SdTsCompiler.d.ts.map +1 -1
  97. package/dist/ts-compiler/SdTsCompiler.js +3 -7
  98. package/dist/ts-compiler/SdTsCompiler.js.map +1 -1
  99. package/dist/typecheck/typecheck-non-package.js +2 -2
  100. package/dist/typecheck/typecheck-non-package.js.map +1 -1
  101. package/dist/utils/output-utils.js +2 -2
  102. package/dist/utils/output-utils.js.map +1 -1
  103. package/dist/utils/package-classify.js +2 -2
  104. package/dist/utils/package-classify.js.map +1 -1
  105. package/dist/utils/package-utils.js +2 -2
  106. package/dist/utils/package-utils.js.map +1 -1
  107. package/dist/utils/sd-config.js +2 -2
  108. package/dist/utils/sd-config.js.map +1 -1
  109. package/dist/utils/tsconfig.js +2 -2
  110. package/dist/utils/tsconfig.js.map +1 -1
  111. package/dist/workers/server-runtime.worker.js +2 -2
  112. package/dist/workers/server-runtime.worker.js.map +1 -1
  113. package/dist/workers/shared-worker-lifecycle.d.ts +1 -1
  114. package/dist/workers/shared-worker-lifecycle.d.ts.map +1 -1
  115. package/dist/workers/shared-worker-lifecycle.js +4 -3
  116. package/dist/workers/shared-worker-lifecycle.js.map +1 -1
  117. package/package.json +6 -6
  118. package/src/angular/ngtsc-build-core.ts +2 -2
  119. package/src/angular/vite-angular-plugin.ts +2 -2
  120. package/src/capacitor/capacitor-android.ts +2 -2
  121. package/src/capacitor/capacitor-build.ts +2 -2
  122. package/src/capacitor/capacitor-icon.ts +2 -2
  123. package/src/capacitor/capacitor-npm-config.ts +2 -2
  124. package/src/capacitor/capacitor.ts +2 -2
  125. package/src/commands/check.ts +2 -3
  126. package/src/commands/device.ts +2 -2
  127. package/src/commands/init/init.ts +2 -2
  128. package/src/commands/init/templates/workspace-root/pnpm-workspace.yaml +1 -0
  129. package/src/commands/publish/deployment-phase.ts +3 -3
  130. package/src/commands/publish/git-phase.ts +3 -3
  131. package/src/commands/publish/local-publisher.ts +2 -2
  132. package/src/commands/publish/npm-publisher.ts +2 -2
  133. package/src/commands/publish/post-publish-phase.ts +2 -2
  134. package/src/commands/publish/publish-command.ts +2 -2
  135. package/src/commands/publish/storage-publisher.ts +3 -3
  136. package/src/commands/replace-deps.ts +2 -2
  137. package/src/deps/replace-deps/collect-deps.ts +2 -2
  138. package/src/deps/replace-deps/replace-deps-resolve.ts +2 -2
  139. package/src/deps/replace-deps/replace-deps.ts +5 -4
  140. package/src/deps/server-externals/server-production-files.ts +2 -2
  141. package/src/electron/electron.ts +2 -2
  142. package/src/engines/BaseEngine.ts +2 -2
  143. package/src/engines/EsbuildClientEngine.ts +2 -2
  144. package/src/engines/NgtscEngine.ts +2 -2
  145. package/src/engines/ServerEsbuildEngine.ts +2 -2
  146. package/src/engines/TscEngine.ts +2 -2
  147. package/src/engines/engine-factory.ts +2 -2
  148. package/src/esbuild/esbuild-angular-compiler-plugin.ts +2 -2
  149. package/src/esbuild/esbuild-config.ts +2 -2
  150. package/src/lint/lint-core.ts +2 -3
  151. package/src/lint/lint-with-program.ts +2 -2
  152. package/src/orchestrators/BaseOrchestrator.ts +3 -2
  153. package/src/orchestrators/BuildOrchestrator.ts +2 -2
  154. package/src/orchestrators/TypecheckOrchestrator.ts +2 -2
  155. package/src/runtime/rebuild-manager.ts +3 -3
  156. package/src/sd-cli-entry.ts +2 -2
  157. package/src/sd-cli.ts +2 -2
  158. package/src/ts-compiler/SdTsCompiler.ts +3 -7
  159. package/src/typecheck/typecheck-non-package.ts +2 -2
  160. package/src/utils/output-utils.ts +2 -2
  161. package/src/utils/package-classify.ts +2 -2
  162. package/src/utils/package-utils.ts +2 -2
  163. package/src/utils/sd-config.ts +2 -2
  164. package/src/utils/tsconfig.ts +2 -2
  165. package/src/workers/server-runtime.worker.ts +2 -2
  166. package/src/workers/shared-worker-lifecycle.ts +4 -3
  167. package/tests/commands/check.spec.ts +2 -2
  168. package/tests/commands/deployment-phase.acc.spec.ts +5 -5
  169. package/tests/commands/git-phase.acc.spec.ts +1 -1
  170. package/tests/commands/post-publish-phase.acc.spec.ts +1 -1
  171. package/tests/commands/typecheck.spec.ts +2 -2
  172. package/tests/deps/replace-deps/replace-deps-resolve.acc.spec.ts +2 -2
  173. package/tests/electron/electron.spec.ts +3 -3
  174. package/tests/orchestrators/build-orchestrator.spec.ts +2 -2
  175. package/tests/utils/lint-with-program.spec.ts +2 -2
  176. package/tests/utils/output-utils.spec.ts +4 -3
  177. package/tests/utils/replace-deps-watch.spec.ts +2 -2
  178. package/tests/utils/worker-utils.spec.ts +3 -2
  179. package/tests/workers/build-change-filter.acc.spec.ts +2 -2
  180. package/tests/workers/build-change-filter.spec.ts +2 -2
  181. package/tests/workers/shared-worker-lifecycle.spec.ts +5 -5
  182. package/dist/runtime/lazy-logger.d.ts +0 -14
  183. package/dist/runtime/lazy-logger.d.ts.map +0 -1
  184. package/dist/runtime/lazy-logger.js +0 -23
  185. package/dist/runtime/lazy-logger.js.map +0 -1
  186. package/src/runtime/lazy-logger.ts +0 -23
@@ -1,8 +1,8 @@
1
1
  import path from "path";
2
2
  import { createHash } from "crypto";
3
3
  import ts from "typescript";
4
- import { consola, type ConsolaInstance } from "consola";
5
- import { SdError } from "@simplysm/core-common";
4
+ import { type ConsolaInstance } from "consola";
5
+ import { SdError, createLogger } from "@simplysm/core-common";
6
6
  import { pathx } from "@simplysm/core-node";
7
7
  import type { ISdTsCompilerOptions, ISdTsCompilerEmitOptions } from "./sd-ts-compiler-options";
8
8
  import type { ISdTsCompilerResult } from "./sd-ts-compiler-result";
@@ -82,11 +82,7 @@ export class SdTsCompiler {
82
82
  // ── 크래시 디버깅용 컨텍스트 (compileAsync 내 단계/파일 진입 시 갱신) ──
83
83
  private _crashContext?: { stage: string; file?: string };
84
84
 
85
- // ── Logger ──
86
- // NOTE: 모듈 레벨이 아닌 인스턴스 레벨에서 생성해야 한다.
87
- // consola.withTag는 호출 시점의 consola.level/reporters를 스냅샷 복사하므로,
88
- // setupConsola 이전(모듈 import 시점)에 만들면 debug 레벨이 반영되지 않는다.
89
- private readonly _logger: ConsolaInstance = consola.withTag("sd:cli:SdTsCompiler");
85
+ private readonly _logger: ConsolaInstance = createLogger("sd:cli:SdTsCompiler");
90
86
 
91
87
  constructor(options: ISdTsCompilerOptions) {
92
88
  this._options = options;
@@ -1,11 +1,11 @@
1
1
  import path from "path";
2
2
  import ts from "typescript";
3
3
  import { pathx } from "@simplysm/core-node";
4
- import { createLazyLogger } from "../runtime/lazy-logger";
4
+ import { createLogger } from "@simplysm/core-common";
5
5
  import { parseTsconfig } from "../utils/tsconfig";
6
6
  import { serializeDiagnostic, type SerializedDiagnostic } from "./typecheck-serialization";
7
7
 
8
- const logger = createLazyLogger("sd:cli:typecheck-non-pkg");
8
+ const logger = createLogger("sd:cli:typecheck-non-pkg");
9
9
 
10
10
  export interface NonPackageTypecheckResult {
11
11
  success: boolean;
@@ -1,8 +1,8 @@
1
1
  import { formatMessagesSync, type PartialMessage } from "esbuild";
2
- import { createLazyLogger } from "../runtime/lazy-logger";
2
+ import { createLogger } from "@simplysm/core-common";
3
3
  import type { BuildResult } from "../runtime/ResultCollector";
4
4
 
5
- const logger = createLazyLogger("sd:cli:output");
5
+ const logger = createLogger("sd:cli:output");
6
6
 
7
7
  /**
8
8
  * esbuild Message 배열을 포맷된 문자열 배열로 변환한다.
@@ -1,6 +1,6 @@
1
1
  import path from "path";
2
2
  import { pathx } from "@simplysm/core-node";
3
- import { createLazyLogger } from "../runtime/lazy-logger";
3
+ import { createLogger } from "@simplysm/core-common";
4
4
  import type {
5
5
  BuildTarget,
6
6
  SdBuildPackageConfig,
@@ -10,7 +10,7 @@ import type {
10
10
  SdServerPackageConfig,
11
11
  } from "../sd-config.types";
12
12
 
13
- const logger = createLazyLogger("sd:cli:package-classify");
13
+ const logger = createLogger("sd:cli:package-classify");
14
14
 
15
15
  /**
16
16
  * 패키지 config를 순회하며 null 필터링 + target 필터링을 수행한다.
@@ -2,12 +2,12 @@ import path from "path";
2
2
  import fs from "fs";
3
3
  import { SdError } from "@simplysm/core-common";
4
4
  import { pathx } from "@simplysm/core-node";
5
- import { createLazyLogger } from "../runtime/lazy-logger";
5
+ import { createLogger } from "@simplysm/core-common";
6
6
  import type {
7
7
  SdPackageConfig,
8
8
  } from "../sd-config.types";
9
9
 
10
- const logger = createLazyLogger("sd:cli:package-utils");
10
+ const logger = createLogger("sd:cli:package-utils");
11
11
 
12
12
  /**
13
13
  * import.meta.dirname에서 위로 탐색하여 package.json을 찾고 패키지 루트를 반환한다.
@@ -1,10 +1,10 @@
1
1
  import { createJiti } from "jiti";
2
2
  import { SdError } from "@simplysm/core-common";
3
3
  import { fsx, pathx } from "@simplysm/core-node";
4
- import { createLazyLogger } from "../runtime/lazy-logger";
4
+ import { createLogger } from "@simplysm/core-common";
5
5
  import type { SdConfig, SdConfigParams } from "../sd-config.types";
6
6
 
7
- const logger = createLazyLogger("sd:cli:sd-config");
7
+ const logger = createLogger("sd:cli:sd-config");
8
8
 
9
9
  /**
10
10
  * sd.config.ts를 로드한다.
@@ -2,9 +2,9 @@ import path from "path";
2
2
  import fs from "fs";
3
3
  import ts from "typescript";
4
4
  import { pathx } from "@simplysm/core-node";
5
- import { createLazyLogger } from "../runtime/lazy-logger";
5
+ import { createLogger } from "@simplysm/core-common";
6
6
 
7
- const logger = createLazyLogger("sd:cli:tsconfig");
7
+ const logger = createLogger("sd:cli:tsconfig");
8
8
 
9
9
  //#region TypecheckEnv
10
10
 
@@ -2,7 +2,7 @@ import fs from "node:fs";
2
2
  import path from "path";
3
3
  import { createWorker } from "@simplysm/core-node";
4
4
  import { env, err as errNs } from "@simplysm/core-common";
5
- import { consola } from "consola";
5
+ import { createLogger } from "@simplysm/core-common";
6
6
  import proxy from "@fastify/http-proxy";
7
7
  import net from "net";
8
8
  import { pathToFileURL } from "url";
@@ -46,7 +46,7 @@ export interface ServerRuntimeWorkerEvents extends Record<string, unknown> {
46
46
 
47
47
  setupWorkerConsola();
48
48
 
49
- const logger = consola.withTag("sd:cli:server-runtime:worker");
49
+ const logger = createLogger("sd:cli:server-runtime:worker");
50
50
 
51
51
  /** 서버 인스턴스 (정리 대상) */
52
52
  let serverInstance: { close: () => Promise<void> } | undefined;
@@ -1,4 +1,5 @@
1
- import { type ConsolaInstance, consola } from "consola";
1
+ import { type ConsolaInstance } from "consola";
2
+ import { createLogger } from "@simplysm/core-common";
2
3
  import {
3
4
  setupWorkerConsola,
4
5
  registerCleanupHandlers,
@@ -9,7 +10,7 @@ import {
9
10
  * Worker Thread의 공통 초기화를 단일 호출로 수행한다.
10
11
  *
11
12
  * 1. setupWorkerConsola() — consola CLI 모드 설정
12
- * 2. consola.withTag() — 워커별 태그 로거 생성
13
+ * 2. createLogger() — 워커별 태그 로거 생성
13
14
  * 3. registerCleanupHandlers() — SIGTERM/SIGINT 정리 핸들러 등록
14
15
  * 4. createOnceGuard("startWatch") — startWatch 중복 호출 방지 가드 생성
15
16
  */
@@ -18,7 +19,7 @@ export function setupWorkerLifecycle(
18
19
  cleanupFn: () => void | Promise<void>,
19
20
  ): { logger: ConsolaInstance; guardStartWatch: () => void } {
20
21
  setupWorkerConsola();
21
- const logger = consola.withTag(`sd:cli:${workerName}:worker`);
22
+ const logger = createLogger(`sd:cli:${workerName}:worker`);
22
23
  registerCleanupHandlers(cleanupFn, logger);
23
24
  return { logger, guardStartWatch: createOnceGuard("startWatch") };
24
25
  }
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach, afterEach } from "vitest";
2
- import { consola } from "consola";
2
+ import * as coreCommon from "@simplysm/core-common";
3
3
 
4
4
  import * as typecheckOrchestrator from "../../src/orchestrators/TypecheckOrchestrator";
5
5
  import * as lintCore from "../../src/lint/lint-core";
@@ -42,7 +42,7 @@ describe("runCheck", () => {
42
42
  savedExitCode = process.exitCode;
43
43
  process.exitCode = undefined;
44
44
 
45
- vi.spyOn(consola, "withTag").mockReturnValue(mockLogger as any);
45
+ vi.spyOn(coreCommon, "createLogger").mockReturnValue(mockLogger as any);
46
46
  Object.values(mockLogger).forEach((m) => m.mockReset());
47
47
 
48
48
  mocks.executeTypecheck = vi.spyOn(typecheckOrchestrator, "executeTypecheck");
@@ -20,7 +20,7 @@ function pkgPath(name: string): string {
20
20
  return path.resolve(CWD, `packages/${name}`);
21
21
  }
22
22
 
23
- function createLogger() {
23
+ function createMockLogger() {
24
24
  return {
25
25
  info: vi.fn(),
26
26
  debug: vi.fn(),
@@ -29,7 +29,7 @@ function createLogger() {
29
29
  start: vi.fn(),
30
30
  success: vi.fn(),
31
31
  fail: vi.fn(),
32
- } as unknown as ReturnType<typeof import("consola").consola.withTag>;
32
+ } as unknown as ReturnType<typeof import("@simplysm/core-common").createLogger>;
33
33
  }
34
34
 
35
35
  describe("runDeployment", () => {
@@ -52,7 +52,7 @@ describe("runDeployment", () => {
52
52
  return { name: "@simplysm/pkg-a", version: "14.0.1", dependencies: {} };
53
53
  }) as never);
54
54
 
55
- const logger = createLogger();
55
+ const logger = createMockLogger();
56
56
  await runDeployment(
57
57
  [
58
58
  { name: "pkg-a", path: pkgPath("pkg-a"), config: { type: "npm" } },
@@ -81,7 +81,7 @@ describe("runDeployment", () => {
81
81
  dependencies: {},
82
82
  });
83
83
 
84
- const logger = createLogger();
84
+ const logger = createMockLogger();
85
85
  await runDeployment(
86
86
  [{ name: "pkg-a", path: pkgPath("pkg-a"), config: { type: "npm" } }],
87
87
  "14.0.1",
@@ -110,7 +110,7 @@ describe("runDeployment", () => {
110
110
  }) as never,
111
111
  );
112
112
 
113
- const logger = createLogger();
113
+ const logger = createMockLogger();
114
114
  await runDeployment(
115
115
  [
116
116
  { name: "pkg-a", path: pkgPath("pkg-a"), config: { type: "npm" } },
@@ -14,7 +14,7 @@ function createLogger() {
14
14
  error: vi.fn(),
15
15
  warn: vi.fn(),
16
16
  withTag: vi.fn(),
17
- } as unknown as ReturnType<typeof import("consola").consola.withTag>;
17
+ } as unknown as ReturnType<typeof import("@simplysm/core-common").createLogger>;
18
18
  }
19
19
 
20
20
  describe("ensureCleanWorkingTree", () => {
@@ -13,7 +13,7 @@ function createLogger() {
13
13
  debug: vi.fn(),
14
14
  error: vi.fn(),
15
15
  warn: vi.fn(),
16
- } as unknown as ReturnType<typeof import("consola").consola.withTag>;
16
+ } as unknown as ReturnType<typeof import("@simplysm/core-common").createLogger>;
17
17
  }
18
18
 
19
19
  describe("runPostPublish", () => {
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { consola } from "consola";
2
+ import * as coreCommon from "@simplysm/core-common";
3
3
 
4
4
  import * as sdConfigMod from "../../src/utils/sd-config";
5
5
  import * as typecheckSerialization from "../../src/typecheck/typecheck-serialization";
@@ -77,7 +77,7 @@ beforeEach(() => {
77
77
  if (typeof m === "function" && "mockReset" in m) (m as any).mockReset();
78
78
  });
79
79
 
80
- vi.spyOn(consola, "withTag").mockImplementation((tag: string) => {
80
+ vi.spyOn(coreCommon, "createLogger").mockImplementation((tag: string) => {
81
81
  if (tag === "sd:cli:typecheck") return mockTypecheckLogger as any;
82
82
  return {
83
83
  debug: vi.fn(),
@@ -4,12 +4,12 @@ import path from "path";
4
4
  import os from "os";
5
5
  import { pathx } from "@simplysm/core-node";
6
6
  import { resolveAllReplaceDepEntries } from "../../../src/deps/replace-deps/replace-deps-resolve";
7
- import { consola } from "consola";
7
+ import { createLogger } from "@simplysm/core-common";
8
8
 
9
9
  describe("resolveAllReplaceDepEntries", () => {
10
10
  let tmpDir: string;
11
11
  let projectRoot: string;
12
- const logger = consola.withTag("test");
12
+ const logger = createLogger("test");
13
13
 
14
14
  beforeEach(async () => {
15
15
  tmpDir = pathx.posix(await fs.promises.mkdtemp(path.join(os.tmpdir(), "sd-resolve-deps-")));
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { consola } from "consola";
2
+ import * as coreCommon from "@simplysm/core-common";
3
3
  import { fsx, cpx } from "@simplysm/core-node";
4
4
 
5
5
  // esbuild는 외부 npm으로 ESM namespace immutable이라 vi.mock 유지
@@ -42,14 +42,14 @@ const mockFsxGlob = vi.spyOn(fsx, "glob");
42
42
  const mockCpxSpawn = vi.spyOn(cpx, "spawn").mockResolvedValue({ stdout: "", stderr: "", exitCode: 0 });
43
43
  vi.spyOn(cpx, "spawnSync").mockReturnValue({ stdout: "", stderr: "", exitCode: 0 });
44
44
 
45
- // consola spy
45
+ // createLogger spy
46
46
  const mockLoggerDebug = vi.fn();
47
47
  const mockLoggerWarn = vi.fn();
48
48
  const mockLoggerInfo = vi.fn();
49
49
  const mockLoggerStart = vi.fn();
50
50
  const mockLoggerSuccess = vi.fn();
51
51
  const mockLoggerError = vi.fn();
52
- vi.spyOn(consola, "withTag").mockReturnValue({ debug: mockLoggerDebug, warn: mockLoggerWarn, info: mockLoggerInfo, start: mockLoggerStart, success: mockLoggerSuccess, error: mockLoggerError } as any);
52
+ vi.spyOn(coreCommon, "createLogger").mockReturnValue({ debug: mockLoggerDebug, warn: mockLoggerWarn, info: mockLoggerInfo, start: mockLoggerStart, success: mockLoggerSuccess, error: mockLoggerError } as any);
53
53
 
54
54
  //#endregion
55
55
 
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { consola } from "consola";
2
+ import * as coreCommon from "@simplysm/core-common";
3
3
 
4
4
  import * as sdConfig from "../../src/utils/sd-config";
5
5
  import * as buildEnv from "../../src/utils/build-env";
@@ -78,7 +78,7 @@ beforeEach(() => {
78
78
  mockEngines.length = 0;
79
79
  process.exitCode = undefined;
80
80
 
81
- vi.spyOn(consola, "withTag").mockReturnValue(mockLogger as any);
81
+ vi.spyOn(coreCommon, "createLogger").mockReturnValue(mockLogger as any);
82
82
  Object.values(mockLogger).forEach((m) => m.mockReset());
83
83
 
84
84
  mockCapacitorInstance.initialize.mockReset().mockResolvedValue(undefined);
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { consola } from "consola";
2
+ import * as coreCommon from "@simplysm/core-common";
3
3
 
4
4
  // eslint은 외부 npm으로 ESM namespace immutable — vi.mock 유지
5
5
  const { mockLintFiles, mockLoadFormatter, MockESLintClass } = vi.hoisted(() => {
@@ -25,7 +25,7 @@ const mockLintLogger = {
25
25
  error: vi.fn(),
26
26
  };
27
27
 
28
- vi.spyOn(consola, "withTag").mockReturnValue(mockLintLogger as any);
28
+ vi.spyOn(coreCommon, "createLogger").mockReturnValue(mockLintLogger as any);
29
29
 
30
30
  import { LintWithProgramRunner } from "../../src/lint/lint-with-program";
31
31
 
@@ -1,11 +1,12 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
2
  import { consola } from "consola";
3
+ import * as coreCommon from "@simplysm/core-common";
3
4
  import type { BuildResult } from "../../src/runtime/ResultCollector";
4
5
  import type { PartialMessage } from "esbuild";
5
6
 
6
- // output-utils.ts가 모듈 로드 시 consola.withTag("sd:cli:output")로 로거를 생성하므로,
7
- // 동적 import 전에 spy 등록하여 withTag가 consola 자체를 반환하게 한다
8
- vi.spyOn(consola, "withTag").mockReturnValue(consola);
7
+ // output-utils.ts가 모듈 로드 시 createLogger("sd:cli:output")로 로거를 생성하므로,
8
+ // 동적 import 전에 spy 등록하여 createLogger가 consola 자체를 반환하게 한다
9
+ vi.spyOn(coreCommon, "createLogger").mockReturnValue(consola as any);
9
10
  vi.spyOn(consola, "error").mockImplementation(() => {});
10
11
  vi.spyOn(consola, "warn").mockImplementation(() => {});
11
12
  vi.spyOn(consola, "info").mockImplementation(() => {});
@@ -2,7 +2,7 @@ import { describe, it, expect, beforeEach, afterEach, vi } from "vitest";
2
2
  import fs from "fs";
3
3
  import path from "path";
4
4
  import os from "os";
5
- import { consola } from "consola";
5
+ import * as coreCommon from "@simplysm/core-common";
6
6
  import { watchReplaceDeps } from "../../src/deps/replace-deps/replace-deps";
7
7
  import type { WatchReplaceDepResult } from "../../src/deps/replace-deps/replace-deps";
8
8
 
@@ -33,7 +33,7 @@ describe("watchReplaceDeps onChanged", () => {
33
33
  success: vi.fn(),
34
34
  debug: vi.fn(),
35
35
  };
36
- vi.spyOn(consola, "withTag").mockReturnValue(mockLogger as any);
36
+ vi.spyOn(coreCommon, "createLogger").mockReturnValue(mockLogger as any);
37
37
 
38
38
  // 소스 패키지 생성
39
39
  const sourcePkg = path.join(tmpDir, "source-pkg");
@@ -2,6 +2,7 @@
2
2
  import { describe, it, expect, vi, afterEach } from "vitest";
3
3
  import { setupWorkerConsola, createOnceGuard, registerCleanupHandlers } from "../../src/runtime/worker-utils";
4
4
  import consola, { LogLevels } from "consola";
5
+ import { createLogger } from "@simplysm/core-common";
5
6
 
6
7
  describe("setupWorkerConsola", () => {
7
8
  const originalLevel = consola.level;
@@ -64,7 +65,7 @@ describe("registerCleanupHandlers", () => {
64
65
  );
65
66
 
66
67
  const cleanup = vi.fn().mockResolvedValue(undefined);
67
- const logger = consola.withTag("test");
68
+ const logger = createLogger("test");
68
69
 
69
70
  registerCleanupHandlers(cleanup, logger);
70
71
 
@@ -97,7 +98,7 @@ describe("registerCleanupHandlers", () => {
97
98
  );
98
99
 
99
100
  const cleanup = vi.fn().mockRejectedValue(new Error("cleanup error"));
100
- const logger = consola.withTag("test");
101
+ const logger = createLogger("test");
101
102
 
102
103
  registerCleanupHandlers(cleanup, logger);
103
104
 
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { consola } from "consola";
2
+ import { createLogger } from "@simplysm/core-common";
3
3
  import { hasFileAddOrRemove, shouldSkipRebuild } from "../../src/workers/build-change-filter";
4
4
 
5
5
  beforeEach(() => {
@@ -7,7 +7,7 @@ beforeEach(() => {
7
7
  });
8
8
 
9
9
  describe("hasFileAddOrRemove + shouldSkipRebuild integration", () => {
10
- const logger = consola.withTag("test");
10
+ const logger = createLogger("test");
11
11
 
12
12
  // Scenario: 관련 없는 파일 변경은 리빌드를 건너뛴다
13
13
  it("skips rebuild when changed files are not in source file paths", () => {
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi } from "vitest";
2
- import { consola } from "consola";
2
+ import { createLogger } from "@simplysm/core-common";
3
3
  import { hasFileAddOrRemove, shouldSkipRebuild } from "../../src/workers/build-change-filter";
4
4
 
5
5
  describe("hasFileAddOrRemove", () => {
@@ -21,7 +21,7 @@ describe("hasFileAddOrRemove", () => {
21
21
  });
22
22
 
23
23
  describe("shouldSkipRebuild", () => {
24
- const logger = consola.withTag("test");
24
+ const logger = createLogger("test");
25
25
 
26
26
  it("logs debug message when skipping rebuild", () => {
27
27
  const debugSpy = vi.spyOn(logger, "debug");
@@ -1,5 +1,5 @@
1
1
  import { describe, it, expect, vi, beforeEach } from "vitest";
2
- import { consola } from "consola";
2
+ import * as coreCommon from "@simplysm/core-common";
3
3
  import * as coreNode from "@simplysm/core-node";
4
4
 
5
5
  // setupConsola는 consola 글로벌 상태를 변경하므로 spy로 차단
@@ -14,19 +14,19 @@ beforeEach(() => {
14
14
  describe("setupWorkerLifecycle logger tag", () => {
15
15
  // Scenario: 각 워커별 고유 태그가 생성된다
16
16
  it("creates logger with 'sd:cli:{workerName}:worker' tag pattern", () => {
17
- const withTagSpy = vi.spyOn(consola, "withTag");
17
+ const createLoggerSpy = vi.spyOn(coreCommon, "createLogger");
18
18
 
19
19
  setupWorkerLifecycle("server-build", vi.fn());
20
20
 
21
- expect(withTagSpy).toHaveBeenCalledWith("sd:cli:server-build:worker");
21
+ expect(createLoggerSpy).toHaveBeenCalledWith("sd:cli:server-build:worker");
22
22
  });
23
23
 
24
24
  it("uses different tag for different worker names", () => {
25
- const withTagSpy = vi.spyOn(consola, "withTag");
25
+ const createLoggerSpy = vi.spyOn(coreCommon, "createLogger");
26
26
 
27
27
  setupWorkerLifecycle("client", vi.fn());
28
28
 
29
- expect(withTagSpy).toHaveBeenCalledWith("sd:cli:client:worker");
29
+ expect(createLoggerSpy).toHaveBeenCalledWith("sd:cli:client:worker");
30
30
  });
31
31
  });
32
32
 
@@ -1,14 +0,0 @@
1
- import { type ConsolaInstance } from "consola";
2
- /**
3
- * 모듈 레벨에서 선언해도 안전한 lazy logger 프록시.
4
- *
5
- * consola.withTag()는 호출 시점의 consola.options(level/reporters)를
6
- * 스냅샷 복사한 새 인스턴스를 반환한다. 모듈 import 시점에 호출하면
7
- * setupConsola 이전의 기본 level(info) 상태가 고정되어 이후 setupConsola가
8
- * level을 debug로 올려도 반영되지 않는다.
9
- *
10
- * createLazyLogger는 실제 ConsolaInstance 생성을 첫 접근 시점까지 미뤄
11
- * setupConsola 이후의 설정이 반영된 스냅샷을 갖도록 한다.
12
- */
13
- export declare function createLazyLogger(tag: string): ConsolaInstance;
14
- //# sourceMappingURL=lazy-logger.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy-logger.d.ts","sourceRoot":"","sources":["../../src/runtime/lazy-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAW,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAExD;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAS7D"}
@@ -1,23 +0,0 @@
1
- import { consola } from "consola";
2
- /**
3
- * 모듈 레벨에서 선언해도 안전한 lazy logger 프록시.
4
- *
5
- * consola.withTag()는 호출 시점의 consola.options(level/reporters)를
6
- * 스냅샷 복사한 새 인스턴스를 반환한다. 모듈 import 시점에 호출하면
7
- * setupConsola 이전의 기본 level(info) 상태가 고정되어 이후 setupConsola가
8
- * level을 debug로 올려도 반영되지 않는다.
9
- *
10
- * createLazyLogger는 실제 ConsolaInstance 생성을 첫 접근 시점까지 미뤄
11
- * setupConsola 이후의 설정이 반영된 스냅샷을 갖도록 한다.
12
- */
13
- export function createLazyLogger(tag) {
14
- let cached;
15
- return new Proxy({}, {
16
- get(_target, prop) {
17
- cached ??= consola.withTag(tag);
18
- const value = Reflect.get(cached, prop);
19
- return typeof value === "function" ? value.bind(cached) : value;
20
- },
21
- });
22
- }
23
- //# sourceMappingURL=lazy-logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"lazy-logger.js","sourceRoot":"","sources":["../../src/runtime/lazy-logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwB,MAAM,SAAS,CAAC;AAExD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,IAAI,MAAmC,CAAC;IACxC,OAAO,IAAI,KAAK,CAAC,EAAqB,EAAE;QACtC,GAAG,CAAC,OAAO,EAAE,IAAI;YACf,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,KAAK,GAAY,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACjD,OAAO,OAAO,KAAK,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QAClE,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -1,23 +0,0 @@
1
- import { consola, type ConsolaInstance } from "consola";
2
-
3
- /**
4
- * 모듈 레벨에서 선언해도 안전한 lazy logger 프록시.
5
- *
6
- * consola.withTag()는 호출 시점의 consola.options(level/reporters)를
7
- * 스냅샷 복사한 새 인스턴스를 반환한다. 모듈 import 시점에 호출하면
8
- * setupConsola 이전의 기본 level(info) 상태가 고정되어 이후 setupConsola가
9
- * level을 debug로 올려도 반영되지 않는다.
10
- *
11
- * createLazyLogger는 실제 ConsolaInstance 생성을 첫 접근 시점까지 미뤄
12
- * setupConsola 이후의 설정이 반영된 스냅샷을 갖도록 한다.
13
- */
14
- export function createLazyLogger(tag: string): ConsolaInstance {
15
- let cached: ConsolaInstance | undefined;
16
- return new Proxy({} as ConsolaInstance, {
17
- get(_target, prop) {
18
- cached ??= consola.withTag(tag);
19
- const value: unknown = Reflect.get(cached, prop);
20
- return typeof value === "function" ? value.bind(cached) : value;
21
- },
22
- });
23
- }