@solidstarters/solid-code-builder 1.0.19 → 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 (98) 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/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.d.ts +1 -0
  5. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js +13 -2
  6. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js.map +1 -1
  7. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +1 -1
  8. package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js.map +1 -1
  9. package/package.json +5 -2
  10. package/publish.js +16 -0
  11. package/src/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.ts +71 -2
  12. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.ts +21 -1
  13. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.ts +1 -1
  14. package/dto_additional_fields_duplicate_fix.diff +0 -40
  15. package/src/code-builder/index.js +0 -178
  16. package/src/code-builder/index_spec.js +0 -46
  17. package/src/code-builder/lib/field/FieldManager.js +0 -236
  18. package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.js +0 -107
  19. package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.js +0 -100
  20. package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.js +0 -102
  21. package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.js +0 -106
  22. package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.js +0 -112
  23. package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.js +0 -99
  24. package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.js +0 -100
  25. package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.js +0 -100
  26. package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.js +0 -104
  27. package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.js +0 -103
  28. package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.js +0 -103
  29. package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.js +0 -102
  30. package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.js +0 -103
  31. package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.js +0 -112
  32. package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.js +0 -104
  33. package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.js +0 -102
  34. package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.js +0 -100
  35. package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.js +0 -99
  36. package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.js +0 -102
  37. package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.js +0 -140
  38. package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.js +0 -178
  39. package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +0 -79
  40. package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.js +0 -118
  41. package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js +0 -175
  42. package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js +0 -179
  43. package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js +0 -155
  44. package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +0 -174
  45. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js +0 -345
  46. package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +0 -373
  47. package/src/code-builder/lib/field/field-managers/base/DeleteType.js +0 -11
  48. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js +0 -33
  49. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.js +0 -81
  50. package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js +0 -55
  51. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js +0 -33
  52. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.js +0 -75
  53. package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js +0 -51
  54. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js +0 -30
  55. package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js +0 -33
  56. package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.js +0 -33
  57. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.js +0 -81
  58. package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js +0 -59
  59. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js +0 -33
  60. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.js +0 -77
  61. package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js +0 -53
  62. package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.js +0 -34
  63. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.js +0 -72
  64. package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js +0 -44
  65. package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.js +0 -33
  66. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.js +0 -76
  67. package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js +0 -52
  68. package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.js +0 -34
  69. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.js +0 -57
  70. package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js +0 -21
  71. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js +0 -34
  72. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.js +0 -63
  73. package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js +0 -34
  74. package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.js +0 -33
  75. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.js +0 -72
  76. package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.js +0 -57
  77. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.js +0 -27
  78. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.js +0 -75
  79. package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.js +0 -35
  80. package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js +0 -34
  81. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.js +0 -121
  82. package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js +0 -37
  83. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js +0 -33
  84. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +0 -366
  85. package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +0 -158
  86. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js +0 -33
  87. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +0 -294
  88. package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +0 -177
  89. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js +0 -34
  90. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.js +0 -63
  91. package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js +0 -34
  92. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js +0 -34
  93. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.js +0 -63
  94. package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js +0 -37
  95. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js +0 -34
  96. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.js +0 -15
  97. package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js +0 -33
  98. package/src/code-builder/lib/model/helpers.js +0 -407
