@ductape/sdk 0.4.4 → 0.4.6

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 (48) hide show
  1. package/dist/context/execution-context.d.ts +6 -0
  2. package/dist/context/execution-context.js +1 -1
  3. package/dist/context/execution-context.js.map +1 -1
  4. package/dist/database/adapters/dynamodb.adapter.d.ts +2 -0
  5. package/dist/database/adapters/dynamodb.adapter.js +18 -1
  6. package/dist/database/adapters/dynamodb.adapter.js.map +1 -1
  7. package/dist/database/adapters/mongodb.adapter.d.ts +4 -0
  8. package/dist/database/adapters/mongodb.adapter.js +58 -14
  9. package/dist/database/adapters/mongodb.adapter.js.map +1 -1
  10. package/dist/database/adapters/mysql.adapter.d.ts +2 -0
  11. package/dist/database/adapters/mysql.adapter.js +90 -15
  12. package/dist/database/adapters/mysql.adapter.js.map +1 -1
  13. package/dist/database/adapters/postgresql.adapter.d.ts +2 -0
  14. package/dist/database/adapters/postgresql.adapter.js +24 -4
  15. package/dist/database/adapters/postgresql.adapter.js.map +1 -1
  16. package/dist/database/atomic-batch.d.ts +58 -0
  17. package/dist/database/atomic-batch.js +183 -0
  18. package/dist/database/atomic-batch.js.map +1 -0
  19. package/dist/database/atomic-pipeline.d.ts +27 -0
  20. package/dist/database/atomic-pipeline.js +118 -0
  21. package/dist/database/atomic-pipeline.js.map +1 -0
  22. package/dist/database/databases.service.d.ts +9 -0
  23. package/dist/database/databases.service.js +234 -3
  24. package/dist/database/databases.service.js.map +1 -1
  25. package/dist/database/dynamodb-atomic-batch.d.ts +8 -0
  26. package/dist/database/dynamodb-atomic-batch.js +153 -0
  27. package/dist/database/dynamodb-atomic-batch.js.map +1 -0
  28. package/dist/database/index.d.ts +2 -0
  29. package/dist/database/index.js +4 -2
  30. package/dist/database/index.js.map +1 -1
  31. package/dist/database/sql-context.d.ts +17 -0
  32. package/dist/database/sql-context.js +51 -0
  33. package/dist/database/sql-context.js.map +1 -0
  34. package/dist/database/transactions/transaction-manager.d.ts +5 -1
  35. package/dist/database/transactions/transaction-manager.js +13 -2
  36. package/dist/database/transactions/transaction-manager.js.map +1 -1
  37. package/dist/database/types/index.d.ts +1 -0
  38. package/dist/database/types/pipeline.interface.d.ts +19 -0
  39. package/dist/database/types/pipeline.interface.js +22 -0
  40. package/dist/database/types/pipeline.interface.js.map +1 -0
  41. package/dist/index.d.ts +9 -1
  42. package/dist/index.js +17 -2
  43. package/dist/index.js.map +1 -1
  44. package/dist/logs/logs.service.js +10 -0
  45. package/dist/logs/logs.service.js.map +1 -1
  46. package/dist/processor/services/processor.service.d.ts +2 -2
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,153 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.executeDynamoAtomicBatch = executeDynamoAtomicBatch;
4
+ const crypto_1 = require("crypto");
5
+ const atomic_batch_1 = require("./atomic-batch");
6
+ const invalid = () => { throw new atomic_batch_1.AtomicBatchError('BATCH_VALIDATION', 'not_started'); };
7
+ /** DynamoDB transactions cannot return mutated rows or execute sequential result dependencies. */
8
+ async function executeDynamoAtomicBatch(options, keys, send) {
9
+ (0, atomic_batch_1.validateAtomicBatch)(options);
10
+ options = Object.assign(Object.assign({}, options), { operations: JSON.parse(JSON.stringify(options.operations)) });
11
+ if (options.transaction)
12
+ invalid();
13
+ const transactionId = (0, crypto_1.randomUUID)();
14
+ const results = Object.create(null);
15
+ const seen = new Set();
16
+ const items = [];
17
+ const operationNames = [];
18
+ const rejectReferences = (value) => {
19
+ if (!value || typeof value !== 'object')
20
+ return;
21
+ if ('$batchRef' in value)
22
+ invalid();
23
+ Object.values(value).forEach(rejectReferences);
24
+ };
25
+ for (const op of options.operations) {
26
+ rejectReferences(op);
27
+ // Projection and result dependencies need transaction-returned records, unavailable here.
28
+ if (op.project || (op.returning && op.operation !== 'insert'))
29
+ invalid();
30
+ const schema = keys[op.table];
31
+ if (!(schema === null || schema === void 0 ? void 0 : schema.length))
32
+ invalid();
33
+ const records = Array.isArray(op.data) ? op.data : [op.data];
34
+ if (op.expectedCount !== undefined && op.expectedCount !== records.length)
35
+ invalid();
36
+ const insertedIds = [];
37
+ for (const record of records) {
38
+ const source = op.operation === 'insert' || op.operation === 'upsert' ? record : op.where;
39
+ const key = {};
40
+ for (const field of schema) {
41
+ const value = source === null || source === void 0 ? void 0 : source[field];
42
+ if (!((typeof value === 'string' && value.length) || (typeof value === 'number' && Number.isFinite(value))))
43
+ invalid();
44
+ key[field] = value;
45
+ }
46
+ const identity = JSON.stringify([op.table, schema.map(field => key[field])]);
47
+ if (seen.has(identity))
48
+ invalid();
49
+ seen.add(identity);
50
+ const names = {};
51
+ const values = {};
52
+ let n = 0;
53
+ const name = (field) => { const token = `#n${n++}`; names[token] = field; return token; };
54
+ const value = (input) => { const token = `:v${n++}`; values[token] = input; return token; };
55
+ const conditions = [];
56
+ if (op.operation === 'insert')
57
+ conditions.push(`attribute_not_exists(${name(schema[0])})`);
58
+ if (op.operation === 'update' || op.operation === 'delete') {
59
+ conditions.push(`attribute_exists(${name(schema[0])})`);
60
+ for (const [field, predicate] of Object.entries(op.where)) {
61
+ if (schema.includes(field))
62
+ continue;
63
+ if (predicate && typeof predicate === 'object' && !Array.isArray(predicate)) {
64
+ const comparators = { $eq: '=', $ne: '<>', $lt: '<', $lte: '<=', $gt: '>', $gte: '>=' };
65
+ const entries = Object.entries(predicate);
66
+ if (!entries.length)
67
+ invalid();
68
+ for (const [operator, operand] of entries) {
69
+ const comparator = comparators[operator.toLowerCase()];
70
+ if (!comparator)
71
+ invalid();
72
+ conditions.push(`${name(field)} ${comparator} ${value(operand)}`);
73
+ }
74
+ }
75
+ else
76
+ conditions.push(`${name(field)} = ${value(predicate)}`);
77
+ }
78
+ }
79
+ let update;
80
+ if (op.operation === 'update') {
81
+ const set = [], remove = [];
82
+ for (const [field, operand] of Object.entries(record)) {
83
+ if (schema.includes(field))
84
+ invalid();
85
+ const target = name(field);
86
+ const operators = operand && typeof operand === 'object' && !Array.isArray(operand)
87
+ ? Object.keys(operand).filter(key => key.startsWith('$')) : [];
88
+ if (!operators.length) {
89
+ set.push(`${target} = ${value(operand)}`);
90
+ continue;
91
+ }
92
+ if (Object.keys(operand).length !== 1)
93
+ invalid();
94
+ const operator = operators[0].toLowerCase();
95
+ const argument = operand[operators[0]];
96
+ if (operator === '$set')
97
+ set.push(`${target} = ${value(argument)}`);
98
+ else if (operator === '$unset' && argument === true)
99
+ remove.push(target);
100
+ else if (['$inc', '$dec'].includes(operator) && typeof argument === 'number') {
101
+ set.push(`${target} = ${target} ${operator === '$inc' ? '+' : '-'} ${value(argument)}`);
102
+ }
103
+ else
104
+ invalid();
105
+ }
106
+ if (!set.length && !remove.length)
107
+ invalid();
108
+ update = [set.length ? `SET ${set.join(', ')}` : '', remove.length ? `REMOVE ${remove.join(', ')}` : ''].filter(Boolean).join(' ');
109
+ }
110
+ if (op.operation === 'upsert' && (op.conflictKeys.length !== schema.length || schema.some(field => !op.conflictKeys.includes(field))))
111
+ invalid();
112
+ const command = { TableName: op.table };
113
+ if (op.operation === 'insert' || op.operation === 'upsert')
114
+ command.Item = record;
115
+ else
116
+ command.Key = key;
117
+ if (conditions.length)
118
+ command.ConditionExpression = conditions.join(' AND ');
119
+ if (update)
120
+ command.UpdateExpression = update;
121
+ if (Object.keys(names).length)
122
+ command.ExpressionAttributeNames = names;
123
+ if (Object.keys(values).length)
124
+ command.ExpressionAttributeValues = values;
125
+ items.push({ [op.operation === 'insert' || op.operation === 'upsert' ? 'Put' : op.operation === 'update' ? 'Update' : 'Delete']: command });
126
+ operationNames.push(op.name);
127
+ insertedIds.push(key);
128
+ }
129
+ results[op.name] = op.operation === 'insert'
130
+ ? { count: records.length, data: op.returning ? records : [], insertedIds }
131
+ : op.operation === 'upsert' ? { count: 1, data: [], operation: 'upserted' } : { count: 1, data: [] };
132
+ }
133
+ if (items.length > 100)
134
+ invalid();
135
+ try {
136
+ await send({ TransactItems: items, ClientRequestToken: transactionId });
137
+ }
138
+ catch (error) {
139
+ const name = error === null || error === void 0 ? void 0 : error.name;
140
+ if (name === 'TransactionCanceledException') {
141
+ const reasons = error.CancellationReasons || [];
142
+ const index = reasons.findIndex((reason) => reason.Code === 'ConditionalCheckFailed');
143
+ throw new atomic_batch_1.AtomicBatchError(index >= 0 ? 'BATCH_GUARD_FAILED' : 'BATCH_OPERATION_FAILED', 'aborted', index >= 0 ? operationNames[index] : undefined, transactionId);
144
+ }
145
+ if (['ValidationException', 'ResourceNotFoundException', 'AccessDeniedException', 'IdempotentParameterMismatchException'].includes(name)) {
146
+ throw new atomic_batch_1.AtomicBatchError('BATCH_OPERATION_FAILED', 'not_started', undefined, transactionId);
147
+ }
148
+ throw new atomic_batch_1.AtomicBatchError('BATCH_COMMIT_UNKNOWN', 'commit_unknown', undefined, transactionId);
149
+ }
150
+ // Counts are valid only after DynamoDB has acknowledged the entire conditional transaction.
151
+ return { status: 'committed', transactionId, results };
152
+ }
153
+ //# sourceMappingURL=dynamodb-atomic-batch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dynamodb-atomic-batch.js","sourceRoot":"","sources":["../../src/database/dynamodb-atomic-batch.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@
11
11
  *
