@dbos-inc/dbos-enterprise 5.3.1-preview → 5.4.0

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 (62) hide show
  1. package/README.md +4 -4
  2. package/dist/src/auto_upgrade.d.ts +39 -0
  3. package/dist/src/auto_upgrade.d.ts.map +1 -0
  4. package/dist/src/auto_upgrade.js +229 -0
  5. package/dist/src/auto_upgrade.js.map +1 -0
  6. package/dist/src/cockroach.d.ts +10 -0
  7. package/dist/src/cockroach.d.ts.map +1 -0
  8. package/dist/src/cockroach.js +28 -0
  9. package/dist/src/cockroach.js.map +1 -0
  10. package/dist/src/conductor/conductor.d.ts +42 -0
  11. package/dist/src/conductor/conductor.d.ts.map +1 -0
  12. package/dist/src/conductor/conductor.js +978 -0
  13. package/dist/src/conductor/conductor.js.map +1 -0
  14. package/dist/src/conductor/protocol.d.ts +618 -0
  15. package/dist/src/conductor/protocol.d.ts.map +1 -0
  16. package/dist/src/conductor/protocol.js +514 -0
  17. package/dist/src/conductor/protocol.js.map +1 -0
  18. package/dist/src/export.d.ts +19 -0
  19. package/dist/src/export.d.ts.map +1 -0
  20. package/dist/src/export.js +184 -0
  21. package/dist/src/export.js.map +1 -0
  22. package/dist/src/fork.d.ts +18 -0
  23. package/dist/src/fork.d.ts.map +1 -0
  24. package/dist/src/fork.js +71 -0
  25. package/dist/src/fork.js.map +1 -0
  26. package/dist/src/index.d.ts +10 -1
  27. package/dist/src/index.d.ts.map +1 -1
  28. package/dist/src/index.js +14 -3
  29. package/dist/src/index.js.map +1 -1
  30. package/dist/src/locks.d.ts +20 -0
  31. package/dist/src/locks.d.ts.map +1 -0
  32. package/dist/src/locks.js +47 -0
  33. package/dist/src/locks.js.map +1 -0
  34. package/dist/src/observability.d.ts +90 -0
  35. package/dist/src/observability.d.ts.map +1 -0
  36. package/dist/src/observability.js +398 -0
  37. package/dist/src/observability.js.map +1 -0
  38. package/dist/src/retention.d.ts +31 -0
  39. package/dist/src/retention.d.ts.map +1 -0
  40. package/dist/src/retention.js +408 -0
  41. package/dist/src/retention.js.map +1 -0
  42. package/dist/src/sharding/index.d.ts +9 -0
  43. package/dist/src/sharding/index.d.ts.map +1 -0
  44. package/dist/src/sharding/index.js +13 -0
  45. package/dist/src/sharding/index.js.map +1 -0
  46. package/dist/src/sharding/migrations.d.ts +20 -0
  47. package/dist/src/sharding/migrations.d.ts.map +1 -0
  48. package/dist/src/sharding/migrations.js +486 -0
  49. package/dist/src/sharding/migrations.js.map +1 -0
  50. package/dist/src/sharding/schema.d.ts +9 -0
  51. package/dist/src/sharding/schema.d.ts.map +1 -0
  52. package/dist/src/sharding/schema.js +12 -0
  53. package/dist/src/sharding/schema.js.map +1 -0
  54. package/dist/src/sharding/sys_db.d.ts +101 -0
  55. package/dist/src/sharding/sys_db.d.ts.map +1 -0
  56. package/dist/src/sharding/sys_db.js +717 -0
  57. package/dist/src/sharding/sys_db.js.map +1 -0
  58. package/package.json +14 -6
  59. package/dist/src/scratch.d.ts +0 -9
  60. package/dist/src/scratch.d.ts.map +0 -1
  61. package/dist/src/scratch.js +0 -15
  62. package/dist/src/scratch.js.map +0 -1
