@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
@@ -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