@carlonicora/nestjs-neo4jsonapi 1.6.0 → 1.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/interfaces/entity.schema.interface.d.ts +10 -2
- package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.repository.d.ts +1 -1
- package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
- package/dist/core/neo4j/abstracts/abstract.repository.js +34 -3
- package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
- package/dist/foundations/auth/services/auth.discord.service.d.ts +1 -3
- package/dist/foundations/auth/services/auth.discord.service.d.ts.map +1 -1
- package/dist/foundations/auth/services/auth.discord.service.js +2 -5
- package/dist/foundations/auth/services/auth.discord.service.js.map +1 -1
- package/dist/foundations/company/repositories/company.repository.d.ts.map +1 -1
- package/dist/foundations/company/repositories/company.repository.js +77 -36
- package/dist/foundations/company/repositories/company.repository.js.map +1 -1
- package/dist/foundations/discord-user/repositories/discord-user.repository.d.ts +1 -0
- package/dist/foundations/discord-user/repositories/discord-user.repository.d.ts.map +1 -1
- package/dist/foundations/discord-user/repositories/discord-user.repository.js +7 -0
- package/dist/foundations/discord-user/repositories/discord-user.repository.js.map +1 -1
- package/dist/foundations/discord-user/services/discord-user.service.d.ts +3 -1
- package/dist/foundations/discord-user/services/discord-user.service.d.ts.map +1 -1
- package/dist/foundations/discord-user/services/discord-user.service.js +7 -2
- package/dist/foundations/discord-user/services/discord-user.service.js.map +1 -1
- package/dist/scripts/generate-module/generator.d.ts.map +1 -1
- package/dist/scripts/generate-module/generator.js +15 -8
- package/dist/scripts/generate-module/generator.js.map +1 -1
- package/dist/scripts/generate-module/templates/controller.template.d.ts.map +1 -1
- package/dist/scripts/generate-module/templates/controller.template.js +6 -1
- package/dist/scripts/generate-module/templates/controller.template.js.map +1 -1
- package/dist/scripts/generate-module/templates/dto.post.template.d.ts.map +1 -1
- package/dist/scripts/generate-module/templates/dto.post.template.js +19 -14
- package/dist/scripts/generate-module/templates/dto.post.template.js.map +1 -1
- package/dist/scripts/generate-module/templates/dto.put.template.d.ts.map +1 -1
- package/dist/scripts/generate-module/templates/dto.put.template.js +19 -14
- package/dist/scripts/generate-module/templates/dto.put.template.js.map +1 -1
- package/dist/scripts/generate-module/transformers/import-resolver.d.ts +4 -2
- package/dist/scripts/generate-module/transformers/import-resolver.d.ts.map +1 -1
- package/dist/scripts/generate-module/transformers/import-resolver.js +8 -4
- package/dist/scripts/generate-module/transformers/import-resolver.js.map +1 -1
- package/dist/scripts/generate-module/utils/type-utils.d.ts +61 -0
- package/dist/scripts/generate-module/utils/type-utils.d.ts.map +1 -0
- package/dist/scripts/generate-module/utils/type-utils.js +205 -0
- package/dist/scripts/generate-module/utils/type-utils.js.map +1 -0
- package/dist/scripts/generate-module/validators/json-schema-validator.d.ts.map +1 -1
- package/dist/scripts/generate-module/validators/json-schema-validator.js +9 -0
- package/dist/scripts/generate-module/validators/json-schema-validator.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../scripts/generate-module/generator.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../scripts/generate-module/generator.ts"],"names":[],"mappings":"AAqBA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6JlF"}
|
|
@@ -51,6 +51,7 @@ const dto_post_template_1 = require("./templates/dto.post.template");
|
|
|
51
51
|
const dto_put_template_1 = require("./templates/dto.put.template");
|
|
52
52
|
const file_writer_1 = require("./utils/file-writer");
|
|
53
53
|
const module_registrar_1 = require("./utils/module-registrar");
|
|
54
|
+
const type_utils_1 = require("./utils/type-utils");
|
|
54
55
|
/**
|
|
55
56
|
* Main generator function
|
|
56
57
|
*
|
|
@@ -90,13 +91,19 @@ async function generateModule(options) {
|
|
|
90
91
|
endpoint: jsonSchema.endpointName,
|
|
91
92
|
nodeName: names.camelCase,
|
|
92
93
|
});
|
|
93
|
-
// Map fields to template fields
|
|
94
|
-
const fields = jsonSchema.fields.map((field) =>
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
94
|
+
// Map fields to template fields with type normalization
|
|
95
|
+
const fields = jsonSchema.fields.map((field) => {
|
|
96
|
+
const normalizedType = (0, type_utils_1.normalizeCypherType)(field.type);
|
|
97
|
+
if (!normalizedType) {
|
|
98
|
+
throw new Error(`Invalid field type "${field.type}" for field "${field.name}". Valid types: string, number, boolean, date, datetime, json (and their array variants with [])`);
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
name: field.name,
|
|
102
|
+
type: normalizedType,
|
|
103
|
+
required: !field.nullable,
|
|
104
|
+
tsType: (0, type_utils_1.getTsType)(normalizedType),
|
|
105
|
+
};
|
|
106
|
+
});
|
|
100
107
|
// Build template data
|
|
101
108
|
const templateData = {
|
|
102
109
|
names,
|
|
@@ -116,7 +123,7 @@ async function generateModule(options) {
|
|
|
116
123
|
name: field.name,
|
|
117
124
|
type: field.tsType,
|
|
118
125
|
isOptional: !field.required,
|
|
119
|
-
decorators:
|
|
126
|
+
decorators: (0, type_utils_1.getValidationDecorators)(field.type, field.required),
|
|
120
127
|
})),
|
|
121
128
|
postDtoRelationships: [],
|
|
122
129
|
putDtoRelationships: [],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../scripts/generate-module/generator.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../scripts/generate-module/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.template.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/controller.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"controller.template.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/controller.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAGhE;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA4MjE"}
|
|
@@ -19,7 +19,12 @@ function generateControllerFile(data) {
|
|
|
19
19
|
const rel = data.relationships.find((r) => r.model === route.relatedMeta);
|
|
20
20
|
const path = (0, import_resolver_1.isFoundationImport)(rel.relatedEntity.directory)
|
|
21
21
|
? import_resolver_1.FOUNDATION_PACKAGE
|
|
22
|
-
:
|
|
22
|
+
: (0, import_resolver_1.resolveMetaImportPath)({
|
|
23
|
+
fromDir: targetDir,
|
|
24
|
+
fromModule: names.kebabCase,
|
|
25
|
+
toDir: rel.relatedEntity.directory,
|
|
26
|
+
toModule: rel.relatedEntity.kebabCase,
|
|
27
|
+
});
|
|
23
28
|
if (!oldMetaImportPaths.has(path)) {
|
|
24
29
|
oldMetaImportPaths.set(path, []);
|
|
25
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"controller.template.js","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/controller.template.ts"],"names":[],"mappings":";;AASA,
|
|
1
|
+
{"version":3,"file":"controller.template.js","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/controller.template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.post.template.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/dto.post.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"dto.post.template.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/dto.post.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,kCAAkC,CAAC;AA2BxF;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA2G9D"}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generatePostDTOFile = generatePostDTOFile;
|
|
4
4
|
const import_resolver_1 = require("../transformers/import-resolver");
|
|
5
|
+
const type_utils_1 = require("../utils/type-utils");
|
|
5
6
|
/**
|
|
6
7
|
* Get the import path for a relationship's DTO
|
|
7
8
|
*/
|
|
8
|
-
function getDtoImportPath(rel) {
|
|
9
|
+
function getDtoImportPath(rel, fromDir, fromModule) {
|
|
9
10
|
if (rel.isNewStructure) {
|
|
10
11
|
// NEW structure: use absolute path from src
|
|
11
12
|
return (0, import_resolver_1.resolveNewDtoImportPath)({
|
|
@@ -14,10 +15,15 @@ function getDtoImportPath(rel) {
|
|
|
14
15
|
});
|
|
15
16
|
}
|
|
16
17
|
else {
|
|
17
|
-
// OLD structure: foundation or relative path
|
|
18
|
+
// OLD structure: foundation or relative path with proper resolution
|
|
18
19
|
return (0, import_resolver_1.isFoundationImport)(rel.relatedEntity.directory)
|
|
19
20
|
? import_resolver_1.FOUNDATION_PACKAGE
|
|
20
|
-
:
|
|
21
|
+
: (0, import_resolver_1.resolveDtoImportPath)({
|
|
22
|
+
fromDir,
|
|
23
|
+
fromModule,
|
|
24
|
+
toDir: rel.relatedEntity.directory,
|
|
25
|
+
toModule: rel.relatedEntity.kebabCase,
|
|
26
|
+
});
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
/**
|
|
@@ -27,14 +33,14 @@ function getDtoImportPath(rel) {
|
|
|
27
33
|
* @returns Generated TypeScript code
|
|
28
34
|
*/
|
|
29
35
|
function generatePostDTOFile(data) {
|
|
30
|
-
const { names, targetDir, fields, relationships } = data;
|
|
36
|
+
const { names, targetDir, fields, relationships, dtoFields } = data;
|
|
31
37
|
// Build DTO imports for relationships (excluding contextKey)
|
|
32
38
|
const dtoImportPaths = new Map();
|
|
33
39
|
for (const rel of relationships) {
|
|
34
40
|
// Skip contextKey relationships (like Author)
|
|
35
41
|
if (rel.contextKey)
|
|
36
42
|
continue;
|
|
37
|
-
const importPath = getDtoImportPath(rel);
|
|
43
|
+
const importPath = getDtoImportPath(rel, targetDir, names.kebabCase);
|
|
38
44
|
if (!dtoImportPaths.has(importPath)) {
|
|
39
45
|
dtoImportPaths.set(importPath, new Set());
|
|
40
46
|
}
|
|
@@ -49,17 +55,16 @@ function generatePostDTOFile(data) {
|
|
|
49
55
|
.map(([path, items]) => `import { ${Array.from(items).join(", ")} } from "${path}";`)
|
|
50
56
|
.join("\n")}\n`
|
|
51
57
|
: "";
|
|
52
|
-
// Build attribute validation
|
|
53
|
-
const attributeFields =
|
|
58
|
+
// Build attribute validation using pre-computed decorators from dtoFields
|
|
59
|
+
const attributeFields = dtoFields
|
|
54
60
|
.map((field) => {
|
|
55
|
-
const
|
|
56
|
-
decorators.
|
|
57
|
-
decorators.push("@IsNotEmpty()");
|
|
58
|
-
decorators.push(`@IsString()`); // Simplified - all fields are strings in current schema
|
|
59
|
-
const optional = !field.required ? "?" : "";
|
|
60
|
-
return ` ${decorators.join("\n ")}\n ${field.name}${optional}: ${field.tsType};`;
|
|
61
|
+
const optional = field.isOptional ? "?" : "";
|
|
62
|
+
return ` ${field.decorators.join("\n ")}\n ${field.name}${optional}: ${field.type};`;
|
|
61
63
|
})
|
|
62
64
|
.join("\n\n");
|
|
65
|
+
// Get dynamic validator imports based on field types
|
|
66
|
+
const fieldTypes = fields.map((f) => f.type);
|
|
67
|
+
const validatorImports = (0, type_utils_1.getValidationImports)(fieldTypes);
|
|
63
68
|
// Build relationship validation (exclude contextKey)
|
|
64
69
|
const relationshipFields = relationships
|
|
65
70
|
.filter((rel) => !rel.contextKey) // Exclude Author and other contextKey relationships
|
|
@@ -85,7 +90,7 @@ function generatePostDTOFile(data) {
|
|
|
85
90
|
})
|
|
86
91
|
.join("\n\n");
|
|
87
92
|
return `import { Type } from "class-transformer";
|
|
88
|
-
import {
|
|
93
|
+
import { ${validatorImports.join(", ")} } from "class-validator";${dtoImportsCode}
|
|
89
94
|
import { ${names.pascalCase}Descriptor } from "src/${targetDir}/${names.kebabCase}/entities/${names.kebabCase}";
|
|
90
95
|
|
|
91
96
|
export class ${names.pascalCase}PostAttributesDTO {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.post.template.js","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/dto.post.template.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"dto.post.template.js","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/dto.post.template.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.put.template.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/dto.put.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"dto.put.template.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/dto.put.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA0B,MAAM,kCAAkC,CAAC;AA2BxF;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA2G7D"}
|
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.generatePutDTOFile = generatePutDTOFile;
|
|
4
4
|
const import_resolver_1 = require("../transformers/import-resolver");
|
|
5
|
+
const type_utils_1 = require("../utils/type-utils");
|
|
5
6
|
/**
|
|
6
7
|
* Get the import path for a relationship's DTO
|
|
7
8
|
*/
|
|
8
|
-
function getDtoImportPath(rel) {
|
|
9
|
+
function getDtoImportPath(rel, fromDir, fromModule) {
|
|
9
10
|
if (rel.isNewStructure) {
|
|
10
11
|
// NEW structure: use absolute path from src
|
|
11
12
|
return (0, import_resolver_1.resolveNewDtoImportPath)({
|
|
@@ -14,10 +15,15 @@ function getDtoImportPath(rel) {
|
|
|
14
15
|
});
|
|
15
16
|
}
|
|
16
17
|
else {
|
|
17
|
-
// OLD structure: foundation or relative path
|
|
18
|
+
// OLD structure: foundation or relative path with proper resolution
|
|
18
19
|
return (0, import_resolver_1.isFoundationImport)(rel.relatedEntity.directory)
|
|
19
20
|
? import_resolver_1.FOUNDATION_PACKAGE
|
|
20
|
-
:
|
|
21
|
+
: (0, import_resolver_1.resolveDtoImportPath)({
|
|
22
|
+
fromDir,
|
|
23
|
+
fromModule,
|
|
24
|
+
toDir: rel.relatedEntity.directory,
|
|
25
|
+
toModule: rel.relatedEntity.kebabCase,
|
|
26
|
+
});
|
|
21
27
|
}
|
|
22
28
|
}
|
|
23
29
|
/**
|
|
@@ -28,14 +34,14 @@ function getDtoImportPath(rel) {
|
|
|
28
34
|
* @returns Generated TypeScript code
|
|
29
35
|
*/
|
|
30
36
|
function generatePutDTOFile(data) {
|
|
31
|
-
const { names, targetDir, fields, relationships } = data;
|
|
37
|
+
const { names, targetDir, fields, relationships, dtoFields } = data;
|
|
32
38
|
// Build DTO imports for relationships (excluding contextKey)
|
|
33
39
|
const dtoImportPaths = new Map();
|
|
34
40
|
for (const rel of relationships) {
|
|
35
41
|
// Skip contextKey relationships (like Author) - same as POST
|
|
36
42
|
if (rel.contextKey)
|
|
37
43
|
continue;
|
|
38
|
-
const importPath = getDtoImportPath(rel);
|
|
44
|
+
const importPath = getDtoImportPath(rel, targetDir, names.kebabCase);
|
|
39
45
|
if (!dtoImportPaths.has(importPath)) {
|
|
40
46
|
dtoImportPaths.set(importPath, new Set());
|
|
41
47
|
}
|
|
@@ -50,17 +56,16 @@ function generatePutDTOFile(data) {
|
|
|
50
56
|
.map(([path, items]) => `import { ${Array.from(items).join(", ")} } from "${path}";`)
|
|
51
57
|
.join("\n")}\n`
|
|
52
58
|
: "";
|
|
53
|
-
// Build attribute validation (same as POST)
|
|
54
|
-
const attributeFields =
|
|
59
|
+
// Build attribute validation using pre-computed decorators from dtoFields (same as POST)
|
|
60
|
+
const attributeFields = dtoFields
|
|
55
61
|
.map((field) => {
|
|
56
|
-
const
|
|
57
|
-
decorators.
|
|
58
|
-
decorators.push("@IsNotEmpty()");
|
|
59
|
-
decorators.push(`@IsString()`); // Simplified - all fields are strings in current schema
|
|
60
|
-
const optional = !field.required ? "?" : "";
|
|
61
|
-
return ` ${decorators.join("\n ")}\n ${field.name}${optional}: ${field.tsType};`;
|
|
62
|
+
const optional = field.isOptional ? "?" : "";
|
|
63
|
+
return ` ${field.decorators.join("\n ")}\n ${field.name}${optional}: ${field.type};`;
|
|
62
64
|
})
|
|
63
65
|
.join("\n\n");
|
|
66
|
+
// Get dynamic validator imports based on field types
|
|
67
|
+
const fieldTypes = fields.map((f) => f.type);
|
|
68
|
+
const validatorImports = (0, type_utils_1.getValidationImports)(fieldTypes);
|
|
64
69
|
// Build relationship validation (exclude contextKey - same as POST)
|
|
65
70
|
const relationshipFields = relationships
|
|
66
71
|
.filter((rel) => !rel.contextKey) // Exclude Author and other contextKey relationships
|
|
@@ -86,7 +91,7 @@ function generatePutDTOFile(data) {
|
|
|
86
91
|
})
|
|
87
92
|
.join("\n\n");
|
|
88
93
|
return `import { Type } from "class-transformer";
|
|
89
|
-
import {
|
|
94
|
+
import { ${validatorImports.join(", ")} } from "class-validator";${dtoImportsCode}
|
|
90
95
|
import { ${names.pascalCase}Descriptor } from "src/${targetDir}/${names.kebabCase}/entities/${names.kebabCase}";
|
|
91
96
|
|
|
92
97
|
export class ${names.pascalCase}PutAttributesDTO {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dto.put.template.js","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/dto.put.template.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"dto.put.template.js","sourceRoot":"","sources":["../../../../scripts/generate-module/templates/dto.put.template.ts"],"names":[],"mappings":"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"}
|
|
@@ -89,13 +89,14 @@ export declare function resolveEntityImportPath(params: {
|
|
|
89
89
|
}): string;
|
|
90
90
|
/**
|
|
91
91
|
* Resolve import path for meta file
|
|
92
|
+
* Note: Controller files are in a controllers/ subdirectory, so we need extra ../ to get out first
|
|
92
93
|
*
|
|
93
94
|
* @param params - From and to module info
|
|
94
95
|
* @returns Import path to meta file
|
|
95
96
|
*
|
|
96
97
|
* @example
|
|
97
98
|
* resolveMetaImportPath({ fromDir: "features", fromModule: "comment", toDir: "foundations", toModule: "user" })
|
|
98
|
-
* // Returns: "
|
|
99
|
+
* // Returns: "../../../foundations/user/entities/user.meta" (from comment/controllers/ to user/entities/)
|
|
99
100
|
*/
|
|
100
101
|
export declare function resolveMetaImportPath(params: {
|
|
101
102
|
fromDir: string;
|
|
@@ -105,13 +106,14 @@ export declare function resolveMetaImportPath(params: {
|
|
|
105
106
|
}): string;
|
|
106
107
|
/**
|
|
107
108
|
* Resolve import path for DTO file
|
|
109
|
+
* Note: DTO files are in a dtos/ subdirectory, so we need extra ../ to get out first
|
|
108
110
|
*
|
|
109
111
|
* @param params - From and to module info
|
|
110
112
|
* @returns Import path to DTO file
|
|
111
113
|
*
|
|
112
114
|
* @example
|
|
113
115
|
* resolveDtoImportPath({ fromDir: "features", fromModule: "comment", toDir: "features", toModule: "discussion" })
|
|
114
|
-
* // Returns: "
|
|
116
|
+
* // Returns: "../../discussion/dtos/discussion.dto" (from comment/dtos/ to discussion/dtos/)
|
|
115
117
|
*/
|
|
116
118
|
export declare function resolveDtoImportPath(params: {
|
|
117
119
|
fromDir: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-resolver.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/transformers/import-resolver.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AAEpE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAK/F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAUT;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAgBT;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAGT;AAED
|
|
1
|
+
{"version":3,"file":"import-resolver.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/transformers/import-resolver.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,kBAAkB,oCAAoC,CAAC;AAEpE;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAK/F;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAUT;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAgBT;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAGT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAIT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAIT;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE;AAMD;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CASpG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQjG"}
|
|
@@ -121,31 +121,35 @@ function resolveEntityImportPath(params) {
|
|
|
121
121
|
}
|
|
122
122
|
/**
|
|
123
123
|
* Resolve import path for meta file
|
|
124
|
+
* Note: Controller files are in a controllers/ subdirectory, so we need extra ../ to get out first
|
|
124
125
|
*
|
|
125
126
|
* @param params - From and to module info
|
|
126
127
|
* @returns Import path to meta file
|
|
127
128
|
*
|
|
128
129
|
* @example
|
|
129
130
|
* resolveMetaImportPath({ fromDir: "features", fromModule: "comment", toDir: "foundations", toModule: "user" })
|
|
130
|
-
* // Returns: "
|
|
131
|
+
* // Returns: "../../../foundations/user/entities/user.meta" (from comment/controllers/ to user/entities/)
|
|
131
132
|
*/
|
|
132
133
|
function resolveMetaImportPath(params) {
|
|
134
|
+
// Controller files are in module/controllers/, so add ../ to get out of controllers/ subdirectory
|
|
133
135
|
const basePath = resolveImportPath(params);
|
|
134
|
-
return
|
|
136
|
+
return `../${basePath}/entities/${params.toModule}.meta`;
|
|
135
137
|
}
|
|
136
138
|
/**
|
|
137
139
|
* Resolve import path for DTO file
|
|
140
|
+
* Note: DTO files are in a dtos/ subdirectory, so we need extra ../ to get out first
|
|
138
141
|
*
|
|
139
142
|
* @param params - From and to module info
|
|
140
143
|
* @returns Import path to DTO file
|
|
141
144
|
*
|
|
142
145
|
* @example
|
|
143
146
|
* resolveDtoImportPath({ fromDir: "features", fromModule: "comment", toDir: "features", toModule: "discussion" })
|
|
144
|
-
* // Returns: "
|
|
147
|
+
* // Returns: "../../discussion/dtos/discussion.dto" (from comment/dtos/ to discussion/dtos/)
|
|
145
148
|
*/
|
|
146
149
|
function resolveDtoImportPath(params) {
|
|
150
|
+
// DTO files are in module/dtos/, so add ../ to get out of dtos/ subdirectory
|
|
147
151
|
const basePath = resolveImportPath(params);
|
|
148
|
-
return
|
|
152
|
+
return `../${basePath}/dtos/${params.toModule}.dto`;
|
|
149
153
|
}
|
|
150
154
|
/**
|
|
151
155
|
* Resolve import path relative to module root
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../../../scripts/generate-module/transformers/import-resolver.ts"],"names":[],"mappings":";;;AAiBA,gDAEC;AAcD,oDAKC;AAeD,8CAcC;AAQD,8CAEC;AAaD,8CAqBC;AAYD,0DAQC;
|
|
1
|
+
{"version":3,"file":"import-resolver.js","sourceRoot":"","sources":["../../../../scripts/generate-module/transformers/import-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type utilities for the generate-module command
|
|
3
|
+
* Handles type normalization, TypeScript mapping, and validation decorator generation
|
|
4
|
+
*/
|
|
5
|
+
declare const VALID_BASE_TYPES: readonly ["string", "number", "boolean", "date", "datetime", "json"];
|
|
6
|
+
declare const VALID_ARRAY_TYPES: readonly ["string[]", "number[]", "boolean[]", "date[]", "datetime[]", "json[]"];
|
|
7
|
+
export type CypherBaseType = (typeof VALID_BASE_TYPES)[number];
|
|
8
|
+
export type CypherArrayType = (typeof VALID_ARRAY_TYPES)[number];
|
|
9
|
+
export type CypherType = CypherBaseType | CypherArrayType;
|
|
10
|
+
/**
|
|
11
|
+
* Normalize a type string to canonical lowercase form
|
|
12
|
+
* Handles case-insensitive input (e.g., "String", "NUMBER[]", "DateTime")
|
|
13
|
+
*
|
|
14
|
+
* @param input - The input type string (case-insensitive)
|
|
15
|
+
* @returns The normalized CypherType or null if invalid
|
|
16
|
+
*/
|
|
17
|
+
export declare function normalizeCypherType(input: string): CypherType | null;
|
|
18
|
+
/**
|
|
19
|
+
* Check if a type is an array type
|
|
20
|
+
*
|
|
21
|
+
* @param type - The CypherType to check
|
|
22
|
+
* @returns true if the type ends with []
|
|
23
|
+
*/
|
|
24
|
+
export declare function isArrayType(type: CypherType): type is CypherArrayType;
|
|
25
|
+
/**
|
|
26
|
+
* Get the base type from an array type
|
|
27
|
+
*
|
|
28
|
+
* @param type - The CypherType (may be array or scalar)
|
|
29
|
+
* @returns The base type (e.g., "number[]" -> "number")
|
|
30
|
+
*/
|
|
31
|
+
export declare function getBaseType(type: CypherType): CypherBaseType;
|
|
32
|
+
/**
|
|
33
|
+
* Get the TypeScript type string for a CypherType
|
|
34
|
+
*
|
|
35
|
+
* @param type - The CypherType
|
|
36
|
+
* @returns The TypeScript type string
|
|
37
|
+
*/
|
|
38
|
+
export declare function getTsType(type: CypherType): string;
|
|
39
|
+
/**
|
|
40
|
+
* Get validation decorators for a field type
|
|
41
|
+
*
|
|
42
|
+
* @param type - The CypherType
|
|
43
|
+
* @param required - Whether the field is required
|
|
44
|
+
* @returns Array of decorator strings
|
|
45
|
+
*/
|
|
46
|
+
export declare function getValidationDecorators(type: CypherType, required: boolean): string[];
|
|
47
|
+
/**
|
|
48
|
+
* Get required class-validator imports for a set of types
|
|
49
|
+
*
|
|
50
|
+
* @param types - Array of CypherTypes used in the entity
|
|
51
|
+
* @returns Array of import names needed from class-validator
|
|
52
|
+
*/
|
|
53
|
+
export declare function getValidationImports(types: CypherType[]): string[];
|
|
54
|
+
/**
|
|
55
|
+
* Get all valid type strings for validation messages
|
|
56
|
+
*
|
|
57
|
+
* @returns Array of all valid type strings
|
|
58
|
+
*/
|
|
59
|
+
export declare function getValidTypes(): string[];
|
|
60
|
+
export {};
|
|
61
|
+
//# sourceMappingURL=type-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-utils.d.ts","sourceRoot":"","sources":["../../../../scripts/generate-module/utils/type-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,QAAA,MAAM,gBAAgB,sEAAuE,CAAC;AAG9F,QAAA,MAAM,iBAAiB,kFAAmF,CAAC;AAE3G,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AACjE,MAAM,MAAM,UAAU,GAAG,cAAc,GAAG,eAAe,CAAC;AAE1D;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAYpE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,IAAI,IAAI,eAAe,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,cAAc,CAK5D;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAgBlD;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,EAAE,CA0DrF;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAgDlE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC"}
|