@codemastersolutions/db-utility 0.0.11 → 0.0.13
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.es.md +98 -50
- package/README.md +52 -7
- package/README.pt-BR.md +52 -7
- package/dist/cli/VersionChecker.d.ts +21 -0
- package/dist/cli/VersionChecker.d.ts.map +1 -0
- package/dist/cli/VersionChecker.js +193 -0
- package/dist/cli/VersionChecker.js.map +1 -0
- package/dist/cli/helpers.js +4 -4
- package/dist/cli/helpers.js.map +1 -1
- package/dist/cli/index.js +86 -45
- package/dist/cli/index.js.map +1 -1
- package/dist/config/AppConfig.d.ts +5 -0
- package/dist/config/AppConfig.d.ts.map +1 -1
- package/dist/config/AppConfig.js +47 -24
- package/dist/config/AppConfig.js.map +1 -1
- package/dist/config/ConfigInitializer.d.ts.map +1 -1
- package/dist/config/ConfigInitializer.js +6 -5
- package/dist/config/ConfigInitializer.js.map +1 -1
- package/dist/config/ConfigLoader.d.ts +11 -0
- package/dist/config/ConfigLoader.d.ts.map +1 -1
- package/dist/config/ConfigLoader.js +120 -41
- package/dist/config/ConfigLoader.js.map +1 -1
- package/dist/database/SqlSafety.js +1 -1
- package/dist/database/SqlSafety.js.map +1 -1
- package/dist/database/connectors/MssqlConnector.d.ts +1 -2
- package/dist/database/connectors/MssqlConnector.d.ts.map +1 -1
- package/dist/database/connectors/MssqlConnector.js +13 -5
- package/dist/database/connectors/MssqlConnector.js.map +1 -1
- package/dist/database/connectors/MysqlConnector.d.ts +1 -1
- package/dist/database/connectors/MysqlConnector.d.ts.map +1 -1
- package/dist/database/connectors/MysqlConnector.js +14 -1
- package/dist/database/connectors/MysqlConnector.js.map +1 -1
- package/dist/database/connectors/PostgresConnector.d.ts +1 -1
- package/dist/database/connectors/PostgresConnector.d.ts.map +1 -1
- package/dist/database/connectors/PostgresConnector.js +3 -0
- package/dist/database/connectors/PostgresConnector.js.map +1 -1
- package/dist/errors/DbUtilityError.d.ts +1 -1
- package/dist/errors/DbUtilityError.d.ts.map +1 -1
- package/dist/errors/DbUtilityError.js.map +1 -1
- package/dist/generators/GeneratorWriter.js +8 -8
- package/dist/generators/GeneratorWriter.js.map +1 -1
- package/dist/generators/PrismaGenerator.js +2 -2
- package/dist/generators/PrismaGenerator.js.map +1 -1
- package/dist/generators/SequelizeGenerator.d.ts.map +1 -1
- package/dist/generators/SequelizeGenerator.js +24 -22
- package/dist/generators/SequelizeGenerator.js.map +1 -1
- package/dist/generators/TypeORMGenerator.js +6 -6
- package/dist/generators/TypeORMGenerator.js.map +1 -1
- package/dist/i18n/messages.d.ts +2 -0
- package/dist/i18n/messages.d.ts.map +1 -1
- package/dist/i18n/messages.js +6 -0
- package/dist/i18n/messages.js.map +1 -1
- package/dist/introspection/DataExtractor.d.ts +2 -2
- package/dist/introspection/DataExtractor.d.ts.map +1 -1
- package/dist/introspection/DataExtractor.js.map +1 -1
- package/dist/introspection/IntrospectionLogger.js +9 -9
- package/dist/introspection/IntrospectionLogger.js.map +1 -1
- package/dist/introspection/IntrospectionService.d.ts +2 -2
- package/dist/introspection/IntrospectionService.d.ts.map +1 -1
- package/dist/introspection/IntrospectionService.js.map +1 -1
- package/dist/introspection/PostgresIntrospector.d.ts.map +1 -1
- package/dist/introspection/PostgresIntrospector.js +1 -2
- package/dist/introspection/PostgresIntrospector.js.map +1 -1
- package/dist/testing/ContainerManager.js +3 -3
- package/dist/testing/ContainerManager.js.map +1 -1
- package/dist/testing/MigrationTester.d.ts +2 -2
- package/dist/testing/MigrationTester.d.ts.map +1 -1
- package/dist/testing/MigrationTester.js +25 -24
- package/dist/testing/MigrationTester.js.map +1 -1
- package/dist/testing/ModelTester.d.ts +15 -0
- package/dist/testing/ModelTester.d.ts.map +1 -0
- package/dist/testing/ModelTester.js +383 -0
- package/dist/testing/ModelTester.js.map +1 -0
- package/dist/testing/runners/SequelizeRunner.d.ts.map +1 -1
- package/dist/testing/runners/SequelizeRunner.js +11 -9
- package/dist/testing/runners/SequelizeRunner.js.map +1 -1
- package/dist/testing/runners/TypeORMRunner.d.ts.map +1 -1
- package/dist/testing/runners/TypeORMRunner.js +13 -11
- package/dist/testing/runners/TypeORMRunner.js.map +1 -1
- package/dist/types/database.d.ts +1 -0
- package/dist/types/database.d.ts.map +1 -1
- package/dist/utils/PackageManager.d.ts.map +1 -1
- package/dist/utils/PackageManager.js +10 -8
- package/dist/utils/PackageManager.js.map +1 -1
- package/package.json +6 -25
|
@@ -0,0 +1,383 @@
|
|
|
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 () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.ModelTester = void 0;
|
|
37
|
+
const node_child_process_1 = require("node:child_process");
|
|
38
|
+
const node_fs_1 = require("node:fs");
|
|
39
|
+
const node_path_1 = require("node:path");
|
|
40
|
+
class ModelTester {
|
|
41
|
+
config;
|
|
42
|
+
constructor(config) {
|
|
43
|
+
this.config = config;
|
|
44
|
+
}
|
|
45
|
+
async test(target, modelsDir) {
|
|
46
|
+
const pkgManager = this.detectPackageManager();
|
|
47
|
+
await this.checkAndInstallORM(target, pkgManager);
|
|
48
|
+
console.log(`Testing models for ${target}...`);
|
|
49
|
+
switch (target.toLowerCase()) {
|
|
50
|
+
case 'sequelize':
|
|
51
|
+
await this.testSequelize(modelsDir);
|
|
52
|
+
break;
|
|
53
|
+
case 'typeorm':
|
|
54
|
+
await this.testTypeORM(modelsDir);
|
|
55
|
+
break;
|
|
56
|
+
case 'prisma':
|
|
57
|
+
await this.testPrisma(modelsDir);
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
throw new Error(`Testing not supported for ${target}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
detectPackageManager() {
|
|
64
|
+
if ((0, node_fs_1.existsSync)('yarn.lock'))
|
|
65
|
+
return 'yarn';
|
|
66
|
+
if ((0, node_fs_1.existsSync)('pnpm-lock.yaml'))
|
|
67
|
+
return 'pnpm';
|
|
68
|
+
return 'npm';
|
|
69
|
+
}
|
|
70
|
+
async checkAndInstallORM(target, pkgManager) {
|
|
71
|
+
const packageName = this.getPackageName(target);
|
|
72
|
+
const isInstalled = this.isPackageInstalled(packageName);
|
|
73
|
+
if (isInstalled) {
|
|
74
|
+
console.log(`ORM ${packageName} is already installed.`);
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const inquirer = (await Promise.resolve().then(() => __importStar(require('inquirer')))).default;
|
|
78
|
+
const { install } = await inquirer.prompt([
|
|
79
|
+
{
|
|
80
|
+
type: 'confirm',
|
|
81
|
+
name: 'install',
|
|
82
|
+
message: `ORM ${packageName} is not installed. Do you want to install it?`,
|
|
83
|
+
default: true,
|
|
84
|
+
},
|
|
85
|
+
]);
|
|
86
|
+
if (!install) {
|
|
87
|
+
console.log('Aborting operation as ORM is required for testing.');
|
|
88
|
+
process.exit(0);
|
|
89
|
+
}
|
|
90
|
+
const { version } = await inquirer.prompt([
|
|
91
|
+
{
|
|
92
|
+
type: 'input',
|
|
93
|
+
name: 'version',
|
|
94
|
+
message: `Which version of ${packageName} do you want to install? (Leave empty for latest)`,
|
|
95
|
+
default: '',
|
|
96
|
+
},
|
|
97
|
+
]);
|
|
98
|
+
const installCmd = this.getInstallCommand(pkgManager, packageName, version);
|
|
99
|
+
console.log(`Installing ${packageName}...`);
|
|
100
|
+
try {
|
|
101
|
+
(0, node_child_process_1.execSync)(installCmd, { stdio: 'inherit' });
|
|
102
|
+
console.log(`Successfully installed ${packageName}.`);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.error(`Failed to install ${packageName}.`);
|
|
106
|
+
throw error;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
getPackageName(target) {
|
|
110
|
+
switch (target.toLowerCase()) {
|
|
111
|
+
case 'sequelize':
|
|
112
|
+
return 'sequelize';
|
|
113
|
+
case 'typeorm':
|
|
114
|
+
return 'typeorm';
|
|
115
|
+
case 'prisma':
|
|
116
|
+
return 'prisma';
|
|
117
|
+
case 'mongoose':
|
|
118
|
+
return 'mongoose';
|
|
119
|
+
default:
|
|
120
|
+
throw new Error(`Unknown target: ${target}`);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
isPackageInstalled(packageName) {
|
|
124
|
+
if ((0, node_fs_1.existsSync)('package.json')) {
|
|
125
|
+
const pkg = JSON.parse((0, node_fs_1.readFileSync)('package.json', 'utf-8'));
|
|
126
|
+
const deps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
127
|
+
if (deps[packageName])
|
|
128
|
+
return true;
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
(0, node_child_process_1.execSync)(`npm list -g ${packageName}`, { stdio: 'ignore' });
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
getInstallCommand(pkgManager, packageName, version) {
|
|
139
|
+
const pkgWithVersion = version ? `${packageName}@${version}` : packageName;
|
|
140
|
+
switch (pkgManager) {
|
|
141
|
+
case 'yarn':
|
|
142
|
+
return `yarn add ${pkgWithVersion}`;
|
|
143
|
+
case 'pnpm':
|
|
144
|
+
return `pnpm add ${pkgWithVersion}`;
|
|
145
|
+
default:
|
|
146
|
+
return `npm install ${pkgWithVersion}`;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
async testSequelize(modelsDir) {
|
|
150
|
+
const testFile = (0, node_path_1.join)(modelsDir, 'test-sequelize-models.ts');
|
|
151
|
+
const script = `
|
|
152
|
+
import { Sequelize, DataTypes } from 'sequelize';
|
|
153
|
+
import * as fs from 'fs';
|
|
154
|
+
import * as path from 'path';
|
|
155
|
+
|
|
156
|
+
// Config
|
|
157
|
+
const config = ${JSON.stringify(this.config)};
|
|
158
|
+
|
|
159
|
+
const sequelize = new Sequelize(config.database, config.username, config.password, {
|
|
160
|
+
host: config.host,
|
|
161
|
+
port: config.port,
|
|
162
|
+
dialect: config.type as any,
|
|
163
|
+
logging: false,
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
async function run() {
|
|
167
|
+
try {
|
|
168
|
+
await sequelize.authenticate();
|
|
169
|
+
console.log('Connection has been established successfully.');
|
|
170
|
+
|
|
171
|
+
// Find all model files
|
|
172
|
+
const files = fs.readdirSync('${modelsDir}').filter(f => f.endsWith('.ts') && f !== 'test-sequelize-models.ts');
|
|
173
|
+
|
|
174
|
+
for (const file of files) {
|
|
175
|
+
const modelName = path.basename(file, '.ts');
|
|
176
|
+
console.log(\`Testing model: \${modelName}\`);
|
|
177
|
+
|
|
178
|
+
// Dynamic import of the model
|
|
179
|
+
// Note: In generated models, we export a class and an init function.
|
|
180
|
+
// We need to import the file.
|
|
181
|
+
// Since we are running this script with ts-node, we can use require or import.
|
|
182
|
+
|
|
183
|
+
const modelModule = require(path.join('${modelsDir}', file));
|
|
184
|
+
|
|
185
|
+
// Check if it has init function
|
|
186
|
+
if (typeof modelModule.init === 'function') {
|
|
187
|
+
const Model = modelModule.init(sequelize);
|
|
188
|
+
|
|
189
|
+
// Try a simple query
|
|
190
|
+
try {
|
|
191
|
+
const count = await Model.count();
|
|
192
|
+
console.log(\`✅ \${modelName}: Count query successful (Rows: \${count})\`);
|
|
193
|
+
|
|
194
|
+
const item = await Model.findOne();
|
|
195
|
+
if (item) {
|
|
196
|
+
console.log(\` Sample data: \${JSON.stringify(item.toJSON())}\`);
|
|
197
|
+
}
|
|
198
|
+
} catch (err) {
|
|
199
|
+
console.error(\`❌ \${modelName}: Query failed\`, err);
|
|
200
|
+
}
|
|
201
|
+
} else {
|
|
202
|
+
console.warn(\`⚠️ \${modelName}: No init function found\`);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
} catch (error) {
|
|
207
|
+
console.error('Unable to connect to the database:', error);
|
|
208
|
+
process.exit(1);
|
|
209
|
+
} finally {
|
|
210
|
+
await sequelize.close();
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
run();
|
|
215
|
+
`;
|
|
216
|
+
(0, node_fs_1.writeFileSync)(testFile, script);
|
|
217
|
+
console.log(`Running test script: ${testFile}`);
|
|
218
|
+
try {
|
|
219
|
+
(0, node_child_process_1.execSync)(`npx ts-node "${testFile}"`, { stdio: 'inherit' });
|
|
220
|
+
}
|
|
221
|
+
finally {
|
|
222
|
+
if ((0, node_fs_1.existsSync)(testFile)) {
|
|
223
|
+
(0, node_fs_1.unlinkSync)(testFile);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
async testTypeORM(modelsDir) {
|
|
228
|
+
const testFile = (0, node_path_1.join)(modelsDir, 'test-typeorm-models.ts');
|
|
229
|
+
const script = `
|
|
230
|
+
import { DataSource } from 'typeorm';
|
|
231
|
+
import * as fs from 'fs';
|
|
232
|
+
import * as path from 'path';
|
|
233
|
+
|
|
234
|
+
// Config
|
|
235
|
+
const config = ${JSON.stringify(this.config)};
|
|
236
|
+
|
|
237
|
+
// Load entities
|
|
238
|
+
// We need to import all entity classes
|
|
239
|
+
const files = fs.readdirSync('${modelsDir}').filter(f => f.endsWith('.ts') && f !== 'test-typeorm-models.ts');
|
|
240
|
+
const entities = files.map(f => require(path.join('${modelsDir}', f))[path.basename(f, '.ts')]);
|
|
241
|
+
|
|
242
|
+
const dataSource = new DataSource({
|
|
243
|
+
type: config.type as any,
|
|
244
|
+
host: config.host,
|
|
245
|
+
port: config.port,
|
|
246
|
+
username: config.username,
|
|
247
|
+
password: config.password,
|
|
248
|
+
database: config.database,
|
|
249
|
+
entities: entities,
|
|
250
|
+
synchronize: false,
|
|
251
|
+
logging: false,
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
async function run() {
|
|
255
|
+
try {
|
|
256
|
+
await dataSource.initialize();
|
|
257
|
+
console.log('Data Source has been initialized!');
|
|
258
|
+
|
|
259
|
+
for (const entity of entities) {
|
|
260
|
+
const metadata = dataSource.getMetadata(entity);
|
|
261
|
+
const tableName = metadata.tableName;
|
|
262
|
+
console.log(\`Testing entity: \${metadata.name} (Table: \${tableName})\`);
|
|
263
|
+
|
|
264
|
+
try {
|
|
265
|
+
const repo = dataSource.getRepository(entity);
|
|
266
|
+
const count = await repo.count();
|
|
267
|
+
console.log(\`✅ \${metadata.name}: Count query successful (Rows: \${count})\`);
|
|
268
|
+
|
|
269
|
+
const item = await repo.findOne({ where: {} });
|
|
270
|
+
if (item) {
|
|
271
|
+
console.log(\` Sample data: \${JSON.stringify(item)}\`);
|
|
272
|
+
}
|
|
273
|
+
} catch (err) {
|
|
274
|
+
console.error(\`❌ \${metadata.name}: Query failed\`, err);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
} catch (error) {
|
|
279
|
+
console.error('Error during Data Source initialization', error);
|
|
280
|
+
process.exit(1);
|
|
281
|
+
} finally {
|
|
282
|
+
if (dataSource.isInitialized) {
|
|
283
|
+
await dataSource.destroy();
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
|
|
288
|
+
run();
|
|
289
|
+
`;
|
|
290
|
+
(0, node_fs_1.writeFileSync)(testFile, script);
|
|
291
|
+
console.log(`Running test script: ${testFile}`);
|
|
292
|
+
try {
|
|
293
|
+
(0, node_child_process_1.execSync)(`npx ts-node "${testFile}"`, { stdio: 'inherit' });
|
|
294
|
+
}
|
|
295
|
+
finally {
|
|
296
|
+
if ((0, node_fs_1.existsSync)(testFile)) {
|
|
297
|
+
(0, node_fs_1.unlinkSync)(testFile);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
async testPrisma(modelsDir) {
|
|
302
|
+
console.log('Running prisma generate...');
|
|
303
|
+
const schemaPath = (0, node_path_1.join)(modelsDir, 'schema.prisma');
|
|
304
|
+
if (!(0, node_fs_1.existsSync)(schemaPath)) {
|
|
305
|
+
throw new Error(`schema.prisma not found in ${modelsDir}`);
|
|
306
|
+
}
|
|
307
|
+
try {
|
|
308
|
+
(0, node_child_process_1.execSync)(`npx prisma generate --schema="${schemaPath}"`, { stdio: 'inherit' });
|
|
309
|
+
}
|
|
310
|
+
catch (e) {
|
|
311
|
+
console.error('Failed to generate prisma client');
|
|
312
|
+
throw e;
|
|
313
|
+
}
|
|
314
|
+
const testFile = (0, node_path_1.join)(modelsDir, 'test-prisma-models.ts');
|
|
315
|
+
const script = `
|
|
316
|
+
import { PrismaClient } from '@prisma/client';
|
|
317
|
+
|
|
318
|
+
const prisma = new PrismaClient();
|
|
319
|
+
|
|
320
|
+
async function run() {
|
|
321
|
+
try {
|
|
322
|
+
await prisma.$connect();
|
|
323
|
+
console.log('Connected to database via Prisma');
|
|
324
|
+
|
|
325
|
+
// Get all model names from Prisma Client internals (dmmf)
|
|
326
|
+
// Accessing internal property _dmmf
|
|
327
|
+
// @ts-ignore
|
|
328
|
+
const models = prisma._dmmf.datamodel.models;
|
|
329
|
+
|
|
330
|
+
for (const model of models) {
|
|
331
|
+
const modelName = model.name;
|
|
332
|
+
console.log(\`Testing model: \${modelName}\`);
|
|
333
|
+
|
|
334
|
+
try {
|
|
335
|
+
// @ts-ignore
|
|
336
|
+
const delegate = prisma[modelName.toLowerCase()]; // Prisma client uses lowercase or camelCase? Usually lowerCamelCase
|
|
337
|
+
|
|
338
|
+
if (!delegate) {
|
|
339
|
+
// Try exact name if needed
|
|
340
|
+
// @ts-ignore
|
|
341
|
+
delegate = prisma[modelName];
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
if (delegate) {
|
|
345
|
+
const count = await delegate.count();
|
|
346
|
+
console.log(\`✅ \${modelName}: Count query successful (Rows: \${count})\`);
|
|
347
|
+
|
|
348
|
+
const item = await delegate.findFirst();
|
|
349
|
+
if (item) {
|
|
350
|
+
console.log(\` Sample data: \${JSON.stringify(item)}\`);
|
|
351
|
+
}
|
|
352
|
+
} else {
|
|
353
|
+
console.warn(\`⚠️ Could not find delegate for \${modelName}\`);
|
|
354
|
+
}
|
|
355
|
+
} catch (err) {
|
|
356
|
+
console.error(\`❌ \${modelName}: Query failed\`, err);
|
|
357
|
+
}
|
|
358
|
+
}
|
|
359
|
+
|
|
360
|
+
} catch (error) {
|
|
361
|
+
console.error('Prisma error:', error);
|
|
362
|
+
process.exit(1);
|
|
363
|
+
} finally {
|
|
364
|
+
await prisma.$disconnect();
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
run();
|
|
369
|
+
`;
|
|
370
|
+
(0, node_fs_1.writeFileSync)(testFile, script);
|
|
371
|
+
console.log(`Running test script: ${testFile}`);
|
|
372
|
+
try {
|
|
373
|
+
(0, node_child_process_1.execSync)(`npx ts-node "${testFile}"`, { stdio: 'inherit' });
|
|
374
|
+
}
|
|
375
|
+
finally {
|
|
376
|
+
if ((0, node_fs_1.existsSync)(testFile)) {
|
|
377
|
+
(0, node_fs_1.unlinkSync)(testFile);
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
exports.ModelTester = ModelTester;
|
|
383
|
+
//# sourceMappingURL=ModelTester.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ModelTester.js","sourceRoot":"","sources":["../../src/testing/ModelTester.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SequelizeRunner.d.ts","sourceRoot":"","sources":["../../../src/testing/runners/SequelizeRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SequelizeRunner.d.ts","sourceRoot":"","sources":["../../../src/testing/runners/SequelizeRunner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,eAAgB,YAAW,eAAe;IACrD,OAAO,CAAC,OAAO,CAAC,CAAS;gBAEb,OAAO,CAAC,EAAE,MAAM;IAItB,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAkExE"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SequelizeRunner = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_module_1 = require("node:module");
|
|
7
|
+
const localRequire = (0, node_module_1.createRequire)(__filename);
|
|
6
8
|
class SequelizeRunner {
|
|
7
9
|
ormPath;
|
|
8
10
|
constructor(ormPath) {
|
|
@@ -14,19 +16,19 @@ class SequelizeRunner {
|
|
|
14
16
|
try {
|
|
15
17
|
let sequelizePkg;
|
|
16
18
|
if (this.ormPath) {
|
|
17
|
-
sequelizePkg =
|
|
19
|
+
sequelizePkg = localRequire(this.ormPath);
|
|
18
20
|
}
|
|
19
21
|
else {
|
|
20
22
|
try {
|
|
21
|
-
sequelizePkg =
|
|
23
|
+
sequelizePkg = localRequire((0, node_path_1.join)(cwd, 'node_modules', 'sequelize'));
|
|
22
24
|
}
|
|
23
25
|
catch {
|
|
24
|
-
sequelizePkg =
|
|
26
|
+
sequelizePkg = localRequire('sequelize');
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
SequelizeClass = sequelizePkg.Sequelize;
|
|
28
30
|
}
|
|
29
|
-
catch
|
|
31
|
+
catch {
|
|
30
32
|
throw new Error('Sequelize not found. Please install sequelize in your project to run tests.');
|
|
31
33
|
}
|
|
32
34
|
const sequelize = new SequelizeClass(config.database, config.username, config.password, {
|
|
@@ -52,13 +54,13 @@ class SequelizeRunner {
|
|
|
52
54
|
try {
|
|
53
55
|
await sequelize.authenticate();
|
|
54
56
|
const queryInterface = sequelize.getQueryInterface();
|
|
55
|
-
const files = (0,
|
|
57
|
+
const files = (0, node_fs_1.readdirSync)(migrationsDir)
|
|
56
58
|
.filter((f) => f.endsWith('.js') && !f.endsWith('.d.ts'))
|
|
57
59
|
.sort();
|
|
58
60
|
for (const file of files) {
|
|
59
61
|
console.log(`Running migration: ${file}`);
|
|
60
|
-
const migrationPath = (0,
|
|
61
|
-
const migration =
|
|
62
|
+
const migrationPath = (0, node_path_1.join)(migrationsDir, file);
|
|
63
|
+
const migration = localRequire(migrationPath);
|
|
62
64
|
await migration.up(queryInterface, SequelizeClass);
|
|
63
65
|
}
|
|
64
66
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SequelizeRunner.js","sourceRoot":"","sources":["../../../src/testing/runners/SequelizeRunner.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"SequelizeRunner.js","sourceRoot":"","sources":["../../../src/testing/runners/SequelizeRunner.ts"],"names":[],"mappings":";;;AAAA,yCAAiC;AACjC,qCAAsC;AACtC,6CAA4C;AAI5C,MAAM,YAAY,GAAG,IAAA,2BAAa,EAAC,UAAU,CAAC,CAAC;AAE/C,MAAa,eAAe;IAClB,OAAO,CAAU;IAEzB,YAAY,OAAgB;QAC1B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,aAAqB,EAAE,MAAsB;QACrD,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QAC1B,IAAI,cAAc,CAAC;QAEnB,IAAI,CAAC;YACH,IAAI,YAAY,CAAC;YACjB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAEjB,YAAY,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBAEN,IAAI,CAAC;oBACH,YAAY,GAAG,YAAY,CAAC,IAAA,gBAAI,EAAC,GAAG,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;gBACtE,CAAC;gBAAC,MAAM,CAAC;oBAEP,YAAY,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,6EAA6E,CAC9E,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,MAAM,CAAC,QAAS,EAAE,MAAM,CAAC,QAAS,EAAE,MAAM,CAAC,QAAS,EAAE;YACzF,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,OAAO,EACL,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO;YACvF,OAAO,EAAE,KAAK;YACd,cAAc,EAAE;gBACd,OAAO,EAAE;oBACP,OAAO,EAAE,KAAK;oBACd,sBAAsB,EAAE,IAAI;iBAC7B;gBACD,GAAG,CAAC,MAAM,CAAC,GAAG;oBACZ,CAAC,CAAC;wBACE,GAAG,EAAE;4BACH,OAAO,EAAE,IAAI;4BACb,kBAAkB,EAAE,KAAK;yBAC1B;qBACF;oBACH,CAAC,CAAC,EAAE,CAAC;aACR;SACF,CAAC,CAAC;QAEH,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,YAAY,EAAE,CAAC;YAC/B,MAAM,cAAc,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;YAErD,MAAM,KAAK,GAAG,IAAA,qBAAW,EAAC,aAAa,CAAC;iBACrC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;iBACxD,IAAI,EAAE,CAAC;YAEV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,EAAE,CAAC,CAAC;gBAC1C,MAAM,aAAa,GAAG,IAAA,gBAAI,EAAC,aAAa,EAAE,IAAI,CAAC,CAAC;gBAChD,MAAM,SAAS,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;gBAE9C,MAAM,SAAS,CAAC,EAAE,CAAC,cAAc,EAAE,cAAc,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;CACF;AAzED,0CAyEC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeORMRunner.d.ts","sourceRoot":"","sources":["../../../src/testing/runners/TypeORMRunner.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TypeORMRunner.d.ts","sourceRoot":"","sources":["../../../src/testing/runners/TypeORMRunner.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIpD,qBAAa,aAAc,YAAW,eAAe;IACnD,OAAO,CAAC,OAAO,CAAC,CAAS;gBAEb,OAAO,CAAC,EAAE,MAAM;IAItB,GAAG,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CA2FxE"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TypeORMRunner = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const node_path_1 = require("node:path");
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_module_1 = require("node:module");
|
|
7
|
+
const localRequire = (0, node_module_1.createRequire)(__filename);
|
|
6
8
|
class TypeORMRunner {
|
|
7
9
|
ormPath;
|
|
8
10
|
constructor(ormPath) {
|
|
@@ -14,30 +16,30 @@ class TypeORMRunner {
|
|
|
14
16
|
try {
|
|
15
17
|
let typeormPkg;
|
|
16
18
|
if (this.ormPath) {
|
|
17
|
-
typeormPkg =
|
|
19
|
+
typeormPkg = localRequire(this.ormPath);
|
|
18
20
|
}
|
|
19
21
|
else {
|
|
20
22
|
try {
|
|
21
|
-
typeormPkg =
|
|
23
|
+
typeormPkg = localRequire((0, node_path_1.join)(cwd, 'node_modules', 'typeorm'));
|
|
22
24
|
}
|
|
23
25
|
catch {
|
|
24
|
-
typeormPkg =
|
|
26
|
+
typeormPkg = localRequire('typeorm');
|
|
25
27
|
}
|
|
26
28
|
}
|
|
27
29
|
DataSourceClass = typeormPkg.DataSource;
|
|
28
30
|
}
|
|
29
|
-
catch
|
|
31
|
+
catch {
|
|
30
32
|
throw new Error('TypeORM not found. Please install typeorm in your project to run tests.');
|
|
31
33
|
}
|
|
32
34
|
try {
|
|
33
|
-
|
|
35
|
+
localRequire((0, node_path_1.join)(cwd, 'node_modules', 'ts-node')).register({
|
|
34
36
|
transpileOnly: true,
|
|
35
37
|
compilerOptions: {
|
|
36
38
|
module: 'commonjs',
|
|
37
39
|
},
|
|
38
40
|
});
|
|
39
41
|
}
|
|
40
|
-
catch
|
|
42
|
+
catch {
|
|
41
43
|
console.warn('ts-node not found. If your migrations are in TypeScript, they might fail to load.');
|
|
42
44
|
}
|
|
43
45
|
const dataSource = new DataSourceClass({
|
|
@@ -58,7 +60,7 @@ class TypeORMRunner {
|
|
|
58
60
|
await dataSource.initialize();
|
|
59
61
|
const queryRunner = dataSource.createQueryRunner();
|
|
60
62
|
await queryRunner.connect();
|
|
61
|
-
const files = (0,
|
|
63
|
+
const files = (0, node_fs_1.readdirSync)(migrationsDir)
|
|
62
64
|
.filter((f) => f.endsWith('.ts') || f.endsWith('.js'))
|
|
63
65
|
.sort((a, b) => {
|
|
64
66
|
const timeA = parseInt(a.split('-')[0]);
|
|
@@ -67,8 +69,8 @@ class TypeORMRunner {
|
|
|
67
69
|
});
|
|
68
70
|
for (const file of files) {
|
|
69
71
|
console.log(`Running migration: ${file}`);
|
|
70
|
-
const migrationPath = (0,
|
|
71
|
-
const migrationModule =
|
|
72
|
+
const migrationPath = (0, node_path_1.join)(migrationsDir, file);
|
|
73
|
+
const migrationModule = localRequire(migrationPath);
|
|
72
74
|
const keys = Object.keys(migrationModule);
|
|
73
75
|
const MigrationClass = migrationModule[keys[0]];
|
|
74
76
|
if (typeof MigrationClass === 'function') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TypeORMRunner.js","sourceRoot":"","sources":["../../../src/testing/runners/TypeORMRunner.ts"],"names":[],"mappings":";;;AAAA
|
|
1
|
+
{"version":3,"file":"TypeORMRunner.js","sourceRoot":"","sources":["../../../src/testing/runners/TypeORMRunner.ts"],"names":[],"mappings":"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"}
|
package/dist/types/database.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/types/database.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/types/database.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,UAAU,GAAG,OAAO,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACzB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAChF,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC;CAC/B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageManager.d.ts","sourceRoot":"","sources":["../../src/utils/PackageManager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"PackageManager.d.ts","sourceRoot":"","sources":["../../src/utils/PackageManager.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,cAAc,GAAG,iBAAiB,CAAC;AAEzE,qBAAa,cAAc;YACX,QAAQ;IAchB,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,GAAE,QAAQ,GAAG,OAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BvF,mBAAmB,CACvB,WAAW,EAAE,MAAM,EACnB,KAAK,GAAE,QAAQ,GAAG,OAAiB,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA0CnB,OAAO,CACX,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACjD,OAAO,CAAC,IAAI,CAAC;IA6BV,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB5E,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC;IAYvC,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAiDxF"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PackageManager = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const node_module_1 = require("node:module");
|
|
6
|
+
const node_util_1 = require("node:util");
|
|
7
|
+
const execAsync = (0, node_util_1.promisify)(node_child_process_1.exec);
|
|
8
|
+
const localRequire = (0, node_module_1.createRequire)(__filename);
|
|
7
9
|
class PackageManager {
|
|
8
10
|
async detectPm() {
|
|
9
11
|
try {
|
|
@@ -31,7 +33,7 @@ class PackageManager {
|
|
|
31
33
|
else {
|
|
32
34
|
try {
|
|
33
35
|
const cwd = process.cwd();
|
|
34
|
-
|
|
36
|
+
localRequire.resolve(packageName, { paths: [cwd] });
|
|
35
37
|
return true;
|
|
36
38
|
}
|
|
37
39
|
catch {
|
|
@@ -57,9 +59,9 @@ class PackageManager {
|
|
|
57
59
|
else {
|
|
58
60
|
try {
|
|
59
61
|
const cwd = process.cwd();
|
|
60
|
-
const packagePath =
|
|
61
|
-
const pkg =
|
|
62
|
-
return pkg.version;
|
|
62
|
+
const packagePath = localRequire.resolve(`${packageName}/package.json`, { paths: [cwd] });
|
|
63
|
+
const pkg = localRequire(packagePath);
|
|
64
|
+
return pkg.version ?? null;
|
|
63
65
|
}
|
|
64
66
|
catch {
|
|
65
67
|
try {
|
|
@@ -150,7 +152,7 @@ class PackageManager {
|
|
|
150
152
|
return null;
|
|
151
153
|
}
|
|
152
154
|
}
|
|
153
|
-
catch
|
|
155
|
+
catch {
|
|
154
156
|
return null;
|
|
155
157
|
}
|
|
156
158
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PackageManager.js","sourceRoot":"","sources":["../../src/utils/PackageManager.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"PackageManager.js","sourceRoot":"","sources":["../../src/utils/PackageManager.ts"],"names":[],"mappings":"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"}
|