@dbos-inc/pgnotifier-receiver 3.0.35-preview

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.
@@ -0,0 +1,593 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DBTrigger = exports.dbListen = exports.DBTriggerConfig = exports.TriggerOperation = void 0;
4
+ const dbos_sdk_1 = require("@dbos-inc/dbos-sdk");
5
+ ////
6
+ // Configuration
7
+ ////
8
+ var TriggerOperation;
9
+ (function (TriggerOperation) {
10
+ TriggerOperation["RecordInserted"] = "insert";
11
+ TriggerOperation["RecordDeleted"] = "delete";
12
+ TriggerOperation["RecordUpdated"] = "update";
13
+ TriggerOperation["RecordUpserted"] = "upsert";
14
+ })(TriggerOperation || (exports.TriggerOperation = TriggerOperation = {}));
15
+ class DBTriggerConfig {
16
+ // Database table to trigger
17
+ tableName = '';
18
+ // Database table schema (optional)
19
+ schemaName = undefined;
20
+ // These identify the record, for elevation to function parameters
21
+ recordIDColumns = undefined;
22
+ // Should DB trigger / notification be used?
23
+ useDBNotifications = false;
24
+ // Should DB trigger be auto-installed?
25
+ installDBTrigger = false;
26
+ // This identify the record sequence number, for checkpointing the sys db
27
+ sequenceNumColumn = undefined;
28
+ // In case sequence numbers aren't perfectly in order, how far off could they be?
29
+ sequenceNumJitter = undefined;
30
+ // This identifies the record timestamp, for checkpointing the sysdb
31
+ timestampColumn = undefined;
32
+ // In case sequence numbers aren't perfectly in order, how far off could they be?
33
+ timestampSkewMS = undefined;
34
+ // Use a workflow queue if set
35
+ queueName = undefined;
36
+ // If not using triggers, frequency of polling, ms
37
+ dbPollingInterval = 5000;
38
+ }
39
+ exports.DBTriggerConfig = DBTriggerConfig;
40
+ async function dbListen(cfg, channels, callback) {
41
+ const notificationsClient = await cfg.connect();
42
+ for (const nname of channels) {
43
+ await notificationsClient.query(`LISTEN ${nname};`);
44
+ }
45
+ notificationsClient.on('notification', callback);
46
+ return {
47
+ close: async () => {
48
+ for (const nname of channels) {
49
+ try {
50
+ await notificationsClient.query(`UNLISTEN ${nname};`);
51
+ }
52
+ catch (e) {
53
+ dbos_sdk_1.DBOS.logger.warn(e);
54
+ }
55
+ await cfg.disconnect(notificationsClient);
56
+ }
57
+ },
58
+ };
59
+ }
60
+ exports.dbListen = dbListen;
61
+ ///
62
+ // SQL Gen
63
+ ///
64
+ function quoteIdentifier(identifier) {
65
+ // Escape double quotes within the identifier by doubling them
66
+ return `"${identifier.replace(/"/g, '""')}"`;
67
+ }
68
+ function quoteConstant(cval) {
69
+ // Escape double quotes within the identifier by doubling them
70
+ return `${cval.replace(/'/g, "''")}`;
71
+ }
72
+ function createTriggerSQL(triggerFuncName, // Name of function for trigger to call
73
+ triggerName, // Trigger name
74
+ tableName, // As known to DB
75
+ tableNameString, // Passed as a value to notifier
76
+ notifierName) {
77
+ return `
78
+ CREATE OR REPLACE FUNCTION ${triggerFuncName}() RETURNS trigger AS $$
79
+ DECLARE
80
+ payload json;
81
+ BEGIN
82
+ IF TG_OP = 'INSERT' THEN
83
+ payload = json_build_object(
84
+ 'tname', '${quoteConstant(tableNameString)}',
85
+ 'operation', 'insert',
86
+ 'record', row_to_json(NEW)
87
+ );
88
+ ELSIF TG_OP = 'UPDATE' THEN
89
+ payload = json_build_object(
90
+ 'tname', '${quoteConstant(tableNameString)}',
91
+ 'operation', 'update',
92
+ 'record', row_to_json(NEW)
93
+ );
94
+ ELSIF TG_OP = 'DELETE' THEN
95
+ payload = json_build_object(
96
+ 'tname', '${quoteConstant(tableNameString)}',
97
+ 'operation', 'delete',
98
+ 'record', row_to_json(OLD)
99
+ );
100
+ END IF;
101
+
102
+ PERFORM pg_notify('${notifierName}', payload::text);
103
+ RETURN NEW;
104
+ END;
105
+ $$ LANGUAGE plpgsql;
106
+
107
+ CREATE OR REPLACE TRIGGER ${triggerName}
108
+ AFTER INSERT OR UPDATE OR DELETE ON ${tableName}
109
+ FOR EACH ROW EXECUTE FUNCTION ${triggerFuncName}();
110
+ `;
111
+ }
112
+ function createCatchupSql(tc, tableName, tableNameString, startSeqNum, startTimeStamp) {
113
+ // Query string
114
+ let sncpred = '';
115
+ let oby = '';
116
+ const params = [];
117
+ if (tc.sequenceNumColumn && startSeqNum) {
118
+ params.push(startSeqNum);
119
+ sncpred = ` ${quoteIdentifier(tc.sequenceNumColumn)} > $${params.length} AND `;
120
+ oby = `ORDER BY ${quoteIdentifier(tc.sequenceNumColumn)}`;
121
+ }
122
+ let tscpred = '';
123
+ if (tc.timestampColumn && startTimeStamp) {
124
+ params.push(new Date(startTimeStamp));
125
+ tscpred = ` ${quoteIdentifier(tc.timestampColumn)} > $${params.length} AND `;
126
+ oby = `ORDER BY ${quoteIdentifier(tc.timestampColumn)}`;
127
+ }
128
+ const query = `
129
+ SELECT json_build_object(
130
+ 'tname', '${quoteConstant(tableNameString)}',
131
+ 'operation', 'upsert',
132
+ 'record', row_to_json(t)
133
+ )::text as payload
134
+ FROM (
135
+ SELECT *
136
+ FROM ${tableName}
137
+ WHERE ${sncpred} ${tscpred} 1=1
138
+ ${oby}
139
+ ) t
140
+ `;
141
+ return { query, params };
142
+ }
143
+ class TriggerPayloadQueue {
144
+ notifyPayloads = [];
145
+ catchupPayloads = [];
146
+ catchupFinished = false;
147
+ shutdown = false;
148
+ waiting = [];
149
+ enqueueCatchup(tp) {
150
+ const resolve = this.waiting.shift();
151
+ if (resolve) {
152
+ resolve(tp);
153
+ }
154
+ else {
155
+ this.catchupPayloads.push(tp);
156
+ }
157
+ }
158
+ enqueueNotify(tp) {
159
+ if (!this.catchupFinished) {
160
+ this.notifyPayloads.push(tp);
161
+ return;
162
+ }
163
+ const resolve = this.waiting.shift();
164
+ if (resolve) {
165
+ resolve(tp);
166
+ }
167
+ else {
168
+ this.notifyPayloads.push(tp);
169
+ }
170
+ }
171
+ async dequeue() {
172
+ if (this.shutdown)
173
+ return null;
174
+ if (this.catchupPayloads.length > 0) {
175
+ return this.catchupPayloads.shift();
176
+ }
177
+ else if (this.catchupFinished && this.notifyPayloads.length > 0) {
178
+ return this.notifyPayloads.shift();
179
+ }
180
+ else {
181
+ return new Promise((resolve) => {
182
+ this.waiting.push(resolve);
183
+ });
184
+ }
185
+ }
186
+ finishCatchup() {
187
+ this.catchupFinished = true;
188
+ while (true) {
189
+ if (!this.waiting[0] || !this.notifyPayloads[0])
190
+ break;
191
+ this.waiting.shift()(this.notifyPayloads.shift());
192
+ }
193
+ }
194
+ stop() {
195
+ this.shutdown = true;
196
+ while (true) {
197
+ const resolve = this.waiting.shift();
198
+ if (!resolve)
199
+ break;
200
+ resolve(null);
201
+ }
202
+ }
203
+ restart() {
204
+ this.shutdown = false;
205
+ }
206
+ }
207
+ class DBTrigger {
208
+ db;
209
+ listeners = [];
210
+ tableToReg = new Map();
211
+ shutdown = false;
212
+ payloadQ = new TriggerPayloadQueue();
213
+ dispatchLoops = [];
214
+ pollers = [];
215
+ pollLoops = [];
216
+ constructor(db) {
217
+ this.db = db;
218
+ dbos_sdk_1.DBOS.registerLifecycleCallback(this);
219
+ }
220
+ async createPoll(tc, fullname, tname, tstr) {
221
+ // Initiate catchup work
222
+ let recseqnum = null;
223
+ let rectmstmp = null;
224
+ if (tc.sequenceNumColumn || tc.timestampColumn) {
225
+ const lasts = await dbos_sdk_1.DBOS.getEventDispatchState('trigger', fullname, 'last');
226
+ recseqnum = lasts?.updateSeq ? BigInt(lasts.updateSeq) : null;
227
+ rectmstmp = lasts?.updateTime ?? null;
228
+ if (recseqnum && tc.sequenceNumJitter) {
229
+ recseqnum -= BigInt(tc.sequenceNumJitter);
230
+ }
231
+ if (rectmstmp && tc.timestampSkewMS) {
232
+ rectmstmp -= tc.timestampSkewMS;
233
+ }
234
+ }
235
+ // Catchup query
236
+ return createCatchupSql(tc, tname, tstr, recseqnum, rectmstmp);
237
+ }
238
+ async initialize() {
239
+ this.shutdown = false;
240
+ this.payloadQ.restart();
241
+ this.tableToReg.clear();
242
+ const hasTrigger = new Set();
243
+ let hasAnyTrigger = false;
244
+ let hasAnyPoller = false;
245
+ const nname = 'dbos_table_update';
246
+ const catchups = [];
247
+ const regops = dbos_sdk_1.DBOS.getAssociatedInfo(this);
248
+ for (const registeredOperation of regops) {
249
+ const mo = registeredOperation.methodConfig;
250
+ if (mo.triggerConfig) {
251
+ const mr = registeredOperation.methodReg;
252
+ const cname = mr.className;
253
+ const mname = mr.name;
254
+ const tname = mo.triggerConfig.schemaName
255
+ ? `${quoteIdentifier(mo.triggerConfig.schemaName)}.${quoteIdentifier(mo.triggerConfig.tableName)}`
256
+ : quoteIdentifier(mo.triggerConfig.tableName);
257
+ const tfname = `tf_${cname}_${mname}`;
258
+ const tstr = mo.triggerConfig.schemaName
259
+ ? `${mo.triggerConfig.schemaName}.${mo.triggerConfig.tableName}`
260
+ : mo.triggerConfig.tableName;
261
+ const trigname = `dbt_${cname}_${mname}`;
262
+ const fullname = `${cname}.${mname}`;
263
+ if (!this.tableToReg.has(tstr)) {
264
+ this.tableToReg.set(tstr, []);
265
+ }
266
+ this.tableToReg.get(tstr).push(registeredOperation);
267
+ let registeredThis = false;
268
+ if (mo.triggerConfig.useDBNotifications || mo.triggerConfig.installDBTrigger) {
269
+ if (!hasTrigger.has(tname)) {
270
+ const trigSQL = createTriggerSQL(tfname, trigname, tname, tstr, nname);
271
+ if (mo.triggerConfig.installDBTrigger) {
272
+ await this.db.query(trigSQL);
273
+ }
274
+ else {
275
+ dbos_sdk_1.DBOS.logger.info(` DBOS DB Trigger: For DB notifications, install the following SQL: \n${trigSQL}`);
276
+ }
277
+ hasTrigger.add(tname);
278
+ hasAnyTrigger = true;
279
+ }
280
+ registeredThis = true;
281
+ }
282
+ if (mo.triggerIsWorkflow) {
283
+ // Initiate catchup work
284
+ const tc = mo.triggerConfig;
285
+ const catchup = await this.createPoll(tc, fullname, tname, tstr);
286
+ // Catchup query
287
+ catchups.push(catchup);
288
+ // Launch poller if needed
289
+ if (!(mo.triggerConfig.useDBNotifications || mo.triggerConfig.installDBTrigger) && tc.dbPollingInterval) {
290
+ const poller = new DBTPollingLoop(this, tc, registeredOperation, tname, tstr);
291
+ this.pollers.push(poller);
292
+ this.pollLoops.push(poller.startLoop());
293
+ hasAnyPoller = true;
294
+ registeredThis = true;
295
+ }
296
+ }
297
+ if (!registeredThis) {
298
+ dbos_sdk_1.DBOS.logger.warn(`The DB trigger configuration for ${fullname} does not specify to use DB notifications, nor does it provide a polling interval, and will therefore never run.`);
299
+ }
300
+ }
301
+ }
302
+ if (hasAnyTrigger || hasAnyPoller) {
303
+ if (hasAnyTrigger) {
304
+ const handler = (msg) => {
305
+ if (msg.channel !== nname)
306
+ return;
307
+ const payload = JSON.parse(msg.payload);
308
+ this.payloadQ.enqueueNotify(payload);
309
+ };
310
+ this.listeners.push(await dbListen(this.db, [nname], handler));
311
+ dbos_sdk_1.DBOS.logger.info(`DB Triggers now listening for '${nname}'`);
312
+ for (const q of catchups) {
313
+ const catchupFunc = async () => {
314
+ try {
315
+ const rows = await this.db.query(q.query, q.params);
316
+ for (const r of rows) {
317
+ const payload = JSON.parse(r.payload);
318
+ this.payloadQ.enqueueCatchup(payload);
319
+ }
320
+ }
321
+ catch (e) {
322
+ dbos_sdk_1.DBOS.logger.error(e);
323
+ }
324
+ };
325
+ await catchupFunc();
326
+ }
327
+ this.payloadQ.finishCatchup();
328
+ }
329
+ const payloadFunc = async (payload) => {
330
+ for (const regOp of this.tableToReg.get(payload.tname) ?? []) {
331
+ const mr = regOp.methodReg;
332
+ const mo = regOp.methodConfig;
333
+ if (!mo.triggerConfig)
334
+ continue;
335
+ const key = [];
336
+ const keystr = [];
337
+ for (const kn of mo.triggerConfig?.recordIDColumns ?? []) {
338
+ const cv = Object.hasOwn(payload.record, kn) ? payload.record[kn] : undefined;
339
+ key.push(cv);
340
+ keystr.push(`${cv?.toString()}`);
341
+ }
342
+ try {
343
+ const cname = mr.className;
344
+ const mname = mr.name;
345
+ const fullname = `${cname}.${mname}`;
346
+ if (mo.triggerIsWorkflow) {
347
+ // Record the time of the wf kicked off (if given)
348
+ const tc = mo.triggerConfig;
349
+ let recseqnum = null;
350
+ let rectmstmp = null;
351
+ if (tc.sequenceNumColumn) {
352
+ if (!Object.hasOwn(payload.record, tc.sequenceNumColumn)) {
353
+ dbos_sdk_1.DBOS.logger.warn(`DB Trigger on '${fullname}' specifies sequence number column '${tc.sequenceNumColumn}, but is not in database record.'`);
354
+ continue;
355
+ }
356
+ const sn = payload.record[tc.sequenceNumColumn];
357
+ if (typeof sn === 'number') {
358
+ recseqnum = BigInt(sn);
359
+ }
360
+ else if (typeof sn === 'string') {
361
+ recseqnum = BigInt(sn);
362
+ }
363
+ else if (typeof sn === 'bigint') {
364
+ recseqnum = sn;
365
+ }
366
+ else {
367
+ dbos_sdk_1.DBOS.logger.warn(`DB Trigger on '${fullname}' specifies sequence number column '${tc.sequenceNumColumn}, but received "${JSON.stringify(sn)}" instead of number'`);
368
+ continue;
369
+ }
370
+ keystr.push(`${recseqnum.toString()}`);
371
+ }
372
+ if (tc.timestampColumn) {
373
+ if (!Object.hasOwn(payload.record, tc.timestampColumn)) {
374
+ dbos_sdk_1.DBOS.logger.warn(`DB Trigger on '${fullname}' specifies timestamp column '${tc.timestampColumn}, but is not in database record.'`);
375
+ continue;
376
+ }
377
+ const ts = payload.record[tc.timestampColumn];
378
+ if (ts instanceof Date) {
379
+ rectmstmp = ts.getTime();
380
+ }
381
+ else if (typeof ts === 'number') {
382
+ rectmstmp = ts;
383
+ }
384
+ else if (typeof ts === 'string') {
385
+ rectmstmp = new Date(ts).getTime();
386
+ }
387
+ else {
388
+ dbos_sdk_1.DBOS.logger.warn(`DB Trigger on '${fullname}' specifies timestamp column '${tc.timestampColumn}, but received "${JSON.stringify(ts)}" instead of date/number'`);
389
+ continue;
390
+ }
391
+ keystr.push(`${rectmstmp}`);
392
+ }
393
+ const wfParams = {
394
+ workflowUUID: `dbt_${cname}_${mname}_${keystr.join('|')}`,
395
+ configuredInstance: null,
396
+ queueName: tc.queueName,
397
+ };
398
+ if (payload.operation === TriggerOperation.RecordDeleted) {
399
+ dbos_sdk_1.DBOS.logger.warn(`DB Trigger ${fullname} on '${payload.tname}' witnessed a record deletion. Record deletion workflow triggers are not supported.`);
400
+ continue;
401
+ }
402
+ if (payload.operation === TriggerOperation.RecordUpdated && recseqnum === null && rectmstmp === null) {
403
+ dbos_sdk_1.DBOS.logger.warn(`DB Trigger ${fullname} on '${payload.tname}' witnessed a record update, but no sequence number / timestamp is defined. Record update workflow triggers will not work in this case.`);
404
+ continue;
405
+ }
406
+ if (rectmstmp !== null)
407
+ wfParams.workflowUUID += `_${rectmstmp}`;
408
+ if (recseqnum !== null)
409
+ wfParams.workflowUUID += `_${recseqnum}`;
410
+ payload.operation = TriggerOperation.RecordUpserted;
411
+ dbos_sdk_1.DBOS.logger.debug(`Executing ${fullname} on ID ${wfParams.workflowUUID} queue ${wfParams.queueName}`);
412
+ await dbos_sdk_1.DBOS.startWorkflow(regOp.methodReg.registeredFunction, wfParams)(payload.operation, key, payload.record);
413
+ await dbos_sdk_1.DBOS.upsertEventDispatchState({
414
+ service: 'trigger',
415
+ workflowFnName: fullname,
416
+ key: 'last',
417
+ value: '',
418
+ updateSeq: recseqnum ? recseqnum : undefined,
419
+ updateTime: rectmstmp ? rectmstmp : undefined,
420
+ });
421
+ }
422
+ else {
423
+ // Use original func, this may not be wrapped
424
+ (await regOp.methodReg.invoke(undefined, [payload.operation, key, payload.record]));
425
+ }
426
+ }
427
+ catch (e) {
428
+ dbos_sdk_1.DBOS.logger.warn(`Caught an exception in trigger handling for "${mr.className}.${mr.name}"`);
429
+ dbos_sdk_1.DBOS.logger.warn(e);
430
+ }
431
+ }
432
+ };
433
+ const processingFunc = async () => {
434
+ while (true) {
435
+ const p = await this.payloadQ.dequeue();
436
+ if (p === null)
437
+ break;
438
+ await payloadFunc(p);
439
+ }
440
+ };
441
+ this.dispatchLoops.push(processingFunc());
442
+ }
443
+ }
444
+ async destroy() {
445
+ this.shutdown = true;
446
+ this.payloadQ.stop();
447
+ for (const l of this.listeners) {
448
+ try {
449
+ await l.close();
450
+ }
451
+ catch (e) {
452
+ dbos_sdk_1.DBOS.logger.warn(e);
453
+ }
454
+ }
455
+ this.listeners = [];
456
+ for (const p of this.dispatchLoops) {
457
+ try {
458
+ await p;
459
+ }
460
+ catch (e) {
461
+ // Error in destroy, NBD
462
+ }
463
+ }
464
+ this.dispatchLoops = [];
465
+ for (const p of this.pollers) {
466
+ p.setStopLoopFlag();
467
+ }
468
+ this.pollers = [];
469
+ for (const p of this.pollLoops) {
470
+ try {
471
+ await p;
472
+ }
473
+ catch (e) {
474
+ // Error in destroy, NBD
475
+ }
476
+ }
477
+ this.pollLoops = [];
478
+ this.tableToReg = new Map();
479
+ }
480
+ logRegisteredEndpoints() {
481
+ dbos_sdk_1.DBOS.logger.info('Database trigger endpoints registered:');
482
+ const eps = dbos_sdk_1.DBOS.getAssociatedInfo(this);
483
+ for (const e of eps) {
484
+ const { methodConfig, methodReg } = e;
485
+ const mo = methodConfig;
486
+ if (mo.triggerConfig) {
487
+ const cname = methodReg.className;
488
+ const mname = methodReg.name;
489
+ const tname = mo.triggerConfig.schemaName
490
+ ? `${mo.triggerConfig.schemaName}.${mo.triggerConfig.tableName}`
491
+ : mo.triggerConfig.tableName;
492
+ dbos_sdk_1.DBOS.logger.info(` ${tname} -> ${cname}.${mname}`);
493
+ }
494
+ }
495
+ }
496
+ trigger(triggerConfig) {
497
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
498
+ const dbt = this;
499
+ function trigdec(target, propertyKey, descriptor) {
500
+ const { regInfo } = dbos_sdk_1.DBOS.associateFunctionWithInfo(dbt, descriptor.value, {
501
+ ctorOrProto: target,
502
+ name: propertyKey,
503
+ });
504
+ const triggerRegistration = regInfo;
505
+ triggerRegistration.triggerConfig = triggerConfig;
506
+ triggerRegistration.triggerIsWorkflow = false;
507
+ return descriptor;
508
+ }
509
+ return trigdec;
510
+ }
511
+ triggerWorkflow(wfTriggerConfig) {
512
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
513
+ const dbt = this;
514
+ function trigdec(target, propertyKey, descriptor) {
515
+ const { regInfo } = dbos_sdk_1.DBOS.associateFunctionWithInfo(dbt, descriptor.value, {
516
+ ctorOrProto: target,
517
+ name: propertyKey,
518
+ });
519
+ const triggerRegistration = regInfo;
520
+ triggerRegistration.triggerConfig = wfTriggerConfig;
521
+ triggerRegistration.triggerIsWorkflow = true;
522
+ return descriptor;
523
+ }
524
+ return trigdec;
525
+ }
526
+ }
527
+ exports.DBTrigger = DBTrigger;
528
+ class DBTPollingLoop {
529
+ trigER;
530
+ trigReg;
531
+ reg;
532
+ tname;
533
+ tstr;
534
+ isRunning = false;
535
+ interruptResolve;
536
+ trigMethodName;
537
+ constructor(trigER, trigReg, reg, tname, tstr) {
538
+ this.trigER = trigER;
539
+ this.trigReg = trigReg;
540
+ this.reg = reg;
541
+ this.tname = tname;
542
+ this.tstr = tstr;
543
+ this.trigMethodName = `${reg.methodReg.className}.${reg.methodReg.name}`;
544
+ }
545
+ async startLoop() {
546
+ // See if the exec time is available in durable storage...
547
+ let execTime = new Date().getTime();
548
+ this.isRunning = true;
549
+ while (this.isRunning) {
550
+ const nextExecTime = execTime + (this.trigReg.dbPollingInterval ?? 5000);
551
+ const sleepTime = nextExecTime - new Date().getTime();
552
+ execTime = nextExecTime;
553
+ if (sleepTime > 0) {
554
+ // Wait for either the timeout or an interruption
555
+ let timer;
556
+ const timeoutPromise = new Promise((resolve) => {
557
+ timer = setTimeout(() => {
558
+ resolve();
559
+ }, sleepTime);
560
+ });
561
+ await Promise.race([timeoutPromise, new Promise((_, reject) => (this.interruptResolve = reject))]).catch(() => {
562
+ dbos_sdk_1.DBOS.logger.debug('Trigger polling loop interrupted!');
563
+ }); // Interrupt sleep throws
564
+ clearTimeout(timer);
565
+ }
566
+ if (!this.isRunning) {
567
+ break;
568
+ }
569
+ // To catch-up poll
570
+ const catchup = await this.trigER.createPoll(this.trigReg, this.trigMethodName, this.tname, this.tstr);
571
+ try {
572
+ const rows = await this.trigER.db.query(catchup.query, catchup.params);
573
+ for (const r of rows) {
574
+ const payload = JSON.parse(r.payload);
575
+ // Post workflows back to dispatch loop; queue processor will do the updates
576
+ this.trigER.payloadQ.enqueueCatchup(payload);
577
+ }
578
+ }
579
+ catch (e) {
580
+ dbos_sdk_1.DBOS.logger.error(e);
581
+ }
582
+ }
583
+ }
584
+ setStopLoopFlag() {
585
+ if (!this.isRunning)
586
+ return;
587
+ this.isRunning = false;
588
+ if (this.interruptResolve) {
589
+ this.interruptResolve(); // Trigger the interruption
590
+ }
591
+ }
592
+ }
593
+ //# sourceMappingURL=dbtrigger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dbtrigger.js","sourceRoot":"","sources":["../../src/dbtrigger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { DBTriggerConfig, TriggerOperation, DBTrigger } from './dbtrigger';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DBTrigger = exports.TriggerOperation = exports.DBTriggerConfig = void 0;
4
+ var dbtrigger_1 = require("./dbtrigger");
5
+ Object.defineProperty(exports, "DBTriggerConfig", { enumerable: true, get: function () { return dbtrigger_1.DBTriggerConfig; } });
6
+ Object.defineProperty(exports, "TriggerOperation", { enumerable: true, get: function () { return dbtrigger_1.TriggerOperation; } });
7
+ Object.defineProperty(exports, "DBTrigger", { enumerable: true, get: function () { return dbtrigger_1.DBTrigger; } });
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;AAAA,yCAA2E;AAAlE,4GAAA,eAAe,OAAA;AAAE,6GAAA,gBAAgB,OAAA;AAAE,sGAAA,SAAS,OAAA"}
package/jest.config.js ADDED
@@ -0,0 +1,8 @@
1
+ /** @type {import('ts-jest').JestConfigWithTsJest} */
2
+ module.exports = {
3
+ preset: 'ts-jest',
4
+ testEnvironment: 'node',
5
+ testRegex: '((\\.|/)(test|spec))\\.ts?$',
6
+ moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
7
+ modulePaths: ['./'],
8
+ };