@elsikora/nestjs-crud-config 1.0.1 → 1.1.0-dev.2
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/README.md +644 -286
- package/dist/cjs/index.js +26 -10
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/modules/config/config.module.js +67 -1
- package/dist/cjs/modules/config/config.module.js.map +1 -1
- package/dist/cjs/modules/config/config.service.js +55 -98
- package/dist/cjs/modules/config/config.service.js.map +1 -1
- package/dist/cjs/modules/config/data/entity/entity.js +1 -0
- package/dist/cjs/modules/config/data/entity/entity.js.map +1 -1
- package/dist/cjs/modules/config/index.d.ts +2 -0
- package/dist/cjs/modules/config/migration/entity/entity.d.ts +12 -0
- package/dist/cjs/modules/config/migration/entity/entity.js +139 -0
- package/dist/cjs/modules/config/migration/entity/entity.js.map +1 -0
- package/dist/cjs/modules/config/migration/entity/index.d.ts +1 -0
- package/dist/cjs/modules/config/migration/enum/index.d.ts +1 -0
- package/dist/cjs/modules/config/migration/enum/status.d.ts +7 -0
- package/dist/cjs/modules/config/migration/enum/status.js +11 -0
- package/dist/cjs/modules/config/migration/enum/status.js.map +1 -0
- package/dist/cjs/modules/config/migration/index.d.ts +5 -0
- package/dist/cjs/modules/config/migration/interface/index.d.ts +3 -0
- package/dist/cjs/modules/config/migration/interface/interface.d.ts +11 -0
- package/dist/cjs/modules/config/migration/interface/migration-definition.interface.d.ts +29 -0
- package/dist/cjs/modules/config/migration/interface/migration-options.interface.d.ts +34 -0
- package/dist/cjs/modules/config/migration/migration-runner.service.d.ts +22 -0
- package/dist/cjs/modules/config/migration/migration-runner.service.js +85 -0
- package/dist/cjs/modules/config/migration/migration-runner.service.js.map +1 -0
- package/dist/cjs/modules/config/migration/migration.service.d.ts +68 -0
- package/dist/cjs/modules/config/migration/migration.service.js +331 -0
- package/dist/cjs/modules/config/migration/migration.service.js.map +1 -0
- package/dist/cjs/modules/config/section/entity/entity.js +1 -0
- package/dist/cjs/modules/config/section/entity/entity.js.map +1 -1
- package/dist/cjs/package.json +2 -1
- package/dist/cjs/shared/constant/config/index.d.ts +1 -0
- package/dist/cjs/shared/constant/config/migration.constant.d.ts +6 -0
- package/dist/cjs/shared/constant/config/migration.constant.js +15 -0
- package/dist/cjs/shared/constant/config/migration.constant.js.map +1 -0
- package/dist/cjs/shared/constant/token.constant.d.ts +2 -0
- package/dist/cjs/shared/constant/token.constant.js +4 -0
- package/dist/cjs/shared/constant/token.constant.js.map +1 -1
- package/dist/cjs/shared/interface/config/options.interface.d.ts +3 -2
- package/dist/cjs/shared/utility/index.d.ts +1 -0
- package/dist/cjs/shared/utility/logger.utility.d.ts +21 -0
- package/dist/cjs/shared/utility/logger.utility.js +67 -0
- package/dist/cjs/shared/utility/logger.utility.js.map +1 -0
- package/dist/esm/index.js +10 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/modules/config/config.module.js +67 -1
- package/dist/esm/modules/config/config.module.js.map +1 -1
- package/dist/esm/modules/config/config.service.js +56 -99
- package/dist/esm/modules/config/config.service.js.map +1 -1
- package/dist/esm/modules/config/data/entity/entity.js +1 -0
- package/dist/esm/modules/config/data/entity/entity.js.map +1 -1
- package/dist/esm/modules/config/index.d.ts +2 -0
- package/dist/esm/modules/config/migration/entity/entity.d.ts +12 -0
- package/dist/esm/modules/config/migration/entity/entity.js +137 -0
- package/dist/esm/modules/config/migration/entity/entity.js.map +1 -0
- package/dist/esm/modules/config/migration/entity/index.d.ts +1 -0
- package/dist/esm/modules/config/migration/enum/index.d.ts +1 -0
- package/dist/esm/modules/config/migration/enum/status.d.ts +7 -0
- package/dist/esm/modules/config/migration/enum/status.js +11 -0
- package/dist/esm/modules/config/migration/enum/status.js.map +1 -0
- package/dist/esm/modules/config/migration/index.d.ts +5 -0
- package/dist/esm/modules/config/migration/interface/index.d.ts +3 -0
- package/dist/esm/modules/config/migration/interface/interface.d.ts +11 -0
- package/dist/esm/modules/config/migration/interface/migration-definition.interface.d.ts +29 -0
- package/dist/esm/modules/config/migration/interface/migration-options.interface.d.ts +34 -0
- package/dist/esm/modules/config/migration/migration-runner.service.d.ts +22 -0
- package/dist/esm/modules/config/migration/migration-runner.service.js +85 -0
- package/dist/esm/modules/config/migration/migration-runner.service.js.map +1 -0
- package/dist/esm/modules/config/migration/migration.service.d.ts +68 -0
- package/dist/esm/modules/config/migration/migration.service.js +331 -0
- package/dist/esm/modules/config/migration/migration.service.js.map +1 -0
- package/dist/esm/modules/config/section/entity/entity.js +1 -0
- package/dist/esm/modules/config/section/entity/entity.js.map +1 -1
- package/dist/esm/package.json +2 -1
- package/dist/esm/shared/constant/config/index.d.ts +1 -0
- package/dist/esm/shared/constant/config/migration.constant.d.ts +6 -0
- package/dist/esm/shared/constant/config/migration.constant.js +13 -0
- package/dist/esm/shared/constant/config/migration.constant.js.map +1 -0
- package/dist/esm/shared/constant/token.constant.d.ts +2 -0
- package/dist/esm/shared/constant/token.constant.js +4 -0
- package/dist/esm/shared/constant/token.constant.js.map +1 -1
- package/dist/esm/shared/interface/config/options.interface.d.ts +3 -2
- package/dist/esm/shared/utility/index.d.ts +1 -0
- package/dist/esm/shared/utility/logger.utility.d.ts +21 -0
- package/dist/esm/shared/utility/logger.utility.js +67 -0
- package/dist/esm/shared/utility/logger.utility.js.map +1 -0
- package/package.json +15 -14
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('../../../external/tslib/tslib.es6.js');
|
|
4
|
+
var config_service = require('../config.service.js');
|
|
5
|
+
var common = require('@nestjs/common');
|
|
6
|
+
var migration_constant = require('../../../shared/constant/config/migration.constant.js');
|
|
7
|
+
var token_constant = require('../../../shared/constant/token.constant.js');
|
|
8
|
+
var typeorm = require('typeorm');
|
|
9
|
+
var service_utility = require('../../../shared/utility/create-dynamic/service.utility.js');
|
|
10
|
+
var entity = require('./entity/entity.js');
|
|
11
|
+
var status = require('./enum/status.js');
|
|
12
|
+
|
|
13
|
+
var ConfigMigrationService_1;
|
|
14
|
+
exports.ConfigMigrationService = ConfigMigrationService_1 = class ConfigMigrationService {
|
|
15
|
+
dataSource;
|
|
16
|
+
options;
|
|
17
|
+
configService;
|
|
18
|
+
LOGGER = new common.Logger(ConfigMigrationService_1.name);
|
|
19
|
+
migrationService;
|
|
20
|
+
constructor(dataSource, options, configService) {
|
|
21
|
+
this.dataSource = dataSource;
|
|
22
|
+
this.options = options;
|
|
23
|
+
this.configService = configService;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Cleans up failed migrations
|
|
27
|
+
* @param {string} [migrationName] - Optional migration name to clean up
|
|
28
|
+
* @returns {Promise<void>} Promise that resolves when cleanup is complete
|
|
29
|
+
*/
|
|
30
|
+
async cleanupFailedMigrations(migrationName) {
|
|
31
|
+
try {
|
|
32
|
+
const whereCondition = migrationName
|
|
33
|
+
? { name: migrationName, status: status.EConfigMigrationStatus.FAILED }
|
|
34
|
+
: { status: status.EConfigMigrationStatus.FAILED };
|
|
35
|
+
// Use bulk delete operation to avoid N+1 problem
|
|
36
|
+
const result = await this.migrationService.getList({ where: whereCondition });
|
|
37
|
+
if (result.items.length === 0) {
|
|
38
|
+
this.LOGGER.verbose("No failed migrations found to clean up");
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
// Delete all failed migrations in bulk
|
|
42
|
+
const migrationIds = result.items.map((m) => m.id);
|
|
43
|
+
for (const id of migrationIds) {
|
|
44
|
+
await this.migrationService.delete({ id });
|
|
45
|
+
}
|
|
46
|
+
this.LOGGER.verbose(`Cleaned up ${result.items.length} failed migration(s): ${result.items.map((m) => m.name).join(", ")}`);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
this.LOGGER.error("Failed to cleanup failed migrations:", error);
|
|
50
|
+
throw error;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Cleans up stuck migrations (running for too long)
|
|
55
|
+
* @param {number} [timeoutMinutes] - Minutes after which a RUNNING migration is considered stuck
|
|
56
|
+
* @returns {Promise<void>} Promise that resolves when cleanup is complete
|
|
57
|
+
*/
|
|
58
|
+
async cleanupStuckMigrations(timeoutMinutes = migration_constant.CONFIG_MIGRATION_CONSTANT.DEFAULT_STUCK_MIGRATION_TIMEOUT_MINUTES) {
|
|
59
|
+
try {
|
|
60
|
+
const cutoffTime = new Date();
|
|
61
|
+
cutoffTime.setMinutes(cutoffTime.getMinutes() - timeoutMinutes);
|
|
62
|
+
const runningMigrations = await this.migrationService.getList({
|
|
63
|
+
where: { status: status.EConfigMigrationStatus.RUNNING },
|
|
64
|
+
});
|
|
65
|
+
const stuckMigrations = runningMigrations.items.filter((migration) => {
|
|
66
|
+
return migration.startedAt && new Date(migration.startedAt) < cutoffTime;
|
|
67
|
+
});
|
|
68
|
+
if (stuckMigrations.length === 0) {
|
|
69
|
+
this.LOGGER.verbose("No stuck migrations found");
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
this.LOGGER.warn(`Found ${stuckMigrations.length} stuck migration(s): ${stuckMigrations.map((m) => m.name).join(", ")}`);
|
|
73
|
+
// Mark stuck migrations as STUCK status
|
|
74
|
+
for (const migration of stuckMigrations) {
|
|
75
|
+
await this.migrationService.update({ id: migration.id }, {
|
|
76
|
+
failedAt: new Date(),
|
|
77
|
+
status: status.EConfigMigrationStatus.STUCK,
|
|
78
|
+
});
|
|
79
|
+
this.LOGGER.verbose(`Marked migration as stuck: ${migration.name}`);
|
|
80
|
+
}
|
|
81
|
+
this.LOGGER.warn(`Marked ${stuckMigrations.length} migration(s) as stuck. You may need to investigate and clean them up manually.`);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
this.LOGGER.error("Failed to cleanup stuck migrations:", error);
|
|
85
|
+
throw error;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Executes pending migrations
|
|
90
|
+
* @param {Array<IConfigMigrationDefinition>} migrations - Array of migration definitions
|
|
91
|
+
* @param {boolean} [useTransaction] - Whether to run migrations in a transaction
|
|
92
|
+
* @returns {Promise<void>} Promise that resolves when all migrations are executed
|
|
93
|
+
*/
|
|
94
|
+
async executeMigrations(migrations, useTransaction = true) {
|
|
95
|
+
if (!migrations || migrations.length === 0) {
|
|
96
|
+
this.LOGGER.verbose("No migrations to execute");
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
// Validate migrations
|
|
100
|
+
this.validateMigrations(migrations);
|
|
101
|
+
// Sort migrations by name to ensure consistent order
|
|
102
|
+
const sortedMigrations = [...migrations].sort((a, b) => a.name.localeCompare(b.name));
|
|
103
|
+
this.LOGGER.verbose(`Starting migration execution for ${sortedMigrations.length} migrations`);
|
|
104
|
+
// Clean up stuck migrations before starting new ones
|
|
105
|
+
const timeoutMinutes = this.options.migrationOptions?.stuckMigrationTimeoutMinutes ??
|
|
106
|
+
migration_constant.CONFIG_MIGRATION_CONSTANT.DEFAULT_STUCK_MIGRATION_TIMEOUT_MINUTES;
|
|
107
|
+
await this.cleanupStuckMigrations(timeoutMinutes);
|
|
108
|
+
const executedMigrations = await this.getExecutedMigrations();
|
|
109
|
+
const completedMigrationNames = new Set(executedMigrations
|
|
110
|
+
.filter((m) => m.status === status.EConfigMigrationStatus.COMPLETED)
|
|
111
|
+
.map((m) => m.name));
|
|
112
|
+
// Also check for currently running migrations to avoid conflicts
|
|
113
|
+
const runningMigrationNames = new Set(executedMigrations
|
|
114
|
+
.filter((m) => m.status === status.EConfigMigrationStatus.RUNNING)
|
|
115
|
+
.map((m) => m.name));
|
|
116
|
+
const pendingMigrations = sortedMigrations.filter((migration) => !completedMigrationNames.has(migration.name) && !runningMigrationNames.has(migration.name));
|
|
117
|
+
if (pendingMigrations.length === 0) {
|
|
118
|
+
this.LOGGER.verbose("No pending migrations to execute");
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
this.LOGGER.verbose(`Found ${pendingMigrations.length} pending migration(s): ${pendingMigrations.map((m) => m.name).join(", ")}`);
|
|
122
|
+
if (useTransaction) {
|
|
123
|
+
await this.dataSource.transaction(async (transactionalEntityManager) => {
|
|
124
|
+
for (const migration of pendingMigrations) {
|
|
125
|
+
await this.executeSingleMigration(migration, transactionalEntityManager);
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
for (const migration of pendingMigrations) {
|
|
131
|
+
await this.executeSingleMigration(migration);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
this.LOGGER.verbose(`Successfully executed ${pendingMigrations.length} migration(s): ${pendingMigrations.map((m) => m.name).join(", ")}`);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Gets list of executed migration names
|
|
138
|
+
* @returns {Promise<string[]>} Promise that resolves to list of executed migration names
|
|
139
|
+
*/
|
|
140
|
+
async getExecutedMigrationList() {
|
|
141
|
+
const executedMigrations = await this.getExecutedMigrations();
|
|
142
|
+
return executedMigrations.map((migration) => migration.name);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Gets list of executed migrations
|
|
146
|
+
* @returns {Promise<IConfigMigration[]>} Promise that resolves to list of executed migrations
|
|
147
|
+
*/
|
|
148
|
+
async getExecutedMigrations() {
|
|
149
|
+
try {
|
|
150
|
+
const result = await this.migrationService.getList({
|
|
151
|
+
order: { name: "ASC" },
|
|
152
|
+
});
|
|
153
|
+
return result.items;
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
const errorMessage = `Failed to get executed migrations: ${error instanceof Error ? error.message : String(error)}`;
|
|
157
|
+
this.LOGGER.error(errorMessage);
|
|
158
|
+
throw error;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Checks if a migration has been executed
|
|
163
|
+
* @param {string} migrationName - The name of the migration to check
|
|
164
|
+
* @returns {Promise<boolean>} Promise that resolves to true if migration is executed
|
|
165
|
+
*/
|
|
166
|
+
async isMigrationExecuted(migrationName) {
|
|
167
|
+
try {
|
|
168
|
+
const result = await this.migrationService.getList({
|
|
169
|
+
where: { name: migrationName },
|
|
170
|
+
});
|
|
171
|
+
return result.items.length > 0 && result.items[0]?.status === status.EConfigMigrationStatus.COMPLETED;
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
this.LOGGER.error(`Failed to check if migration '${migrationName}' is executed:`, error);
|
|
175
|
+
throw error;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
onModuleInit() {
|
|
179
|
+
const tableName = this.options.migrationOptions?.tableName ?? migration_constant.CONFIG_MIGRATION_CONSTANT.DEFAULT_TABLE_NAME;
|
|
180
|
+
const tablePrefix = this.options.entityOptions?.tablePrefix ?? "";
|
|
181
|
+
const finalTableName = `${tablePrefix}${tableName}`;
|
|
182
|
+
const migrationEntity = entity.createConfigMigrationEntity({
|
|
183
|
+
maxNameLength: migration_constant.CONFIG_MIGRATION_CONSTANT.MAX_NAME_LENGTH,
|
|
184
|
+
tableName: finalTableName,
|
|
185
|
+
});
|
|
186
|
+
const repository = this.dataSource.getRepository(migrationEntity);
|
|
187
|
+
const DynamicServiceClass = service_utility.createDynamicService(migrationEntity, "ConfigMigrationService");
|
|
188
|
+
// @ts-ignore
|
|
189
|
+
this.migrationService = new DynamicServiceClass(repository);
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Rolls back a migration
|
|
193
|
+
* @param {string} migrationName - The name of the migration to roll back
|
|
194
|
+
* @param {Array<IConfigMigrationDefinition>} migrations - Array of migration definitions
|
|
195
|
+
* @returns {Promise<void>} Promise that resolves when rollback is complete
|
|
196
|
+
*/
|
|
197
|
+
async rollbackMigration(migrationName, migrations) {
|
|
198
|
+
const migration = migrations.find((m) => m.name === migrationName);
|
|
199
|
+
if (!migration) {
|
|
200
|
+
throw new Error(`Migration '${migrationName}' not found`);
|
|
201
|
+
}
|
|
202
|
+
if (!migration.down) {
|
|
203
|
+
throw new Error(`Migration '${migrationName}' does not have a down method`);
|
|
204
|
+
}
|
|
205
|
+
const startTime = new Date();
|
|
206
|
+
try {
|
|
207
|
+
this.LOGGER.verbose(`Starting rollback for migration: ${migration.name}`);
|
|
208
|
+
await this.dataSource.transaction(async (transactionalEntityManager) => {
|
|
209
|
+
try {
|
|
210
|
+
// Execute the down method
|
|
211
|
+
if (migration.down) {
|
|
212
|
+
await migration.down(this.configService, transactionalEntityManager);
|
|
213
|
+
}
|
|
214
|
+
// Delete the migration record
|
|
215
|
+
await this.migrationService.delete({ name: migrationName });
|
|
216
|
+
this.LOGGER.verbose(`Successfully rolled back migration: ${migration.name}`);
|
|
217
|
+
}
|
|
218
|
+
catch (downError) {
|
|
219
|
+
const errorMessage = `Failed to rollback migration '${migration.name}': ${downError instanceof Error ? downError.message : String(downError)}`;
|
|
220
|
+
this.LOGGER.error(errorMessage);
|
|
221
|
+
// Don't update the migration record on rollback failure
|
|
222
|
+
throw downError;
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
const completedTime = new Date();
|
|
226
|
+
this.LOGGER.verbose(`Migration rollback completed: ${migration.name} (took ${completedTime.getTime() - startTime.getTime()}ms)`);
|
|
227
|
+
}
|
|
228
|
+
catch (error) {
|
|
229
|
+
const duration = Date.now() - startTime.getTime();
|
|
230
|
+
this.LOGGER.error(`Migration rollback failed: ${migration.name} (took ${duration}ms)`, error);
|
|
231
|
+
const failedTime = new Date();
|
|
232
|
+
// Update migration status to FAILED
|
|
233
|
+
await this.migrationService.update({ name: migrationName }, {
|
|
234
|
+
failedAt: failedTime,
|
|
235
|
+
status: status.EConfigMigrationStatus.FAILED,
|
|
236
|
+
});
|
|
237
|
+
throw error;
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Executes a single migration
|
|
242
|
+
* @param {IConfigMigrationDefinition} migration - Migration definition
|
|
243
|
+
* @param {EntityManager} [transactionalEntityManager] - Optional transaction manager
|
|
244
|
+
* @returns {Promise<void>} Promise that resolves when migration is executed
|
|
245
|
+
*/
|
|
246
|
+
async executeSingleMigration(migration, transactionalEntityManager) {
|
|
247
|
+
this.LOGGER.verbose(`Executing migration: ${migration.name}`);
|
|
248
|
+
// First, record the migration as started (to prevent race conditions)
|
|
249
|
+
let migrationRecord;
|
|
250
|
+
const startTime = new Date();
|
|
251
|
+
try {
|
|
252
|
+
migrationRecord = await this.migrationService.create({
|
|
253
|
+
name: migration.name,
|
|
254
|
+
startedAt: startTime,
|
|
255
|
+
status: status.EConfigMigrationStatus.RUNNING,
|
|
256
|
+
}, transactionalEntityManager);
|
|
257
|
+
}
|
|
258
|
+
catch (error) {
|
|
259
|
+
// If creation fails due to unique constraint violation, migration might already be running
|
|
260
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
261
|
+
if (errorMessage.includes("duplicate") ||
|
|
262
|
+
errorMessage.includes("unique") ||
|
|
263
|
+
errorMessage.includes("UNIQUE")) {
|
|
264
|
+
this.LOGGER.warn(`Migration '${migration.name}' is already running or has been executed`);
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
throw error;
|
|
268
|
+
}
|
|
269
|
+
try {
|
|
270
|
+
// Execute the migration
|
|
271
|
+
await migration.up(this.configService, transactionalEntityManager);
|
|
272
|
+
// Update status to completed with executedAt timestamp
|
|
273
|
+
const completedTime = new Date();
|
|
274
|
+
await this.migrationService.update({ id: migrationRecord.id }, {
|
|
275
|
+
executedAt: completedTime,
|
|
276
|
+
status: status.EConfigMigrationStatus.COMPLETED,
|
|
277
|
+
}, transactionalEntityManager);
|
|
278
|
+
const duration = completedTime.getTime() - startTime.getTime();
|
|
279
|
+
this.LOGGER.verbose(`Successfully executed migration: ${migration.name} (${duration}ms)`);
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
this.LOGGER.error(`Failed to execute migration: ${migration.name}`, error);
|
|
283
|
+
// Mark migration as failed with failedAt timestamp
|
|
284
|
+
const failedTime = new Date();
|
|
285
|
+
try {
|
|
286
|
+
await this.migrationService.update({ id: migrationRecord.id }, {
|
|
287
|
+
failedAt: failedTime,
|
|
288
|
+
status: status.EConfigMigrationStatus.FAILED,
|
|
289
|
+
}, transactionalEntityManager);
|
|
290
|
+
}
|
|
291
|
+
catch (updateError) {
|
|
292
|
+
this.LOGGER.error(`Failed to update migration status for ${migration.name}:`, updateError);
|
|
293
|
+
}
|
|
294
|
+
throw error;
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Validates migrations for duplicates and naming issues
|
|
299
|
+
* @param {Array<IConfigMigrationDefinition>} migrations - Array of migration definitions
|
|
300
|
+
*/
|
|
301
|
+
validateMigrations(migrations) {
|
|
302
|
+
// Check for duplicate names
|
|
303
|
+
const migrationNames = migrations.map((m) => m.name);
|
|
304
|
+
const duplicates = migrationNames.filter((name, index) => migrationNames.indexOf(name) !== index);
|
|
305
|
+
if (duplicates.length > 0) {
|
|
306
|
+
throw new Error(`Duplicate migration names found: ${duplicates.join(", ")}`);
|
|
307
|
+
}
|
|
308
|
+
// Check for invalid names (cannot be empty or contain only whitespace)
|
|
309
|
+
const invalidNames = migrationNames.filter((name) => !name?.trim());
|
|
310
|
+
if (invalidNames.length > 0) {
|
|
311
|
+
throw new Error("Migration names cannot be empty or contain only whitespace");
|
|
312
|
+
}
|
|
313
|
+
// Check for missing required methods
|
|
314
|
+
const invalidMigrations = migrations.filter((m) => !m.up || typeof m.up !== "function");
|
|
315
|
+
if (invalidMigrations.length > 0) {
|
|
316
|
+
throw new Error(`Migrations missing required 'up' method: ${invalidMigrations.map((m) => m.name).join(", ")}`);
|
|
317
|
+
}
|
|
318
|
+
// Check for names that are too long
|
|
319
|
+
const tooLongNames = migrationNames.filter((name) => name.length > migration_constant.CONFIG_MIGRATION_CONSTANT.MAX_NAME_LENGTH);
|
|
320
|
+
if (tooLongNames.length > 0) {
|
|
321
|
+
throw new Error(`Migration names too long (max ${migration_constant.CONFIG_MIGRATION_CONSTANT.MAX_NAME_LENGTH} characters): ${tooLongNames.join(", ")}`);
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
};
|
|
325
|
+
exports.ConfigMigrationService = ConfigMigrationService_1 = tslib_es6.__decorate([
|
|
326
|
+
common.Injectable(),
|
|
327
|
+
tslib_es6.__param(0, common.Inject(typeorm.DataSource)),
|
|
328
|
+
tslib_es6.__param(1, common.Inject(token_constant.TOKEN_CONSTANT.CONFIG_OPTIONS)),
|
|
329
|
+
tslib_es6.__metadata("design:paramtypes", [typeorm.DataSource, Object, config_service.CrudConfigService])
|
|
330
|
+
], exports.ConfigMigrationService);
|
|
331
|
+
//# sourceMappingURL=migration.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.service.js","sources":["../../../../../../src/modules/config/migration/migration.service.ts"],"sourcesContent":[null],"names":["ConfigMigrationService","Logger","EConfigMigrationStatus","CONFIG_MIGRATION_CONSTANT","createConfigMigrationEntity","createDynamicService","__decorate","Injectable","__param","Inject","DataSource","TOKEN_CONSTANT","__metadata","CrudConfigService"],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ require('@nestjs/common');
|
|
|
8
8
|
require('@nestjs/typeorm');
|
|
9
9
|
var typeorm = require('typeorm');
|
|
10
10
|
require('../../../../shared/utility/crypto.utility.js');
|
|
11
|
+
require('../../../../shared/utility/logger.utility.js');
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* Creates a dynamic ConfigSection entity with TypeORM decorators
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entity.js","sources":["../../../../../../../src/modules/config/section/entity/entity.ts"],"sourcesContent":[null],"names":["createDynamicEntityClass","CreateDateColumn","ApiPropertyDescribe","EApiPropertyDateType","EApiPropertyDateIdentifier","EApiPropertyDescribeType","EApiPropertyStringType","API_PROPERTY_CONSTANT","UpdateDateColumn"],"mappings":"
|
|
1
|
+
{"version":3,"file":"entity.js","sources":["../../../../../../../src/modules/config/section/entity/entity.ts"],"sourcesContent":[null],"names":["createDynamicEntityClass","CreateDateColumn","ApiPropertyDescribe","EApiPropertyDateType","EApiPropertyDateIdentifier","EApiPropertyDescribeType","EApiPropertyStringType","API_PROPERTY_CONSTANT","UpdateDateColumn"],"mappings":";;;;;;;;;;;;AAcA;;;;;;;AAOG;AACG,SAAU,yBAAyB,CAAC,OAIzC,EAAA;AACA,IAAA,OAAOA,uCAAwB,CAAC;AAC/B,QAAA,OAAO,EAAE;AACR,YAAA,SAAS,EAAE;AACV,gBAAA,OAAO,EAAE,MAAM,mBAAmB;AAClC,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,IAAI,EAAE,WAAW;AACjB,aAAA;AACD,YAAA,WAAW,EAAE;gBACZ,MAAM,EAAE,OAAO,CAAC,oBAAoB;AACpC,gBAAA,QAAQ,EAAE,IAAI;AACd,gBAAA,IAAI,EAAE,SAAS;AACf,aAAA;AACD,YAAA,IAAI,EAAE;gBACL,MAAM,EAAE,OAAO,CAAC,aAAa;AAC7B,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,IAAI,EAAE,SAAS;AACf,aAAA;AACD,YAAA,SAAS,EAAE;AACV,gBAAA,OAAO,EAAE,MAAM,mBAAmB;AAClC,gBAAA,QAAQ,EAAE,KAAK;AACf,gBAAA,IAAI,EAAE,WAAW;AACjB,aAAA;AACD,SAAA;AACD,QAAA,UAAU,EAAE;AACX,YAAA,SAAS,EAAE;AACV,gBAAAC,wBAAgB,EAAE;AAClB,gBAAAC,uCAAmB,CAAC;oBACnB,MAAM,EAAEC,wCAAoB,CAAC,SAAS;oBACtC,UAAU,EAAEC,8CAA0B,CAAC,UAAU;oBACjD,IAAI,EAAEC,4CAAwB,CAAC,IAAI;iBACnC,CAAsB;AACvB,aAAA;AACD,YAAA,WAAW,EAAE;AACZ,gBAAAH,uCAAmB,CAAC;AACnB,oBAAA,WAAW,EAAE,MAAM;AACnB,oBAAA,YAAY,EAAE,SAAS;oBACvB,MAAM,EAAEI,0CAAsB,CAAC,MAAM;AACrC,oBAAA,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,OAAO,CAAC,oBAAoB;oBACvC,SAAS,EAAEC,0CAAqB,CAAC,eAAe;AAChD,oBAAA,OAAO,EAAE,CAAA,KAAA,EAAQ,OAAO,CAAC,oBAAoB,CAAA,EAAA,CAAI;oBACjD,IAAI,EAAEF,4CAAwB,CAAC,MAAM;iBACrC,CAAsB;AACvB,aAAA;AACD,YAAA,EAAE,EAAE;AACH,gBAAAH,uCAAmB,CAAC;oBACnB,IAAI,EAAEG,4CAAwB,CAAC,IAAI;iBACnC,CAAsB;AACvB,aAAA;AACD,YAAA,IAAI,EAAE;AACL,gBAAAH,uCAAmB,CAAC;AACnB,oBAAA,WAAW,EAAE,MAAM;AACnB,oBAAA,YAAY,EAAE,SAAS;oBACvB,MAAM,EAAEI,0CAAsB,CAAC,MAAM;oBACrC,SAAS,EAAE,OAAO,CAAC,aAAa;oBAChC,SAAS,EAAEC,0CAAqB,CAAC,eAAe;AAChD,oBAAA,OAAO,EAAE,CAAA,cAAA,EAAiB,OAAO,CAAC,aAAa,CAAA,EAAA,CAAI;oBACnD,IAAI,EAAEF,4CAAwB,CAAC,MAAM;iBACrC,CAAsB;AACvB,aAAA;AACD,YAAA,SAAS,EAAE;AACV,gBAAAG,wBAAgB,EAAE;AAClB,gBAAAN,uCAAmB,CAAC;oBACnB,MAAM,EAAEC,wCAAoB,CAAC,SAAS;oBACtC,UAAU,EAAEC,8CAA0B,CAAC,UAAU;oBACjD,IAAI,EAAEC,4CAAwB,CAAC,IAAI;iBACnC,CAAsB;AACvB,aAAA;AACD,SAAA;AACD,QAAA,IAAI,EAAE,eAAe;QACrB,SAAS,EAAE,OAAO,CAAC,SAAS;AAC5B,KAAA,CAAC;AACH;;;;"}
|
package/dist/cjs/package.json
CHANGED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
const MAX_NAME_LENGTH = 255;
|
|
4
|
+
const DEFAULT_STUCK_MIGRATION_TIMEOUT_MINUTES = 30;
|
|
5
|
+
const MAX_STATUS_LENGTH = 20;
|
|
6
|
+
const DEFAULT_TABLE_NAME = "config_migrations";
|
|
7
|
+
const CONFIG_MIGRATION_CONSTANT = {
|
|
8
|
+
DEFAULT_STUCK_MIGRATION_TIMEOUT_MINUTES: DEFAULT_STUCK_MIGRATION_TIMEOUT_MINUTES,
|
|
9
|
+
DEFAULT_TABLE_NAME: DEFAULT_TABLE_NAME,
|
|
10
|
+
MAX_NAME_LENGTH: MAX_NAME_LENGTH,
|
|
11
|
+
MAX_STATUS_LENGTH: MAX_STATUS_LENGTH,
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
exports.CONFIG_MIGRATION_CONSTANT = CONFIG_MIGRATION_CONSTANT;
|
|
15
|
+
//# sourceMappingURL=migration.constant.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.constant.js","sources":["../../../../../../src/shared/constant/config/migration.constant.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA,MAAM,eAAe,GAAW,GAAG;AACnC,MAAM,uCAAuC,GAAW,EAAE;AAC1D,MAAM,iBAAiB,GAAW,EAAE;AACpC,MAAM,kBAAkB,GAAW,mBAAmB;AAE/C,MAAM,yBAAyB,GAKlC;AACH,IAAA,uCAAuC,EAAE,uCAAuC;AAChF,IAAA,kBAAkB,EAAE,kBAAkB;AACtC,IAAA,eAAe,EAAE,eAAe;AAChC,IAAA,iBAAiB,EAAE,iBAAiB;;;;;"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export declare const TOKEN_CONSTANT: {
|
|
2
2
|
readonly CONFIG_DATA_ENTITY: symbol;
|
|
3
3
|
readonly CONFIG_DATA_SERVICE: symbol;
|
|
4
|
+
readonly CONFIG_MIGRATION_ENTITY: symbol;
|
|
5
|
+
readonly CONFIG_MIGRATION_SERVICE: symbol;
|
|
4
6
|
readonly CONFIG_OPTIONS: symbol;
|
|
5
7
|
readonly CONFIG_SECTION_ENTITY: symbol;
|
|
6
8
|
readonly CONFIG_SECTION_SERVICE: symbol;
|
|
@@ -4,12 +4,16 @@ const CONFIG_SECTION_SERVICE = Symbol("CRUD_CONFIG_SECTION_SERVICE");
|
|
|
4
4
|
const CONFIG_DATA_SERVICE = Symbol("CRUD_CONFIG_DATA_SERVICE");
|
|
5
5
|
const CONFIG_SECTION_ENTITY = Symbol("CRUD_CONFIG_SECTION_ENTITY");
|
|
6
6
|
const CONFIG_DATA_ENTITY = Symbol("CRUD_CONFIG_DATA_ENTITY");
|
|
7
|
+
const CONFIG_MIGRATION_SERVICE = Symbol("CRUD_CONFIG_MIGRATION_SERVICE");
|
|
8
|
+
const CONFIG_MIGRATION_ENTITY = Symbol("CRUD_CONFIG_MIGRATION_ENTITY");
|
|
7
9
|
const CONFIG_OPTIONS = Symbol("CRUD_CONFIG_OPTIONS");
|
|
8
10
|
const DYNAMIC_PROVIDERS_FACTORY = Symbol("CRUD_CONFIG_DYNAMIC_PROVIDERS_FACTORY");
|
|
9
11
|
// eslint-disable-next-line @elsikora/no-secrets/no-pattern-match
|
|
10
12
|
const TOKEN_CONSTANT = {
|
|
11
13
|
CONFIG_DATA_ENTITY,
|
|
12
14
|
CONFIG_DATA_SERVICE,
|
|
15
|
+
CONFIG_MIGRATION_ENTITY,
|
|
16
|
+
CONFIG_MIGRATION_SERVICE,
|
|
13
17
|
CONFIG_OPTIONS,
|
|
14
18
|
CONFIG_SECTION_ENTITY,
|
|
15
19
|
CONFIG_SECTION_SERVICE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.constant.js","sources":["../../../../../src/shared/constant/token.constant.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA,MAAM,sBAAsB,GAAW,MAAM,CAAC,6BAA6B,CAAC;AAC5E,MAAM,mBAAmB,GAAW,MAAM,CAAC,0BAA0B,CAAC;AACtE,MAAM,qBAAqB,GAAW,MAAM,CAAC,4BAA4B,CAAC;AAC1E,MAAM,kBAAkB,GAAW,MAAM,CAAC,yBAAyB,CAAC;AACpE,MAAM,cAAc,GAAW,MAAM,CAAC,qBAAqB,CAAC;AAC5D,MAAM,yBAAyB,GAAW,MAAM,CAAC,uCAAuC,CAAC;AAEzF;AACO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"token.constant.js","sources":["../../../../../src/shared/constant/token.constant.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA,MAAM,sBAAsB,GAAW,MAAM,CAAC,6BAA6B,CAAC;AAC5E,MAAM,mBAAmB,GAAW,MAAM,CAAC,0BAA0B,CAAC;AACtE,MAAM,qBAAqB,GAAW,MAAM,CAAC,4BAA4B,CAAC;AAC1E,MAAM,kBAAkB,GAAW,MAAM,CAAC,yBAAyB,CAAC;AACpE,MAAM,wBAAwB,GAAW,MAAM,CAAC,+BAA+B,CAAC;AAChF,MAAM,uBAAuB,GAAW,MAAM,CAAC,8BAA8B,CAAC;AAC9E,MAAM,cAAc,GAAW,MAAM,CAAC,qBAAqB,CAAC;AAC5D,MAAM,yBAAyB,GAAW,MAAM,CAAC,uCAAuC,CAAC;AAEzF;AACO,MAAM,cAAc,GASvB;IACH,kBAAkB;IAClB,mBAAmB;IACnB,uBAAuB;IACvB,wBAAwB;IACxB,cAAc;IACd,qBAAqB;IACrB,sBAAsB;IACtB,yBAAyB;;;;;"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { IConfigMigrationOptions } from '../../../modules/config/migration/interface/index';
|
|
1
2
|
import type { IConfigCacheOptions } from './cache-options.interface';
|
|
2
3
|
import type { IConfigControllersOptions } from './controller-options.interface';
|
|
3
4
|
import type { IConfigEncryptionOptions } from './encryption-options.interface';
|
|
@@ -27,9 +28,9 @@ export interface IConfigOptions {
|
|
|
27
28
|
*/
|
|
28
29
|
environment?: string;
|
|
29
30
|
/**
|
|
30
|
-
*
|
|
31
|
+
* Migration configuration options
|
|
31
32
|
*/
|
|
32
|
-
|
|
33
|
+
migrationOptions?: IConfigMigrationOptions;
|
|
33
34
|
/**
|
|
34
35
|
* Whether to automatically create missing sections
|
|
35
36
|
*/
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { ConsoleLogger } from "@nestjs/common";
|
|
2
|
+
import "dotenv/config";
|
|
3
|
+
/**
|
|
4
|
+
* Custom logger that extends NestJS's ConsoleLogger with environment-based log level filtering
|
|
5
|
+
*/
|
|
6
|
+
export declare class LoggerUtility extends ConsoleLogger {
|
|
7
|
+
private static readonly ENV_LOG_LEVEL_KEY;
|
|
8
|
+
constructor(context?: string);
|
|
9
|
+
/**
|
|
10
|
+
* Static method to create a logger with a specific context
|
|
11
|
+
* @param {string} context - The context name for the logger
|
|
12
|
+
* @returns {LoggerUtility} A new logger instance with the specified context
|
|
13
|
+
*/
|
|
14
|
+
static getLogger(context?: string): LoggerUtility;
|
|
15
|
+
/**
|
|
16
|
+
* Get the current log level from environment variable
|
|
17
|
+
* @returns {Array<LogLevel>} Array of enabled log levels based on environment configuration
|
|
18
|
+
* @private
|
|
19
|
+
*/
|
|
20
|
+
private static getLogLevelsFromEnv;
|
|
21
|
+
}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var tslib_es6 = require('../../external/tslib/tslib.es6.js');
|
|
4
|
+
var common = require('@nestjs/common');
|
|
5
|
+
require('dotenv/config');
|
|
6
|
+
|
|
7
|
+
var LoggerUtility_1;
|
|
8
|
+
/**
|
|
9
|
+
* Custom logger that extends NestJS's ConsoleLogger with environment-based log level filtering
|
|
10
|
+
*/
|
|
11
|
+
exports.LoggerUtility = class LoggerUtility extends common.ConsoleLogger {
|
|
12
|
+
static { LoggerUtility_1 = this; }
|
|
13
|
+
static ENV_LOG_LEVEL_KEY = "NCC_LOG_LEVEL";
|
|
14
|
+
constructor(context) {
|
|
15
|
+
super(context ?? "DefaultContext", {
|
|
16
|
+
logLevels: LoggerUtility_1.getLogLevelsFromEnv(),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Static method to create a logger with a specific context
|
|
21
|
+
* @param {string} context - The context name for the logger
|
|
22
|
+
* @returns {LoggerUtility} A new logger instance with the specified context
|
|
23
|
+
*/
|
|
24
|
+
static getLogger(context) {
|
|
25
|
+
return new LoggerUtility_1(`NestJS-Crud-Config/${context ?? "Core"}`);
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the current log level from environment variable
|
|
29
|
+
* @returns {Array<LogLevel>} Array of enabled log levels based on environment configuration
|
|
30
|
+
* @private
|
|
31
|
+
*/
|
|
32
|
+
static getLogLevelsFromEnv() {
|
|
33
|
+
const logLevel = process.env[this.ENV_LOG_LEVEL_KEY] ?? "none";
|
|
34
|
+
if (!logLevel) {
|
|
35
|
+
// Default log levels if not specified in env
|
|
36
|
+
return ["error", "warn", "log"];
|
|
37
|
+
}
|
|
38
|
+
switch (logLevel.toLowerCase()) {
|
|
39
|
+
case "debug": {
|
|
40
|
+
return ["error", "warn", "log", "debug"];
|
|
41
|
+
}
|
|
42
|
+
case "error": {
|
|
43
|
+
return ["error"];
|
|
44
|
+
}
|
|
45
|
+
case "log": {
|
|
46
|
+
return ["error", "warn", "log"];
|
|
47
|
+
}
|
|
48
|
+
case "none": {
|
|
49
|
+
return [];
|
|
50
|
+
}
|
|
51
|
+
case "verbose": {
|
|
52
|
+
return ["error", "warn", "log", "debug", "verbose"];
|
|
53
|
+
}
|
|
54
|
+
case "warn": {
|
|
55
|
+
return ["error", "warn"];
|
|
56
|
+
}
|
|
57
|
+
default: {
|
|
58
|
+
return ["error", "warn", "log"];
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
exports.LoggerUtility = LoggerUtility_1 = tslib_es6.__decorate([
|
|
64
|
+
common.Injectable(),
|
|
65
|
+
tslib_es6.__metadata("design:paramtypes", [String])
|
|
66
|
+
], exports.LoggerUtility);
|
|
67
|
+
//# sourceMappingURL=logger.utility.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.utility.js","sources":["../../../../../src/shared/utility/logger.utility.ts"],"sourcesContent":[null],"names":["LoggerUtility","ConsoleLogger","__decorate","Injectable"],"mappings":";;;;;;;AAMA;;AAEG;AAEUA,qBAAa,GAAnB,MAAM,aAAc,SAAQC,oBAAa,CAAA;;AACvC,IAAA,OAAgB,iBAAiB,GAAW,eAAe;AAEnE,IAAA,WAAA,CAAY,OAAgB,EAAA;AAC3B,QAAA,KAAK,CAAC,OAAO,IAAI,gBAAgB,EAAE;AAClC,YAAA,SAAS,EAAE,eAAa,CAAC,mBAAmB,EAAE;AAC9C,SAAA,CAAC;IACH;AAEA;;;;AAIG;IACI,OAAO,SAAS,CAAC,OAAgB,EAAA;QACvC,OAAO,IAAI,eAAa,CAAC,CAAA,mBAAA,EAAsB,OAAO,IAAI,MAAM,CAAA,CAAE,CAAC;IACpE;AAEA;;;;AAIG;AACK,IAAA,OAAO,mBAAmB,GAAA;AACjC,QAAA,MAAM,QAAQ,GAAW,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,MAAM;QAEtE,IAAI,CAAC,QAAQ,EAAE;;AAEd,YAAA,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;QAChC;AAEA,QAAA,QAAQ,QAAQ,CAAC,WAAW,EAAE;YAC7B,KAAK,OAAO,EAAE;gBACb,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC;YACzC;YAEA,KAAK,OAAO,EAAE;gBACb,OAAO,CAAC,OAAO,CAAC;YACjB;YAEA,KAAK,KAAK,EAAE;AACX,gBAAA,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;YAChC;YAEA,KAAK,MAAM,EAAE;AACZ,gBAAA,OAAO,EAAE;YACV;YAEA,KAAK,SAAS,EAAE;gBACf,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC;YACpD;YAEA,KAAK,MAAM,EAAE;AACZ,gBAAA,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC;YACzB;YAEA,SAAS;AACR,gBAAA,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC;YAChC;;IAEF;;AA5DYD,qBAAa,GAAA,eAAA,GAAAE,oBAAA,CAAA;AADzB,IAAAC,iBAAU,EAAE;;AACA,CAAA,EAAAH,qBAAa,CA6DzB;;"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,15 +1,22 @@
|
|
|
1
1
|
export { CrudConfigModule } from './modules/config/config.module.js';
|
|
2
2
|
export { CrudConfigService } from './modules/config/config.service.js';
|
|
3
|
+
import '@elsikora/nestjs-crud-automator';
|
|
3
4
|
export { API_PROPERTY_CONSTANT } from './shared/constant/api-property.constant.js';
|
|
4
5
|
export { CONFIG_DATA_CONSTANT } from './shared/constant/config/data.constant.js';
|
|
6
|
+
export { CONFIG_MIGRATION_CONSTANT } from './shared/constant/config/migration.constant.js';
|
|
5
7
|
export { CONFIG_SECTION_CONSTANT } from './shared/constant/config/section.constant.js';
|
|
6
8
|
export { CRYPTO_CONSTANT } from './shared/constant/crypto.constant.js';
|
|
7
9
|
export { TOKEN_CONSTANT } from './shared/constant/token.constant.js';
|
|
8
|
-
export { EEnvironment } from './shared/enum/environment.enum.js';
|
|
9
|
-
export { EInstanceName } from './shared/enum/instance-name.enum.js';
|
|
10
|
-
export { EService } from './shared/enum/service.enum.js';
|
|
11
10
|
export { createDynamicEntityClass } from './shared/utility/create-dynamic/entity.utility.js';
|
|
12
11
|
export { createDynamicService } from './shared/utility/create-dynamic/service.utility.js';
|
|
13
12
|
export { createDynamicEntityClass as createDynamicEntityUtility } from './shared/utility/create-dynamic-entity.utility.js';
|
|
14
13
|
export { CryptoUtility } from './shared/utility/crypto.utility.js';
|
|
14
|
+
export { LoggerUtility } from './shared/utility/logger.utility.js';
|
|
15
|
+
import 'typeorm';
|
|
16
|
+
export { EConfigMigrationStatus } from './modules/config/migration/enum/status.js';
|
|
17
|
+
import './modules/config/migration/migration-runner.service.js';
|
|
18
|
+
import './modules/config/migration/migration.service.js';
|
|
19
|
+
export { EEnvironment } from './shared/enum/environment.enum.js';
|
|
20
|
+
export { EInstanceName } from './shared/enum/instance-name.enum.js';
|
|
21
|
+
export { EService } from './shared/enum/service.enum.js';
|
|
15
22
|
//# sourceMappingURL=index.js.map
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;"}
|