@simplysm/sd-cli 13.0.11 → 13.0.13

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 (160) hide show
  1. package/README.md +42 -2
  2. package/dist/builders/BaseBuilder.d.ts +15 -4
  3. package/dist/builders/BaseBuilder.d.ts.map +1 -1
  4. package/dist/builders/BaseBuilder.js +50 -0
  5. package/dist/builders/BaseBuilder.js.map +1 -1
  6. package/dist/builders/DtsBuilder.d.ts.map +1 -1
  7. package/dist/builders/DtsBuilder.js +2 -39
  8. package/dist/builders/DtsBuilder.js.map +1 -1
  9. package/dist/builders/LibraryBuilder.d.ts.map +1 -1
  10. package/dist/builders/LibraryBuilder.js +2 -39
  11. package/dist/builders/LibraryBuilder.js.map +1 -1
  12. package/dist/builders/types.d.ts +2 -2
  13. package/dist/builders/types.d.ts.map +1 -1
  14. package/dist/capacitor/capacitor.d.ts.map +1 -1
  15. package/dist/capacitor/capacitor.js +2 -1
  16. package/dist/capacitor/capacitor.js.map +1 -1
  17. package/dist/commands/add-client.d.ts.map +1 -1
  18. package/dist/commands/add-client.js +1 -9
  19. package/dist/commands/add-client.js.map +1 -1
  20. package/dist/commands/add-server.d.ts.map +1 -1
  21. package/dist/commands/add-server.js +1 -9
  22. package/dist/commands/add-server.js.map +1 -1
  23. package/dist/commands/build.d.ts +1 -2
  24. package/dist/commands/build.d.ts.map +1 -1
  25. package/dist/commands/build.js +12 -311
  26. package/dist/commands/build.js.map +1 -1
  27. package/dist/commands/dev.d.ts +1 -1
  28. package/dist/commands/dev.d.ts.map +1 -1
  29. package/dist/commands/dev.js +11 -432
  30. package/dist/commands/dev.js.map +1 -1
  31. package/dist/commands/device.d.ts.map +1 -1
  32. package/dist/commands/device.js +17 -32
  33. package/dist/commands/device.js.map +1 -1
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +1 -9
  36. package/dist/commands/init.js.map +1 -1
  37. package/dist/commands/lint.d.ts +1 -1
  38. package/dist/commands/lint.d.ts.map +1 -1
  39. package/dist/commands/lint.js +71 -118
  40. package/dist/commands/lint.js.map +2 -2
  41. package/dist/commands/publish.d.ts.map +1 -1
  42. package/dist/commands/publish.js +47 -69
  43. package/dist/commands/publish.js.map +1 -1
  44. package/dist/commands/typecheck.d.ts +1 -1
  45. package/dist/commands/typecheck.d.ts.map +1 -1
  46. package/dist/commands/typecheck.js +11 -24
  47. package/dist/commands/typecheck.js.map +1 -1
  48. package/dist/index.d.ts +1 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +4 -0
  51. package/dist/index.js.map +1 -1
  52. package/dist/infra/ResultCollector.d.ts +1 -1
  53. package/dist/infra/ResultCollector.d.ts.map +1 -1
  54. package/dist/infra/ResultCollector.js +1 -1
  55. package/dist/infra/ResultCollector.js.map +1 -1
  56. package/dist/orchestrators/BuildOrchestrator.d.ts +53 -0
  57. package/dist/orchestrators/BuildOrchestrator.d.ts.map +1 -0
  58. package/dist/orchestrators/BuildOrchestrator.js +338 -0
  59. package/dist/orchestrators/BuildOrchestrator.js.map +6 -0
  60. package/dist/orchestrators/DevOrchestrator.d.ts +64 -0
  61. package/dist/orchestrators/DevOrchestrator.d.ts.map +1 -0
  62. package/dist/orchestrators/DevOrchestrator.js +524 -0
  63. package/dist/orchestrators/DevOrchestrator.js.map +6 -0
  64. package/dist/orchestrators/WatchOrchestrator.d.ts +1 -1
  65. package/dist/orchestrators/WatchOrchestrator.d.ts.map +1 -1
  66. package/dist/orchestrators/WatchOrchestrator.js +30 -21
  67. package/dist/orchestrators/WatchOrchestrator.js.map +1 -1
  68. package/dist/orchestrators/index.d.ts +2 -0
  69. package/dist/orchestrators/index.d.ts.map +1 -1
  70. package/dist/orchestrators/index.js +4 -0
  71. package/dist/orchestrators/index.js.map +1 -1
  72. package/dist/sd-cli-entry.js +14 -14
  73. package/dist/sd-cli-entry.js.map +1 -1
  74. package/dist/sd-cli.js +6 -4
  75. package/dist/sd-cli.js.map +1 -1
  76. package/dist/utils/esbuild-config.d.ts +8 -0
  77. package/dist/utils/esbuild-config.d.ts.map +1 -1
  78. package/dist/utils/esbuild-config.js +23 -28
  79. package/dist/utils/esbuild-config.js.map +1 -1
  80. package/dist/utils/output-utils.d.ts +0 -1
  81. package/dist/utils/output-utils.d.ts.map +1 -1
  82. package/dist/utils/output-utils.js +1 -1
  83. package/dist/utils/output-utils.js.map +1 -1
  84. package/dist/utils/package-utils.d.ts +5 -1
  85. package/dist/utils/package-utils.d.ts.map +1 -1
  86. package/dist/utils/package-utils.js +12 -0
  87. package/dist/utils/package-utils.js.map +1 -1
  88. package/dist/utils/rebuild-manager.d.ts +15 -0
  89. package/dist/utils/rebuild-manager.d.ts.map +1 -0
  90. package/dist/utils/rebuild-manager.js +50 -0
  91. package/dist/utils/rebuild-manager.js.map +6 -0
  92. package/dist/utils/replace-deps.d.ts.map +1 -1
  93. package/dist/utils/replace-deps.js +7 -13
  94. package/dist/utils/replace-deps.js.map +1 -1
  95. package/dist/utils/vite-config.d.ts.map +1 -1
  96. package/dist/utils/vite-config.js +61 -7
  97. package/dist/utils/vite-config.js.map +1 -1
  98. package/dist/utils/worker-events.d.ts +5 -4
  99. package/dist/utils/worker-events.d.ts.map +1 -1
  100. package/dist/utils/worker-events.js +4 -0
  101. package/dist/utils/worker-events.js.map +1 -1
  102. package/dist/utils/worker-utils.d.ts +13 -0
  103. package/dist/utils/worker-utils.d.ts.map +1 -0
  104. package/dist/utils/worker-utils.js +15 -0
  105. package/dist/utils/worker-utils.js.map +6 -0
  106. package/dist/workers/client.worker.d.ts.map +1 -1
  107. package/dist/workers/client.worker.js +2 -14
  108. package/dist/workers/client.worker.js.map +1 -1
  109. package/dist/workers/library.worker.d.ts.map +1 -1
  110. package/dist/workers/library.worker.js +14 -16
  111. package/dist/workers/library.worker.js.map +1 -1
  112. package/dist/workers/server-runtime.worker.d.ts.map +1 -1
  113. package/dist/workers/server-runtime.worker.js +11 -11
  114. package/dist/workers/server-runtime.worker.js.map +1 -1
  115. package/dist/workers/server.worker.d.ts.map +1 -1
  116. package/dist/workers/server.worker.js +2 -14
  117. package/dist/workers/server.worker.js.map +1 -1
  118. package/package.json +4 -5
  119. package/src/builders/BaseBuilder.ts +71 -4
  120. package/src/builders/DtsBuilder.ts +2 -49
  121. package/src/builders/LibraryBuilder.ts +2 -51
  122. package/src/builders/types.ts +2 -2
  123. package/src/capacitor/capacitor.ts +2 -1
  124. package/src/commands/add-client.ts +1 -14
  125. package/src/commands/add-server.ts +1 -13
  126. package/src/commands/build.ts +13 -443
  127. package/src/commands/dev.ts +12 -582
  128. package/src/commands/device.ts +17 -34
  129. package/src/commands/init.ts +1 -13
  130. package/src/commands/lint.ts +85 -146
  131. package/src/commands/publish.ts +58 -76
  132. package/src/commands/typecheck.ts +13 -46
  133. package/src/index.ts +1 -0
  134. package/src/infra/ResultCollector.ts +2 -2
  135. package/src/orchestrators/BuildOrchestrator.ts +499 -0
  136. package/src/orchestrators/DevOrchestrator.ts +703 -0
  137. package/src/orchestrators/WatchOrchestrator.ts +42 -25
  138. package/src/orchestrators/index.ts +2 -0
  139. package/src/sd-cli-entry.ts +14 -14
  140. package/src/sd-cli.ts +6 -4
  141. package/src/utils/esbuild-config.ts +31 -33
  142. package/src/utils/output-utils.ts +1 -2
  143. package/src/utils/package-utils.ts +16 -1
  144. package/src/utils/rebuild-manager.ts +65 -0
  145. package/src/utils/replace-deps.ts +25 -23
  146. package/src/utils/vite-config.ts +115 -9
  147. package/src/utils/worker-events.ts +13 -5
  148. package/src/utils/worker-utils.ts +26 -0
  149. package/src/workers/client.worker.ts +3 -19
  150. package/src/workers/library.worker.ts +16 -22
  151. package/src/workers/server-runtime.worker.ts +16 -17
  152. package/src/workers/server.worker.ts +2 -19
  153. package/templates/add-client/__CLIENT__/package.json.hbs +1 -1
  154. package/templates/add-server/__SERVER__/package.json.hbs +2 -2
  155. package/templates/init/package.json.hbs +3 -3
  156. package/dist/utils/listr-manager.d.ts +0 -37
  157. package/dist/utils/listr-manager.d.ts.map +0 -1
  158. package/dist/utils/listr-manager.js +0 -59
  159. package/dist/utils/listr-manager.js.map +0 -6
  160. package/src/utils/listr-manager.ts +0 -89
