@beignet/provider-db-drizzle 0.0.32 → 0.0.34

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.
@@ -8,12 +8,27 @@
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, OutboxClaimError, serializeOutboxError, } from "@beignet/core/outbox";
11
+ import { createOutboxMessage, DEFAULT_OUTBOX_LEASE_MS, OutboxAdminError, OutboxClaimError, serializeOutboxError, } from "@beignet/core/outbox";
12
12
  import { sql } from "drizzle-orm";
13
- import { encodeTimestamp, rowToClaimedMessage, } from "./rows.js";
13
+ import { encodeTimestamp, rowToClaimedMessage, rowToMessage, } from "./rows.js";
14
14
  function nowFrom(options) {
15
15
  return options.now?.() ?? new Date();
16
16
  }
17
+ function assertNonEmptyString(name, value) {
18
+ if (typeof value !== "string" || value.trim().length === 0) {
19
+ throw new Error(`${name} must be a non-empty string`);
20
+ }
21
+ }
22
+ function assertPositiveInteger(name, value) {
23
+ if (!Number.isInteger(value) || value <= 0) {
24
+ throw new Error(`${name} must be a positive integer`);
25
+ }
26
+ }
27
+ function assertValidDate(name, value) {
28
+ if (!(value instanceof Date) || Number.isNaN(value.getTime())) {
29
+ throw new Error(`${name} must be a valid Date`);
30
+ }
31
+ }
17
32
  function createClaimToken() {
18
33
  return crypto.randomUUID();
19
34
  }
@@ -21,6 +36,98 @@ async function getOutboxRow(executor, id) {
21
36
  const row = await executor.row(sql `select * from ${executor.table} where id = ${id}`);
22
37
  return row;
23
38
  }
