@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
@@ -0,0 +1,513 @@
1
+ /**
2
+ * Resource slice templates — a full vertical feature.
3
+ *
4
+ * `wild resource Product` generates, under `features/products/`:
5
+ * products-provider.ts — DI bindings + routes
6
+ * product-service.ts — business logic (in-memory CRUD)
7
+ * product-controller.ts — thin HTTP handlers
8
+ * create-product-request.ts — Zod validators (create + update)
9
+ * product-resource.ts — response shaping
10
+ * products.test.ts — service test
11
+ * plus a `migrations/<ts>_create_products.sql` + `.down.sql` pair.
12
+ */
13
+ // ---------------------------------------------------------------------------
14
+ // Field helpers
15
+ // ---------------------------------------------------------------------------
16
+ /** Is the field optional (i.e. not required)? */
17
+ function isOptional(field) {
18
+ return field.rules?.required === false && field.rules?.default === undefined;
19
+ }
20
+ /** The TypeScript type for a field, e.g. `string`, `number`, `"a" | "b"`, `string[]`. */
21
+ export function tsType(field) {
22
+ const base = baseTsType(field);
23
+ if (field.rules?.array) {
24
+ // enum union needs parens: ("a" | "b")[]
25
+ return field.type === "enum" ? `(${base})[]` : `${base}[]`;
26
+ }
27
+ return base;
28
+ }
29
+ /** The scalar TS type (before array wrapping). */
30
+ function baseTsType(field) {
31
+ switch (field.type) {
32
+ case "int":
33
+ case "float":
34
+ return "number";
35
+ case "boolean":
36
+ return "boolean";
37
+ case "enum":
38
+ return enumUnion(field);
39
+ case "json":
40
+ return "unknown";
41
+ default:
42
+ return "string";
43
+ }
44
+ }
45
+ /** The TS interface line for a field, e.g. `email: string;` / `nickname?: string;`. */
46
+ export function interfaceLine(field) {
47
+ const optional = isOptional(field) ? "?" : "";
48
+ return `${field.name}${optional}: ${tsType(field)};`;
49
+ }
50
+ /** The full Zod chain for a field, e.g. `z.string().email().optional()`. */
51
+ export function zodChain(field) {
52
+ const r = field.rules ?? {};
53
+ const base = zodBase(field);
54
+ const inner = r.array ? `z.array(${base})` : base;
55
+ if (r.default !== undefined) {
56
+ return `${inner}.default(${JSON.stringify(r.default)})`;
57
+ }
58
+ else if (r.required === false) {
59
+ return `${inner}.optional()`;
60
+ }
61
+ return inner;
62
+ }
63
+ /** The scalar Zod chain (before array/optional/default wrapping). */
64
+ function zodBase(field) {
65
+ const r = field.rules ?? {};
66
+ switch (field.type) {
67
+ case "int": {
68
+ let s = "z.number().int()";
69
+ if (r.min !== undefined)
70
+ s += `.min(${r.min})`;
71
+ if (r.max !== undefined)
72
+ s += `.max(${r.max})`;
73
+ return s;
74
+ }
75
+ case "float": {
76
+ let s = "z.number()";
77
+ if (r.min !== undefined)
78
+ s += `.min(${r.min})`;
79
+ if (r.max !== undefined)
80
+ s += `.max(${r.max})`;
81
+ return s;
82
+ }
83
+ case "boolean":
84
+ return "z.boolean()";
85
+ case "enum":
86
+ return `z.enum([${(r.options ?? []).map((o) => JSON.stringify(o)).join(", ")}])`;
87
+ case "json":
88
+ return "z.any()";
89
+ default: {
90
+ let s = "z.string()";
91
+ if (field.type === "email")
92
+ s += ".email()";
93
+ if (field.type === "url")
94
+ s += ".url()";
95
+ if (field.type === "uuid")
96
+ s += ".uuid()";
97
+ if (r.minLength !== undefined)
98
+ s += `.min(${r.minLength})`;
99
+ if (r.maxLength !== undefined)
100
+ s += `.max(${r.maxLength})`;
101
+ if (r.pattern)
102
+ s += `.regex(${regexLiteral(r.pattern)})`;
103
+ return s;
104
+ }
105
+ }
106
+ }
107
+ /** The SQL column definition for a field, e.g. `name TEXT NOT NULL`. */
108
+ export function sqlColumn(field) {
109
+ const r = field.rules ?? {};
110
+ const required = r.required !== false;
111
+ // Arrays are JSON-serialized → always TEXT, regardless of base type.
112
+ if (r.array) {
113
+ return required ? "TEXT NOT NULL" : "TEXT";
114
+ }
115
+ const def = sqlDefault(field);
116
+ let col;
117
+ switch (field.type) {
118
+ case "int":
119
+ col = "INTEGER";
120
+ break;
121
+ case "float":
122
+ col = "REAL";
123
+ break;
124
+ case "boolean":
125
+ col = "INTEGER";
126
+ break;
127
+ default:
128
+ col = "TEXT"; // string-like, enum, json
129
+ break;
130
+ }
131
+ if (required)
132
+ col += " NOT NULL";
133
+ if (def !== undefined)
134
+ col += ` DEFAULT ${def}`;
135
+ return col;
136
+ }
137
+ /** The TS enum union, e.g. `"draft" | "published"`. */
138
+ function enumUnion(field) {
139
+ const options = field.rules?.options ?? [];
140
+ if (options.length === 0)
141
+ return "string";
142
+ return options.map((o) => JSON.stringify(o)).join(" | ");
143
+ }
144
+ /** Escape a user-provided regex into a JS regex literal. */
145
+ function regexLiteral(pattern) {
146
+ const escaped = pattern.replace(/\//g, "\\/");
147
+ return `/${escaped}/`;
148
+ }
149
+ /** The SQL DEFAULT clause value (quoted for strings, 1/0 for booleans). */
150
+ function sqlDefault(field) {
151
+ const d = field.rules?.default;
152
+ if (d === undefined)
153
+ return undefined;
154
+ if (typeof d === "string")
155
+ return `'${d.replace(/'/g, "''")}'`;
156
+ if (typeof d === "boolean")
157
+ return d ? "1" : "0";
158
+ return String(d);
159
+ }
160
+ function indentFields(fields, pad = " ") {
161
+ return fields.map((f) => `${pad}${interfaceLine(f)}`).join("\n");
162
+ }
163
+ function zodFields(fields, pad = " ") {
164
+ return fields.map((f) => `${pad}${f.name}: ${zodChain(f)},`).join("\n");
165
+ }
166
+ // ---------------------------------------------------------------------------
167
+ // Templates
168
+ // ---------------------------------------------------------------------------
169
+ function serviceTemplate(spec) {
170
+ const { name, fields } = spec;
171
+ const dataShape = fields.length > 0 ? `Omit<${name}, "id">` : "Record<string, never>";
172
+ return `/**
173
+ * ${name} domain model + business logic.
174
+ */
175
+ export interface ${name} {
176
+ id: number;
177
+ ${indentFields(fields)}
178
+ }
179
+
180
+ /**
181
+ * ${name} service — CRUD operations.
182
+ */
183
+ export class ${name}Service {
184
+ private items: ${name}[] = [];
185
+ private nextId = 1;
186
+
187
+ all(): ${name}[] {
188
+ return [...this.items];
189
+ }
190
+
191
+ find(id: number | string): ${name} | undefined {
192
+ return this.items.find((item) => item.id === Number(id));
193
+ }
194
+
195
+ create(data: ${dataShape}): ${name} {
196
+ const item: ${name} = { id: this.nextId++, ...data };
197
+ this.items.push(item);
198
+ return item;
199
+ }
200
+
201
+ update(id: number | string, patch: Partial<${dataShape}>): ${name} | undefined {
202
+ const item = this.find(id);
203
+ if (!item) return undefined;
204
+ Object.assign(item, patch);
205
+ return item;
206
+ }
207
+
208
+ remove(id: number | string): boolean {
209
+ const index = this.items.findIndex((item) => item.id === Number(id));
210
+ if (index === -1) return false;
211
+ this.items.splice(index, 1);
212
+ return true;
213
+ }
214
+ }
215
+ `;
216
+ }
217
+ function controllerTemplate(spec) {
218
+ const { name, kebabSingular } = spec;
219
+ return `import type { Request, Response } from "express";
220
+ import { NotFoundException } from "@wild-framework/http";
221
+ import { ${name}Resource } from "./${kebabSingular}-resource.js";
222
+ import type { ${name}Service } from "./${kebabSingular}-service.js";
223
+
224
+ /**
225
+ * HTTP controller for ${name}.
226
+ */
227
+ export class ${name}Controller {
228
+ constructor(private service: ${name}Service) {}
229
+
230
+ async index(_req: Request, res: Response) {
231
+ return res.json(${name}Resource.collection(this.service.all()));
232
+ }
233
+
234
+ async show(req: Request, res: Response) {
235
+ const item = this.service.find(String(req.params.id));
236
+ if (!item) throw new NotFoundException("${name} not found");
237
+ return res.json(${name}Resource.make(item));
238
+ }
239
+
240
+ async store(req: Request, res: Response) {
241
+ const item = this.service.create(req.body);
242
+ return res.status(201).json(${name}Resource.make(item));
243
+ }
244
+
245
+ async update(req: Request, res: Response) {
246
+ const item = this.service.update(String(req.params.id), req.body);
247
+ if (!item) throw new NotFoundException("${name} not found");
248
+ return res.json(${name}Resource.make(item));
249
+ }
250
+
251
+ async destroy(req: Request, res: Response) {
252
+ if (!this.service.remove(String(req.params.id))) {
253
+ throw new NotFoundException("${name} not found");
254
+ }
255
+ return res.json({ deleted: Number(req.params.id) });
256
+ }
257
+ }
258
+ `;
259
+ }
260
+ function validatorTemplate(spec) {
261
+ const { name, fields, kebabSingular } = spec;
262
+ return `import { z } from "zod";
263
+
264
+ /**
265
+ * Validation for creating a ${name}.
266
+ */
267
+ export class Create${name}Request {
268
+ static schema = z.object({
269
+ ${zodFields(fields)}
270
+ });
271
+ }
272
+
273
+ /**
274
+ * Validation for updating a ${name} (all fields optional).
275
+ */
276
+ export class Update${name}Request {
277
+ static schema = Create${name}Request.schema.partial();
278
+ }
279
+ `;
280
+ }
281
+ function resourceTemplate(spec) {
282
+ const { name, fields, kebabSingular } = spec;
283
+ const shape = fields.map((f) => ` ${f.name}: item.${f.name},`).join("\n");
284
+ return `import { Resource } from "@wild-framework/resources";
285
+ import type { ${name} } from "./${kebabSingular}-service.js";
286
+
287
+ /**
288
+ * Shapes a ${name} for API responses.
289
+ */
290
+ export class ${name}Resource extends Resource<${name}> {
291
+ transform(item: ${name}): Record<string, unknown> {
292
+ return {
293
+ id: item.id,
294
+ ${shape}
295
+ };
296
+ }
297
+ }
298
+ `;
299
+ }
300
+ function providerTemplate(spec) {
301
+ const { name, kebabSingular, kebabPlural } = spec;
302
+ const a = spec.addons ?? {};
303
+ const extraImports = [
304
+ a.listener ? `import { ${name}CreatedListener } from "./${kebabSingular}-created-listener.js";` : "",
305
+ a.job ? `import { ${name}Job } from "./${kebabSingular}-job.js";` : "",
306
+ ]
307
+ .filter(Boolean)
308
+ .join("\n");
309
+ const extraBindings = [
310
+ a.listener ? ` container.singleton(${name}CreatedListener, () => new ${name}CreatedListener());` : "",
311
+ a.job ? ` container.singleton(${name}Job, () => new ${name}Job());` : "",
312
+ ]
313
+ .filter(Boolean)
314
+ .join("\n");
315
+ const importBlock = extraImports ? `${extraImports}\n` : "";
316
+ const bindingBlock = extraBindings ? `${extraBindings}\n` : "";
317
+ return `import type { Provider, Application } from "@wild-framework/core";
318
+ import { Container } from "@wild-framework/container";
319
+ import { Router, action } from "@wild-framework/http";
320
+ import { ${name}Controller } from "./${kebabSingular}-controller.js";
321
+ import { ${name}Service } from "./${kebabSingular}-service.js";
322
+ import { Create${name}Request, Update${name}Request } from "./create-${kebabSingular}-request.js";
323
+ ${importBlock}
324
+ /**
325
+ * Wires the ${name} feature: DI bindings and routes.
326
+ */
327
+ export class ${name}Provider implements Provider {
328
+ register(app: Application): void {
329
+ const container = app.resolve<Container>(Container);
330
+
331
+ container.singleton(${name}Service, () => new ${name}Service());
332
+ container.singleton(${name}Controller, (c) => new ${name}Controller(c.resolve(${name}Service)));
333
+ ${bindingBlock}
334
+ const router = container.resolve<Router>(Router);
335
+
336
+ router.get("/${kebabPlural}", action(${name}Controller, "index"));
337
+ router.get("/${kebabPlural}/:id", action(${name}Controller, "show"));
338
+ router.post("/${kebabPlural}", Create${name}Request, action(${name}Controller, "store"));
339
+ router.put("/${kebabPlural}/:id", Update${name}Request, action(${name}Controller, "update"));
340
+ router.delete("/${kebabPlural}/:id", action(${name}Controller, "destroy"));
341
+ }
342
+ }
343
+ `;
344
+ }
345
+ // ---------------------------------------------------------------------------
346
+ // Add-on templates
347
+ // ---------------------------------------------------------------------------
348
+ /** Lowercase the first letter of a PascalCase name: "Product" → "product". */
349
+ function lowerFirst(name) {
350
+ return name.charAt(0).toLowerCase() + name.slice(1);
351
+ }
352
+ function eventTemplate(spec) {
353
+ const { name } = spec;
354
+ const lower = lowerFirst(name);
355
+ return `/**
356
+ * Domain events for ${name}.
357
+ */
358
+ export class ${name}Created {
359
+ constructor(public readonly ${lower}Id: number) {}
360
+ }
361
+ `;
362
+ }
363
+ function listenerTemplate(spec) {
364
+ const { name } = spec;
365
+ return `/**
366
+ * Reacts to a ${name} being created.
367
+ */
368
+ export class ${name}CreatedListener {
369
+ async handle(_event: unknown): Promise<void> {
370
+ // React to the event
371
+ }
372
+ }
373
+ `;
374
+ }
375
+ function jobTemplate(spec) {
376
+ const { name } = spec;
377
+ const lower = lowerFirst(name);
378
+ return `/**
379
+ * A queued job for ${name}.
380
+ */
381
+ export class ${name}Job {
382
+ async handle(_payload: { ${lower}Id: number }): Promise<void> {
383
+ // Do the work
384
+ }
385
+ }
386
+ `;
387
+ }
388
+ function policyTemplate(spec) {
389
+ const { name } = spec;
390
+ return `import { Policy } from "@wild-framework/auth";
391
+
392
+ /**
393
+ * Authorization rules for ${name}.
394
+ */
395
+ export class ${name}Policy extends Policy<unknown> {
396
+ view(_user: unknown, _resource: unknown): boolean {
397
+ return true;
398
+ }
399
+ }
400
+ `;
401
+ }
402
+ function testTemplate(spec) {
403
+ const { name, fields, kebabSingular } = spec;
404
+ const createArgs = fields.map((f) => `${f.name}: ${sampleFor(f)}`).join(", ");
405
+ return `import { describe, it, expect } from "vitest";
406
+ import { ${name}Service } from "./${kebabSingular}-service.js";
407
+
408
+ describe("${name}Service", () => {
409
+ it("creates and lists items", () => {
410
+ const service = new ${name}Service();
411
+ const item = service.create({ ${createArgs} });
412
+
413
+ expect(service.all()).toEqual([item]);
414
+ expect(service.find(item.id)).toEqual(item);
415
+ });
416
+
417
+ it("updates an item", () => {
418
+ const service = new ${name}Service();
419
+ const item = service.create({ ${createArgs} });
420
+
421
+ const updated = service.update(item.id, ${patchArg(fields)});
422
+ expect(updated).toBeDefined();
423
+ });
424
+
425
+ it("removes an item", () => {
426
+ const service = new ${name}Service();
427
+ const item = service.create({ ${createArgs} });
428
+
429
+ expect(service.remove(item.id)).toBe(true);
430
+ expect(service.find(item.id)).toBeUndefined();
431
+ });
432
+ });
433
+ `;
434
+ }
435
+ function sampleFor(f) {
436
+ if (f.rules?.array)
437
+ return "[]";
438
+ switch (f.type) {
439
+ case "email":
440
+ return `"${f.name}@example.com"`;
441
+ case "url":
442
+ return '"https://example.com"';
443
+ case "uuid":
444
+ return '"00000000-0000-0000-0000-000000000000"';
445
+ case "date":
446
+ return '"2026-01-01"';
447
+ case "datetime":
448
+ return '"2026-01-01T00:00:00Z"';
449
+ case "time":
450
+ return '"12:00:00"';
451
+ case "int":
452
+ case "float":
453
+ return "1";
454
+ case "boolean":
455
+ return "true";
456
+ case "enum":
457
+ return JSON.stringify(f.rules?.options?.[0] ?? "value");
458
+ case "json":
459
+ return "{}";
460
+ default:
461
+ return `"sample-${f.name}"`;
462
+ }
463
+ }
464
+ function patchArg(fields) {
465
+ const first = fields[0];
466
+ if (!first)
467
+ return "{}";
468
+ return `{ ${first.name}: ${sampleFor(first)} }`;
469
+ }
470
+ function migrationSql(spec, table) {
471
+ const columns = spec.fields.map((f) => ` ${f.name} ${sqlColumn(f)}`).join(",\n");
472
+ return `-- Migration: create ${table}\n-- Create the ${table} table.\n\nCREATE TABLE IF NOT EXISTS ${table} (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n${columns}\n);\n`;
473
+ }
474
+ function migrationDownSql(table) {
475
+ return `-- Rollback: drop ${table}\n\nDROP TABLE IF EXISTS ${table};\n`;
476
+ }
477
+ // ---------------------------------------------------------------------------
478
+ // Render
479
+ // ---------------------------------------------------------------------------
480
+ /**
481
+ * Render every file for a resource slice.
482
+ *
483
+ * @returns files grouped by prefix (`src/…` for feature files, `migrations/…`).
484
+ */
485
+ export function renderResourceSlice(spec, migrationPrefix) {
486
+ const { kebabSingular, kebabPlural } = spec;
487
+ const feature = `features/${kebabPlural}`;
488
+ const a = spec.addons ?? {};
489
+ const files = [
490
+ { path: `${feature}/${kebabPlural}-provider.ts`, content: providerTemplate(spec) },
491
+ { path: `${feature}/${kebabSingular}-service.ts`, content: serviceTemplate(spec) },
492
+ { path: `${feature}/${kebabSingular}-controller.ts`, content: controllerTemplate(spec) },
493
+ { path: `${feature}/create-${kebabSingular}-request.ts`, content: validatorTemplate(spec) },
494
+ { path: `${feature}/${kebabSingular}-resource.ts`, content: resourceTemplate(spec) },
495
+ { path: `${feature}/${kebabPlural}.test.ts`, content: testTemplate(spec) },
496
+ { path: `migrations/${migrationPrefix}_create_${kebabPlural}.sql`, content: migrationSql(spec, kebabPlural) },
497
+ { path: `migrations/${migrationPrefix}_create_${kebabPlural}.down.sql`, content: migrationDownSql(kebabPlural) },
498
+ ];
499
+ if (a.event) {
500
+ files.push({ path: `${feature}/events.ts`, content: eventTemplate(spec) });
501
+ }
502
+ if (a.listener) {
503
+ files.push({ path: `${feature}/${kebabSingular}-created-listener.ts`, content: listenerTemplate(spec) });
504
+ }
505
+ if (a.job) {
506
+ files.push({ path: `${feature}/${kebabSingular}-job.ts`, content: jobTemplate(spec) });
507
+ }
508
+ if (a.policy) {
509
+ files.push({ path: `${feature}/${kebabSingular}-policy.ts`, content: policyTemplate(spec) });
510
+ }
511
+ return files;
512
+ }
513
+ //# sourceMappingURL=resource-slice.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-slice.js","sourceRoot":"","sources":["../../src/templates/resource-slice.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wild-framework/cli",
3
- "version": "0.1.1",
3
+ "version": "0.2.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -23,7 +23,7 @@
23
23
  "author": "Sphah",
24
24
  "repository": {
25
25
  "type": "git",
26
- "url": "git+https://github.com/KhandaSoftware/wild-framework.git"
26
+ "url": "git+https://github.com/Khandasoftware/wild-framework.git"
27
27
  },
28
28
  "description": "Scaffolding CLI for Wild Framework — generate providers, services, controllers, events and more.",
29
29
  "keywords": [
@@ -34,7 +34,13 @@
34
34
  "generator",
35
35
  "make"
36
36
  ],
37
- "dependencies": {},
37
+ "dependencies": {
38
+ "@wild-framework/database": "0.2.2",
39
+ "@wild-framework/config": "0.2.2",
40
+ "@wild-framework/database-drizzle": "0.2.2",
41
+ "@wild-framework/database-mysql": "0.2.2",
42
+ "@wild-framework/database-postgres": "0.2.2"
43
+ },
38
44
  "scripts": {
39
45
  "build": "tsc",
40
46
  "clean": "rm -rf dist",