@agentuity/postgres 1.0.15 → 1.0.17

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/dist/client.d.ts CHANGED
@@ -1,6 +1,26 @@
1
1
  import { SQL as BunSQL, type SQLQuery } from 'bun';
2
- import type { PostgresConfig, ConnectionStats, TransactionOptions, ReserveOptions } from './types';
2
+ import type { PostgresConfig, ConnectionStats, TransactionOptions, ReserveOptions, UnsafeQueryResult } from './types';
3
3
  import { Transaction, ReservedConnection } from './transaction';
4
+ /**
5
+ * Creates a lazy thenable with format locking for safe query execution.
6
+ *
7
+ * The returned object implements the {@link UnsafeQueryResult} interface: it is
8
+ * thenable (`.then()`, `.catch()`, `.finally()`) and exposes a `.values()`
9
+ * method for array-format results. Execution is deferred until the first
10
+ * consumption method is called.
11
+ *
12
+ * **Format locking:** The first access (`.then()` or `.values()`) determines
13
+ * the result format for the lifetime of the thenable. Attempting the other
14
+ * format afterwards throws an error, preventing accidental duplicate execution.
15
+ *
16
+ * @param makeExecutor - Factory that creates the execution promise.
17
+ * Called with `true` for array format (`.values()`) or `false` for row-object
18
+ * format (`.then()`).
19
+ * @returns A lazy thenable with `.values()` support
20
+ *
21
+ * @internal Exported for use by `@agentuity/drizzle` — not part of the public API.
22
+ */
23
+ export declare function createThenable(makeExecutor: (useValues: boolean) => Promise<unknown>): UnsafeQueryResult;
4
24
  /**
5
25
  * A resilient PostgreSQL client with automatic reconnection.
6
26
  *
@@ -138,6 +158,52 @@ export declare class PostgresClient {
138
158
  * @param query - The raw SQL query string
139
159
  */
140
160
  unsafe(query: string): SQLQuery;
161
+ /**
162
+ * Execute a raw SQL query with automatic retry and transaction wrapping for mutations.
163
+ *
164
+ * Unlike {@link unsafe}, this method:
165
+ * - Automatically retries on retryable errors (connection drops, resets)
166
+ * - Wraps mutation statements in transactions for safe retry
167
+ * - Returns a thenable with `.values()` support matching Bun's SQLQuery interface
168
+ *
169
+ * Detected mutation types: INSERT, UPDATE, DELETE, COPY, TRUNCATE, MERGE, CALL, DO.
170
+ * EXPLAIN queries are never wrapped (read-only analysis).
171
+ *
172
+ * For SELECT queries, retries without transaction wrapping (idempotent).
173
+ * For mutations, wraps in BEGIN/COMMIT so PostgreSQL auto-rolls back
174
+ * uncommitted transactions on connection drop, making retry safe.
175
+ *
176
+ * **⚠️ COMMIT Uncertainty Window:**
177
+ * If the connection drops after the server processes COMMIT but before the client
178
+ * receives confirmation (~<1ms window), changes ARE committed but the client sees
179
+ * a failure. Retry will then duplicate the mutation. This is an inherent limitation
180
+ * of retry-based approaches. Use application-level idempotency (e.g., unique
181
+ * constraints with ON CONFLICT) for critical operations.
182
+ *
183
+ * **⚠️ Result Format Locking:**
184
+ * Each unsafeQuery() result can only be consumed via ONE access pattern — either
185
+ * `await result` (row objects) or `await result.values()` (arrays), not both.
186
+ * Attempting the second pattern throws an error to prevent accidental duplicate execution.
187
+ *
188
+ * @param query - The raw SQL query string
189
+ * @param params - Optional query parameters
190
+ * @returns A thenable that resolves to rows (objects) or arrays via `.values()`
191
+ *
192
+ * @see https://github.com/agentuity/sdk/issues/911
193
+ *
194
+ * @example
195
+ * ```typescript
196
+ * // INSERT with safe retry
197
+ * const rows = await client.unsafeQuery('INSERT INTO items (name) VALUES ($1) RETURNING *', ['test']);
198
+ *
199
+ * // SELECT with retry (no transaction overhead)
200
+ * const items = await client.unsafeQuery('SELECT * FROM items WHERE id = $1', [42]);
201
+ *
202
+ * // Get raw arrays via .values()
203
+ * const arrays = await client.unsafeQuery('SELECT id, name FROM items').values();
204
+ * ```
205
+ */
206
+ unsafeQuery(query: string, params?: unknown[]): UnsafeQueryResult;
141
207
  /**
142
208
  * Registers signal handlers to detect application shutdown.
143
209
  * When shutdown is detected, reconnection is disabled.
@@ -223,6 +289,7 @@ export declare class PostgresClient {
223
289
  */