39
+ function normalizeStatusFilter(status) {
40
+ if (status === undefined)
41
+ return undefined;
42
+ if (typeof status === "string")
43
+ return [status];
44
+ return status;
45
+ }
46
+ function orConditions(conditions) {
47
+ if (conditions.length === 0)
48
+ return sql `1 = 0`;
49
+ let condition = conditions[0] ?? sql `1 = 0`;
50
+ for (const next of conditions.slice(1)) {
51
+ condition = sql `${condition} or ${next}`;
52
+ }
53
+ return sql `(${condition})`;
54
+ }
55
+ function andConditions(conditions) {
56
+ let condition = conditions[0] ?? sql `1 = 1`;
57
+ for (const next of conditions.slice(1)) {
58
+ condition = sql `${condition} and ${next}`;
59
+ }
60
+ return condition;
61
+ }
62
+ function whereClause(conditions) {
63
+ if (conditions.length === 0)
64
+ return sql.raw("");
65
+ return sql ` where ${andConditions(conditions)}`;
66
+ }
67
+ function messageQueryConditions(query = {}) {
68
+ const conditions = [];
69
+ const statuses = normalizeStatusFilter(query.status);
70
+ if (statuses !== undefined) {
71
+ conditions.push(orConditions(statuses.map((status) => sql `status = ${status}`)));
72
+ }
73
+ if (query.kind !== undefined)
74
+ conditions.push(sql `kind = ${query.kind}`);
75
+ if (query.name !== undefined) {
76
+ assertNonEmptyString("name", query.name);
77
+ conditions.push(sql `name = ${query.name}`);
78
+ }
79
+ if (query.updatedBefore !== undefined) {
80
+ assertValidDate("updatedBefore", query.updatedBefore);
81
+ conditions.push(sql `updated_at < ${encodeTimestamp(query.updatedBefore)}`);
82
+ }
83
+ if (query.deliveredBefore !== undefined) {
84
+ assertValidDate("deliveredBefore", query.deliveredBefore);
85
+ conditions.push(sql `delivered_at is not null`);
86
+ conditions.push(sql `delivered_at < ${encodeTimestamp(query.deliveredBefore)}`);
87
+ }
88
+ return conditions;
89
+ }
90
+ function readCount(row) {
91
+ const value = row?.count;
92
+ if (typeof value === "number")
93
+ return value;
94
+ if (typeof value === "bigint")
95
+ return Number(value);
96
+ if (typeof value === "string")
97
+ return Number(value);
98
+ return 0;
99
+ }
100
+ function adminListLimit(limit) {
101
+ const resolved = limit ?? 50;
102
+ assertPositiveInteger("limit", resolved);
103
+ return resolved;
104
+ }
105
+ async function countRows(executor, conditions) {
106
+ const row = await executor.row(sql `select count(*) as count from ${executor.table}${whereClause(conditions)}`);
107
+ return readCount(row);
108
+ }
109
+ function limitedDeleteQuery(executor, conditions, limit, orderBy) {
110
+ const where = whereClause(conditions);
111
+ if (limit === undefined) {
112
+ return sql `delete from ${executor.table}${where}`;
113
+ }
114
+ return sql `delete from ${executor.table}
115
+ where id in (
116
+ select id from (
117
+ select id from ${executor.table}${where}
118
+ order by ${orderBy}
119
+ limit ${limit}
120
+ ) as beignet_outbox_admin_delete
121
+ )`;
122
+ }
123
+ async function deleteRows(executor, conditions, limit, orderBy = sql `updated_at asc, created_at asc, id asc`) {
124
+ if (limit !== undefined)
125
+ assertPositiveInteger("limit", limit);
126
+ const expected = await countRows(executor, conditions);
127
+ const cappedExpected = limit === undefined ? expected : Math.min(expected, limit);
128
+ const rowsAffected = await executor.run(limitedDeleteQuery(executor, conditions, limit, orderBy));
129
+ return { deleted: rowsAffected ?? cappedExpected };
130
+ }
24
131
  function assertClaimedRowSucceeded(row, input) {
25
132
  if (!row || row.status !== input.expectedStatus || row.claim_token !== null) {
26
133
  throw new OutboxClaimError({
@@ -190,4 +297,101 @@ export function createOutboxPortCore(executor, options = {}) {
190
297
  },
191
298
  };
192
299
  }
300
+ /**
301
+ * Create the dialect-independent outbox admin port orchestration on top of a
302
+ * dialect's `OutboxSqlExecutor`.
303
+ */
304
+ export function createOutboxAdminPortCore(executor, options = {}) {
305
+ return {
306
+ async listMessages(input = {}) {
307
+ const limit = adminListLimit(input.limit);
308
+ const conditions = messageQueryConditions(input);
309
+ const rows = (await executor.rows(sql `select * from ${executor.table}${whereClause(conditions)}
310
+ order by updated_at desc, created_at desc, id desc
311
+ limit ${limit}`));
312
+ return rows.map(rowToMessage);
313
+ },
314
+ async countMessages(input = {}) {
315
+ return countRows(executor, messageQueryConditions(input));
316
+ },
317
+ async getMessage(id) {
318
+ assertNonEmptyString("id", id);
319
+ const row = await getOutboxRow(executor, id);
320
+ return row ? rowToMessage(row) : null;
321
+ },
322
+ async requeueMessage(input) {
323
+ assertNonEmptyString("id", input.id);
324
+ const existing = await getOutboxRow(executor, input.id);
325
+ if (!existing) {
326
+ throw new OutboxAdminError({
327
+ id: input.id,
328
+ message: `Outbox message "${input.id}" does not exist.`,
329
+ });
330
+ }
331
+ if (existing.status !== "deadLettered") {
332
+ throw new OutboxAdminError({
333
+ id: input.id,
334
+ message: `Outbox message "${input.id}" is not dead-lettered.`,
335
+ });
336
+ }
337
+ const now = input.now ?? nowFrom(options);
338
+ const availableAt = input.availableAt ?? now;
339
+ assertValidDate("now", now);
340
+ assertValidDate("availableAt", availableAt);
341
+ const nowIso = encodeTimestamp(now);
342
+ const availableAtIso = encodeTimestamp(availableAt);
343
+ const rowsAffected = input.resetAttempts
344
+ ? await executor.run(sql `update ${executor.table}
345
+ set
346
+ status = 'pending',
347
+ attempts = 0,
348
+ available_at = ${availableAtIso},
349
+ claimed_at = null,
350
+ locked_until = null,
351
+ claim_token = null,
352
+ updated_at = ${nowIso}
353
+ where id = ${input.id} and status = 'deadLettered'`)
354
+ : await executor.run(sql `update ${executor.table}
355
+ set
356
+ status = 'pending',
357
+ available_at = ${availableAtIso},
358
+ claimed_at = null,
359
+ locked_until = null,
360
+ claim_token = null,
361
+ updated_at = ${nowIso}
362
+ where id = ${input.id} and status = 'deadLettered'`);
363
+ if (rowsAffected !== undefined && rowsAffected <= 0) {
364
+ throw new OutboxAdminError({
365
+ id: input.id,
366
+ message: `Outbox message "${input.id}" could not be requeued because it changed state.`,
367
+ });
368
+ }
369
+ const requeued = await getOutboxRow(executor, input.id);
370
+ if (!requeued) {
371
+ throw new OutboxAdminError({
372
+ id: input.id,
373
+ message: `Outbox message "${input.id}" could not be requeued because it no longer exists.`,
374
+ });
375
+ }
376
+ return rowToMessage(requeued);
377
+ },
378
+ async purgeDeadLettered(input = {}) {
379
+ const conditions = [sql `status = 'deadLettered'`];
380
+ if (input.before !== undefined) {
381
+ assertValidDate("before", input.before);
382
+ conditions.push(sql `updated_at < ${encodeTimestamp(input.before)}`);
383
+ }
384
+ return deleteRows(executor, conditions, input.limit);
385
+ },
386
+ async pruneDelivered(input) {
387
+ assertValidDate("before", input.before);
388
+ const conditions = [
389
+ sql `status = 'delivered'`,
390
+ sql `delivered_at is not null`,
391
+ sql `delivered_at < ${encodeTimestamp(input.before)}`,
392
+ ];
393
+ return deleteRows(executor, conditions, input.limit, sql `delivered_at asc, updated_at asc, created_at asc, id asc`);
394
+ },
395
+ };
396
+ }
193
397
  //# sourceMappingURL=outbox-core.js.map
@@ -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":"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"}
@@ -29,7 +29,7 @@
29
29
  * ```
30
30
  */
31
31
  import type { IdempotencyPort } from "@beignet/core/idempotency";
32
- import type { OutboxPort } from "@beignet/core/outbox";
32
+ import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
33
33
  import { type AuditLogPort, type BufferedDomainEventRecorder, type EventBusPort, type UnitOfWorkPort } from "@beignet/core/ports";
34
34
  import { type Client } from "@libsql/client";
35
35
  import { type ExtractTablesWithRelations } from "drizzle-orm";
@@ -51,12 +51,6 @@ export interface DbPort<TSchema extends Record<string, unknown> = Record<string,
51
51
  * Use this to query your database with full type safety.
52
52
  */
53
53
  drizzle: LibSQLDatabase<TSchema>;
54
- /**
55
- * Backwards-compatible alias for `drizzle`.
56
- *
57
- * @deprecated Use `drizzle` for the Drizzle ORM instance.
58
- */
59
- db: LibSQLDatabase<TSchema>;
60
54
  /**
61
55
  * The underlying libSQL client instance.
62
56
  * Use this for advanced operations not covered by Drizzle ORM.
@@ -165,6 +159,13 @@ export declare function createDrizzleSqliteOutboxSetupStatements(options?: Drizz
165
159
  * for eligible messages.
166
160
  */
167
161
  export declare function createDrizzleSqliteOutboxPort<TSchema extends Record<string, unknown>>(db: DrizzleSqliteDatabase<TSchema>, adapterOptions?: DrizzleSqliteOutboxOptions): OutboxPort;
162
+ /**
163
+ * Create a Beignet outbox admin port backed by a Drizzle SQLite database.
164
+ *
165
+ * Wire this only into operational contexts that need to inspect, requeue,
166
+ * purge, or prune outbox messages.
167
+ */
168
+ export declare function createDrizzleSqliteOutboxAdminPort<TSchema extends Record<string, unknown>>(db: DrizzleSqliteDatabase<TSchema>, adapterOptions?: DrizzleSqliteOutboxOptions): OutboxAdminPort;
168
169
  /**
169
170
  * Options for a Drizzle SQLite-backed idempotency port.
170
171
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"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"}
@@ -39,7 +39,24 @@ import { dbHealthError, dbHealthOk } from "../shared/health.js";
39
39
  import { createIdempotencyPortCore, formatIdempotencyMutationErrorMessage, } from "../shared/idempotency-core.js";
40
40
  import { quoteIdentifier } from "../shared/identifiers.js";
41
41
  import { createDbQueryLogger } from "../shared/instrumentation.js";
42
- import { createOutboxPortCore, } from "../shared/outbox-core.js";
42
+ import { createOutboxAdminPortCore, createOutboxPortCore, } from "../shared/outbox-core.js";
43
+ const sqliteTransactionTails = new WeakMap();
44
+ /**
45
+ * Queue Beignet-owned transactions per Drizzle client. SQLite only permits one
46
+ * writer at a time, while the local libSQL driver otherwise exposes concurrent
47
+ * transaction attempts as SQLITE_BUSY instead of waiting for the active write.
48
+ */
49
+ function runSerializedSqliteTransaction(db, transaction) {
50
+ const previous = sqliteTransactionTails.get(db) ?? Promise.resolve();
51
+ const result = previous.then(transaction);
52
+ const tail = result.then(() => undefined, () => undefined);
53
+ sqliteTransactionTails.set(db, tail);
54
+ return result.finally(() => {
55
+ if (sqliteTransactionTails.get(db) === tail) {
56
+ sqliteTransactionTails.delete(db);
57
+ }
58
+ });
59
+ }
43
60
  async function checkSqliteHealth(client) {
44
61
  try {
45
62
  await client.execute("select 1");
@@ -60,10 +77,10 @@ export function createDrizzleSqliteUnitOfWork(options) {
60
77
  return {
61
78
  async transaction(work) {
62
79
  const events = createDomainEventRecorder();
63
- const result = await options.db.transaction(async (tx) => {
80
+ const result = await runSerializedSqliteTransaction(options.db, () => options.db.transaction(async (tx) => {
64
81
  const txPorts = options.createTransactionPorts(tx, events);
65
82
  return work(txPorts);
66
- }, options.transactionConfig);
83
+ }, options.transactionConfig));
67
84
  if (options.eventBus) {
68
85
  await events.flush(options.eventBus);
69
86
  }
@@ -140,6 +157,10 @@ function createSqliteExecutor(db, table) {
140
157
  return db.all(query);
141
158
  },
142
159
  async row(query) {
160
+ if ("all" in db && typeof db.all === "function") {
161
+ const rows = await db.all(query);
162
+ return rows[0];
163
+ }
143
164
  return db.get(query);
144
165
  },
145
166
  async run(query) {
@@ -147,7 +168,7 @@ function createSqliteExecutor(db, table) {
147
168
  },
148
169
  withTransaction(fn) {
149
170
  if ("transaction" in db && typeof db.transaction === "function") {
150
- return db.transaction((tx) => fn(createSqliteExecutor(tx, table)));
171
+ return runSerializedSqliteTransaction(db, () => db.transaction((tx) => fn(createSqliteExecutor(tx, table))));
151
172
  }
152
173
  return undefined;
153
174
  },
@@ -196,6 +217,17 @@ export function createDrizzleSqliteOutboxPort(db, adapterOptions = {}) {
196
217
  const executor = createSqliteExecutor(db, table);
197
218
  return createOutboxPortCore(executor, { now: adapterOptions.now });
198
219
  }
220
+ /**
221
+ * Create a Beignet outbox admin port backed by a Drizzle SQLite database.
222
+ *
223
+ * Wire this only into operational contexts that need to inspect, requeue,
224
+ * purge, or prune outbox messages.
225
+ */
226
+ export function createDrizzleSqliteOutboxAdminPort(db, adapterOptions = {}) {
227
+ const table = sql.raw(quoteIdentifier(adapterOptions.tableName ?? "outbox_messages", '"'));
228
+ const executor = createSqliteExecutor(db, table);
229
+ return createOutboxAdminPortCore(executor, { now: adapterOptions.now });
230
+ }
199
231
  /**
200
232
  * Error thrown when `complete(...)` or `fail(...)` does not match an
201
233
  * in-progress idempotency reservation with the provided fingerprint.
@@ -340,7 +372,6 @@ export function createDrizzleSqliteProvider(options) {
340
372
  // 3. Build a typed DbPort
341
373
  const dbPort = {
342
374
  drizzle: db,
343
- db,
344
375
  client,
345
376
  checkHealth: () => checkSqliteHealth(client),
346
377
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,OAAO,EAGL,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,cAAc,EACd,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAe,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAA6C,GAAG,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAuB,MAAM,oBAAoB,CAAC;AAGlE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,GAErB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAiB,aAAa,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,EACL,yBAAyB,EACzB,qCAAqC,GAEtC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EACL,oBAAoB,GAGrB,MAAM,0BAA0B,CAAC;AAyDlC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACjC,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAoCD;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAI3C,OAAyD;IAEzD,OAAO;QACL,KAAK,CAAC,WAAW,CACf,IAAyC;YAEzC,MAAM,MAAM,GAAG,yBAAyB,EAAE,CAAC;YAE3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;gBACvD,MAAM,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAC5C,EAAuC,EACvC,MAAM,CACP,CAAC;gBACF,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAE9B,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;gBACrB,MAAM,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACvC,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAeD;;;;;GAKG;AACH,MAAM,UAAU,0CAA0C,CACxD,UAAwC,EAAE;IAE1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,WAAW,CAAC;IACnD,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;;;;;;;;;MAoBjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,WAAW;QACtG,8BAA8B,eAAe,CAAC,GAAG,WAAW,YAAY,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;QACnH,8BAA8B,eAAe,CAAC,GAAG,WAAW,kBAAkB,EAAE,GAAG,CAAC,OAAO,KAAK,gBAAgB;QAChH,8BAA8B,eAAe,CAAC,GAAG,WAAW,cAAc,EAAE,GAAG,CAAC,OAAO,KAAK,eAAe;QAC3G,8BAA8B,eAAe,CAAC,GAAG,WAAW,eAAe,EAAE,GAAG,CAAC,OAAO,KAAK,+BAA+B;QAC5H,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,cAAc;KAC1G,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,+BAA+B,CAG7C,EAAkC,EAClC,iBAA+C,EAAE;IAEjD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,WAAW,EAAE,GAAG,CAAC,CAC9D,CAAC;IAEF,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,KAAK;YAChB,MAAM,EAAE,CAAC,GAAG,CACV,yBAAyB,CACvB,KAAK,EACL,oBAAoB,CAAC,KAAK,EAAE,cAAc,CAAC,CAC5C,CACF,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAmBD,SAAS,gBAAgB,CAAC,MAAe;IACvC,MAAM,YAAY,GAAI,MAAqC,CAAC,YAAY,CAAC;IACzE,OAAO,OAAO,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAaD,SAAS,oBAAoB,CAC3B,EAAkC,EAClC,KAAU;IAEV,OAAO;QACL,KAAK;QACL,wEAAwE;QACxE,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC9C,oBAAoB,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QAEjC,KAAK,CAAC,IAAI,CAAC,KAAK;YACd,OAAO,EAAE,CAAC,GAAG,CAA0B,KAAK,CAAC,CAAC;QAChD,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAK;YACb,OAAO,EAAE,CAAC,GAAG,CAAsC,KAAK,CAAC,CAAC;QAC5D,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,KAAK;YACb,OAAO,gBAAgB,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/C,CAAC;QAED,eAAe,CAAC,EAAE;YAChB,IAAI,aAAa,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC,WAAW,KAAK,UAAU,EAAE,CAAC;gBAChE,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAC3B,EAAE,CAAC,oBAAoB,CAAC,EAAoC,EAAE,KAAK,CAAC,CAAC,CACtE,CAAC;YACJ,CAAC;YAED,OAAO,SAAS,CAAC;QACnB,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wCAAwC,CACtD,UAAsC,EAAE;IAExC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,iBAAiB,CAAC;IACzD,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;;;;;MAgBjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,gBAAgB,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;QACvH,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,yBAAyB;KACrH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,6BAA6B,CAG3C,EAAkC,EAClC,iBAA6C,EAAE;IAE/C,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,iBAAiB,EAAE,GAAG,CAAC,CACpE,CAAC;IACF,MAAM,QAAQ,GAAsB,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEpE,OAAO,oBAAoB,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;AACrE,CAAC;AAmBD;;;;;;;GAOG;AACH,MAAM,OAAO,qCAAsC,SAAQ,KAAK;IACrD,MAAM,CAAsB;IAC5B,SAAS,CAAS;IAClB,GAAG,CAAS;IACZ,QAAQ,CAAS;IAE1B,YAAY,IAKX;QACC,KAAK,CAAC,qCAAqC,CAAC,IAAI,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,IAAI,GAAG,uCAAuC,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAChC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,UAAU,6CAA6C,CAC3D,UAA2C,EAAE;IAE7C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,qBAAqB,CAAC;IAC7D,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,SAAS,CAAC,UAAU,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAEhE,OAAO;QACL,8BAA8B,KAAK;;;;;;;;;;;;MAYjC;QACF,8BAA8B,eAAe,CAAC,GAAG,WAAW,aAAa,EAAE,GAAG,CAAC,OAAO,KAAK,0CAA0C;QACrI,8BAA8B,eAAe,CAAC,GAAG,WAAW,cAAc,EAAE,GAAG,CAAC,OAAO,KAAK,eAAe;KAC5G,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kCAAkC,CAGhD,EAAkC,EAClC,iBAAkD,EAAE;IAEpD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CACnB,eAAe,CAAC,cAAc,CAAC,SAAS,IAAI,qBAAqB,EAAE,GAAG,CAAC,CACxE,CAAC;IACF,MAAM,QAAQ,GAA2B,oBAAoB,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;IAEzE,OAAO,yBAAyB,CAC9B,QAAQ,EACR,EAAE,GAAG,EAAE,cAAc,CAAC,GAAG,EAAE,EAC3B,qCAAqC,CACtC,CAAC;AACJ,CAAC;AAED,MAAM,sBAAsB,GAAG;IAC7B,WAAW;IACX,OAAO;IACP,SAAS;IACT,UAAU;IACV,OAAO;IACP,QAAQ;CACA,CAAC;AAEX;;;GAGG;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC;;;;;OAKG;IACH,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,MAAM,CACL,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EACxE;QACE,OAAO,EACL,8KAA8K;KACjL,CACF;IAEH;;;OAGG;IACH,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AA+BH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,2BAA2B,CAGzC,OAAwD;IACxD,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAE5C,OAAO,cAAc,CAAC;QACpB,IAAI,EAAE,gBAAgB;QAEtB,MAAM,EAAE;YACN,MAAM,EAAE,kBAAkB;YAC1B,SAAS,EAAE,SAAS;SACrB;QAED,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;YAC3B,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CACb,gGAAgG,CACjG,CAAC;YACJ,CAAC;YAED,0BAA0B;YAC1B,MAAM,MAAM,GAAW,YAAY,CAAC;gBAClC,GAAG,EAAE,MAAM,CAAC,MAAM;gBAClB,SAAS,EAAE,MAAM,CAAC,aAAa;aAChC,CAAC,CAAC;YAEH,MAAM,eAAe,GAAG,6BAA6B,CAAC,KAAK,EAAE;gBAC3D,YAAY,EAAE,gBAAgB;gBAC9B,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YAEH,MAAM,MAAM,GAAG,mBAAmB,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;YAE9D,mCAAmC;YACnC,MAAM,EAAE,GAA4B,MAAM;gBACxC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gBACrC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;YAEhC,0BAA0B;YAC1B,MAAM,MAAM,GAAoB;gBAC9B,OAAO,EAAE,EAAE;gBACX,EAAE;gBACF,MAAM;gBACN,WAAW,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,MAAM,CAAC;aAC7C,CAAC;YAEF,OAAO;gBACL,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAuC;gBAClE,KAAK,CAAC,IAAI;oBACR,2CAA2C;oBAC3C,IAAI,CAAC;wBACH,MAAM,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9B,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,yDAAyD;wBACzD,OAAO,CAAC,KAAK,CACX,4DAA4D,EAC5D,KAAK,CACN,CAAC;oBACJ,CAAC;gBACH,CAAC;aACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/sqlite/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@beignet/provider-db-drizzle",
3
- "version": "0.0.32",
3
+ "version": "0.0.34",
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": {
@@ -156,10 +156,15 @@ the current transaction unless rebuilt from `tx`.
156
156
  dependency for contracts, use cases, policies, routes, or UI.
157
157
  - Register Drizzle before app-local providers that call `ports.db.drizzle` in
158
158
  `setup(...)`.
159
- - The legacy `ctx.ports.db.db` alias may exist, but new app code should use
160
- `drizzle`.
161
159
  - Operational ports must be rebuilt from `tx` when they need to commit with
162
160
  the business write.
161
+ - SQLite is a single-writer backend. Beignet queues its own Unit of Work,
162
+ outbox-claim, and idempotency-reservation transactions per Drizzle client,
163
+ but that coordination is process-local. Use Postgres or MySQL for outbox
164
+ workers distributed across multiple hosts.
165
+ - MySQL retries deadlock victims only for Beignet-owned outbox-claim and
166
+ idempotency-reservation transactions, with eight bounded attempts. It does
167
+ not retry app-owned Unit of Work callbacks.
163
168
 
164
169
  ## Operational Ports
165
170
 
@@ -28,7 +28,7 @@
28
28
  */
29
29
 
30
30
  import type { IdempotencyPort } from "@beignet/core/idempotency";
31
- import type { OutboxPort } from "@beignet/core/outbox";
31
+ import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
32
32
  import {
33
33
  type AuditLogPort,
34
34
  type BufferedDomainEventRecorder,
@@ -67,6 +67,7 @@ import {
67
67
  import { quoteIdentifier } from "../shared/identifiers.js";
68
68
  import { createDbQueryLogger } from "../shared/instrumentation.js";
69
69
  import {
70
+ createOutboxAdminPortCore,
70
71
  createOutboxPortCore,
71
72
  type OutboxSqlExecutor,
72
73
  type SqlExecutorBase,
@@ -87,13 +88,6 @@ export interface DbPort<
87
88
  */
88
89
  drizzle: MySql2Database<TSchema>;
89
90
 
90
- /**
91
- * Backwards-compatible alias for `drizzle`.
92
- *
93
- * @deprecated Use `drizzle` for the Drizzle ORM instance.
94
- */
95
- db: MySql2Database<TSchema>;
96
-
97
91
  /**
98
92
  * The underlying mysql2 connection pool.
99
93
  * Use this for advanced operations not covered by Drizzle ORM.
@@ -285,6 +279,39 @@ function isDuplicateKeyError(error: unknown): boolean {
285
279
  return false;
286
280
  }
287
281
 
282
+ /**
283
+ * Detect an InnoDB deadlock victim through Drizzle's error cause chain.
284
+ */
285
+ function isMysqlDeadlockError(error: unknown): boolean {
286
+ for (
287
+ let current = error;
288
+ current !== null && typeof current === "object";
289
+ current = (current as { cause?: unknown }).cause
290
+ ) {
291
+ const candidate = current as { errno?: unknown; code?: unknown };
292
+ if (candidate.errno === 1213 || candidate.code === "ER_LOCK_DEADLOCK") {
293
+ return true;
294
+ }
295
+ }
296
+ return false;
297
+ }
298
+
299
+ async function runMysqlInternalTransaction<Result>(
300
+ transaction: () => Promise<Result>,
301
+ ): Promise<Result> {
302
+ const maxAttempts = 8;
303
+ for (let attempt = 1; ; attempt += 1) {
304
+ try {
305
+ return await transaction();
306
+ } catch (error) {
307
+ if (!isMysqlDeadlockError(error) || attempt >= maxAttempts) {
308
+ throw error;
309
+ }
310
+ await new Promise((resolve) => setTimeout(resolve, attempt));
311
+ }
312
+ }
313
+ }
314
+
288
315
  /**
289
316
  * MySQL executor implementing both the outbox and idempotency seams of the
290
317
  * shared database cores.
@@ -348,8 +375,13 @@ function createMysqlExecutor<TSchema extends Record<string, unknown>>(
348
375
 
349
376
  withTransaction(fn) {
350
377
  if ("transaction" in db && typeof db.transaction === "function") {
351
- return db.transaction((tx) =>
352
- fn(createMysqlExecutor(tx as DrizzleMysqlDatabase<TSchema>, table)),
378
+ // Outbox claims and idempotency reservations are small Beignet-owned
379
+ // transactions with no app callbacks. Retrying a deadlock victim is
380
+ // therefore safe and lets contenders classify against the winner.
381
+ return runMysqlInternalTransaction(() =>
382
+ db.transaction((tx) =>
383
+ fn(createMysqlExecutor(tx as DrizzleMysqlDatabase<TSchema>, table)),
384
+ ),
353
385
  );
354
386
  }
355
387
 
@@ -497,6 +529,26 @@ export function createDrizzleMysqlOutboxPort<
497
529
  return createOutboxPortCore(executor, { now: adapterOptions.now });
498
530
  }
499
531
 
532
+ /**
533
+ * Create a Beignet outbox admin port backed by a Drizzle MySQL database.
534
+ *
535
+ * Wire this only into operational contexts that need to inspect, requeue,
536
+ * purge, or prune outbox messages.
537
+ */
538
+ export function createDrizzleMysqlOutboxAdminPort<
539
+ TSchema extends Record<string, unknown>,
540
+ >(
541
+ db: DrizzleMysqlDatabase<TSchema>,
542
+ adapterOptions: DrizzleMysqlOutboxOptions = {},
543
+ ): OutboxAdminPort {
544
+ const table = sql.raw(
545
+ quoteIdentifier(adapterOptions.tableName ?? "outbox_messages", "`"),
546
+ );
547
+ const executor: OutboxSqlExecutor = createMysqlExecutor(db, table);
548
+
549
+ return createOutboxAdminPortCore(executor, { now: adapterOptions.now });
550
+ }
551
+
500
552
  /**
501
553
  * Options for a Drizzle MySQL-backed idempotency port.
502
554
  */
