@nexusts/cli 0.7.2 → 0.7.4
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/core/index.d.ts +1 -0
- package/dist/core/version.d.ts +1 -0
- package/dist/index.js +197 -152
- package/dist/index.js.map +7 -6
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../src/commands/info.ts", "../src/core/args.ts", "../src/core/config.ts", "../src/core/fs.ts", "../src/core/logger.ts", "../src/core/loose-json.ts", "../src/core/prompts.ts", "../src/core/template.ts", "../src/commands/init.ts", "../src/templates/controller/adonis.ts", "../src/templates/controller/functional.ts", "../src/templates/controller/nest.ts", "../src/templates/crud/controller.ts", "../src/templates/crud/dto.ts", "../src/templates/crud/module.ts", "../src/templates/crud/test.ts", "../src/templates/middleware/middleware.ts", "../src/templates/migration/drizzle.ts", "../src/templates/migration/sql.ts", "../src/templates/model/drizzle.ts", "../src/templates/model/kysely.ts", "../src/templates/model/prisma.ts", "../src/templates/module/module.ts", "../src/templates/project/nx.config.ts", "../src/templates/project/drizzle.config.ts", "../src/templates/repository/repository.ts", "../src/templates/service/service.ts", "../src/templates/validator/validator.ts", "../src/templates/index.ts", "../src/commands/make-auth.ts", "../src/commands/make-controller.ts", "../src/commands/make-crud.ts", "../src/templates/model/drizzle-dialect.ts", "../src/commands/make-listener.ts", "../src/commands/make-middleware.ts", "../src/commands/make-migration.ts", "../src/commands/make-model.ts", "../src/commands/make-module.ts", "../src/commands/make-queue.ts", "../src/commands/make-schedule.ts", "../src/commands/make-service.ts", "../src/commands/make-session.ts", "../src/commands/make-validator.ts", "../src/commands/db-migrate.ts", "../src/commands/db-generate.ts", "../src/commands/db-seed.ts", "../src/commands/new.ts", "../src/commands/config.ts", "../src/commands/repl.ts", "../src/commands/route-list.ts", "../src/commands/index.ts", "../src/index.ts"],
|
|
3
|
+
"sources": ["../src/commands/info.ts", "../src/core/args.ts", "../src/core/config.ts", "../src/core/fs.ts", "../src/core/logger.ts", "../src/core/loose-json.ts", "../src/core/prompts.ts", "../src/core/template.ts", "../src/core/version.ts", "../src/commands/init.ts", "../src/templates/controller/adonis.ts", "../src/templates/controller/functional.ts", "../src/templates/controller/nest.ts", "../src/templates/crud/controller.ts", "../src/templates/crud/dto.ts", "../src/templates/crud/module.ts", "../src/templates/crud/test.ts", "../src/templates/middleware/middleware.ts", "../src/templates/migration/drizzle.ts", "../src/templates/migration/sql.ts", "../src/templates/model/drizzle.ts", "../src/templates/model/kysely.ts", "../src/templates/model/prisma.ts", "../src/templates/module/module.ts", "../src/templates/project/nx.config.ts", "../src/templates/project/drizzle.config.ts", "../src/templates/repository/repository.ts", "../src/templates/service/service.ts", "../src/templates/validator/validator.ts", "../src/templates/index.ts", "../src/commands/make-auth.ts", "../src/commands/make-controller.ts", "../src/commands/make-crud.ts", "../src/templates/model/drizzle-dialect.ts", "../src/commands/make-listener.ts", "../src/commands/make-middleware.ts", "../src/commands/make-migration.ts", "../src/commands/make-model.ts", "../src/commands/make-module.ts", "../src/commands/make-queue.ts", "../src/commands/make-schedule.ts", "../src/commands/make-service.ts", "../src/commands/make-session.ts", "../src/commands/make-validator.ts", "../src/commands/db-migrate.ts", "../src/commands/db-generate.ts", "../src/commands/db-seed.ts", "../src/commands/new.ts", "../src/commands/config.ts", "../src/commands/repl.ts", "../src/commands/route-list.ts", "../src/commands/index.ts", "../src/index.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
5
|
"/**\n * `nx info` — print the resolved project configuration.\n *\n * Useful for debugging the config layer: shows which `nx.config.ts`\n * file was loaded, the resolved config (with env overrides), and the\n * current environment values that affect the CLI.\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { colors, logger } from \"../core/index.js\";\n\nexport const infoCommand: Command = {\n\tname: \"info\",\n\taliases: [\"i\"],\n\tsummary: \"Show project configuration\",\n\tdescription: \"Prints the resolved nx.config.ts plus relevant env vars.\",\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tlogger.heading(\"Nexus CLI — Project Info\");\n\n\t\tlogger.info(colors.bold(\"Resolved configuration\"));\n\t\tlogger.blank();\n\t\tlogger.table([\n\t\t\t[\"routing\", String(ctx.config.routing)],\n\t\t\t[\"view\", String(ctx.config.view)],\n\t\t\t[\"orm\", String(ctx.config.orm)],\n\t\t\t[\"dialect\", String(ctx.config.dialect ?? \"(none)\")],\n\t\t\t[\"database.driver\", String(ctx.config.database.driver)],\n\t\t\t[\"database.url\", String(ctx.config.database.url)],\n\t\t\t[\"inertia.frontend\", String(ctx.config.inertia.frontend)],\n\t\t\t[\"inertia.ssr\", String(ctx.config.inertia.ssr)],\n\t\t\t[\"inertia.version\", String(ctx.config.inertia.version)],\n\t\t]);\n\n\t\tlogger.blank();\n\t\tlogger.info(colors.bold(\"Paths\"));\n\t\tlogger.blank();\n\t\tfor (const [k, v] of Object.entries(ctx.config.paths)) {\n\t\t\tlogger.table([[k, v]]);\n\t\t}\n\n\t\tlogger.blank();\n\t\tlogger.info(colors.bold(\"Environment\"));\n\t\tlogger.blank();\n\t\tconst envKeys = [\n\t\t\t\"NODE_ENV\",\n\t\t\t\"PORT\",\n\t\t\t\"NEXUS_DEBUG\",\n\t\t\t\"NO_COLOR\",\n\t\t\t\"FORCE_COLOR\",\n\t\t\t\"NX_ROUTING\",\n\t\t\t\"NX_VIEW\",\n\t\t\t\"NX_ORM\",\n\t\t\t\"NX_DATABASE_DRIVER\",\n\t\t\t\"NX_DATABASE_URL\",\n\t\t\t\"NX_INERTIA_FRONTEND\",\n\t\t\t\"NX_INERTIA_SSR\",\n\t\t];\n\t\tfor (const k of envKeys) {\n\t\t\tconst v = process.env[k];\n\t\t\tlogger.table([[k, v === undefined ? colors.dim(\"(unset)\") : v]]);\n\t\t}\n\n\t\tlogger.blank();\n\t\tlogger.info(colors.bold(\"Working directory\"));\n\t\tlogger.blank();\n\t\tlogger.info(` ${resolve(ctx.cwd)}`);\n\t\tlogger.blank();\n\n\t\treturn 0;\n\t},\n};\n\nexport default infoCommand;\n",
|
|
6
6
|
"/**\n * Minimal argv parser for the `nx` CLI.\n *\n * Supports:\n * - positional args\n * - short flags (-v, -p 3000)\n * - long flags (--verbose, --port=3000, --port 3000)\n * - boolean toggles (--no-color / --color)\n * - `--` end-of-options marker\n *\n * Usage:\n * const { command, positional, flags } = parseArgs(process.argv.slice(2));\n */\n\nexport interface ParsedArgs {\n\t/** Subcommand name (first positional arg, e.g. `make:controller`). */\n\tcommand: string | undefined;\n\t/** Remaining positional args after the command. */\n\tpositional: string[];\n\t/** Flag map: long → string | boolean | string[]. */\n\tflags: Record<string, string | boolean | string[]>;\n}\n\nconst LONG_RE = /^--([^=]+)(?:=(.*))?$/;\nconst SHORT_RE = /^-([A-Za-z])$/;\n\nexport function parseArgs(argv: string[]): ParsedArgs {\n\tconst positional: string[] = [];\n\tconst flags: Record<string, string | boolean | string[]> = {};\n\tlet endOfOptions = false;\n\n\tlet i = 0;\n\twhile (i < argv.length) {\n\t\tconst arg = argv[i]!;\n\n\t\tif (arg === \"--\") {\n\t\t\tendOfOptions = true;\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (endOfOptions || !arg.startsWith(\"-\")) {\n\t\t\tpositional.push(arg);\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst longMatch = LONG_RE.exec(arg);\n\t\tif (longMatch) {\n\t\t\tconst [, name, inline] = longMatch;\n\t\t\tconst flagName = name!;\n\n\t\t\tif (inline !== undefined) {\n\t\t\t\tsetFlag(flags, flagName, inline);\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// `--flag` (boolean) or `--flag value` (consume next arg if no leading dash)\n\t\t\tconst next = argv[i + 1];\n\t\t\tif (next !== undefined && !next.startsWith(\"-\")) {\n\t\t\t\tsetFlag(flags, flagName, next);\n\t\t\t\ti += 2;\n\t\t\t} else {\n\t\t\t\tsetFlag(flags, flagName, true);\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst shortMatch = SHORT_RE.exec(arg);\n\t\tif (shortMatch) {\n\t\t\tconst flagName = shortMatch[1]!;\n\t\t\tconst next = argv[i + 1];\n\t\t\tif (next !== undefined && !next.startsWith(\"-\")) {\n\t\t\t\tsetFlag(flags, flagName, next);\n\t\t\t\ti += 2;\n\t\t\t} else {\n\t\t\t\tsetFlag(flags, flagName, true);\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Unknown flag shape — treat as positional.\n\t\tpositional.push(arg);\n\t\ti++;\n\t}\n\n\tconst command = positional.shift();\n\treturn { command, positional, flags };\n}\n\nfunction setFlag(\n\tflags: Record<string, string | boolean | string[]>,\n\tname: string,\n\tvalue: string | boolean,\n) {\n\t// `--no-foo` toggles `foo` to false.\n\tif (name.startsWith(\"no-\") && value === true) {\n\t\tconst key = name.slice(3);\n\t\tflags[key] = false;\n\t\treturn;\n\t}\n\n\tconst existing = flags[name];\n\tif (existing === undefined) {\n\t\tflags[name] = value;\n\t} else if (Array.isArray(existing)) {\n\t\texisting.push(typeof value === \"string\" ? value : String(value));\n\t} else {\n\t\tflags[name] = [\n\t\t\tString(existing),\n\t\t\ttypeof value === \"string\" ? value : String(value),\n\t\t];\n\t}\n}\n\n/** Coerce a flag value to string with a default. */\nexport function flagString(\n\tflags: Record<string, string | boolean | string[]>,\n\tname: string,\n\tfallback?: string,\n): string | undefined {\n\tconst v = flags[name];\n\tif (v === undefined || v === false) return fallback;\n\tif (typeof v === \"string\") return v;\n\tif (Array.isArray(v)) return v[0];\n\treturn String(v);\n}\n\n/** Coerce a flag value to boolean with a default. */\nexport function flagBool(\n\tflags: Record<string, string | boolean | string[]>,\n\tname: string,\n\tfallback = false,\n): boolean {\n\tconst v = flags[name];\n\tif (v === undefined) return fallback;\n\tif (typeof v === \"boolean\") return v;\n\treturn v !== \"false\" && v !== \"0\" && v !== \"no\";\n}\n\n/** Read a flag list (each occurrence appends). */\nexport function flagList(\n\tflags: Record<string, string | boolean | string[]>,\n\tname: string,\n): string[] {\n\tconst v = flags[name];\n\tif (v === undefined) return [];\n\tif (Array.isArray(v)) return v;\n\tif (typeof v === \"string\") return [v];\n\treturn [String(v)];\n}\n",
|
|
@@ -10,7 +10,8 @@
|
|
|
10
10
|
"/**\n * Lenient JSON parser.\n *\n * Standard `JSON.parse` rejects three things that show up regularly\n * in hand-edited `package.json` / `tsconfig.json` files:\n *\n * 1. Line comments: `// like this`\n * 2. Block comments: `/* like this *\\/`\n * 3. Trailing commas: `\\{ \"a\": 1, \\}` or `[ 1, 2, ]`\n *\n * `bun init` and several other generators emit files with at least\n * some of these (the user's `package.json` had `//` comments and\n * tripped the CLI with `Unrecognized token '/'`).\n *\n * Bun has full JSON5 support built in (`Bun.JSON5.parse()`,\n * `Bun.JSON5.stringify()` — see\n * https://bun.sh/docs/runtime/json5#bun-json5-parse), so this\n * module is a thin pass-through rather than a reimplementation.\n * The CLI runs in Bun >= 1.1.0 (see `engines` in package.json).\n *\n * Use this anywhere the CLI reads a user-owned `package.json` or\n * `tsconfig.json`. For framework-owned files (like the templates\n * we render), use plain `JSON.parse` — they're always strict.\n */\nexport function parseJsonLoose<T = Record<string, unknown>>(text: string): T {\n\treturn Bun.JSON5.parse(text) as T;\n}\n",
|
|
11
11
|
"/**\n * Lightweight interactive prompts.\n *\n * Avoids a runtime dependency on a TTY prompt library — we only need\n * confirm / select / text prompts, all of which can be done with\n * `readline` and a fallback to defaults when stdin is not a TTY.\n *\n * Every prompt can be skipped with `--no-interaction` or by passing the\n * answer via flags. This mirrors Adonis ACE and Symfony Console.\n */\n\nimport { createInterface } from \"node:readline\";\n\nexport interface PromptOptions {\n\t/** Default value when the user just presses enter. */\n\tdefault?: string;\n\t/** Choices for select. The first one is the default. */\n\tchoices?: string[];\n\t/** When false, stdin must be a TTY — otherwise the default is used. */\n\tinteractive?: boolean;\n}\n\nexport async function prompt(\n\tmessage: string,\n\toptions: PromptOptions = {},\n): Promise<string> {\n\tconst interactive = options.interactive ?? true;\n\tconst fallback = options.default ?? options.choices?.[0];\n\n\tif (!interactive || !process.stdin.isTTY) {\n\t\tif (fallback === undefined) {\n\t\t\tthrow new Error(\n\t\t\t\t`No default provided for non-interactive prompt: ${message}`,\n\t\t\t);\n\t\t}\n\t\treturn fallback;\n\t}\n\n\tconst rl = createInterface({ input: process.stdin, output: process.stdout });\n\treturn new Promise((resolve) => {\n\t\tconst suffix = options.choices ? ` [${options.choices.join(\"/\")}]` : \"\";\n\t\tconst def = options.default ?? options.choices?.[0] ?? \"\";\n\t\tconst promptStr = ` ${message}${suffix} (${def}): `;\n\t\trl.question(promptStr, (answer) => {\n\t\t\trl.close();\n\t\t\tconst trimmed = answer.trim();\n\t\t\tresolve(trimmed === \"\" ? def : trimmed);\n\t\t});\n\t});\n}\n\nexport async function confirm(\n\tmessage: string,\n\tdefaultYes = false,\n\toptions: PromptOptions = {},\n): Promise<boolean> {\n\tconst interactive = options.interactive ?? true;\n\tif (!interactive || !process.stdin.isTTY) return defaultYes;\n\n\tconst rl = createInterface({ input: process.stdin, output: process.stdout });\n\treturn new Promise((resolve) => {\n\t\tconst suffix = defaultYes ? \" [Y/n]\" : \" [y/N]\";\n\t\trl.question(` ${message}${suffix}: `, (answer) => {\n\t\t\trl.close();\n\t\t\tconst v = answer.trim().toLowerCase();\n\t\t\tif (v === \"\") resolve(defaultYes);\n\t\t\telse resolve(v === \"y\" || v === \"yes\");\n\t\t});\n\t});\n}\n\nexport async function select(\n\tmessage: string,\n\tchoices: string[],\n\toptions: PromptOptions = {},\n): Promise<string> {\n\treturn prompt(message, { ...options, choices });\n}\n",
|
|
12
12
|
"/**\n * Minimal template engine for code generation.\n *\n * Supports:\n * - `{{ key }}` substitution\n * - `{{ key | filter }}` filters (upper/lower/pascal/camel/snake/kebab/plural/singular)\n * - `{{# flag }} ... {{/ flag }}` truthy sections (include if `flag` is truthy)\n * - `{{^ flag }} ... {{/ flag }}` falsy sections (include if `flag` is falsy)\n * - dotted lookup (`{{ user.name }}`)\n *\n * Multi-line templates are fine; placeholders can span any whitespace.\n */\n\nexport type Filter =\n\t| \"raw\"\n\t| \"upper\"\n\t| \"lower\"\n\t| \"pascal\"\n\t| \"camel\"\n\t| \"snake\"\n\t| \"kebab\"\n\t| \"plural\"\n\t| \"singular\";\n\nexport interface RenderObject {\n\t[key: string]: RenderValue;\n}\nexport type RenderValue =\n\t| string\n\t| number\n\t| boolean\n\t| undefined\n\t| null\n\t| RenderObject\n\t| RenderValue[];\nexport type RenderContext = RenderObject;\n\nconst VAR_RE = /\\{\\{\\s*([\\w.]+)(?:\\s*\\|\\s*(\\w+))?\\s*\\}\\}/;\nconst SECTION_RE =\n\t/\\{\\{\\s*([#^])\\s*([\\w.]+)\\s*\\}\\}([\\s\\S]*?)\\{\\{\\s*\\/\\s*\\2\\s*\\}\\}/g;\n\nexport function render(template: string, context: RenderContext): string {\n\t// 1. Expand sections (truthy / falsy).\n\tlet out = template.replace(\n\t\tSECTION_RE,\n\t\t(_, kind: \"#\" | \"^\", key: string, body: string) => {\n\t\t\tconst v = lookup(context, key);\n\t\t\tconst truthy = isTruthy(v);\n\t\t\tif (kind === \"#\") return truthy ? body : \"\";\n\t\t\treturn truthy ? \"\" : body;\n\t\t},\n\t);\n\n\t// 2. Substitute variables (repeatedly, in case substitutions introduce\n\t// more variables — unusual but safe).\n\tlet prev: string;\n\tdo {\n\t\tprev = out;\n\t\tout = out.replace(VAR_RE, (_, key: string, filter?: string) => {\n\t\t\tconst v = lookup(context, key);\n\t\t\treturn applyFilter(\n\t\t\t\tv === undefined || v === null ? \"\" : String(v),\n\t\t\t\tfilter,\n\t\t\t);\n\t\t});\n\t} while (out !== prev);\n\n\treturn out;\n}\n\nfunction lookup(ctx: RenderContext, dotted: string): RenderValue {\n\tif (dotted in ctx) return ctx[dotted] as RenderValue;\n\tconst parts = dotted.split(\".\");\n\tlet cur: any = ctx;\n\tfor (const p of parts) {\n\t\tif (cur == null || typeof cur !== \"object\") return undefined;\n\t\tcur = cur[p];\n\t}\n\treturn cur === undefined || cur === null ? undefined : cur;\n}\n\nfunction isTruthy(v: RenderValue): boolean {\n\tif (v === undefined || v === null) return false;\n\tif (typeof v === \"string\") return v.length > 0 && v !== \"false\" && v !== \"0\";\n\tif (typeof v === \"number\") return v !== 0;\n\tif (typeof v === \"boolean\") return v;\n\t// Object → truthy if it has any keys.\n\tif (Array.isArray(v)) return v.length > 0;\n\treturn Object.keys(v).length > 0;\n}\n\nfunction applyFilter(value: string, filter: string | undefined): string {\n\tswitch (filter as Filter | undefined) {\n\t\tcase undefined:\n\t\tcase \"raw\":\n\t\t\treturn value;\n\t\tcase \"upper\":\n\t\t\treturn value.toUpperCase();\n\t\tcase \"lower\":\n\t\t\treturn value.toLowerCase();\n\t\tcase \"pascal\":\n\t\t\treturn toPascal(value);\n\t\tcase \"camel\":\n\t\t\treturn toCamel(value);\n\t\tcase \"snake\":\n\t\t\treturn toSnake(value);\n\t\tcase \"kebab\":\n\t\t\treturn toKebab(value);\n\t\tcase \"plural\":\n\t\t\treturn pluralize(value);\n\t\tcase \"singular\":\n\t\t\treturn singularize(value);\n\t\tdefault:\n\t\t\tthrow new Error(`Unknown template filter: ${filter}`);\n\t}\n}\n\n// ---------------------------------------------------------------------------\n// Case-conversion helpers\n// ---------------------------------------------------------------------------\n\nfunction splitWords(s: string): string[] {\n\treturn s\n\t\t.replace(/([a-z0-9])([A-Z])/g, \"$1 $2\")\n\t\t.split(/[\\s_-]+/)\n\t\t.filter(Boolean);\n}\n\nexport function toPascal(s: string): string {\n\treturn splitWords(s)\n\t\t.map((w) => w.charAt(0).toUpperCase() + w.slice(1).toLowerCase())\n\t\t.join(\"\");\n}\n\nexport function toCamel(s: string): string {\n\tconst p = toPascal(s);\n\treturn p.charAt(0).toLowerCase() + p.slice(1);\n}\n\nexport function toSnake(s: string): string {\n\treturn splitWords(s)\n\t\t.map((w) => w.toLowerCase())\n\t\t.join(\"_\");\n}\n\nexport function toKebab(s: string): string {\n\treturn splitWords(s)\n\t\t.map((w) => w.toLowerCase())\n\t\t.join(\"-\");\n}\n\n// ---------------------------------------------------------------------------\n// Pluralization (English-only; matches Adonis/Rails conventions)\n// ---------------------------------------------------------------------------\n\nexport function pluralize(s: string): string {\n\tif (!s) return s;\n\tif (/(s|x|z|ch|sh)$/i.test(s)) return `${s}es`;\n\tif (/[^aeiou]y$/i.test(s)) return `${s.slice(0, -1)}ies`;\n\tif (/y$/i.test(s)) return `${s}s`;\n\treturn `${s}s`;\n}\n\nexport function singularize(s: string): string {\n\tif (!s) return s;\n\tif (/(ses|xes|zes|ches|shes)$/i.test(s)) return s.slice(0, -2);\n\tif (/ies$/i.test(s)) return `${s.slice(0, -3)}y`;\n\tif (/s$/i.test(s) && s.length > 1) return s.slice(0, -1);\n\treturn s;\n}\n",
|
|
13
|
-
"/**\n * `nx init [dir]` — scaffold NexusTS into the current (or target) directory.\n *\n * Unlike `nx new <name>` — which requires a fresh, empty directory —\n * `nx init` is non-destructive: it skips files that already exist,\n * preserves the user's existing `package.json` (only adding the\n * `nexusjs` dependency if missing), and merges its `tsconfig.json`\n * additions into the user's existing config.\n *\n * The matching pattern from other ecosystems:\n * - `bun init` / `npm init` → init in the current directory\n * - `cargo init` → init in the current directory\n * - `nx new <name>` → create a fresh project in a new dir\n *\n * Typical use case: the user already ran `bun init` (or has an\n * existing app) and now wants to add NexusTS to it without losing\n * their existing setup.\n *\n * $ bun init\n * $ bun add nexusjs\n * $ nx init\n * $ bun run dev\n *\n * Flags:\n * --target <dir> Scaffold into <dir> instead of the cwd\n * --style <name> Routing style (nest|adonis|functional)\n\t* --view <name> View engine (rendu|edge|eta|inertia|none)\n * --orm <name> ORM driver (drizzle|prisma|kysely|none)\n * --db <name> Database driver (bun-sqlite|node-sqlite|libsql|postgres|mysql|none)\n * --frontend <name> Inertia frontend (react|vue|svelte|solid)\n * --no-ssr Disable Inertia SSR\n * --force Overwrite existing files\n * --no-interaction Disable interactive prompts\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { flagBool, logger, render, select } from \"../core/index.js\";\nimport { parseJsonLoose } from \"../core/index.js\";\nimport { templates } from \"../templates/index.js\";\n\ntype WriteMode = \"write\" | \"skip\" | \"merge-pkg\" | \"merge-tsconfig\";\n\ninterface PlanEntry {\n\tpath: string;\n\tmode: WriteMode;\n}\n\nexport const initCommand: Command = {\n\tname: \"init\",\n\taliases: [\"i\"],\n\tsummary: \"Initialize nx.config.ts + app scaffold in the current directory\",\n\tdescription:\n\t\t\"Non-destructive scaffold: adds nx.config.ts, app/*, and merges NexusTS into the existing package.json and tsconfig.json. Skips files that already exist (unless --force).\",\n\texamples: [\n\t\t\"nx init\",\n\t\t\"nx init ./my-existing-app\",\n\t\t\"nx init --style nest --view inertia --orm drizzle --db bun-sqlite\",\n\t\t\"nx init --force\",\n\t],\n\tflags: [\n\t\t{ name: \"target\", description: \"Target directory (default: cwd)\" },\n\t\t{\n\t\t\tname: \"style\",\n\t\t\tdescription: \"Routing style (nest|adonis|functional|mixed)\",\n\t\t},\n\t\t{ name: \"view\", description: \"View engine (rendu|edge|eta|inertia|none)\" },\n\t\t{ name: \"orm\", description: \"ORM driver (drizzle|prisma|kysely|none)\" },\n\t\t{\n\t\t\tname: \"db\",\n\t\t\tdescription:\n\t\t\t\t\"Database driver (bun-sqlite|node-sqlite|libsql|postgres|mysql|none)\",\n\t\t},\n\t\t{\n\t\t\tname: \"frontend\",\n\t\t\tdescription: \"Inertia frontend (react|vue|svelte|solid)\",\n\t\t},\n\t\t{ name: \"no-ssr\", description: \"Disable Inertia SSR\" },\n\t\t{ name: \"force\", description: \"Overwrite files that already exist\" },\n\t\t{ name: \"no-interaction\", description: \"Disable interactive prompts\" },\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst interactive = !flagBool(ctx.flags, \"no-interaction\", false);\n\t\tconst force = flagBool(ctx.flags, \"force\", false);\n\t\tconst target = resolve(\n\t\t\tctx.cwd,\n\t\t\t(ctx.flags[\"target\"] as string | undefined) ?? \".\",\n\t\t);\n\n\t\tif (!existsSync(target)) {\n\t\t\tlogger.error(`Target directory does not exist: ${target}`);\n\t\t\tlogger.info(\n\t\t\t\t`Run \\`nx new <name>\\` to create a fresh project, or \\`mkdir -p ${target}\\` first.`,\n\t\t\t);\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Interactive prompts (only if not provided via flags and interactive mode)\n\t\tconst routing =\n\t\t\t(ctx.flags[\"style\"] as string | undefined) ??\n\t\t\t(await select(\"Routing style\", [\"nest\", \"adonis\", \"functional\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"nest\",\n\t\t\t}));\n\t\tconst view =\n\t\t\t(ctx.flags[\"view\"] as string | undefined) ??\n\t\t\t(await select(\"View engine\", [\"rendu\", \"edge\", \"eta\", \"inertia\", \"none\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"rendu\",\n\t\t\t}));\n\t\tconst orm =\n\t\t\t(ctx.flags[\"orm\"] as string | undefined) ??\n\t\t\t(await select(\"ORM driver\", [\"drizzle\", \"prisma\", \"kysely\", \"none\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"drizzle\",\n\t\t\t}));\n\t\tconst db =\n\t\t\t(ctx.flags[\"db\"] as string | undefined) ??\n\t\t\t(await select(\n\t\t\t\t\"Database driver\",\n\t\t\t\t[\"bun-sqlite\", \"node-sqlite\", \"libsql\", \"postgres\", \"mysql\", \"none\"],\n\t\t\t\t{\n\t\t\t\t\tinteractive,\n\t\t\t\t\tdefault: \"bun-sqlite\",\n\t\t\t\t},\n\t\t\t));\n\t\tconst frontend =\n\t\t\t(ctx.flags[\"frontend\"] as string | undefined) ??\n\t\t\t(await select(\"Inertia frontend\", [\"react\", \"vue\", \"svelte\", \"solid\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"react\",\n\t\t\t}));\n\t\tconst ssr = !flagBool(ctx.flags, \"no-ssr\", false);\n\n\t\t// Build the plan: which files to write / skip / merge\n\t\tconst plan: PlanEntry[] = [\n\t\t\t{ path: \"nx.config.ts\", mode: \"write\" },\n\t\t\t{ path: \"package.json\", mode: \"merge-pkg\" },\n\t\t\t{ path: \"tsconfig.json\", mode: \"merge-tsconfig\" },\n\t\t\t{ path: \"public/.gitkeep\", mode: \"write\" },\n\t\t\t...view !== \"none\" ? [{ path: \"resources/views/welcome.html\", mode: \"write\" }] : [],\n\t\t\t{ path: \".env\", mode: \"skip\" },\n\t\t\t{ path: \".env.local\", mode: \"skip\" },\n\t\t\t{ path: \".gitignore\", mode: \"skip\" },\n\t\t\t{ path: \"app/main.ts\", mode: \"write\" },\n\t\t\t{ path: \"app/app.module.ts\", mode: \"write\" },\n\t\t\t{ path: \"app/controllers/home.controller.ts\", mode: \"write\" },\n\t\t\t{ path: \"README.md\", mode: \"write\" },\n\t\t];\n\n\t\tconst created: string[] = [];\n\t\tconst skipped: string[] = [];\n\t\tconst merged: string[] = [];\n\n\t\t// Ensure directories exist\n\t\tmkdirSync(resolve(target, \"app/controllers\"), { recursive: true });\n\t\tmkdirSync(resolve(target, \"public\"), { recursive: true });\n\t\tif (view !== \"none\") {\n\t\t\tmkdirSync(resolve(target, \"resources/views\"), { recursive: true });\n\t\t}\n\n\t\tfor (const entry of plan) {\n\t\t\tconst abs = resolve(target, entry.path);\n\t\t\tconst exists = existsSync(abs);\n\n\t\t\tif (entry.mode === \"merge-pkg\") {\n\t\t\t\t// Build deps based on context\n\t\t\t\tconst coreDeps: Record<string, string> = {\n\t\t\t\t\t\"@nexusts/core\": \"*\",\n\t\t\t\t\t\"reflect-metadata\": \"^0.2.2\",\n\t\t\t\t\thono: \"^4.6.0\",\n\t\t\t\t\tzod: \"^3.23.8\",\n\t\t\t\t};\n\t\t\t\tif (orm === \"drizzle\") {\n\t\t\t\t\tcoreDeps[\"@nexusts/drizzle\"] = \"*\";\n\t\t\t\t\tcoreDeps[\"drizzle-orm\"] = \"^0.45.0\";\n\t\t\t\t}\n\t\t\t\tif (view !== \"none\") {\n\t\t\t\t\tcoreDeps[\"@nexusts/static\"] = \"*\";\n\t\t\t\t}\n\n\t\t\t\tif (exists) {\n\t\t\t\t\tmergePackageJson(abs, coreDeps);\n\t\t\t\t\tmerged.push(entry.path);\n\t\t\t\t} else {\n\t\t\t\t\twriteFileSync(\n\t\t\t\t\t\tabs,\n\t\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: target.split(\"/\").pop() ?? \"nexus-app\",\n\t\t\t\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\t\t\t\ttype: \"module\",\n\t\t\t\t\t\t\t\tprivate: true,\n\t\t\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\t\t\tdev: \"bun --hot app/main.ts\",\n\t\t\t\t\t\t\t\t\tbuild: \"bun run build.ts\",\n\t\t\t\t\t\t\t\t\tstart: \"bun app/main.ts\",\n\t\t\t\t\t\t\t\t\ttest: \"vitest\",\n\t\t\t\t\t\t\t\t\tnx: \"nx\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdependencies: coreDeps,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tcreated.push(entry.path);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (entry.mode === \"merge-tsconfig\") {\n\t\t\t\t// Always merge: never clobber an existing tsconfig.json.\n\t\t\t\tif (exists) {\n\t\t\t\t\tmergeTsconfig(abs, {\n\t\t\t\t\t\texperimentalDecorators: true,\n\t\t\t\t\t\temitDecoratorMetadata: true,\n\t\t\t\t\t});\n\t\t\t\t\tmerged.push(entry.path);\n\t\t\t\t} else {\n\t\t\t\t\twriteFileSync(abs, defaultTsconfig());\n\t\t\t\t\tcreated.push(entry.path);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Plain write mode\n\t\t\tif (exists && !force) {\n\t\t\t\tskipped.push(entry.path);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst content = renderContent(entry.path, {\n\t\t\t\trouting,\n\t\t\t\tview,\n\t\t\t\tviewPaths: view === \"none\" ? \"\" : \"resources/views\",\n\t\t\t\torm,\n\t\t\t\tdbDriver: db,\n\t\t\t\tdbUrl: db === \"bun-sqlite\" || db === \"node-sqlite\" ? \"app.db\" : \"\",\n\t\t\t\tinertiaFrontend: frontend,\n\t\t\t\tinertiaSSR: ssr,\n\t\t\t\tinertiaVersion: \"1.0.0\",\n\t\t\t\ttargetName: target.split(\"/\").pop() ?? \"nexus-app\",\n\t\t\t});\n\t\t\twriteFileSync(abs, content);\n\t\t\tcreated.push(entry.path);\n\t\t}\n\n\t\t// Report\n\t\tlogger.success(`initialized NexusTS in ${target}`);\n\t\tlogger.blank();\n\t\tif (created.length) {\n\t\t\tlogger.heading(\"Created\");\n\t\t\tfor (const f of created) logger.info(` + ${f}`);\n\t\t}\n\t\tif (merged.length) {\n\t\t\tlogger.heading(\"Merged into existing files\");\n\t\t\tfor (const f of merged) logger.info(` ~ ${f}`);\n\t\t}\n\t\tif (skipped.length) {\n\t\t\tlogger.heading(\"Skipped (already exist; use --force to overwrite)\");\n\t\t\tfor (const f of skipped) logger.info(` - ${f}`);\n\t\t}\n\t\tlogger.blank();\n\t\tlogger.heading(\"Next steps\");\n\t\tlogger.info(` cd ${target === ctx.cwd ? \".\" : target}`);\n\t\tlogger.info(` bun install`);\n\t\tlogger.info(` bun run dev`);\n\t\tlogger.blank();\n\n\t\treturn 0;\n\t},\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ninterface RenderCtx {\n\trouting: string;\n\tview: string;\n\tviewPaths: string;\n\torm: string;\n\tdbDriver: string;\n\tdbUrl: string;\n\tinertiaFrontend: string;\n\tinertiaSSR: boolean;\n\tinertiaVersion: string;\n\ttargetName: string;\n\t// Index signature so RenderCtx is assignable to RenderObject.\n\t[key: string]: string | number | boolean | undefined | null;\n}\n\nfunction renderContent(path: string, ctx: RenderCtx): string {\n\tswitch (path) {\n\t\tcase \"nx.config.ts\":\n\t\t\treturn render(templates.project[\"nx.config.ts\"], ctx);\n\t\tcase \"public/.gitkeep\":\n\t\t\treturn \"\";\n\t\tcase \"resources/views/welcome.html\":\n\t\t\treturn `<h1>Welcome to ${ctx.targetName}</h1>\\n<p>This is a sample Rendu template.</p>\\n<p>Founded <?= year ?>.</p>\\n`;\n\t\tcase \".gitignore\":\n\t\t\treturn `# NexusTS\nnode_modules/\napp.db\n*.db\n.env.local\ndist/\n`;\n\t\tcase \".env\":\n\t\t\treturn `# ──────────────────────────────────────────────────────\n# NexusTS — Environment Variables (committed to git)\n#\n# Shared defaults for all environments. Override locally via\n# .env.local (gitignored) or by environment via .env.{NODE_ENV}\n# (e.g. .env.production, .env.development).\n#\n# Uncomment the database config for your driver:\n# ──────────────────────────────────────────────────────\n\n# ── App ──\nNODE_ENV=development\nPORT=3000\n\n# ── Session secret (REQUIRED) ──\n# Generate with: openssl rand -base64 32\nSESSION_SECRET=change-me-in-production\n\n# ── Database: SQLite (default, zero config) ──\nDATABASE_URL=app.db\n\n# ── Database: PostgreSQL ──\n# DATABASE_URL=postgres://user:password@localhost:5432/myapp\n\n# ── Database: MySQL ──\n# DATABASE_URL=mysql://user:password@localhost:3306/myapp\n\n# ── Better Auth (if using nexusjs/auth) ──\n# BETTER_AUTH_SECRET=\n# BETTER_AUTH_URL=http://localhost:3000\n`;\n\t\tcase \".env.local\":\n\t\t\treturn `# ──────────────────────────────────────────────────────\n# NexusTS — Local Overrides (DO NOT COMMIT to git)\n#\n# This file is gitignored. Use it for secrets and local\n# configuration that should never be checked in.\n# ──────────────────────────────────────────────────────\n\n# Override any value from .env here:\n# DATABASE_URL=postgres://user:password@localhost:5432/myapp\n# SESSION_SECRET=my-local-secret\n`;\n\t\tcase \"app/main.ts\": {\n\t\t\tconst hasView = ctx.view !== \"none\";\n\t\t\tconst staticMw = hasView\n\t\t\t\t? `import { StaticModule } from '@nexusts/static';\\n`\n\t\t\t\t\t+ `const staticMiddleware = StaticModule.mount({ root: './public', prefix: '/static' });\\n`\n\t\t\t\t: '';\n\t\t\tconst staticOpt = hasView ? '\\n middleware: [staticMiddleware],' : '';\n\t\t\treturn `import 'reflect-metadata';\nimport { Application } from '@nexusts/core';\n${staticMw}import { AppModule } from './app.module.js';\n\nconst app = new Application(AppModule, {\n logging: true,\n port: Number(process.env['PORT'] ?? 3000),${staticOpt}\n});\n\nawait app.listen();\nconsole.log('[nexus] Listening on http://localhost:' + (process.env['PORT'] ?? 3000));\n`;\n\t\t}\n\t\tcase \"app/app.module.ts\": {\n\t\t\tconst hasOrm = ctx.orm === \"drizzle\";\n\t\t\tconst ormImport = hasOrm\n\t\t\t\t? `import { DrizzleModule } from '@nexusts/drizzle';\\n`\n\t\t\t\t: '';\n\t\t\tconst forRootDialect = ctx.dbDriver === 'bun-sqlite' ? 'bun-sqlite' : 'sqlite';\n\t\t\tconst forRootFile = ctx.dbUrl || 'app.db';\n\t\t\tconst ormBlock = hasOrm\n\t\t\t\t? ' DrizzleModule.forRoot({\\n dialect: \\'' + forRootDialect + '\\',\\n connection: { filename: \\'' + forRootFile + '\\' },\\n logging: true,\\n })'\n\t\t\t\t: '';\n\t\t\treturn `${ormImport}import { Module } from '@nexusts/core';\nimport { HomeController } from './controllers/home.controller.js';\n\n@Module({\n imports: [${hasOrm ? `\\n${ormBlock},\\n` : ''} ],\n controllers: [HomeController],\n})\nexport class AppModule {}\n`;\n\t\t}\n\t\tcase \"app/controllers/home.controller.ts\": {\n\t\t\tconst hasView = ctx.view !== \"none\";\n\t\t\tconst body = hasView\n\t\t\t\t? `{\\n view: 'welcome.html',\\n data: { year: new Date().getFullYear() },\\n }`\n\t\t\t\t: `{ status: 200, body: { message: 'Hello from NexusTS!' } }`;\n\t\t\treturn `import { Controller, Get } from '@nexusts/core';\n\n@Controller('/')\nexport class HomeController {\n @Get('/')\n index() {\n return ${body};\n }\n}\n`;\n\t\t}\n\t\tcase \"README.md\":\n\t\t\treturn `# ${ctx.targetName}\n\nA Nexus project.\n\n## Run\n\n\\`\\`\\`bash\nbun install\nbun run dev\n\\`\\`\\`\n\n## Scaffolding\n\n\\`\\`\\`bash\nbunx nx make:crud Post\n\\`\\`\\`\n`;\n\t\tdefault:\n\t\t\tthrow new Error(`No render template for: ${path}`);\n\t}\n}\n\nfunction defaultTsconfig(): string {\n\treturn `{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ESNext\",\n \"moduleResolution\": \"bundler\",\n \"experimentalDecorators\": true,\n \"emitDecoratorMetadata\": true,\n \"strict\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"types\": [\"bun-types\"]\n },\n \"include\": [\"app/**/*.ts\", \"nx.config.ts\"]\n}\n`;\n}\n\n/**\n * Merge NexusTS fields into an existing package.json. Preserves all\n * existing fields; only adds what's missing.\n */\nfunction mergePackageJson(path: string, additions: Record<string, string>): void {\n\tconst raw = readFileSync(path, \"utf8\");\n\tconst pkg = parseJsonLoose<Record<string, unknown>>(raw);\n\tlet changed = false;\n\n\t// Ensure type: \"module\"\n\tif (!pkg[\"type\"]) {\n\t\tpkg[\"type\"] = \"module\";\n\t\tchanged = true;\n\t}\n\n\t// Ensure private: true\n\tif (!pkg[\"private\"]) {\n\t\tpkg[\"private\"] = true;\n\t\tchanged = true;\n\t}\n\n\t// Merge scripts (only add missing ones, never overwrite)\n\tconst SCRIPTS: Record<string, string> = {\n\t\tdev: \"bun --hot app/main.ts\",\n\t\tbuild: \"bun run build.ts\",\n\t\tstart: \"bun app/main.ts\",\n\t\ttest: \"vitest\",\n\t\tnx: \"nx\",\n\t};\n\tconst existingScripts = (pkg[\"scripts\"] as Record<string, string> | undefined) ?? {};\n\tfor (const [k, v] of Object.entries(SCRIPTS)) {\n\t\tif (!(k in existingScripts)) {\n\t\t\texistingScripts[k] = v;\n\t\t\tchanged = true;\n\t\t}\n\t}\n\tif (Object.keys(existingScripts).length > 0) {\n\t\tpkg[\"scripts\"] = existingScripts;\n\t}\n\n\t// Merge dependencies\n\tconst deps = (pkg[\"dependencies\"] as Record<string, string> | undefined) ?? {};\n\tfor (const [k, v] of Object.entries(additions)) {\n\t\tif (!(k in deps)) {\n\t\t\tdeps[k] = v;\n\t\t\tchanged = true;\n\t\t}\n\t}\n\tpkg[\"dependencies\"] = deps;\n\n\tif (changed) {\n\t\twriteFileSync(path, JSON.stringify(pkg, null, 2) + \"\\n\");\n\t}\n}\n\n/**\n * Merge NexusTS compiler options into an existing tsconfig.json.\n * Preserves all existing fields; only adds what's missing.\n */\nfunction mergeTsconfig(\n\tpath: string,\n\tadditions: Record<string, boolean | string>,\n): void {\n\tconst raw = readFileSync(path, \"utf8\");\n\tconst cfg = parseJsonLoose<{\n\t\tcompilerOptions?: Record<string, unknown>;\n\t\tinclude?: string[];\n\t}>(raw);\n\tconst co = (cfg.compilerOptions ?? {}) as Record<string, unknown>;\n\tlet changed = false;\n\tfor (const [k, v] of Object.entries(additions)) {\n\t\tif (!(k in co)) {\n\t\t\tco[k] = v;\n\t\t\tchanged = true;\n\t\t}\n\t}\n\t// Also ensure src/**/*.ts and nx.config.ts are in `include`\n\tconst inc = (cfg.include ?? []) as string[];\n\tif (!inc.includes(\"app/**/*.ts\")) {\n\t\tinc.push(\"app/**/*.ts\");\n\t\tchanged = true;\n\t}\n\tif (!inc.includes(\"nx.config.ts\")) {\n\t\tinc.push(\"nx.config.ts\");\n\t\tchanged = true;\n\t}\n\tif (changed) {\n\t\tcfg.compilerOptions = co;\n\t\tcfg.include = inc;\n\t\twriteFileSync(path, JSON.stringify(cfg, null, 2) + \"\\n\");\n\t}\n}\n\nexport default initCommand;\n",
|
|
13
|
+
"/**\n * CLI version — read from the CLI's own package.json at import time.\n *\n * Uses `readFileSync` + `JSON.parse` because the CLI is bundled into a\n * single `dist/index.js` by Bun.build, and dynamic `import()` of\n * `package.json` would resolve relative to the bundle file at runtime\n * (which is correct here — the package.json always sits one level up\n * from `dist/`).\n */\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { resolve, dirname } from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\n\nconst __dirname = dirname(fileURLToPath(import.meta.url));\n\n// Resolve relative to this source file: ../package.json\n// In the bundled dist/index.js, __dirname = packages/cli/dist/\n// So ../package.json = packages/cli/package.json ✓\nconst PKG_JSON = resolve(__dirname, \"..\", \"package.json\");\n\nfunction loadVersion(): string {\n\ttry {\n\t\tif (!existsSync(PKG_JSON)) return \"0.0.0\";\n\t\tconst raw = readFileSync(PKG_JSON, \"utf-8\");\n\t\tconst pkg = JSON.parse(raw) as { version?: string };\n\t\treturn pkg.version ?? \"0.0.0\";\n\t} catch {\n\t\treturn \"0.0.0\";\n\t}\n}\n\nexport const VERSION: string = loadVersion();\n",
|
|
14
|
+
"/**\n * `nx init [dir]` — scaffold NexusTS into the current (or target) directory.\n *\n * Unlike `nx new <name>` — which requires a fresh, empty directory —\n * `nx init` is non-destructive: it skips files that already exist,\n * preserves the user's existing `package.json` (only adding the\n * `nexusjs` dependency if missing), and merges its `tsconfig.json`\n * additions into the user's existing config.\n *\n * The matching pattern from other ecosystems:\n * - `bun init` / `npm init` → init in the current directory\n * - `cargo init` → init in the current directory\n * - `nx new <name>` → create a fresh project in a new dir\n *\n * Typical use case: the user already ran `bun init` (or has an\n * existing app) and now wants to add NexusTS to it without losing\n * their existing setup.\n *\n * $ bun init\n * $ bun add nexusjs\n * $ nx init\n * $ bun run dev\n *\n * Flags:\n * --target <dir> Scaffold into <dir> instead of the cwd\n * --style <name> Routing style (nest|adonis|functional)\n\t* --view <name> View engine (rendu|edge|eta|inertia|none)\n * --orm <name> ORM driver (drizzle|prisma|kysely|none)\n * --db <name> Database driver (bun-sqlite|node-sqlite|libsql|postgres|mysql|none)\n * --frontend <name> Inertia frontend (react|vue|svelte|solid)\n * --no-ssr Disable Inertia SSR\n * --force Overwrite existing files\n * --no-interaction Disable interactive prompts\n */\n\nimport { existsSync, mkdirSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { flagBool, logger, render, select } from \"../core/index.js\";\nimport { parseJsonLoose } from \"../core/index.js\";\nimport { templates } from \"../templates/index.js\";\n\ntype WriteMode = \"write\" | \"skip\" | \"merge-pkg\" | \"merge-tsconfig\";\n\ninterface PlanEntry {\n\tpath: string;\n\tmode: WriteMode;\n}\n\nexport const initCommand: Command = {\n\tname: \"init\",\n\taliases: [\"i\"],\n\tsummary: \"Initialize nx.config.ts + app scaffold in the current directory\",\n\tdescription:\n\t\t\"Non-destructive scaffold: adds nx.config.ts, app/*, and merges NexusTS into the existing package.json and tsconfig.json. Skips files that already exist (unless --force).\",\n\texamples: [\n\t\t\"nx init\",\n\t\t\"nx init ./my-existing-app\",\n\t\t\"nx init --style nest --view inertia --orm drizzle --db bun-sqlite\",\n\t\t\"nx init --force\",\n\t],\n\tflags: [\n\t\t{ name: \"target\", description: \"Target directory (default: cwd)\" },\n\t\t{\n\t\t\tname: \"style\",\n\t\t\tdescription: \"Routing style (nest|adonis|functional|mixed)\",\n\t\t},\n\t\t{ name: \"view\", description: \"View engine (rendu|edge|eta|inertia|none)\" },\n\t\t{ name: \"orm\", description: \"ORM driver (drizzle|prisma|kysely|none)\" },\n\t\t{\n\t\t\tname: \"db\",\n\t\t\tdescription:\n\t\t\t\t\"Database driver (bun-sqlite|node-sqlite|libsql|postgres|mysql|none)\",\n\t\t},\n\t\t{\n\t\t\tname: \"frontend\",\n\t\t\tdescription: \"Inertia frontend (react|vue|svelte|solid)\",\n\t\t},\n\t\t{ name: \"no-ssr\", description: \"Disable Inertia SSR\" },\n\t\t{ name: \"force\", description: \"Overwrite files that already exist\" },\n\t\t{ name: \"no-interaction\", description: \"Disable interactive prompts\" },\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst interactive = !flagBool(ctx.flags, \"no-interaction\", false);\n\t\tconst force = flagBool(ctx.flags, \"force\", false);\n\t\tconst target = resolve(\n\t\t\tctx.cwd,\n\t\t\t(ctx.flags[\"target\"] as string | undefined) ?? \".\",\n\t\t);\n\n\t\tif (!existsSync(target)) {\n\t\t\tlogger.error(`Target directory does not exist: ${target}`);\n\t\t\tlogger.info(\n\t\t\t\t`Run \\`nx new <name>\\` to create a fresh project, or \\`mkdir -p ${target}\\` first.`,\n\t\t\t);\n\t\t\treturn 1;\n\t\t}\n\n\t\t// Interactive prompts (only if not provided via flags and interactive mode)\n\t\tconst routing =\n\t\t\t(ctx.flags[\"style\"] as string | undefined) ??\n\t\t\t(await select(\"Routing style\", [\"nest\", \"adonis\", \"functional\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"nest\",\n\t\t\t}));\n\t\tconst view =\n\t\t\t(ctx.flags[\"view\"] as string | undefined) ??\n\t\t\t(await select(\"View engine\", [\"rendu\", \"edge\", \"eta\", \"inertia\", \"none\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"rendu\",\n\t\t\t}));\n\t\tconst orm =\n\t\t\t(ctx.flags[\"orm\"] as string | undefined) ??\n\t\t\t(await select(\"ORM driver\", [\"drizzle\", \"prisma\", \"kysely\", \"none\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"drizzle\",\n\t\t\t}));\n\t\tconst db =\n\t\t\t(ctx.flags[\"db\"] as string | undefined) ??\n\t\t\t(await select(\n\t\t\t\t\"Database driver\",\n\t\t\t\t[\"bun-sqlite\", \"node-sqlite\", \"libsql\", \"postgres\", \"mysql\", \"none\"],\n\t\t\t\t{\n\t\t\t\t\tinteractive,\n\t\t\t\t\tdefault: \"bun-sqlite\",\n\t\t\t\t},\n\t\t\t));\n\t\tconst frontend =\n\t\t\t(ctx.flags[\"frontend\"] as string | undefined) ??\n\t\t\t(await select(\"Inertia frontend\", [\"react\", \"vue\", \"svelte\", \"solid\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"react\",\n\t\t\t}));\n\t\tconst ssr = !flagBool(ctx.flags, \"no-ssr\", false);\n\n\t\t// Build the plan: which files to write / skip / merge\n\t\tconst plan: PlanEntry[] = [\n\t\t\t{ path: \"nx.config.ts\", mode: \"write\" },\n\t\t\t{ path: \"package.json\", mode: \"merge-pkg\" },\n\t\t\t{ path: \"tsconfig.json\", mode: \"merge-tsconfig\" },\n\t\t\t{ path: \"public/.gitkeep\", mode: \"write\" },\n\t\t\t...view !== \"none\" ? [{ path: \"resources/views/welcome.html\", mode: \"write\" as const }] : [],\n\t\t\t{ path: \".env\", mode: \"skip\" },\n\t\t\t{ path: \".env.local\", mode: \"skip\" },\n\t\t\t{ path: \".gitignore\", mode: \"skip\" },\n\t\t\t{ path: \"app/main.ts\", mode: \"write\" },\n\t\t\t{ path: \"app/app.module.ts\", mode: \"write\" },\n\t\t\t{ path: \"app/controllers/home.controller.ts\", mode: \"write\" },\n\t\t\t{ path: \"README.md\", mode: \"write\" },\n\t\t];\n\n\t\tconst created: string[] = [];\n\t\tconst skipped: string[] = [];\n\t\tconst merged: string[] = [];\n\n\t\t// Ensure directories exist\n\t\tmkdirSync(resolve(target, \"app/controllers\"), { recursive: true });\n\t\tmkdirSync(resolve(target, \"public\"), { recursive: true });\n\t\tif (view !== \"none\") {\n\t\t\tmkdirSync(resolve(target, \"resources/views\"), { recursive: true });\n\t\t}\n\n\t\tfor (const entry of plan) {\n\t\t\tconst abs = resolve(target, entry.path);\n\t\t\tconst exists = existsSync(abs);\n\n\t\t\tif (entry.mode === \"merge-pkg\") {\n\t\t\t\t// Build deps based on context\n\t\t\t\tconst coreDeps: Record<string, string> = {\n\t\t\t\t\t\"@nexusts/core\": \"*\",\n\t\t\t\t\t\"reflect-metadata\": \"^0.2.2\",\n\t\t\t\t\thono: \"^4.6.0\",\n\t\t\t\t\tzod: \"^3.23.8\",\n\t\t\t\t};\n\t\t\t\tif (orm === \"drizzle\") {\n\t\t\t\t\tcoreDeps[\"@nexusts/drizzle\"] = \"*\";\n\t\t\t\t\tcoreDeps[\"drizzle-orm\"] = \"^0.45.0\";\n\t\t\t\t}\n\t\t\t\tif (view !== \"none\") {\n\t\t\t\t\tcoreDeps[\"@nexusts/static\"] = \"*\";\n\t\t\t\t}\n\n\t\t\t\tif (exists) {\n\t\t\t\t\tmergePackageJson(abs, coreDeps);\n\t\t\t\t\tmerged.push(entry.path);\n\t\t\t\t} else {\n\t\t\t\t\twriteFileSync(\n\t\t\t\t\t\tabs,\n\t\t\t\t\t\tJSON.stringify(\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tname: target.split(\"/\").pop() ?? \"nexus-app\",\n\t\t\t\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\t\t\t\ttype: \"module\",\n\t\t\t\t\t\t\t\tprivate: true,\n\t\t\t\t\t\t\t\tscripts: {\n\t\t\t\t\t\t\t\t\tdev: \"bun --hot app/main.ts\",\n\t\t\t\t\t\t\t\t\tbuild: \"bun run build.ts\",\n\t\t\t\t\t\t\t\t\tstart: \"bun app/main.ts\",\n\t\t\t\t\t\t\t\t\ttest: \"vitest\",\n\t\t\t\t\t\t\t\t\tnx: \"nx\",\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdependencies: coreDeps,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t2,\n\t\t\t\t\t\t),\n\t\t\t\t\t);\n\t\t\t\t\tcreated.push(entry.path);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (entry.mode === \"merge-tsconfig\") {\n\t\t\t\t// Always merge: never clobber an existing tsconfig.json.\n\t\t\t\tif (exists) {\n\t\t\t\t\tmergeTsconfig(abs, {\n\t\t\t\t\t\texperimentalDecorators: true,\n\t\t\t\t\t\temitDecoratorMetadata: true,\n\t\t\t\t\t});\n\t\t\t\t\tmerged.push(entry.path);\n\t\t\t\t} else {\n\t\t\t\t\twriteFileSync(abs, defaultTsconfig());\n\t\t\t\t\tcreated.push(entry.path);\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Plain write mode\n\t\t\tif (exists && !force) {\n\t\t\t\tskipped.push(entry.path);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst content = renderContent(entry.path, {\n\t\t\t\trouting,\n\t\t\t\tview,\n\t\t\t\tviewPaths: view === \"none\" ? \"\" : \"resources/views\",\n\t\t\t\torm,\n\t\t\t\tdbDriver: db,\n\t\t\t\tdbUrl: db === \"bun-sqlite\" || db === \"node-sqlite\" ? \"app.db\" : \"\",\n\t\t\t\tinertiaFrontend: frontend,\n\t\t\t\tinertiaSSR: ssr,\n\t\t\t\tinertiaVersion: \"1.0.0\",\n\t\t\t\ttargetName: target.split(\"/\").pop() ?? \"nexus-app\",\n\t\t\t});\n\t\t\twriteFileSync(abs, content);\n\t\t\tcreated.push(entry.path);\n\t\t}\n\n\t\t// Report\n\t\tlogger.success(`initialized NexusTS in ${target}`);\n\t\tlogger.blank();\n\t\tif (created.length) {\n\t\t\tlogger.heading(\"Created\");\n\t\t\tfor (const f of created) logger.info(` + ${f}`);\n\t\t}\n\t\tif (merged.length) {\n\t\t\tlogger.heading(\"Merged into existing files\");\n\t\t\tfor (const f of merged) logger.info(` ~ ${f}`);\n\t\t}\n\t\tif (skipped.length) {\n\t\t\tlogger.heading(\"Skipped (already exist; use --force to overwrite)\");\n\t\t\tfor (const f of skipped) logger.info(` - ${f}`);\n\t\t}\n\t\tlogger.blank();\n\t\tlogger.heading(\"Next steps\");\n\t\tlogger.info(` cd ${target === ctx.cwd ? \".\" : target}`);\n\t\tlogger.info(` bun install`);\n\t\tlogger.info(` bun run dev`);\n\t\tlogger.blank();\n\n\t\treturn 0;\n\t},\n};\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\ninterface RenderCtx {\n\trouting: string;\n\tview: string;\n\tviewPaths: string;\n\torm: string;\n\tdbDriver: string;\n\tdbUrl: string;\n\tinertiaFrontend: string;\n\tinertiaSSR: boolean;\n\tinertiaVersion: string;\n\ttargetName: string;\n\t// Index signature so RenderCtx is assignable to RenderObject.\n\t[key: string]: string | number | boolean | undefined | null;\n}\n\nfunction renderContent(path: string, ctx: RenderCtx): string {\n\tswitch (path) {\n\t\tcase \"nx.config.ts\":\n\t\t\treturn render(templates.project[\"nx.config.ts\"], ctx);\n\t\tcase \"public/.gitkeep\":\n\t\t\treturn \"\";\n\t\tcase \"resources/views/welcome.html\":\n\t\t\treturn `<h1>Welcome to ${ctx.targetName}</h1>\\n<p>This is a sample Rendu template.</p>\\n<p>Founded <?= year ?>.</p>\\n`;\n\t\tcase \".gitignore\":\n\t\t\treturn `# NexusTS\nnode_modules/\napp.db\n*.db\n.env.local\ndist/\n`;\n\t\tcase \".env\":\n\t\t\treturn `# ──────────────────────────────────────────────────────\n# NexusTS — Environment Variables (committed to git)\n#\n# Shared defaults for all environments. Override locally via\n# .env.local (gitignored) or by environment via .env.{NODE_ENV}\n# (e.g. .env.production, .env.development).\n#\n# Uncomment the database config for your driver:\n# ──────────────────────────────────────────────────────\n\n# ── App ──\nNODE_ENV=development\nPORT=3000\n\n# ── Session secret (REQUIRED) ──\n# Generate with: openssl rand -base64 32\nSESSION_SECRET=change-me-in-production\n\n# ── Database: SQLite (default, zero config) ──\nDATABASE_URL=app.db\n\n# ── Database: PostgreSQL ──\n# DATABASE_URL=postgres://user:password@localhost:5432/myapp\n\n# ── Database: MySQL ──\n# DATABASE_URL=mysql://user:password@localhost:3306/myapp\n\n# ── Better Auth (if using nexusjs/auth) ──\n# BETTER_AUTH_SECRET=\n# BETTER_AUTH_URL=http://localhost:3000\n`;\n\t\tcase \".env.local\":\n\t\t\treturn `# ──────────────────────────────────────────────────────\n# NexusTS — Local Overrides (DO NOT COMMIT to git)\n#\n# This file is gitignored. Use it for secrets and local\n# configuration that should never be checked in.\n# ──────────────────────────────────────────────────────\n\n# Override any value from .env here:\n# DATABASE_URL=postgres://user:password@localhost:5432/myapp\n# SESSION_SECRET=my-local-secret\n`;\n\t\tcase \"app/main.ts\": {\n\t\t\tconst hasView = ctx.view !== \"none\";\n\t\t\tconst staticMw = hasView\n\t\t\t\t? `import { StaticModule } from '@nexusts/static';\\n`\n\t\t\t\t\t+ `const staticMiddleware = StaticModule.mount({ root: './public', prefix: '/static' });\\n`\n\t\t\t\t: '';\n\t\t\tconst staticOpt = hasView ? '\\n middleware: [staticMiddleware],' : '';\n\t\t\treturn `import 'reflect-metadata';\nimport { Application } from '@nexusts/core';\n${staticMw}import { AppModule } from './app.module.js';\n\nconst app = new Application(AppModule, {\n logging: true,\n port: Number(process.env['PORT'] ?? 3000),${staticOpt}\n});\n\nawait app.listen();\nconsole.log('[nexus] Listening on http://localhost:' + (process.env['PORT'] ?? 3000));\n`;\n\t\t}\n\t\tcase \"app/app.module.ts\": {\n\t\t\tconst hasOrm = ctx.orm === \"drizzle\";\n\t\t\tconst ormImport = hasOrm\n\t\t\t\t? `import { DrizzleModule } from '@nexusts/drizzle';\\n`\n\t\t\t\t: '';\n\t\t\tconst forRootDialect = ctx.dbDriver === 'bun-sqlite' ? 'bun-sqlite' : 'sqlite';\n\t\t\tconst forRootFile = ctx.dbUrl || 'app.db';\n\t\t\tconst ormBlock = hasOrm\n\t\t\t\t? ' DrizzleModule.forRoot({\\n dialect: \\'' + forRootDialect + '\\',\\n connection: { filename: \\'' + forRootFile + '\\' },\\n logging: true,\\n })'\n\t\t\t\t: '';\n\t\t\treturn `${ormImport}import { Module } from '@nexusts/core';\nimport { HomeController } from './controllers/home.controller.js';\n\n@Module({\n imports: [${hasOrm ? `\\n${ormBlock},\\n` : ''} ],\n controllers: [HomeController],\n})\nexport class AppModule {}\n`;\n\t\t}\n\t\tcase \"app/controllers/home.controller.ts\": {\n\t\t\tconst hasView = ctx.view !== \"none\";\n\t\t\tconst body = hasView\n\t\t\t\t? `{\\n view: 'welcome.html',\\n data: { year: new Date().getFullYear() },\\n }`\n\t\t\t\t: `{ status: 200, body: { message: 'Hello from NexusTS!' } }`;\n\t\t\treturn `import { Controller, Get } from '@nexusts/core';\n\n@Controller('/')\nexport class HomeController {\n @Get('/')\n index() {\n return ${body};\n }\n}\n`;\n\t\t}\n\t\tcase \"README.md\":\n\t\t\treturn `# ${ctx.targetName}\n\nA Nexus project.\n\n## Run\n\n\\`\\`\\`bash\nbun install\nbun run dev\n\\`\\`\\`\n\n## Scaffolding\n\n\\`\\`\\`bash\nbunx nx make:crud Post\n\\`\\`\\`\n`;\n\t\tdefault:\n\t\t\tthrow new Error(`No render template for: ${path}`);\n\t}\n}\n\nfunction defaultTsconfig(): string {\n\treturn `{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ESNext\",\n \"moduleResolution\": \"bundler\",\n \"experimentalDecorators\": true,\n \"emitDecoratorMetadata\": true,\n \"strict\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"types\": [\"bun-types\"]\n },\n \"include\": [\"app/**/*.ts\", \"nx.config.ts\"]\n}\n`;\n}\n\n/**\n * Merge NexusTS fields into an existing package.json. Preserves all\n * existing fields; only adds what's missing.\n */\nfunction mergePackageJson(path: string, additions: Record<string, string>): void {\n\tconst raw = readFileSync(path, \"utf8\");\n\tconst pkg = parseJsonLoose<Record<string, unknown>>(raw);\n\tlet changed = false;\n\n\t// Ensure type: \"module\"\n\tif (!pkg[\"type\"]) {\n\t\tpkg[\"type\"] = \"module\";\n\t\tchanged = true;\n\t}\n\n\t// Ensure private: true\n\tif (!pkg[\"private\"]) {\n\t\tpkg[\"private\"] = true;\n\t\tchanged = true;\n\t}\n\n\t// Merge scripts (only add missing ones, never overwrite)\n\tconst SCRIPTS: Record<string, string> = {\n\t\tdev: \"bun --hot app/main.ts\",\n\t\tbuild: \"bun run build.ts\",\n\t\tstart: \"bun app/main.ts\",\n\t\ttest: \"vitest\",\n\t\tnx: \"nx\",\n\t};\n\tconst existingScripts = (pkg[\"scripts\"] as Record<string, string> | undefined) ?? {};\n\tfor (const [k, v] of Object.entries(SCRIPTS)) {\n\t\tif (!(k in existingScripts)) {\n\t\t\texistingScripts[k] = v;\n\t\t\tchanged = true;\n\t\t}\n\t}\n\tif (Object.keys(existingScripts).length > 0) {\n\t\tpkg[\"scripts\"] = existingScripts;\n\t}\n\n\t// Merge dependencies\n\tconst deps = (pkg[\"dependencies\"] as Record<string, string> | undefined) ?? {};\n\tfor (const [k, v] of Object.entries(additions)) {\n\t\tif (!(k in deps)) {\n\t\t\tdeps[k] = v;\n\t\t\tchanged = true;\n\t\t}\n\t}\n\tpkg[\"dependencies\"] = deps;\n\n\tif (changed) {\n\t\twriteFileSync(path, JSON.stringify(pkg, null, 2) + \"\\n\");\n\t}\n}\n\n/**\n * Merge NexusTS compiler options into an existing tsconfig.json.\n * Preserves all existing fields; only adds what's missing.\n */\nfunction mergeTsconfig(\n\tpath: string,\n\tadditions: Record<string, boolean | string>,\n): void {\n\tconst raw = readFileSync(path, \"utf8\");\n\tconst cfg = parseJsonLoose<{\n\t\tcompilerOptions?: Record<string, unknown>;\n\t\tinclude?: string[];\n\t}>(raw);\n\tconst co = (cfg.compilerOptions ?? {}) as Record<string, unknown>;\n\tlet changed = false;\n\tfor (const [k, v] of Object.entries(additions)) {\n\t\tif (!(k in co)) {\n\t\t\tco[k] = v;\n\t\t\tchanged = true;\n\t\t}\n\t}\n\t// Also ensure src/**/*.ts and nx.config.ts are in `include`\n\tconst inc = (cfg.include ?? []) as string[];\n\tif (!inc.includes(\"app/**/*.ts\")) {\n\t\tinc.push(\"app/**/*.ts\");\n\t\tchanged = true;\n\t}\n\tif (!inc.includes(\"nx.config.ts\")) {\n\t\tinc.push(\"nx.config.ts\");\n\t\tchanged = true;\n\t}\n\tif (changed) {\n\t\tcfg.compilerOptions = co;\n\t\tcfg.include = inc;\n\t\twriteFileSync(path, JSON.stringify(cfg, null, 2) + \"\\n\");\n\t}\n}\n\nexport default initCommand;\n",
|
|
14
15
|
"/**\n * AdonisJS-style controller template (no decorators, just methods).\n *\n * Use when `nx.config.ts` has `routing: 'adonis'`. Routes are added\n * separately by the user (or by the `make:crud` command) to a route\n * table; this controller is just a plain class.\n */\n\nexport default `\nimport { {{ service }} } from '../services/{{ kebab }}.service.js';\n\nexport class {{ name }}Controller {\n async index() {\n return new {{ service }}().findAll();\n }\n\n async show({ params }: { params: { id: string } }) {\n return new {{ service }}().findOne(Number(params.id));\n }\n\n async create({ body }: { body: any }) {\n return { status: 201, body: new {{ service }}().create(body) };\n }\n\n async update({ params, body }: { params: { id: string }; body: any }) {\n return new {{ service }}().update(Number(params.id), body);\n }\n\n async destroy({ params }: { params: { id: string } }) {\n return new {{ service }}().delete(Number(params.id));\n }\n}\n\nexport const {{ camel }}Controller = new {{ name }}Controller();\n`.trimStart();\n",
|
|
15
16
|
"/**\n * Functional (Hono-native) controller template.\n *\n * Each route is a plain function `(c) => Response`. Useful for\n * webhooks, SSE endpoints, or anything that doesn't fit a class shape.\n */\n\nexport default `\nimport type { Context } from 'hono';\n\nexport const {{ camel }}Routes = {\n list: async (c: Context) => {\n return c.json([]);\n },\n\n show: async (c: Context) => {\n const id = c.req.param('id');\n return c.json({ id });\n },\n\n create: async (c: Context) => {\n const body = await c.req.json();\n return c.json({ created: body }, 201);\n },\n\n update: async (c: Context) => {\n const id = c.req.param('id');\n const body = await c.req.json();\n return c.json({ id, body });\n },\n\n destroy: async (c: Context) => {\n const id = c.req.param('id');\n return c.json({ removed: id });\n },\n};\n`.trimStart();\n",
|
|
16
17
|
"/**\n * NestJS-style controller template.\n *\n * Renders an `@Controller(prefix)` class with `@Get` / `@Post` /\n * `@Put` / `@Delete` routes that delegate to an injected service.\n *\n * Context keys used:\n * name — PascalCase class name (e.g. \"User\")\n * kebab — kebab-case URL segment (e.g. \"user\")\n * pascal — alias for name (template convenience)\n * camel — camelCase variable name (e.g. \"userService\")\n * service — PascalCase service name (e.g. \"UserService\")\n * serviceCamel — camelCase service variable (e.g. \"userService\")\n */\n\nexport default `\nimport { Body, Controller, Delete, Get, Inject, Param, Post, Put } from '@nexusts/core';\nimport { {{ service }} } from '../services/{{ kebab }}.service.js';\n\n@Controller('/{{ kebab }}s')\nexport class {{ name }}Controller {\n constructor(@Inject({{ service }}) private readonly {{ serviceCamel }}: {{ service }}) {}\n\n @Get('/')\n async index() {\n return this.{{ serviceCamel }}.findAll();\n }\n\n @Get('/:id')\n async show(@Param('id') id: string) {\n return this.{{ serviceCamel }}.findOne(Number(id));\n }\n\n @Post('/')\n async create(@Body() body: any) {\n return { status: 201, body: this.{{ serviceCamel }}.create(body) };\n }\n\n @Put('/:id')\n async update(@Param('id') id: string, @Body() body: any) {\n return this.{{ serviceCamel }}.update(Number(id), body);\n }\n\n @Delete('/:id')\n async destroy(@Param('id') id: string) {\n return this.{{ serviceCamel }}.delete(Number(id));\n }\n}\n`.trimStart();\n",
|
|
@@ -41,7 +42,7 @@
|
|
|
41
42
|
"/**\n * `nx make:model <Name>` — generate a model (table schema).\n *\n * Supports three ORMs via `nx.config.ts`'s `orm` field:\n * - drizzle → Drizzle table definition (dialect-aware)\n * - prisma → schema.prisma block + typed repository\n * - kysely → table interface + typed repository\n *\n * For Drizzle, the `--dialect` flag selects the right import path and\n * column types: postgres | mysql | sqlite | bun-sqlite | d1. Default\n * is `bun-sqlite` (the typical Bun + local-dev setup).\n *\n * Columns are read from the optional `--columns` flag as a comma-separated\n * list of `name:type` pairs:\n *\n * nx make:model User --columns \"name:text,email:text,bio:text\"\n * nx make:model Post --orm drizzle --dialect postgres --columns \"title:text,body:text,published:boolean\"\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport {\n\tflagList,\n\tlogger,\n\tnameVariants,\n\trender,\n\twriteFile,\n} from \"../core/index.js\";\nimport { templates } from \"../templates/index.js\";\nimport {\n\tmapDrizzleType,\n\trenderDrizzleDialect,\n} from \"../templates/model/drizzle-dialect.js\";\n\nexport const makeModelCommand: Command = {\n\tname: \"make:model\",\n\taliases: [\"mmodel\", \"make-model\"],\n\tsummary: \"Generate a model (table schema)\",\n\tdescription:\n\t\t\"Generates a model file under app/models/. The template is chosen from nx.config.ts's `orm` field (drizzle|prisma|kysely). For drizzle, use --dialect to pick the import path.\",\n\texamples: [\n\t\t\"nx make:model User\",\n\t\t'nx make:model User --columns \"name:text,email:text\"',\n\t\t\"nx make:model User --orm drizzle --dialect postgres\",\n\t\t\"nx make:model Post --orm drizzle --dialect postgres --columns 'title:text,body:text,published:boolean'\",\n\t],\n\tflags: [\n\t\t{\n\t\t\tname: \"columns\",\n\t\t\tdescription: \"Comma-separated `name:type` pairs (default: title:text)\",\n\t\t},\n\t\t{\n\t\t\tname: \"orm\",\n\t\t\tdescription: \"Override ORM driver (drizzle|prisma|kysely)\",\n\t\t},\n\t\t{\n\t\t\tname: \"dialect\",\n\t\t\tdescription:\n\t\t\t\t\"Drizzle dialect (postgres|mysql|sqlite|bun-sqlite|d1). Default: bun-sqlite\",\n\t\t},\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst name = ctx.positional[0];\n\t\tif (!name) {\n\t\t\tlogger.error(\n\t\t\t\t\"Usage: nx make:model <Name> [--columns name:type,...] [--dialect ...]\",\n\t\t\t);\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst orm = (ctx.flags[\"orm\"] as string | undefined) ?? ctx.config.orm;\n\t\tif (orm !== \"drizzle\" && orm !== \"prisma\" && orm !== \"kysely\") {\n\t\t\tlogger.error(\n\t\t\t\t`Unsupported ORM: ${orm}. Allowed: drizzle, prisma, kysely. Use --orm or set \"orm\" in nx.config.ts.`,\n\t\t\t);\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst variants = nameVariants(name);\n\t\tconst tableName = variants.pluralSnake;\n\n\t\t// Parse --columns. Default to a single `title:text` column.\n\t\tconst colsFlag = flagList(ctx.flags, \"columns\");\n\t\tconst columns = colsFlag.length > 0 ? colsFlag : [\"title:text\"];\n\t\tconst columnLines = renderColumns(\n\t\t\tcolumns,\n\t\t\torm,\n\t\t\tctx.flags[\"dialect\"] as string | undefined,\n\t\t);\n\t\tconst prismaBlock = renderPrismaBlock(variants.pascal, columns);\n\n\t\tlet code: string;\n\t\tif (orm === \"drizzle\") {\n\t\t\tconst dialect =\n\t\t\t\t(ctx.flags[\"dialect\"] as string | undefined) ??\n\t\t\t\tctx.config.dialect ??\n\t\t\t\t\"bun-sqlite\";\n\t\t\tif (!isValidDialect(dialect)) {\n\t\t\t\tlogger.error(\n\t\t\t\t\t`Unsupported drizzle dialect: ${dialect}. Allowed: postgres, mysql, sqlite, bun-sqlite, d1.`,\n\t\t\t\t);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\tcode = renderDrizzleDialect(dialect);\n\t\t\tcode = render(code, {\n\t\t\t\tname: variants.pascal,\n\t\t\t\tcamel: variants.camel,\n\t\t\t\tkebab: variants.kebab,\n\t\t\t\tsnake: variants.snake,\n\t\t\t\ttableName,\n\t\t\t\tcolumns: columnLines,\n\t\t\t\tprismaBlock,\n\t\t\t});\n\t\t} else {\n\t\t\tconst tpl = templates.model[orm as \"prisma\" | \"kysely\"];\n\t\t\tcode = render(tpl, {\n\t\t\t\tname: variants.pascal,\n\t\t\t\tcamel: variants.camel,\n\t\t\t\tkebab: variants.kebab,\n\t\t\t\tsnake: variants.snake,\n\t\t\t\ttableName,\n\t\t\t\tcolumns: columnLines,\n\t\t\t\tprismaBlock,\n\t\t\t});\n\t\t}\n\n\t\tconst out = resolve(\n\t\t\tctx.cwd,\n\t\t\tctx.config.paths.models,\n\t\t\t`${variants.kebab}.model.ts`,\n\t\t);\n\n\t\twriteFile(out, code);\n\t\tlogger.success(`created ${out}`);\n\t\tlogger.finger(\n\t\t\t`run \\`nx make:migration create_${tableName}_table\\` to scaffold a migration.`,\n\t\t);\n\t\tif (orm === \"drizzle\") {\n\t\t\tlogger.finger(\n\t\t\t\t`run \\`nx migrate\\` to apply pending migrations to the database.`,\n\t\t\t);\n\t\t}\n\t\treturn 0;\n\t},\n};\n\nfunction isValidDialect(\n\td: string,\n): d is \"postgres\" | \"mysql\" | \"sqlite\" | \"bun-sqlite\" | \"d1\" {\n\treturn [\"postgres\", \"mysql\", \"sqlite\", \"bun-sqlite\", \"d1\"].includes(d);\n}\n\nfunction renderColumns(\n\tcols: string[],\n\torm: \"drizzle\" | \"prisma\" | \"kysely\",\n\tdialect: string | undefined,\n): string {\n\t// `cols` may contain comma-separated entries (e.g. `--columns \"a:text,b:int\"`).\n\tconst flat = cols\n\t\t.flatMap((c) => c.split(\",\"))\n\t\t.map((c) => c.trim())\n\t\t.filter(Boolean);\n\treturn flat\n\t\t.map((col) => {\n\t\t\tconst [colName, colType = \"text\"] = col.split(\":\");\n\t\t\tconst tsName = toCamel(colName);\n\t\t\tswitch (orm) {\n\t\t\t\tcase \"drizzle\": {\n\t\t\t\t\tconst d = (dialect ?? \"bun-sqlite\") as\n\t\t\t\t\t\t| \"postgres\"\n\t\t\t\t\t\t| \"mysql\"\n\t\t\t\t\t\t| \"sqlite\"\n\t\t\t\t\t\t| \"bun-sqlite\"\n\t\t\t\t\t\t| \"d1\";\n\t\t\t\t\tconst helper = mapDrizzleType(d, colType);\n\t\t\t\t\treturn ` ${tsName}: ${helper}('${colName}'),`;\n\t\t\t\t}\n\t\t\t\tcase \"kysely\": {\n\t\t\t\t\tconst tsType = colType === \"text\" ? \"string\" : colType;\n\t\t\t\t\treturn ` ${colName}: ${tsType},`;\n\t\t\t\t}\n\t\t\t\tcase \"prisma\":\n\t\t\t\tdefault:\n\t\t\t\t\treturn ` ${colName} ${colType},`;\n\t\t\t}\n\t\t})\n\t\t.join(\"\\n\");\n}\n\nfunction renderPrismaBlock(modelName: string, cols: string[]): string {\n\tconst fieldLines = cols\n\t\t.map((c) => {\n\t\t\tconst [name, type = \"String\"] = c.split(\":\");\n\t\t\treturn ` ${name.padEnd(16)} ${capitalize(type)}`;\n\t\t})\n\t\t.join(\"\\n\");\n\treturn ` * model ${modelName} {\n * id Int @id @default(autoincrement())\n${fieldLines\n\t.split(\"\\n\")\n\t.map((l) => ` *${l}`)\n\t.join(\"\\n\")}\n * createdAt DateTime @default(now())\n * updatedAt DateTime @updatedAt\n * }`;\n}\n\nfunction toCamel(s: string): string {\n\treturn s.replace(/_([a-z])/g, (_, c) => c.toUpperCase());\n}\n\nfunction capitalize(s: string): string {\n\treturn s.charAt(0).toUpperCase() + s.slice(1);\n}\n\nexport default makeModelCommand;\n",
|
|
42
43
|
"/**\n * `nx make:module <Name>` — generate a feature module.\n *\n * A module aggregates a controller, service, and (optionally) a\n * repository under a single `@Module({ controllers, providers, exports })`\n * class.\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport {\n\tflagBool,\n\tlogger,\n\tnameVariants,\n\trender,\n\twriteFile,\n} from \"../core/index.js\";\nimport { templates } from \"../templates/index.js\";\n\nexport const makeModuleCommand: Command = {\n\tname: \"make:module\",\n\taliases: [\"mm\", \"make-module\"],\n\tsummary: \"Generate a feature module\",\n\tdescription:\n\t\t\"Generates a @Module() class that wires a controller + service (+ optional repository) under app/modules/.\",\n\texamples: [\"nx make:module User\", \"nx make:module User --no-controller\"],\n\tflags: [\n\t\t{\n\t\t\tname: \"no-controller\",\n\t\t\tdescription: \"Skip including the controller in the module\",\n\t\t},\n\t\t{ name: \"no-service\", description: \"Skip including the service\" },\n\t\t{ name: \"no-repo\", description: \"Skip including the repository\" },\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst name = ctx.positional[0];\n\t\tif (!name) {\n\t\t\tlogger.error(\"Usage: nx make:module <Name>\");\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst variants = nameVariants(name);\n\t\tconst hasController = !flagBool(ctx.flags, \"no-controller\", false);\n\t\tconst hasService = !flagBool(ctx.flags, \"no-service\", false);\n\t\tconst hasRepo =\n\t\t\t!flagBool(ctx.flags, \"no-repo\", false) && ctx.config.orm !== \"none\";\n\n\t\tconst code = render(templates.module, {\n\t\t\tname: variants.pascal,\n\t\t\tkebab: variants.kebab,\n\t\t\tcontroller: `${variants.pascal}Controller`,\n\t\t\tservice: `${variants.pascal}Service`,\n\t\t\trepository: `${variants.pascal}Repository`,\n\t\t\thasService,\n\t\t\thasRepo,\n\t\t});\n\n\t\tconst out = resolve(\n\t\t\tctx.cwd,\n\t\t\tctx.config.paths.modules,\n\t\t\t`${variants.kebab}.module.ts`,\n\t\t);\n\n\t\twriteFile(out, code);\n\t\tlogger.success(`created ${out}`);\n\t\tlogger.finger(`add ${variants.pascal}Module to AppModule.imports.`);\n\t\treturn 0;\n\t},\n};\n\nexport default makeModuleCommand;\n",
|
|
43
44
|
"/**\n * `nx make:queue <Name>` — scaffold a queue worker.\n *\n * Generates:\n * - app/queue/workers/<name>.worker.ts — @OnQueueReady handler class\n * - app/queue/jobs/<name>.job.ts — a `enqueue*` helper for callers\n * - prints wiring instructions\n *\n * Usage:\n * nx make:queue send-welcome-email --backend bullmq\n * nx make:queue process-image --backend cloudflare\n * nx make:queue notify --backend memory\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport {\n\tflagBool,\n\tlogger,\n\tnameVariants,\n\trender,\n\twriteFile,\n} from \"../core/index.js\";\n\nconst WORKER_TEMPLATE = `\nimport { Inject, Injectable } from '@nexusts/core';\nimport { QueueService, OnQueueReady } from '@nexusts/queue';\n\n/**\n * {{ name }} worker — generated by \\`nx make:queue {{ name }}\\`.\n *\n * Registers a handler for the \\`{{ name }}\\` job name on boot.\n */\n@Injectable()\nexport class {{ name }}Worker {\n constructor(@Inject(QueueService.TOKEN) private readonly queue: QueueService) {}\n\n @OnQueueReady()\n async register(): Promise<void> {\n await this.queue.process('{{ name }}', async (data, ctx) => {\n ctx.prefix; // → \"[queue:{{ name }}]\"\n try {\n await this.handle(data as {{ name }}Data);\n return { status: 'completed' };\n } catch (err) {\n return {\n status: 'failed',\n error: err instanceof Error ? err : new Error(String(err)),\n willRetry: ctx.attempts < 3,\n };\n }\n });\n }\n\n /**\n * Replace this body with your actual worker logic.\n */\n async handle(data: {{ name }}Data): Promise<void> {\n // TODO: implement\n }\n}\n\n/**\n * Typed payload for the \\`{{ name }}\\` job.\n */\nexport interface {{ name }}Data {\n // TODO: define fields\n [key: string]: unknown;\n}\n`.trimStart();\n\nconst JOB_HELPER_TEMPLATE = `\nimport { Inject, Injectable } from '@nexusts/core';\nimport { QueueService } from '@nexusts/queue';\nimport type { {{ name }}Data } from './{{ kebab }}.worker.js';\n\n/**\n * Helper for enqueuing \\`{{ name }}\\` jobs from controllers / services.\n * Generated by \\`nx make:queue {{ name }}\\`.\n */\n@Injectable()\nexport class {{ name }}Job {\n constructor(@Inject(QueueService.TOKEN) private readonly queue: QueueService) {}\n\n /** Enqueue a single {{ name }} job. */\n async enqueue(data: {{ name }}Data, options?: {\n delaySeconds?: number;\n attempts?: number;\n }) {\n return this.queue.add('{{ name }}', data, options);\n }\n\n /** Enqueue many at once. */\n async enqueueBatch(items: {{ name }}Data[]) {\n return this.queue.addBatch(\n items.map((data) => ({ name: '{{ name }}', data })),\n );\n }\n}\n`.trimStart();\n\nconst WIRE_HINT = `\nimport { QueueService } from '@nexusts/queue';\nimport { %%NAME%%Job } from './queue/jobs/%%KEBAB%%.job.js';\nimport { %%NAME%%Worker } from './queue/workers/%%KEBAB%%.worker.js';\n\n@Module({\n providers: [%%NAME%%Job, %%NAME%%Worker],\n})\nexport class QueueBindingsModule {}\n`.trim();\n\nexport const makeQueueCommand: Command = {\n\tname: \"make:queue\",\n\taliases: [\"mq\", \"make-queue\"],\n\tsummary: \"Scaffold a queue worker\",\n\tdescription:\n\t\t\"Generates a worker class + enqueue helper under app/queue/. The backend is read from nx.config.ts (or --backend).\",\n\texamples: [\n\t\t\"nx make:queue send-welcome-email\",\n\t\t\"nx make:queue process-image --backend cloudflare\",\n\t\t\"nx make:queue notify --backend memory\",\n\t],\n\tflags: [\n\t\t{\n\t\t\tname: \"backend\",\n\t\t\tdescription: \"Override backend (bullmq|cloudflare|memory)\",\n\t\t},\n\t\t{\n\t\t\tname: \"no-job\",\n\t\t\tdescription: \"Skip the enqueue helper, only generate the worker\",\n\t\t},\n\t\t{\n\t\t\tname: \"no-worker\",\n\t\t\tdescription: \"Skip the worker class, only generate the enqueue helper\",\n\t\t},\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst name = ctx.positional[0];\n\t\tif (!name) {\n\t\t\tlogger.error(\"Usage: nx make:queue <Name>\");\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst variants = nameVariants(name);\n\t\tconst backend =\n\t\t\t(ctx.flags[\"backend\"] as string | undefined) ??\n\t\t\tctx.config.queue?.backend ??\n\t\t\t\"memory\";\n\n\t\tif (![\"bullmq\", \"cloudflare\", \"memory\"].includes(backend)) {\n\t\t\tlogger.error(\n\t\t\t\t`Unknown backend: ${backend}. Allowed: bullmq, cloudflare, memory.`,\n\t\t\t);\n\t\t\treturn 1;\n\t\t}\n\n\t\tlogger.heading(`Scaffolding ${variants.pascal} (backend=${backend})`);\n\n\t\t// 1) Worker\n\t\tif (!flagBool(ctx.flags, \"no-worker\", false)) {\n\t\t\tconst code = render(WORKER_TEMPLATE, {\n\t\t\t\tname: variants.pascal,\n\t\t\t\tkebab: variants.kebab,\n\t\t\t});\n\t\t\tconst out = resolve(\n\t\t\t\tctx.cwd,\n\t\t\t\t\"app/queue/workers\",\n\t\t\t\t`${variants.kebab}.worker.ts`,\n\t\t\t);\n\t\t\tif (writeFile(out, code, { skipIfExists: true })) {\n\t\t\t\tlogger.success(`created ${out}`);\n\t\t\t} else {\n\t\t\t\tlogger.warn(`skipped (exists): ${out}`);\n\t\t\t}\n\t\t}\n\n\t\t// 2) Enqueue helper\n\t\tif (!flagBool(ctx.flags, \"no-job\", false)) {\n\t\t\tconst code = render(JOB_HELPER_TEMPLATE, {\n\t\t\t\tname: variants.pascal,\n\t\t\t\tkebab: variants.kebab,\n\t\t\t});\n\t\t\tconst out = resolve(\n\t\t\t\tctx.cwd,\n\t\t\t\t\"app/queue/jobs\",\n\t\t\t\t`${variants.kebab}.job.ts`,\n\t\t\t);\n\t\t\tif (writeFile(out, code, { skipIfExists: true })) {\n\t\t\t\tlogger.success(`created ${out}`);\n\t\t\t} else {\n\t\t\t\tlogger.warn(`skipped (exists): ${out}`);\n\t\t\t}\n\t\t}\n\n\t\tlogger.blank();\n\t\tlogger.heading(\"Next steps\");\n\t\tlogger.info(`1. Add QueueModule.forRoot() to your AppModule.imports:`);\n\t\tlogger.info(` QueueModule.forRoot({ backend: '${backend}', ... })`);\n\t\tlogger.info(`2. Wire the worker + helper as providers:`);\n\t\tlogger.info(\n\t\t\trender(WIRE_HINT, { name: variants.pascal, kebab: variants.kebab })\n\t\t\t\t.split(\"\\n\")\n\t\t\t\t.map((l) => \" \" + l)\n\t\t\t\t.join(\"\\n\"),\n\t\t);\n\t\tlogger.info(\n\t\t\t`3. Replace the TODO in ${variants.pascal}Worker.handle() with your logic.`,\n\t\t);\n\t\tlogger.blank();\n\n\t\treturn 0;\n\t},\n};\n\nexport default makeQueueCommand;\n",
|
|
44
|
-
"/**\n * `nx make:schedule <Name>` — scaffold a scheduled task class.\n *\n * Generates:\n * - app/schedule/tasks/<name>.task.ts\n * — an @Injectable class with example @Cron / @Interval /\n * @Timeout handlers\n *\n * Usage:\n * nx make:schedule HourlyCleanup\n * nx make:schedule DailyDigest --cron \"@daily\"\n * nx make:schedule Heartbeat --interval 30000\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { logger, nameVariants, render, writeFile } from \"../core/index.js\";\n\nconst TASK_TEMPLATE = `\nimport {
|
|
45
|
+
"/**\n * `nx make:schedule <Name>` — scaffold a scheduled task class.\n *\n * Generates:\n * - app/schedule/tasks/<name>.task.ts\n * — an @Injectable class with example @Cron / @Interval /\n * @Timeout handlers\n *\n * Usage:\n * nx make:schedule HourlyCleanup\n * nx make:schedule DailyDigest --cron \"@daily\"\n * nx make:schedule Heartbeat --interval 30000\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { logger, nameVariants, render, writeFile } from \"../core/index.js\";\n\nconst TASK_TEMPLATE = `\nimport { Injectable } from '@nexusts/core';\nimport { Cron, Interval, Timeout } from '@nexusts/schedule';\n\n/**\n * {{ name }} task — generated by \\`nx make:schedule {{ name }}\\`.\n *\n * Mark methods with \\`@Cron\\`, \\`@Interval\\`, or \\`@Timeout\\`.\n * Auto-detected at boot — no manual registration needed.\n */\n@Injectable()\nexport class {{ name }}Task {\n constructor() {}\n\n // TODO: add @Cron, @Interval, or @Timeout handlers below.\n\n // @Cron('0 * * * *') // every hour\n // async hourly() { /* ... */ }\n\n // @Interval(60_000) // every minute\n // async tick() { /* ... */ }\n\n // @Timeout(5_000) // 5s after boot\n // async startup() { /* ... */ }\n}\n`.trimStart();\n\nexport const makeScheduleCommand: Command = {\n\tname: \"make:schedule\",\n\taliases: [\"msk\", \"make-schedule\"],\n\tsummary: \"Scaffold a scheduled task class\",\n\tdescription:\n\t\t\"Generates an @Injectable task class with example @Cron / @Interval / @Timeout handlers under app/schedule/tasks/.\",\n\texamples: [\"nx make:schedule HourlyCleanup\", \"nx make:schedule DailyDigest\"],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst name = ctx.positional[0];\n\t\tif (!name) {\n\t\t\tlogger.error(\"Usage: nx make:schedule <Name>\");\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst variants = nameVariants(name);\n\t\tconst code = render(TASK_TEMPLATE, {\n\t\t\tname: variants.pascal,\n\t\t\tkebab: variants.kebab,\n\t\t});\n\t\tconst out = resolve(\n\t\t\tctx.cwd,\n\t\t\t\"app/schedule/tasks\",\n\t\t\t`${variants.kebab}.task.ts`,\n\t\t);\n\n\t\tif (writeFile(out, code, { skipIfExists: true })) {\n\t\t\tlogger.success(`created ${out}`);\n\t\t} else {\n\t\t\tlogger.warn(`skipped (exists): ${out}`);\n\t\t}\n\n\t\tlogger.blank();\n\t\tlogger.heading(\"Next steps\");\n\t\tlogger.info(\"1. Add @Cron / @Interval / @Timeout handlers to the class.\");\n\t\tlogger.info(\"2. Add the task class to your module's providers array.\");\n\t\tlogger.info(\" → Auto-detected at boot, no main.ts changes needed.\");\n\t\tlogger.blank();\n\n\t\treturn 0;\n\t},\n};\n\nexport default makeScheduleCommand;\n",
|
|
45
46
|
"/**\n * `nx make:service <Name>` — generate a service class.\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { logger, nameVariants, render, writeFile } from \"../core/index.js\";\nimport { templates } from \"../templates/index.js\";\n\nexport const makeServiceCommand: Command = {\n\tname: \"make:service\",\n\taliases: [\"ms\", \"make-service\"],\n\tsummary: \"Generate a service class\",\n\tdescription:\n\t\t\"Generates an @Injectable() service under app/services/. If the project's ORM is configured, the service constructor takes a repository.\",\n\texamples: [\"nx make:service User\", \"nx make:service Order --no-repo\"],\n\tflags: [\n\t\t{\n\t\t\tname: \"no-repo\",\n\t\t\tdescription: \"Skip injecting a repository (no ORM dependency)\",\n\t\t},\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst name = ctx.positional[0];\n\t\tif (!name) {\n\t\t\tlogger.error(\"Usage: nx make:service <Name>\");\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst variants = nameVariants(name);\n\t\tconst hasRepo = ctx.flags[\"no-repo\"] !== true && ctx.config.orm !== \"none\";\n\t\tconst repository = `${variants.pascal}Repository`;\n\t\tconst repositoryCamel = variants.camel + \"Repository\";\n\n\t\tconst code = render(templates.service, {\n\t\t\tname: variants.pascal,\n\t\t\tcamel: variants.camel,\n\t\t\tkebab: variants.kebab,\n\t\t\thasRepo,\n\t\t\trepository,\n\t\t\trepositoryCamel,\n\t\t});\n\n\t\tconst out = resolve(\n\t\t\tctx.cwd,\n\t\t\tctx.config.paths.services,\n\t\t\t`${variants.kebab}.service.ts`,\n\t\t);\n\n\t\twriteFile(out, code);\n\t\tlogger.success(`created ${out}`);\n\t\treturn 0;\n\t},\n};\n\nexport default makeServiceCommand;\n",
|
|
46
47
|
"/**\n * `nx make:session <Name>` — scaffold a session helper class.\n *\n * Generates:\n * - app/session/services/<name>.session.ts\n * — an @Injectable class with example session helpers\n *\n * Usage:\n * nx make:session Cart\n * nx make:session Flash --data \"message: string\"\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { logger, nameVariants, render, writeFile } from \"../core/index.js\";\n\nconst SESSION_TEMPLATE = `\nimport { Inject, Injectable } from '@nexusts/core';\nimport { SessionService } from '@nexusts/session';\nimport type { SessionRecord } from '@nexusts/session';\n\n/**\n * {{ name }} session helper — generated by \\`nx make:session {{ name }}\\`.\n *\n * Wraps SessionService with typed accessors for the {{ name }} session's\n * data. Use from controllers / services.\n */\n@Injectable()\nexport class {{ name }}Session {\n constructor(@Inject(SessionService.TOKEN) private readonly sessions: SessionService) {}\n\n /** Read the current session record (or null). */\n async getCurrent(sessionId: string | null | undefined) {\n if (!sessionId) return null;\n return this.sessions.read(sessionId);\n }\n\n /** Patch the {{ name }} session's data. */\n async update(sessionId: string, patch: {{ name }}DataPatch) {\n return this.sessions.update(sessionId, { dataPatch: patch });\n }\n\n /** Destroy the session (logout-everywhere equivalent). */\n async destroy(sessionId: string) {\n return this.sessions.destroy(sessionId, 'logout');\n }\n}\n\n/**\n * Typed payload for the {{ name }} session.\n *\n * TODO: define the fields below to match your feature.\n */\nexport interface {{ name }}Data {\n // userId?: string;\n // createdAt?: string;\n}\n\nexport type {{ name }}DataPatch = Partial<{{ name }}Data>;\n`.trimStart();\n\nexport const makeSessionCommand: Command = {\n\tname: \"make:session\",\n\taliases: [\"msess\", \"make-session\"],\n\tsummary: \"Scaffold a session helper class\",\n\tdescription:\n\t\t\"Generates an @Injectable session helper under app/session/services/.\",\n\texamples: [\"nx make:session Cart\", \"nx make:session Flash\"],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst name = ctx.positional[0];\n\t\tif (!name) {\n\t\t\tlogger.error(\"Usage: nx make:session <Name>\");\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst variants = nameVariants(name);\n\t\tconst code = render(SESSION_TEMPLATE, {\n\t\t\tname: variants.pascal,\n\t\t\tkebab: variants.kebab,\n\t\t});\n\t\tconst out = resolve(\n\t\t\tctx.cwd,\n\t\t\t\"app/session/services\",\n\t\t\t`${variants.kebab}.session.ts`,\n\t\t);\n\n\t\tif (writeFile(out, code, { skipIfExists: true })) {\n\t\t\tlogger.success(`created ${out}`);\n\t\t} else {\n\t\t\tlogger.warn(`skipped (exists): ${out}`);\n\t\t}\n\n\t\tlogger.blank();\n\t\tlogger.heading(\"Next steps\");\n\t\tlogger.info(\"1. Define the typed payload (replace the TODO interface).\");\n\t\tlogger.info(`2. Inject {{name}}Session in your controllers / services.`);\n\t\tlogger.info(\"3. Bind it in the module's providers array.\");\n\t\tlogger.blank();\n\n\t\treturn 0;\n\t},\n};\n\nexport default makeSessionCommand;\n",
|
|
47
48
|
"/**\n * `nx make:validator <Name>` — generate a Zod validation schema (DTO).\n */\n\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { logger, nameVariants, render, writeFile } from \"../core/index.js\";\nimport { templates } from \"../templates/index.js\";\n\nexport const makeValidatorCommand: Command = {\n\tname: \"make:validator\",\n\taliases: [\"mv\", \"make-validator\"],\n\tsummary: \"Generate a Zod validation schema\",\n\tdescription: \"Generates a Zod schema and inferred type under app/dto/.\",\n\texamples: [\"nx make:validator User\", \"nx make:validator CreateOrder\"],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst name = ctx.positional[0];\n\t\tif (!name) {\n\t\t\tlogger.error(\"Usage: nx make:validator <Name>\");\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst variants = nameVariants(name);\n\t\tconst code = render(templates.validator, {\n\t\t\tname: variants.pascal,\n\t\t});\n\n\t\tconst out = resolve(\n\t\t\tctx.cwd,\n\t\t\tctx.config.paths.dto,\n\t\t\t`${variants.kebab}.dto.ts`,\n\t\t);\n\n\t\twriteFile(out, code);\n\t\tlogger.success(`created ${out}`);\n\t\treturn 0;\n\t},\n};\n\nexport default makeValidatorCommand;\n",
|
|
@@ -50,12 +51,12 @@
|
|
|
50
51
|
"/**\n * `nx db:seed` — run database seed scripts.\n *\n * Seeds are TypeScript (or JavaScript) files that populate the\n * database with fixture data. The command:\n *\n * 1. Scans the configured `seeds` directory (default\n * `./db/seeds` — overridable via `paths.seeds` in\n * `nx.config.ts`).\n * 2. Loads every `*.ts` (or `*.js` / `*.mjs`) file in\n * alphabetical order.\n * 3. Invokes the default export as an async function, passing\n * a `SeedContext` that exposes the active DrizzleService,\n * logger, and a few helpers (see below).\n *\n * Examples:\n * nx db:seed # run all seeds in db/seeds/\n * nx db:seed --file 01_users # run a single seed\n * nx db:seed --reset # clear all tables first (DESTRUCTIVE)\n * nx db:seed --create users # scaffold a new seed file\n * nx db:seed --folder ./seeds # custom folder\n *\n * Seed file example:\n *\n * // db/seeds/01_users.ts\n * import type { SeedContext } from \"@nexusts/cli\";\n *\n * export default async function seed(ctx: SeedContext) {\n * await ctx.db.insert(users).values([\n * { email: \"alice@example.com\" },\n * { email: \"bob@example.com\" },\n * ]);\n * ctx.logger.info(`Inserted 2 users`);\n * }\n *\n * The \"01_users.ts\" naming convention (zero-padded numbers as\n * prefixes) is recommended but not required — alphabetical\n * ordering is the only rule.\n */\n\nimport { spawn } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport { mkdir, readdir, readFile, writeFile, unlink } from \"node:fs/promises\";\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { logger } from \"../core/index.js\";\n\nconst SEED_TEMPLATE = `/**\n * Seed: {name}\n *\n * Run with: nx db:seed\n *\n * The default export receives a \\`SeedContext\\` with:\n * - \\`ctx.db\\` : the active DrizzleService\n * - \\`ctx.logger\\` : the framework logger\n * - \\`ctx.dialect\\` : the active Drizzle dialect\n * - \\`ctx.truncate(table)\\` : helper to clear a table\n *\n * Use ctx.db.insert(table).values([...]) etc. for inserts.\n */\n\nimport type { SeedContext } from \"@nexusts/cli\";\n\nexport default async function seed(ctx: SeedContext): Promise<void> {\n\\tctx.logger.info(\"Running seed: {name}\");\n\\t// Example:\n\\t// await ctx.db.insert(usersTable).values([\n\\t// { email: \"alice@example.com\", name: \"Alice\" },\n\\t// { email: \"bob@example.com\", name: \"Bob\" },\n\\t// ]);\n}\n`;\n\nexport const dbSeedCommand: Command = {\n\tname: \"db:seed\",\n\taliases: [\"db:s\", \"seed\"],\n\tsummary: \"Run database seed scripts\",\n\tdescription:\n\t\t\"Loads and runs every seed file in the configured seeds folder in alphabetical order. Use --file to run a single seed, --create to scaffold a new one, --reset to truncate first (DESTRUCTIVE).\",\n\texamples: [\n\t\t\"nx db:seed\",\n\t\t\"nx db:seed --file 01_users\",\n\t\t\"nx db:seed --create users\",\n\t\t\"nx db:seed --reset\",\n\t\t\"nx db:seed --folder ./seeds\",\n\t],\n\tflags: [\n\t\t{\n\t\t\tname: \"file\",\n\t\t\tdescription:\n\t\t\t\t\"Run a single seed file by name (without .ts extension, fuzzy match).\",\n\t\t},\n\t\t{\n\t\t\tname: \"create\",\n\t\t\tdescription:\n\t\t\t\t\"Scaffold a new seed file with a default template. Provide a name (e.g. `users`).\",\n\t\t},\n\t\t{\n\t\t\tname: \"reset\",\n\t\t\tdescription:\n\t\t\t\t\"DESTRUCTIVE: Truncate every table in the schema before running seeds.\",\n\t\t},\n\t\t{\n\t\t\tname: \"folder\",\n\t\t\tdescription:\n\t\t\t\t\"Override seeds folder. Default: ./db/seeds (or nx.config.ts paths.seeds).\",\n\t\t},\n\t\t{\n\t\t\tname: \"dialect\",\n\t\t\tdescription:\n\t\t\t\t\"Drizzle dialect (postgres|mysql|sqlite|bun-sqlite|d1). Default: from nx.config.ts or bun-sqlite.\",\n\t\t},\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst folder = resolve(\n\t\t\tctx.cwd,\n\t\t\t(ctx.flags[\"folder\"] as string | undefined) ??\n\t\t\t\t(ctx.config.paths as { seeds?: string })?.seeds ??\n\t\t\t\t\"db/seeds\",\n\t\t);\n\t\tconst dialect =\n\t\t\t(ctx.flags[\"dialect\"] as string | undefined) ??\n\t\t\tctx.config.dialect ??\n\t\t\t\"bun-sqlite\";\n\t\tconst createName = ctx.flags[\"create\"] as string | undefined;\n\t\tconst fileName = ctx.flags[\"file\"] as string | undefined;\n\t\tconst reset = Boolean(ctx.flags[\"reset\"]);\n\n\t\t// --create scaffolds a new seed file. Doesn't run anything else.\n\t\tif (createName) {\n\t\t\treturn await createSeedFile(folder, createName);\n\t\t}\n\n\t\tif (!existsSync(folder)) {\n\t\t\t// No seeds folder yet. Create an empty one with a README.\n\t\t\tlogger.info(`creating empty seeds folder at ${folder}`);\n\t\t\tawait mkdir(folder, { recursive: true });\n\t\t\tawait writeFile(\n\t\t\t\tresolve(folder, \"_README.ts\"),\n\t\t\t\t`// Seed files go here. Run with: nx db:seed\\n`,\n\t\t\t\t\"utf-8\",\n\t\t\t);\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst files = await collectSeedFiles(folder);\n\n\t\t// If --file was given but matches nothing, fail fast.\n\t\tif (fileName) {\n\t\t\tconst matched = files.filter((f) =>\n\t\t\t\tf.toLowerCase().includes(fileName.toLowerCase()),\n\t\t\t);\n\t\t\tif (matched.length === 0) {\n\t\t\t\tlogger.error(`no seed file matching \"${fileName}\" in ${folder}`);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t} else if (files.length === 0) {\n\t\t\tlogger.warn(`no seed files found in ${folder}`);\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst target = fileName\n\t\t\t? files.filter((f) => f.toLowerCase().includes(fileName.toLowerCase()))\n\t\t\t: files;\n\n\t\tconst url = readEnvUrl(dialect);\n\t\tif (!url) {\n\t\t\tlogger.error(\n\t\t\t\t`could not read ${dialect} URL from environment. Set DATABASE_URL or NEXUS_DB_URL.`,\n\t\t\t);\n\t\t\treturn 1;\n\t\t}\n\n\t\tif (reset) {\n\t\t\tlogger.warn(\n\t\t\t\t\"--reset is set: truncating every table in the schema before running seeds.\",\n\t\t\t);\n\t\t}\n\n\t\t// Generate an in-process runner script that:\n\t\t// 1. Opens the DrizzleService.\n\t\t// 2. Optionally truncates every table.\n\t\t// 3. Imports each seed file and invokes its default export.\n\t\tconst seedImports = target\n\t\t\t.map((f, i) => `import seed_${i} from ${JSON.stringify(resolve(folder, f))};`)\n\t\t\t.join(\"\\n\");\n\t\tconst seedCalls = target\n\t\t\t.map(\n\t\t\t\t(_, i) =>\n\t\t\t\t\t` await seed_${i}({ db, logger, dialect, truncate: (t) => db.truncate(t) });`,\n\t\t\t)\n\t\t\t.join(\"\\n\");\n\n\t\tconst script = `\nimport 'reflect-metadata';\nimport { DrizzleService } from '${relativeImport(ctx.cwd, \"src/drizzle/index.js\")}';\nimport { logger as frameworkLogger } from '${relativeImport(ctx.cwd, \"src/logger/index.js\")}';\n\nconst url = ${JSON.stringify(url)};\nconst dialect = ${JSON.stringify(dialect)};\nconst reset = ${JSON.stringify(reset)};\n\nconst cfg = { dialect, connection: { url }, schema: dialect === 'postgres' ? 'public' : undefined };\nconst db = new DrizzleService(cfg);\nawait db.open();\nconst logger = frameworkLogger;\n\nif (reset) {\n const tables = await db.allTables();\n for (const t of tables) {\n await db.truncate(t);\n }\n logger.info(\\`Truncated \\${tables.length} table(s)\\`);\n}\n\n${seedImports}\n\n${seedCalls}\n\nawait db.close();\nlogger.info(\\`Seeds complete (\\${${target.length}} file(s))\\`);\n`;\n\t\tconst tmpFile = resolve(ctx.cwd, \".nx-db-seed.mjs\");\n\t\tawait writeFile(tmpFile, script, \"utf-8\");\n\t\ttry {\n\t\t\tconst code = await new Promise<number>((resP) => {\n\t\t\t\tconst child = spawn(\"bun\", [tmpFile], {\n\t\t\t\t\tcwd: ctx.cwd,\n\t\t\t\t\tstdio: \"inherit\",\n\t\t\t\t\tshell: process.platform === \"win32\",\n\t\t\t\t});\n\t\t\t\tchild.on(\"exit\", (c) => resP(c ?? 0));\n\t\t\t\tchild.on(\"error\", () => resP(1));\n\t\t\t});\n\t\t\treturn code;\n\t\t} finally {\n\t\t\tawait unlink(tmpFile).catch(() => {});\n\t\t}\n\t},\n};\n\n/* ------------------------------------------------------------------ *\n * Helpers\n * ------------------------------------------------------------------ */\n\nasync function collectSeedFiles(folder: string): Promise<string[]> {\n\tconst all = await readdir(folder, { withFileTypes: true });\n\tconst out: string[] = [];\n\tfor (const e of all) {\n\t\tif (!e.isFile()) continue;\n\t\tif (e.name.startsWith(\"_\")) continue; // _README.ts etc.\n\t\tif (!/\\.(ts|js|mjs|cjs)$/.test(e.name)) continue;\n\t\tout.push(e.name);\n\t}\n\tout.sort();\n\treturn out;\n}\n\nasync function createSeedFile(\n\tfolder: string,\n\tname: string,\n): Promise<number> {\n\tif (!/^[a-z0-9_-]+$/i.test(name)) {\n\t\tlogger.error(\n\t\t\t`invalid seed name \"${name}\" — use letters, numbers, dash, underscore.`,\n\t\t);\n\t\treturn 1;\n\t}\n\tif (!existsSync(folder)) await mkdir(folder, { recursive: true });\n\n\t// Find a non-clobbering filename\n\tlet candidate = `${name}.ts`;\n\tlet i = 1;\n\twhile (existsSync(resolve(folder, candidate))) {\n\t\tcandidate = `${name}_${i}.ts`;\n\t\ti++;\n\t}\n\tconst path = resolve(folder, candidate);\n\tconst body = SEED_TEMPLATE.replace(/\\{name\\}/g, name);\n\tawait writeFile(path, body, \"utf-8\");\n\tlogger.info(`created ${path}`);\n\treturn 0;\n}\n\nfunction readEnvUrl(dialect: string): string | null {\n\tconst url =\n\t\tprocess.env[\"DATABASE_URL\"] ??\n\t\tprocess.env[\"NEXUS_DB_URL\"] ??\n\t\t(dialect === \"postgres\"\n\t\t\t? process.env[\"POSTGRES_URL\"]\n\t\t\t: dialect === \"mysql\"\n\t\t\t\t? process.env[\"MYSQL_URL\"]\n\t\t\t\t: dialect.includes(\"sqlite\")\n\t\t\t\t\t? process.env[\"SQLITE_FILENAME\"]\n\t\t\t\t\t: null);\n\treturn url ?? null;\n}\n\nfunction relativeImport(cwd: string, target: string): string {\n\tconst abs = resolve(cwd, target);\n\tlet rel = abs;\n\tif (rel.startsWith(cwd)) rel = rel.slice(cwd.length);\n\tif (rel.startsWith(\"/\")) rel = rel.slice(1);\n\tif (!rel.startsWith(\".\")) rel = \"./\" + rel;\n\treturn rel;\n}\n\nexport default dbSeedCommand;\n",
|
|
51
52
|
"/**\n * `nx new <name>` — scaffold a new project.\n *\n * Creates a fresh directory with `nx.config.ts`, `package.json`,\n * `tsconfig.json`, `app/main.ts`, and a README. Useful as a\n * starting point for kicking off a new app without `bun create`.\n *\n * This is intentionally minimal — it does not run `bun install`. After\n * generation, the user runs `bun install` themselves.\n */\n\nimport { existsSync, mkdirSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { flagBool, logger, render, select } from \"../core/index.js\";\nimport { templates } from \"../templates/index.js\";\n\nexport const newCommand: Command = {\n\tname: \"new\",\n\taliases: [\"n\"],\n\tsummary: \"Create a new Nexus project\",\n\tdescription:\n\t\t\"Generates a new project directory with nx.config.ts, tsconfig, package.json, and a starter app/main.ts.\",\n\texamples: [\n\t\t\"nx new my-app\",\n\t\t\"nx new my-app --style nest --view rendu --orm drizzle --db bun-sqlite\",\n\t],\n\tflags: [\n\t\t{\n\t\t\tname: \"style\",\n\t\t\tdescription: \"Routing style (nest|adonis|functional|mixed)\",\n\t\t},\n\t\t{ name: \"view\", description: \"View engine (rendu|edge|eta|inertia|none)\" },\n\t\t{ name: \"orm\", description: \"ORM driver (drizzle|prisma|kysely|none)\" },\n\t\t{\n\t\t\tname: \"db\",\n\t\t\tdescription:\n\t\t\t\t\"Database driver (bun-sqlite|node-sqlite|libsql|postgres|mysql|none)\",\n\t\t},\n\t\t{\n\t\t\tname: \"frontend\",\n\t\t\tdescription: \"Inertia frontend (react|vue|svelte|solid)\",\n\t\t},\n\t\t{ name: \"no-ssr\", description: \"Disable Inertia SSR\" },\n\t\t{ name: \"no-interaction\", description: \"Disable interactive prompts\" },\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst name = ctx.positional[0];\n\t\tif (!name) {\n\t\t\tlogger.error(\"Usage: nx new <project-name>\");\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst interactive = !flagBool(ctx.flags, \"no-interaction\", false);\n\t\tconst target = resolve(ctx.cwd, name);\n\n\t\tif (existsSync(target)) {\n\t\t\tlogger.error(`Directory already exists: ${target}`);\n\t\t\treturn 1;\n\t\t}\n\n\t\tconst routing =\n\t\t\t(ctx.flags[\"style\"] as string | undefined) ??\n\t\t\t(await select(\"Routing style\", [\"nest\", \"adonis\", \"functional\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"nest\",\n\t\t\t}));\n\n\t\tconst view =\n\t\t\t(ctx.flags[\"view\"] as string | undefined) ??\n\t\t\t(await select(\"View engine\", [\"rendu\", \"edge\", \"eta\", \"inertia\", \"none\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"rendu\",\n\t\t\t}));\n\n\t\tconst orm =\n\t\t\t(ctx.flags[\"orm\"] as string | undefined) ??\n\t\t\t(await select(\"ORM driver\", [\"drizzle\", \"prisma\", \"kysely\", \"none\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"drizzle\",\n\t\t\t}));\n\n\t\tconst db =\n\t\t\t(ctx.flags[\"db\"] as string | undefined) ??\n\t\t\t(await select(\n\t\t\t\t\"Database driver\",\n\t\t\t\t[\"bun-sqlite\", \"node-sqlite\", \"libsql\", \"postgres\", \"mysql\", \"none\"],\n\t\t\t\t{\n\t\t\t\t\tinteractive,\n\t\t\t\t\tdefault: \"bun-sqlite\",\n\t\t\t\t},\n\t\t\t));\n\n\t\tconst frontend =\n\t\t\t(ctx.flags[\"frontend\"] as string | undefined) ??\n\t\t\t(await select(\"Inertia frontend\", [\"react\", \"vue\", \"svelte\", \"solid\"], {\n\t\t\t\tinteractive,\n\t\t\t\tdefault: \"react\",\n\t\t\t}));\n\n\t\tconst ssr = !flagBool(ctx.flags, \"no-ssr\", false);\n\n\t\tmkdirSync(resolve(target, \"app\"), { recursive: true });\n\t\tif (view !== \"none\") {\n\t\t\tmkdirSync(resolve(target, \"resources/views\"), { recursive: true });\n\t\t}\n\t\tmkdirSync(resolve(target, \"public\"), { recursive: true });\n\n\t\twriteFileSync(resolve(target, \"public/.gitkeep\"), \"\");\n\n\t\tif (view !== \"none\") {\n\t\t\twriteFileSync(\n\t\t\t\tresolve(target, \"resources/views/welcome.html\"),\n\t\t\t\t`<h1>Welcome to ${name}</h1>\\n<p>This is a sample Rendu template.</p>\\n<p>Founded <?= year ?>.</p>\\n`,\n\t\t\t);\n\t\t}\n\n\t\twriteFileSync(resolve(target, \".env\"), generateEnvFile());\n\t\twriteFileSync(resolve(target, \".env.local\"), generateEnvLocalFile());\n\t\twriteFileSync(resolve(target, \".gitignore\"), generateGitIgnore());\n\n\t\tconst code = render(templates.project[\"nx.config.ts\"], {\n\t\t\trouting,\n\t\t\tview,\n\t\t\tviewPaths: view === \"none\" ? \"\" : \"resources/views\",\n\t\t\torm,\n\t\t\tdbDriver: db,\n\t\t\tdbUrl: db === \"bun-sqlite\" || db === \"node-sqlite\" ? \"app.db\" : \"\",\n\t\t\tinertiaFrontend: frontend,\n\t\t\tinertiaSSR: ssr,\n\t\t\tinertiaVersion: \"1.0.0\",\n\t\t});\n\t\twriteFileSync(resolve(target, \"nx.config.ts\"), code);\n\n\t\tconst deps: Record<string, string> = {\n\t\t\t\"@nexusts/core\": \"*\",\n\t\t\t\"reflect-metadata\": \"^0.2.2\",\n\t\t\thono: \"^4.6.0\",\n\t\t\tzod: \"^3.23.8\",\n\t\t};\n\t\tif (orm === \"drizzle\") {\n\t\t\tdeps[\"@nexusts/drizzle\"] = \"*\";\n\t\t\tdeps[\"drizzle-orm\"] = \"^0.45.0\";\n\t\t}\n\t\tif (view !== \"none\") {\n\t\t\tdeps[\"@nexusts/static\"] = \"*\";\n\t\t}\n\t\twriteFileSync(\n\t\t\tresolve(target, \"package.json\"),\n\t\t\tJSON.stringify(\n\t\t\t\t{\n\t\t\t\t\tname,\n\t\t\t\t\tversion: \"0.1.0\",\n\t\t\t\t\ttype: \"module\",\n\t\t\t\t\tscripts: {\n\t\t\t\t\t\tdev: \"bun --hot app/main.ts\",\n\t\t\t\t\t\tbuild: \"bun run build.ts\",\n\t\t\t\t\t\tstart: \"bun app/main.ts\",\n\t\t\t\t\t\ttest: \"vitest\",\n\t\t\t\t\t\tnx: \"nx\",\n\t\t\t\t\t},\n\t\t\t\t\tdependencies: deps,\n\t\t\t\t},\n\t\t\t\tnull,\n\t\t\t\t2,\n\t\t\t),\n\t\t);\n\n\t\twriteFileSync(\n\t\t\tresolve(target, \"tsconfig.json\"),\n\t\t\t`{\n \"compilerOptions\": {\n \"target\": \"ES2022\",\n \"module\": \"ESNext\",\n \"moduleResolution\": \"bundler\",\n \"experimentalDecorators\": true,\n \"emitDecoratorMetadata\": true,\n \"strict\": true,\n \"esModuleInterop\": true,\n \"skipLibCheck\": true,\n \"types\": [\"bun-types\"]\n },\n \"include\": [\"app/**/*.ts\", \"nx.config.ts\"]\n}\n`,\n\t\t);\n\n\t\tconst hasView = view !== \"none\";\n\t\tconst staticImport = hasView\n\t\t\t? `import { StaticModule } from '@nexusts/static';\\nconst staticMiddleware = StaticModule.mount({ root: './public', prefix: '/static' });\\n`\n\t\t\t: '';\n\t\tconst staticOption = hasView ? '\\n middleware: [staticMiddleware],' : '';\n\t\twriteFileSync(\n\t\t\tresolve(target, \"app/main.ts\"),\n\t\t\t`import 'reflect-metadata';\nimport { Application } from '@nexusts/core';\n${staticImport}import { AppModule } from './app.module.js';\n\nconst app = new Application(AppModule, {\n logging: true,\n port: Number(process.env['PORT'] ?? 3000),${staticOption}\n});\n\nawait app.listen();\nconsole.log('[nexus] Listening on http://localhost:' + (process.env['PORT'] ?? 3000));\n`,\n\t\t);\n\n\t\tconst ormImport = orm === \"drizzle\"\n\t\t\t? `import { DrizzleModule } from '@nexusts/drizzle';\\n`\n\t\t\t: '';\n\t\tconst forRootDialect = db === 'bun-sqlite' ? 'bun-sqlite' : 'sqlite';\n\t\tconst ormBlock = orm === \"drizzle\"\n\t\t\t? ` DrizzleModule.forRoot({\\n dialect: '${forRootDialect}',\\n connection: { filename: 'app.db' },\\n logging: true,\\n })`\n\t\t\t: '';\n\t\twriteFileSync(\n\t\t\tresolve(target, \"app/app.module.ts\"),\n\t\t\t`${ormImport}import { Module } from '@nexusts/core';\nimport { HomeController } from './controllers/home.controller.js';\n\n@Module({\n imports: [${orm === \"drizzle\" ? `\\n${ormBlock},\\n` : ''} ],\n controllers: [HomeController],\n})\nexport class AppModule {}\n`,\n\t\t);\n\n\t\tmkdirSync(resolve(target, \"app/controllers\"), { recursive: true });\n\t\tconst homeViewReturn = view !== \"none\"\n\t\t\t? `{\\n view: 'welcome.html',\\n data: { year: new Date().getFullYear() },\\n }`\n\t\t\t: `{ status: 200, body: { message: 'Hello from NexusTS!' } }`;\n\t\twriteFileSync(\n\t\t\tresolve(target, \"app/controllers/home.controller.ts\"),\n\t\t\t`import { Controller, Get } from '@nexusts/core';\n\n@Controller('/')\nexport class HomeController {\n @Get('/')\n index() {\n return ${homeViewReturn};\n }\n}\n`,\n\t\t);\n\n\t\twriteFileSync(\n\t\t\tresolve(target, \"README.md\"),\n\t\t\t`# ${name}\n\nA new Nexus project.\n\n## Run\n\n\\`\\`\\`bash\nbun install\nbun run dev\n\\`\\`\\`\n\n## Scaffolding\n\n\\`\\`\\`bash\nbunx nx make:crud Post\n\\`\\`\\`\n`,\n\t\t);\n\n\t\tlogger.success(`created ${target}`);\n\t\tlogger.blank();\n\t\tlogger.heading(\"Next steps\");\n\t\tlogger.info(` cd ${name}`);\n\t\tlogger.info(` bun install`);\n\t\tlogger.info(` bun run dev`);\n\t\tlogger.blank();\n\n\t\treturn 0;\n\t},\n};\n\n/** Generate the default .env file content. */\nfunction generateEnvFile(): string {\n\treturn `# ──────────────────────────────────────────────────────\n# NexusTS — Environment Variables (committed to git)\n#\n# Shared defaults for all environments. Override locally via\n# .env.local (gitignored) or by environment via .env.{NODE_ENV}\n# (e.g. .env.production, .env.development).\n#\n# Uncomment the database config for your driver:\n# ──────────────────────────────────────────────────────\n\n# ── App ──\nNODE_ENV=development\nPORT=3000\n\n# ── Session secret (REQUIRED) ──\n# Generate with: openssl rand -base64 32\nSESSION_SECRET=change-me-in-production\n\n# ── Database: SQLite (default, zero config) ──\nDATABASE_URL=app.db\n\n# ── Database: PostgreSQL ──\n# DATABASE_URL=postgres://user:password@localhost:5432/myapp\n\n# ── Database: MySQL ──\n# DATABASE_URL=mysql://user:password@localhost:3306/myapp\n`;\n}\n\nfunction generateEnvLocalFile(): string {\n\treturn `# ──────────────────────────────────────────────────────\n# NexusTS — Local Overrides (DO NOT COMMIT to git)\n#\n# This file is gitignored. Use it for secrets and local\n# configuration that should never be checked in.\n# ──────────────────────────────────────────────────────\n\n# Override any value from .env here:\n# DATABASE_URL=postgres://user:password@localhost:5432/myapp\n# SESSION_SECRET=my-local-secret\n`;\n}\n\nfunction generateGitIgnore(): string {\n\treturn `# NexusTS\nnode_modules/\napp.db\n*.db\n.env.local\ndist/\n`;\n}\n\nexport default newCommand;\n",
|
|
52
53
|
"/**\n * `nx config` — update or create nx.config.ts (+ drizzle.config.ts\n * if Drizzle is selected).\n *\n * Companion to `nx init`:\n * - `nx init` → scaffold the whole project (config + src/app + README)\n * - `nx config` → only the config files; idempotent\n *\n * Behaviour:\n * - If nx.config.ts exists, parses the current values, merges\n * with any flag values (flags win), and re-renders.\n * - If it does not exist, creates it from scratch with the\n * provided (or prompted) values.\n * - If ORM is `drizzle`, also writes drizzle.config.ts.\n * - If ORM is NOT `drizzle`, an existing drizzle.config.ts is\n * left alone (the user may have it intentionally).\n *\n * Typical use cases:\n * - \"I want to switch from bun-sqlite to postgres\"\n * → nx config --db postgres\n * - \"I want to add Drizzle to an existing project\"\n * → nx config --orm drizzle\n * - \"I want to change the Inertia frontend from React to Vue\"\n * → nx config --frontend vue\n * - \"I haven't decided yet, just show me the prompts\"\n * → nx config --no-interaction=false\n *\n * Flags:\n * --target <dir> Target directory (default: cwd)\n * --style <name> Routing style (nest|adonis|functional)\n * --view <name> View engine (rendu|edge|inertia|none)\n * --orm <name> ORM driver (drizzle|prisma|kysely|none)\n * --db <name> Database driver\n * --db-url <url> Database URL (used when DATABASE_URL is unset)\n * --frontend <name> Inertia frontend (react|vue|svelte|solid)\n * --ssr Enable Inertia SSR\n * --no-ssr Disable Inertia SSR\n * --force Overwrite even if file already exists\n * --no-interaction Skip interactive prompts\n */\n\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { flagBool, logger, render, select } from \"../core/index.js\";\nimport { templates } from \"../templates/index.js\";\n\ninterface NxConfigValues {\n\trouting: string;\n\tview: string;\n\tviewPaths: string;\n\torm: string;\n\tdbDriver: string;\n\tdbUrl: string;\n\tinertiaFrontend: string;\n\tinertiaSSR: boolean;\n\tinertiaVersion: string;\n\t[key: string]: string | number | boolean | undefined | null;\n}\n\nconst DEFAULT_VALUES: NxConfigValues = {\n\trouting: \"nest\",\n\tview: \"rendu\",\n\tviewPaths: \"resources/views\",\n\torm: \"drizzle\",\n\tdbDriver: \"bun-sqlite\",\n\tdbUrl: \"app.db\",\n\tinertiaFrontend: \"react\",\n\tinertiaSSR: true,\n\tinertiaVersion: \"1.0.0\",\n};\n\n/**\n * Parse an existing nx.config.ts and extract the scalar values.\n * Falls back to DEFAULT_VALUES for any field it can't read.\n */\nfunction parseExistingConfig(path: string): NxConfigValues {\n\tconst out: NxConfigValues = { ...DEFAULT_VALUES };\n\tif (!existsSync(path)) return out;\n\tconst src = readFileSync(path, \"utf8\");\n\tconst grab = (re: RegExp): string | undefined => {\n\t\tconst m = src.match(re);\n\t\treturn m?.[1];\n\t};\n\tconst routing = grab(/routing:\\s*['\"]([^'\"]+)['\"]/);\n\tconst view = grab(/view:\\s*['\"]([^'\"]+)['\"]/);\n\tconst viewPathsMatch = src.match(/viewPaths:\\s*['\"]([^'\"]+)['\"]/);\n\tif (viewPathsMatch) {\n\t\tout.viewPaths = viewPathsMatch[1];\n\t}\n\tconst orm = grab(/orm:\\s*['\"]([^'\"]+)['\"]/);\n\tconst driver = grab(/driver:\\s*['\"]([^'\"]+)['\"]/);\n\tconst url = grab(/url:\\s*process\\.env\\.DATABASE_URL\\s*\\?\\?\\s*['\"]([^'\"]+)['\"]/);\n\tconst frontend = grab(/frontend:\\s*['\"]([^'\"]+)['\"]/);\n\tconst ssr = grab(/ssr:\\s*(true|false)/);\n\tconst version = grab(/version:\\s*['\"]([^'\"]+)['\"]/);\n\tif (routing) out.routing = routing;\n\tif (view) out.view = view;\n\tif (orm) out.orm = orm;\n\tif (driver) out.dbDriver = driver;\n\tif (url !== undefined) out.dbUrl = url;\n\tif (frontend) out.inertiaFrontend = frontend;\n\tif (ssr) out.inertiaSSR = ssr === \"true\";\n\tif (version) out.inertiaVersion = version;\n\treturn out;\n}\n\n/** Map a `db` driver name to a drizzle-kit dialect. */\nfunction driverToDialect(driver: string): string {\n\tswitch (driver) {\n\t\tcase \"bun-sqlite\":\n\t\tcase \"node-sqlite\":\n\t\tcase \"libsql\":\n\t\t\treturn \"sqlite\";\n\t\tcase \"postgres\":\n\t\t\treturn \"postgresql\";\n\t\tcase \"mysql\":\n\t\t\treturn \"mysql\";\n\t\tdefault:\n\t\t\treturn \"sqlite\";\n\t}\n}\n\n/** Default DATABASE_URL fallback based on the driver. */\nfunction defaultDbUrl(driver: string): string {\n\tif (driver === \"bun-sqlite\" || driver === \"node-sqlite\" || driver === \"libsql\") {\n\t\treturn \"app.db\";\n\t}\n\treturn \"\";\n}\n\nexport const configCommand: Command = {\n\tname: \"config\",\n\taliases: [\"cfg\"],\n\tsummary: \"Update or create nx.config.ts (+ drizzle.config.ts if Drizzle is selected)\",\n\tdescription:\n\t\t\"Re-renders nx.config.ts from the current values (parsed from the existing file, or prompted) plus any flag overrides. Also creates or updates drizzle.config.ts when the ORM is `drizzle`.\",\n\texamples: [\n\t\t\"nx config\",\n\t\t\"nx config --db postgres --db-url postgres://localhost/mydb\",\n\t\t\"nx config --orm drizzle --db bun-sqlite\",\n\t\t\"nx config --view inertia --frontend vue --no-ssr\",\n\t\t\"nx config --force\",\n\t],\n\tflags: [\n\t\t{ name: \"target\", description: \"Target directory (default: cwd)\" },\n\t\t{\n\t\t\tname: \"style\",\n\t\t\tdescription: \"Routing style (nest|adonis|functional|mixed)\",\n\t\t},\n\t\t{ name: \"view\", description: \"View engine (rendu|edge|inertia|none)\" },\n\t\t{\n\t\t\tname: \"view-paths\",\n\t\t\tdescription: \"Comma-separated directories searched for view files (e.g. resources/views)\",\n\t\t},\n\t\t{ name: \"orm\", description: \"ORM driver (drizzle|prisma|kysely|none)\" },\n\t\t{\n\t\t\tname: \"db\",\n\t\t\tdescription:\n\t\t\t\t\"Database driver (bun-sqlite|node-sqlite|libsql|postgres|mysql|none)\",\n\t\t},\n\t\t{\n\t\t\tname: \"db-url\",\n\t\t\tdescription: \"Default DATABASE_URL when the env var is unset\",\n\t\t},\n\t\t{\n\t\t\tname: \"frontend\",\n\t\t\tdescription: \"Inertia frontend (react|vue|svelte|solid)\",\n\t\t},\n\t\t{ name: \"ssr\", description: \"Enable Inertia SSR\" },\n\t\t{ name: \"no-ssr\", description: \"Disable Inertia SSR\" },\n\t\t{ name: \"force\", description: \"Overwrite even if file already exists\" },\n\t\t{ name: \"no-interaction\", description: \"Disable interactive prompts\" },\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst interactive = !flagBool(ctx.flags, \"no-interaction\", false);\n\t\tconst force = flagBool(ctx.flags, \"force\", false);\n\t\tconst target = resolve(\n\t\t\tctx.cwd,\n\t\t\t(ctx.flags[\"target\"] as string | undefined) ?? \".\",\n\t\t);\n\n\t\tif (!existsSync(target)) {\n\t\t\tlogger.error(`Target directory does not exist: ${target}`);\n\t\t\treturn 1;\n\t\t}\n\n\t\t// 1. Start with the existing file's values (or defaults)\n\t\tconst nxConfigPath = resolve(target, \"nx.config.ts\");\n\t\tconst values: NxConfigValues = parseExistingConfig(nxConfigPath);\n\n\t\t// 2. Apply flag overrides\n\t\tconst flag = (k: string) => ctx.flags[k] as string | undefined;\n\t\tconst flagBoolStrict = (k: string, def: boolean) =>\n\t\t\tflagBool(ctx.flags, k, def);\n\t\tif (flag(\"style\")) values.routing = flag(\"style\")!;\n\t\tif (flag(\"view\")) values.view = flag(\"view\")!;\n\tif (flag(\"view-paths\")) {\n\t\tvalues.viewPaths = flag(\"view-paths\")!;\n\t}\n\t\tif (flag(\"orm\")) values.orm = flag(\"orm\")!;\n\t\tif (flag(\"db\")) values.dbDriver = flag(\"db\")!;\n\t\tif (flag(\"db-url\") !== undefined) values.dbUrl = flag(\"db-url\")!;\n\t\tif (flag(\"frontend\")) values.inertiaFrontend = flag(\"frontend\")!;\n\t\tif (flagBoolStrict(\"ssr\", false)) values.inertiaSSR = true;\n\t\tif (flagBoolStrict(\"no-ssr\", false)) values.inertiaSSR = false;\n\t\t// --inertia-version intentionally not exposed — too internal\n\n\t\t// 3. Interactive prompt for fields the user didn't supply\n\t\t// (only if the file didn't already exist OR they passed no\n\t\t// flags at all — i.e. they want a guided setup)\n\t\tconst anyFlag = Object.values(ctx.flags).some(\n\t\t\t(v) => v !== undefined && v !== false,\n\t\t);\n\t\tif (interactive && !anyFlag && !existsSync(nxConfigPath)) {\n\t\t\tvalues.routing =\n\t\t\t\t(await select(\"Routing style\", [\"nest\", \"adonis\", \"functional\"], {\n\t\t\t\t\tinteractive,\n\t\t\t\t\tdefault: values.routing,\n\t\t\t\t})) ?? values.routing;\n\t\t\tvalues.view =\n\t\t\t\t(await select(\"View engine\", [\"inertia\", \"rendu\", \"edge\", \"none\"], {\n\t\t\t\t\tinteractive,\n\t\t\t\t\tdefault: values.view,\n\t\t\t\t})) ?? values.view;\n\t\t\tvalues.orm =\n\t\t\t\t(await select(\"ORM driver\", [\"drizzle\", \"prisma\", \"kysely\", \"none\"], {\n\t\t\t\t\tinteractive,\n\t\t\t\t\tdefault: values.orm,\n\t\t\t\t})) ?? values.orm;\n\t\t\tvalues.dbDriver =\n\t\t\t\t(await select(\n\t\t\t\t\t\"Database driver\",\n\t\t\t\t\t[\"bun-sqlite\", \"node-sqlite\", \"libsql\", \"postgres\", \"mysql\", \"none\"],\n\t\t\t\t\t{ interactive, default: values.dbDriver },\n\t\t\t\t)) ?? values.dbDriver;\n\t\t\tvalues.inertiaFrontend =\n\t\t\t\t(await select(\n\t\t\t\t\t\"Inertia frontend\",\n\t\t\t\t\t[\"react\", \"vue\", \"svelte\", \"solid\"],\n\t\t\t\t\t{ interactive, default: values.inertiaFrontend },\n\t\t\t\t)) ?? values.inertiaFrontend;\n\t\t}\n\n\t\t// 4. Derive dbUrl from driver if user didn't pass --db-url\n\t\tif (flag(\"db-url\") === undefined && flag(\"db\") !== undefined) {\n\t\t\tvalues.dbUrl = defaultDbUrl(values.dbDriver);\n\t\t}\n\n\t\t// 5. Render and write\n\t\tconst existed = existsSync(nxConfigPath);\n\t\tif (existed && !force) {\n\t\t\t// Existing file: rewrite only if something actually changed.\n\t\t\t// (Always rewrite when the user passed any flag, since\n\t\t\t// they're explicitly asking for a change.)\n\t\t\tif (anyFlag) {\n\t\t\t\twriteNxConfig(target, values);\n\t\t\t\tlogger.info(` ~ nx.config.ts (updated)`);\n\t\t\t} else {\n\t\t\t\tlogger.info(` - nx.config.ts (unchanged; pass --force or a flag to update)`);\n\t\t\t}\n\t\t} else {\n\t\t\twriteNxConfig(target, values);\n\t\t\tlogger.info(` + nx.config.ts`);\n\t\t}\n\n\t\t// 6. Handle drizzle.config.ts\n\t\tconst drizzleConfigPath = resolve(target, \"drizzle.config.ts\");\n\t\tif (values.orm === \"drizzle\") {\n\t\t\tconst dialect = driverToDialect(values.dbDriver);\n\t\t\tconst dbUrl = values.dbUrl;\n\t\t\tconst existedDrizzle = existsSync(drizzleConfigPath);\n\t\t\tif (existedDrizzle && !force && !anyFlag) {\n\t\t\t\tlogger.info(` - drizzle.config.ts (unchanged; pass --force or a flag to update)`);\n\t\t\t} else {\n\t\t\t\twriteDrizzleConfig(target, { dialect, dbUrl });\n\t\t\t\tlogger.info(` ${existedDrizzle ? \"~\" : \"+\"} drizzle.config.ts`);\n\t\t\t}\n\t\t} else if (existsSync(drizzleConfigPath)) {\n\t\t\tlogger.info(\n\t\t\t\t` - drizzle.config.ts (left as-is; ORM is '${values.orm}', not 'drizzle')`,\n\t\t\t);\n\t\t}\n\n\t\tlogger.blank();\n\t\tlogger.success(`config updated in ${target}`);\n\t\tlogger.blank();\n\t\tlogger.heading(\"Next steps\");\n\t\tlogger.info(` cd ${target === ctx.cwd ? \".\" : target}`);\n\t\tif (values.orm === \"drizzle\") {\n\t\t\tlogger.info(` bun run db:generate # generate migrations`);\n\t\t}\n\t\tlogger.blank();\n\n\t\treturn 0;\n\t},\n};\n\n// ---------------------------------------------------------------------------\n// Writers\n// ---------------------------------------------------------------------------\n\nfunction writeNxConfig(target: string, values: NxConfigValues): void {\n\tconst code = render(templates.project[\"nx.config.ts\"], values);\n\twriteFileSync(resolve(target, \"nx.config.ts\"), code);\n}\n\nfunction writeDrizzleConfig(\n\ttarget: string,\n\tvalues: { dialect: string; dbUrl: string },\n): void {\n\tconst code = render(templates.project[\"drizzle.config.ts\"], values);\n\twriteFileSync(resolve(target, \"drizzle.config.ts\"), code);\n}\n\nexport default configCommand;\n",
|
|
53
|
-
"/**\n * `nx repl` — interactive REPL with the app's services loaded.\n *\n * Boots the user's `AppModule` and drops you into a REPL with\n * `app`, `container`, `db`, `logger`, `cfg`, `cache`, and `events`\n * pre-loaded. Useful for debugging, exploring data, and trying\n * out queries without writing a throwaway script.\n *\n * Usage:\n * nx repl # default: ./app/app.module.ts\n * nx repl --module app/app.module.ts\n * nx repl --no-boot # vanilla REPL\n * nx repl --history /tmp/nx-history # custom history file\n *\n * Once inside the REPL:\n * ❯ await db.select().from(users).all()\n * ❯ logger.info(\"hello from REPL\")\n * ❯ .services\n * ❯ .routes\n * ❯ .help\n * ❯ .exit\n *\n * Multi-line input is detected by a bracket-matcher — an\n * expression with an unclosed `{}`, `[]`, or `()` keeps the\n * prompt in `...` continuation mode.\n *\n * History is persisted to `.nx-repl-history` (or the path\n * given by `--history`).\n */\n\nimport {\n\texistsSync,\n\tmkdirSync,\n\treadFileSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { dirname, resolve } from \"node:path\";\nimport * as readline from \"node:readline\";\nimport * as vm from \"node:vm\";\nimport { logger } from \"../core/index.js\";\nimport type { Command, CommandContext } from \"../core/index.js\";\n\nconst BANNER = `\n╭─────────────────────────────────────────────────╮\n│ NexusTS REPL │\n╰─────────────────────────────────────────────────╯\n`;\n\nconst HELP = `\nAvailable commands:\n .help Show this help\n .exit Exit the REPL (alias: .quit)\n .services List services in the DI container\n .modules List all modules\n .routes List all registered routes\n .history Show command history\n .clear Clear the screen\n .reset Reset the REPL context (clear all variables)\n\nPre-loaded variables (when an app is booted):\n app The Application instance\n container The DI container\n db DrizzleService (if registered)\n logger LoggerService (if registered)\n cfg ConfigService (if registered)\n cache CacheService (if registered)\n events EventService (if registered)\n\nExamples:\n > await db.select().from(users).all()\n > logger.info(\"hello from REPL\")\n > app.container.size\n`;\n\n/** Pair of (module path inside the framework, export name). */\nconst PRELOAD: Array<[string, string, string]> = [\n\t[\"db\", \"../../drizzle/drizzle.service.js\", \"DrizzleService\"],\n\t[\"logger\", \"../../logger/logger.service.js\", \"LoggerService\"],\n\t[\"cfg\", \"../../config/config.service.js\", \"ConfigService\"],\n\t[\"cache\", \"../../cache/cache.service.js\", \"CacheService\"],\n\t[\"events\", \"../../events/event.service.js\", \"EventService\"],\n];\n\nexport const replCommand: Command = {\n\tname: \"repl\",\n\taliases: [\"console\", \"shell\"],\n\tsummary: \"Start an interactive REPL with the app's services\",\n\tdescription:\n\t\t\"Boots the user's app module and drops into an interactive REPL. Useful for debugging, exploring data, and trying out queries. Multi-line input is supported. History is persisted to .nx-repl-history.\",\n\texamples: [\n\t\t\"nx repl\",\n\t\t\"nx repl --module app/app.module.ts\",\n\t\t\"nx repl --no-boot\",\n\t\t\"nx repl --history /tmp/nx-history\",\n\t],\n\tflags: [\n\t\t{\n\t\t\tname: \"module\",\n\t\t\tdescription:\n\t\t\t\t\"Path to the AppModule (default: app/app.module.ts).\",\n\t\t},\n\t\t{\n\t\t\tname: \"no-boot\",\n\t\t\tdescription: \"Skip booting the app — start a vanilla REPL.\",\n\t\t},\n\t\t{\n\t\t\tname: \"history\",\n\t\t\tdescription: \"History file path (default: .nx-repl-history).\",\n\t\t},\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst mod = ctx.flags[\"module\"] as string | undefined;\n\t\tconst noBoot = Boolean(ctx.flags[\"no-boot\"]);\n\t\tconst histPath = resolve(\n\t\t\tctx.cwd,\n\t\t\t(ctx.flags[\"history\"] as string | undefined) ?? \".nx-repl-history\",\n\t\t);\n\n\t\tconst env: Record<string, unknown> = { console };\n\n\t\tif (!noBoot) {\n\t\t\tconst modPath = resolve(\n\t\t\t\tctx.cwd,\n\t\t\t\tmod ?? \"app/app.module.ts\",\n\t\t\t);\n\t\t\tif (!existsSync(modPath)) {\n\t\t\t\tlogger.error(`module not found: ${modPath}`);\n\t\t\t\tlogger.info(\n\t\t\t\t\t\"pass --module <path> or --no-boot to skip booting\",\n\t\t\t\t);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst modSpec = await import(modPath);\n\t\t\t\tconst AppModule =\n\t\t\t\t\tmodSpec.default ?? modSpec.AppModule;\n\t\t\t\tif (!AppModule) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t`module at ${modPath} does not export AppModule as default or named export`,\n\t\t\t\t\t);\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tconst { Application } = await import(\n\t\t\t\t\t\"@nexusts/core\"\n\t\t\t\t);\n\t\t\t\tconst app = new Application(AppModule);\n\t\t\t\tenv.app = app;\n\t\t\t\tenv.container = app.container;\n\n\t\t\t\tfor (const [name, path, className] of PRELOAD) {\n\t\t\t\t\tawait preloadService(\n\t\t\t\t\t\tenv,\n\t\t\t\t\t\tapp as { container: { resolve: (t: unknown) => unknown } },\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tlogger.info(`✓ Booted ${modPath}`);\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(`failed to boot: ${(err as Error).message}`);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(BANNER);\n\t\tif (noBoot) {\n\t\t\tconsole.log(\" (started with --no-boot; no app is loaded)\");\n\t\t}\n\n\t\tconst history = loadHistory(histPath);\n\n\t\tconst rl = readline.createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t\tprompt: \"❯ \",\n\t\t\tterminal: true,\n\t\t\thistory,\n\t\t\thistorySize: 1000,\n\t\t});\n\n\t\tconst saveHist = () => saveHistoryFile(histPath, (rl as unknown as { history?: string[] }).history ?? []);\n\t\trl.on(\"close\", () => {\n\t\t\tsaveHist();\n\t\t\tprocess.exit(0);\n\t\t});\n\t\tprocess.on(\"SIGINT\", () => {\n\t\t\tsaveHist();\n\t\t\tprocess.exit(0);\n\t\t});\n\t\tprocess.on(\"exit\", saveHist);\n\n\t\tlet buffer = \"\";\n\t\tconst vmContext = vm.createContext(env);\n\n\t\tconst evaluate = async (code: string): Promise<void> => {\n\t\t\ttry {\n\t\t\t\tconst script = new vm.Script(code, { filename: \"<nx-repl>\" });\n\t\t\t\tconst result = script.runInContext(vmContext, {\n\t\t\t\t\tdisplayErrors: false,\n\t\t\t\t});\n\t\t\t\tif (result === undefined) return;\n\t\t\t\tif (\n\t\t\t\t\tresult &&\n\t\t\t\t\ttypeof (result as { then?: unknown }).then === \"function\"\n\t\t\t\t) {\n\t\t\t\t\tconst v = await (result as Promise<unknown>);\n\t\t\t\t\tconsole.log(formatResult(v));\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(formatResult(result));\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(formatError(err as Error));\n\t\t\t}\n\t\t};\n\n\t\tconst handleDotCommand = async (line: string): Promise<boolean> => {\n\t\t\tconst cmd = line.trim();\n\t\t\tswitch (cmd) {\n\t\t\t\tcase \".help\":\n\t\t\t\t\tconsole.log(HELP);\n\t\t\t\t\treturn true;\n\t\t\t\tcase \".exit\":\n\t\t\t\tcase \".quit\":\n\t\t\t\t\tsaveHist();\n\t\t\t\t\trl.close();\n\t\t\t\t\treturn true;\n\t\t\t\tcase \".clear\":\n\t\t\t\t\tconsole.clear();\n\t\t\t\t\tconsole.log(BANNER);\n\t\t\t\t\treturn true;\n\t\t\t\tcase \".services\": {\n\t\t\t\t\tconst services = listServices(env.container);\n\t\t\t\t\tif (services.length === 0) {\n\t\t\t\t\t\tconsole.log(\" (no services registered)\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (const s of services) console.log(` ${s}`);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcase \".modules\": {\n\t\t\t\t\tconst mods = (env.app as { modules?: unknown[] } | undefined)\n\t\t\t\t\t\t?.modules as Array<{ name?: string; constructor?: { name?: string } }> | undefined;\n\t\t\t\t\tif (!mods || mods.length === 0) {\n\t\t\t\t\t\tconsole.log(\" (no modules)\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (const m of mods) {\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t` ${m.name ?? m.constructor?.name ?? \"(anon)\"}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcase \".routes\": {\n\t\t\t\t\tconst app = env.app as\n\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\tserver?: {\n\t\t\t\t\t\t\t\t\tapp?: { routes?: Array<{ method?: string; path?: string }> };\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t }\n\t\t\t\t\t\t| undefined;\n\t\t\t\t\tconst routes = app?.server?.app?.routes ?? [];\n\t\t\t\t\tif (routes.length === 0) {\n\t\t\t\t\t\tconsole.log(\" (no routes registered)\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (const r of routes) {\n\t\t\t\t\t\t\tconst m = (r.method ?? \"?\").padEnd(7);\n\t\t\t\t\t\t\tconsole.log(` ${m} ${r.path ?? \"?\"}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcase \".history\": {\n\t\t\t\t\tconst hist = (rl as unknown as { history?: string[] }).history ?? [];\n\t\t\t\t\tconst histArr = hist as string[];\n\t\t\t\t\thistArr.forEach((h: string, i: number) => {\n\t\t\t\t\t\tconsole.log(` ${(i + 1).toString().padStart(4)}: ${h}`);\n\t\t\t\t\t});\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcase \".reset\": {\n\t\t\t\t\tfor (const k of Object.keys(env)) {\n\t\t\t\t\t\tif (k !== \"console\") delete env[k];\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(\" context reset\");\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error(` unknown command: ${cmd}`);\n\t\t\t\t\tconsole.log(\" type .help for the list\");\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\n\t\trl.on(\"line\", async (line) => {\n\t\t\tconst trimmed = line.trim();\n\t\t\tif (trimmed.startsWith(\".\")) {\n\t\t\t\tawait handleDotCommand(trimmed);\n\t\t\t} else {\n\t\t\t\tbuffer += line + \"\\n\";\n\t\t\t\tif (isIncomplete(buffer)) {\n\t\t\t\t\trl.setPrompt(\"... \");\n\t\t\t\t\trl.prompt();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait evaluate(buffer);\n\t\t\t\tbuffer = \"\";\n\t\t\t\trl.setPrompt(\"❯ \");\n\t\t\t}\n\t\t\trl.prompt();\n\t\t});\n\n\t\trl.prompt();\n\n\t\t// Keep the process alive. readline drives the rest.\n\t\treturn new Promise(() => {\n\t\t\t/* never resolves */\n\t\t});\n\t},\n};\n\n/* ------------------------------------------------------------------ *\n * Helpers — exported for testing\n * ------------------------------------------------------------------ */\n\nexport async function preloadService(\n\tenv: Record<string, unknown>,\n\tapp: { container: { resolve: (t: unknown) => unknown } },\n\tname: string,\n\tpath: string,\n\tclassName: string,\n): Promise<void> {\n\ttry {\n\t\tconst mod = (await import(path)) as Record<string, unknown>;\n\t\tconst ServiceClass = mod[className] as\n\t\t\t| (abstract new (...args: never[]) => unknown) & {\n\t\t\t\t\tTOKEN?: unknown;\n\t\t\t\t\t[key: string]: unknown;\n\t\t\t }\n\t\t\t| undefined;\n\t\tif (!ServiceClass) return;\n\t\tconst Token =\n\t\t\tServiceClass.TOKEN ??\n\t\t\tServiceClass[`${className.toUpperCase()}_TOKEN`];\n\t\tif (!Token) return;\n\t\ttry {\n\t\t\tenv[name] = app.container.resolve(Token);\n\t\t} catch {\n\t\t\ttry {\n\t\t\t\tenv[name] = app.container.resolve(ServiceClass);\n\t\t\t} catch {\n\t\t\t\t// not registered\n\t\t\t}\n\t\t}\n\t} catch {\n\t\t// module not installed — skip silently\n\t}\n}\n\nexport function listServices(\n\tcontainer: unknown,\n): string[] {\n\tif (!container) return [];\n\tconst c = container as {\n\t\tlistProviders?: () => Array<{ token?: { toString(): string } }>;\n\t};\n\tif (typeof c.listProviders !== \"function\") return [];\n\ttry {\n\t\treturn c\n\t\t\t.listProviders()\n\t\t\t.map((p) => p.token?.toString?.() ?? String(p.token));\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nexport function isIncomplete(code: string): boolean {\n\t// Track string literals, line comments, block comments, and\n\t// bracket depth. Returns true if the code has any unclosed\n\t// bracket / string / comment.\n\tconst stack: string[] = [];\n\tlet inString: string | null = null;\n\tlet inComment: \"line\" | \"block\" | null = null;\n\tfor (let i = 0; i < code.length; i++) {\n\t\tconst c = code[i];\n\t\tconst next = code[i + 1];\n\t\tif (inComment === \"line\") {\n\t\t\tif (c === \"\\n\") inComment = null;\n\t\t\tcontinue;\n\t\t}\n\t\tif (inComment === \"block\") {\n\t\t\tif (c === \"*\" && next === \"/\") {\n\t\t\t\tinComment = null;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (inString) {\n\t\t\tif (c === \"\\\\\") {\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (c === inString) inString = null;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === \"/\" && next === \"/\") {\n\t\t\tinComment = \"line\";\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === \"/\" && next === \"*\") {\n\t\t\tinComment = \"block\";\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === '\"' || c === \"'\" || c === \"`\") {\n\t\t\tinString = c;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === \"{\" || c === \"[\" || c === \"(\") stack.push(c);\n\t\telse if (c === \"}\" || c === \"]\" || c === \")\") stack.pop();\n\t}\n\treturn stack.length > 0 || inString !== null || inComment === \"block\";\n}\n\nexport function formatResult(r: unknown): string {\n\tif (r === null) return \"null\";\n\tif (r === undefined) return \"undefined\";\n\tif (typeof r === \"string\") return r;\n\tif (\n\t\ttypeof r === \"number\" ||\n\t\ttypeof r === \"boolean\" ||\n\t\ttypeof r === \"bigint\"\n\t) return String(r);\n\tif (typeof r === \"function\") {\n\t\tconst fn = r as { name?: string };\n\t\treturn `[Function: ${fn.name || \"anonymous\"}]`;\n\t}\n\tif (typeof r === \"symbol\") return r.toString();\n\ttry {\n\t\treturn JSON.stringify(r, null, 2);\n\t} catch {\n\t\treturn Object.prototype.toString.call(r);\n\t}\n}\n\nexport function formatError(e: Error): string {\n\tif (e.name === \"SyntaxError\") return e.message;\n\treturn e.stack ? e.stack.split(\"\\n\").slice(0, 5).join(\"\\n\") : e.message;\n}\n\nfunction loadHistory(path: string): string[] {\n\tif (!existsSync(path)) return [];\n\ttry {\n\t\treturn readFileSync(path, \"utf-8\").split(\"\\n\").filter(Boolean);\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction saveHistoryFile(path: string, history: string[]): void {\n\ttry {\n\t\tconst dir = dirname(path);\n\t\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\t\twriteFileSync(path, history.slice(-1000).join(\"\\n\"));\n\t} catch {\n\t\t// best effort\n\t}\n}\n\nexport default replCommand;\n",
|
|
54
|
+
"/**\n * `nx repl` — interactive REPL with the app's services loaded.\n *\n * Boots the user's `AppModule` and drops you into a REPL with\n * `app`, `container`, `db`, `logger`, `cfg`, `cache`, and `events`\n * pre-loaded. Useful for debugging, exploring data, and trying\n * out queries without writing a throwaway script.\n *\n * Usage:\n * nx repl # default: ./app/app.module.ts\n * nx repl --module app/app.module.ts\n * nx repl --no-boot # vanilla REPL\n * nx repl --history /tmp/nx-history # custom history file\n *\n * Once inside the REPL:\n * ❯ await db.select().from(users).all()\n * ❯ logger.info(\"hello from REPL\")\n * ❯ .services\n * ❯ .routes\n * ❯ .help\n * ❯ .exit\n *\n * Multi-line input is detected by a bracket-matcher — an\n * expression with an unclosed `{}`, `[]`, or `()` keeps the\n * prompt in `...` continuation mode.\n *\n * History is persisted to `.nx-repl-history` (or the path\n * given by `--history`).\n */\n\nimport {\n\texistsSync,\n\tmkdirSync,\n\treadFileSync,\n\twriteFileSync,\n} from \"node:fs\";\nimport { dirname, resolve } from \"node:path\";\nimport * as readline from \"node:readline\";\nimport * as vm from \"node:vm\";\nimport { logger } from \"../core/index.js\";\nimport { VERSION } from \"../core/index.js\";\nimport type { Command, CommandContext } from \"../core/index.js\";\n\nconst BANNER = (() => {\n\tconst W = 49;\n\tconst dash = \"─\".repeat(W);\n\tconst ver = `v${VERSION}`;\n\tconst verLen = ver.length;\n\tconst TITLE = \"NexusTS REPL\";\n\tconst HINT = \"Type .help for available commands\";\n\tconst titleGap = \" \".repeat(W - 2 - TITLE.length - verLen - 1);\n\tconst hintGap = \" \".repeat(W - 2 - HINT.length);\n\tconst L = (s: string) => `│${s}│`;\n\treturn [\n\t\t`╭${dash}╮`,\n\t\tL(` ${TITLE}${titleGap}${ver} `),\n\t\tL(\" \".repeat(W)),\n\t\tL(` ${HINT}${hintGap}`),\n\t\t`╰${dash}╯`,\n\t].join(\"\\n\");\n})();\n\nconst HELP = `\nAvailable commands:\n .help Show this help\n .exit Exit the REPL (alias: .quit)\n .services List services in the DI container\n .modules List all modules\n .routes List all registered routes\n .history Show command history\n .clear Clear the screen\n .reset Reset the REPL context (clear all variables)\n\nPre-loaded variables (when an app is booted):\n app The Application instance\n container The DI container\n db DrizzleService (if registered)\n logger LoggerService (if registered)\n cfg ConfigService (if registered)\n cache CacheService (if registered)\n events EventService (if registered)\n\nExamples:\n > await db.select().from(users).all()\n > logger.info(\"hello from REPL\")\n > app.container.size\n`;\n\n/** Pair of (variable name, npm package name, export name). */\nconst PRELOAD: Array<[string, string, string]> = [\n\t[\"db\", \"@nexusts/drizzle\", \"DrizzleService\"],\n\t[\"logger\", \"@nexusts/logger\", \"Logger\"],\n\t[\"cfg\", \"@nexusts/config\", \"ConfigService\"],\n\t[\"cache\", \"@nexusts/cache\", \"CacheService\"],\n\t[\"events\", \"@nexusts/events\", \"EventService\"],\n];\n\nexport const replCommand: Command = {\n\tname: \"repl\",\n\taliases: [\"console\", \"shell\"],\n\tsummary: \"Start an interactive REPL with the app's services\",\n\tdescription:\n\t\t\"Boots the user's app module and drops into an interactive REPL. Useful for debugging, exploring data, and trying out queries. Multi-line input is supported. History is persisted to .nx-repl-history.\",\n\texamples: [\n\t\t\"nx repl\",\n\t\t\"nx repl --module app/app.module.ts\",\n\t\t\"nx repl --no-boot\",\n\t\t\"nx repl --history /tmp/nx-history\",\n\t],\n\tflags: [\n\t\t{\n\t\t\tname: \"module\",\n\t\t\tdescription:\n\t\t\t\t\"Path to the AppModule (default: app/app.module.ts).\",\n\t\t},\n\t\t{\n\t\t\tname: \"no-boot\",\n\t\t\tdescription: \"Skip booting the app — start a vanilla REPL.\",\n\t\t},\n\t\t{\n\t\t\tname: \"history\",\n\t\t\tdescription: \"History file path (default: .nx-repl-history).\",\n\t\t},\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst mod = ctx.flags[\"module\"] as string | undefined;\n\t\tconst noBoot = Boolean(ctx.flags[\"no-boot\"]);\n\t\tconst histPath = resolve(\n\t\t\tctx.cwd,\n\t\t\t(ctx.flags[\"history\"] as string | undefined) ?? \".nx-repl-history\",\n\t\t);\n\n\t\tconst env: Record<string, unknown> = { console };\n\n\t\tif (!noBoot) {\n\t\t\tconst modPath = resolve(\n\t\t\t\tctx.cwd,\n\t\t\t\tmod ?? \"app/app.module.ts\",\n\t\t\t);\n\t\t\tif (!existsSync(modPath)) {\n\t\t\t\tlogger.error(`module not found: ${modPath}`);\n\t\t\t\tlogger.info(\n\t\t\t\t\t\"pass --module <path> or --no-boot to skip booting\",\n\t\t\t\t);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t\ttry {\n\t\t\t\tconst modSpec = await import(modPath);\n\t\t\t\tconst AppModule =\n\t\t\t\t\tmodSpec.default ?? modSpec.AppModule;\n\t\t\t\tif (!AppModule) {\n\t\t\t\t\tlogger.error(\n\t\t\t\t\t\t`module at ${modPath} does not export AppModule as default or named export`,\n\t\t\t\t\t);\n\t\t\t\t\treturn 1;\n\t\t\t\t}\n\t\t\t\tconst { Application } = await import(\n\t\t\t\t\t\"@nexusts/core\"\n\t\t\t\t);\n\t\t\t\tconst app = new Application(AppModule);\n\t\t\t\tenv.app = app;\n\t\t\t\tenv.container = app.container;\n\n\t\t\t\tfor (const [name, path, className] of PRELOAD) {\n\t\t\t\t\tawait preloadService(\n\t\t\t\t\t\tenv,\n\t\t\t\t\t\tapp as { container: { resolve: (t: unknown) => unknown } },\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tpath,\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tlogger.info(`✓ Booted ${modPath}`);\n\t\t\t} catch (err) {\n\t\t\t\tlogger.error(`failed to boot: ${(err as Error).message}`);\n\t\t\t\treturn 1;\n\t\t\t}\n\t\t}\n\n\t\tconsole.log(BANNER);\n\t\tif (noBoot) {\n\t\t\tconsole.log(\" (started with --no-boot; no app is loaded)\");\n\t\t}\n\n\t\tconst history = loadHistory(histPath);\n\n\t\tconst rl = readline.createInterface({\n\t\t\tinput: process.stdin,\n\t\t\toutput: process.stdout,\n\t\t\tprompt: \"❯ \",\n\t\t\tterminal: true,\n\t\t\thistory,\n\t\t\thistorySize: 1000,\n\t\t});\n\n\t\tconst saveHist = () => saveHistoryFile(histPath, (rl as unknown as { history?: string[] }).history ?? []);\n\t\trl.on(\"close\", () => {\n\t\t\tsaveHist();\n\t\t\tprocess.exit(0);\n\t\t});\n\t\tprocess.on(\"SIGINT\", () => {\n\t\t\tsaveHist();\n\t\t\tprocess.exit(0);\n\t\t});\n\t\tprocess.on(\"exit\", saveHist);\n\n\t\tlet buffer = \"\";\n\t\tconst vmContext = vm.createContext(env);\n\n\t\tconst evaluate = async (code: string): Promise<void> => {\n\t\t\ttry {\n\t\t\t\tconst script = new vm.Script(code, { filename: \"<nx-repl>\" });\n\t\t\t\tconst result = script.runInContext(vmContext, {\n\t\t\t\t\tdisplayErrors: false,\n\t\t\t\t});\n\t\t\t\tif (result === undefined) return;\n\t\t\t\tif (\n\t\t\t\t\tresult &&\n\t\t\t\t\ttypeof (result as { then?: unknown }).then === \"function\"\n\t\t\t\t) {\n\t\t\t\t\tconst v = await (result as Promise<unknown>);\n\t\t\t\t\tconsole.log(formatResult(v));\n\t\t\t\t} else {\n\t\t\t\t\tconsole.log(formatResult(result));\n\t\t\t\t}\n\t\t\t} catch (err) {\n\t\t\t\tconsole.error(formatError(err as Error));\n\t\t\t}\n\t\t};\n\n\t\tconst handleDotCommand = async (line: string): Promise<boolean> => {\n\t\t\tconst cmd = line.trim();\n\t\t\tswitch (cmd) {\n\t\t\t\tcase \".help\":\n\t\t\t\t\tconsole.log(HELP);\n\t\t\t\t\treturn true;\n\t\t\t\tcase \".exit\":\n\t\t\t\tcase \".quit\":\n\t\t\t\t\tsaveHist();\n\t\t\t\t\trl.close();\n\t\t\t\t\treturn true;\n\t\t\t\tcase \".clear\":\n\t\t\t\t\tconsole.clear();\n\t\t\t\t\tconsole.log(BANNER);\n\t\t\t\t\treturn true;\n\t\t\t\tcase \".services\": {\n\t\t\t\t\tconst services = listServices(env.container);\n\t\t\t\t\tif (services.length === 0) {\n\t\t\t\t\t\tconsole.log(\" (no services registered)\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (const s of services) console.log(` ${s}`);\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcase \".modules\": {\n\t\t\t\t\tconst mods = (env.app as { modules?: unknown[] } | undefined)\n\t\t\t\t\t\t?.modules as Array<{ name?: string; constructor?: { name?: string } }> | undefined;\n\t\t\t\t\tif (!mods || mods.length === 0) {\n\t\t\t\t\t\tconsole.log(\" (no modules)\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (const m of mods) {\n\t\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t\t` ${m.name ?? m.constructor?.name ?? \"(anon)\"}`,\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcase \".routes\": {\n\t\t\t\t\tconst app = env.app as\n\t\t\t\t\t\t| {\n\t\t\t\t\t\t\t\tserver?: {\n\t\t\t\t\t\t\t\t\tapp?: { routes?: Array<{ method?: string; path?: string }> };\n\t\t\t\t\t\t\t\t};\n\t\t\t\t\t\t }\n\t\t\t\t\t\t| undefined;\n\t\t\t\t\tconst routes = app?.server?.app?.routes ?? [];\n\t\t\t\t\tif (routes.length === 0) {\n\t\t\t\t\t\tconsole.log(\" (no routes registered)\");\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfor (const r of routes) {\n\t\t\t\t\t\t\tconst m = (r.method ?? \"?\").padEnd(7);\n\t\t\t\t\t\t\tconsole.log(` ${m} ${r.path ?? \"?\"}`);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcase \".history\": {\n\t\t\t\t\tconst hist = (rl as unknown as { history?: string[] }).history ?? [];\n\t\t\t\t\tconst histArr = hist as string[];\n\t\t\t\t\thistArr.forEach((h: string, i: number) => {\n\t\t\t\t\t\tconsole.log(` ${(i + 1).toString().padStart(4)}: ${h}`);\n\t\t\t\t\t});\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tcase \".reset\": {\n\t\t\t\t\tfor (const k of Object.keys(env)) {\n\t\t\t\t\t\tif (k !== \"console\") delete env[k];\n\t\t\t\t\t}\n\t\t\t\t\tconsole.log(\" context reset\");\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t\tdefault:\n\t\t\t\t\tconsole.error(` unknown command: ${cmd}`);\n\t\t\t\t\tconsole.log(\" type .help for the list\");\n\t\t\t\t\treturn true;\n\t\t\t}\n\t\t};\n\n\t\trl.on(\"line\", async (line) => {\n\t\t\tconst trimmed = line.trim();\n\t\t\tif (trimmed.startsWith(\".\")) {\n\t\t\t\tawait handleDotCommand(trimmed);\n\t\t\t} else {\n\t\t\t\tbuffer += line + \"\\n\";\n\t\t\t\tif (isIncomplete(buffer)) {\n\t\t\t\t\trl.setPrompt(\"... \");\n\t\t\t\t\trl.prompt();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tawait evaluate(buffer);\n\t\t\t\tbuffer = \"\";\n\t\t\t\trl.setPrompt(\"❯ \");\n\t\t\t}\n\t\t\trl.prompt();\n\t\t});\n\n\t\trl.prompt();\n\n\t\t// Keep the process alive. readline drives the rest.\n\t\treturn new Promise(() => {\n\t\t\t/* never resolves */\n\t\t});\n\t},\n};\n\n/* ------------------------------------------------------------------ *\n * Helpers — exported for testing\n * ------------------------------------------------------------------ */\n\nexport async function preloadService(\n\tenv: Record<string, unknown>,\n\tapp: { container: { resolve: (t: unknown) => unknown } },\n\tname: string,\n\tpath: string,\n\tclassName: string,\n): Promise<void> {\n\ttry {\n\t\tconst mod = (await import(path)) as Record<string, unknown>;\n\t\tconst ServiceClass = mod[className] as\n\t\t\t| (abstract new (...args: never[]) => unknown) & {\n\t\t\t\t\tTOKEN?: unknown;\n\t\t\t\t\t[key: string]: unknown;\n\t\t\t }\n\t\t\t| undefined;\n\t\tif (!ServiceClass) {\n\t\t\tlogger.debug(`repl: ${className} not found in ${path}`);\n\t\t\treturn;\n\t\t}\n\t\tconst Token =\n\t\t\tServiceClass.TOKEN ??\n\t\t\tServiceClass[`${className.toUpperCase()}_TOKEN`];\n\t\tif (!Token) {\n\t\t\tlogger.debug(`repl: ${className}.TOKEN not found`);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tenv[name] = app.container.resolve(Token);\n\t\t\tlogger.debug(`repl: loaded ${name} (${className})`);\n\t\t} catch {\n\t\t\ttry {\n\t\t\t\tenv[name] = app.container.resolve(ServiceClass);\n\t\t\t\tlogger.debug(`repl: loaded ${name} (${className}) via class`);\n\t\t\t} catch {\n\t\t\t\tlogger.debug(`repl: ${name} (${className}) not registered in container`);\n\t\t\t}\n\t\t}\n\t} catch {\n\t\tlogger.debug(`repl: ${path} not installed — skipping ${name}`);\n\t}\n}\n\nexport function listServices(\n\tcontainer: unknown,\n): string[] {\n\tif (!container) return [];\n\tconst c = container as {\n\t\tlistProviders?: () => Array<{ token?: { toString(): string } }>;\n\t};\n\tif (typeof c.listProviders !== \"function\") return [];\n\ttry {\n\t\treturn c\n\t\t\t.listProviders()\n\t\t\t.map((p) => p.token?.toString?.() ?? String(p.token));\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nexport function isIncomplete(code: string): boolean {\n\t// Track string literals, line comments, block comments, and\n\t// bracket depth. Returns true if the code has any unclosed\n\t// bracket / string / comment.\n\tconst stack: string[] = [];\n\tlet inString: string | null = null;\n\tlet inComment: \"line\" | \"block\" | null = null;\n\tfor (let i = 0; i < code.length; i++) {\n\t\tconst c = code[i];\n\t\tconst next = code[i + 1];\n\t\tif (inComment === \"line\") {\n\t\t\tif (c === \"\\n\") inComment = null;\n\t\t\tcontinue;\n\t\t}\n\t\tif (inComment === \"block\") {\n\t\t\tif (c === \"*\" && next === \"/\") {\n\t\t\t\tinComment = null;\n\t\t\t\ti++;\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tif (inString) {\n\t\t\tif (c === \"\\\\\") {\n\t\t\t\ti++;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (c === inString) inString = null;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === \"/\" && next === \"/\") {\n\t\t\tinComment = \"line\";\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === \"/\" && next === \"*\") {\n\t\t\tinComment = \"block\";\n\t\t\ti++;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === '\"' || c === \"'\" || c === \"`\") {\n\t\t\tinString = c;\n\t\t\tcontinue;\n\t\t}\n\t\tif (c === \"{\" || c === \"[\" || c === \"(\") stack.push(c);\n\t\telse if (c === \"}\" || c === \"]\" || c === \")\") stack.pop();\n\t}\n\treturn stack.length > 0 || inString !== null || inComment === \"block\";\n}\n\nexport function formatResult(r: unknown): string {\n\tif (r === null) return \"null\";\n\tif (r === undefined) return \"undefined\";\n\tif (typeof r === \"string\") return r;\n\tif (\n\t\ttypeof r === \"number\" ||\n\t\ttypeof r === \"boolean\" ||\n\t\ttypeof r === \"bigint\"\n\t) return String(r);\n\tif (typeof r === \"function\") {\n\t\tconst fn = r as { name?: string };\n\t\treturn `[Function: ${fn.name || \"anonymous\"}]`;\n\t}\n\tif (typeof r === \"symbol\") return r.toString();\n\ttry {\n\t\treturn JSON.stringify(r, null, 2);\n\t} catch {\n\t\treturn Object.prototype.toString.call(r);\n\t}\n}\n\nexport function formatError(e: Error): string {\n\tif (e.name === \"SyntaxError\") return e.message;\n\treturn e.stack ? e.stack.split(\"\\n\").slice(0, 5).join(\"\\n\") : e.message;\n}\n\nfunction loadHistory(path: string): string[] {\n\tif (!existsSync(path)) return [];\n\ttry {\n\t\treturn readFileSync(path, \"utf-8\").split(\"\\n\").filter(Boolean);\n\t} catch {\n\t\treturn [];\n\t}\n}\n\nfunction saveHistoryFile(path: string, history: string[]): void {\n\ttry {\n\t\tconst dir = dirname(path);\n\t\tif (!existsSync(dir)) mkdirSync(dir, { recursive: true });\n\t\twriteFileSync(path, history.slice(-1000).join(\"\\n\"));\n\t} catch {\n\t\t// best effort\n\t}\n}\n\nexport default replCommand;\n",
|
|
54
55
|
"/**\n * `nx route:list` — list every registered HTTP route.\n *\n * Walks the project's controllers (under paths.controllers) and reads\n * the `@Controller(prefix)` + `@Get/@Post/...` metadata via reflection.\n * For modules that don't use the decorator style, this command emits\n * an informational message instead of failing.\n */\n\nimport { readdirSync, statSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport type { Command, CommandContext } from \"../core/index.js\";\nimport { colors, logger } from \"../core/index.js\";\n\ninterface DiscoveredRoute {\n\tmethod: string;\n\tpath: string;\n\thandler: string;\n\tcontroller: string;\n}\n\nexport const routeListCommand: Command = {\n\tname: \"route:list\",\n\taliases: [\"routes\", \"route-list\"],\n\tsummary: \"List registered HTTP routes\",\n\tdescription:\n\t\t\"Reads route metadata from controllers and prints a table. Falls back to a scan message when controllers don't use the decorator style.\",\n\tflags: [\n\t\t{ name: \"format\", description: \"Output format: table (default) | json\" },\n\t],\n\tasync run(ctx: CommandContext): Promise<number> {\n\t\tconst controllersDir = resolve(ctx.cwd, ctx.config.paths.controllers);\n\n\t\ttry {\n\t\t\tstatSync(controllersDir);\n\t\t} catch {\n\t\t\tlogger.warn(`No controllers directory at ${controllersDir}.`);\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst files = readdirSync(controllersDir).filter((f) => f.endsWith(\".ts\"));\n\t\tif (files.length === 0) {\n\t\t\tlogger.info(\"No controllers found.\");\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst routes: DiscoveredRoute[] = [];\n\n\t\tfor (const file of files) {\n\t\t\tconst fullPath = resolve(controllersDir, file);\n\t\t\ttry {\n\t\t\t\tconst mod: any = await import(`${fullPath}?t=${Date.now()}`);\n\t\t\t\tfor (const exportName of Object.keys(mod)) {\n\t\t\t\t\tconst cls = mod[exportName];\n\t\t\t\t\tif (typeof cls !== \"function\") continue;\n\n\t\t\t\t\tconst prefix =\n\t\t\t\t\t\tReflect.getMetadata(\"nexus:controller:prefix\", cls) ?? \"\";\n\t\t\t\t\tconst routeList = Reflect.getMetadata(\"nexus:routes\", cls) ?? [];\n\n\t\t\t\t\tfor (const r of routeList) {\n\t\t\t\t\t\troutes.push({\n\t\t\t\t\t\t\tmethod: String(r.method).toUpperCase(),\n\t\t\t\t\t\t\tpath: joinPath(prefix, r.path),\n\t\t\t\t\t\t\thandler: String(r.propertyKey),\n\t\t\t\t\t\t\tcontroller: cls.name || exportName,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (err: any) {\n\t\t\t\tlogger.warn(`could not parse ${file}: ${err.message ?? err}`);\n\t\t\t}\n\t\t}\n\n\t\tif (routes.length === 0) {\n\t\t\tlogger.info(\n\t\t\t\t\"No routes discovered via metadata. \" +\n\t\t\t\t\t\"This usually means the controllers use the Adonis or functional style — see nx.config.ts:routing.\",\n\t\t\t);\n\t\t\treturn 0;\n\t\t}\n\n\t\tconst format = (ctx.flags[\"format\"] as string | undefined) ?? \"table\";\n\t\tif (format === \"json\") {\n\t\t\tconsole.log(JSON.stringify(routes, null, 2));\n\t\t\treturn 0;\n\t\t}\n\n\t\troutes.sort((a, b) => a.path.localeCompare(b.path));\n\t\tlogger.heading(`Routes (${routes.length})`);\n\t\tconst methodColors: Record<string, (s: string) => string> = {\n\t\t\tGET: colors.cyan,\n\t\t\tPOST: colors.green,\n\t\t\tPUT: colors.yellow,\n\t\t\tPATCH: colors.yellow,\n\t\t\tDELETE: colors.red,\n\t\t\tOPTIONS: colors.gray,\n\t\t\tHEAD: colors.gray,\n\t\t};\n\t\tconst pathWidth = Math.max(...routes.map((r) => r.path.length));\n\t\tconst methodWidth = Math.max(...routes.map((r) => r.method.length));\n\t\tfor (const r of routes) {\n\t\t\tconst colorize = methodColors[r.method] ?? colors.reset;\n\t\t\tconst m = colorize(r.method.padEnd(methodWidth));\n\t\t\tconst p = colors.bold(r.path.padEnd(pathWidth));\n\t\t\tconst c = colors.dim(`${r.controller}.${r.handler}`);\n\t\t\tconsole.log(` ${m} ${p} ${c}`);\n\t\t}\n\t\tlogger.blank();\n\t\treturn 0;\n\t},\n};\n\nfunction joinPath(prefix: string, sub: string): string {\n\tconst a = prefix.endsWith(\"/\") ? prefix.slice(0, -1) : prefix;\n\tconst b = sub.startsWith(\"/\") ? sub : `/${sub}`;\n\treturn `${a}${b}` || \"/\";\n}\n\nexport default routeListCommand;\n",
|
|
55
56
|
"/**\n * CLI command registry. Imported by `src/cli/index.ts`.\n *\n * Each command is a `Command` object (see `core/index.ts`). The order\n * here is the order commands appear in `nx help`.\n */\n\nimport type { Command } from \"../core/index.js\";\nimport info from \"./info.js\";\nimport init from \"./init.js\";\nimport makeAuth from \"./make-auth.js\";\nimport makeController from \"./make-controller.js\";\nimport makeCrud from \"./make-crud.js\";\nimport makeListener from \"./make-listener.js\";\nimport makeMiddleware from \"./make-middleware.js\";\nimport makeMigration from \"./make-migration.js\";\nimport makeModel from \"./make-model.js\";\nimport makeModule from \"./make-module.js\";\nimport makeQueue from \"./make-queue.js\";\nimport makeSchedule from \"./make-schedule.js\";\nimport makeService from \"./make-service.js\";\nimport makeSession from \"./make-session.js\";\nimport makeValidator from \"./make-validator.js\";\nimport dbMigrate from \"./db-migrate.js\";\nimport dbGenerate from \"./db-generate.js\";\nimport dbSeed from \"./db-seed.js\";\nimport newCmd from \"./new.js\";\nimport configCmd from \"./config.js\";\nimport repl from \"./repl.js\";\nimport routeList from \"./route-list.js\";\n\nexport const commands: Command[] = [\n\tnewCmd,\n\tinit,\n\tconfigCmd,\n\tmakeCrud,\n\tmakeController,\n\tmakeService,\n\tmakeModule,\n\tmakeModel,\n\tmakeMigration,\n\tmakeMiddleware,\n\tmakeValidator,\n\tmakeAuth,\n\tmakeQueue,\n\tmakeSchedule,\n\tmakeListener,\n\tmakeSession,\n\tdbMigrate,\n\tdbGenerate,\n\tdbSeed,\n\trouteList,\n\tinfo,\n\trepl,\n];\n\n/** Look up a command by primary name OR by any alias. */\nexport function findCommand(name: string): Command | undefined {\n\treturn commands.find(\n\t\t(c) => c.name === name || (c.aliases ?? []).includes(name),\n\t);\n}\n",
|
|
56
57
|
"#!/usr/bin/env bun\n\n/**\n * `nx` — the Nexus CLI entry point.\n *\n * Invocation:\n * bunx nx <command> [args...]\n * bunx nx help\n * bunx nx help <command>\n *\n * Resembles Adonis ACE / Rails generators:\n * nx make:controller User\n * nx make:crud Post --no-views\n * nx make:migration create_users_table --columns \"name:text,email:text\"\n * nx info\n * nx route:list\n * nx init --style nest --view inertia --orm drizzle\n *\n * The CLI loads `nx.config.ts` (or `nx.config.js` / `.nxrc.json`) and\n * passes the resolved config + parsed flags to each command.\n */\n\nimport { commands, findCommand } from \"./commands/index.js\";\nimport { loadConfig } from \"./core/config.js\";\nimport { colors, flagBool, logger, parseArgs } from \"./core/index.js\";\n\nasync function main(): Promise<number> {\n\tconst parsed = parseArgs(process.argv.slice(2));\n\tconst verbose = flagBool(parsed.flags, \"verbose\", false);\n\tlogger.setVerbose(verbose);\n\n\t// Top-level flags.\n\tif (parsed.flags[\"version\"] === true) {\n\t\tconsole.log(PKG_VERSION);\n\t\treturn 0;\n\t}\n\n\tif (parsed.flags[\"help\"] === true || parsed.command === \"help\") {\n\t\treturn renderHelp(parsed.positional[0]);\n\t}\n\n\tconst command = parsed.command ? findCommand(parsed.command) : undefined;\n\tif (!command) {\n\t\tif (parsed.command) {\n\t\t\tlogger.error(`Unknown command: ${parsed.command}`);\n\t\t\tlogger.info(`Run \\`nx help\\` for a list of commands.`);\n\t\t\treturn 1;\n\t\t}\n\t\treturn renderHelp();\n\t}\n\n\tconst cwd = process.cwd();\n\tconst config = await loadConfig(cwd);\n\n\treturn command.run({\n\t\tcwd,\n\t\tconfig,\n\t\tpositional: parsed.positional,\n\t\tflags: parsed.flags,\n\t});\n}\n\nfunction renderHelp(commandName?: string): number {\n\tif (commandName) {\n\t\tconst cmd = findCommand(commandName);\n\t\tif (!cmd) {\n\t\t\tlogger.error(`Unknown command: ${commandName}`);\n\t\t\treturn 1;\n\t\t}\n\t\trenderCommandHelp(cmd);\n\t\treturn 0;\n\t}\n\n\tlogger.heading(\"nx — Nexus CLI\");\n\tconsole.log(`\n ${colors.dim(\"Adonis ACE-style command runner for the NexusTS framework.\")}\n\n${colors.bold(\"Usage\")}\n nx <command> [args...]\n\n${colors.bold(\"Commands\")}\n`);\n\n\tconst nameWidth = Math.max(...commands.map((c) => c.name.length));\n\tfor (const c of commands) {\n\t\tconst padded = c.name.padEnd(nameWidth);\n\t\tconst aliasStr = c.aliases?.length\n\t\t\t? ` ${colors.dim(`(${c.aliases.join(\", \")})`)}`\n\t\t\t: \"\";\n\t\tconsole.log(` ${colors.cyan(padded)}${aliasStr} ${c.summary}`);\n\t}\n\n\tconsole.log(`\n${colors.bold(\"Global flags\")}\n --help, -h Show help (or \\`nx help <command>\\`)\n --version, -v Print the CLI version\n --verbose Verbose output\n --no-color Disable ANSI color output\n\n${colors.bold(\"Examples\")}\n ${colors.dim(\"nx new my-app\")}\n ${colors.dim(\"nx init --style nest --view inertia --orm drizzle\")}\n ${colors.dim(\"nx make:crud Post\")}\n ${colors.dim(\"nx make:controller User\")}\n ${colors.dim(\"nx make:migration create_users_table\")}\n ${colors.dim(\"nx info\")}\n ${colors.dim(\"nx route:list\")}\n`);\n\treturn 0;\n}\n\nfunction renderCommandHelp(cmd: import(\"./core/index.js\").Command): void {\n\tlogger.heading(cmd.name);\n\tif (cmd.aliases?.length) {\n\t\tconsole.log(` ${colors.dim(\"aliases:\")} ${cmd.aliases.join(\", \")}`);\n\t}\n\tif (cmd.description) console.log(`\\n ${cmd.description}\\n`);\n\n\tif (cmd.flags?.length) {\n\t\tconsole.log(colors.bold(\"\\nFlags\"));\n\t\tfor (const f of cmd.flags) {\n\t\t\tconst short = f.short ? `, -${f.short}` : \"\";\n\t\t\tconst def =\n\t\t\t\tf.default !== undefined\n\t\t\t\t\t? ` ${colors.dim(`(default: ${String(f.default)})`)}`\n\t\t\t\t\t: \"\";\n\t\t\tconsole.log(` --${f.name}${short.padEnd(6)} ${f.description}${def}`);\n\t\t}\n\t}\n\n\tif (cmd.examples?.length) {\n\t\tconsole.log(colors.bold(\"\\nExamples\"));\n\t\tfor (const ex of cmd.examples) {\n\t\t\tconsole.log(` ${colors.cyan(ex)}`);\n\t\t}\n\t}\n\tconsole.log();\n}\n\nconst PKG_VERSION = \"0.1.0\";\n\nmain()\n\t.then((code) => process.exit(code))\n\t.catch((err) => {\n\t\tlogger.error(err?.message ?? String(err));\n\t\tif (process.env[\"NX_DEBUG\"] === \"1\" && err?.stack) {\n\t\t\tconsole.error(err.stack);\n\t\t}\n\t\tprocess.exit(1);\n\t});\n"
|
|
57
58
|
],
|
|
58
|
-
"mappings": "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;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiDb,UAAU;;;ACjDZ,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAoCb,UAAU;;;AChCZ,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAiBb,UAAU;;;AC1BZ,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKf,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACCf,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcb,UAAU;;;ACfZ,IAAe;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;A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",
|
|
59
|
-
"debugId": "
|
|
59
|
+
"mappings": "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",
|
|
60
|
+
"debugId": "9D68E94AB6C5D92664756E2164756E21",
|
|
60
61
|
"names": []
|
|
61
62
|
}
|