legonode 0.0.2 → 0.0.3

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.
package/dist/cli/cli.js CHANGED
@@ -14,6 +14,7 @@ import { createRequire } from "node:module";
14
14
  import { devCommand } from "./commands/dev.js";
15
15
  import { buildCommand } from "./commands/build.js";
16
16
  import { startCommand } from "./commands/start.js";
17
+ import { createCommand } from "./commands/create.js";
17
18
  const require = createRequire(import.meta.url);
18
19
  const pkg = require("../../package.json");
19
20
  program
@@ -33,6 +34,22 @@ program
33
34
  .description("Build the app for production")
34
35
  .option("--build-path <path>", "Output directory (overrides config)")
35
36
  .action((opts) => buildCommand.run(opts));
37
+ program
38
+ .command("create [name]")
39
+ .description("Create a new Legonode project")
40
+ .option("--app-dir <path>", "App directory (default: ./app)")
41
+ .option("--no-install", "Skip npm/bun install")
42
+ .action(async (name, cmd) => {
43
+ const opts = cmd?.opts?.() ?? {};
44
+ const runOpts = {
45
+ noInstall: opts.install === false,
46
+ };
47
+ if (name !== undefined)
48
+ runOpts.name = name;
49
+ if (opts.appDir !== undefined)
50
+ runOpts.appDir = opts.appDir;
51
+ await createCommand.run(runOpts);
52
+ });
36
53
  program
37
54
  .command("start")
