@wild-framework/cli 0.1.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/dist/cli.d.ts.map +1 -1
  2. package/dist/cli.js +109 -5
  3. package/dist/cli.js.map +1 -1
  4. package/dist/client/codegen.d.ts +32 -0
  5. package/dist/client/codegen.d.ts.map +1 -0
  6. package/dist/client/codegen.js +94 -0
  7. package/dist/client/codegen.js.map +1 -0
  8. package/dist/client/command.d.ts +29 -0
  9. package/dist/client/command.d.ts.map +1 -0
  10. package/dist/client/command.js +95 -0
  11. package/dist/client/command.js.map +1 -0
  12. package/dist/client/contract.d.ts +86 -0
  13. package/dist/client/contract.d.ts.map +1 -0
  14. package/dist/client/contract.js +12 -0
  15. package/dist/client/contract.js.map +1 -0
  16. package/dist/client/core.d.ts +80 -0
  17. package/dist/client/core.d.ts.map +1 -0
  18. package/dist/client/core.js +52 -0
  19. package/dist/client/core.js.map +1 -0
  20. package/dist/client/fs-writer.d.ts +13 -0
  21. package/dist/client/fs-writer.d.ts.map +1 -0
  22. package/dist/client/fs-writer.js +24 -0
  23. package/dist/client/fs-writer.js.map +1 -0
  24. package/dist/client/inspector.d.ts +19 -0
  25. package/dist/client/inspector.d.ts.map +1 -0
  26. package/dist/client/inspector.js +71 -0
  27. package/dist/client/inspector.js.map +1 -0
  28. package/dist/client/spec.d.ts +13 -0
  29. package/dist/client/spec.d.ts.map +1 -0
  30. package/dist/client/spec.js +235 -0
  31. package/dist/client/spec.js.map +1 -0
  32. package/dist/client/targets/index.d.ts +9 -0
  33. package/dist/client/targets/index.d.ts.map +1 -0
  34. package/dist/client/targets/index.js +11 -0
  35. package/dist/client/targets/index.js.map +1 -0
  36. package/dist/client/targets/react.d.ts +20 -0
  37. package/dist/client/targets/react.d.ts.map +1 -0
  38. package/dist/client/targets/react.js +519 -0
  39. package/dist/client/targets/react.js.map +1 -0
  40. package/dist/commands/ci.d.ts +5 -0
  41. package/dist/commands/ci.d.ts.map +1 -0
  42. package/dist/commands/ci.js +254 -0
  43. package/dist/commands/ci.js.map +1 -0
  44. package/dist/commands/db.d.ts +13 -0
  45. package/dist/commands/db.d.ts.map +1 -0
  46. package/dist/commands/db.js +104 -0
  47. package/dist/commands/db.js.map +1 -0
  48. package/dist/commands/docker.d.ts +9 -0
  49. package/dist/commands/docker.d.ts.map +1 -0
  50. package/dist/commands/docker.js +175 -0
  51. package/dist/commands/docker.js.map +1 -0
  52. package/dist/commands/graph.d.ts +9 -0
  53. package/dist/commands/graph.d.ts.map +1 -0
  54. package/dist/commands/graph.js +36 -0
  55. package/dist/commands/graph.js.map +1 -0
  56. package/dist/commands/make.d.ts +1 -1
  57. package/dist/commands/make.d.ts.map +1 -1
  58. package/dist/commands/make.js +51 -0
  59. package/dist/commands/make.js.map +1 -1
  60. package/dist/commands/new.d.ts +24 -0
  61. package/dist/commands/new.d.ts.map +1 -0
  62. package/dist/commands/new.js +374 -0
  63. package/dist/commands/new.js.map +1 -0
  64. package/dist/commands/resource.d.ts +33 -0
  65. package/dist/commands/resource.d.ts.map +1 -0
  66. package/dist/commands/resource.js +291 -0
  67. package/dist/commands/resource.js.map +1 -0
  68. package/dist/templates/resource-slice.d.ts +87 -0
  69. package/dist/templates/resource-slice.d.ts.map +1 -0
  70. package/dist/templates/resource-slice.js +513 -0
  71. package/dist/templates/resource-slice.js.map +1 -0
  72. package/package.json +9 -3
