@beignet/provider-db-drizzle 0.0.44 → 0.0.46

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 CHANGED
@@ -1,5 +1,13 @@
1
1
  # @beignet/provider-db-drizzle
2
2
 
3
+ ## 0.0.46
4
+
5
+ ## 0.0.45
6
+
7
+ ### Patch Changes
8
+
9
+ - b9df150: Keep response validation, request parsing, client error classification, workflow transforms, idempotency mutations, webhook signatures, and ownership tokens correct at their edge cases.
10
+
3
11
  ## 0.0.44
4
12
 
5
13
  ## 0.0.43
package/README.md CHANGED
@@ -720,6 +720,9 @@ The default table is `idempotency_records`; pass `tableName` to both setup and
720
720
  port creation if your app uses a different table name. Expired records are
721
721
  removed during reservation, failed in-progress reservations are released, and
722
722
  completed matching records replay their stored result.
723
+ Reservation tokens use Web Crypto `randomUUID()` or `getRandomValues()` when
724
+ available and securely fall back to `node:crypto` on supported Node runtimes;
725
+ the adapter fails before writing when neither secure source is available.
723
726
 
724
727
  Unfinished reservations use a 300-second TTL by default, independently from
725
728
  the completed replay `ttlSec`. `complete(...)` and `fail(...)` must match an
@@ -26,8 +26,9 @@ export interface IdempotencySqlExecutor extends SqlExecutorBase<IdempotencySqlEx
26
26
  /**
27
27
  * Insert statement suffix for conflict-tolerant reservation inserts.
28
28
  *
29
- * SQLite: empty. Postgres: `on conflict (storage_key) do nothing`.
30
- * MySQL: `on duplicate key update storage_key = storage_key`.
29
+ * SQLite/MySQL: empty. Postgres:
30
+ * `on conflict (storage_key) do nothing`. MySQL reports duplicate inserts
31
+ * as `ER_DUP_ENTRY`, which its executor classifies as a reservation conflict.
31
32
  */
32
33
  insertConflictSuffix: SQL;
33
34
  }
