@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.
Files changed (47) hide show
  1. package/dist/cloudflare.cjs +12 -16
  2. package/dist/cloudflare.cjs.map +1 -1
  3. package/dist/cloudflare.d.cts +1 -1
  4. package/dist/cloudflare.d.ts +1 -1
  5. package/dist/cloudflare.js +12 -16
  6. package/dist/cloudflare.js.map +1 -1
  7. package/dist/{core-DDo4m0Z_.js → core-BG__WVn6.js} +2 -2
  8. package/dist/{core-DDo4m0Z_.js.map → core-BG__WVn6.js.map} +1 -1
  9. package/dist/{core-Bf2ujUFy.js → core-BchvTX3G.js} +3 -3
  10. package/dist/{core-Bf2ujUFy.js.map → core-BchvTX3G.js.map} +1 -1
  11. package/dist/{core-DmbB4qMn.cjs → core-CWZb0zOY.cjs} +23 -91
  12. package/dist/core-CWZb0zOY.cjs.map +1 -0
  13. package/dist/{core-BgYtAxCm.cjs → core-D-smW7cm.cjs} +7 -1
  14. package/dist/{core-BgYtAxCm.cjs.map → core-D-smW7cm.cjs.map} +1 -1
  15. package/dist/{core-Go_IA78L.cjs → core-DXCRR5A9.cjs} +3 -3
  16. package/dist/{core-Go_IA78L.cjs.map → core-DXCRR5A9.cjs.map} +1 -1
  17. package/dist/{core-BeyC5tHn.js → core-DlV8ua1P.js} +23 -91
  18. package/dist/core-DlV8ua1P.js.map +1 -0
  19. package/dist/{index-D1jryNqo.d.ts → index-BgFHGsuP.d.ts} +2 -14
  20. package/dist/{index-DqVvUav9.d.cts → index-N2ly5shv.d.cts} +2 -14
  21. package/dist/index.cjs +3 -3
  22. package/dist/index.js +3 -3
  23. package/dist/pg.cjs +3 -3
  24. package/dist/pg.js +3 -3
  25. package/dist/{postgreSQLMetadata-zMq8yJo_.js → postgreSQLMetadata-BTz6vdwE.js} +2 -2
  26. package/dist/{postgreSQLMetadata-zMq8yJo_.js.map → postgreSQLMetadata-BTz6vdwE.js.map} +1 -1
  27. package/dist/{postgreSQLMetadata-LqX-Z_wo.cjs → postgreSQLMetadata-WGXySO7a.cjs} +2 -2
  28. package/dist/{postgreSQLMetadata-LqX-Z_wo.cjs.map → postgreSQLMetadata-WGXySO7a.cjs.map} +1 -1
  29. package/dist/postgresql.cjs +2 -2
  30. package/dist/postgresql.js +2 -2
  31. package/dist/sqlite.cjs +2 -2
  32. package/dist/sqlite.d.cts +1 -1
  33. package/dist/sqlite.d.ts +1 -1
  34. package/dist/sqlite.js +2 -2
  35. package/dist/sqlite3.cjs +133 -13
  36. package/dist/sqlite3.cjs.map +1 -1
  37. package/dist/sqlite3.d.cts +7 -7
  38. package/dist/sqlite3.d.ts +7 -7
  39. package/dist/sqlite3.js +133 -13
  40. package/dist/sqlite3.js.map +1 -1
  41. package/dist/{sqliteMetadata-BoQ7Sc9I.js → sqliteMetadata-7qBjsMBN.js} +2 -2
  42. package/dist/{sqliteMetadata-BoQ7Sc9I.js.map → sqliteMetadata-7qBjsMBN.js.map} +1 -1
  43. package/dist/{sqliteMetadata-D_2pKeCC.cjs → sqliteMetadata-PJTRPIZ1.cjs} +2 -2
  44. package/dist/{sqliteMetadata-D_2pKeCC.cjs.map → sqliteMetadata-PJTRPIZ1.cjs.map} +1 -1
  45. package/package.json +1 -1
  46. package/dist/core-BeyC5tHn.js.map +0 -1
  47. package/dist/core-DmbB4qMn.cjs.map +0 -1
@@ -1,5 +1,5 @@
1
- const require_core = require('./core-BgYtAxCm.cjs');
2
- require('./postgreSQLMetadata-LqX-Z_wo.cjs');
1
+ const require_core = require('./core-D-smW7cm.cjs');
2
+ require('./postgreSQLMetadata-WGXySO7a.cjs');
3
3
 
4
4
  //#region src/storage/postgresql/core/errors/errorMapper.ts