@@ -1,407 +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.takeBackupIfChecksumsMismatch = exports.removeUnusedImports = exports.handleUpdateChecksums = exports.getSourceFilePathsAffected = exports.getUpdatedChecksums = exports.updateField = exports.removeField = exports.addField = exports.loadModuleMetadata = exports.generateMD5Hash = exports.addImports = exports.addModuleMetadata = exports.getSolidImports = exports.getModuleMetadata = exports.ModuleMetadataType = exports.SolidProviderType = exports.Command = exports.CHECKSUM_HASH_ALGORITHM = void 0;
30
- const strings_1 = require("@angular-devkit/core/src/utils/strings");
31
- const schematics_1 = require("@nestjs/schematics");
32
- const typescript_1 = __importDefault(require("@schematics/angular/third_party/github.com/Microsoft/TypeScript/lib/typescript"));
33
- const ast_utils_1 = require("@schematics/angular/utility/ast-utils");
34
- const change_1 = require("@schematics/angular/utility/change");
35
- const crypto = __importStar(require("crypto"));
36
- const FieldManager_1 = require("../field/FieldManager");
37
- // export const CHECKSUM_FILE_PATH = 'code-builder/output/checksums.json';
38
- exports.CHECKSUM_HASH_ALGORITHM = 'md5';
39
- var Command;
40
- (function (Command) {
41
- Command["AddModule"] = "add-module";
42
- Command["AddModel"] = "add-model";
43
- })(Command || (exports.Command = Command = {}));
44
- var SolidProviderType;
45
- (function (SolidProviderType) {
46
- SolidProviderType["Entity"] = "Entity";
47
- SolidProviderType["Dto"] = "Dto";
48
- SolidProviderType["Service"] = "Service";
49
- SolidProviderType["Controller"] = "Controller";
50
- })(SolidProviderType || (exports.SolidProviderType = SolidProviderType = {}));
51
- var ModuleMetadataType;
52
- (function (ModuleMetadataType) {
53
- ModuleMetadataType["TypeOrmImports"] = "imports";
54
- ModuleMetadataType["Providers"] = "providers";
55
- ModuleMetadataType["Controllers"] = "controllers";
56
- })(ModuleMetadataType || (exports.ModuleMetadataType = ModuleMetadataType = {}));
57
- function getModuleMetadata(modelName, type) {
58
- switch (type) {
59
- case ModuleMetadataType.TypeOrmImports:
60
- // const symbols = [`TypeOrmModule.forFeature([${classify(modelName)}])`, `SolidCoreModule`];
61
- return {
62
- metadata: 'imports',
63
- symbol: `TypeOrmModule.forFeature([${(0, strings_1.classify)(modelName)}])`
64
- };
65
- case ModuleMetadataType.Providers:
66
- return { metadata: 'providers', symbol: `${(0, strings_1.classify)(modelName)}Service` };
67
- case ModuleMetadataType.Controllers:
68
- return {
69
- metadata: 'controllers',
70
- symbol: `${(0, strings_1.classify)(modelName)}Controller`,
71
- };
72
- default:
73
- throw Error('Invalid ModuleMetadataType');
74
- }
75
- }
76
- exports.getModuleMetadata = getModuleMetadata;
77
- function getSolidImports(modelName, type) {
78
- switch (type) {
79
- case SolidProviderType.Dto:
80
- return {
81
- symbolName: `Create${(0, strings_1.classify)(modelName)}Dto`,
82
- importPath: `./dtos/create-${(0, strings_1.dasherize)(modelName)}.dto`,
83
- };
84
- case SolidProviderType.Service:
85
- return {
86
- symbolName: `${(0, strings_1.classify)(modelName)}Service`,
87
- importPath: `./services/${(0, strings_1.dasherize)(modelName)}.service`,
88
- };
89
- case SolidProviderType.Controller:
90
- return {
91
- symbolName: `${(0, strings_1.classify)(modelName)}Controller`,
92
- importPath: `./controllers/${(0, strings_1.dasherize)(modelName)}.controller`,
93
- };
94
- case SolidProviderType.Entity:
95
- return {
96
- symbolName: `${(0, strings_1.classify)(modelName)}`,
97
- importPath: `./entities/${(0, strings_1.dasherize)(modelName)}.entity`,
98
- };
99
- default:
100
- throw Error('Invalid SolidProviderType');
101
- }
102
- }
103
- exports.getSolidImports = getSolidImports;
104
- function addModuleMetadata(tree, moduleFilePath, moduleMetadata) {
105
- let moduleFileContent = tree.readText(moduleFilePath);
106
- if (moduleFileContent == '') {
107
- throw new Error(`${moduleFilePath} seems to be empty`);
108
- }
109
- moduleMetadata.forEach((metadata) => {
110
- var _a;
111
- const metadataManager = new schematics_1.MetadataManager(moduleFileContent);
112
- moduleFileContent =
113
- (_a = metadataManager.insert(metadata.metadata, metadata.symbol)) !== null && _a !== void 0 ? _a : moduleFileContent;
114
- });
115
- tree.overwrite(moduleFilePath, moduleFileContent);
116
- }
117
- exports.addModuleMetadata = addModuleMetadata;
118
- function addImports(tree, filePath, imports) {
119
- const fileContent = tree.readText(filePath);
120
- if (fileContent == '') {
121
- throw new Error(`${filePath} seems to be empty`);
122
- }
123
- const source = typescript_1.default.createSourceFile(filePath, fileContent, typescript_1.default.ScriptTarget.Latest, true);
124
- const updateRecorder = tree.beginUpdate(filePath);
125
- imports.forEach((importData) => {
126
- const insertImportChange = (0, ast_utils_1.insertImport)(source, filePath, importData.symbolName, importData.importPath);
127
- if (insertImportChange instanceof change_1.InsertChange) {
128
- updateRecorder.insertRight(insertImportChange.pos, insertImportChange.toAdd);
129
- }
130
- });
131
- tree.commitUpdate(updateRecorder);
132
- }
133
- exports.addImports = addImports;
134
- function safeApplyChanges(tree, moduleName, filePath, changes, generateChecksum = false) {
135
- // De-duplicate changes which have the same description
136
- const uniqueChanges = changes.filter((item, index, self) => index === self.findIndex((c) => c.description === item.description));
137
- applyChanges(tree, filePath, uniqueChanges);
138
- generateChecksum ? handleUpdateChecksums(tree, moduleName, filePath) : "no-ops";
139
- }
140
- function generateMD5Hash(input) {
141
- return crypto.createHash('md5').update(input).digest('hex');
142
- }
143
- exports.generateMD5Hash = generateMD5Hash;
144
- function createBackup(tree, filePath, fileContent) {
145
- const backupFilePath = `${filePath}.bkp`;
146
- if (!tree.exists(backupFilePath)) {
147
- tree.create(backupFilePath, fileContent);
148
- }
149
- else {
150
- console.log('Backup file already exists...');
151
- // throw new Error('Backup file already exists. Please delete this file and try again');
152
- //tree.overwrite(backupFilePath, fileContent);
153
- }
154
- }
155
- function loadModuleMetadata(tree, moduleName) {
156
- const moduleMetadataFilePath = getModuleMetadataFilePath(moduleName);
157
- const metadata = tree.exists(moduleMetadataFilePath) ? JSON.parse(tree.readText(moduleMetadataFilePath)) : null;
158
- if (!metadata.checksums)
159
- metadata.checksums = [];
160
- return metadata;
161
- }
162
- exports.loadModuleMetadata = loadModuleMetadata;
163
- function getModuleMetadataFilePath(moduleName) {
164
- if (['solid-core'].includes(moduleName)) {
165
- return `src/${moduleName}/seeders/seed-data/${moduleName}-metadata.json`;
166
- }
167
- else {
168
- return `module-metadata/${(0, strings_1.dasherize)(moduleName)}/${(0, strings_1.dasherize)(moduleName)}-metadata.json`;
169
- }
170
- }
171
- // function getChecksum(tree: Tree, filePath: string, checksums?: Checksum[]) {
172
- // if (!checksums) {
173
- // checksums = loadChecksums(tree);
174
- // }
175
- // return checksums.filter((checksum: Checksum) => checksum.filePath === filePath).pop();
176
- // }
177
- function applyChanges(tree, filePath, changes) {
178
- /*
179
- //Given the filePath, generate a checksum of the file from the content of the file
180
- const fileContent = tree.readText(filePath);
181
- const checksum = generateMD5Hash(fileContent);
182
- console.log('checksum:', checksum, filePath);
183
-
184
- // Compare the checksum in the existing checksums.json file. If they don't match then create a backup of the file
185
- // const checksums: Checksum[] = loadChecksums(tree);
186
- // console.log('checksums:', checksums);
187
- const existingChecksum = getChecksum(tree, filePath);
188
- console.log('existingChecksum:', existingChecksum);
189
-
190
- if (existingChecksum && existingChecksum.checksum !== checksum) {
191
- createBackup(tree, filePath, fileContent);
192
- }*/
193
- const updateRecorder = tree.beginUpdate(filePath);
194
- changes.forEach((change) => {
195
- if (change instanceof change_1.InsertChange) {
196
- updateRecorder.insertLeft(change.pos, change.toAdd);
197
- }
198
- else if (change instanceof FieldManager_1.ReplaceChangeSSS) {
199
- // console.log(`removing ${change.oldText.length} at ${change.replacePosition}`);
200
- updateRecorder.remove(change.replacePosition, change.oldText.length);
201
- // console.log(`inserting ${change.newText} at ${change.replacePosition}`);
202
- updateRecorder.insertLeft(change.replacePosition, change.newText);
203
- // console.log('source', updateRecorder.getText());
204
- }
205
- else if (change instanceof FieldManager_1.RemoveChangeSSS) {
206
- updateRecorder.remove(change.removePosition, change.toRemove.length);
207
- }
208
- });
209
- tree.commitUpdate(updateRecorder);
210
- }
211
- function addField(tree, options, field) {
212
- try {
213
- const fieldHandler = (0, FieldManager_1.getFieldHandler)(tree, options.module, options.model, field);
214
- const entityFieldChanges = fieldHandler.addEntityField();
215
- applyFieldChanges(tree, options.module, entityFieldChanges, options === null || options === void 0 ? void 0 : options.generateChecksum);
216
- const dtoFieldChanges = fieldHandler.addDtoField();
217
- applyFieldChanges(tree, options.module, dtoFieldChanges, options === null || options === void 0 ? void 0 : options.generateChecksum);
218
- }
219
- catch (e) {
220
- console.error('Error while adding field' + field.name, e);
221
- }
222
- }
223
- exports.addField = addField;
224
- function removeField(tree, options, field) {
225
- try {
226
- const fieldHandler = (0, FieldManager_1.getFieldHandler)(tree, options.module, options.model, field);
227
- const entityFieldChanges = fieldHandler.removeEntityField();
228
- applyFieldChanges(tree, options.module, entityFieldChanges, options === null || options === void 0 ? void 0 : options.generateChecksum);
229
- const dtoFieldChanges = fieldHandler.removeDtoField();
230
- applyFieldChanges(tree, options.module, dtoFieldChanges, options === null || options === void 0 ? void 0 : options.generateChecksum);
231
- }
232
- catch (e) {
233
- console.error('Error while removing field' + field.name, e);
234
- }
235
- }
236
- exports.removeField = removeField;
237
- function updateField(tree, options, field) {
238
- try {
239
- const fieldHandler = (0, FieldManager_1.getFieldHandler)(tree, options.module, options.model, field);
240
- const entityFieldChanges = fieldHandler.updateEntityField();
241
- // console.log('entityFieldChanges:', entityFieldChanges.map((change) => change.changes));
242
- applyFieldChanges(tree, options.module, entityFieldChanges, options === null || options === void 0 ? void 0 : options.generateChecksum);
243
- const dtoFieldChanges = fieldHandler.updateDtoField();
244
- // console.log('dtoFieldChanges:', dtoFieldChanges.map((change) => change.changes));
245
- applyFieldChanges(tree, options.module, dtoFieldChanges, options === null || options === void 0 ? void 0 : options.generateChecksum);
246
- }
247
- catch (e) {
248
- console.error('Error while updating field' + field.name, e);
249
- }
250
- }
251
- exports.updateField = updateField;
252
- function applyFieldChanges(tree, moduleName, fieldChanges, generateChecksum = false) {
253
- // Collect the changes file wise into a map
254
- const changesMap = new Map();
255
- fieldChanges.forEach((fieldChange) => {
256
- var _a;
257
- const changes = (_a = changesMap.get(fieldChange.filePath)) !== null && _a !== void 0 ? _a : [];
258
- changes.push(...fieldChange.changes);
259
- changesMap.set(fieldChange.filePath, changes);
260
- });
261
- //Apply the changes to the entity file
262
- changesMap.forEach((changes, filePath) => {
263
- safeApplyChanges(tree, moduleName, filePath, changes, generateChecksum);
264
- });
265
- }
266
- // Read all the files with the given fileNames and update the checksum in the checksum file
267
- function getUpdatedChecksums(filePaths, existingChecksums, tree) {
268
- filePaths.forEach((filePath) => {
269
- // Find the checksum entry for the given file path
270
- const checksumEntry = existingChecksums.find((checksum) => checksum.filePath === filePath);
271
- // If the checksum entry is found, update the checksum
272
- if (checksumEntry) {
273
- const updatedChecksum = generateMD5Hash(tree.readText(filePath));
274
- if (checksumEntry.checksum !== updatedChecksum) {
275
- checksumEntry.checksum = generateMD5Hash(tree.readText(filePath));
276
- checksumEntry.updatedAt = new Date();
277
- }
278
- }
279
- else {
280
- // If the checksum entry is not found, create a new checksum entry
281
- existingChecksums.push({
282
- filePath: filePath,
283
- checksum: generateMD5Hash(tree.readText(filePath)),
284
- algorithm: exports.CHECKSUM_HASH_ALGORITHM,
285
- createdAt: new Date(),
286
- updatedAt: new Date(),
287
- });
288
- }
289
- });
290
- return existingChecksums;
291
- }
292
- exports.getUpdatedChecksums = getUpdatedChecksums;
293
- function getSourceFilePathsAffected(command, options) {
294
- const sourceFilePaths = [];
295
- switch (command) {
296
- case Command.AddModule:
297
- sourceFilePaths.push(`src/${(0, strings_1.dasherize)(options.module)}/${(0, strings_1.dasherize)(options.module)}.module.ts`);
298
- break;
299
- case Command.AddModel:
300
- sourceFilePaths.push(`src/${(0, strings_1.dasherize)(options.module)}/${(0, strings_1.dasherize)(options.module)}.module.ts`);
301
- sourceFilePaths.push(`src/${(0, strings_1.dasherize)(options.module)}/services/${(0, strings_1.dasherize)(options.model)}.service.ts`);
302
- sourceFilePaths.push(`src/${(0, strings_1.dasherize)(options.module)}/controllers/${(0, strings_1.dasherize)(options.model)}.controller.ts`);
303
- sourceFilePaths.push(`src/${(0, strings_1.dasherize)(options.module)}/entities/${(0, strings_1.dasherize)(options.model)}.entity.ts`);
304
- sourceFilePaths.push(`src/${(0, strings_1.dasherize)(options.module)}/dtos/create-${(0, strings_1.dasherize)(options.model)}.dto.ts`);
305
- sourceFilePaths.push(`src/${(0, strings_1.dasherize)(options.module)}/dtos/update-${(0, strings_1.dasherize)(options.model)}.dto.ts`);
306
- break;
307
- default:
308
- throw Error('Invalid command');
309
- }
310
- return sourceFilePaths;
311
- }
312
- exports.getSourceFilePathsAffected = getSourceFilePathsAffected;
313
- function handleUpdateChecksums(tree, moduleName, ...filePaths) {
314
- // console.log('Updating checksums for the following files:', filePaths);
315
- const metadata = loadModuleMetadata(tree, moduleName);
316
- const updatedChecksums = getUpdatedChecksums(filePaths, metadata.checksums, tree);
317
- metadata.checksums = updatedChecksums;
318
- // Save the updated checksums to the checksum file, by overwriting the existing checksum file
319
- tree.overwrite(getModuleMetadataFilePath(moduleName), JSON.stringify(metadata, null, 2));
320
- return tree;
321
- }
322
- exports.handleUpdateChecksums = handleUpdateChecksums;
323
- // Refer -> https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API
324
- // https://learning-notes.mistermicheels.com/javascript/typescript/compiler-api/
325
- function removeUnusedImports(tree, filePath) {
326
- // const sourceFile = createSourceFile(tree, filePath);
327
- const sourceCode = tree.readText(filePath);
328
- // const compilerOptions = {
329
- // getScriptFileNames: () => [filePath],
330
- // getScriptVersion: () => '0',
331
- // getScriptSnapshot: (fileName: string) =>
332
- // fileName === filePath
333
- // ? ts.ScriptSnapshot.fromString(sourceCode)
334
- // : undefined,
335
- // getCurrentDirectory: () => '',
336
- // getCompilationSettings: () => ({ module: ts.ModuleKind.CommonJS }),
337
- // getDefaultLibFileName: (options: any) => ts.getDefaultLibFilePath(options),
338
- // readFile: (filePath:string) => tree.readText(filePath),
339
- // fileExists: (filePath:string) => tree.exists(filePath),
340
- // };
341
- // const languageService = ts.createLanguageService(compilerOptions);
342
- // Create a language service
343
- // const languageService = ts.createLanguageService({
344
- // getScriptFileNames: () => ['temp.ts'],
345
- // getScriptVersion: () => '0',
346
- // getScriptSnapshot: (fileName: string) => fileName === 'temp.ts' ? ts.ScriptSnapshot.fromString(sourceCode) : undefined,
347
- // getCurrentDirectory: () => '',
348
- // getCompilationSettings: () => ({ module: ts.ModuleKind.CommonJS })
349
- // });
350
- const defaultCompilerHost = typescript_1.default.createCompilerHost({});
351
- console.log('defaultCompilerHost:', JSON.stringify(defaultCompilerHost.getCurrentDirectory()));
352
- /*
353
- const program = ts.createProgram([filePath],{}, defaultCompilerHost);
354
- // const diagnostics = languageService.getSemanticDiagnostics(filePath);
355
- const diagnostics = ts.getPreEmitDiagnostics(program);
356
- const unusedImports: Set<string> = new Set();
357
-
358
- if (!tree.exists(`output.diagnostics.json`)) {
359
- tree.create(`output.diagnostics.json`, diagnostics.map(d => d.messageText).join('\n'));
360
- }
361
- // Find unused imports from diagnostics
362
- for (const diagnostic of diagnostics) {
363
- console.log('diagnostic:', diagnostic);
364
- if (diagnostic.code === 6192 && diagnostic.start && diagnostic.length) {
365
- // 6192: Unused import
366
- const start = diagnostic.start;
367
- const end = diagnostic.start + diagnostic.length;
368
-
369
- // Get the text range of the unused import
370
- const importText = sourceCode.substring(start, end);
371
-
372
- // Extract the import specifier
373
- const importSpecifier = importText.match(/import\s+(.*?)\s+from/)?.[1];
374
-
375
- if (importSpecifier) {
376
- unusedImports.add(importSpecifier);
377
- }
378
- }
379
- }
380
-
381
- console.log('Unused imports:', unusedImports);
382
- // Remove unused imports
383
- let result = sourceCode;
384
- unusedImports.forEach((importSpecifier) => {
385
- result = result.replace(
386
- new RegExp(`import\\s+${importSpecifier}\\s+from\\s+.*?;`, 'g'),
387
- '',
388
- );
389
- });
390
-
391
- return result;*/
392
- return sourceCode;
393
- }
394
- exports.removeUnusedImports = removeUnusedImports;
395
- function takeBackupIfChecksumsMismatch(tree, moduleName) {
396
- const metadata = loadModuleMetadata(tree, moduleName);
397
- metadata.checksums.forEach((checksum) => {
398
- const filePath = checksum.filePath;
399
- const fileContent = tree.readText(filePath);
400
- const fileHash = generateMD5Hash(fileContent);
401
- if (checksum.checksum !== fileHash) {
402
- createBackup(tree, filePath, fileContent);
403
- }
404
- });
405
- }
406
- exports.takeBackupIfChecksumsMismatch = takeBackupIfChecksumsMismatch;
407
- //# sourceMappingURL=helpers.js.map