38
55
  .description("Run the built app (no hot reload)")
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../cli/cli.ts"],"names":[],"mappings":";AAEA,iFAAiF;AACjF,IAAI,OAAQ,UAAkB,CAAC,GAAG,KAAK,WAAW,EAAE,CAAC;IACnD,IAAI,CAAC;QACH,sDAAsD;QACtD,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,qEAAqE;IACvE,CAAC;AACH,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,oBAAoB,CAAyB,CAAC;AAElE,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,wBAAwB,CAAC;KACrC,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;AAEnC,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,qBAAqB,EAAE,mCAAmC,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,uCAAuC,CAAC;KACtE,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;KAC3D,MAAM,CAAC,mBAAmB,EAAE,iEAAiE,CAAC;KAC9F,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAE1C,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,qBAAqB,EAAE,qCAAqC,CAAC;KACpE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5C,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,qBAAqB,EAAE,sBAAsB,CAAC;KACrD,MAAM,CAAC,qBAAqB,EAAE,+BAA+B,CAAC;KAC9D,MAAM,CAAC,qBAAqB,EAAE,wCAAwC,CAAC;KACvE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;AAE5C,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../cli/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export type CreateOptions = {
2
+ /** Project name or "." for current directory; undefined = prompt user */
3
+ name?: string;
4
+ /** App directory (default: ./app) */
5
+ appDir?: string;
6
+ /** Skip package manager install */
7
+ noInstall?: boolean;
8
+ };
9
+ export declare const createCommand: {
10
+ readonly name: "create";
11
+ readonly run: (opts?: CreateOptions) => Promise<void>;
12
+ };
13
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../cli/commands/create.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,aAAa,GAAG;IAC1B,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,qCAAqC;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAyFF,eAAO,MAAM,aAAa;;0BAEN,aAAa;CAoHvB,CAAC"}
@@ -0,0 +1,191 @@
1
+ import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
2
+ import { basename, join, resolve } from "node:path";
3
+ import { execSync, spawn } from "node:child_process";
4
+ import { input, select } from "@inquirer/prompts";
5
+ import { appLogger } from "../../src/utils/logger.js";
6
+ function isPackageManagerAvailable(cmd) {
7
+ try {
8
+ execSync(`${cmd} --version`, { stdio: "ignore" });
9
+ return true;
10
+ }
11
+ catch {
12
+ return false;
13
+ }
14
+ }
15
+ function getAvailablePackageManagers() {
16
+ const all = ["npm", "yarn", "pnpm", "bun"];
17
+ return all.filter(isPackageManagerAvailable);
18
+ }
19
+ const PACKAGE_JSON = (name) => `{
20
+ "name": "${name}",
21
+ "version": "0.0.1",
22
+ "private": true,
23
+ "type": "module",
24
+ "scripts": {
25
+ "dev": "legonode dev",
26
+ "build": "legonode build",
27
+ "start": "legonode start"
28
+ },
29
+ "dependencies": {
30
+ "legonode": "^0.0.2"
31
+ },
32
+ "devDependencies": {
33
+ "typescript": "^5.9.0"
34
+ }
35
+ }
36
+ `;
37
+ const TSCONFIG_JSON = (appDir) => {
38
+ const dir = appDir.replace(/^\.\//, "");
39
+ return `{
40
+ "compilerOptions": {
41
+ "target": "ES2022",
42
+ "lib": ["ES2022"],
43
+ "module": "ESNext",
44
+ "moduleResolution": "Bundler",
45
+ "strict": true,
46
+ "skipLibCheck": true,
47
+ "resolveJsonModule": true,
48
+ "esModuleInterop": true,
49
+ "forceConsistentCasingInFileNames": true
50
+ },
51
+ "include": ["${dir}/**/*", "legonode.config.ts"]
52
+ }
53
+ `;
54
+ };
55
+ const LEGONODE_CONFIG_TS = (appDir) => `import type { LegonodeConfig } from "legonode";
56
+
57
+ const config: LegonodeConfig = {
58
+ appDir: "${appDir}",
59
+ port: 3000,
60
+ dev: {
61
+ logPretty: true,
62
+ },
63
+ };
64
+
65
+ export default config;
66
+ `;
67
+ const ROOT_ROUTE_TS = `import type { Context } from "legonode";
68
+
69
+ export async function GET(ctx: Context) {
70
+ ctx.res.status(200);
71
+ return { message: "Hello from Legonode!" };
72
+ }
73
+ `;
74
+ const HELLO_ROUTE_TS = `import type { Context } from "legonode";
75
+
76
+ export async function GET(ctx: Context) {
77
+ ctx.res.status(200);
78
+ return { hello: "world" };
79
+ }
80
+ `;
81
+ function sanitizePackageName(name) {
82
+ return name.replace(/[^a-z0-9-]/gi, "-").toLowerCase() || "my-legonode-app";
83
+ }
84
+ export const createCommand = {
85
+ name: "create",
86
+ run: async (opts = {}) => {
87
+ const cwd = process.cwd();
88
+ const appDir = opts.appDir ?? "./app";
89
+ // Resolve project name: prompt if not provided
90
+ let projectName;
91
+ if (opts.name === undefined) {
92
+ const answered = await input({
93
+ message: "Project name (leave empty to use current directory):",
94
+ default: "",
95
+ });
96
+ projectName = answered.trim() === "" ? "." : answered.trim();
97
+ }
98
+ else {
99
+ projectName = opts.name;
100
+ }
101
+ const targetDir = projectName === "." ? cwd : resolve(cwd, projectName);
102
+ if (projectName !== "." && existsSync(targetDir)) {
103
+ const entries = readdirSync(targetDir);
104
+ if (entries.length > 0) {
105
+ appLogger.error(`Directory "${projectName}" already exists and is not empty.`);
106
+ process.exit(1);
107
+ }
108
+ }
109
+ // Package.json name: use folder name when in current dir, else use project name
110
+ const packageJsonName = projectName === "."
111
+ ? sanitizePackageName(basename(cwd)) || "my-legonode-app"
112
+ : sanitizePackageName(projectName);
113
+ appLogger.info("legonode create");
114
+ appLogger.info(` Creating project in ${targetDir}`);
115
+ function ensureDir(path) {
116
+ if (!existsSync(path)) {
117
+ mkdirSync(path, { recursive: true });
118
+ }
119
+ }
120
+ function write(path, content) {
121
+ ensureDir(resolve(path, ".."));
122
+ writeFileSync(path, content.trimStart(), "utf-8");
123
+ }
124
+ // package.json
125
+ write(join(targetDir, "package.json"), PACKAGE_JSON(packageJsonName));
126
+ // tsconfig.json
127
+ write(join(targetDir, "tsconfig.json"), TSCONFIG_JSON(appDir));
128
+ // legonode.config.ts
129
+ write(join(targetDir, "legonode.config.ts"), LEGONODE_CONFIG_TS(appDir));
130
+ // app/route.ts (root handler)
131
+ const appPath = resolve(targetDir, appDir.replace(/^\.\//, ""));
132
+ write(join(appPath, "route.ts"), ROOT_ROUTE_TS);
133
+ // app/api/hello/route.ts
134
+ write(join(appPath, "api", "hello", "route.ts"), HELLO_ROUTE_TS);
135
+ appLogger.info(` Created: package.json, tsconfig.json, legonode.config.ts`);
136
+ appLogger.info(` Created: ${appDir}/route.ts, ${appDir}/api/hello/route.ts`);
137
+ // Package manager selection and install
138
+ let depsInstalled = false;
139
+ if (!opts.noInstall) {
140
+ const available = getAvailablePackageManagers();
141
+ if (available.length === 0) {
142
+ appLogger.warn(" No package manager found (npm, yarn, pnpm, bun). Run install manually.");
143
+ }
144
+ else {
145
+ const choices = [
146
+ ...available.map((pm) => ({ name: pm, value: pm, description: `Use ${pm} to install dependencies` })),
147
+ { name: "Skip install", value: "skip", description: "Don't install dependencies now" },
148
+ ];
149
+ const selected = await select({
150
+ message: "Select a package manager (use ↑/↓ arrows):",
151
+ choices,
152
+ });
153
+ if (selected !== "skip") {
154
+ appLogger.info(` Installing dependencies with ${selected}...`);
155
+ await new Promise((resolvePromise, reject) => {
156
+ const args = selected === "bun" ? ["install"] : ["install"];
157
+ const child = spawn(selected, args, {
158
+ stdio: "inherit",
159
+ cwd: targetDir,
160
+ });
161
+ child.on("exit", (code) => {
162
+ if (code === 0) {
163
+ appLogger.info(" Done!");
164
+ depsInstalled = true;
165
+ resolvePromise();
166
+ }
167
+ else {
168
+ reject(new Error(`${selected} install exited with code ${code}`));
169
+ }
170
+ });
171
+ child.on("error", reject);
172
+ });
173
+ }
174
+ else {
175
+ appLogger.info(" Skipped install. Run your package manager to install dependencies.");
176
+ }
177
+ }
178
+ }
179
+ else {
180
+ appLogger.info(" Run your package manager to install dependencies.");
181
+ }
182
+ appLogger.info("");
183
+ appLogger.info("Next steps:");
184
+ appLogger.info(` cd ${projectName === "." ? "." : projectName}`);
185
+ if (!depsInstalled) {
186
+ appLogger.info(" npm install # or: yarn / pnpm / bun install");
187
+ }
188
+ appLogger.info(" legonode dev");
189
+ },
190
+ };
191
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../cli/commands/create.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,8 @@
1
1
  {
2
2
  "name": "legonode",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "dependencies": {
5
+ "@inquirer/prompts": "^7.2.0",
5
6
  "commander": "^12.0.0",
6
7
  "fast-json-stringify": "^5.0.0",
7
8
  "pino": "^9.0.0",