@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.
Files changed (91) hide show
  1. package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.d.ts +4 -0
  2. package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.js +61 -2
  3. package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.js.map +1 -1
  4. package/package.json +5 -2
  5. package/publish.js +16 -0
  6. package/src/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.ts +71 -2
  7. package/dto_additional_fields_duplicate_fix.diff +0 -40
  8. package/src/code-builder/index.js +0 -178
  9. package/src/code-builder/index_spec.js +0 -46
  10. package/src/code-builder/lib/field/FieldManager.js +0 -236
  11. package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.js +0 -107
  12. package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.js +0 -100
  13. package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.js +0 -102
  14. package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.js +0 -106
  15. package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.js +0 -112
  16. package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.js +0 -99
  17. package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.js +0 -100
  18. package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.js +0 -100
  19. package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.js +0 -104
  20. package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.js +0 -103
  21. package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.js +0 -103
  22. package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.js +0 -102
  23. package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.js +0 -103
  24. package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.js +0 -112
  25. package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.js +0 -104
  26. package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.js +0 -102
  27. package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.js +0 -100
  28. package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.js +0 -99
  29. package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.js +0 -102
  30. package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.js +0 -140
  31. package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.js +0 -178
  32. package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +0 -79
  33. package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.js +0 -118
  34. package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js +0 -175
  35. package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js +0 -179
  36. package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js +0 -155
  37. package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +0 -174
  38. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js +0 -345
  39. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +0 -373
  40. package/src/code-builder/lib/field/field-managers/base/DeleteType.js +0 -11
  41. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js +0 -33
  42. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.js +0 -81
  43. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js +0 -55
  44. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js +0 -33
  45. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.js +0 -75
  46. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js +0 -51
  47. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js +0 -30
  48. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js +0 -33
  49. package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.js +0 -33
  50. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.js +0 -81
  51. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js +0 -59
  52. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js +0 -33
  53. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.js +0 -77
  54. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js +0 -53
  55. package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.js +0 -34
  56. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.js +0 -72
  57. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js +0 -44
  58. package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.js +0 -33
  59. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.js +0 -76
  60. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js +0 -52
  61. package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.js +0 -34
  62. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.js +0 -57
  63. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js +0 -21
  64. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js +0 -34
  65. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.js +0 -63
  66. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js +0 -34
  67. package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.js +0 -33
  68. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.js +0 -72
  69. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.js +0 -57
  70. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.js +0 -27
  71. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.js +0 -75
  72. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.js +0 -35
  73. package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js +0 -34
  74. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.js +0 -121
  75. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js +0 -37
  76. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js +0 -33
  77. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +0 -366
  78. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +0 -158
  79. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js +0 -33
  80. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +0 -294
  81. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +0 -177
  82. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js +0 -34
  83. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.js +0 -63
  84. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js +0 -34
  85. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js +0 -34
  86. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.js +0 -63
  87. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js +0 -37
  88. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js +0 -34
  89. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.js +0 -15
  90. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js +0 -33
  91. 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
@@ -1 +1 @@
1
- {"version":3,"file":"ApiPropertyDecoratorManager.js","sourceRoot":"","sources":["../../../../../../src/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.ts"],"names":[],"mappings":"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"}
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.20",
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