224
290
  export type CallablePostgresClient = PostgresClient & {
225
291
  (strings: TemplateStringsArray, ...values: unknown[]): Promise<unknown[]>;
292
+ unsafeQuery(query: string, params?: unknown[]): UnsafeQueryResult;
226
293
  };
227
294
  /**
228
295
  * Creates a PostgresClient that can be called as a tagged template literal.
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -4,6 +4,60 @@ import { computeBackoff, sleep, mergeReconnectConfig } from './reconnect';
4
4
  import { Transaction } from './transaction';
5
5
  import { registerClient, unregisterClient } from './registry';
6
6
  import { injectSslMode } from './tls';
7
+ import { isMutationStatement } from './mutation';
8
+ /**
9
+ * Creates a lazy thenable with format locking for safe query execution.
10
+ *
11
+ * The returned object implements the {@link UnsafeQueryResult} interface: it is
12
+ * thenable (`.then()`, `.catch()`, `.finally()`) and exposes a `.values()`
13
+ * method for array-format results. Execution is deferred until the first
14
+ * consumption method is called.
15
+ *
16
+ * **Format locking:** The first access (`.then()` or `.values()`) determines
17
+ * the result format for the lifetime of the thenable. Attempting the other
18
+ * format afterwards throws an error, preventing accidental duplicate execution.
19
+ *
20
+ * @param makeExecutor - Factory that creates the execution promise.
21
+ * Called with `true` for array format (`.values()`) or `false` for row-object
22
+ * format (`.then()`).
23
+ * @returns A lazy thenable with `.values()` support
24
+ *
25
+ * @internal Exported for use by `@agentuity/drizzle` — not part of the public API.
26
+ */
27
+ export function createThenable(makeExecutor) {
28
+ let started = null;
29
+ let executionMode = null; // tracks useValues for first call
30
+ const startExecution = (useValues) => {
31
+ if (started) {
32
+ if (executionMode !== useValues) {
33
+ throw new Error(`Cannot access .${useValues ? 'values()' : 'then()'} after .${!useValues ? 'values()' : 'then()'} ` +
34
+ 'on the same query result. The result format is locked to the first access mode ' +
35
+ 'to prevent duplicate query execution. Create a new unsafeQuery() call for a different format.');
36
+ }
37
+ return started;
38
+ }
39
+ executionMode = useValues;
40
+ started = makeExecutor(useValues);
41
+ return started;
42
+ };
43
+ return new Proxy({}, {
44
+ get(_target, prop) {
45
+ if (prop === 'then') {
46
+ return (onfulfilled, onrejected) => startExecution(false).then(onfulfilled, onrejected);
47
+ }
48
+ if (prop === 'catch') {
49
+ return (onrejected) => startExecution(false).catch(onrejected);
50
+ }
51
+ if (prop === 'finally') {
52
+ return (onfinally) => startExecution(false).finally(onfinally ?? undefined);
53
+ }
54
+ if (prop === 'values') {
55
+ return () => startExecution(true);
56
+ }
57
+ return undefined;
58
+ },
59
+ });
60
+ }
7
61
  /**
8
62
  * A resilient PostgreSQL client with automatic reconnection.
9
63
  *
@@ -124,8 +178,22 @@ export class PostgresClient {
124
178
  * ```
125
179
  */
