@simplysm/sd-cli 14.0.97 → 14.0.98

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.
@@ -1 +1 @@
1
- {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/generators/root.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAyB3C,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E"}
1
+ {"version":3,"file":"root.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/generators/root.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAwB3C,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ/E"}
@@ -9,7 +9,6 @@ const FIXED = [
9
9
  ".editorconfig",
10
10
  ["gitignore", ".gitignore"],
11
11
  ["npmrc", ".npmrc"],
12
- ".prettierignore",
13
12
  ".prettierrc.yaml",
14
13
  "eslint.config.ts",
15
14
  "pnpm-workspace.yaml",
@@ -1 +1 @@
1
- {"version":3,"file":"root.js","sourceRoot":"","sources":["../../../../src/commands/init/generators/root.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAExD,+DAA+D;AAC/D,8CAA8C;AAC9C,0CAA0C;AAC1C,MAAM,KAAK,GAAkC;IAC3C,eAAe;IACf,CAAC,WAAW,EAAE,YAAY,CAAC;IAC3B,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnB,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;CACtB,CAAC;AAEF,MAAM,GAAG,GAAG;IACV,WAAW;IACX,cAAc;IACd,eAAe;IACf,cAAc;IACd,kBAAkB;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,IAAgB;IAC9D,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"root.js","sourceRoot":"","sources":["../../../../src/commands/init/generators/root.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC;AAExD,+DAA+D;AAC/D,8CAA8C;AAC9C,0CAA0C;AAC1C,MAAM,KAAK,GAAkC;IAC3C,eAAe;IACf,CAAC,WAAW,EAAE,YAAY,CAAC;IAC3B,CAAC,OAAO,EAAE,QAAQ,CAAC;IACnB,kBAAkB;IAClB,kBAAkB;IAClB,qBAAqB;CACtB,CAAC;AAEF,MAAM,GAAG,GAAG;IACV,WAAW;IACX,cAAc;IACd,eAAe;IACf,cAAc;IACd,kBAAkB;CACnB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,GAAW,EAAE,IAAgB;IAC9D,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjE,MAAM,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,GAAG,EAAE,CAAC;QACvB,MAAM,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAChF,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA2C9D"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;CACb;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CA0C9D"}
@@ -35,8 +35,7 @@ export async function runInit(opts) {
35
35
  logger.info("의존성 설치 및 도구 준비 중...");
36
36
  await shellSpawn("mise", ["trust"], { cwd: opts.cwd, stdio: "inherit" });
37
37
  await shellSpawn("mise", ["install"], { cwd: opts.cwd, stdio: "inherit" });
38
- await shellSpawn("pnpm", ["install"], { cwd: opts.cwd, stdio: "inherit" });
39
- await shellSpawn("pnpm", ["approve-builds", "--all"], { cwd: opts.cwd, stdio: "inherit" });
38
+ await shellSpawn("pnpm", ["install", "--config.dangerously-allow-all-builds=true"], { cwd: opts.cwd, stdio: "inherit" });
40
39
  await shellSpawn("pnpm", ["up", "-r"], { cwd: opts.cwd, stdio: "inherit" });
41
40
  logger.info("의존성 설치 및 도구 준비 완료.");
42
41
  const steps = [];
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/commands/init/init.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/sd-cli",
3
- "version": "14.0.97",
3
+ "version": "14.0.98",
4
4
  "description": "Simplysm package - CLI tool",
5
5
  "author": "simplysm",
6
6
  "license": "Apache-2.0",
@@ -45,9 +45,9 @@
45
45
  "ws": "^8.21.0",
46
46
  "yaml": "^2.9.0",
47
47
  "yargs": "^18.0.0",
48
- "@simplysm/core-node": "14.0.97",
49
- "@simplysm/core-common": "14.0.97",
50
- "@simplysm/storage": "14.0.97"
48
+ "@simplysm/core-common": "14.0.98",
49
+ "@simplysm/storage": "14.0.98",
50
+ "@simplysm/core-node": "14.0.98"
51
51
  },
52
52
  "devDependencies": {
53
53
  "@types/semver": "^7.7.1",
@@ -12,7 +12,6 @@ const FIXED: (string | [string, string])[] = [
12
12
  ".editorconfig",
13
13
  ["gitignore", ".gitignore"],
14
14
  ["npmrc", ".npmrc"],
15
- ".prettierignore",
16
15
  ".prettierrc.yaml",
17
16
  "eslint.config.ts",
18
17
  "pnpm-workspace.yaml",
@@ -1,64 +1,63 @@
1
- import crypto from "crypto";
2
- import path from "path";
3
- import { createLogger } from "@simplysm/core-common";
4
- import { generateClient } from "./generators/client";
5
- import { generateClientCommon } from "./generators/client-common";
6
- import { generateCommon } from "./generators/common";
7
- import { generateRoot } from "./generators/root";
8
- import { generateServer } from "./generators/server";
9
- import { normalize } from "./normalize";
10
- import { promptInit } from "./prompts";
11
- import type { RenderData } from "./types";
12
- import { validateBeforePrompt, validateInput } from "./validate";
13
- import { shellSpawn } from "../../utils/shell-spawn";
14
-
15
- const logger = createLogger("sd:cli:init");
16
-
17
- export interface InitOptions {
18
- cwd: string;
19
- }
20
-
21
- export async function runInit(opts: InitOptions): Promise<void> {
22
- await validateBeforePrompt(opts.cwd);
23
-
24
- const input = await promptInit(path.basename(opts.cwd));
25
- validateInput(input);
26
-
27
- const normalized = normalize(input);
28
- const data: RenderData = {
29
- ...normalized,
30
- jwtSecret: crypto.randomBytes(32).toString("hex"),
31
- };
32
-
33
- logger.info(`워크스페이스 부트스트랩 시작: ${opts.cwd}`);
34
-
35
- await generateRoot(opts.cwd, data);
36
- if (data.hasServer) await generateServer(opts.cwd, data);
37
- if (data.hasCommon) await generateCommon(opts.cwd, data);
38
- if (data.hasClientCommon) await generateClientCommon(opts.cwd, data);
39
- for (const client of data.clients) {
40
- await generateClient(opts.cwd, data, client);
41
- }
42
-
43
- logger.info("워크스페이스 부트스트랩 완료.");
44
-
45
- logger.info("의존성 설치 및 도구 준비 중...");
46
- await shellSpawn("mise", ["trust"], { cwd: opts.cwd, stdio: "inherit" });
47
- await shellSpawn("mise", ["install"], { cwd: opts.cwd, stdio: "inherit" });
48
- await shellSpawn("pnpm", ["install"], { cwd: opts.cwd, stdio: "inherit" });
49
- await shellSpawn("pnpm", ["approve-builds", "--all"], { cwd: opts.cwd, stdio: "inherit" });
50
- await shellSpawn("pnpm", ["up", "-r"], { cwd: opts.cwd, stdio: "inherit" });
51
- logger.info("의존성 설치 및 도구 준비 완료.");
52
-
53
- const steps: string[] = [];
54
- if (data.hasDb) {
55
- steps.push("sd.config.ts 의 configs.orm.MAIN 접속 정보 (host/port/user/password/database) 를 실제 값으로 수정");
56
- }
57
- if (data.hasMobile) {
58
- steps.push(`(prod 빌드 필요 시) capacitor 키스토어를 packages/${data.firstMobileClientName!}/res/ 에 배치 후 sd.config.ts 의 capacitor.platform.android.sign 블록 수동 추가`);
59
- }
60
- steps.push("CLAUDE.md 가 필요하면 Claude Code 내장 /init 으로 작성");
61
-
62
- logger.info("다음 단계:");
63
- steps.forEach((s, i) => logger.info(` ${i + 1}. ${s}`));
64
- }
1
+ import crypto from "crypto";
2
+ import path from "path";
3
+ import { createLogger } from "@simplysm/core-common";
4
+ import { generateClient } from "./generators/client";
5
+ import { generateClientCommon } from "./generators/client-common";
6
+ import { generateCommon } from "./generators/common";
7
+ import { generateRoot } from "./generators/root";
8
+ import { generateServer } from "./generators/server";
9
+ import { normalize } from "./normalize";
10
+ import { promptInit } from "./prompts";
11
+ import type { RenderData } from "./types";
12
+ import { validateBeforePrompt, validateInput } from "./validate";
13
+ import { shellSpawn } from "../../utils/shell-spawn";
14
+
15
+ const logger = createLogger("sd:cli:init");
16
+
17
+ export interface InitOptions {
18
+ cwd: string;
19
+ }
20
+
21
+ export async function runInit(opts: InitOptions): Promise<void> {
22
+ await validateBeforePrompt(opts.cwd);
23
+
24
+ const input = await promptInit(path.basename(opts.cwd));
25
+ validateInput(input);
26
+
27
+ const normalized = normalize(input);
28
+ const data: RenderData = {
29
+ ...normalized,
30
+ jwtSecret: crypto.randomBytes(32).toString("hex"),
31
+ };
32
+
33
+ logger.info(`워크스페이스 부트스트랩 시작: ${opts.cwd}`);
34
+
35
+ await generateRoot(opts.cwd, data);
36
+ if (data.hasServer) await generateServer(opts.cwd, data);
37
+ if (data.hasCommon) await generateCommon(opts.cwd, data);
38
+ if (data.hasClientCommon) await generateClientCommon(opts.cwd, data);
39
+ for (const client of data.clients) {
40
+ await generateClient(opts.cwd, data, client);
41
+ }
42
+
43
+ logger.info("워크스페이스 부트스트랩 완료.");
44
+
45
+ logger.info("의존성 설치 및 도구 준비 중...");
46
+ await shellSpawn("mise", ["trust"], { cwd: opts.cwd, stdio: "inherit" });
47
+ await shellSpawn("mise", ["install"], { cwd: opts.cwd, stdio: "inherit" });
48
+ await shellSpawn("pnpm", ["install", "--config.dangerously-allow-all-builds=true"], { cwd: opts.cwd, stdio: "inherit" });
49
+ await shellSpawn("pnpm", ["up", "-r"], { cwd: opts.cwd, stdio: "inherit" });
50
+ logger.info("의존성 설치 도구 준비 완료.");
51
+
52
+ const steps: string[] = [];
53
+ if (data.hasDb) {
54
+ steps.push("sd.config.ts 의 configs.orm.MAIN 접속 정보 (host/port/user/password/database) 를 실제 값으로 수정");
55
+ }
56
+ if (data.hasMobile) {
57
+ steps.push(`(prod 빌드 필요 시) capacitor 키스토어를 packages/${data.firstMobileClientName!}/res/ 에 배치 후 sd.config.ts 의 capacitor.platform.android.sign 블록 수동 추가`);
58
+ }
59
+ steps.push("CLAUDE.md 가 필요하면 Claude Code 내장 /init 으로 작성");
60
+
61
+ logger.info("다음 단계:");
62
+ steps.forEach((s, i) => logger.info(` ${i + 1}. ${s}`));
63
+ }