@simplysm/sd-cli 13.0.53 → 13.0.56

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.
@@ -0,0 +1,7 @@
1
+ export type CheckType = "typecheck" | "lint" | "test";
2
+ export interface CheckOptions {
3
+ targets: string[];
4
+ types: CheckType[];
5
+ }
6
+ export declare function runCheck(options: CheckOptions): Promise<void>;
7
+ //# sourceMappingURL=check.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"check.d.ts","sourceRoot":"","sources":["..\\..\\src\\commands\\check.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,MAAM,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;CACpB;AAgFD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FnE"}
@@ -0,0 +1,136 @@
1
+ import { spawn as cpSpawn } from "child_process";
2
+ import { Worker } from "@simplysm/core-node";
3
+ import { executeTypecheck } from "./typecheck.js";
4
+ import { consola } from "consola";
5
+ function spawnVitest(targets) {
6
+ return new Promise((resolve) => {
7
+ const args = ["vitest", ...targets, "--run"];
8
+ const child = cpSpawn("pnpm", args, {
9
+ cwd: process.cwd(),
10
+ shell: true,
11
+ stdio: "pipe"
12
+ });
13
+ let output = "";
14
+ child.stdout.on("data", (d) => {
15
+ output += new TextDecoder().decode(d);
16
+ });
17
+ child.stderr.on("data", (d) => {
18
+ output += new TextDecoder().decode(d);
19
+ });
20
+ child.on("close", (code) => {
21
+ const failMatch = output.match(/(\d+)\s+tests?\s+failed/i) ?? output.match(/Tests\s+(\d+)\s+failed/i) ?? output.match(/(\d+)\s+fail/i);
22
+ const failCount = failMatch ? Number(failMatch[1]) : 0;
23
+ resolve({
24
+ name: "TEST",
25
+ success: code === 0,
26
+ errorCount: failCount,
27
+ warningCount: 0,
28
+ formattedOutput: code === 0 ? "" : output
29
+ });
30
+ });
31
+ child.on("error", (err) => {
32
+ resolve({
33
+ name: "TEST",
34
+ success: false,
35
+ errorCount: 1,
36
+ warningCount: 0,
37
+ formattedOutput: err.message
38
+ });
39
+ });
40
+ });
41
+ }
42
+ function formatSection(result) {
43
+ const header = `
44
+ ${"=".repeat(6)} ${result.name} ${"=".repeat(6)}`;
45
+ const icon = result.success ? "\u2714" : "\u2716";
46
+ let summary;
47
+ if (result.name === "TEST") {
48
+ const testCount = result.errorCount > 0 ? `${result.errorCount} failed` : "";
49
+ summary = result.success ? `${icon} passed` : `${icon} ${testCount}`;
50
+ } else {
51
+ summary = `${icon} ${result.errorCount} errors, ${result.warningCount} warnings`;
52
+ }
53
+ const detail = !result.success && result.formattedOutput ? `
54
+ ${result.formattedOutput}` : "";
55
+ return `${header}
56
+ ${summary}${detail}`;
57
+ }
58
+ async function runCheck(options) {
59
+ const { targets, types } = options;
60
+ const logger = consola.withTag("sd:cli:check");
61
+ logger.debug("check \uC2DC\uC791", { targets, types });
62
+ const tasks = [];
63
+ if (types.includes("typecheck")) {
64
+ tasks.push(
65
+ executeTypecheck({ targets, options: [] }).then(
66
+ (r) => ({
67
+ name: "TYPECHECK",
68
+ success: r.success,
69
+ errorCount: r.errorCount,
70
+ warningCount: r.warningCount,
71
+ formattedOutput: r.formattedOutput
72
+ })
73
+ )
74
+ );
75
+ }
76
+ if (types.includes("lint")) {
77
+ const lintWorkerPath = import.meta.resolve("../workers/lint.worker");
78
+ const lintWorker = Worker.create(lintWorkerPath);
79
+ tasks.push(
80
+ lintWorker.lint({ targets, fix: true, timing: false }).then(
81
+ (r) => ({
82
+ name: "LINT",
83
+ success: r.success,
84
+ errorCount: r.errorCount,
85
+ warningCount: r.warningCount,
86
+ formattedOutput: r.formattedOutput
87
+ })
88
+ ).finally(() => lintWorker.terminate())
89
+ );
90
+ }
91
+ if (types.includes("test")) {
92
+ tasks.push(spawnVitest(targets));
93
+ }
94
+ logger.start(`check \uC2E4\uD589 \uC911... (${types.join(", ")})`);
95
+ const results = await Promise.allSettled(tasks);
96
+ logger.success("check \uC2E4\uD589 \uC644\uB8CC");
97
+ const checkResults = results.map((r) => {
98
+ if (r.status === "fulfilled") return r.value;
99
+ return {
100
+ name: "UNKNOWN",
101
+ success: false,
102
+ errorCount: 1,
103
+ warningCount: 0,
104
+ formattedOutput: r.reason instanceof Error ? r.reason.message : String(r.reason)
105
+ };
106
+ });
107
+ const order = ["TYPECHECK", "LINT", "TEST"];
108
+ checkResults.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));
109
+ for (const result of checkResults) {
110
+ process.stdout.write(formatSection(result));
111
+ }
112
+ const failed = checkResults.filter((r) => !r.success);
113
+ const totalErrors = checkResults.reduce((sum, r) => sum + r.errorCount, 0);
114
+ const totalWarnings = checkResults.reduce((sum, r) => sum + r.warningCount, 0);
115
+ process.stdout.write(`
116
+
117
+ ${"=".repeat(6)} SUMMARY ${"=".repeat(6)}
118
+ `);
119
+ if (failed.length === 0) {
120
+ process.stdout.write(`\u2714 ALL PASSED
121
+ `);
122
+ } else {
123
+ const failedNames = failed.map((r) => r.name.toLowerCase()).join(", ");
124
+ process.stdout.write(`\u2716 ${failed.length}/${checkResults.length} FAILED (${failedNames})
125
+ `);
126
+ }
127
+ process.stdout.write(`Total: ${totalErrors} errors, ${totalWarnings} warnings
128
+ `);
129
+ if (failed.length > 0) {
130
+ process.exitCode = 1;
131
+ }
132
+ }
133
+ export {
134
+ runCheck
135
+ };
136
+ //# sourceMappingURL=check.js.map
@@ -0,0 +1,6 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/commands/check.ts"],
4
+ "mappings": "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",
5
+ "names": []
6
+ }
@@ -10,6 +10,19 @@ export interface LintOptions {
10
10
  /** ESLint 규칙별 실행 시간 측정 활성화 (TIMING 환경변수 설정) */
11
11
  timing: boolean;
12
12
  }
13
+ /**
14
+ * executeLint()의 반환 타입
15
+ */
16
+ export interface LintResult {
17
+ /** 린트 에러가 없으면 true */
18
+ success: boolean;
19
+ /** ESLint + Stylelint 에러 합계 */
20
+ errorCount: number;
21
+ /** ESLint + Stylelint 경고 합계 */
22
+ warningCount: number;
23
+ /** 포맷터 출력 문자열 (stdout에 쓸 내용) */
24
+ formattedOutput: string;
25
+ }
13
26
  /**
14
27
  * eslint.config.ts/js에서 globalIgnores 패턴을 추출한다.
15
28
  * files 속성 없이 ignores만 있는 설정 객체가 globalIgnores이다.
@@ -17,12 +30,21 @@ export interface LintOptions {
17
30
  */