@@ -729,7 +781,6 @@ export function createDrizzleMysqlProvider<
729
781
  // 3. Build a typed DbPort
730
782
  const dbPort: DbPort<TSchema> = {
731
783
  drizzle: db,
732
- db,
733
784
  pool,
734
785
  checkHealth: () => checkMysqlHealth(pool),
735
786
  };
@@ -28,7 +28,7 @@
28
28
  */
29
29
 
30
30
  import type { IdempotencyPort } from "@beignet/core/idempotency";
31
- import type { OutboxPort } from "@beignet/core/outbox";
31
+ import type { OutboxAdminPort, OutboxPort } from "@beignet/core/outbox";
32
32
  import {
33
33
  type AuditLogPort,
34
34
  type BufferedDomainEventRecorder,
@@ -65,6 +65,7 @@ import {
65
65
  import { quoteIdentifier } from "../shared/identifiers.js";
66
66
  import { createDbQueryLogger } from "../shared/instrumentation.js";
67
67
  import {
68
+ createOutboxAdminPortCore,
68
69
  createOutboxPortCore,
69
70
  type OutboxSqlExecutor,
70
71
  type SqlExecutorBase,
@@ -85,13 +86,6 @@ export interface DbPort<
85
86
  */
86
87
  drizzle: NodePgDatabase<TSchema>;
87
88
 
88
- /**
89
- * Backwards-compatible alias for `drizzle`.
90
- *
91
- * @deprecated Use `drizzle` for the Drizzle ORM instance.
92
- */
93
- db: NodePgDatabase<TSchema>;
94
-
95
89
  /**
96
90
  * The underlying node-postgres connection pool.
97
91
  * Use this for advanced operations not covered by Drizzle ORM.
@@ -443,6 +437,26 @@ export function createDrizzlePostgresOutboxPort<
443
437
  return createOutboxPortCore(executor, { now: adapterOptions.now });
444
438
  }
445
439
 
440
+ /**
441
+ * Create a Beignet outbox admin port backed by a Drizzle Postgres database.
442
+ *
443
+ * Wire this only into operational contexts that need to inspect, requeue,
444
+ * purge, or prune outbox messages.
445
+ */
446
+ export function createDrizzlePostgresOutboxAdminPort<
447
+ TSchema extends Record<string, unknown>,
448
+ >(
449
+ db: DrizzlePostgresDatabase<TSchema>,
450
+ adapterOptions: DrizzlePostgresOutboxOptions = {},
451
+ ): OutboxAdminPort {
452
+ const table = sql.raw(
453
+ quoteIdentifier(adapterOptions.tableName ?? "outbox_messages", '"'),
454
+ );
455
+ const executor: OutboxSqlExecutor = createPostgresExecutor(db, table);
456
+
457
+ return createOutboxAdminPortCore(executor, { now: adapterOptions.now });
458
+ }
459
+
446
460
  /**
447
461
  * Options for a Drizzle Postgres-backed idempotency port.
448
462
  */
@@ -670,7 +684,6 @@ export function createDrizzlePostgresProvider<
670
684
  // 3. Build a typed DbPort
671
685
  const dbPort: DbPort<TSchema> = {
672
686
  drizzle: db,
673
- db,
674
687
  pool,
675
688
  checkHealth: () => checkPostgresHealth(pool),
676
689
  };