@warlock.js/core 4.0.131 → 4.0.132

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 (78) hide show
  1. package/esm/cli/commands/generate/generate.command.d.ts +10 -0
  2. package/esm/cli/commands/generate/generate.command.d.ts.map +1 -0
  3. package/esm/cli/commands/generate/generate.command.js +167 -0
  4. package/esm/cli/commands/generate/generate.command.js.map +1 -0
  5. package/esm/cli/commands/generate/generators/controller.generator.d.ts +3 -0
  6. package/esm/cli/commands/generate/generators/controller.generator.d.ts.map +1 -0
  7. package/esm/cli/commands/generate/generators/controller.generator.js +51 -0
  8. package/esm/cli/commands/generate/generators/controller.generator.js.map +1 -0
  9. package/esm/cli/commands/generate/generators/migration.generator.d.ts +13 -0
  10. package/esm/cli/commands/generate/generators/migration.generator.d.ts.map +1 -0
  11. package/esm/cli/commands/generate/generators/migration.generator.js +42 -0
  12. package/esm/cli/commands/generate/generators/migration.generator.js.map +1 -0
  13. package/esm/cli/commands/generate/generators/model.generator.d.ts +3 -0
  14. package/esm/cli/commands/generate/generators/model.generator.d.ts.map +1 -0
  15. package/esm/cli/commands/generate/generators/model.generator.js +56 -0
  16. package/esm/cli/commands/generate/generators/model.generator.js.map +1 -0
  17. package/esm/cli/commands/generate/generators/module.generator.d.ts +3 -0
  18. package/esm/cli/commands/generate/generators/module.generator.d.ts.map +1 -0
  19. package/esm/cli/commands/generate/generators/module.generator.js +156 -0
  20. package/esm/cli/commands/generate/generators/module.generator.js.map +1 -0
  21. package/esm/cli/commands/generate/generators/repository.generator.d.ts +3 -0
  22. package/esm/cli/commands/generate/generators/repository.generator.d.ts.map +1 -0
  23. package/esm/cli/commands/generate/generators/repository.generator.js +37 -0
  24. package/esm/cli/commands/generate/generators/repository.generator.js.map +1 -0
  25. package/esm/cli/commands/generate/generators/resource.generator.d.ts +3 -0
  26. package/esm/cli/commands/generate/generators/resource.generator.d.ts.map +1 -0
  27. package/esm/cli/commands/generate/generators/resource.generator.js +37 -0
  28. package/esm/cli/commands/generate/generators/resource.generator.js.map +1 -0
  29. package/esm/cli/commands/generate/generators/service.generator.d.ts +3 -0
  30. package/esm/cli/commands/generate/generators/service.generator.d.ts.map +1 -0
  31. package/esm/cli/commands/generate/generators/service.generator.js +37 -0
  32. package/esm/cli/commands/generate/generators/service.generator.js.map +1 -0
  33. package/esm/cli/commands/generate/generators/validation.generator.d.ts +3 -0
  34. package/esm/cli/commands/generate/generators/validation.generator.d.ts.map +1 -0
  35. package/esm/cli/commands/generate/generators/validation.generator.js +46 -0
  36. package/esm/cli/commands/generate/generators/validation.generator.js.map +1 -0
  37. package/esm/cli/commands/generate/templates/stubs.d.ts +111 -0
  38. package/esm/cli/commands/generate/templates/stubs.d.ts.map +1 -0
  39. package/esm/cli/commands/generate/templates/stubs.js +569 -0
  40. package/esm/cli/commands/generate/templates/stubs.js.map +1 -0
  41. package/esm/cli/commands/generate/types.d.ts +53 -0
  42. package/esm/cli/commands/generate/types.d.ts.map +1 -0
  43. package/esm/cli/commands/generate/utils/name-parser.d.ts +45 -0
  44. package/esm/cli/commands/generate/utils/name-parser.d.ts.map +1 -0
  45. package/esm/cli/commands/generate/utils/name-parser.js +76 -0
  46. package/esm/cli/commands/generate/utils/name-parser.js.map +1 -0
  47. package/esm/cli/commands/generate/utils/path-resolver.d.ts +30 -0
  48. package/esm/cli/commands/generate/utils/path-resolver.d.ts.map +1 -0
  49. package/esm/cli/commands/generate/utils/path-resolver.js +42 -0
  50. package/esm/cli/commands/generate/utils/path-resolver.js.map +1 -0
  51. package/esm/cli/commands/generate/utils/prompt.d.ts +13 -0
  52. package/esm/cli/commands/generate/utils/prompt.d.ts.map +1 -0
  53. package/esm/cli/framework-cli-commands.d.ts.map +1 -1
  54. package/esm/cli/framework-cli-commands.js +11 -1
  55. package/esm/cli/framework-cli-commands.js.map +1 -1
  56. package/esm/index.js +1 -1
  57. package/esm/resource/define-resource.d.ts.map +1 -1
  58. package/esm/resource/define-resource.js +6 -2
  59. package/esm/resource/define-resource.js.map +1 -1
  60. package/esm/resource/index.d.ts +1 -0
  61. package/esm/resource/index.d.ts.map +1 -1
  62. package/esm/resource/register-resource.d.ts +21 -0
  63. package/esm/resource/register-resource.d.ts.map +1 -0
  64. package/esm/resource/register-resource.js +23 -0
  65. package/esm/resource/register-resource.js.map +1 -0
  66. package/esm/resource/resource-field-builder.d.ts +22 -1
  67. package/esm/resource/resource-field-builder.d.ts.map +1 -1
  68. package/esm/resource/resource-field-builder.js +71 -14
  69. package/esm/resource/resource-field-builder.js.map +1 -1
  70. package/esm/resource/resource.d.ts +19 -8
  71. package/esm/resource/resource.d.ts.map +1 -1
  72. package/esm/resource/resource.js +59 -40
  73. package/esm/resource/resource.js.map +1 -1
  74. package/esm/resource/types.d.ts +25 -1
  75. package/esm/resource/types.d.ts.map +1 -1
  76. package/esm/router/types.d.ts +6 -0
  77. package/esm/router/types.d.ts.map +1 -1
  78. package/package.json +7 -7