18
31
  export declare function loadIgnorePatterns(cwd: string): Promise<string[]>;
19
32
  /**
20
- * ESLint를 실행한다.
33
+ * ESLint/Stylelint실행하고 결과를 반환한다.
21
34
  *
22
35
  * - `eslint.config.ts/js`에서 globalIgnores 패턴을 추출하여 glob 필터링에 적용
23
36
  * - consola를 사용하여 진행 상황 표시
24
37
  * - 캐시 활성화 (`.cache/eslint.cache`에 저장, 설정 변경 시 자동 무효화)
25
- * - 에러 발생 시 `process.exitCode = 1` 설정
38
+ * - stdout 출력이나 process.exitCode 설정은 하지 않음 (호출자가 판단)
39
+ *
40
+ * @param options - 린트 실행 옵션
41
+ * @returns 린트 결과 (성공 여부, 에러/경고 수, 포맷터 출력)
42
+ */
43
+ export declare function executeLint(options: LintOptions): Promise<LintResult>;
44
+ /**
45
+ * ESLint를 실행한다.
46
+ *
47
+ * executeLint()를 호출하고 결과를 stdout에 출력한 뒤 exitCode를 설정하는 래퍼.
26
48
  *
27
49
  * @param options - 린트 실행 옵션
28
50
  * @returns 완료 시 resolve. 에러 발견 시 `process.exitCode`를 1로 설정하고 resolve (throw하지 않음)
@@ -1 +1 @@
1
- {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["..\\..\\src\\commands\\lint.ts"],"names":[],"mappings":"AAIA,OAAO,uBAAuB,CAAC;AAO/B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;CACjB;AAoCD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuCvE;AAgBD;;;;;;;;;;GAUG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA4KjE"}
1
+ {"version":3,"file":"lint.d.ts","sourceRoot":"","sources":["..\\..\\src\\commands\\lint.ts"],"names":[],"mappings":"AAIA,OAAO,uBAAuB,CAAC;AAO/B;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,0DAA0D;IAC1D,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gBAAgB;IAChB,GAAG,EAAE,OAAO,CAAC;IACb,+CAA+C;IAC/C,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,sBAAsB;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,gCAAgC;IAChC,eAAe,EAAE,MAAM,CAAC;CACzB;AAoCD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuCvE;AAgBD;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CA8K3E;AAED;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAQjE"}
@@ -65,7 +65,7 @@ async function hasStylelintConfig(cwd) {
65
65
  }
66
66
  return false;
67
67
  }
68
- async function runLint(options) {
68
+ async function executeLint(options) {
69
69
  const { targets, fix, timing } = options;
70
70
  const cwd = process.cwd();
71
71
  const logger = consola.withTag("sd:cli:lint");
@@ -155,10 +155,10 @@ async function runLint(options) {
155
155
  }
156
156
  if (files.length === 0 || eslintResults == null || eslint == null) {
157
157
  logger.info("\uB9B0\uD2B8\uD560 \uD30C\uC77C \uC5C6\uC74C");
158
- return;
158
+ return { success: true, errorCount: 0, warningCount: 0, formattedOutput: "" };
159
159
  }
160
- const errorCount = eslintResults.sum((r) => r.errorCount);
161
- const warningCount = eslintResults.sum((r) => r.warningCount);
160
+ let errorCount = eslintResults.sum((r) => r.errorCount);
161
+ let warningCount = eslintResults.sum((r) => r.warningCount);
162
162
  if (errorCount > 0) {
163
163
  logger.error("\uB9B0\uD2B8 \uC5D0\uB7EC \uBC1C\uC0DD", { errorCount, warningCount });
164
164
  } else if (warningCount > 0) {
@@ -166,13 +166,11 @@ async function runLint(options) {
166
166
  } else {
167
167
  logger.info("\uB9B0\uD2B8 \uC644\uB8CC", { errorCount, warningCount });
168
168
  }
169
+ let formattedOutput = "";
169
170
  const formatter = await eslint.loadFormatter("stylish");
170
171
  const resultText = await formatter.format(eslintResults);
171
172
  if (resultText) {
172
- process.stdout.write(resultText);
173
- }
174
- if (errorCount > 0) {
175
- process.exitCode = 1;
173
+ formattedOutput += resultText;
176
174
  }
177
175
  if (stylelintResult != null && stylelintResult.results.length > 0) {
178
176
  const stylelintErrorCount = stylelintResult.results.sum(
@@ -181,6 +179,8 @@ async function runLint(options) {
181
179
  const stylelintWarningCount = stylelintResult.results.sum(
182
180
  (r) => r.warnings.filter((w) => w.severity === "warning").length
183
181
  );
182
+ errorCount += stylelintErrorCount;
183
+ warningCount += stylelintWarningCount;
184
184
  if (stylelintErrorCount > 0) {
185
185
  logger.error("Stylelint \uC5D0\uB7EC \uBC1C\uC0DD", {
186
186
  errorCount: stylelintErrorCount,
@@ -200,14 +200,27 @@ async function runLint(options) {
200
200
  const stylelintFormatter = await stylelint.formatters.string;
201
201
  const stylelintOutput = stylelintFormatter(stylelintResult.results, stylelintResult);
202
202
  if (stylelintOutput) {
203
- process.stdout.write(stylelintOutput);
204
- }
205
- if (stylelintErrorCount > 0) {
206
- process.exitCode = 1;
203
+ formattedOutput += stylelintOutput;
207
204
  }
208
205
  }
206
+ return {
207
+ success: errorCount === 0,
208
+ errorCount,
209
+ warningCount,
210
+ formattedOutput
211
+ };
212
+ }
213
+ async function runLint(options) {
214
+ const result = await executeLint(options);
215
+ if (result.formattedOutput) {
216
+ process.stdout.write(result.formattedOutput);
217
+ }
218
+ if (!result.success) {
219
+ process.exitCode = 1;
220
+ }
209
221
  }
210
222
  export {
223
+ executeLint,
211
224
  loadIgnorePatterns,
212
225
  runLint
213
226
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/commands/lint.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -10,6 +10,15 @@ export interface TypecheckOptions {
10
10
  /** sd.config.ts에 전달할 추가 옵션 */
11
11
  options: string[];
12
12
  }