@@ -1,6 +1,7 @@
1
1
  import { WorkerManager } from "../infra/WorkerManager";
2
- import type { ResultCollector } from "../infra/ResultCollector";
3
- import type { RebuildListrManager } from "../utils/listr-manager";
2
+ import type { BuildResult, ResultCollector } from "../infra/ResultCollector";
3
+ import type { RebuildManager } from "../utils/rebuild-manager";
4
+ import type { BuildEventData, ErrorEventData } from "../utils/worker-events";
4
5
  import type { IBuilder, PackageInfo } from "./types";
5
6
 
6
7
  /**
@@ -12,7 +13,7 @@ import type { IBuilder, PackageInfo } from "./types";
12
13
  export abstract class BaseBuilder implements IBuilder {
13
14
  protected readonly workerManager: WorkerManager;
14
15
  protected readonly resultCollector: ResultCollector;
15
- protected readonly rebuildManager: RebuildListrManager | undefined;
16
+ protected readonly rebuildManager: RebuildManager | undefined;
16
17
  protected readonly packages: PackageInfo[];
17
18
  protected readonly cwd: string;
18
19
  protected isWatchMode = false;
@@ -26,7 +27,7 @@ export abstract class BaseBuilder implements IBuilder {
26
27
  cwd: string;
27
28
  packages: PackageInfo[];
28
29
  resultCollector: ResultCollector;
29
- rebuildManager?: RebuildListrManager;
30
+ rebuildManager?: RebuildManager;
30
31
  }) {
31
32
  this.cwd = options.cwd;
32
33
  this.packages = options.packages;
@@ -114,6 +115,72 @@ export abstract class BaseBuilder implements IBuilder {
114
115
  }
115
116
  }
116
117
 
118
+ /**
119
+ * 공통 Worker 이벤트 핸들러 등록 (buildStart, build, error)
120
+ *
121
+ * LibraryBuilder와 DtsBuilder에서 동일한 패턴의 이벤트 핸들러를
122
+ * 중복 없이 등록할 수 있도록 공통 로직을 제공한다.
123
+ *
124
+ * @param workerKey Worker 식별자 (예: "core-common:build")
125
+ * @param resultType BuildResult의 type 필드 값
126
+ * @param listrTitle 리빌드 시 표시할 제목
127
+ */
128
+ protected registerEventHandlersForWorker(
129
+ pkg: PackageInfo,
130
+ workerKey: string,
131
+ resultType: BuildResult["type"],
132
+ listrTitle: string,
133
+ ): void {
134
+ const worker = this.workerManager.get(workerKey)!;
135
+
136
+ // 초기 빌드 여부 추적
137
+ let isInitialBuild = true;
138
+
139
+ // 빌드 시작 (리빌드 시)
140
+ worker.on("buildStart", () => {
141
+ if (!isInitialBuild && this.rebuildManager != null) {
142
+ const resolver = this.rebuildManager.registerBuild(workerKey, listrTitle);
143
+ this.buildResolvers.set(workerKey, resolver);
144
+ }
145
+ });
146
+
147
+ // 빌드 완료
148
+ worker.on("build", (data) => {
149
+ const event = data as BuildEventData;
150
+ const result: BuildResult = {
151
+ name: pkg.name,
152
+ target: pkg.config.target,
153
+ type: resultType,
154
+ status: event.success ? "success" : "error",
155
+ message: event.errors?.join("\n"),
156
+ };
157
+ this.resultCollector.add(result);
158
+
159
+ if (isInitialBuild) {
160
+ isInitialBuild = false;
161
+ }
162
+ this.completeBuild(pkg);
163
+ });
164
+
165
+ // 에러
166
+ worker.on("error", (data) => {
167
+ const event = data as ErrorEventData;
168
+ const result: BuildResult = {
169
+ name: pkg.name,
170
+ target: pkg.config.target,
171
+ type: resultType,
172
+ status: "error",
173
+ message: event.message,
174
+ };
175
+ this.resultCollector.add(result);
176
+
177
+ if (isInitialBuild) {
178
+ isInitialBuild = false;
179
+ }
180
+ this.completeBuild(pkg);
181
+ });
182
+ }
183
+
117
184
  /**
118
185
  * Builder 타입 (결과 키 생성용)
119
186
  */
