nestia 11.2.1 → 12.0.0-dev.20260520.1

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,3 +1,3 @@
1
1
  export declare namespace NestiaSetupWizard {
2
- function setup(): Promise<void>;
2
+ function setup(argv: string[]): Promise<void>;
3
3
  }
@@ -13,86 +13,99 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  };
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.NestiaSetupWizard = void 0;
16
+ const child_process_1 = __importDefault(require("child_process"));
16
17
  const fs_1 = __importDefault(require("fs"));
17
- const ArgumentParser_1 = require("./internal/ArgumentParser");
18
- const CommandExecutor_1 = require("./internal/CommandExecutor");
19
- const PackageManager_1 = require("./internal/PackageManager");
20
- const PluginConfigurator_1 = require("./internal/PluginConfigurator");
18
+ const ADD = {
19
+ npm: "npm install",
20
+ pnpm: "pnpm add",
21
+ yarn: "yarn add",
22
+ bun: "bun add",
23
+ };
24
+ const DEV = {
25
+ npm: "-D",
26
+ pnpm: "-D",
27
+ yarn: "-D",
28
+ bun: "-d",
29
+ };
30
+ const TAG = "next";
21
31
  var NestiaSetupWizard;
22
32
  (function (NestiaSetupWizard) {
23
- function setup() {
33
+ function setup(argv) {
24
34
  return __awaiter(this, void 0, void 0, function* () {
25
- var _a;
35
+ if (!fs_1.default.existsSync("package.json")) {
36
+ console.error([
37
+ `npx nestia setup must be run inside a directory that owns a package.json.`,
38
+ `Either cd into the project root, or create one with "npm init -y" and re-run.`,
39
+ ].join("\n"));
40
+ process.exit(1);
41
+ }
42
+ const manager = pick(argv);
26
43
  console.log("----------------------------------------");
27
44
  console.log(" Nestia Setup Wizard");
28
45
  console.log("----------------------------------------");
29
- // PREPARE ASSETS
30
- const pack = yield PackageManager_1.PackageManager.mount();
31
- const args = yield ArgumentParser_1.ArgumentParser.parse(pack);
32
- // INSTALL NESTIA
33
- pack.install({ dev: false, modulo: "@nestia/core", version: "latest" });
34
- pack.install({ dev: false, modulo: "@nestia/e2e", version: "latest" });
35
- pack.install({ dev: false, modulo: "@nestia/fetcher", version: "latest" });
36
- pack.install({
37
- dev: args.runtime === false,
38
- modulo: "@nestia/sdk",
39
- version: "latest",
40
- });
41
- pack.install({ dev: true, modulo: "@nestia/benchmark", version: "latest" });
42
- pack.install({ dev: true, modulo: "nestia", version: "latest" });
43
- pack.install({ dev: false, modulo: "typia", version: "latest" });
44
- // INSTALL TYPESCRIPT COMPILERS
45
- pack.install({ dev: true, modulo: "ts-patch", version: "latest" });
46
- pack.install({ dev: true, modulo: "ts-node", version: "latest" });
47
- pack.install({
48
- dev: true,
49
- modulo: "typescript",
50
- version: yield getTypeScriptVersion(),
51
- });
52
- (_a = args.project) !== null && _a !== void 0 ? _a : (args.project = (() => {
53
- const runner = pack.manager === "npm" ? "npx" : pack.manager;
54
- CommandExecutor_1.CommandExecutor.run(`${runner} tsc --init`);
55
- return (args.project = "tsconfig.json");
56
- })());
57
- // SETUP TRANSFORMER
58
- yield pack.save((data) => {
59
- var _a;
60
- // COMPOSE PREPARE COMMAND
61
- (_a = data.scripts) !== null && _a !== void 0 ? _a : (data.scripts = {});
62
- if (typeof data.scripts.prepare === "string" &&
63
- data.scripts.prepare.trim().length !== 0) {
64
- if (data.scripts.prepare.includes("ts-patch install") === false)
65
- data.scripts.prepare = "ts-patch install && " + data.scripts.prepare;
66
- }
67
- else
68
- data.scripts.prepare = "ts-patch install";
69
- // NO MORE "typia patch" REQUIRED
70
- data.scripts.prepare = data.scripts.prepare
71
- .split("&&")
72
- .map((str) => str.trim())
73
- .filter((str) => str !== "typia patch")
74
- .join(" && ");
75
- // FOR OLDER VERSIONS
76
- if (typeof data.scripts.postinstall === "string") {
77
- data.scripts.postinstall = data.scripts.postinstall
78
- .split("&&")
79
- .map((str) => str.trim())
80
- .filter((str) => str.indexOf("ts-patch install") === -1)
81
- .join(" && ");
82
- if (data.scripts.postinstall.length === 0)
83
- delete data.scripts.postinstall;
84
- }
85
- });
86
- CommandExecutor_1.CommandExecutor.run(`${pack.manager} run prepare`);
87
- // CONFIGURE PLUGIN
88
- yield PluginConfigurator_1.PluginConfigurator.configure(args);
46
+ console.log(`package manager : ${manager}`);
47
+ console.log("");
48
+ const go = child_process_1.default.spawnSync("go", ["version"], { stdio: "ignore" });
49
+ if (go.status !== 0 && !process.env.TTSC_GO_BINARY) {
50
+ console.warn([
51
+ "Heads up: Go 1.26+ was not found on PATH.",
52
+ "Install it (https://go.dev/dl) or set TTSC_GO_BINARY before you run `ttsc`.",
53
+ "Continuing with the install — the @nestia/core native transform binary is built on demand the first time `ttsc` compiles your project.",
54
+ "",
55
+ ].join("\n"));
56
+ }
57
+ install(manager, true, "ttsc", "@typescript/native-preview");
58
+ install(manager, false, tagged("typia"));
59
+ install(manager, false, tagged("@nestia/core"), tagged("@nestia/sdk"), tagged("@nestia/fetcher"));
60
+ install(manager, true, tagged("nestia"));
61
+ console.log("----------------------------------------");
62
+ console.log(" Nestia setup complete.");
63
+ console.log("----------------------------------------");
64
+ console.log("Next: see https://nestia.io/docs/setup/tsgo");
65
+ console.log("");
89
66
  });
90
67
  }
91
68
  NestiaSetupWizard.setup = setup;
92
- const getTypeScriptVersion = () => __awaiter(this, void 0, void 0, function* () {
93
- const content = yield fs_1.default.promises.readFile(`${__dirname}/../package.json`, "utf-8");
94
- const json = JSON.parse(content);
95
- return json.devDependencies.typescript;
96
- });
69
+ function install(manager, dev, ...modules) {
70
+ const command = [ADD[manager], dev ? DEV[manager] : "", ...modules]
71
+ .filter((s) => s.length !== 0)
72
+ .join(" ");
73
+ console.log(`$ ${command}`);
74
+ child_process_1.default.execSync(command, { stdio: "inherit" });
75
+ console.log("");
76
+ }
77
+ function tagged(name) {
78
+ return `${name}@${TAG}`;
79
+ }
80
+ function pick(argv) {
81
+ for (let i = 0; i < argv.length; ++i) {
82
+ const token = argv[i];
83
+ if (token === undefined)
84
+ continue;
85
+ if (token === "--manager")
86
+ return ensure(argv[i + 1]);
87
+ if (token.startsWith("--manager="))
88
+ return ensure(token.slice("--manager=".length));
89
+ }
90
+ if (fs_1.default.existsSync("bun.lockb") || fs_1.default.existsSync("bun.lock"))
91
+ return "bun";
92
+ if (fs_1.default.existsSync("pnpm-lock.yaml"))
93
+ return "pnpm";
94
+ if (fs_1.default.existsSync("yarn.lock"))
95
+ return "yarn";
96
+ return "npm";
97
+ }
98
+ function ensure(value) {
99
+ if (value === "npm" ||
100
+ value === "pnpm" ||
101
+ value === "yarn" ||
102
+ value === "bun")
103
+ return value;
104
+ console.error([
105
+ `--manager requires one of: npm | pnpm | yarn | bun.`,
106
+ `Use either "--manager <name>" or "--manager=<name>".`,
107
+ ].join("\n"));
108
+ process.exit(1);
109
+ }
97
110
  })(NestiaSetupWizard || (exports.NestiaSetupWizard = NestiaSetupWizard = {}));
98
111
  //# sourceMappingURL=NestiaSetupWizard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"NestiaSetupWizard.js","sourceRoot":"","sources":["../src/NestiaSetupWizard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"NestiaSetupWizard.js","sourceRoot":"","sources":["../src/NestiaSetupWizard.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"NestiaStarter.js","sourceRoot":"","sources":["../src/NestiaStarter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAA+B;AAC/B,4CAAoB;AAEpB,IAAiB,aAAa,CAqC7B;AArCD,WAAiB,aAAa;IACf,mBAAK,GAChB,CAAC,MAA+B,EAAE,EAAE,CACpC,CAAO,IAAc,EAAiB,EAAE;QACtC,aAAa;QACb,MAAM,IAAI,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,EAAE,CAAC;aAC5B,IAAI,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI;YACnC,MAAM,CAAC,sCAAsC,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAEzD,gBAAgB;QAChB,OAAO,CAAC,wDAAwD,IAAI,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpB,uBAAuB;QACvB,OAAO,CAAC,aAAa,CAAC,CAAC;QAEvB,mBAAmB;QACnB,OAAO,CAAC,eAAe,CAAC,CAAC;QAEzB,UAAU;QACV,OAAO,CAAC,cAAc,CAAC,CAAC;QAExB,wBAAwB;QACxB,uBAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC/B,uBAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC,CAAA,CAAC;IAEJ,SAAS,OAAO,CAAC,OAAe;QAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAC9B,uBAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC,EArCgB,aAAa,6BAAb,aAAa,QAqC7B"}
1
+ {"version":3,"file":"NestiaStarter.js","sourceRoot":"","sources":["../src/NestiaStarter.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAA+B;AAC/B,4CAAoB;AAEpB,IAAiB,aAAa,CAqC7B;AArCD,WAAiB,aAAa;IACf,mBAAK,GAChB,CAAC,MAA+B,EAAE,EAAE,CACpC,CAAO,IAAc,EAAiB,EAAE;QACtC,aAAa;QACb,MAAM,IAAI,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,EAAE,CAAC;aAC5B,IAAI,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI;YACnC,MAAM,CAAC,sCAAsC,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAEzD,gBAAgB;QAChB,OAAO,CAAC,wDAAwD,IAAI,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpB,uBAAuB;QACvB,OAAO,CAAC,aAAa,CAAC,CAAC;QAEvB,mBAAmB;QACnB,OAAO,CAAC,eAAe,CAAC,CAAC;QAEzB,UAAU;QACV,OAAO,CAAC,cAAc,CAAC,CAAC;QAExB,wBAAwB;QACxB,uBAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QAC/B,uBAAE,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC,CAAA,CAAC;IAEJ,SAAS,OAAO,CAAC,OAAe;QAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAC9B,uBAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC,EArCgB,aAAa,aAAb,aAAa,GAAb,aAAa,QAqC7B"}
@@ -1 +1 @@
1
- {"version":3,"file":"NestiaTemplate.js","sourceRoot":"","sources":["../src/NestiaTemplate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAA+B;AAC/B,4CAAoB;AAEpB,IAAiB,cAAc,CAiC9B;AAjCD,WAAiB,cAAc;IAChB,oBAAK,GAChB,CAAC,MAA+B,EAAE,EAAE,CACpC,CAAO,IAAc,EAAiB,EAAE;QACtC,aAAa;QACb,MAAM,IAAI,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,EAAE,CAAC;aAC5B,IAAI,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI;YACnC,MAAM,CAAC,sCAAsC,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAEzD,gBAAgB;QAChB,OAAO,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpB,uBAAuB;QACvB,OAAO,CAAC,aAAa,CAAC,CAAC;QAEvB,mBAAmB;QACnB,OAAO,CAAC,eAAe,CAAC,CAAC;QAEzB,wBAAwB;QACxB,uBAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC,CAAA,CAAC;IAEJ,SAAS,OAAO,CAAC,OAAe;QAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAC9B,uBAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC,EAjCgB,cAAc,8BAAd,cAAc,QAiC9B"}
1
+ {"version":3,"file":"NestiaTemplate.js","sourceRoot":"","sources":["../src/NestiaTemplate.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,kEAA+B;AAC/B,4CAAoB;AAEpB,IAAiB,cAAc,CAiC9B;AAjCD,WAAiB,cAAc;IAChB,oBAAK,GAChB,CAAC,MAA+B,EAAE,EAAE,CACpC,CAAO,IAAc,EAAiB,EAAE;QACtC,aAAa;QACb,MAAM,IAAI,GAAuB,IAAI,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,IAAI,KAAK,SAAS;YAAE,MAAM,EAAE,CAAC;aAC5B,IAAI,YAAE,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,IAAI;YACnC,MAAM,CAAC,sCAAsC,CAAC,CAAC;QAEjD,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;QAEzD,gBAAgB;QAChB,OAAO,CAAC,gDAAgD,IAAI,EAAE,CAAC,CAAC;QAChE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QAC5B,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAEpB,uBAAuB;QACvB,OAAO,CAAC,aAAa,CAAC,CAAC;QAEvB,mBAAmB;QACnB,OAAO,CAAC,eAAe,CAAC,CAAC;QAEzB,wBAAwB;QACxB,uBAAE,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IACjC,CAAC,CAAA,CAAC;IAEJ,SAAS,OAAO,CAAC,OAAe;QAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC;QAC9B,uBAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7C,CAAC;AACH,CAAC,EAjCgB,cAAc,aAAd,cAAc,GAAd,cAAc,QAiC9B"}
package/bin/index.js CHANGED
@@ -16,13 +16,13 @@ npx nestia [command] [options?]
16
16
 
17
17
  1. npx nestia start <directory>
18
18
  2. npx nestia template <directory>
19
- 3. npx nestia setup
19
+ 3. npx nestia setup [--manager npm|pnpm|yarn|bun] (also: --manager=value)
20
20
  4. npx nestia dependencies
21
21
  5. npx nestia init
22
22
  6. npx nestia sdk
23
23
  7. npx nestia swagger
24
- 9. npx nestia e2e
25
- 10. npx nestia all
24
+ 8. npx nestia e2e
25
+ 9. npx nestia all
26
26
  `;
27
27
  function halt(desc) {
28
28
  console.error(desc);
@@ -39,15 +39,7 @@ function main() {
39
39
  yield (yield import("./NestiaTemplate.js")).NestiaTemplate.clone((msg) => halt(msg !== null && msg !== void 0 ? msg : USAGE))(argv);
40
40
  }
41
41
  else if (type === "setup") {
42
- try {
43
- yield import("comment-json");
44
- yield import("inquirer");
45
- yield import("commander");
46
- }
47
- catch (_a) {
48
- halt(`nestia has not been installed. Run "npm i -D nestia" before.`);
49
- }
50
- yield (yield import("./NestiaSetupWizard.js")).NestiaSetupWizard.setup();
42
+ yield (yield import("./NestiaSetupWizard.js")).NestiaSetupWizard.setup(argv);
51
43
  }
52
44
  else if (type === "dependencies" ||
53
45
  type === "init" ||
@@ -59,8 +51,15 @@ function main() {
59
51
  try {
60
52
  require.resolve(location);
61
53
  }
62
- catch (_b) {
63
- halt(`@nestia/sdk has not been installed. Run "npx nestia setup" before.`);
54
+ catch (_a) {
55
+ halt([
56
+ `@nestia/sdk has not been installed.`,
57
+ `Run "npx nestia setup" first, or install manually:`,
58
+ ` npm i -D ttsc @typescript/native-preview`,
59
+ ` npm i typia`,
60
+ ` npm i @nestia/core @nestia/sdk @nestia/fetcher`,
61
+ ` npm i -D nestia`,
62
+ ].join("\n"));
64
63
  }
65
64
  yield import(location);
66
65
  }
@@ -69,7 +68,7 @@ function main() {
69
68
  });
70
69
  }
71
70
  main().catch((exp) => {
72
- console.log(exp.message);
71
+ console.error(exp instanceof Error ? exp.message : String(exp));
73
72
  process.exit(-1);
74
73
  });
75
74
  //# sourceMappingURL=index.js.map
package/bin/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,MAAM,KAAK,GAAG;;;;;;;;;;;;;CAab,CAAC;AAEF,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAe,IAAI;;QACjB,MAAM,IAAI,GAAuB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,CACJ,MAAM,MAAM,CAAC,oBAAoB,CAAC,CACnC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,CACJ,MAAM,MAAM,CAAC,qBAAqB,CAAC,CACpC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;gBAC7B,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;YAC5B,CAAC;YAAC,WAAM,CAAC;gBACP,IAAI,CAAC,8DAA8D,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QAC3E,CAAC;aAAM,IACL,IAAI,KAAK,cAAc;YACvB,IAAI,KAAK,MAAM;YACf,IAAI,KAAK,KAAK;YACd,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,KAAK;YACd,IAAI,KAAK,KAAK,EACd,CAAC;YACD,MAAM,QAAQ,GAAW,gCAAgC,CAAC;YAC1D,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;YAAC,WAAM,CAAC;gBACP,IAAI,CACF,oEAAoE,CACrE,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;;YAAM,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;CAAA;AACD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,MAAM,KAAK,GAAG;;;;;;;;;;;;;CAab,CAAC;AAEF,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC;AAED,SAAe,IAAI;;QACjB,MAAM,IAAI,GAAuB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,IAAI,GAAa,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7C,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,CACJ,MAAM,MAAM,CAAC,oBAAoB,CAAC,CACnC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3D,CAAC;aAAM,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YAC/B,MAAM,CACJ,MAAM,MAAM,CAAC,qBAAqB,CAAC,CACpC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,aAAH,GAAG,cAAH,GAAG,GAAI,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;aAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CACpE,IAAI,CACL,CAAC;QACJ,CAAC;aAAM,IACL,IAAI,KAAK,cAAc;YACvB,IAAI,KAAK,MAAM;YACf,IAAI,KAAK,KAAK;YACd,IAAI,KAAK,SAAS;YAClB,IAAI,KAAK,KAAK;YACd,IAAI,KAAK,KAAK,EACd,CAAC;YACD,MAAM,QAAQ,GAAW,gCAAgC,CAAC;YAC1D,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC5B,CAAC;uBAAO,CAAC;gBACP,IAAI,CACF;oBACE,qCAAqC;oBACrC,oDAAoD;oBACpD,4CAA4C;oBAC5C,eAAe;oBACf,kDAAkD;oBAClD,mBAAmB;iBACpB,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;YACJ,CAAC;YACD,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;;YAAM,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;CAAA;AACD,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IACnB,OAAO,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AACnB,CAAC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nestia",
3
- "version": "11.2.1",
3
+ "version": "12.0.0-dev.20260520.1",
4
4
  "description": "Nestia CLI tool",
5
5
  "main": "bin/index.js",
6
6
  "bin": {
@@ -32,20 +32,11 @@
32
32
  "url": "https://github.com/samchon/nestia/issues"
33
33
  },
34
34
  "homepage": "https://nestia.io",
35
- "dependencies": {
36
- "commander": "^10.0.0",
37
- "comment-json": "^4.2.3",
38
- "inquirer": "^8.2.5",
39
- "package-manager-detector": "^0.2.0"
40
- },
41
35
  "devDependencies": {
42
- "@types/inquirer": "^9.0.3",
43
36
  "@types/node": "^25.3.3",
44
37
  "rimraf": "^6.1.3",
45
- "ts-node": "^10.9.2",
46
- "typescript": "~6.0.3",
47
- "@nestia/sdk": "^11.2.1",
48
- "@nestia/core": "^11.2.1"
38
+ "@nestia/core": "^12.0.0-dev.20260520.1",
39
+ "@nestia/sdk": "^12.0.0-dev.20260520.1"
49
40
  },
50
41
  "files": [
51
42
  "bin",
@@ -58,8 +49,8 @@
58
49
  "access": "public"
59
50
  },
60
51
  "scripts": {
61
- "build": "rimraf bin && tsc",
62
- "dev": "rimraf bin && tsc --watch"
52
+ "build": "rimraf bin && ttsc",
53
+ "dev": "rimraf bin && ttsc --watch"
63
54
  },
64
55
  "types": "bin/index.d.ts"
65
56
  }
@@ -1,90 +1,119 @@
1
+ import cp from "child_process";
1
2
  import fs from "fs";
2
3
 
3
- import { ArgumentParser } from "./internal/ArgumentParser";
4
- import { CommandExecutor } from "./internal/CommandExecutor";
5
- import { PackageManager } from "./internal/PackageManager";
6
- import { PluginConfigurator } from "./internal/PluginConfigurator";
4
+ type Manager = "npm" | "pnpm" | "yarn" | "bun";
5
+
6
+ const ADD: Record<Manager, string> = {
7
+ npm: "npm install",
8
+ pnpm: "pnpm add",
9
+ yarn: "yarn add",
10
+ bun: "bun add",
11
+ };
12
+
13
+ const DEV: Record<Manager, string> = {
14
+ npm: "-D",
15
+ pnpm: "-D",
16
+ yarn: "-D",
17
+ bun: "-d",
18
+ };
19
+
20
+ const TAG = "next";
7
21
 
8
22
  export namespace NestiaSetupWizard {
9
- export async function setup(): Promise<void> {
23
+ export async function setup(argv: string[]): Promise<void> {
24
+ if (!fs.existsSync("package.json")) {
25
+ console.error(
26
+ [
27
+ `npx nestia setup must be run inside a directory that owns a package.json.`,
28
+ `Either cd into the project root, or create one with "npm init -y" and re-run.`,
29
+ ].join("\n"),
30
+ );
31
+ process.exit(1);
32
+ }
33
+
34
+ const manager: Manager = pick(argv);
35
+
10
36
  console.log("----------------------------------------");
11
37
  console.log(" Nestia Setup Wizard");
12
38
  console.log("----------------------------------------");
39
+ console.log(`package manager : ${manager}`);
40
+ console.log("");
13
41
 
14
- // PREPARE ASSETS
15
- const pack: PackageManager = await PackageManager.mount();
16
- const args: ArgumentParser.IArguments = await ArgumentParser.parse(pack);
17
-
18
- // INSTALL NESTIA
19
- pack.install({ dev: false, modulo: "@nestia/core", version: "latest" });
20
- pack.install({ dev: false, modulo: "@nestia/e2e", version: "latest" });
21
- pack.install({ dev: false, modulo: "@nestia/fetcher", version: "latest" });
22
- pack.install({
23
- dev: args.runtime === false,
24
- modulo: "@nestia/sdk",
25
- version: "latest",
26
- });
27
- pack.install({ dev: true, modulo: "@nestia/benchmark", version: "latest" });
28
- pack.install({ dev: true, modulo: "nestia", version: "latest" });
29
- pack.install({ dev: false, modulo: "typia", version: "latest" });
42
+ const go = cp.spawnSync("go", ["version"], { stdio: "ignore" });
43
+ if (go.status !== 0 && !process.env.TTSC_GO_BINARY) {
44
+ console.warn(
45
+ [
46
+ "Heads up: Go 1.26+ was not found on PATH.",
47
+ "Install it (https://go.dev/dl) or set TTSC_GO_BINARY before you run `ttsc`.",
48
+ "Continuing with the install the @nestia/core native transform binary is built on demand the first time `ttsc` compiles your project.",
49
+ "",
50
+ ].join("\n"),
51
+ );
52
+ }
30
53
 
31
- // INSTALL TYPESCRIPT COMPILERS
32
- pack.install({ dev: true, modulo: "ts-patch", version: "latest" });
33
- pack.install({ dev: true, modulo: "ts-node", version: "latest" });
34
- pack.install({
35
- dev: true,
36
- modulo: "typescript",
37
- version: await getTypeScriptVersion(),
38
- });
39
- args.project ??= (() => {
40
- const runner: string = pack.manager === "npm" ? "npx" : pack.manager;
41
- CommandExecutor.run(`${runner} tsc --init`);
42
- return (args.project = "tsconfig.json");
43
- })();
54
+ install(manager, true, "ttsc", "@typescript/native-preview");
55
+ install(manager, false, tagged("typia"));
56
+ install(
57
+ manager,
58
+ false,
59
+ tagged("@nestia/core"),
60
+ tagged("@nestia/sdk"),
61
+ tagged("@nestia/fetcher"),
62
+ );
63
+ install(manager, true, tagged("nestia"));
44
64
 
45
- // SETUP TRANSFORMER
46
- await pack.save((data) => {
47
- // COMPOSE PREPARE COMMAND
48
- data.scripts ??= {};
49
- if (
50
- typeof data.scripts.prepare === "string" &&
51
- data.scripts.prepare.trim().length !== 0
52
- ) {
53
- if (data.scripts.prepare.includes("ts-patch install") === false)
54
- data.scripts.prepare = "ts-patch install && " + data.scripts.prepare;
55
- } else data.scripts.prepare = "ts-patch install";
65
+ console.log("----------------------------------------");
66
+ console.log(" Nestia setup complete.");
67
+ console.log("----------------------------------------");
68
+ console.log("Next: see https://nestia.io/docs/setup/tsgo");
69
+ console.log("");
70
+ }
56
71
 
57
- // NO MORE "typia patch" REQUIRED
58
- data.scripts.prepare = data.scripts.prepare
59
- .split("&&")
60
- .map((str) => str.trim())
61
- .filter((str) => str !== "typia patch")
62
- .join(" && ");
72
+ function install(
73
+ manager: Manager,
74
+ dev: boolean,
75
+ ...modules: string[]
76
+ ): void {
77
+ const command: string = [ADD[manager], dev ? DEV[manager] : "", ...modules]
78
+ .filter((s) => s.length !== 0)
79
+ .join(" ");
80
+ console.log(`$ ${command}`);
81
+ cp.execSync(command, { stdio: "inherit" });
82
+ console.log("");
83
+ }
63
84
 
64
- // FOR OLDER VERSIONS
65
- if (typeof data.scripts.postinstall === "string") {
66
- data.scripts.postinstall = data.scripts.postinstall
67
- .split("&&")
68
- .map((str) => str.trim())
69
- .filter((str) => str.indexOf("ts-patch install") === -1)
70
- .join(" && ");
71
- if (data.scripts.postinstall.length === 0)
72
- delete data.scripts.postinstall;
73
- }
74
- });
75
- CommandExecutor.run(`${pack.manager} run prepare`);
85
+ function tagged(name: string): string {
86
+ return `${name}@${TAG}`;
87
+ }
76
88
 
77
- // CONFIGURE PLUGIN
78
- await PluginConfigurator.configure(args);
89
+ function pick(argv: string[]): Manager {
90
+ for (let i = 0; i < argv.length; ++i) {
91
+ const token: string | undefined = argv[i];
92
+ if (token === undefined) continue;
93
+ if (token === "--manager") return ensure(argv[i + 1]);
94
+ if (token.startsWith("--manager="))
95
+ return ensure(token.slice("--manager=".length));
96
+ }
97
+ if (fs.existsSync("bun.lockb") || fs.existsSync("bun.lock")) return "bun";
98
+ if (fs.existsSync("pnpm-lock.yaml")) return "pnpm";
99
+ if (fs.existsSync("yarn.lock")) return "yarn";
100
+ return "npm";
79
101
  }
80
102
 
81
- const getTypeScriptVersion = async (): Promise<string> => {
82
- const content: string = await fs.promises.readFile(
83
- `${__dirname}/../package.json`,
84
- "utf-8",
103
+ function ensure(value: string | undefined): Manager {
104
+ if (
105
+ value === "npm" ||
106
+ value === "pnpm" ||
107
+ value === "yarn" ||
108
+ value === "bun"
109
+ )
110
+ return value;
111
+ console.error(
112
+ [
113
+ `--manager requires one of: npm | pnpm | yarn | bun.`,
114
+ `Use either "--manager <name>" or "--manager=<name>".`,
115
+ ].join("\n"),
85
116
  );
86
- const json: { devDependencies: { typescript: string } } =
87
- JSON.parse(content);
88
- return json.devDependencies.typescript;
89
- };
117
+ process.exit(1);
118
+ }
90
119
  }
package/src/index.ts CHANGED
@@ -5,13 +5,13 @@ npx nestia [command] [options?]
5
5
 
6
6
  1. npx nestia start <directory>
7
7
  2. npx nestia template <directory>
8
- 3. npx nestia setup
8
+ 3. npx nestia setup [--manager npm|pnpm|yarn|bun] (also: --manager=value)
9
9
  4. npx nestia dependencies
10
10
  5. npx nestia init
11
11
  6. npx nestia sdk
12
12
  7. npx nestia swagger
13
- 9. npx nestia e2e
14
- 10. npx nestia all
13
+ 8. npx nestia e2e
14
+ 9. npx nestia all
15
15
  `;
16
16
 
17
17
  function halt(desc: string): never {
@@ -32,14 +32,9 @@ async function main(): Promise<void> {
32
32
  await import("./NestiaTemplate.js")
33
33
  ).NestiaTemplate.clone((msg) => halt(msg ?? USAGE))(argv);
34
34
  } else if (type === "setup") {
35
- try {
36
- await import("comment-json");
37
- await import("inquirer");
38
- await import("commander");
39
- } catch {
40
- halt(`nestia has not been installed. Run "npm i -D nestia" before.`);
41
- }
42
- await (await import("./NestiaSetupWizard.js")).NestiaSetupWizard.setup();
35
+ await (await import("./NestiaSetupWizard.js")).NestiaSetupWizard.setup(
36
+ argv,
37
+ );
43
38
  } else if (
44
39
  type === "dependencies" ||
45
40
  type === "init" ||
@@ -53,13 +48,20 @@ async function main(): Promise<void> {
53
48
  require.resolve(location);
54
49
  } catch {
55
50
  halt(
56
- `@nestia/sdk has not been installed. Run "npx nestia setup" before.`,
51
+ [
52
+ `@nestia/sdk has not been installed.`,
53
+ `Run "npx nestia setup" first, or install manually:`,
54
+ ` npm i -D ttsc @typescript/native-preview`,
55
+ ` npm i typia`,
56
+ ` npm i @nestia/core @nestia/sdk @nestia/fetcher`,
57
+ ` npm i -D nestia`,
58
+ ].join("\n"),
57
59
  );
58
60
  }
59
61
  await import(location);
60
62
  } else halt(USAGE);
61
63
  }
62
64
  main().catch((exp) => {
63
- console.log(exp.message);
65
+ console.error(exp instanceof Error ? exp.message : String(exp));
64
66
  process.exit(-1);
65
67
  });
@@ -1,9 +0,0 @@
1
- import { PackageManager } from "./PackageManager";
2
- export declare namespace ArgumentParser {
3
- interface IArguments {
4
- manager: "npm" | "pnpm" | "yarn" | "bun";
5
- project: string | null;
6
- runtime: boolean;
7
- }
8
- function parse(pack: PackageManager): Promise<IArguments>;
9
- }