12
12
  * @module database
13
13
  */
14
+ export { AtomicBatchOptions, AtomicBatchOperation, AtomicBatchResult, AtomicBatchError } from './atomic-batch';
14
15
  export { DatabaseService, databaseService, IDatabaseServiceConfig, IDatabaseSchemaSnapshot, DatabaseConnection, } from './databases.service';
15
16
  export { BaseAdapter, DatabaseFeature, } from './adapters/base.adapter';
16
17
  export { AdapterFactory } from './adapters/adapter.factory';
@@ -46,3 +47,4 @@ export { TriggerProcessor, createTriggerProcessor, Trigger, } from './triggers/t
46
47
  export { TriggerEvent, TriggerTiming, TriggerActionType, ConditionOperator, } from './types/trigger.interface';
47
48
  export type { ITriggerActionBase, ITriggerDatabaseAction, ITriggerStorageAction, ITriggerNotificationAction, ITriggerBrokerAction, ITriggerCacheAction, ITriggerFeatureAction, ITriggerActionExecuteAction, ITriggerAgentAction, ITriggerResilienceAction, ITriggerLogAction, ITriggerSessionAction, ITriggerVectorAction, ITriggerCustomAction, ITriggerHttpAction, ITriggerAction, IConditionClause, ITriggerCondition, ITriggerContext, ITriggerRetry, ITriggerDefinition, ITriggerActionResult, ITriggerResult, ITriggerConfig, ISchemaTriggerConfig, IPersistedTriggerAction, ICreateTriggerInput, IUpdateTriggerInput, IPersistedTrigger, IListTriggersOptions, ITriggerManager, } from './types/trigger.interface';
48
49
  export type { IPreSaveOperation, IPreSaveBaseOptions, IPreSaveEncryptOptions, IPreSaveHashOptions, IPreSaveMaskOptions, IPreSaveValidateOptions, IPreSaveTransformOptions, IPreSaveSlugOptions, IPreSaveTruncateOptions, IPreSaveRoundOptions, IPreSaveClampOptions, IPreSaveDefaultOptions, IPreSaveComputeOptions, IPreSaveSimpleOptions, IValidationRule, IValidationError, IPreSaveConfig, IPreSaveResult, IAppliedOperation, ISchemaPreSaveConfig, } from './types/presave.interface';
50
+ export type { IMongoPipelineOptions, IMongoPipelineResult } from './types/pipeline.interface';
@@ -13,9 +13,11 @@
13
13
  * @module database