@@ -1 +1 @@
1
- {"version":3,"file":"idempotency-core.d.ts","sourceRoot":"","sources":["../../src/shared/idempotency-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAKL,KAAK,eAAe,EAIrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD;;GAEG;AACH,MAAM,WAAW,sBACf,SAAQ,eAAe,CAAC,sBAAsB,CAAC;IAC/C;;;;OAIG;IACH,YAAY,EAAE,GAAG,CAAC;IAElB;;;;;OAKG;IACH,oBAAoB,EAAE,GAAG,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,kDAAkD;IAClD,sBAAsB,CAAC,EAAE,MAAM,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,mCAAmC,GAAG,KAChD,IAAI,EAAE,4BAA4B,KAC/B,KAAK,CAAC;AAEX;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,4BAA4B,GACjC,MAAM,CAER;AAsGD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,0BAA0B,EACnC,kBAAkB,EAAE,mCAAmC,GACtD,eAAe,CA+KjB"}
1
+ {"version":3,"file":"idempotency-core.d.ts","sourceRoot":"","sources":["../../src/shared/idempotency-core.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAKL,KAAK,eAAe,EAIrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,KAAK,GAAG,EAAO,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOxD;;GAEG;AACH,MAAM,WAAW,sBACf,SAAQ,eAAe,CAAC,sBAAsB,CAAC;IAC/C;;;;OAIG;IACH,YAAY,EAAE,GAAG,CAAC;IAElB;;;;;;OAMG;IACH,oBAAoB,EAAE,GAAG,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;IACjB,kDAAkD;IAClD,sBAAsB,CAAC,EAAE,MAAM,MAAM,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,UAAU,GAAG,MAAM,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,MAAM,mCAAmC,GAAG,KAChD,IAAI,EAAE,4BAA4B,KAC/B,KAAK,CAAC;AAEX;;;GAGG;AACH,wBAAgB,qCAAqC,CACnD,IAAI,EAAE,4BAA4B,GACjC,MAAM,CAER;AAgHD;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,sBAAsB,EAChC,OAAO,EAAE,0BAA0B,EACnC,kBAAkB,EAAE,mCAAmC,GACtD,eAAe,CAgLjB"}
@@ -78,16 +78,26 @@ function decodeReservationState(value) {
78
78
  return undefined;
79
79
  }
80
80
  }
81
- function createRandomReservationToken() {
82
- if (typeof globalThis.crypto?.randomUUID === "function") {
83
- return globalThis.crypto.randomUUID();
81
+ async function createRandomReservationToken() {
82
+ const crypto = globalThis.crypto;
83
+ if (typeof crypto?.randomUUID === "function") {
84
+ return crypto.randomUUID();
84
85
  }
85
- const bytes = new Uint8Array(16);
86
- globalThis.crypto?.getRandomValues?.(bytes);
87
- if (bytes.some((value) => value !== 0)) {
86
+ if (typeof crypto?.getRandomValues === "function") {
87
+ const bytes = new Uint8Array(16);
88
+ crypto.getRandomValues(bytes);
88
89
  return Array.from(bytes, (value) => value.toString(16).padStart(2, "0")).join("");
89
90
  }
90
- return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
91
+ try {
92
+ const nodeCrypto = await import("node:crypto");
93
+ if (typeof nodeCrypto.randomUUID === "function") {
94
+ return nodeCrypto.randomUUID();
95
+ }
96
+ return nodeCrypto.randomBytes(16).toString("hex");
97
+ }
98
+ catch {
99
+ throw new Error("Idempotency reservations require Web Crypto or Node.js crypto.");
100
+ }
91
101
  }
92
102
  /**
93
103
  * Create the dialect-independent idempotency port orchestration on top of a
@@ -121,7 +131,8 @@ export function createIdempotencyPortCore(executor, options, MutationErrorClass)
121
131
  const now = nowFrom(options);
122
132
  const nowIso = encodeTimestamp(now);
123
133
  const expiresAt = resolveIdempotencyExpiresAt(input.reservationTtlSec ?? DEFAULT_IDEMPOTENCY_RESERVATION_TTL_SEC, now);
124
- const reservationToken = encodeReservationState((options.createReservationToken ?? createRandomReservationToken)(), input.ttlSec);
134
+ const reservationToken = encodeReservationState(options.createReservationToken?.() ??
135
+ (await createRandomReservationToken()), input.ttlSec);
125
136
  const reservationJson = reservationToken;
126
137
  const storageKey = createIdempotencyStorageKey(input);
127
138
  const scopeKey = normalizeIdempotencyScope(input.scope);
@@ -1 +1 @@
1
- {"version":3,"file":"idempotency-core.js","sourceRoot":"","sources":["../../src/shared/idempotency-core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"idempotency-core.js","sourceRoot":"","sources":["../../src/shared/idempotency-core.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.44",
3
+ "version": "0.0.46",
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": {
@@ -44,8 +44,9 @@ export interface IdempotencySqlExecutor
44
44
  /**
45
45
  * Insert statement suffix for conflict-tolerant reservation inserts.
46
46
  *
47
- * SQLite: empty. Postgres: `on conflict (storage_key) do nothing`.
48
- * MySQL: `on duplicate key update storage_key = storage_key`.
47
+ * SQLite/MySQL: empty. Postgres:
48
+ * `on conflict (storage_key) do nothing`. MySQL reports duplicate inserts
49
+ * as `ER_DUP_ENTRY`, which its executor classifies as a reservation conflict.
49
50
  */
50
51
  insertConflictSuffix: SQL;
51
52
  }
@@ -174,20 +175,30 @@ function decodeReservationState(
174
175
  }
175
176
  }
176
177
 
177
- function createRandomReservationToken(): string {
178
- if (typeof globalThis.crypto?.randomUUID === "function") {
179
- return globalThis.crypto.randomUUID();
178
+ async function createRandomReservationToken(): Promise<string> {
179
+ const crypto = globalThis.crypto;
180
+ if (typeof crypto?.randomUUID === "function") {
181
+ return crypto.randomUUID();
180
182
  }
181
-
182
- const bytes = new Uint8Array(16);
183
- globalThis.crypto?.getRandomValues?.(bytes);
184
- if (bytes.some((value) => value !== 0)) {
183
+ if (typeof crypto?.getRandomValues === "function") {
184
+ const bytes = new Uint8Array(16);
185
+ crypto.getRandomValues(bytes);
185
186
  return Array.from(bytes, (value) =>
186
187
  value.toString(16).padStart(2, "0"),
187
188
  ).join("");
188
189
  }
189
190
 
190
- return `${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
191
+ try {
192
+ const nodeCrypto = await import("node:crypto");
193
+ if (typeof nodeCrypto.randomUUID === "function") {
194
+ return nodeCrypto.randomUUID();
195
+ }
196
+ return nodeCrypto.randomBytes(16).toString("hex");
197
+ } catch {
198
+ throw new Error(
199
+ "Idempotency reservations require Web Crypto or Node.js crypto.",
200
+ );
201
+ }
191
202
  }
192
203
 
193
204
  /**
@@ -240,7 +251,8 @@ export function createIdempotencyPortCore(
240
251
  now,
241
252
  );
242
253
  const reservationToken = encodeReservationState(
243
- (options.createReservationToken ?? createRandomReservationToken)(),
254
+ options.createReservationToken?.() ??
255
+ (await createRandomReservationToken()),
244
256
  input.ttlSec,
245
257
  );
246
258
  const reservationJson = reservationToken;