@@ -1 +1 @@
1
- {"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../src/commands/make.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACrB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAChB,UAAU,EAAE,CAwCd;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAatD;AAsBD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CA+BtF;AAmBD,OAAO,EAAE,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"make.d.ts","sourceRoot":"","sources":["../../src/commands/make.ts"],"names":[],"mappings":"AACA,OAAO,EAAiB,QAAQ,EAAE,MAAM,WAAW,CAAC;AAEpD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAEvD,YAAY,EAAE,SAAS,EAAE,CAAC;AAE1B;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYlD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKhD;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CACrB,KAAK,EAAE,SAAS,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,OAAO,EAAE,MAAM,GAChB,UAAU,EAAE,CAwCd;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAatD;AAsBD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC,GAAG,OAAO,CAmCpG;AA2ED,OAAO,EAAE,QAAQ,EAAE,CAAC"}
@@ -127,6 +127,9 @@ function toTitleCase(name) {
127
127
  * @returns true on success, false on error (error already printed)
128
128
  */
129
129
  export function makeCommand(piece, args) {
130
+ if (piece === "migration") {
131
+ return makeMigration(args);
132
+ }
130
133
  const [name, targetDir] = args;
131
134
  if (!name) {
132
135
  console.error(`wild: make:${piece} requires a name, e.g. "wild make:${piece} ${exampleName(piece)}"`);
@@ -169,6 +172,54 @@ function exampleName(piece) {
169
172
  };
170
173
  return map[piece] ?? "Thing";
171
174
  }
175
+ /**
176
+ * Generate a SQL migration file pair under `migrations/`.
177
+ *
178
+ * `wild make:migration add-order-index` →
179
+ * migrations/20261010120000_add-order-index.sql
180
+ * migrations/20261010120000_add-order-index.down.sql
181
+ */
182
+ function makeMigration(args) {
183
+ const [rawName] = args;
184
+ if (!rawName) {
185
+ console.error('wild: make:migration requires a name, e.g. "wild make:migration add-order-index"');
186
+ return false;
187
+ }
188
+ const slug = toKebabCase(rawName).replace(/\s+/g, "-").replace(/-+/g, "-").replace(/^-+|-+$/g, "");
189
+ if (!slug) {
190
+ console.error(`wild: "${rawName}" is not a valid migration name.`);
191
+ return false;
192
+ }
193
+ const base = `${timestamp()}_${slug}`;
194
+ const dir = join(process.cwd(), "migrations");
195
+ const files = [
196
+ { path: join(dir, `${base}.sql`), content: migrationUpSql(base) },
197
+ { path: join(dir, `${base}.down.sql`), content: migrationDownSql(base) },
198
+ ];
199
+ console.log(`\nGenerating migration: ${rawName}\n`);
200
+ const written = writeFiles(files);
201
+ if (written === 0) {
202
+ console.log("\nNothing to do — all files already exist.");
203
+ }
204
+ else {
205
+ console.log(`\nDone. ${written} migration file(s) created.`);
206
+ console.log('Wire them into your app: DrizzleProvider.migrations = loadMigrations("./migrations");');
207
+ console.log("ā„¹ļø New migration(s) detected — run `wild db:migrate` to apply them.");
208
+ }
209
+ return true;
210
+ }
211
+ /** `YYYYMMDDHHMMSS` timestamp used to order migration files. */
212
+ function timestamp() {
213
+ const d = new Date();
214
+ const p = (n) => String(n).padStart(2, "0");
215
+ return `${d.getFullYear()}${p(d.getMonth() + 1)}${p(d.getDate())}${p(d.getHours())}${p(d.getMinutes())}${p(d.getSeconds())}`;
216
+ }
217
+ function migrationUpSql(name) {
218
+ return `-- Migration: ${name}\n-- Apply your schema or data changes below.\n\n`;
219
+ }
220
+ function migrationDownSql(name) {
221
+ return `-- Rollback: ${name}\n-- Undo the changes from ${name}.sql.\n\n`;
222
+ }
172
223
  // Re-export for CLI dispatch
173
224
  export { basename };
174
225
  //# sourceMappingURL=make.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"make.js","sourceRoot":"","sources":["../../src/commands/make.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"make.js","sourceRoot":"","sources":["../../src/commands/make.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export type AskFn = (question: string) => Promise<string>;
2
+ export type PrintFn = (line: string) => void;
3
+ /** Options gathered for a new project. */
4
+ export interface NewProjectOptions {
5
+ name: string;
6
+ database: "sqlite" | "postgres" | "mysql";
7
+ cache: "memory" | "redis";
8
+ mail: "memory" | "smtp";
9
+ storage: "local" | "s3" | "gcs";
10
+ logging: "console" | "pino";
11
+ }
12
+ /**
13
+ * Run `wild new <name>` — scaffold a new Wild Framework project.
14
+ *
15
+ * Multi-step interactive wizard (create-next-app style) when invoked
16
+ * without flags; otherwise driven entirely by flags:
17
+ *
18
+ * wild new my-app --db postgres --cache redis --mail smtp --storage s3 --log pino
19
+ */
20
+ export declare function runNew(args: string[], deps?: {
21
+ ask?: AskFn;
22
+ print?: PrintFn;
23
+ }): Promise<number>;
24
+ //# sourceMappingURL=new.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1D,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7C,0CAA0C;AAC1C,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;IAC1C,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,CAAC;IACxB,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK,CAAC;IAChC,OAAO,EAAE,SAAS,GAAG,MAAM,CAAC;CAC/B;AAUD;;;;;;;GAOG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAuDrG"}
@@ -0,0 +1,374 @@
1
+ import { createInterface } from "node:readline";
2
+ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ const DEFAULTS = {
5
+ database: "sqlite",
6
+ cache: "memory",
7
+ mail: "memory",
8
+ storage: "local",
9
+ logging: "console",
10
+ };
11
+ /**
12
+ * Run `wild new <name>` — scaffold a new Wild Framework project.
13
+ *
14
+ * Multi-step interactive wizard (create-next-app style) when invoked
15
+ * without flags; otherwise driven entirely by flags:
16
+ *
17
+ * wild new my-app --db postgres --cache redis --mail smtp --storage s3 --log pino
18
+ */
19
+ export async function runNew(args, deps) {
20
+ const print = deps?.print ?? console.log;
21
+ const ask = deps?.ask;
22
+ const flags = parseFlags(args);
23
+ let name = flags.name;
24
+ if (!name && ask) {
25
+ name = (await ask("Project name: ")).trim();
26
+ }
27
+ if (!name) {
28
+ print("wild: new requires a project name, e.g. \"wild new my-app\"");
29
+ return 1;
30
+ }
31
+ if (!/^[a-z0-9][a-z0-9-]*$/.test(name)) {
32
+ print(`wild: "${name}" is not a valid project name. Use lowercase letters, numbers, and dashes.`);
33
+ return 1;
34
+ }
35
+ const pick = ask
36
+ ? (label, options, def) => pickOption({ ask, print }, label, options, def)
37
+ : undefined;
38
+ const options = {
39
+ name,
40
+ database: flags.database ?? (pick ? await pick("Database", ["sqlite", "postgres", "mysql"], DEFAULTS.database) : DEFAULTS.database),
41
+ cache: flags.cache ?? (pick ? await pick("Cache", ["memory", "redis"], DEFAULTS.cache) : DEFAULTS.cache),
42
+ mail: flags.mail ?? (pick ? await pick("Mail", ["memory", "smtp"], DEFAULTS.mail) : DEFAULTS.mail),
43
+ storage: flags.storage ?? (pick ? await pick("Storage", ["local", "s3", "gcs"], DEFAULTS.storage) : DEFAULTS.storage),
44
+ logging: flags.logging ?? (pick ? await pick("Logging", ["console", "pino"], DEFAULTS.logging) : DEFAULTS.logging),
45
+ };
46
+ const root = join(process.cwd(), name);
47
+ if (existsSync(root)) {
48
+ print(`wild: directory "${name}" already exists.`);
49
+ return 1;
50
+ }
51
+ const files = renderProject(options);
52
+ mkdirSync(root, { recursive: true });
53
+ for (const file of files) {
54
+ const path = join(root, file.path);
55
+ mkdirSync(join(path, ".."), { recursive: true });
56
+ writeFileSync(path, file.content, "utf8");
57
+ print(` create ${file.path}`);
58
+ }
59
+ print(`\nDone. Created ${name}/.`);
60
+ print(`\nNext steps:`);
61
+ print(` cd ${name}`);
62
+ print(` pnpm install`);
63
+ print(` pnpm dev # http://localhost:3000 (docs at /docs)`);
64
+ print(`\nSwap backends by editing .env (no code changes):`);
65
+ print(` DATABASE_URL / REDIS_URL / MAIL_DRIVER / STORAGE_DRIVER / LOG_DRIVER`);
66
+ return 0;
67
+ }
68
+ async function pickOption(deps, label, options, def) {
69
+ const { ask, print } = deps;
70
+ print(`\n${label} — ${options.join(" | ")} (default: ${def}):`);
71
+ const answer = (await ask(` ${label.toLowerCase()} [${def}]: `)).trim().toLowerCase();
72
+ return options.includes(answer) ? answer : def;
73
+ }
74
+ function parseFlags(args) {
75
+ const flags = {};
76
+ for (let i = 0; i < args.length; i++) {
77
+ const arg = args[i];
78
+ if (!arg)
79
+ continue;
80
+ const next = args[i + 1];
81
+ if (arg.startsWith("--")) {
82
+ const key = arg.slice(2);
83
+ if (key === "db")
84
+ flags.database = normalize(next, ["sqlite", "postgres", "mysql"]);
85
+ else if (key === "cache")
86
+ flags.cache = normalize(next, ["memory", "redis"]);
87
+ else if (key === "mail")
88
+ flags.mail = normalize(next, ["memory", "smtp"]);
89
+ else if (key === "storage")
90
+ flags.storage = normalize(next, ["local", "s3", "gcs"]);
91
+ else if (key === "log" || key === "logging")
92
+ flags.logging = normalize(next, ["console", "pino"]);
93
+ i++;
94
+ }
95
+ else {
96
+ flags.name = arg;
97
+ }
98
+ }
99
+ return flags;
100
+ }
101
+ function normalize(value, allowed) {
102
+ const v = (value ?? "").toLowerCase();
103
+ return allowed.includes(v) ? v : undefined;
104
+ }
105
+ function renderProject(o) {
106
+ const deps = [
107
+ "@wild-framework/core",
108
+ "@wild-framework/container",
109
+ "@wild-framework/config",
110
+ "@wild-framework/http",
111
+ "@wild-framework/logging-auto",
112
+ "@wild-framework/events",
113
+ "@wild-framework/queue",
114
+ "@wild-framework/auth",
115
+ "@wild-framework/resources",
116
+ "@wild-framework/openapi",
117
+ "@wild-framework/database-auto",
118
+ "@wild-framework/cache-auto",
119
+ "@wild-framework/mail-auto",
120
+ "@wild-framework/storage-auto",
121
+ "express",
122
+ "zod",
123
+ ];
124
+ const depLines = deps.map((d) => ` "${d}": "^0.1.1",`).join("\n");
125
+ return [
126
+ {
127
+ path: "package.json",
128
+ content: `{
129
+ "name": "${o.name}",
130
+ "version": "0.1.0",
131
+ "private": true,
132
+ "type": "module",
133
+ "scripts": {
134
+ "dev": "tsx watch src/index.ts",
135
+ "build": "tsc",
136
+ "start": "node dist/index.js",
137
+ "test": "vitest run"
138
+ },
139
+ "dependencies": {
140
+ ${depLines}
141
+ },
142
+ "devDependencies": {
143
+ "@types/express": "^5.0.0",
144
+ "@types/node": "^22.0.0",
145
+ "tsx": "^4.19.0",
146
+ "typescript": "^5.7.0",
147
+ "vitest": "^3.0.0"
148
+ }
149
+ }
150
+ `,
151
+ },
152
+ {
153
+ path: "tsconfig.json",
154
+ content: `{
155
+ "compilerOptions": {
156
+ "target": "ES2022",
157
+ "module": "NodeNext",
158
+ "moduleResolution": "NodeNext",
159
+ "lib": ["ES2022"],
160
+ "outDir": "dist",
161
+ "rootDir": "src",
162
+ "strict": true,
163
+ "esModuleInterop": true,
164
+ "skipLibCheck": true,
165
+ "forceConsistentCasingInFileNames": true
166
+ },
167
+ "include": ["src"],
168
+ "exclude": ["node_modules", "dist"]
169
+ }
170
+ `,
171
+ },
172
+ {
173
+ path: ".gitignore",
174
+ content: `node_modules/
175
+ dist/
176
+ .env
177
+ .env.*
178
+ !.env.example
179
+ *.db
180
+ *.db-*
181
+ *.log
182
+ `,
183
+ },
184
+ {
185
+ path: ".env.example",
186
+ content: envExample(o),
187
+ },
188
+ {
189
+ path: "src/app.ts",
190
+ content: appTemplate(o),
191
+ },
192
+ {
193
+ path: "src/index.ts",
194
+ content: indexTemplate(o),
195
+ },
196
+ {
197
+ path: "README.md",
198
+ content: readmeTemplate(o),
199
+ },
200
+ ];
201
+ }
202
+ function envExample(o) {
203
+ const lines = [
204
+ `# ${o.name} environment configuration. Copy to .env and adjust.`,
205
+ "",
206
+ "# --- Database ---",
207
+ ];
208
+ if (o.database === "postgres") {
209
+ lines.push("DATABASE_URL=postgres://user:pass@host:5432/db");
210
+ }
211
+ else if (o.database === "mysql") {
212
+ lines.push("DATABASE_URL=mysql://user:pass@host:3306/db");
213
+ }
214
+ else {
215
+ lines.push("DATABASE_URL=", "# DB_FILE=app.db");
216
+ }
217
+ lines.push("", "# --- Cache ---");
218
+ if (o.cache === "redis")
219
+ lines.push("REDIS_URL=redis://localhost:6379");
220
+ else
221
+ lines.push("# REDIS_URL=redis://localhost:6379", "REDIS_URL=");
222
+ lines.push("", "# --- Mail ---");
223
+ if (o.mail === "smtp") {
224
+ lines.push("MAIL_DRIVER=smtp", "SMTP_HOST=localhost", "SMTP_PORT=1025", "MAIL_FROM=no-reply@example.com");
225
+ }
226
+ else {
227
+ lines.push("MAIL_DRIVER=", "# MAIL_DRIVER=smtp SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASS=");
228
+ }
229
+ lines.push("", "# --- Storage ---");
230
+ if (o.storage === "s3") {
231
+ lines.push("STORAGE_DRIVER=s3", "AWS_BUCKET=my-bucket", "AWS_REGION=us-east-1", "AWS_ACCESS_KEY_ID=", "AWS_SECRET_ACCESS_KEY=");
232
+ }
233
+ else if (o.storage === "gcs") {
234
+ lines.push("STORAGE_DRIVER=gcs", "GCS_BUCKET=my-bucket", "GCS_PROJECT_ID=");
235
+ }
236
+ else {
237
+ lines.push("STORAGE_DRIVER=", "# STORAGE_DRIVER=s3 | gcs (default: local ./storage)");
238
+ }
239
+ lines.push("", "# --- Logging ---", `LOG_DRIVER=${o.logging}`, "", "# --- Server ---", "PORT=3000");
240
+ return lines.join("\n") + "\n";
241
+ }
242
+ function appTemplate(o) {
243
+ return `import { createApplication } from "@wild-framework/core";
244
+ import type { Provider, Application } from "@wild-framework/core";
245
+ import { ContainerProvider } from "@wild-framework/container";
246
+ import { ConfigProvider, loadEnv } from "@wild-framework/config";
247
+ import { LoggerProvider } from "@wild-framework/logging-auto";
248
+ import { HttpProvider, Router, action } from "@wild-framework/http";
249
+ import { EventProvider } from "@wild-framework/events";
250
+ import { QueueProvider } from "@wild-framework/queue";
251
+ import { CacheProvider } from "@wild-framework/cache-auto";
252
+ import { MailProvider } from "@wild-framework/mail-auto";
253
+ import { StorageProvider } from "@wild-framework/storage-auto";
254
+ import { DatabaseProvider } from "@wild-framework/database-auto";
255
+ import { AuthProvider } from "@wild-framework/auth";
256
+ import { OpenApiProvider } from "@wild-framework/openapi";
257
+ import type { Request, Response } from "express";
258
+
259
+ /** A simple health check — replace with your feature providers. */
260
+ class HealthController {
261
+ index(_req: Request, res: Response) {
262
+ return res.json({ status: "ok", uptime: process.uptime() });
263
+ }
264
+ }
265
+
266
+ /** Registers the starter route. Feature providers register their own routes. */
267
+ class AppProvider implements Provider {
268
+ register(app: Application): void {
269
+ const router = app.resolve<Router>(Router);
270
+ router.get("/health", action(HealthController, "index"));
271
+ }
272
+ }
273
+
274
+ /**
275
+ * Build and boot the ${o.name} application.
276
+ */
277
+ export async function createApp() {
278
+ loadEnv();
279
+
280
+ const app = createApplication();
281
+
282
+ app.register(ContainerProvider);
283
+ app.register(ConfigProvider);
284
+ app.register(LoggerProvider);
285
+ app.register(EventProvider);
286
+ app.register(QueueProvider);
287
+ app.register(CacheProvider);
288
+ app.register(MailProvider);
289
+ app.register(StorageProvider);
290
+ app.register(DatabaseProvider);
291
+ app.register(AuthProvider);
292
+ app.register(HttpProvider);
293
+
294
+ app.register(AppProvider);
295
+
296
+ OpenApiProvider.options = { title: "${o.name} API", version: "1.0.0" };
297
+ app.register(OpenApiProvider);
298
+
299
+ await app.boot();
300
+ return app;
301
+ }
302
+ `;
303
+ }
304
+ function indexTemplate(o) {
305
+ return `import { loadEnv } from "@wild-framework/config";
306
+ import { createApp } from "./app.js";
307
+
308
+ loadEnv();
309
+
310
+ const port = Number(process.env.PORT ?? 3000);
311
+
312
+ const app = await createApp();
313
+ await app.listen(port);
314
+
315
+ console.log(\`\\nšŸš€ ${o.name} API running at http://localhost:\${port}\\n\`);
316
+ console.log("Docs: http://localhost:" + port + "/docs");
317
+
318
+ const shutdown = async () => {
319
+ console.log("\\nShutting down...");
320
+ await app.shutdown();
321
+ process.exit(0);
322
+ };
323
+ process.on("SIGTERM", shutdown);
324
+ process.on("SIGINT", shutdown);
325
+ `;
326
+ }
327
+ function readmeTemplate(o) {
328
+ const table = [
329
+ ["Database", o.database, "DATABASE_URL"],
330
+ ["Cache", o.cache, "REDIS_URL"],
331
+ ["Mail", o.mail, "MAIL_DRIVER"],
332
+ ["Storage", o.storage, "STORAGE_DRIVER"],
333
+ ["Logging", o.logging, "LOG_DRIVER"],
334
+ ]
335
+ .map(([name, value, env]) => `| ${name} | ${value} | \`${env}\` |`)
336
+ .join("\n");
337
+ return `# ${o.name}
338
+
339
+ A [Wild Framework](https://github.com/KhandaSoftware/wild-framework) app.
340
+
341
+ ## Get started
342
+
343
+ \`\`\`bash
344
+ pnpm install
345
+ pnpm dev
346
+ \`\`\`
347
+
348
+ - API: http://localhost:3000
349
+ - OpenAPI docs: http://localhost:3000/docs
350
+
351
+ ## Backends (swap via \`.env\`, no code changes)
352
+
353
+ | Concern | Default | Env |
354
+ |---------|---------|-----|
355
+ ${table}
356
+
357
+ ## Generate a feature
358
+
359
+ \`\`\`bash
360
+ wild resource Product --field name:string --field price:number
361
+ \`\`\`
362
+
363
+ Then register \`ProductProvider\` in \`src/app.ts\`.
364
+
365
+ ## Database migrations
366
+
367
+ \`\`\`bash
368
+ wild db:migrate # apply pending migrations
369
+ wild db:status # list applied vs pending
370
+ wild db:rollback # revert the most recent migration
371
+ \`\`\`
372
+ `;
373
+ }
374
+ //# sourceMappingURL=new.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { type ResourceAddons, type ResourceField } from "../templates/resource-slice.js";
2
+ export type { ResourceField };
3
+ /** A function that asks the user a question. */
4
+ export type AskFn = (question: string) => Promise<string>;
5
+ /** A printer for command output. */
6
+ export type PrintFn = (line: string) => void;
7
+ /**
8
+ * Run `wild resource <Name>` — generate a full vertical slice.
9
+ *
10
+ * Non-interactive:
11
+ * wild resource Product --field name:string --field price:number
12
+ *
13
+ * Interactive (no name): guided multi-step wizard asking for the name and
14
+ * fields.
15
+ */
16
+ export declare function runResource(args: string[], deps?: {
17
+ ask?: AskFn;
18
+ print?: PrintFn;
19
+ }): Promise<number>;
20
+ /** Interactive wizard for the resource command (ACF-style: fields + rules + add-ons). */
21
+ export declare function runResourceWizard(deps: {
22
+ ask?: AskFn;
23
+ print: PrintFn;
24
+ }): Promise<{
25
+ name: string;
26
+ fields: ResourceField[];
27
+ addons: ResourceAddons;
28
+ } | null>;
29
+ /**
30
+ * Run `wild resource` with real stdin/stdout.
31
+ */
32
+ export declare function runResourceCli(args: string[]): Promise<number>;
33
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../src/commands/resource.ts"],"names":[],"mappings":"AAIA,OAAO,EAIH,KAAK,cAAc,EACnB,KAAK,aAAa,EAErB,MAAM,gCAAgC,CAAC;AAExC,YAAY,EAAE,aAAa,EAAE,CAAC;AAE9B,gDAAgD;AAChD,MAAM,MAAM,KAAK,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAC1D,oCAAoC;AACpC,MAAM,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAE7C;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAkF1G;AAED,yFAAyF;AACzF,wBAAsB,iBAAiB,CACnC,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GACtC,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,aAAa,EAAE,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAE,GAAG,IAAI,CAAC,CA+CnF;AAqID;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAYpE"}