@@ -0,0 +1,408 @@
1
+ // Copyright (c) 2026 DBOS, Inc. All rights reserved.
2
+ //
3
+ // This file is part of Transact Enterprise, proprietary software licensed under the
4
+ // DBOS Conductor Software License: https://www.dbos.dev/conductor-license
5
+ // You may not use, copy, modify, or distribute this file except as that license permits.
6
+ // Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
7
+ // that gate it is a material breach of that license.
8
+ "use strict";
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.globalTimeout = exports.garbageCollect = exports.listTimedOutWorkflowIds = exports.collectStatuses = exports.collectPayloads = exports.acquireRetentionLock = exports.WindowBatches = exports.DEFAULT_GC_BATCH_SIZE = exports.retentionLockKey = exports.retryOnSerializationError = void 0;
11
+ const cockroach_1 = require("./cockroach");
12
+ const dbos_executor_1 = require("@dbos-inc/dbos-sdk/internal/dbos-executor");
13
+ const error_1 = require("@dbos-inc/dbos-sdk/internal/error");
14
+ const shard_keys_1 = require("@dbos-inc/dbos-sdk/internal/shard_keys");
15
+ const locks_1 = require("./locks");
16
+ const system_database_1 = require("@dbos-inc/dbos-sdk/internal/system_database");
17
+ const utils_1 = require("@dbos-inc/dbos-sdk/internal/utils");
18
+ const workflow_1 = require("@dbos-inc/dbos-sdk/internal/workflow");
19
+ const SERIALIZATION_SQLSTATE_CODES = new Set([
20
+ '40001',
21
+ '40P01',
22
+ ]);
23
+ function isSerializationError(err, sysdb) {
24
+ for (const e of (0, system_database_1.unwrapErrors)(err)) {
25
+ if (sysdb.isSerializationConflict(e)) {
26
+ return true;
27
+ }
28
+ if ((0, system_database_1.isPgDatabaseError)(e) && SERIALIZATION_SQLSTATE_CODES.has(e.code)) {
29
+ return true;
30
+ }
31
+ }
32
+ return false;
33
+ }
34
+ async function borrowRetentionClient(sysdb) {
35
+ if (sysdb.destroyed) {
36
+ throw new Error('System database shutting down');
37
+ }
38
+ const client = await sysdb.connect();
39
+ sysdb.retentionClients.add(client);
40
+ return client;
41
+ }
42
+ function releaseRetentionClient(sysdb, client, destroy = false) {
43
+ if (sysdb.retentionClients.delete(client)) {
44
+ client.release(destroy);
45
+ }
46
+ }
47
+ async function retryOnSerializationError(operation, sysdb) {
48
+ const maxAttempts = 10;
49
+ const maxBackoff = 2.0;
50
+ let backoff = 0.05;
51
+ for (let attempt = 1;; attempt++) {
52
+ try {
53
+ return await operation();
54
+ }
55
+ catch (e) {
56
+ if (!isSerializationError(e, sysdb)) {
57
+ throw e;
58
+ }
59
+ const message = e instanceof Error ? e.message : String(e);
60
+ if (attempt === maxAttempts) {
61
+ dbos_executor_1.DBOSExecutor.globalInstance?.logger.warn(`Garbage collection failed after ${maxAttempts} attempts: ${message}`);
62
+ throw e;
63
+ }
64
+ const actualBackoff = backoff * (0.5 + Math.random());
65
+ dbos_executor_1.DBOSExecutor.globalInstance?.logger.warn(`Contention or deadlock detected in workflow garbage collection: ${message}. ` +
66
+ `Retrying in ${actualBackoff.toFixed(2)}s (attempt ${attempt})`);
67
+ await (0, utils_1.sleepms)(actualBackoff * 1000);
68
+ backoff = Math.min(backoff * 2, maxBackoff);
69
+ }
70
+ }
71
+ }
72
+ exports.retryOnSerializationError = retryOnSerializationError;
73
+ function retentionLockKey(schemaName) {
74
+ return (0, system_database_1.advisoryLockKey)(`dbos.retention.${schemaName}`);
75
+ }
76
+ exports.retentionLockKey = retentionLockKey;
77
+ exports.DEFAULT_GC_BATCH_SIZE = 50_000;
78
+ async function kthValue(sysdb, client, column, from, where, params, k, descending = false) {
79
+ if (!Number.isInteger(k) || k < 1) {
80
+ throw new error_1.DBOSError(`Cannot take the ${k}th value: k must be a positive integer`);
81
+ }
82
+ const order = `ORDER BY ${column}${descending ? ' DESC' : ''}`;
83
+ if (!sysdb.sharded) {
84
+ const { rows } = await client.query(`SELECT ${column} AS value FROM ${from} WHERE ${where} ${order} LIMIT 1${k > 1 ? ` OFFSET ${k - 1}` : ''}`, params);
85
+ return rows.length > 0 ? Number(rows[0].value) : undefined;
86
+ }
87
+ const { rows } = await client.query(`SELECT ${column} AS value FROM ${from} WHERE ${where} ${order} LIMIT ${k}`, params);
88
+ const values = rows.map((row) => Number(row.value)).sort((a, b) => (descending ? b - a : a - b));
89
+ return values.length >= k ? values[k - 1] : undefined;
90
+ }
91
+ const INITIAL_BATCH_WINDOW_MS = 1_000;
92
+ class WindowBatches {
93
+ batchSize;
94
+ width = INITIAL_BATCH_WINDOW_MS;
95
+ constructor(batchSize) {
96
+ this.batchSize = batchSize;
97
+ }
98
+ async bound(client, column, from, eligible, watermark, cutoff) {
99
+ const k = this.batchSize;
100
+ let lo = watermark;
101
+ let fits = undefined;
102
+ let fitsCount = 0;
103
+ let overflows = undefined;
104
+ let hi = lo + this.width;
105
+ let final;
106
+ let n;
107
+ for (;;) {
108
+ final = hi >= cutoff;
109
+ const params = [];
110
+ const window = [eligible(params), `${column} > $${params.push(lo)}`];
111
+ if (!final)
112
+ window.push(`${column} <= $${params.push(hi)}`);
113
+ const { rows } = await client.query(`SELECT count(*) AS count FROM ${from} WHERE ${window.join(' AND ')}`, params);
114
+ n = Number(rows[0].count);
115
+ if (n > 2 * k && hi - lo > 1) {
116
+ overflows = Math.min(hi, cutoff);
117
+ const base = fits ?? lo;
118
+ hi = base + Math.floor((overflows - base) / 2);
119
+ if (fits !== undefined && hi <= fits) {
120
+ hi = fits;
121
+ n = fitsCount;
122
+ final = false;
123
+ break;
124
+ }
125
+ continue;
126
+ }
127
+ if (n === 0 && fits === undefined) {
128
+ if (final)
129
+ return undefined;
130
+ const nextParams = [];
131
+ const nextWhere = `${eligible(nextParams)} AND ${column} > $${nextParams.push(lo)}`;
132
+ const { rows: next } = await client.query(`SELECT min(${column}) AS next FROM ${from} WHERE ${nextWhere}`, nextParams);
133
+ if (next[0]?.next === null || next[0]?.next === undefined)
134
+ return undefined;
135
+ lo = Number(next[0].next) - 1;
136
+ hi = lo + this.width;
137
+ continue;
138
+ }
139
+ if (4 * n < k && !final) {
140
+ fits = hi;
141
+ fitsCount = n;
142
+ hi = overflows === undefined ? lo + (hi - lo) * 16 : Math.floor((hi + overflows) / 2);
143
+ if (overflows !== undefined && hi <= fits)
144
+ break;
145
+ continue;
146
+ }
147
+ break;
148
+ }
149
+ if (final)
150
+ return undefined;
151
+ const span = Math.max(1, hi - lo);
152
+ this.width = Math.max(1, Math.min(span * 16, Math.floor((span * k) / Math.max(n, 1))));
153
+ return hi;
154
+ }
155
+ }
156
+ exports.WindowBatches = WindowBatches;
157
+ async function acquireRetentionLock(sysdb) {
158
+ if (sysdb.destroyed) {
159
+ throw new Error('System database shutting down');
160
+ }
161
+ if (await (0, cockroach_1.isCockroach)(sysdb)) {
162
+ return { release: () => Promise.resolve() };
163
+ }
164
+ const key = retentionLockKey(sysdb.schemaName);
165
+ const client = await borrowRetentionClient(sysdb);
166
+ let lock;
167
+ try {
168
+ lock = await (0, locks_1.tryAdvisoryLock)(client, key, { name: 'retention', discard: sysdb.sharded, logger: sysdb.logger });
169
+ }
170
+ catch (e) {
171
+ releaseRetentionClient(sysdb, client, true);
172
+ throw e;
173
+ }
174
+ const release = async () => {
175
+ if (!sysdb.retentionClients.has(client)) {
176
+ return;
177
+ }
178
+ releaseRetentionClient(sysdb, client, await lock.release());
179
+ };
180
+ if (!lock.acquired) {
181
+ await release();
182
+ return undefined;
183
+ }
184
+ return { release };
185
+ }
186
+ exports.acquireRetentionLock = acquireRetentionLock;
187
+ async function vacuumTables(sysdb, tables) {
188
+ if (await (0, cockroach_1.isCockroach)(sysdb)) {
189
+ return;
190
+ }
191
+ const client = await borrowRetentionClient(sysdb);
192
+ let notices = [];
193
+ const onNotice = (notice) => notices.push(notice.message ?? '');
194
+ client.on('notice', onNotice);
195
+ try {
196
+ for (const table of tables) {
197
+ notices = [];
198
+ try {
199
+ await client.query(`VACUUM (INDEX_CLEANUP ON, TRUNCATE OFF, ANALYZE) "${sysdb.schemaName}"."${table}"`);
200
+ }
201
+ catch (e) {
202
+ if (!sysdb.retentionClients.has(client)) {
203
+ throw e;
204
+ }
205
+ sysdb.logger.warn(`Payload retention could not vacuum ${table}: ${e.message}`);
206
+ continue;
207
+ }
208
+ for (const notice of notices) {
209
+ sysdb.logger.warn(`Payload retention vacuuming ${table}: ${notice}`);
210
+ }
211
+ }
212
+ }
213
+ finally {
214
+ client.removeListener('notice', onNotice);
215
+ releaseRetentionClient(sysdb, client);
216
+ }
217
+ }
218
+ async function collectPayloadTable(sysdb, table, cutoff, batchSize) {
219
+ const orphaned = `NOT EXISTS (
220
+ SELECT 1 FROM "${sysdb.schemaName}".workflow_status ws
221
+ WHERE ${sysdb.wfJoin('ws', 't')} AND ws.created_at < $1
222
+ )`;
223
+ const from = `"${sysdb.schemaName}".${table}`;
224
+ const oldest = await retryOnSerializationError(() => kthValue(sysdb, sysdb.pool, 'retention_timestamp', from, 'retention_timestamp < $1', [cutoff], 1), sysdb);
225
+ if (oldest === undefined) {
226
+ return 0;
227
+ }
228
+ let total = 0;
229
+ let watermark = oldest - 1;
230
+ const windows = sysdb.sharded ? new WindowBatches(batchSize) : undefined;
231
+ for (;;) {
232
+ const batch = await retryOnSerializationError(async () => {
233
+ const client = await borrowRetentionClient(sysdb);
234
+ try {
235
+ const step = windows !== undefined
236
+ ? await windows.bound(client, 'retention_timestamp', from, (params) => `retention_timestamp < $${params.push(cutoff)}`, watermark, cutoff)
237
+ : await kthValue(sysdb, client, 'retention_timestamp', from, 'retention_timestamp < $1 AND retention_timestamp > $2', [cutoff, watermark], batchSize);
238
+ const params = [cutoff, watermark];
239
+ const upperBound = step === undefined ? '' : `AND t.retention_timestamp <= $${params.push(step)} `;
240
+ const result = await client.query(`DELETE FROM "${sysdb.schemaName}".${table} t
241
+ WHERE t.retention_timestamp < $1 AND t.retention_timestamp > $2 ${upperBound}AND ${orphaned}`, params);
242
+ return { step, deleted: result.rowCount ?? 0 };
243
+ }
244
+ finally {
245
+ releaseRetentionClient(sysdb, client);
246
+ }
247
+ }, sysdb);
248
+ total += batch.deleted;
249
+ if (batch.step === undefined) {
250
+ return total;
251
+ }
252
+ watermark = batch.step;
253
+ }
254
+ }
255
+ async function collectPayloads(sysdb, cutoff, batchSize = exports.DEFAULT_GC_BATCH_SIZE) {
256
+ if (!Number.isInteger(batchSize) || batchSize < 1) {
257
+ throw new error_1.DBOSError(`batchSize must be a positive integer, got ${batchSize}`);
258
+ }
259
+ const tables = ['workflow_input', 'workflow_output', 'operation_outputs'];
260
+ await vacuumTables(sysdb, ['workflow_status', ...tables]);
261
+ const poolMax = sysdb.pool.options.max ?? system_database_1.DEFAULT_POOL_SIZE;
262
+ const concurrency = Math.max(1, Math.min(tables.length, poolMax - 1));
263
+ const deleted = new Array(tables.length).fill(0);
264
+ const failures = [];
265
+ let next = 0;
266
+ const sweep = async () => {
267
+ for (;;) {
268
+ const i = next++;
269
+ if (i >= tables.length)
270
+ return;
271
+ try {
272
+ deleted[i] = await collectPayloadTable(sysdb, tables[i], cutoff, batchSize);
273
+ }
274
+ catch (e) {
275
+ failures.push(e);
276
+ }
277
+ }
278
+ };
279
+ await Promise.all(Array.from({ length: concurrency }, () => sweep()));
280
+ for (const extra of failures.slice(1)) {
281
+ sysdb.logger.warn(`Payload retention sweep also failed: ${extra instanceof Error ? extra.message : String(extra)}`);
282
+ }
283
+ if (failures.length > 0) {
284
+ throw failures[0];
285
+ }
286
+ await vacuumTables(sysdb, tables);
287
+ sysdb.logger.debug(`Payload retention deleted ${deleted[0]} inputs, ${deleted[1]} outputs, and ${deleted[2]} steps`);
288
+ return deleted;
289
+ }
290
+ exports.collectPayloads = collectPayloads;
291
+ function gcFilter(sysdb, cutoffEpochTimestampMs, params) {
292
+ params.push(cutoffEpochTimestampMs);
293
+ return `completed_at < $${params.length}`;
294
+ }
295
+ async function collectStatusBatch(sysdb, cutoffEpochTimestampMs, batchSize, watermark, windows) {
296
+ const client = await borrowRetentionClient(sysdb);
297
+ try {
298
+ const from = `"${sysdb.schemaName}".workflow_status`;
299
+ let step;
300
+ if (windows !== undefined) {
301
+ step = await windows.bound(client, 'completed_at', from, (params) => gcFilter(sysdb, cutoffEpochTimestampMs, params), watermark, cutoffEpochTimestampMs);
302
+ }
303
+ else {
304
+ const stepParams = [];
305
+ const stepScope = gcFilter(sysdb, cutoffEpochTimestampMs, stepParams);
306
+ stepParams.push(watermark);
307
+ step = await kthValue(sysdb, client, 'completed_at', from, `${stepScope} AND completed_at > $${stepParams.length}`, stepParams, batchSize);
308
+ }
309
+ const deleteParams = [];
310
+ let deleteScope = gcFilter(sysdb, cutoffEpochTimestampMs, deleteParams);
311
+ if (step !== undefined) {
312
+ deleteParams.push(watermark, step);
313
+ deleteScope = `${deleteScope} AND completed_at > $${deleteParams.length - 1} AND completed_at <= $${deleteParams.length}`;
314
+ }
315
+ await client.query(`DELETE FROM "${sysdb.schemaName}".workflow_status WHERE ${deleteScope}`, deleteParams);
316
+ return step;
317
+ }
318
+ finally {
319
+ releaseRetentionClient(sysdb, client);
320
+ }
321
+ }
322
+ async function collectStatuses(sysdb, cutoffEpochTimestampMs, rowsThreshold, options = {}) {
323
+ const batchSize = options.batchSize ?? exports.DEFAULT_GC_BATCH_SIZE;
324
+ if (!Number.isInteger(batchSize) || batchSize < 1) {
325
+ throw new error_1.DBOSError(`batchSize must be a positive integer, got ${batchSize}`);
326
+ }
327
+ if (rowsThreshold !== undefined && rowsThreshold !== null) {
328
+ const threshold = rowsThreshold;
329
+ const rowsBasedCutoff = await retryOnSerializationError(() => kthValue(sysdb, sysdb.pool, 'completed_at', `"${sysdb.schemaName}".workflow_status`, 'completed_at IS NOT NULL', [], threshold, true), sysdb);
330
+ if (rowsBasedCutoff !== undefined) {
331
+ if (cutoffEpochTimestampMs === undefined ||
332
+ cutoffEpochTimestampMs === null ||
333
+ rowsBasedCutoff > cutoffEpochTimestampMs) {
334
+ cutoffEpochTimestampMs = rowsBasedCutoff;
335
+ }
336
+ }
337
+ }
338
+ if (cutoffEpochTimestampMs === undefined || cutoffEpochTimestampMs === null) {
339
+ return undefined;
340
+ }
341
+ const cutoff = cutoffEpochTimestampMs;
342
+ const oldest = await retryOnSerializationError(() => {
343
+ const params = [];
344
+ const scope = gcFilter(sysdb, cutoff, params);
345
+ return kthValue(sysdb, sysdb.pool, 'completed_at', `"${sysdb.schemaName}".workflow_status`, scope, params, 1);
346
+ }, sysdb);
347
+ let watermark = oldest === undefined ? 0 : oldest - 1;
348
+ const windows = sysdb.sharded ? new WindowBatches(batchSize) : undefined;
349
+ for (;;) {
350
+ const next = await retryOnSerializationError(() => collectStatusBatch(sysdb, cutoff, batchSize, watermark, windows), sysdb);
351
+ if (next === undefined)
352
+ return cutoff;
353
+ watermark = next;
354
+ }
355
+ }
356
+ exports.collectStatuses = collectStatuses;
357
+ async function listTimedOutWorkflowIds(sysdb, cutoffEpochTimestampMs) {
358
+ return (0, system_database_1.withDbRetry)(async () => {
359
+ const params = [
360
+ cutoffEpochTimestampMs,
361
+ workflow_1.StatusString.PENDING,
362
+ workflow_1.StatusString.ENQUEUED,
363
+ workflow_1.StatusString.DELAYED,
364
+ ];
365
+ const scope = sysdb.appNameFilter('application_name', sysdb.appName, params);
366
+ const key = sysdb.keyColumn(undefined);
367
+ const { rows } = await sysdb.pool.query(`SELECT workflow_uuid, ${key ?? 'NULL'} AS shard_key
368
+ FROM "${sysdb.schemaName}".workflow_status
369
+ WHERE created_at <= $1
370
+ AND status IN ($2, $3, $4)
371
+ AND ${scope}`, params);
372
+ return rows.map((row) => [row.workflow_uuid, row.shard_key ?? undefined]);
373
+ });
374
+ }
375
+ exports.listTimedOutWorkflowIds = listTimedOutWorkflowIds;
376
+ async function garbageCollect(sysdb, cutoffEpochTimestampMs, rowsThreshold, options = {}) {
377
+ if (rowsThreshold !== undefined && rowsThreshold !== null && sysdb.sharded) {
378
+ throw new error_1.DBOSError('A rows threshold is not supported on a sharded system database; use a time cutoff instead');
379
+ }
380
+ if ((cutoffEpochTimestampMs === undefined || cutoffEpochTimestampMs === null) &&
381
+ (rowsThreshold === undefined || rowsThreshold === null)) {
382
+ return;
383
+ }
384
+ const lock = await acquireRetentionLock(sysdb);
385
+ if (!lock) {
386
+ sysdb.logger.warn('Skipping retention: another round is already running against this system database.');
387
+ return;
388
+ }
389
+ try {
390
+ const batchSize = options.batchSize ?? undefined;
391
+ const cutoff = await collectStatuses(sysdb, cutoffEpochTimestampMs, rowsThreshold, { batchSize });
392
+ if (cutoff === undefined) {
393
+ return;
394
+ }
395
+ await collectPayloads(sysdb, cutoff, batchSize);
396
+ }
397
+ finally {
398
+ await lock.release();
399
+ }
400
+ }
401
+ exports.garbageCollect = garbageCollect;
402
+ async function globalTimeout(sysdb, cutoffEpochTimestampMs) {
403
+ for (const [workflowID, shardKey] of await listTimedOutWorkflowIds(sysdb, cutoffEpochTimestampMs)) {
404
+ await (0, shard_keys_1.bindShardKeys)([[workflowID, shardKey]], () => sysdb.cancelWorkflows([workflowID]));
405
+ }
406
+ }
407
+ exports.globalTimeout = globalTimeout;
408
+ //# sourceMappingURL=retention.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"retention.js","sourceRoot":"","sources":["../../src/retention.ts"],"names":[],"mappings":";;;;;;;;;;AAEA,2CAA0C;AAC1C,6EAAyE;AACzE,6DAA8D;AAE9D,uEAAuE;AACvE,mCAA6D;AAC7D,iFAOqD;AACrD,6DAA4D;AAC5D,mEAAoE;AAMpE,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,OAAO;IACP,OAAO;CACR,CAAC,CAAC;AAEH,SAAS,oBAAoB,CAAC,GAAY,EAAE,KAAqB;IAC/D,KAAK,MAAM,CAAC,IAAI,IAAA,8BAAY,EAAC,GAAG,CAAC,EAAE,CAAC;QAElC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,IAAA,mCAAiB,EAAC,CAAC,CAAC,IAAI,4BAA4B,CAAC,GAAG,CAAC,CAAC,CAAC,IAAK,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,KAAK,UAAU,qBAAqB,CAAC,KAAqB;IACxD,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACrC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,MAAM,CAAC;AAChB,CAAC;AAGD,SAAS,sBAAsB,CAAC,KAAqB,EAAE,MAAkB,EAAE,UAAmB,KAAK;IACjG,IAAI,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAE1C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAMM,KAAK,UAAU,yBAAyB,CAAI,SAA2B,EAAE,KAAqB;IACnG,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,MAAM,UAAU,GAAG,GAAG,CAAC;IACvB,IAAI,OAAO,GAAG,IAAI,CAAC;IACnB,KAAK,IAAI,OAAO,GAAG,CAAC,GAAI,OAAO,EAAE,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,OAAO,MAAM,SAAS,EAAE,CAAC;QAC3B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC;gBACpC,MAAM,CAAC,CAAC;YACV,CAAC;YACD,MAAM,OAAO,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YAC3D,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;gBAC5B,4BAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,mCAAmC,WAAW,cAAc,OAAO,EAAE,CAAC,CAAC;gBAChH,MAAM,CAAC,CAAC;YACV,CAAC;YAED,MAAM,aAAa,GAAG,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACtD,4BAAY,CAAC,cAAc,EAAE,MAAM,CAAC,IAAI,CACtC,mEAAmE,OAAO,IAAI;gBAC5E,eAAe,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,GAAG,CAClE,CAAC;YACF,MAAM,IAAA,eAAO,EAAC,aAAa,GAAG,IAAI,CAAC,CAAC;YACpC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;AACH,CAAC;AA1BD,8DA0BC;AAQD,SAAgB,gBAAgB,CAAC,UAAkB;IACjD,OAAO,IAAA,iCAAe,EAAC,kBAAkB,UAAU,EAAE,CAAC,CAAC;AACzD,CAAC;AAFD,4CAEC;AAGY,QAAA,qBAAqB,GAAG,MAAM,CAAC;AAG5C,KAAK,UAAU,QAAQ,CACrB,KAAqB,EACrB,MAAyB,EACzB,MAAc,EACd,IAAY,EACZ,KAAa,EACb,MAAiB,EACjB,CAAS,EACT,aAAsB,KAAK;IAG3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,iBAAS,CAAC,mBAAmB,CAAC,wCAAwC,CAAC,CAAC;IACpF,CAAC;IACD,MAAM,KAAK,GAAG,YAAY,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAC/D,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC,UAAU,MAAM,kBAAkB,IAAI,UAAU,KAAK,IAAI,KAAK,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAC1G,MAAM,CACP,CAAC;QAEF,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7D,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC,UAAU,MAAM,kBAAkB,IAAI,UAAU,KAAK,IAAI,KAAK,UAAU,CAAC,EAAE,EAC3E,MAAM,CACP,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjG,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC;AAGD,MAAM,uBAAuB,GAAG,KAAK,CAAC;AAGtC,MAAa,aAAa;IAGH;IAFrB,KAAK,GAAG,uBAAuB,CAAC;IAEhC,YAAqB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAG1C,KAAK,CAAC,KAAK,CACT,MAAyB,EACzB,MAAc,EACd,IAAY,EACZ,QAAuC,EACvC,SAAiB,EACjB,MAAc;QAEd,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,IAAI,EAAE,GAAG,SAAS,CAAC;QAEnB,IAAI,IAAI,GAAuB,SAAS,CAAC;QACzC,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,SAAS,GAAuB,SAAS,CAAC;QAC9C,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,IAAI,KAAc,CAAC;QACnB,IAAI,CAAS,CAAC;QACd,SAAS,CAAC;YACR,KAAK,GAAG,EAAE,IAAI,MAAM,CAAC;YACrB,MAAM,MAAM,GAAc,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,GAAG,MAAM,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,KAAK;gBAAE,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,QAAQ,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;YAC5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACjC,iCAAiC,IAAI,UAAU,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,EACrE,MAAM,CACP,CAAC;YACF,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;gBAE7B,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;gBACjC,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;gBACxB,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC/C,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;oBACrC,EAAE,GAAG,IAAI,CAAC;oBACV,CAAC,GAAG,SAAS,CAAC;oBACd,KAAK,GAAG,KAAK,CAAC;oBACd,MAAM;gBACR,CAAC;gBACD,SAAS;YACX,CAAC;YACD,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBAClC,IAAI,KAAK;oBAAE,OAAO,SAAS,CAAC;gBAE5B,MAAM,UAAU,GAAc,EAAE,CAAC;gBACjC,MAAM,SAAS,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,QAAQ,MAAM,OAAO,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpF,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,KAAK,CACvC,cAAc,MAAM,kBAAkB,IAAI,UAAU,SAAS,EAAE,EAC/D,UAAU,CACX,CAAC;gBACF,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,SAAS;oBAAE,OAAO,SAAS,CAAC;gBAC5E,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC9B,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAExB,IAAI,GAAG,EAAE,CAAC;gBACV,SAAS,GAAG,CAAC,CAAC;gBACd,EAAE,GAAG,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBACtF,IAAI,SAAS,KAAK,SAAS,IAAI,EAAE,IAAI,IAAI;oBAAE,MAAM;gBACjD,SAAS;YACX,CAAC;YACD,MAAM;QACR,CAAC;QACD,IAAI,KAAK;YAAE,OAAO,SAAS,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QAElC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AA5ED,sCA4EC;AAQM,KAAK,UAAU,oBAAoB,CACxC,KAAqB;IAErB,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,MAAM,IAAA,uBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;IAC9C,CAAC;IACD,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,IAAkB,CAAC;IACvB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,IAAA,uBAAe,EAAC,MAAM,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IACjH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QAEX,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,CAAC;IACV,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,IAAI,EAAE;QAEzB,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACxC,OAAO;QACT,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACnB,MAAM,OAAO,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC;AAjCD,oDAiCC;AAGD,KAAK,UAAU,YAAY,CAAC,KAAqB,EAAE,MAAyB;IAC1E,IAAI,MAAM,IAAA,uBAAW,EAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO;IACT,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,OAAO,GAAa,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAG,CAAC,MAA4B,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACtF,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9B,IAAI,CAAC;QACH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAE3B,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,KAAK,CAAC,qDAAqD,KAAK,CAAC,UAAU,MAAM,KAAK,GAAG,CAAC,CAAC;YAC1G,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxC,MAAM,CAAC,CAAC;gBACV,CAAC;gBACD,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,KAAK,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1F,SAAS;YACX,CAAC;YAGD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,KAAK,KAAK,MAAM,EAAE,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC1C,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAGD,KAAK,UAAU,mBAAmB,CAChC,KAAqB,EACrB,KAAa,EACb,MAAc,EACd,SAAiB;IAIjB,MAAM,QAAQ,GAAG;4BACS,KAAK,CAAC,UAAU;mBACzB,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC;WAC/B,CAAC;IACV,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;IAG9C,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAC5C,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,0BAA0B,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,EACvG,KAAK,CACN,CAAC;IACF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,SAAS,GAAG,MAAM,GAAG,CAAC,CAAC;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,SAAS,CAAC;QACR,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,KAAK,IAAI,EAAE;YAGvD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC;gBAGH,MAAM,IAAI,GACR,OAAO,KAAK,SAAS;oBACnB,CAAC,CAAC,MAAM,OAAO,CAAC,KAAK,CACjB,MAAM,EACN,qBAAqB,EACrB,IAAI,EACJ,CAAC,MAAM,EAAE,EAAE,CAAC,0BAA0B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAC3D,SAAS,EACT,MAAM,CACP;oBACH,CAAC,CAAC,MAAM,QAAQ,CACZ,KAAK,EACL,MAAM,EACN,qBAAqB,EACrB,IAAI,EACJ,uDAAuD,EACvD,CAAC,MAAM,EAAE,SAAS,CAAC,EACnB,SAAS,CACV,CAAC;gBACR,MAAM,MAAM,GAAc,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAE9C,MAAM,UAAU,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iCAAiC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;gBACnG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAC/B,gBAAgB,KAAK,CAAC,UAAU,KAAK,KAAK;6EACyB,UAAU,OAAO,QAAQ,EAAE,EAC9F,MAAM,CACP,CAAC;gBACF,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;YACjD,CAAC;oBAAS,CAAC;gBACT,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxC,CAAC;QACH,CAAC,EAAE,KAAK,CAAC,CAAC;QACV,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC;QACvB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;AACH,CAAC;AAOM,KAAK,UAAU,eAAe,CACnC,KAAqB,EACrB,MAAc,EACd,YAAoB,6BAAqB;IAGzC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,iBAAS,CAAC,6CAA6C,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,gBAAgB,EAAE,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;IAG1E,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,iBAAiB,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;IAK1D,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,mCAAiB,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAa,IAAI,KAAK,CAAS,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,KAAK,GAAG,KAAK,IAAI,EAAE;QACvB,SAAS,CAAC;YACR,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;YACjB,IAAI,CAAC,IAAI,MAAM,CAAC,MAAM;gBAAE,OAAO;YAC/B,IAAI,CAAC;gBACH,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YAC9E,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAEtE,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACtH,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,QAAQ,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IAED,MAAM,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,OAAO,CAAC,CAAC,CAAC,YAAY,OAAO,CAAC,CAAC,CAAC,iBAAiB,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrH,OAAO,OAAO,CAAC;AACjB,CAAC;AA9CD,0CA8CC;AAOD,SAAS,QAAQ,CAAC,KAAqB,EAAE,sBAA8B,EAAE,MAAiB;IACxF,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,mBAAmB,MAAM,CAAC,MAAM,EAAE,CAAC;AAC5C,CAAC;AAOD,KAAK,UAAU,kBAAkB,CAC/B,KAAqB,EACrB,sBAA8B,EAC9B,SAAiB,EACjB,SAAiB,EACjB,OAAkC;IAIlC,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,KAAK,CAAC,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,UAAU,mBAAmB,CAAC;QACrD,IAAI,IAAwB,CAAC;QAC7B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,IAAI,GAAG,MAAM,OAAO,CAAC,KAAK,CACxB,MAAM,EACN,cAAc,EACd,IAAI,EACJ,CAAC,MAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAC3D,SAAS,EACT,sBAAsB,CACvB,CAAC;QACJ,CAAC;aAAM,CAAC;YAEN,MAAM,UAAU,GAAc,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,EAAE,sBAAsB,EAAE,UAAU,CAAC,CAAC;YACtE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,IAAI,GAAG,MAAM,QAAQ,CACnB,KAAK,EACL,MAAM,EACN,cAAc,EACd,IAAI,EACJ,GAAG,SAAS,wBAAwB,UAAU,CAAC,MAAM,EAAE,EACvD,UAAU,EACV,SAAS,CACV,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAc,EAAE,CAAC;QACnC,IAAI,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,sBAAsB,EAAE,YAAY,CAAC,CAAC;QACxE,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAEvB,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YACnC,WAAW,GAAG,GAAG,WAAW,wBAAwB,YAAY,CAAC,MAAM,GAAG,CAAC,yBAAyB,YAAY,CAAC,MAAM,EAAE,CAAC;QAC5H,CAAC;QAGD,MAAM,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,UAAU,2BAA2B,WAAW,EAAE,EAAE,YAAY,CAAC,CAAC;QAE3G,OAAO,IAAI,CAAC;IACd,CAAC;YAAS,CAAC;QACT,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAQM,KAAK,UAAU,eAAe,CACnC,KAAqB,EACrB,sBAAsC,EACtC,aAA6B,EAC7B,UAAyC,EAAE;IAE3C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,6BAAqB,CAAC;IAE7D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,iBAAS,CAAC,6CAA6C,SAAS,EAAE,CAAC,CAAC;IAChF,CAAC;IAED,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QAE1D,MAAM,SAAS,GAAG,aAAa,CAAC;QAChC,MAAM,eAAe,GAAG,MAAM,yBAAyB,CACrD,GAAG,EAAE,CACH,QAAQ,CACN,KAAK,EACL,KAAK,CAAC,IAAI,EACV,cAAc,EACd,IAAI,KAAK,CAAC,UAAU,mBAAmB,EACvC,0BAA0B,EAC1B,EAAE,EACF,SAAS,EACT,IAAI,CACL,EACH,KAAK,CACN,CAAC;QAEF,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAElC,IACE,sBAAsB,KAAK,SAAS;gBACpC,sBAAsB,KAAK,IAAI;gBAC/B,eAAe,GAAG,sBAAsB,EACxC,CAAC;gBACD,sBAAsB,GAAG,eAAe,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,sBAAsB,KAAK,SAAS,IAAI,sBAAsB,KAAK,IAAI,EAAE,CAAC;QAC5E,OAAO,SAAS,CAAC;IACnB,CAAC;IAGD,MAAM,MAAM,GAAG,sBAAsB,CAAC;IAItC,MAAM,MAAM,GAAG,MAAM,yBAAyB,CAAC,GAAG,EAAE;QAClD,MAAM,MAAM,GAAc,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,KAAK,CAAC,UAAU,mBAAmB,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAChH,CAAC,EAAE,KAAK,CAAC,CAAC;IAEV,IAAI,SAAS,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACzE,SAAS,CAAC;QACR,MAAM,IAAI,GAAG,MAAM,yBAAyB,CAC1C,GAAG,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EACtE,KAAK,CACN,CAAC;QAEF,IAAI,IAAI,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACtC,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;AACH,CAAC;AApED,0CAoEC;AAMM,KAAK,UAAU,uBAAuB,CAC3C,KAAqB,EACrB,sBAA8B;IAE9B,OAAO,IAAA,6BAAW,EAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,MAAM,GAAc;YACxB,sBAAsB;YACtB,uBAAY,CAAC,OAAO;YACpB,uBAAY,CAAC,QAAQ;YACrB,uBAAY,CAAC,OAAO;SACrB,CAAC;QACF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,kBAAkB,EAAE,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACvC,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CACrC,yBAAyB,GAAG,IAAI,MAAM;eAC7B,KAAK,CAAC,UAAU;;;eAGhB,KAAK,EAAE,EAChB,MAAM,CACP,CAAC;QACF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC;AAvBD,0DAuBC;AAGM,KAAK,UAAU,cAAc,CAClC,KAAqB,EACrB,sBAAsC,EACtC,aAA6B,EAC7B,UAAyC,EAAE;IAE3C,IAAI,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAE3E,MAAM,IAAI,iBAAS,CAAC,2FAA2F,CAAC,CAAC;IACnH,CAAC;IACD,IACE,CAAC,sBAAsB,KAAK,SAAS,IAAI,sBAAsB,KAAK,IAAI,CAAC;QACzE,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,IAAI,CAAC,EACvD,CAAC;QACD,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,CAAC;IAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;QACxG,OAAO;IACT,CAAC;IACD,IAAI,CAAC;QAEH,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,SAAS,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,sBAAsB,EAAE,aAAa,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;QAClG,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAGD,MAAM,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAClD,CAAC;YAAS,CAAC;QACT,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AAlCD,wCAkCC;AAEM,KAAK,UAAU,aAAa,CAAC,KAAqB,EAAE,sBAA8B;IAEvF,KAAK,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,MAAM,uBAAuB,CAAC,KAAK,EAAE,sBAAsB,CAAC,EAAE,CAAC;QAClG,MAAM,IAAA,0BAAa,EAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;AACH,CAAC;AALD,sCAKC"}
@@ -0,0 +1,9 @@
1
+ // Copyright (c) 2026 DBOS, Inc. All rights reserved.
2
+ //
3
+ // This file is part of Transact Enterprise, proprietary software licensed under the
4
+ // DBOS Conductor Software License: https://www.dbos.dev/conductor-license
5
+ // You may not use, copy, modify, or distribute this file except as that license permits.
6
+ // Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
7
+ // that gate it is a material breach of that license.
8
+ export { ShardedSystemDatabase } from './sys_db';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sharding/index.ts"],"names":[],"mappings":";;;;;;;AAEA,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,13 @@
1
+ // Copyright (c) 2026 DBOS, Inc. All rights reserved.
2
+ //
3
+ // This file is part of Transact Enterprise, proprietary software licensed under the
4
+ // DBOS Conductor Software License: https://www.dbos.dev/conductor-license
5
+ // You may not use, copy, modify, or distribute this file except as that license permits.
6
+ // Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
7
+ // that gate it is a material breach of that license.
8
+ "use strict";
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.ShardedSystemDatabase = void 0;
11
+ var sys_db_1 = require("./sys_db");
12
+ Object.defineProperty(exports, "ShardedSystemDatabase", { enumerable: true, get: function () { return sys_db_1.ShardedSystemDatabase; } });
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sharding/index.ts"],"names":[],"mappings":";;;;;;;;;;AAEA,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA"}
@@ -0,0 +1,20 @@
1
+ // Copyright (c) 2026 DBOS, Inc. All rights reserved.
2
+ //
3
+ // This file is part of Transact Enterprise, proprietary software licensed under the
4
+ // DBOS Conductor Software License: https://www.dbos.dev/conductor-license
5
+ // You may not use, copy, modify, or distribute this file except as that license permits.
6
+ // Disabling or circumventing the entitlement checks in @dbos-inc/dbos-sdk's src/enterprise.ts
7
+ // that gate it is a material breach of that license.
8
+ import type { PoolClient } from 'pg';
9
+ import { type SystemDatabase } from '@dbos-inc/dbos-sdk/internal/system_database';
10
+ export interface Statement {
11
+ sql: string;
12
+ creates?: string;
13
+ }
14
+ export declare function getShardedMigrations(schema: string): Statement[][];
15
+ export declare const LATEST_VERSION: number;
16
+ export declare function currentVersion(sysdb: SystemDatabase): Promise<number>;
17
+ export declare function citusInstalled(client: PoolClient): Promise<boolean>;
18
+ export declare function runMigrations(sysdb: SystemDatabase): Promise<void>;
19
+ export declare function verifyMigrations(sysdb: SystemDatabase): Promise<void>;
20
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/sharding/migrations.ts"],"names":[],"mappings":";;;;;;;AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAErC,OAAO,EAAqB,KAAK,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAQrG,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAkXD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,EAAE,CAGlE;AAED,eAAO,MAAM,cAAc,QAAsC,CAAC;AAOlE,wBAAsB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAO3E;AA0BD,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzE;AAoBD,wBAAsB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCxE;AA4BD,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAU3E"}