@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
package/dist/config/AppConfig.js
CHANGED
|
@@ -5,12 +5,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.AppConfigLoader = void 0;
|
|
7
7
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
|
-
const
|
|
9
|
-
const
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
10
|
const DbUtilityError_1 = require("../errors/DbUtilityError");
|
|
11
11
|
dotenv_1.default.config();
|
|
12
12
|
const defaultConfig = {
|
|
13
13
|
language: 'pt-BR',
|
|
14
|
+
versionCheck: {
|
|
15
|
+
enabled: true,
|
|
16
|
+
frequency: 'daily',
|
|
17
|
+
},
|
|
14
18
|
introspection: {
|
|
15
19
|
outputDir: 'db-utility-introspect',
|
|
16
20
|
},
|
|
@@ -36,8 +40,8 @@ class AppConfigLoader {
|
|
|
36
40
|
'.db-utilityrc.app',
|
|
37
41
|
];
|
|
38
42
|
for (const file of defaultFiles) {
|
|
39
|
-
const path = (0,
|
|
40
|
-
if ((0,
|
|
43
|
+
const path = (0, node_path_1.resolve)(process.cwd(), file);
|
|
44
|
+
if ((0, node_fs_1.existsSync)(path)) {
|
|
41
45
|
fromFile = this.loadFromFileRaw(path);
|
|
42
46
|
break;
|
|
43
47
|
}
|
|
@@ -47,6 +51,18 @@ class AppConfigLoader {
|
|
|
47
51
|
language: fromFile.language || fromEnv.language,
|
|
48
52
|
target: fromFile.target || fromEnv.target,
|
|
49
53
|
};
|
|
54
|
+
const envVersionCheck = fromEnv.versionCheck;
|
|
55
|
+
const fileVersionCheck = fromFile.versionCheck;
|
|
56
|
+
if (envVersionCheck || fileVersionCheck) {
|
|
57
|
+
merged.versionCheck = {
|
|
58
|
+
enabled: fileVersionCheck?.enabled ??
|
|
59
|
+
envVersionCheck?.enabled ??
|
|
60
|
+
defaultConfig.versionCheck.enabled,
|
|
61
|
+
frequency: fileVersionCheck?.frequency ??
|
|
62
|
+
envVersionCheck?.frequency ??
|
|
63
|
+
defaultConfig.versionCheck.frequency,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
50
66
|
const envIntrospection = fromEnv.introspection;
|
|
51
67
|
const fileIntrospection = fromFile.introspection;
|
|
52
68
|
const introspectionOutputDir = fileIntrospection?.outputDir ?? envIntrospection?.outputDir;
|
|
@@ -73,21 +89,21 @@ class AppConfigLoader {
|
|
|
73
89
|
merged.migrations = {
|
|
74
90
|
fileNamePattern,
|
|
75
91
|
...(migrationsOutputDir ? { outputDir: migrationsOutputDir } : {}),
|
|
76
|
-
...(migrationsData
|
|
92
|
+
...(migrationsData === undefined ? {} : { data: migrationsData }),
|
|
77
93
|
...(migrationsDataTables ? { dataTables: migrationsDataTables } : {}),
|
|
78
|
-
...(migrationsBackup
|
|
94
|
+
...(migrationsBackup === undefined ? {} : { backup: migrationsBackup }),
|
|
79
95
|
};
|
|
80
96
|
}
|
|
81
97
|
return this.normalize(merged);
|
|
82
98
|
}
|
|
83
99
|
static loadFromFileRaw(pathStr) {
|
|
84
|
-
const absolutePath = (0,
|
|
85
|
-
if (!(0,
|
|
100
|
+
const absolutePath = (0, node_path_1.resolve)(process.cwd(), pathStr);
|
|
101
|
+
if (!(0, node_fs_1.existsSync)(absolutePath)) {
|
|
86
102
|
throw new DbUtilityError_1.DbUtilityError('APP_CONFIG_FILE_NOT_FOUND', absolutePath);
|
|
87
103
|
}
|
|
88
|
-
const ext = (0,
|
|
104
|
+
const ext = (0, node_path_1.extname)(absolutePath);
|
|
89
105
|
if (ext === '.json' || ext === '') {
|
|
90
|
-
const content = (0,
|
|
106
|
+
const content = (0, node_fs_1.readFileSync)(absolutePath, 'utf-8');
|
|
91
107
|
return JSON.parse(content);
|
|
92
108
|
}
|
|
93
109
|
throw new DbUtilityError_1.DbUtilityError('APP_CONFIG_FILE_FORMAT_UNSUPPORTED', ext);
|
|
@@ -99,6 +115,8 @@ class AppConfigLoader {
|
|
|
99
115
|
process.env.DBUTILITY_LANGUAGE ||
|
|
100
116
|
process.env.LANG;
|
|
101
117
|
const rawTarget = process.env.DB_UTILITY_TARGET || process.env.DBUTILITY_TARGET;
|
|
118
|
+
const rawVersionCheckEnabled = process.env.DB_UTILITY_VERSION_CHECK_ENABLED;
|
|
119
|
+
const rawVersionCheckFrequency = process.env.DB_UTILITY_VERSION_CHECK_FREQUENCY;
|
|
102
120
|
const rawIntrospectionOutputDir = process.env.DB_UTILITY_INTROSPECTION_OUTPUT_DIR ||
|
|
103
121
|
process.env.DBUTILITY_INTROSPECTION_OUTPUT_DIR;
|
|
104
122
|
const rawMigrationsOutputDir = process.env.DB_UTILITY_MIGRATIONS_OUTPUT_DIR || process.env.DBUTILITY_MIGRATIONS_OUTPUT_DIR;
|
|
@@ -114,6 +132,12 @@ class AppConfigLoader {
|
|
|
114
132
|
if (rawTarget) {
|
|
115
133
|
config.target = rawTarget;
|
|
116
134
|
}
|
|
135
|
+
if (rawVersionCheckEnabled !== undefined || rawVersionCheckFrequency) {
|
|
136
|
+
config.versionCheck = {
|
|
137
|
+
enabled: rawVersionCheckEnabled !== 'false',
|
|
138
|
+
frequency: rawVersionCheckFrequency || 'daily',
|
|
139
|
+
};
|
|
140
|
+
}
|
|
117
141
|
if (rawIntrospectionOutputDir) {
|
|
118
142
|
config.introspection = { outputDir: rawIntrospectionOutputDir };
|
|
119
143
|
}
|
|
@@ -133,9 +157,9 @@ class AppConfigLoader {
|
|
|
133
157
|
config.migrations = {
|
|
134
158
|
fileNamePattern,
|
|
135
159
|
...(rawMigrationsOutputDir ? { outputDir: rawMigrationsOutputDir } : {}),
|
|
136
|
-
...(data
|
|
160
|
+
...(data === undefined ? {} : { data }),
|
|
137
161
|
...(dataTables ? { dataTables } : {}),
|
|
138
|
-
...(backup
|
|
162
|
+
...(backup === undefined ? {} : { backup }),
|
|
139
163
|
};
|
|
140
164
|
}
|
|
141
165
|
return config;
|
|
@@ -143,26 +167,25 @@ class AppConfigLoader {
|
|
|
143
167
|
static normalize(raw) {
|
|
144
168
|
const language = raw.language ? this.normalizeLanguage(raw.language) : defaultConfig.language;
|
|
145
169
|
const target = raw.target;
|
|
146
|
-
const
|
|
170
|
+
const versionCheck = {
|
|
171
|
+
enabled: raw.versionCheck?.enabled ?? defaultConfig.versionCheck.enabled,
|
|
172
|
+
frequency: raw.versionCheck?.frequency || defaultConfig.versionCheck.frequency,
|
|
173
|
+
};
|
|
174
|
+
const introspectionOutputDir = raw.introspection?.outputDir
|
|
147
175
|
? raw.introspection.outputDir
|
|
148
176
|
: defaultConfig.introspection.outputDir;
|
|
149
|
-
const migrationsOutputDir = raw.migrations
|
|
150
|
-
const fileNamePatternRaw = raw.migrations
|
|
177
|
+
const migrationsOutputDir = raw.migrations?.outputDir ? raw.migrations.outputDir : undefined;
|
|
178
|
+
const fileNamePatternRaw = raw.migrations?.fileNamePattern
|
|
151
179
|
? raw.migrations.fileNamePattern
|
|
152
180
|
: defaultConfig.migrations.fileNamePattern;
|
|
153
181
|
const fileNamePattern = fileNamePatternRaw === 'prefix-timestamp' ? 'prefix-timestamp' : 'timestamp-prefix';
|
|
154
|
-
const data = raw.migrations
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
const dataTables = raw.migrations && raw.migrations.dataTables
|
|
158
|
-
? raw.migrations.dataTables
|
|
159
|
-
: defaultConfig.migrations.dataTables;
|
|
160
|
-
const backup = raw.migrations && raw.migrations.backup !== undefined
|
|
161
|
-
? raw.migrations.backup
|
|
162
|
-
: defaultConfig.migrations.backup;
|
|
182
|
+
const data = raw.migrations?.data ?? defaultConfig.migrations.data;
|
|
183
|
+
const dataTables = raw.migrations?.dataTables ?? defaultConfig.migrations.dataTables;
|
|
184
|
+
const backup = raw.migrations?.backup ?? defaultConfig.migrations.backup;
|
|
163
185
|
return {
|
|
164
186
|
language,
|
|
165
187
|
...(target ? { target } : {}),
|
|
188
|
+
versionCheck,
|
|
166
189
|
introspection: {
|
|
167
190
|
outputDir: introspectionOutputDir,
|
|
168
191
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppConfig.js","sourceRoot":"","sources":["../../src/config/AppConfig.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"AppConfig.js","sourceRoot":"","sources":["../../src/config/AppConfig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigInitializer.d.ts","sourceRoot":"","sources":["../../src/config/ConfigInitializer.ts"],"names":[],"mappings":"AAKA,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"ConfigInitializer.d.ts","sourceRoot":"","sources":["../../src/config/ConfigInitializer.ts"],"names":[],"mappings":"AAKA,UAAU,UAAU;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AA6BD,qBAAa,iBAAiB;IAC5B,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,UAAU;CAqBpD"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ConfigInitializer = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const node_fs_1 = require("node:fs");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
6
|
const defaultConfig = {
|
|
7
7
|
language: 'pt-BR',
|
|
8
8
|
connection: {
|
|
@@ -13,12 +13,13 @@ const defaultConfig = {
|
|
|
13
13
|
password: 'password',
|
|
14
14
|
database: 'database_name',
|
|
15
15
|
ssl: false,
|
|
16
|
+
connectTimeoutMs: 15000,
|
|
16
17
|
},
|
|
17
18
|
};
|
|
18
19
|
class ConfigInitializer {
|
|
19
20
|
static init(cwd, force = false) {
|
|
20
|
-
const filePath = (0,
|
|
21
|
-
const exists = (0,
|
|
21
|
+
const filePath = (0, node_path_1.join)(cwd, 'dbutility.config.json');
|
|
22
|
+
const exists = (0, node_fs_1.existsSync)(filePath);
|
|
22
23
|
if (exists && !force) {
|
|
23
24
|
return {
|
|
24
25
|
created: false,
|
|
@@ -27,7 +28,7 @@ class ConfigInitializer {
|
|
|
27
28
|
};
|
|
28
29
|
}
|
|
29
30
|
const content = JSON.stringify(defaultConfig, null, 2);
|
|
30
|
-
(0,
|
|
31
|
+
(0, node_fs_1.writeFileSync)(filePath, `${content}\n`, 'utf-8');
|
|
31
32
|
return {
|
|
32
33
|
created: true,
|
|
33
34
|
path: filePath,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigInitializer.js","sourceRoot":"","sources":["../../src/config/ConfigInitializer.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"ConfigInitializer.js","sourceRoot":"","sources":["../../src/config/ConfigInitializer.ts"],"names":[],"mappings":";;;AAAA,qCAAoD;AACpD,yCAAiC;AAuBjC,MAAM,aAAa,GAAsB;IACvC,QAAQ,EAAE,OAAO;IACjB,UAAU,EAAE;QACV,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,IAAI;QACV,QAAQ,EAAE,MAAM;QAChB,QAAQ,EAAE,UAAU;QACpB,QAAQ,EAAE,eAAe;QACzB,GAAG,EAAE,KAAK;QACV,gBAAgB,EAAE,KAAK;KACxB;CACF,CAAC;AAEF,MAAa,iBAAiB;IAC5B,MAAM,CAAC,IAAI,CAAC,GAAW,EAAE,KAAK,GAAG,KAAK;QACpC,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;QACpD,MAAM,MAAM,GAAG,IAAA,oBAAU,EAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YACrB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,KAAK;aACjB,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACvD,IAAA,uBAAa,EAAC,QAAQ,EAAE,GAAG,OAAO,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjD,OAAO;YACL,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,MAAM;SAClB,CAAC;IACJ,CAAC;CACF;AAtBD,8CAsBC"}
|
|
@@ -1,7 +1,18 @@
|
|
|
1
1
|
import { DatabaseConfig } from '../types/database';
|
|
2
2
|
export declare class ConfigLoader {
|
|
3
|
+
private static readonly MAX_CONNECT_TIMEOUT_MS;
|
|
3
4
|
static load(configPath?: string, overrides?: Partial<DatabaseConfig>, connectionName?: string): Promise<DatabaseConfig>;
|
|
5
|
+
private static loadFromFileConfig;
|
|
6
|
+
private static resolveConfigPath;
|
|
7
|
+
private static isRecord;
|
|
8
|
+
private static parseOptionalInt;
|
|
9
|
+
private static toDatabaseConfigPartial;
|
|
10
|
+
private static selectDatabaseConfigFromFile;
|
|
11
|
+
private static selectNamedConnection;
|
|
12
|
+
private static selectDefaultConnection;
|
|
4
13
|
private static loadFromFileRaw;
|
|
5
14
|
private static loadFromEnvRaw;
|
|
15
|
+
private static safeValueForError;
|
|
16
|
+
private static parseConnectTimeoutMs;
|
|
6
17
|
}
|
|
7
18
|
//# sourceMappingURL=ConfigLoader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConfigLoader.d.ts","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAgB,MAAM,mBAAmB,CAAC;AAOjE,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,sBAAsB,CAAkB;WAEnD,IAAI,CACf,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EACnC,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,cAAc,CAAC;mBAkCL,kBAAkB;IAWvC,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAYhC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAIvB,OAAO,CAAC,MAAM,CAAC,gBAAgB;IAS/B,OAAO,CAAC,MAAM,CAAC,uBAAuB;IAetC,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAU3C,OAAO,CAAC,MAAM,CAAC,qBAAqB;IAepC,OAAO,CAAC,MAAM,CAAC,uBAAuB;mBAWjB,eAAe;IAkBpC,OAAO,CAAC,MAAM,CAAC,cAAc;IAkC7B,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAWhC,OAAO,CAAC,MAAM,CAAC,qBAAqB;CAoBrC"}
|
|
@@ -5,46 +5,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ConfigLoader = void 0;
|
|
7
7
|
const dotenv_1 = __importDefault(require("dotenv"));
|
|
8
|
-
const
|
|
9
|
-
const
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const node_module_1 = require("node:module");
|
|
10
11
|
const DbUtilityError_1 = require("../errors/DbUtilityError");
|
|
11
12
|
dotenv_1.default.config();
|
|
13
|
+
const localRequire = (0, node_module_1.createRequire)(__filename);
|
|
12
14
|
class ConfigLoader {
|
|
15
|
+
static MAX_CONNECT_TIMEOUT_MS = 10 * 60 * 1000;
|
|
13
16
|
static async load(configPath, overrides, connectionName) {
|
|
14
17
|
const envConfig = this.loadFromEnvRaw();
|
|
15
|
-
|
|
16
|
-
const defaultFiles = ['dbutility.config.json', 'db-utility.config.json', '.db-utilityrc'];
|
|
17
|
-
let path = configPath;
|
|
18
|
-
if (!path) {
|
|
19
|
-
for (const file of defaultFiles) {
|
|
20
|
-
const p = (0, path_1.resolve)(process.cwd(), file);
|
|
21
|
-
if ((0, fs_1.existsSync)(p)) {
|
|
22
|
-
path = p;
|
|
23
|
-
break;
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
if (path) {
|
|
28
|
-
const rawFile = await this.loadFromFileRaw(path);
|
|
29
|
-
if (rawFile && typeof rawFile === 'object') {
|
|
30
|
-
if (connectionName) {
|
|
31
|
-
if (rawFile.connections &&
|
|
32
|
-
typeof rawFile.connections === 'object' &&
|
|
33
|
-
rawFile.connections[connectionName]) {
|
|
34
|
-
fileConfig = rawFile.connections[connectionName];
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
throw new DbUtilityError_1.DbUtilityError('CONNECTION_CONFIG_NOT_FOUND', connectionName);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
else if ('connection' in rawFile && typeof rawFile.connection === 'object') {
|
|
41
|
-
fileConfig = rawFile.connection;
|
|
42
|
-
}
|
|
43
|
-
else if ('type' in rawFile || 'connectionString' in rawFile) {
|
|
44
|
-
fileConfig = rawFile;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
18
|
+
const fileConfig = await this.loadFromFileConfig(configPath, connectionName);
|
|
48
19
|
const merge = (key) => {
|
|
49
20
|
const val = overrides?.[key] ?? fileConfig[key] ?? envConfig[key];
|
|
50
21
|
return val;
|
|
@@ -57,25 +28,100 @@ class ConfigLoader {
|
|
|
57
28
|
password: merge('password'),
|
|
58
29
|
database: merge('database'),
|
|
59
30
|
ssl: merge('ssl'),
|
|
31
|
+
connectTimeoutMs: merge('connectTimeoutMs'),
|
|
60
32
|
connectionString: merge('connectionString'),
|
|
61
33
|
};
|
|
62
34
|
if (!finalConfig.type && !finalConfig.connectionString) {
|
|
63
35
|
throw new DbUtilityError_1.DbUtilityError('CONFIG_DB_TYPE_OR_CONNECTION_STRING_REQUIRED');
|
|
64
36
|
}
|
|
37
|
+
if (finalConfig.connectTimeoutMs !== undefined) {
|
|
38
|
+
finalConfig.connectTimeoutMs = this.parseConnectTimeoutMs(finalConfig.connectTimeoutMs);
|
|
39
|
+
}
|
|
65
40
|
return finalConfig;
|
|
66
41
|
}
|
|
42
|
+
static async loadFromFileConfig(configPath, connectionName) {
|
|
43
|
+
const resolvedPath = this.resolveConfigPath(configPath);
|
|
44
|
+
if (!resolvedPath)
|
|
45
|
+
return {};
|
|
46
|
+
const rawFile = await this.loadFromFileRaw(resolvedPath);
|
|
47
|
+
return this.selectDatabaseConfigFromFile(rawFile, connectionName);
|
|
48
|
+
}
|
|
49
|
+
static resolveConfigPath(configPath) {
|
|
50
|
+
if (configPath)
|
|
51
|
+
return configPath;
|
|
52
|
+
const defaultFiles = ['dbutility.config.json', 'db-utility.config.json', '.db-utilityrc'];
|
|
53
|
+
for (const file of defaultFiles) {
|
|
54
|
+
const candidate = (0, node_path_1.resolve)(process.cwd(), file);
|
|
55
|
+
if ((0, node_fs_1.existsSync)(candidate))
|
|
56
|
+
return candidate;
|
|
57
|
+
}
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
static isRecord(value) {
|
|
61
|
+
return typeof value === 'object' && value !== null;
|
|
62
|
+
}
|
|
63
|
+
static parseOptionalInt(value) {
|
|
64
|
+
if (typeof value === 'number' && Number.isFinite(value))
|
|
65
|
+
return value;
|
|
66
|
+
if (typeof value === 'string') {
|
|
67
|
+
const parsed = Number.parseInt(value, 10);
|
|
68
|
+
if (Number.isFinite(parsed))
|
|
69
|
+
return parsed;
|
|
70
|
+
}
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
static toDatabaseConfigPartial(source) {
|
|
74
|
+
return {
|
|
75
|
+
type: typeof source.type === 'string' ? source.type : undefined,
|
|
76
|
+
host: typeof source.host === 'string' ? source.host : undefined,
|
|
77
|
+
port: this.parseOptionalInt(source.port),
|
|
78
|
+
username: typeof source.username === 'string' ? source.username : undefined,
|
|
79
|
+
password: typeof source.password === 'string' ? source.password : undefined,
|
|
80
|
+
database: typeof source.database === 'string' ? source.database : undefined,
|
|
81
|
+
ssl: typeof source.ssl === 'boolean' ? source.ssl : undefined,
|
|
82
|
+
connectionString: typeof source.connectionString === 'string' ? source.connectionString : undefined,
|
|
83
|
+
connectTimeoutMs: this.parseOptionalInt(source.connectTimeoutMs),
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
static selectDatabaseConfigFromFile(rawFile, connectionName) {
|
|
87
|
+
if (!this.isRecord(rawFile))
|
|
88
|
+
return {};
|
|
89
|
+
if (connectionName)
|
|
90
|
+
return this.selectNamedConnection(rawFile, connectionName);
|
|
91
|
+
return this.selectDefaultConnection(rawFile);
|
|
92
|
+
}
|
|
93
|
+
static selectNamedConnection(rawFile, connectionName) {
|
|
94
|
+
const connections = rawFile.connections;
|
|
95
|
+
if (!this.isRecord(connections)) {
|
|
96
|
+
throw new DbUtilityError_1.DbUtilityError('CONNECTION_CONFIG_NOT_FOUND', connectionName);
|
|
97
|
+
}
|
|
98
|
+
const selected = connections[connectionName];
|
|
99
|
+
if (!this.isRecord(selected)) {
|
|
100
|
+
throw new DbUtilityError_1.DbUtilityError('CONNECTION_CONFIG_NOT_FOUND', connectionName);
|
|
101
|
+
}
|
|
102
|
+
return this.toDatabaseConfigPartial(selected);
|
|
103
|
+
}
|
|
104
|
+
static selectDefaultConnection(rawFile) {
|
|
105
|
+
const connection = rawFile.connection;
|
|
106
|
+
if (this.isRecord(connection))
|
|
107
|
+
return this.toDatabaseConfigPartial(connection);
|
|
108
|
+
if (rawFile.type !== undefined || rawFile.connectionString !== undefined) {
|
|
109
|
+
return this.toDatabaseConfigPartial(rawFile);
|
|
110
|
+
}
|
|
111
|
+
return {};
|
|
112
|
+
}
|
|
67
113
|
static async loadFromFileRaw(path) {
|
|
68
|
-
const absolutePath = (0,
|
|
69
|
-
if (!(0,
|
|
114
|
+
const absolutePath = (0, node_path_1.resolve)(process.cwd(), path);
|
|
115
|
+
if (!(0, node_fs_1.existsSync)(absolutePath)) {
|
|
70
116
|
throw new DbUtilityError_1.DbUtilityError('CONFIG_FILE_NOT_FOUND', absolutePath);
|
|
71
117
|
}
|
|
72
|
-
const ext = (0,
|
|
118
|
+
const ext = (0, node_path_1.extname)(absolutePath);
|
|
73
119
|
if (ext === '.json' || ext === '') {
|
|
74
|
-
const content = (0,
|
|
120
|
+
const content = (0, node_fs_1.readFileSync)(absolutePath, 'utf-8');
|
|
75
121
|
return JSON.parse(content);
|
|
76
122
|
}
|
|
77
123
|
else if (ext === '.js') {
|
|
78
|
-
const config =
|
|
124
|
+
const config = localRequire(absolutePath);
|
|
79
125
|
return config.default || config;
|
|
80
126
|
}
|
|
81
127
|
throw new DbUtilityError_1.DbUtilityError('CONFIG_FILE_FORMAT_UNSUPPORTED', ext);
|
|
@@ -94,16 +140,49 @@ class ConfigLoader {
|
|
|
94
140
|
process.env.DB_NAME ||
|
|
95
141
|
process.env.DB_DATABASE;
|
|
96
142
|
const connectionString = process.env.DBUTILITY_DB_CONNECTION_STRING || process.env.DB_CONNECTION_STRING;
|
|
143
|
+
const connectTimeoutMsStr = process.env.DBUTILITY_DB_CONNECT_TIMEOUT_MS || process.env.DB_CONNECT_TIMEOUT_MS;
|
|
97
144
|
return {
|
|
98
145
|
type: dbType,
|
|
99
146
|
host,
|
|
100
|
-
port: portStr ? parseInt(portStr, 10) : undefined,
|
|
147
|
+
port: portStr ? Number.parseInt(portStr, 10) : undefined,
|
|
101
148
|
username,
|
|
102
149
|
password,
|
|
103
150
|
database,
|
|
151
|
+
connectTimeoutMs: connectTimeoutMsStr ? Number.parseInt(connectTimeoutMsStr, 10) : undefined,
|
|
104
152
|
connectionString,
|
|
105
153
|
};
|
|
106
154
|
}
|
|
155
|
+
static safeValueForError(value) {
|
|
156
|
+
if (typeof value === 'string')
|
|
157
|
+
return value;
|
|
158
|
+
if (typeof value === 'number' || typeof value === 'boolean' || value === null)
|
|
159
|
+
return String(value);
|
|
160
|
+
try {
|
|
161
|
+
return JSON.stringify(value);
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
return Object.prototype.toString.call(value);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
static parseConnectTimeoutMs(value) {
|
|
168
|
+
let parsed;
|
|
169
|
+
if (typeof value === 'number') {
|
|
170
|
+
parsed = value;
|
|
171
|
+
}
|
|
172
|
+
else if (typeof value === 'string') {
|
|
173
|
+
parsed = Number.parseInt(value, 10);
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
parsed = Number.NaN;
|
|
177
|
+
}
|
|
178
|
+
if (!Number.isFinite(parsed) || !Number.isInteger(parsed)) {
|
|
179
|
+
throw new DbUtilityError_1.DbUtilityError('CONFIG_DB_CONNECT_TIMEOUT_INVALID', this.safeValueForError(value));
|
|
180
|
+
}
|
|
181
|
+
if (parsed < 1 || parsed > this.MAX_CONNECT_TIMEOUT_MS) {
|
|
182
|
+
throw new DbUtilityError_1.DbUtilityError('CONFIG_DB_CONNECT_TIMEOUT_INVALID', this.safeValueForError(value));
|
|
183
|
+
}
|
|
184
|
+
return parsed;
|
|
185
|
+
}
|
|
107
186
|
}
|
|
108
187
|
exports.ConfigLoader = ConfigLoader;
|
|
109
188
|
//# sourceMappingURL=ConfigLoader.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConfigLoader.js","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":";;;;;;AAAA,oDAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"ConfigLoader.js","sourceRoot":"","sources":["../../src/config/ConfigLoader.ts"],"names":[],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ function assertSafeSql(sql) {
|
|
|
29
29
|
'call',
|
|
30
30
|
];
|
|
31
31
|
for (const keyword of forbiddenKeywords) {
|
|
32
|
-
const pattern = new RegExp(
|
|
32
|
+
const pattern = new RegExp(String.raw `\b${keyword}\b`, 'i');
|
|
33
33
|
if (pattern.test(sql)) {
|
|
34
34
|
throw new DbUtilitySecurityError('UNSAFE_OPERATION');
|
|
35
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SqlSafety.js","sourceRoot":"","sources":["../../src/database/SqlSafety.ts"],"names":[],"mappings":";;;AAYA,sCAqCC;AA/CD,MAAa,sBAAuB,SAAQ,KAAK;IAC/C,IAAI,CAA6B;IAEjC,YAAY,IAAgC;QAC1C,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AARD,wDAQC;AAED,SAAgB,aAAa,CAAC,GAAW;IACvC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,iBAAiB,GAAG;QACxB,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,MAAM;QACN,UAAU;QACV,OAAO;QACP,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,SAAS;QACT,MAAM;QACN,MAAM;KACP,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"SqlSafety.js","sourceRoot":"","sources":["../../src/database/SqlSafety.ts"],"names":[],"mappings":";;;AAYA,sCAqCC;AA/CD,MAAa,sBAAuB,SAAQ,KAAK;IAC/C,IAAI,CAA6B;IAEjC,YAAY,IAAgC;QAC1C,KAAK,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AARD,wDAQC;AAED,SAAgB,aAAa,CAAC,GAAW;IACvC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAErC,MAAM,iBAAiB,GAAG;QACxB,QAAQ;QACR,QAAQ;QACR,QAAQ;QACR,OAAO;QACP,MAAM;QACN,UAAU;QACV,OAAO;QACP,QAAQ;QACR,OAAO;QACP,QAAQ;QACR,SAAS;QACT,MAAM;QACN,MAAM;KACP,CAAC;IAEF,KAAK,MAAM,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAAG,CAAA,KAAK,OAAO,IAAI,EAAE,GAAG,CAAC,CAAC;QAC5D,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,sBAAsB,CAAC,kBAAkB,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,gBAAgB,GACpB,UAAU,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAC1C,UAAU,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACxC,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC;YACjC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEpC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,MAAM,IAAI,sBAAsB,CAAC,oBAAoB,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { DatabaseConfig, IDatabaseConnector, QueryOptions } from '../../types/database';
|
|
2
2
|
export declare class MssqlConnector implements IDatabaseConnector {
|
|
3
3
|
private pool;
|
|
4
|
-
private config;
|
|
4
|
+
private readonly config;
|
|
5
5
|
constructor(config: DatabaseConfig);
|
|
6
6
|
connect(): Promise<void>;
|
|
7
|
-
private connectWithUri;
|
|
8
7
|
disconnect(): Promise<void>;
|
|
9
8
|
query<T>(sql: string, params?: unknown[], options?: QueryOptions): Promise<T[]>;
|
|
10
9
|
isConnected(): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MssqlConnector.d.ts","sourceRoot":"","sources":["../../../src/database/connectors/MssqlConnector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MssqlConnector.d.ts","sourceRoot":"","sources":["../../../src/database/connectors/MssqlConnector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxF,qBAAa,cAAe,YAAW,kBAAkB;IACvD,OAAO,CAAC,IAAI,CAA+B;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,EAAE,cAAc;IAI5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAgCxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAqB/E,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAK/B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAMpC"}
|
|
@@ -17,21 +17,29 @@ class MssqlConnector {
|
|
|
17
17
|
user: this.config.username,
|
|
18
18
|
password: this.config.password,
|
|
19
19
|
database: this.config.database,
|
|
20
|
+
...(this.config.connectTimeoutMs === undefined
|
|
21
|
+
? {}
|
|
22
|
+
: { connectionTimeout: this.config.connectTimeoutMs }),
|
|
20
23
|
options: {
|
|
21
24
|
encrypt: this.config.ssl !== false,
|
|
22
25
|
trustServerCertificate: !this.config.ssl,
|
|
23
26
|
},
|
|
24
27
|
};
|
|
25
28
|
if (this.config.connectionString) {
|
|
26
|
-
|
|
29
|
+
if (this.config.connectTimeoutMs === undefined) {
|
|
30
|
+
this.pool = new mssql_1.ConnectionPool(this.config.connectionString);
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const poolConfig = {
|
|
34
|
+
...mssqlConfig,
|
|
35
|
+
connectionString: this.config.connectionString,
|
|
36
|
+
};
|
|
37
|
+
this.pool = new mssql_1.ConnectionPool(poolConfig);
|
|
38
|
+
}
|
|
27
39
|
}
|
|
28
40
|
else {
|
|
29
41
|
this.pool = new mssql_1.ConnectionPool(mssqlConfig);
|
|
30
|
-
await this.pool.connect();
|
|
31
42
|
}
|
|
32
|
-
}
|
|
33
|
-
async connectWithUri(uri) {
|
|
34
|
-
this.pool = new mssql_1.ConnectionPool(uri);
|
|
35
43
|
await this.pool.connect();
|
|
36
44
|
}
|
|
37
45
|
async disconnect() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MssqlConnector.js","sourceRoot":"","sources":["../../../src/database/connectors/MssqlConnector.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"MssqlConnector.js","sourceRoot":"","sources":["../../../src/database/connectors/MssqlConnector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { DatabaseConfig, IDatabaseConnector, QueryOptions } from '../../types/database';
|
|
2
2
|
export declare class MysqlConnector implements IDatabaseConnector {
|
|
3
3
|
private pool;
|
|
4
|
-
private config;
|
|
4
|
+
private readonly config;
|
|
5
5
|
constructor(config: DatabaseConfig);
|
|
6
6
|
connect(): Promise<void>;
|
|
7
7
|
disconnect(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MysqlConnector.d.ts","sourceRoot":"","sources":["../../../src/database/connectors/MysqlConnector.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"MysqlConnector.d.ts","sourceRoot":"","sources":["../../../src/database/connectors/MysqlConnector.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxF,qBAAa,cAAe,YAAW,kBAAkB;IACvD,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;gBAE5B,MAAM,EAAE,cAAc;IAI5B,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAqCxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAa/E,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAW/B,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;CAMpC"}
|