@@ -0,0 +1,10 @@
1
+ export declare const generateCommand: import("../../cli-command").CLICommand;
2
+ export declare const generateModuleCommand: import("../../cli-command").CLICommand;
3
+ export declare const generateControllerCommand: import("../../cli-command").CLICommand;
4
+ export declare const generateServiceCommand: import("../../cli-command").CLICommand;
5
+ export declare const generateModelCommand: import("../../cli-command").CLICommand;
6
+ export declare const generateRepositoryCommand: import("../../cli-command").CLICommand;
7
+ export declare const generateResourceCommand: import("../../cli-command").CLICommand;
8
+ export declare const generateValidationCommand: import("../../cli-command").CLICommand;
9
+ export declare const generateMigrationCommand: import("../../cli-command").CLICommand;
10
+ //# sourceMappingURL=generate.command.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.command.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/generate/generate.command.ts"],"names":[],"mappings":"AAyDA,eAAO,MAAM,eAAe,wCAW1B,CAAC;AAGH,eAAO,MAAM,qBAAqB,wCAehC,CAAC;AAEH,eAAO,MAAM,yBAAyB,wCAepC,CAAC;AAEH,eAAO,MAAM,sBAAsB,wCAWjC,CAAC;AAEH,eAAO,MAAM,oBAAoB,wCAmB/B,CAAC;AAEH,eAAO,MAAM,yBAAyB,wCAWpC,CAAC;AAEH,eAAO,MAAM,uBAAuB,wCAWlC,CAAC;AAEH,eAAO,MAAM,yBAAyB,wCAepC,CAAC;AAEH,eAAO,MAAM,wBAAwB,wCAWnC,CAAC"}
@@ -0,0 +1,167 @@
1
+ import {colors}from'@mongez/copper';import {command}from'../../cli-command.js';import {generateController}from'./generators/controller.generator.js';import {generateMigration}from'./generators/migration.generator.js';import {generateModel}from'./generators/model.generator.js';import {generateModule}from'./generators/module.generator.js';import {generateRepository}from'./generators/repository.generator.js';import {generateResource}from'./generators/resource.generator.js';import {generateService}from'./generators/service.generator.js';import {generateValidation}from'./generators/validation.generator.js';const generators = {
2
+ module: generateModule,
3
+ controller: generateController,
4
+ service: generateService,
5
+ model: generateModel,
6
+ migration: generateMigration,
7
+ repository: generateRepository,
8
+ resource: generateResource,
9
+ validation: generateValidation,
10
+ };
11
+ async function generateCommandAction(data) {
12
+ const commandName = data.args[0];
13
+ if (!commandName) {
14
+ console.log(colors.red("Error: Generator name is required"));
15
+ console.log(colors.yellow("\nAvailable generators:"));
16
+ Object.keys(generators).forEach((cmd) => {
17
+ console.log(colors.cyan(` - ${cmd}`));
18
+ });
19
+ console.log(colors.yellow("\nUsage: warlock generate <generator> <name> [options]"));
20
+ process.exit(1);
21
+ }
22
+ const generator = generators[commandName];
23
+ if (!generator) {
24
+ console.log(colors.red(`Error: Unknown generator "${commandName}"`));
25
+ console.log(colors.yellow("\nAvailable generators:"));
26
+ Object.keys(generators).forEach((cmd) => {
27
+ console.log(colors.cyan(` - ${cmd}`));
28
+ });
29
+ process.exit(1);
30
+ }
31
+ // Remove the command name from args for the generator
32
+ const generatorData = {
33
+ ...data,
34
+ args: data.args.slice(1),
35
+ };
36
+ await generator(generatorData);
37
+ }
38
+ // Master generate command
39
+ const generateCommand = command({
40
+ name: "generate <generator> [args...]",
41
+ alias: "g",
42
+ description: "Scaffold a new component",
43
+ action: generateCommandAction,
44
+ options: [
45
+ {
46
+ text: "--force, -f",
47
+ description: "Overwrite existing files",
48
+ },
49
+ ],
50
+ });
51
+ // Individual commands
52
+ const generateModuleCommand = command({
53
+ name: "generate.module <name>",
54
+ alias: "gen.m",
55
+ description: "Generate a new module",
56
+ action: generateModule,
57
+ options: [
58
+ {
59
+ text: "--crud, -c",
60
+ description: "Generate full CRUD scaffold (controllers, model, validation, routes)",
61
+ },
62
+ {
63
+ text: "--force, -f",
64
+ description: "Overwrite existing files",
65
+ },
66
+ ],
67
+ });
68
+ const generateControllerCommand = command({
69
+ name: "generate.controller <module>/<name>",
70
+ alias: "gen.c",
71
+ description: "Generate a new controller",
72
+ action: generateController,
73
+ options: [
74
+ {
75
+ text: "--with-validation, -v",
76
+ description: "Generate validation schema and request type",
77
+ },
78
+ {
79
+ text: "--force, -f",
80
+ description: "Overwrite existing files",
81
+ },
82
+ ],
83
+ });
84
+ const generateServiceCommand = command({
85
+ name: "generate.service <module>/<name>",
86
+ alias: "gen.s",
87
+ description: "Generate a new service",
88
+ action: generateService,
89
+ options: [
90
+ {
91
+ text: "--force, -f",
92
+ description: "Overwrite existing files",
93
+ },
94
+ ],
95
+ });
96
+ const generateModelCommand = command({
97
+ name: "generate.model <module>/<name>",
98
+ alias: "gen.md",
99
+ description: "Generate a new model with migration",
100
+ action: generateModel,
101
+ options: [
102
+ {
103
+ text: "--with-resource, -rs",
104
+ description: "Generate resource",
105
+ },
106
+ {
107
+ text: "--table <name>",
108
+ description: "Specify table name",
109
+ },
110
+ {
111
+ text: "--force, -f",
112
+ description: "Overwrite existing files",
113
+ },
114
+ ],
115
+ });
116
+ const generateRepositoryCommand = command({
117
+ name: "generate.repository <module>/<name>",
118
+ alias: "gen.r",
119
+ description: "Generate a new repository",
120
+ action: generateRepository,
121
+ options: [
122
+ {
123
+ text: "--force, -f",
124
+ description: "Overwrite existing files",
125
+ },
126
+ ],
127
+ });
128
+ const generateResourceCommand = command({
129
+ name: "generate.resource <module>/<name>",
130
+ alias: "gen.rs",
131
+ description: "Generate a new resource",
132
+ action: generateResource,
133
+ options: [
134
+ {
135
+ text: "--force, -f",
136
+ description: "Overwrite existing files",
137
+ },
138
+ ],
139
+ });
140
+ const generateValidationCommand = command({
141
+ name: "generate.validation <module>/<name>",
142
+ alias: "gen.v",
143
+ description: "Generate a new validation schema",
144
+ action: generateValidation,
145
+ options: [
146
+ {
147
+ text: "--with-request, -r",
148
+ description: "Generate request type",
149
+ },
150
+ {
151
+ text: "--force, -f",
152
+ description: "Overwrite existing files",
153
+ },
154
+ ],
155
+ });
156
+ const generateMigrationCommand = command({
157
+ name: "generate.migration <model-path>",
158
+ alias: "gen.mig",
159
+ description: "Generate a new migration for a model",
160
+ action: generateMigration,
161
+ options: [
162
+ {
163
+ text: "--force, -f",
164
+ description: "Overwrite existing files",
165
+ },
166
+ ],
167
+ });export{generateCommand,generateControllerCommand,generateMigrationCommand,generateModelCommand,generateModuleCommand,generateRepositoryCommand,generateResourceCommand,generateServiceCommand,generateValidationCommand};//# sourceMappingURL=generate.command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generate.command.js","sources":["../../../../src/cli/commands/generate/generate.command.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandActionData } from "../../../types";
2
+ export declare function generateController(data: CommandActionData): Promise<void>;
3
+ //# sourceMappingURL=controller.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.generator.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/generate/generators/controller.generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUxD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE/E"}
@@ -0,0 +1,51 @@
1
+ import {colors}from'@mongez/copper';import {putFileAsync}from'@mongez/fs';import {controllerStub,validationStub,requestStub}from'../templates/stubs.js';import {parseModulePath,parseName}from'../utils/name-parser.js';import {moduleExists,resolveComponentPath,componentExists,ensureComponentDirectory}from'../utils/path-resolver.js';async function generateController(data) {
2
+ const input = data.args[0];
3
+ if (!input) {
4
+ console.log(colors.red("Error: Controller name is required"));
5
+ console.log(colors.yellow("Usage: warlock create.controller <module>/<name>"));
6
+ console.log(colors.yellow("Example: warlock create.controller users/create-user"));
7
+ process.exit(1);
8
+ }
9
+ const { module, name: componentName } = parseModulePath(input);
10
+ if (!module) {
11
+ console.log(colors.red("Error: Module name is required"));
12
+ console.log(colors.yellow("Usage: warlock create.controller <module>/<name>"));
13
+ process.exit(1);
14
+ }
15
+ // Check if module exists
16
+ if (!(await moduleExists(module))) {
17
+ console.log(colors.red(`Error: Module "${module}" does not exist`));
18
+ console.log(colors.yellow(`Run: warlock create.module ${module}`));
19
+ process.exit(1);
20
+ }
21
+ const name = parseName(componentName, module);
22
+ const withValidation = data.options.withValidation || data.options.v;
23
+ const force = data.options.force || data.options.f;
24
+ // Check if controller already exists
25
+ const controllerPath = resolveComponentPath(module, "controllers", `${name.kebab}.controller`);
26
+ if ((await componentExists(module, "controllers", `${name.kebab}.controller`)) && !force) {
27
+ console.log(colors.red(`Error: Controller "${name.kebab}.controller.ts" already exists`));
28
+ console.log(colors.yellow("Use --force to overwrite"));
29
+ process.exit(1);
30
+ }
31
+ // Ensure directories exist
32
+ await ensureComponentDirectory(module, "controllers");
33
+ // Generate controller
34
+ const controllerContent = controllerStub(name, { withValidation: !!withValidation });
35
+ await putFileAsync(controllerPath, controllerContent);
36
+ console.log(colors.green(`✓ Created controller: ${controllerPath}`));
37
+ // Generate validation and request if requested
38
+ if (withValidation) {
39
+ await ensureComponentDirectory(module, "validation");
40
+ await ensureComponentDirectory(module, "requests");
41
+ const validationPath = resolveComponentPath(module, "validation", `${name.kebab}.schema`);
42
+ const requestPath = resolveComponentPath(module, "requests", `${name.kebab}.request`);
43
+ const validationContent = validationStub(name);
44
+ const requestContent = requestStub(name);
45
+ await putFileAsync(validationPath, validationContent);
46
+ await putFileAsync(requestPath, requestContent);
47
+ console.log(colors.green(`✓ Created validation: ${validationPath}`));
48
+ console.log(colors.green(`✓ Created request: ${requestPath}`));
49
+ }
50
+ console.log(colors.cyan(`\n✨ Controller "${name.camel}" generated successfully!`));
51
+ }export{generateController};//# sourceMappingURL=controller.generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controller.generator.js","sources":["../../../../../src/cli/commands/generate/generators/controller.generator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { CommandActionData } from "../../../types";
2
+ /**
3
+ * Generate a migration file for a model
4
+ */
5
+ /**
6
+ * Create a migration file for a model
7
+ */
8
+ export declare function createMigrationFile(moduleName: string, entityName: string): Promise<string>;
9
+ /**
10
+ * Generate a migration file for a model
11
+ */
12
+ export declare function generateMigration(data: CommandActionData): Promise<void>;
13
+ //# sourceMappingURL=migration.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.generator.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/generate/generators/migration.generator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAIxD;;GAEG;AACH;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,mBAmB/E;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,iBAwB9D"}
@@ -0,0 +1,42 @@
1
+ import {colors}from'@mongez/copper';import {ensureDirectoryAsync,putFileAsync}from'@mongez/fs';import path from'node:path';import'@warlock.js/logger';import'../../../../database/models/database-log/database-log.js';import'../../../../http/context/request-context.js';import {appPath}from'../../../../utils/paths.js';import'@mongez/slug';import'@mongez/supportive-is';import'@mongez/reinforcements';import {migrationStub}from'../templates/stubs.js';import {parseName}from'../utils/name-parser.js';/**
2
+ * Generate a migration file for a model
3
+ */
4
+ /**
5
+ * Create a migration file for a model
6
+ */
7
+ async function createMigrationFile(moduleName, entityName) {
8
+ const entity = parseName(entityName);
9
+ // Generate timestamp: MM-DD-YYYY_HH-MM-SS
10
+ const now = new Date();
11
+ const timestamp = `${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")}-${now.getFullYear()}_${String(now.getHours()).padStart(2, "0")}-${String(now.getMinutes()).padStart(2, "0")}-${String(now.getSeconds()).padStart(2, "0")}`;
12
+ const migrationFileName = `${timestamp}-${entity.kebab}.migration.ts`;
13
+ const migrationsPath = path.join(appPath(), moduleName, "models", entity.kebab, "migrations");
14
+ // Ensure migrations directory exists
15
+ await ensureDirectoryAsync(migrationsPath);
16
+ // Create migration file
17
+ const migrationFilePath = path.join(migrationsPath, migrationFileName);
18
+ await putFileAsync(migrationFilePath, migrationStub(entity));
19
+ console.log(colors.green(`✓ Created ${migrationFileName}`));
20
+ return migrationFilePath;
21
+ }
22
+ /**
23
+ * Generate a migration file for a model
24
+ */
25
+ async function generateMigration(data) {
26
+ const modelPath = data.args[0];
27
+ if (!modelPath) {
28
+ console.log(colors.red("Error: Model path is required"));
29
+ console.log(colors.gray("Usage: warlock gen.migration <model-path>"));
30
+ console.log(colors.gray("Example: warlock gen.migration products/product"));
31
+ return;
32
+ }
33
+ // Parse model path (e.g., "products/product")
34
+ const [moduleName, entityName] = modelPath.split("/");
35
+ if (!moduleName || !entityName) {
36
+ console.log(colors.red("Error: Invalid model path format. Expected: <module>/<entity>"));
37
+ console.log(colors.gray("Example: warlock gen.migration products/product"));
38
+ return;
39
+ }
40
+ const migrationFilePath = await createMigrationFile(moduleName, entityName);
41
+ console.log(colors.cyan(`\n✨ Migration file created at: ${path.relative(appPath(), migrationFilePath)}`));
42
+ }export{createMigrationFile,generateMigration};//# sourceMappingURL=migration.generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.generator.js","sources":["../../../../../src/cli/commands/generate/generators/migration.generator.ts"],"sourcesContent":[null],"names":[],"mappings":"gfAQA;;AAEG;AACH;;AAEG;AACI,eAAe,mBAAmB,CAAC,UAAkB,EAAE,UAAkB,EAAA;AAC9E,IAAA,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;;AAGrC,IAAA,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;AACvB,IAAA,MAAM,SAAS,GAAG,CAAA,EAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAI,CAAA,EAAA,GAAG,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA,CAAA,EAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;IAEvQ,MAAM,iBAAiB,GAAG,CAAG,EAAA,SAAS,IAAI,MAAM,CAAC,KAAK,CAAA,aAAA,CAAe,CAAC;AACtE,IAAA,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;;AAG9F,IAAA,MAAM,oBAAoB,CAAC,cAAc,CAAC,CAAC;;IAG3C,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,iBAAiB,CAAC,CAAC;IACvE,MAAM,YAAY,CAAC,iBAAiB,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;AAE7D,IAAA,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA,UAAA,EAAa,iBAAiB,CAAA,CAAE,CAAC,CAAC,CAAC;AAC5D,IAAA,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;AAEG;AACI,eAAe,iBAAiB,CAAC,IAAuB,EAAA;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAW,CAAC;IAEzC,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC5E,OAAO;AACR,KAAA;;AAGD,IAAA,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAEtD,IAAA,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE;QAC9B,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC5E,OAAO;AACR,KAAA;IAED,MAAM,iBAAiB,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IAE5E,OAAO,CAAC,GAAG,CACT,MAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAE,CAAA,CAAC,CAC7F,CAAC;AACJ"}
@@ -0,0 +1,3 @@
1
+ import type { CommandActionData } from "../../../types";
2
+ export declare function generateModel(data: CommandActionData): Promise<void>;
3
+ //# sourceMappingURL=model.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.generator.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/generate/generators/model.generator.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAKxD,wBAAsB,aAAa,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E1E"}
@@ -0,0 +1,56 @@
1
+ import {colors}from'@mongez/copper';import {ensureDirectoryAsync,putFileAsync}from'@mongez/fs';import path from'node:path';import {modelStub,migrationStub}from'../templates/stubs.js';import {parseModulePath,parseName}from'../utils/name-parser.js';import {moduleExists,resolveModulePath,componentExists}from'../utils/path-resolver.js';async function generateModel(data) {
2
+ const input = data.args[0];
3
+ if (!input) {
4
+ console.log(colors.red("Error: Model name is required"));
5
+ console.log(colors.yellow("Usage: warlock create.model <module>/<name>"));
6
+ console.log(colors.yellow("Example: warlock create.model users/user"));
7
+ process.exit(1);
8
+ }
9
+ const { module, name: componentName } = parseModulePath(input);
10
+ if (!module) {
11
+ console.log(colors.red("Error: Module name is required"));
12
+ console.log(colors.yellow("Usage: warlock create.model <module>/<name>"));
13
+ process.exit(1);
14
+ }
15
+ // Check if module exists
16
+ if (!(await moduleExists(module))) {
17
+ console.log(colors.red(`Error: Module "${module}" does not exist`));
18
+ console.log(colors.yellow(`Run: warlock create.module ${module}`));
19
+ process.exit(1);
20
+ }
21
+ const name = parseName(componentName, module);
22
+ const force = data.options.force || data.options.f;
23
+ const withResource = data.options.withResource || data.options.rs;
24
+ const tableName = data.options.table || `${name.snake}s`;
25
+ // Check if model already exists
26
+ const modelDir = path.join(resolveModulePath(module), "models", name.kebab);
27
+ const modelPath = path.join(modelDir, `${name.kebab}.model.ts`);
28
+ if ((await componentExists(module, `models/${name.kebab}`, `${name.kebab}.model`)) && !force) {
29
+ console.log(colors.red(`Error: Model "${name.kebab}" already exists`));
30
+ console.log(colors.yellow("Use --force to overwrite"));
31
+ process.exit(1);
32
+ }
33
+ // Ensure directories exist
34
+ await ensureDirectoryAsync(modelDir);
35
+ await ensureDirectoryAsync(path.join(modelDir, "migrations"));
36
+ // Generate model
37
+ const modelContent = modelStub(name, { tableName, withResource: !!withResource });
38
+ await putFileAsync(modelPath, modelContent);
39
+ console.log(colors.green(`✓ Created model: ${modelPath}`));
40
+ // Generate index.ts
41
+ const indexContent = `export * from "./${name.kebab}.model";
42
+ `;
43
+ await putFileAsync(path.join(modelDir, "index.ts"), indexContent);
44
+ console.log(colors.green(`✓ Created index.ts`));
45
+ // Generate migration
46
+ const timestamp = new Date().toISOString().replace(/[-:T]/g, "_").split(".")[0];
47
+ const migrationPath = path.join(modelDir, "migrations", `${timestamp}_${name.kebab}.migration.ts`);
48
+ const migrationContent = migrationStub(name);
49
+ await putFileAsync(migrationPath, migrationContent);
50
+ console.log(colors.green(`✓ Created migration: ${migrationPath}`));
51
+ console.log(colors.cyan(`\n✨ Model "${name.pascal}" generated successfully!`));
52
+ console.log(colors.gray(`\nNext steps:`));
53
+ console.log(colors.gray(` 1. Update model schema in ${name.kebab}.model.ts`));
54
+ console.log(colors.gray(` 2. Update migration in migrations/${timestamp}_${name.kebab}.migration.ts`));
55
+ console.log(colors.gray(` 3. Run migration: warlock migrate`));
56
+ }export{generateModel};//# sourceMappingURL=model.generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model.generator.js","sources":["../../../../../src/cli/commands/generate/generators/model.generator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandActionData } from "../../../types";
2
+ export declare function generateModule(data: CommandActionData): Promise<void>;
3
+ //# sourceMappingURL=module.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.generator.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/generate/generators/module.generator.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAyBxD,wBAAsB,cAAc,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwP3E"}
@@ -0,0 +1,156 @@
1
+ import {colors}from'@mongez/copper';import {ensureDirectoryAsync,putFileAsync}from'@mongez/fs';import path from'node:path';import'@warlock.js/logger';import'../../../../database/models/database-log/database-log.js';import'../../../../http/context/request-context.js';import {appPath}from'../../../../utils/paths.js';import'@mongez/slug';import'@mongez/supportive-is';import'@mongez/reinforcements';import {crudRoutesStub,crudCreateControllerStub,crudUpdateControllerStub,crudListControllerStub,crudShowControllerStub,crudDeleteControllerStub,crudCreateValidationStub,crudUpdateValidationStub,requestStub,crudModelStub,crudResourceStub,crudRepositoryStub,crudCreateServiceStub,crudUpdateServiceStub,crudListServiceStub,crudGetServiceStub,crudDeleteServiceStub,crudSeedStub}from'../templates/stubs.js';import {parseName}from'../utils/name-parser.js';import {moduleExists}from'../utils/path-resolver.js';import {createMigrationFile}from'./migration.generator.js';async function generateModule(data) {
2
+ const moduleName = data.args[0];
3
+ if (!moduleName) {
4
+ console.log(colors.red("Error: Module name is required"));
5
+ console.log(colors.yellow("Usage: warlock generate.module <name> [options]"));
6
+ console.log(colors.yellow("Example: warlock generate.module products"));
7
+ console.log(colors.yellow(" warlock generate.module products --crud"));
8
+ process.exit(1);
9
+ }
10
+ const name = parseName(moduleName);
11
+ const force = data.options.force || data.options.f;
12
+ const withCrud = data.options.crud || data.options.c;
13
+ // Check if module already exists
14
+ if ((await moduleExists(name.kebab)) && !force) {
15
+ console.log(colors.red(`Error: Module "${name.kebab}" already exists`));
16
+ console.log(colors.yellow("Use --force to overwrite"));
17
+ process.exit(1);
18
+ }
19
+ const modulePath = appPath(name.kebab);
20
+ // Create module directory structure
21
+ const directories = [
22
+ "controllers",
23
+ "services",
24
+ "models",
25
+ "repositories",
26
+ "validation",
27
+ "requests",
28
+ "resources",
29
+ "events",
30
+ "types",
31
+ "utils",
32
+ ];
33
+ for (const dir of directories) {
34
+ await ensureDirectoryAsync(path.join(modulePath, dir));
35
+ }
36
+ console.log(colors.green(`✓ Created module structure`));
37
+ // Create main.ts
38
+ const mainContent = `import { onceConnected } from "@warlock.js/cascade";
39
+
40
+ // This function will be called once the app is connected to the database
41
+ onceConnected(async () => {
42
+ // Module initialization code
43
+ // Register event listeners
44
+ // Setup module-specific configurations
45
+ });
46
+ `;
47
+ await putFileAsync(path.join(modulePath, "main.ts"), mainContent);
48
+ console.log(colors.green(`✓ Created main.ts`));
49
+ // Create routes.ts
50
+ const routesContent = withCrud
51
+ ? crudRoutesStub(name)
52
+ : `import { router } from "@warlock.js/core";
53
+ import { guarded } from "app/shared/utils/router";
54
+
55
+ // Define your routes here
56
+ // Example:
57
+ // router.get("/${name.kebab}", listController);
58
+ `;
59
+ await putFileAsync(path.join(modulePath, "routes.ts"), routesContent);
60
+ console.log(colors.green(`✓ Created routes.ts`));
61
+ // Create utils/locales.ts
62
+ const localesContent = `import { groupedTranslations } from "@mongez/localization";
63
+
64
+ groupedTranslations("${name.camel}", {
65
+ // Add your translations here
66
+ // Example:
67
+ // welcome: {
68
+ // en: "Welcome",
69
+ // ar: "مرحبا",
70
+ // },
71
+ });
72
+ `;
73
+ await putFileAsync(path.join(modulePath, "utils", "locales.ts"), localesContent);
74
+ console.log(colors.green(`✓ Created utils/locales.ts`));
75
+ // If --crud flag is set, generate full CRUD scaffold
76
+ if (withCrud) {
77
+ // Derive singular entity name from plural module name
78
+ const entityKebab = name.kebab.endsWith("s") ? name.kebab.slice(0, -1) : name.kebab;
79
+ const entity = parseName(entityKebab);
80
+ // Create controllers
81
+ await putFileAsync(path.join(modulePath, "controllers", `create-${entity.kebab}.controller.ts`), crudCreateControllerStub(name));
82
+ console.log(colors.green(`✓ Created create-${entity.kebab}.controller.ts`));
83
+ await putFileAsync(path.join(modulePath, "controllers", `update-${entity.kebab}.controller.ts`), crudUpdateControllerStub(name));
84
+ console.log(colors.green(`✓ Created update-${entity.kebab}.controller.ts`));
85
+ await putFileAsync(path.join(modulePath, "controllers", `list-${name.kebab}.controller.ts`), crudListControllerStub(name));
86
+ console.log(colors.green(`✓ Created list-${name.kebab}.controller.ts`));
87
+ await putFileAsync(path.join(modulePath, "controllers", `get-${entity.kebab}.controller.ts`), crudShowControllerStub(name));
88
+ console.log(colors.green(`✓ Created get-${entity.kebab}.controller.ts`));
89
+ await putFileAsync(path.join(modulePath, "controllers", `delete-${entity.kebab}.controller.ts`), crudDeleteControllerStub(name));
90
+ console.log(colors.green(`✓ Created delete-${entity.kebab}.controller.ts`));
91
+ // Create validation schemas
92
+ await putFileAsync(path.join(modulePath, "validation", `create-${entity.kebab}.schema.ts`), crudCreateValidationStub(name));
93
+ console.log(colors.green(`✓ Created create-${entity.kebab}.schema.ts`));
94
+ await putFileAsync(path.join(modulePath, "validation", `update-${entity.kebab}.schema.ts`), crudUpdateValidationStub(name));
95
+ console.log(colors.green(`✓ Created update-${entity.kebab}.schema.ts`));
96
+ // Create request types
97
+ const createRequestName = parseName(`create-${entity.kebab}`);
98
+ await putFileAsync(path.join(modulePath, "requests", `create-${entity.kebab}.request.ts`), requestStub(createRequestName));
99
+ console.log(colors.green(`✓ Created create-${entity.kebab}.request.ts`));
100
+ const updateRequestName = parseName(`update-${entity.kebab}`);
101
+ await putFileAsync(path.join(modulePath, "requests", `update-${entity.kebab}.request.ts`), requestStub(updateRequestName));
102
+ console.log(colors.green(`✓ Created update-${entity.kebab}.request.ts`));
103
+ // Create model
104
+ await ensureDirectoryAsync(path.join(modulePath, "models", entity.kebab));
105
+ await putFileAsync(path.join(modulePath, "models", entity.kebab, `${entity.kebab}.model.ts`), crudModelStub(name));
106
+ console.log(colors.green(`✓ Created ${entity.kebab}.model.ts`));
107
+ // Create model index
108
+ await putFileAsync(path.join(modulePath, "models", entity.kebab, "index.ts"), `export * from "./${entity.kebab}.model";\n`);
109
+ // Create migrations folder
110
+ await ensureDirectoryAsync(path.join(modulePath, "models", entity.kebab, "migrations"));
111
+ // Create resource
112
+ await putFileAsync(path.join(modulePath, "resources", `${entity.kebab}.resource.ts`), crudResourceStub(name));
113
+ console.log(colors.green(`✓ Created ${entity.kebab}.resource.ts`));
114
+ // Create repository
115
+ await putFileAsync(path.join(modulePath, "repositories", `${name.kebab}.repository.ts`), crudRepositoryStub(name));
116
+ console.log(colors.green(`✓ Created ${name.kebab}.repository.ts`));
117
+ // Create services
118
+ await putFileAsync(path.join(modulePath, "services", `create-${entity.kebab}.service.ts`), crudCreateServiceStub(name));
119
+ console.log(colors.green(`✓ Created create-${entity.kebab}.service.ts`));
120
+ await putFileAsync(path.join(modulePath, "services", `update-${entity.kebab}.service.ts`), crudUpdateServiceStub(name));
121
+ console.log(colors.green(`✓ Created update-${entity.kebab}.service.ts`));
122
+ await putFileAsync(path.join(modulePath, "services", `list-${name.kebab}.service.ts`), crudListServiceStub(name));
123
+ console.log(colors.green(`✓ Created list-${name.kebab}.service.ts`));
124
+ await putFileAsync(path.join(modulePath, "services", `get-${entity.kebab}.service.ts`), crudGetServiceStub(name));
125
+ console.log(colors.green(`✓ Created get-${entity.kebab}.service.ts`));
126
+ await putFileAsync(path.join(modulePath, "services", `delete-${entity.kebab}.service.ts`), crudDeleteServiceStub(name));
127
+ console.log(colors.green(`✓ Created delete-${entity.kebab}.service.ts`));
128
+ // Create seeds
129
+ await ensureDirectoryAsync(path.join(modulePath, "seeds"));
130
+ await putFileAsync(path.join(modulePath, "seeds", `${name.kebab}.seed.ts`), crudSeedStub(name));
131
+ console.log(colors.green(`✓ Created ${name.kebab}.seed.ts`));
132
+ // Create migration
133
+ await createMigrationFile(name.kebab, entity.kebab);
134
+ }
135
+ console.log(colors.cyan(`\n✨ Module "${name.kebab}" generated successfully!`));
136
+ if (withCrud) {
137
+ console.log(colors.gray(`\n📦 CRUD scaffold created with:`));
138
+ console.log(colors.gray(` - List, Get, Create & Update controllers`));
139
+ console.log(colors.gray(` - Repository`));
140
+ console.log(colors.gray(` - Validation schemas`));
141
+ console.log(colors.gray(` - Request types`));
142
+ console.log(colors.gray(` - Model with resource`));
143
+ console.log(colors.gray(` - Routes configured`));
144
+ console.log(colors.gray(`\nNext steps:`));
145
+ console.log(colors.gray(` 1. Update model schema in models/${name.kebab}/${name.kebab}.model.ts`));
146
+ console.log(colors.gray(` 2. Update validation rules in validation/*.schema.ts`));
147
+ console.log(colors.gray(` 3. Create migration: warlock generate.model ${name.kebab}/${name.kebab}`));
148
+ }
149
+ else {
150
+ console.log(colors.gray(`\nNext steps:`));
151
+ console.log(colors.gray(` 1. Define routes in ${name.kebab}/routes.ts`));
152
+ console.log(colors.gray(` 2. Create controllers: warlock generate.controller ${name.kebab}/<name>`));
153
+ console.log(colors.gray(` 3. Create models: warlock generate.model ${name.kebab}/<name>`));
154
+ console.log(colors.gray(`\nTip: Use --crud flag to generate a full CRUD scaffold`));
155
+ }
156
+ }export{generateModule};//# sourceMappingURL=module.generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"module.generator.js","sources":["../../../../../src/cli/commands/generate/generators/module.generator.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { CommandActionData } from "../../../types";
2
+ export declare function generateRepository(data: CommandActionData): Promise<void>;
3
+ //# sourceMappingURL=repository.generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repository.generator.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/generate/generators/repository.generator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAUxD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C/E"}