14
14
  */
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.validateDatabaseActionOutput = exports.deriveDatabaseActionOutputContract = exports.PreSaveOperationType = exports.verifyShaHash = exports.verifyHash = exports.decryptFields = exports.decrypt = exports.PreSave = exports.PreSaveProcessor = exports.ReferentialAction = exports.ConstraintType = exports.MigrationStatus = exports.DatabaseErrorType = exports.ConflictAction = exports.RelationshipType = exports.AlterationType = exports.DatabaseActionType = exports.IsolationLevel = exports.SortOrder = exports.IndexType = exports.ColumnType = exports.DatabaseType = exports.DatabaseError = exports.createAction = exports.ActionBuilder = exports.ActionManager = exports.MigrationHelpers = exports.MigrationEngine = exports.migration = exports.MigrationBuilder = exports.SchemaManager = exports.Savepoint = exports.Transaction = exports.TransactionManager = exports.AggregationOperators = exports.AggregationBuilder = exports.Operators = exports.QueryBuilder = exports.CassandraAdapter = exports.MariaDBAdapter = exports.DynamoDBAdapter = exports.MongoDBAdapter = exports.MySQLAdapter = exports.PostgreSQLAdapter = exports.AdapterFactory = exports.DatabaseFeature = exports.BaseAdapter = exports.DatabaseConnection = exports.databaseService = exports.DatabaseService = void 0;
17
- exports.ConditionOperator = exports.TriggerActionType = exports.TriggerTiming = exports.TriggerEvent = exports.Trigger = exports.createTriggerProcessor = exports.TriggerProcessor = void 0;
16
+ exports.deriveDatabaseActionOutputContract = exports.PreSaveOperationType = exports.verifyShaHash = exports.verifyHash = exports.decryptFields = exports.decrypt = exports.PreSave = exports.PreSaveProcessor = exports.ReferentialAction = exports.ConstraintType = exports.MigrationStatus = exports.DatabaseErrorType = exports.ConflictAction = exports.RelationshipType = exports.AlterationType = exports.DatabaseActionType = exports.IsolationLevel = exports.SortOrder = exports.IndexType = exports.ColumnType = exports.DatabaseType = exports.DatabaseError = exports.createAction = exports.ActionBuilder = exports.ActionManager = exports.MigrationHelpers = exports.MigrationEngine = exports.migration = exports.MigrationBuilder = exports.SchemaManager = exports.Savepoint = exports.Transaction = exports.TransactionManager = exports.AggregationOperators = exports.AggregationBuilder = exports.Operators = exports.QueryBuilder = exports.CassandraAdapter = exports.MariaDBAdapter = exports.DynamoDBAdapter = exports.MongoDBAdapter = exports.MySQLAdapter = exports.PostgreSQLAdapter = exports.AdapterFactory = exports.DatabaseFeature = exports.BaseAdapter = exports.DatabaseConnection = exports.databaseService = exports.DatabaseService = exports.AtomicBatchError = void 0;
17
+ exports.ConditionOperator = exports.TriggerActionType = exports.TriggerTiming = exports.TriggerEvent = exports.Trigger = exports.createTriggerProcessor = exports.TriggerProcessor = exports.validateDatabaseActionOutput = void 0;
18
18
  // ==================== MAIN SERVICE ====================
19
+ var atomic_batch_1 = require("./atomic-batch");
20
+ Object.defineProperty(exports, "AtomicBatchError", { enumerable: true, get: function () { return atomic_batch_1.AtomicBatchError; } });
19
21
  var databases_service_1 = require("./databases.service");
20
22
  Object.defineProperty(exports, "DatabaseService", { enumerable: true, get: function () { return databases_service_1.DatabaseService; } });
21
23
  Object.defineProperty(exports, "databaseService", { enumerable: true, get: function () { return databases_service_1.databaseService; } });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;AAEH,yDAAyD;AAEzD,yDAM6B;AAL3B,oHAAA,eAAe,OAAA;AACf,oHAAA,eAAe,OAAA;AAGf,uHAAA,kBAAkB,OAAA;AAGpB,qDAAqD;AAErD,wDAGiC;AAF/B,2GAAA,WAAW,OAAA;AACX,+GAAA,eAAe,OAAA;AAGjB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AAEvB,oEAAkE;AAAzD,uHAAA,iBAAiB,OAAA;AAC1B,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AACxB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AAEzB,sDAAsD;AAEtD,2DAImC;AAHjC,6GAAA,YAAY,OAAA;AACZ,0GAAA,SAAS,OAAA;AAIX,uEAIyC;AAHvC,yHAAA,kBAAkB,OAAA;AAClB,2HAAA,oBAAoB,OAAA;AAItB,yDAAyD;AAEzD,0EAI4C;AAH1C,yHAAA,kBAAkB,OAAA;AAClB,kHAAA,WAAW,OAAA;AACX,gHAAA,SAAS,OAAA;AAGX,mDAAmD;AAEnD,0DAIiC;AAH/B,+GAAA,aAAa,OAAA;AACb,kHAAA,gBAAgB,OAAA;AAChB,2GAAA,SAAS,OAAA;AAQX,uDAAuD;AAEvD,kEAGuC;AAFrC,mHAAA,eAAe,OAAA;AACf,oHAAA,gBAAgB,OAAA;AAGlB,oDAAoD;AAEpD,2DAIkC;AAHhC,+GAAA,aAAa,OAAA;AACb,+GAAA,aAAa,OAAA;AACb,8GAAA,YAAY,OAAA;AAGd,kDAAkD;AAElD,yDAAuD;AAA9C,+GAAA,aAAa,OAAA;AAEtB,kDAAkD;AAElD,QAAQ;AACR,uCAcuB;AAbrB,qGAAA,YAAY,OAAA;AACZ,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,uGAAA,cAAc,OAAA;AACd,2GAAA,kBAAkB,OAAA;AAClB,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,uGAAA,cAAc,OAAA;AACd,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA;AACf,uGAAA,cAAc,OAAA;AACd,0GAAA,iBAAiB,OAAA;AA+KnB,gEAAgE;AAEhE,iEAGqC;AAFnC,qHAAA,gBAAgB,OAAA;AAChB,4GAAA,OAAO,OAAA;AAGT,6CAK2B;AAJzB,kGAAA,OAAO,OAAA;AACP,wGAAA,aAAa,OAAA;AACb,qGAAA,UAAU,OAAA;AACV,wGAAA,aAAa,OAAA;AAGf,iBAAiB;AACjB,+DAEmC;AADjC,yHAAA,oBAAoB,OAAA;AAGtB,6DAA6G;AAApG,qIAAA,kCAAkC,OAAA;AAAE,+HAAA,4BAA4B,OAAA;AAQzE,qDAAqD;AAErD,kEAIsC;AAHpC,qHAAA,gBAAgB,OAAA;AAChB,2HAAA,sBAAsB,OAAA;AACtB,4GAAA,OAAO,OAAA;AAGT,gBAAgB;AAChB,+DAKmC;AAJjC,iHAAA,YAAY,OAAA;AACZ,kHAAA,aAAa,OAAA;AACb,sHAAA,iBAAiB,OAAA;AACjB,sHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/database/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;;;;AAEH,yDAAyD;AACzD,+CAA+G;AAAzC,gHAAA,gBAAgB,OAAA;AAEtF,yDAM6B;AAL3B,oHAAA,eAAe,OAAA;AACf,oHAAA,eAAe,OAAA;AAGf,uHAAA,kBAAkB,OAAA;AAGpB,qDAAqD;AAErD,wDAGiC;AAF/B,2GAAA,WAAW,OAAA;AACX,+GAAA,eAAe,OAAA;AAGjB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AAEvB,oEAAkE;AAAzD,uHAAA,iBAAiB,OAAA;AAC1B,0DAAwD;AAA/C,6GAAA,YAAY,OAAA;AACrB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,gEAA8D;AAArD,mHAAA,eAAe,OAAA;AACxB,8DAA4D;AAAnD,iHAAA,cAAc,OAAA;AACvB,kEAAgE;AAAvD,qHAAA,gBAAgB,OAAA;AAEzB,sDAAsD;AAEtD,2DAImC;AAHjC,6GAAA,YAAY,OAAA;AACZ,0GAAA,SAAS,OAAA;AAIX,uEAIyC;AAHvC,yHAAA,kBAAkB,OAAA;AAClB,2HAAA,oBAAoB,OAAA;AAItB,yDAAyD;AAEzD,0EAI4C;AAH1C,yHAAA,kBAAkB,OAAA;AAClB,kHAAA,WAAW,OAAA;AACX,gHAAA,SAAS,OAAA;AAGX,mDAAmD;AAEnD,0DAIiC;AAH/B,+GAAA,aAAa,OAAA;AACb,kHAAA,gBAAgB,OAAA;AAChB,2GAAA,SAAS,OAAA;AAQX,uDAAuD;AAEvD,kEAGuC;AAFrC,mHAAA,eAAe,OAAA;AACf,oHAAA,gBAAgB,OAAA;AAGlB,oDAAoD;AAEpD,2DAIkC;AAHhC,+GAAA,aAAa,OAAA;AACb,+GAAA,aAAa,OAAA;AACb,8GAAA,YAAY,OAAA;AAGd,kDAAkD;AAElD,yDAAuD;AAA9C,+GAAA,aAAa,OAAA;AAEtB,kDAAkD;AAElD,QAAQ;AACR,uCAcuB;AAbrB,qGAAA,YAAY,OAAA;AACZ,mGAAA,UAAU,OAAA;AACV,kGAAA,SAAS,OAAA;AACT,kGAAA,SAAS,OAAA;AACT,uGAAA,cAAc,OAAA;AACd,2GAAA,kBAAkB,OAAA;AAClB,uGAAA,cAAc,OAAA;AACd,yGAAA,gBAAgB,OAAA;AAChB,uGAAA,cAAc,OAAA;AACd,0GAAA,iBAAiB,OAAA;AACjB,wGAAA,eAAe,OAAA;AACf,uGAAA,cAAc,OAAA;AACd,0GAAA,iBAAiB,OAAA;AA+KnB,gEAAgE;AAEhE,iEAGqC;AAFnC,qHAAA,gBAAgB,OAAA;AAChB,4GAAA,OAAO,OAAA;AAGT,6CAK2B;AAJzB,kGAAA,OAAO,OAAA;AACP,wGAAA,aAAa,OAAA;AACb,qGAAA,UAAU,OAAA;AACV,wGAAA,aAAa,OAAA;AAGf,iBAAiB;AACjB,+DAEmC;AADjC,yHAAA,oBAAoB,OAAA;AAGtB,6DAA6G;AAApG,qIAAA,kCAAkC,OAAA;AAAE,+HAAA,4BAA4B,OAAA;AAQzE,qDAAqD;AAErD,kEAIsC;AAHpC,qHAAA,gBAAgB,OAAA;AAChB,2HAAA,sBAAsB,OAAA;AACtB,4GAAA,OAAO,OAAA;AAGT,gBAAgB;AAChB,+DAKmC;AAJjC,iHAAA,YAAY,OAAA;AACZ,kHAAA,aAAa,OAAA;AACb,sHAAA,iBAAiB,OAAA;AACjB,sHAAA,iBAAiB,OAAA"}