126
180
  query(strings, ...values) {
181
+ // Reconstruct query shape for mutation detection.
182
+ // Space as separator is safe — doesn't affect SQL keyword detection.
183
+ const queryShape = strings.join(' ');
184
+ const mutation = isMutationStatement(queryShape);
127
185
  return this._executeWithRetry(async () => {
128
186
  const sql = await this._ensureConnectedAsync();
187
+ if (mutation) {
188
+ // Use sql.begin() callback API for pool-safe transactions.
189
+ // Bun requires this instead of manual BEGIN/COMMIT when max > 1,
190
+ // because sql.begin() reserves a specific connection for the
191
+ // transaction. Manual BEGIN via sql.unsafe('BEGIN') would throw
192
+ // ERR_POSTGRES_UNSAFE_TRANSACTION on pooled connections.
193
+ return sql.begin(async (tx) => {
194
+ return tx(strings, ...values);
195
+ });
196
+ }
129
197
  return sql(strings, ...values);
130
198
  });
131
199
  }
@@ -152,6 +220,12 @@ export class PostgresClient {
152
220
  // Use async ensure to wait for connection/reconnect completion
153
221
  // This ensures _warmConnection() updates connection stats before we proceed
154
222
  const sql = await this._ensureConnectedAsync();
223
+ // Reserve a dedicated connection from the pool. Bun requires either
224
+ // sql.begin(callback), sql.reserve(), or max:1 for transactions.
225
+ // Since this API returns a Transaction object for manual commit/rollback,
226
+ // we need a reserved connection to guarantee all queries hit the same
227
+ // connection as the BEGIN.
228
+ const reserved = await sql.reserve();
155
229
  // Build BEGIN statement with options
156
230
  let beginStatement = 'BEGIN';
157
231
  if (options?.isolationLevel) {
@@ -169,9 +243,16 @@ export class PostgresClient {
169
243
  else if (options?.deferrable === false) {
170
244
  beginStatement += ' NOT DEFERRABLE';
171
245
  }
172
- // Execute BEGIN
173
- const connection = await sql.unsafe(beginStatement);
174
- return new Transaction(sql, connection);
246
+ // Execute BEGIN on the reserved connection
247
+ try {
248
+ const connection = await reserved.unsafe(beginStatement);
249
+ return new Transaction(reserved, connection);
250
+ }
251
+ catch (error) {
252
+ // Release the reserved connection if BEGIN fails
253
+ reserved.release();
254
+ throw error;
255
+ }
175
256
  }
176
257
  /**
177
258
  * Reserve an exclusive connection from the pool.
@@ -238,6 +319,73 @@ export class PostgresClient {
238
319
  const sql = this._ensureConnected();
239
320
  return sql.unsafe(query);
240
321
  }
322
+ /**
323
+ * Execute a raw SQL query with automatic retry and transaction wrapping for mutations.
324
+ *
325
+ * Unlike {@link unsafe}, this method:
326
+ * - Automatically retries on retryable errors (connection drops, resets)
327
+ * - Wraps mutation statements in transactions for safe retry
328
+ * - Returns a thenable with `.values()` support matching Bun's SQLQuery interface
329
+ *
330
+ * Detected mutation types: INSERT, UPDATE, DELETE, COPY, TRUNCATE, MERGE, CALL, DO.
331
+ * EXPLAIN queries are never wrapped (read-only analysis).
332
+ *
333
+ * For SELECT queries, retries without transaction wrapping (idempotent).
334
+ * For mutations, wraps in BEGIN/COMMIT so PostgreSQL auto-rolls back
335
+ * uncommitted transactions on connection drop, making retry safe.
336
+ *
337
+ * **⚠️ COMMIT Uncertainty Window:**
338
+ * If the connection drops after the server processes COMMIT but before the client
339
+ * receives confirmation (~<1ms window), changes ARE committed but the client sees
340
+ * a failure. Retry will then duplicate the mutation. This is an inherent limitation
341
+ * of retry-based approaches. Use application-level idempotency (e.g., unique
342
+ * constraints with ON CONFLICT) for critical operations.
343
+ *
344
+ * **⚠️ Result Format Locking:**
345
+ * Each unsafeQuery() result can only be consumed via ONE access pattern — either
346
+ * `await result` (row objects) or `await result.values()` (arrays), not both.
347
+ * Attempting the second pattern throws an error to prevent accidental duplicate execution.
348
+ *
349
+ * @param query - The raw SQL query string
350
+ * @param params - Optional query parameters
351
+ * @returns A thenable that resolves to rows (objects) or arrays via `.values()`
352
+ *
353
+ * @see https://github.com/agentuity/sdk/issues/911
354
+ *
355
+ * @example
356
+ * ```typescript
357
+ * // INSERT with safe retry
358
+ * const rows = await client.unsafeQuery('INSERT INTO items (name) VALUES ($1) RETURNING *', ['test']);
359
+ *
360
+ * // SELECT with retry (no transaction overhead)
361
+ * const items = await client.unsafeQuery('SELECT * FROM items WHERE id = $1', [42]);
362
+ *
363
+ * // Get raw arrays via .values()
364
+ * const arrays = await client.unsafeQuery('SELECT id, name FROM items').values();
365
+ * ```
366
+ */
367
+ unsafeQuery(query, params) {
368
+ if (isMutationStatement(query)) {
369
+ // Use sql.begin() callback API for pool-safe transactions.
370
+ // Bun requires this instead of manual BEGIN/COMMIT when max > 1.
371
+ // sql.begin() auto-COMMITs on success and auto-ROLLBACKs on error.
372
+ const makeTransactionalExecutor = (useValues) => this._executeWithRetry(async () => {
373
+ const raw = this._ensureConnected();
374
+ return raw.begin(async (tx) => {
375
+ const q = params ? tx.unsafe(query, params) : tx.unsafe(query);
376
+ return useValues ? await q.values() : await q;
377
+ });
378
+ });
379
+ return createThenable(makeTransactionalExecutor);
380
+ }
381
+ // Non-mutation: plain retry without transaction overhead
382
+ const makeExecutor = (useValues) => this._executeWithRetry(async () => {
383
+ const raw = this._ensureConnected();
384
+ const q = params ? raw.unsafe(query, params) : raw.unsafe(query);
385
+ return useValues ? q.values() : q;
386
+ });
387
+ return createThenable(makeExecutor);
388
+ }
241
389
  /**
242
390
  * Registers signal handlers to detect application shutdown.
243
391
  * When shutdown is detected, reconnection is disabled.
@@ -292,12 +440,16 @@ export class PostgresClient {
292
440
  bunOptions.password = this._config.password;
293
441
  if (this._config.database)
294
442
  bunOptions.database = this._config.database;
443
+ if (this._config.path)
444
+ bunOptions.path = this._config.path;
295
445
  if (this._config.max)
296
446
  bunOptions.max = this._config.max;
297
447
  if (this._config.idleTimeout !== undefined)
298
448
  bunOptions.idleTimeout = this._config.idleTimeout;
299
449
  if (this._config.connectionTimeout !== undefined)
300
450
  bunOptions.connectionTimeout = this._config.connectionTimeout;
451
+ if (this._config.maxLifetime !== undefined)
452
+ bunOptions.maxLifetime = this._config.maxLifetime;
301
453
  // Handle TLS configuration
302
454
  if (this._config.tls !== undefined) {
303
455
  if (typeof this._config.tls === 'boolean') {
@@ -307,6 +459,21 @@ export class PostgresClient {
307
459
  bunOptions.tls = this._config.tls;
308
460
  }
309
461
  }
462
+ // Postgres client runtime configuration (search_path, statement_timeout, etc.)
463
+ if (this._config.connection)
464
+ bunOptions.connection = this._config.connection;
465
+ // Default to unnamed prepared statements (prepare: false) to prevent
466
+ // "prepared statement did not exist" errors when backend connections
467
+ // rotate (e.g., connection poolers, hot reloads, server restarts).
468
+ // See: https://github.com/agentuity/sdk/issues/1005
469
+ bunOptions.prepare = this._config.prepare ?? false;
470
+ // BigInt handling for integers outside i32 range
471
+ if (this._config.bigint !== undefined)
472
+ bunOptions.bigint = this._config.bigint;
473
+ // Set up onconnect handler
474
+ if (this._config.onconnect) {
475
+ bunOptions.onconnect = this._config.onconnect;
476
+ }
310
477
  // Set up onclose handler for reconnection
311
478
  bunOptions.onclose = (err) => {
312
479
  this._handleClose(err ?? undefined);
@@ -682,6 +849,7 @@ export function createCallableClient(config) {
682
849
  callable.close = client.close.bind(client);
683
850
  callable.shutdown = client.shutdown.bind(client);
684
851
  callable.unsafe = client.unsafe.bind(client);
852
+ callable.unsafeQuery = client.unsafeQuery.bind(client);
685
853
  callable.waitForConnection = client.waitForConnection.bind(client);
686
854
  callable.executeWithRetry = client.executeWithRetry.bind(client);
687
855
  return callable;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -31,11 +31,12 @@
31
31
  * @packageDocumentation
32
32
  */
33
33
  export { postgres, default } from './postgres';
34
- export { PostgresClient, createCallableClient, type CallablePostgresClient } from './client';
34
+ export { PostgresClient, createCallableClient, createThenable, type CallablePostgresClient, } from './client';
35
35
  export { PostgresPool, Pool, createPool } from './pool';
36
36
  export { Transaction, Savepoint, ReservedConnection } from './transaction';
37
37
  export { patchBunSQL, isPatched, SQL } from './patch';
38
38
  export { injectSslMode } from './tls';
39
+ export { isMutationStatement } from './mutation';
39
40
  export type { PostgresConfig, ReconnectConfig, ConnectionStats, TLSConfig, TransactionOptions, ReserveOptions, PoolConfig, PoolStats, PoolSSLConfig, } from './types';
40
41
  export { PostgresError, ConnectionClosedError, ReconnectFailedError, QueryTimeoutError, TransactionError, UnsupportedOperationError, isRetryableError, } from './errors';
41
42
  export { computeBackoff, sleep, mergeReconnectConfig, DEFAULT_RECONNECT_CONFIG } from './reconnect';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,KAAK,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAG7F,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,YAAY,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,SAAS,EACT,aAAa,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAGpG,OAAO,EACN,WAAW,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,KAAK,WAAW,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAGH,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACN,cAAc,EACd,oBAAoB,EACpB,cAAc,EACd,KAAK,sBAAsB,GAC3B,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGxD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAG3E,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAGtD,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAGtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAGjD,YAAY,EACX,cAAc,EACd,eAAe,EACf,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,cAAc,EACd,UAAU,EACV,SAAS,EACT,aAAa,GACb,MAAM,SAAS,CAAC;AAGjB,OAAO,EACN,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,GAChB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAGpG,OAAO,EACN,WAAW,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,KAAK,WAAW,GAChB,MAAM,YAAY,CAAC"}
package/dist/index.js CHANGED
@@ -33,7 +33,7 @@
33
33
  // Main factory function
34
34
  export { postgres, default } from './postgres';
35
35
  // Client class for advanced usage
36
- export { PostgresClient, createCallableClient } from './client';
36
+ export { PostgresClient, createCallableClient, createThenable, } from './client';
37
37
  // Pool class for pg.Pool-based connections
38
38
  export { PostgresPool, Pool, createPool } from './pool';
39
39
  // Transaction and reserved connection classes
@@ -42,6 +42,8 @@ export { Transaction, Savepoint, ReservedConnection } from './transaction';
42
42
  export { patchBunSQL, isPatched, SQL } from './patch';
43
43
  // TLS utilities
44
44
  export { injectSslMode } from './tls';
45
+ // Mutation detection utility
46
+ export { isMutationStatement } from './mutation';
45
47
  // Errors
46
48
  export { PostgresError, ConnectionClosedError, ReconnectFailedError, QueryTimeoutError, TransactionError, UnsupportedOperationError, isRetryableError, } from './errors';
47
49
  // Reconnection utilities
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE/C,kCAAkC;AAClC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAA+B,MAAM,UAAU,CAAC;AAE7F,2CAA2C;AAC3C,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAExD,8CAA8C;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE3E,gDAAgD;AAChD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEtD,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAetC,SAAS;AACT,OAAO,EACN,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,GAChB,MAAM,UAAU,CAAC;AAElB,yBAAyB;AACzB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEpG,2CAA2C;AAC3C,OAAO,EACN,WAAW,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,GAEhB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,wBAAwB;AACxB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE/C,kCAAkC;AAClC,OAAO,EACN,cAAc,EACd,oBAAoB,EACpB,cAAc,GAEd,MAAM,UAAU,CAAC;AAElB,2CAA2C;AAC3C,OAAO,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAExD,8CAA8C;AAC9C,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAE3E,gDAAgD;AAChD,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAEtD,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,6BAA6B;AAC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAejD,SAAS;AACT,OAAO,EACN,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,yBAAyB,EACzB,gBAAgB,GAChB,MAAM,UAAU,CAAC;AAElB,yBAAyB;AACzB,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAEpG,2CAA2C;AAC3C,OAAO,EACN,WAAW,EACX,cAAc,EACd,UAAU,EACV,gBAAgB,GAEhB,MAAM,YAAY,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Strips leading whitespace and SQL comments (block and line) from a query string.
3
+ * Returns the remaining query text starting at the first non-comment token.
4
+ *
5
+ * Note: This regex does NOT support nested block comments. Use
6
+ * {@link stripLeadingComments} for full nested comment support.
7
+ */
8
+ export declare const LEADING_COMMENTS_RE: RegExp;
9
+ /**
10
+ * Determines whether a SQL query is a mutation that requires transaction
11
+ * wrapping for safe retry.
12
+ *
13
+ * Detected mutation types: INSERT, UPDATE, DELETE, COPY, TRUNCATE, MERGE,
14
+ * CALL, DO. EXPLAIN queries are never wrapped (read-only analysis, even
15
+ * when the explained statement is a mutation like `EXPLAIN INSERT INTO ...`).
16
+ *
17
+ * Mutation statements wrapped in a transaction can be safely retried because
18
+ * PostgreSQL guarantees that uncommitted transactions are rolled back when
19
+ * the connection drops. This prevents:
20
+ * - Duplicate rows from retried INSERTs
21
+ * - Double-applied changes from retried UPDATEs (e.g., counter increments)
22
+ * - Repeated side effects from retried DELETEs (e.g., cascade triggers)
23
+ *
24
+ * Handles three patterns:
25
+ * 1. Direct mutations: `INSERT INTO ...`, `UPDATE ... SET`, `DELETE FROM ...`,
26
+ * `COPY ...`, `TRUNCATE ...`, `MERGE ...`, `CALL ...`, `DO ...`
27
+ * (with optional leading comments/whitespace)
28
+ * 2. CTE mutations: `WITH cte AS (...) INSERT|UPDATE|DELETE|... ...` — scans
29
+ * past the WITH clause by tracking parenthesis depth to skip CTE
30
+ * subexpressions, then checks if the first top-level DML keyword is a
31
+ * mutation. The scanner treats single-quoted strings, double-quoted
32
+ * identifiers, dollar-quoted strings, line comments (--), and block
33
+ * comments (including nested) as atomic regions so parentheses inside
34
+ * them do not corrupt depth tracking.
35
+ * 3. Multi-statement queries: `SELECT 1; INSERT INTO items VALUES (1)` —
36
+ * scans past semicolons at depth 0 to find mutation keywords in
37
+ * subsequent statements.
38
+ *
39
+ * @see https://github.com/agentuity/sdk/issues/911
40
+ */
41
+ export declare function isMutationStatement(query: string): boolean;
42
+ //# sourceMappingURL=mutation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutation.d.ts","sourceRoot":"","sources":["../src/mutation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,QAA0C,CAAC;AAiD3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CA4J1D"}