@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.
- package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.d.ts +4 -0
- package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.js +61 -2
- package/dist/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.js.map +1 -1
- package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.d.ts +1 -0
- package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js +13 -2
- package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js.map +1 -1
- package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +1 -1
- package/dist/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js.map +1 -1
- package/package.json +5 -2
- package/publish.js +16 -0
- package/src/code-builder/lib/field/decorator-managers/dto/ApiPropertyDecoratorManager.ts +71 -2
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.ts +21 -1
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.ts +1 -1
- package/dto_additional_fields_duplicate_fix.diff +0 -40
- package/src/code-builder/index.js +0 -178
- package/src/code-builder/index_spec.js +0 -46
- package/src/code-builder/lib/field/FieldManager.js +0 -236
- package/src/code-builder/lib/field/decorator-managers/dto/ArrayDecoratorManager.js +0 -107
- package/src/code-builder/lib/field/decorator-managers/dto/BigIntDecoratorManager.js +0 -100
- package/src/code-builder/lib/field/decorator-managers/dto/BooleanDecoratorManager.js +0 -102
- package/src/code-builder/lib/field/decorator-managers/dto/DateDecoratorManager.js +0 -106
- package/src/code-builder/lib/field/decorator-managers/dto/DecimalDecoratorManager.js +0 -112
- package/src/code-builder/lib/field/decorator-managers/dto/EmailDecoratorManager.js +0 -99
- package/src/code-builder/lib/field/decorator-managers/dto/IntDecoratorManager.js +0 -100
- package/src/code-builder/lib/field/decorator-managers/dto/JsonDecoratorManager.js +0 -100
- package/src/code-builder/lib/field/decorator-managers/dto/LengthDecoratorManager.js +0 -104
- package/src/code-builder/lib/field/decorator-managers/dto/MaxDecoratorManager.js +0 -103
- package/src/code-builder/lib/field/decorator-managers/dto/MaxLengthDecoratorManager.js +0 -103
- package/src/code-builder/lib/field/decorator-managers/dto/MinDecoratorManager.js +0 -102
- package/src/code-builder/lib/field/decorator-managers/dto/MinLengthDecoratorManager.js +0 -103
- package/src/code-builder/lib/field/decorator-managers/dto/NumberDecoratorManager.js +0 -112
- package/src/code-builder/lib/field/decorator-managers/dto/OptionalDecoratorManager.js +0 -104
- package/src/code-builder/lib/field/decorator-managers/dto/RegexDecoratorManager.js +0 -102
- package/src/code-builder/lib/field/decorator-managers/dto/RequiredDecoratorManager.js +0 -100
- package/src/code-builder/lib/field/decorator-managers/dto/StringDecoratorManager.js +0 -99
- package/src/code-builder/lib/field/decorator-managers/dto/TransformDecoratorManager.js +0 -102
- package/src/code-builder/lib/field/decorator-managers/dto/ValidateNestedDecoratorManager.js +0 -140
- package/src/code-builder/lib/field/decorator-managers/entity/ColumnDecoratorManager.js +0 -178
- package/src/code-builder/lib/field/decorator-managers/entity/IndexDecoratorManager.js +0 -79
- package/src/code-builder/lib/field/decorator-managers/entity/JoinTableDecoratorManager.js +0 -118
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToManyDecoratorManager.js +0 -175
- package/src/code-builder/lib/field/decorator-managers/entity/ManyToOneDecoratorManager.js +0 -179
- package/src/code-builder/lib/field/decorator-managers/entity/OneToManyDecoratorManager.js +0 -155
- package/src/code-builder/lib/field/decorator-managers/entity/UniqueIndexDecoratorManager.js +0 -174
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForDto.js +0 -345
- package/src/code-builder/lib/field/field-managers/base/BaseFieldManagerForEntity.js +0 -373
- package/src/code-builder/lib/field/field-managers/base/DeleteType.js +0 -11
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForDto.js +0 -81
- package/src/code-builder/lib/field/field-managers/bigint/BigIntFieldManagerForEntity.js +0 -55
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForDto.js +0 -75
- package/src/code-builder/lib/field/field-managers/boolean/BooleanFieldManagerForEntity.js +0 -51
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldHandler.js +0 -30
- package/src/code-builder/lib/field/field-managers/computed/ComputedFieldManagerForEntity.js +0 -33
- package/src/code-builder/lib/field/field-managers/date/DateFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForDto.js +0 -81
- package/src/code-builder/lib/field/field-managers/date/DateFieldManagerForEntity.js +0 -59
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForDto.js +0 -77
- package/src/code-builder/lib/field/field-managers/decimal/DecimalFieldManagerForEntity.js +0 -53
- package/src/code-builder/lib/field/field-managers/email/EmailFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForDto.js +0 -72
- package/src/code-builder/lib/field/field-managers/email/EmailFieldManagerForEntity.js +0 -44
- package/src/code-builder/lib/field/field-managers/int/IntFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForDto.js +0 -76
- package/src/code-builder/lib/field/field-managers/int/IntFieldManagerForEntity.js +0 -52
- package/src/code-builder/lib/field/field-managers/json/JsonFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForDto.js +0 -57
- package/src/code-builder/lib/field/field-managers/json/JsonFieldManagerForEntity.js +0 -21
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForDto.js +0 -63
- package/src/code-builder/lib/field/field-managers/long-text/LongTextFieldManagerForEntity.js +0 -34
- package/src/code-builder/lib/field/field-managers/media/MediaFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForDto.js +0 -72
- package/src/code-builder/lib/field/field-managers/media/MediaFieldManagerForEntity.js +0 -57
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldHandler.js +0 -27
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForDto.js +0 -75
- package/src/code-builder/lib/field/field-managers/no-ops/NoOpsFieldManagerForEntity.js +0 -35
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForDto.js +0 -121
- package/src/code-builder/lib/field/field-managers/password/PasswordFieldManagerForEntity.js +0 -37
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForDto.js +0 -366
- package/src/code-builder/lib/field/field-managers/relation/ManyToManyRelationFieldManagerForEntity.js +0 -158
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldHandler.js +0 -33
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForDto.js +0 -294
- package/src/code-builder/lib/field/field-managers/relation/ManyToOneRelationFieldManagerForEntity.js +0 -177
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForDto.js +0 -63
- package/src/code-builder/lib/field/field-managers/rich-text/RichTextFieldManagerForEntity.js +0 -34
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForDto.js +0 -63
- package/src/code-builder/lib/field/field-managers/short-text/ShortTextFieldManagerForEntity.js +0 -37
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldHandler.js +0 -34
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForDto.js +0 -15
- package/src/code-builder/lib/field/field-managers/uuid/UUIDFieldManagerForEntity.js +0 -33
- package/src/code-builder/lib/model/helpers.js +0 -407
|
@@ -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
|