@solidstarters/solid-code-builder 1.0.20 → 1.0.21
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/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.d.ts +4 -0
- package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.js +61 -2
- package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.js.map +1 -1
- package/package.json +5 -2
- package/publish.js +16 -0
- package/src/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.ts +71 -2
- package/dto_additional_fields_duplicate_fix.diff +0 -40
- package/src/code-builder/index.js +0 -178
- package/src/code-builder/index_spec.js +0 -46
- package/src/code-builder/lib/field/FieldManager.js +0 -236
- package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.js +0 -107
- package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.js +0 -100
- package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.js +0 -102
- package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.js +0 -106
- package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.js +0 -112
- package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.js +0 -99
- package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.js +0 -100
- package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.js +0 -100
- package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.js +0 -104
- package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.js +0 -103
- package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.js +0 -103
- package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.js +0 -102
- package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.js +0 -103
- package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.js +0 -112
- package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.js +0 -104
- package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.js +0 -102
- package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.js +0 -100
- package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.js +0 -99
- package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.js +0 -102
- package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.js +0 -140
- package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.js +0 -178
- package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +0 -79
- package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.js +0 -118
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js +0 -175
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js +0 -179
- package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js +0 -155
- package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +0 -174
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js +0 -345
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +0 -373
- package/src/code-builder/lib/field/field-managers/base/DeleteType.js +0 -11
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.js +0 -81
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js +0 -55
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.js +0 -75
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js +0 -51
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js +0 -30
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js +0 -33
- package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.js +0 -81
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js +0 -59
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.js +0 -77
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js +0 -53
- package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.js +0 -72
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js +0 -44
- package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.js +0 -76
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js +0 -52
- package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.js +0 -57
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js +0 -21
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.js +0 -63
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js +0 -34
- package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.js +0 -72
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.js +0 -57
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.js +0 -27
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.js +0 -75
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.js +0 -35
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.js +0 -121
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js +0 -37
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +0 -366
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +0 -158
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +0 -294
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +0 -177
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.js +0 -63
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js +0 -34
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.js +0 -63
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js +0 -37
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.js +0 -15
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js +0 -33
- package/src/code-builder/lib/model/helpers.js +0 -407
|
@@ -17,8 +17,12 @@ export declare class ApiPropertyDecoratorManager implements DecoratorManager {
|
|
|
17
17
|
decoratorImports(): Change[];
|
|
18
18
|
updateDecorator(): [PropertyDeclaration, Change[]];
|
|
19
19
|
createDecorator(existingDecorator: ts.Decorator | undefined): ts.Decorator;
|
|
20
|
+
private createDecoratorArguments;
|
|
21
|
+
private existingDecoratorOptions;
|
|
20
22
|
private findDecorator;
|
|
21
23
|
private filterOtherDecorators;
|
|
22
24
|
private filterNonDecorators;
|
|
23
25
|
private containsIdentifierName;
|
|
26
|
+
private buildApiPropertyDecoratorOptions;
|
|
27
|
+
private buildApiPropertyOptionsCode;
|
|
24
28
|
}
|
|
@@ -20,7 +20,7 @@ class ApiPropertyDecoratorManager {
|
|
|
20
20
|
buildDecorator() {
|
|
21
21
|
const fieldSourceLines = [];
|
|
22
22
|
const changes = [];
|
|
23
|
-
fieldSourceLines.push(`@${this.decoratorName()}()`);
|
|
23
|
+
fieldSourceLines.push(`@${this.decoratorName()}(${this.buildApiPropertyOptionsCode()})`);
|
|
24
24
|
changes.push(...this.decoratorImports());
|
|
25
25
|
return {
|
|
26
26
|
filePath: this.options.source.fileName,
|
|
@@ -58,6 +58,7 @@ class ApiPropertyDecoratorManager {
|
|
|
58
58
|
return [updatedProperty, changes];
|
|
59
59
|
}
|
|
60
60
|
createDecorator(existingDecorator) {
|
|
61
|
+
var _a;
|
|
61
62
|
// Capture the existing validation options
|
|
62
63
|
let validationOptions = [];
|
|
63
64
|
if (existingDecorator !== undefined) {
|
|
@@ -72,9 +73,18 @@ class ApiPropertyDecoratorManager {
|
|
|
72
73
|
validationOptions.push(...existingObjectLiteralExpression.properties);
|
|
73
74
|
}
|
|
74
75
|
}
|
|
76
|
+
const existingOptions = this.existingDecoratorOptions(existingDecorator);
|
|
77
|
+
const newOptions = [];
|
|
78
|
+
if (this.options.field.description) {
|
|
79
|
+
newOptions.push(typescript_1.default.factory.createPropertyAssignment('description', typescript_1.default.factory.createStringLiteral((_a = this.options.field) === null || _a === void 0 ? void 0 : _a.description)));
|
|
80
|
+
}
|
|
81
|
+
const mergedOptions = [
|
|
82
|
+
...existingOptions.filter((option) => !(typescript_1.default.isPropertyAssignment(option) && option.name.getText() === 'description')),
|
|
83
|
+
...newOptions,
|
|
84
|
+
];
|
|
75
85
|
// Re-create the column decorator with the merged column decorator options
|
|
76
86
|
const decoratorIdentifier = typescript_1.default.factory.createIdentifier(this.decoratorName());
|
|
77
|
-
const argumentsArray =
|
|
87
|
+
const argumentsArray = this.createDecoratorArguments(mergedOptions);
|
|
78
88
|
// const length = ts.factory.createNumericLiteral(this.options.length);
|
|
79
89
|
// argumentsArray.push(length);
|
|
80
90
|
if (validationOptions.length > 0) {
|
|
@@ -84,6 +94,28 @@ class ApiPropertyDecoratorManager {
|
|
|
84
94
|
const call = typescript_1.default.factory.createCallExpression(decoratorIdentifier, undefined, argumentsArray);
|
|
85
95
|
return typescript_1.default.factory.createDecorator(call);
|
|
86
96
|
}
|
|
97
|
+
createDecoratorArguments(options) {
|
|
98
|
+
const argumentsArray = [];
|
|
99
|
+
if (options.length > 0) {
|
|
100
|
+
const optionsObjectLiteral = typescript_1.default.factory.createObjectLiteralExpression(options);
|
|
101
|
+
argumentsArray.push(optionsObjectLiteral);
|
|
102
|
+
}
|
|
103
|
+
return argumentsArray;
|
|
104
|
+
}
|
|
105
|
+
existingDecoratorOptions(existingDecorator) {
|
|
106
|
+
const options = [];
|
|
107
|
+
if (existingDecorator) {
|
|
108
|
+
const existingCallExpression = existingDecorator.expression;
|
|
109
|
+
if (existingCallExpression.arguments.length > 0) {
|
|
110
|
+
const firstArgument = existingCallExpression.arguments[0];
|
|
111
|
+
if (!typescript_1.default.isObjectLiteralExpression(firstArgument)) {
|
|
112
|
+
throw new Error('Api Property decorator 1st argument must be an object literal');
|
|
113
|
+
}
|
|
114
|
+
options.push(...firstArgument.properties);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return options;
|
|
118
|
+
}
|
|
87
119
|
findDecorator(name, existingModifiers) {
|
|
88
120
|
return existingModifiers ? existingModifiers.filter((m) => (m.kind === typescript_1.default.SyntaxKind.Decorator)).map(m => m).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
|
|
89
121
|
}
|
|
@@ -98,6 +130,33 @@ class ApiPropertyDecoratorManager {
|
|
|
98
130
|
const identifier = callExpression.expression;
|
|
99
131
|
return identifier.text === identifierName;
|
|
100
132
|
}
|
|
133
|
+
buildApiPropertyDecoratorOptions() {
|
|
134
|
+
var _a;
|
|
135
|
+
const options = new Map();
|
|
136
|
+
if (this.options.field.description) {
|
|
137
|
+
options.set('description', (_a = this.options.field) === null || _a === void 0 ? void 0 : _a.description);
|
|
138
|
+
}
|
|
139
|
+
return options;
|
|
140
|
+
}
|
|
141
|
+
buildApiPropertyOptionsCode() {
|
|
142
|
+
const options = this.buildApiPropertyDecoratorOptions();
|
|
143
|
+
const keys = Array.from(options.keys());
|
|
144
|
+
if (keys.length === 0) {
|
|
145
|
+
return '';
|
|
146
|
+
}
|
|
147
|
+
const optionsString = keys
|
|
148
|
+
.filter((key) => options.get(key) !== null)
|
|
149
|
+
.map((key) => {
|
|
150
|
+
if (typeof options.get(key) === 'string') {
|
|
151
|
+
return `${key}: "${options.get(key)}"`;
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
return `${key}: ${options.get(key)}`;
|
|
155
|
+
}
|
|
156
|
+
})
|
|
157
|
+
.join(', ');
|
|
158
|
+
return `{ ${optionsString} }`;
|
|
159
|
+
}
|
|
101
160
|
}
|
|
102
161
|
exports.ApiPropertyDecoratorManager = ApiPropertyDecoratorManager;
|
|
103
162
|
//# sourceMappingURL=ApiPropertyDecoratorManager.js.map
|
package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiPropertyDecoratorManager.js","sourceRoot":"","sources":["../../../../../../src/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.ts"],"names":[],"mappings":";;;;;;AAAA,gIAAuI;AAEvI,qEAAqE;AASrE,MAAa,2BAA2B;IACtC,YAAmB,OAAoC,EAAS,SAAe;QAA5D,YAAO,GAAP,OAAO,CAA6B;QAAS,cAAS,GAAT,SAAS,CAAM;IAAI,CAAC;IACpF,gBAAgB;QACd,OAAO,IAAI,CAAC;IACd,CAAC;IAED,YAAY,CAAC,SAAiC;QAC5C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,cAAc;QACZ,MAAM,gBAAgB,GAAG,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,gBAAgB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"ApiPropertyDecoratorManager.js","sourceRoot":"","sources":["../../../../../../src/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@solidstarters/solid-code-builder",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.21",
|
|
4
4
|
"description": "This package is use to generate code for the @solidstarters projects",
|
|
5
5
|
"private": false,
|
|
6
6
|
"publishConfig": {
|
|
@@ -12,7 +12,10 @@
|
|
|
12
12
|
"test": "npm run build && jasmine src/**/*_spec.js",
|
|
13
13
|
"postbuild": "copyfiles './files/**/*' dist/",
|
|
14
14
|
"clean": "rimraf dist",
|
|
15
|
-
"prepare": "npm run build"
|
|
15
|
+
"prepare": "npm run build",
|
|
16
|
+
"publish:patch": "node publish.js patch",
|
|
17
|
+
"publish:minor": "node publish.js minor",
|
|
18
|
+
"publish:major": "node publish.js major"
|
|
16
19
|
},
|
|
17
20
|
"keywords": [
|
|
18
21
|
"schematics"
|
package/publish.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const { execSync } = require("child_process");
|
|
2
|
+
|
|
3
|
+
const versionType = process.argv[2] || "patch"; // Default to patch if not specified
|
|
4
|
+
|
|
5
|
+
try {
|
|
6
|
+
console.log(`🔄 Updating package version (${versionType})...`);
|
|
7
|
+
execSync(`npm version ${versionType}`, { stdio: "inherit" });
|
|
8
|
+
|
|
9
|
+
console.log("📦 Publishing package...");
|
|
10
|
+
execSync("npm publish", { stdio: "inherit" });
|
|
11
|
+
|
|
12
|
+
console.log("✅ Published successfully!");
|
|
13
|
+
} catch (error) {
|
|
14
|
+
console.error("❌ Error:", error.message);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
@@ -22,7 +22,7 @@ export class ApiPropertyDecoratorManager implements DecoratorManager {
|
|
|
22
22
|
buildDecorator(): PartialAddFieldChange {
|
|
23
23
|
const fieldSourceLines = [];
|
|
24
24
|
const changes: Change[] = [];
|
|
25
|
-
fieldSourceLines.push(`@${this.decoratorName()}()`);
|
|
25
|
+
fieldSourceLines.push(`@${this.decoratorName()}(${this.buildApiPropertyOptionsCode()})`);
|
|
26
26
|
changes.push(...this.decoratorImports());
|
|
27
27
|
return {
|
|
28
28
|
filePath: this.options.source.fileName,
|
|
@@ -92,9 +92,27 @@ export class ApiPropertyDecoratorManager implements DecoratorManager {
|
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
const existingOptions: ts.ObjectLiteralElementLike[] = this.existingDecoratorOptions(existingDecorator);
|
|
96
|
+
|
|
97
|
+
const newOptions: ts.ObjectLiteralElementLike[] = [];
|
|
98
|
+
if (this.options.field.description) {
|
|
99
|
+
newOptions.push(
|
|
100
|
+
ts.factory.createPropertyAssignment(
|
|
101
|
+
'description',
|
|
102
|
+
ts.factory.createStringLiteral(this.options.field?.description)
|
|
103
|
+
)
|
|
104
|
+
);
|
|
105
|
+
}
|
|
106
|
+
const mergedOptions = [
|
|
107
|
+
...existingOptions.filter(
|
|
108
|
+
(option) => !(ts.isPropertyAssignment(option) && option.name.getText() === 'description')
|
|
109
|
+
),
|
|
110
|
+
...newOptions,
|
|
111
|
+
];
|
|
112
|
+
|
|
95
113
|
// Re-create the column decorator with the merged column decorator options
|
|
96
114
|
const decoratorIdentifier = ts.factory.createIdentifier(this.decoratorName());
|
|
97
|
-
const argumentsArray: ts.Expression[] =
|
|
115
|
+
const argumentsArray: ts.Expression[] = this.createDecoratorArguments(mergedOptions);
|
|
98
116
|
// const length = ts.factory.createNumericLiteral(this.options.length);
|
|
99
117
|
// argumentsArray.push(length);
|
|
100
118
|
if (validationOptions.length > 0) {
|
|
@@ -106,6 +124,30 @@ export class ApiPropertyDecoratorManager implements DecoratorManager {
|
|
|
106
124
|
|
|
107
125
|
}
|
|
108
126
|
|
|
127
|
+
private createDecoratorArguments(options: ts.ObjectLiteralElementLike[]) {
|
|
128
|
+
const argumentsArray: ts.Expression[] = [];
|
|
129
|
+
if (options.length > 0) {
|
|
130
|
+
const optionsObjectLiteral = ts.factory.createObjectLiteralExpression(options);
|
|
131
|
+
argumentsArray.push(optionsObjectLiteral);
|
|
132
|
+
}
|
|
133
|
+
return argumentsArray;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
private existingDecoratorOptions(existingDecorator: ts.Decorator | undefined): ts.ObjectLiteralElementLike[] {
|
|
137
|
+
const options: ts.ObjectLiteralElementLike[] = [];
|
|
138
|
+
if (existingDecorator) {
|
|
139
|
+
const existingCallExpression = existingDecorator.expression as ts.CallExpression;
|
|
140
|
+
if (existingCallExpression.arguments.length > 0) {
|
|
141
|
+
const firstArgument = existingCallExpression.arguments[0];
|
|
142
|
+
if (!ts.isObjectLiteralExpression(firstArgument)) {
|
|
143
|
+
throw new Error('Api Property decorator 1st argument must be an object literal');
|
|
144
|
+
}
|
|
145
|
+
options.push(...firstArgument.properties);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return options;
|
|
149
|
+
}
|
|
150
|
+
|
|
109
151
|
private findDecorator(name: string, existingModifiers: ts.NodeArray<ts.ModifierLike> | undefined): ts.Decorator | undefined {
|
|
110
152
|
return existingModifiers ? existingModifiers.filter((m) => (m.kind === ts.SyntaxKind.Decorator)).map(m => m as ts.Decorator).filter(m => this.containsIdentifierName(m, name)).pop() : undefined;
|
|
111
153
|
}
|
|
@@ -124,4 +166,31 @@ export class ApiPropertyDecoratorManager implements DecoratorManager {
|
|
|
124
166
|
return identifier.text === identifierName;
|
|
125
167
|
}
|
|
126
168
|
|
|
169
|
+
private buildApiPropertyDecoratorOptions(): Map<string, any> {
|
|
170
|
+
const options: Map<string, any> = new Map<string, any>();
|
|
171
|
+
if (this.options.field.description) {
|
|
172
|
+
options.set('description', this.options.field?.description);
|
|
173
|
+
}
|
|
174
|
+
return options;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
private buildApiPropertyOptionsCode(): string {
|
|
178
|
+
const options = this.buildApiPropertyDecoratorOptions();
|
|
179
|
+
const keys = Array.from(options.keys());
|
|
180
|
+
if (keys.length === 0) {
|
|
181
|
+
return '';
|
|
182
|
+
}
|
|
183
|
+
const optionsString = keys
|
|
184
|
+
.filter((key) => options.get(key) !== null)
|
|
185
|
+
.map((key) => {
|
|
186
|
+
if (typeof options.get(key) === 'string') {
|
|
187
|
+
return `${key}: "${options.get(key)}"`;
|
|
188
|
+
} else {
|
|
189
|
+
return `${key}: ${options.get(key)}`;
|
|
190
|
+
}
|
|
191
|
+
})
|
|
192
|
+
.join(', ');
|
|
193
|
+
return `{ ${optionsString} }`;
|
|
194
|
+
}
|
|
195
|
+
|
|
127
196
|
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
diff --git a/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.ts b/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.ts
|
|
2
|
-
index 7809d32..3ca4f0b 100644
|
|
3
|
-
--- a/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.ts
|
|
4
|
-
+++ b/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.ts
|
|
5
|
-
@@ -88,7 +88,7 @@ export abstract class BaseFieldManagerForDto implements FieldManager {
|
|
6
|
-
|
|
7
|
-
removeField(): FieldChange[] {
|
|
8
|
-
const fieldChanges: FieldChange[] = [];
|
|
9
|
-
- console.log(`Dto removeField ${this.fieldName()} called ...`);
|
|
10
|
-
+ console.log(`${this.options.sourceType} Dto removeField ${this.fieldName()} called ...`);
|
|
11
|
-
fieldChanges.push(this.removeFieldFor(this.fieldName(), this.source));
|
|
12
|
-
if (this.isAdditionalFieldRequired()) {
|
|
13
|
-
fieldChanges.push(...this.removeAdditionalField());
|
|
14
|
-
@@ -288,7 +288,7 @@ export abstract class BaseFieldManagerForDto implements FieldManager {
|
|
15
|
-
updateField(): FieldChange[] {
|
|
16
|
-
const fieldChanges: FieldChange[] = [];
|
|
17
|
-
|
|
18
|
-
- console.log(`\ncreate Dto updateField ${this.fieldName()} called ...`);
|
|
19
|
-
+ console.log(`\n${this.options.sourceType} Dto updateField ${this.fieldName()} called ...`);
|
|
20
|
-
|
|
21
|
-
const fieldName = this.fieldName();
|
|
22
|
-
const fieldType = this.fieldType().node(this.field);
|
|
23
|
-
@@ -307,11 +307,13 @@ export abstract class BaseFieldManagerForDto implements FieldManager {
|
|
24
|
-
// Get the related field property declaration node
|
|
25
|
-
fieldChanges.push(...this.addOrUpdateAdditionalField()); // TODO This needs to be refactored and renamed to updateAdditionalField, since it is confusing
|
|
26
|
-
}
|
|
27
|
-
- else {
|
|
28
|
-
- // fieldChanges.push(this.removeAdditionalField()); //FIXME temporary fix, to check update module command
|
|
29
|
-
- }
|
|
30
|
-
|
|
31
|
-
- return fieldChanges;
|
|
32
|
-
+ // Since updateFieldInternal updates the class node, and additional field updates are done on the updated class node, need to only use the latest field change
|
|
33
|
-
+ const latestFieldChange = fieldChanges.pop();
|
|
34
|
-
+ if (!latestFieldChange) {
|
|
35
|
-
+ throw new Error(`Field change not found for field ${this.fieldName()}`);
|
|
36
|
-
+ }
|
|
37
|
-
+ return [latestFieldChange];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
protected addAdditionalField(): FieldChange[] {
|
|
@@ -1,178 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
-
};
|
|
28
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.updateChecksum = exports.showAST = exports.removeFields = exports.updateFields = exports.addFields = exports.addModel = exports.refreshModel = exports.addModule = void 0;
|
|
30
|
-
const strings_1 = require("@angular-devkit/core/src/utils/strings");
|
|
31
|
-
const schematics_1 = require("@angular-devkit/schematics");
|
|
32
|
-
const generateModelHelpers = __importStar(require("./lib/model/helpers"));
|
|
33
|
-
const helpers_1 = require("./lib/model/helpers");
|
|
34
|
-
const helpers_2 = require("./lib/model/helpers");
|
|
35
|
-
const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
|
|
36
|
-
const generateModelUtils = Object.assign({ dasherize: strings_1.dasherize, classify: strings_1.classify }, generateModelHelpers);
|
|
37
|
-
// You don't have to export the function as default. You can also have more than one rule factory
|
|
38
|
-
// per file.
|
|
39
|
-
function addModule(options) {
|
|
40
|
-
return (_tree, _context) => {
|
|
41
|
-
//Link to nestjs schematic
|
|
42
|
-
return (0, schematics_1.chain)([
|
|
43
|
-
(0, schematics_1.externalSchematic)('@nestjs/schematics', 'module', {
|
|
44
|
-
name: options === null || options === void 0 ? void 0 : options.module,
|
|
45
|
-
}),
|
|
46
|
-
updateChecksum(options === null || options === void 0 ? void 0 : options.module, options === null || options === void 0 ? void 0 : options.generateChecksum, ...generateModelHelpers.getSourceFilePathsAffected(generateModelHelpers.Command.AddModule, options)),
|
|
47
|
-
]);
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
exports.addModule = addModule;
|
|
51
|
-
function refreshModel(options) {
|
|
52
|
-
return (tree, _context) => {
|
|
53
|
-
// If the model related code is not present, then add it by call addModel, else call update field with the fields provided
|
|
54
|
-
const modelEntityFilePath = `src/${options.module}/entities/${(0, strings_1.dasherize)(options.model)}.entity.ts`;
|
|
55
|
-
// console.log('Model Entity File Path: ', modelEntityFilePath);
|
|
56
|
-
if (!tree.exists(modelEntityFilePath)) {
|
|
57
|
-
// console.log('Model does not exist, adding model');
|
|
58
|
-
return addModel(options)(tree, _context);
|
|
59
|
-
}
|
|
60
|
-
else {
|
|
61
|
-
// console.log('Model does not exist, updating fields');
|
|
62
|
-
return updateFields(options)(tree, _context);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
exports.refreshModel = refreshModel;
|
|
67
|
-
function addModel(options) {
|
|
68
|
-
return (tree, context) => {
|
|
69
|
-
//Link to a templates folder
|
|
70
|
-
const sourceTemplates = (0, schematics_1.apply)((0, schematics_1.url)('../../files/generate-model'), [
|
|
71
|
-
(0, schematics_1.template)(Object.assign(Object.assign({}, generateModelUtils), options)),
|
|
72
|
-
(0, schematics_1.move)(`src/${options.module}`),
|
|
73
|
-
]);
|
|
74
|
-
return (0, schematics_1.branchAndMerge)((0, schematics_1.chain)([
|
|
75
|
-
addModuleImportsAndMetadata(options),
|
|
76
|
-
(0, schematics_1.mergeWith)(sourceTemplates, schematics_1.MergeStrategy.Overwrite),
|
|
77
|
-
updateChecksum(options === null || options === void 0 ? void 0 : options.module, options === null || options === void 0 ? void 0 : options.generateChecksum, ...generateModelHelpers.getSourceFilePathsAffected(generateModelHelpers.Command.AddModel, options)),
|
|
78
|
-
addFields(options),
|
|
79
|
-
// removeFields(options),
|
|
80
|
-
]))(tree, context);
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
exports.addModel = addModel;
|
|
84
|
-
function normalizeFieldType(fields) {
|
|
85
|
-
// if field is a string, convert it to an array
|
|
86
|
-
if (typeof fields === 'string') {
|
|
87
|
-
fields = [fields];
|
|
88
|
-
}
|
|
89
|
-
return fields;
|
|
90
|
-
}
|
|
91
|
-
function addFields(options) {
|
|
92
|
-
return (tree, _context) => {
|
|
93
|
-
const normalizedFields = normalizeFieldType(options.fields);
|
|
94
|
-
const fields = normalizedFields.map((f) => JSON.parse(f));
|
|
95
|
-
fields.forEach((field) => {
|
|
96
|
-
(0, helpers_1.addField)(tree, options, field);
|
|
97
|
-
});
|
|
98
|
-
return tree;
|
|
99
|
-
};
|
|
100
|
-
}
|
|
101
|
-
exports.addFields = addFields;
|
|
102
|
-
function updateFields(options) {
|
|
103
|
-
return (tree, _context) => {
|
|
104
|
-
const normalizedFields = normalizeFieldType(options.fields);
|
|
105
|
-
const fields = normalizedFields.map((f) => JSON.parse(f));
|
|
106
|
-
(options === null || options === void 0 ? void 0 : options.generateChecksum) ? generateModelHelpers.takeBackupIfChecksumsMismatch(tree, options.module) : "no-ops";
|
|
107
|
-
fields.forEach((field) => {
|
|
108
|
-
generateModelHelpers.updateField(tree, options, field);
|
|
109
|
-
});
|
|
110
|
-
return tree;
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
exports.updateFields = updateFields;
|
|
114
|
-
function removeFields(options) {
|
|
115
|
-
return (tree, _context) => {
|
|
116
|
-
const normalizedFields = normalizeFieldType(options.fields);
|
|
117
|
-
const fields = normalizedFields.map((f) => JSON.parse(f));
|
|
118
|
-
(options === null || options === void 0 ? void 0 : options.generateChecksum) ? generateModelHelpers.takeBackupIfChecksumsMismatch(tree, options.module) : "no-ops";
|
|
119
|
-
fields.forEach((field) => {
|
|
120
|
-
(0, helpers_2.removeField)(tree, options, field);
|
|
121
|
-
});
|
|
122
|
-
return tree;
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
exports.removeFields = removeFields;
|
|
126
|
-
function addModuleImportsAndMetadata(options) {
|
|
127
|
-
return (tree, _context) => {
|
|
128
|
-
// Handle the module imports
|
|
129
|
-
const moduleFilePath = `src/${(0, strings_1.dasherize)(options.module)}/${(0, strings_1.dasherize)(options.module)}.module.ts`;
|
|
130
|
-
const moduleImports = [
|
|
131
|
-
{ symbolName: `TypeOrmModule`, importPath: `@nestjs/typeorm` },
|
|
132
|
-
generateModelHelpers.getSolidImports(options.model, generateModelHelpers.SolidProviderType.Entity),
|
|
133
|
-
generateModelHelpers.getSolidImports(options.model, generateModelHelpers.SolidProviderType.Service),
|
|
134
|
-
generateModelHelpers.getSolidImports(options.model, generateModelHelpers.SolidProviderType.Controller),
|
|
135
|
-
];
|
|
136
|
-
generateModelHelpers.addImports(tree, moduleFilePath, moduleImports);
|
|
137
|
-
// Handle the module metadata
|
|
138
|
-
const moduleMetadata = [
|
|
139
|
-
generateModelHelpers.getModuleMetadata(options.model, generateModelHelpers.ModuleMetadataType.TypeOrmImports),
|
|
140
|
-
generateModelHelpers.getModuleMetadata(options.model, generateModelHelpers.ModuleMetadataType.Controllers),
|
|
141
|
-
generateModelHelpers.getModuleMetadata(options.model, generateModelHelpers.ModuleMetadataType.Providers),
|
|
142
|
-
];
|
|
143
|
-
generateModelHelpers.addModuleMetadata(tree, moduleFilePath, moduleMetadata);
|
|
144
|
-
return tree;
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
function showAST(options) {
|
|
148
|
-
return (tree, _context) => {
|
|
149
|
-
showASTinfo(tree, options.name);
|
|
150
|
-
return tree;
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
exports.showAST = showAST;
|
|
154
|
-
function showASTinfo(tree, filePath) {
|
|
155
|
-
//Show the source tree of the target file
|
|
156
|
-
const sourceNode = typescript_1.default.createSourceFile(filePath, tree.readText(filePath), typescript_1.default.ScriptTarget.ES2015, true);
|
|
157
|
-
showTree(sourceNode);
|
|
158
|
-
}
|
|
159
|
-
function showTree(sourceNode) {
|
|
160
|
-
function printAllChildren(node, depth) {
|
|
161
|
-
console.log(`${depth}.`.repeat(depth), typescript_1.default.SyntaxKind[node.kind]);
|
|
162
|
-
if (node.getChildCount() === 0) {
|
|
163
|
-
console.log(`${depth}.`.repeat(depth) + ' Text: ' + node.getText());
|
|
164
|
-
}
|
|
165
|
-
node.getChildren().forEach(child => printAllChildren(child, depth + 1));
|
|
166
|
-
}
|
|
167
|
-
printAllChildren(sourceNode, 0);
|
|
168
|
-
}
|
|
169
|
-
function updateChecksum(moduleName, generateChecksum = false, ...filePaths) {
|
|
170
|
-
return (tree, _context) => {
|
|
171
|
-
if (!generateChecksum) {
|
|
172
|
-
return tree;
|
|
173
|
-
}
|
|
174
|
-
return generateModelHelpers.handleUpdateChecksums(tree, moduleName, ...filePaths);
|
|
175
|
-
};
|
|
176
|
-
}
|
|
177
|
-
exports.updateChecksum = updateChecksum;
|
|
178
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
28
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
29
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
30
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
31
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
32
|
-
});
|
|
33
|
-
};
|
|
34
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
35
|
-
const schematics_1 = require("@angular-devkit/schematics");
|
|
36
|
-
const testing_1 = require("@angular-devkit/schematics/testing");
|
|
37
|
-
const path = __importStar(require("path"));
|
|
38
|
-
const collectionPath = path.join(__dirname, '../collection.json');
|
|
39
|
-
describe('code-builder', () => {
|
|
40
|
-
it('works', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
41
|
-
const runner = new testing_1.SchematicTestRunner('schematics', collectionPath);
|
|
42
|
-
const tree = yield runner.runSchematic('code-builder', {}, schematics_1.Tree.empty());
|
|
43
|
-
expect(tree.files).toEqual([]);
|
|
44
|
-
}));
|
|
45
|
-
});
|
|
46
|
-
//# sourceMappingURL=index_spec.js.map
|