@ductape/sdk 0.0.4-v42 → 0.0.4-v43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (76) hide show
  1. package/dist/apps/services/app.service.d.ts +10 -0
  2. package/dist/apps/services/app.service.js +22 -0
  3. package/dist/apps/services/app.service.js.map +1 -1
  4. package/dist/database/adapters/base.adapter.d.ts +176 -0
  5. package/dist/database/adapters/base.adapter.js +31 -0
  6. package/dist/database/adapters/base.adapter.js.map +1 -0
  7. package/dist/database/adapters/dynamodb.adapter.d.ts +83 -0
  8. package/dist/database/adapters/dynamodb.adapter.js +1237 -0
  9. package/dist/database/adapters/dynamodb.adapter.js.map +1 -0
  10. package/dist/database/adapters/mongodb.adapter.d.ts +70 -0
  11. package/dist/database/adapters/mongodb.adapter.js +717 -0
  12. package/dist/database/adapters/mongodb.adapter.js.map +1 -0
  13. package/dist/database/adapters/mysql.adapter.d.ts +141 -0
  14. package/dist/database/adapters/mysql.adapter.js +1221 -0
  15. package/dist/database/adapters/mysql.adapter.js.map +1 -0
  16. package/dist/database/adapters/postgresql.adapter.d.ts +142 -0
  17. package/dist/database/adapters/postgresql.adapter.js +1288 -0
  18. package/dist/database/adapters/postgresql.adapter.js.map +1 -0
  19. package/dist/database/database.service.d.ts +190 -0
  20. package/dist/database/database.service.js +552 -0
  21. package/dist/database/database.service.js.map +1 -0
  22. package/dist/database/index.d.ts +18 -0
  23. package/dist/database/index.js +98 -0
  24. package/dist/database/index.js.map +1 -0
  25. package/dist/database/types/aggregation.types.d.ts +202 -0
  26. package/dist/database/types/aggregation.types.js +21 -0
  27. package/dist/database/types/aggregation.types.js.map +1 -0
  28. package/dist/database/types/connection.types.d.ts +132 -0
  29. package/dist/database/types/connection.types.js +6 -0
  30. package/dist/database/types/connection.types.js.map +1 -0
  31. package/dist/database/types/database.types.d.ts +173 -0
  32. package/dist/database/types/database.types.js +73 -0
  33. package/dist/database/types/database.types.js.map +1 -0
  34. package/dist/database/types/index.d.ts +12 -0
  35. package/dist/database/types/index.js +37 -0
  36. package/dist/database/types/index.js.map +1 -0
  37. package/dist/database/types/index.types.d.ts +220 -0
  38. package/dist/database/types/index.types.js +27 -0
  39. package/dist/database/types/index.types.js.map +1 -0
  40. package/dist/database/types/migration.types.d.ts +205 -0
  41. package/dist/database/types/migration.types.js +44 -0
  42. package/dist/database/types/migration.types.js.map +1 -0
  43. package/dist/database/types/query.types.d.ts +274 -0
  44. package/dist/database/types/query.types.js +57 -0
  45. package/dist/database/types/query.types.js.map +1 -0
  46. package/dist/database/types/result.types.d.ts +218 -0
  47. package/dist/database/types/result.types.js +6 -0
  48. package/dist/database/types/result.types.js.map +1 -0
  49. package/dist/database/types/schema.types.d.ts +190 -0
  50. package/dist/database/types/schema.types.js +69 -0
  51. package/dist/database/types/schema.types.js.map +1 -0
  52. package/dist/database/utils/helpers.d.ts +66 -0
  53. package/dist/database/utils/helpers.js +501 -0
  54. package/dist/database/utils/helpers.js.map +1 -0
  55. package/dist/database/utils/migration.utils.d.ts +151 -0
  56. package/dist/database/utils/migration.utils.js +476 -0
  57. package/dist/database/utils/migration.utils.js.map +1 -0
  58. package/dist/database/utils/transaction.d.ts +64 -0
  59. package/dist/database/utils/transaction.js +130 -0
  60. package/dist/database/utils/transaction.js.map +1 -0
  61. package/dist/database/validators/connection.validator.d.ts +20 -0
  62. package/dist/database/validators/connection.validator.js +267 -0
  63. package/dist/database/validators/connection.validator.js.map +1 -0
  64. package/dist/database/validators/query.validator.d.ts +31 -0
  65. package/dist/database/validators/query.validator.js +305 -0
  66. package/dist/database/validators/query.validator.js.map +1 -0
  67. package/dist/database/validators/schema.validator.d.ts +31 -0
  68. package/dist/database/validators/schema.validator.js +334 -0
  69. package/dist/database/validators/schema.validator.js.map +1 -0
  70. package/dist/index.d.ts +25 -4
  71. package/dist/index.js +36 -4
  72. package/dist/index.js.map +1 -1
  73. package/dist/processor/services/processor.service.js +10 -8
  74. package/dist/processor/services/processor.service.js.map +1 -1
  75. package/dist/types/processor.types.d.ts +2 -2
  76. package/package.json +3 -1
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ /**
3
+ * Transaction implementation
4
+ * Provides a stable interface for database transactions
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.TransactionFactory = exports.Transaction = exports.Savepoint = void 0;
8
+ const database_types_1 = require("../types/database.types");
9
+ /**
10
+ * Savepoint implementation
11
+ */
12
+ class Savepoint {
13
+ constructor(name, transaction, adapter) {
14
+ this.name = name;
15
+ this.transaction = transaction;
16
+ this.createdAt = new Date();
17
+ this.adapter = adapter;
18
+ }
19
+ async rollback() {
20
+ if (!this.transaction.isActive()) {
21
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, 'Cannot rollback savepoint: transaction is not active');
22
+ }
23
+ await this.adapter.rollbackToSavepoint(this.transaction.connection, this.transaction.native, this.name);
24
+ }
25
+ async release() {
26
+ if (!this.transaction.isActive()) {
27
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, 'Cannot release savepoint: transaction is not active');
28
+ }
29
+ await this.adapter.releaseSavepoint(this.transaction.connection, this.transaction.native, this.name);
30
+ }
31
+ }
32
+ exports.Savepoint = Savepoint;
33
+ /**
34
+ * Transaction implementation
35
+ */
36
+ class Transaction {
37
+ constructor(id, connection, native, adapter, options) {
38
+ this.savepoints = new Map();
39
+ this.savepointCounter = 0;
40
+ this.id = id;
41
+ this.connection = connection;
42
+ this.native = native;
43
+ this.adapter = adapter;
44
+ this.status = database_types_1.TransactionStatus.ACTIVE;
45
+ this.isolationLevel = options === null || options === void 0 ? void 0 : options.isolationLevel;
46
+ this.parent = options === null || options === void 0 ? void 0 : options.parent;
47
+ this.createdAt = new Date();
48
+ }
49
+ async commit() {
50
+ if (!this.isActive()) {
51
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, `Cannot commit transaction: transaction is ${this.status}`);
52
+ }
53
+ try {
54
+ await this.adapter.commitTransaction(this.connection, this.native);
55
+ this.status = database_types_1.TransactionStatus.COMMITTED;
56
+ }
57
+ catch (error) {
58
+ this.status = database_types_1.TransactionStatus.FAILED;
59
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, `Failed to commit transaction: ${error.message}`, error);
60
+ }
61
+ }
62
+ async rollback() {
63
+ if (!this.isActive()) {
64
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, `Cannot rollback transaction: transaction is ${this.status}`);
65
+ }
66
+ try {
67
+ await this.adapter.rollbackTransaction(this.connection, this.native);
68
+ this.status = database_types_1.TransactionStatus.ROLLED_BACK;
69
+ }
70
+ catch (error) {
71
+ this.status = database_types_1.TransactionStatus.FAILED;
72
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, `Failed to rollback transaction: ${error.message}`, error);
73
+ }
74
+ }
75
+ async savepoint(name) {
76
+ if (!this.isActive()) {
77
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, 'Cannot create savepoint: transaction is not active');
78
+ }
79
+ // Generate savepoint name if not provided
80
+ const savepointName = name || `sp_${this.savepointCounter++}_${Date.now()}`;
81
+ // Check if savepoint already exists
82
+ if (this.savepoints.has(savepointName)) {
83
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, `Savepoint '${savepointName}' already exists`);
84
+ }
85
+ try {
86
+ await this.adapter.createSavepoint(this.connection, this.native, savepointName);
87
+ const savepoint = new Savepoint(savepointName, this, this.adapter);
88
+ this.savepoints.set(savepointName, savepoint);
89
+ return savepoint;
90
+ }
91
+ catch (error) {
92
+ throw new database_types_1.DatabaseError(database_types_1.DatabaseErrorType.QUERY_ERROR, `Failed to create savepoint: ${error.message}`, error);
93
+ }
94
+ }
95
+ isActive() {
96
+ return this.status === database_types_1.TransactionStatus.ACTIVE;
97
+ }
98
+ /**
99
+ * Get a savepoint by name
100
+ */
101
+ getSavepoint(name) {
102
+ return this.savepoints.get(name);
103
+ }
104
+ /**
105
+ * Get all savepoints
106
+ */
107
+ getSavepoints() {
108
+ return Array.from(this.savepoints.values());
109
+ }
110
+ /**
111
+ * Remove a savepoint from tracking (after rollback or release)
112
+ */
113
+ removeSavepoint(name) {
114
+ this.savepoints.delete(name);
115
+ }
116
+ }
117
+ exports.Transaction = Transaction;
118
+ /**
119
+ * Transaction factory
120
+ * Creates transaction instances
121
+ */
122
+ class TransactionFactory {
123
+ static create(connection, native, adapter, options) {
124
+ const id = `txn_${++this.idCounter}_${Date.now()}`;
125
+ return new Transaction(id, connection, native, adapter, options);
126
+ }
127
+ }
128
+ exports.TransactionFactory = TransactionFactory;
129
+ TransactionFactory.idCounter = 0;
130
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../../../src/database/utils/transaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Connection Configuration Validator
3
+ * Validates database connection configurations before attempting to connect
4
+ */
5
+ import { DatabaseConnectionConfig } from '../types/connection.types';
6
+ /**
7
+ * Validation result
8
+ */
9
+ export interface IValidationResult {
10
+ valid: boolean;
11
+ errors: string[];
12
+ }
13
+ /**
14
+ * Validate a database connection configuration
15
+ */
16
+ export declare function validateConnection(config: DatabaseConnectionConfig): IValidationResult;
17
+ /**
18
+ * Throw an error if validation fails
19
+ */
20
+ export declare function assertValidConnection(config: DatabaseConnectionConfig): void;
@@ -0,0 +1,267 @@
1
+ "use strict";
2
+ /**
3
+ * Connection Configuration Validator
4
+ * Validates database connection configurations before attempting to connect
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.validateConnection = validateConnection;
8
+ exports.assertValidConnection = assertValidConnection;
9
+ const database_types_1 = require("../types/database.types");
10
+ /**
11
+ * Validate a database connection configuration
12
+ */
13
+ function validateConnection(config) {
14
+ const errors = [];
15
+ // Check if config is provided
16
+ if (!config) {
17
+ return {
18
+ valid: false,
19
+ errors: ['Connection configuration is required'],
20
+ };
21
+ }
22
+ // Validate based on connection type
23
+ if ('product' in config) {
24
+ // Product-based connection
25
+ validateProductConnection(config, errors);
26
+ }
27
+ else {
28
+ // Direct connection
29
+ validateDirectConnection(config, errors);
30
+ }
31
+ return {
32
+ valid: errors.length === 0,
33
+ errors,
34
+ };
35
+ }
36
+ /**
37
+ * Validate product-based connection configuration
38
+ */
39
+ function validateProductConnection(config, errors) {
40
+ if (!config.env || typeof config.env !== 'string') {
41
+ errors.push('Environment slug (env) is required and must be a string');
42
+ }
43
+ if (!config.product || typeof config.product !== 'string') {
44
+ errors.push('Product tag is required and must be a string');
45
+ }
46
+ if (!config.database || typeof config.database !== 'string') {
47
+ errors.push('Database tag is required and must be a string');
48
+ }
49
+ }
50
+ /**
51
+ * Validate direct connection configuration
52
+ */
53
+ function validateDirectConnection(config, errors) {
54
+ if (!('type' in config)) {
55
+ errors.push('Database type is required');
56
+ return;
57
+ }
58
+ // Validate environment
59
+ if (!config.env || typeof config.env !== 'string') {
60
+ errors.push('Environment slug (env) is required and must be a string');
61
+ }
62
+ // Validate based on database type
63
+ switch (config.type) {
64
+ case database_types_1.DatabaseType.POSTGRESQL:
65
+ validatePostgreSQLConfig(config, errors);
66
+ break;
67
+ case database_types_1.DatabaseType.MYSQL:
68
+ validateMySQLConfig(config, errors);
69
+ break;
70
+ case database_types_1.DatabaseType.MONGODB:
71
+ validateMongoDBConfig(config, errors);
72
+ break;
73
+ case database_types_1.DatabaseType.DYNAMODB:
74
+ validateDynamoDBConfig(config, errors);
75
+ break;
76
+ case database_types_1.DatabaseType.SQLITE:
77
+ validateSQLiteConfig(config, errors);
78
+ break;
79
+ default:
80
+ errors.push(`Unsupported database type: ${config.type}`);
81
+ }
82
+ }
83
+ /**
84
+ * Validate PostgreSQL connection configuration
85
+ */
86
+ function validatePostgreSQLConfig(config, errors) {
87
+ // Required fields
88
+ if (!config.host || typeof config.host !== 'string') {
89
+ errors.push('PostgreSQL: host is required and must be a string');
90
+ }
91
+ if (!config.database || typeof config.database !== 'string') {
92
+ errors.push('PostgreSQL: database name is required and must be a string');
93
+ }
94
+ if (!config.user || typeof config.user !== 'string') {
95
+ errors.push('PostgreSQL: user is required and must be a string');
96
+ }
97
+ if (!config.password || typeof config.password !== 'string') {
98
+ errors.push('PostgreSQL: password is required and must be a string');
99
+ }
100
+ // Optional fields validation
101
+ if (config.port !== undefined) {
102
+ if (typeof config.port !== 'number' || config.port < 1 || config.port > 65535) {
103
+ errors.push('PostgreSQL: port must be a number between 1 and 65535');
104
+ }
105
+ }
106
+ if (config.poolSize !== undefined) {
107
+ if (typeof config.poolSize !== 'number' || config.poolSize < 1) {
108
+ errors.push('PostgreSQL: poolSize must be a positive number');
109
+ }
110
+ }
111
+ if (config.connectionTimeout !== undefined) {
112
+ if (typeof config.connectionTimeout !== 'number' || config.connectionTimeout < 0) {
113
+ errors.push('PostgreSQL: connectionTimeout must be a non-negative number');
114
+ }
115
+ }
116
+ }
117
+ /**
118
+ * Validate MySQL connection configuration
119
+ */
120
+ function validateMySQLConfig(config, errors) {
121
+ // Required fields
122
+ if (!config.host || typeof config.host !== 'string') {
123
+ errors.push('MySQL: host is required and must be a string');
124
+ }
125
+ if (!config.database || typeof config.database !== 'string') {
126
+ errors.push('MySQL: database name is required and must be a string');
127
+ }
128
+ if (!config.user || typeof config.user !== 'string') {
129
+ errors.push('MySQL: user is required and must be a string');
130
+ }
131
+ if (!config.password || typeof config.password !== 'string') {
132
+ errors.push('MySQL: password is required and must be a string');
133
+ }
134
+ // Optional fields validation
135
+ if (config.port !== undefined) {
136
+ if (typeof config.port !== 'number' || config.port < 1 || config.port > 65535) {
137
+ errors.push('MySQL: port must be a number between 1 and 65535');
138
+ }
139
+ }
140
+ if (config.poolSize !== undefined) {
141
+ if (typeof config.poolSize !== 'number' || config.poolSize < 1) {
142
+ errors.push('MySQL: poolSize must be a positive number');
143
+ }
144
+ }
145
+ if (config.connectionTimeout !== undefined) {
146
+ if (typeof config.connectionTimeout !== 'number' || config.connectionTimeout < 0) {
147
+ errors.push('MySQL: connectionTimeout must be a non-negative number');
148
+ }
149
+ }
150
+ if (config.charset !== undefined && typeof config.charset !== 'string') {
151
+ errors.push('MySQL: charset must be a string');
152
+ }
153
+ }
154
+ /**
155
+ * Validate MongoDB connection configuration
156
+ */
157
+ function validateMongoDBConfig(config, errors) {
158
+ // Required fields
159
+ if (!config.uri || typeof config.uri !== 'string') {
160
+ errors.push('MongoDB: uri is required and must be a string');
161
+ }
162
+ else {
163
+ // Validate URI format
164
+ if (!config.uri.startsWith('mongodb://') && !config.uri.startsWith('mongodb+srv://')) {
165
+ errors.push('MongoDB: uri must start with "mongodb://" or "mongodb+srv://"');
166
+ }
167
+ }
168
+ if (!config.database || typeof config.database !== 'string') {
169
+ errors.push('MongoDB: database name is required and must be a string');
170
+ }
171
+ // Optional fields validation
172
+ if (config.options) {
173
+ if (typeof config.options !== 'object') {
174
+ errors.push('MongoDB: options must be an object');
175
+ }
176
+ else {
177
+ if (config.options.poolSize !== undefined) {
178
+ if (typeof config.options.poolSize !== 'number' || config.options.poolSize < 1) {
179
+ errors.push('MongoDB: options.poolSize must be a positive number');
180
+ }
181
+ }
182
+ if (config.options.serverSelectionTimeoutMS !== undefined) {
183
+ if (typeof config.options.serverSelectionTimeoutMS !== 'number' || config.options.serverSelectionTimeoutMS < 0) {
184
+ errors.push('MongoDB: options.serverSelectionTimeoutMS must be a non-negative number');
185
+ }
186
+ }
187
+ }
188
+ }
189
+ }
190
+ /**
191
+ * Validate DynamoDB connection configuration
192
+ */
193
+ function validateDynamoDBConfig(config, errors) {
194
+ var _a;
195
+ // Required fields
196
+ if (!config.region || typeof config.region !== 'string') {
197
+ errors.push('DynamoDB: region is required and must be a string');
198
+ }
199
+ else {
200
+ // Validate region format (basic check)
201
+ if (!/^[a-z]{2}-[a-z]+-\d{1}$/.test(config.region)) {
202
+ errors.push('DynamoDB: region must be a valid AWS region (e.g., us-east-1)');
203
+ }
204
+ }
205
+ if (!config.accessKeyId || typeof config.accessKeyId !== 'string') {
206
+ errors.push('DynamoDB: accessKeyId is required and must be a string');
207
+ }
208
+ if (!config.secretAccessKey || typeof config.secretAccessKey !== 'string') {
209
+ errors.push('DynamoDB: secretAccessKey is required and must be a string');
210
+ }
211
+ // Optional fields validation
212
+ if (config.endpoint !== undefined && typeof config.endpoint !== 'string') {
213
+ errors.push('DynamoDB: endpoint must be a string');
214
+ }
215
+ if (config.options) {
216
+ if (typeof config.options !== 'object') {
217
+ errors.push('DynamoDB: options must be an object');
218
+ }
219
+ else {
220
+ if (config.options.maxRetries !== undefined) {
221
+ if (typeof config.options.maxRetries !== 'number' || config.options.maxRetries < 0) {
222
+ errors.push('DynamoDB: options.maxRetries must be a non-negative number');
223
+ }
224
+ }
225
+ if (((_a = config.options.httpOptions) === null || _a === void 0 ? void 0 : _a.timeout) !== undefined) {
226
+ if (typeof config.options.httpOptions.timeout !== 'number' || config.options.httpOptions.timeout < 0) {
227
+ errors.push('DynamoDB: options.httpOptions.timeout must be a non-negative number');
228
+ }
229
+ }
230
+ }
231
+ }
232
+ }
233
+ /**
234
+ * Validate SQLite connection configuration
235
+ */
236
+ function validateSQLiteConfig(config, errors) {
237
+ // Required fields
238
+ if (!config.filename || typeof config.filename !== 'string') {
239
+ errors.push('SQLite: filename is required and must be a string');
240
+ }
241
+ // Optional fields validation
242
+ if (config.mode !== undefined && typeof config.mode !== 'number') {
243
+ errors.push('SQLite: mode must be a number');
244
+ }
245
+ if (config.options) {
246
+ if (typeof config.options !== 'object') {
247
+ errors.push('SQLite: options must be an object');
248
+ }
249
+ else {
250
+ if (config.options.timeout !== undefined) {
251
+ if (typeof config.options.timeout !== 'number' || config.options.timeout < 0) {
252
+ errors.push('SQLite: options.timeout must be a non-negative number');
253
+ }
254
+ }
255
+ }
256
+ }
257
+ }
258
+ /**
259
+ * Throw an error if validation fails
260
+ */
261
+ function assertValidConnection(config) {
262
+ const result = validateConnection(config);
263
+ if (!result.valid) {
264
+ throw new Error(`Invalid connection configuration:\n${result.errors.join('\n')}`);
265
+ }
266
+ }
267
+ //# sourceMappingURL=connection.validator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection.validator.js","sourceRoot":"","sources":["../../../src/database/validators/connection.validator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Query Validator
3
+ * Validates query options and data
4
+ */
5
+ import { IQueryOptions } from '../types/query.types';
6
+ import { IValidationResult } from './connection.validator';
7
+ import { IColumnDefinition } from '../types/schema.types';
8
+ /**
9
+ * Validate query options
10
+ */
11
+ export declare function validateQueryOptions(options?: Partial<IQueryOptions>): IValidationResult;
12
+ /**
13
+ * Validate insert data against column definitions
14
+ */
15
+ export declare function validateInsertData(data: Record<string, any> | Record<string, any>[], columns: IColumnDefinition[]): IValidationResult;
16
+ /**
17
+ * Validate update data against column definitions
18
+ */
19
+ export declare function validateUpdateData(data: Record<string, any>, columns: IColumnDefinition[]): IValidationResult;
20
+ /**
21
+ * Throw an error if query options validation fails
22
+ */
23
+ export declare function assertValidQueryOptions(options?: Partial<IQueryOptions>): void;
24
+ /**
25
+ * Throw an error if insert data validation fails
26
+ */
27
+ export declare function assertValidInsertData(data: Record<string, any> | Record<string, any>[], columns: IColumnDefinition[]): void;
28
+ /**
29
+ * Throw an error if update data validation fails
30
+ */
31
+ export declare function assertValidUpdateData(data: Record<string, any>, columns: IColumnDefinition[]): void;