@warlock.js/core 4.0.131 → 4.0.133
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/esm/cli/commands/create-database.command.d.ts +2 -0
- package/esm/cli/commands/create-database.command.d.ts.map +1 -0
- package/esm/cli/commands/create-database.command.js +18 -0
- package/esm/cli/commands/create-database.command.js.map +1 -0
- package/esm/cli/commands/generate/generate.command.d.ts +10 -0
- package/esm/cli/commands/generate/generate.command.d.ts.map +1 -0
- package/esm/cli/commands/generate/generate.command.js +167 -0
- package/esm/cli/commands/generate/generate.command.js.map +1 -0
- package/esm/cli/commands/generate/generators/controller.generator.d.ts +3 -0
- package/esm/cli/commands/generate/generators/controller.generator.d.ts.map +1 -0
- package/esm/cli/commands/generate/generators/controller.generator.js +51 -0
- package/esm/cli/commands/generate/generators/controller.generator.js.map +1 -0
- package/esm/cli/commands/generate/generators/migration.generator.d.ts +13 -0
- package/esm/cli/commands/generate/generators/migration.generator.d.ts.map +1 -0
- package/esm/cli/commands/generate/generators/migration.generator.js +42 -0
- package/esm/cli/commands/generate/generators/migration.generator.js.map +1 -0
- package/esm/cli/commands/generate/generators/model.generator.d.ts +3 -0
- package/esm/cli/commands/generate/generators/model.generator.d.ts.map +1 -0
- package/esm/cli/commands/generate/generators/model.generator.js +56 -0
- package/esm/cli/commands/generate/generators/model.generator.js.map +1 -0
- package/esm/cli/commands/generate/generators/module.generator.d.ts +3 -0
- package/esm/cli/commands/generate/generators/module.generator.d.ts.map +1 -0
- package/esm/cli/commands/generate/generators/module.generator.js +156 -0
- package/esm/cli/commands/generate/generators/module.generator.js.map +1 -0
- package/esm/cli/commands/generate/generators/repository.generator.d.ts +3 -0
- package/esm/cli/commands/generate/generators/repository.generator.d.ts.map +1 -0
- package/esm/cli/commands/generate/generators/repository.generator.js +37 -0
- package/esm/cli/commands/generate/generators/repository.generator.js.map +1 -0
- package/esm/cli/commands/generate/generators/resource.generator.d.ts +3 -0
- package/esm/cli/commands/generate/generators/resource.generator.d.ts.map +1 -0
- package/esm/cli/commands/generate/generators/resource.generator.js +37 -0
- package/esm/cli/commands/generate/generators/resource.generator.js.map +1 -0
- package/esm/cli/commands/generate/generators/service.generator.d.ts +3 -0
- package/esm/cli/commands/generate/generators/service.generator.d.ts.map +1 -0
- package/esm/cli/commands/generate/generators/service.generator.js +37 -0
- package/esm/cli/commands/generate/generators/service.generator.js.map +1 -0
- package/esm/cli/commands/generate/generators/validation.generator.d.ts +3 -0
- package/esm/cli/commands/generate/generators/validation.generator.d.ts.map +1 -0
- package/esm/cli/commands/generate/generators/validation.generator.js +46 -0
- package/esm/cli/commands/generate/generators/validation.generator.js.map +1 -0
- package/esm/cli/commands/generate/templates/stubs.d.ts +111 -0
- package/esm/cli/commands/generate/templates/stubs.d.ts.map +1 -0
- package/esm/cli/commands/generate/templates/stubs.js +569 -0
- package/esm/cli/commands/generate/templates/stubs.js.map +1 -0
- package/esm/cli/commands/generate/types.d.ts +53 -0
- package/esm/cli/commands/generate/types.d.ts.map +1 -0
- package/esm/cli/commands/generate/utils/name-parser.d.ts +45 -0
- package/esm/cli/commands/generate/utils/name-parser.d.ts.map +1 -0
- package/esm/cli/commands/generate/utils/name-parser.js +76 -0
- package/esm/cli/commands/generate/utils/name-parser.js.map +1 -0
- package/esm/cli/commands/generate/utils/path-resolver.d.ts +30 -0
- package/esm/cli/commands/generate/utils/path-resolver.d.ts.map +1 -0
- package/esm/cli/commands/generate/utils/path-resolver.js +42 -0
- package/esm/cli/commands/generate/utils/path-resolver.js.map +1 -0
- package/esm/cli/commands/generate/utils/prompt.d.ts +13 -0
- package/esm/cli/commands/generate/utils/prompt.d.ts.map +1 -0
- package/esm/cli/framework-cli-commands.d.ts.map +1 -1
- package/esm/cli/framework-cli-commands.js +12 -1
- package/esm/cli/framework-cli-commands.js.map +1 -1
- package/esm/database/create-database-action.d.ts +3 -0
- package/esm/database/create-database-action.d.ts.map +1 -0
- package/esm/database/create-database-action.js +28 -0
- package/esm/database/create-database-action.js.map +1 -0
- package/esm/index.js +1 -1
- package/esm/resource/define-resource.d.ts.map +1 -1
- package/esm/resource/define-resource.js +6 -2
- package/esm/resource/define-resource.js.map +1 -1
- package/esm/resource/index.d.ts +1 -0
- package/esm/resource/index.d.ts.map +1 -1
- package/esm/resource/register-resource.d.ts +21 -0
- package/esm/resource/register-resource.d.ts.map +1 -0
- package/esm/resource/register-resource.js +23 -0
- package/esm/resource/register-resource.js.map +1 -0
- package/esm/resource/resource-field-builder.d.ts +22 -1
- package/esm/resource/resource-field-builder.d.ts.map +1 -1
- package/esm/resource/resource-field-builder.js +71 -14
- package/esm/resource/resource-field-builder.js.map +1 -1
- package/esm/resource/resource.d.ts +19 -8
- package/esm/resource/resource.d.ts.map +1 -1
- package/esm/resource/resource.js +59 -40
- package/esm/resource/resource.js.map +1 -1
- package/esm/resource/types.d.ts +25 -1
- package/esm/resource/types.d.ts.map +1 -1
- package/esm/router/types.d.ts +6 -0
- package/esm/router/types.d.ts.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-parser.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/generate/utils/name-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAWhF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK/C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAWpE"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse module path from input
|
|
3
|
+
* Examples:
|
|
4
|
+
* - "users/create-user" → { module: "users", name: "create-user" }
|
|
5
|
+
* - "create-user" → { module: undefined, name: "create-user" }
|
|
6
|
+
*/
|
|
7
|
+
function parseModulePath(input) {
|
|
8
|
+
const parts = input.split("/");
|
|
9
|
+
if (parts.length === 1) {
|
|
10
|
+
return { name: parts[0] };
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
module: parts[0],
|
|
14
|
+
name: parts.slice(1).join("/"),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Convert string to PascalCase
|
|
19
|
+
* Examples:
|
|
20
|
+
* - "create-user" → "CreateUser"
|
|
21
|
+
* - "create_user" → "CreateUser"
|
|
22
|
+
* - "createUser" → "CreateUser"
|
|
23
|
+
*/
|
|
24
|
+
function toPascalCase(str) {
|
|
25
|
+
return str
|
|
26
|
+
.replace(/[-_\s]+(.)?/g, (_, char) => (char ? char.toUpperCase() : ""))
|
|
27
|
+
.replace(/^(.)/, (char) => char.toUpperCase());
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Convert string to camelCase
|
|
31
|
+
* Examples:
|
|
32
|
+
* - "create-user" → "createUser"
|
|
33
|
+
* - "CreateUser" → "createUser"
|
|
34
|
+
*/
|
|
35
|
+
function toCamelCase(str) {
|
|
36
|
+
const pascal = toPascalCase(str);
|
|
37
|
+
return pascal.charAt(0).toLowerCase() + pascal.slice(1);
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Convert string to kebab-case
|
|
41
|
+
* Examples:
|
|
42
|
+
* - "CreateUser" → "create-user"
|
|
43
|
+
* - "createUser" → "create-user"
|
|
44
|
+
*/
|
|
45
|
+
function toKebabCase(str) {
|
|
46
|
+
return str
|
|
47
|
+
.replace(/([a-z])([A-Z])/g, "$1-$2")
|
|
48
|
+
.replace(/[\s_]+/g, "-")
|
|
49
|
+
.toLowerCase();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Convert string to snake_case
|
|
53
|
+
* Examples:
|
|
54
|
+
* - "CreateUser" → "create_user"
|
|
55
|
+
* - "create-user" → "create_user"
|
|
56
|
+
*/
|
|
57
|
+
function toSnakeCase(str) {
|
|
58
|
+
return str
|
|
59
|
+
.replace(/([a-z])([A-Z])/g, "$1_$2")
|
|
60
|
+
.replace(/[\s-]+/g, "_")
|
|
61
|
+
.toLowerCase();
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parse name into all case variants
|
|
65
|
+
*/
|
|
66
|
+
function parseName(input, module) {
|
|
67
|
+
const kebab = toKebabCase(input);
|
|
68
|
+
return {
|
|
69
|
+
raw: input,
|
|
70
|
+
pascal: toPascalCase(input),
|
|
71
|
+
camel: toCamelCase(input),
|
|
72
|
+
kebab,
|
|
73
|
+
snake: toSnakeCase(input),
|
|
74
|
+
module,
|
|
75
|
+
};
|
|
76
|
+
}export{parseModulePath,parseName,toCamelCase,toKebabCase,toPascalCase,toSnakeCase};//# sourceMappingURL=name-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"name-parser.js","sources":["../../../../../src/cli/commands/generate/utils/name-parser.ts"],"sourcesContent":[null],"names":[],"mappings":"AAEA;;;;;AAKG;AACG,SAAU,eAAe,CAAC,KAAa,EAAA;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;AAE/B,IAAA,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;QACtB,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3B,KAAA;IAED,OAAO;AACL,QAAA,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAChB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;KAC/B,CAAC;AACJ,CAAC;AAED;;;;;;AAMG;AACG,SAAU,YAAY,CAAC,GAAW,EAAA;AACtC,IAAA,OAAO,GAAG;SACP,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,EAAE,IAAI,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC;AACtE,SAAA,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;;;;AAKG;AACG,SAAU,WAAW,CAAC,GAAW,EAAA;AACrC,IAAA,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;AACjC,IAAA,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;AAKG;AACG,SAAU,WAAW,CAAC,GAAW,EAAA;AACrC,IAAA,OAAO,GAAG;AACP,SAAA,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;AACnC,SAAA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AACvB,SAAA,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;;;;AAKG;AACG,SAAU,WAAW,CAAC,GAAW,EAAA;AACrC,IAAA,OAAO,GAAG;AACP,SAAA,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;AACnC,SAAA,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;AACvB,SAAA,WAAW,EAAE,CAAC;AACnB,CAAC;AAED;;AAEG;AACa,SAAA,SAAS,CAAC,KAAa,EAAE,MAAe,EAAA;AACtD,IAAA,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEjC,OAAO;AACL,QAAA,GAAG,EAAE,KAAK;AACV,QAAA,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC;AAC3B,QAAA,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;QACzB,KAAK;AACL,QAAA,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;QACzB,MAAM;KACP,CAAC;AACJ"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve module path
|
|
3
|
+
* Returns absolute path to module directory
|
|
4
|
+
*/
|
|
5
|
+
export declare function resolveModulePath(module: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Resolve component path within a module
|
|
8
|
+
* @param module - Module name (e.g., "users")
|
|
9
|
+
* @param type - Component type (e.g., "controllers", "services")
|
|
10
|
+
* @param name - Component name (e.g., "create-user")
|
|
11
|
+
* @param extension - File extension (default: ".ts")
|
|
12
|
+
*/
|
|
13
|
+
export declare function resolveComponentPath(module: string, type: string, name: string, extension?: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Check if module exists
|
|
16
|
+
*/
|
|
17
|
+
export declare function moduleExists(module: string): Promise<boolean>;
|
|
18
|
+
/**
|
|
19
|
+
* Check if file exists
|
|
20
|
+
*/
|
|
21
|
+
export declare function componentExists(module: string, type: string, name: string, extension?: string): Promise<boolean>;
|
|
22
|
+
/**
|
|
23
|
+
* Ensure directory exists, create if missing
|
|
24
|
+
*/
|
|
25
|
+
export declare function ensureDirectory(dirPath: string): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Ensure component directory exists
|
|
28
|
+
*/
|
|
29
|
+
export declare function ensureComponentDirectory(module: string, type: string): Promise<void>;
|
|
30
|
+
//# sourceMappingURL=path-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-resolver.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/generate/utils/path-resolver.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,SAAQ,GAChB,MAAM,CAER;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAEnE;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,SAAS,SAAQ,GAChB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEpE;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG1F"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import {fileExistsAsync,ensureDirectoryAsync}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';/**
|
|
2
|
+
* Resolve module path
|
|
3
|
+
* Returns absolute path to module directory
|
|
4
|
+
*/
|
|
5
|
+
function resolveModulePath(module) {
|
|
6
|
+
return appPath(module);
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Resolve component path within a module
|
|
10
|
+
* @param module - Module name (e.g., "users")
|
|
11
|
+
* @param type - Component type (e.g., "controllers", "services")
|
|
12
|
+
* @param name - Component name (e.g., "create-user")
|
|
13
|
+
* @param extension - File extension (default: ".ts")
|
|
14
|
+
*/
|
|
15
|
+
function resolveComponentPath(module, type, name, extension = ".ts") {
|
|
16
|
+
return path.join(resolveModulePath(module), type, `${name}${extension}`);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Check if module exists
|
|
20
|
+
*/
|
|
21
|
+
async function moduleExists(module) {
|
|
22
|
+
return (await fileExistsAsync(resolveModulePath(module)));
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Check if file exists
|
|
26
|
+
*/
|
|
27
|
+
async function componentExists(module, type, name, extension = ".ts") {
|
|
28
|
+
return (await fileExistsAsync(resolveComponentPath(module, type, name, extension)));
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Ensure directory exists, create if missing
|
|
32
|
+
*/
|
|
33
|
+
async function ensureDirectory(dirPath) {
|
|
34
|
+
await ensureDirectoryAsync(dirPath);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Ensure component directory exists
|
|
38
|
+
*/
|
|
39
|
+
async function ensureComponentDirectory(module, type) {
|
|
40
|
+
const dirPath = path.join(resolveModulePath(module), type);
|
|
41
|
+
await ensureDirectory(dirPath);
|
|
42
|
+
}export{componentExists,ensureComponentDirectory,ensureDirectory,moduleExists,resolveComponentPath,resolveModulePath};//# sourceMappingURL=path-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-resolver.js","sources":["../../../../../src/cli/commands/generate/utils/path-resolver.ts"],"sourcesContent":[null],"names":[],"mappings":"6WAIA;;;AAGG;AACG,SAAU,iBAAiB,CAAC,MAAc,EAAA;AAC9C,IAAA,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;;;;;AAMG;AACG,SAAU,oBAAoB,CAClC,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,SAAS,GAAG,KAAK,EAAA;AAEjB,IAAA,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAG,EAAA,IAAI,GAAG,SAAS,CAAA,CAAE,CAAC,CAAC;AAC3E,CAAC;AAED;;AAEG;AACI,eAAe,YAAY,CAAC,MAAc,EAAA;IAC/C,QAAQ,MAAM,eAAe,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,EAAa;AACvE,CAAC;AAED;;AAEG;AACI,eAAe,eAAe,CACnC,MAAc,EACd,IAAY,EACZ,IAAY,EACZ,SAAS,GAAG,KAAK,EAAA;AAEjB,IAAA,QAAQ,MAAM,eAAe,CAAC,oBAAoB,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC,EAAa;AACjG,CAAC;AAED;;AAEG;AACI,eAAe,eAAe,CAAC,OAAe,EAAA;AACnD,IAAA,MAAM,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED;;AAEG;AACI,eAAe,wBAAwB,CAAC,MAAc,EAAE,IAAY,EAAA;AACzE,IAAA,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;AAC3D,IAAA,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;AACjC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt user for confirmation
|
|
3
|
+
*/
|
|
4
|
+
export declare function confirm(message: string, defaultValue?: boolean): Promise<boolean>;
|
|
5
|
+
/**
|
|
6
|
+
* Prompt user for text input
|
|
7
|
+
*/
|
|
8
|
+
export declare function input(message: string, defaultValue?: string): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Prompt user to select from choices
|
|
11
|
+
*/
|
|
12
|
+
export declare function select(message: string, choices: string[]): Promise<string>;
|
|
13
|
+
//# sourceMappingURL=prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/generate/utils/prompt.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBrF;AAED;;GAEG;AACH,wBAAsB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcnF;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAwBhF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-cli-commands.d.ts","sourceRoot":"","sources":["../../src/cli/framework-cli-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"framework-cli-commands.d.ts","sourceRoot":"","sources":["../../src/cli/framework-cli-commands.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,iBAAiB,sCAwB7B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {addCommand}from'./commands/add.command.js';import {buildCommand}from'./commands/build.command.js';import {devServerCommand}from'./commands/dev-server.command.js';import {migrateCommand}from'./commands/migrate.command.js';import {seedCommand}from'./commands/seed.command.js';import {startProductionCommand}from'./commands/start-production.command.js';import {typingsGeneratorCommand}from'./commands/typings-generator.command.js';const frameworkCommands = [
|
|
1
|
+
import {addCommand}from'./commands/add.command.js';import {buildCommand}from'./commands/build.command.js';import {devServerCommand}from'./commands/dev-server.command.js';import {generateCommand,generateModuleCommand,generateControllerCommand,generateServiceCommand,generateModelCommand,generateRepositoryCommand,generateResourceCommand,generateValidationCommand,generateMigrationCommand}from'./commands/generate/generate.command.js';import {migrateCommand}from'./commands/migrate.command.js';import {seedCommand}from'./commands/seed.command.js';import {createDatabaseCommand}from'./commands/create-database.command.js';import {startProductionCommand}from'./commands/start-production.command.js';import {typingsGeneratorCommand}from'./commands/typings-generator.command.js';const frameworkCommands = [
|
|
2
2
|
devServerCommand,
|
|
3
3
|
buildCommand,
|
|
4
4
|
startProductionCommand,
|
|
@@ -6,6 +6,17 @@ import {addCommand}from'./commands/add.command.js';import {buildCommand}from'./c
|
|
|
6
6
|
// database commands
|
|
7
7
|
migrateCommand,
|
|
8
8
|
seedCommand,
|
|
9
|
+
createDatabaseCommand,
|
|
9
10
|
// generation/installation commands
|
|
10
11
|
addCommand,
|
|
12
|
+
// scaffolding commands
|
|
13
|
+
generateCommand,
|
|
14
|
+
generateModuleCommand,
|
|
15
|
+
generateControllerCommand,
|
|
16
|
+
generateServiceCommand,
|
|
17
|
+
generateModelCommand,
|
|
18
|
+
generateRepositoryCommand,
|
|
19
|
+
generateResourceCommand,
|
|
20
|
+
generateValidationCommand,
|
|
21
|
+
generateMigrationCommand,
|
|
11
22
|
];export{frameworkCommands};//# sourceMappingURL=framework-cli-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework-cli-commands.js","sources":["../../src/cli/framework-cli-commands.ts"],"sourcesContent":[null],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"framework-cli-commands.js","sources":["../../src/cli/framework-cli-commands.ts"],"sourcesContent":[null],"names":[],"mappings":"qwBAqBa,MAAA,iBAAiB,GAAG;IAC/B,gBAAgB;IAChB,YAAY;IACZ,sBAAsB;IACtB,uBAAuB;;IAGvB,cAAc;IACd,WAAW;IACX,qBAAqB;;IAGrB,UAAU;;IAGV,eAAe;IACf,qBAAqB;IACrB,yBAAyB;IACzB,sBAAsB;IACtB,oBAAoB;IACpB,yBAAyB;IACzB,uBAAuB;IACvB,yBAAyB;IACzB,wBAAwB;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-database-action.d.ts","sourceRoot":"","sources":["../../src/database/create-database-action.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,iBA8CpE"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import {colors}from'@mongez/copper';import {dataSourceRegistry}from'@warlock.js/cascade';import {log}from'@warlock.js/logger';import {config}from'../config/config-getter.js';import'../config/config-handlers.js';async function createDatabaseAction(command) {
|
|
2
|
+
const name = command.args[0];
|
|
3
|
+
const { connection = "default" } = command.options;
|
|
4
|
+
const dataSource = dataSourceRegistry.get(connection === "default" || connection === true ? undefined : String(connection));
|
|
5
|
+
let databaseName = name;
|
|
6
|
+
if (!databaseName) {
|
|
7
|
+
if (connection === "default") {
|
|
8
|
+
databaseName = config.get("database")?.database;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
if (!databaseName) {
|
|
12
|
+
log.error("database", "create", "Database name is required. Please provide a name or configure it in the database config.");
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
log.info("database", "create", `Creating database ${colors.cyan(databaseName)}...`);
|
|
16
|
+
try {
|
|
17
|
+
const created = await dataSource.driver.createDatabase(databaseName);
|
|
18
|
+
if (created) {
|
|
19
|
+
log.success("database", "create", `Database ${colors.green(databaseName)} created successfully.`);
|
|
20
|
+
}
|
|
21
|
+
else {
|
|
22
|
+
log.warn("database", "create", `Database ${colors.yellow(databaseName)} already exists.`);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
log.error("database", "create", `Failed to create database ${colors.red(databaseName)}: ${error.message}`);
|
|
27
|
+
}
|
|
28
|
+
}export{createDatabaseAction};//# sourceMappingURL=create-database-action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-database-action.js","sources":["../../src/database/create-database-action.ts"],"sourcesContent":[null],"names":[],"mappings":"mNAMO,eAAe,oBAAoB,CAAC,OAA0B,EAAA;IACnE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,MAAM,EAAE,UAAU,GAAG,SAAS,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;IAEnD,MAAM,UAAU,GAAG,kBAAkB,CAAC,GAAG,CACvC,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,CACjF,CAAC;IAEF,IAAI,YAAY,GAAG,IAAI,CAAC;IAExB,IAAI,CAAC,YAAY,EAAE;QACjB,IAAI,UAAU,KAAK,SAAS,EAAE;YAC5B,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,QAAQ,CAAC;AACjD,SAAA;AACF,KAAA;IAED,IAAI,CAAC,YAAY,EAAE;QACjB,GAAG,CAAC,KAAK,CACP,UAAU,EACV,QAAQ,EACR,0FAA0F,CAC3F,CAAC;QACF,OAAO;AACR,KAAA;AAED,IAAA,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAA,kBAAA,EAAqB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA,GAAA,CAAK,CAAC,CAAC;IAEpF,IAAI;QACF,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;AAErE,QAAA,IAAI,OAAO,EAAE;AACX,YAAA,GAAG,CAAC,OAAO,CACT,UAAU,EACV,QAAQ,EACR,CAAA,SAAA,EAAY,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA,sBAAA,CAAwB,CAC/D,CAAC;AACH,SAAA;AAAM,aAAA;AACL,YAAA,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,CAAA,SAAA,EAAY,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA,gBAAA,CAAkB,CAAC,CAAC;AAC3F,SAAA;AACF,KAAA;AAAC,IAAA,OAAO,KAAU,EAAE;QACnB,GAAG,CAAC,KAAK,CACP,UAAU,EACV,QAAQ,EACR,6BAA6B,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAK,EAAA,EAAA,KAAK,CAAC,OAAO,CAAA,CAAE,CAC1E,CAAC;AACH,KAAA;AACH"}
|
package/esm/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export{env}from'@mongez/dotenv';import'./validation/init.js';export{colors}from'@mongez/copper';export*from'@mongez/localization';export{Application}from'./application/application.js';export{bootstrap}from'./bootstrap.js';export{displayEnvironmentMode}from'./bootstrap/setup.js';import'./cache/index.js';export{CLICommand,command}from'./cli/cli-command.js';export{config}from'./config/config-getter.js';export{registerAppConfig,registerLogConfig,registerMailConfig}from'./config/config-handlers.js';export{ConfigSpecialHandlers,configSpecialHandlers}from'./config/config-special-handlers.js';export{DatabaseLogModel}from'./database/models/database-log/database-log.js';export{seeder}from'./database/seeds/seeder.js';export{useComputedModel,useComputedSlug,useHashedPassword}from'./database/utils.js';export{BaseConnector}from'./dev2-server/connectors/base-connector.js';export{CacheConnector}from'./dev2-server/connectors/cache-connector.js';export{CommunicatorConnector}from'./dev2-server/connectors/communicator-connector.js';export{ConnectorsManager,connectorsManager}from'./dev2-server/connectors/connectors-manager.js';export{DatabaseConnector}from'./dev2-server/connectors/database-connector.js';export{HttpConnector}from'./dev2-server/connectors/http-connector.js';export{StorageConnector}from'./dev2-server/connectors/storage.connector.js';export{ConnectorPriority}from'./dev2-server/connectors/types.js';export{BaseHealthChecker}from'./dev2-server/health-checker/checkers/base-health-checker.js';export{EslintHealthChecker}from'./dev2-server/health-checker/checkers/eslint-health-checker.js';export{TypescriptHealthChecker}from'./dev2-server/health-checker/checkers/typescript-health-checker.js';import'./dev2-server/health-checker/workers/eslint-health.worker.js';import'./dev2-server/health-checker/workers/ts-health.worker.js';export{defaultHttpConfigurations,httpConfig}from'./http/config.js';export{createHttpApplication,stopHttpApplication}from'./http/createHttpApplication.js';export{RequestLog}from'./http/database/RequestLog.js';export{logResponse,wrapResponseInDataKey}from'./http/events.js';export{RequestController}from'./http/request-controller.js';export{UploadedFile}from'./http/uploaded-file.js';export{UPLOADS_DEFAULTS,uploadsConfig}from'./http/uploads-config.js';export{BadRequestError,ConflictError,ForbiddenError,HttpError,NotAcceptableError,NotAllowedError,ResourceNotFoundError,ServerError,UnAuthorizedError}from'./http/errors/errors.js';export{cacheMiddleware}from'./http/middleware/cache-response-middleware.js';export{createRequestStore,fromRequest,t}from'./http/middleware/inject-request-context.js';export{registerHttpPlugins}from'./http/plugins.js';export{Request}from'./http/request.js';export{Response,ResponseStatus}from'./http/response.js';export{getServer,startServer}from'./http/server.js';export{requestContext,useCurrentUser,useRequest,useRequestStore}from'./http/context/request-context.js';export{Image}from'./image/image.js';export{setLogConfigurations}from'./logger/logger.js';export{getDefaultMailConfig,getMailMode,getMailerConfig,isDevelopmentMode,isProductionMode,isTestMode,resetMailConfig,resolveMailConfig,setMailConfigurations,setMailMode}from'./mail/config.js';export{MAIL_EVENTS,generateMailId,getMailEventName,mailEvents}from'./mail/events.js';export{closeAllMailers,closeMailer,getMailer,getPoolStats,verifyMailer}from'./mail/mailer-pool.js';export{renderReactMail}from'./mail/react-mail.js';export{sendMail}from'./mail/send-mail.js';export{Mail}from'./mail/mail.js';export{assertMailCount,assertMailSent,captureMail,clearTestMailbox,findMailsBySubject,findMailsTo,getLastMail,getMailboxSize,getTestMailbox,wasMailSentTo,wasMailSentWithSubject}from'./mail/test-mailbox.js';export{MailError}from'./mail/types.js';export{renderReact}from'./react/index.js';export{CascadeAdapter}from'./repositories/adapters/cascade/cascade-adapter.js';export{CascadeQueryBuilder}from'./repositories/adapters/cascade/cascade-query-builder.js';export{RepositoryManager}from'./repositories/repository.manager.js';export{defineResource}from'./resource/define-resource.js';export{Resource}from'./resource/resource.js';export{ResourceFieldBuilder}from'./resource/resource-field-builder.js';export{Restful}from'./restful/restful.js';export{Router,router}from'./router/router.js';export{storageConfig,storageConfigurations}from'./storage/config.js';export{ScopedStorage}from'./storage/scoped-storage.js';export{Storage,storage}from'./storage/storage.js';export{StorageFile}from'./storage/storage-file.js';export{storageDriverContext}from'./storage/context/storage-driver-context.js';export{MimeTypes,getMimeType}from'./storage/utils/mime.js';export{CloudDriver}from'./storage/drivers/cloud-driver.js';export{DOSpacesDriver}from'./storage/drivers/do-spaces-driver.js';export{LocalDriver}from'./storage/drivers/local-driver.js';export{R2Driver}from'./storage/drivers/r2-driver.js';export{S3Driver}from'./storage/drivers/s3-driver.js';export{createStore,useStore}from'./store/index.js';export{startHttpTestServer,stopHttpTestServer}from'./tests/start-http-development-server.js';export{setupTest}from'./tests/vitest-setup.js';export{appLog}from'./utils/app-log.js';export{DatabaseLog}from'./utils/database-log.js';export{environment,setEnvironment}from'./utils/environment.js';export{getLocalized}from'./utils/get-localized.js';export{appPath,cachePath,configPath,consolePath,publicPath,rootPath,sanitizePath,srcPath,storagePath,tempPath,uploadsPath,warlockPath}from'./utils/paths.js';export{promiseAllObject}from'./utils/promise-all-object.js';export{Queue}from'./utils/queue.js';export{sleep}from'./utils/sleep.js';export{sluggable}from'./utils/sluggable.js';export{toJson}from'./utils/to-json.js';export{assetsUrl,publicUrl,setBaseUrl,uploadsUrl,url}from'./utils/urls.js';export{FileValidator,uploadedFileMetadataSchema}from'./validation/validators/file-validator.js';export{existsRule}from'./validation/database/exists.js';export{existsExceptCurrentIdRule}from'./validation/database/exists-except-current-id.js';export{existsExceptCurrentUserRule}from'./validation/database/exists-except-current-user.js';export{uniqueRule}from'./validation/database/unique.js';export{uniqueExceptCurrentIdRule}from'./validation/database/unique-except-current-id.js';export{uniqueExceptCurrentUserRule}from'./validation/database/unique-except-current-user.js';export{fileExtensionRule,fileRule,fileTypeRule,imageRule}from'./validation/file/file.js';export{v}from'@warlock.js/seal';export{defineConfig}from'./warlock-config/define-config.js';export{WarlockConfigManager,warlockConfigManager}from'./warlock-config/warlock-config.manager.js';export{DatabaseCacheDriver}from'./cache/database-cache-driver.js';//# sourceMappingURL=index.js.map
|
|
1
|
+
export{env}from'@mongez/dotenv';import'./validation/init.js';export{colors}from'@mongez/copper';export*from'@mongez/localization';export{Application}from'./application/application.js';export{bootstrap}from'./bootstrap.js';export{displayEnvironmentMode}from'./bootstrap/setup.js';import'./cache/index.js';export{CLICommand,command}from'./cli/cli-command.js';export{config}from'./config/config-getter.js';export{registerAppConfig,registerLogConfig,registerMailConfig}from'./config/config-handlers.js';export{ConfigSpecialHandlers,configSpecialHandlers}from'./config/config-special-handlers.js';export{DatabaseLogModel}from'./database/models/database-log/database-log.js';export{seeder}from'./database/seeds/seeder.js';export{useComputedModel,useComputedSlug,useHashedPassword}from'./database/utils.js';export{BaseConnector}from'./dev2-server/connectors/base-connector.js';export{CacheConnector}from'./dev2-server/connectors/cache-connector.js';export{CommunicatorConnector}from'./dev2-server/connectors/communicator-connector.js';export{ConnectorsManager,connectorsManager}from'./dev2-server/connectors/connectors-manager.js';export{DatabaseConnector}from'./dev2-server/connectors/database-connector.js';export{HttpConnector}from'./dev2-server/connectors/http-connector.js';export{StorageConnector}from'./dev2-server/connectors/storage.connector.js';export{ConnectorPriority}from'./dev2-server/connectors/types.js';export{BaseHealthChecker}from'./dev2-server/health-checker/checkers/base-health-checker.js';export{EslintHealthChecker}from'./dev2-server/health-checker/checkers/eslint-health-checker.js';export{TypescriptHealthChecker}from'./dev2-server/health-checker/checkers/typescript-health-checker.js';import'./dev2-server/health-checker/workers/eslint-health.worker.js';import'./dev2-server/health-checker/workers/ts-health.worker.js';export{defaultHttpConfigurations,httpConfig}from'./http/config.js';export{createHttpApplication,stopHttpApplication}from'./http/createHttpApplication.js';export{RequestLog}from'./http/database/RequestLog.js';export{logResponse,wrapResponseInDataKey}from'./http/events.js';export{RequestController}from'./http/request-controller.js';export{UploadedFile}from'./http/uploaded-file.js';export{UPLOADS_DEFAULTS,uploadsConfig}from'./http/uploads-config.js';export{BadRequestError,ConflictError,ForbiddenError,HttpError,NotAcceptableError,NotAllowedError,ResourceNotFoundError,ServerError,UnAuthorizedError}from'./http/errors/errors.js';export{cacheMiddleware}from'./http/middleware/cache-response-middleware.js';export{createRequestStore,fromRequest,t}from'./http/middleware/inject-request-context.js';export{registerHttpPlugins}from'./http/plugins.js';export{Request}from'./http/request.js';export{Response,ResponseStatus}from'./http/response.js';export{getServer,startServer}from'./http/server.js';export{requestContext,useCurrentUser,useRequest,useRequestStore}from'./http/context/request-context.js';export{Image}from'./image/image.js';export{setLogConfigurations}from'./logger/logger.js';export{getDefaultMailConfig,getMailMode,getMailerConfig,isDevelopmentMode,isProductionMode,isTestMode,resetMailConfig,resolveMailConfig,setMailConfigurations,setMailMode}from'./mail/config.js';export{MAIL_EVENTS,generateMailId,getMailEventName,mailEvents}from'./mail/events.js';export{closeAllMailers,closeMailer,getMailer,getPoolStats,verifyMailer}from'./mail/mailer-pool.js';export{renderReactMail}from'./mail/react-mail.js';export{sendMail}from'./mail/send-mail.js';export{Mail}from'./mail/mail.js';export{assertMailCount,assertMailSent,captureMail,clearTestMailbox,findMailsBySubject,findMailsTo,getLastMail,getMailboxSize,getTestMailbox,wasMailSentTo,wasMailSentWithSubject}from'./mail/test-mailbox.js';export{MailError}from'./mail/types.js';export{renderReact}from'./react/index.js';export{CascadeAdapter}from'./repositories/adapters/cascade/cascade-adapter.js';export{CascadeQueryBuilder}from'./repositories/adapters/cascade/cascade-query-builder.js';export{RepositoryManager}from'./repositories/repository.manager.js';export{defineResource}from'./resource/define-resource.js';export{RegisterResource}from'./resource/register-resource.js';export{Resource}from'./resource/resource.js';export{ResourceFieldBuilder}from'./resource/resource-field-builder.js';export{Restful}from'./restful/restful.js';export{Router,router}from'./router/router.js';export{storageConfig,storageConfigurations}from'./storage/config.js';export{ScopedStorage}from'./storage/scoped-storage.js';export{Storage,storage}from'./storage/storage.js';export{StorageFile}from'./storage/storage-file.js';export{storageDriverContext}from'./storage/context/storage-driver-context.js';export{MimeTypes,getMimeType}from'./storage/utils/mime.js';export{CloudDriver}from'./storage/drivers/cloud-driver.js';export{DOSpacesDriver}from'./storage/drivers/do-spaces-driver.js';export{LocalDriver}from'./storage/drivers/local-driver.js';export{R2Driver}from'./storage/drivers/r2-driver.js';export{S3Driver}from'./storage/drivers/s3-driver.js';export{createStore,useStore}from'./store/index.js';export{startHttpTestServer,stopHttpTestServer}from'./tests/start-http-development-server.js';export{setupTest}from'./tests/vitest-setup.js';export{appLog}from'./utils/app-log.js';export{DatabaseLog}from'./utils/database-log.js';export{environment,setEnvironment}from'./utils/environment.js';export{getLocalized}from'./utils/get-localized.js';export{appPath,cachePath,configPath,consolePath,publicPath,rootPath,sanitizePath,srcPath,storagePath,tempPath,uploadsPath,warlockPath}from'./utils/paths.js';export{promiseAllObject}from'./utils/promise-all-object.js';export{Queue}from'./utils/queue.js';export{sleep}from'./utils/sleep.js';export{sluggable}from'./utils/sluggable.js';export{toJson}from'./utils/to-json.js';export{assetsUrl,publicUrl,setBaseUrl,uploadsUrl,url}from'./utils/urls.js';export{FileValidator,uploadedFileMetadataSchema}from'./validation/validators/file-validator.js';export{existsRule}from'./validation/database/exists.js';export{existsExceptCurrentIdRule}from'./validation/database/exists-except-current-id.js';export{existsExceptCurrentUserRule}from'./validation/database/exists-except-current-user.js';export{uniqueRule}from'./validation/database/unique.js';export{uniqueExceptCurrentIdRule}from'./validation/database/unique-except-current-id.js';export{uniqueExceptCurrentUserRule}from'./validation/database/unique-except-current-user.js';export{fileExtensionRule,fileRule,fileTypeRule,imageRule}from'./validation/file/file.js';export{v}from'@warlock.js/seal';export{defineConfig}from'./warlock-config/define-config.js';export{WarlockConfigManager,warlockConfigManager}from'./warlock-config/warlock-config.manager.js';export{DatabaseCacheDriver}from'./cache/database-cache-driver.js';//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-resource.d.ts","sourceRoot":"","sources":["../../src/resource/define-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE/C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5F,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,mBAAmB,
|
|
1
|
+
{"version":3,"file":"define-resource.d.ts","sourceRoot":"","sources":["../../src/resource/define-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,mBAAmB,EAAE,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG;IAClC;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE7C;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE/C;;OAEG;IACH,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,QAAQ,EAAE,gBAAgB,KAAK,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC5F,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,mBAAmB,CA0BlF"}
|
|
@@ -39,8 +39,8 @@ import {Resource}from'./resource.js';/**
|
|
|
39
39
|
* ```
|
|
40
40
|
*/
|
|
41
41
|
function defineResource(options) {
|
|
42
|
-
|
|
43
|
-
schema = options.schema;
|
|
42
|
+
const resource = class AnonymousResource extends Resource {
|
|
43
|
+
static schema = options.schema;
|
|
44
44
|
boot() {
|
|
45
45
|
if (options.boot) {
|
|
46
46
|
options.boot.call(this, this);
|
|
@@ -55,4 +55,8 @@ function defineResource(options) {
|
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
57
|
};
|
|
58
|
+
// Normalize schema once at definition time — converts string cast types
|
|
59
|
+
// (including [] and ? suffixes) into pre-built ResourceFieldBuilder instances
|
|
60
|
+
resource.parsedSchema = Resource.normalizeSchema(resource.schema);
|
|
61
|
+
return resource;
|
|
58
62
|
}export{defineResource};//# sourceMappingURL=define-resource.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define-resource.js","sources":["../../src/resource/define-resource.ts"],"sourcesContent":[null],"names":[],"mappings":"qCA4BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AACG,SAAU,cAAc,CAAC,OAA8B,EAAA;
|
|
1
|
+
{"version":3,"file":"define-resource.js","sources":["../../src/resource/define-resource.ts"],"sourcesContent":[null],"names":[],"mappings":"qCA4BA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuCG;AACG,SAAU,cAAc,CAAC,OAA8B,EAAA;AAC3D,IAAA,MAAM,QAAQ,GAAG,MAAM,iBAAkB,SAAQ,QAAQ,CAAA;AACvD,QAAA,OAAO,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QAErB,IAAI,GAAA;YACZ,IAAI,OAAO,CAAC,IAAI,EAAE;gBAChB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAmC,CAAC,CAAC;AAC9D,aAAA;SACF;QAES,MAAM,GAAA;YACd,IAAI,OAAO,CAAC,MAAM,EAAE;gBAClB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAmC,CAAC,CAAC;AAChE,aAAA;YAED,IAAI,OAAO,CAAC,SAAS,EAAE;AACrB,gBAAA,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC/C,aAAA;SACF;KACF,CAAC;;;IAIF,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAElE,IAAA,OAAO,QAAsC,CAAC;AAChD"}
|
package/esm/resource/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resource/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resource/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,0BAA0B,CAAC;AACzC,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Resource } from "./resource";
|
|
2
|
+
/**
|
|
3
|
+
* Decorator for hand-written Resource classes.
|
|
4
|
+
* Triggers one-time schema normalization (converts string cast types into
|
|
5
|
+
* pre-built ResourceFieldBuilder instances) so transformOutput runs against
|
|
6
|
+
* builders without per-call overhead.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* @RegisterResource()
|
|
11
|
+
* class PostResource extends Resource {
|
|
12
|
+
* static schema = {
|
|
13
|
+
* id: "number",
|
|
14
|
+
* title: "string",
|
|
15
|
+
* keywords: "string[]",
|
|
16
|
+
* };
|
|
17
|
+
* }
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export declare function RegisterResource(): (target: typeof Resource) => void;
|
|
21
|
+
//# sourceMappingURL=register-resource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-resource.d.ts","sourceRoot":"","sources":["../../src/resource/register-resource.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,gBAAgB,aACL,eAAe,UAGzC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import {Resource}from'./resource.js';/**
|
|
2
|
+
* Decorator for hand-written Resource classes.
|
|
3
|
+
* Triggers one-time schema normalization (converts string cast types into
|
|
4
|
+
* pre-built ResourceFieldBuilder instances) so transformOutput runs against
|
|
5
|
+
* builders without per-call overhead.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* @RegisterResource()
|
|
10
|
+
* class PostResource extends Resource {
|
|
11
|
+
* static schema = {
|
|
12
|
+
* id: "number",
|
|
13
|
+
* title: "string",
|
|
14
|
+
* keywords: "string[]",
|
|
15
|
+
* };
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
function RegisterResource() {
|
|
20
|
+
return function (target) {
|
|
21
|
+
target.parsedSchema = Resource.normalizeSchema(target.schema);
|
|
22
|
+
};
|
|
23
|
+
}export{RegisterResource};//# sourceMappingURL=register-resource.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register-resource.js","sources":["../../src/resource/register-resource.ts"],"sourcesContent":[null],"names":[],"mappings":"qCAEA;;;;;;;;;;;;;;;;;AAiBG;SACa,gBAAgB,GAAA;AAC9B,IAAA,OAAO,UAAU,MAAuB,EAAA;QACtC,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChE,KAAC,CAAC;AACJ"}
|
|
@@ -11,6 +11,11 @@ export declare class ResourceFieldBuilder {
|
|
|
11
11
|
* If set to false and value is null, it will be returned as undefined
|
|
12
12
|
*/
|
|
13
13
|
protected isNullable: boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Whether this field is an array
|
|
16
|
+
* When true, transform() maps over each element using the base type
|
|
17
|
+
*/
|
|
18
|
+
protected isArrayField: boolean;
|
|
14
19
|
/**
|
|
15
20
|
* Default value
|
|
16
21
|
*/
|
|
@@ -37,6 +42,12 @@ export declare class ResourceFieldBuilder {
|
|
|
37
42
|
* Constructor
|
|
38
43
|
*/
|
|
39
44
|
constructor(type: ResourceOutputValueCastType);
|
|
45
|
+
/**
|
|
46
|
+
* Parse a cast type string (including suffixes) into a configured builder.
|
|
47
|
+
* Suffix order: [] before ? (e.g. "string[]?")
|
|
48
|
+
* Parsing strips right-to-left: ? first, then [].
|
|
49
|
+
*/
|
|
50
|
+
static fromCastType(castType: string): ResourceFieldBuilder;
|
|
40
51
|
/**
|
|
41
52
|
* Set input key
|
|
42
53
|
* Will be used in transformation if provided
|
|
@@ -50,6 +61,11 @@ export declare class ResourceFieldBuilder {
|
|
|
50
61
|
* Set whether the value is nullable
|
|
51
62
|
*/
|
|
52
63
|
nullable(): this;
|
|
64
|
+
/**
|
|
65
|
+
* Mark this field as an array
|
|
66
|
+
* transform() will map over each element using the base type
|
|
67
|
+
*/
|
|
68
|
+
array(): this;
|
|
53
69
|
/**
|
|
54
70
|
* Get input key
|
|
55
71
|
*/
|
|
@@ -68,9 +84,14 @@ export declare class ResourceFieldBuilder {
|
|
|
68
84
|
*/
|
|
69
85
|
dateOptions(options: ResourceFieldBuilderDateOutputOptions): this;
|
|
70
86
|
/**
|
|
71
|
-
* Transform the value
|
|
87
|
+
* Transform the value.
|
|
88
|
+
* When isArrayField is true, maps over each element using transformSingleValue.
|
|
72
89
|
*/
|
|
73
90
|
transform(value: any, locale?: string): any;
|
|
91
|
+
/**
|
|
92
|
+
* Transform a single value according to the base type.
|
|
93
|
+
*/
|
|
94
|
+
protected transformSingleValue(value: any, locale?: string): any;
|
|
74
95
|
/**
|
|
75
96
|
* Transform date value
|
|
76
97
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-field-builder.d.ts","sourceRoot":"","sources":["../../src/resource/resource-field-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qCAAqC,EAAE,KAAK,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAElG,qBAAa,oBAAoB;
|
|
1
|
+
{"version":3,"file":"resource-field-builder.d.ts","sourceRoot":"","sources":["../../src/resource/resource-field-builder.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,qCAAqC,EAAE,KAAK,2BAA2B,EAAE,MAAM,SAAS,CAAC;AAElG,qBAAa,oBAAoB;IAuDZ,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,2BAA2B;IAtDvE;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,SAAS,CAAC,UAAU,UAAS;IAE7B;;;OAGG;IACH,SAAS,CAAC,YAAY,UAAS;IAE/B;;OAEG;IACH,SAAS,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEjC;;OAEG;IACH,SAAS,CAAC,UAAU,SAA2B;IAE/C;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,SAAS,CAAC,SAAS,CAAC,EAAE,MAAM,OAAO,CAAC;IAEpC;;;;OAIG;IACH,SAAS,CAAC,gBAAgB,EAAE,qCAAqC,CAO/D;IAEF;;OAEG;gBACmC,IAAI,EAAE,2BAA2B;IAIvE;;;;OAIG;WACW,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,oBAAoB;IAqBlE;;;OAGG;IACI,WAAW,CAAC,GAAG,EAAE,MAAM;IAM9B;;OAEG;IACI,IAAI,CAAC,SAAS,EAAE,MAAM,OAAO;IAKpC;;OAEG;IACI,QAAQ;IAKf;;;OAGG;IACI,KAAK;IAKZ;;OAEG;IACI,WAAW;IAIlB;;OAEG;IACI,OAAO,CAAC,KAAK,EAAE,OAAO;IAM7B;;OAEG;IACI,MAAM,CAAC,MAAM,EAAE,MAAM;IAM5B;;;OAGG;IACI,WAAW,CAAC,OAAO,EAAE,qCAAqC;IAMjE;;;OAGG;IACI,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IAc5C;;OAEG;IACH,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,EAAE,MAAM;IA2C1D;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,MAAM;IAwD7D;;OAEG;IACH,SAAS,CAAC,kBAAkB,CAAC,KAAK,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM;CAWhF"}
|
|
@@ -9,6 +9,11 @@ import {isObject}from'@mongez/supportive-is';import dayjs from'dayjs';import'@mo
|
|
|
9
9
|
* If set to false and value is null, it will be returned as undefined
|
|
10
10
|
*/
|
|
11
11
|
isNullable = false;
|
|
12
|
+
/**
|
|
13
|
+
* Whether this field is an array
|
|
14
|
+
* When true, transform() maps over each element using the base type
|
|
15
|
+
*/
|
|
16
|
+
isArrayField = false;
|
|
12
17
|
/**
|
|
13
18
|
* Default value
|
|
14
19
|
*/
|
|
@@ -45,6 +50,30 @@ import {isObject}from'@mongez/supportive-is';import dayjs from'dayjs';import'@mo
|
|
|
45
50
|
this.type = type;
|
|
46
51
|
//
|
|
47
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Parse a cast type string (including suffixes) into a configured builder.
|
|
55
|
+
* Suffix order: [] before ? (e.g. "string[]?")
|
|
56
|
+
* Parsing strips right-to-left: ? first, then [].
|
|
57
|
+
*/
|
|
58
|
+
static fromCastType(castType) {
|
|
59
|
+
let baseType = castType;
|
|
60
|
+
let nullable = false;
|
|
61
|
+
let isArray = false;
|
|
62
|
+
if (baseType.endsWith("?")) {
|
|
63
|
+
nullable = true;
|
|
64
|
+
baseType = baseType.slice(0, -1);
|
|
65
|
+
}
|
|
66
|
+
if (baseType.endsWith("[]")) {
|
|
67
|
+
isArray = true;
|
|
68
|
+
baseType = baseType.slice(0, -2);
|
|
69
|
+
}
|
|
70
|
+
const builder = new ResourceFieldBuilder(baseType);
|
|
71
|
+
if (nullable)
|
|
72
|
+
builder.nullable();
|
|
73
|
+
if (isArray)
|
|
74
|
+
builder.array();
|
|
75
|
+
return builder;
|
|
76
|
+
}
|
|
48
77
|
/**
|
|
49
78
|
* Set input key
|
|
50
79
|
* Will be used in transformation if provided
|
|
@@ -67,6 +96,14 @@ import {isObject}from'@mongez/supportive-is';import dayjs from'dayjs';import'@mo
|
|
|
67
96
|
this.isNullable = true;
|
|
68
97
|
return this;
|
|
69
98
|
}
|
|
99
|
+
/**
|
|
100
|
+
* Mark this field as an array
|
|
101
|
+
* transform() will map over each element using the base type
|
|
102
|
+
*/
|
|
103
|
+
array() {
|
|
104
|
+
this.isArrayField = true;
|
|
105
|
+
return this;
|
|
106
|
+
}
|
|
70
107
|
/**
|
|
71
108
|
* Get input key
|
|
72
109
|
*/
|
|
@@ -96,27 +133,47 @@ import {isObject}from'@mongez/supportive-is';import dayjs from'dayjs';import'@mo
|
|
|
96
133
|
return this;
|
|
97
134
|
}
|
|
98
135
|
/**
|
|
99
|
-
* Transform the value
|
|
136
|
+
* Transform the value.
|
|
137
|
+
* When isArrayField is true, maps over each element using transformSingleValue.
|
|
100
138
|
*/
|
|
101
139
|
transform(value, locale) {
|
|
102
|
-
if (
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
140
|
+
if (this.isArrayField) {
|
|
141
|
+
if (!Array.isArray(value)) {
|
|
142
|
+
return this.isNullable ? null : [];
|
|
143
|
+
}
|
|
144
|
+
return value
|
|
145
|
+
.map((item) => this.transformSingleValue(item, locale))
|
|
146
|
+
.filter((v) => v !== undefined);
|
|
147
|
+
}
|
|
148
|
+
return this.transformSingleValue(value, locale);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Transform a single value according to the base type.
|
|
152
|
+
*/
|
|
153
|
+
transformSingleValue(value, locale) {
|
|
154
|
+
if (value === undefined || value === null) {
|
|
155
|
+
return this.isNullable ? null : this.defaultValue;
|
|
156
|
+
}
|
|
157
|
+
if (this.condition && !this.condition()) {
|
|
107
158
|
return this.isNullable ? null : this.defaultValue;
|
|
108
159
|
}
|
|
109
160
|
switch (this.type) {
|
|
110
161
|
case "string":
|
|
111
162
|
return String(value);
|
|
112
|
-
case "number":
|
|
113
|
-
|
|
163
|
+
case "number": {
|
|
164
|
+
const num = Number(value);
|
|
165
|
+
return isNaN(num) ? (this.isNullable ? null : undefined) : num;
|
|
166
|
+
}
|
|
114
167
|
case "boolean":
|
|
115
168
|
return Boolean(value);
|
|
116
|
-
case "float":
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
169
|
+
case "float": {
|
|
170
|
+
const float = parseFloat(value);
|
|
171
|
+
return isNaN(float) ? (this.isNullable ? null : undefined) : float;
|
|
172
|
+
}
|
|
173
|
+
case "int": {
|
|
174
|
+
const int = parseInt(value);
|
|
175
|
+
return isNaN(int) ? (this.isNullable ? null : undefined) : int;
|
|
176
|
+
}
|
|
120
177
|
case "date":
|
|
121
178
|
return this.transformDate(value, locale);
|
|
122
179
|
case "localized":
|
|
@@ -128,9 +185,9 @@ import {isObject}from'@mongez/supportive-is';import dayjs from'dayjs';import'@mo
|
|
|
128
185
|
case "storageUrl":
|
|
129
186
|
return storage.url(value);
|
|
130
187
|
case "object":
|
|
131
|
-
return isObject(value) && !Array.isArray(value) ? value : undefined;
|
|
188
|
+
return isObject(value) && !Array.isArray(value) ? value : (this.isNullable ? null : undefined);
|
|
132
189
|
case "array":
|
|
133
|
-
return Array.isArray(value) ? value : undefined;
|
|
190
|
+
return Array.isArray(value) ? value : (this.isNullable ? null : undefined);
|
|
134
191
|
}
|
|
135
192
|
}
|
|
136
193
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-field-builder.js","sources":["../../src/resource/resource-field-builder.ts"],"sourcesContent":[null],"names":[],"mappings":"odAOa,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"resource-field-builder.js","sources":["../../src/resource/resource-field-builder.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|