@@ -1,7 +1,6 @@
1
1
  import type * as DtsWorkerModule from "../workers/dts.worker";
2
2
  import type { BuildResult } from "../infra/ResultCollector";
3
3
  import type { TypecheckEnv } from "../utils/tsconfig";
4
- import type { BuildEventData, ErrorEventData } from "../utils/worker-events";
5
4
  import { BaseBuilder } from "./BaseBuilder";
6
5
  import type { PackageInfo } from "./types";
7
6
 
@@ -40,55 +39,9 @@ export class DtsBuilder extends BaseBuilder {
40
39
 
41
40
  protected registerEventHandlers(): void {
42
41
  for (const pkg of this.packages) {
43
- const worker = this.workerManager.get<typeof DtsWorkerModule>(`${pkg.name}:dts`)!;
44
- const resultKey = `${pkg.name}:dts`;
42
+ const workerKey = `${pkg.name}:dts`;
45
43
  const listrTitle = `${pkg.name} (dts)`;
46
-
47
- let isInitialBuild = true;
48
-
49
- // 빌드 시작 (리빌드 시)
50
- worker.on("buildStart", () => {
51
- if (!isInitialBuild && this.rebuildManager != null) {
52
- const resolver = this.rebuildManager.registerBuild(resultKey, listrTitle);
53
- this.buildResolvers.set(resultKey, resolver);
54
- }
55
- });
56
-
57
- // 빌드 완료
58
- worker.on("build", (data) => {
59
- const event = data as BuildEventData;
60
- const result: BuildResult = {
61
- name: pkg.name,
62
- target: pkg.config.target,
63
- type: "dts",
64
- status: event.success ? "success" : "error",
65
- message: event.errors?.join("\n"),
66
- };
67
- this.resultCollector.add(result);
68
-
69
- if (isInitialBuild) {
70
- isInitialBuild = false;
71
- }
72
- this.completeBuild(pkg);
73
- });
74
-
75
- // 에러
76
- worker.on("error", (data) => {
77
- const event = data as ErrorEventData;
78
- const result: BuildResult = {
79
- name: pkg.name,
80
- target: pkg.config.target,
81
- type: "dts",
82
- status: "error",
83
- message: event.message,
84
- };
85
- this.resultCollector.add(result);
86
-
87
- if (isInitialBuild) {
88
- isInitialBuild = false;
89
- }
90
- this.completeBuild(pkg);
91
- });
44
+ this.registerEventHandlersForWorker(pkg, workerKey, "dts", listrTitle);
92
45
  }
93
46
  }
94
47
 
@@ -1,7 +1,6 @@
1
1
  import type * as LibraryWorkerModule from "../workers/library.worker";
2
2
  import type { BuildResult } from "../infra/ResultCollector";
3
3
  import type { SdBuildPackageConfig } from "../sd-config.types";
4
- import type { BuildEventData, ErrorEventData } from "../utils/worker-events";
5
4
  import { BaseBuilder } from "./BaseBuilder";
6
5
  import type { PackageInfo } from "./types";
7
6
 
@@ -31,57 +30,9 @@ export class LibraryBuilder extends BaseBuilder {
31
30
 
32
31
  protected registerEventHandlers(): void {
33
32
  for (const pkg of this.packages) {
34
- const worker = this.workerManager.get<typeof LibraryWorkerModule>(`${pkg.name}:build`)!;
35
- const resultKey = `${pkg.name}:build`;
33
+ const workerKey = `${pkg.name}:build`;
36
34
  const listrTitle = `${pkg.name} (${pkg.config.target})`;
37
-
38
- // 초기 빌드 여부 추적
39
- let isInitialBuild = true;
40
-
41
- // 빌드 시작 (리빌드 시)
42
- worker.on("buildStart", () => {
43
- if (!isInitialBuild && this.rebuildManager != null) {
44
- // 리빌드 시 RebuildListrManager에 등록
45
- const resolver = this.rebuildManager.registerBuild(resultKey, listrTitle);
46
- this.buildResolvers.set(resultKey, resolver);
47
- }
48
- });
49
-
50
- // 빌드 완료
51
- worker.on("build", (data) => {
52
- const event = data as BuildEventData;
53
- const result: BuildResult = {
54
- name: pkg.name,
55
- target: pkg.config.target,
56
- type: "build",
57
- status: event.success ? "success" : "error",
58
- message: event.errors?.join("\n"),
59
- };
60
- this.resultCollector.add(result);
61
-
62
- if (isInitialBuild) {
63
- isInitialBuild = false;
64
- }
65
- this.completeBuild(pkg);
66
- });
67
-
68
- // 에러
69
- worker.on("error", (data) => {
70
- const event = data as ErrorEventData;
71
- const result: BuildResult = {
72
- name: pkg.name,
73
- target: pkg.config.target,
74
- type: "build",
75
- status: "error",
76
- message: event.message,
77
- };
78
- this.resultCollector.add(result);
79
-
80
- if (isInitialBuild) {
81
- isInitialBuild = false;
82
- }
83
- this.completeBuild(pkg);
84
- });
35
+ this.registerEventHandlersForWorker(pkg, workerKey, "build", listrTitle);
85
36
  }
86
37
  }
87
38
 
@@ -1,6 +1,6 @@
1
1
  import type { SdPackageConfig } from "../sd-config.types";
2
2
  import type { ResultCollector } from "../infra/ResultCollector";
3
- import type { RebuildListrManager } from "../utils/listr-manager";
3
+ import type { RebuildManager } from "../utils/rebuild-manager";
4
4
 
5
5
  /**
6
6
  * 패키지 정보
@@ -18,7 +18,7 @@ export interface BuilderOptions {
18
18
  cwd: string;
19
19
  packages: PackageInfo[];
20
20
  resultCollector: ResultCollector;
21
- rebuildManager?: RebuildListrManager;
21
+ rebuildManager?: RebuildManager;
22
22
  }
23
23
 
24
24
  /**
@@ -668,7 +668,8 @@ export default config;
668
668
 
669
669
  // versionName, versionCode 설정
670
670
  const version = this._npmConfig.version;
671
- const versionParts = version.split(".");
671
+ const cleanVersion = version.replace(/-.*$/, "");
672
+ const versionParts = cleanVersion.split(".");
672
673
  const versionCode =
673
674
  parseInt(versionParts[0] ?? "0") * 10000 +
674
675
  parseInt(versionParts[1] ?? "0") * 100 +
@@ -5,6 +5,7 @@ import { consola } from "consola";
5
5
  import { renderTemplateDir } from "../utils/template";
6
6
  import { addPackageToSdConfig, addTailwindToEslintConfig } from "../utils/config-editor";
7
7
  import { spawn } from "../utils/spawn";
8
+ import { findPackageRoot } from "../utils/package-utils";
8
9
 
9
10
  //#region Types
10
11
 
@@ -16,20 +17,6 @@ export interface AddClientOptions {}
16
17
  //#endregion
17
18
 
18
19
  //#region Utilities
19
-
20
- /**
21
- * import.meta.dirname에서 상위로 올라가며 package.json을 찾아 패키지 루트를 반환한다.
22
- */
23
- function findPackageRoot(startDir: string): string {
24
- let dir = startDir;
25
- while (!fs.existsSync(path.join(dir, "package.json"))) {
26
- const parent = path.dirname(dir);
27
- if (parent === dir) throw new Error("package.json을 찾을 수 없습니다.");
28
- dir = parent;
29
- }
30
- return dir;
31
- }
32
-
33
20
  //#endregion
34
21
 
35
22
  //#region Main
@@ -5,6 +5,7 @@ import { consola } from "consola";
5
5
  import { renderTemplateDir } from "../utils/template";
6
6
  import { addPackageToSdConfig, setClientServerInSdConfig } from "../utils/config-editor";
7
7
  import { spawn } from "../utils/spawn";
8
+ import { findPackageRoot } from "../utils/package-utils";
8
9
 
9
10
  //#region Types
10
11
 
@@ -17,19 +18,6 @@ export interface AddServerOptions {}
17
18
 
18
19
  //#region Utilities
19
20
 
20
- /**
21
- * import.meta.dirname에서 상위로 올라가며 package.json을 찾아 패키지 루트를 반환한다.
22
- */
23
- function findPackageRoot(startDir: string): string {
24
- let dir = startDir;
25
- while (!fs.existsSync(path.join(dir, "package.json"))) {
26
- const parent = path.dirname(dir);
27
- if (parent === dir) throw new Error("package.json을 찾을 수 없습니다.");
28
- dir = parent;
29
- }
30
- return dir;
31
- }
32
-
33
21
  /**
34
22
  * sd.config.ts를 읽어서 target이 "client"인 패키지명 목록을 반환한다.
35
23
  */