13
+ /**
14
+ * TypeScript 타입체크 실행 결과
15
+ */
16
+ export interface TypecheckResult {
17
+ success: boolean;
18
+ errorCount: number;
19
+ warningCount: number;
20
+ formattedOutput: string;
21
+ }
13
22
  interface PackageInfo {
14
23
  name: string;
15
24
  dir: string;
@@ -22,14 +31,23 @@ interface PackageInfo {
22
31
  */
23
32
  export declare function extractPackages(fileNames: string[], cwd: string, config: SdConfig): Map<string, PackageInfo>;
24
33
  /**
25
- * TypeScript 타입체크를 실행한다.
34
+ * TypeScript 타입체크를 실행하고 결과를 반환한다.
26
35
  *
27
36
  * - `tsconfig.json`을 로드하여 컴파일러 옵션 적용
28
37
  * - `sd.config.ts`를 로드하여 패키지별 타겟 정보 확인 (없으면 기본값 사용)
29
38
  * - Worker threads를 사용하여 실제 병렬 타입체크 수행
30
39
  * - incremental 컴파일 사용 (`.cache/typecheck-{env}.tsbuildinfo`)
31
40
  * - consola 로깅을 사용하여 진행 상황 표시
32
- * - 에러 발생 시 `process.exitCode = 1` 설정
41
+ * - stdout 출력이나 exitCode 설정 없이 결과만 반환
42
+ *
43
+ * @param options - 타입체크 실행 옵션
44
+ * @returns 타입체크 결과 (성공 여부, 에러/경고 수, 포맷된 출력 문자열)
45
+ */
46
+ export declare function executeTypecheck(options: TypecheckOptions): Promise<TypecheckResult>;
47
+ /**
48
+ * TypeScript 타입체크를 실행한다.
49
+ *
50
+ * `executeTypecheck()`를 호출하고 결과를 stdout에 출력하며, 에러 발생 시 `process.exitCode`를 설정한다.
33
51
  *
34
52
  * @param options - 타입체크 실행 옵션
35
53
  * @returns 완료 시 resolve. 에러 발견 시 `process.exitCode`를 1로 설정하고 resolve (throw하지 않음)
@@ -1 +1 @@
1
- {"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["..\\..\\src\\commands\\typecheck.ts"],"names":[],"mappings":"AAIA,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQzE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAGD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAmCD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,QAAQ,GACf,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAwB1B;AAiED;;;;;;;;;;;;GAYG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuJ3E"}
1
+ {"version":3,"file":"typecheck.d.ts","sourceRoot":"","sources":["..\\..\\src\\commands\\typecheck.ts"],"names":[],"mappings":"AAIA,OAAO,uBAAuB,CAAC;AAE/B,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAQzE;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,kFAAkF;IAClF,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;CACzB;AAGD,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,YAAY,EAAE,CAAC;CACtB;AAmCD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,SAAS,EAAE,MAAM,EAAE,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,QAAQ,GACf,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAwB1B;AAiED;;;;;;;;;;;;GAYG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAiK1F;AAED;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3E"}
@@ -72,7 +72,7 @@ function createTypecheckTasks(packages, cwd, includeNonPackage) {
72
72
  }
73
73
  return tasks;
74
74
  }
75
- async function runTypecheck(options) {
75
+ async function executeTypecheck(options) {
76
76
  const { targets } = options;
77
77
  const cwd = process.cwd();
78
78
  const logger = consola.withTag("sd:cli:typecheck");
@@ -87,8 +87,7 @@ async function runTypecheck(options) {
87
87
  parsedConfig = parseRootTsconfig(cwd);
88
88
  } catch (err) {
89
89
  logger.error(err instanceof Error ? err.message : String(err));
90
- process.exitCode = 1;
91
- return;
90
+ return { success: false, errorCount: 1, warningCount: 0, formattedOutput: "" };
92
91
  }
93
92
  let sdConfig;
94
93
  try {
@@ -100,9 +99,13 @@ async function runTypecheck(options) {
100
99
  }
101
100
  const fileNames = pathFilterByTargets(parsedConfig.fileNames, targets, cwd);
102
101
  if (fileNames.length === 0) {
103
- process.stdout.write("\u2714 \uD0C0\uC785\uCCB4\uD06C\uD560 \uD30C\uC77C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.\n");
104
102
  logger.info("\uD0C0\uC785\uCCB4\uD06C\uD560 \uD30C\uC77C \uC5C6\uC74C");
105
- return;
103
+ return {
104
+ success: true,
105
+ errorCount: 0,
106
+ warningCount: 0,
107
+ formattedOutput: "\u2714 \uD0C0\uC785\uCCB4\uD06C\uD560 \uD30C\uC77C\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.\n"
108
+ };
106
109
  }
107
110
  const packages = extractPackages(fileNames, cwd, sdConfig);
108
111
  logger.debug("\uD328\uD0A4\uC9C0 \uCD94\uCD9C \uC644\uB8CC", {
@@ -112,8 +115,12 @@ async function runTypecheck(options) {
112
115
  const nonPackage = hasNonPackageFiles(fileNames, cwd);
113
116
  const tasks = createTypecheckTasks(packages, cwd, nonPackage);
114
117
  if (tasks.length === 0) {
115
- process.stdout.write("\u2714 \uD0C0\uC785\uCCB4\uD06C\uD560 \uB300\uC0C1\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.\n");
116
- return;
118
+ return {
119
+ success: true,
120
+ errorCount: 0,
121
+ warningCount: 0,
122
+ formattedOutput: "\u2714 \uD0C0\uC785\uCCB4\uD06C\uD560 \uB300\uC0C1\uC774 \uC5C6\uC2B5\uB2C8\uB2E4.\n"
123
+ };
117
124
  }
118
125
  const maxConcurrency = Math.max(Math.floor(os.cpus().length * 7 / 8), 1);
119
126
  const concurrency = Math.min(maxConcurrency, tasks.length);
@@ -186,16 +193,29 @@ async function runTypecheck(options) {
186
193
  } else {
187
194
  logger.info("\uD0C0\uC785\uCCB4\uD06C \uC644\uB8CC", { errorCount: totalErrorCount, warningCount: totalWarningCount });
188
195
  }
196
+ let formattedOutput = "";
189
197
  if (allDiagnostics.length > 0) {
190
198
  const uniqueDiagnostics = ts.sortAndDeduplicateDiagnostics(allDiagnostics);
191
- const message = ts.formatDiagnosticsWithColorAndContext(uniqueDiagnostics, formatHost);
192
- process.stdout.write(message);
199
+ formattedOutput = ts.formatDiagnosticsWithColorAndContext(uniqueDiagnostics, formatHost);
193
200
  }
194
- if (totalErrorCount > 0) {
201
+ return {
202
+ success: totalErrorCount === 0,
203
+ errorCount: totalErrorCount,
204
+ warningCount: totalWarningCount,
205
+ formattedOutput
206
+ };
207
+ }
208
+ async function runTypecheck(options) {
209
+ const result = await executeTypecheck(options);
210
+ if (result.formattedOutput) {
211
+ process.stdout.write(result.formattedOutput);
212
+ }
213
+ if (!result.success) {
195
214
  process.exitCode = 1;
196
215
  }
197
216
  }
198
217
  export {
218
+ executeTypecheck,
199
219
  extractPackages,
200
220
  runTypecheck
201
221
  };
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/commands/typecheck.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -287,8 +287,8 @@ class BuildOrchestrator {
287
287
  const lintWorker = Worker.create(lintWorkerPath);
288
288
  const lintTask = async () => {
289
289
  try {
290
- const hasError = await lintWorker.lint(lintOptions);
291
- if (hasError) state.hasError = true;
290
+ const result = await lintWorker.lint(lintOptions);
291
+ if (!result.success) state.hasError = true;
292
292
  } finally {
293
293
  await lintWorker.terminate();
294
294
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/orchestrators/BuildOrchestrator.ts"],
4
- "mappings": "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",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sd-cli-entry.d.ts","sourceRoot":"","sources":["..\\src\\sd-cli-entry.ts"],"names":[],"mappings":";AAGA,OAAO,uBAAuB,CAAC;AAC/B,OAAc,EAAE,KAAK,IAAI,EAAE,MAAM,OAAO,CAAC;AAmBzC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAuSpD"}
1
+ {"version":3,"file":"sd-cli-entry.d.ts","sourceRoot":"","sources":["..\\src\\sd-cli-entry.ts"],"names":[],"mappings":";AAGA,OAAO,uBAAuB,CAAC;AAC/B,OAAc,EAAE,KAAK,IAAI,EAAE,MAAM,OAAO,CAAC;AAoBzC;;;GAGG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAkUpD"}
@@ -4,6 +4,7 @@ import yargs, {} from "yargs";
4
4
  import { hideBin } from "yargs/helpers";
5
5
  import { runLint } from "./commands/lint.js";
6
6
  import { runTypecheck } from "./commands/typecheck.js";
7
+ import { runCheck } from "./commands/check.js";
7
8
  import { runWatch } from "./commands/watch.js";
8
9
  import { runDev } from "./commands/dev.js";
9
10
  import { runBuild } from "./commands/build.js";
@@ -75,6 +76,27 @@ function createCliParser(argv) {
75
76
  options: args.configOpt
76
77
  });
77
78
  }
79
+ ).command(
80
+ "check [targets..]",
81
+ "Typecheck, Lint, Test\uB97C \uBCD1\uB82C\uB85C \uC2E4\uD589\uD55C\uB2E4.",
82
+ (cmd) => cmd.version(false).hide("help").positional("targets", {
83
+ type: "string",
84
+ array: true,
85
+ describe: "\uCCB4\uD06C\uD560 \uACBD\uB85C (\uC608: packages/core-common, tests/orm)",
86
+ default: []
87
+ }).options({
88
+ type: {
89
+ type: "string",
90
+ describe: "\uC2E4\uD589\uD560 \uCCB4\uD06C \uD0C0\uC785 (\uC27C\uD45C \uAD6C\uBD84: typecheck,lint,test)",
91
+ default: "typecheck,lint,test"
92
+ }
93
+ }),
94
+ async (args) => {
95
+ await runCheck({
96
+ targets: args.targets,
97
+ types: args.type.split(",").map((t) => t.trim())
98
+ });
99
+ }
78
100
  ).command(
79
101
  "watch [targets..]",
80
102
  "\uD328\uD0A4\uC9C0\uB97C watch \uBAA8\uB4DC\uB85C \uBE4C\uB4DC\uD55C\uB2E4.",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/sd-cli-entry.ts"],
4
- "mappings": ";AAGA,OAAO;AACP,OAAO,eAA0B;AACjC,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,SAAS,oBAAoB;AAC7B,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,sBAAsB;AAC/B,SAAS,iBAAiB;AAC1B,OAAO,UAAU;AACjB,OAAO,QAAQ;AACf,SAAS,qBAAqB;AAC9B,SAAS,oBAAoB;AAC7B,SAAS,SAAS,iBAAiB;AAEnC,MAAM,kBAAkB;AACxB,aAAa,sBAAsB;AAM5B,SAAS,gBAAgB,MAAsB;AACpD,SAAO,MAAM,IAAI,EACd,KAAK,QAAQ,oBAAK,EAClB,MAAM,QAAQ,GAAG,EACjB,OAAO,SAAS;AAAA,IACf,MAAM;AAAA,IACN,UAAU;AAAA,IACV,SAAS;AAAA,IACT,QAAQ;AAAA,EACV,CAAC,EACA,WAAW,CAAC,SAAS;AACpB,QAAI,KAAK,MAAO,SAAQ,QAAQ,UAAU;AAAA,EAC5C,CAAC,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QACC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX,WAAW,WAAW;AAAA,MACrB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,IACZ,CAAC,EACA,QAAQ;AAAA,MACP,KAAK;AAAA,QACH,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MACX;AAAA,IACF,CAAC;AAAA,IACL,OAAO,SAAS;AACd,YAAM,QAAQ;AAAA,QACZ,SAAS,KAAK;AAAA,QACd,KAAK,KAAK;AAAA,QACV,QAAQ,KAAK;AAAA,MACf,CAAC;AAAA,IACH;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QACC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX,WAAW,WAAW;AAAA,MACrB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,IACZ,CAAC,EACA,QAAQ;AAAA,MACP,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,CAAC;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,IACL,OAAO,SAAS;AACd,YAAM,aAAa;AAAA,QACjB,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QACC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX,WAAW,WAAW;AAAA,MACrB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,IACZ,CAAC,EACA,QAAQ;AAAA,MACP,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,CAAC;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,IACL,OAAO,SAAS;AACd,YAAM,SAAS;AAAA,QACb,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QACC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX,WAAW,WAAW;AAAA,MACrB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,IACZ,CAAC,EACA,QAAQ;AAAA,MACP,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,CAAC;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,IACL,OAAO,SAAS;AACd,YAAM,OAAO;AAAA,QACX,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QACC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX,WAAW,WAAW;AAAA,MACrB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,IACZ,CAAC,EACA,QAAQ;AAAA,MACP,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,CAAC;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,IACL,OAAO,SAAS;AACd,YAAM,SAAS;AAAA,QACb,SAAS,KAAK;AAAA,QACd,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QACC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX,QAAQ;AAAA,MACP,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,QACV,cAAc;AAAA,MAChB;AAAA,MACA,KAAK;AAAA,QACH,MAAM;AAAA,QACN,OAAO;AAAA,QACP,UAAU;AAAA,MACZ;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,CAAC;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,IACL,OAAO,SAAS;AACd,YAAM,UAAU;AAAA,QACd,SAAS,KAAK;AAAA,QACd,KAAK,KAAK;AAAA,QACV,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QAAQ,IAAI,QAAQ,KAAK,EAAE,KAAK,MAAM;AAAA,IACvC,YAAY;AACV,YAAM,EAAE,QAAQ,IAAI,MAAM,OAAO,oBAAoB;AACrD,YAAM,QAAQ,CAAC,CAAC;AAAA,IAClB;AAAA,EACF,EACC;AAAA,IAAQ;AAAA,IAAO;AAAA,IAAoB,CAAC,QACnC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX;AAAA,MACC;AAAA,MACA;AAAA,MACA,CAAC,WAAW,OAAO,QAAQ,KAAK,EAAE,KAAK,MAAM;AAAA,MAC7C,YAAY;AACV,cAAM,EAAE,aAAa,IAAI,MAAM,OAAO,0BAA0B;AAChE,cAAM,aAAa,CAAC,CAAC;AAAA,MACvB;AAAA,IACF,EACC;AAAA,MACC;AAAA,MACA;AAAA,MACA,CAAC,WAAW,OAAO,QAAQ,KAAK,EAAE,KAAK,MAAM;AAAA,MAC7C,YAAY;AACV,cAAM,EAAE,aAAa,IAAI,MAAM,OAAO,0BAA0B;AAChE,cAAM,aAAa,CAAC,CAAC;AAAA,MACvB;AAAA,IACF,EACC,cAAc,GAAG,8FAAkC;AAAA,EACxD,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QACC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX,WAAW,WAAW;AAAA,MACrB,MAAM;AAAA,MACN,OAAO;AAAA,MACP,UAAU;AAAA,MACV,SAAS,CAAC;AAAA,IACZ,CAAC,EACA,QAAQ;AAAA,MACP,SAAS;AAAA,QACP,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,WAAW;AAAA,QACT,MAAM;AAAA,QACN,UAAU;AAAA,QACV,SAAS;AAAA,MACX;AAAA,MACA,aAAa;AAAA,QACX,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,CAAC;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,IACL,OAAO,SAAS;AACd,YAAM,WAAW;AAAA,QACf,SAAS,KAAK;AAAA,QACd,SAAS,CAAC,KAAK;AAAA,QACf,QAAQ,KAAK;AAAA,QACb,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF,EACC;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,QACC,IACG,QAAQ,KAAK,EACb,KAAK,MAAM,EACX,QAAQ;AAAA,MACP,WAAW;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,QACP,OAAO;AAAA,QACP,aAAa;AAAA,QACb,SAAS,CAAC;AAAA,MACZ;AAAA,IACF,CAAC;AAAA,IACL,OAAO,SAAS;AACd,YAAM,eAAe;AAAA,QACnB,SAAS,KAAK;AAAA,MAChB,CAAC;AAAA,IACH;AAAA,EACF,EACC,cAAc,GAAG,gEAAc,EAC/B,OAAO;AACZ;AAIA,MAAM,eAAe,QAAQ,KAAK,GAAG,CAAC;AACtC,IACE,gBAAgB,QAChB,cAAc,YAAY,GAAG,MAAM,GAAG,aAAa,KAAK,QAAQ,YAAY,CAAC,GAC7E;AACA,QAAM,gBAAgB,QAAQ,QAAQ,IAAI,CAAC,EAAE,MAAM;AACrD;",
4
+ "mappings": "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",
5
5
  "names": []
6
6
  }
@@ -1,9 +1,9 @@
1
- import { type LintOptions } from "../commands/lint";
1
+ import { type LintOptions, type LintResult } from "../commands/lint";
2
2
  /**
3
3
  * Lint worker.
4
- * BuildOrchestrator에서 lint를 별도 스레드로 실행하기 위한 워커.
4
+ * check 명령과 BuildOrchestrator에서 lint를 별도 스레드로 실행하기 위한 워커.
5
5
  */
6
- declare function lint(options: LintOptions): Promise<boolean>;
6
+ declare function lint(options: LintOptions): Promise<LintResult>;
7
7
  declare const _default: {
8
8
  send<K extends string>(event: K, data?: undefined): void;
9
9
  __methods: {
@@ -1 +1 @@
1
- {"version":3,"file":"lint.worker.d.ts","sourceRoot":"","sources":["..\\..\\src\\workers\\lint.worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI7D;;;GAGG;AACH,iBAAe,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAG1D;;;;;;;;AAED,wBAAsC"}
1
+ {"version":3,"file":"lint.worker.d.ts","sourceRoot":"","sources":["..\\..\\src\\workers\\lint.worker.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,KAAK,WAAW,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAIlF;;;GAGG;AACH,iBAAe,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAE7D;;;;;;;;AAED,wBAAsC"}
@@ -1,8 +1,7 @@
1
1
  import { createWorker } from "@simplysm/core-node";
2
- import { runLint } from "../commands/lint.js";
2
+ import { executeLint } from "../commands/lint.js";
3
3
  async function lint(options) {
4
- await runLint(options);
5
- return process.exitCode === 1;
4
+ return executeLint(options);
6
5
  }
7
6
  var lint_worker_default = createWorker({ lint });
8
7
  export {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/workers/lint.worker.ts"],
4
- "mappings": "AAAA,SAAS,oBAAoB;AAC7B,SAAS,eAAiC;AAQ1C,eAAe,KAAK,SAAwC;AAC1D,QAAM,QAAQ,OAAO;AACrB,SAAO,QAAQ,aAAa;AAC9B;AAEA,IAAO,sBAAQ,aAAa,EAAE,KAAK,CAAC;",
4
+ "mappings": "AAAA,SAAS,oBAAoB;AAC7B,SAAS,mBAAsD;AAQ/D,eAAe,KAAK,SAA2C;AAC7D,SAAO,YAAY,OAAO;AAC5B;AAEA,IAAO,sBAAQ,aAAa,EAAE,KAAK,CAAC;",
5
5
  "names": []
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
- "version": "13.0.53",
3
+ "version": "13.0.56",
4
4
  "description": "심플리즘 패키지 - CLI 도구",
5
5
  "author": "김석래",
6
6
  "license": "Apache-2.0",
@@ -41,9 +41,9 @@
41
41
  "vite-plugin-solid": "^2.11.10",
42
42
  "vite-tsconfig-paths": "^6.1.1",
43
43
  "yargs": "^18.0.0",
44
- "@simplysm/core-common": "13.0.53",
45
- "@simplysm/core-node": "13.0.53",
46
- "@simplysm/storage": "13.0.53"
44
+ "@simplysm/core-node": "13.0.56",
45
+ "@simplysm/core-common": "13.0.56",
46
+ "@simplysm/storage": "13.0.56"
47
47
  },
48
48
  "devDependencies": {
49
49
  "@types/semver": "^7.7.1",
@@ -0,0 +1,189 @@
1
+ import { spawn as cpSpawn } from "child_process";
2
+ import { Worker, type WorkerProxy } from "@simplysm/core-node";
3
+ import { executeTypecheck, type TypecheckResult } from "./typecheck";
4
+ import type { LintResult } from "./lint";
5
+ import type * as LintWorkerModule from "../workers/lint.worker";
6
+ import { consola } from "consola";
7
+
8
+ //#region Types
9
+
10
+ export type CheckType = "typecheck" | "lint" | "test";
11
+
12
+ export interface CheckOptions {
13
+ targets: string[];
14
+ types: CheckType[];
15
+ }
16
+
17
+ interface CheckResult {
18
+ name: string;
19
+ success: boolean;
20
+ errorCount: number;
21
+ warningCount: number;
22
+ formattedOutput: string;
23
+ }
24
+
25
+ //#endregion
26
+
27
+ //#region Utilities
28
+
29
+ function spawnVitest(targets: string[]): Promise<CheckResult> {
30
+ return new Promise((resolve) => {
31
+ const args = ["vitest", ...targets, "--run"];
32
+ const child = cpSpawn("pnpm", args, {
33
+ cwd: process.cwd(),
34
+ shell: true,
35
+ stdio: "pipe",
36
+ });
37
+
38
+ let output = "";
39
+ child.stdout.on("data", (d: Uint8Array) => {
40
+ output += new TextDecoder().decode(d);
41
+ });
42
+ child.stderr.on("data", (d: Uint8Array) => {
43
+ output += new TextDecoder().decode(d);
44
+ });
45
+
46
+ child.on("close", (code) => {
47
+ const failMatch =
48
+ output.match(/(\d+)\s+tests?\s+failed/i) ??
49
+ output.match(/Tests\s+(\d+)\s+failed/i) ??
50
+ output.match(/(\d+)\s+fail/i);
51
+ const failCount = failMatch ? Number(failMatch[1]) : 0;
52
+
53
+ resolve({
54
+ name: "TEST",
55
+ success: code === 0,
56
+ errorCount: failCount,
57
+ warningCount: 0,
58
+ formattedOutput: code === 0 ? "" : output,
59
+ });
60
+ });
61
+
62
+ child.on("error", (err) => {
63
+ resolve({
64
+ name: "TEST",
65
+ success: false,
66
+ errorCount: 1,
67
+ warningCount: 0,
68
+ formattedOutput: err.message,
69
+ });
70
+ });
71
+ });
72
+ }
73
+
74
+ function formatSection(result: CheckResult): string {
75
+ const header = `\n${"=".repeat(6)} ${result.name} ${"=".repeat(6)}`;
76
+ const icon = result.success ? "✔" : "✖";
77
+
78
+ let summary: string;
79
+ if (result.name === "TEST") {
80
+ const testCount = result.errorCount > 0 ? `${result.errorCount} failed` : "";
81
+ summary = result.success ? `${icon} passed` : `${icon} ${testCount}`;
82
+ } else {
83
+ summary = `${icon} ${result.errorCount} errors, ${result.warningCount} warnings`;
84
+ }
85
+
86
+ const detail = !result.success && result.formattedOutput ? `\n${result.formattedOutput}` : "";
87
+
88
+ return `${header}\n${summary}${detail}`;
89
+ }
90
+
91
+ //#endregion
92
+
93
+ //#region Main
94
+
95
+ export async function runCheck(options: CheckOptions): Promise<void> {
96
+ const { targets, types } = options;
97
+ const logger = consola.withTag("sd:cli:check");
98
+
99
+ logger.debug("check 시작", { targets, types });
100
+
101
+ const tasks: Promise<CheckResult>[] = [];
102
+
103
+ // Typecheck
104
+ if (types.includes("typecheck")) {
105
+ tasks.push(
106
+ executeTypecheck({ targets, options: [] }).then(
107
+ (r: TypecheckResult): CheckResult => ({
108
+ name: "TYPECHECK",
109
+ success: r.success,
110
+ errorCount: r.errorCount,
111
+ warningCount: r.warningCount,
112
+ formattedOutput: r.formattedOutput,
113
+ }),
114
+ ),
115
+ );
116
+ }
117
+
118
+ // Lint (Worker thread)
119
+ if (types.includes("lint")) {
120
+ const lintWorkerPath = import.meta.resolve("../workers/lint.worker");
121
+ const lintWorker: WorkerProxy<typeof LintWorkerModule> =
122
+ Worker.create<typeof LintWorkerModule>(lintWorkerPath);
123
+
124
+ tasks.push(
125
+ lintWorker
126
+ .lint({ targets, fix: true, timing: false })
127
+ .then(
128
+ (r: LintResult): CheckResult => ({
129
+ name: "LINT",
130
+ success: r.success,
131
+ errorCount: r.errorCount,
132
+ warningCount: r.warningCount,
133
+ formattedOutput: r.formattedOutput,
134
+ }),
135
+ )
136
+ .finally(() => lintWorker.terminate()),
137
+ );
138
+ }
139
+
140
+ // Test (subprocess)
141
+ if (types.includes("test")) {
142
+ tasks.push(spawnVitest(targets));
143
+ }
144
+
145
+ logger.start(`check 실행 중... (${types.join(", ")})`);
146
+ const results = await Promise.allSettled(tasks);
147
+ logger.success("check 실행 완료");
148
+
149
+ // 결과 수집
150
+ const checkResults: CheckResult[] = results.map((r) => {
151
+ if (r.status === "fulfilled") return r.value;
152
+ return {
153
+ name: "UNKNOWN",
154
+ success: false,
155
+ errorCount: 1,
156
+ warningCount: 0,
157
+ formattedOutput: r.reason instanceof Error ? r.reason.message : String(r.reason),
158
+ };
159
+ });
160
+
161
+ // 섹션별 출력 (typecheck → lint → test 순서 보장)
162
+ const order = ["TYPECHECK", "LINT", "TEST"];
163
+ checkResults.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));
164
+
165
+ for (const result of checkResults) {
166
+ process.stdout.write(formatSection(result));
167
+ }
168
+
169
+ // SUMMARY
170
+ const failed = checkResults.filter((r) => !r.success);
171
+ const totalErrors = checkResults.reduce((sum, r) => sum + r.errorCount, 0);
172
+ const totalWarnings = checkResults.reduce((sum, r) => sum + r.warningCount, 0);
173
+
174
+ process.stdout.write(`\n\n${"=".repeat(6)} SUMMARY ${"=".repeat(6)}\n`);
175
+
176
+ if (failed.length === 0) {
177
+ process.stdout.write(`✔ ALL PASSED\n`);
178
+ } else {
179
+ const failedNames = failed.map((r) => r.name.toLowerCase()).join(", ");
180
+ process.stdout.write(`✖ ${failed.length}/${checkResults.length} FAILED (${failedNames})\n`);
181
+ }
182
+ process.stdout.write(`Total: ${totalErrors} errors, ${totalWarnings} warnings\n`);
183
+
184
+ if (failed.length > 0) {
185
+ process.exitCode = 1;
186
+ }
187
+ }
188
+
189
+ //#endregion
@@ -21,6 +21,20 @@ export interface LintOptions {
21
21
  timing: boolean;
22
22
  }
23
23
 
24
+ /**
25
+ * executeLint()의 반환 타입
26
+ */
27
+ export interface LintResult {
28
+ /** 린트 에러가 없으면 true */
29
+ success: boolean;
30
+ /** ESLint + Stylelint 에러 합계 */
31
+ errorCount: number;
32
+ /** ESLint + Stylelint 경고 합계 */
33
+ warningCount: number;
34
+ /** 포맷터 출력 문자열 (stdout에 쓸 내용) */
35
+ formattedOutput: string;
36
+ }
37
+
24
38
  //#endregion
25
39
 
26
40
  //#region Utilities
@@ -116,17 +130,17 @@ async function hasStylelintConfig(cwd: string): Promise<boolean> {
116
130
  //#region Main
117
131
 
118
132
  /**
119
- * ESLint를 실행한다.
133
+ * ESLint/Stylelint실행하고 결과를 반환한다.
120
134
  *
121
135
  * - `eslint.config.ts/js`에서 globalIgnores 패턴을 추출하여 glob 필터링에 적용
122
136
  * - consola를 사용하여 진행 상황 표시
123
137
  * - 캐시 활성화 (`.cache/eslint.cache`에 저장, 설정 변경 시 자동 무효화)
124
- * - 에러 발생 시 `process.exitCode = 1` 설정
138
+ * - stdout 출력이나 process.exitCode 설정은 하지 않음 (호출자가 판단)
125
139
  *
126
140
  * @param options - 린트 실행 옵션
127
- * @returns 완료 resolve. 에러 발견 `process.exitCode`를 1로 설정하고 resolve (throw하지 않음)
141
+ * @returns 린트 결과 (성공 여부, 에러/경고 수, 포맷터 출력)
128
142
  */
129
- export async function runLint(options: LintOptions): Promise<void> {
143
+ export async function executeLint(options: LintOptions): Promise<LintResult> {
130
144
  const { targets, fix, timing } = options;
131
145
  const cwd = process.cwd();
132
146
  const logger = consola.withTag("sd:cli:lint");
@@ -231,15 +245,15 @@ export async function runLint(options: LintOptions): Promise<void> {
231
245
  }
232
246
  }
233
247
 
234
- // 파일이 없거나 린트가 실행되지 않았으면 조기 종료
248
+ // 파일이 없거나 린트가 실행되지 않았으면 성공 결과 반환
235
249
  if (files.length === 0 || eslintResults == null || eslint == null) {
236
250
  logger.info("린트할 파일 없음");
237
- return;
251
+ return { success: true, errorCount: 0, warningCount: 0, formattedOutput: "" };
238
252
  }
239
253
 
240
254
  // 결과 집계
241
- const errorCount = eslintResults.sum((r) => r.errorCount);
242
- const warningCount = eslintResults.sum((r) => r.warningCount);
255
+ let errorCount = eslintResults.sum((r) => r.errorCount);
256
+ let warningCount = eslintResults.sum((r) => r.warningCount);
243
257
 
244
258
  if (errorCount > 0) {
245
259
  logger.error("린트 에러 발생", { errorCount, warningCount });
@@ -249,19 +263,15 @@ export async function runLint(options: LintOptions): Promise<void> {
249
263
  logger.info("린트 완료", { errorCount, warningCount });
250
264
  }
251
265
 
252
- // 포맷터 출력
266
+ // 포맷터 출력 수집
267
+ let formattedOutput = "";
253
268
  const formatter = await eslint.loadFormatter("stylish");
254
269
  const resultText = await formatter.format(eslintResults);
255
270
  if (resultText) {
256
- process.stdout.write(resultText);
271
+ formattedOutput += resultText;
257
272
  }
258
273
 
259
- // 에러 있으면 exit code 1
260
- if (errorCount > 0) {
261
- process.exitCode = 1;
262
- }
263
-
264
- // Stylelint 결과 출력
274
+ // Stylelint 결과 수집
265
275
  if (stylelintResult != null && stylelintResult.results.length > 0) {
266
276
  const stylelintErrorCount = stylelintResult.results.sum(
267
277
  (r) => r.warnings.filter((w) => w.severity === "error").length,
@@ -270,6 +280,9 @@ export async function runLint(options: LintOptions): Promise<void> {
270
280
  (r) => r.warnings.filter((w) => w.severity === "warning").length,
271
281
  );
272
282
 
283
+ errorCount += stylelintErrorCount;
284
+ warningCount += stylelintWarningCount;
285
+
273
286
  if (stylelintErrorCount > 0) {
274
287
  logger.error("Stylelint 에러 발생", {
275
288
  errorCount: stylelintErrorCount,
@@ -291,12 +304,33 @@ export async function runLint(options: LintOptions): Promise<void> {
291
304
  const stylelintFormatter = await stylelint.formatters.string;
292
305
  const stylelintOutput = stylelintFormatter(stylelintResult.results, stylelintResult);
293
306
  if (stylelintOutput) {
294
- process.stdout.write(stylelintOutput);
307
+ formattedOutput += stylelintOutput;
295
308
  }
309
+ }
296
310
 
297
- if (stylelintErrorCount > 0) {
298
- process.exitCode = 1;
299
- }
311
+ return {
312
+ success: errorCount === 0,
313
+ errorCount,
314
+ warningCount,
315
+ formattedOutput,
316
+ };
317
+ }
318
+
319
+ /**
320
+ * ESLint를 실행한다.
321
+ *
322
+ * executeLint()를 호출하고 결과를 stdout에 출력한 뒤 exitCode를 설정하는 래퍼.
323
+ *
324
+ * @param options - 린트 실행 옵션
325
+ * @returns 완료 시 resolve. 에러 발견 시 `process.exitCode`를 1로 설정하고 resolve (throw하지 않음)
326
+ */
327
+ export async function runLint(options: LintOptions): Promise<void> {
328
+ const result = await executeLint(options);
329
+ if (result.formattedOutput) {
330
+ process.stdout.write(result.formattedOutput);
331
+ }
332
+ if (!result.success) {
333
+ process.exitCode = 1;
300
334
  }
301
335
  }
302
336
 
@@ -23,6 +23,16 @@ export interface TypecheckOptions {
23
23
  options: string[];
24
24
  }
25
25
 
26
+ /**
27
+ * TypeScript 타입체크 실행 결과
28
+ */
29
+ export interface TypecheckResult {
30
+ success: boolean;
31
+ errorCount: number;
32
+ warningCount: number;
33
+ formattedOutput: string;
34
+ }
35
+
26
36
  // 패키지 정보 (packages/* 하위 파일 분류용)
27
37
  interface PackageInfo {
28
38
  name: string;
@@ -162,19 +172,19 @@ function createTypecheckTasks(
162
172
  //#region Main
163
173
 
164
174
  /**
165
- * TypeScript 타입체크를 실행한다.
175
+ * TypeScript 타입체크를 실행하고 결과를 반환한다.
166
176
  *
167
177
  * - `tsconfig.json`을 로드하여 컴파일러 옵션 적용
168
178
  * - `sd.config.ts`를 로드하여 패키지별 타겟 정보 확인 (없으면 기본값 사용)
169
179
  * - Worker threads를 사용하여 실제 병렬 타입체크 수행
170
180
  * - incremental 컴파일 사용 (`.cache/typecheck-{env}.tsbuildinfo`)
171
181
  * - consola 로깅을 사용하여 진행 상황 표시
172
- * - 에러 발생 시 `process.exitCode = 1` 설정
182
+ * - stdout 출력이나 exitCode 설정 없이 결과만 반환
173
183
  *
174
184
  * @param options - 타입체크 실행 옵션
175
- * @returns 완료 resolve. 에러 발견 `process.exitCode`를 1로 설정하고 resolve (throw하지 않음)
185
+ * @returns 타입체크 결과 (성공 여부, 에러/경고 수, 포맷된 출력 문자열)
176
186
  */
177
- export async function runTypecheck(options: TypecheckOptions): Promise<void> {
187
+ export async function executeTypecheck(options: TypecheckOptions): Promise<TypecheckResult> {
178
188
  const { targets } = options;
179
189
  const cwd = process.cwd();
180
190
  const logger = consola.withTag("sd:cli:typecheck");
@@ -193,8 +203,7 @@ export async function runTypecheck(options: TypecheckOptions): Promise<void> {
193
203
  parsedConfig = parseRootTsconfig(cwd);
194
204
  } catch (err) {
195
205
  logger.error(err instanceof Error ? err.message : String(err));
196
- process.exitCode = 1;
197
- return;
206
+ return { success: false, errorCount: 1, warningCount: 0, formattedOutput: "" };
198
207
  }
199
208
 
200
209
  // sd.config.ts 로드
@@ -212,9 +221,13 @@ export async function runTypecheck(options: TypecheckOptions): Promise<void> {
212
221
  const fileNames = pathFilterByTargets(parsedConfig.fileNames, targets, cwd);
213
222
 
214
223
  if (fileNames.length === 0) {
215
- process.stdout.write("✔ 타입체크할 파일이 없습니다.\n");
216
224
  logger.info("타입체크할 파일 없음");
217
- return;
225
+ return {
226
+ success: true,
227
+ errorCount: 0,
228
+ warningCount: 0,
229
+ formattedOutput: "✔ 타입체크할 파일이 없습니다.\n",
230
+ };
218
231
  }
219
232
 
220
233
  // 패키지 정보 추출
@@ -229,8 +242,12 @@ export async function runTypecheck(options: TypecheckOptions): Promise<void> {
229
242
  const tasks = createTypecheckTasks(packages, cwd, nonPackage);
230
243
 
231
244
  if (tasks.length === 0) {
232
- process.stdout.write("✔ 타입체크할 대상이 없습니다.\n");
233
- return;
245
+ return {
246
+ success: true,
247
+ errorCount: 0,
248
+ warningCount: 0,
249
+ formattedOutput: "✔ 타입체크할 대상이 없습니다.\n",
250
+ };
234
251
  }
235
252
 
236
253
  // 동시성 설정: CPU 코어의 7/8만 사용 (일반적인 병렬 빌드 도구의 기본값, OS/다른 프로세스 여유분 확보, 최소 1, 작업 수 이하)
@@ -289,7 +306,7 @@ export async function runTypecheck(options: TypecheckOptions): Promise<void> {
289
306
  await Promise.all(workers.map((w) => w.terminate()));
290
307
  }
291
308
 
292
- // 결과 출력
309
+ // 결과 집계
293
310
  const allDiagnostics: ts.Diagnostic[] = [];
294
311
  let totalErrorCount = 0;
295
312
  let totalWarningCount = 0;
@@ -316,13 +333,34 @@ export async function runTypecheck(options: TypecheckOptions): Promise<void> {
316
333
  logger.info("타입체크 완료", { errorCount: totalErrorCount, warningCount: totalWarningCount });
317
334
  }
318
335
 
336
+ let formattedOutput = "";
319
337
  if (allDiagnostics.length > 0) {
320
338
  const uniqueDiagnostics = ts.sortAndDeduplicateDiagnostics(allDiagnostics);
321
- const message = ts.formatDiagnosticsWithColorAndContext(uniqueDiagnostics, formatHost);
322
- process.stdout.write(message);
339
+ formattedOutput = ts.formatDiagnosticsWithColorAndContext(uniqueDiagnostics, formatHost);
323
340
  }
324
341
 
325
- if (totalErrorCount > 0) {
342
+ return {
343
+ success: totalErrorCount === 0,
344
+ errorCount: totalErrorCount,
345
+ warningCount: totalWarningCount,
346
+ formattedOutput,
347
+ };
348
+ }
349
+
350
+ /**
351
+ * TypeScript 타입체크를 실행한다.
352
+ *
353
+ * `executeTypecheck()`를 호출하고 결과를 stdout에 출력하며, 에러 발생 시 `process.exitCode`를 설정한다.
354
+ *
355
+ * @param options - 타입체크 실행 옵션
356
+ * @returns 완료 시 resolve. 에러 발견 시 `process.exitCode`를 1로 설정하고 resolve (throw하지 않음)
357
+ */
358
+ export async function runTypecheck(options: TypecheckOptions): Promise<void> {
359
+ const result = await executeTypecheck(options);
360
+ if (result.formattedOutput) {
361
+ process.stdout.write(result.formattedOutput);
362
+ }
363
+ if (!result.success) {
326
364
  process.exitCode = 1;
327
365
  }
328
366
  }
@@ -449,8 +449,8 @@ export class BuildOrchestrator {
449
449
  const lintWorker = Worker.create<typeof LintWorkerModule>(lintWorkerPath);
450
450
  const lintTask = async (): Promise<void> => {
451
451
  try {
452
- const hasError = await lintWorker.lint(lintOptions);
453
- if (hasError) state.hasError = true;
452
+ const result = await lintWorker.lint(lintOptions);
453
+ if (!result.success) state.hasError = true;
454
454
  } finally {
455
455
  await lintWorker.terminate();
456
456
  }
@@ -6,6 +6,7 @@ import yargs, { type Argv } from "yargs";
6
6
  import { hideBin } from "yargs/helpers";
7
7
  import { runLint } from "./commands/lint";
8
8
  import { runTypecheck } from "./commands/typecheck";
9
+ import { runCheck, type CheckType } from "./commands/check";
9
10
  import { runWatch } from "./commands/watch";
10
11
  import { runDev } from "./commands/dev";
11
12
  import { runBuild } from "./commands/build";
@@ -100,6 +101,33 @@ export function createCliParser(argv: string[]): Argv {
100
101
  });
101
102
  },
102
103
  )
104
+ .command(
105
+ "check [targets..]",
106
+ "Typecheck, Lint, Test를 병렬로 실행한다.",
107
+ (cmd) =>
108
+ cmd
109
+ .version(false)
110
+ .hide("help")
111
+ .positional("targets", {
112
+ type: "string",
113
+ array: true,
114
+ describe: "체크할 경로 (예: packages/core-common, tests/orm)",
115
+ default: [],
116
+ })
117
+ .options({
118
+ type: {
119
+ type: "string",
120
+ describe: "실행할 체크 타입 (쉼표 구분: typecheck,lint,test)",
121
+ default: "typecheck,lint,test",
122
+ },
123
+ }),
124
+ async (args) => {
125
+ await runCheck({
126
+ targets: args.targets,
127
+ types: args.type.split(",").map((t) => t.trim()) as CheckType[],
128
+ });
129
+ },
130
+ )
103
131
  .command(
104
132
  "watch [targets..]",
105
133
  "패키지를 watch 모드로 빌드한다.",
@@ -1,15 +1,14 @@
1
1
  import { createWorker } from "@simplysm/core-node";
2
- import { runLint, type LintOptions } from "../commands/lint";
2
+ import { executeLint, type LintOptions, type LintResult } from "../commands/lint";
3
3
 
4
4
  //#region Worker
5
5
 
6
6
  /**
7
7
  * Lint worker.
8
- * BuildOrchestrator에서 lint를 별도 스레드로 실행하기 위한 워커.
8
+ * check 명령과 BuildOrchestrator에서 lint를 별도 스레드로 실행하기 위한 워커.
9
9
  */
10
- async function lint(options: LintOptions): Promise<boolean> {
11
- await runLint(options);
12
- return process.exitCode === 1;
10
+ async function lint(options: LintOptions): Promise<LintResult> {
11
+ return executeLint(options);
13
12
  }
14
13
 
15
14
  export default createWorker({ lint });
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
7
- "@simplysm/solid": "~13.0.53",
7
+ "@simplysm/solid": "~13.0.56",
8
8
  {{#if router}}
9
9
  "@solidjs/router": "^0.15.4",
10
10
  {{/if}}
@@ -4,7 +4,7 @@
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "dependencies": {
7
- "@simplysm/core-common": "~13.0.53",
8
- "@simplysm/service-server": "~13.0.53"
7
+ "@simplysm/core-common": "~13.0.56",
8
+ "@simplysm/service-server": "~13.0.56"
9
9
  }
10
10
  }
@@ -15,9 +15,9 @@
15
15
  "vitest": "vitest"
16
16
  },
17
17
  "devDependencies": {
18
- "@simplysm/sd-cli": "~13.0.53",
19
- "@simplysm/sd-claude": "~13.0.53",
20
- "@simplysm/lint": "~13.0.53",
18
+ "@simplysm/sd-cli": "~13.0.56",
19
+ "@simplysm/sd-claude": "~13.0.56",
20
+ "@simplysm/lint": "~13.0.56",
21
21
  "@types/node": "^20.19.33",
22
22
  "eslint": "^9.39.2",
23
23
  "prettier": "^3.8.1",