@beignet/provider-db-drizzle 0.0.49 → 0.0.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/README.md +9 -1
- package/dist/shared/outbox-core.d.ts.map +1 -1
- package/dist/shared/outbox-core.js +86 -5
- package/dist/shared/outbox-core.js.map +1 -1
- package/package.json +1 -1
- package/skills/database-provider/SKILL.md +4 -1
- package/src/shared/outbox-core.ts +95 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @beignet/provider-db-drizzle
|
|
2
2
|
|
|
3
|
+
## 0.0.51
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- ea3d734: Renew active outbox claims, reconcile exhausted deliveries, and surface uncertain lease or settlement outcomes across runtime and operational tools. Custom outbox adapters must implement `renewClaim(...)`, return `{ claimed, deadLettered }` from `claimBatch(...)`, and reject renewal or settlement after the active claim expires.
|
|
8
|
+
|
|
9
|
+
## 0.0.50
|
|
10
|
+
|
|
3
11
|
## 0.0.49
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -767,7 +767,15 @@ The adapter preserves Beignet's durable workflow semantics in SQL:
|
|
|
767
767
|
retried automatically.
|
|
768
768
|
|
|
769
769
|
`drainOutbox(...)` owns retry classification and backoff computation. The
|
|
770
|
-
Drizzle
|
|
770
|
+
Drizzle adapters store the resulting state and enforce claim ownership. A
|
|
771
|
+
renewal or settlement update must match the active claim token before
|
|
772
|
+
`locked_until`; expired claims cannot be revived or acknowledged. When an
|
|
773
|
+
expired claim has already reached `max_attempts`, the next claimant atomically
|
|
774
|
+
moves it to `deadLettered` instead of reclaiming it forever.
|
|
775
|
+
|
|
776
|
+
All dialects compare the worker-supplied timestamp with stored lease times.
|
|
777
|
+
Synchronize worker clocks across a deployment and leave lease margin for
|
|
778
|
+
expected clock drift and scheduling pauses.
|
|
771
779
|
|
|
772
780
|
Existing outbox tables need one nullable column before deploying this version:
|
|
773
781
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox-core.d.ts","sourceRoot":"","sources":["../../src/shared/outbox-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"outbox-core.d.ts","sourceRoot":"","sources":["../../src/shared/outbox-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAML,KAAK,eAAe,EAUpB,KAAK,UAAU,EAMhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAQ5C;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,KAAK;IACpC;;;OAGG;IACH,KAAK,EAAE,GAAG,CAAC;IAEX;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAErD;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;IAE9D;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE7C;;;;;OAKG;IACH,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;CAC3E;AAED;;GAEG;AACH,MAAM,WAAW,iBAAkB,SAAQ,eAAe,CAAC,iBAAiB,CAAC;IAC3E;;;;OAIG;IACH,eAAe,EAAE,GAAG,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AAmMD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,qBAA0B,GAClC,UAAU,CA4PZ;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,GAAE,qBAA0B,GAClC,eAAe,CA2HjB"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* This module must never import dialect database types — only `SQL` from
|
|
9
9
|
* drizzle-orm and core ports from `@beignet/core`.
|
|
10
10
|
*/
|
|
11
|
-
import { createOutboxMessage, DEFAULT_OUTBOX_LEASE_MS, OutboxAdminError, OutboxClaimError, serializeOutboxError, } from "@beignet/core/outbox";
|
|
11
|
+
import { createOutboxMessage, DEFAULT_OUTBOX_LEASE_MS, OutboxAbandonedClaimError, OutboxAdminError, OutboxClaimError, serializeOutboxError, } from "@beignet/core/outbox";
|
|
12
12
|
import { sql } from "drizzle-orm";
|
|
13
13
|
import { encodeTimestamp, rowToClaimedMessage, rowToMessage, } from "./rows.js";
|
|
14
14
|
function nowFrom(options) {
|
|
@@ -176,7 +176,35 @@ export function createOutboxPortCore(executor, options = {}) {
|
|
|
176
176
|
order by available_at asc, created_at asc
|
|
177
177
|
limit ${input.limit}${tx.claimLockSuffix}`));
|
|
178
178
|
const claimed = [];
|
|
179
|
+
const deadLettered = [];
|
|
179
180
|
for (const row of rows) {
|
|
181
|
+
if (row.attempts >= row.max_attempts) {
|
|
182
|
+
const abandonedError = new OutboxAbandonedClaimError({
|
|
183
|
+
id: row.id,
|
|
184
|
+
attempts: row.attempts,
|
|
185
|
+
maxAttempts: row.max_attempts,
|
|
186
|
+
});
|
|
187
|
+
const rowsAffected = await tx.run(sql `update ${tx.table}
|
|
188
|
+
set
|
|
189
|
+
status = 'deadLettered',
|
|
190
|
+
claimed_at = null,
|
|
191
|
+
locked_until = null,
|
|
192
|
+
claim_token = null,
|
|
193
|
+
last_error_json = ${JSON.stringify(serializeOutboxError(abandonedError))},
|
|
194
|
+
updated_at = ${nowIso}
|
|
195
|
+
where id = ${row.id}
|
|
196
|
+
and attempts >= max_attempts
|
|
197
|
+
and (
|
|
198
|
+
(status = 'pending' and available_at <= ${nowIso})
|
|
199
|
+
or (status = 'claimed' and locked_until is not null and locked_until <= ${nowIso})
|
|
200
|
+
)`);
|
|
201
|
+
if (rowsAffected !== undefined && rowsAffected <= 0)
|
|
202
|
+
continue;
|
|
203
|
+
const deadLetteredRow = (await tx.row(sql `select * from ${tx.table} where id = ${row.id} and status = 'deadLettered' and claim_token is null`));
|
|
204
|
+
if (deadLetteredRow)
|
|
205
|
+
deadLettered.push(rowToMessage(deadLetteredRow));
|
|
206
|
+
continue;
|
|
207
|
+
}
|
|
180
208
|
const claimToken = createClaimToken();
|
|
181
209
|
const rowsAffected = await tx.run(sql `update ${tx.table}
|
|
182
210
|
set
|
|
@@ -199,7 +227,7 @@ export function createOutboxPortCore(executor, options = {}) {
|
|
|
199
227
|
claimed.push(rowToClaimedMessage(claimedRow));
|
|
200
228
|
}
|
|
201
229
|
}
|
|
202
|
-
return claimed;
|
|
230
|
+
return { claimed, deadLettered };
|
|
203
231
|
}
|
|
204
232
|
return {
|
|
205
233
|
async enqueue(input) {
|
|
@@ -251,6 +279,7 @@ export function createOutboxPortCore(executor, options = {}) {
|
|
|
251
279
|
}
|
|
252
280
|
const now = input.now ?? nowFrom(options);
|
|
253
281
|
const leaseMs = input.leaseMs ?? DEFAULT_OUTBOX_LEASE_MS;
|
|
282
|
+
assertValidDate("now", now);
|
|
254
283
|
if (!Number.isInteger(leaseMs) || leaseMs <= 0) {
|
|
255
284
|
throw new Error("leaseMs must be a positive integer");
|
|
256
285
|
}
|
|
@@ -261,8 +290,51 @@ export function createOutboxPortCore(executor, options = {}) {
|
|
|
261
290
|
}
|
|
262
291
|
return claimWith(executor, claimInput);
|
|
263
292
|
},
|
|
293
|
+
async renewClaim(input) {
|
|
294
|
+
assertNonEmptyString("id", input.id);
|
|
295
|
+
assertNonEmptyString("claimToken", input.claimToken);
|
|
296
|
+
const now = input.now ?? nowFrom(options);
|
|
297
|
+
const leaseMs = input.leaseMs ?? DEFAULT_OUTBOX_LEASE_MS;
|
|
298
|
+
assertValidDate("now", now);
|
|
299
|
+
assertPositiveInteger("leaseMs", leaseMs);
|
|
300
|
+
const nowIso = encodeTimestamp(now);
|
|
301
|
+
const lockedUntil = new Date(now.getTime() + leaseMs);
|
|
302
|
+
const lockedUntilIso = encodeTimestamp(lockedUntil);
|
|
303
|
+
const rowsAffected = await executor.run(sql `update ${executor.table}
|
|
304
|
+
set
|
|
305
|
+
locked_until = ${lockedUntilIso},
|
|
306
|
+
updated_at = ${nowIso}
|
|
307
|
+
where id = ${input.id}
|
|
308
|
+
and status = 'claimed'
|
|
309
|
+
and claim_token = ${input.claimToken}
|
|
310
|
+
and locked_until is not null
|
|
311
|
+
and locked_until > ${nowIso}`);
|
|
312
|
+
if (rowsAffected !== undefined) {
|
|
313
|
+
if (rowsAffected <= 0) {
|
|
314
|
+
throw new OutboxClaimError({
|
|
315
|
+
id: input.id,
|
|
316
|
+
message: `Outbox message "${input.id}" no longer has an active claim to renew.`,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
return { lockedUntil };
|
|
320
|
+
}
|
|
321
|
+
const renewed = await getOutboxRow(executor, input.id);
|
|
322
|
+
if (renewed?.status !== "claimed" ||
|
|
323
|
+
renewed.claim_token !== input.claimToken ||
|
|
324
|
+
renewed.locked_until !== lockedUntilIso) {
|
|
325
|
+
throw new OutboxClaimError({
|
|
326
|
+
id: input.id,
|
|
327
|
+
message: `Outbox message "${input.id}" no longer has an active claim to renew.`,
|
|
328
|
+
});
|
|
329
|
+
}
|
|
330
|
+
return { lockedUntil };
|
|
331
|
+
},
|
|
264
332
|
async markDelivered(input) {
|
|
265
|
-
|
|
333
|
+
assertNonEmptyString("id", input.id);
|
|
334
|
+
assertNonEmptyString("claimToken", input.claimToken);
|
|
335
|
+
const now = input.now ?? nowFrom(options);
|
|
336
|
+
assertValidDate("now", now);
|
|
337
|
+
const nowIso = encodeTimestamp(now);
|
|
266
338
|
const rowsAffected = await executor.run(sql `update ${executor.table}
|
|
267
339
|
set
|
|
268
340
|
status = 'delivered',
|
|
@@ -273,11 +345,18 @@ export function createOutboxPortCore(executor, options = {}) {
|
|
|
273
345
|
updated_at = ${nowIso}
|
|
274
346
|
where id = ${input.id}
|
|
275
347
|
and status = 'claimed'
|
|
276
|
-
and claim_token = ${input.claimToken}
|
|
348
|
+
and claim_token = ${input.claimToken}
|
|
349
|
+
and locked_until is not null
|
|
350
|
+
and locked_until > ${nowIso}`);
|
|
277
351
|
await assertOutboxMutationSucceeded(executor, { id: input.id, expectedStatus: "delivered" }, rowsAffected);
|
|
278
352
|
},
|
|
279
353
|
async markFailed(input) {
|
|
354
|
+
assertNonEmptyString("id", input.id);
|
|
355
|
+
assertNonEmptyString("claimToken", input.claimToken);
|
|
280
356
|
const now = input.now ?? nowFrom(options);
|
|
357
|
+
assertValidDate("now", now);
|
|
358
|
+
if (input.retryAt)
|
|
359
|
+
assertValidDate("retryAt", input.retryAt);
|
|
281
360
|
const nowIso = encodeTimestamp(now);
|
|
282
361
|
const status = input.deadLetter
|
|
283
362
|
? "deadLettered"
|
|
@@ -294,7 +373,9 @@ export function createOutboxPortCore(executor, options = {}) {
|
|
|
294
373
|
updated_at = ${nowIso}
|
|
295
374
|
where id = ${input.id}
|
|
296
375
|
and status = 'claimed'
|
|
297
|
-
and claim_token = ${input.claimToken}
|
|
376
|
+
and claim_token = ${input.claimToken}
|
|
377
|
+
and locked_until is not null
|
|
378
|
+
and locked_until > ${nowIso}`);
|
|
298
379
|
await assertOutboxMutationSucceeded(executor, { id: input.id, expectedStatus: status }, rowsAffected);
|
|
299
380
|
},
|
|
300
381
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"outbox-core.js","sourceRoot":"","sources":["../../src/shared/outbox-core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"outbox-core.js","sourceRoot":"","sources":["../../src/shared/outbox-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAEL,mBAAmB,EACnB,uBAAuB,EACvB,yBAAyB,EACzB,gBAAgB,EAGhB,gBAAgB,EAahB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAY,GAAG,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EACL,eAAe,EAEf,mBAAmB,EACnB,YAAY,GACb,MAAM,WAAW,CAAC;AAgEnB,SAAS,OAAO,CAAC,OAA8B;IAC7C,OAAO,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY,EAAE,KAAa;IACvD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3D,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,KAAa;IACxD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,IAAY,EAAE,KAAW;IAChD,IAAI,CAAC,CAAC,KAAK,YAAY,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,uBAAuB,CAAC,CAAC;IAClD,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB;IACvB,OAAO,MAAM,CAAC,UAAU,EAAE,CAAC;AAC7B,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,QAA2B,EAC3B,EAAU;IAEV,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAC5B,GAAG,CAAA,iBAAiB,QAAQ,CAAC,KAAK,eAAe,EAAE,EAAE,CACtD,CAAC;IACF,OAAO,GAA4B,CAAC;AACtC,CAAC;AAED,SAAS,qBAAqB,CAC5B,MAAoC;IAEpC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,UAA0B;IAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAA,OAAO,CAAC;IAC/C,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAA,OAAO,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,SAAS,GAAG,GAAG,CAAA,GAAG,SAAS,OAAO,IAAI,EAAE,CAAC;IAC3C,CAAC;IACD,OAAO,GAAG,CAAA,IAAI,SAAS,GAAG,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,UAA0B;IAC/C,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,GAAG,CAAA,OAAO,CAAC;IAC5C,KAAK,MAAM,IAAI,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACvC,SAAS,GAAG,GAAG,CAAA,GAAG,SAAS,QAAQ,IAAI,EAAE,CAAC;IAC5C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,UAA0B;IAC7C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChD,OAAO,GAAG,CAAA,UAAU,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;AAClD,CAAC;AAED,SAAS,sBAAsB,CAAC,QAA4B,EAAE;IAC5D,MAAM,UAAU,GAAU,EAAE,CAAC;IAC7B,MAAM,QAAQ,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,UAAU,CAAC,IAAI,CACb,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAA,YAAY,MAAM,EAAE,CAAC,CAAC,CAChE,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS;QAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,oBAAoB,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,UAAU,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACtC,eAAe,CAAC,eAAe,EAAE,KAAK,CAAC,aAAa,CAAC,CAAC;QACtD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,gBAAgB,eAAe,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,KAAK,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;QACxC,eAAe,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;QAC1D,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,0BAA0B,CAAC,CAAC;QAC/C,UAAU,CAAC,IAAI,CACb,GAAG,CAAA,kBAAkB,eAAe,CAAC,KAAK,CAAC,eAAe,CAAC,EAAE,CAC9D,CAAC;IACJ,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,SAAS,CAAC,GAAwC;IACzD,MAAM,KAAK,GAAG,GAAG,EAAE,KAAK,CAAC;IACzB,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAS,cAAc,CAAC,KAAyB;IAC/C,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE,CAAC;IAC7B,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACzC,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,SAAS,CACtB,QAA2B,EAC3B,UAA0B;IAE1B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,CAC5B,GAAG,CAAA,iCAAiC,QAAQ,CAAC,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,EAAE,CAC/E,CAAC;IACF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAS,kBAAkB,CACzB,QAA2B,EAC3B,UAA0B,EAC1B,KAAyB,EACzB,OAAY;IAEZ,MAAM,KAAK,GAAG,WAAW,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,OAAO,GAAG,CAAA,eAAe,QAAQ,CAAC,KAAK,GAAG,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,GAAG,CAAA,eAAe,QAAQ,CAAC,KAAK;;;yBAGhB,QAAQ,CAAC,KAAK,GAAG,KAAK;mBAC5B,OAAO;gBACV,KAAK;;MAEf,CAAC;AACP,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,QAA2B,EAC3B,UAA0B,EAC1B,KAAyB,EACzB,UAAe,GAAG,CAAA,wCAAwC;IAE1D,IAAI,KAAK,KAAK,SAAS;QAAE,qBAAqB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvD,MAAM,cAAc,GAClB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7D,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,CACrC,kBAAkB,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,CAAC,CACzD,CAAC;IACF,OAAO,EAAE,OAAO,EAAE,YAAY,IAAI,cAAc,EAAE,CAAC;AACrD,CAAC;AAED,SAAS,yBAAyB,CAChC,GAA0B,EAC1B,KAA0D;IAE1D,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,cAAc,IAAI,GAAG,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC5E,MAAM,IAAI,gBAAgB,CAAC;YACzB,EAAE,EAAE,KAAK,CAAC,EAAE;YACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,kCAAkC;SACvE,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,KAAK,UAAU,6BAA6B,CAC1C,QAA2B,EAC3B,KAA0D,EAC1D,YAAgC;IAEhC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;QAC/B,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;YACtB,MAAM,IAAI,gBAAgB,CAAC;gBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;gBACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,kCAAkC;aACvE,CAAC,CAAC;QACL,CAAC;QACD,OAAO;IACT,CAAC;IAED,yBAAyB,CAAC,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,QAA2B,EAC3B,UAAiC,EAAE;IAEnC,KAAK,UAAU,SAAS,CACtB,EAAqB,EACrB,KAAoD;QAEpD,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,cAAc,GAAG,eAAe,CACpC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC,CAC9C,CAAC;QACF,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,GAAG,CAAA,iBAAiB,EAAE,CAAC,KAAK;;kDAEV,MAAM;kFAC0B,MAAM;;;cAG1E,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,eAAe,EAAE,CAAC,CAA2B,CAAC;QACzE,MAAM,OAAO,GAA2B,EAAE,CAAC;QAC3C,MAAM,YAAY,GAAoB,EAAE,CAAC;QAEzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;gBACrC,MAAM,cAAc,GAAG,IAAI,yBAAyB,CAAC;oBACnD,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,QAAQ,EAAE,GAAG,CAAC,QAAQ;oBACtB,WAAW,EAAE,GAAG,CAAC,YAAY;iBAC9B,CAAC,CAAC;gBACH,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,EAAE,CAAC,KAAK;;;;;;gCAM/B,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;2BACzD,MAAM;uBACV,GAAG,CAAC,EAAE;;;wDAG2B,MAAM;wFAC0B,MAAM;cAChF,CAAC,CAAC;gBACR,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,CAAC;oBAAE,SAAS;gBAE9D,MAAM,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CACnC,GAAG,CAAA,iBAAiB,EAAE,CAAC,KAAK,eAAe,GAAG,CAAC,EAAE,sDAAsD,CACxG,CAA0B,CAAC;gBAC5B,IAAI,eAAe;oBAAE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,EAAE,CAAC,KAAK;;;;yBAIpC,MAAM;2BACJ,cAAc;0BACf,UAAU;yBACX,MAAM;qBACV,GAAG,CAAC,EAAE;;sDAE2B,MAAM;sFAC0B,MAAM;YAChF,CAAC,CAAC;YACR,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBACpD,SAAS;YACX,CAAC;YAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAC9B,GAAG,CAAA,iBAAiB,EAAE,CAAC,KAAK,eAAe,GAAG,CAAC,EAAE,sBAAsB,UAAU,EAAE,CACpF,CAA0B,CAAC;YAC5B,IAAI,UAAU,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC;IACnC,CAAC;IAED,OAAO;QACL,KAAK,CAAC,OAAO,CAAC,KAAyB;YACrC,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,EAAE;gBACzC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC;aACtB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAElD,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,eAAe,QAAQ,CAAC,KAAK;;;;;;;;;;;;;;;;;;UAkB/C,OAAO,CAAC,EAAE;UACV,OAAO,CAAC,IAAI;UACZ,OAAO,CAAC,IAAI;UACZ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;UAC/B,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;UACpD,OAAO,CAAC,MAAM;UACd,OAAO,CAAC,QAAQ;UAChB,OAAO,CAAC,WAAW;UACnB,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC;;;;;;UAMpC,MAAM;UACN,MAAM;QACR,CAAC,CAAC;YAEJ,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;YACtD,CAAC;YACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,uBAAuB,CAAC;YACzD,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBAC/C,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;YACxD,CAAC;YACD,MAAM,UAAU,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;YAE3C,MAAM,aAAa,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE,EAAE,CACpD,SAAS,CAAC,EAAE,EAAE,UAAU,CAAC,CAC1B,CAAC;YACF,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,aAAa,CAAC;YACvB,CAAC;YAED,OAAO,SAAS,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QACzC,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACrC,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,uBAAuB,CAAC;YACzD,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5B,qBAAqB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAC1C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC;YACtD,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,QAAQ,CAAC,KAAK;;2BAE9C,cAAc;yBAChB,MAAM;qBACV,KAAK,CAAC,EAAE;;8BAEC,KAAK,CAAC,UAAU;;+BAEf,MAAM,EAAE,CAAC,CAAC;YAEnC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;gBAC/B,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;oBACtB,MAAM,IAAI,gBAAgB,CAAC;wBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;wBACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,2CAA2C;qBAChF,CAAC,CAAC;gBACL,CAAC;gBACD,OAAO,EAAE,WAAW,EAAE,CAAC;YACzB,CAAC;YAED,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACvD,IACE,OAAO,EAAE,MAAM,KAAK,SAAS;gBAC7B,OAAO,CAAC,WAAW,KAAK,KAAK,CAAC,UAAU;gBACxC,OAAO,CAAC,YAAY,KAAK,cAAc,EACvC,CAAC;gBACD,MAAM,IAAI,gBAAgB,CAAC;oBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,2CAA2C;iBAChF,CAAC,CAAC;YACL,CAAC;YACD,OAAO,EAAE,WAAW,EAAE,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,aAAa,CAAC,KAAK;YACvB,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACrC,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5B,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,QAAQ,CAAC,KAAK;;;2BAG9C,MAAM;;;;yBAIR,MAAM;qBACV,KAAK,CAAC,EAAE;;8BAEC,KAAK,CAAC,UAAU;;+BAEf,MAAM,EAAE,CAAC,CAAC;YAEnC,MAAM,6BAA6B,CACjC,QAAQ,EACR,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,WAAW,EAAE,EAC7C,YAAY,CACb,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,KAAK;YACpB,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACrC,oBAAoB,CAAC,YAAY,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;YACrD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5B,IAAI,KAAK,CAAC,OAAO;gBAAE,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAC7D,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,MAAM,GAAwB,KAAK,CAAC,UAAU;gBAClD,CAAC,CAAC,cAAc;gBAChB,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,WAAW,GAAG,KAAK,CAAC,OAAO,IAAI,GAAG,CAAC;YAEzC,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,QAAQ,CAAC,KAAK;;qBAEpD,MAAM;2BACA,eAAe,CAAC,WAAW,CAAC;;;;8BAIzB,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;yBACtD,MAAM;qBACV,KAAK,CAAC,EAAE;;8BAEC,KAAK,CAAC,UAAU;;+BAEf,MAAM,EAAE,CAAC,CAAC;YAEnC,MAAM,6BAA6B,CACjC,QAAQ,EACR,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EACxC,YAAY,CACb,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CACvC,QAA2B,EAC3B,UAAiC,EAAE;IAEnC,OAAO;QACL,KAAK,CAAC,YAAY,CAChB,QAAmC,EAAE;YAErC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,MAAM,UAAU,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;YACjD,MAAM,IAAI,GACR,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAA,iBAAiB,QAAQ,CAAC,KAAK,GAAG,WAAW,CACnE,UAAU,CACX;;gBAEO,KAAK,EAAE,CAAC,CAA2B,CAAC;YAE9C,OAAO,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,aAAa,CACjB,QAAoC,EAAE;YAEtC,OAAO,SAAS,CAAC,QAAQ,EAAE,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,EAAU;YACzB,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAC/B,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC7C,OAAO,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACxC,CAAC;QAED,KAAK,CAAC,cAAc,CAClB,KAAgC;YAEhC,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACrC,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,gBAAgB,CAAC;oBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,mBAAmB;iBACxD,CAAC,CAAC;YACL,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;gBACvC,MAAM,IAAI,gBAAgB,CAAC;oBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,yBAAyB;iBAC9D,CAAC,CAAC;YACL,CAAC;YAED,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,GAAG,CAAC;YAC7C,eAAe,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5B,eAAe,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC5C,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;YACpC,MAAM,cAAc,GAAG,eAAe,CAAC,WAAW,CAAC,CAAC;YAEpD,MAAM,YAAY,GAAG,KAAK,CAAC,aAAa;gBACtC,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,QAAQ,CAAC,KAAK;;;;+BAIzB,cAAc;;;;6BAIhB,MAAM;yBACV,KAAK,CAAC,EAAE,8BAA8B,CAAC;gBACxD,CAAC,CAAC,MAAM,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAA,UAAU,QAAQ,CAAC,KAAK;;;+BAGzB,cAAc;;;;6BAIhB,MAAM;yBACV,KAAK,CAAC,EAAE,8BAA8B,CAAC,CAAC;YAE3D,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,IAAI,gBAAgB,CAAC;oBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,mDAAmD;iBACxF,CAAC,CAAC;YACL,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;YACxD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,IAAI,gBAAgB,CAAC;oBACzB,EAAE,EAAE,KAAK,CAAC,EAAE;oBACZ,OAAO,EAAE,mBAAmB,KAAK,CAAC,EAAE,sDAAsD;iBAC3F,CAAC,CAAC;YACL,CAAC;YAED,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,KAAK,CAAC,iBAAiB,CACrB,QAAsC,EAAE;YAExC,MAAM,UAAU,GAAU,CAAC,GAAG,CAAA,yBAAyB,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBAC/B,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;gBACxC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAA,gBAAgB,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACtE,CAAC;YAED,OAAO,UAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,cAAc,CAClB,KAAgC;YAEhC,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;YACxC,MAAM,UAAU,GAAU;gBACxB,GAAG,CAAA,sBAAsB;gBACzB,GAAG,CAAA,0BAA0B;gBAC7B,GAAG,CAAA,kBAAkB,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;aACrD,CAAC;YAEF,OAAO,UAAU,CACf,QAAQ,EACR,UAAU,EACV,KAAK,CAAC,KAAK,EACX,GAAG,CAAA,0DAA0D,CAC9D,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@beignet/provider-db-drizzle",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.51",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Drizzle ORM database providers for Beignet — typed DbPort, unit of work, audit logs, outbox, and idempotency for SQLite (libSQL/Turso), Postgres, and MySQL.",
|
|
6
6
|
"exports": {
|
|
@@ -210,7 +210,10 @@ the current transaction unless rebuilt from `tx`.
|
|
|
210
210
|
- Idempotency: use `createDrizzleXIdempotencyPort(...)` with
|
|
211
211
|
`runIdempotently(...)` when replay safety must survive process restarts.
|
|
212
212
|
- Outbox: use `createDrizzleXOutboxPort(...)`, record inside the transaction,
|
|
213
|
-
and drain from a worker, cron route, or explicit outbox drain route.
|
|
213
|
+
and drain from a worker, cron route, or explicit outbox drain route. Claim
|
|
214
|
+
renewal and settlement require the active token before `locked_until`;
|
|
215
|
+
exhausted expired claims move atomically to `deadLettered`. Synchronize
|
|
216
|
+
clocks across every drain host.
|
|
214
217
|
|
|
215
218
|
Generate and migrate the backing tables before booting code that depends on
|
|
216
219
|
these ports. In deployment, serialize one migration job per environment,
|
|
@@ -13,8 +13,10 @@ import {
|
|
|
13
13
|
type ClaimedOutboxMessage,
|
|
14
14
|
createOutboxMessage,
|
|
15
15
|
DEFAULT_OUTBOX_LEASE_MS,
|
|
16
|
+
OutboxAbandonedClaimError,
|
|
16
17
|
OutboxAdminError,
|
|
17
18
|
type OutboxAdminPort,
|
|
19
|
+
type OutboxClaimBatchResult,
|
|
18
20
|
OutboxClaimError,
|
|
19
21
|
type OutboxCountMessagesOptions,
|
|
20
22
|
type OutboxDeleteResult,
|
|
@@ -26,6 +28,7 @@ import {
|
|
|
26
28
|
type OutboxPort,
|
|
27
29
|
type OutboxPruneDeliveredInput,
|
|
28
30
|
type OutboxPurgeDeadLetteredInput,
|
|
31
|
+
type OutboxRenewClaimResult,
|
|
29
32
|
type OutboxRequeueMessageInput,
|
|
30
33
|
serializeOutboxError,
|
|
31
34
|
} from "@beignet/core/outbox";
|
|
@@ -306,7 +309,7 @@ export function createOutboxPortCore(
|
|
|
306
309
|
async function claimWith(
|
|
307
310
|
tx: OutboxSqlExecutor,
|
|
308
311
|
input: { limit: number; now: Date; leaseMs: number },
|
|
309
|
-
): Promise<
|
|
312
|
+
): Promise<OutboxClaimBatchResult> {
|
|
310
313
|
const nowIso = encodeTimestamp(input.now);
|
|
311
314
|
const lockedUntilIso = encodeTimestamp(
|
|
312
315
|
new Date(input.now.getTime() + input.leaseMs),
|
|
@@ -319,8 +322,38 @@ export function createOutboxPortCore(
|
|
|
319
322
|
order by available_at asc, created_at asc
|
|
320
323
|
limit ${input.limit}${tx.claimLockSuffix}`)) as unknown as OutboxRow[];
|
|
321
324
|
const claimed: ClaimedOutboxMessage[] = [];
|
|
325
|
+
const deadLettered: OutboxMessage[] = [];
|
|
322
326
|
|
|
323
327
|
for (const row of rows) {
|
|
328
|
+
if (row.attempts >= row.max_attempts) {
|
|
329
|
+
const abandonedError = new OutboxAbandonedClaimError({
|
|
330
|
+
id: row.id,
|
|
331
|
+
attempts: row.attempts,
|
|
332
|
+
maxAttempts: row.max_attempts,
|
|
333
|
+
});
|
|
334
|
+
const rowsAffected = await tx.run(sql`update ${tx.table}
|
|
335
|
+
set
|
|
336
|
+
status = 'deadLettered',
|
|
337
|
+
claimed_at = null,
|
|
338
|
+
locked_until = null,
|
|
339
|
+
claim_token = null,
|
|
340
|
+
last_error_json = ${JSON.stringify(serializeOutboxError(abandonedError))},
|
|
341
|
+
updated_at = ${nowIso}
|
|
342
|
+
where id = ${row.id}
|
|
343
|
+
and attempts >= max_attempts
|
|
344
|
+
and (
|
|
345
|
+
(status = 'pending' and available_at <= ${nowIso})
|
|
346
|
+
or (status = 'claimed' and locked_until is not null and locked_until <= ${nowIso})
|
|
347
|
+
)`);
|
|
348
|
+
if (rowsAffected !== undefined && rowsAffected <= 0) continue;
|
|
349
|
+
|
|
350
|
+
const deadLetteredRow = (await tx.row(
|
|
351
|
+
sql`select * from ${tx.table} where id = ${row.id} and status = 'deadLettered' and claim_token is null`,
|
|
352
|
+
)) as OutboxRow | undefined;
|
|
353
|
+
if (deadLetteredRow) deadLettered.push(rowToMessage(deadLetteredRow));
|
|
354
|
+
continue;
|
|
355
|
+
}
|
|
356
|
+
|
|
324
357
|
const claimToken = createClaimToken();
|
|
325
358
|
const rowsAffected = await tx.run(sql`update ${tx.table}
|
|
326
359
|
set
|
|
@@ -347,7 +380,7 @@ export function createOutboxPortCore(
|
|
|
347
380
|
}
|
|
348
381
|
}
|
|
349
382
|
|
|
350
|
-
return claimed;
|
|
383
|
+
return { claimed, deadLettered };
|
|
351
384
|
}
|
|
352
385
|
|
|
353
386
|
return {
|
|
@@ -403,6 +436,7 @@ export function createOutboxPortCore(
|
|
|
403
436
|
}
|
|
404
437
|
const now = input.now ?? nowFrom(options);
|
|
405
438
|
const leaseMs = input.leaseMs ?? DEFAULT_OUTBOX_LEASE_MS;
|
|
439
|
+
assertValidDate("now", now);
|
|
406
440
|
if (!Number.isInteger(leaseMs) || leaseMs <= 0) {
|
|
407
441
|
throw new Error("leaseMs must be a positive integer");
|
|
408
442
|
}
|
|
@@ -418,8 +452,56 @@ export function createOutboxPortCore(
|
|
|
418
452
|
return claimWith(executor, claimInput);
|
|
419
453
|
},
|
|
420
454
|
|
|
455
|
+
async renewClaim(input): Promise<OutboxRenewClaimResult> {
|
|
456
|
+
assertNonEmptyString("id", input.id);
|
|
457
|
+
assertNonEmptyString("claimToken", input.claimToken);
|
|
458
|
+
const now = input.now ?? nowFrom(options);
|
|
459
|
+
const leaseMs = input.leaseMs ?? DEFAULT_OUTBOX_LEASE_MS;
|
|
460
|
+
assertValidDate("now", now);
|
|
461
|
+
assertPositiveInteger("leaseMs", leaseMs);
|
|
462
|
+
const nowIso = encodeTimestamp(now);
|
|
463
|
+
const lockedUntil = new Date(now.getTime() + leaseMs);
|
|
464
|
+
const lockedUntilIso = encodeTimestamp(lockedUntil);
|
|
465
|
+
const rowsAffected = await executor.run(sql`update ${executor.table}
|
|
466
|
+
set
|
|
467
|
+
locked_until = ${lockedUntilIso},
|
|
468
|
+
updated_at = ${nowIso}
|
|
469
|
+
where id = ${input.id}
|
|
470
|
+
and status = 'claimed'
|
|
471
|
+
and claim_token = ${input.claimToken}
|
|
472
|
+
and locked_until is not null
|
|
473
|
+
and locked_until > ${nowIso}`);
|
|
474
|
+
|
|
475
|
+
if (rowsAffected !== undefined) {
|
|
476
|
+
if (rowsAffected <= 0) {
|
|
477
|
+
throw new OutboxClaimError({
|
|
478
|
+
id: input.id,
|
|
479
|
+
message: `Outbox message "${input.id}" no longer has an active claim to renew.`,
|
|
480
|
+
});
|
|
481
|
+
}
|
|
482
|
+
return { lockedUntil };
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
const renewed = await getOutboxRow(executor, input.id);
|
|
486
|
+
if (
|
|
487
|
+
renewed?.status !== "claimed" ||
|
|
488
|
+
renewed.claim_token !== input.claimToken ||
|
|
489
|
+
renewed.locked_until !== lockedUntilIso
|
|
490
|
+
) {
|
|
491
|
+
throw new OutboxClaimError({
|
|
492
|
+
id: input.id,
|
|
493
|
+
message: `Outbox message "${input.id}" no longer has an active claim to renew.`,
|
|
494
|
+
});
|
|
495
|
+
}
|
|
496
|
+
return { lockedUntil };
|
|
497
|
+
},
|
|
498
|
+
|
|
421
499
|
async markDelivered(input) {
|
|
422
|
-
|
|
500
|
+
assertNonEmptyString("id", input.id);
|
|
501
|
+
assertNonEmptyString("claimToken", input.claimToken);
|
|
502
|
+
const now = input.now ?? nowFrom(options);
|
|
503
|
+
assertValidDate("now", now);
|
|
504
|
+
const nowIso = encodeTimestamp(now);
|
|
423
505
|
const rowsAffected = await executor.run(sql`update ${executor.table}
|
|
424
506
|
set
|
|
425
507
|
status = 'delivered',
|
|
@@ -430,7 +512,9 @@ export function createOutboxPortCore(
|
|
|
430
512
|
updated_at = ${nowIso}
|
|
431
513
|
where id = ${input.id}
|
|
432
514
|
and status = 'claimed'
|
|
433
|
-
and claim_token = ${input.claimToken}
|
|
515
|
+
and claim_token = ${input.claimToken}
|
|
516
|
+
and locked_until is not null
|
|
517
|
+
and locked_until > ${nowIso}`);
|
|
434
518
|
|
|
435
519
|
await assertOutboxMutationSucceeded(
|
|
436
520
|
executor,
|
|
@@ -440,7 +524,11 @@ export function createOutboxPortCore(
|
|
|
440
524
|
},
|
|
441
525
|
|
|
442
526
|
async markFailed(input) {
|
|
527
|
+
assertNonEmptyString("id", input.id);
|
|
528
|
+
assertNonEmptyString("claimToken", input.claimToken);
|
|
443
529
|
const now = input.now ?? nowFrom(options);
|
|
530
|
+
assertValidDate("now", now);
|
|
531
|
+
if (input.retryAt) assertValidDate("retryAt", input.retryAt);
|
|
444
532
|
const nowIso = encodeTimestamp(now);
|
|
445
533
|
const status: OutboxMessageStatus = input.deadLetter
|
|
446
534
|
? "deadLettered"
|
|
@@ -458,7 +546,9 @@ export function createOutboxPortCore(
|
|
|
458
546
|
updated_at = ${nowIso}
|
|
459
547
|
where id = ${input.id}
|
|
460
548
|
and status = 'claimed'
|
|
461
|
-
and claim_token = ${input.claimToken}
|
|
549
|
+
and claim_token = ${input.claimToken}
|
|
550
|
+
and locked_until is not null
|
|
551
|
+
and locked_until > ${nowIso}`);
|
|
462
552
|
|
|
463
553
|
await assertOutboxMutationSucceeded(
|
|
464
554
|
executor,
|