@@ -0,0 +1,17 @@
1
+ /** Bounded, parameterized context SELECT. Flat rows; joins never cause hidden reads. */
2
+ export interface SqlContext {
3
+ select: Record<string, string>;
4
+ where: Record<string, string | number | boolean | null>;
5
+ joins?: Array<{
6
+ table: string;
7
+ alias: string;
8
+ on: Record<string, string>;
9
+ where: Record<string, string | number | boolean | null>;
10
+ kind?: 'left' | 'inner';
11
+ }>;
12
+ limit: number;
13
+ }
14
+ export declare function compileSqlContext(table: string, context: SqlContext, postgres: boolean): {
15
+ query: string;
16
+ params: unknown[];
17
+ };
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.compileSqlContext = compileSqlContext;
4
+ function compileSqlContext(table, context, postgres) {
5
+ var _a;
6
+ const id = (value) => {
7
+ if (typeof value !== 'string' || !/^[A-Za-z_][A-Za-z0-9_]*$/.test(value))
8
+ throw new Error('Invalid SQL context identifier');
9
+ return postgres ? `"${value}"` : '`' + value + '`';
10
+ };
11
+ const aliases = new Set(['root']);
12
+ for (const join of context.joins || []) {
13
+ id(join.alias);
14
+ if (aliases.has(join.alias))
15
+ throw new Error('Duplicate SQL alias');
16
+ aliases.add(join.alias);
17
+ }
18
+ const field = (value) => {
19
+ if (typeof value !== 'string')
20
+ throw new Error('Invalid SQL field');
21
+ const parts = value.split('.');
22
+ if (parts.length !== 2 || !aliases.has(parts[0]))
23
+ throw new Error('Use alias.column for SQL fields');
24
+ return parts.map(id).join('.');
25
+ };
26
+ const params = [];
27
+ const where = (values) => {
28
+ if (!values || !Object.keys(values).length)
29
+ throw new Error('Explicit ownership predicates required');
30
+ return Object.entries(values).map(([key, value]) => {
31
+ if (value === null)
32
+ return `${field(key)} IS NULL`;
33
+ if (!['string', 'number', 'boolean'].includes(typeof value) || (typeof value === 'number' && !Number.isFinite(value)))
34
+ throw new Error('SQL context predicates require scalar values');
35
+ params.push(value);
36
+ return `${field(key)} = ${postgres ? '$' + params.length : '?'}`;
37
+ }).join(' AND ');
38
+ };
39
+ if (!context.select || !Object.keys(context.select).length || Object.keys(context.select).length > 100
40
+ || !Number.isInteger(context.limit) || context.limit < 1 || context.limit > 100 || (((_a = context.joins) === null || _a === void 0 ? void 0 : _a.length) || 0) > 8)
41
+ throw new Error('SQL context bounds exceeded');
42
+ const select = Object.entries(context.select).map(([alias, column]) => `${field(column)} AS ${id(alias)}`).join(', ');
43
+ const joins = (context.joins || []).map(join => {
44
+ if (!join.on || !Object.keys(join.on).length || (join.kind && !['left', 'inner'].includes(join.kind)))
45
+ throw new Error('Invalid context join');
46
+ const on = Object.entries(join.on).map(([a, b]) => `${field(a)} = ${field(b)}`).join(' AND ');
47
+ return `${join.kind === 'inner' ? 'INNER' : 'LEFT'} JOIN ${id(join.table)} AS ${id(join.alias)} ON (${on}) AND (${where(join.where)})`;
48
+ }).join(' ');
49
+ return { query: `SELECT ${select} FROM ${id(table)} AS ${id('root')} ${joins} WHERE ${where(context.where)} LIMIT ${context.limit}`, params };
50
+ }
51
+ //# sourceMappingURL=sql-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sql-context.js","sourceRoot":"","sources":["../../src/database/sql-context.ts"],"names":[],"mappings":"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"}
@@ -4,20 +4,24 @@
4
4
  * Manages database transactions across different database adapters.
