@event-driven-io/dumbo 0.13.0-beta.36 → 0.13.0-beta.38
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cloudflare.cjs +12 -16
- package/dist/cloudflare.cjs.map +1 -1
- package/dist/cloudflare.d.cts +1 -1
- package/dist/cloudflare.d.ts +1 -1
- package/dist/cloudflare.js +12 -16
- package/dist/cloudflare.js.map +1 -1
- package/dist/{core-DDo4m0Z_.js → core-BG__WVn6.js} +2 -2
- package/dist/core-BG__WVn6.js.map +1 -0
- package/dist/{core-Bf2ujUFy.js → core-BchvTX3G.js} +3 -3
- package/dist/core-BchvTX3G.js.map +1 -0
- package/dist/{core-DmbB4qMn.cjs → core-CWZb0zOY.cjs} +23 -91
- package/dist/core-CWZb0zOY.cjs.map +1 -0
- package/dist/{core-BgYtAxCm.cjs → core-D-smW7cm.cjs} +7 -1
- package/dist/core-D-smW7cm.cjs.map +1 -0
- package/dist/{core-Go_IA78L.cjs → core-DXCRR5A9.cjs} +3 -3
- package/dist/core-DXCRR5A9.cjs.map +1 -0
- package/dist/{core-BeyC5tHn.js → core-DlV8ua1P.js} +23 -91
- package/dist/core-DlV8ua1P.js.map +1 -0
- package/dist/{index-D1jryNqo.d.ts → index-BgFHGsuP.d.ts} +2 -14
- package/dist/{index-DqVvUav9.d.cts → index-N2ly5shv.d.cts} +2 -14
- package/dist/index.cjs +3 -3
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/pg.cjs +3 -3
- package/dist/pg.cjs.map +1 -1
- package/dist/pg.js +3 -3
- package/dist/pg.js.map +1 -1
- package/dist/{postgreSQLMetadata-zMq8yJo_.js → postgreSQLMetadata-BTz6vdwE.js} +2 -2
- package/dist/{postgreSQLMetadata-zMq8yJo_.js.map → postgreSQLMetadata-BTz6vdwE.js.map} +1 -1
- package/dist/{postgreSQLMetadata-LqX-Z_wo.cjs → postgreSQLMetadata-WGXySO7a.cjs} +2 -2
- package/dist/{postgreSQLMetadata-LqX-Z_wo.cjs.map → postgreSQLMetadata-WGXySO7a.cjs.map} +1 -1
- package/dist/postgresql.cjs +2 -2
- package/dist/postgresql.js +2 -2
- package/dist/sqlite.cjs +2 -2
- package/dist/sqlite.d.cts +1 -1
- package/dist/sqlite.d.ts +1 -1
- package/dist/sqlite.js +2 -2
- package/dist/sqlite3.cjs +133 -13
- package/dist/sqlite3.cjs.map +1 -1
- package/dist/sqlite3.d.cts +7 -7
- package/dist/sqlite3.d.ts +7 -7
- package/dist/sqlite3.js +133 -13
- package/dist/sqlite3.js.map +1 -1
- package/dist/{sqliteMetadata-BoQ7Sc9I.js → sqliteMetadata-7qBjsMBN.js} +2 -2
- package/dist/{sqliteMetadata-BoQ7Sc9I.js.map → sqliteMetadata-7qBjsMBN.js.map} +1 -1
- package/dist/{sqliteMetadata-D_2pKeCC.cjs → sqliteMetadata-PJTRPIZ1.cjs} +2 -2
- package/dist/{sqliteMetadata-D_2pKeCC.cjs.map → sqliteMetadata-PJTRPIZ1.cjs.map} +1 -1
- package/package.json +1 -1
- package/dist/core-BeyC5tHn.js.map +0 -1
- package/dist/core-Bf2ujUFy.js.map +0 -1
- package/dist/core-BgYtAxCm.cjs.map +0 -1
- package/dist/core-DDo4m0Z_.js.map +0 -1
- package/dist/core-DmbB4qMn.cjs.map +0 -1
- package/dist/core-Go_IA78L.cjs.map +0 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":[],"sources":["../src/core/schema/components/relationships/relationshipTypes.ts","../src/core/query/mappers.ts","../src/storage/all/connections/connectionString.ts","../src/storage/all/index.ts"],"sourcesContent":["import type {\n AnyDatabaseSchemaSchemaComponent,\n AnyTableSchemaComponent,\n DatabaseSchemaComponent,\n DatabaseSchemas,\n DatabaseSchemaSchemaComponent,\n DatabaseSchemaTables,\n TableColumnNames,\n TableColumns,\n TableSchemaComponent,\n Writable,\n} from '..';\nimport type { ColumnTypeToken } from '../../../sql/tokens/columnTokens';\nimport type { NotEmptyTuple } from '../../../typing';\n\nexport type ExtractSchemaNames<DB> =\n DB extends DatabaseSchemaComponent<infer Schemas extends DatabaseSchemas>\n ? keyof Schemas\n : never;\n\nexport type ExtractTableNames<Schema extends AnyDatabaseSchemaSchemaComponent> =\n Schema extends DatabaseSchemaSchemaComponent<\n infer Tables extends DatabaseSchemaTables\n >\n ? keyof Tables\n : never;\n\nexport type ExtractColumnNames<Table extends AnyTableSchemaComponent> =\n Table extends TableSchemaComponent<infer Columns extends TableColumns>\n ? TableColumnNames<TableSchemaComponent<Columns>>\n : never;\n\nexport type ExtractColumnTypeName<T> =\n T extends ColumnTypeToken<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n infer TypeName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n >\n ? Uppercase<TypeName>\n : never;\n\nexport type AllColumnTypes<Schemas extends DatabaseSchemas> = {\n [SchemaName in keyof Schemas]: Schemas[SchemaName] extends DatabaseSchemaSchemaComponent<\n infer Tables\n >\n ? Writable<{\n [TableName in keyof Tables]: Tables[TableName] extends TableSchemaComponent<\n infer Columns\n >\n ? Writable<{\n [ColumnName in keyof Columns]: {\n columnTypeName: ExtractColumnTypeName<\n Columns[ColumnName]['type']\n >;\n };\n }>\n : never;\n }>\n : never;\n};\n\nexport type AllColumnReferences<Schemas extends DatabaseSchemas> = {\n [SchemaName in keyof Schemas]: Schemas[SchemaName] extends DatabaseSchemaSchemaComponent<\n infer Tables\n >\n ? {\n [TableName in keyof Tables]: Tables[TableName] extends TableSchemaComponent<\n infer Columns\n >\n ? {\n [ColumnName in keyof Columns]: `${SchemaName &\n string}.${TableName & string}.${ColumnName & string}`;\n }[keyof Columns]\n : never;\n }[keyof Tables]\n : never;\n}[keyof Schemas];\n\nexport type AllColumnTypesInSchema<\n Schema extends AnyDatabaseSchemaSchemaComponent,\n> =\n Schema extends DatabaseSchemaSchemaComponent<infer Tables>\n ? {\n [TableName in keyof Tables]: Tables[TableName] extends TableSchemaComponent<\n infer Columns\n >\n ? {\n [ColumnName in keyof Columns]: {\n columnTypeName: ExtractColumnTypeName<\n Columns[ColumnName]['type']\n >;\n };\n }\n : never;\n }\n : never;\n\nexport type AllColumnReferencesInSchema<\n Schema extends AnyDatabaseSchemaSchemaComponent,\n SchemaName extends string,\n> =\n Schema extends DatabaseSchemaSchemaComponent<infer Tables>\n ? {\n [TableName in keyof Tables]: Tables[TableName] extends TableSchemaComponent<\n infer Columns\n >\n ? {\n [ColumnName in keyof Columns]: `${SchemaName & string}.${TableName &\n string}.${ColumnName & string}`;\n }[keyof Columns]\n : never;\n }[keyof Tables]\n : never;\n\nexport type NormalizeReference<\n Path extends string,\n CurrentSchema extends string,\n CurrentTable extends string,\n> = Path extends `${infer Schema}.${infer Table}.${infer Column}`\n ? `${Schema}.${Table}.${Column}`\n : Path extends `${infer Table}.${infer Column}`\n ? `${CurrentSchema}.${Table}.${Column}`\n : Path extends string\n ? `${CurrentSchema}.${CurrentTable}.${Path}`\n : never;\n\nexport type NormalizeColumnPath<\n References extends readonly string[],\n SchemaName extends string,\n TableName extends string,\n> = References extends readonly [infer First, ...infer Rest]\n ? First extends string\n ? Rest extends readonly string[]\n ? readonly [\n NormalizeReference<First, SchemaName, TableName>,\n ...NormalizeColumnPath<Rest, SchemaName, TableName>,\n ]\n : readonly []\n : readonly []\n : readonly [];\n\nexport type ColumnName<ColName extends string = string> = `${ColName}`;\n\nexport type TableColumnName<\n TableName extends string = string,\n ColName extends string = string,\n> = `${TableName}.${ColName}`;\n\nexport type SchemaColumnName<\n SchemaName extends string = string,\n TableName extends string = string,\n ColumnName extends string = string,\n> = `${SchemaName}.${TableName}.${ColumnName}`;\n\nexport type ColumnPath<\n SchemaName extends string = string,\n TableName extends string = string,\n ColName extends string = string,\n> =\n | SchemaColumnName<SchemaName, TableName, ColName>\n | TableColumnName<TableName, ColName>\n | ColumnName<ColName>;\n\nexport type ColumnReference<\n SchemaName extends string = string,\n TableName extends string = string,\n ColumnName extends string = string,\n> = { schemaName: SchemaName; tableName: TableName; columnName: ColumnName };\n\nexport type ColumnPathToReference<\n Reference extends ColumnPath = ColumnPath,\n CurrentSchema extends string = string,\n CurrentTable extends string = string,\n> =\n NormalizeReference<\n Reference,\n CurrentSchema,\n CurrentTable\n > extends `${infer S}.${infer T}.${infer C}`\n ? { schemaName: S; tableName: T; columnName: C }\n : never;\n\nexport type ParseReferencePath<Path extends string> =\n Path extends `${infer Schema}.${infer Table}.${infer Column}`\n ? { schema: Schema; table: Table; column: Column }\n : never;\n\nexport type LookupColumnType<AllTypes, Path extends string> =\n ParseReferencePath<Path> extends {\n schema: infer S;\n table: infer T;\n column: infer C;\n }\n ? S extends keyof AllTypes\n ? T extends keyof AllTypes[S]\n ? C extends keyof AllTypes[S][T]\n ? AllTypes[S][T][C] extends { columnTypeName: infer TypeName }\n ? TypeName\n : never\n : never\n : never\n : never\n : never;\n\nexport type RelationshipType =\n | 'one-to-one'\n | 'one-to-many'\n | 'many-to-one'\n | 'many-to-many';\n\nexport type RelationshipDefinition<\n Columns extends string = string,\n Reference extends string = string,\n RelType extends RelationshipType = RelationshipType,\n> = {\n readonly columns: NotEmptyTuple<readonly Columns[]>;\n readonly references: NotEmptyTuple<readonly Reference[]>;\n readonly type: RelType;\n};\n\nexport type AnyTableRelationshipDefinition = RelationshipDefinition<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>;\n\nexport type AnyTableRelationshipDefinitionWithColumns<\n Columns extends string = string,\n> = RelationshipDefinition<\n Columns,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>;\n\nexport type TableRelationships<Columns extends string = string> = Record<\n string,\n AnyTableRelationshipDefinitionWithColumns<Columns>\n>;\n\nexport const relationship = <\n const Columns extends readonly string[],\n const References extends readonly string[],\n const RelType extends RelationshipType = RelationshipType,\n>(\n columns: Columns,\n references: References,\n type: RelType,\n) => {\n return {\n columns,\n references,\n type,\n } as const;\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyRelationshipDefinition = RelationshipDefinition<any, any, any>;\n","import type { QueryResult, QueryResultRow } from './query';\n\nexport const mapRows = async <\n Result extends QueryResultRow = QueryResultRow,\n Mapped = unknown,\n>(\n getResult: Promise<QueryResult<Result>>,\n map: (row: Result) => Mapped,\n): Promise<Mapped[]> => {\n const result = await getResult;\n\n return result.rows.map(map);\n};\n\nexport const toCamelCase = (snakeStr: string): string =>\n snakeStr.replace(/_([a-z])/g, (g) => g[1]?.toUpperCase() ?? '');\n\nexport const mapToCamelCase = <T extends Record<string, unknown>>(\n obj: Record<string, unknown>,\n): T => {\n const newObj: Record<string, unknown> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n newObj[toCamelCase(key)] = obj[key];\n }\n }\n return newObj as T;\n};\n","import type { DatabaseDriverTypeParts, DatabaseType } from '../../../core';\n\nexport type DatabaseConnectionString<\n DatabaseTypeName extends DatabaseType = DatabaseType,\n Format extends string = string,\n> = Format & {\n _databaseType: DatabaseTypeName;\n};\n\nexport const parseConnectionString = (\n connectionString: DatabaseConnectionString | string,\n): DatabaseDriverTypeParts => {\n if (\n connectionString.startsWith('postgresql://') ||\n connectionString.startsWith('postgres://')\n ) {\n return {\n databaseType: 'PostgreSQL',\n driverName: 'pg',\n };\n }\n\n if (\n connectionString.startsWith('file:') ||\n connectionString === ':memory:' ||\n connectionString.startsWith('/') ||\n connectionString.startsWith('./')\n ) {\n return {\n databaseType: 'SQLite',\n driverName: 'sqlite3',\n };\n }\n\n if (connectionString.startsWith('d1:')) {\n return {\n databaseType: 'SQLite',\n driverName: 'd1',\n };\n }\n\n throw new Error(\n `Unsupported database connection string: ${connectionString}`,\n );\n};\n","import {\n dumboDatabaseDriverRegistry,\n type AnyDumboDatabaseDriver,\n type DumboConnectionOptions,\n type ExtractDumboDatabaseDriverOptions,\n type ExtractDumboTypeFromDriver,\n type JSONSerializationOptions,\n} from '../../core';\n\nexport * from './connections';\n\nexport function dumbo<Driver extends AnyDumboDatabaseDriver>(\n options: ExtractDumboDatabaseDriverOptions<Driver> & {\n driver: Driver;\n } & JSONSerializationOptions,\n): ExtractDumboTypeFromDriver<Driver>;\n\nexport function dumbo<\n DatabaseDriver extends AnyDumboDatabaseDriver = AnyDumboDatabaseDriver,\n ConnectionOptions extends DumboConnectionOptions<DatabaseDriver> =\n DumboConnectionOptions<DatabaseDriver>,\n>(\n options: ConnectionOptions & { driver?: never },\n): ExtractDumboTypeFromDriver<DatabaseDriver>;\n\nexport function dumbo<\n DatabaseDriver extends AnyDumboDatabaseDriver = AnyDumboDatabaseDriver,\n>(\n options: DumboConnectionOptions<DatabaseDriver>,\n): ExtractDumboTypeFromDriver<DatabaseDriver> {\n const { driverType } = options;\n\n const driver =\n options.driver ??\n dumboDatabaseDriverRegistry.tryGet<DatabaseDriver>(options);\n\n if (driver === null) {\n throw new Error(`No plugin found for driver type: ${driverType}`);\n }\n\n return driver.createPool({\n ...options,\n driverType: driver.driverType,\n }) as ExtractDumboTypeFromDriver<DatabaseDriver>;\n}\n\nimport '../postgresql/core/schema/postgreSQLMetadata';\nimport '../sqlite/core/schema/sqliteMetadata';\n"],"mappings":";;;;;AAwPA,MAAa,gBAKX,SACA,YACA,SACG;AACH,QAAO;EACL;EACA;EACA;EACD;;;;;ACnQH,MAAa,UAAU,OAIrB,WACA,QACsB;AAGtB,SAFe,MAAM,WAEP,KAAK,IAAI,IAAI;;AAG7B,MAAa,eAAe,aAC1B,SAAS,QAAQ,cAAc,MAAM,EAAE,IAAI,aAAa,IAAI,GAAG;AAEjE,MAAa,kBACX,QACM;CACN,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,OAAO,IAChB,KAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI,CAChD,QAAO,YAAY,IAAI,IAAI,IAAI;AAGnC,QAAO;;;;;ACjBT,MAAa,yBACX,qBAC4B;AAC5B,KACE,iBAAiB,WAAW,gBAAgB,IAC5C,iBAAiB,WAAW,cAAc,CAE1C,QAAO;EACL,cAAc;EACd,YAAY;EACb;AAGH,KACE,iBAAiB,WAAW,QAAQ,IACpC,qBAAqB,cACrB,iBAAiB,WAAW,IAAI,IAChC,iBAAiB,WAAW,KAAK,CAEjC,QAAO;EACL,cAAc;EACd,YAAY;EACb;AAGH,KAAI,iBAAiB,WAAW,MAAM,CACpC,QAAO;EACL,cAAc;EACd,YAAY;EACb;AAGH,OAAM,IAAI,MACR,2CAA2C,mBAC5C;;;;;AClBH,SAAgB,MAGd,SAC4C;CAC5C,MAAM,EAAE,eAAe;CAEvB,MAAM,SACJ,QAAQ,UACR,4BAA4B,OAAuB,QAAQ;AAE7D,KAAI,WAAW,KACb,OAAM,IAAI,MAAM,oCAAoC,aAAa;AAGnE,QAAO,OAAO,WAAW;EACvB,GAAG;EACH,YAAY,OAAO;EACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../src/core/schema/components/relationships/relationshipTypes.ts","../src/core/query/mappers.ts","../src/storage/all/connections/connectionString.ts","../src/storage/all/index.ts"],"sourcesContent":["import type {\n AnyDatabaseSchemaSchemaComponent,\n AnyTableSchemaComponent,\n DatabaseSchemaComponent,\n DatabaseSchemas,\n DatabaseSchemaSchemaComponent,\n DatabaseSchemaTables,\n TableColumnNames,\n TableColumns,\n TableSchemaComponent,\n Writable,\n} from '..';\nimport type { ColumnTypeToken } from '../../../sql/tokens/columnTokens';\nimport type { NotEmptyTuple } from '../../../typing';\n\nexport type ExtractSchemaNames<DB> =\n DB extends DatabaseSchemaComponent<infer Schemas extends DatabaseSchemas>\n ? keyof Schemas\n : never;\n\nexport type ExtractTableNames<Schema extends AnyDatabaseSchemaSchemaComponent> =\n Schema extends DatabaseSchemaSchemaComponent<\n infer Tables extends DatabaseSchemaTables\n >\n ? keyof Tables\n : never;\n\nexport type ExtractColumnNames<Table extends AnyTableSchemaComponent> =\n Table extends TableSchemaComponent<infer Columns extends TableColumns>\n ? TableColumnNames<TableSchemaComponent<Columns>>\n : never;\n\nexport type ExtractColumnTypeName<T> =\n T extends ColumnTypeToken<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n infer TypeName,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n >\n ? Uppercase<TypeName>\n : never;\n\nexport type AllColumnTypes<Schemas extends DatabaseSchemas> = {\n [\n SchemaName in keyof Schemas\n ]: Schemas[SchemaName] extends DatabaseSchemaSchemaComponent<infer Tables>\n ? Writable<{\n [\n TableName in keyof Tables\n ]: Tables[TableName] extends TableSchemaComponent<infer Columns>\n ? Writable<{\n [ColumnName in keyof Columns]: {\n columnTypeName: ExtractColumnTypeName<\n Columns[ColumnName]['type']\n >;\n };\n }>\n : never;\n }>\n : never;\n};\n\nexport type AllColumnReferences<Schemas extends DatabaseSchemas> = {\n [\n SchemaName in keyof Schemas\n ]: Schemas[SchemaName] extends DatabaseSchemaSchemaComponent<infer Tables>\n ? {\n [\n TableName in keyof Tables\n ]: Tables[TableName] extends TableSchemaComponent<infer Columns>\n ? {\n [ColumnName in keyof Columns]: `${SchemaName &\n string}.${TableName & string}.${ColumnName & string}`;\n }[keyof Columns]\n : never;\n }[keyof Tables]\n : never;\n}[keyof Schemas];\n\nexport type AllColumnTypesInSchema<\n Schema extends AnyDatabaseSchemaSchemaComponent,\n> =\n Schema extends DatabaseSchemaSchemaComponent<infer Tables>\n ? {\n [\n TableName in keyof Tables\n ]: Tables[TableName] extends TableSchemaComponent<infer Columns>\n ? {\n [ColumnName in keyof Columns]: {\n columnTypeName: ExtractColumnTypeName<\n Columns[ColumnName]['type']\n >;\n };\n }\n : never;\n }\n : never;\n\nexport type AllColumnReferencesInSchema<\n Schema extends AnyDatabaseSchemaSchemaComponent,\n SchemaName extends string,\n> =\n Schema extends DatabaseSchemaSchemaComponent<infer Tables>\n ? {\n [\n TableName in keyof Tables\n ]: Tables[TableName] extends TableSchemaComponent<infer Columns>\n ? {\n [\n ColumnName in keyof Columns\n ]: `${SchemaName & string}.${TableName &\n string}.${ColumnName & string}`;\n }[keyof Columns]\n : never;\n }[keyof Tables]\n : never;\n\nexport type NormalizeReference<\n Path extends string,\n CurrentSchema extends string,\n CurrentTable extends string,\n> = Path extends `${infer Schema}.${infer Table}.${infer Column}`\n ? `${Schema}.${Table}.${Column}`\n : Path extends `${infer Table}.${infer Column}`\n ? `${CurrentSchema}.${Table}.${Column}`\n : Path extends string\n ? `${CurrentSchema}.${CurrentTable}.${Path}`\n : never;\n\nexport type NormalizeColumnPath<\n References extends readonly string[],\n SchemaName extends string,\n TableName extends string,\n> = References extends readonly [infer First, ...infer Rest]\n ? First extends string\n ? Rest extends readonly string[]\n ? readonly [\n NormalizeReference<First, SchemaName, TableName>,\n ...NormalizeColumnPath<Rest, SchemaName, TableName>,\n ]\n : readonly []\n : readonly []\n : readonly [];\n\nexport type ColumnName<ColName extends string = string> = `${ColName}`;\n\nexport type TableColumnName<\n TableName extends string = string,\n ColName extends string = string,\n> = `${TableName}.${ColName}`;\n\nexport type SchemaColumnName<\n SchemaName extends string = string,\n TableName extends string = string,\n ColumnName extends string = string,\n> = `${SchemaName}.${TableName}.${ColumnName}`;\n\nexport type ColumnPath<\n SchemaName extends string = string,\n TableName extends string = string,\n ColName extends string = string,\n> =\n | SchemaColumnName<SchemaName, TableName, ColName>\n | TableColumnName<TableName, ColName>\n | ColumnName<ColName>;\n\nexport type ColumnReference<\n SchemaName extends string = string,\n TableName extends string = string,\n ColumnName extends string = string,\n> = { schemaName: SchemaName; tableName: TableName; columnName: ColumnName };\n\nexport type ColumnPathToReference<\n Reference extends ColumnPath = ColumnPath,\n CurrentSchema extends string = string,\n CurrentTable extends string = string,\n> =\n NormalizeReference<\n Reference,\n CurrentSchema,\n CurrentTable\n > extends `${infer S}.${infer T}.${infer C}`\n ? { schemaName: S; tableName: T; columnName: C }\n : never;\n\nexport type ParseReferencePath<Path extends string> =\n Path extends `${infer Schema}.${infer Table}.${infer Column}`\n ? { schema: Schema; table: Table; column: Column }\n : never;\n\nexport type LookupColumnType<AllTypes, Path extends string> =\n ParseReferencePath<Path> extends {\n schema: infer S;\n table: infer T;\n column: infer C;\n }\n ? S extends keyof AllTypes\n ? T extends keyof AllTypes[S]\n ? C extends keyof AllTypes[S][T]\n ? AllTypes[S][T][C] extends { columnTypeName: infer TypeName }\n ? TypeName\n : never\n : never\n : never\n : never\n : never;\n\nexport type RelationshipType =\n 'one-to-one' | 'one-to-many' | 'many-to-one' | 'many-to-many';\n\nexport type RelationshipDefinition<\n Columns extends string = string,\n Reference extends string = string,\n RelType extends RelationshipType = RelationshipType,\n> = {\n readonly columns: NotEmptyTuple<readonly Columns[]>;\n readonly references: NotEmptyTuple<readonly Reference[]>;\n readonly type: RelType;\n};\n\nexport type AnyTableRelationshipDefinition = RelationshipDefinition<\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>;\n\nexport type AnyTableRelationshipDefinitionWithColumns<\n Columns extends string = string,\n> = RelationshipDefinition<\n Columns,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n any\n>;\n\nexport type TableRelationships<Columns extends string = string> = Record<\n string,\n AnyTableRelationshipDefinitionWithColumns<Columns>\n>;\n\nexport const relationship = <\n const Columns extends readonly string[],\n const References extends readonly string[],\n const RelType extends RelationshipType = RelationshipType,\n>(\n columns: Columns,\n references: References,\n type: RelType,\n) => {\n return {\n columns,\n references,\n type,\n } as const;\n};\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type AnyRelationshipDefinition = RelationshipDefinition<any, any, any>;\n","import type { QueryResult, QueryResultRow } from './query';\n\nexport const mapRows = async <\n Result extends QueryResultRow = QueryResultRow,\n Mapped = unknown,\n>(\n getResult: Promise<QueryResult<Result>>,\n map: (row: Result) => Mapped,\n): Promise<Mapped[]> => {\n const result = await getResult;\n\n return result.rows.map(map);\n};\n\nexport const toCamelCase = (snakeStr: string): string =>\n snakeStr.replace(/_([a-z])/g, (g) => g[1]?.toUpperCase() ?? '');\n\nexport const mapToCamelCase = <T extends Record<string, unknown>>(\n obj: Record<string, unknown>,\n): T => {\n const newObj: Record<string, unknown> = {};\n for (const key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n newObj[toCamelCase(key)] = obj[key];\n }\n }\n return newObj as T;\n};\n","import type { DatabaseDriverTypeParts, DatabaseType } from '../../../core';\n\nexport type DatabaseConnectionString<\n DatabaseTypeName extends DatabaseType = DatabaseType,\n Format extends string = string,\n> = Format & {\n _databaseType: DatabaseTypeName;\n};\n\nexport const parseConnectionString = (\n connectionString: DatabaseConnectionString | string,\n): DatabaseDriverTypeParts => {\n if (\n connectionString.startsWith('postgresql://') ||\n connectionString.startsWith('postgres://')\n ) {\n return {\n databaseType: 'PostgreSQL',\n driverName: 'pg',\n };\n }\n\n if (\n connectionString.startsWith('file:') ||\n connectionString === ':memory:' ||\n connectionString.startsWith('/') ||\n connectionString.startsWith('./')\n ) {\n return {\n databaseType: 'SQLite',\n driverName: 'sqlite3',\n };\n }\n\n if (connectionString.startsWith('d1:')) {\n return {\n databaseType: 'SQLite',\n driverName: 'd1',\n };\n }\n\n throw new Error(\n `Unsupported database connection string: ${connectionString}`,\n );\n};\n","import {\n dumboDatabaseDriverRegistry,\n type AnyDumboDatabaseDriver,\n type DumboConnectionOptions,\n type ExtractDumboDatabaseDriverOptions,\n type ExtractDumboTypeFromDriver,\n type JSONSerializationOptions,\n} from '../../core';\n\nexport * from './connections';\n\nexport function dumbo<Driver extends AnyDumboDatabaseDriver>(\n options: ExtractDumboDatabaseDriverOptions<Driver> & {\n driver: Driver;\n } & JSONSerializationOptions,\n): ExtractDumboTypeFromDriver<Driver>;\n\nexport function dumbo<\n DatabaseDriver extends AnyDumboDatabaseDriver = AnyDumboDatabaseDriver,\n ConnectionOptions extends DumboConnectionOptions<DatabaseDriver> =\n DumboConnectionOptions<DatabaseDriver>,\n>(\n options: ConnectionOptions & { driver?: never },\n): ExtractDumboTypeFromDriver<DatabaseDriver>;\n\nexport function dumbo<\n DatabaseDriver extends AnyDumboDatabaseDriver = AnyDumboDatabaseDriver,\n>(\n options: DumboConnectionOptions<DatabaseDriver>,\n): ExtractDumboTypeFromDriver<DatabaseDriver> {\n const { driverType } = options;\n\n const driver =\n options.driver ??\n dumboDatabaseDriverRegistry.tryGet<DatabaseDriver>(options);\n\n if (driver === null) {\n throw new Error(`No plugin found for driver type: ${driverType}`);\n }\n\n return driver.createPool({\n ...options,\n driverType: driver.driverType,\n }) as ExtractDumboTypeFromDriver<DatabaseDriver>;\n}\n\nimport '../postgresql/core/schema/postgreSQLMetadata';\nimport '../sqlite/core/schema/sqliteMetadata';\n"],"mappings":";;;;;AAuPA,MAAa,gBAKX,SACA,YACA,SACG;AACH,QAAO;EACL;EACA;EACA;EACD;;;;;AClQH,MAAa,UAAU,OAIrB,WACA,QACsB;AAGtB,SAAO,MAFc,WAEP,KAAK,IAAI,IAAI;;AAG7B,MAAa,eAAe,aAC1B,SAAS,QAAQ,cAAc,MAAM,EAAE,IAAI,aAAa,IAAI,GAAG;AAEjE,MAAa,kBACX,QACM;CACN,MAAM,SAAkC,EAAE;AAC1C,MAAK,MAAM,OAAO,IAChB,KAAI,OAAO,UAAU,eAAe,KAAK,KAAK,IAAI,CAChD,QAAO,YAAY,IAAI,IAAI,IAAI;AAGnC,QAAO;;;;;ACjBT,MAAa,yBACX,qBAC4B;AAC5B,KACE,iBAAiB,WAAW,gBAAgB,IAC5C,iBAAiB,WAAW,cAAc,CAE1C,QAAO;EACL,cAAc;EACd,YAAY;EACb;AAGH,KACE,iBAAiB,WAAW,QAAQ,IACpC,qBAAqB,cACrB,iBAAiB,WAAW,IAAI,IAChC,iBAAiB,WAAW,KAAK,CAEjC,QAAO;EACL,cAAc;EACd,YAAY;EACb;AAGH,KAAI,iBAAiB,WAAW,MAAM,CACpC,QAAO;EACL,cAAc;EACd,YAAY;EACb;AAGH,OAAM,IAAI,MACR,2CAA2C,mBAC5C;;;;;AClBH,SAAgB,MAGd,SAC4C;CAC5C,MAAM,EAAE,eAAe;CAEvB,MAAM,SACJ,QAAQ,UACR,4BAA4B,OAAuB,QAAQ;AAE7D,KAAI,WAAW,KACb,OAAM,IAAI,MAAM,oCAAoC,aAAa;AAGnE,QAAO,OAAO,WAAW;EACvB,GAAG;EACH,YAAY,OAAO;EACpB,CAAC"}
|
package/dist/pg.cjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const require_core = require('./core-
|
|
3
|
-
const require_postgreSQLMetadata = require('./postgreSQLMetadata-
|
|
4
|
-
const require_core$1 = require('./core-
|
|
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.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.cjs","names":["pgFormatter","mapSQLQueryResult","mapPostgresError","BatchCommandNoChangesError","sqlExecutor","createConnection","createConnectionPool","createAmbientConnectionPool","JSONSerializer","parseDatabaseName","PostgreSQLConnectionString","pgFormatter","DefaultPostgreSQLMigratorOptions","canHandleDriverWithConnectionString","postgreSQLMetadata"],"sources":["../src/storage/postgresql/pg/execute/execute.ts","../src/storage/postgresql/pg/connections/transaction.ts","../src/storage/postgresql/pg/connections/connection.ts","../src/storage/postgresql/pg/serialization/index.ts","../src/storage/postgresql/pg/connections/pool.ts","../src/storage/postgresql/pg/index.ts"],"sourcesContent":["import pg from 'pg';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n BatchCommandNoChangesError,\n mapSQLQueryResult,\n tracer,\n type BatchSQLCommandOptions,\n type DbSQLExecutor,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { pgFormatter } from '../../core';\nimport { mapPostgresError } from '../../core/errors/errorMapper';\nimport { PgDriverType, type PgClientOrPoolClient } from '../connections';\n\nexport const isPgNativePool = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.Pool => {\n return poolOrClient instanceof pg.Pool;\n};\n\nexport const isPgClient = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.Client => poolOrClient instanceof pg.Client;\n\nexport const isPgPoolClient = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.PoolClient =>\n 'release' in poolOrClient && typeof poolOrClient.release === 'function';\n\nexport const pgExecute = async <Result = void>(\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n handle: (client: pg.PoolClient | pg.Client) => Promise<Result>,\n) => {\n const client = isPgNativePool(poolOrClient)\n ? await poolOrClient.connect()\n : poolOrClient;\n\n try {\n return await handle(client);\n } finally {\n // release only if client wasn't injected externally\n if (isPgNativePool(poolOrClient) && isPgPoolClient(client))\n client.release();\n }\n};\n\nexport type PgSQLExecutor = DbSQLExecutor<PgDriverType, PgClientOrPoolClient>;\n\nexport const pgSQLExecutor = ({\n serializer,\n}: {\n serializer: JSONSerializer;\n}): PgSQLExecutor => ({\n driverType: PgDriverType,\n query: async <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sql: SQL,\n options: SQLQueryOptions | undefined,\n ) => {\n const results = await batchQuery<Result>(\n client,\n [sql],\n serializer,\n options,\n );\n return results[0]!;\n },\n batchQuery: <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n options: SQLQueryOptions | undefined,\n ) => batchQuery<Result>(client, sqls, serializer, options),\n command: async <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sql: SQL,\n options: BatchSQLCommandOptions | undefined,\n ) => {\n const results = await batchCommand<Result>(\n client,\n [sql],\n serializer,\n options,\n );\n return results[0]!;\n },\n batchCommand: <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n options: BatchSQLCommandOptions | undefined,\n ) => batchCommand<Result>(client, sqls, serializer, options),\n formatter: pgFormatter,\n});\n\nasync function batchQuery<Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n serializer: JSONSerializer,\n options?: SQLQueryOptions,\n): Promise<QueryResult<Result>[]> {\n const results: QueryResult<Result>[] = Array<QueryResult<Result>>(\n sqls.length,\n );\n\n if (options?.timeoutMs) {\n await client.query(`SET statement_timeout = ${options.timeoutMs}`);\n }\n\n //TODO: make it smarter at some point\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = pgFormatter.format(sqls[i]!, { serializer });\n tracer.info('db:sql:query', {\n query,\n params,\n debugSQL: pgFormatter.describe(sqls[i]!, { serializer }),\n });\n try {\n let result =\n params.length > 0\n ? await client.query<Result>(query, params)\n : await client.query<Result>(query);\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 results[i] = { rowCount: result.rowCount, rows: result.rows };\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapPostgresError(error);\n }\n }\n\n return results;\n}\n\nasync function batchCommand<Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n serializer: JSONSerializer,\n options?: BatchSQLCommandOptions,\n): Promise<QueryResult<Result>[]> {\n const results: QueryResult<Result>[] = Array<QueryResult<Result>>(\n sqls.length,\n );\n\n if (options?.timeoutMs) {\n await client.query(`SET statement_timeout = ${options.timeoutMs}`);\n }\n\n //TODO: make it smarter at some point\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = pgFormatter.format(sqls[i]!, { serializer });\n tracer.info('db:sql:command', {\n query,\n params,\n debugSQL: pgFormatter.describe(sqls[i]!, { serializer }),\n });\n try {\n let result =\n params.length > 0\n ? await client.query<Result>(query, params)\n : await client.query<Result>(query);\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 results[i] = { rowCount: result.rowCount, rows: result.rows };\n\n if (options?.assertChanges && (results[i]!.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapPostgresError(error);\n }\n }\n\n return results;\n}\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type AnyConnection,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { pgSQLExecutor } from '../execute';\nimport {\n PgDriverType,\n type PgConnection,\n type PgPoolOrClient,\n} from './connection';\n\nexport type PgTransaction = DatabaseTransaction<\n PgConnection,\n PgTransactionOptions\n>;\n\nexport type PgIsolationLevel =\n | 'READ UNCOMMITTED'\n | 'READ COMMITTED'\n | 'REPEATABLE READ'\n | 'SERIALIZABLE';\n\nexport type PgTransactionOptions = DatabaseTransactionOptions & {\n isolationLevel?: PgIsolationLevel;\n};\n\nexport const pgTransaction =\n <ConnectionType extends AnyConnection = AnyConnection>(\n connection: () => ConnectionType,\n serializer: JSONSerializer,\n ) =>\n <DbClient extends PgPoolOrClient = PgPoolOrClient>(\n getClient: Promise<DbClient>,\n options?: {\n close: (client: DbClient, error?: unknown) => Promise<void>;\n } & PgTransactionOptions,\n ): DatabaseTransaction<ConnectionType> => ({\n connection: connection(),\n driverType: PgDriverType,\n begin: async () => {\n const client = await getClient;\n const parts = ['BEGIN'];\n if (options?.isolationLevel) {\n parts.push(`ISOLATION LEVEL ${options.isolationLevel}`);\n }\n if (options?.readonly) {\n parts.push('READ ONLY');\n }\n await client.query(parts.join(' '));\n },\n commit: async () => {\n const client = await getClient;\n\n try {\n await client.query('COMMIT');\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async (error?: unknown) => {\n const client = await getClient;\n try {\n await client.query('ROLLBACK');\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(pgSQLExecutor({ serializer }), {\n connect: () => getClient,\n }),\n _transactionOptions: options ?? {},\n });\n","import pg from 'pg';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n createConnection,\n type Connection,\n type DatabaseTransaction,\n} from '../../../../core';\nimport type { PostgreSQLDriverType } from '../../core';\nimport { pgSQLExecutor } from '../execute';\nimport { pgTransaction, type PgTransactionOptions } from './transaction';\n\nexport type PgDriverType = PostgreSQLDriverType<'pg'>;\nexport const PgDriverType: PgDriverType = 'PostgreSQL:pg';\n\nexport type PgPoolClient = pg.PoolClient;\nexport type PgClient = pg.Client;\n\nexport type PgClientOrPoolClient = PgPoolClient | PgClient;\n\nexport type PgPoolOrClient = pg.Pool | PgPoolClient | PgClient;\n\nexport type PgClientConnection = Connection<\n PgClientConnection,\n PgDriverType,\n PgClient,\n DatabaseTransaction<PgClientConnection, PgTransactionOptions>\n>;\n\nexport type PgPoolClientConnection = Connection<\n PgPoolClientConnection,\n PgDriverType,\n PgPoolClient,\n DatabaseTransaction<PgPoolClientConnection, PgTransactionOptions>\n>;\n\nexport type PgConnection = PgPoolClientConnection | PgClientConnection;\n\nexport type PgPoolClientOptions = {\n type: 'PoolClient';\n connect: () => Promise<PgPoolClient>;\n close: (client: PgPoolClient) => Promise<void>;\n};\n\nexport type PgClientOptions = {\n type: 'Client';\n connect: () => Promise<PgClient>;\n close: (client: PgClient) => Promise<void>;\n};\n\nexport type PgClientConnectionOptions = PgClientOptions & {\n serializer: JSONSerializer;\n};\n\nexport type PgPoolClientConnectionOptions = PgPoolClientOptions & {\n serializer: JSONSerializer;\n};\n\nexport const pgClientConnection = (\n options: PgClientConnectionOptions,\n): PgClientConnection => {\n const { connect, close } = options;\n\n return createConnection({\n driverType: PgDriverType,\n connect,\n close,\n initTransaction: (connection) =>\n pgTransaction(connection, options.serializer),\n executor: pgSQLExecutor,\n serializer: options.serializer,\n });\n};\n\nexport const pgPoolClientConnection = (\n options: PgPoolClientConnectionOptions,\n): PgPoolClientConnection => {\n const { connect, close } = options;\n\n return createConnection({\n driverType: PgDriverType,\n connect,\n close,\n initTransaction: (connection) =>\n pgTransaction(connection, options.serializer),\n executor: pgSQLExecutor,\n serializer: options.serializer,\n });\n};\n\nexport type PgConnectionOptions =\n | PgPoolClientConnectionOptions\n | PgClientConnectionOptions;\n\nexport function pgConnection(\n options: PgPoolClientConnectionOptions,\n): PgPoolClientConnection;\nexport function pgConnection(\n options: PgClientConnectionOptions,\n): PgClientConnection;\nexport function pgConnection(\n options: PgPoolClientConnectionOptions | PgClientConnectionOptions,\n): PgPoolClientConnection | PgClientConnection {\n return options.type === 'Client'\n ? pgClientConnection(options)\n : pgPoolClientConnection(options);\n}\n\nexport type ConnectionCheckResult =\n | { successful: true }\n | {\n successful: false;\n code: string | undefined;\n errorType: 'ConnectionRefused' | 'Authentication' | 'Unknown';\n error: unknown;\n };\n\nexport const checkConnection = async (\n connectionString: string,\n): Promise<ConnectionCheckResult> => {\n const client = new pg.Client({\n connectionString,\n });\n\n try {\n await client.connect();\n return { successful: true };\n } catch (error) {\n const code =\n error instanceof Error &&\n 'code' in error &&\n typeof error.code === 'string'\n ? error.code\n : undefined;\n\n return {\n successful: false,\n errorType:\n code === 'ECONNREFUSED'\n ? 'ConnectionRefused'\n : code === '28P01'\n ? 'Authentication'\n : 'Unknown',\n code,\n error,\n };\n } finally {\n // Ensure the client is closed properly if connected\n await client.end();\n }\n};\n","import type pg from 'pg';\nimport type { JSONSerializer } from '../../../../core/serializer';\n\nexport const setPgTypeParser = (\n client: pg.Client | pg.PoolClient,\n options?: {\n parseBigInts?: boolean;\n serializer: JSONSerializer;\n },\n) => {\n // BigInt\n if (options?.parseBigInts === true)\n client.setTypeParser(20, (val) => BigInt(val));\n\n if (options?.serializer) {\n // JSONB\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n client.setTypeParser(3802, (val) => options.serializer.deserialize(val));\n\n // JSON\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n client.setTypeParser(114, (val) => options.serializer.deserialize(val));\n }\n};\n","import pg from 'pg';\nimport {\n createAmbientConnectionPool,\n createConnectionPool,\n JSONSerializer,\n tracer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport { defaultPostgreSqlDatabase, parseDatabaseName } from '../../core';\nimport { setPgTypeParser } from '../serialization';\nimport {\n pgConnection,\n PgDriverType,\n type PgClientConnection,\n type PgPoolClientConnection,\n} from './connection';\n\nexport type PgNativePool = ConnectionPool<PgPoolClientConnection>;\n\nexport type PgAmbientClientPool = ConnectionPool<PgClientConnection>;\n\nexport type PgAmbientConnectionPool = ConnectionPool<\n PgPoolClientConnection | PgClientConnection\n>;\n\nexport type PgPool =\n | PgNativePool\n | PgAmbientClientPool\n | PgAmbientConnectionPool;\n\nexport const pgNativePool = (options: {\n connectionString: string;\n database?: string | undefined;\n serializer: JSONSerializer;\n}): PgNativePool => {\n const { connectionString, database } = options;\n const pool = getPgPool({ connectionString, database });\n\n const getConnection = () =>\n pgConnection({\n type: 'PoolClient',\n connect: async () => {\n const client = await pool.connect();\n\n setPgTypeParser(client, {\n parseBigInts: true,\n serializer: options.serializer,\n });\n\n return client;\n },\n close: (client) => Promise.resolve(client.release()),\n serializer: options.serializer,\n });\n\n const open = () => Promise.resolve(getConnection());\n const close = () => endPgPool({ connectionString, database });\n\n return createConnectionPool({\n driverType: PgDriverType,\n connection: open,\n close,\n getConnection,\n });\n};\n\nexport const pgAmbientNativePool = (options: {\n pool: pg.Pool;\n serializer: JSONSerializer;\n}): PgNativePool => {\n const { pool } = options;\n\n return createConnectionPool({\n driverType: PgDriverType,\n getConnection: () =>\n pgConnection({\n type: 'PoolClient',\n connect: () => pool.connect(),\n close: (client) => Promise.resolve(client.release()),\n serializer: options.serializer,\n }),\n });\n};\n\nexport const pgAmbientConnectionPool = (options: {\n connection: PgPoolClientConnection | PgClientConnection;\n}): PgAmbientConnectionPool => {\n const { connection } = options;\n\n return createAmbientConnectionPool({\n driverType: PgDriverType,\n connection,\n });\n};\n\nexport const pgClientPool = (options: {\n connectionString: string;\n database?: string | undefined;\n serializer: JSONSerializer;\n}): PgAmbientClientPool => {\n const { connectionString, database } = options;\n\n return createConnectionPool({\n driverType: PgDriverType,\n getConnection: () => {\n const connect = async () => {\n const client = new pg.Client({ connectionString, database });\n\n setPgTypeParser(client, {\n parseBigInts: true,\n serializer: options.serializer,\n });\n\n await client.connect();\n return client;\n };\n\n return pgConnection({\n type: 'Client',\n connect,\n close: (client) => client.end(),\n serializer: options.serializer,\n });\n },\n });\n};\n\nexport const pgAmbientClientPool = (options: {\n client: pg.Client;\n serializer: JSONSerializer;\n}): PgAmbientClientPool => {\n const { client } = options;\n\n const getConnection = () => {\n const connect = () => Promise.resolve(client);\n\n return pgConnection({\n type: 'Client',\n connect,\n close: () => Promise.resolve(),\n serializer: options.serializer,\n });\n };\n\n const open = () => Promise.resolve(getConnection());\n const close = () => Promise.resolve();\n\n return createConnectionPool({\n driverType: PgDriverType,\n connection: open,\n close,\n getConnection,\n });\n};\n\nexport type PgPoolPooledOptions =\n | {\n connectionString: string;\n database?: string;\n pooled: true;\n pool: pg.Pool;\n }\n | {\n connectionString: string;\n database?: string;\n pool: pg.Pool;\n }\n | {\n connectionString: string;\n database?: string;\n pooled: true;\n }\n | {\n connectionString: string;\n database?: string;\n };\n\nexport type PgPoolNotPooledOptions =\n | {\n connectionString: string;\n database?: string;\n pooled: false;\n client: pg.Client;\n }\n | {\n connectionString: string;\n database?: string;\n client: pg.Client;\n }\n | {\n connectionString: string;\n database?: string;\n pooled: false;\n }\n | {\n connectionString: string;\n database?: string;\n connection: PgPoolClientConnection | PgClientConnection;\n pooled?: false;\n };\n\nexport type PgPoolOptions = (PgPoolPooledOptions | PgPoolNotPooledOptions) &\n JSONSerializationOptions;\n\nexport function pgPool(options: PgPoolPooledOptions): PgNativePool;\nexport function pgPool(options: PgPoolNotPooledOptions): PgAmbientClientPool;\nexport function pgPool(\n options: PgPoolOptions,\n): PgNativePool | PgAmbientClientPool | PgAmbientConnectionPool {\n const { connectionString, database } = options;\n\n const serializer = options.serialization?.serializer ?? JSONSerializer;\n\n if ('client' in options && options.client)\n return pgAmbientClientPool({ client: options.client, serializer });\n\n if ('connection' in options && options.connection)\n return pgAmbientConnectionPool({\n connection: options.connection,\n });\n\n if ('pooled' in options && options.pooled === false)\n return pgClientPool({ connectionString, database, serializer });\n\n if ('pool' in options && options.pool)\n return pgAmbientNativePool({ pool: options.pool, serializer });\n\n return pgNativePool({\n connectionString,\n database,\n serializer,\n });\n}\n\nconst pools: Map<string, pg.Pool> = new Map();\nconst usageCounter: Map<string, number> = new Map();\n\nexport const getPgPool = (\n connectionStringOrOptions: string | pg.PoolConfig,\n): pg.Pool => {\n const connectionString =\n typeof connectionStringOrOptions === 'string'\n ? connectionStringOrOptions\n : connectionStringOrOptions.connectionString!;\n\n const poolOptions =\n typeof connectionStringOrOptions === 'string'\n ? { connectionString }\n : connectionStringOrOptions;\n\n const database =\n poolOptions.database ??\n (poolOptions.connectionString\n ? (parseDatabaseName(poolOptions.connectionString) ??\n defaultPostgreSqlDatabase)\n : undefined);\n\n const lookupKey = key(connectionString, database);\n\n updatePoolUsageCounter(lookupKey, 1);\n\n return (\n pools.get(lookupKey) ??\n pools.set(lookupKey, new pg.Pool(poolOptions)).get(lookupKey)!\n );\n};\n\nexport const endPgPool = async ({\n connectionString,\n database,\n force,\n}: {\n connectionString: string;\n database?: string | undefined;\n force?: boolean;\n}): Promise<void> => {\n database = database ?? parseDatabaseName(connectionString) ?? undefined;\n const lookupKey = key(connectionString, database);\n\n const pool = pools.get(lookupKey);\n if (pool && (updatePoolUsageCounter(lookupKey, -1) <= 0 || force === true)) {\n await onEndPool(lookupKey, pool);\n }\n};\n\nexport const onEndPool = async (lookupKey: string, pool: pg.Pool) => {\n try {\n await pool.end();\n } catch (error) {\n tracer.error('connection-closing-error', { lookupKey, error });\n }\n pools.delete(lookupKey);\n};\n\nexport const endAllPgPools = () =>\n Promise.all(\n [...pools.entries()].map(([lookupKey, pool]) => onEndPool(lookupKey, pool)),\n );\n\nconst key = (connectionString: string, database: string | undefined) =>\n `${connectionString}|${database ?? defaultPostgreSqlDatabase}`;\n\nconst updatePoolUsageCounter = (lookupKey: string, by: 1 | -1): number => {\n const currentCounter = usageCounter.get(lookupKey) ?? 0;\n const newCounter = currentCounter + by;\n\n usageCounter.set(lookupKey, currentCounter + by);\n\n return newCounter;\n};\n","import {\n canHandleDriverWithConnectionString,\n type DumboDatabaseDriver,\n dumboDatabaseDriverRegistry,\n} from '../../../core';\nimport {\n DefaultPostgreSQLMigratorOptions,\n pgFormatter,\n PostgreSQLConnectionString,\n postgreSQLMetadata,\n} from '../core';\nimport {\n type PgConnection,\n PgDriverType,\n pgPool,\n type PgPool,\n type PgPoolOptions,\n} from './connections';\n\nconst tryParseConnectionString = (connectionString: string) => {\n try {\n return PostgreSQLConnectionString(connectionString);\n } catch {\n return null;\n }\n};\n\nexport const pgDumboDriver: DumboDatabaseDriver<\n PgConnection,\n PgPoolOptions,\n PgPool\n> = {\n driverType: PgDriverType,\n createPool: (options) => pgPool(options as PgPoolOptions),\n sqlFormatter: pgFormatter,\n defaultMigratorOptions: DefaultPostgreSQLMigratorOptions,\n canHandle: canHandleDriverWithConnectionString(\n PgDriverType,\n tryParseConnectionString,\n ),\n databaseMetadata: postgreSQLMetadata,\n};\n\nexport const usePgDumboDriver = () => {\n dumboDatabaseDriverRegistry.register(PgDriverType, pgDumboDriver);\n};\n\nusePgDumboDriver();\n\nexport type PgDumboOptions = PgPoolOptions;\nexport * from './connections';\nexport * from './execute';\nexport * from './serialization';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pg.cjs","names":["pgFormatter","mapSQLQueryResult","mapPostgresError","BatchCommandNoChangesError","sqlExecutor","createConnection","createConnectionPool","createAmbientConnectionPool","JSONSerializer","parseDatabaseName","PostgreSQLConnectionString","pgFormatter","DefaultPostgreSQLMigratorOptions","canHandleDriverWithConnectionString","postgreSQLMetadata"],"sources":["../src/storage/postgresql/pg/execute/execute.ts","../src/storage/postgresql/pg/connections/transaction.ts","../src/storage/postgresql/pg/connections/connection.ts","../src/storage/postgresql/pg/serialization/index.ts","../src/storage/postgresql/pg/connections/pool.ts","../src/storage/postgresql/pg/index.ts"],"sourcesContent":["import pg from 'pg';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n BatchCommandNoChangesError,\n mapSQLQueryResult,\n tracer,\n type BatchSQLCommandOptions,\n type DbSQLExecutor,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { pgFormatter } from '../../core';\nimport { mapPostgresError } from '../../core/errors/errorMapper';\nimport { PgDriverType, type PgClientOrPoolClient } from '../connections';\n\nexport const isPgNativePool = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.Pool => {\n return poolOrClient instanceof pg.Pool;\n};\n\nexport const isPgClient = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.Client => poolOrClient instanceof pg.Client;\n\nexport const isPgPoolClient = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.PoolClient =>\n 'release' in poolOrClient && typeof poolOrClient.release === 'function';\n\nexport const pgExecute = async <Result = void>(\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n handle: (client: pg.PoolClient | pg.Client) => Promise<Result>,\n) => {\n const client = isPgNativePool(poolOrClient)\n ? await poolOrClient.connect()\n : poolOrClient;\n\n try {\n return await handle(client);\n } finally {\n // release only if client wasn't injected externally\n if (isPgNativePool(poolOrClient) && isPgPoolClient(client))\n client.release();\n }\n};\n\nexport type PgSQLExecutor = DbSQLExecutor<PgDriverType, PgClientOrPoolClient>;\n\nexport const pgSQLExecutor = ({\n serializer,\n}: {\n serializer: JSONSerializer;\n}): PgSQLExecutor => ({\n driverType: PgDriverType,\n query: async <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sql: SQL,\n options: SQLQueryOptions | undefined,\n ) => {\n const results = await batchQuery<Result>(\n client,\n [sql],\n serializer,\n options,\n );\n return results[0]!;\n },\n batchQuery: <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n options: SQLQueryOptions | undefined,\n ) => batchQuery<Result>(client, sqls, serializer, options),\n command: async <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sql: SQL,\n options: BatchSQLCommandOptions | undefined,\n ) => {\n const results = await batchCommand<Result>(\n client,\n [sql],\n serializer,\n options,\n );\n return results[0]!;\n },\n batchCommand: <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n options: BatchSQLCommandOptions | undefined,\n ) => batchCommand<Result>(client, sqls, serializer, options),\n formatter: pgFormatter,\n});\n\nasync function batchQuery<Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n serializer: JSONSerializer,\n options?: SQLQueryOptions,\n): Promise<QueryResult<Result>[]> {\n const results: QueryResult<Result>[] = Array<QueryResult<Result>>(\n sqls.length,\n );\n\n if (options?.timeoutMs) {\n await client.query(`SET statement_timeout = ${options.timeoutMs}`);\n }\n\n //TODO: make it smarter at some point\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = pgFormatter.format(sqls[i]!, { serializer });\n tracer.info('db:sql:query', {\n query,\n params,\n debugSQL: pgFormatter.describe(sqls[i]!, { serializer }),\n });\n try {\n let result =\n params.length > 0\n ? await client.query<Result>(query, params)\n : await client.query<Result>(query);\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 results[i] = { rowCount: result.rowCount, rows: result.rows };\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapPostgresError(error);\n }\n }\n\n return results;\n}\n\nasync function batchCommand<Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n serializer: JSONSerializer,\n options?: BatchSQLCommandOptions,\n): Promise<QueryResult<Result>[]> {\n const results: QueryResult<Result>[] = Array<QueryResult<Result>>(\n sqls.length,\n );\n\n if (options?.timeoutMs) {\n await client.query(`SET statement_timeout = ${options.timeoutMs}`);\n }\n\n //TODO: make it smarter at some point\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = pgFormatter.format(sqls[i]!, { serializer });\n tracer.info('db:sql:command', {\n query,\n params,\n debugSQL: pgFormatter.describe(sqls[i]!, { serializer }),\n });\n try {\n let result =\n params.length > 0\n ? await client.query<Result>(query, params)\n : await client.query<Result>(query);\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 results[i] = { rowCount: result.rowCount, rows: result.rows };\n\n if (options?.assertChanges && (results[i]!.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapPostgresError(error);\n }\n }\n\n return results;\n}\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type AnyConnection,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { pgSQLExecutor } from '../execute';\nimport {\n PgDriverType,\n type PgConnection,\n type PgPoolOrClient,\n} from './connection';\n\nexport type PgTransaction = DatabaseTransaction<\n PgConnection,\n PgTransactionOptions\n>;\n\nexport type PgIsolationLevel =\n 'READ UNCOMMITTED' | 'READ COMMITTED' | 'REPEATABLE READ' | 'SERIALIZABLE';\n\nexport type PgTransactionOptions = DatabaseTransactionOptions & {\n isolationLevel?: PgIsolationLevel;\n};\n\nexport const pgTransaction =\n <ConnectionType extends AnyConnection = AnyConnection>(\n connection: () => ConnectionType,\n serializer: JSONSerializer,\n ) =>\n <DbClient extends PgPoolOrClient = PgPoolOrClient>(\n getClient: Promise<DbClient>,\n options?: {\n close: (client: DbClient, error?: unknown) => Promise<void>;\n } & PgTransactionOptions,\n ): DatabaseTransaction<ConnectionType> => ({\n connection: connection(),\n driverType: PgDriverType,\n begin: async () => {\n const client = await getClient;\n const parts = ['BEGIN'];\n if (options?.isolationLevel) {\n parts.push(`ISOLATION LEVEL ${options.isolationLevel}`);\n }\n if (options?.readonly) {\n parts.push('READ ONLY');\n }\n await client.query(parts.join(' '));\n },\n commit: async () => {\n const client = await getClient;\n\n try {\n await client.query('COMMIT');\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async (error?: unknown) => {\n const client = await getClient;\n try {\n await client.query('ROLLBACK');\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(pgSQLExecutor({ serializer }), {\n connect: () => getClient,\n }),\n _transactionOptions: options ?? {},\n });\n","import pg from 'pg';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n createConnection,\n type Connection,\n type DatabaseTransaction,\n} from '../../../../core';\nimport type { PostgreSQLDriverType } from '../../core';\nimport { pgSQLExecutor } from '../execute';\nimport { pgTransaction, type PgTransactionOptions } from './transaction';\n\nexport type PgDriverType = PostgreSQLDriverType<'pg'>;\nexport const PgDriverType: PgDriverType = 'PostgreSQL:pg';\n\nexport type PgPoolClient = pg.PoolClient;\nexport type PgClient = pg.Client;\n\nexport type PgClientOrPoolClient = PgPoolClient | PgClient;\n\nexport type PgPoolOrClient = pg.Pool | PgPoolClient | PgClient;\n\nexport type PgClientConnection = Connection<\n PgClientConnection,\n PgDriverType,\n PgClient,\n DatabaseTransaction<PgClientConnection, PgTransactionOptions>\n>;\n\nexport type PgPoolClientConnection = Connection<\n PgPoolClientConnection,\n PgDriverType,\n PgPoolClient,\n DatabaseTransaction<PgPoolClientConnection, PgTransactionOptions>\n>;\n\nexport type PgConnection = PgPoolClientConnection | PgClientConnection;\n\nexport type PgPoolClientOptions = {\n type: 'PoolClient';\n connect: () => Promise<PgPoolClient>;\n close: (client: PgPoolClient) => Promise<void>;\n};\n\nexport type PgClientOptions = {\n type: 'Client';\n connect: () => Promise<PgClient>;\n close: (client: PgClient) => Promise<void>;\n};\n\nexport type PgClientConnectionOptions = PgClientOptions & {\n serializer: JSONSerializer;\n};\n\nexport type PgPoolClientConnectionOptions = PgPoolClientOptions & {\n serializer: JSONSerializer;\n};\n\nexport const pgClientConnection = (\n options: PgClientConnectionOptions,\n): PgClientConnection => {\n const { connect, close } = options;\n\n return createConnection({\n driverType: PgDriverType,\n connect,\n close,\n initTransaction: (connection) =>\n pgTransaction(connection, options.serializer),\n executor: pgSQLExecutor,\n serializer: options.serializer,\n });\n};\n\nexport const pgPoolClientConnection = (\n options: PgPoolClientConnectionOptions,\n): PgPoolClientConnection => {\n const { connect, close } = options;\n\n return createConnection({\n driverType: PgDriverType,\n connect,\n close,\n initTransaction: (connection) =>\n pgTransaction(connection, options.serializer),\n executor: pgSQLExecutor,\n serializer: options.serializer,\n });\n};\n\nexport type PgConnectionOptions =\n PgPoolClientConnectionOptions | PgClientConnectionOptions;\n\nexport function pgConnection(\n options: PgPoolClientConnectionOptions,\n): PgPoolClientConnection;\nexport function pgConnection(\n options: PgClientConnectionOptions,\n): PgClientConnection;\nexport function pgConnection(\n options: PgPoolClientConnectionOptions | PgClientConnectionOptions,\n): PgPoolClientConnection | PgClientConnection {\n return options.type === 'Client'\n ? pgClientConnection(options)\n : pgPoolClientConnection(options);\n}\n\nexport type ConnectionCheckResult =\n | { successful: true }\n | {\n successful: false;\n code: string | undefined;\n errorType: 'ConnectionRefused' | 'Authentication' | 'Unknown';\n error: unknown;\n };\n\nexport const checkConnection = async (\n connectionString: string,\n): Promise<ConnectionCheckResult> => {\n const client = new pg.Client({\n connectionString,\n });\n\n try {\n await client.connect();\n return { successful: true };\n } catch (error) {\n const code =\n error instanceof Error &&\n 'code' in error &&\n typeof error.code === 'string'\n ? error.code\n : undefined;\n\n return {\n successful: false,\n errorType:\n code === 'ECONNREFUSED'\n ? 'ConnectionRefused'\n : code === '28P01'\n ? 'Authentication'\n : 'Unknown',\n code,\n error,\n };\n } finally {\n // Ensure the client is closed properly if connected\n await client.end();\n }\n};\n","import type pg from 'pg';\nimport type { JSONSerializer } from '../../../../core/serializer';\n\nexport const setPgTypeParser = (\n client: pg.Client | pg.PoolClient,\n options?: {\n parseBigInts?: boolean;\n serializer: JSONSerializer;\n },\n) => {\n // BigInt\n if (options?.parseBigInts === true)\n client.setTypeParser(20, (val) => BigInt(val));\n\n if (options?.serializer) {\n // JSONB\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n client.setTypeParser(3802, (val) => options.serializer.deserialize(val));\n\n // JSON\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n client.setTypeParser(114, (val) => options.serializer.deserialize(val));\n }\n};\n","import pg from 'pg';\nimport {\n createAmbientConnectionPool,\n createConnectionPool,\n JSONSerializer,\n tracer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport { defaultPostgreSqlDatabase, parseDatabaseName } from '../../core';\nimport { setPgTypeParser } from '../serialization';\nimport {\n pgConnection,\n PgDriverType,\n type PgClientConnection,\n type PgPoolClientConnection,\n} from './connection';\n\nexport type PgNativePool = ConnectionPool<PgPoolClientConnection>;\n\nexport type PgAmbientClientPool = ConnectionPool<PgClientConnection>;\n\nexport type PgAmbientConnectionPool = ConnectionPool<\n PgPoolClientConnection | PgClientConnection\n>;\n\nexport type PgPool =\n PgNativePool | PgAmbientClientPool | PgAmbientConnectionPool;\n\nexport const pgNativePool = (options: {\n connectionString: string;\n database?: string | undefined;\n serializer: JSONSerializer;\n}): PgNativePool => {\n const { connectionString, database } = options;\n const pool = getPgPool({ connectionString, database });\n\n const getConnection = () =>\n pgConnection({\n type: 'PoolClient',\n connect: async () => {\n const client = await pool.connect();\n\n setPgTypeParser(client, {\n parseBigInts: true,\n serializer: options.serializer,\n });\n\n return client;\n },\n close: (client) => Promise.resolve(client.release()),\n serializer: options.serializer,\n });\n\n const open = () => Promise.resolve(getConnection());\n const close = () => endPgPool({ connectionString, database });\n\n return createConnectionPool({\n driverType: PgDriverType,\n connection: open,\n close,\n getConnection,\n });\n};\n\nexport const pgAmbientNativePool = (options: {\n pool: pg.Pool;\n serializer: JSONSerializer;\n}): PgNativePool => {\n const { pool } = options;\n\n return createConnectionPool({\n driverType: PgDriverType,\n getConnection: () =>\n pgConnection({\n type: 'PoolClient',\n connect: () => pool.connect(),\n close: (client) => Promise.resolve(client.release()),\n serializer: options.serializer,\n }),\n });\n};\n\nexport const pgAmbientConnectionPool = (options: {\n connection: PgPoolClientConnection | PgClientConnection;\n}): PgAmbientConnectionPool => {\n const { connection } = options;\n\n return createAmbientConnectionPool({\n driverType: PgDriverType,\n connection,\n });\n};\n\nexport const pgClientPool = (options: {\n connectionString: string;\n database?: string | undefined;\n serializer: JSONSerializer;\n}): PgAmbientClientPool => {\n const { connectionString, database } = options;\n\n return createConnectionPool({\n driverType: PgDriverType,\n getConnection: () => {\n const connect = async () => {\n const client = new pg.Client({ connectionString, database });\n\n setPgTypeParser(client, {\n parseBigInts: true,\n serializer: options.serializer,\n });\n\n await client.connect();\n return client;\n };\n\n return pgConnection({\n type: 'Client',\n connect,\n close: (client) => client.end(),\n serializer: options.serializer,\n });\n },\n });\n};\n\nexport const pgAmbientClientPool = (options: {\n client: pg.Client;\n serializer: JSONSerializer;\n}): PgAmbientClientPool => {\n const { client } = options;\n\n const getConnection = () => {\n const connect = () => Promise.resolve(client);\n\n return pgConnection({\n type: 'Client',\n connect,\n close: () => Promise.resolve(),\n serializer: options.serializer,\n });\n };\n\n const open = () => Promise.resolve(getConnection());\n const close = () => Promise.resolve();\n\n return createConnectionPool({\n driverType: PgDriverType,\n connection: open,\n close,\n getConnection,\n });\n};\n\nexport type PgPoolPooledOptions =\n | {\n connectionString: string;\n database?: string;\n pooled: true;\n pool: pg.Pool;\n }\n | {\n connectionString: string;\n database?: string;\n pool: pg.Pool;\n }\n | {\n connectionString: string;\n database?: string;\n pooled: true;\n }\n | {\n connectionString: string;\n database?: string;\n };\n\nexport type PgPoolNotPooledOptions =\n | {\n connectionString: string;\n database?: string;\n pooled: false;\n client: pg.Client;\n }\n | {\n connectionString: string;\n database?: string;\n client: pg.Client;\n }\n | {\n connectionString: string;\n database?: string;\n pooled: false;\n }\n | {\n connectionString: string;\n database?: string;\n connection: PgPoolClientConnection | PgClientConnection;\n pooled?: false;\n };\n\nexport type PgPoolOptions = (PgPoolPooledOptions | PgPoolNotPooledOptions) &\n JSONSerializationOptions;\n\nexport function pgPool(options: PgPoolPooledOptions): PgNativePool;\nexport function pgPool(options: PgPoolNotPooledOptions): PgAmbientClientPool;\nexport function pgPool(\n options: PgPoolOptions,\n): PgNativePool | PgAmbientClientPool | PgAmbientConnectionPool {\n const { connectionString, database } = options;\n\n const serializer = options.serialization?.serializer ?? JSONSerializer;\n\n if ('client' in options && options.client)\n return pgAmbientClientPool({ client: options.client, serializer });\n\n if ('connection' in options && options.connection)\n return pgAmbientConnectionPool({\n connection: options.connection,\n });\n\n if ('pooled' in options && options.pooled === false)\n return pgClientPool({ connectionString, database, serializer });\n\n if ('pool' in options && options.pool)\n return pgAmbientNativePool({ pool: options.pool, serializer });\n\n return pgNativePool({\n connectionString,\n database,\n serializer,\n });\n}\n\nconst pools: Map<string, pg.Pool> = new Map();\nconst usageCounter: Map<string, number> = new Map();\n\nexport const getPgPool = (\n connectionStringOrOptions: string | pg.PoolConfig,\n): pg.Pool => {\n const connectionString =\n typeof connectionStringOrOptions === 'string'\n ? connectionStringOrOptions\n : connectionStringOrOptions.connectionString!;\n\n const poolOptions =\n typeof connectionStringOrOptions === 'string'\n ? { connectionString }\n : connectionStringOrOptions;\n\n const database =\n poolOptions.database ??\n (poolOptions.connectionString\n ? (parseDatabaseName(poolOptions.connectionString) ??\n defaultPostgreSqlDatabase)\n : undefined);\n\n const lookupKey = key(connectionString, database);\n\n updatePoolUsageCounter(lookupKey, 1);\n\n return (\n pools.get(lookupKey) ??\n pools.set(lookupKey, new pg.Pool(poolOptions)).get(lookupKey)!\n );\n};\n\nexport const endPgPool = async ({\n connectionString,\n database,\n force,\n}: {\n connectionString: string;\n database?: string | undefined;\n force?: boolean;\n}): Promise<void> => {\n database = database ?? parseDatabaseName(connectionString) ?? undefined;\n const lookupKey = key(connectionString, database);\n\n const pool = pools.get(lookupKey);\n if (pool && (updatePoolUsageCounter(lookupKey, -1) <= 0 || force === true)) {\n await onEndPool(lookupKey, pool);\n }\n};\n\nexport const onEndPool = async (lookupKey: string, pool: pg.Pool) => {\n try {\n await pool.end();\n } catch (error) {\n tracer.error('connection-closing-error', { lookupKey, error });\n }\n pools.delete(lookupKey);\n};\n\nexport const endAllPgPools = () =>\n Promise.all(\n [...pools.entries()].map(([lookupKey, pool]) => onEndPool(lookupKey, pool)),\n );\n\nconst key = (connectionString: string, database: string | undefined) =>\n `${connectionString}|${database ?? defaultPostgreSqlDatabase}`;\n\nconst updatePoolUsageCounter = (lookupKey: string, by: 1 | -1): number => {\n const currentCounter = usageCounter.get(lookupKey) ?? 0;\n const newCounter = currentCounter + by;\n\n usageCounter.set(lookupKey, currentCounter + by);\n\n return newCounter;\n};\n","import {\n canHandleDriverWithConnectionString,\n type DumboDatabaseDriver,\n dumboDatabaseDriverRegistry,\n} from '../../../core';\nimport {\n DefaultPostgreSQLMigratorOptions,\n pgFormatter,\n PostgreSQLConnectionString,\n postgreSQLMetadata,\n} from '../core';\nimport {\n type PgConnection,\n PgDriverType,\n pgPool,\n type PgPool,\n type PgPoolOptions,\n} from './connections';\n\nconst tryParseConnectionString = (connectionString: string) => {\n try {\n return PostgreSQLConnectionString(connectionString);\n } catch {\n return null;\n }\n};\n\nexport const pgDumboDriver: DumboDatabaseDriver<\n PgConnection,\n PgPoolOptions,\n PgPool\n> = {\n driverType: PgDriverType,\n createPool: (options) => pgPool(options as PgPoolOptions),\n sqlFormatter: pgFormatter,\n defaultMigratorOptions: DefaultPostgreSQLMigratorOptions,\n canHandle: canHandleDriverWithConnectionString(\n PgDriverType,\n tryParseConnectionString,\n ),\n databaseMetadata: postgreSQLMetadata,\n};\n\nexport const usePgDumboDriver = () => {\n dumboDatabaseDriverRegistry.register(PgDriverType, pgDumboDriver);\n};\n\nusePgDumboDriver();\n\nexport type PgDumboOptions = PgPoolOptions;\nexport * from './connections';\nexport * from './execute';\nexport * from './serialization';\n"],"mappings":"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"}
|
package/dist/pg.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
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-
|
|
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-
|
|
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
|
package/dist/pg.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pg.js","names":[],"sources":["../src/storage/postgresql/pg/execute/execute.ts","../src/storage/postgresql/pg/connections/transaction.ts","../src/storage/postgresql/pg/connections/connection.ts","../src/storage/postgresql/pg/serialization/index.ts","../src/storage/postgresql/pg/connections/pool.ts","../src/storage/postgresql/pg/index.ts"],"sourcesContent":["import pg from 'pg';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n BatchCommandNoChangesError,\n mapSQLQueryResult,\n tracer,\n type BatchSQLCommandOptions,\n type DbSQLExecutor,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { pgFormatter } from '../../core';\nimport { mapPostgresError } from '../../core/errors/errorMapper';\nimport { PgDriverType, type PgClientOrPoolClient } from '../connections';\n\nexport const isPgNativePool = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.Pool => {\n return poolOrClient instanceof pg.Pool;\n};\n\nexport const isPgClient = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.Client => poolOrClient instanceof pg.Client;\n\nexport const isPgPoolClient = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.PoolClient =>\n 'release' in poolOrClient && typeof poolOrClient.release === 'function';\n\nexport const pgExecute = async <Result = void>(\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n handle: (client: pg.PoolClient | pg.Client) => Promise<Result>,\n) => {\n const client = isPgNativePool(poolOrClient)\n ? await poolOrClient.connect()\n : poolOrClient;\n\n try {\n return await handle(client);\n } finally {\n // release only if client wasn't injected externally\n if (isPgNativePool(poolOrClient) && isPgPoolClient(client))\n client.release();\n }\n};\n\nexport type PgSQLExecutor = DbSQLExecutor<PgDriverType, PgClientOrPoolClient>;\n\nexport const pgSQLExecutor = ({\n serializer,\n}: {\n serializer: JSONSerializer;\n}): PgSQLExecutor => ({\n driverType: PgDriverType,\n query: async <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sql: SQL,\n options: SQLQueryOptions | undefined,\n ) => {\n const results = await batchQuery<Result>(\n client,\n [sql],\n serializer,\n options,\n );\n return results[0]!;\n },\n batchQuery: <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n options: SQLQueryOptions | undefined,\n ) => batchQuery<Result>(client, sqls, serializer, options),\n command: async <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sql: SQL,\n options: BatchSQLCommandOptions | undefined,\n ) => {\n const results = await batchCommand<Result>(\n client,\n [sql],\n serializer,\n options,\n );\n return results[0]!;\n },\n batchCommand: <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n options: BatchSQLCommandOptions | undefined,\n ) => batchCommand<Result>(client, sqls, serializer, options),\n formatter: pgFormatter,\n});\n\nasync function batchQuery<Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n serializer: JSONSerializer,\n options?: SQLQueryOptions,\n): Promise<QueryResult<Result>[]> {\n const results: QueryResult<Result>[] = Array<QueryResult<Result>>(\n sqls.length,\n );\n\n if (options?.timeoutMs) {\n await client.query(`SET statement_timeout = ${options.timeoutMs}`);\n }\n\n //TODO: make it smarter at some point\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = pgFormatter.format(sqls[i]!, { serializer });\n tracer.info('db:sql:query', {\n query,\n params,\n debugSQL: pgFormatter.describe(sqls[i]!, { serializer }),\n });\n try {\n let result =\n params.length > 0\n ? await client.query<Result>(query, params)\n : await client.query<Result>(query);\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 results[i] = { rowCount: result.rowCount, rows: result.rows };\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapPostgresError(error);\n }\n }\n\n return results;\n}\n\nasync function batchCommand<Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n serializer: JSONSerializer,\n options?: BatchSQLCommandOptions,\n): Promise<QueryResult<Result>[]> {\n const results: QueryResult<Result>[] = Array<QueryResult<Result>>(\n sqls.length,\n );\n\n if (options?.timeoutMs) {\n await client.query(`SET statement_timeout = ${options.timeoutMs}`);\n }\n\n //TODO: make it smarter at some point\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = pgFormatter.format(sqls[i]!, { serializer });\n tracer.info('db:sql:command', {\n query,\n params,\n debugSQL: pgFormatter.describe(sqls[i]!, { serializer }),\n });\n try {\n let result =\n params.length > 0\n ? await client.query<Result>(query, params)\n : await client.query<Result>(query);\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 results[i] = { rowCount: result.rowCount, rows: result.rows };\n\n if (options?.assertChanges && (results[i]!.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapPostgresError(error);\n }\n }\n\n return results;\n}\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type AnyConnection,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { pgSQLExecutor } from '../execute';\nimport {\n PgDriverType,\n type PgConnection,\n type PgPoolOrClient,\n} from './connection';\n\nexport type PgTransaction = DatabaseTransaction<\n PgConnection,\n PgTransactionOptions\n>;\n\nexport type PgIsolationLevel =\n | 'READ UNCOMMITTED'\n | 'READ COMMITTED'\n | 'REPEATABLE READ'\n | 'SERIALIZABLE';\n\nexport type PgTransactionOptions = DatabaseTransactionOptions & {\n isolationLevel?: PgIsolationLevel;\n};\n\nexport const pgTransaction =\n <ConnectionType extends AnyConnection = AnyConnection>(\n connection: () => ConnectionType,\n serializer: JSONSerializer,\n ) =>\n <DbClient extends PgPoolOrClient = PgPoolOrClient>(\n getClient: Promise<DbClient>,\n options?: {\n close: (client: DbClient, error?: unknown) => Promise<void>;\n } & PgTransactionOptions,\n ): DatabaseTransaction<ConnectionType> => ({\n connection: connection(),\n driverType: PgDriverType,\n begin: async () => {\n const client = await getClient;\n const parts = ['BEGIN'];\n if (options?.isolationLevel) {\n parts.push(`ISOLATION LEVEL ${options.isolationLevel}`);\n }\n if (options?.readonly) {\n parts.push('READ ONLY');\n }\n await client.query(parts.join(' '));\n },\n commit: async () => {\n const client = await getClient;\n\n try {\n await client.query('COMMIT');\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async (error?: unknown) => {\n const client = await getClient;\n try {\n await client.query('ROLLBACK');\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(pgSQLExecutor({ serializer }), {\n connect: () => getClient,\n }),\n _transactionOptions: options ?? {},\n });\n","import pg from 'pg';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n createConnection,\n type Connection,\n type DatabaseTransaction,\n} from '../../../../core';\nimport type { PostgreSQLDriverType } from '../../core';\nimport { pgSQLExecutor } from '../execute';\nimport { pgTransaction, type PgTransactionOptions } from './transaction';\n\nexport type PgDriverType = PostgreSQLDriverType<'pg'>;\nexport const PgDriverType: PgDriverType = 'PostgreSQL:pg';\n\nexport type PgPoolClient = pg.PoolClient;\nexport type PgClient = pg.Client;\n\nexport type PgClientOrPoolClient = PgPoolClient | PgClient;\n\nexport type PgPoolOrClient = pg.Pool | PgPoolClient | PgClient;\n\nexport type PgClientConnection = Connection<\n PgClientConnection,\n PgDriverType,\n PgClient,\n DatabaseTransaction<PgClientConnection, PgTransactionOptions>\n>;\n\nexport type PgPoolClientConnection = Connection<\n PgPoolClientConnection,\n PgDriverType,\n PgPoolClient,\n DatabaseTransaction<PgPoolClientConnection, PgTransactionOptions>\n>;\n\nexport type PgConnection = PgPoolClientConnection | PgClientConnection;\n\nexport type PgPoolClientOptions = {\n type: 'PoolClient';\n connect: () => Promise<PgPoolClient>;\n close: (client: PgPoolClient) => Promise<void>;\n};\n\nexport type PgClientOptions = {\n type: 'Client';\n connect: () => Promise<PgClient>;\n close: (client: PgClient) => Promise<void>;\n};\n\nexport type PgClientConnectionOptions = PgClientOptions & {\n serializer: JSONSerializer;\n};\n\nexport type PgPoolClientConnectionOptions = PgPoolClientOptions & {\n serializer: JSONSerializer;\n};\n\nexport const pgClientConnection = (\n options: PgClientConnectionOptions,\n): PgClientConnection => {\n const { connect, close } = options;\n\n return createConnection({\n driverType: PgDriverType,\n connect,\n close,\n initTransaction: (connection) =>\n pgTransaction(connection, options.serializer),\n executor: pgSQLExecutor,\n serializer: options.serializer,\n });\n};\n\nexport const pgPoolClientConnection = (\n options: PgPoolClientConnectionOptions,\n): PgPoolClientConnection => {\n const { connect, close } = options;\n\n return createConnection({\n driverType: PgDriverType,\n connect,\n close,\n initTransaction: (connection) =>\n pgTransaction(connection, options.serializer),\n executor: pgSQLExecutor,\n serializer: options.serializer,\n });\n};\n\nexport type PgConnectionOptions =\n | PgPoolClientConnectionOptions\n | PgClientConnectionOptions;\n\nexport function pgConnection(\n options: PgPoolClientConnectionOptions,\n): PgPoolClientConnection;\nexport function pgConnection(\n options: PgClientConnectionOptions,\n): PgClientConnection;\nexport function pgConnection(\n options: PgPoolClientConnectionOptions | PgClientConnectionOptions,\n): PgPoolClientConnection | PgClientConnection {\n return options.type === 'Client'\n ? pgClientConnection(options)\n : pgPoolClientConnection(options);\n}\n\nexport type ConnectionCheckResult =\n | { successful: true }\n | {\n successful: false;\n code: string | undefined;\n errorType: 'ConnectionRefused' | 'Authentication' | 'Unknown';\n error: unknown;\n };\n\nexport const checkConnection = async (\n connectionString: string,\n): Promise<ConnectionCheckResult> => {\n const client = new pg.Client({\n connectionString,\n });\n\n try {\n await client.connect();\n return { successful: true };\n } catch (error) {\n const code =\n error instanceof Error &&\n 'code' in error &&\n typeof error.code === 'string'\n ? error.code\n : undefined;\n\n return {\n successful: false,\n errorType:\n code === 'ECONNREFUSED'\n ? 'ConnectionRefused'\n : code === '28P01'\n ? 'Authentication'\n : 'Unknown',\n code,\n error,\n };\n } finally {\n // Ensure the client is closed properly if connected\n await client.end();\n }\n};\n","import type pg from 'pg';\nimport type { JSONSerializer } from '../../../../core/serializer';\n\nexport const setPgTypeParser = (\n client: pg.Client | pg.PoolClient,\n options?: {\n parseBigInts?: boolean;\n serializer: JSONSerializer;\n },\n) => {\n // BigInt\n if (options?.parseBigInts === true)\n client.setTypeParser(20, (val) => BigInt(val));\n\n if (options?.serializer) {\n // JSONB\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n client.setTypeParser(3802, (val) => options.serializer.deserialize(val));\n\n // JSON\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n client.setTypeParser(114, (val) => options.serializer.deserialize(val));\n }\n};\n","import pg from 'pg';\nimport {\n createAmbientConnectionPool,\n createConnectionPool,\n JSONSerializer,\n tracer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport { defaultPostgreSqlDatabase, parseDatabaseName } from '../../core';\nimport { setPgTypeParser } from '../serialization';\nimport {\n pgConnection,\n PgDriverType,\n type PgClientConnection,\n type PgPoolClientConnection,\n} from './connection';\n\nexport type PgNativePool = ConnectionPool<PgPoolClientConnection>;\n\nexport type PgAmbientClientPool = ConnectionPool<PgClientConnection>;\n\nexport type PgAmbientConnectionPool = ConnectionPool<\n PgPoolClientConnection | PgClientConnection\n>;\n\nexport type PgPool =\n | PgNativePool\n | PgAmbientClientPool\n | PgAmbientConnectionPool;\n\nexport const pgNativePool = (options: {\n connectionString: string;\n database?: string | undefined;\n serializer: JSONSerializer;\n}): PgNativePool => {\n const { connectionString, database } = options;\n const pool = getPgPool({ connectionString, database });\n\n const getConnection = () =>\n pgConnection({\n type: 'PoolClient',\n connect: async () => {\n const client = await pool.connect();\n\n setPgTypeParser(client, {\n parseBigInts: true,\n serializer: options.serializer,\n });\n\n return client;\n },\n close: (client) => Promise.resolve(client.release()),\n serializer: options.serializer,\n });\n\n const open = () => Promise.resolve(getConnection());\n const close = () => endPgPool({ connectionString, database });\n\n return createConnectionPool({\n driverType: PgDriverType,\n connection: open,\n close,\n getConnection,\n });\n};\n\nexport const pgAmbientNativePool = (options: {\n pool: pg.Pool;\n serializer: JSONSerializer;\n}): PgNativePool => {\n const { pool } = options;\n\n return createConnectionPool({\n driverType: PgDriverType,\n getConnection: () =>\n pgConnection({\n type: 'PoolClient',\n connect: () => pool.connect(),\n close: (client) => Promise.resolve(client.release()),\n serializer: options.serializer,\n }),\n });\n};\n\nexport const pgAmbientConnectionPool = (options: {\n connection: PgPoolClientConnection | PgClientConnection;\n}): PgAmbientConnectionPool => {\n const { connection } = options;\n\n return createAmbientConnectionPool({\n driverType: PgDriverType,\n connection,\n });\n};\n\nexport const pgClientPool = (options: {\n connectionString: string;\n database?: string | undefined;\n serializer: JSONSerializer;\n}): PgAmbientClientPool => {\n const { connectionString, database } = options;\n\n return createConnectionPool({\n driverType: PgDriverType,\n getConnection: () => {\n const connect = async () => {\n const client = new pg.Client({ connectionString, database });\n\n setPgTypeParser(client, {\n parseBigInts: true,\n serializer: options.serializer,\n });\n\n await client.connect();\n return client;\n };\n\n return pgConnection({\n type: 'Client',\n connect,\n close: (client) => client.end(),\n serializer: options.serializer,\n });\n },\n });\n};\n\nexport const pgAmbientClientPool = (options: {\n client: pg.Client;\n serializer: JSONSerializer;\n}): PgAmbientClientPool => {\n const { client } = options;\n\n const getConnection = () => {\n const connect = () => Promise.resolve(client);\n\n return pgConnection({\n type: 'Client',\n connect,\n close: () => Promise.resolve(),\n serializer: options.serializer,\n });\n };\n\n const open = () => Promise.resolve(getConnection());\n const close = () => Promise.resolve();\n\n return createConnectionPool({\n driverType: PgDriverType,\n connection: open,\n close,\n getConnection,\n });\n};\n\nexport type PgPoolPooledOptions =\n | {\n connectionString: string;\n database?: string;\n pooled: true;\n pool: pg.Pool;\n }\n | {\n connectionString: string;\n database?: string;\n pool: pg.Pool;\n }\n | {\n connectionString: string;\n database?: string;\n pooled: true;\n }\n | {\n connectionString: string;\n database?: string;\n };\n\nexport type PgPoolNotPooledOptions =\n | {\n connectionString: string;\n database?: string;\n pooled: false;\n client: pg.Client;\n }\n | {\n connectionString: string;\n database?: string;\n client: pg.Client;\n }\n | {\n connectionString: string;\n database?: string;\n pooled: false;\n }\n | {\n connectionString: string;\n database?: string;\n connection: PgPoolClientConnection | PgClientConnection;\n pooled?: false;\n };\n\nexport type PgPoolOptions = (PgPoolPooledOptions | PgPoolNotPooledOptions) &\n JSONSerializationOptions;\n\nexport function pgPool(options: PgPoolPooledOptions): PgNativePool;\nexport function pgPool(options: PgPoolNotPooledOptions): PgAmbientClientPool;\nexport function pgPool(\n options: PgPoolOptions,\n): PgNativePool | PgAmbientClientPool | PgAmbientConnectionPool {\n const { connectionString, database } = options;\n\n const serializer = options.serialization?.serializer ?? JSONSerializer;\n\n if ('client' in options && options.client)\n return pgAmbientClientPool({ client: options.client, serializer });\n\n if ('connection' in options && options.connection)\n return pgAmbientConnectionPool({\n connection: options.connection,\n });\n\n if ('pooled' in options && options.pooled === false)\n return pgClientPool({ connectionString, database, serializer });\n\n if ('pool' in options && options.pool)\n return pgAmbientNativePool({ pool: options.pool, serializer });\n\n return pgNativePool({\n connectionString,\n database,\n serializer,\n });\n}\n\nconst pools: Map<string, pg.Pool> = new Map();\nconst usageCounter: Map<string, number> = new Map();\n\nexport const getPgPool = (\n connectionStringOrOptions: string | pg.PoolConfig,\n): pg.Pool => {\n const connectionString =\n typeof connectionStringOrOptions === 'string'\n ? connectionStringOrOptions\n : connectionStringOrOptions.connectionString!;\n\n const poolOptions =\n typeof connectionStringOrOptions === 'string'\n ? { connectionString }\n : connectionStringOrOptions;\n\n const database =\n poolOptions.database ??\n (poolOptions.connectionString\n ? (parseDatabaseName(poolOptions.connectionString) ??\n defaultPostgreSqlDatabase)\n : undefined);\n\n const lookupKey = key(connectionString, database);\n\n updatePoolUsageCounter(lookupKey, 1);\n\n return (\n pools.get(lookupKey) ??\n pools.set(lookupKey, new pg.Pool(poolOptions)).get(lookupKey)!\n );\n};\n\nexport const endPgPool = async ({\n connectionString,\n database,\n force,\n}: {\n connectionString: string;\n database?: string | undefined;\n force?: boolean;\n}): Promise<void> => {\n database = database ?? parseDatabaseName(connectionString) ?? undefined;\n const lookupKey = key(connectionString, database);\n\n const pool = pools.get(lookupKey);\n if (pool && (updatePoolUsageCounter(lookupKey, -1) <= 0 || force === true)) {\n await onEndPool(lookupKey, pool);\n }\n};\n\nexport const onEndPool = async (lookupKey: string, pool: pg.Pool) => {\n try {\n await pool.end();\n } catch (error) {\n tracer.error('connection-closing-error', { lookupKey, error });\n }\n pools.delete(lookupKey);\n};\n\nexport const endAllPgPools = () =>\n Promise.all(\n [...pools.entries()].map(([lookupKey, pool]) => onEndPool(lookupKey, pool)),\n );\n\nconst key = (connectionString: string, database: string | undefined) =>\n `${connectionString}|${database ?? defaultPostgreSqlDatabase}`;\n\nconst updatePoolUsageCounter = (lookupKey: string, by: 1 | -1): number => {\n const currentCounter = usageCounter.get(lookupKey) ?? 0;\n const newCounter = currentCounter + by;\n\n usageCounter.set(lookupKey, currentCounter + by);\n\n return newCounter;\n};\n","import {\n canHandleDriverWithConnectionString,\n type DumboDatabaseDriver,\n dumboDatabaseDriverRegistry,\n} from '../../../core';\nimport {\n DefaultPostgreSQLMigratorOptions,\n pgFormatter,\n PostgreSQLConnectionString,\n postgreSQLMetadata,\n} from '../core';\nimport {\n type PgConnection,\n PgDriverType,\n pgPool,\n type PgPool,\n type PgPoolOptions,\n} from './connections';\n\nconst tryParseConnectionString = (connectionString: string) => {\n try {\n return PostgreSQLConnectionString(connectionString);\n } catch {\n return null;\n }\n};\n\nexport const pgDumboDriver: DumboDatabaseDriver<\n PgConnection,\n PgPoolOptions,\n PgPool\n> = {\n driverType: PgDriverType,\n createPool: (options) => pgPool(options as PgPoolOptions),\n sqlFormatter: pgFormatter,\n defaultMigratorOptions: DefaultPostgreSQLMigratorOptions,\n canHandle: canHandleDriverWithConnectionString(\n PgDriverType,\n tryParseConnectionString,\n ),\n databaseMetadata: postgreSQLMetadata,\n};\n\nexport const usePgDumboDriver = () => {\n dumboDatabaseDriverRegistry.register(PgDriverType, pgDumboDriver);\n};\n\nusePgDumboDriver();\n\nexport type PgDumboOptions = PgPoolOptions;\nexport * from './connections';\nexport * from './execute';\nexport * from './serialization';\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pg.js","names":[],"sources":["../src/storage/postgresql/pg/execute/execute.ts","../src/storage/postgresql/pg/connections/transaction.ts","../src/storage/postgresql/pg/connections/connection.ts","../src/storage/postgresql/pg/serialization/index.ts","../src/storage/postgresql/pg/connections/pool.ts","../src/storage/postgresql/pg/index.ts"],"sourcesContent":["import pg from 'pg';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n BatchCommandNoChangesError,\n mapSQLQueryResult,\n tracer,\n type BatchSQLCommandOptions,\n type DbSQLExecutor,\n type QueryResult,\n type QueryResultRow,\n type SQL,\n type SQLQueryOptions,\n} from '../../../../core';\nimport { pgFormatter } from '../../core';\nimport { mapPostgresError } from '../../core/errors/errorMapper';\nimport { PgDriverType, type PgClientOrPoolClient } from '../connections';\n\nexport const isPgNativePool = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.Pool => {\n return poolOrClient instanceof pg.Pool;\n};\n\nexport const isPgClient = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.Client => poolOrClient instanceof pg.Client;\n\nexport const isPgPoolClient = (\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n): poolOrClient is pg.PoolClient =>\n 'release' in poolOrClient && typeof poolOrClient.release === 'function';\n\nexport const pgExecute = async <Result = void>(\n poolOrClient: pg.Pool | pg.PoolClient | pg.Client,\n handle: (client: pg.PoolClient | pg.Client) => Promise<Result>,\n) => {\n const client = isPgNativePool(poolOrClient)\n ? await poolOrClient.connect()\n : poolOrClient;\n\n try {\n return await handle(client);\n } finally {\n // release only if client wasn't injected externally\n if (isPgNativePool(poolOrClient) && isPgPoolClient(client))\n client.release();\n }\n};\n\nexport type PgSQLExecutor = DbSQLExecutor<PgDriverType, PgClientOrPoolClient>;\n\nexport const pgSQLExecutor = ({\n serializer,\n}: {\n serializer: JSONSerializer;\n}): PgSQLExecutor => ({\n driverType: PgDriverType,\n query: async <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sql: SQL,\n options: SQLQueryOptions | undefined,\n ) => {\n const results = await batchQuery<Result>(\n client,\n [sql],\n serializer,\n options,\n );\n return results[0]!;\n },\n batchQuery: <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n options: SQLQueryOptions | undefined,\n ) => batchQuery<Result>(client, sqls, serializer, options),\n command: async <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sql: SQL,\n options: BatchSQLCommandOptions | undefined,\n ) => {\n const results = await batchCommand<Result>(\n client,\n [sql],\n serializer,\n options,\n );\n return results[0]!;\n },\n batchCommand: <Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n options: BatchSQLCommandOptions | undefined,\n ) => batchCommand<Result>(client, sqls, serializer, options),\n formatter: pgFormatter,\n});\n\nasync function batchQuery<Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n serializer: JSONSerializer,\n options?: SQLQueryOptions,\n): Promise<QueryResult<Result>[]> {\n const results: QueryResult<Result>[] = Array<QueryResult<Result>>(\n sqls.length,\n );\n\n if (options?.timeoutMs) {\n await client.query(`SET statement_timeout = ${options.timeoutMs}`);\n }\n\n //TODO: make it smarter at some point\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = pgFormatter.format(sqls[i]!, { serializer });\n tracer.info('db:sql:query', {\n query,\n params,\n debugSQL: pgFormatter.describe(sqls[i]!, { serializer }),\n });\n try {\n let result =\n params.length > 0\n ? await client.query<Result>(query, params)\n : await client.query<Result>(query);\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 results[i] = { rowCount: result.rowCount, rows: result.rows };\n } catch (error) {\n tracer.error('db:sql:batch_query:execute:error', { error });\n throw mapPostgresError(error);\n }\n }\n\n return results;\n}\n\nasync function batchCommand<Result extends QueryResultRow = QueryResultRow>(\n client: PgClientOrPoolClient,\n sqls: SQL[],\n serializer: JSONSerializer,\n options?: BatchSQLCommandOptions,\n): Promise<QueryResult<Result>[]> {\n const results: QueryResult<Result>[] = Array<QueryResult<Result>>(\n sqls.length,\n );\n\n if (options?.timeoutMs) {\n await client.query(`SET statement_timeout = ${options.timeoutMs}`);\n }\n\n //TODO: make it smarter at some point\n for (let i = 0; i < sqls.length; i++) {\n const { query, params } = pgFormatter.format(sqls[i]!, { serializer });\n tracer.info('db:sql:command', {\n query,\n params,\n debugSQL: pgFormatter.describe(sqls[i]!, { serializer }),\n });\n try {\n let result =\n params.length > 0\n ? await client.query<Result>(query, params)\n : await client.query<Result>(query);\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 results[i] = { rowCount: result.rowCount, rows: result.rows };\n\n if (options?.assertChanges && (results[i]!.rowCount ?? 0) === 0) {\n throw new BatchCommandNoChangesError(i);\n }\n } catch (error) {\n tracer.error('db:sql:batch_command:execute:error', { error });\n throw mapPostgresError(error);\n }\n }\n\n return results;\n}\n","import type { JSONSerializer } from '../../../../core';\nimport {\n sqlExecutor,\n type AnyConnection,\n type DatabaseTransaction,\n type DatabaseTransactionOptions,\n} from '../../../../core';\nimport { pgSQLExecutor } from '../execute';\nimport {\n PgDriverType,\n type PgConnection,\n type PgPoolOrClient,\n} from './connection';\n\nexport type PgTransaction = DatabaseTransaction<\n PgConnection,\n PgTransactionOptions\n>;\n\nexport type PgIsolationLevel =\n 'READ UNCOMMITTED' | 'READ COMMITTED' | 'REPEATABLE READ' | 'SERIALIZABLE';\n\nexport type PgTransactionOptions = DatabaseTransactionOptions & {\n isolationLevel?: PgIsolationLevel;\n};\n\nexport const pgTransaction =\n <ConnectionType extends AnyConnection = AnyConnection>(\n connection: () => ConnectionType,\n serializer: JSONSerializer,\n ) =>\n <DbClient extends PgPoolOrClient = PgPoolOrClient>(\n getClient: Promise<DbClient>,\n options?: {\n close: (client: DbClient, error?: unknown) => Promise<void>;\n } & PgTransactionOptions,\n ): DatabaseTransaction<ConnectionType> => ({\n connection: connection(),\n driverType: PgDriverType,\n begin: async () => {\n const client = await getClient;\n const parts = ['BEGIN'];\n if (options?.isolationLevel) {\n parts.push(`ISOLATION LEVEL ${options.isolationLevel}`);\n }\n if (options?.readonly) {\n parts.push('READ ONLY');\n }\n await client.query(parts.join(' '));\n },\n commit: async () => {\n const client = await getClient;\n\n try {\n await client.query('COMMIT');\n } finally {\n if (options?.close) await options?.close(client);\n }\n },\n rollback: async (error?: unknown) => {\n const client = await getClient;\n try {\n await client.query('ROLLBACK');\n } finally {\n if (options?.close) await options?.close(client, error);\n }\n },\n execute: sqlExecutor(pgSQLExecutor({ serializer }), {\n connect: () => getClient,\n }),\n _transactionOptions: options ?? {},\n });\n","import pg from 'pg';\nimport type { JSONSerializer } from '../../../../core';\nimport {\n createConnection,\n type Connection,\n type DatabaseTransaction,\n} from '../../../../core';\nimport type { PostgreSQLDriverType } from '../../core';\nimport { pgSQLExecutor } from '../execute';\nimport { pgTransaction, type PgTransactionOptions } from './transaction';\n\nexport type PgDriverType = PostgreSQLDriverType<'pg'>;\nexport const PgDriverType: PgDriverType = 'PostgreSQL:pg';\n\nexport type PgPoolClient = pg.PoolClient;\nexport type PgClient = pg.Client;\n\nexport type PgClientOrPoolClient = PgPoolClient | PgClient;\n\nexport type PgPoolOrClient = pg.Pool | PgPoolClient | PgClient;\n\nexport type PgClientConnection = Connection<\n PgClientConnection,\n PgDriverType,\n PgClient,\n DatabaseTransaction<PgClientConnection, PgTransactionOptions>\n>;\n\nexport type PgPoolClientConnection = Connection<\n PgPoolClientConnection,\n PgDriverType,\n PgPoolClient,\n DatabaseTransaction<PgPoolClientConnection, PgTransactionOptions>\n>;\n\nexport type PgConnection = PgPoolClientConnection | PgClientConnection;\n\nexport type PgPoolClientOptions = {\n type: 'PoolClient';\n connect: () => Promise<PgPoolClient>;\n close: (client: PgPoolClient) => Promise<void>;\n};\n\nexport type PgClientOptions = {\n type: 'Client';\n connect: () => Promise<PgClient>;\n close: (client: PgClient) => Promise<void>;\n};\n\nexport type PgClientConnectionOptions = PgClientOptions & {\n serializer: JSONSerializer;\n};\n\nexport type PgPoolClientConnectionOptions = PgPoolClientOptions & {\n serializer: JSONSerializer;\n};\n\nexport const pgClientConnection = (\n options: PgClientConnectionOptions,\n): PgClientConnection => {\n const { connect, close } = options;\n\n return createConnection({\n driverType: PgDriverType,\n connect,\n close,\n initTransaction: (connection) =>\n pgTransaction(connection, options.serializer),\n executor: pgSQLExecutor,\n serializer: options.serializer,\n });\n};\n\nexport const pgPoolClientConnection = (\n options: PgPoolClientConnectionOptions,\n): PgPoolClientConnection => {\n const { connect, close } = options;\n\n return createConnection({\n driverType: PgDriverType,\n connect,\n close,\n initTransaction: (connection) =>\n pgTransaction(connection, options.serializer),\n executor: pgSQLExecutor,\n serializer: options.serializer,\n });\n};\n\nexport type PgConnectionOptions =\n PgPoolClientConnectionOptions | PgClientConnectionOptions;\n\nexport function pgConnection(\n options: PgPoolClientConnectionOptions,\n): PgPoolClientConnection;\nexport function pgConnection(\n options: PgClientConnectionOptions,\n): PgClientConnection;\nexport function pgConnection(\n options: PgPoolClientConnectionOptions | PgClientConnectionOptions,\n): PgPoolClientConnection | PgClientConnection {\n return options.type === 'Client'\n ? pgClientConnection(options)\n : pgPoolClientConnection(options);\n}\n\nexport type ConnectionCheckResult =\n | { successful: true }\n | {\n successful: false;\n code: string | undefined;\n errorType: 'ConnectionRefused' | 'Authentication' | 'Unknown';\n error: unknown;\n };\n\nexport const checkConnection = async (\n connectionString: string,\n): Promise<ConnectionCheckResult> => {\n const client = new pg.Client({\n connectionString,\n });\n\n try {\n await client.connect();\n return { successful: true };\n } catch (error) {\n const code =\n error instanceof Error &&\n 'code' in error &&\n typeof error.code === 'string'\n ? error.code\n : undefined;\n\n return {\n successful: false,\n errorType:\n code === 'ECONNREFUSED'\n ? 'ConnectionRefused'\n : code === '28P01'\n ? 'Authentication'\n : 'Unknown',\n code,\n error,\n };\n } finally {\n // Ensure the client is closed properly if connected\n await client.end();\n }\n};\n","import type pg from 'pg';\nimport type { JSONSerializer } from '../../../../core/serializer';\n\nexport const setPgTypeParser = (\n client: pg.Client | pg.PoolClient,\n options?: {\n parseBigInts?: boolean;\n serializer: JSONSerializer;\n },\n) => {\n // BigInt\n if (options?.parseBigInts === true)\n client.setTypeParser(20, (val) => BigInt(val));\n\n if (options?.serializer) {\n // JSONB\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n client.setTypeParser(3802, (val) => options.serializer.deserialize(val));\n\n // JSON\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\n client.setTypeParser(114, (val) => options.serializer.deserialize(val));\n }\n};\n","import pg from 'pg';\nimport {\n createAmbientConnectionPool,\n createConnectionPool,\n JSONSerializer,\n tracer,\n type ConnectionPool,\n type JSONSerializationOptions,\n} from '../../../../core';\nimport { defaultPostgreSqlDatabase, parseDatabaseName } from '../../core';\nimport { setPgTypeParser } from '../serialization';\nimport {\n pgConnection,\n PgDriverType,\n type PgClientConnection,\n type PgPoolClientConnection,\n} from './connection';\n\nexport type PgNativePool = ConnectionPool<PgPoolClientConnection>;\n\nexport type PgAmbientClientPool = ConnectionPool<PgClientConnection>;\n\nexport type PgAmbientConnectionPool = ConnectionPool<\n PgPoolClientConnection | PgClientConnection\n>;\n\nexport type PgPool =\n PgNativePool | PgAmbientClientPool | PgAmbientConnectionPool;\n\nexport const pgNativePool = (options: {\n connectionString: string;\n database?: string | undefined;\n serializer: JSONSerializer;\n}): PgNativePool => {\n const { connectionString, database } = options;\n const pool = getPgPool({ connectionString, database });\n\n const getConnection = () =>\n pgConnection({\n type: 'PoolClient',\n connect: async () => {\n const client = await pool.connect();\n\n setPgTypeParser(client, {\n parseBigInts: true,\n serializer: options.serializer,\n });\n\n return client;\n },\n close: (client) => Promise.resolve(client.release()),\n serializer: options.serializer,\n });\n\n const open = () => Promise.resolve(getConnection());\n const close = () => endPgPool({ connectionString, database });\n\n return createConnectionPool({\n driverType: PgDriverType,\n connection: open,\n close,\n getConnection,\n });\n};\n\nexport const pgAmbientNativePool = (options: {\n pool: pg.Pool;\n serializer: JSONSerializer;\n}): PgNativePool => {\n const { pool } = options;\n\n return createConnectionPool({\n driverType: PgDriverType,\n getConnection: () =>\n pgConnection({\n type: 'PoolClient',\n connect: () => pool.connect(),\n close: (client) => Promise.resolve(client.release()),\n serializer: options.serializer,\n }),\n });\n};\n\nexport const pgAmbientConnectionPool = (options: {\n connection: PgPoolClientConnection | PgClientConnection;\n}): PgAmbientConnectionPool => {\n const { connection } = options;\n\n return createAmbientConnectionPool({\n driverType: PgDriverType,\n connection,\n });\n};\n\nexport const pgClientPool = (options: {\n connectionString: string;\n database?: string | undefined;\n serializer: JSONSerializer;\n}): PgAmbientClientPool => {\n const { connectionString, database } = options;\n\n return createConnectionPool({\n driverType: PgDriverType,\n getConnection: () => {\n const connect = async () => {\n const client = new pg.Client({ connectionString, database });\n\n setPgTypeParser(client, {\n parseBigInts: true,\n serializer: options.serializer,\n });\n\n await client.connect();\n return client;\n };\n\n return pgConnection({\n type: 'Client',\n connect,\n close: (client) => client.end(),\n serializer: options.serializer,\n });\n },\n });\n};\n\nexport const pgAmbientClientPool = (options: {\n client: pg.Client;\n serializer: JSONSerializer;\n}): PgAmbientClientPool => {\n const { client } = options;\n\n const getConnection = () => {\n const connect = () => Promise.resolve(client);\n\n return pgConnection({\n type: 'Client',\n connect,\n close: () => Promise.resolve(),\n serializer: options.serializer,\n });\n };\n\n const open = () => Promise.resolve(getConnection());\n const close = () => Promise.resolve();\n\n return createConnectionPool({\n driverType: PgDriverType,\n connection: open,\n close,\n getConnection,\n });\n};\n\nexport type PgPoolPooledOptions =\n | {\n connectionString: string;\n database?: string;\n pooled: true;\n pool: pg.Pool;\n }\n | {\n connectionString: string;\n database?: string;\n pool: pg.Pool;\n }\n | {\n connectionString: string;\n database?: string;\n pooled: true;\n }\n | {\n connectionString: string;\n database?: string;\n };\n\nexport type PgPoolNotPooledOptions =\n | {\n connectionString: string;\n database?: string;\n pooled: false;\n client: pg.Client;\n }\n | {\n connectionString: string;\n database?: string;\n client: pg.Client;\n }\n | {\n connectionString: string;\n database?: string;\n pooled: false;\n }\n | {\n connectionString: string;\n database?: string;\n connection: PgPoolClientConnection | PgClientConnection;\n pooled?: false;\n };\n\nexport type PgPoolOptions = (PgPoolPooledOptions | PgPoolNotPooledOptions) &\n JSONSerializationOptions;\n\nexport function pgPool(options: PgPoolPooledOptions): PgNativePool;\nexport function pgPool(options: PgPoolNotPooledOptions): PgAmbientClientPool;\nexport function pgPool(\n options: PgPoolOptions,\n): PgNativePool | PgAmbientClientPool | PgAmbientConnectionPool {\n const { connectionString, database } = options;\n\n const serializer = options.serialization?.serializer ?? JSONSerializer;\n\n if ('client' in options && options.client)\n return pgAmbientClientPool({ client: options.client, serializer });\n\n if ('connection' in options && options.connection)\n return pgAmbientConnectionPool({\n connection: options.connection,\n });\n\n if ('pooled' in options && options.pooled === false)\n return pgClientPool({ connectionString, database, serializer });\n\n if ('pool' in options && options.pool)\n return pgAmbientNativePool({ pool: options.pool, serializer });\n\n return pgNativePool({\n connectionString,\n database,\n serializer,\n });\n}\n\nconst pools: Map<string, pg.Pool> = new Map();\nconst usageCounter: Map<string, number> = new Map();\n\nexport const getPgPool = (\n connectionStringOrOptions: string | pg.PoolConfig,\n): pg.Pool => {\n const connectionString =\n typeof connectionStringOrOptions === 'string'\n ? connectionStringOrOptions\n : connectionStringOrOptions.connectionString!;\n\n const poolOptions =\n typeof connectionStringOrOptions === 'string'\n ? { connectionString }\n : connectionStringOrOptions;\n\n const database =\n poolOptions.database ??\n (poolOptions.connectionString\n ? (parseDatabaseName(poolOptions.connectionString) ??\n defaultPostgreSqlDatabase)\n : undefined);\n\n const lookupKey = key(connectionString, database);\n\n updatePoolUsageCounter(lookupKey, 1);\n\n return (\n pools.get(lookupKey) ??\n pools.set(lookupKey, new pg.Pool(poolOptions)).get(lookupKey)!\n );\n};\n\nexport const endPgPool = async ({\n connectionString,\n database,\n force,\n}: {\n connectionString: string;\n database?: string | undefined;\n force?: boolean;\n}): Promise<void> => {\n database = database ?? parseDatabaseName(connectionString) ?? undefined;\n const lookupKey = key(connectionString, database);\n\n const pool = pools.get(lookupKey);\n if (pool && (updatePoolUsageCounter(lookupKey, -1) <= 0 || force === true)) {\n await onEndPool(lookupKey, pool);\n }\n};\n\nexport const onEndPool = async (lookupKey: string, pool: pg.Pool) => {\n try {\n await pool.end();\n } catch (error) {\n tracer.error('connection-closing-error', { lookupKey, error });\n }\n pools.delete(lookupKey);\n};\n\nexport const endAllPgPools = () =>\n Promise.all(\n [...pools.entries()].map(([lookupKey, pool]) => onEndPool(lookupKey, pool)),\n );\n\nconst key = (connectionString: string, database: string | undefined) =>\n `${connectionString}|${database ?? defaultPostgreSqlDatabase}`;\n\nconst updatePoolUsageCounter = (lookupKey: string, by: 1 | -1): number => {\n const currentCounter = usageCounter.get(lookupKey) ?? 0;\n const newCounter = currentCounter + by;\n\n usageCounter.set(lookupKey, currentCounter + by);\n\n return newCounter;\n};\n","import {\n canHandleDriverWithConnectionString,\n type DumboDatabaseDriver,\n dumboDatabaseDriverRegistry,\n} from '../../../core';\nimport {\n DefaultPostgreSQLMigratorOptions,\n pgFormatter,\n PostgreSQLConnectionString,\n postgreSQLMetadata,\n} from '../core';\nimport {\n type PgConnection,\n PgDriverType,\n pgPool,\n type PgPool,\n type PgPoolOptions,\n} from './connections';\n\nconst tryParseConnectionString = (connectionString: string) => {\n try {\n return PostgreSQLConnectionString(connectionString);\n } catch {\n return null;\n }\n};\n\nexport const pgDumboDriver: DumboDatabaseDriver<\n PgConnection,\n PgPoolOptions,\n PgPool\n> = {\n driverType: PgDriverType,\n createPool: (options) => pgPool(options as PgPoolOptions),\n sqlFormatter: pgFormatter,\n defaultMigratorOptions: DefaultPostgreSQLMigratorOptions,\n canHandle: canHandleDriverWithConnectionString(\n PgDriverType,\n tryParseConnectionString,\n ),\n databaseMetadata: postgreSQLMetadata,\n};\n\nexport const usePgDumboDriver = () => {\n dumboDatabaseDriverRegistry.register(PgDriverType, pgDumboDriver);\n};\n\nusePgDumboDriver();\n\nexport type PgDumboOptions = PgPoolOptions;\nexport * from './connections';\nexport * from './execute';\nexport * from './serialization';\n"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
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-
|
|
65
|
+
//# sourceMappingURL=postgreSQLMetadata-BTz6vdwE.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgreSQLMetadata-
|
|
1
|
+
{"version":3,"file":"postgreSQLMetadata-BTz6vdwE.js","names":[],"sources":["../src/storage/postgresql/core/connections/connectionString.ts","../src/storage/postgresql/core/schema/schema.ts","../src/storage/postgresql/core/schema/postgreSQLMetadata.ts"],"sourcesContent":["import type { DatabaseConnectionString } from '../../../all';\n\nexport const defaultPostgreSQLConnectionString: PostgreSQLConnectionString =\n 'postgresql://postgres@localhost:5432/postgres' as PostgreSQLConnectionString;\n\nexport type PostgreSQLConnectionString = DatabaseConnectionString<\n 'PostgreSQL',\n `postgresql://${string}` | `postgres://${string}`\n>;\n\nexport const PostgreSQLConnectionString = (\n connectionString: string,\n): PostgreSQLConnectionString => {\n if (\n !connectionString.startsWith('postgresql://') &&\n !connectionString.startsWith('postgres://')\n ) {\n throw new Error(\n `Invalid PostgreSQL connection string: ${connectionString}. It should start with \"postgresql://\".`,\n );\n }\n return connectionString as PostgreSQLConnectionString;\n};\n\n// Stripped from https://github.com/brianc/node-postgres\n// Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)\n// MIT License\n/**\n * Parse database name from a PostgreSQL connection string\n */\nexport function parseDatabaseName(str: string): string | null {\n // Unix socket format: /path/to/socket database_name\n if (str.charAt(0) === '/') {\n const parts = str.split(' ');\n return parts[1] || null;\n }\n\n // Encode spaces if present\n if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {\n str = encodeURI(str).replace(/%25(\\d\\d)/g, '%$1');\n }\n\n let result: URL;\n try {\n result = new URL(str, 'postgres://base');\n } catch {\n // Try with dummy host for malformed URLs\n try {\n result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base');\n } catch {\n return null;\n }\n }\n\n // Socket protocol: socket://path?db=dbname\n if (result.protocol === 'socket:') {\n return result.searchParams.get('db');\n }\n\n // Standard URL: postgres://user:pass@host:port/database\n const pathname = result.pathname.slice(1) || null;\n return pathname ? decodeURI(pathname) : null;\n}\n","import { exists, SQL, type SQLExecutor } from '../../../../core';\nexport * from './schema';\n\nexport const defaultPostgreSqlDatabase = 'postgres';\n\nexport const tableExistsSQL = (tableName: string): SQL =>\n SQL`\n SELECT EXISTS (\n SELECT FROM pg_tables\n WHERE tablename = ${tableName}\n ) AS exists;`;\n\nexport const tableExists = async (\n execute: SQLExecutor,\n tableName: string,\n): Promise<boolean> => exists(execute.query(tableExistsSQL(tableName)));\n\nexport const functionExistsSQL = (functionName: string): SQL =>\n SQL`\n SELECT EXISTS (\n SELECT FROM pg_proc\n WHERE\n proname = ${functionName}\n ) AS exists;`;\n\nexport const functionExists = async (\n execute: SQLExecutor,\n functionName: string,\n): Promise<boolean> => exists(execute.query(functionExistsSQL(functionName)));\n","import type { DatabaseMetadata } from '../../../../core';\nimport { parseDatabaseName } from '../connections';\nimport {\n defaultPostgreSqlDatabase,\n functionExists,\n tableExists,\n} from './schema';\n\nexport const postgreSQLMetadata: DatabaseMetadata<true, true, true> = {\n databaseType: 'PostgreSQL',\n defaultDatabaseName: defaultPostgreSqlDatabase,\n capabilities: {\n supportsSchemas: true,\n supportsFunctions: true,\n supportsMultipleDatabases: true,\n },\n tableExists,\n functionExists,\n parseDatabaseName: (connectionString?: string) =>\n (connectionString ? parseDatabaseName(connectionString) : null) ??\n defaultPostgreSqlDatabase,\n};\n\ndumboDatabaseMetadataRegistry.register('PostgreSQL', postgreSQLMetadata);\n"],"mappings":";;;AAEA,MAAa,oCACX;AAOF,MAAa,8BACX,qBAC+B;AAC/B,KACE,CAAC,iBAAiB,WAAW,gBAAgB,IAC7C,CAAC,iBAAiB,WAAW,cAAc,CAE3C,OAAM,IAAI,MACR,yCAAyC,iBAAiB,yCAC3D;AAEH,QAAO;;;;;AAST,SAAgB,kBAAkB,KAA4B;AAE5D,KAAI,IAAI,OAAO,EAAE,KAAK,IAEpB,QADc,IAAI,MAAM,IACZ,CAAC,MAAM;AAIrB,KAAI,mCAAmC,KAAK,IAAI,CAC9C,OAAM,UAAU,IAAI,CAAC,QAAQ,cAAc,MAAM;CAGnD,IAAI;AACJ,KAAI;AACF,WAAS,IAAI,IAAI,KAAK,kBAAkB;SAClC;AAEN,MAAI;AACF,YAAS,IAAI,IAAI,IAAI,QAAQ,MAAM,gBAAgB,EAAE,kBAAkB;UACjE;AACN,UAAO;;;AAKX,KAAI,OAAO,aAAa,UACtB,QAAO,OAAO,aAAa,IAAI,KAAK;CAItC,MAAM,WAAW,OAAO,SAAS,MAAM,EAAE,IAAI;AAC7C,QAAO,WAAW,UAAU,SAAS,GAAG;;;;;AC1D1C,MAAa,4BAA4B;AAEzC,MAAa,kBAAkB,cAC7B,GAAG;;;wBAGmB,UAAU;;AAGlC,MAAa,cAAc,OACzB,SACA,cACqB,OAAO,QAAQ,MAAM,eAAe,UAAU,CAAC,CAAC;AAEvE,MAAa,qBAAqB,iBAChC,GAAG;;;;oBAIe,aAAa;;AAGjC,MAAa,iBAAiB,OAC5B,SACA,iBACqB,OAAO,QAAQ,MAAM,kBAAkB,aAAa,CAAC,CAAC;;;;ACpB7E,MAAa,qBAAyD;CACpE,cAAc;CACd,qBAAqB;CACrB,cAAc;EACZ,iBAAiB;EACjB,mBAAmB;EACnB,2BAA2B;EAC5B;CACD;CACA;CACA,oBAAoB,sBACjB,mBAAmB,kBAAkB,iBAAiB,GAAG;CAE7D;AAED,8BAA8B,SAAS,cAAc,mBAAmB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const require_core = require('./core-
|
|
1
|
+
const require_core = require('./core-D-smW7cm.cjs');
|
|
2
2
|
|
|
3
3
|
//#region src/storage/postgresql/core/connections/connectionString.ts
|
|
4
4
|
const defaultPostgreSQLConnectionString = "postgresql://postgres@localhost:5432/postgres";
|
|
@@ -115,4 +115,4 @@ Object.defineProperty(exports, 'tableExistsSQL', {
|
|
|
115
115
|
return tableExistsSQL;
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
|
-
//# sourceMappingURL=postgreSQLMetadata-
|
|
118
|
+
//# sourceMappingURL=postgreSQLMetadata-WGXySO7a.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgreSQLMetadata-
|
|
1
|
+
{"version":3,"file":"postgreSQLMetadata-WGXySO7a.cjs","names":["exists"],"sources":["../src/storage/postgresql/core/connections/connectionString.ts","../src/storage/postgresql/core/schema/schema.ts","../src/storage/postgresql/core/schema/postgreSQLMetadata.ts"],"sourcesContent":["import type { DatabaseConnectionString } from '../../../all';\n\nexport const defaultPostgreSQLConnectionString: PostgreSQLConnectionString =\n 'postgresql://postgres@localhost:5432/postgres' as PostgreSQLConnectionString;\n\nexport type PostgreSQLConnectionString = DatabaseConnectionString<\n 'PostgreSQL',\n `postgresql://${string}` | `postgres://${string}`\n>;\n\nexport const PostgreSQLConnectionString = (\n connectionString: string,\n): PostgreSQLConnectionString => {\n if (\n !connectionString.startsWith('postgresql://') &&\n !connectionString.startsWith('postgres://')\n ) {\n throw new Error(\n `Invalid PostgreSQL connection string: ${connectionString}. It should start with \"postgresql://\".`,\n );\n }\n return connectionString as PostgreSQLConnectionString;\n};\n\n// Stripped from https://github.com/brianc/node-postgres\n// Copyright (c) 2010-2014 Brian Carlson (brian.m.carlson@gmail.com)\n// MIT License\n/**\n * Parse database name from a PostgreSQL connection string\n */\nexport function parseDatabaseName(str: string): string | null {\n // Unix socket format: /path/to/socket database_name\n if (str.charAt(0) === '/') {\n const parts = str.split(' ');\n return parts[1] || null;\n }\n\n // Encode spaces if present\n if (/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(str)) {\n str = encodeURI(str).replace(/%25(\\d\\d)/g, '%$1');\n }\n\n let result: URL;\n try {\n result = new URL(str, 'postgres://base');\n } catch {\n // Try with dummy host for malformed URLs\n try {\n result = new URL(str.replace('@/', '@___DUMMY___/'), 'postgres://base');\n } catch {\n return null;\n }\n }\n\n // Socket protocol: socket://path?db=dbname\n if (result.protocol === 'socket:') {\n return result.searchParams.get('db');\n }\n\n // Standard URL: postgres://user:pass@host:port/database\n const pathname = result.pathname.slice(1) || null;\n return pathname ? decodeURI(pathname) : null;\n}\n","import { exists, SQL, type SQLExecutor } from '../../../../core';\nexport * from './schema';\n\nexport const defaultPostgreSqlDatabase = 'postgres';\n\nexport const tableExistsSQL = (tableName: string): SQL =>\n SQL`\n SELECT EXISTS (\n SELECT FROM pg_tables\n WHERE tablename = ${tableName}\n ) AS exists;`;\n\nexport const tableExists = async (\n execute: SQLExecutor,\n tableName: string,\n): Promise<boolean> => exists(execute.query(tableExistsSQL(tableName)));\n\nexport const functionExistsSQL = (functionName: string): SQL =>\n SQL`\n SELECT EXISTS (\n SELECT FROM pg_proc\n WHERE\n proname = ${functionName}\n ) AS exists;`;\n\nexport const functionExists = async (\n execute: SQLExecutor,\n functionName: string,\n): Promise<boolean> => exists(execute.query(functionExistsSQL(functionName)));\n","import type { DatabaseMetadata } from '../../../../core';\nimport { parseDatabaseName } from '../connections';\nimport {\n defaultPostgreSqlDatabase,\n functionExists,\n tableExists,\n} from './schema';\n\nexport const postgreSQLMetadata: DatabaseMetadata<true, true, true> = {\n databaseType: 'PostgreSQL',\n defaultDatabaseName: defaultPostgreSqlDatabase,\n capabilities: {\n supportsSchemas: true,\n supportsFunctions: true,\n supportsMultipleDatabases: true,\n },\n tableExists,\n functionExists,\n parseDatabaseName: (connectionString?: string) =>\n (connectionString ? parseDatabaseName(connectionString) : null) ??\n defaultPostgreSqlDatabase,\n};\n\ndumboDatabaseMetadataRegistry.register('PostgreSQL', postgreSQLMetadata);\n"],"mappings":";;;AAEA,MAAa,oCACX;AAOF,MAAa,8BACX,qBAC+B;AAC/B,KACE,CAAC,iBAAiB,WAAW,gBAAgB,IAC7C,CAAC,iBAAiB,WAAW,cAAc,CAE3C,OAAM,IAAI,MACR,yCAAyC,iBAAiB,yCAC3D;AAEH,QAAO;;;;;AAST,SAAgB,kBAAkB,KAA4B;AAE5D,KAAI,IAAI,OAAO,EAAE,KAAK,IAEpB,QADc,IAAI,MAAM,IACZ,CAAC,MAAM;AAIrB,KAAI,mCAAmC,KAAK,IAAI,CAC9C,OAAM,UAAU,IAAI,CAAC,QAAQ,cAAc,MAAM;CAGnD,IAAI;AACJ,KAAI;AACF,WAAS,IAAI,IAAI,KAAK,kBAAkB;SAClC;AAEN,MAAI;AACF,YAAS,IAAI,IAAI,IAAI,QAAQ,MAAM,gBAAgB,EAAE,kBAAkB;UACjE;AACN,UAAO;;;AAKX,KAAI,OAAO,aAAa,UACtB,QAAO,OAAO,aAAa,IAAI,KAAK;CAItC,MAAM,WAAW,OAAO,SAAS,MAAM,EAAE,IAAI;AAC7C,QAAO,WAAW,UAAU,SAAS,GAAG;;;;;AC1D1C,MAAa,4BAA4B;AAEzC,MAAa,kBAAkB,cAC7B,gBAAG;;;wBAGmB,UAAU;;AAGlC,MAAa,cAAc,OACzB,SACA,cACqBA,oBAAO,QAAQ,MAAM,eAAe,UAAU,CAAC,CAAC;AAEvE,MAAa,qBAAqB,iBAChC,gBAAG;;;;oBAIe,aAAa;;AAGjC,MAAa,iBAAiB,OAC5B,SACA,iBACqBA,oBAAO,QAAQ,MAAM,kBAAkB,aAAa,CAAC,CAAC;;;;ACpB7E,MAAa,qBAAyD;CACpE,cAAc;CACd,qBAAqB;CACrB,cAAc;EACZ,iBAAiB;EACjB,mBAAmB;EACnB,2BAA2B;EAC5B;CACD;CACA;CACA,oBAAoB,sBACjB,mBAAmB,kBAAkB,iBAAiB,GAAG;CAE7D;AAED,8BAA8B,SAAS,cAAc,mBAAmB"}
|
package/dist/postgresql.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const require_postgreSQLMetadata = require('./postgreSQLMetadata-
|
|
3
|
-
const require_core = require('./core-
|
|
2
|
+
const require_postgreSQLMetadata = require('./postgreSQLMetadata-WGXySO7a.cjs');
|
|
3
|
+
const require_core = require('./core-DXCRR5A9.cjs');
|
|
4
4
|
|
|
5
5
|
exports.AdvisoryLock = require_core.AdvisoryLock;
|
|
6
6
|
exports.DefaultPostgreSQLMigratorOptions = require_core.DefaultPostgreSQLMigratorOptions;
|
package/dist/postgresql.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
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-
|
|
2
|
-
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-
|
|
1
|
+
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";
|
|
2
|
+
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";
|
|
3
3
|
|
|
4
4
|
export { AdvisoryLock, DefaultPostgreSQLMigratorOptions, PostgreSQLArrayProcessor, PostgreSQLConnectionString, PostgreSQLDatabaseName, PostgreSQLExpandSQLInProcessor, acquireAdvisoryLock, advisoryLock, defaultPostgreSQLConnectionString, defaultPostgreSqlDatabase, functionExists, functionExistsSQL, mapPostgresError, parseDatabaseName, pgFormatter, postgreSQLColumnProcessors, postgreSQLMetadata, releaseAdvisoryLock, tableExists, tableExistsSQL, tryAcquireAdvisoryLock };
|
package/dist/sqlite.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
-
const require_sqliteMetadata = require('./sqliteMetadata-
|
|
3
|
-
const require_core = require('./core-
|
|
2
|
+
const require_sqliteMetadata = require('./sqliteMetadata-PJTRPIZ1.cjs');
|
|
3
|
+
const require_core = require('./core-CWZb0zOY.cjs');
|
|
4
4
|
|
|
5
5
|
exports.DEFAULT_SQLITE_PRAGMA_OPTIONS = require_core.DEFAULT_SQLITE_PRAGMA_OPTIONS;
|
|
6
6
|
exports.DefaultSQLiteMigratorOptions = require_core.DefaultSQLiteMigratorOptions;
|
package/dist/sqlite.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as sqliteMetadata } from "./index-BDSQvDH2.cjs";
|
|
2
|
-
import { $ as SQLitePragmaOptions, A as SQLiteClientConnectionDefinitionOptions, B as SQLiteParameters, C as AnySQLiteConnection, D as InMemorySQLiteDatabase, E as DEFAULT_SQLITE_PRAGMA_OPTIONS, F as SQLiteConnection, G as TransactionNestingCounter, H as SQLitePoolClientConnection, I as SQLiteConnectionDefinitionOptions, J as sqliteClientConnection, K as isSQLiteError, L as SQLiteConnectionFactory, M as SQLiteClientOptions, N as SQLiteClientOrPoolClient, O as SQLiteClient, P as SQLiteCommandOptions, Q as SQLiteConnectionString, R as SQLiteConnectionOptions, S as AnySQLiteClientConnection, T as BatchSQLiteCommandOptions, U as SQLitePoolConnectionDefinitionOptions, V as SQLitePoolClient, W as SqliteAmbientClientConnectionOptions, X as sqlitePoolClientConnection, Y as sqliteConnection, Z as transactionNestingCounter, _ as sqliteAmbientConnectionPool, a as defaultSQLiteDatabase, at as SQLiteErrorMapper, b as toSqlitePoolOptions, c as SQLiteAlwaysNewConnectionPool, ct as sqliteSQLExecutor, d as SQLitePool, et as parsePragmasFromConnectionString, f as SQLitePoolFactoryOptions, g as sqliteAlwaysNewConnectionPool, h as isInMemoryDatabase, i as sqliteFormatter, it as sqliteTransaction, j as SQLiteClientFactory, k as SQLiteClientConnection, l as SQLiteAmbientConnectionPool, m as SQLiteSingletonConnectionPool, n as SQLiteDatabaseType, nt as SQLiteTransactionMode, o as tableExists, ot as SQLiteSQLExecutor, p as SQLitePoolOptions, q as sqliteAmbientClientConnection, r as SQLiteDriverType, rt as SQLiteTransactionOptions, s as DefaultSQLiteMigratorOptions, st as sqliteExecute, t as SQLiteDatabaseName, tt as SQLiteTransaction, u as SQLiteFileNameOrConnectionString, v as sqlitePool, w as AnySQLitePoolClientConnection, x as mapSqliteError, y as sqliteSingletonConnectionPool, z as SQLiteError } from "./index-
|
|
2
|
+
import { $ as SQLitePragmaOptions, A as SQLiteClientConnectionDefinitionOptions, B as SQLiteParameters, C as AnySQLiteConnection, D as InMemorySQLiteDatabase, E as DEFAULT_SQLITE_PRAGMA_OPTIONS, F as SQLiteConnection, G as TransactionNestingCounter, H as SQLitePoolClientConnection, I as SQLiteConnectionDefinitionOptions, J as sqliteClientConnection, K as isSQLiteError, L as SQLiteConnectionFactory, M as SQLiteClientOptions, N as SQLiteClientOrPoolClient, O as SQLiteClient, P as SQLiteCommandOptions, Q as SQLiteConnectionString, R as SQLiteConnectionOptions, S as AnySQLiteClientConnection, T as BatchSQLiteCommandOptions, U as SQLitePoolConnectionDefinitionOptions, V as SQLitePoolClient, W as SqliteAmbientClientConnectionOptions, X as sqlitePoolClientConnection, Y as sqliteConnection, Z as transactionNestingCounter, _ as sqliteAmbientConnectionPool, a as defaultSQLiteDatabase, at as SQLiteErrorMapper, b as toSqlitePoolOptions, c as SQLiteAlwaysNewConnectionPool, ct as sqliteSQLExecutor, d as SQLitePool, et as parsePragmasFromConnectionString, f as SQLitePoolFactoryOptions, g as sqliteAlwaysNewConnectionPool, h as isInMemoryDatabase, i as sqliteFormatter, it as sqliteTransaction, j as SQLiteClientFactory, k as SQLiteClientConnection, l as SQLiteAmbientConnectionPool, m as SQLiteSingletonConnectionPool, n as SQLiteDatabaseType, nt as SQLiteTransactionMode, o as tableExists, ot as SQLiteSQLExecutor, p as SQLitePoolOptions, q as sqliteAmbientClientConnection, r as SQLiteDriverType, rt as SQLiteTransactionOptions, s as DefaultSQLiteMigratorOptions, st as sqliteExecute, t as SQLiteDatabaseName, tt as SQLiteTransaction, u as SQLiteFileNameOrConnectionString, v as sqlitePool, w as AnySQLitePoolClientConnection, x as mapSqliteError, y as sqliteSingletonConnectionPool, z as SQLiteError } from "./index-N2ly5shv.cjs";
|
|
3
3
|
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClient, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionOptions, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteDriverType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, SQLitePragmaOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions, TransactionNestingCounter, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions, transactionNestingCounter };
|
package/dist/sqlite.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { n as sqliteMetadata } from "./index-zkszkJqP.js";
|
|
2
|
-
import { $ as SQLitePragmaOptions, A as SQLiteClientConnectionDefinitionOptions, B as SQLiteParameters, C as AnySQLiteConnection, D as InMemorySQLiteDatabase, E as DEFAULT_SQLITE_PRAGMA_OPTIONS, F as SQLiteConnection, G as TransactionNestingCounter, H as SQLitePoolClientConnection, I as SQLiteConnectionDefinitionOptions, J as sqliteClientConnection, K as isSQLiteError, L as SQLiteConnectionFactory, M as SQLiteClientOptions, N as SQLiteClientOrPoolClient, O as SQLiteClient, P as SQLiteCommandOptions, Q as SQLiteConnectionString, R as SQLiteConnectionOptions, S as AnySQLiteClientConnection, T as BatchSQLiteCommandOptions, U as SQLitePoolConnectionDefinitionOptions, V as SQLitePoolClient, W as SqliteAmbientClientConnectionOptions, X as sqlitePoolClientConnection, Y as sqliteConnection, Z as transactionNestingCounter, _ as sqliteAmbientConnectionPool, a as defaultSQLiteDatabase, at as SQLiteErrorMapper, b as toSqlitePoolOptions, c as SQLiteAlwaysNewConnectionPool, ct as sqliteSQLExecutor, d as SQLitePool, et as parsePragmasFromConnectionString, f as SQLitePoolFactoryOptions, g as sqliteAlwaysNewConnectionPool, h as isInMemoryDatabase, i as sqliteFormatter, it as sqliteTransaction, j as SQLiteClientFactory, k as SQLiteClientConnection, l as SQLiteAmbientConnectionPool, m as SQLiteSingletonConnectionPool, n as SQLiteDatabaseType, nt as SQLiteTransactionMode, o as tableExists, ot as SQLiteSQLExecutor, p as SQLitePoolOptions, q as sqliteAmbientClientConnection, r as SQLiteDriverType, rt as SQLiteTransactionOptions, s as DefaultSQLiteMigratorOptions, st as sqliteExecute, t as SQLiteDatabaseName, tt as SQLiteTransaction, u as SQLiteFileNameOrConnectionString, v as sqlitePool, w as AnySQLitePoolClientConnection, x as mapSqliteError, y as sqliteSingletonConnectionPool, z as SQLiteError } from "./index-
|
|
2
|
+
import { $ as SQLitePragmaOptions, A as SQLiteClientConnectionDefinitionOptions, B as SQLiteParameters, C as AnySQLiteConnection, D as InMemorySQLiteDatabase, E as DEFAULT_SQLITE_PRAGMA_OPTIONS, F as SQLiteConnection, G as TransactionNestingCounter, H as SQLitePoolClientConnection, I as SQLiteConnectionDefinitionOptions, J as sqliteClientConnection, K as isSQLiteError, L as SQLiteConnectionFactory, M as SQLiteClientOptions, N as SQLiteClientOrPoolClient, O as SQLiteClient, P as SQLiteCommandOptions, Q as SQLiteConnectionString, R as SQLiteConnectionOptions, S as AnySQLiteClientConnection, T as BatchSQLiteCommandOptions, U as SQLitePoolConnectionDefinitionOptions, V as SQLitePoolClient, W as SqliteAmbientClientConnectionOptions, X as sqlitePoolClientConnection, Y as sqliteConnection, Z as transactionNestingCounter, _ as sqliteAmbientConnectionPool, a as defaultSQLiteDatabase, at as SQLiteErrorMapper, b as toSqlitePoolOptions, c as SQLiteAlwaysNewConnectionPool, ct as sqliteSQLExecutor, d as SQLitePool, et as parsePragmasFromConnectionString, f as SQLitePoolFactoryOptions, g as sqliteAlwaysNewConnectionPool, h as isInMemoryDatabase, i as sqliteFormatter, it as sqliteTransaction, j as SQLiteClientFactory, k as SQLiteClientConnection, l as SQLiteAmbientConnectionPool, m as SQLiteSingletonConnectionPool, n as SQLiteDatabaseType, nt as SQLiteTransactionMode, o as tableExists, ot as SQLiteSQLExecutor, p as SQLitePoolOptions, q as sqliteAmbientClientConnection, r as SQLiteDriverType, rt as SQLiteTransactionOptions, s as DefaultSQLiteMigratorOptions, st as sqliteExecute, t as SQLiteDatabaseName, tt as SQLiteTransaction, u as SQLiteFileNameOrConnectionString, v as sqlitePool, w as AnySQLitePoolClientConnection, x as mapSqliteError, y as sqliteSingletonConnectionPool, z as SQLiteError } from "./index-BgFHGsuP.js";
|
|
3
3
|
export { AnySQLiteClientConnection, AnySQLiteConnection, AnySQLitePoolClientConnection, BatchSQLiteCommandOptions, DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteAlwaysNewConnectionPool, SQLiteAmbientConnectionPool, SQLiteClient, SQLiteClientConnection, SQLiteClientConnectionDefinitionOptions, SQLiteClientFactory, SQLiteClientOptions, SQLiteClientOrPoolClient, SQLiteCommandOptions, SQLiteConnection, SQLiteConnectionDefinitionOptions, SQLiteConnectionFactory, SQLiteConnectionOptions, SQLiteConnectionString, SQLiteDatabaseName, SQLiteDatabaseType, SQLiteDriverType, SQLiteError, SQLiteErrorMapper, SQLiteFileNameOrConnectionString, SQLiteParameters, SQLitePool, SQLitePoolClient, SQLitePoolClientConnection, SQLitePoolConnectionDefinitionOptions, SQLitePoolFactoryOptions, SQLitePoolOptions, SQLitePragmaOptions, SQLiteSQLExecutor, SQLiteSingletonConnectionPool, SQLiteTransaction, SQLiteTransactionMode, SQLiteTransactionOptions, SqliteAmbientClientConnectionOptions, TransactionNestingCounter, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions, transactionNestingCounter };
|
package/dist/sqlite.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as defaultSQLiteDatabase, r as tableExists, t as sqliteMetadata } from "./sqliteMetadata-
|
|
2
|
-
import { C as mapSqliteError, S as sqliteFormatter, _ as SQLiteConnectionString, a as sqliteAmbientConnectionPool, b as sqliteExecute, c as toSqlitePoolOptions, d as isSQLiteError, f as sqliteAmbientClientConnection, g as transactionNestingCounter, h as sqlitePoolClientConnection, i as sqliteAlwaysNewConnectionPool, l as DEFAULT_SQLITE_PRAGMA_OPTIONS, m as sqliteConnection, n as DefaultSQLiteMigratorOptions, o as sqlitePool, p as sqliteClientConnection, r as isInMemoryDatabase, s as sqliteSingletonConnectionPool, t as SQLiteDatabaseName, u as InMemorySQLiteDatabase, v as parsePragmasFromConnectionString, x as sqliteSQLExecutor, y as sqliteTransaction } from "./core-
|
|
1
|
+
import { n as defaultSQLiteDatabase, r as tableExists, t as sqliteMetadata } from "./sqliteMetadata-7qBjsMBN.js";
|
|
2
|
+
import { C as mapSqliteError, S as sqliteFormatter, _ as SQLiteConnectionString, a as sqliteAmbientConnectionPool, b as sqliteExecute, c as toSqlitePoolOptions, d as isSQLiteError, f as sqliteAmbientClientConnection, g as transactionNestingCounter, h as sqlitePoolClientConnection, i as sqliteAlwaysNewConnectionPool, l as DEFAULT_SQLITE_PRAGMA_OPTIONS, m as sqliteConnection, n as DefaultSQLiteMigratorOptions, o as sqlitePool, p as sqliteClientConnection, r as isInMemoryDatabase, s as sqliteSingletonConnectionPool, t as SQLiteDatabaseName, u as InMemorySQLiteDatabase, v as parsePragmasFromConnectionString, x as sqliteSQLExecutor, y as sqliteTransaction } from "./core-DlV8ua1P.js";
|
|
3
3
|
|
|
4
4
|
export { DEFAULT_SQLITE_PRAGMA_OPTIONS, DefaultSQLiteMigratorOptions, InMemorySQLiteDatabase, SQLiteConnectionString, SQLiteDatabaseName, defaultSQLiteDatabase, isInMemoryDatabase, isSQLiteError, mapSqliteError, parsePragmasFromConnectionString, sqliteAlwaysNewConnectionPool, sqliteAmbientClientConnection, sqliteAmbientConnectionPool, sqliteClientConnection, sqliteConnection, sqliteExecute, sqliteFormatter, sqliteMetadata, sqlitePool, sqlitePoolClientConnection, sqliteSQLExecutor, sqliteSingletonConnectionPool, sqliteTransaction, tableExists, toSqlitePoolOptions, transactionNestingCounter };
|