5
5
  /**
@@ -447,4 +447,4 @@ Object.defineProperty(exports, 'tryAcquireAdvisoryLock', {
447
447
  return tryAcquireAdvisoryLock;
448
448
  }
449
449
  });
450
- //# sourceMappingURL=core-Go_IA78L.cjs.map
450
+ //# sourceMappingURL=core-DXCRR5A9.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"core-Go_IA78L.cjs","names":["DumboError","UniqueConstraintError","ForeignKeyViolationError","NotNullViolationError","CheckViolationError","ExclusionViolationError","SerializationError","DeadlockError","LockNotAvailableError","QueryCanceledError","AdminShutdownError","ConnectionError","DataError","IntegrityConstraintViolationError","InvalidOperationError","InsufficientResourcesError","SystemError","defaultDatabaseLockOptions","single","SQL","QueryCanceledError","DumboError","registerDefaultMigratorOptions","SQLProcessor","SQLArray","mapDefaultSQLColumnProcessors","SQLFormatter","SQLProcessorsRegistry","defaultProcessorsRegistry","mapSQLIdentifier","registerFormatter"],"sources":["../src/storage/postgresql/core/errors/errorMapper.ts","../src/storage/postgresql/core/locks/advisoryLocks.ts","../src/storage/postgresql/core/schema/migrations.ts","../src/storage/postgresql/core/sql/processors/arrayProcessors.ts","../src/storage/postgresql/core/sql/processors/columProcessors.ts","../src/storage/postgresql/core/sql/formatter/reserved.ts","../src/storage/postgresql/core/sql/formatter/index.ts","../src/storage/postgresql/core/index.ts"],"sourcesContent":["import {\n AdminShutdownError,\n CheckViolationError,\n ConnectionError,\n DataError,\n DeadlockError,\n DumboError,\n ExclusionViolationError,\n ForeignKeyViolationError,\n InsufficientResourcesError,\n IntegrityConstraintViolationError,\n InvalidOperationError,\n LockNotAvailableError,\n NotNullViolationError,\n QueryCanceledError,\n SerializationError,\n SystemError,\n UniqueConstraintError,\n} from '../../../../core/errors';\n\n/**\n * Checks whether the given error looks like a PostgreSQL DatabaseError\n * from the `pg` driver (has a string `code` property with a SQLSTATE value).\n */\nconst getPostgresErrorCode = (error: unknown): string | undefined => {\n if (\n error instanceof Error &&\n 'code' in error &&\n typeof (error as Record<string, unknown>).code === 'string'\n ) {\n return (error as Record<string, unknown>).code as string;\n }\n return undefined;\n};\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 * Maps a PostgreSQL error (from the `pg` driver) to a typed DumboError\n * based on the SQLSTATE code.\n *\n * SQLSTATE reference: https://www.postgresql.org/docs/current/errcodes-appendix.html\n * Transient classification based on Npgsql's PostgresException.IsTransient.\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized PostgreSQL error.\n */\nexport const mapPostgresError = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const code = getPostgresErrorCode(error);\n if (!code)\n return new DumboError({\n errorCode: 500,\n message: getErrorMessage(error),\n innerError: asError(error),\n });\n\n const message = getErrorMessage(error);\n const innerError = asError(error);\n\n // Exact SQLSTATE matches first, then class prefix fallbacks\n\n switch (code) {\n // ── Class 23: Integrity Constraint Violations ──\n case '23505':\n return new UniqueConstraintError(message, innerError);\n case '23503':\n return new ForeignKeyViolationError(message, innerError);\n case '23502':\n return new NotNullViolationError(message, innerError);\n case '23514':\n return new CheckViolationError(message, innerError);\n case '23P01':\n return new ExclusionViolationError(message, innerError);\n\n // ── Class 40: Transaction Rollback ──\n case '40001':\n return new SerializationError(message, innerError);\n case '40P01':\n return new DeadlockError(message, innerError);\n\n // ── Class 55: Object Not In Prerequisite State ──\n case '55P03':\n case '55006':\n return new LockNotAvailableError(message, innerError);\n\n // ── Class 57: Operator Intervention ──\n case '57014': // query_canceled (e.g. statement timeout)\n return new QueryCanceledError(message, innerError);\n case '57P01': // admin shutdown\n case '57P02': // crash shutdown\n return new AdminShutdownError(message, innerError);\n case '57P03': // cannot connect now\n case '57P05': // idle session timeout\n return new ConnectionError(message, innerError);\n }\n\n // Class prefix fallbacks (first 2 characters of the SQLSTATE code)\n const sqlClass = code.slice(0, 2);\n\n switch (sqlClass) {\n // ── Class 08: Connection Exception ──\n case '08':\n return new ConnectionError(message, innerError);\n\n // ── Class 22: Data Exception ──\n case '22':\n return new DataError(message, innerError);\n\n // ── Class 23: Integrity Constraint (fallback for unknown codes) ──\n case '23':\n return new IntegrityConstraintViolationError(message, innerError);\n\n // ── Class 42: Syntax Error or Access Rule Violation ──\n case '42':\n return new InvalidOperationError(message, innerError);\n\n // ── Class 53: Insufficient Resources ──\n case '53':\n return new InsufficientResourcesError(message, innerError);\n\n // ── Class 57: Operator Intervention (fallback) ──\n case '57':\n return new ConnectionError(message, innerError);\n\n // ── Class 58: System Error ──\n case '58':\n return new SystemError(message, innerError);\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import {\n defaultDatabaseLockOptions,\n single,\n SQL,\n type AcquireDatabaseLockMode,\n type AcquireDatabaseLockOptions,\n type DatabaseLock,\n type DatabaseLockOptions,\n type ReleaseDatabaseLockOptions,\n type SQLExecutor,\n} from '../../../../core';\nimport { DumboError, QueryCanceledError } from '../../../../core/errors';\n\nexport const tryAcquireAdvisoryLock = async (\n execute: SQLExecutor,\n options: AcquireDatabaseLockOptions,\n): Promise<boolean> => {\n const timeoutMs = options.timeoutMs ?? defaultDatabaseLockOptions.timeoutMs;\n\n const advisoryLock =\n options.mode === 'Permanent' ? 'pg_advisory_lock' : 'pg_advisory_xact_lock';\n\n try {\n await single(\n execute.query<{ locked: boolean }>(\n SQL`SELECT ${SQL.plain(advisoryLock)}(${options.lockId}) AS locked`,\n { timeoutMs },\n ),\n );\n return true;\n } catch (error) {\n if (\n error instanceof QueryCanceledError ||\n DumboError.isInstanceOf(error, {\n errorType: QueryCanceledError.ErrorType,\n })\n )\n return false;\n\n throw error;\n }\n};\n\nexport const releaseAdvisoryLock = async (\n execute: SQLExecutor,\n options: ReleaseDatabaseLockOptions,\n): Promise<boolean> => {\n const timeoutMs = options.timeoutMs ?? defaultDatabaseLockOptions.timeoutMs;\n\n try {\n await single(\n execute.query<{ locked: boolean }>(\n SQL`SELECT pg_advisory_unlock(${options.lockId}) AS locked`,\n { timeoutMs },\n ),\n );\n return true;\n } catch (error) {\n if (\n error instanceof QueryCanceledError ||\n DumboError.isInstanceOf(error, {\n errorType: QueryCanceledError.ErrorType,\n })\n )\n return false;\n\n throw error;\n }\n};\n\nexport const acquireAdvisoryLock = async (\n execute: SQLExecutor,\n options: AcquireDatabaseLockOptions,\n) => {\n const lockAcquired = await tryAcquireAdvisoryLock(execute, options);\n if (!lockAcquired) {\n throw new Error(\n 'Failed to acquire advisory lock within the specified timeout. Migration aborted.',\n );\n }\n};\n\nexport const AdvisoryLock: DatabaseLock = {\n acquire: acquireAdvisoryLock,\n tryAcquire: tryAcquireAdvisoryLock,\n release: releaseAdvisoryLock,\n withAcquire: async <Result>(\n execute: SQLExecutor,\n handle: () => Promise<Result>,\n options: AcquireDatabaseLockOptions,\n ) => {\n await acquireAdvisoryLock(execute, options);\n try {\n return await handle();\n } finally {\n if (options.mode === 'Permanent')\n await releaseAdvisoryLock(execute, options);\n }\n },\n};\n\nexport const advisoryLock = (\n execute: SQLExecutor,\n options: DatabaseLockOptions,\n) => ({\n acquire: (acquireOptions?: { mode: AcquireDatabaseLockMode }) =>\n acquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n }),\n tryAcquire: (acquireOptions?: { mode: AcquireDatabaseLockMode }) =>\n tryAcquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n }),\n release: () => releaseAdvisoryLock(execute, options),\n withAcquire: async <Result>(\n handle: () => Promise<Result>,\n acquireOptions?: { mode: AcquireDatabaseLockMode },\n ) => {\n await acquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n });\n try {\n return await handle();\n } finally {\n await releaseAdvisoryLock(execute, options);\n }\n },\n});\n","import {\n type MigratorOptions,\n registerDefaultMigratorOptions,\n} from '../../../../core';\nimport { AdvisoryLock } from '../locks';\n\nexport const DefaultPostgreSQLMigratorOptions: MigratorOptions = {\n lock: {\n databaseLock: AdvisoryLock,\n },\n};\n\nregisterDefaultMigratorOptions('PostgreSQL', DefaultPostgreSQLMigratorOptions);\n","import type { SQLIn } from '../../../../../core';\nimport {\n SQLArray,\n SQLProcessor,\n type SQLProcessorContext,\n} from '../../../../../core';\n\nexport const PostgreSQLArrayProcessor: SQLProcessor<SQLArray> = SQLProcessor({\n canHandle: 'SQL_ARRAY',\n handle: (\n token: SQLArray,\n { builder, mapper, serializer }: SQLProcessorContext,\n ) => {\n if (token.value.length === 0) {\n throw new Error(\n \"Empty arrays are not supported. If you're using it with SELECT IN statement Use SQL.in(column, array) helper instead.\",\n );\n }\n const mappedValue = mapper.mapValue(token.value, serializer) as unknown[];\n\n if (token.mode === 'params') {\n builder.addParams(mappedValue);\n } else {\n builder.addParam(mappedValue);\n }\n },\n});\n\nexport const PostgreSQLExpandSQLInProcessor: SQLProcessor<SQLIn> = SQLProcessor(\n {\n canHandle: 'SQL_IN',\n handle: (token: SQLIn, context: SQLProcessorContext) => {\n const { builder, mapper, processorsRegistry } = context;\n const { values: inValues, column, mode } = token;\n\n if (inValues.value.length === 0) {\n builder.addParam(mapper.mapValue(false, context.serializer));\n return;\n }\n\n builder.addSQL(\n mapper.mapValue(column.value, context.serializer) as string,\n );\n const arrayProcessor = processorsRegistry.get(SQLArray.type);\n\n if (!arrayProcessor) {\n throw new Error(\n 'No sql processor registered for an array. Cannot expand IN statement',\n );\n }\n\n if (mode === 'params') {\n builder.addSQL(` IN (`);\n const expandedArray = { ...inValues, mode: 'params' as const };\n arrayProcessor.handle(expandedArray, context);\n builder.addSQL(`)`);\n } else {\n builder.addSQL(` = ANY (`);\n arrayProcessor.handle(inValues, context);\n builder.addSQL(`)`);\n }\n },\n },\n);\n","import {\n mapDefaultSQLColumnProcessors,\n type DefaultSQLColumnProcessors,\n type DefaultSQLColumnToken,\n type SQLProcessorContext,\n} from '../../../../../core';\n\nconst mapColumnType = (\n token: DefaultSQLColumnToken,\n { builder }: SQLProcessorContext,\n): void => {\n let columnSQL: string;\n const { sqlTokenType } = token;\n switch (sqlTokenType) {\n case 'SQL_COLUMN_AUTO_INCREMENT':\n columnSQL = `${token.bigint ? 'BIGSERIAL' : 'SERIAL'} ${token.primaryKey ? 'PRIMARY KEY' : ''}`;\n break;\n case 'SQL_COLUMN_BIGINT':\n columnSQL = 'BIGINT';\n break;\n case 'SQL_COLUMN_SERIAL':\n columnSQL = 'SERIAL';\n break;\n case 'SQL_COLUMN_INTEGER':\n columnSQL = 'INTEGER';\n break;\n case 'SQL_COLUMN_JSONB':\n columnSQL = 'JSONB';\n break;\n case 'SQL_COLUMN_BIGSERIAL':\n columnSQL = 'BIGSERIAL';\n break;\n case 'SQL_COLUMN_TIMESTAMP':\n columnSQL = 'TIMESTAMP';\n break;\n case 'SQL_COLUMN_TIMESTAMPTZ':\n columnSQL = 'TIMESTAMPTZ';\n break;\n case 'SQL_COLUMN_VARCHAR':\n columnSQL = `VARCHAR ${Number.isNaN(token.length) ? '' : `(${token.length})`}`;\n break;\n default: {\n const exhaustiveCheck: never = sqlTokenType;\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(`Unknown column type: ${exhaustiveCheck}`);\n }\n }\n builder.addSQL(columnSQL);\n};\n\nexport const postgreSQLColumnProcessors: DefaultSQLColumnProcessors =\n mapDefaultSQLColumnProcessors(mapColumnType);\n","// Ported from: https://github.com/datalanche/node-pg-format/blob/master/lib/reserved.js\n//\n// PostgreSQL reserved words\n//\nconst reservedMap: { [key: string]: boolean } = {\n AES128: true,\n AES256: true,\n ALL: true,\n ALLOWOVERWRITE: true,\n ANALYSE: true,\n ANALYZE: true,\n AND: true,\n ANY: true,\n ARRAY: true,\n AS: true,\n ASC: true,\n AUTHORIZATION: true,\n BACKUP: true,\n BETWEEN: true,\n BINARY: true,\n BLANKSASNULL: true,\n BOTH: true,\n BYTEDICT: true,\n CASE: true,\n CAST: true,\n CHECK: true,\n COLLATE: true,\n COLUMN: true,\n CONSTRAINT: true,\n CREATE: true,\n CREDENTIALS: true,\n CROSS: true,\n CURRENT_DATE: true,\n CURRENT_TIME: true,\n CURRENT_TIMESTAMP: true,\n CURRENT_USER: true,\n CURRENT_USER_ID: true,\n DEFAULT: true,\n DEFERRABLE: true,\n DEFLATE: true,\n DEFRAG: true,\n DELTA: true,\n DELTA32K: true,\n DESC: true,\n DISABLE: true,\n DISTINCT: true,\n DO: true,\n ELSE: true,\n EMPTYASNULL: true,\n ENABLE: true,\n ENCODE: true,\n ENCRYPT: true,\n ENCRYPTION: true,\n END: true,\n EXCEPT: true,\n EXPLICIT: true,\n FALSE: true,\n FOR: true,\n FOREIGN: true,\n FREEZE: true,\n FROM: true,\n FULL: true,\n GLOBALDICT256: true,\n GLOBALDICT64K: true,\n GRANT: true,\n GROUP: true,\n GZIP: true,\n HAVING: true,\n IDENTITY: true,\n IGNORE: true,\n ILIKE: true,\n IN: true,\n INITIALLY: true,\n INNER: true,\n INTERSECT: true,\n INTO: true,\n IS: true,\n ISNULL: true,\n JOIN: true,\n LEADING: true,\n LEFT: true,\n LIKE: true,\n LIMIT: true,\n LOCALTIME: true,\n LOCALTIMESTAMP: true,\n LUN: true,\n LUNS: true,\n LZO: true,\n LZOP: true,\n MINUS: true,\n MOSTLY13: true,\n MOSTLY32: true,\n MOSTLY8: true,\n NATURAL: true,\n NEW: true,\n NOT: true,\n NOTNULL: true,\n NULL: true,\n NULLS: true,\n OFF: true,\n OFFLINE: true,\n OFFSET: true,\n OLD: true,\n ON: true,\n ONLY: true,\n OPEN: true,\n OR: true,\n ORDER: true,\n OUTER: true,\n OVERLAPS: true,\n PARALLEL: true,\n PARTITION: true,\n PERCENT: true,\n PLACING: true,\n PRIMARY: true,\n RAW: true,\n READRATIO: true,\n RECOVER: true,\n REFERENCES: true,\n REJECTLOG: true,\n RESORT: true,\n RESTORE: true,\n RIGHT: true,\n SELECT: true,\n SESSION_USER: true,\n SIMILAR: true,\n SOME: true,\n SYSDATE: true,\n SYSTEM: true,\n TABLE: true,\n TAG: true,\n TDES: true,\n TEXT255: true,\n TEXT32K: true,\n THEN: true,\n TO: true,\n TOP: true,\n TRAILING: true,\n TRUE: true,\n TRUNCATECOLUMNS: true,\n UNION: true,\n UNIQUE: true,\n USER: true,\n USING: true,\n VERBOSE: true,\n WALLET: true,\n WHEN: true,\n WHERE: true,\n WITH: true,\n WITHOUT: true,\n};\n\nexport default reservedMap;\n","import {\n defaultProcessorsRegistry,\n mapSQLIdentifier,\n registerFormatter,\n SQLFormatter,\n SQLProcessorsRegistry,\n} from '../../../../../core';\nimport {\n PostgreSQLArrayProcessor,\n postgreSQLColumnProcessors,\n PostgreSQLExpandSQLInProcessor,\n} from '../processors';\nimport reservedMap from './reserved';\n\nconst postgreSQLProcessorsRegistry = SQLProcessorsRegistry({\n from: defaultProcessorsRegistry,\n})\n .register(postgreSQLColumnProcessors)\n .register(PostgreSQLArrayProcessor, PostgreSQLExpandSQLInProcessor);\n\nconst pgFormatter: SQLFormatter = SQLFormatter({\n processorsRegistry: postgreSQLProcessorsRegistry,\n valueMapper: {\n mapDate: (value: Date): unknown =>\n value.toISOString().replace('T', ' ').replace('Z', '+00'),\n mapPlaceholder: (index: number): string => `$${index + 1}`,\n mapIdentifier: (value: string): string =>\n mapSQLIdentifier(value, { reservedWords: reservedMap }),\n mapArray: (values: unknown[]): unknown[] => values,\n },\n});\n\nregisterFormatter('PostgreSQL', pgFormatter);\n\n// Export the original functions if needed\nexport { pgFormatter };\n","import type { DatabaseDriverType } from '../../../core';\n\nexport * from './connections';\nexport * from './errors';\nexport * from './locks';\nexport * from './schema';\nexport * from './sql';\n\nexport type PostgreSQLDatabaseName = 'PostgreSQL';\nexport const PostgreSQLDatabaseName = 'PostgreSQL';\n\nexport type PostgreSQLDriverType<DriverName extends string = string> =\n DatabaseDriverType<PostgreSQLDatabaseName, DriverName>;\n"],"mappings":"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"}
1
+ {"version":3,"file":"core-DXCRR5A9.cjs","names":["DumboError","UniqueConstraintError","ForeignKeyViolationError","NotNullViolationError","CheckViolationError","ExclusionViolationError","SerializationError","DeadlockError","LockNotAvailableError","QueryCanceledError","AdminShutdownError","ConnectionError","DataError","IntegrityConstraintViolationError","InvalidOperationError","InsufficientResourcesError","SystemError","defaultDatabaseLockOptions","single","SQL","QueryCanceledError","DumboError","registerDefaultMigratorOptions","SQLProcessor","SQLArray","mapDefaultSQLColumnProcessors","SQLFormatter","SQLProcessorsRegistry","defaultProcessorsRegistry","mapSQLIdentifier","registerFormatter"],"sources":["../src/storage/postgresql/core/errors/errorMapper.ts","../src/storage/postgresql/core/locks/advisoryLocks.ts","../src/storage/postgresql/core/schema/migrations.ts","../src/storage/postgresql/core/sql/processors/arrayProcessors.ts","../src/storage/postgresql/core/sql/processors/columProcessors.ts","../src/storage/postgresql/core/sql/formatter/reserved.ts","../src/storage/postgresql/core/sql/formatter/index.ts","../src/storage/postgresql/core/index.ts"],"sourcesContent":["import {\n AdminShutdownError,\n CheckViolationError,\n ConnectionError,\n DataError,\n DeadlockError,\n DumboError,\n ExclusionViolationError,\n ForeignKeyViolationError,\n InsufficientResourcesError,\n IntegrityConstraintViolationError,\n InvalidOperationError,\n LockNotAvailableError,\n NotNullViolationError,\n QueryCanceledError,\n SerializationError,\n SystemError,\n UniqueConstraintError,\n} from '../../../../core/errors';\n\n/**\n * Checks whether the given error looks like a PostgreSQL DatabaseError\n * from the `pg` driver (has a string `code` property with a SQLSTATE value).\n */\nconst getPostgresErrorCode = (error: unknown): string | undefined => {\n if (\n error instanceof Error &&\n 'code' in error &&\n typeof (error as Record<string, unknown>).code === 'string'\n ) {\n return (error as Record<string, unknown>).code as string;\n }\n return undefined;\n};\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 * Maps a PostgreSQL error (from the `pg` driver) to a typed DumboError\n * based on the SQLSTATE code.\n *\n * SQLSTATE reference: https://www.postgresql.org/docs/current/errcodes-appendix.html\n * Transient classification based on Npgsql's PostgresException.IsTransient.\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized PostgreSQL error.\n */\nexport const mapPostgresError = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const code = getPostgresErrorCode(error);\n if (!code)\n return new DumboError({\n errorCode: 500,\n message: getErrorMessage(error),\n innerError: asError(error),\n });\n\n const message = getErrorMessage(error);\n const innerError = asError(error);\n\n // Exact SQLSTATE matches first, then class prefix fallbacks\n\n switch (code) {\n // ── Class 23: Integrity Constraint Violations ──\n case '23505':\n return new UniqueConstraintError(message, innerError);\n case '23503':\n return new ForeignKeyViolationError(message, innerError);\n case '23502':\n return new NotNullViolationError(message, innerError);\n case '23514':\n return new CheckViolationError(message, innerError);\n case '23P01':\n return new ExclusionViolationError(message, innerError);\n\n // ── Class 40: Transaction Rollback ──\n case '40001':\n return new SerializationError(message, innerError);\n case '40P01':\n return new DeadlockError(message, innerError);\n\n // ── Class 55: Object Not In Prerequisite State ──\n case '55P03':\n case '55006':\n return new LockNotAvailableError(message, innerError);\n\n // ── Class 57: Operator Intervention ──\n case '57014': // query_canceled (e.g. statement timeout)\n return new QueryCanceledError(message, innerError);\n case '57P01': // admin shutdown\n case '57P02': // crash shutdown\n return new AdminShutdownError(message, innerError);\n case '57P03': // cannot connect now\n case '57P05': // idle session timeout\n return new ConnectionError(message, innerError);\n }\n\n // Class prefix fallbacks (first 2 characters of the SQLSTATE code)\n const sqlClass = code.slice(0, 2);\n\n switch (sqlClass) {\n // ── Class 08: Connection Exception ──\n case '08':\n return new ConnectionError(message, innerError);\n\n // ── Class 22: Data Exception ──\n case '22':\n return new DataError(message, innerError);\n\n // ── Class 23: Integrity Constraint (fallback for unknown codes) ──\n case '23':\n return new IntegrityConstraintViolationError(message, innerError);\n\n // ── Class 42: Syntax Error or Access Rule Violation ──\n case '42':\n return new InvalidOperationError(message, innerError);\n\n // ── Class 53: Insufficient Resources ──\n case '53':\n return new InsufficientResourcesError(message, innerError);\n\n // ── Class 57: Operator Intervention (fallback) ──\n case '57':\n return new ConnectionError(message, innerError);\n\n // ── Class 58: System Error ──\n case '58':\n return new SystemError(message, innerError);\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import {\n defaultDatabaseLockOptions,\n single,\n SQL,\n type AcquireDatabaseLockMode,\n type AcquireDatabaseLockOptions,\n type DatabaseLock,\n type DatabaseLockOptions,\n type ReleaseDatabaseLockOptions,\n type SQLExecutor,\n} from '../../../../core';\nimport { DumboError, QueryCanceledError } from '../../../../core/errors';\n\nexport const tryAcquireAdvisoryLock = async (\n execute: SQLExecutor,\n options: AcquireDatabaseLockOptions,\n): Promise<boolean> => {\n const timeoutMs = options.timeoutMs ?? defaultDatabaseLockOptions.timeoutMs;\n\n const advisoryLock =\n options.mode === 'Permanent' ? 'pg_advisory_lock' : 'pg_advisory_xact_lock';\n\n try {\n await single(\n execute.query<{ locked: boolean }>(\n SQL`SELECT ${SQL.plain(advisoryLock)}(${options.lockId}) AS locked`,\n { timeoutMs },\n ),\n );\n return true;\n } catch (error) {\n if (\n error instanceof QueryCanceledError ||\n DumboError.isInstanceOf(error, {\n errorType: QueryCanceledError.ErrorType,\n })\n )\n return false;\n\n throw error;\n }\n};\n\nexport const releaseAdvisoryLock = async (\n execute: SQLExecutor,\n options: ReleaseDatabaseLockOptions,\n): Promise<boolean> => {\n const timeoutMs = options.timeoutMs ?? defaultDatabaseLockOptions.timeoutMs;\n\n try {\n await single(\n execute.query<{ locked: boolean }>(\n SQL`SELECT pg_advisory_unlock(${options.lockId}) AS locked`,\n { timeoutMs },\n ),\n );\n return true;\n } catch (error) {\n if (\n error instanceof QueryCanceledError ||\n DumboError.isInstanceOf(error, {\n errorType: QueryCanceledError.ErrorType,\n })\n )\n return false;\n\n throw error;\n }\n};\n\nexport const acquireAdvisoryLock = async (\n execute: SQLExecutor,\n options: AcquireDatabaseLockOptions,\n) => {\n const lockAcquired = await tryAcquireAdvisoryLock(execute, options);\n if (!lockAcquired) {\n throw new Error(\n 'Failed to acquire advisory lock within the specified timeout. Migration aborted.',\n );\n }\n};\n\nexport const AdvisoryLock: DatabaseLock = {\n acquire: acquireAdvisoryLock,\n tryAcquire: tryAcquireAdvisoryLock,\n release: releaseAdvisoryLock,\n withAcquire: async <Result>(\n execute: SQLExecutor,\n handle: () => Promise<Result>,\n options: AcquireDatabaseLockOptions,\n ) => {\n await acquireAdvisoryLock(execute, options);\n try {\n return await handle();\n } finally {\n if (options.mode === 'Permanent')\n await releaseAdvisoryLock(execute, options);\n }\n },\n};\n\nexport const advisoryLock = (\n execute: SQLExecutor,\n options: DatabaseLockOptions,\n) => ({\n acquire: (acquireOptions?: { mode: AcquireDatabaseLockMode }) =>\n acquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n }),\n tryAcquire: (acquireOptions?: { mode: AcquireDatabaseLockMode }) =>\n tryAcquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n }),\n release: () => releaseAdvisoryLock(execute, options),\n withAcquire: async <Result>(\n handle: () => Promise<Result>,\n acquireOptions?: { mode: AcquireDatabaseLockMode },\n ) => {\n await acquireAdvisoryLock(execute, {\n ...options,\n ...(acquireOptions ?? {}),\n });\n try {\n return await handle();\n } finally {\n await releaseAdvisoryLock(execute, options);\n }\n },\n});\n","import {\n type MigratorOptions,\n registerDefaultMigratorOptions,\n} from '../../../../core';\nimport { AdvisoryLock } from '../locks';\n\nexport const DefaultPostgreSQLMigratorOptions: MigratorOptions = {\n lock: {\n databaseLock: AdvisoryLock,\n },\n};\n\nregisterDefaultMigratorOptions('PostgreSQL', DefaultPostgreSQLMigratorOptions);\n","import type { SQLIn } from '../../../../../core';\nimport {\n SQLArray,\n SQLProcessor,\n type SQLProcessorContext,\n} from '../../../../../core';\n\nexport const PostgreSQLArrayProcessor: SQLProcessor<SQLArray> = SQLProcessor({\n canHandle: 'SQL_ARRAY',\n handle: (\n token: SQLArray,\n { builder, mapper, serializer }: SQLProcessorContext,\n ) => {\n if (token.value.length === 0) {\n throw new Error(\n \"Empty arrays are not supported. If you're using it with SELECT IN statement Use SQL.in(column, array) helper instead.\",\n );\n }\n const mappedValue = mapper.mapValue(token.value, serializer) as unknown[];\n\n if (token.mode === 'params') {\n builder.addParams(mappedValue);\n } else {\n builder.addParam(mappedValue);\n }\n },\n});\n\nexport const PostgreSQLExpandSQLInProcessor: SQLProcessor<SQLIn> = SQLProcessor(\n {\n canHandle: 'SQL_IN',\n handle: (token: SQLIn, context: SQLProcessorContext) => {\n const { builder, mapper, processorsRegistry } = context;\n const { values: inValues, column, mode } = token;\n\n if (inValues.value.length === 0) {\n builder.addParam(mapper.mapValue(false, context.serializer));\n return;\n }\n\n builder.addSQL(\n mapper.mapValue(column.value, context.serializer) as string,\n );\n const arrayProcessor = processorsRegistry.get(SQLArray.type);\n\n if (!arrayProcessor) {\n throw new Error(\n 'No sql processor registered for an array. Cannot expand IN statement',\n );\n }\n\n if (mode === 'params') {\n builder.addSQL(` IN (`);\n const expandedArray = { ...inValues, mode: 'params' as const };\n arrayProcessor.handle(expandedArray, context);\n builder.addSQL(`)`);\n } else {\n builder.addSQL(` = ANY (`);\n arrayProcessor.handle(inValues, context);\n builder.addSQL(`)`);\n }\n },\n },\n);\n","import {\n mapDefaultSQLColumnProcessors,\n type DefaultSQLColumnProcessors,\n type DefaultSQLColumnToken,\n type SQLProcessorContext,\n} from '../../../../../core';\n\nconst mapColumnType = (\n token: DefaultSQLColumnToken,\n { builder }: SQLProcessorContext,\n): void => {\n let columnSQL: string;\n const { sqlTokenType } = token;\n switch (sqlTokenType) {\n case 'SQL_COLUMN_AUTO_INCREMENT':\n columnSQL = `${token.bigint ? 'BIGSERIAL' : 'SERIAL'} ${token.primaryKey ? 'PRIMARY KEY' : ''}`;\n break;\n case 'SQL_COLUMN_BIGINT':\n columnSQL = 'BIGINT';\n break;\n case 'SQL_COLUMN_SERIAL':\n columnSQL = 'SERIAL';\n break;\n case 'SQL_COLUMN_INTEGER':\n columnSQL = 'INTEGER';\n break;\n case 'SQL_COLUMN_JSONB':\n columnSQL = 'JSONB';\n break;\n case 'SQL_COLUMN_BIGSERIAL':\n columnSQL = 'BIGSERIAL';\n break;\n case 'SQL_COLUMN_TIMESTAMP':\n columnSQL = 'TIMESTAMP';\n break;\n case 'SQL_COLUMN_TIMESTAMPTZ':\n columnSQL = 'TIMESTAMPTZ';\n break;\n case 'SQL_COLUMN_VARCHAR':\n columnSQL = `VARCHAR ${Number.isNaN(token.length) ? '' : `(${token.length})`}`;\n break;\n default: {\n const exhaustiveCheck: never = sqlTokenType;\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(`Unknown column type: ${exhaustiveCheck}`);\n }\n }\n builder.addSQL(columnSQL);\n};\n\nexport const postgreSQLColumnProcessors: DefaultSQLColumnProcessors =\n mapDefaultSQLColumnProcessors(mapColumnType);\n","// Ported from: https://github.com/datalanche/node-pg-format/blob/master/lib/reserved.js\n//\n// PostgreSQL reserved words\n//\nconst reservedMap: { [key: string]: boolean } = {\n AES128: true,\n AES256: true,\n ALL: true,\n ALLOWOVERWRITE: true,\n ANALYSE: true,\n ANALYZE: true,\n AND: true,\n ANY: true,\n ARRAY: true,\n AS: true,\n ASC: true,\n AUTHORIZATION: true,\n BACKUP: true,\n BETWEEN: true,\n BINARY: true,\n BLANKSASNULL: true,\n BOTH: true,\n BYTEDICT: true,\n CASE: true,\n CAST: true,\n CHECK: true,\n COLLATE: true,\n COLUMN: true,\n CONSTRAINT: true,\n CREATE: true,\n CREDENTIALS: true,\n CROSS: true,\n CURRENT_DATE: true,\n CURRENT_TIME: true,\n CURRENT_TIMESTAMP: true,\n CURRENT_USER: true,\n CURRENT_USER_ID: true,\n DEFAULT: true,\n DEFERRABLE: true,\n DEFLATE: true,\n DEFRAG: true,\n DELTA: true,\n DELTA32K: true,\n DESC: true,\n DISABLE: true,\n DISTINCT: true,\n DO: true,\n ELSE: true,\n EMPTYASNULL: true,\n ENABLE: true,\n ENCODE: true,\n ENCRYPT: true,\n ENCRYPTION: true,\n END: true,\n EXCEPT: true,\n EXPLICIT: true,\n FALSE: true,\n FOR: true,\n FOREIGN: true,\n FREEZE: true,\n FROM: true,\n FULL: true,\n GLOBALDICT256: true,\n GLOBALDICT64K: true,\n GRANT: true,\n GROUP: true,\n GZIP: true,\n HAVING: true,\n IDENTITY: true,\n IGNORE: true,\n ILIKE: true,\n IN: true,\n INITIALLY: true,\n INNER: true,\n INTERSECT: true,\n INTO: true,\n IS: true,\n ISNULL: true,\n JOIN: true,\n LEADING: true,\n LEFT: true,\n LIKE: true,\n LIMIT: true,\n LOCALTIME: true,\n LOCALTIMESTAMP: true,\n LUN: true,\n LUNS: true,\n LZO: true,\n LZOP: true,\n MINUS: true,\n MOSTLY13: true,\n MOSTLY32: true,\n MOSTLY8: true,\n NATURAL: true,\n NEW: true,\n NOT: true,\n NOTNULL: true,\n NULL: true,\n NULLS: true,\n OFF: true,\n OFFLINE: true,\n OFFSET: true,\n OLD: true,\n ON: true,\n ONLY: true,\n OPEN: true,\n OR: true,\n ORDER: true,\n OUTER: true,\n OVERLAPS: true,\n PARALLEL: true,\n PARTITION: true,\n PERCENT: true,\n PLACING: true,\n PRIMARY: true,\n RAW: true,\n READRATIO: true,\n RECOVER: true,\n REFERENCES: true,\n REJECTLOG: true,\n RESORT: true,\n RESTORE: true,\n RIGHT: true,\n SELECT: true,\n SESSION_USER: true,\n SIMILAR: true,\n SOME: true,\n SYSDATE: true,\n SYSTEM: true,\n TABLE: true,\n TAG: true,\n TDES: true,\n TEXT255: true,\n TEXT32K: true,\n THEN: true,\n TO: true,\n TOP: true,\n TRAILING: true,\n TRUE: true,\n TRUNCATECOLUMNS: true,\n UNION: true,\n UNIQUE: true,\n USER: true,\n USING: true,\n VERBOSE: true,\n WALLET: true,\n WHEN: true,\n WHERE: true,\n WITH: true,\n WITHOUT: true,\n};\n\nexport default reservedMap;\n","import {\n defaultProcessorsRegistry,\n mapSQLIdentifier,\n registerFormatter,\n SQLFormatter,\n SQLProcessorsRegistry,\n} from '../../../../../core';\nimport {\n PostgreSQLArrayProcessor,\n postgreSQLColumnProcessors,\n PostgreSQLExpandSQLInProcessor,\n} from '../processors';\nimport reservedMap from './reserved';\n\nconst postgreSQLProcessorsRegistry = SQLProcessorsRegistry({\n from: defaultProcessorsRegistry,\n})\n .register(postgreSQLColumnProcessors)\n .register(PostgreSQLArrayProcessor, PostgreSQLExpandSQLInProcessor);\n\nconst pgFormatter: SQLFormatter = SQLFormatter({\n processorsRegistry: postgreSQLProcessorsRegistry,\n valueMapper: {\n mapDate: (value: Date): unknown =>\n value.toISOString().replace('T', ' ').replace('Z', '+00'),\n mapPlaceholder: (index: number): string => `$${index + 1}`,\n mapIdentifier: (value: string): string =>\n mapSQLIdentifier(value, { reservedWords: reservedMap }),\n mapArray: (values: unknown[]): unknown[] => values,\n },\n});\n\nregisterFormatter('PostgreSQL', pgFormatter);\n\n// Export the original functions if needed\nexport { pgFormatter };\n","import type { DatabaseDriverType } from '../../../core';\n\nexport * from './connections';\nexport * from './errors';\nexport * from './locks';\nexport * from './schema';\nexport * from './sql';\n\nexport type PostgreSQLDatabaseName = 'PostgreSQL';\nexport const PostgreSQLDatabaseName = 'PostgreSQL';\n\nexport type PostgreSQLDriverType<DriverName extends string = string> =\n DatabaseDriverType<PostgreSQLDatabaseName, DriverName>;\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
- import { B as LockNotAvailableError, Et as SQLProcessorsRegistry, I as ForeignKeyViolationError, K as UniqueConstraintError, L as InsufficientResourcesError, M as DataError, N as DeadlockError, P as DumboError, R as IntegrityConstraintViolationError, T as sqlExecutor, Tt as mapDefaultSQLColumnProcessors, U as SerializationError, V as NotNullViolationError, W as SystemError, X as registerDefaultMigratorOptions, bt as SQL, c as createAmbientConnection, j as ConnectionError, k as CheckViolationError, l as createConnection, n as createAmbientConnectionPool, o as createSingletonConnectionPool, ot as SQLFormatter, r as createBoundedConnectionPool, rt as tracer, s as guardInitializedOnce, t as createAlwaysNewConnectionPool, ut as registerFormatter, w as mapSQLQueryResult, wt as defaultProcessorsRegistry, z as InvalidOperationError } from "./core-DDo4m0Z_.js";
2
- import "./sqliteMetadata-BoQ7Sc9I.js";
3
- import { cpus } from "os";
1
+ import { A as CheckViolationError, B as InvalidOperationError, Dt as SQLProcessorsRegistry, E as sqlExecutor, Et as mapDefaultSQLColumnProcessors, F as DumboError, G as SystemError, H as NotNullViolationError, L as ForeignKeyViolationError, M as ConnectionError, N as DataError, P as DeadlockError, R as InsufficientResourcesError, T as mapSQLQueryResult, Tt as defaultProcessorsRegistry, V as LockNotAvailableError, W as SerializationError, Z as registerDefaultMigratorOptions, dt as registerFormatter, it as tracer, l as createAmbientConnection, n as createAmbientConnectionPool, o as createSingletonConnectionPool, q as UniqueConstraintError, st as SQLFormatter, t as createAlwaysNewConnectionPool, u as createConnection, xt as SQL, z as IntegrityConstraintViolationError } from "./core-BG__WVn6.js";
2
+ import "./sqliteMetadata-7qBjsMBN.js";
4
3
 
5
4
  //#region src/storage/sqlite/core/errors/errorMapper.ts
6
5
  /**
@@ -197,6 +196,7 @@ const sqliteSQLExecutor = (driverType, serializer, formatter, errorMapper) => ({
197
196
  const sqliteTransaction = (driverType, connection, allowNestedTransactions, serializer, defaultTransactionMode) => (getClient, options) => {
198
197
  const transactionCounter = transactionNestingCounter();
199
198
  allowNestedTransactions = options?.allowNestedTransactions ?? allowNestedTransactions;
199
+ let hasBegun = false;
200
200
  return {
201
201
  connection: connection(),
202
202
  driverType,
@@ -209,21 +209,21 @@ const sqliteTransaction = (driverType, connection, allowNestedTransactions, seri
209
209
  return;
210
210
  }
211
211
  transactionCounter.increment();
212
- }
212
+ } else if (hasBegun) throw new InvalidOperationError("Cannot start a nested transaction: allowNestedTransactions is false. Set transactionOptions: { allowNestedTransactions: true } on your pool or connection.");
213
+ hasBegun = true;
213
214
  const mode = options?.mode ?? defaultTransactionMode ?? "IMMEDIATE";
214
215
  await client.command(SQL`BEGIN ${SQL.plain(mode)} TRANSACTION`);
215
216
  },
216
217
  commit: async function() {
217
218
  const client = await getClient;
219
+ if (allowNestedTransactions && transactionCounter.level > 1) {
220
+ if (options?.useSavepoints) await client.command(SQL`RELEASE transaction${SQL.plain(transactionCounter.level.toString())}`);
221
+ transactionCounter.decrement();
222
+ return;
223
+ }
218
224
  try {
219
- if (allowNestedTransactions) {
220
- if (transactionCounter.level > 1) {
221
- if (options?.useSavepoints) await client.command(SQL`RELEASE transaction${SQL.plain(transactionCounter.level.toString())}`);
222
- transactionCounter.decrement();
223
- return;
224
- }
225
- transactionCounter.reset();
226
- }
225
+ if (allowNestedTransactions) transactionCounter.reset();
226
+ hasBegun = false;
227
227
  await client.command(SQL`COMMIT`);
228
228
  } finally {
229
229
  if (options?.close) await options?.close(client);
@@ -231,20 +231,22 @@ const sqliteTransaction = (driverType, connection, allowNestedTransactions, seri
231
231
  },
232
232
  rollback: async function(error) {
233
233
  const client = await getClient;
234
+ if (allowNestedTransactions && transactionCounter.level > 1) {
235
+ transactionCounter.decrement();
236
+ return;
237
+ }
234
238
  try {
235
- if (allowNestedTransactions) {
236
- if (transactionCounter.level > 1) {
237
- transactionCounter.decrement();
238
- return;
239
- }
240
- }
239
+ hasBegun = false;
241
240
  await client.command(SQL`ROLLBACK`);
242
241
  } finally {
243
242
  if (options?.close) await options?.close(client, error);
244
243
  }
245
244
  },
246
245
  execute: sqlExecutor(sqliteSQLExecutor(driverType, serializer), { connect: () => getClient }),
247
- _transactionOptions: options ?? {}
246
+ _transactionOptions: {
247
+ ...options,
248
+ allowNestedTransactions
249
+ }
248
250
  };
249
251
  };
250
252
 
@@ -374,72 +376,6 @@ const DEFAULT_SQLITE_PRAGMA_OPTIONS = {
374
376
  mmap_size: 268435456
375
377
  };
376
378
 
377
- //#endregion
378
- //#region src/storage/sqlite/core/pool/dualPool.ts
379
- const sqliteDualConnectionPool = (options) => {
380
- const { sqliteConnectionFactory, connectionOptions } = options;
381
- const readerPoolSize = options.readerPoolSize ?? Math.max(4, cpus().length);
382
- let databaseInitPromise = null;
383
- const guardSingleConnection = guardInitializedOnce(async () => {
384
- if (databaseInitPromise !== null) return databaseInitPromise;
385
- const initConnection = sqliteConnectionFactory({
386
- ...connectionOptions,
387
- skipDatabasePragmas: false,
388
- readonly: false
389
- });
390
- const initPromise = initConnection.open();
391
- databaseInitPromise = initPromise;
392
- try {
393
- await initPromise;
394
- await initConnection.close();
395
- } catch (error) {
396
- databaseInitPromise = null;
397
- await initConnection.close();
398
- throw mapSqliteError(error);
399
- }
400
- });
401
- const ensureDatabaseInitialized = async () => {
402
- if (databaseInitPromise !== null) return databaseInitPromise;
403
- return guardSingleConnection.ensureInitialized();
404
- };
405
- const wrappedConnectionFactory = async (readonly, connectionOptions) => {
406
- await ensureDatabaseInitialized();
407
- const connection = sqliteConnectionFactory({
408
- ...connectionOptions,
409
- skipDatabasePragmas: true,
410
- readonly
411
- });
412
- await connection.open();
413
- return connection;
414
- };
415
- const writerPool = createSingletonConnectionPool({
416
- driverType: options.driverType,
417
- getConnection: () => wrappedConnectionFactory(false, connectionOptions)
418
- });
419
- const readerPool = createBoundedConnectionPool({
420
- driverType: options.driverType,
421
- getConnection: () => wrappedConnectionFactory(true, connectionOptions),
422
- maxConnections: readerPoolSize
423
- });
424
- return {
425
- driverType: options.driverType,
426
- connection: (connectionOptions) => connectionOptions?.readonly ? readerPool.connection(connectionOptions) : writerPool.connection(connectionOptions),
427
- execute: {
428
- query: (...args) => readerPool.execute.query(...args),
429
- batchQuery: (...args) => readerPool.execute.batchQuery(...args),
430
- command: (...args) => writerPool.execute.command(...args),
431
- batchCommand: (...args) => writerPool.execute.batchCommand(...args)
432
- },
433
- withConnection: (handle, connectionOptions) => connectionOptions?.readonly ? readerPool.withConnection(handle, connectionOptions) : writerPool.withConnection(handle, connectionOptions),
434
- transaction: writerPool.transaction,
435
- withTransaction: writerPool.withTransaction,
436
- close: async () => {
437
- await guardSingleConnection.stop();
438
- await Promise.all([writerPool.close(), readerPool.close()]);
439
- }
440
- };
441
- };
442
-
443
379
  //#endregion
444
380
  //#region src/storage/sqlite/core/pool/pool.ts
445
381
  const isInMemoryDatabase = (options) => {
@@ -483,10 +419,7 @@ const toSqlitePoolOptions = (options) => {
483
419
  ...rest,
484
420
  singleton: true
485
421
  };
486
- return {
487
- ...rest,
488
- dual: true
489
- };
422
+ return rest;
490
423
  };
491
424
  function sqlitePool(options) {
492
425
  const { driverType } = options;
@@ -494,7 +427,6 @@ function sqlitePool(options) {
494
427
  driverType,
495
428
  connection: options.connection
496
429
  });
497
- if ("dual" in options && options.dual) return sqliteDualConnectionPool(options);
498
430
  if (options.singleton === true && options.sqliteConnectionFactory) return createSingletonConnectionPool({
499
431
  driverType,
500
432
  getConnection: () => options.sqliteConnectionFactory(options.connectionOptions)
@@ -516,4 +448,4 @@ const SQLiteDatabaseName = "SQLite";
516
448
 
517
449
  //#endregion
518
450
  export { mapSqliteError as C, sqliteFormatter as S, SQLiteConnectionString as _, sqliteAmbientConnectionPool as a, sqliteExecute as b, toSqlitePoolOptions as c, isSQLiteError as d, sqliteAmbientClientConnection as f, transactionNestingCounter as g, sqlitePoolClientConnection as h, sqliteAlwaysNewConnectionPool as i, DEFAULT_SQLITE_PRAGMA_OPTIONS as l, sqliteConnection as m, DefaultSQLiteMigratorOptions as n, sqlitePool as o, sqliteClientConnection as p, isInMemoryDatabase as r, sqliteSingletonConnectionPool as s, SQLiteDatabaseName as t, InMemorySQLiteDatabase as u, parsePragmasFromConnectionString as v, sqliteSQLExecutor as x, sqliteTransaction as y };
519
- //# sourceMappingURL=core-BeyC5tHn.js.map
451
+ //# sourceMappingURL=core-DlV8ua1P.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-DlV8ua1P.js","names":[],"sources":["../src/storage/sqlite/core/errors/errorMapper.ts","../src/storage/sqlite/core/sql/processors/columProcessors.ts","../src/storage/sqlite/core/sql/formatter/index.ts","../src/storage/sqlite/core/execute/execute.ts","../src/storage/sqlite/core/transactions/index.ts","../src/storage/sqlite/core/connections/connectionString.ts","../src/storage/sqlite/core/connections/index.ts","../src/storage/sqlite/core/pool/pool.ts","../src/storage/sqlite/core/schema/migrations.ts","../src/storage/sqlite/core/index.ts"],"sourcesContent":["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\n/**\n * Extracts the SQLite error code string from a `sqlite3` driver error.\n *\n * The `sqlite3` (node-sqlite3) driver sets `error.code` to a string like\n * `'SQLITE_CONSTRAINT'` and `error.errno` to the numeric result code.\n * See: https://github.com/TryGhost/node-sqlite3\n */\nconst getSqliteErrorCode = (error: unknown): string | undefined => {\n if (\n error instanceof Error &&\n 'code' in error &&\n typeof (error as Record<string, unknown>).code === 'string'\n ) {\n return (error as Record<string, unknown>).code as string;\n }\n return undefined;\n};\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 * Maps a constraint error to a specific DumboError subtype by inspecting the\n * error message. The `sqlite3` driver only exposes the primary result code\n * `SQLITE_CONSTRAINT` — the constraint subtype (UNIQUE, FOREIGN KEY, etc.)\n * is embedded in the message string by SQLite, e.g.:\n * \"SQLITE_CONSTRAINT: UNIQUE constraint failed: users.email\"\n *\n * Reference: https://www.sqlite.org/rescode.html (extended result codes 275–3091)\n */\nconst mapConstraintError = (\n message: string | undefined,\n innerError: Error | undefined,\n): DumboError => {\n const upperMessage = message?.toUpperCase() ?? '';\n\n // SQLITE_CONSTRAINT_UNIQUE (2067) / SQLITE_CONSTRAINT_PRIMARYKEY (1555)\n if (upperMessage.includes('UNIQUE') || upperMessage.includes('PRIMARY KEY'))\n return new UniqueConstraintError(message, innerError);\n\n // SQLITE_CONSTRAINT_FOREIGNKEY (787)\n if (upperMessage.includes('FOREIGN KEY'))\n return new ForeignKeyViolationError(message, innerError);\n\n // SQLITE_CONSTRAINT_NOTNULL (1299)\n if (upperMessage.includes('NOT NULL'))\n return new NotNullViolationError(message, innerError);\n\n // SQLITE_CONSTRAINT_CHECK (275)\n if (upperMessage.includes('CHECK'))\n return new CheckViolationError(message, innerError);\n\n // SQLITE_CONSTRAINT_ROWID (2579), SQLITE_CONSTRAINT_TRIGGER (1811),\n // SQLITE_CONSTRAINT_COMMITHOOK (531), SQLITE_CONSTRAINT_PINNED (2835),\n // SQLITE_CONSTRAINT_DATATYPE (3091), etc.\n return new IntegrityConstraintViolationError(message, innerError);\n};\n\n/**\n * Maps a SQLite error (from the `sqlite3` / node-sqlite3 driver) to a typed\n * DumboError based on the SQLite result code.\n *\n * Result code reference: https://www.sqlite.org/rescode.html\n *\n * Falls back to a generic DumboError (500) if the error is not a recognized SQLite error.\n */\nexport const mapSqliteError = (error: unknown): DumboError => {\n if (DumboError.isInstanceOf<DumboError>(error)) return error;\n\n const code = getSqliteErrorCode(error);\n if (!code)\n return new DumboError({\n errorCode: 500,\n message: getErrorMessage(error),\n innerError: asError(error),\n });\n\n const message = getErrorMessage(error);\n const innerError = asError(error);\n\n switch (code) {\n // ── Constraint violations (19) ──\n // node-sqlite3 only exposes the primary code; subtype is in the message.\n case 'SQLITE_CONSTRAINT':\n return mapConstraintError(message, innerError);\n\n // ── Busy / lock contention ──\n // SQLITE_BUSY (5): conflict with a separate database connection\n case 'SQLITE_BUSY':\n return new LockNotAvailableError(message, innerError);\n\n // SQLITE_LOCKED (6): conflict within the same connection or shared cache\n case 'SQLITE_LOCKED':\n return new DeadlockError(message, innerError);\n\n // SQLITE_PROTOCOL (15): WAL locking race condition\n case 'SQLITE_PROTOCOL':\n return new LockNotAvailableError(message, innerError);\n\n // ── Connection / open errors ──\n // SQLITE_CANTOPEN (14): unable to open database file\n case 'SQLITE_CANTOPEN':\n return new ConnectionError(message, innerError);\n\n // SQLITE_NOTADB (26): file is not a database\n case 'SQLITE_NOTADB':\n return new ConnectionError(message, innerError);\n\n // ── Resource exhaustion ──\n // SQLITE_NOMEM (7): out of memory\n case 'SQLITE_NOMEM':\n return new InsufficientResourcesError(message, innerError);\n\n // SQLITE_FULL (13): disk full\n case 'SQLITE_FULL':\n return new InsufficientResourcesError(message, innerError);\n\n // ── System / I/O errors ──\n // SQLITE_IOERR (10): operating system I/O error\n case 'SQLITE_IOERR':\n return new SystemError(message, innerError);\n\n // SQLITE_CORRUPT (11): database file is corrupted\n case 'SQLITE_CORRUPT':\n return new SystemError(message, innerError);\n\n // SQLITE_INTERNAL (2): internal SQLite malfunction\n case 'SQLITE_INTERNAL':\n return new SystemError(message, innerError);\n\n // SQLITE_NOLFS (22): large file support unavailable\n case 'SQLITE_NOLFS':\n return new SystemError(message, innerError);\n\n // ── Data errors ──\n // SQLITE_TOOBIG (18): string or BLOB too large\n case 'SQLITE_TOOBIG':\n return new DataError(message, innerError);\n\n // SQLITE_MISMATCH (20): datatype mismatch\n case 'SQLITE_MISMATCH':\n return new DataError(message, innerError);\n\n // SQLITE_RANGE (25): bind parameter index out of range\n case 'SQLITE_RANGE':\n return new DataError(message, innerError);\n\n // ── Invalid operations ──\n // SQLITE_ERROR (1): generic SQL error (syntax errors, missing tables, etc.)\n case 'SQLITE_ERROR':\n return new InvalidOperationError(message, innerError);\n\n // SQLITE_READONLY (8): attempt to write to a read-only database\n case 'SQLITE_READONLY':\n return new InvalidOperationError(message, innerError);\n\n // SQLITE_MISUSE (21): API misuse\n case 'SQLITE_MISUSE':\n return new InvalidOperationError(message, innerError);\n\n // SQLITE_AUTH (23): authorization denied\n case 'SQLITE_AUTH':\n return new InvalidOperationError(message, innerError);\n\n // SQLITE_PERM (3): access permission denied\n case 'SQLITE_PERM':\n return new InvalidOperationError(message, innerError);\n\n // SQLITE_SCHEMA (17): schema changed, statement needs re-preparation\n case 'SQLITE_SCHEMA':\n return new InvalidOperationError(message, innerError);\n\n // ── Transaction / abort ──\n // SQLITE_ABORT (4): operation aborted (e.g. by rollback)\n case 'SQLITE_ABORT':\n return new SerializationError(message, innerError);\n\n // SQLITE_INTERRUPT (9): operation interrupted\n case 'SQLITE_INTERRUPT':\n return new SerializationError(message, innerError);\n }\n\n return new DumboError({\n errorCode: 500,\n message,\n innerError,\n });\n};\n","import {\n mapDefaultSQLColumnProcessors,\n type DefaultSQLColumnProcessors,\n type DefaultSQLColumnToken,\n type SQLProcessorContext,\n} from '../../../../../core';\n\nconst mapColumnType = (\n token: DefaultSQLColumnToken,\n { builder }: SQLProcessorContext,\n): void => {\n let columnSQL: string;\n const { sqlTokenType } = token;\n switch (sqlTokenType) {\n case 'SQL_COLUMN_AUTO_INCREMENT':\n columnSQL = `INTEGER ${token.primaryKey ? 'PRIMARY KEY' : ''} AUTOINCREMENT`;\n break;\n case 'SQL_COLUMN_BIGINT':\n columnSQL = 'INTEGER';\n break;\n case 'SQL_COLUMN_SERIAL':\n columnSQL = 'INTEGER';\n break;\n case 'SQL_COLUMN_INTEGER':\n columnSQL = 'INTEGER';\n break;\n case 'SQL_COLUMN_JSONB':\n columnSQL = 'BLOB';\n break;\n case 'SQL_COLUMN_BIGSERIAL':\n columnSQL = 'INTEGER';\n break;\n case 'SQL_COLUMN_TIMESTAMP':\n columnSQL = 'DATETIME';\n break;\n case 'SQL_COLUMN_TIMESTAMPTZ':\n columnSQL = 'DATETIME';\n break;\n case 'SQL_COLUMN_VARCHAR':\n columnSQL = `VARCHAR ${Number.isNaN(token.length) ? '' : `(${token.length})`}`;\n break;\n default: {\n const exhaustiveCheck: never = sqlTokenType;\n // eslint-disable-next-line @typescript-eslint/restrict-template-expressions\n throw new Error(`Unknown column type: ${exhaustiveCheck}`);\n }\n }\n builder.addSQL(columnSQL);\n};\n\nexport const sqliteColumnProcessors: DefaultSQLColumnProcessors =\n mapDefaultSQLColumnProcessors(mapColumnType);\n","import {\n defaultProcessorsRegistry,\n registerFormatter,\n SQLFormatter,\n SQLProcessorsRegistry,\n} from '../../../../../core/sql';\nimport { sqliteColumnProcessors } from '../processors';\n\nconst sqliteSQLProcessorsRegistry = SQLProcessorsRegistry({\n from: defaultProcessorsRegistry,\n}).register(sqliteColumnProcessors);\n\nconst sqliteFormatter: SQLFormatter = SQLFormatter({\n processorsRegistry: sqliteSQLProcessorsRegistry,\n});\n\nregisterFormatter('SQLite', sqliteFormatter);\n\nexport { sqliteFormatter };\n","import type { SQLiteDriverType } from '..';\nimport type { JSONSerializer, SQLFormatter, SQL } from '../../../../core';\nimport {\n mapSQLQueryResult,\n tracer,\n type BatchSQLCommandOptions,\n type DbSQLExecutor,\n type QueryResult,\n type QueryResultRow,\n type SQLCommandOptions,\n type SQLQueryOptions,\n} from '../../../../core';\nimport type { DumboError } from '../../../../core/errors';\nimport type { SQLiteClient } from '../connections';\nimport { mapSqliteError } from '../errors/errorMapper';\nimport { sqliteFormatter } from '../sql/formatter';\n\nexport type SQLiteErrorMapper = (error: unknown) => DumboError;\n\nexport const sqliteExecute = async <Result = void>(\n database: SQLiteClient,\n handle: (client: SQLiteClient) => Promise<Result>,\n) => {\n try {\n return await handle(database);\n } finally {\n await database.close();\n }\n};\n\nexport type SQLiteSQLExecutor<\n DriverType extends SQLiteDriverType = SQLiteDriverType,\n> = DbSQLExecutor<DriverType, SQLiteClient>;\n\nexport const sqliteSQLExecutor = <\n DriverType extends SQLiteDriverType = SQLiteDriverType,\n>(\n driverType: DriverType,\n serializer: JSONSerializer,\n formatter?: SQLFormatter,\n errorMapper?: SQLiteErrorMapper,\n): SQLiteSQLExecutor<DriverType> => ({\n driverType,\n query: async <Result extends QueryResultRow = QueryResultRow>(\n client: SQLiteClient,\n sql: SQL,\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>> => {\n tracer.info('db:sql:query', {\n query: (formatter ?? sqliteFormatter).format(sql, { serializer }).query,\n params: (formatter ?? sqliteFormatter).format(sql, { serializer }).params,\n debugSQL: (formatter ?? sqliteFormatter).describe(sql, { serializer }),\n });\n\n try {\n let result = await client.query<Result>(sql, options);\n\n if (options?.mapping) {\n result = {\n ...result,\n rows: result.rows.map((row) =>\n mapSQLQueryResult(row, options.mapping!),\n ),\n };\n }\n\n return result;\n } catch (error) {\n tracer.error('db:sql:query:execute:error', { error });\n throw (errorMapper ?? mapSqliteError)(error);\n }\n },\n batchQuery: async <Result extends QueryResultRow = QueryResultRow>(\n client: SQLiteClient,\n sqls: SQL[],\n options?: SQLQueryOptions,\n ): Promise<QueryResult<Result>[]> => {\n try {\n const results = await client.batchQuery<Result>(sqls, options);\n\n if (options?.mapping) {\n return results.map((result) => ({\n ...result,\n rows: result.rows.map((row) =>\n mapSQLQueryResult(row, options.mapping!),\n ),\n }));\n }\n\n return results;\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw (errorMapper ?? mapSqliteError)(error);\n }\n },\n command: async <Result extends QueryResultRow = QueryResultRow>(\n client: SQLiteClient,\n sql: SQL,\n options?: SQLCommandOptions,\n ): Promise<QueryResult<Result>> => {\n tracer.info('db:sql:command', {\n query: (formatter ?? sqliteFormatter).format(sql, { serializer }).query,\n params: (formatter ?? sqliteFormatter).format(sql, { serializer }).params,\n debugSQL: (formatter ?? sqliteFormatter).describe(sql, { serializer }),\n });\n\n try {\n return await client.command<Result>(sql, options);\n } catch (error) {\n tracer.error('db:sql:command:execute:error', { error });\n throw (errorMapper ?? mapSqliteError)(error);\n }\n },\n batchCommand: async <Result extends QueryResultRow = QueryResultRow>(\n client: SQLiteClient,\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 (errorMapper ?? mapSqliteError)(error);\n }\n },\n formatter: formatter ?? sqliteFormatter,\n});\n","import type {\n InferTransactionFromConnection,\n JSONSerializer,\n} from '../../../../core';\nimport {\n InvalidOperationError,\n SQL,\n sqlExecutor,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n type InferDbClientFromConnection,\n} from '../../../../core';\nimport { sqliteSQLExecutor } from '../../core/execute';\nimport {\n transactionNestingCounter,\n type AnySQLiteConnection,\n type SQLiteClientOrPoolClient,\n} from '../connections';\n\nexport type SQLiteTransaction<\n ConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n TransactionOptions extends SQLiteTransactionOptions =\n SQLiteTransactionOptions,\n> = DatabaseTransaction<ConnectionType, TransactionOptions>;\n\nexport type SQLiteTransactionMode = 'DEFERRED' | 'IMMEDIATE' | 'EXCLUSIVE';\n\nexport type SQLiteTransactionOptions = DatabaseTransactionOptions & {\n mode?: SQLiteTransactionMode;\n useSavepoints?: boolean;\n};\n\nexport const sqliteTransaction =\n <ConnectionType extends AnySQLiteConnection = AnySQLiteConnection>(\n driverType: ConnectionType['driverType'],\n connection: () => ConnectionType,\n allowNestedTransactions: boolean,\n serializer: JSONSerializer,\n defaultTransactionMode?: 'IMMEDIATE' | 'DEFERRED' | 'EXCLUSIVE',\n ) =>\n (\n getClient: Promise<InferDbClientFromConnection<ConnectionType>>,\n options?: {\n close: (\n client: InferDbClientFromConnection<ConnectionType>,\n error?: unknown,\n ) => Promise<void>;\n } & SQLiteTransactionOptions,\n ): InferTransactionFromConnection<ConnectionType> => {\n const transactionCounter = transactionNestingCounter();\n allowNestedTransactions =\n options?.allowNestedTransactions ?? allowNestedTransactions;\n\n let hasBegun = false;\n\n const transaction: DatabaseTransaction<ConnectionType> = {\n connection: connection(),\n driverType,\n begin: async function () {\n const client = (await getClient) as SQLiteClientOrPoolClient;\n\n if (allowNestedTransactions) {\n if (transactionCounter.level >= 1) {\n transactionCounter.increment();\n if (options?.useSavepoints) {\n await client.command(\n SQL`SAVEPOINT transaction${SQL.plain(transactionCounter.level.toString())}`,\n );\n }\n return;\n }\n\n transactionCounter.increment();\n } else if (hasBegun) {\n throw new InvalidOperationError(\n 'Cannot start a nested transaction: allowNestedTransactions is false. ' +\n 'Set transactionOptions: { allowNestedTransactions: true } on your pool or connection.',\n );\n }\n\n hasBegun = true;\n const mode = options?.mode ?? defaultTransactionMode ?? 'IMMEDIATE';\n await client.command(SQL`BEGIN ${SQL.plain(mode)} TRANSACTION`);\n },\n commit: async function () {\n const client = (await getClient) as SQLiteClientOrPoolClient;\n\n if (allowNestedTransactions && transactionCounter.level > 1) {\n if (options?.useSavepoints) {\n await client.command(\n SQL`RELEASE transaction${SQL.plain(transactionCounter.level.toString())}`,\n );\n }\n transactionCounter.decrement();\n return;\n }\n\n try {\n if (allowNestedTransactions) transactionCounter.reset();\n hasBegun = false;\n await client.command(SQL`COMMIT`);\n } finally {\n if (options?.close)\n await options?.close(\n client as InferDbClientFromConnection<ConnectionType>,\n );\n }\n },\n rollback: async function (error?: unknown) {\n const client = (await getClient) as SQLiteClientOrPoolClient;\n\n if (allowNestedTransactions && transactionCounter.level > 1) {\n transactionCounter.decrement();\n return;\n }\n\n try {\n hasBegun = false;\n await client.command(SQL`ROLLBACK`);\n } finally {\n if (options?.close)\n await options?.close(\n client as InferDbClientFromConnection<ConnectionType>,\n error,\n );\n }\n },\n execute: sqlExecutor(sqliteSQLExecutor(driverType, serializer), {\n connect: () => getClient,\n }),\n _transactionOptions: {\n ...options,\n allowNestedTransactions,\n },\n };\n\n return transaction as InferTransactionFromConnection<ConnectionType>;\n };\n","import type { DatabaseConnectionString } from '../../../all';\n\nexport type SQLitePragmaOptions = {\n journal_mode?: 'DELETE' | 'TRUNCATE' | 'PERSIST' | 'MEMORY' | 'WAL' | 'OFF';\n synchronous?: 'OFF' | 'NORMAL' | 'FULL' | 'EXTRA';\n cache_size?: number;\n foreign_keys?: boolean;\n temp_store?: 'DEFAULT' | 'FILE' | 'MEMORY';\n busy_timeout?: number;\n mmap_size?: number;\n};\n\nexport type SQLiteConnectionString = DatabaseConnectionString<\n 'SQLite',\n `file:${string}` | `:memory:` | `/${string}` | `./${string}`\n>;\n\nexport const SQLiteConnectionString = (\n connectionString: string,\n): SQLiteConnectionString => {\n if (\n !connectionString.startsWith('file:') &&\n connectionString !== ':memory:' &&\n !connectionString.startsWith('/') &&\n !connectionString.startsWith('./')\n ) {\n throw new Error(\n `Invalid SQLite connection string: ${connectionString}. It should start with \"file:\", \":memory:\", \"/\", or \"./\".`,\n );\n }\n return connectionString as SQLiteConnectionString;\n};\n\nexport const parsePragmasFromConnectionString = (\n connectionString: string | SQLiteConnectionString,\n): Partial<SQLitePragmaOptions> => {\n const str = String(connectionString);\n\n if (!str.startsWith('file:')) {\n return {};\n }\n\n const url = new URL(str);\n const params = url.searchParams;\n const pragmas: Partial<SQLitePragmaOptions> = {};\n\n const journalMode = params.get('journal_mode');\n if (journalMode !== null) {\n pragmas.journal_mode = journalMode as\n | 'DELETE'\n | 'TRUNCATE'\n | 'PERSIST'\n | 'MEMORY'\n | 'WAL'\n | 'OFF';\n }\n\n const synchronous = params.get('synchronous');\n if (synchronous !== null) {\n pragmas.synchronous = synchronous as 'OFF' | 'NORMAL' | 'FULL' | 'EXTRA';\n }\n\n const cacheSize = params.get('cache_size');\n if (cacheSize !== null) {\n pragmas.cache_size = parseInt(cacheSize, 10);\n }\n\n const foreignKeys = params.get('foreign_keys');\n if (foreignKeys !== null) {\n const val = foreignKeys.toLowerCase();\n pragmas.foreign_keys = val === 'true' || val === 'on' || val === '1';\n }\n\n const tempStore = params.get('temp_store');\n if (tempStore !== null) {\n pragmas.temp_store = tempStore.toUpperCase() as\n | 'DEFAULT'\n | 'FILE'\n | 'MEMORY';\n }\n\n const busyTimeout = params.get('busy_timeout');\n if (busyTimeout !== null) {\n pragmas.busy_timeout = parseInt(busyTimeout, 10);\n }\n\n const mmapSize = params.get('mmap_size');\n if (mmapSize !== null) {\n pragmas.mmap_size = parseInt(mmapSize, 10);\n }\n\n return pragmas;\n};\n","import type { SQLiteDriverType } from '..';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n createAmbientConnection,\n createConnection,\n type AnyConnection,\n type BatchSQLCommandOptions,\n type Connection,\n type ConnectionOptions,\n type DatabaseTransaction,\n type InferDbClientFromConnection,\n type InferDriverTypeFromConnection,\n type InitTransaction,\n type SQLCommandOptions,\n type SQLExecutor,\n} from '../../../../core';\nimport { mapSqliteError } from '../errors';\nimport { sqliteSQLExecutor, type SQLiteErrorMapper } from '../execute';\nimport { sqliteTransaction, type SQLiteTransactionMode } from '../transactions';\nimport {\n SQLiteConnectionString,\n type SQLitePragmaOptions,\n} from './connectionString';\n\nexport type SQLiteCommandOptions = SQLCommandOptions & {\n ignoreChangesCount?: boolean;\n};\n\nexport type BatchSQLiteCommandOptions = SQLiteCommandOptions &\n BatchSQLCommandOptions;\n\nexport type SQLiteParameters =\n | object\n | string\n | bigint\n | number\n | boolean\n | null;\n\nexport type SQLiteClient = {\n connect: () => Promise<void>;\n close: () => Promise<void>;\n} & SQLExecutor;\n\nexport type SQLitePoolClient = {\n release: () => void;\n} & SQLExecutor;\n\nexport type SQLiteClientFactory<\n SQLiteClientType extends SQLiteClient = SQLiteClient,\n ClientOptions = SQLiteClientOptions,\n> = (options: ClientOptions) => SQLiteClientType;\n\nexport type SQLiteClientOrPoolClient = SQLitePoolClient | SQLiteClient;\n\nexport interface SQLiteError extends Error {\n errno: number;\n}\n\nexport const isSQLiteError = (error: unknown): error is SQLiteError => {\n if (error instanceof Error && 'code' in error) {\n return true;\n }\n\n return false;\n};\n\nexport type SQLiteClientConnection<\n Self extends AnyConnection = AnyConnection,\n DriverType extends SQLiteDriverType = SQLiteDriverType,\n SQLiteClientType extends SQLiteClient = SQLiteClient,\n TransactionType extends DatabaseTransaction<Self> = DatabaseTransaction<Self>,\n> = Connection<Self, DriverType, SQLiteClientType, TransactionType>;\n\nexport type SQLitePoolClientConnection<\n Self extends AnyConnection = AnyConnection,\n DriverType extends SQLiteDriverType = SQLiteDriverType,\n SQLitePoolClientType extends SQLitePoolClient = SQLitePoolClient,\n TransactionType extends DatabaseTransaction<Self> = DatabaseTransaction<Self>,\n> = Connection<Self, DriverType, SQLitePoolClientType, TransactionType>;\n\nexport type SQLiteConnection<\n Self extends AnyConnection = AnyConnection,\n DriverType extends SQLiteDriverType = SQLiteDriverType,\n SQLiteClientType extends SQLiteClientOrPoolClient =\n | SQLiteClient\n | SQLitePoolClient,\n TransactionType extends DatabaseTransaction<Self> = DatabaseTransaction<Self>,\n> =\n | (SQLiteClientType extends SQLiteClient\n ? SQLiteClientConnection<\n Self,\n DriverType,\n SQLiteClientType,\n TransactionType\n >\n : never)\n | (SQLiteClientType extends SQLitePoolClient\n ? SQLitePoolClientConnection<\n Self,\n DriverType,\n SQLiteClientType,\n TransactionType\n >\n : never);\n\nexport type AnySQLiteClientConnection =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n SQLiteClientConnection<any, any>;\n\nexport type AnySQLitePoolClientConnection =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n SQLitePoolClientConnection<any, any, any, any>;\n\nexport type AnySQLiteConnection =\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n SQLiteConnection<any, any, any, any>;\n\nexport type SQLiteConnectionOptions<\n ConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n> = ConnectionOptions<ConnectionType> & SQLiteClientOptions;\n\nexport type SQLiteClientConnectionDefinitionOptions<\n SQLiteConnectionType extends AnySQLiteClientConnection =\n AnySQLiteClientConnection,\n ConnectionOptions = SQLiteConnectionOptions,\n> = {\n driverType: InferDriverTypeFromConnection<SQLiteConnectionType>;\n type: 'Client';\n sqliteClientFactory: SQLiteClientFactory<\n InferDbClientFromConnection<SQLiteConnectionType>,\n ConnectionOptions\n >;\n connectionOptions: SQLiteConnectionOptions<SQLiteConnectionType>;\n serializer: JSONSerializer;\n};\n\nexport type SQLitePoolConnectionDefinitionOptions<\n SQLiteConnectionType extends AnySQLitePoolClientConnection =\n AnySQLitePoolClientConnection,\n ConnectionOptions = SQLiteConnectionOptions,\n> = {\n driverType: InferDriverTypeFromConnection<SQLiteConnectionType>;\n type: 'PoolClient';\n sqliteClientFactory: SQLiteClientFactory<\n InferDbClientFromConnection<SQLiteConnectionType>,\n ConnectionOptions\n >;\n connectionOptions: SQLiteConnectionOptions<SQLiteConnectionType>;\n serializer: JSONSerializer;\n};\n\nexport type SQLiteConnectionDefinitionOptions<\n SQLiteConnectionType extends AnySQLitePoolClientConnection =\n AnySQLitePoolClientConnection,\n ClientOptions = SQLiteClientOptions,\n> =\n | SQLiteClientConnectionDefinitionOptions<SQLiteConnectionType, ClientOptions>\n | SQLitePoolConnectionDefinitionOptions<SQLiteConnectionType, ClientOptions>;\n\nexport type SQLiteConnectionFactory<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions,\n> = (options: ConnectionOptions) => SQLiteConnectionType;\n\nexport type TransactionNestingCounter = {\n increment: () => void;\n decrement: () => void;\n reset: () => void;\n level: number;\n};\n\nexport const transactionNestingCounter = (): TransactionNestingCounter => {\n let transactionLevel = 0;\n\n return {\n reset: () => {\n transactionLevel = 0;\n },\n increment: () => {\n transactionLevel++;\n },\n decrement: () => {\n transactionLevel--;\n\n if (transactionLevel < 0) {\n throw new Error('Transaction level is out of bounds');\n }\n },\n get level() {\n return transactionLevel;\n },\n };\n};\n\nexport type SqliteAmbientClientConnectionOptions<\n SQLiteConnectionType extends AnySQLiteClientConnection =\n AnySQLiteClientConnection,\n> = {\n driverType: SQLiteConnectionType['driverType'];\n client: InferDbClientFromConnection<SQLiteConnectionType>;\n initTransaction?: InitTransaction<SQLiteConnectionType>;\n allowNestedTransactions?: boolean;\n defaultTransactionMode?: SQLiteTransactionMode;\n serializer: JSONSerializer;\n errorMapper?: SQLiteErrorMapper;\n};\n\nexport const sqliteAmbientClientConnection = <\n SQLiteConnectionType extends AnySQLiteClientConnection =\n AnySQLiteClientConnection,\n>(\n options: SqliteAmbientClientConnectionOptions<SQLiteConnectionType>,\n) => {\n const {\n client,\n driverType,\n initTransaction,\n allowNestedTransactions,\n defaultTransactionMode,\n serializer,\n errorMapper,\n } = options;\n\n return createAmbientConnection<SQLiteConnectionType>({\n driverType,\n client,\n initTransaction:\n initTransaction ??\n ((connection) =>\n sqliteTransaction(\n driverType,\n connection,\n allowNestedTransactions ?? false,\n serializer,\n defaultTransactionMode,\n )),\n executor: ({ serializer }) =>\n sqliteSQLExecutor(driverType, serializer, undefined, errorMapper),\n serializer,\n });\n};\n\nexport const sqliteClientConnection = <\n SQLiteConnectionType extends AnySQLiteClientConnection =\n AnySQLiteClientConnection,\n ClientOptions = SQLiteClientOptions,\n>(\n options: SQLiteClientConnectionDefinitionOptions<\n SQLiteConnectionType,\n ClientOptions\n >,\n): SQLiteConnectionType => {\n const { connectionOptions, sqliteClientFactory, serializer } = options;\n\n let client: InferDbClientFromConnection<SQLiteConnectionType> | null = null;\n\n const connect = async (): Promise<\n InferDbClientFromConnection<SQLiteConnectionType>\n > => {\n if (client) return Promise.resolve(client);\n\n client = sqliteClientFactory(connectionOptions as ClientOptions);\n\n if (client && 'connect' in client && typeof client.connect === 'function') {\n try {\n await client.connect();\n } catch (error) {\n throw mapSqliteError(error);\n }\n }\n\n return client;\n };\n\n return createConnection({\n driverType: options.driverType,\n connect,\n close: async () => {\n if (client && 'close' in client && typeof client.close === 'function')\n await client.close();\n else if (\n client &&\n 'release' in client &&\n typeof client.release === 'function'\n )\n // eslint-disable-next-line @typescript-eslint/no-unsafe-call\n client.release();\n },\n initTransaction: (connection) =>\n sqliteTransaction(\n options.driverType,\n connection,\n connectionOptions.transactionOptions?.allowNestedTransactions ?? false,\n serializer,\n connectionOptions.defaultTransactionMode,\n ),\n executor: ({ serializer }) =>\n sqliteSQLExecutor(options.driverType, serializer),\n serializer,\n });\n};\n\nexport const sqlitePoolClientConnection = <\n SQLiteConnectionType extends AnySQLiteClientConnection =\n AnySQLiteClientConnection,\n ClientOptions = SQLiteClientOptions,\n>(\n options: SQLitePoolConnectionDefinitionOptions<\n SQLiteConnectionType,\n ClientOptions\n >,\n): SQLiteConnectionType => {\n const { connectionOptions, sqliteClientFactory, serializer } = options;\n\n let client: InferDbClientFromConnection<SQLiteConnectionType> | null = null;\n\n const connect = async (): Promise<\n InferDbClientFromConnection<SQLiteConnectionType>\n > => {\n if (client) return Promise.resolve(client);\n\n client = sqliteClientFactory(connectionOptions as ClientOptions);\n\n try {\n await client.connect();\n } catch (error) {\n throw mapSqliteError(error);\n }\n\n return client;\n };\n\n return createConnection({\n driverType: options.driverType,\n connect,\n close: () =>\n client !== null\n ? Promise.resolve((client as unknown as SQLitePoolClient).release())\n : Promise.resolve(),\n initTransaction: (connection) =>\n sqliteTransaction(\n options.driverType,\n connection,\n connectionOptions.transactionOptions?.allowNestedTransactions ?? false,\n serializer,\n connectionOptions.defaultTransactionMode,\n ),\n executor: ({ serializer }) =>\n sqliteSQLExecutor(options.driverType, serializer),\n serializer,\n });\n};\n\nexport function sqliteConnection<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n ClientOptions = SQLiteClientOptions,\n>(\n options: SQLiteConnectionDefinitionOptions<\n SQLiteConnectionType,\n ClientOptions\n >,\n): SQLiteConnectionType {\n return options.type === 'Client'\n ? sqliteClientConnection(options)\n : sqlitePoolClientConnection(options);\n}\n\nexport type InMemorySQLiteDatabase = ':memory:';\nexport const InMemorySQLiteDatabase = SQLiteConnectionString(':memory:');\n\nexport type { SQLitePragmaOptions } from './connectionString';\n\nexport const DEFAULT_SQLITE_PRAGMA_OPTIONS: SQLitePragmaOptions = {\n journal_mode: 'WAL',\n synchronous: 'NORMAL',\n cache_size: -1000000,\n foreign_keys: true,\n temp_store: 'MEMORY',\n busy_timeout: 5000,\n mmap_size: 268435456,\n};\n\nexport type SQLiteClientOptions = {\n pragmaOptions?: Partial<SQLitePragmaOptions>;\n defaultTransactionMode?: SQLiteTransactionMode;\n skipDatabasePragmas?: boolean;\n readonly?: boolean;\n};\n\nexport * from './connectionString';\n","import type { SQLiteConnectionString } from '../connections/connectionString';\nimport {\n InMemorySQLiteDatabase,\n type AnySQLiteConnection,\n type SQLiteConnectionFactory,\n type SQLiteConnectionOptions,\n} from '../connections';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n createAlwaysNewConnectionPool,\n createAmbientConnectionPool,\n createSingletonConnectionPool,\n type ConnectionPool,\n} from '../../../../core';\n\nexport type SQLiteFileNameOrConnectionString =\n | {\n fileName: string | SQLiteConnectionString;\n connectionString?: never;\n }\n | {\n connectionString: string | SQLiteConnectionString;\n fileName?: never;\n };\n\nexport const isInMemoryDatabase = (\n options: Record<string, unknown>,\n): boolean => {\n if ('fileName' in options) {\n return options.fileName === InMemorySQLiteDatabase;\n }\n if ('connectionString' in options) {\n return options.connectionString === InMemorySQLiteDatabase;\n }\n return false;\n};\n\nexport type SQLiteAmbientConnectionPool<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n> = ConnectionPool<SQLiteConnectionType>;\n\ntype SQLiteAmbientConnectionPoolOptions<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n> = {\n singleton?: true;\n pooled?: false;\n sqliteConnectionFactory?: never;\n connection: SQLiteConnectionType;\n connectionOptions?: never;\n};\n\nexport const sqliteAmbientConnectionPool = <\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n>(\n options: {\n driverType: SQLiteConnectionType['driverType'];\n } & SQLiteAmbientConnectionPoolOptions<SQLiteConnectionType['driverType']>,\n): SQLiteAmbientConnectionPool<SQLiteConnectionType['driverType']> => {\n const { connection, driverType } = options;\n\n return createAmbientConnectionPool<SQLiteConnectionType>({\n driverType,\n connection: connection,\n });\n};\n\ntype SQLiteSingletonConnectionPoolOptions<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions,\n> = {\n singleton: true;\n pooled?: true;\n sqliteConnectionFactory: SQLiteConnectionFactory<\n SQLiteConnectionType,\n ConnectionOptions\n >;\n connection?: never;\n connectionOptions: ConnectionOptions;\n};\n\nexport type SQLiteSingletonConnectionPool<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n> = ConnectionPool<SQLiteConnectionType>;\n\nexport const sqliteSingletonConnectionPool = <\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions & Record<string, unknown> =\n SQLiteConnectionOptions & Record<string, unknown>,\n>(\n options: {\n driverType: SQLiteConnectionType['driverType'];\n } & SQLiteSingletonConnectionPoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n >,\n): SQLiteSingletonConnectionPool<SQLiteConnectionType> => {\n const { driverType, sqliteConnectionFactory, connectionOptions } = options;\n\n return createSingletonConnectionPool<SQLiteConnectionType>({\n driverType,\n getConnection: () => sqliteConnectionFactory(connectionOptions),\n });\n};\n\ntype SQLiteAlwaysNewPoolOptions<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions,\n> = {\n singleton?: false;\n pooled?: true;\n sqliteConnectionFactory: SQLiteConnectionFactory<\n SQLiteConnectionType,\n ConnectionOptions\n >;\n connection?: never;\n connectionOptions: ConnectionOptions;\n};\n\nexport type SQLiteAlwaysNewConnectionPool<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n> = ConnectionPool<SQLiteConnectionType>;\n\nexport const sqliteAlwaysNewConnectionPool = <\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions & Record<string, unknown> =\n SQLiteConnectionOptions & Record<string, unknown>,\n>(\n options: {\n driverType: SQLiteConnectionType['driverType'];\n } & SQLiteAlwaysNewPoolOptions<SQLiteConnectionType, ConnectionOptions>,\n): SQLiteAlwaysNewConnectionPool<SQLiteConnectionType> => {\n const { driverType, sqliteConnectionFactory, connectionOptions } = options;\n\n return createAlwaysNewConnectionPool<SQLiteConnectionType>({\n driverType,\n getConnection: () => sqliteConnectionFactory(connectionOptions),\n });\n};\n\nexport type SQLitePoolOptions<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions,\n> = (\n | SQLiteAlwaysNewPoolOptions<SQLiteConnectionType, ConnectionOptions>\n | SQLiteSingletonConnectionPoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n >\n | SQLiteAmbientConnectionPoolOptions<SQLiteConnectionType>\n) & {\n driverType: SQLiteConnectionType['driverType'];\n serializer?: JSONSerializer;\n};\n\nexport type SQLitePool<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n> =\n | SQLiteAmbientConnectionPool<SQLiteConnectionType>\n | SQLiteSingletonConnectionPool<SQLiteConnectionType>\n | SQLiteAlwaysNewConnectionPool<SQLiteConnectionType>;\n\nexport type SQLitePoolFactoryOptions<\n SQLiteConnectionType extends AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions,\n> = Omit<\n SQLitePoolOptions<SQLiteConnectionType, ConnectionOptions>,\n 'singleton'\n> & {\n singleton?: boolean;\n};\n\nexport const toSqlitePoolOptions = <\n SQLiteConnectionType extends AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions,\n>(\n options: SQLitePoolFactoryOptions<SQLiteConnectionType, ConnectionOptions>,\n): SQLitePoolOptions<SQLiteConnectionType, ConnectionOptions> => {\n const { singleton, ...rest } = options;\n const isInMemory = isInMemoryDatabase(options);\n\n if ('client' in options && options.client) {\n return { ...rest, singleton: true } as SQLitePoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n >;\n }\n\n if (isInMemory) {\n return { ...rest, singleton: true } as SQLitePoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n >;\n }\n\n if (singleton === true) {\n return { ...rest, singleton: true } as SQLitePoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n >;\n }\n\n return rest as SQLitePoolOptions<SQLiteConnectionType, ConnectionOptions>;\n};\n\nexport function sqlitePool<\n SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection,\n ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions,\n>(\n options: SQLitePoolOptions<SQLiteConnectionType, ConnectionOptions>,\n): SQLitePool<SQLiteConnectionType> {\n const { driverType } = options;\n\n if (\n (\n options as SQLiteAmbientConnectionPoolOptions<SQLiteConnectionType> & {\n driverType: SQLiteConnectionType['driverType'];\n }\n ).connection\n )\n return createAmbientConnectionPool<SQLiteConnectionType>({\n driverType,\n connection: (\n options as SQLiteAmbientConnectionPoolOptions<SQLiteConnectionType> & {\n driverType: SQLiteConnectionType['driverType'];\n }\n ).connection,\n });\n\n if (\n options.singleton === true &&\n (\n options as SQLiteSingletonConnectionPoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n > & { driverType: SQLiteConnectionType['driverType'] }\n ).sqliteConnectionFactory\n ) {\n return createSingletonConnectionPool({\n driverType,\n getConnection: () =>\n (\n options as SQLiteSingletonConnectionPoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n > & { driverType: SQLiteConnectionType['driverType'] }\n ).sqliteConnectionFactory(\n (\n options as SQLiteSingletonConnectionPoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n > & { driverType: SQLiteConnectionType['driverType'] }\n ).connectionOptions,\n ),\n });\n }\n\n return createAlwaysNewConnectionPool({\n driverType,\n getConnection: () =>\n (\n options as SQLiteAlwaysNewPoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n > & { driverType: SQLiteConnectionType['driverType'] }\n ).sqliteConnectionFactory(\n (\n options as SQLiteAlwaysNewPoolOptions<\n SQLiteConnectionType,\n ConnectionOptions\n > & { driverType: SQLiteConnectionType['driverType'] }\n ).connectionOptions,\n ),\n });\n}\n","import {\n registerDefaultMigratorOptions,\n type MigratorOptions,\n} from '../../../../core';\n\nexport const DefaultSQLiteMigratorOptions: MigratorOptions = {};\n\nregisterDefaultMigratorOptions('SQLite', DefaultSQLiteMigratorOptions);\n","import type { DatabaseDriverType } from '../../..';\n\nexport * from './connections';\nexport * from './errors';\nexport * from './execute';\nexport * from './pool';\nexport * from './schema';\nexport * from './sql';\nexport * from './transactions';\n\nexport type SQLiteDatabaseName = 'SQLite';\nexport const SQLiteDatabaseName = 'SQLite';\n\nexport type SQLiteDriverType<DriverName extends string = string> =\n DatabaseDriverType<SQLiteDatabaseName, DriverName>;\n\nexport type SQLiteDatabaseType = 'SQLite';\n"],"mappings":"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"}
@@ -113,18 +113,6 @@ type SQLiteClientOptions = {
113
113
  */
114
114
  declare const mapSqliteError: (error: unknown) => DumboError;
115
115
  //#endregion
116
- //#region src/storage/sqlite/core/pool/dualPool.d.ts
117
- type SQLiteDualPoolOptions<SQLiteConnectionType extends AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions> = {
118
- driverType: SQLiteConnectionType['driverType'];
119
- dual?: true;
120
- singleton?: false;
121
- pooled?: true;
122
- connection?: never;
123
- readerPoolSize?: number;
124
- sqliteConnectionFactory: SQLiteConnectionFactory<SQLiteConnectionType, ConnectionOptions>;
125
- connectionOptions?: ConnectionOptions;
126
- };
127
- //#endregion
128
116
  //#region src/storage/sqlite/core/pool/pool.d.ts
129
117
  type SQLiteFileNameOrConnectionString = {
130
118
  fileName: string | SQLiteConnectionString;
@@ -167,7 +155,7 @@ type SQLiteAlwaysNewConnectionPool<SQLiteConnectionType extends AnySQLiteConnect
167
155
  declare const sqliteAlwaysNewConnectionPool: <SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions & Record<string, unknown> = SQLiteConnectionOptions & Record<string, unknown>>(options: {
168
156
  driverType: SQLiteConnectionType["driverType"];
169
157
  } & SQLiteAlwaysNewPoolOptions<SQLiteConnectionType, ConnectionOptions>) => SQLiteAlwaysNewConnectionPool<SQLiteConnectionType>;
170
- type SQLitePoolOptions<SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions> = (SQLiteAlwaysNewPoolOptions<SQLiteConnectionType, ConnectionOptions> | SQLiteSingletonConnectionPoolOptions<SQLiteConnectionType, ConnectionOptions> | SQLiteAmbientConnectionPoolOptions<SQLiteConnectionType> | SQLiteDualPoolOptions<SQLiteConnectionType, ConnectionOptions>) & {
158
+ type SQLitePoolOptions<SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions> = (SQLiteAlwaysNewPoolOptions<SQLiteConnectionType, ConnectionOptions> | SQLiteSingletonConnectionPoolOptions<SQLiteConnectionType, ConnectionOptions> | SQLiteAmbientConnectionPoolOptions<SQLiteConnectionType>) & {
171
159
  driverType: SQLiteConnectionType['driverType'];
172
160
  serializer?: JSONSerializer;
173
161
  };
@@ -195,4 +183,4 @@ type SQLiteDriverType<DriverName extends string = string> = DatabaseDriverType<S
195
183
  type SQLiteDatabaseType = 'SQLite';
196
184
  //#endregion
197
185
  export { SQLitePragmaOptions as $, SQLiteClientConnectionDefinitionOptions as A, SQLiteParameters as B, AnySQLiteConnection as C, InMemorySQLiteDatabase as D, DEFAULT_SQLITE_PRAGMA_OPTIONS as E, SQLiteConnection as F, TransactionNestingCounter as G, SQLitePoolClientConnection as H, SQLiteConnectionDefinitionOptions as I, sqliteClientConnection as J, isSQLiteError as K, SQLiteConnectionFactory as L, SQLiteClientOptions as M, SQLiteClientOrPoolClient as N, SQLiteClient as O, SQLiteCommandOptions as P, SQLiteConnectionString as Q, SQLiteConnectionOptions as R, AnySQLiteClientConnection as S, BatchSQLiteCommandOptions as T, SQLitePoolConnectionDefinitionOptions as U, SQLitePoolClient as V, SqliteAmbientClientConnectionOptions as W, sqlitePoolClientConnection as X, sqliteConnection as Y, transactionNestingCounter as Z, sqliteAmbientConnectionPool as _, defaultSQLiteDatabase as a, SQLiteErrorMapper as at, toSqlitePoolOptions as b, SQLiteAlwaysNewConnectionPool as c, sqliteSQLExecutor as ct, SQLitePool as d, parsePragmasFromConnectionString as et, SQLitePoolFactoryOptions as f, sqliteAlwaysNewConnectionPool as g, isInMemoryDatabase as h, sqliteFormatter as i, sqliteTransaction as it, SQLiteClientFactory as j, SQLiteClientConnection as k, SQLiteAmbientConnectionPool as l, SQLiteSingletonConnectionPool as m, SQLiteDatabaseType as n, SQLiteTransactionMode as nt, tableExists as o, SQLiteSQLExecutor as ot, SQLitePoolOptions as p, sqliteAmbientClientConnection as q, SQLiteDriverType as r, SQLiteTransactionOptions as rt, DefaultSQLiteMigratorOptions as s, sqliteExecute as st, SQLiteDatabaseName as t, SQLiteTransaction as tt, SQLiteFileNameOrConnectionString as u, sqlitePool as v, AnySQLitePoolClientConnection as w, mapSqliteError as x, sqliteSingletonConnectionPool as y, SQLiteError as z };
198
- //# sourceMappingURL=index-D1jryNqo.d.ts.map
186
+ //# sourceMappingURL=index-BgFHGsuP.d.ts.map
@@ -113,18 +113,6 @@ type SQLiteClientOptions = {
113
113
  */
114
114
  declare const mapSqliteError: (error: unknown) => DumboError;
115
115
  //#endregion
116
- //#region src/storage/sqlite/core/pool/dualPool.d.ts
117
- type SQLiteDualPoolOptions<SQLiteConnectionType extends AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions> = {
118
- driverType: SQLiteConnectionType['driverType'];
119
- dual?: true;
120
- singleton?: false;
121
- pooled?: true;
122
- connection?: never;
123
- readerPoolSize?: number;
124
- sqliteConnectionFactory: SQLiteConnectionFactory<SQLiteConnectionType, ConnectionOptions>;
125
- connectionOptions?: ConnectionOptions;
126
- };
127
- //#endregion
128
116
  //#region src/storage/sqlite/core/pool/pool.d.ts
129
117
  type SQLiteFileNameOrConnectionString = {
130
118
  fileName: string | SQLiteConnectionString;
@@ -167,7 +155,7 @@ type SQLiteAlwaysNewConnectionPool<SQLiteConnectionType extends AnySQLiteConnect
167
155
  declare const sqliteAlwaysNewConnectionPool: <SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions & Record<string, unknown> = SQLiteConnectionOptions & Record<string, unknown>>(options: {
168
156
  driverType: SQLiteConnectionType["driverType"];
169
157
  } & SQLiteAlwaysNewPoolOptions<SQLiteConnectionType, ConnectionOptions>) => SQLiteAlwaysNewConnectionPool<SQLiteConnectionType>;
170
- type SQLitePoolOptions<SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions> = (SQLiteAlwaysNewPoolOptions<SQLiteConnectionType, ConnectionOptions> | SQLiteSingletonConnectionPoolOptions<SQLiteConnectionType, ConnectionOptions> | SQLiteAmbientConnectionPoolOptions<SQLiteConnectionType> | SQLiteDualPoolOptions<SQLiteConnectionType, ConnectionOptions>) & {
158
+ type SQLitePoolOptions<SQLiteConnectionType extends AnySQLiteConnection = AnySQLiteConnection, ConnectionOptions extends SQLiteConnectionOptions = SQLiteConnectionOptions> = (SQLiteAlwaysNewPoolOptions<SQLiteConnectionType, ConnectionOptions> | SQLiteSingletonConnectionPoolOptions<SQLiteConnectionType, ConnectionOptions> | SQLiteAmbientConnectionPoolOptions<SQLiteConnectionType>) & {
171
159
  driverType: SQLiteConnectionType['driverType'];
172
160
  serializer?: JSONSerializer;
173
161
  };
@@ -195,4 +183,4 @@ type SQLiteDriverType<DriverName extends string = string> = DatabaseDriverType<S
195
183
  type SQLiteDatabaseType = 'SQLite';
196
184
  //#endregion
197
185
  export { SQLitePragmaOptions as $, SQLiteClientConnectionDefinitionOptions as A, SQLiteParameters as B, AnySQLiteConnection as C, InMemorySQLiteDatabase as D, DEFAULT_SQLITE_PRAGMA_OPTIONS as E, SQLiteConnection as F, TransactionNestingCounter as G, SQLitePoolClientConnection as H, SQLiteConnectionDefinitionOptions as I, sqliteClientConnection as J, isSQLiteError as K, SQLiteConnectionFactory as L, SQLiteClientOptions as M, SQLiteClientOrPoolClient as N, SQLiteClient as O, SQLiteCommandOptions as P, SQLiteConnectionString as Q, SQLiteConnectionOptions as R, AnySQLiteClientConnection as S, BatchSQLiteCommandOptions as T, SQLitePoolConnectionDefinitionOptions as U, SQLitePoolClient as V, SqliteAmbientClientConnectionOptions as W, sqlitePoolClientConnection as X, sqliteConnection as Y, transactionNestingCounter as Z, sqliteAmbientConnectionPool as _, defaultSQLiteDatabase as a, SQLiteErrorMapper as at, toSqlitePoolOptions as b, SQLiteAlwaysNewConnectionPool as c, sqliteSQLExecutor as ct, SQLitePool as d, parsePragmasFromConnectionString as et, SQLitePoolFactoryOptions as f, sqliteAlwaysNewConnectionPool as g, isInMemoryDatabase as h, sqliteFormatter as i, sqliteTransaction as it, SQLiteClientFactory as j, SQLiteClientConnection as k, SQLiteAmbientConnectionPool as l, SQLiteSingletonConnectionPool as m, SQLiteDatabaseType as n, SQLiteTransactionMode as nt, tableExists as o, SQLiteSQLExecutor as ot, SQLitePoolOptions as p, sqliteAmbientClientConnection as q, SQLiteDriverType as r, SQLiteTransactionOptions as rt, DefaultSQLiteMigratorOptions as s, sqliteExecute as st, SQLiteDatabaseName as t, SQLiteTransaction as tt, SQLiteFileNameOrConnectionString as u, sqlitePool as v, AnySQLitePoolClientConnection as w, mapSqliteError as x, sqliteSingletonConnectionPool as y, SQLiteError as z };
198
- //# sourceMappingURL=index-DqVvUav9.d.cts.map
186
+ //# sourceMappingURL=index-N2ly5shv.d.cts.map
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_core = require('./core-BgYtAxCm.cjs');
3
- require('./postgreSQLMetadata-LqX-Z_wo.cjs');
4
- require('./sqliteMetadata-D_2pKeCC.cjs');
2
+ const require_core = require('./core-D-smW7cm.cjs');
3
+ require('./postgreSQLMetadata-WGXySO7a.cjs');
4
+ require('./sqliteMetadata-PJTRPIZ1.cjs');
5
5
 
6
6
  //#region src/core/schema/components/relationships/relationshipTypes.ts
7
7
  const relationship = (columns, references, type) => {
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- import { $ as migrationTableSchemaComponent, $t as JSONReplacer, A as ConcurrencyError, An as DatabaseURN, At as MapLiteralProcessor, B as LockNotAvailableError, Bn as IndexURNType, Bt as SQLColumnTypeTokensFactory, C as mapColumnToJSON, Cn as getDatabaseDriverName, Ct as isTokenizedSQL, D as sqlExecutorInNewConnection, Dn as canHandleDriverWithConnectionString, Dt as ExpandArrayProcessor, E as sqlExecutorInAmbientConnection, En as DumboDatabaseDriverRegistry, Et as SQLProcessorsRegistry, F as ExclusionViolationError, Fn as databaseSchemaSchemaComponent, Ft as ColumnTypeToken, G as TransientDatabaseError, Gn as filterSchemaComponentsOfType, Gt as SQLArray, H as QueryCanceledError, Hn as ColumnURN, Ht as TimestampToken, I as ForeignKeyViolationError, In as TableURN, It as IntegerToken, J as combineMigrations, Jn as mapSchemaComponentsOfType, Jt as SQLLiteral, K as UniqueConstraintError, Kn as findSchemaComponentsOfType, Kt as SQLIdentifier, L as InsufficientResourcesError, Ln as TableURNType, Lt as JSONBToken, M as DataError, Mn as databaseSchemaComponent, Mt as AutoIncrementSQLColumnToken, N as DeadlockError, Nn as DatabaseSchemaURN, Nt as BigIntegerToken, O as AdminShutdownError, On as dumboDatabaseDriverRegistry, Ot as ExpandSQLInProcessor, P as DumboError, Pn as DatabaseSchemaURNType, Pt as BigSerialToken, Q as SchemaComponentMigrator, Qt as JSONCodec, R as IntegrityConstraintViolationError, Rn as tableSchemaComponent, Rt as SQLColumnToken, S as mapColumnToDate, Sn as fromDatabaseDriverType, St as TokenizedSQL, T as sqlExecutor, Tn as toDatabaseDriverType, Tt as mapDefaultSQLColumnProcessors, U as SerializationError, Un as ColumnURNType, Ut as TimestamptzToken, V as NotNullViolationError, Vn as indexSchemaComponent, Vt as SerialToken, W as SystemError, Wn as columnSchemaComponent, Wt as VarcharToken, X as registerDefaultMigratorOptions, Xt as SQLToken, Y as getDefaultMigratorOptionsFromRegistry, Yn as schemaComponent, Yt as SQLPlain, Z as runSQLMigrations, Zt as ParametrizedSQLBuilder, _ as BatchCommandNoChangesError, _n as dumboDatabaseMetadataRegistry, _t as mapSQLParamValue, a as createSingletonClientConnectionPool, an as composeJSONRevivers, at as color, b as executeInNewDbClient, bn as getDefaultDatabaseAsync, bt as SQL, c as createAmbientConnection, cn as exists, ct as formatSQL, d as createTransientConnection, dn as single, dt as ANSISQLIdentifierQuote, en as JSONReplacers, et as sqlMigration, f as executeInTransaction, fn as singleOrNull, ft as ANSISQLParamPlaceholder, g as transactionFactoryWithNewConnection, gn as DumboDatabaseMetadataRegistry, gt as mapSQLIdentifier, h as transactionFactoryWithDbClient, hn as dumboSchema, ht as mapANSISQLParamPlaceholder, i as createConnectionPool, in as composeJSONReplacers, it as prettyJson, j as ConnectionError, jn as DatabaseURNType, jt as SQLProcessor, k as CheckViolationError, kn as schemaComponentURN, kt as FormatIdentifierProcessor, l as createConnection, ln as first, lt as getFormatter, m as transactionFactoryWithAsyncAmbientConnection, mn as defaultDatabaseLockOptions, mt as SQLValueMapper, n as createAmbientConnectionPool, nn as JSONRevivers, nt as LogStyle, o as createSingletonConnectionPool, on as jsonSerializer, ot as SQLFormatter, p as transactionFactoryWithAmbientConnection, pn as NoDatabaseLock, pt as DefaultMapSQLParamValueOptions, q as MIGRATIONS_LOCK_ID, qn as isSchemaComponentOfType, qt as SQLIn, r as createBoundedConnectionPool, rn as JSONSerializer, rt as tracer, sn as count, st as describeSQL, t as createAlwaysNewConnectionPool, tn as JSONReviver, tt as LogLevel, u as createSingletonConnection, un as firstOrNull, ut as registerFormatter, v as executeInAmbientConnection, vn as getDatabaseMetadata, vt as ansiSqlReservedMap, w as mapSQLQueryResult, wn as getDatabaseType, wt as defaultProcessorsRegistry, x as mapColumnToBigint, xn as resolveDatabaseMetadata, xt as isSQL, y as executeInNewConnection, yn as getDefaultDatabase, yt as RawSQL, z as InvalidOperationError, zn as IndexURN, zt as SQLColumnTypeTokens } from "./core-DDo4m0Z_.js";
2
- import "./postgreSQLMetadata-zMq8yJo_.js";
3
- import "./sqliteMetadata-BoQ7Sc9I.js";
1
+ import { $ as SchemaComponentMigrator, $t as JSONCodec, A as CheckViolationError, An as schemaComponentURN, At as FormatIdentifierProcessor, B as InvalidOperationError, Bn as IndexURN, Bt as SQLColumnTypeTokens, C as mapColumnToDate, Cn as fromDatabaseDriverType, Ct as TokenizedSQL, D as sqlExecutorInAmbientConnection, Dn as DumboDatabaseDriverRegistry, Dt as SQLProcessorsRegistry, E as sqlExecutor, En as toDatabaseDriverType, Et as mapDefaultSQLColumnProcessors, F as DumboError, Fn as DatabaseSchemaURNType, Ft as BigSerialToken, G as SystemError, Gn as columnSchemaComponent, Gt as VarcharToken, H as NotNullViolationError, Hn as indexSchemaComponent, Ht as SerialToken, I as ExclusionViolationError, In as databaseSchemaSchemaComponent, It as ColumnTypeToken, J as MIGRATIONS_LOCK_ID, Jn as isSchemaComponentOfType, Jt as SQLIn, K as TransientDatabaseError, Kn as filterSchemaComponentsOfType, Kt as SQLArray, L as ForeignKeyViolationError, Ln as TableURN, Lt as IntegerToken, M as ConnectionError, Mn as DatabaseURNType, Mt as SQLProcessor, N as DataError, Nn as databaseSchemaComponent, Nt as AutoIncrementSQLColumnToken, O as sqlExecutorInNewConnection, On as canHandleDriverWithConnectionString, Ot as ExpandArrayProcessor, P as DeadlockError, Pn as DatabaseSchemaURN, Pt as BigIntegerToken, Q as runSQLMigrations, Qt as ParametrizedSQLBuilder, R as InsufficientResourcesError, Rn as TableURNType, Rt as JSONBToken, S as mapColumnToBigint, Sn as resolveDatabaseMetadata, St as isSQL, T as mapSQLQueryResult, Tn as getDatabaseType, Tt as defaultProcessorsRegistry, U as QueryCanceledError, Un as ColumnURN, Ut as TimestampToken, V as LockNotAvailableError, Vn as IndexURNType, Vt as SQLColumnTypeTokensFactory, W as SerializationError, Wn as ColumnURNType, Wt as TimestamptzToken, X as getDefaultMigratorOptionsFromRegistry, Xn as schemaComponent, Xt as SQLPlain, Y as combineMigrations, Yn as mapSchemaComponentsOfType, Yt as SQLLiteral, Z as registerDefaultMigratorOptions, Zt as SQLToken, _ as transactionFactoryWithNewConnection, _n as DumboDatabaseMetadataRegistry, _t as mapSQLIdentifier, a as createSingletonClientConnectionPool, an as composeJSONReplacers, at as prettyJson, b as executeInNewConnection, bn as getDefaultDatabase, bt as RawSQL, cn as count, ct as describeSQL, d as createSingletonConnection, dn as firstOrNull, dt as registerFormatter, en as JSONReplacer, et as migrationTableSchemaComponent, f as createTransientConnection, fn as single, ft as ANSISQLIdentifierQuote, g as transactionFactoryWithDbClient, gn as dumboSchema, gt as mapANSISQLParamPlaceholder, h as transactionFactoryWithAsyncAmbientConnection, hn as defaultDatabaseLockOptions, ht as SQLValueMapper, i as createConnectionPool, in as JSONSerializer, it as tracer, j as ConcurrencyError, jn as DatabaseURN, jt as MapLiteralProcessor, k as AdminShutdownError, kn as dumboDatabaseDriverRegistry, kt as ExpandSQLInProcessor, l as createAmbientConnection, ln as exists, lt as formatSQL, m as transactionFactoryWithAmbientConnection, mn as NoDatabaseLock, mt as DefaultMapSQLParamValueOptions, n as createAmbientConnectionPool, nn as JSONReviver, nt as LogLevel, o as createSingletonConnectionPool, on as composeJSONRevivers, ot as color, p as executeInTransaction, pn as singleOrNull, pt as ANSISQLParamPlaceholder, q as UniqueConstraintError, qn as findSchemaComponentsOfType, qt as SQLIdentifier, r as createBoundedConnectionPool, rn as JSONRevivers, rt as LogStyle, sn as jsonSerializer, st as SQLFormatter, t as createAlwaysNewConnectionPool, tn as JSONReplacers, tt as sqlMigration, u as createConnection, un as first, ut as getFormatter, v as BatchCommandNoChangesError, vn as dumboDatabaseMetadataRegistry, vt as mapSQLParamValue, w as mapColumnToJSON, wn as getDatabaseDriverName, wt as isTokenizedSQL, x as executeInNewDbClient, xn as getDefaultDatabaseAsync, xt as SQL, y as executeInAmbientConnection, yn as getDatabaseMetadata, yt as ansiSqlReservedMap, z as IntegrityConstraintViolationError, zn as tableSchemaComponent, zt as SQLColumnToken } from "./core-BG__WVn6.js";
2
+ import "./postgreSQLMetadata-BTz6vdwE.js";
3
+ import "./sqliteMetadata-7qBjsMBN.js";
4
4
 
5
5
  //#region src/core/schema/components/relationships/relationshipTypes.ts
6
6
  const relationship = (columns, references, type) => {
package/dist/pg.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_core = require('./core-BgYtAxCm.cjs');
3
- const require_postgreSQLMetadata = require('./postgreSQLMetadata-LqX-Z_wo.cjs');
4
- const require_core$1 = require('./core-Go_IA78L.cjs');
2
+ const require_core = require('./core-D-smW7cm.cjs');
3
+ const require_postgreSQLMetadata = require('./postgreSQLMetadata-WGXySO7a.cjs');
4
+ const require_core$1 = require('./core-DXCRR5A9.cjs');
5
5
  let pg = require("pg");
6
6
  pg = require_core.__toESM(pg, 1);
7
7
 
package/dist/pg.js CHANGED
@@ -1,6 +1,6 @@
1
- import { Dn as canHandleDriverWithConnectionString, On as dumboDatabaseDriverRegistry, T as sqlExecutor, _ as BatchCommandNoChangesError, i as createConnectionPool, l as createConnection, n as createAmbientConnectionPool, rn as JSONSerializer, rt as tracer, w as mapSQLQueryResult } from "./core-DDo4m0Z_.js";
2
- import { a as tableExists, c as defaultPostgreSQLConnectionString, i as functionExistsSQL, l as parseDatabaseName, n as defaultPostgreSqlDatabase, o as tableExistsSQL, r as functionExists, s as PostgreSQLConnectionString, t as postgreSQLMetadata } from "./postgreSQLMetadata-zMq8yJo_.js";
3
- import { a as PostgreSQLExpandSQLInProcessor, c as acquireAdvisoryLock, d as tryAcquireAdvisoryLock, f as mapPostgresError, i as PostgreSQLArrayProcessor, l as advisoryLock, n as pgFormatter, o as DefaultPostgreSQLMigratorOptions, r as postgreSQLColumnProcessors, s as AdvisoryLock, t as PostgreSQLDatabaseName, u as releaseAdvisoryLock } from "./core-Bf2ujUFy.js";
1
+ import { E as sqlExecutor, On as canHandleDriverWithConnectionString, T as mapSQLQueryResult, i as createConnectionPool, in as JSONSerializer, it as tracer, kn as dumboDatabaseDriverRegistry, n as createAmbientConnectionPool, u as createConnection, v as BatchCommandNoChangesError } from "./core-BG__WVn6.js";
2
+ import { a as tableExists, c as defaultPostgreSQLConnectionString, i as functionExistsSQL, l as parseDatabaseName, n as defaultPostgreSqlDatabase, o as tableExistsSQL, r as functionExists, s as PostgreSQLConnectionString, t as postgreSQLMetadata } from "./postgreSQLMetadata-BTz6vdwE.js";
3
+ import { a as PostgreSQLExpandSQLInProcessor, c as acquireAdvisoryLock, d as tryAcquireAdvisoryLock, f as mapPostgresError, i as PostgreSQLArrayProcessor, l as advisoryLock, n as pgFormatter, o as DefaultPostgreSQLMigratorOptions, r as postgreSQLColumnProcessors, s as AdvisoryLock, t as PostgreSQLDatabaseName, u as releaseAdvisoryLock } from "./core-BchvTX3G.js";
4
4
  import pg from "pg";
5
5
 
6
6
  //#region src/storage/postgresql/pg/execute/execute.ts
@@ -1,4 +1,4 @@
1
- import { bt as SQL, cn as exists } from "./core-DDo4m0Z_.js";
1
+ import { ln as exists, xt as SQL } from "./core-BG__WVn6.js";
2
2
 
3
3
  //#region src/storage/postgresql/core/connections/connectionString.ts
4
4
  const defaultPostgreSQLConnectionString = "postgresql://postgres@localhost:5432/postgres";
@@ -62,4 +62,4 @@ dumboDatabaseMetadataRegistry.register("PostgreSQL", postgreSQLMetadata);
62
62
 
63
63
  //#endregion
64
64
  export { tableExists as a, defaultPostgreSQLConnectionString as c, functionExistsSQL as i, parseDatabaseName as l, defaultPostgreSqlDatabase as n, tableExistsSQL as o, functionExists as r, PostgreSQLConnectionString as s, postgreSQLMetadata as t };
65
- //# sourceMappingURL=postgreSQLMetadata-zMq8yJo_.js.map
65
+ //# sourceMappingURL=postgreSQLMetadata-BTz6vdwE.js.map