5
5
  * Provides transaction creation, lifecycle management, and savepoint handling.
6
6
  */
7
+ import { IsolationLevel } from '../types/enums';
7
8
  import { ITransactionOptions, ITransaction, ISavepoint, ITransactionCallback, ITransactionContext, TransactionStatus } from '../types/transaction.interface';
8
9
  import { BaseAdapter } from '../adapters/base.adapter';
9
10
  /**
10
11
  * Transaction implementation
11
12
  */
12
13
  declare class Transaction implements ITransaction {
14
+ private readonly onFinished?;
13
15
  readonly id: string;
14
16
  private _status;
15
17
  private context;
16
18
  private adapter;
17
19
  private savepoints;
18
- constructor(id: string, adapter: BaseAdapter, context: ITransactionContext);
20
+ constructor(id: string, adapter: BaseAdapter, context: ITransactionContext, onFinished?: () => void);
19
21
  get status(): TransactionStatus;
20
22
  get client(): any;
23
+ belongsTo(adapter: BaseAdapter): boolean;
24
+ get isolationLevel(): IsolationLevel;
21
25
  commit(): Promise<void>;
22
26
  rollback(): Promise<void>;
23
27
  isActive(): boolean;
@@ -15,7 +15,8 @@ const database_error_1 = require("../utils/database-error");
15
15
  * Transaction implementation
16
16
  */
17
17
  class Transaction {
18
- constructor(id, adapter, context) {
18
+ constructor(id, adapter, context, onFinished) {
19
+ this.onFinished = onFinished;
19
20
  this._status = 'active';
20
21
  this.savepoints = new Map();
21
22
  this.id = id;
@@ -28,7 +29,10 @@ class Transaction {
28
29
  get client() {
29
30
  return this.context.client;
30
31
  }
32
+ belongsTo(adapter) { return this.adapter === adapter; }
33
+ get isolationLevel() { return this.context.isolationLevel; }
31
34
  async commit() {
35
+ var _a;
32
36
  if (!this.isActive()) {
33
37
  throw database_error_1.DatabaseError.transactionError(`Cannot commit transaction: transaction is ${this._status}`);
34
38
  }
@@ -42,8 +46,12 @@ class Transaction {
42
46
  this.context.status = 'error';
43
47
  throw database_error_1.DatabaseError.transactionError(`Failed to commit transaction: ${error.message}`, error);
44
48
  }
49
+ finally {
50
+ (_a = this.onFinished) === null || _a === void 0 ? void 0 : _a.call(this);
51
+ }
45
52
  }
46
53
  async rollback() {
54
+ var _a;
47
55
  if (!this.isActive()) {
48
56
  throw database_error_1.DatabaseError.transactionError(`Cannot rollback transaction: transaction is ${this._status}`);
49
57
  }
@@ -57,6 +65,9 @@ class Transaction {
57
65
  this.context.status = 'error';
58
66
  throw database_error_1.DatabaseError.transactionError(`Failed to rollback transaction: ${error.message}`, error);
59
67
  }
68
+ finally {
69
+ (_a = this.onFinished) === null || _a === void 0 ? void 0 : _a.call(this);
70
+ }
60
71
  }
61
72
  isActive() {
62
73
  return this._status === 'active';
@@ -184,7 +195,7 @@ class TransactionManager {
184
195
  const txContext = await adapter.beginTransaction(isolationLevel, options.readOnly, options.timeout);
185
196
  context.client = txContext.client;
186
197
  // Create transaction instance
187
- const transaction = new Transaction(id, adapter, context);
198
+ const transaction = new Transaction(id, adapter, context, () => this.cleanupTransaction(id));
188
199
  // Track active transaction
189
200
  this.activeTransactions.set(id, context);
190
201
  // Set timeout if specified
@@ -1 +1 @@
1
- {"version":3,"file":"transaction-manager.js","sourceRoot":"","sources":["../../../src/database/transactions/transaction-manager.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEH,+BAAoC;AACpC,0CAAiF;AASjF,2DAAwE;AACxE,4DAAwD;AAExD;;GAEG;AACH,MAAM,WAAW;IAOf,YACE,EAAU,EACV,OAAoB,EACpB,OAA4B;QARtB,YAAO,GAAsB,QAAQ,CAAC;QAGtC,eAAU,GAA4B,IAAI,GAAG,EAAE,CAAC;QAOtD,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrB,MAAM,8BAAa,CAAC,gBAAgB,CAClC,6CAA6C,IAAI,CAAC,OAAO,EAAE,CAC5D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;YAC3B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;YAC9B,MAAM,8BAAa,CAAC,gBAAgB,CAClC,iCAAkC,KAAe,CAAC,OAAO,EAAE,EAC3D,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrB,MAAM,8BAAa,CAAC,gBAAgB,CAClC,+CAA+C,IAAI,CAAC,OAAO,EAAE,CAC9D,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,aAAa,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;YAC9B,MAAM,8BAAa,CAAC,gBAAgB,CAClC,mCAAoC,KAAe,CAAC,OAAO,EAAE,EAC7D,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC;IACnC,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrB,MAAM,8BAAa,CAAC,gBAAgB,CAClC,2CAA2C,IAAI,CAAC,OAAO,EAAE,CAC1D,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,8BAAa,CAAC,gBAAgB,CAClC,cAAc,IAAI,sCAAsC,CACzD,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE7C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;OAEG;IACH,YAAY,CAAC,IAAY;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,IAAY;QAC1B,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;CACF;AAoUQ,kCAAW;AAlUpB;;GAEG;AACH,MAAM,SAAS;IAOb,YAAY,IAAY,EAAE,WAAwB,EAAE,OAAoB;QAHhE,aAAQ,GAAY,KAAK,CAAC;QAC1B,eAAU,GAAY,KAAK,CAAC;QAGlC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,8BAAa,CAAC,gBAAgB,CAClC,cAAc,IAAI,CAAC,IAAI,6BAA6B,CACrD,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,8BAAa,CAAC,gBAAgB,CAClC,cAAc,IAAI,CAAC,IAAI,gCAAgC,CACxD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;YACzE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,8BAAa,CAAC,gBAAgB,CAClC,gCAAgC,IAAI,CAAC,IAAI,MAAO,KAAe,CAAC,OAAO,EAAE,EACzE,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,8BAAa,CAAC,gBAAgB,CAClC,cAAc,IAAI,CAAC,IAAI,6BAA6B,CACrD,CAAC;QACJ,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,8BAAa,CAAC,gBAAgB,CAClC,cAAc,IAAI,CAAC,IAAI,gCAAgC,CACxD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,CAAC;YAC5E,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,8BAAa,CAAC,gBAAgB,CAClC,oCAAoC,IAAI,CAAC,IAAI,MAAO,KAAe,CAAC,OAAO,EAAE,EAC7E,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAmQqB,8BAAS;AAjQ/B;;GAEG;AACH,MAAa,kBAAkB;IAA/B;QACU,uBAAkB,GAAqC,IAAI,GAAG,EAAE,CAAC;QACjE,wBAAmB,GAAgC,IAAI,GAAG,EAAE,CAAC;IAyPvE,CAAC;IAvPC;;;;;OAKG;IACH,KAAK,CAAC,gBAAgB,CACpB,OAAoB,EACpB,OAA4B;;QAE5B,MAAM,EAAE,GAAG,IAAA,SAAM,GAAE,CAAC;QACpB,MAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAExE,+CAA+C;QAC/C,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACvB,MAAM,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAChE,8BAAe,CAAC,uBAAuB,CACxC,CAAC;YACF,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACxB,MAAM,IAAI,8BAAa,CACrB,0DAA0D,EAC1D,yBAAiB,CAAC,aAAa,CAChC,CAAC;YACJ,CAAC;YACD,IAAI,cAAc,KAAK,sBAAc,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACxE,MAAM,8BAAa,CAAC,eAAe,CACjC,gFAAgF,CACjF,CAAC;YACJ,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,MAAM,OAAO,GAAwB;YACnC,EAAE;YACF,YAAY,EAAE,OAAO,CAAC,eAAe,EAAE;YACvC,cAAc;YACd,QAAQ,EAAE,MAAA,OAAO,CAAC,QAAQ,mCAAI,KAAK;YACnC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI,GAAG,EAAE;YACrB,MAAM,EAAE,QAAQ;SACjB,CAAC;QAEF,IAAI,CAAC;YACH,+BAA+B;YAC/B,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,gBAAgB,CAC9C,cAAc,EACd,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,OAAO,CAChB,CAAC;YAEF,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;YAElC,8BAA8B;YAC9B,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAE1D,2BAA2B;YAC3B,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAEzC,2BAA2B;YAC3B,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,qBAAqB,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3D,CAAC;YAED,OAAO,WAAW,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,8BAAa,CAAC,gBAAgB,CAClC,gCAAiC,KAAe,CAAC,OAAO,EAAE,EAC1D,KAAc,CACf,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,KAAK,CAAC,kBAAkB,CACtB,OAAoB,EACpB,OAA4B,EAC5B,QAAiC;QAEjC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAElE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,kDAAkD;YAClD,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC/B,CAAC;gBAAC,OAAO,aAAa,EAAE,CAAC;oBACvB,8CAA8C;oBAC9C,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,aAAa,CAAC,CAAC;gBAClE,CAAC;YACH,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,eAAe,CACb,WAAwB,EACxB,IAAY,EACZ,OAAoB;QAEpB,OAAO,IAAI,SAAS,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACH,oBAAoB,CAAC,EAAU;QAC7B,OAAO,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;;OAGG;IACH,wBAAwB;QACtB,OAAO,IAAI,GAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC;IAED;;;OAGG;IACH,yBAAyB;QACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC;IACtC,CAAC;IAED;;;;OAIG;IACH,mBAAmB,CAAC,EAAU;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChD,OAAO,CAAA,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,MAAM,MAAK,QAAQ,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,uBAAuB,CAAC,OAAoB;QAChD,MAAM,gBAAgB,GAAoB,EAAE,CAAC;QAE7C,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACpD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBAChC,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC1D,gBAAgB,CAAC,IAAI,CACnB,WAAW,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;oBACnC,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBAChE,CAAC,CAAC,CACH,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED,4DAA4D;IAEpD,mBAAmB,CACzB,KAA+B;QAE/B,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,sBAAc,CAAC,cAAc,CAAC;QACvC,CAAC;QAED,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAC1D,QAAQ,UAAU,EAAE,CAAC;gBACnB,KAAK,kBAAkB;oBACrB,OAAO,sBAAc,CAAC,gBAAgB,CAAC;gBACzC,KAAK,gBAAgB;oBACnB,OAAO,sBAAc,CAAC,cAAc,CAAC;gBACvC,KAAK,iBAAiB;oBACpB,OAAO,sBAAc,CAAC,eAAe,CAAC;gBACxC,KAAK,cAAc;oBACjB,OAAO,sBAAc,CAAC,YAAY,CAAC;gBACrC;oBACE,MAAM,8BAAa,CAAC,eAAe,CACjC,4BAA4B,KAAK,EAAE,CACpC,CAAC;YACN,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,qBAAqB,CAC3B,WAAyB,EACzB,OAAe;QAEf,MAAM,aAAa,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YAC1C,IAAI,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,WAAW,CAAC,QAAQ,EAAE,CAAC;oBAC7B,OAAO,CAAC,IAAI,CAAC,eAAe,WAAW,CAAC,EAAE,oBAAoB,OAAO,wBAAwB,CAAC,CAAC;gBACjG,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,OAAO,CAAC,KAAK,CAAC,4CAA4C,WAAW,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC;YACD,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC1C,CAAC,EAAE,OAAO,CAAC,CAAC;QAEZ,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;IAC9D,CAAC;IAEO,kBAAkB,CAAC,EAAU;QACnC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,OAAO,EAAE,CAAC;YACZ,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,EAAE,CAAC;YACxD,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,CAAC;IACnC,CAAC;CACF;AA3PD,gDA2PC"}
1
+ {"version":3,"file":"transaction-manager.js","sourceRoot":"","sources":["../../../src/database/transactions/transaction-manager.ts"],"names":[],"mappings":"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"}
@@ -13,3 +13,4 @@ export { IActionDefinition, IActionTemplate, IActionOrderBy, IActionCreateOption
13
13
  export { PreSaveOperationType, IPreSaveOperation, IPreSaveBaseOptions, IPreSaveEncryptOptions, IPreSaveHashOptions, IPreSaveMaskOptions, IPreSaveValidateOptions, IPreSaveTransformOptions, IPreSaveSlugOptions, IPreSaveTruncateOptions, IPreSaveRoundOptions, IPreSaveClampOptions, IPreSaveDefaultOptions, IPreSaveComputeOptions, IPreSaveSimpleOptions, IValidationRule, IValidationError, IPreSaveConfig, IPreSaveResult, IAppliedOperation, ISchemaPreSaveConfig, } from './presave.interface';
14
14
  export { TriggerEvent, TriggerTiming, TriggerActionType, ConditionOperator, ITriggerActionBase, ITriggerDatabaseAction, ITriggerStorageAction, ITriggerNotificationAction, ITriggerBrokerAction, ITriggerCacheAction, ITriggerFeatureAction, ITriggerActionExecuteAction, ITriggerAgentAction, ITriggerResilienceAction, ITriggerLogAction, ITriggerSessionAction, ITriggerVectorAction, ITriggerCustomAction, ITriggerHttpAction, ITriggerAction, IConditionClause, ITriggerCondition, ITriggerContext, ITriggerRetry, ITriggerDefinition, ITriggerActionResult, ITriggerResult, ITriggerConfig, ISchemaTriggerConfig, } from './trigger.interface';
15
15
  export { IFetchDatabaseDashboardOptions, IDatabaseDashboardMetrics, } from './dashboard.interface';
16
+ export type { IMongoPipelineOptions, IMongoPipelineResult } from './pipeline.interface';
@@ -0,0 +1,19 @@
1
+ import { ITransaction } from './transaction.interface';
2
+ /** MongoDB read pipeline. Ownership predicates must be supplied for roots and lookups. */
3
+ export interface IMongoPipelineOptions {
4
+ product: string;
5
+ env: string;
6
+ database: string;
7
+ table: string;
8
+ pipeline: Record<string, unknown>[];
9
+ session?: string;
10
+ transaction?: ITransaction;
11
+ maxTimeMS?: number;
12
+ allowDiskUse?: boolean;
13
+ }
14
+ export interface IMongoPipelineResult<T> {
15
+ data: T[];
16
+ /** Number of returned documents, not an independent total-count query. */
17
+ count: number;
18
+ }
19
+ export declare function validateReadPipeline(pipeline: unknown): asserts pipeline is Record<string, unknown>[];
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateReadPipeline = validateReadPipeline;
4
+ function validateReadPipeline(pipeline) {
5
+ if (!Array.isArray(pipeline))
6
+ throw new Error('MongoDB pipeline must be an array');
7
+ const visit = (value) => {
8
+ if (!value || typeof value !== 'object')
9
+ return;
10
+ for (const [key, child] of Object.entries(value)) {
11
+ if (key === '$out' || key === '$merge')
12
+ throw new Error('aggregatePipeline is read-only');
13
+ visit(child);
14
+ }
15
+ };
16
+ for (const stage of pipeline) {
17
+ if (!stage || typeof stage !== 'object' || Array.isArray(stage) || Object.keys(stage).length !== 1)
18
+ throw new Error('Each MongoDB pipeline stage must have exactly one operator');
19
+ visit(stage);
20
+ }
21
+ }
22
+ //# sourceMappingURL=pipeline.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.interface.js","sourceRoot":"","sources":["../../../src/database/types/pipeline.interface.ts"],"names":[],"mappings":";;AAqBA,oDAcC;AAdD,SAAgB,oBAAoB,CAAC,QAAiB;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IACnF,MAAM,KAAK,GAAG,CAAC,KAAc,EAAQ,EAAE;QACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO;QAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC1F,KAAK,CAAC,KAAK,CAAC,CAAC;QACf,CAAC;IACH,CAAC,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAChG,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAChF,KAAK,CAAC,KAAK,CAAC,CAAC;IACf,CAAC;AACH,CAAC"}
package/dist/index.d.ts CHANGED
@@ -235,6 +235,10 @@ export { AgentsService, AgentError, agentsService } from './agents';
235
235
  export { AgentExecutor, AgentContext, ToolRegistry, MemoryManager, createLLMProvider, AnthropicProvider, OpenAIProvider, VectorServiceAdapter, createVectorStoreAdapter, createPineconeAdapter, createQdrantAdapter, createWeaviateAdapter, createMemoryAdapter, } from './agents';
236
236
  export type { IAgentServiceConfig, IDefineAgentOptions, IDefinedAgent, IRunAgentOptions, IAgentExecutionResult, IDispatchAgentOptions, IDispatchAgentResult, ISendAgentSignalOptions, IAgentStatusOptions, IAgentState, IListAgentExecutionsOptions, IAgentExecutionListResult, IAgentTool, IAgentToolSchema, IToolParam, IToolCallResult, ILLMConfig, LLMProvider, IAgentMemoryConfig, IAgentTerminationConfig, IAgentStreamEvent, IAgentToolContext, IConversationMessage, ITokenUsage, AgentStatus, IHumanInLoopConfig, IApprovalRequest, IApprovalResponse, IMultiAgentWorkflow, MultiAgentMode, } from './agents';
237
237
  export { deriveDatabaseActionOutputContract, validateDatabaseActionOutput } from './database';
238
+ export { AtomicBatchOptions, AtomicBatchOperation, AtomicBatchResult, AtomicBatchError } from './database/atomic-batch';
239
+ export type { IMongoPipelineOptions, IMongoPipelineResult } from './database/types/pipeline.interface';
240
+ export type { AtomicPipelineOptions, AtomicPipelineResult } from './database/atomic-pipeline';
241
+ export type { SqlContext } from './database/sql-context';
238
242
  export type { IActionResult, IQueryActionResult, IInsertActionResult, IUpdateActionResult, IDeleteActionResult, IRawActionResult, IDatabaseActionSchemaNode, IDatabaseActionOutputContract, IDatabaseActionOutputValidation, IDatabaseTableColumnMetadata, } from './database';
239
243
  export { StorageService, StorageError } from './storage';
240
244
  export { uploadBlobToCloud, downloadBlobFromCloud, deleteBlobFromCloud, listBlobsInCloud, generateSignedUrl, } from './storage';
@@ -1831,6 +1835,8 @@ export default class Ductape implements IDuctape {
1831
1835
  * await ductape.databases.connect({ env: 'dev', product: 'my-product', database: 'users-db' });
1832
1836
  */
1833
1837
  databases: {
1838
+ /** Same-database atomic writes on supported MongoDB/SQL topologies. Not a warehouse Saga. */
1839
+ atomicBatch: (options: Parameters<DatabaseService["atomicBatch"]>[0]) => Promise<import("./database").AtomicBatchResult>;
1834
1840
  /**
1835
1841
  * Create/register a new database configuration
1836
1842
  */
@@ -1922,6 +1928,8 @@ export default class Ductape implements IDuctape {
1922
1928
  /**
1923
1929
  * Perform multiple aggregations in one query
1924
1930
  */
1931
+ aggregatePipeline: <T = Record<string, unknown>>(options: Parameters<DatabaseService["aggregatePipeline"]>[0]) => Promise<import("./database").IMongoPipelineResult<T>>;
1932
+ atomicPipeline: <T = Record<string, unknown>>(options: Parameters<DatabaseService["atomicPipeline"]>[0]) => Promise<import("./database/atomic-pipeline").AtomicPipelineResult<T>>;
1925
1933
  aggregate: (options: Parameters<DatabaseService["aggregate"]>[0]) => Promise<import("./database").IAggregateResult>;
1926
1934
  /**
1927
1935
  * Begin a database transaction
@@ -4405,7 +4413,7 @@ export default class Ductape implements IDuctape {
4405
4413
  refreshedAt?: number;
4406
4414
  error?: string;
4407
4415
  };
4408
- connections: "degraded" | "ready" | "warming";
4416
+ connections: "ready" | "warming" | "degraded";
4409
4417
  };
4410
4418
  warmup: {
4411
4419
  databases: {
package/dist/index.js CHANGED
@@ -51,8 +51,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
51
51
  };
52
52
  Object.defineProperty(exports, "__esModule", { value: true });
53
53
  exports.deriveDatabaseActionOutputContract = exports.createMemoryAdapter = exports.createWeaviateAdapter = exports.createQdrantAdapter = exports.createPineconeAdapter = exports.createVectorStoreAdapter = exports.VectorServiceAdapter = exports.OpenAIProvider = exports.AnthropicProvider = exports.createLLMProvider = exports.MemoryManager = exports.ToolRegistry = exports.AgentContext = exports.AgentExecutor = exports.agentsService = exports.AgentError = exports.AgentsService = exports.verifyInvocationSignature = exports.PORTABLE_FUNCTION_HTTP_PATH = exports.handlePortableFunctionHttpRequest = exports.PortableFunctionError = exports.PortableFunctionsRegistry = exports.portableFunctions = exports.defineFunctions = exports.defineFunction = exports.FeatureExecutor = exports.createFeature = exports.FeatureBuilder = exports.FeaturePublicationError = exports.featureService = exports.FeatureCompilationError = exports.FeatureError = exports.FeatureService = exports.GraphAdapterFactory = exports.MemgraphAdapter = exports.ArangoDBAdapter = exports.NeptuneAdapter = exports.Neo4jAdapter = exports.BaseGraphAdapter = exports.GraphError = exports.GraphSortOrder = exports.GraphFeature = exports.GraphErrorType = exports.GraphTransactionStatus = exports.GraphIsolationLevel = exports.NodeConstraintType = exports.NodeIndexType = exports.TraversalDirection = exports.GraphType = exports.GraphService = void 0;
54
- exports.SecretRevokedError = exports.SecretExpiredError = exports.SecretEnvironmentError = exports.SecretScopeError = exports.SecretNotFoundError = exports.SECRET_PATTERN_GLOBAL = exports.SECRET_PATTERN = exports.SecretsService = exports.VectorFeature = exports.VectorErrorType = exports.VectorIndexType = exports.DistanceMetric = exports.VectorDBType = exports.MemoryAdapter = exports.WeaviateAdapter = exports.QdrantAdapter = exports.PineconeAdapter = exports.BaseVectorAdapter = exports.VectorError = exports.VectorDatabaseService = exports.SmsProvider = exports.PushNotificationProvider = exports.NotificationChannelType = exports.notificationsService = exports.NotificationsService = exports.getSqsQueueUrl = exports.isValidSqsUrl = exports.parseEventString = exports.loadBrokerService = exports.GooglePubSubService = exports.RedisService = exports.SQSService = exports.KafkaService = exports.RabbitMQService = exports.BrokerError = exports.BrokersService = exports.CacheLogger = exports.cacheLogger = exports.CacheError = exports.CacheService = exports.SessionError = exports.SessionsService = exports.generateSignedUrl = exports.listBlobsInCloud = exports.deleteBlobFromCloud = exports.downloadBlobFromCloud = exports.uploadBlobToCloud = exports.StorageError = exports.StorageService = exports.validateDatabaseActionOutput = void 0;
55
- exports.getAssetSchemas = exports.buildVpcConnectorRelayWebSocketUrl = exports.parseTcpEndpointFromUrl = exports.buildVpcConnectorTunnelAdapterOptions = exports.openVpcConnectorTunnelStream = exports.resolveCloudLinkedEnvConfig = exports.resolveCloudLinkedConfig = exports.CloudError = exports.CloudService = exports.mightContainSecrets = exports.findAllSecretReferences = exports.extractSecretKeys = exports.containsSecretReferences = exports.isSecretReference = exports.SecretResolutionError = void 0;
54
+ exports.SecretExpiredError = exports.SecretEnvironmentError = exports.SecretScopeError = exports.SecretNotFoundError = exports.SECRET_PATTERN_GLOBAL = exports.SECRET_PATTERN = exports.SecretsService = exports.VectorFeature = exports.VectorErrorType = exports.VectorIndexType = exports.DistanceMetric = exports.VectorDBType = exports.MemoryAdapter = exports.WeaviateAdapter = exports.QdrantAdapter = exports.PineconeAdapter = exports.BaseVectorAdapter = exports.VectorError = exports.VectorDatabaseService = exports.SmsProvider = exports.PushNotificationProvider = exports.NotificationChannelType = exports.notificationsService = exports.NotificationsService = exports.getSqsQueueUrl = exports.isValidSqsUrl = exports.parseEventString = exports.loadBrokerService = exports.GooglePubSubService = exports.RedisService = exports.SQSService = exports.KafkaService = exports.RabbitMQService = exports.BrokerError = exports.BrokersService = exports.CacheLogger = exports.cacheLogger = exports.CacheError = exports.CacheService = exports.SessionError = exports.SessionsService = exports.generateSignedUrl = exports.listBlobsInCloud = exports.deleteBlobFromCloud = exports.downloadBlobFromCloud = exports.uploadBlobToCloud = exports.StorageError = exports.StorageService = exports.AtomicBatchError = exports.validateDatabaseActionOutput = void 0;
55
+ exports.getAssetSchemas = exports.buildVpcConnectorRelayWebSocketUrl = exports.parseTcpEndpointFromUrl = exports.buildVpcConnectorTunnelAdapterOptions = exports.openVpcConnectorTunnelStream = exports.resolveCloudLinkedEnvConfig = exports.resolveCloudLinkedConfig = exports.CloudError = exports.CloudService = exports.mightContainSecrets = exports.findAllSecretReferences = exports.extractSecretKeys = exports.containsSecretReferences = exports.isSecretReference = exports.SecretResolutionError = exports.SecretRevokedError = void 0;
56
56
  const appApi_service_1 = require("./api/services/appApi.service");
57
57
  const userApi_service_1 = require("./api/services/userApi.service");
58
58
  const workspaceApi_service_1 = require("./api/services/workspaceApi.service");
@@ -362,6 +362,8 @@ Object.defineProperty(exports, "createMemoryAdapter", { enumerable: true, get: f
362
362
  var database_2 = require("./database");
363
363
  Object.defineProperty(exports, "deriveDatabaseActionOutputContract", { enumerable: true, get: function () { return database_2.deriveDatabaseActionOutputContract; } });
364
364
  Object.defineProperty(exports, "validateDatabaseActionOutput", { enumerable: true, get: function () { return database_2.validateDatabaseActionOutput; } });
365
+ var atomic_batch_1 = require("./database/atomic-batch");
366
+ Object.defineProperty(exports, "AtomicBatchError", { enumerable: true, get: function () { return atomic_batch_1.AtomicBatchError; } });
365
367
  // Re-export Storage module types and classes
366
368
  var storage_2 = require("./storage");
367
369
  Object.defineProperty(exports, "StorageService", { enumerable: true, get: function () { return storage_2.StorageService; } });
@@ -2322,6 +2324,11 @@ class Ductape {
2322
2324
  * await ductape.databases.connect({ env: 'dev', product: 'my-product', database: 'users-db' });
2323
2325
  */
2324
2326
  this.databases = {
2327
+ /** Same-database atomic writes on supported MongoDB/SQL topologies. Not a warehouse Saga. */
2328
+ atomicBatch: async (options) => {
2329
+ const service = await this.createNewDatabaseService();
2330
+ return service.atomicBatch(options);
2331
+ },
2325
2332
  // ==================== DATABASE CRUD OPERATIONS ====================
2326
2333
  /**
2327
2334
  * Create/register a new database configuration
@@ -2483,6 +2490,14 @@ class Ductape {
2483
2490
  /**
2484
2491
  * Perform multiple aggregations in one query
2485
2492
  */
2493
+ aggregatePipeline: async (options) => {
2494
+ const service = await this.createNewDatabaseService();
2495
+ return service.aggregatePipeline(options);
2496
+ },
2497
+ atomicPipeline: async (options) => {
2498
+ const service = await this.createNewDatabaseService();
2499
+ return service.atomicPipeline(options);
2500
+ },
2486
2501
  aggregate: async (options) => {
2487
2502
  const service = await this.createNewDatabaseService();
2488
2503
  return service.aggregate(options);