@event-driven-io/dumbo 0.13.0-beta.36 → 0.13.0-beta.37
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/cloudflare.cjs +12 -16
- package/dist/cloudflare.cjs.map +1 -1
- package/dist/cloudflare.d.cts +1 -1
- package/dist/cloudflare.d.ts +1 -1
- package/dist/cloudflare.js +12 -16
- package/dist/cloudflare.js.map +1 -1
- package/dist/{core-DDo4m0Z_.js → core-BG__WVn6.js} +2 -2
- package/dist/{core-DDo4m0Z_.js.map → core-BG__WVn6.js.map} +1 -1
- package/dist/{core-Bf2ujUFy.js → core-BchvTX3G.js} +3 -3
- package/dist/{core-Bf2ujUFy.js.map → core-BchvTX3G.js.map} +1 -1
- package/dist/{core-DmbB4qMn.cjs → core-CWZb0zOY.cjs} +23 -91
- package/dist/core-CWZb0zOY.cjs.map +1 -0
- package/dist/{core-BgYtAxCm.cjs → core-D-smW7cm.cjs} +7 -1
- package/dist/{core-BgYtAxCm.cjs.map → core-D-smW7cm.cjs.map} +1 -1
- package/dist/{core-Go_IA78L.cjs → core-DXCRR5A9.cjs} +3 -3
- package/dist/{core-Go_IA78L.cjs.map → core-DXCRR5A9.cjs.map} +1 -1
- package/dist/{core-BeyC5tHn.js → core-DlV8ua1P.js} +23 -91
- package/dist/core-DlV8ua1P.js.map +1 -0
- package/dist/{index-D1jryNqo.d.ts → index-BgFHGsuP.d.ts} +2 -14
- package/dist/{index-DqVvUav9.d.cts → index-N2ly5shv.d.cts} +2 -14
- package/dist/index.cjs +3 -3
- package/dist/index.js +3 -3
- package/dist/pg.cjs +3 -3
- package/dist/pg.js +3 -3
- package/dist/{postgreSQLMetadata-zMq8yJo_.js → postgreSQLMetadata-BTz6vdwE.js} +2 -2
- package/dist/{postgreSQLMetadata-zMq8yJo_.js.map → postgreSQLMetadata-BTz6vdwE.js.map} +1 -1
- package/dist/{postgreSQLMetadata-LqX-Z_wo.cjs → postgreSQLMetadata-WGXySO7a.cjs} +2 -2
- package/dist/{postgreSQLMetadata-LqX-Z_wo.cjs.map → postgreSQLMetadata-WGXySO7a.cjs.map} +1 -1
- package/dist/postgresql.cjs +2 -2
- package/dist/postgresql.js +2 -2
- package/dist/sqlite.cjs +2 -2
- package/dist/sqlite.d.cts +1 -1
- package/dist/sqlite.d.ts +1 -1
- package/dist/sqlite.js +2 -2
- package/dist/sqlite3.cjs +133 -13
- package/dist/sqlite3.cjs.map +1 -1
- package/dist/sqlite3.d.cts +7 -7
- package/dist/sqlite3.d.ts +7 -7
- package/dist/sqlite3.js +133 -13
- package/dist/sqlite3.js.map +1 -1
- package/dist/{sqliteMetadata-BoQ7Sc9I.js → sqliteMetadata-7qBjsMBN.js} +2 -2
- package/dist/{sqliteMetadata-BoQ7Sc9I.js.map → sqliteMetadata-7qBjsMBN.js.map} +1 -1
- package/dist/{sqliteMetadata-D_2pKeCC.cjs → sqliteMetadata-PJTRPIZ1.cjs} +2 -2
- package/dist/{sqliteMetadata-D_2pKeCC.cjs.map → sqliteMetadata-PJTRPIZ1.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/core-BeyC5tHn.js.map +0 -1
- package/dist/core-DmbB4qMn.cjs.map +0 -1
package/dist/cloudflare.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const require_core = require('./core-
|
|
3
|
-
const require_sqliteMetadata = require('./sqliteMetadata-
|
|
4
|
-
const require_core$1 = require('./core-
|
|
2
|
+
const require_core = require('./core-D-smW7cm.cjs');
|
|
3
|
+
const require_sqliteMetadata = require('./sqliteMetadata-PJTRPIZ1.cjs');
|
|
4
|
+
const require_core$1 = require('./core-CWZb0zOY.cjs');
|
|
5
5
|
|
|
6
6
|
//#region src/storage/sqlite/d1/connections/d1Client.ts
|
|
7
7
|
const d1Client = (options) => {
|
|
@@ -270,14 +270,12 @@ const d1Transaction = (connection, serializer, defaultOptions) => (getClient, op
|
|
|
270
270
|
},
|
|
271
271
|
commit: async function() {
|
|
272
272
|
const client = await getDatabaseClient();
|
|
273
|
+
if (allowNestedTransactions && transactionCounter.level > 1) {
|
|
274
|
+
transactionCounter.decrement();
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
273
277
|
try {
|
|
274
|
-
if (allowNestedTransactions)
|
|
275
|
-
if (transactionCounter.level > 1) {
|
|
276
|
-
transactionCounter.decrement();
|
|
277
|
-
return;
|
|
278
|
-
}
|
|
279
|
-
transactionCounter.reset();
|
|
280
|
-
}
|
|
278
|
+
if (allowNestedTransactions) transactionCounter.reset();
|
|
281
279
|
sessionClient = null;
|
|
282
280
|
} finally {
|
|
283
281
|
if (options?.close) await options?.close(client);
|
|
@@ -285,13 +283,11 @@ const d1Transaction = (connection, serializer, defaultOptions) => (getClient, op
|
|
|
285
283
|
},
|
|
286
284
|
rollback: async function(error) {
|
|
287
285
|
const client = await getDatabaseClient();
|
|
286
|
+
if (allowNestedTransactions && transactionCounter.level > 1) {
|
|
287
|
+
transactionCounter.decrement();
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
288
290
|
try {
|
|
289
|
-
if (allowNestedTransactions) {
|
|
290
|
-
if (transactionCounter.level > 1) {
|
|
291
|
-
transactionCounter.decrement();
|
|
292
|
-
return;
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
291
|
sessionClient = null;
|
|
296
292
|
} finally {
|
|
297
293
|
if (options?.close) await options?.close(client, error);
|
package/dist/cloudflare.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.cjs","names":["sqliteFormatter","BatchCommandNoChangesError","UniqueConstraintError","ForeignKeyViolationError","NotNullViolationError","CheckViolationError","IntegrityConstraintViolationError","LockNotAvailableError","DeadlockError","ConnectionError","InsufficientResourcesError","SystemError","DataError","InvalidOperationError","SerializationError","DumboError","sqliteFormatter","transactionNestingCounter","sqlExecutor","sqliteAmbientClientConnection","createSingletonConnectionPool","JSONSerializer","sqliteFormatter","DefaultSQLiteMigratorOptions","sqliteMetadata"],"sources":["../src/storage/sqlite/d1/connections/d1Client.ts","../src/storage/sqlite/d1/errors/errorMapper.ts","../src/storage/sqlite/d1/execute/d1SqlExecutor.ts","../src/storage/sqlite/d1/transactions/d1Transaction.ts","../src/storage/sqlite/d1/connections/d1Connection.ts","../src/storage/sqlite/d1/pool/d1ConnectionPool.ts","../src/storage/sqlite/d1/index.ts"],"sourcesContent":["import type {\n D1Database,\n D1DatabaseSession,\n D1SessionBookmark,\n D1SessionConstraint,\n} from '@cloudflare/workers-types';\nimport {\n BatchCommandNoChangesError,\n type BatchSQLCommandOptions,\n type JSONSerializer,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLCommandOptions,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { sqliteFormatter, type SQLiteClient } from '../../core';\n\nexport type D1DatabaseOrSession = D1Database | D1DatabaseSession;\n\nexport type D1ClientOptions = {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n serializer: JSONSerializer;\n};\n\nexport type D1SessionOptions = {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n constraintOrBookmark?: D1SessionBookmark | D1SessionConstraint;\n};\n\nexport type D1Client = SQLiteClient & {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n\n withSession: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Client>;\n};\n\nexport const d1Client = (options: D1ClientOptions): D1Client => {\n const { database, session, serializer } = options;\n\n const execute = session ?? database;\n\n return {\n database,\n session: session,\n connect: () => Promise.resolve(),\n close: () => Promise.resolve(),\n withSession: async (constraintOrBookmark?: D1SessionOptions) => {\n const newSession = constraintOrBookmark\n ? database.withSession(constraintOrBookmark as string)\n : database.withSession();\n\n return Promise.resolve(\n d1Client({\n database,\n session: newSession,\n serializer,\n }),\n );\n },\n\n query: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const { results } = await bound.all<Result>();\n return { rowCount: results?.length ?? 0, rows: results ?? [] };\n },\n\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const results = await execute.batch<Result>(statements);\n return results.map((result) => ({\n rowCount: result.results?.length ?? 0,\n rows: result.results ?? [],\n }));\n },\n\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const result = await bound.run<Result>();\n return {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n },\n\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const batchResults = await execute.batch<Result>(statements);\n\n return batchResults.map((result, i) => {\n const qr: QueryResult<Result> = {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n\n if (options?.assertChanges && (qr.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n\n return qr;\n });\n },\n };\n};\n","import {\n CheckViolationError,\n ConnectionError,\n DataError,\n DeadlockError,\n DumboError,\n ForeignKeyViolationError,\n InsufficientResourcesError,\n IntegrityConstraintViolationError,\n InvalidOperationError,\n LockNotAvailableError,\n NotNullViolationError,\n SerializationError,\n SystemError,\n UniqueConstraintError,\n} from '../../../../core/errors';\n\nconst getErrorMessage = (error: unknown): string | undefined =>\n error instanceof Error ? error.message : undefined;\n\nconst asError = (error: unknown): Error | undefined =>\n error instanceof Error ? error : undefined;\n\n/**\n * Determines the constraint subtype from the error message.\n *\n * D1 embeds the SQLite constraint detail in the message string, e.g.:\n * \"D1_ERROR: UNIQUE constraint failed: users.email\"\n * \"D1_ERROR: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed\"\n */\nconst mapConstraintError = (\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError => {\n const upperMessage = message?.toUpperCase() ?? '';\n\n if (upperMessage.includes('UNIQUE') || upperMessage.includes('PRIMARY KEY'))\n return new UniqueConstraintError(message, innerError);\n\n if (upperMessage.includes('FOREIGN KEY'))\n return new ForeignKeyViolationError(message, innerError);\n\n if (upperMessage.includes('NOT NULL'))\n return new NotNullViolationError(message, innerError);\n\n if (upperMessage.includes('CHECK'))\n return new CheckViolationError(message, innerError);\n\n return new IntegrityConstraintViolationError(message, innerError);\n};\n\nconst isConstraintMessage = (upper: string): boolean =>\n upper.includes('CONSTRAINT') ||\n upper.includes('UNIQUE') ||\n upper.includes('PRIMARY KEY') ||\n upper.includes('FOREIGN KEY') ||\n upper.includes('NOT NULL');\n\n/** Extracts the first `SQLITE_<CODE>` token from a message string. */\nconst SQLITE_CODE_RE = /SQLITE_([A-Z]+)/;\n\nconst extractEmbeddedSqliteCode = (message: string): string | undefined => {\n const match = SQLITE_CODE_RE.exec(message);\n return match ? `SQLITE_${match[1]}` : undefined;\n};\n\n/**\n * Maps a `SQLITE_*` code found in the D1 message to a DumboError.\n *\n * D1 sometimes forwards raw SQLite result codes from the C++ layer, e.g.:\n * \"D1_ERROR: SQLITE_BUSY: database is locked\"\n * \"SQLITE_READONLY: attempt to write a readonly database\"\n *\n * See https://www.sqlite.org/rescode.html for the full code list.\n */\nconst mapEmbeddedSqliteCode = (\n code: string,\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError | undefined => {\n switch (code) {\n case 'SQLITE_CONSTRAINT':\n return mapConstraintError(message, innerError);\n case 'SQLITE_BUSY':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_LOCKED':\n return new DeadlockError(message, innerError);\n case 'SQLITE_PROTOCOL':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_CANTOPEN':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOTADB':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOMEM':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_FULL':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_IOERR':\n return new SystemError(message, innerError);\n case 'SQLITE_CORRUPT':\n return new SystemError(message, innerError);\n case 'SQLITE_INTERNAL':\n return new SystemError(message, innerError);\n case 'SQLITE_NOLFS':\n return new SystemError(message, innerError);\n case 'SQLITE_TOOBIG':\n return new DataError(message, innerError);\n case 'SQLITE_MISMATCH':\n return new DataError(message, innerError);\n case 'SQLITE_RANGE':\n return new DataError(message, innerError);\n case 'SQLITE_ERROR':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_READONLY':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_MISUSE':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_AUTH':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_PERM':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_SCHEMA':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_ABORT':\n return new SerializationError(message, innerError);\n case 'SQLITE_INTERRUPT':\n return new SerializationError(message, innerError);\n }\n return undefined;\n};\n\n/**\n * Maps a Cloudflare D1 error to a typed DumboError.\n *\n * Unlike node-sqlite3, D1 throws **plain `Error` objects** with no `code`\n * property. All error information is embedded in `error.message`, using\n * well-known prefixes from the `workerd` runtime:\n *\n * | Prefix | Meaning |\n * |-----------------------|----------------------------------------------|\n * | `D1_ERROR:` | General D1 / SQLite error |\n * | `D1_EXEC_ERROR:` | Error during `.exec()` batch |\n * | `D1_TYPE_ERROR:` | Type mismatch (e.g. `undefined` vs `null`) |\n * | `D1_COLUMN_NOTFOUND` | Referenced column does not exist |\n * | `D1_DUMP_ERROR:` | Error during database dump |\n * | `D1_SESSION_ERROR:` | Session bookmark / constraint error |\n *\n * D1 also surfaces platform-level messages (no prefix) for transient errors:\n * - \"Network connection lost.\"\n * - \"D1 DB is overloaded. Too many requests queued.\"\n * - \"Memory limit would be exceeded by this operation.\"\n * - \"Cannot resolve D1 DB due to transient issue on remote node.\"\n * - \"D1 DB reset because its code was updated.\"\n *\n * Reference:\n * - https://developers.cloudflare.com/d1/platform/client-api/\n * - https://github.com/cloudflare/workerd (src/cloudflare/internal/d1-api.ts)\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized D1 error.\n */\nexport const mapD1Error = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const message = getErrorMessage(error);\n if (!message)\n return new DumboError({\n errorCode: 500,\n message: error instanceof Error ? error.message : String(error),\n innerError: asError(error),\n });\n\n const innerError = asError(error);\n const upper = message.toUpperCase();\n\n // D1-specific prefixes are checked first because some (e.g. D1_SESSION_ERROR)\n // contain constraint keywords in their message but have different semantics.\n if (upper.startsWith('D1_TYPE_ERROR'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_COLUMN_NOTFOUND'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_DUMP_ERROR'))\n return new SystemError(message, innerError);\n\n if (upper.startsWith('D1_SESSION_ERROR'))\n return new ConnectionError(message, innerError);\n\n if (isConstraintMessage(upper)) {\n return mapConstraintError(message, innerError);\n }\n\n if (\n upper.includes('NETWORK CONNECTION LOST') ||\n upper.includes('CANNOT RESOLVE D1 DB DUE TO TRANSIENT ISSUE') ||\n upper.includes('D1 DB RESET BECAUSE')\n )\n return new ConnectionError(message, innerError);\n\n if (\n upper.includes('D1 DB IS OVERLOADED') ||\n upper.includes('TOO MANY REQUESTS') ||\n upper.includes('MEMORY LIMIT WOULD BE EXCEEDED')\n )\n return new InsufficientResourcesError(message, innerError);\n\n if (upper.startsWith('D1_ERROR') || upper.startsWith('D1_EXEC_ERROR')) {\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new InvalidOperationError(message, innerError);\n }\n\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import type {\n BatchSQLCommandOptions,\n DbSQLExecutor,\n QueryResult,\n QueryResultRow,\n SQL,\n SQLCommandOptions,\n SQLQueryOptions,\n} from '../../../../core';\nimport { tracer } from '../../../../core';\nimport { sqliteFormatter } from '../../core';\nimport type { D1Client, D1DriverType } from '../connections';\nimport { mapD1Error } from '../errors/errorMapper';\n\nexport const d1SQLExecutor = (): DbSQLExecutor<D1DriverType, D1Client> => ({\n driverType: 'SQLite:d1',\n formatter: sqliteFormatter,\n\n query: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.query<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchQuery: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchQuery<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n command: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.command<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchCommand: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchCommand<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n});\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { transactionNestingCounter } from '../../core';\nimport {\n D1DriverType,\n type D1Client,\n type D1Connection,\n type D1SessionOptions,\n} from '../connections';\nimport { d1SQLExecutor } from '../execute';\n\nexport type D1Transaction = DatabaseTransaction<\n D1Connection,\n D1TransactionOptions\n>;\n\nexport type D1TransactionOptions = DatabaseTransactionOptions & {\n d1Session?: D1SessionOptions;\n mode?: D1TransactionMode;\n};\n\nexport type D1TransactionMode = 'session_based' | 'strict';\n\nexport class D1TransactionNotSupportedError extends Error {\n constructor() {\n super(\n 'D1 does not support SQL transactions (BEGIN/COMMIT/ROLLBACK/SAVEPOINT). ' +\n 'Use { mode: \"session_based\" } to opt-in to session+batch semantics, or use ' +\n 'connection.execute.batchCommand() for atomic multi-statement execution.',\n );\n this.name = 'D1TransactionNotSupportedError';\n }\n}\n\nexport const d1Transaction =\n (\n connection: () => D1Connection,\n serializer: JSONSerializer,\n defaultOptions?: D1TransactionOptions,\n ) =>\n (\n getClient: Promise<D1Client>,\n options?: {\n close: (client: D1Client, error?: unknown) => Promise<void>;\n } & D1TransactionOptions,\n ): D1Transaction => {\n const transactionCounter = transactionNestingCounter();\n\n const allowNestedTransactions =\n options?.allowNestedTransactions ??\n defaultOptions?.allowNestedTransactions;\n\n const mode = options?.mode ?? defaultOptions?.mode;\n\n let client: D1Client | null = null;\n let sessionClient: D1Client | null = null;\n\n const getDatabaseClient = async () => {\n if (client) return Promise.resolve(client);\n\n client = await getClient;\n return client;\n };\n\n return {\n connection: connection(),\n driverType: D1DriverType,\n begin: async function () {\n if (mode !== 'session_based') {\n throw new D1TransactionNotSupportedError();\n }\n\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions) {\n if (transactionCounter.level >= 1) {\n transactionCounter.increment();\n return;\n }\n\n transactionCounter.increment();\n }\n\n sessionClient = await client.withSession(options?.d1Session);\n },\n commit: async function () {\n const client = await getDatabaseClient();\n\n try {\n if (allowNestedTransactions) {\n if (transactionCounter.level > 1) {\n transactionCounter.decrement();\n\n return;\n }\n\n transactionCounter.reset();\n }\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async function (error?: unknown) {\n const client = await getDatabaseClient();\n try {\n if (allowNestedTransactions) {\n if (transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n }\n\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(d1SQLExecutor(), {\n connect: () => {\n if (!sessionClient) {\n throw new Error(\n 'Transaction has not been started. Call begin() first.',\n );\n }\n return Promise.resolve(sessionClient);\n },\n }),\n _transactionOptions: options ?? {},\n };\n };\n","import type { Connection } from '../../../../core';\nimport {\n sqliteAmbientClientConnection,\n type SQLiteConnectionOptions,\n type SQLiteDriverType,\n} from '../../core';\nimport { mapD1Error } from '../errors/errorMapper';\nimport { d1Transaction, type D1Transaction } from '../transactions';\nimport {\n d1Client,\n type D1Client,\n type D1ClientOptions,\n type D1SessionOptions,\n} from './d1Client';\n\nexport type D1DriverType = SQLiteDriverType<'d1'>;\nexport const D1DriverType: D1DriverType = 'SQLite:d1';\n\nexport type D1Connection = Connection<\n D1Connection,\n D1DriverType,\n D1Client,\n D1Transaction\n> & {\n d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;\n withD1Session: <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ) => Promise<Result>;\n};\n\nexport type D1ConnectionOptions = SQLiteConnectionOptions<D1Connection> & {\n client?: D1Client;\n connection?: D1Connection;\n transaction?: D1Transaction;\n} & D1ClientOptions;\n\nexport const d1Connection = (options: D1ConnectionOptions) => {\n const connection = options.connection ??\n options.transaction?.connection ?? {\n ...sqliteAmbientClientConnection<D1Connection>({\n driverType: D1DriverType,\n client: options.client ?? d1Client(options),\n initTransaction: (connection) =>\n d1Transaction(\n connection,\n options.serializer,\n options.transactionOptions,\n ),\n serializer: options.serializer,\n errorMapper: mapD1Error,\n }),\n };\n\n connection.d1Session = async (\n constraintOrBookmark?: D1SessionOptions,\n ): Promise<D1Connection> => {\n const client = await connection.open();\n\n const sessionClient = await client.withSession(constraintOrBookmark);\n\n return d1Connection({\n ...options,\n client: sessionClient,\n });\n };\n\n connection.withD1Session = async <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ): Promise<Result> => {\n const sessionConnection = await connection.d1Session(options);\n\n try {\n return await handle(sessionConnection);\n } finally {\n await sessionConnection.close();\n }\n };\n\n return connection;\n};\n","import type { D1ConnectionOptions } from '..';\nimport {\n createSingletonConnectionPool,\n JSONSerializer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport {\n d1Connection,\n D1DriverType,\n type D1Connection,\n} from '../connections/d1Connection';\n\nexport type D1PoolOptions = Omit<D1ConnectionOptions, 'serializer'> &\n JSONSerializationOptions;\n\nexport type D1ConnectionPool = ConnectionPool<D1Connection>;\n\nexport const d1Pool = (options: D1PoolOptions): D1ConnectionPool =>\n createSingletonConnectionPool<D1Connection>({\n driverType: D1DriverType,\n getConnection: () =>\n d1Connection({\n ...options,\n serializer: JSONSerializer.from(options),\n }),\n });\n","export * from './connections';\nimport type { D1Database } from '@cloudflare/workers-types';\nimport type { D1ConnectionPool } from '../../../cloudflare';\nimport {\n dumboDatabaseDriverRegistry,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n sqliteFormatter,\n sqliteMetadata,\n} from '../core';\nimport { D1DriverType, type D1Connection } from './connections';\nimport { d1Pool, type D1PoolOptions } from './pool';\n\nexport type D1DumboOptions = D1PoolOptions;\n\nexport const d1DumboDriver: DumboDatabaseDriver<\n D1Connection,\n D1DumboOptions,\n D1ConnectionPool\n> = {\n driverType: D1DriverType,\n createPool: (options) => d1Pool(options),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: (options) => {\n return options.driverType === D1DriverType && 'database' in options;\n },\n databaseMetadata: sqliteMetadata,\n};\n\nexport const useD1DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(D1DriverType, d1DumboDriver);\n};\n\nexport type D1DumboConnectionOptions = DumboConnectionOptions<\n typeof d1DumboDriver\n> & { database: D1Database };\n\nuseD1DumboDriver();\n\nexport * from './connections';\nexport * from './errors';\nexport * from './execute';\nexport * from './formatter';\nexport * from './pool';\nexport * from './transactions';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloudflare.cjs","names":["sqliteFormatter","BatchCommandNoChangesError","UniqueConstraintError","ForeignKeyViolationError","NotNullViolationError","CheckViolationError","IntegrityConstraintViolationError","LockNotAvailableError","DeadlockError","ConnectionError","InsufficientResourcesError","SystemError","DataError","InvalidOperationError","SerializationError","DumboError","sqliteFormatter","transactionNestingCounter","sqlExecutor","sqliteAmbientClientConnection","createSingletonConnectionPool","JSONSerializer","sqliteFormatter","DefaultSQLiteMigratorOptions","sqliteMetadata"],"sources":["../src/storage/sqlite/d1/connections/d1Client.ts","../src/storage/sqlite/d1/errors/errorMapper.ts","../src/storage/sqlite/d1/execute/d1SqlExecutor.ts","../src/storage/sqlite/d1/transactions/d1Transaction.ts","../src/storage/sqlite/d1/connections/d1Connection.ts","../src/storage/sqlite/d1/pool/d1ConnectionPool.ts","../src/storage/sqlite/d1/index.ts"],"sourcesContent":["import type {\n D1Database,\n D1DatabaseSession,\n D1SessionBookmark,\n D1SessionConstraint,\n} from '@cloudflare/workers-types';\nimport {\n BatchCommandNoChangesError,\n type BatchSQLCommandOptions,\n type JSONSerializer,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLCommandOptions,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { sqliteFormatter, type SQLiteClient } from '../../core';\n\nexport type D1DatabaseOrSession = D1Database | D1DatabaseSession;\n\nexport type D1ClientOptions = {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n serializer: JSONSerializer;\n};\n\nexport type D1SessionOptions = {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n constraintOrBookmark?: D1SessionBookmark | D1SessionConstraint;\n};\n\nexport type D1Client = SQLiteClient & {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n\n withSession: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Client>;\n};\n\nexport const d1Client = (options: D1ClientOptions): D1Client => {\n const { database, session, serializer } = options;\n\n const execute = session ?? database;\n\n return {\n database,\n session: session,\n connect: () => Promise.resolve(),\n close: () => Promise.resolve(),\n withSession: async (constraintOrBookmark?: D1SessionOptions) => {\n const newSession = constraintOrBookmark\n ? database.withSession(constraintOrBookmark as string)\n : database.withSession();\n\n return Promise.resolve(\n d1Client({\n database,\n session: newSession,\n serializer,\n }),\n );\n },\n\n query: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const { results } = await bound.all<Result>();\n return { rowCount: results?.length ?? 0, rows: results ?? [] };\n },\n\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const results = await execute.batch<Result>(statements);\n return results.map((result) => ({\n rowCount: result.results?.length ?? 0,\n rows: result.results ?? [],\n }));\n },\n\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const result = await bound.run<Result>();\n return {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n },\n\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const batchResults = await execute.batch<Result>(statements);\n\n return batchResults.map((result, i) => {\n const qr: QueryResult<Result> = {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n\n if (options?.assertChanges && (qr.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n\n return qr;\n });\n },\n };\n};\n","import {\n CheckViolationError,\n ConnectionError,\n DataError,\n DeadlockError,\n DumboError,\n ForeignKeyViolationError,\n InsufficientResourcesError,\n IntegrityConstraintViolationError,\n InvalidOperationError,\n LockNotAvailableError,\n NotNullViolationError,\n SerializationError,\n SystemError,\n UniqueConstraintError,\n} from '../../../../core/errors';\n\nconst getErrorMessage = (error: unknown): string | undefined =>\n error instanceof Error ? error.message : undefined;\n\nconst asError = (error: unknown): Error | undefined =>\n error instanceof Error ? error : undefined;\n\n/**\n * Determines the constraint subtype from the error message.\n *\n * D1 embeds the SQLite constraint detail in the message string, e.g.:\n * \"D1_ERROR: UNIQUE constraint failed: users.email\"\n * \"D1_ERROR: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed\"\n */\nconst mapConstraintError = (\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError => {\n const upperMessage = message?.toUpperCase() ?? '';\n\n if (upperMessage.includes('UNIQUE') || upperMessage.includes('PRIMARY KEY'))\n return new UniqueConstraintError(message, innerError);\n\n if (upperMessage.includes('FOREIGN KEY'))\n return new ForeignKeyViolationError(message, innerError);\n\n if (upperMessage.includes('NOT NULL'))\n return new NotNullViolationError(message, innerError);\n\n if (upperMessage.includes('CHECK'))\n return new CheckViolationError(message, innerError);\n\n return new IntegrityConstraintViolationError(message, innerError);\n};\n\nconst isConstraintMessage = (upper: string): boolean =>\n upper.includes('CONSTRAINT') ||\n upper.includes('UNIQUE') ||\n upper.includes('PRIMARY KEY') ||\n upper.includes('FOREIGN KEY') ||\n upper.includes('NOT NULL');\n\n/** Extracts the first `SQLITE_<CODE>` token from a message string. */\nconst SQLITE_CODE_RE = /SQLITE_([A-Z]+)/;\n\nconst extractEmbeddedSqliteCode = (message: string): string | undefined => {\n const match = SQLITE_CODE_RE.exec(message);\n return match ? `SQLITE_${match[1]}` : undefined;\n};\n\n/**\n * Maps a `SQLITE_*` code found in the D1 message to a DumboError.\n *\n * D1 sometimes forwards raw SQLite result codes from the C++ layer, e.g.:\n * \"D1_ERROR: SQLITE_BUSY: database is locked\"\n * \"SQLITE_READONLY: attempt to write a readonly database\"\n *\n * See https://www.sqlite.org/rescode.html for the full code list.\n */\nconst mapEmbeddedSqliteCode = (\n code: string,\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError | undefined => {\n switch (code) {\n case 'SQLITE_CONSTRAINT':\n return mapConstraintError(message, innerError);\n case 'SQLITE_BUSY':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_LOCKED':\n return new DeadlockError(message, innerError);\n case 'SQLITE_PROTOCOL':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_CANTOPEN':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOTADB':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOMEM':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_FULL':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_IOERR':\n return new SystemError(message, innerError);\n case 'SQLITE_CORRUPT':\n return new SystemError(message, innerError);\n case 'SQLITE_INTERNAL':\n return new SystemError(message, innerError);\n case 'SQLITE_NOLFS':\n return new SystemError(message, innerError);\n case 'SQLITE_TOOBIG':\n return new DataError(message, innerError);\n case 'SQLITE_MISMATCH':\n return new DataError(message, innerError);\n case 'SQLITE_RANGE':\n return new DataError(message, innerError);\n case 'SQLITE_ERROR':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_READONLY':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_MISUSE':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_AUTH':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_PERM':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_SCHEMA':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_ABORT':\n return new SerializationError(message, innerError);\n case 'SQLITE_INTERRUPT':\n return new SerializationError(message, innerError);\n }\n return undefined;\n};\n\n/**\n * Maps a Cloudflare D1 error to a typed DumboError.\n *\n * Unlike node-sqlite3, D1 throws **plain `Error` objects** with no `code`\n * property. All error information is embedded in `error.message`, using\n * well-known prefixes from the `workerd` runtime:\n *\n * | Prefix | Meaning |\n * |-----------------------|----------------------------------------------|\n * | `D1_ERROR:` | General D1 / SQLite error |\n * | `D1_EXEC_ERROR:` | Error during `.exec()` batch |\n * | `D1_TYPE_ERROR:` | Type mismatch (e.g. `undefined` vs `null`) |\n * | `D1_COLUMN_NOTFOUND` | Referenced column does not exist |\n * | `D1_DUMP_ERROR:` | Error during database dump |\n * | `D1_SESSION_ERROR:` | Session bookmark / constraint error |\n *\n * D1 also surfaces platform-level messages (no prefix) for transient errors:\n * - \"Network connection lost.\"\n * - \"D1 DB is overloaded. Too many requests queued.\"\n * - \"Memory limit would be exceeded by this operation.\"\n * - \"Cannot resolve D1 DB due to transient issue on remote node.\"\n * - \"D1 DB reset because its code was updated.\"\n *\n * Reference:\n * - https://developers.cloudflare.com/d1/platform/client-api/\n * - https://github.com/cloudflare/workerd (src/cloudflare/internal/d1-api.ts)\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized D1 error.\n */\nexport const mapD1Error = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const message = getErrorMessage(error);\n if (!message)\n return new DumboError({\n errorCode: 500,\n message: error instanceof Error ? error.message : String(error),\n innerError: asError(error),\n });\n\n const innerError = asError(error);\n const upper = message.toUpperCase();\n\n // D1-specific prefixes are checked first because some (e.g. D1_SESSION_ERROR)\n // contain constraint keywords in their message but have different semantics.\n if (upper.startsWith('D1_TYPE_ERROR'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_COLUMN_NOTFOUND'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_DUMP_ERROR'))\n return new SystemError(message, innerError);\n\n if (upper.startsWith('D1_SESSION_ERROR'))\n return new ConnectionError(message, innerError);\n\n if (isConstraintMessage(upper)) {\n return mapConstraintError(message, innerError);\n }\n\n if (\n upper.includes('NETWORK CONNECTION LOST') ||\n upper.includes('CANNOT RESOLVE D1 DB DUE TO TRANSIENT ISSUE') ||\n upper.includes('D1 DB RESET BECAUSE')\n )\n return new ConnectionError(message, innerError);\n\n if (\n upper.includes('D1 DB IS OVERLOADED') ||\n upper.includes('TOO MANY REQUESTS') ||\n upper.includes('MEMORY LIMIT WOULD BE EXCEEDED')\n )\n return new InsufficientResourcesError(message, innerError);\n\n if (upper.startsWith('D1_ERROR') || upper.startsWith('D1_EXEC_ERROR')) {\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new InvalidOperationError(message, innerError);\n }\n\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import type {\n BatchSQLCommandOptions,\n DbSQLExecutor,\n QueryResult,\n QueryResultRow,\n SQL,\n SQLCommandOptions,\n SQLQueryOptions,\n} from '../../../../core';\nimport { tracer } from '../../../../core';\nimport { sqliteFormatter } from '../../core';\nimport type { D1Client, D1DriverType } from '../connections';\nimport { mapD1Error } from '../errors/errorMapper';\n\nexport const d1SQLExecutor = (): DbSQLExecutor<D1DriverType, D1Client> => ({\n driverType: 'SQLite:d1',\n formatter: sqliteFormatter,\n\n query: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.query<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchQuery: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchQuery<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n command: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.command<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchCommand: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchCommand<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n});\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { transactionNestingCounter } from '../../core';\nimport {\n D1DriverType,\n type D1Client,\n type D1Connection,\n type D1SessionOptions,\n} from '../connections';\nimport { d1SQLExecutor } from '../execute';\n\nexport type D1Transaction = DatabaseTransaction<\n D1Connection,\n D1TransactionOptions\n>;\n\nexport type D1TransactionOptions = DatabaseTransactionOptions & {\n d1Session?: D1SessionOptions;\n mode?: D1TransactionMode;\n};\n\nexport type D1TransactionMode = 'session_based' | 'strict';\n\nexport class D1TransactionNotSupportedError extends Error {\n constructor() {\n super(\n 'D1 does not support SQL transactions (BEGIN/COMMIT/ROLLBACK/SAVEPOINT). ' +\n 'Use { mode: \"session_based\" } to opt-in to session+batch semantics, or use ' +\n 'connection.execute.batchCommand() for atomic multi-statement execution.',\n );\n this.name = 'D1TransactionNotSupportedError';\n }\n}\n\nexport const d1Transaction =\n (\n connection: () => D1Connection,\n serializer: JSONSerializer,\n defaultOptions?: D1TransactionOptions,\n ) =>\n (\n getClient: Promise<D1Client>,\n options?: {\n close: (client: D1Client, error?: unknown) => Promise<void>;\n } & D1TransactionOptions,\n ): D1Transaction => {\n const transactionCounter = transactionNestingCounter();\n\n const allowNestedTransactions =\n options?.allowNestedTransactions ??\n defaultOptions?.allowNestedTransactions;\n\n const mode = options?.mode ?? defaultOptions?.mode;\n\n let client: D1Client | null = null;\n let sessionClient: D1Client | null = null;\n\n const getDatabaseClient = async () => {\n if (client) return Promise.resolve(client);\n\n client = await getClient;\n return client;\n };\n\n return {\n connection: connection(),\n driverType: D1DriverType,\n begin: async function () {\n if (mode !== 'session_based') {\n throw new D1TransactionNotSupportedError();\n }\n\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions) {\n if (transactionCounter.level >= 1) {\n transactionCounter.increment();\n return;\n }\n\n transactionCounter.increment();\n }\n\n sessionClient = await client.withSession(options?.d1Session);\n },\n commit: async function () {\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions && transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n\n try {\n if (allowNestedTransactions) transactionCounter.reset();\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async function (error?: unknown) {\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions && transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n\n try {\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(d1SQLExecutor(), {\n connect: () => {\n if (!sessionClient) {\n throw new Error(\n 'Transaction has not been started. Call begin() first.',\n );\n }\n return Promise.resolve(sessionClient);\n },\n }),\n _transactionOptions: options ?? {},\n };\n };\n","import type { Connection } from '../../../../core';\nimport {\n sqliteAmbientClientConnection,\n type SQLiteConnectionOptions,\n type SQLiteDriverType,\n} from '../../core';\nimport { mapD1Error } from '../errors/errorMapper';\nimport { d1Transaction, type D1Transaction } from '../transactions';\nimport {\n d1Client,\n type D1Client,\n type D1ClientOptions,\n type D1SessionOptions,\n} from './d1Client';\n\nexport type D1DriverType = SQLiteDriverType<'d1'>;\nexport const D1DriverType: D1DriverType = 'SQLite:d1';\n\nexport type D1Connection = Connection<\n D1Connection,\n D1DriverType,\n D1Client,\n D1Transaction\n> & {\n d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;\n withD1Session: <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ) => Promise<Result>;\n};\n\nexport type D1ConnectionOptions = SQLiteConnectionOptions<D1Connection> & {\n client?: D1Client;\n connection?: D1Connection;\n transaction?: D1Transaction;\n} & D1ClientOptions;\n\nexport const d1Connection = (options: D1ConnectionOptions) => {\n const connection = options.connection ??\n options.transaction?.connection ?? {\n ...sqliteAmbientClientConnection<D1Connection>({\n driverType: D1DriverType,\n client: options.client ?? d1Client(options),\n initTransaction: (connection) =>\n d1Transaction(\n connection,\n options.serializer,\n options.transactionOptions,\n ),\n serializer: options.serializer,\n errorMapper: mapD1Error,\n }),\n };\n\n connection.d1Session = async (\n constraintOrBookmark?: D1SessionOptions,\n ): Promise<D1Connection> => {\n const client = await connection.open();\n\n const sessionClient = await client.withSession(constraintOrBookmark);\n\n return d1Connection({\n ...options,\n client: sessionClient,\n });\n };\n\n connection.withD1Session = async <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ): Promise<Result> => {\n const sessionConnection = await connection.d1Session(options);\n\n try {\n return await handle(sessionConnection);\n } finally {\n await sessionConnection.close();\n }\n };\n\n return connection;\n};\n","import type { D1ConnectionOptions } from '..';\nimport {\n createSingletonConnectionPool,\n JSONSerializer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport {\n d1Connection,\n D1DriverType,\n type D1Connection,\n} from '../connections/d1Connection';\n\nexport type D1PoolOptions = Omit<D1ConnectionOptions, 'serializer'> &\n JSONSerializationOptions;\n\nexport type D1ConnectionPool = ConnectionPool<D1Connection>;\n\nexport const d1Pool = (options: D1PoolOptions): D1ConnectionPool =>\n createSingletonConnectionPool<D1Connection>({\n driverType: D1DriverType,\n getConnection: () =>\n d1Connection({\n ...options,\n serializer: JSONSerializer.from(options),\n }),\n });\n","export * from './connections';\nimport type { D1Database } from '@cloudflare/workers-types';\nimport type { D1ConnectionPool } from '../../../cloudflare';\nimport {\n dumboDatabaseDriverRegistry,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n sqliteFormatter,\n sqliteMetadata,\n} from '../core';\nimport { D1DriverType, type D1Connection } from './connections';\nimport { d1Pool, type D1PoolOptions } from './pool';\n\nexport type D1DumboOptions = D1PoolOptions;\n\nexport const d1DumboDriver: DumboDatabaseDriver<\n D1Connection,\n D1DumboOptions,\n D1ConnectionPool\n> = {\n driverType: D1DriverType,\n createPool: (options) => d1Pool(options),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: (options) => {\n return options.driverType === D1DriverType && 'database' in options;\n },\n databaseMetadata: sqliteMetadata,\n};\n\nexport const useD1DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(D1DriverType, d1DumboDriver);\n};\n\nexport type D1DumboConnectionOptions = DumboConnectionOptions<\n typeof d1DumboDriver\n> & { database: D1Database };\n\nuseD1DumboDriver();\n\nexport * from './connections';\nexport * from './errors';\nexport * from './execute';\nexport * from './formatter';\nexport * from './pool';\nexport * from './transactions';\n"],"mappings":"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"}
|
package/dist/cloudflare.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { D as Connection, Gt as DbSQLExecutor, K as DatabaseTransaction, co as JSONSerializer, ft as DumboDatabaseDriver, gn as DumboError, n as sqliteMetadata, oo as JSONSerializationOptions, p as ConnectionPool, q as DatabaseTransactionOptions, s as DumboConnectionOptions } from "./index-BDSQvDH2.cjs";
|
|
2
|
-
import { $ as SQLitePragmaOptions, A as SQLiteClientConnectionDefinitionOptions, B as SQLiteParameters, C as AnySQLiteConnection, D as InMemorySQLiteDatabase, E as DEFAULT_SQLITE_PRAGMA_OPTIONS, F as SQLiteConnection, G as TransactionNestingCounter, H as SQLitePoolClientConnection, I as SQLiteConnectionDefinitionOptions, J as sqliteClientConnection, K as isSQLiteError, L as SQLiteConnectionFactory, M as SQLiteClientOptions, N as SQLiteClientOrPoolClient, O as SQLiteClient, P as SQLiteCommandOptions, Q as SQLiteConnectionString, R as SQLiteConnectionOptions, S as AnySQLiteClientConnection, T as BatchSQLiteCommandOptions, U as SQLitePoolConnectionDefinitionOptions, V as SQLitePoolClient, W as SqliteAmbientClientConnectionOptions, X as sqlitePoolClientConnection, Y as sqliteConnection, Z as transactionNestingCounter, _ as sqliteAmbientConnectionPool, a as defaultSQLiteDatabase, at as SQLiteErrorMapper, b as toSqlitePoolOptions, c as SQLiteAlwaysNewConnectionPool, ct as sqliteSQLExecutor, d as SQLitePool, et as parsePragmasFromConnectionString, f as SQLitePoolFactoryOptions, g as sqliteAlwaysNewConnectionPool, h as isInMemoryDatabase, i as sqliteFormatter, it as sqliteTransaction, j as SQLiteClientFactory, k as SQLiteClientConnection, l as SQLiteAmbientConnectionPool, m as SQLiteSingletonConnectionPool, n as SQLiteDatabaseType, nt as SQLiteTransactionMode, o as tableExists, ot as SQLiteSQLExecutor, p as SQLitePoolOptions, q as sqliteAmbientClientConnection, r as SQLiteDriverType, rt as SQLiteTransactionOptions, s as DefaultSQLiteMigratorOptions, st as sqliteExecute, t as SQLiteDatabaseName, tt as SQLiteTransaction, u as SQLiteFileNameOrConnectionString, v as sqlitePool, w as AnySQLitePoolClientConnection, x as mapSqliteError, y as sqliteSingletonConnectionPool, z as SQLiteError } from "./index-
|
|
2
|
+
import { $ as SQLitePragmaOptions, A as SQLiteClientConnectionDefinitionOptions, B as SQLiteParameters, C as AnySQLiteConnection, D as InMemorySQLiteDatabase, E as DEFAULT_SQLITE_PRAGMA_OPTIONS, F as SQLiteConnection, G as TransactionNestingCounter, H as SQLitePoolClientConnection, I as SQLiteConnectionDefinitionOptions, J as sqliteClientConnection, K as isSQLiteError, L as SQLiteConnectionFactory, M as SQLiteClientOptions, N as SQLiteClientOrPoolClient, O as SQLiteClient, P as SQLiteCommandOptions, Q as SQLiteConnectionString, R as SQLiteConnectionOptions, S as AnySQLiteClientConnection, T as BatchSQLiteCommandOptions, U as SQLitePoolConnectionDefinitionOptions, V as SQLitePoolClient, W as SqliteAmbientClientConnectionOptions, X as sqlitePoolClientConnection, Y as sqliteConnection, Z as transactionNestingCounter, _ as sqliteAmbientConnectionPool, a as defaultSQLiteDatabase, at as SQLiteErrorMapper, b as toSqlitePoolOptions, c as SQLiteAlwaysNewConnectionPool, ct as sqliteSQLExecutor, d as SQLitePool, et as parsePragmasFromConnectionString, f as SQLitePoolFactoryOptions, g as sqliteAlwaysNewConnectionPool, h as isInMemoryDatabase, i as sqliteFormatter, it as sqliteTransaction, j as SQLiteClientFactory, k as SQLiteClientConnection, l as SQLiteAmbientConnectionPool, m as SQLiteSingletonConnectionPool, n as SQLiteDatabaseType, nt as SQLiteTransactionMode, o as tableExists, ot as SQLiteSQLExecutor, p as SQLitePoolOptions, q as sqliteAmbientClientConnection, r as SQLiteDriverType, rt as SQLiteTransactionOptions, s as DefaultSQLiteMigratorOptions, st as sqliteExecute, t as SQLiteDatabaseName, tt as SQLiteTransaction, u as SQLiteFileNameOrConnectionString, v as sqlitePool, w as AnySQLitePoolClientConnection, x as mapSqliteError, y as sqliteSingletonConnectionPool, z as SQLiteError } from "./index-N2ly5shv.cjs";
|
|
3
3
|
import { D1Database, D1DatabaseSession, D1SessionBookmark, D1SessionConstraint } from "@cloudflare/workers-types";
|
|
4
4
|
|
|
5
5
|
//#region src/storage/sqlite/d1/connections/d1Client.d.ts
|
package/dist/cloudflare.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { D as Connection, Gt as DbSQLExecutor, K as DatabaseTransaction, co as JSONSerializer, ft as DumboDatabaseDriver, gn as DumboError, n as sqliteMetadata, oo as JSONSerializationOptions, p as ConnectionPool, q as DatabaseTransactionOptions, s as DumboConnectionOptions } from "./index-zkszkJqP.js";
|
|
2
|
-
import { $ as SQLitePragmaOptions, A as SQLiteClientConnectionDefinitionOptions, B as SQLiteParameters, C as AnySQLiteConnection, D as InMemorySQLiteDatabase, E as DEFAULT_SQLITE_PRAGMA_OPTIONS, F as SQLiteConnection, G as TransactionNestingCounter, H as SQLitePoolClientConnection, I as SQLiteConnectionDefinitionOptions, J as sqliteClientConnection, K as isSQLiteError, L as SQLiteConnectionFactory, M as SQLiteClientOptions, N as SQLiteClientOrPoolClient, O as SQLiteClient, P as SQLiteCommandOptions, Q as SQLiteConnectionString, R as SQLiteConnectionOptions, S as AnySQLiteClientConnection, T as BatchSQLiteCommandOptions, U as SQLitePoolConnectionDefinitionOptions, V as SQLitePoolClient, W as SqliteAmbientClientConnectionOptions, X as sqlitePoolClientConnection, Y as sqliteConnection, Z as transactionNestingCounter, _ as sqliteAmbientConnectionPool, a as defaultSQLiteDatabase, at as SQLiteErrorMapper, b as toSqlitePoolOptions, c as SQLiteAlwaysNewConnectionPool, ct as sqliteSQLExecutor, d as SQLitePool, et as parsePragmasFromConnectionString, f as SQLitePoolFactoryOptions, g as sqliteAlwaysNewConnectionPool, h as isInMemoryDatabase, i as sqliteFormatter, it as sqliteTransaction, j as SQLiteClientFactory, k as SQLiteClientConnection, l as SQLiteAmbientConnectionPool, m as SQLiteSingletonConnectionPool, n as SQLiteDatabaseType, nt as SQLiteTransactionMode, o as tableExists, ot as SQLiteSQLExecutor, p as SQLitePoolOptions, q as sqliteAmbientClientConnection, r as SQLiteDriverType, rt as SQLiteTransactionOptions, s as DefaultSQLiteMigratorOptions, st as sqliteExecute, t as SQLiteDatabaseName, tt as SQLiteTransaction, u as SQLiteFileNameOrConnectionString, v as sqlitePool, w as AnySQLitePoolClientConnection, x as mapSqliteError, y as sqliteSingletonConnectionPool, z as SQLiteError } from "./index-
|
|
2
|
+
import { $ as SQLitePragmaOptions, A as SQLiteClientConnectionDefinitionOptions, B as SQLiteParameters, C as AnySQLiteConnection, D as InMemorySQLiteDatabase, E as DEFAULT_SQLITE_PRAGMA_OPTIONS, F as SQLiteConnection, G as TransactionNestingCounter, H as SQLitePoolClientConnection, I as SQLiteConnectionDefinitionOptions, J as sqliteClientConnection, K as isSQLiteError, L as SQLiteConnectionFactory, M as SQLiteClientOptions, N as SQLiteClientOrPoolClient, O as SQLiteClient, P as SQLiteCommandOptions, Q as SQLiteConnectionString, R as SQLiteConnectionOptions, S as AnySQLiteClientConnection, T as BatchSQLiteCommandOptions, U as SQLitePoolConnectionDefinitionOptions, V as SQLitePoolClient, W as SqliteAmbientClientConnectionOptions, X as sqlitePoolClientConnection, Y as sqliteConnection, Z as transactionNestingCounter, _ as sqliteAmbientConnectionPool, a as defaultSQLiteDatabase, at as SQLiteErrorMapper, b as toSqlitePoolOptions, c as SQLiteAlwaysNewConnectionPool, ct as sqliteSQLExecutor, d as SQLitePool, et as parsePragmasFromConnectionString, f as SQLitePoolFactoryOptions, g as sqliteAlwaysNewConnectionPool, h as isInMemoryDatabase, i as sqliteFormatter, it as sqliteTransaction, j as SQLiteClientFactory, k as SQLiteClientConnection, l as SQLiteAmbientConnectionPool, m as SQLiteSingletonConnectionPool, n as SQLiteDatabaseType, nt as SQLiteTransactionMode, o as tableExists, ot as SQLiteSQLExecutor, p as SQLitePoolOptions, q as sqliteAmbientClientConnection, r as SQLiteDriverType, rt as SQLiteTransactionOptions, s as DefaultSQLiteMigratorOptions, st as sqliteExecute, t as SQLiteDatabaseName, tt as SQLiteTransaction, u as SQLiteFileNameOrConnectionString, v as sqlitePool, w as AnySQLitePoolClientConnection, x as mapSqliteError, y as sqliteSingletonConnectionPool, z as SQLiteError } from "./index-BgFHGsuP.js";
|
|
3
3
|
import { D1Database, D1DatabaseSession, D1SessionBookmark, D1SessionConstraint } from "@cloudflare/workers-types";
|
|
4
4
|
|
|
5
5
|
//#region src/storage/sqlite/d1/connections/d1Client.d.ts
|
package/dist/cloudflare.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as defaultSQLiteDatabase, r as tableExists, t as sqliteMetadata } from "./sqliteMetadata-
|
|
3
|
-
import { C as mapSqliteError, S as sqliteFormatter, _ as SQLiteConnectionString, a as sqliteAmbientConnectionPool, b as sqliteExecute, c as toSqlitePoolOptions, d as isSQLiteError, f as sqliteAmbientClientConnection, g as transactionNestingCounter, h as sqlitePoolClientConnection, i as sqliteAlwaysNewConnectionPool, l as DEFAULT_SQLITE_PRAGMA_OPTIONS, m as sqliteConnection, n as DefaultSQLiteMigratorOptions, o as sqlitePool, p as sqliteClientConnection, r as isInMemoryDatabase, s as sqliteSingletonConnectionPool, t as SQLiteDatabaseName, u as InMemorySQLiteDatabase, v as parsePragmasFromConnectionString, x as sqliteSQLExecutor, y as sqliteTransaction } from "./core-
|
|
1
|
+
import { A as CheckViolationError, B as InvalidOperationError, E as sqlExecutor, F as DumboError, G as SystemError, H as NotNullViolationError, L as ForeignKeyViolationError, M as ConnectionError, N as DataError, P as DeadlockError, R as InsufficientResourcesError, V as LockNotAvailableError, W as SerializationError, in as JSONSerializer, it as tracer, kn as dumboDatabaseDriverRegistry, o as createSingletonConnectionPool, q as UniqueConstraintError, v as BatchCommandNoChangesError, z as IntegrityConstraintViolationError } from "./core-BG__WVn6.js";
|
|
2
|
+
import { n as defaultSQLiteDatabase, r as tableExists, t as sqliteMetadata } from "./sqliteMetadata-7qBjsMBN.js";
|
|
3
|
+
import { C as mapSqliteError, S as sqliteFormatter, _ as SQLiteConnectionString, a as sqliteAmbientConnectionPool, b as sqliteExecute, c as toSqlitePoolOptions, d as isSQLiteError, f as sqliteAmbientClientConnection, g as transactionNestingCounter, h as sqlitePoolClientConnection, i as sqliteAlwaysNewConnectionPool, l as DEFAULT_SQLITE_PRAGMA_OPTIONS, m as sqliteConnection, n as DefaultSQLiteMigratorOptions, o as sqlitePool, p as sqliteClientConnection, r as isInMemoryDatabase, s as sqliteSingletonConnectionPool, t as SQLiteDatabaseName, u as InMemorySQLiteDatabase, v as parsePragmasFromConnectionString, x as sqliteSQLExecutor, y as sqliteTransaction } from "./core-DlV8ua1P.js";
|
|
4
4
|
|
|
5
5
|
//#region src/storage/sqlite/d1/connections/d1Client.ts
|
|
6
6
|
const d1Client = (options) => {
|
|
@@ -269,14 +269,12 @@ const d1Transaction = (connection, serializer, defaultOptions) => (getClient, op
|
|
|
269
269
|
},
|
|
270
270
|
commit: async function() {
|
|
271
271
|
const client = await getDatabaseClient();
|
|
272
|
+
if (allowNestedTransactions && transactionCounter.level > 1) {
|
|
273
|
+
transactionCounter.decrement();
|
|
274
|
+
return;
|
|
275
|
+
}
|
|
272
276
|
try {
|
|
273
|
-
if (allowNestedTransactions)
|
|
274
|
-
if (transactionCounter.level > 1) {
|
|
275
|
-
transactionCounter.decrement();
|
|
276
|
-
return;
|
|
277
|
-
}
|
|
278
|
-
transactionCounter.reset();
|
|
279
|
-
}
|
|
277
|
+
if (allowNestedTransactions) transactionCounter.reset();
|
|
280
278
|
sessionClient = null;
|
|
281
279
|
} finally {
|
|
282
280
|
if (options?.close) await options?.close(client);
|
|
@@ -284,13 +282,11 @@ const d1Transaction = (connection, serializer, defaultOptions) => (getClient, op
|
|
|
284
282
|
},
|
|
285
283
|
rollback: async function(error) {
|
|
286
284
|
const client = await getDatabaseClient();
|
|
285
|
+
if (allowNestedTransactions && transactionCounter.level > 1) {
|
|
286
|
+
transactionCounter.decrement();
|
|
287
|
+
return;
|
|
288
|
+
}
|
|
287
289
|
try {
|
|
288
|
-
if (allowNestedTransactions) {
|
|
289
|
-
if (transactionCounter.level > 1) {
|
|
290
|
-
transactionCounter.decrement();
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
290
|
sessionClient = null;
|
|
295
291
|
} finally {
|
|
296
292
|
if (options?.close) await options?.close(client, error);
|
package/dist/cloudflare.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloudflare.js","names":[],"sources":["../src/storage/sqlite/d1/connections/d1Client.ts","../src/storage/sqlite/d1/errors/errorMapper.ts","../src/storage/sqlite/d1/execute/d1SqlExecutor.ts","../src/storage/sqlite/d1/transactions/d1Transaction.ts","../src/storage/sqlite/d1/connections/d1Connection.ts","../src/storage/sqlite/d1/pool/d1ConnectionPool.ts","../src/storage/sqlite/d1/index.ts"],"sourcesContent":["import type {\n D1Database,\n D1DatabaseSession,\n D1SessionBookmark,\n D1SessionConstraint,\n} from '@cloudflare/workers-types';\nimport {\n BatchCommandNoChangesError,\n type BatchSQLCommandOptions,\n type JSONSerializer,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLCommandOptions,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { sqliteFormatter, type SQLiteClient } from '../../core';\n\nexport type D1DatabaseOrSession = D1Database | D1DatabaseSession;\n\nexport type D1ClientOptions = {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n serializer: JSONSerializer;\n};\n\nexport type D1SessionOptions = {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n constraintOrBookmark?: D1SessionBookmark | D1SessionConstraint;\n};\n\nexport type D1Client = SQLiteClient & {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n\n withSession: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Client>;\n};\n\nexport const d1Client = (options: D1ClientOptions): D1Client => {\n const { database, session, serializer } = options;\n\n const execute = session ?? database;\n\n return {\n database,\n session: session,\n connect: () => Promise.resolve(),\n close: () => Promise.resolve(),\n withSession: async (constraintOrBookmark?: D1SessionOptions) => {\n const newSession = constraintOrBookmark\n ? database.withSession(constraintOrBookmark as string)\n : database.withSession();\n\n return Promise.resolve(\n d1Client({\n database,\n session: newSession,\n serializer,\n }),\n );\n },\n\n query: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const { results } = await bound.all<Result>();\n return { rowCount: results?.length ?? 0, rows: results ?? [] };\n },\n\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const results = await execute.batch<Result>(statements);\n return results.map((result) => ({\n rowCount: result.results?.length ?? 0,\n rows: result.results ?? [],\n }));\n },\n\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const result = await bound.run<Result>();\n return {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n },\n\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const batchResults = await execute.batch<Result>(statements);\n\n return batchResults.map((result, i) => {\n const qr: QueryResult<Result> = {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n\n if (options?.assertChanges && (qr.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n\n return qr;\n });\n },\n };\n};\n","import {\n CheckViolationError,\n ConnectionError,\n DataError,\n DeadlockError,\n DumboError,\n ForeignKeyViolationError,\n InsufficientResourcesError,\n IntegrityConstraintViolationError,\n InvalidOperationError,\n LockNotAvailableError,\n NotNullViolationError,\n SerializationError,\n SystemError,\n UniqueConstraintError,\n} from '../../../../core/errors';\n\nconst getErrorMessage = (error: unknown): string | undefined =>\n error instanceof Error ? error.message : undefined;\n\nconst asError = (error: unknown): Error | undefined =>\n error instanceof Error ? error : undefined;\n\n/**\n * Determines the constraint subtype from the error message.\n *\n * D1 embeds the SQLite constraint detail in the message string, e.g.:\n * \"D1_ERROR: UNIQUE constraint failed: users.email\"\n * \"D1_ERROR: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed\"\n */\nconst mapConstraintError = (\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError => {\n const upperMessage = message?.toUpperCase() ?? '';\n\n if (upperMessage.includes('UNIQUE') || upperMessage.includes('PRIMARY KEY'))\n return new UniqueConstraintError(message, innerError);\n\n if (upperMessage.includes('FOREIGN KEY'))\n return new ForeignKeyViolationError(message, innerError);\n\n if (upperMessage.includes('NOT NULL'))\n return new NotNullViolationError(message, innerError);\n\n if (upperMessage.includes('CHECK'))\n return new CheckViolationError(message, innerError);\n\n return new IntegrityConstraintViolationError(message, innerError);\n};\n\nconst isConstraintMessage = (upper: string): boolean =>\n upper.includes('CONSTRAINT') ||\n upper.includes('UNIQUE') ||\n upper.includes('PRIMARY KEY') ||\n upper.includes('FOREIGN KEY') ||\n upper.includes('NOT NULL');\n\n/** Extracts the first `SQLITE_<CODE>` token from a message string. */\nconst SQLITE_CODE_RE = /SQLITE_([A-Z]+)/;\n\nconst extractEmbeddedSqliteCode = (message: string): string | undefined => {\n const match = SQLITE_CODE_RE.exec(message);\n return match ? `SQLITE_${match[1]}` : undefined;\n};\n\n/**\n * Maps a `SQLITE_*` code found in the D1 message to a DumboError.\n *\n * D1 sometimes forwards raw SQLite result codes from the C++ layer, e.g.:\n * \"D1_ERROR: SQLITE_BUSY: database is locked\"\n * \"SQLITE_READONLY: attempt to write a readonly database\"\n *\n * See https://www.sqlite.org/rescode.html for the full code list.\n */\nconst mapEmbeddedSqliteCode = (\n code: string,\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError | undefined => {\n switch (code) {\n case 'SQLITE_CONSTRAINT':\n return mapConstraintError(message, innerError);\n case 'SQLITE_BUSY':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_LOCKED':\n return new DeadlockError(message, innerError);\n case 'SQLITE_PROTOCOL':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_CANTOPEN':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOTADB':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOMEM':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_FULL':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_IOERR':\n return new SystemError(message, innerError);\n case 'SQLITE_CORRUPT':\n return new SystemError(message, innerError);\n case 'SQLITE_INTERNAL':\n return new SystemError(message, innerError);\n case 'SQLITE_NOLFS':\n return new SystemError(message, innerError);\n case 'SQLITE_TOOBIG':\n return new DataError(message, innerError);\n case 'SQLITE_MISMATCH':\n return new DataError(message, innerError);\n case 'SQLITE_RANGE':\n return new DataError(message, innerError);\n case 'SQLITE_ERROR':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_READONLY':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_MISUSE':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_AUTH':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_PERM':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_SCHEMA':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_ABORT':\n return new SerializationError(message, innerError);\n case 'SQLITE_INTERRUPT':\n return new SerializationError(message, innerError);\n }\n return undefined;\n};\n\n/**\n * Maps a Cloudflare D1 error to a typed DumboError.\n *\n * Unlike node-sqlite3, D1 throws **plain `Error` objects** with no `code`\n * property. All error information is embedded in `error.message`, using\n * well-known prefixes from the `workerd` runtime:\n *\n * | Prefix | Meaning |\n * |-----------------------|----------------------------------------------|\n * | `D1_ERROR:` | General D1 / SQLite error |\n * | `D1_EXEC_ERROR:` | Error during `.exec()` batch |\n * | `D1_TYPE_ERROR:` | Type mismatch (e.g. `undefined` vs `null`) |\n * | `D1_COLUMN_NOTFOUND` | Referenced column does not exist |\n * | `D1_DUMP_ERROR:` | Error during database dump |\n * | `D1_SESSION_ERROR:` | Session bookmark / constraint error |\n *\n * D1 also surfaces platform-level messages (no prefix) for transient errors:\n * - \"Network connection lost.\"\n * - \"D1 DB is overloaded. Too many requests queued.\"\n * - \"Memory limit would be exceeded by this operation.\"\n * - \"Cannot resolve D1 DB due to transient issue on remote node.\"\n * - \"D1 DB reset because its code was updated.\"\n *\n * Reference:\n * - https://developers.cloudflare.com/d1/platform/client-api/\n * - https://github.com/cloudflare/workerd (src/cloudflare/internal/d1-api.ts)\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized D1 error.\n */\nexport const mapD1Error = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const message = getErrorMessage(error);\n if (!message)\n return new DumboError({\n errorCode: 500,\n message: error instanceof Error ? error.message : String(error),\n innerError: asError(error),\n });\n\n const innerError = asError(error);\n const upper = message.toUpperCase();\n\n // D1-specific prefixes are checked first because some (e.g. D1_SESSION_ERROR)\n // contain constraint keywords in their message but have different semantics.\n if (upper.startsWith('D1_TYPE_ERROR'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_COLUMN_NOTFOUND'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_DUMP_ERROR'))\n return new SystemError(message, innerError);\n\n if (upper.startsWith('D1_SESSION_ERROR'))\n return new ConnectionError(message, innerError);\n\n if (isConstraintMessage(upper)) {\n return mapConstraintError(message, innerError);\n }\n\n if (\n upper.includes('NETWORK CONNECTION LOST') ||\n upper.includes('CANNOT RESOLVE D1 DB DUE TO TRANSIENT ISSUE') ||\n upper.includes('D1 DB RESET BECAUSE')\n )\n return new ConnectionError(message, innerError);\n\n if (\n upper.includes('D1 DB IS OVERLOADED') ||\n upper.includes('TOO MANY REQUESTS') ||\n upper.includes('MEMORY LIMIT WOULD BE EXCEEDED')\n )\n return new InsufficientResourcesError(message, innerError);\n\n if (upper.startsWith('D1_ERROR') || upper.startsWith('D1_EXEC_ERROR')) {\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new InvalidOperationError(message, innerError);\n }\n\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import type {\n BatchSQLCommandOptions,\n DbSQLExecutor,\n QueryResult,\n QueryResultRow,\n SQL,\n SQLCommandOptions,\n SQLQueryOptions,\n} from '../../../../core';\nimport { tracer } from '../../../../core';\nimport { sqliteFormatter } from '../../core';\nimport type { D1Client, D1DriverType } from '../connections';\nimport { mapD1Error } from '../errors/errorMapper';\n\nexport const d1SQLExecutor = (): DbSQLExecutor<D1DriverType, D1Client> => ({\n driverType: 'SQLite:d1',\n formatter: sqliteFormatter,\n\n query: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.query<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchQuery: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchQuery<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n command: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.command<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchCommand: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchCommand<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n});\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { transactionNestingCounter } from '../../core';\nimport {\n D1DriverType,\n type D1Client,\n type D1Connection,\n type D1SessionOptions,\n} from '../connections';\nimport { d1SQLExecutor } from '../execute';\n\nexport type D1Transaction = DatabaseTransaction<\n D1Connection,\n D1TransactionOptions\n>;\n\nexport type D1TransactionOptions = DatabaseTransactionOptions & {\n d1Session?: D1SessionOptions;\n mode?: D1TransactionMode;\n};\n\nexport type D1TransactionMode = 'session_based' | 'strict';\n\nexport class D1TransactionNotSupportedError extends Error {\n constructor() {\n super(\n 'D1 does not support SQL transactions (BEGIN/COMMIT/ROLLBACK/SAVEPOINT). ' +\n 'Use { mode: \"session_based\" } to opt-in to session+batch semantics, or use ' +\n 'connection.execute.batchCommand() for atomic multi-statement execution.',\n );\n this.name = 'D1TransactionNotSupportedError';\n }\n}\n\nexport const d1Transaction =\n (\n connection: () => D1Connection,\n serializer: JSONSerializer,\n defaultOptions?: D1TransactionOptions,\n ) =>\n (\n getClient: Promise<D1Client>,\n options?: {\n close: (client: D1Client, error?: unknown) => Promise<void>;\n } & D1TransactionOptions,\n ): D1Transaction => {\n const transactionCounter = transactionNestingCounter();\n\n const allowNestedTransactions =\n options?.allowNestedTransactions ??\n defaultOptions?.allowNestedTransactions;\n\n const mode = options?.mode ?? defaultOptions?.mode;\n\n let client: D1Client | null = null;\n let sessionClient: D1Client | null = null;\n\n const getDatabaseClient = async () => {\n if (client) return Promise.resolve(client);\n\n client = await getClient;\n return client;\n };\n\n return {\n connection: connection(),\n driverType: D1DriverType,\n begin: async function () {\n if (mode !== 'session_based') {\n throw new D1TransactionNotSupportedError();\n }\n\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions) {\n if (transactionCounter.level >= 1) {\n transactionCounter.increment();\n return;\n }\n\n transactionCounter.increment();\n }\n\n sessionClient = await client.withSession(options?.d1Session);\n },\n commit: async function () {\n const client = await getDatabaseClient();\n\n try {\n if (allowNestedTransactions) {\n if (transactionCounter.level > 1) {\n transactionCounter.decrement();\n\n return;\n }\n\n transactionCounter.reset();\n }\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async function (error?: unknown) {\n const client = await getDatabaseClient();\n try {\n if (allowNestedTransactions) {\n if (transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n }\n\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(d1SQLExecutor(), {\n connect: () => {\n if (!sessionClient) {\n throw new Error(\n 'Transaction has not been started. Call begin() first.',\n );\n }\n return Promise.resolve(sessionClient);\n },\n }),\n _transactionOptions: options ?? {},\n };\n };\n","import type { Connection } from '../../../../core';\nimport {\n sqliteAmbientClientConnection,\n type SQLiteConnectionOptions,\n type SQLiteDriverType,\n} from '../../core';\nimport { mapD1Error } from '../errors/errorMapper';\nimport { d1Transaction, type D1Transaction } from '../transactions';\nimport {\n d1Client,\n type D1Client,\n type D1ClientOptions,\n type D1SessionOptions,\n} from './d1Client';\n\nexport type D1DriverType = SQLiteDriverType<'d1'>;\nexport const D1DriverType: D1DriverType = 'SQLite:d1';\n\nexport type D1Connection = Connection<\n D1Connection,\n D1DriverType,\n D1Client,\n D1Transaction\n> & {\n d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;\n withD1Session: <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ) => Promise<Result>;\n};\n\nexport type D1ConnectionOptions = SQLiteConnectionOptions<D1Connection> & {\n client?: D1Client;\n connection?: D1Connection;\n transaction?: D1Transaction;\n} & D1ClientOptions;\n\nexport const d1Connection = (options: D1ConnectionOptions) => {\n const connection = options.connection ??\n options.transaction?.connection ?? {\n ...sqliteAmbientClientConnection<D1Connection>({\n driverType: D1DriverType,\n client: options.client ?? d1Client(options),\n initTransaction: (connection) =>\n d1Transaction(\n connection,\n options.serializer,\n options.transactionOptions,\n ),\n serializer: options.serializer,\n errorMapper: mapD1Error,\n }),\n };\n\n connection.d1Session = async (\n constraintOrBookmark?: D1SessionOptions,\n ): Promise<D1Connection> => {\n const client = await connection.open();\n\n const sessionClient = await client.withSession(constraintOrBookmark);\n\n return d1Connection({\n ...options,\n client: sessionClient,\n });\n };\n\n connection.withD1Session = async <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ): Promise<Result> => {\n const sessionConnection = await connection.d1Session(options);\n\n try {\n return await handle(sessionConnection);\n } finally {\n await sessionConnection.close();\n }\n };\n\n return connection;\n};\n","import type { D1ConnectionOptions } from '..';\nimport {\n createSingletonConnectionPool,\n JSONSerializer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport {\n d1Connection,\n D1DriverType,\n type D1Connection,\n} from '../connections/d1Connection';\n\nexport type D1PoolOptions = Omit<D1ConnectionOptions, 'serializer'> &\n JSONSerializationOptions;\n\nexport type D1ConnectionPool = ConnectionPool<D1Connection>;\n\nexport const d1Pool = (options: D1PoolOptions): D1ConnectionPool =>\n createSingletonConnectionPool<D1Connection>({\n driverType: D1DriverType,\n getConnection: () =>\n d1Connection({\n ...options,\n serializer: JSONSerializer.from(options),\n }),\n });\n","export * from './connections';\nimport type { D1Database } from '@cloudflare/workers-types';\nimport type { D1ConnectionPool } from '../../../cloudflare';\nimport {\n dumboDatabaseDriverRegistry,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n sqliteFormatter,\n sqliteMetadata,\n} from '../core';\nimport { D1DriverType, type D1Connection } from './connections';\nimport { d1Pool, type D1PoolOptions } from './pool';\n\nexport type D1DumboOptions = D1PoolOptions;\n\nexport const d1DumboDriver: DumboDatabaseDriver<\n D1Connection,\n D1DumboOptions,\n D1ConnectionPool\n> = {\n driverType: D1DriverType,\n createPool: (options) => d1Pool(options),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: (options) => {\n return options.driverType === D1DriverType && 'database' in options;\n },\n databaseMetadata: sqliteMetadata,\n};\n\nexport const useD1DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(D1DriverType, d1DumboDriver);\n};\n\nexport type D1DumboConnectionOptions = DumboConnectionOptions<\n typeof d1DumboDriver\n> & { database: D1Database };\n\nuseD1DumboDriver();\n\nexport * from './connections';\nexport * from './errors';\nexport * from './execute';\nexport * from './formatter';\nexport * from './pool';\nexport * from './transactions';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cloudflare.js","names":[],"sources":["../src/storage/sqlite/d1/connections/d1Client.ts","../src/storage/sqlite/d1/errors/errorMapper.ts","../src/storage/sqlite/d1/execute/d1SqlExecutor.ts","../src/storage/sqlite/d1/transactions/d1Transaction.ts","../src/storage/sqlite/d1/connections/d1Connection.ts","../src/storage/sqlite/d1/pool/d1ConnectionPool.ts","../src/storage/sqlite/d1/index.ts"],"sourcesContent":["import type {\n D1Database,\n D1DatabaseSession,\n D1SessionBookmark,\n D1SessionConstraint,\n} from '@cloudflare/workers-types';\nimport {\n BatchCommandNoChangesError,\n type BatchSQLCommandOptions,\n type JSONSerializer,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLCommandOptions,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { sqliteFormatter, type SQLiteClient } from '../../core';\n\nexport type D1DatabaseOrSession = D1Database | D1DatabaseSession;\n\nexport type D1ClientOptions = {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n serializer: JSONSerializer;\n};\n\nexport type D1SessionOptions = {\n // eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\n constraintOrBookmark?: D1SessionBookmark | D1SessionConstraint;\n};\n\nexport type D1Client = SQLiteClient & {\n database: D1Database;\n session?: D1DatabaseSession | undefined;\n\n withSession: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Client>;\n};\n\nexport const d1Client = (options: D1ClientOptions): D1Client => {\n const { database, session, serializer } = options;\n\n const execute = session ?? database;\n\n return {\n database,\n session: session,\n connect: () => Promise.resolve(),\n close: () => Promise.resolve(),\n withSession: async (constraintOrBookmark?: D1SessionOptions) => {\n const newSession = constraintOrBookmark\n ? database.withSession(constraintOrBookmark as string)\n : database.withSession();\n\n return Promise.resolve(\n d1Client({\n database,\n session: newSession,\n serializer,\n }),\n );\n },\n\n query: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const { results } = await bound.all<Result>();\n return { rowCount: results?.length ?? 0, rows: results ?? [] };\n },\n\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n _options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const results = await execute.batch<Result>(statements);\n return results.map((result) => ({\n rowCount: result.results?.length ?? 0,\n rows: result.results ?? [],\n }));\n },\n\n command: async <Result extends QueryResultRow = QueryResultRow>(\n sql: SQL,\n _options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n const bound = params?.length ? stmt.bind(...params) : stmt;\n const result = await bound.run<Result>();\n return {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n },\n\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n const statements = sqls.map((sql) => {\n const { query, params } = sqliteFormatter.format(sql, { serializer });\n const stmt = execute.prepare(query);\n return params?.length ? stmt.bind(...params) : stmt;\n });\n const batchResults = await execute.batch<Result>(statements);\n\n return batchResults.map((result, i) => {\n const qr: QueryResult<Result> = {\n rowCount: result.meta?.changes ?? 0,\n rows: result.results ?? [],\n };\n\n if (options?.assertChanges && (qr.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n\n return qr;\n });\n },\n };\n};\n","import {\n CheckViolationError,\n ConnectionError,\n DataError,\n DeadlockError,\n DumboError,\n ForeignKeyViolationError,\n InsufficientResourcesError,\n IntegrityConstraintViolationError,\n InvalidOperationError,\n LockNotAvailableError,\n NotNullViolationError,\n SerializationError,\n SystemError,\n UniqueConstraintError,\n} from '../../../../core/errors';\n\nconst getErrorMessage = (error: unknown): string | undefined =>\n error instanceof Error ? error.message : undefined;\n\nconst asError = (error: unknown): Error | undefined =>\n error instanceof Error ? error : undefined;\n\n/**\n * Determines the constraint subtype from the error message.\n *\n * D1 embeds the SQLite constraint detail in the message string, e.g.:\n * \"D1_ERROR: UNIQUE constraint failed: users.email\"\n * \"D1_ERROR: SQLITE_CONSTRAINT: FOREIGN KEY constraint failed\"\n */\nconst mapConstraintError = (\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError => {\n const upperMessage = message?.toUpperCase() ?? '';\n\n if (upperMessage.includes('UNIQUE') || upperMessage.includes('PRIMARY KEY'))\n return new UniqueConstraintError(message, innerError);\n\n if (upperMessage.includes('FOREIGN KEY'))\n return new ForeignKeyViolationError(message, innerError);\n\n if (upperMessage.includes('NOT NULL'))\n return new NotNullViolationError(message, innerError);\n\n if (upperMessage.includes('CHECK'))\n return new CheckViolationError(message, innerError);\n\n return new IntegrityConstraintViolationError(message, innerError);\n};\n\nconst isConstraintMessage = (upper: string): boolean =>\n upper.includes('CONSTRAINT') ||\n upper.includes('UNIQUE') ||\n upper.includes('PRIMARY KEY') ||\n upper.includes('FOREIGN KEY') ||\n upper.includes('NOT NULL');\n\n/** Extracts the first `SQLITE_<CODE>` token from a message string. */\nconst SQLITE_CODE_RE = /SQLITE_([A-Z]+)/;\n\nconst extractEmbeddedSqliteCode = (message: string): string | undefined => {\n const match = SQLITE_CODE_RE.exec(message);\n return match ? `SQLITE_${match[1]}` : undefined;\n};\n\n/**\n * Maps a `SQLITE_*` code found in the D1 message to a DumboError.\n *\n * D1 sometimes forwards raw SQLite result codes from the C++ layer, e.g.:\n * \"D1_ERROR: SQLITE_BUSY: database is locked\"\n * \"SQLITE_READONLY: attempt to write a readonly database\"\n *\n * See https://www.sqlite.org/rescode.html for the full code list.\n */\nconst mapEmbeddedSqliteCode = (\n code: string,\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError | undefined => {\n switch (code) {\n case 'SQLITE_CONSTRAINT':\n return mapConstraintError(message, innerError);\n case 'SQLITE_BUSY':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_LOCKED':\n return new DeadlockError(message, innerError);\n case 'SQLITE_PROTOCOL':\n return new LockNotAvailableError(message, innerError);\n case 'SQLITE_CANTOPEN':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOTADB':\n return new ConnectionError(message, innerError);\n case 'SQLITE_NOMEM':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_FULL':\n return new InsufficientResourcesError(message, innerError);\n case 'SQLITE_IOERR':\n return new SystemError(message, innerError);\n case 'SQLITE_CORRUPT':\n return new SystemError(message, innerError);\n case 'SQLITE_INTERNAL':\n return new SystemError(message, innerError);\n case 'SQLITE_NOLFS':\n return new SystemError(message, innerError);\n case 'SQLITE_TOOBIG':\n return new DataError(message, innerError);\n case 'SQLITE_MISMATCH':\n return new DataError(message, innerError);\n case 'SQLITE_RANGE':\n return new DataError(message, innerError);\n case 'SQLITE_ERROR':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_READONLY':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_MISUSE':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_AUTH':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_PERM':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_SCHEMA':\n return new InvalidOperationError(message, innerError);\n case 'SQLITE_ABORT':\n return new SerializationError(message, innerError);\n case 'SQLITE_INTERRUPT':\n return new SerializationError(message, innerError);\n }\n return undefined;\n};\n\n/**\n * Maps a Cloudflare D1 error to a typed DumboError.\n *\n * Unlike node-sqlite3, D1 throws **plain `Error` objects** with no `code`\n * property. All error information is embedded in `error.message`, using\n * well-known prefixes from the `workerd` runtime:\n *\n * | Prefix | Meaning |\n * |-----------------------|----------------------------------------------|\n * | `D1_ERROR:` | General D1 / SQLite error |\n * | `D1_EXEC_ERROR:` | Error during `.exec()` batch |\n * | `D1_TYPE_ERROR:` | Type mismatch (e.g. `undefined` vs `null`) |\n * | `D1_COLUMN_NOTFOUND` | Referenced column does not exist |\n * | `D1_DUMP_ERROR:` | Error during database dump |\n * | `D1_SESSION_ERROR:` | Session bookmark / constraint error |\n *\n * D1 also surfaces platform-level messages (no prefix) for transient errors:\n * - \"Network connection lost.\"\n * - \"D1 DB is overloaded. Too many requests queued.\"\n * - \"Memory limit would be exceeded by this operation.\"\n * - \"Cannot resolve D1 DB due to transient issue on remote node.\"\n * - \"D1 DB reset because its code was updated.\"\n *\n * Reference:\n * - https://developers.cloudflare.com/d1/platform/client-api/\n * - https://github.com/cloudflare/workerd (src/cloudflare/internal/d1-api.ts)\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized D1 error.\n */\nexport const mapD1Error = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const message = getErrorMessage(error);\n if (!message)\n return new DumboError({\n errorCode: 500,\n message: error instanceof Error ? error.message : String(error),\n innerError: asError(error),\n });\n\n const innerError = asError(error);\n const upper = message.toUpperCase();\n\n // D1-specific prefixes are checked first because some (e.g. D1_SESSION_ERROR)\n // contain constraint keywords in their message but have different semantics.\n if (upper.startsWith('D1_TYPE_ERROR'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_COLUMN_NOTFOUND'))\n return new DataError(message, innerError);\n\n if (upper.startsWith('D1_DUMP_ERROR'))\n return new SystemError(message, innerError);\n\n if (upper.startsWith('D1_SESSION_ERROR'))\n return new ConnectionError(message, innerError);\n\n if (isConstraintMessage(upper)) {\n return mapConstraintError(message, innerError);\n }\n\n if (\n upper.includes('NETWORK CONNECTION LOST') ||\n upper.includes('CANNOT RESOLVE D1 DB DUE TO TRANSIENT ISSUE') ||\n upper.includes('D1 DB RESET BECAUSE')\n )\n return new ConnectionError(message, innerError);\n\n if (\n upper.includes('D1 DB IS OVERLOADED') ||\n upper.includes('TOO MANY REQUESTS') ||\n upper.includes('MEMORY LIMIT WOULD BE EXCEEDED')\n )\n return new InsufficientResourcesError(message, innerError);\n\n if (upper.startsWith('D1_ERROR') || upper.startsWith('D1_EXEC_ERROR')) {\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new InvalidOperationError(message, innerError);\n }\n\n const embeddedCode = extractEmbeddedSqliteCode(message);\n if (embeddedCode) {\n const mapped = mapEmbeddedSqliteCode(embeddedCode, message, innerError);\n if (mapped) return mapped;\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import type {\n BatchSQLCommandOptions,\n DbSQLExecutor,\n QueryResult,\n QueryResultRow,\n SQL,\n SQLCommandOptions,\n SQLQueryOptions,\n} from '../../../../core';\nimport { tracer } from '../../../../core';\nimport { sqliteFormatter } from '../../core';\nimport type { D1Client, D1DriverType } from '../connections';\nimport { mapD1Error } from '../errors/errorMapper';\n\nexport const d1SQLExecutor = (): DbSQLExecutor<D1DriverType, D1Client> => ({\n driverType: 'SQLite:d1',\n formatter: sqliteFormatter,\n\n query: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.query<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchQuery: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchQuery<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n command: async <Result extends QueryResultRow>(\n client: D1Client,\n sql: SQL,\n options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n try {\n return await client.command<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n\n batchCommand: async <Result extends QueryResultRow>(\n client: D1Client,\n sqls: SQL[],\n options?: BatchSQLCommandOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n return await client.batchCommand<Result>(sqls, options);\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapD1Error(error);\n }\n },\n});\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { transactionNestingCounter } from '../../core';\nimport {\n D1DriverType,\n type D1Client,\n type D1Connection,\n type D1SessionOptions,\n} from '../connections';\nimport { d1SQLExecutor } from '../execute';\n\nexport type D1Transaction = DatabaseTransaction<\n D1Connection,\n D1TransactionOptions\n>;\n\nexport type D1TransactionOptions = DatabaseTransactionOptions & {\n d1Session?: D1SessionOptions;\n mode?: D1TransactionMode;\n};\n\nexport type D1TransactionMode = 'session_based' | 'strict';\n\nexport class D1TransactionNotSupportedError extends Error {\n constructor() {\n super(\n 'D1 does not support SQL transactions (BEGIN/COMMIT/ROLLBACK/SAVEPOINT). ' +\n 'Use { mode: \"session_based\" } to opt-in to session+batch semantics, or use ' +\n 'connection.execute.batchCommand() for atomic multi-statement execution.',\n );\n this.name = 'D1TransactionNotSupportedError';\n }\n}\n\nexport const d1Transaction =\n (\n connection: () => D1Connection,\n serializer: JSONSerializer,\n defaultOptions?: D1TransactionOptions,\n ) =>\n (\n getClient: Promise<D1Client>,\n options?: {\n close: (client: D1Client, error?: unknown) => Promise<void>;\n } & D1TransactionOptions,\n ): D1Transaction => {\n const transactionCounter = transactionNestingCounter();\n\n const allowNestedTransactions =\n options?.allowNestedTransactions ??\n defaultOptions?.allowNestedTransactions;\n\n const mode = options?.mode ?? defaultOptions?.mode;\n\n let client: D1Client | null = null;\n let sessionClient: D1Client | null = null;\n\n const getDatabaseClient = async () => {\n if (client) return Promise.resolve(client);\n\n client = await getClient;\n return client;\n };\n\n return {\n connection: connection(),\n driverType: D1DriverType,\n begin: async function () {\n if (mode !== 'session_based') {\n throw new D1TransactionNotSupportedError();\n }\n\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions) {\n if (transactionCounter.level >= 1) {\n transactionCounter.increment();\n return;\n }\n\n transactionCounter.increment();\n }\n\n sessionClient = await client.withSession(options?.d1Session);\n },\n commit: async function () {\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions && transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n\n try {\n if (allowNestedTransactions) transactionCounter.reset();\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async function (error?: unknown) {\n const client = await getDatabaseClient();\n\n if (allowNestedTransactions && transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n\n try {\n sessionClient = null;\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(d1SQLExecutor(), {\n connect: () => {\n if (!sessionClient) {\n throw new Error(\n 'Transaction has not been started. Call begin() first.',\n );\n }\n return Promise.resolve(sessionClient);\n },\n }),\n _transactionOptions: options ?? {},\n };\n };\n","import type { Connection } from '../../../../core';\nimport {\n sqliteAmbientClientConnection,\n type SQLiteConnectionOptions,\n type SQLiteDriverType,\n} from '../../core';\nimport { mapD1Error } from '../errors/errorMapper';\nimport { d1Transaction, type D1Transaction } from '../transactions';\nimport {\n d1Client,\n type D1Client,\n type D1ClientOptions,\n type D1SessionOptions,\n} from './d1Client';\n\nexport type D1DriverType = SQLiteDriverType<'d1'>;\nexport const D1DriverType: D1DriverType = 'SQLite:d1';\n\nexport type D1Connection = Connection<\n D1Connection,\n D1DriverType,\n D1Client,\n D1Transaction\n> & {\n d1Session: (constraintOrBookmark?: D1SessionOptions) => Promise<D1Connection>;\n withD1Session: <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ) => Promise<Result>;\n};\n\nexport type D1ConnectionOptions = SQLiteConnectionOptions<D1Connection> & {\n client?: D1Client;\n connection?: D1Connection;\n transaction?: D1Transaction;\n} & D1ClientOptions;\n\nexport const d1Connection = (options: D1ConnectionOptions) => {\n const connection = options.connection ??\n options.transaction?.connection ?? {\n ...sqliteAmbientClientConnection<D1Connection>({\n driverType: D1DriverType,\n client: options.client ?? d1Client(options),\n initTransaction: (connection) =>\n d1Transaction(\n connection,\n options.serializer,\n options.transactionOptions,\n ),\n serializer: options.serializer,\n errorMapper: mapD1Error,\n }),\n };\n\n connection.d1Session = async (\n constraintOrBookmark?: D1SessionOptions,\n ): Promise<D1Connection> => {\n const client = await connection.open();\n\n const sessionClient = await client.withSession(constraintOrBookmark);\n\n return d1Connection({\n ...options,\n client: sessionClient,\n });\n };\n\n connection.withD1Session = async <Result = never>(\n handle: (connection: D1Connection) => Promise<Result>,\n options?: D1SessionOptions,\n ): Promise<Result> => {\n const sessionConnection = await connection.d1Session(options);\n\n try {\n return await handle(sessionConnection);\n } finally {\n await sessionConnection.close();\n }\n };\n\n return connection;\n};\n","import type { D1ConnectionOptions } from '..';\nimport {\n createSingletonConnectionPool,\n JSONSerializer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport {\n d1Connection,\n D1DriverType,\n type D1Connection,\n} from '../connections/d1Connection';\n\nexport type D1PoolOptions = Omit<D1ConnectionOptions, 'serializer'> &\n JSONSerializationOptions;\n\nexport type D1ConnectionPool = ConnectionPool<D1Connection>;\n\nexport const d1Pool = (options: D1PoolOptions): D1ConnectionPool =>\n createSingletonConnectionPool<D1Connection>({\n driverType: D1DriverType,\n getConnection: () =>\n d1Connection({\n ...options,\n serializer: JSONSerializer.from(options),\n }),\n });\n","export * from './connections';\nimport type { D1Database } from '@cloudflare/workers-types';\nimport type { D1ConnectionPool } from '../../../cloudflare';\nimport {\n dumboDatabaseDriverRegistry,\n type DumboConnectionOptions,\n type DumboDatabaseDriver,\n} from '../../../core';\nimport {\n DefaultSQLiteMigratorOptions,\n sqliteFormatter,\n sqliteMetadata,\n} from '../core';\nimport { D1DriverType, type D1Connection } from './connections';\nimport { d1Pool, type D1PoolOptions } from './pool';\n\nexport type D1DumboOptions = D1PoolOptions;\n\nexport const d1DumboDriver: DumboDatabaseDriver<\n D1Connection,\n D1DumboOptions,\n D1ConnectionPool\n> = {\n driverType: D1DriverType,\n createPool: (options) => d1Pool(options),\n sqlFormatter: sqliteFormatter,\n defaultMigratorOptions: DefaultSQLiteMigratorOptions,\n canHandle: (options) => {\n return options.driverType === D1DriverType && 'database' in options;\n },\n databaseMetadata: sqliteMetadata,\n};\n\nexport const useD1DumboDriver = () => {\n dumboDatabaseDriverRegistry.register(D1DriverType, d1DumboDriver);\n};\n\nexport type D1DumboConnectionOptions = DumboConnectionOptions<\n typeof d1DumboDriver\n> & { database: D1Database };\n\nuseD1DumboDriver();\n\nexport * from './connections';\nexport * from './errors';\nexport * from './execute';\nexport * from './formatter';\nexport * from './pool';\nexport * from './transactions';\n"],"mappings":";;;;;AAsCA,MAAa,YAAY,YAAuC;CAC9D,MAAM,EAAE,UAAU,SAAS,eAAe;CAE1C,MAAM,UAAU,WAAW;AAE3B,QAAO;EACL;EACS;EACT,eAAe,QAAQ,SAAS;EAChC,aAAa,QAAQ,SAAS;EAC9B,aAAa,OAAO,yBAA4C;GAC9D,MAAM,aAAa,uBACf,SAAS,YAAY,qBAA+B,GACpD,SAAS,aAAa;AAE1B,UAAO,QAAQ,QACb,SAAS;IACP;IACA,SAAS;IACT;IACD,CAAC,CACH;;EAGH,OAAO,OACL,KACA,aACiC;GACjC,MAAM,EAAE,OAAO,WAAW,gBAAgB,OAAO,KAAK,EAAE,YAAY,CAAC;GACrE,MAAM,OAAO,QAAQ,QAAQ,MAAM;GAEnC,MAAM,EAAE,YAAY,OADN,QAAQ,SAAS,KAAK,KAAK,GAAG,OAAO,GAAG,MACtB,KAAa;AAC7C,UAAO;IAAE,UAAU,SAAS,UAAU;IAAG,MAAM,WAAW,EAAE;IAAE;;EAGhE,YAAY,OACV,MACA,aACmC;GACnC,MAAM,aAAa,KAAK,KAAK,QAAQ;IACnC,MAAM,EAAE,OAAO,WAAW,gBAAgB,OAAO,KAAK,EAAE,YAAY,CAAC;IACrE,MAAM,OAAO,QAAQ,QAAQ,MAAM;AACnC,WAAO,QAAQ,SAAS,KAAK,KAAK,GAAG,OAAO,GAAG;KAC/C;AAEF,WADgB,MAAM,QAAQ,MAAc,WAAW,EACxC,KAAK,YAAY;IAC9B,UAAU,OAAO,SAAS,UAAU;IACpC,MAAM,OAAO,WAAW,EAAE;IAC3B,EAAE;;EAGL,SAAS,OACP,KACA,aACiC;GACjC,MAAM,EAAE,OAAO,WAAW,gBAAgB,OAAO,KAAK,EAAE,YAAY,CAAC;GACrE,MAAM,OAAO,QAAQ,QAAQ,MAAM;GAEnC,MAAM,SAAS,OADD,QAAQ,SAAS,KAAK,KAAK,GAAG,OAAO,GAAG,MAC3B,KAAa;AACxC,UAAO;IACL,UAAU,OAAO,MAAM,WAAW;IAClC,MAAM,OAAO,WAAW,EAAE;IAC3B;;EAGH,cAAc,OACZ,MACA,YACmC;GACnC,MAAM,aAAa,KAAK,KAAK,QAAQ;IACnC,MAAM,EAAE,OAAO,WAAW,gBAAgB,OAAO,KAAK,EAAE,YAAY,CAAC;IACrE,MAAM,OAAO,QAAQ,QAAQ,MAAM;AACnC,WAAO,QAAQ,SAAS,KAAK,KAAK,GAAG,OAAO,GAAG;KAC/C;AAGF,WAFqB,MAAM,QAAQ,MAAc,WAAW,EAExC,KAAK,QAAQ,MAAM;IACrC,MAAM,KAA0B;KAC9B,UAAU,OAAO,MAAM,WAAW;KAClC,MAAM,OAAO,WAAW,EAAE;KAC3B;AAED,QAAI,SAAS,kBAAkB,GAAG,YAAY,OAAO,EACnD,OAAM,IAAI,2BAA2B,EAAE;AAGzC,WAAO;KACP;;EAEL;;;;;AC9GH,MAAM,mBAAmB,UACvB,iBAAiB,QAAQ,MAAM,UAAU;AAE3C,MAAM,WAAW,UACf,iBAAiB,QAAQ,QAAQ;;;;;;;;AASnC,MAAM,sBACJ,SACA,eACe;CACf,MAAM,eAAe,SAAS,aAAa,IAAI;AAE/C,KAAI,aAAa,SAAS,SAAS,IAAI,aAAa,SAAS,cAAc,CACzE,QAAO,IAAI,sBAAsB,SAAS,WAAW;AAEvD,KAAI,aAAa,SAAS,cAAc,CACtC,QAAO,IAAI,yBAAyB,SAAS,WAAW;AAE1D,KAAI,aAAa,SAAS,WAAW,CACnC,QAAO,IAAI,sBAAsB,SAAS,WAAW;AAEvD,KAAI,aAAa,SAAS,QAAQ,CAChC,QAAO,IAAI,oBAAoB,SAAS,WAAW;AAErD,QAAO,IAAI,kCAAkC,SAAS,WAAW;;AAGnE,MAAM,uBAAuB,UAC3B,MAAM,SAAS,aAAa,IAC5B,MAAM,SAAS,SAAS,IACxB,MAAM,SAAS,cAAc,IAC7B,MAAM,SAAS,cAAc,IAC7B,MAAM,SAAS,WAAW;;AAG5B,MAAM,iBAAiB;AAEvB,MAAM,6BAA6B,YAAwC;CACzE,MAAM,QAAQ,eAAe,KAAK,QAAQ;AAC1C,QAAO,QAAQ,UAAU,MAAM,OAAO;;;;;;;;;;;AAYxC,MAAM,yBACJ,MACA,SACA,eAC2B;AAC3B,SAAQ,MAAR;EACE,KAAK,oBACH,QAAO,mBAAmB,SAAS,WAAW;EAChD,KAAK,cACH,QAAO,IAAI,sBAAsB,SAAS,WAAW;EACvD,KAAK,gBACH,QAAO,IAAI,cAAc,SAAS,WAAW;EAC/C,KAAK,kBACH,QAAO,IAAI,sBAAsB,SAAS,WAAW;EACvD,KAAK,kBACH,QAAO,IAAI,gBAAgB,SAAS,WAAW;EACjD,KAAK,gBACH,QAAO,IAAI,gBAAgB,SAAS,WAAW;EACjD,KAAK,eACH,QAAO,IAAI,2BAA2B,SAAS,WAAW;EAC5D,KAAK,cACH,QAAO,IAAI,2BAA2B,SAAS,WAAW;EAC5D,KAAK,eACH,QAAO,IAAI,YAAY,SAAS,WAAW;EAC7C,KAAK,iBACH,QAAO,IAAI,YAAY,SAAS,WAAW;EAC7C,KAAK,kBACH,QAAO,IAAI,YAAY,SAAS,WAAW;EAC7C,KAAK,eACH,QAAO,IAAI,YAAY,SAAS,WAAW;EAC7C,KAAK,gBACH,QAAO,IAAI,UAAU,SAAS,WAAW;EAC3C,KAAK,kBACH,QAAO,IAAI,UAAU,SAAS,WAAW;EAC3C,KAAK,eACH,QAAO,IAAI,UAAU,SAAS,WAAW;EAC3C,KAAK,eACH,QAAO,IAAI,sBAAsB,SAAS,WAAW;EACvD,KAAK,kBACH,QAAO,IAAI,sBAAsB,SAAS,WAAW;EACvD,KAAK,gBACH,QAAO,IAAI,sBAAsB,SAAS,WAAW;EACvD,KAAK,cACH,QAAO,IAAI,sBAAsB,SAAS,WAAW;EACvD,KAAK,cACH,QAAO,IAAI,sBAAsB,SAAS,WAAW;EACvD,KAAK,gBACH,QAAO,IAAI,sBAAsB,SAAS,WAAW;EACvD,KAAK,eACH,QAAO,IAAI,mBAAmB,SAAS,WAAW;EACpD,KAAK,mBACH,QAAO,IAAI,mBAAmB,SAAS,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCxD,MAAa,cAAc,UAA+B;AACxD,KAAI,WAAW,aAAyB,MAAM,CAAE,QAAO;CAEvD,MAAM,UAAU,gBAAgB,MAAM;AACtC,KAAI,CAAC,QACH,QAAO,IAAI,WAAW;EACpB,WAAW;EACX,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;EAC/D,YAAY,QAAQ,MAAM;EAC3B,CAAC;CAEJ,MAAM,aAAa,QAAQ,MAAM;CACjC,MAAM,QAAQ,QAAQ,aAAa;AAInC,KAAI,MAAM,WAAW,gBAAgB,CACnC,QAAO,IAAI,UAAU,SAAS,WAAW;AAE3C,KAAI,MAAM,WAAW,qBAAqB,CACxC,QAAO,IAAI,UAAU,SAAS,WAAW;AAE3C,KAAI,MAAM,WAAW,gBAAgB,CACnC,QAAO,IAAI,YAAY,SAAS,WAAW;AAE7C,KAAI,MAAM,WAAW,mBAAmB,CACtC,QAAO,IAAI,gBAAgB,SAAS,WAAW;AAEjD,KAAI,oBAAoB,MAAM,CAC5B,QAAO,mBAAmB,SAAS,WAAW;AAGhD,KACE,MAAM,SAAS,0BAA0B,IACzC,MAAM,SAAS,8CAA8C,IAC7D,MAAM,SAAS,sBAAsB,CAErC,QAAO,IAAI,gBAAgB,SAAS,WAAW;AAEjD,KACE,MAAM,SAAS,sBAAsB,IACrC,MAAM,SAAS,oBAAoB,IACnC,MAAM,SAAS,iCAAiC,CAEhD,QAAO,IAAI,2BAA2B,SAAS,WAAW;AAE5D,KAAI,MAAM,WAAW,WAAW,IAAI,MAAM,WAAW,gBAAgB,EAAE;EACrE,MAAM,eAAe,0BAA0B,QAAQ;AACvD,MAAI,cAAc;GAChB,MAAM,SAAS,sBAAsB,cAAc,SAAS,WAAW;AACvE,OAAI,OAAQ,QAAO;;AAGrB,SAAO,IAAI,sBAAsB,SAAS,WAAW;;CAGvD,MAAM,eAAe,0BAA0B,QAAQ;AACvD,KAAI,cAAc;EAChB,MAAM,SAAS,sBAAsB,cAAc,SAAS,WAAW;AACvE,MAAI,OAAQ,QAAO;;AAGrB,QAAO,IAAI,WAAW;EACpB,WAAW;EACX;EACA;EACD,CAAC;;;;;ACpNJ,MAAa,uBAA8D;CACzE,YAAY;CACZ,WAAW;CAEX,OAAO,OACL,QACA,KACA,YACiC;AACjC,MAAI;AACF,UAAO,MAAM,OAAO,MAAc,KAAK,QAAQ;WACxC,OAAO;AACd,UAAO,MAAM,8BAA8B,EAAE,OAAO,CAAC;AACrD,SAAM,WAAW,MAAM;;;CAI3B,YAAY,OACV,QACA,MACA,YACmC;AACnC,MAAI;AACF,UAAO,MAAM,OAAO,WAAmB,MAAM,QAAQ;WAC9C,OAAO;AACd,UAAO,MAAM,oCAAoC,EAAE,OAAO,CAAC;AAC3D,SAAM,WAAW,MAAM;;;CAI3B,SAAS,OACP,QACA,KACA,YACiC;AACjC,MAAI;AACF,UAAO,MAAM,OAAO,QAAgB,KAAK,QAAQ;WAC1C,OAAO;AACd,UAAO,MAAM,gCAAgC,EAAE,OAAO,CAAC;AACvD,SAAM,WAAW,MAAM;;;CAI3B,cAAc,OACZ,QACA,MACA,YACmC;AACnC,MAAI;AACF,UAAO,MAAM,OAAO,aAAqB,MAAM,QAAQ;WAChD,OAAO;AACd,UAAO,MAAM,sCAAsC,EAAE,OAAO,CAAC;AAC7D,SAAM,WAAW,MAAM;;;CAG5B;;;;AC1CD,IAAa,iCAAb,cAAoD,MAAM;CACxD,cAAc;AACZ,QACE,+NAGD;AACD,OAAK,OAAO;;;AAIhB,MAAa,iBAET,YACA,YACA,oBAGA,WACA,YAGkB;CAClB,MAAM,qBAAqB,2BAA2B;CAEtD,MAAM,0BACJ,SAAS,2BACT,gBAAgB;CAElB,MAAM,OAAO,SAAS,QAAQ,gBAAgB;CAE9C,IAAI,SAA0B;CAC9B,IAAI,gBAAiC;CAErC,MAAM,oBAAoB,YAAY;AACpC,MAAI,OAAQ,QAAO,QAAQ,QAAQ,OAAO;AAE1C,WAAS,MAAM;AACf,SAAO;;AAGT,QAAO;EACL,YAAY,YAAY;EACxB,YAAY;EACZ,OAAO,iBAAkB;AACvB,OAAI,SAAS,gBACX,OAAM,IAAI,gCAAgC;GAG5C,MAAM,SAAS,MAAM,mBAAmB;AAExC,OAAI,yBAAyB;AAC3B,QAAI,mBAAmB,SAAS,GAAG;AACjC,wBAAmB,WAAW;AAC9B;;AAGF,uBAAmB,WAAW;;AAGhC,mBAAgB,MAAM,OAAO,YAAY,SAAS,UAAU;;EAE9D,QAAQ,iBAAkB;GACxB,MAAM,SAAS,MAAM,mBAAmB;AAExC,OAAI,2BAA2B,mBAAmB,QAAQ,GAAG;AAC3D,uBAAmB,WAAW;AAC9B;;AAGF,OAAI;AACF,QAAI,wBAAyB,oBAAmB,OAAO;AACvD,oBAAgB;aACR;AACR,QAAI,SAAS,MAAO,OAAM,SAAS,MAAM,OAAO;;;EAGpD,UAAU,eAAgB,OAAiB;GACzC,MAAM,SAAS,MAAM,mBAAmB;AAExC,OAAI,2BAA2B,mBAAmB,QAAQ,GAAG;AAC3D,uBAAmB,WAAW;AAC9B;;AAGF,OAAI;AACF,oBAAgB;aACR;AACR,QAAI,SAAS,MAAO,OAAM,SAAS,MAAM,QAAQ,MAAM;;;EAG3D,SAAS,YAAY,eAAe,EAAE,EACpC,eAAe;AACb,OAAI,CAAC,cACH,OAAM,IAAI,MACR,wDACD;AAEH,UAAO,QAAQ,QAAQ,cAAc;KAExC,CAAC;EACF,qBAAqB,WAAW,EAAE;EACnC;;;;;ACjHL,MAAa,eAA6B;AAqB1C,MAAa,gBAAgB,YAAiC;CAC5D,MAAM,aAAa,QAAQ,cACzB,QAAQ,aAAa,cAAc,EACjC,GAAG,8BAA4C;EAC7C;EACA,QAAQ,QAAQ,UAAU,SAAS,QAAQ;EAC3C,kBAAkB,eAChB,cACE,YACA,QAAQ,YACR,QAAQ,mBACT;EACH,YAAY,QAAQ;EACpB,aAAa;EACd,CAAC,EACH;AAEH,YAAW,YAAY,OACrB,yBAC0B;EAG1B,MAAM,gBAAgB,OAFP,MAAM,WAAW,MAAM,EAEH,YAAY,qBAAqB;AAEpE,SAAO,aAAa;GAClB,GAAG;GACH,QAAQ;GACT,CAAC;;AAGJ,YAAW,gBAAgB,OACzB,QACA,YACoB;EACpB,MAAM,oBAAoB,MAAM,WAAW,UAAU,QAAQ;AAE7D,MAAI;AACF,UAAO,MAAM,OAAO,kBAAkB;YAC9B;AACR,SAAM,kBAAkB,OAAO;;;AAInC,QAAO;;;;;AC9DT,MAAa,UAAU,YACrB,8BAA4C;CAC1C,YAAY;CACZ,qBACE,aAAa;EACX,GAAG;EACH,YAAY,eAAe,KAAK,QAAQ;EACzC,CAAC;CACL,CAAC;;;;ACRJ,MAAa,gBAIT;CACF,YAAY;CACZ,aAAa,YAAY,OAAO,QAAQ;CACxC,cAAc;CACd,wBAAwB;CACxB,YAAY,YAAY;AACtB,SAAO,QAAQ,8BAA+B,cAAc;;CAE9D,kBAAkB;CACnB;AAED,MAAa,yBAAyB;AACpC,6BAA4B,SAAS,cAAc,cAAc;;AAOnE,kBAAkB"}
|
|
@@ -2258,5 +2258,5 @@ const createConnectionPool = (pool) => {
|
|
|
2258
2258
|
SQL.columnN = Object.assign(dumboSchema.column, { type: SQLColumnTypeTokensFactory });
|
|
2259
2259
|
|
|
2260
2260
|
//#endregion
|
|
2261
|
-
export {
|
|
2262
|
-
//# sourceMappingURL=core-
|
|
2261
|
+
export { SchemaComponentMigrator as $, JSONCodec as $t, CheckViolationError as A, schemaComponentURN as An, FormatIdentifierProcessor as At, InvalidOperationError as B, IndexURN as Bn, SQLColumnTypeTokens as Bt, mapColumnToDate as C, fromDatabaseDriverType as Cn, TokenizedSQL as Ct, sqlExecutorInAmbientConnection as D, DumboDatabaseDriverRegistry as Dn, SQLProcessorsRegistry as Dt, sqlExecutor as E, toDatabaseDriverType as En, mapDefaultSQLColumnProcessors as Et, DumboError as F, DatabaseSchemaURNType as Fn, BigSerialToken as Ft, SystemError as G, columnSchemaComponent as Gn, VarcharToken as Gt, NotNullViolationError as H, indexSchemaComponent as Hn, SerialToken as Ht, ExclusionViolationError as I, databaseSchemaSchemaComponent as In, ColumnTypeToken as It, MIGRATIONS_LOCK_ID as J, isSchemaComponentOfType as Jn, SQLIn as Jt, TransientDatabaseError as K, filterSchemaComponentsOfType as Kn, SQLArray as Kt, ForeignKeyViolationError as L, TableURN as Ln, IntegerToken as Lt, ConnectionError as M, DatabaseURNType as Mn, SQLProcessor as Mt, DataError as N, databaseSchemaComponent as Nn, AutoIncrementSQLColumnToken as Nt, sqlExecutorInNewConnection as O, canHandleDriverWithConnectionString as On, ExpandArrayProcessor as Ot, DeadlockError as P, DatabaseSchemaURN as Pn, BigIntegerToken as Pt, runSQLMigrations as Q, ParametrizedSQLBuilder as Qt, InsufficientResourcesError as R, TableURNType as Rn, JSONBToken as Rt, mapColumnToBigint as S, resolveDatabaseMetadata as Sn, isSQL as St, mapSQLQueryResult as T, getDatabaseType as Tn, defaultProcessorsRegistry as Tt, QueryCanceledError as U, ColumnURN as Un, TimestampToken as Ut, LockNotAvailableError as V, IndexURNType as Vn, SQLColumnTypeTokensFactory as Vt, SerializationError as W, ColumnURNType as Wn, TimestamptzToken as Wt, getDefaultMigratorOptionsFromRegistry as X, schemaComponent as Xn, SQLPlain as Xt, combineMigrations as Y, mapSchemaComponentsOfType as Yn, SQLLiteral as Yt, registerDefaultMigratorOptions as Z, SQLToken as Zt, transactionFactoryWithNewConnection as _, DumboDatabaseMetadataRegistry as _n, mapSQLIdentifier as _t, createSingletonClientConnectionPool as a, composeJSONReplacers as an, prettyJson as at, executeInNewConnection as b, getDefaultDatabase as bn, RawSQL as bt, TaskProcessor as c, count as cn, describeSQL as ct, createSingletonConnection as d, firstOrNull as dn, registerFormatter as dt, JSONReplacer as en, migrationTableSchemaComponent as et, createTransientConnection as f, single as fn, ANSISQLIdentifierQuote as ft, transactionFactoryWithDbClient as g, dumboSchema as gn, mapANSISQLParamPlaceholder as gt, transactionFactoryWithAsyncAmbientConnection as h, defaultDatabaseLockOptions as hn, SQLValueMapper as ht, createConnectionPool as i, JSONSerializer as in, tracer as it, ConcurrencyError as j, DatabaseURN as jn, MapLiteralProcessor as jt, AdminShutdownError as k, dumboDatabaseDriverRegistry as kn, ExpandSQLInProcessor as kt, createAmbientConnection as l, exists as ln, formatSQL as lt, transactionFactoryWithAmbientConnection as m, NoDatabaseLock as mn, DefaultMapSQLParamValueOptions as mt, createAmbientConnectionPool as n, JSONReviver as nn, LogLevel as nt, createSingletonConnectionPool as o, composeJSONRevivers as on, color as ot, executeInTransaction as p, singleOrNull as pn, ANSISQLParamPlaceholder as pt, UniqueConstraintError as q, findSchemaComponentsOfType as qn, SQLIdentifier as qt, createBoundedConnectionPool as r, JSONRevivers as rn, LogStyle as rt, guardInitializedOnce as s, jsonSerializer as sn, SQLFormatter as st, createAlwaysNewConnectionPool as t, JSONReplacers as tn, sqlMigration as tt, createConnection as u, first as un, getFormatter as ut, BatchCommandNoChangesError as v, dumboDatabaseMetadataRegistry as vn, mapSQLParamValue as vt, mapColumnToJSON as w, getDatabaseDriverName as wn, isTokenizedSQL as wt, executeInNewDbClient as x, getDefaultDatabaseAsync as xn, SQL as xt, executeInAmbientConnection as y, getDatabaseMetadata as yn, ansiSqlReservedMap as yt, IntegrityConstraintViolationError as z, tableSchemaComponent as zn, SQLColumnToken as zt };
|
|
2262
|
+
//# sourceMappingURL=core-BG__WVn6.js.map
|