drizzle-orm 0.34.0-605ef48 → 0.34.0-f026b0e

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/aws-data-api/pg/driver.cjs.map +1 -1
  2. package/aws-data-api/pg/driver.js.map +1 -1
  3. package/aws-data-api/pg/session.cjs +0 -3
  4. package/aws-data-api/pg/session.cjs.map +1 -1
  5. package/aws-data-api/pg/session.js +0 -3
  6. package/aws-data-api/pg/session.js.map +1 -1
  7. package/monodriver.cjs +19 -0
  8. package/monodriver.cjs.map +1 -1
  9. package/monodriver.d.cts +12 -2
  10. package/monodriver.d.ts +12 -2
  11. package/monodriver.js +19 -0
  12. package/monodriver.js.map +1 -1
  13. package/node-postgres/session.cjs +5 -15
  14. package/node-postgres/session.cjs.map +1 -1
  15. package/node-postgres/session.d.cts +2 -3
  16. package/node-postgres/session.d.ts +2 -3
  17. package/node-postgres/session.js +5 -15
  18. package/node-postgres/session.js.map +1 -1
  19. package/package.json +1 -1
  20. package/pg-core/dialect.cjs +2 -45
  21. package/pg-core/dialect.cjs.map +1 -1
  22. package/pg-core/dialect.d.cts +1 -2
  23. package/pg-core/dialect.d.ts +1 -2
  24. package/pg-core/dialect.js +2 -45
  25. package/pg-core/dialect.js.map +1 -1
  26. package/pg-core/query-builders/select.cjs +1 -5
  27. package/pg-core/query-builders/select.cjs.map +1 -1
  28. package/pg-core/query-builders/select.d.cts +0 -1
  29. package/pg-core/query-builders/select.d.ts +0 -1
  30. package/pg-core/query-builders/select.js +1 -5
  31. package/pg-core/query-builders/select.js.map +1 -1
  32. package/pg-core/query-builders/select.types.cjs.map +1 -1
  33. package/pg-core/query-builders/select.types.d.cts +0 -1
  34. package/pg-core/query-builders/select.types.d.ts +0 -1
  35. package/pg-core/session.cjs.map +1 -1
  36. package/pg-core/session.d.cts +1 -1
  37. package/pg-core/session.d.ts +1 -1
  38. package/pg-core/session.js.map +1 -1
  39. package/postgres-js/session.cjs +5 -7
  40. package/postgres-js/session.cjs.map +1 -1
  41. package/postgres-js/session.d.cts +2 -3
  42. package/postgres-js/session.d.ts +2 -3
  43. package/postgres-js/session.js +5 -7
  44. package/postgres-js/session.js.map +1 -1
  45. package/version.cjs +1 -1
  46. package/version.d.cts +1 -1
  47. package/version.d.ts +1 -1
  48. package/version.js +1 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { entityKind, is } from '~/entity.ts';\nimport type { SQL, SQLWrapper } from '~/index.ts';\nimport { Param, sql, Table } from '~/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgColumn, PgInsertConfig, PgTable, TableConfig } from '~/pg-core/index.ts';\nimport { PgArray } from '~/pg-core/index.ts';\nimport type { PgRaw } from '~/pg-core/query-builders/raw.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends DrizzleConfig<TSchema> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n\n\toverride execute<\n\t\tTRow extends Record<string, unknown> = Record<string, unknown>,\n\t>(query: SQLWrapper | string): PgRaw<AwsDataApiPgQueryResult<TRow>> {\n\t\treturn super.execute(query);\n\t}\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\t\tfor (const value of values) {\n\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\tif (\n\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t) {\n\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema>,\n): AwsDataApiPgDatabase<TSchema> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new AwsDataApiSession(client, dialect, schema, { ...config, logger }, undefined);\n\t// @ts-ignore\n\tconst db = new AwsDataApiPgDatabase(dialect, session, schema as any);\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA+B;AAE/B,eAAkC;AAElC,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAE1B,qBAAwB;AAExB,uBAKO;AAGP,qBAAkC;AAiB3B,MAAM,6BAEH,qBAAgD;AAAA,EACzD,QAAiB,wBAAU,IAAY;AAAA,EAE9B,QAEP,OAAkE;AACnE,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AACD;AAEO,MAAM,qBAAqB,yBAAU;AAAA,EAC3C,QAAiB,wBAAU,IAAY;AAAA,EAE9B,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AAAA,EAES,iBACR,EAAE,OAAO,QAAQ,YAAY,UAAU,GACxB;AACf,UAAM,UAAoC,MAAM,eAAM,OAAO,OAAO;AACpE,eAAW,SAAS,QAAQ;AAC3B,iBAAW,aAAa,OAAO,KAAK,OAAO,GAAG;AAC7C,cAAM,WAAW,MAAM,SAAS;AAChC,gBACC,kBAAG,UAAU,cAAK,KAAK,SAAS,UAAU,cAAa,kBAAG,SAAS,SAAS,sBAAO,KAChF,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,gBAAM,SAAS,IAAI,oBAAW,QAAQ,OAAO,aAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,QACpF;AAAA,MACD;AAAA,IACD;AAEA,WAAO,MAAM,iBAAiB,EAAE,OAAO,QAAQ,YAAY,UAAU,CAAC;AAAA,EACvE;AAAA,EAES,eAAe,OAA6B,KAA8B;AAClF,UAAM,UAAoC,MAAM,eAAM,OAAO,OAAO;AAEpE,eAAW,CAAC,SAAS,QAAQ,KAAK,OAAO,QAAQ,GAAG,GAAG;AACtD,YAAM,gBAAgB,QAAQ,OAAO;AACrC,UACC,qBAAiB,kBAAG,UAAU,cAAK,KAAK,SAAS,UAAU,cAAa,kBAAG,SAAS,SAAS,sBAAO,KACjG,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,YAAI,OAAO,IAAI,oBAAW,QAAQ,OAAO,aAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,MAChF;AAAA,IACD;AACA,WAAO,MAAM,eAAe,OAAO,GAAG;AAAA,EACvC;AACD;AAEO,SAAS,QACf,QACA,QAGC;AACD,QAAM,UAAU,IAAI,aAAa;AACjC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,iCAAkB,QAAQ,SAAS,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,MAAS;AAE/F,QAAM,KAAK,IAAI,qBAAqB,SAAS,SAAS,MAAa;AACnE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { entityKind, is } from '~/entity.ts';\nimport type { SQL, SQLWrapper } from '~/index.ts';\nimport { Param, sql, Table } from '~/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgColumn, PgInsertConfig, PgTable, TableConfig } from '~/pg-core/index.ts';\nimport { PgArray } from '~/pg-core/index.ts';\nimport type { PgRaw } from '~/pg-core/query-builders/raw.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends DrizzleConfig<TSchema> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n\n\toverride execute<\n\t\tTRow extends Record<string, unknown> = Record<string, unknown>,\n\t>(query: SQLWrapper | string): PgRaw<AwsDataApiPgQueryResult<TRow>> {\n\t\treturn super.execute(query);\n\t}\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\t\tfor (const value of values) {\n\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\tif (\n\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t) {\n\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema>,\n): AwsDataApiPgDatabase<TSchema> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new AwsDataApiSession(client, dialect, schema, { ...config, logger }, undefined);\n\tconst db = new AwsDataApiPgDatabase(dialect, session, schema as any);\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA+B;AAE/B,eAAkC;AAElC,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAE1B,qBAAwB;AAExB,uBAKO;AAGP,qBAAkC;AAiB3B,MAAM,6BAEH,qBAAgD;AAAA,EACzD,QAAiB,wBAAU,IAAY;AAAA,EAE9B,QAEP,OAAkE;AACnE,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AACD;AAEO,MAAM,qBAAqB,yBAAU;AAAA,EAC3C,QAAiB,wBAAU,IAAY;AAAA,EAE9B,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AAAA,EAES,iBACR,EAAE,OAAO,QAAQ,YAAY,UAAU,GACxB;AACf,UAAM,UAAoC,MAAM,eAAM,OAAO,OAAO;AACpE,eAAW,SAAS,QAAQ;AAC3B,iBAAW,aAAa,OAAO,KAAK,OAAO,GAAG;AAC7C,cAAM,WAAW,MAAM,SAAS;AAChC,gBACC,kBAAG,UAAU,cAAK,KAAK,SAAS,UAAU,cAAa,kBAAG,SAAS,SAAS,sBAAO,KAChF,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,gBAAM,SAAS,IAAI,oBAAW,QAAQ,OAAO,aAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,QACpF;AAAA,MACD;AAAA,IACD;AAEA,WAAO,MAAM,iBAAiB,EAAE,OAAO,QAAQ,YAAY,UAAU,CAAC;AAAA,EACvE;AAAA,EAES,eAAe,OAA6B,KAA8B;AAClF,UAAM,UAAoC,MAAM,eAAM,OAAO,OAAO;AAEpE,eAAW,CAAC,SAAS,QAAQ,KAAK,OAAO,QAAQ,GAAG,GAAG;AACtD,YAAM,gBAAgB,QAAQ,OAAO;AACrC,UACC,qBAAiB,kBAAG,UAAU,cAAK,KAAK,SAAS,UAAU,cAAa,kBAAG,SAAS,SAAS,sBAAO,KACjG,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,YAAI,OAAO,IAAI,oBAAW,QAAQ,OAAO,aAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,MAChF;AAAA,IACD;AACA,WAAO,MAAM,eAAe,OAAO,GAAG;AAAA,EACvC;AACD;AAEO,SAAS,QACf,QACA,QAGC;AACD,QAAM,UAAU,IAAI,aAAa;AACjC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,iCAAkB,QAAQ,SAAS,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,MAAS;AAC/F,QAAM,KAAK,IAAI,qBAAqB,SAAS,SAAS,MAAa;AACnE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { entityKind, is } from '~/entity.ts';\nimport type { SQL, SQLWrapper } from '~/index.ts';\nimport { Param, sql, Table } from '~/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgColumn, PgInsertConfig, PgTable, TableConfig } from '~/pg-core/index.ts';\nimport { PgArray } from '~/pg-core/index.ts';\nimport type { PgRaw } from '~/pg-core/query-builders/raw.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends DrizzleConfig<TSchema> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n\n\toverride execute<\n\t\tTRow extends Record<string, unknown> = Record<string, unknown>,\n\t>(query: SQLWrapper | string): PgRaw<AwsDataApiPgQueryResult<TRow>> {\n\t\treturn super.execute(query);\n\t}\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\t\tfor (const value of values) {\n\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\tif (\n\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t) {\n\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema>,\n): AwsDataApiPgDatabase<TSchema> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new AwsDataApiSession(client, dialect, schema, { ...config, logger }, undefined);\n\t// @ts-ignore\n\tconst db = new AwsDataApiPgDatabase(dialect, session, schema as any);\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AAAA,SAAS,YAAY,UAAU;AAE/B,SAAS,OAAO,KAAK,aAAa;AAElC,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAE1B,SAAS,eAAe;AAExB;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,yBAAyB;AAiB3B,MAAM,6BAEH,WAAgD;AAAA,EACzD,QAAiB,UAAU,IAAY;AAAA,EAE9B,QAEP,OAAkE;AACnE,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AACD;AAEO,MAAM,qBAAqB,UAAU;AAAA,EAC3C,QAAiB,UAAU,IAAY;AAAA,EAE9B,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AAAA,EAES,iBACR,EAAE,OAAO,QAAQ,YAAY,UAAU,GACxB;AACf,UAAM,UAAoC,MAAM,MAAM,OAAO,OAAO;AACpE,eAAW,SAAS,QAAQ;AAC3B,iBAAW,aAAa,OAAO,KAAK,OAAO,GAAG;AAC7C,cAAM,WAAW,MAAM,SAAS;AAChC,YACC,GAAG,UAAU,KAAK,KAAK,SAAS,UAAU,UAAa,GAAG,SAAS,SAAS,OAAO,KAChF,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,gBAAM,SAAS,IAAI,WAAW,QAAQ,OAAO,IAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,QACpF;AAAA,MACD;AAAA,IACD;AAEA,WAAO,MAAM,iBAAiB,EAAE,OAAO,QAAQ,YAAY,UAAU,CAAC;AAAA,EACvE;AAAA,EAES,eAAe,OAA6B,KAA8B;AAClF,UAAM,UAAoC,MAAM,MAAM,OAAO,OAAO;AAEpE,eAAW,CAAC,SAAS,QAAQ,KAAK,OAAO,QAAQ,GAAG,GAAG;AACtD,YAAM,gBAAgB,QAAQ,OAAO;AACrC,UACC,iBAAiB,GAAG,UAAU,KAAK,KAAK,SAAS,UAAU,UAAa,GAAG,SAAS,SAAS,OAAO,KACjG,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,YAAI,OAAO,IAAI,WAAW,QAAQ,OAAO,IAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,MAChF;AAAA,IACD;AACA,WAAO,MAAM,eAAe,OAAO,GAAG;AAAA,EACvC;AACD;AAEO,SAAS,QACf,QACA,QAGC;AACD,QAAM,UAAU,IAAI,aAAa;AACjC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kBAAkB,QAAQ,SAAS,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,MAAS;AAE/F,QAAM,KAAK,IAAI,qBAAqB,SAAS,SAAS,MAAa;AACnE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/driver.ts"],"sourcesContent":["import { entityKind, is } from '~/entity.ts';\nimport type { SQL, SQLWrapper } from '~/index.ts';\nimport { Param, sql, Table } from '~/index.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport type { PgColumn, PgInsertConfig, PgTable, TableConfig } from '~/pg-core/index.ts';\nimport { PgArray } from '~/pg-core/index.ts';\nimport type { PgRaw } from '~/pg-core/query-builders/raw.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, UpdateSet } from '~/utils.ts';\nimport type { AwsDataApiClient, AwsDataApiPgQueryResult, AwsDataApiPgQueryResultHKT } from './session.ts';\nimport { AwsDataApiSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport interface DrizzleAwsDataApiPgConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends DrizzleConfig<TSchema> {\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\nexport class AwsDataApiPgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<AwsDataApiPgQueryResultHKT, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPgDatabase';\n\n\toverride execute<\n\t\tTRow extends Record<string, unknown> = Record<string, unknown>,\n\t>(query: SQLWrapper | string): PgRaw<AwsDataApiPgQueryResult<TRow>> {\n\t\treturn super.execute(query);\n\t}\n}\n\nexport class AwsPgDialect extends PgDialect {\n\tstatic readonly [entityKind]: string = 'AwsPgDialect';\n\n\toverride escapeParam(num: number): string {\n\t\treturn `:${num + 1}`;\n\t}\n\n\toverride buildInsertQuery(\n\t\t{ table, values, onConflict, returning }: PgInsertConfig<PgTable<TableConfig>>,\n\t): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\t\tfor (const value of values) {\n\t\t\tfor (const fieldName of Object.keys(columns)) {\n\t\t\t\tconst colValue = value[fieldName];\n\t\t\t\tif (\n\t\t\t\t\tis(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t\t) {\n\t\t\t\t\tvalue[fieldName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn super.buildInsertQuery({ table, values, onConflict, returning });\n\t}\n\n\toverride buildUpdateSet(table: PgTable<TableConfig>, set: UpdateSet): SQL<unknown> {\n\t\tconst columns: Record<string, PgColumn> = table[Table.Symbol.Columns];\n\n\t\tfor (const [colName, colValue] of Object.entries(set)) {\n\t\t\tconst currentColumn = columns[colName];\n\t\t\tif (\n\t\t\t\tcurrentColumn && is(colValue, Param) && colValue.value !== undefined && is(colValue.encoder, PgArray)\n\t\t\t\t&& Array.isArray(colValue.value)\n\t\t\t) {\n\t\t\t\tset[colName] = sql`cast(${colValue} as ${sql.raw(colValue.encoder.getSQLType())})`;\n\t\t\t}\n\t\t}\n\t\treturn super.buildUpdateSet(table, set);\n\t}\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: AwsDataApiClient,\n\tconfig: DrizzleAwsDataApiPgConfig<TSchema>,\n): AwsDataApiPgDatabase<TSchema> & {\n\t$client: AwsDataApiClient;\n} {\n\tconst dialect = new AwsPgDialect();\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst session = new AwsDataApiSession(client, dialect, schema, { ...config, logger }, undefined);\n\tconst db = new AwsDataApiPgDatabase(dialect, session, schema as any);\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AAAA,SAAS,YAAY,UAAU;AAE/B,SAAS,OAAO,KAAK,aAAa;AAElC,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAE1B,SAAS,eAAe;AAExB;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,yBAAyB;AAiB3B,MAAM,6BAEH,WAAgD;AAAA,EACzD,QAAiB,UAAU,IAAY;AAAA,EAE9B,QAEP,OAAkE;AACnE,WAAO,MAAM,QAAQ,KAAK;AAAA,EAC3B;AACD;AAEO,MAAM,qBAAqB,UAAU;AAAA,EAC3C,QAAiB,UAAU,IAAY;AAAA,EAE9B,YAAY,KAAqB;AACzC,WAAO,IAAI,MAAM,CAAC;AAAA,EACnB;AAAA,EAES,iBACR,EAAE,OAAO,QAAQ,YAAY,UAAU,GACxB;AACf,UAAM,UAAoC,MAAM,MAAM,OAAO,OAAO;AACpE,eAAW,SAAS,QAAQ;AAC3B,iBAAW,aAAa,OAAO,KAAK,OAAO,GAAG;AAC7C,cAAM,WAAW,MAAM,SAAS;AAChC,YACC,GAAG,UAAU,KAAK,KAAK,SAAS,UAAU,UAAa,GAAG,SAAS,SAAS,OAAO,KAChF,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,gBAAM,SAAS,IAAI,WAAW,QAAQ,OAAO,IAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,QACpF;AAAA,MACD;AAAA,IACD;AAEA,WAAO,MAAM,iBAAiB,EAAE,OAAO,QAAQ,YAAY,UAAU,CAAC;AAAA,EACvE;AAAA,EAES,eAAe,OAA6B,KAA8B;AAClF,UAAM,UAAoC,MAAM,MAAM,OAAO,OAAO;AAEpE,eAAW,CAAC,SAAS,QAAQ,KAAK,OAAO,QAAQ,GAAG,GAAG;AACtD,YAAM,gBAAgB,QAAQ,OAAO;AACrC,UACC,iBAAiB,GAAG,UAAU,KAAK,KAAK,SAAS,UAAU,UAAa,GAAG,SAAS,SAAS,OAAO,KACjG,MAAM,QAAQ,SAAS,KAAK,GAC9B;AACD,YAAI,OAAO,IAAI,WAAW,QAAQ,OAAO,IAAI,IAAI,SAAS,QAAQ,WAAW,CAAC,CAAC;AAAA,MAChF;AAAA,IACD;AACA,WAAO,MAAM,eAAe,OAAO,GAAG;AAAA,EACvC;AACD;AAEO,SAAS,QACf,QACA,QAGC;AACD,QAAM,UAAU,IAAI,aAAa;AACjC,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,UAAU,IAAI,kBAAkB,QAAQ,SAAS,QAAQ,EAAE,GAAG,QAAQ,OAAO,GAAG,MAAS;AAC/F,QAAM,KAAK,IAAI,qBAAqB,SAAS,SAAS,MAAa;AACnE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
@@ -137,7 +137,6 @@ class AwsDataApiSession extends import_pg_core.PgSession {
137
137
  static [import_entity.entityKind] = "AwsDataApiSession";
138
138
  /** @internal */
139
139
  rawQuery;
140
- // @ts-ignore
141
140
  prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, transactionId) {
142
141
  return new AwsDataApiPreparedQuery(
143
142
  this.client,
@@ -158,8 +157,6 @@ class AwsDataApiSession extends import_pg_core.PgSession {
158
157
  void 0,
159
158
  false,
160
159
  void 0,
161
- void 0,
162
- // @ts-ignore
163
160
  this.transactionId
164
161
  ).execute();
165
162
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ColumnMetadata, ExecuteStatementCommandOutput, Field, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport {\n\ttype PgDialect,\n\tPgPreparedQuery,\n\ttype PgQueryResultHKT,\n\tPgSession,\n\tPgTransaction,\n\ttype PgTransactionConfig,\n\ttype PreparedQueryConfig,\n} from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type QueryTypingsValue, type QueryWithTypings, type SQL, sql } from '~/sql/sql.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport class AwsDataApiPreparedQuery<\n\tT extends PreparedQueryConfig & { values: AwsDataApiPgQueryResult<unknown[]> },\n> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPreparedQuery';\n\n\tprivate rawQuery: ExecuteStatementCommand;\n\n\tconstructor(\n\t\tprivate client: AwsDataApiClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate typings: QueryTypingsValue[],\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQuery = new ExecuteStatementCommand({\n\t\t\tsql: queryString,\n\t\t\tparameters: [],\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t\ttransactionId,\n\t\t\tincludeResultMetadata: !fields && !customResultMapper,\n\t\t});\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\n\t\tconst result = await this.values(placeholderValues);\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst { columnMetadata, rows } = result;\n\t\t\tif (!columnMetadata) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tconst mappedRows = rows.map((sourceRow) => {\n\t\t\t\tconst row: Record<string, unknown> = {};\n\t\t\t\tfor (const [index, value] of sourceRow.entries()) {\n\t\t\t\t\tconst metadata = columnMetadata[index];\n\t\t\t\t\tif (!metadata) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column metadata found for index ${index}. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!metadata.name) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column name for index ${index} found in the column metadata. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trow[metadata.name] = value;\n\t\t\t\t}\n\t\t\t\treturn row;\n\t\t\t});\n\t\t\treturn Object.assign(result, { rows: mappedRows });\n\t\t}\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows!)\n\t\t\t: result.rows!.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']> {\n\t\tconst result = await this.execute(placeholderValues);\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (result as AwsDataApiPgQueryResult<unknown>).rows;\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues ?? {});\n\n\t\tthis.rawQuery.input.parameters = params.map((param, index) => ({\n\t\t\tname: `${index + 1}`,\n\t\t\t...toValueParam(param, this.typings[index]),\n\t\t}));\n\n\t\tthis.options.logger?.logQuery(this.rawQuery.input.sql!, this.rawQuery.input.parameters);\n\n\t\tconst result = await this.client.send(this.rawQuery);\n\t\tconst rows = result.records?.map((row) => {\n\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t}) ?? [];\n\n\t\treturn {\n\t\t\t...result,\n\t\t\trows,\n\t\t};\n\t}\n\n\t/** @internal */\n\tmapResultRows(records: Field[][], columnMetadata: ColumnMetadata[]) {\n\t\treturn records.map((record) => {\n\t\t\tconst row: Record<string, unknown> = {};\n\t\t\tfor (const [index, field] of record.entries()) {\n\t\t\t\tconst { name } = columnMetadata[index]!;\n\t\t\t\trow[name ?? index] = getValueFromDataApi(field); // not what to default if name is undefined\n\t\t\t}\n\t\t\treturn row;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t}\n\n\t// @ts-ignore\n\tprepareQuery<\n\t\tT extends PreparedQueryConfig & {\n\t\t\tvalues: AwsDataApiPgQueryResult<unknown[]>;\n\t\t} = PreparedQueryConfig & {\n\t\t\tvalues: AwsDataApiPgQueryResult<unknown[]>;\n\t\t},\n\t>(\n\t\tquery: QueryWithTypings,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\ttransactionId?: string,\n\t): AwsDataApiPreparedQuery<T> {\n\t\treturn new AwsDataApiPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tquery.typings ?? [],\n\t\t\tthis.options,\n\t\t\tfields,\n\t\t\ttransactionId ?? this.transactionId,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride execute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T; values: AwsDataApiPgQueryResult<unknown[]> }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\t// @ts-ignore\n\t\t\tthis.transactionId,\n\t\t).execute();\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(this.client, this.dialect, this.schema, this.options, transactionId);\n\t\t// @ts-ignore\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends PgQueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<any>;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ColumnMetadata, ExecuteStatementCommandOutput, Field, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport {\n\ttype PgDialect,\n\tPgPreparedQuery,\n\ttype PgQueryResultHKT,\n\tPgSession,\n\tPgTransaction,\n\ttype PgTransactionConfig,\n\ttype PreparedQueryConfig,\n} from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type QueryTypingsValue, type QueryWithTypings, type SQL, sql } from '~/sql/sql.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport class AwsDataApiPreparedQuery<\n\tT extends PreparedQueryConfig & { values: AwsDataApiPgQueryResult<unknown[]> },\n> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPreparedQuery';\n\n\tprivate rawQuery: ExecuteStatementCommand;\n\n\tconstructor(\n\t\tprivate client: AwsDataApiClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate typings: QueryTypingsValue[],\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQuery = new ExecuteStatementCommand({\n\t\t\tsql: queryString,\n\t\t\tparameters: [],\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t\ttransactionId,\n\t\t\tincludeResultMetadata: !fields && !customResultMapper,\n\t\t});\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\n\t\tconst result = await this.values(placeholderValues);\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst { columnMetadata, rows } = result;\n\t\t\tif (!columnMetadata) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tconst mappedRows = rows.map((sourceRow) => {\n\t\t\t\tconst row: Record<string, unknown> = {};\n\t\t\t\tfor (const [index, value] of sourceRow.entries()) {\n\t\t\t\t\tconst metadata = columnMetadata[index];\n\t\t\t\t\tif (!metadata) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column metadata found for index ${index}. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!metadata.name) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column name for index ${index} found in the column metadata. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trow[metadata.name] = value;\n\t\t\t\t}\n\t\t\t\treturn row;\n\t\t\t});\n\t\t\treturn Object.assign(result, { rows: mappedRows });\n\t\t}\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows!)\n\t\t\t: result.rows!.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']> {\n\t\tconst result = await this.execute(placeholderValues);\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (result as AwsDataApiPgQueryResult<unknown>).rows;\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues ?? {});\n\n\t\tthis.rawQuery.input.parameters = params.map((param, index) => ({\n\t\t\tname: `${index + 1}`,\n\t\t\t...toValueParam(param, this.typings[index]),\n\t\t}));\n\n\t\tthis.options.logger?.logQuery(this.rawQuery.input.sql!, this.rawQuery.input.parameters);\n\n\t\tconst result = await this.client.send(this.rawQuery);\n\t\tconst rows = result.records?.map((row) => {\n\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t}) ?? [];\n\n\t\treturn {\n\t\t\t...result,\n\t\t\trows,\n\t\t};\n\t}\n\n\t/** @internal */\n\tmapResultRows(records: Field[][], columnMetadata: ColumnMetadata[]) {\n\t\treturn records.map((record) => {\n\t\t\tconst row: Record<string, unknown> = {};\n\t\t\tfor (const [index, field] of record.entries()) {\n\t\t\t\tconst { name } = columnMetadata[index]!;\n\t\t\t\trow[name ?? index] = getValueFromDataApi(field); // not what to default if name is undefined\n\t\t\t}\n\t\t\treturn row;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t}\n\n\tprepareQuery<\n\t\tT extends PreparedQueryConfig & {\n\t\t\tvalues: AwsDataApiPgQueryResult<unknown[]>;\n\t\t} = PreparedQueryConfig & {\n\t\t\tvalues: AwsDataApiPgQueryResult<unknown[]>;\n\t\t},\n\t>(\n\t\tquery: QueryWithTypings,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\ttransactionId?: string,\n\t): AwsDataApiPreparedQuery<T> {\n\t\treturn new AwsDataApiPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tquery.typings ?? [],\n\t\t\tthis.options,\n\t\t\tfields,\n\t\t\ttransactionId ?? this.transactionId,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride execute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T; values: AwsDataApiPgQueryResult<unknown[]> }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tthis.transactionId,\n\t\t).execute();\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(this.client, this.dialect, this.schema, this.options, transactionId);\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends PgQueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<any>;\n}\n"],"mappings":"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","names":[]}
@@ -121,7 +121,6 @@ class AwsDataApiSession extends PgSession {
121
121
  static [entityKind] = "AwsDataApiSession";
122
122
  /** @internal */
123
123
  rawQuery;
124
- // @ts-ignore
125
124
  prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper, transactionId) {
126
125
  return new AwsDataApiPreparedQuery(
127
126
  this.client,
@@ -142,8 +141,6 @@ class AwsDataApiSession extends PgSession {
142
141
  void 0,
143
142
  false,
144
143
  void 0,
145
- void 0,
146
- // @ts-ignore
147
144
  this.transactionId
148
145
  ).execute();
149
146
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ColumnMetadata, ExecuteStatementCommandOutput, Field, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport {\n\ttype PgDialect,\n\tPgPreparedQuery,\n\ttype PgQueryResultHKT,\n\tPgSession,\n\tPgTransaction,\n\ttype PgTransactionConfig,\n\ttype PreparedQueryConfig,\n} from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type QueryTypingsValue, type QueryWithTypings, type SQL, sql } from '~/sql/sql.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport class AwsDataApiPreparedQuery<\n\tT extends PreparedQueryConfig & { values: AwsDataApiPgQueryResult<unknown[]> },\n> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPreparedQuery';\n\n\tprivate rawQuery: ExecuteStatementCommand;\n\n\tconstructor(\n\t\tprivate client: AwsDataApiClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate typings: QueryTypingsValue[],\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQuery = new ExecuteStatementCommand({\n\t\t\tsql: queryString,\n\t\t\tparameters: [],\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t\ttransactionId,\n\t\t\tincludeResultMetadata: !fields && !customResultMapper,\n\t\t});\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\n\t\tconst result = await this.values(placeholderValues);\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst { columnMetadata, rows } = result;\n\t\t\tif (!columnMetadata) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tconst mappedRows = rows.map((sourceRow) => {\n\t\t\t\tconst row: Record<string, unknown> = {};\n\t\t\t\tfor (const [index, value] of sourceRow.entries()) {\n\t\t\t\t\tconst metadata = columnMetadata[index];\n\t\t\t\t\tif (!metadata) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column metadata found for index ${index}. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!metadata.name) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column name for index ${index} found in the column metadata. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trow[metadata.name] = value;\n\t\t\t\t}\n\t\t\t\treturn row;\n\t\t\t});\n\t\t\treturn Object.assign(result, { rows: mappedRows });\n\t\t}\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows!)\n\t\t\t: result.rows!.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']> {\n\t\tconst result = await this.execute(placeholderValues);\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (result as AwsDataApiPgQueryResult<unknown>).rows;\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues ?? {});\n\n\t\tthis.rawQuery.input.parameters = params.map((param, index) => ({\n\t\t\tname: `${index + 1}`,\n\t\t\t...toValueParam(param, this.typings[index]),\n\t\t}));\n\n\t\tthis.options.logger?.logQuery(this.rawQuery.input.sql!, this.rawQuery.input.parameters);\n\n\t\tconst result = await this.client.send(this.rawQuery);\n\t\tconst rows = result.records?.map((row) => {\n\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t}) ?? [];\n\n\t\treturn {\n\t\t\t...result,\n\t\t\trows,\n\t\t};\n\t}\n\n\t/** @internal */\n\tmapResultRows(records: Field[][], columnMetadata: ColumnMetadata[]) {\n\t\treturn records.map((record) => {\n\t\t\tconst row: Record<string, unknown> = {};\n\t\t\tfor (const [index, field] of record.entries()) {\n\t\t\t\tconst { name } = columnMetadata[index]!;\n\t\t\t\trow[name ?? index] = getValueFromDataApi(field); // not what to default if name is undefined\n\t\t\t}\n\t\t\treturn row;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t}\n\n\t// @ts-ignore\n\tprepareQuery<\n\t\tT extends PreparedQueryConfig & {\n\t\t\tvalues: AwsDataApiPgQueryResult<unknown[]>;\n\t\t} = PreparedQueryConfig & {\n\t\t\tvalues: AwsDataApiPgQueryResult<unknown[]>;\n\t\t},\n\t>(\n\t\tquery: QueryWithTypings,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\ttransactionId?: string,\n\t): AwsDataApiPreparedQuery<T> {\n\t\treturn new AwsDataApiPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tquery.typings ?? [],\n\t\t\tthis.options,\n\t\t\tfields,\n\t\t\ttransactionId ?? this.transactionId,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride execute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T; values: AwsDataApiPgQueryResult<unknown[]> }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\t// @ts-ignore\n\t\t\tthis.transactionId,\n\t\t).execute();\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(this.client, this.dialect, this.schema, this.options, transactionId);\n\t\t// @ts-ignore\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends PgQueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<any>;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../../src/aws-data-api/pg/session.ts"],"sourcesContent":["import type { ColumnMetadata, ExecuteStatementCommandOutput, Field, RDSDataClient } from '@aws-sdk/client-rds-data';\nimport {\n\tBeginTransactionCommand,\n\tCommitTransactionCommand,\n\tExecuteStatementCommand,\n\tRollbackTransactionCommand,\n} from '@aws-sdk/client-rds-data';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport {\n\ttype PgDialect,\n\tPgPreparedQuery,\n\ttype PgQueryResultHKT,\n\tPgSession,\n\tPgTransaction,\n\ttype PgTransactionConfig,\n\ttype PreparedQueryConfig,\n} from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type QueryTypingsValue, type QueryWithTypings, type SQL, sql } from '~/sql/sql.ts';\nimport { mapResultRow } from '~/utils.ts';\nimport { getValueFromDataApi, toValueParam } from '../common/index.ts';\n\nexport type AwsDataApiClient = RDSDataClient;\n\nexport class AwsDataApiPreparedQuery<\n\tT extends PreparedQueryConfig & { values: AwsDataApiPgQueryResult<unknown[]> },\n> extends PgPreparedQuery<T> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiPreparedQuery';\n\n\tprivate rawQuery: ExecuteStatementCommand;\n\n\tconstructor(\n\t\tprivate client: AwsDataApiClient,\n\t\tqueryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate typings: QueryTypingsValue[],\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t\tthis.rawQuery = new ExecuteStatementCommand({\n\t\t\tsql: queryString,\n\t\t\tparameters: [],\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t\ttransactionId,\n\t\t\tincludeResultMetadata: !fields && !customResultMapper,\n\t\t});\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\tconst { fields, joinsNotNullableMap, customResultMapper } = this;\n\n\t\tconst result = await this.values(placeholderValues);\n\t\tif (!fields && !customResultMapper) {\n\t\t\tconst { columnMetadata, rows } = result;\n\t\t\tif (!columnMetadata) {\n\t\t\t\treturn result;\n\t\t\t}\n\t\t\tconst mappedRows = rows.map((sourceRow) => {\n\t\t\t\tconst row: Record<string, unknown> = {};\n\t\t\t\tfor (const [index, value] of sourceRow.entries()) {\n\t\t\t\t\tconst metadata = columnMetadata[index];\n\t\t\t\t\tif (!metadata) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column metadata found for index ${index}. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tif (!metadata.name) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t`Unexpected state: no column name for index ${index} found in the column metadata. Please report this issue on GitHub: https://github.com/drizzle-team/drizzle-orm/issues/new/choose`,\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\trow[metadata.name] = value;\n\t\t\t\t}\n\t\t\t\treturn row;\n\t\t\t});\n\t\t\treturn Object.assign(result, { rows: mappedRows });\n\t\t}\n\n\t\treturn customResultMapper\n\t\t\t? customResultMapper(result.rows!)\n\t\t\t: result.rows!.map((row) => mapResultRow(fields!, row, joinsNotNullableMap));\n\t}\n\n\tasync all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']> {\n\t\tconst result = await this.execute(placeholderValues);\n\t\tif (!this.fields && !this.customResultMapper) {\n\t\t\treturn (result as AwsDataApiPgQueryResult<unknown>).rows;\n\t\t}\n\t\treturn result;\n\t}\n\n\tasync values(placeholderValues: Record<string, unknown> = {}): Promise<T['values']> {\n\t\tconst params = fillPlaceholders(this.params, placeholderValues ?? {});\n\n\t\tthis.rawQuery.input.parameters = params.map((param, index) => ({\n\t\t\tname: `${index + 1}`,\n\t\t\t...toValueParam(param, this.typings[index]),\n\t\t}));\n\n\t\tthis.options.logger?.logQuery(this.rawQuery.input.sql!, this.rawQuery.input.parameters);\n\n\t\tconst result = await this.client.send(this.rawQuery);\n\t\tconst rows = result.records?.map((row) => {\n\t\t\treturn row.map((field) => getValueFromDataApi(field));\n\t\t}) ?? [];\n\n\t\treturn {\n\t\t\t...result,\n\t\t\trows,\n\t\t};\n\t}\n\n\t/** @internal */\n\tmapResultRows(records: Field[][], columnMetadata: ColumnMetadata[]) {\n\t\treturn records.map((record) => {\n\t\t\tconst row: Record<string, unknown> = {};\n\t\t\tfor (const [index, field] of record.entries()) {\n\t\t\t\tconst { name } = columnMetadata[index]!;\n\t\t\t\trow[name ?? index] = getValueFromDataApi(field); // not what to default if name is undefined\n\t\t\t}\n\t\t\treturn row;\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface AwsDataApiSessionOptions {\n\tlogger?: Logger;\n\tdatabase: string;\n\tresourceArn: string;\n\tsecretArn: string;\n}\n\ninterface AwsDataApiQueryBase {\n\tresourceArn: string;\n\tsecretArn: string;\n\tdatabase: string;\n}\n\nexport class AwsDataApiSession<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiSession';\n\n\t/** @internal */\n\treadonly rawQuery: AwsDataApiQueryBase;\n\n\tconstructor(\n\t\t/** @internal */\n\t\treadonly client: AwsDataApiClient,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tprivate options: AwsDataApiSessionOptions,\n\t\t/** @internal */\n\t\treadonly transactionId: string | undefined,\n\t) {\n\t\tsuper(dialect);\n\t\tthis.rawQuery = {\n\t\t\tsecretArn: options.secretArn,\n\t\t\tresourceArn: options.resourceArn,\n\t\t\tdatabase: options.database,\n\t\t};\n\t}\n\n\tprepareQuery<\n\t\tT extends PreparedQueryConfig & {\n\t\t\tvalues: AwsDataApiPgQueryResult<unknown[]>;\n\t\t} = PreparedQueryConfig & {\n\t\t\tvalues: AwsDataApiPgQueryResult<unknown[]>;\n\t\t},\n\t>(\n\t\tquery: QueryWithTypings,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t\ttransactionId?: string,\n\t): AwsDataApiPreparedQuery<T> {\n\t\treturn new AwsDataApiPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tquery.typings ?? [],\n\t\t\tthis.options,\n\t\t\tfields,\n\t\t\ttransactionId ?? this.transactionId,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\toverride execute<T>(query: SQL): Promise<T> {\n\t\treturn this.prepareQuery<PreparedQueryConfig & { execute: T; values: AwsDataApiPgQueryResult<unknown[]> }>(\n\t\t\tthis.dialect.sqlToQuery(query),\n\t\t\tundefined,\n\t\t\tundefined,\n\t\t\tfalse,\n\t\t\tundefined,\n\t\t\tthis.transactionId,\n\t\t).execute();\n\t}\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig | undefined,\n\t): Promise<T> {\n\t\tconst { transactionId } = await this.client.send(new BeginTransactionCommand(this.rawQuery));\n\t\tconst session = new AwsDataApiSession(this.client, this.dialect, this.schema, this.options, transactionId);\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\tif (config) {\n\t\t\tawait tx.setTransaction(config);\n\t\t}\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.client.send(new CommitTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.client.send(new RollbackTransactionCommand({ ...this.rawQuery, transactionId }));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport class AwsDataApiTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<AwsDataApiPgQueryResultHKT, TFullSchema, TSchema> {\n\tstatic readonly [entityKind]: string = 'AwsDataApiTransaction';\n\n\toverride async transaction<T>(\n\t\ttransaction: (tx: AwsDataApiTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\tconst savepointName = `sp${this.nestedIndex + 1}`;\n\t\tconst tx = new AwsDataApiTransaction<TFullSchema, TSchema>(\n\t\t\tthis.dialect,\n\t\t\tthis.session,\n\t\t\tthis.schema,\n\t\t\tthis.nestedIndex + 1,\n\t\t);\n\t\tawait this.session.execute(sql.raw(`savepoint ${savepointName}`));\n\t\ttry {\n\t\t\tconst result = await transaction(tx);\n\t\t\tawait this.session.execute(sql.raw(`release savepoint ${savepointName}`));\n\t\t\treturn result;\n\t\t} catch (e) {\n\t\t\tawait this.session.execute(sql.raw(`rollback to savepoint ${savepointName}`));\n\t\t\tthrow e;\n\t\t}\n\t}\n}\n\nexport type AwsDataApiPgQueryResult<T> = ExecuteStatementCommandOutput & { rows: T[] };\n\nexport interface AwsDataApiPgQueryResultHKT extends PgQueryResultHKT {\n\ttype: AwsDataApiPgQueryResult<any>;\n}\n"],"mappings":"AACA;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,kBAAkB;AAE3B;AAAA,EAEC;AAAA,EAEA;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,kBAA2E,WAAW;AAC/F,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB,oBAAoB;AAI3C,MAAM,gCAEH,gBAAmB;AAAA,EAK5B,YACS,QACR,aACQ,QACA,SACA,SACA,QAEC,eACD,wBACA,oBACP;AACD,UAAM,EAAE,KAAK,aAAa,OAAO,CAAC;AAX1B;AAEA;AACA;AACA;AACA;AAEC;AACD;AACA;AAGR,SAAK,WAAW,IAAI,wBAAwB;AAAA,MAC3C,KAAK;AAAA,MACL,YAAY,CAAC;AAAA,MACb,WAAW,QAAQ;AAAA,MACnB,aAAa,QAAQ;AAAA,MACrB,UAAU,QAAQ;AAAA,MAClB;AAAA,MACA,uBAAuB,CAAC,UAAU,CAAC;AAAA,IACpC,CAAC;AAAA,EACF;AAAA,EA1BA,QAAiB,UAAU,IAAY;AAAA,EAE/B;AAAA,EA0BR,MAAM,QAAQ,oBAAyD,CAAC,GAA0B;AACjG,UAAM,EAAE,QAAQ,qBAAqB,mBAAmB,IAAI;AAE5D,UAAM,SAAS,MAAM,KAAK,OAAO,iBAAiB;AAClD,QAAI,CAAC,UAAU,CAAC,oBAAoB;AACnC,YAAM,EAAE,gBAAgB,KAAK,IAAI;AACjC,UAAI,CAAC,gBAAgB;AACpB,eAAO;AAAA,MACR;AACA,YAAM,aAAa,KAAK,IAAI,CAAC,cAAc;AAC1C,cAAM,MAA+B,CAAC;AACtC,mBAAW,CAAC,OAAO,KAAK,KAAK,UAAU,QAAQ,GAAG;AACjD,gBAAM,WAAW,eAAe,KAAK;AACrC,cAAI,CAAC,UAAU;AACd,kBAAM,IAAI;AAAA,cACT,wDAAwD,KAAK;AAAA,YAC9D;AAAA,UACD;AACA,cAAI,CAAC,SAAS,MAAM;AACnB,kBAAM,IAAI;AAAA,cACT,8CAA8C,KAAK;AAAA,YACpD;AAAA,UACD;AACA,cAAI,SAAS,IAAI,IAAI;AAAA,QACtB;AACA,eAAO;AAAA,MACR,CAAC;AACD,aAAO,OAAO,OAAO,QAAQ,EAAE,MAAM,WAAW,CAAC;AAAA,IAClD;AAEA,WAAO,qBACJ,mBAAmB,OAAO,IAAK,IAC/B,OAAO,KAAM,IAAI,CAAC,QAAQ,aAAa,QAAS,KAAK,mBAAmB,CAAC;AAAA,EAC7E;AAAA,EAEA,MAAM,IAAI,mBAA4E;AACrF,UAAM,SAAS,MAAM,KAAK,QAAQ,iBAAiB;AACnD,QAAI,CAAC,KAAK,UAAU,CAAC,KAAK,oBAAoB;AAC7C,aAAQ,OAA4C;AAAA,IACrD;AACA,WAAO;AAAA,EACR;AAAA,EAEA,MAAM,OAAO,oBAA6C,CAAC,GAAyB;AACnF,UAAM,SAAS,iBAAiB,KAAK,QAAQ,qBAAqB,CAAC,CAAC;AAEpE,SAAK,SAAS,MAAM,aAAa,OAAO,IAAI,CAAC,OAAO,WAAW;AAAA,MAC9D,MAAM,GAAG,QAAQ,CAAC;AAAA,MAClB,GAAG,aAAa,OAAO,KAAK,QAAQ,KAAK,CAAC;AAAA,IAC3C,EAAE;AAEF,SAAK,QAAQ,QAAQ,SAAS,KAAK,SAAS,MAAM,KAAM,KAAK,SAAS,MAAM,UAAU;AAEtF,UAAM,SAAS,MAAM,KAAK,OAAO,KAAK,KAAK,QAAQ;AACnD,UAAM,OAAO,OAAO,SAAS,IAAI,CAAC,QAAQ;AACzC,aAAO,IAAI,IAAI,CAAC,UAAU,oBAAoB,KAAK,CAAC;AAAA,IACrD,CAAC,KAAK,CAAC;AAEP,WAAO;AAAA,MACN,GAAG;AAAA,MACH;AAAA,IACD;AAAA,EACD;AAAA;AAAA,EAGA,cAAc,SAAoB,gBAAkC;AACnE,WAAO,QAAQ,IAAI,CAAC,WAAW;AAC9B,YAAM,MAA+B,CAAC;AACtC,iBAAW,CAAC,OAAO,KAAK,KAAK,OAAO,QAAQ,GAAG;AAC9C,cAAM,EAAE,KAAK,IAAI,eAAe,KAAK;AACrC,YAAI,QAAQ,KAAK,IAAI,oBAAoB,KAAK;AAAA,MAC/C;AACA,aAAO;AAAA,IACR,CAAC;AAAA,EACF;AAAA;AAAA,EAGA,wBAAiC;AAChC,WAAO,KAAK;AAAA,EACb;AACD;AAeO,MAAM,0BAGH,UAA4D;AAAA,EAMrE,YAEU,QACT,SACQ,QACA,SAEC,eACR;AACD,UAAM,OAAO;AAPJ;AAED;AACA;AAEC;AAGT,SAAK,WAAW;AAAA,MACf,WAAW,QAAQ;AAAA,MACnB,aAAa,QAAQ;AAAA,MACrB,UAAU,QAAQ;AAAA,IACnB;AAAA,EACD;AAAA,EApBA,QAAiB,UAAU,IAAY;AAAA;AAAA,EAG9B;AAAA,EAmBT,aAOC,OACA,QACA,MACA,uBACA,oBACA,eAC6B;AAC7B,WAAO,IAAI;AAAA,MACV,KAAK;AAAA,MACL,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM,WAAW,CAAC;AAAA,MAClB,KAAK;AAAA,MACL;AAAA,MACA,iBAAiB,KAAK;AAAA,MACtB;AAAA,MACA;AAAA,IACD;AAAA,EACD;AAAA,EAES,QAAW,OAAwB;AAC3C,WAAO,KAAK;AAAA,MACX,KAAK,QAAQ,WAAW,KAAK;AAAA,MAC7B;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,KAAK;AAAA,IACN,EAAE,QAAQ;AAAA,EACX;AAAA,EAEA,MAAe,YACd,aACA,QACa;AACb,UAAM,EAAE,cAAc,IAAI,MAAM,KAAK,OAAO,KAAK,IAAI,wBAAwB,KAAK,QAAQ,CAAC;AAC3F,UAAM,UAAU,IAAI,kBAAkB,KAAK,QAAQ,KAAK,SAAS,KAAK,QAAQ,KAAK,SAAS,aAAa;AACzG,UAAM,KAAK,IAAI,sBAA4C,KAAK,SAAS,SAAS,KAAK,MAAM;AAC7F,QAAI,QAAQ;AACX,YAAM,GAAG,eAAe,MAAM;AAAA,IAC/B;AACA,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,KAAK,OAAO,KAAK,IAAI,yBAAyB,EAAE,GAAG,KAAK,UAAU,cAAc,CAAC,CAAC;AACxF,aAAO;AAAA,IACR,SAAS,GAAG;AACX,YAAM,KAAK,OAAO,KAAK,IAAI,2BAA2B,EAAE,GAAG,KAAK,UAAU,cAAc,CAAC,CAAC;AAC1F,YAAM;AAAA,IACP;AAAA,EACD;AACD;AAEO,MAAM,8BAGH,cAAgE;AAAA,EACzE,QAAiB,UAAU,IAAY;AAAA,EAEvC,MAAe,YACd,aACa;AACb,UAAM,gBAAgB,KAAK,KAAK,cAAc,CAAC;AAC/C,UAAM,KAAK,IAAI;AAAA,MACd,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK;AAAA,MACL,KAAK,cAAc;AAAA,IACpB;AACA,UAAM,KAAK,QAAQ,QAAQ,IAAI,IAAI,aAAa,aAAa,EAAE,CAAC;AAChE,QAAI;AACH,YAAM,SAAS,MAAM,YAAY,EAAE;AACnC,YAAM,KAAK,QAAQ,QAAQ,IAAI,IAAI,qBAAqB,aAAa,EAAE,CAAC;AACxE,aAAO;AAAA,IACR,SAAS,GAAG;AACX,YAAM,KAAK,QAAQ,QAAQ,IAAI,IAAI,yBAAyB,aAAa,EAAE,CAAC;AAC5E,YAAM;AAAA,IACP;AAAA,EACD;AACD;","names":[]}
package/monodriver.cjs CHANGED
@@ -254,6 +254,25 @@ async function drizzle(client, ...params) {
254
254
  const db = drizzle2(sql, drizzleConfig);
255
255
  return db;
256
256
  }
257
+ case "pglite": {
258
+ const { PGlite } = await import("@electric-sql/pglite").catch(() => importError("@electric-sql/pglite"));
259
+ const { drizzle: drizzle2 } = await import("./pglite");
260
+ if (typeof params[0] === "object") {
261
+ const { connection, ...drizzleConfig } = params[0];
262
+ if (typeof connection === "object") {
263
+ const { dataDir, ...options } = connection;
264
+ const instance3 = new PGlite(dataDir, options);
265
+ const db3 = drizzle2(instance3, drizzleConfig);
266
+ return db3;
267
+ }
268
+ const instance2 = new PGlite(connection);
269
+ const db2 = drizzle2(instance2, drizzleConfig);
270
+ return db2;
271
+ }
272
+ const instance = new PGlite(params[0]);
273
+ const db = drizzle2(instance);
274
+ return db;
275
+ }
257
276
  }
258
277
  assertUnreachable(client);
259
278
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/monodriver.ts"],"sourcesContent":["/* eslint-disable import/extensions */\nimport type { RDSDataClient, RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';\nimport type { Client as LibsqlClient, Config as LibsqlConfig } from '@libsql/client';\nimport type {\n\tHTTPTransactionOptions as NeonHttpConfig,\n\tNeonQueryFunction,\n\tPool as NeonServerlessPool,\n\tPoolConfig as NeonServerlessConfig,\n\tQueryResult,\n\tQueryResultRow,\n} from '@neondatabase/serverless';\nimport type { Client as PlanetscaleClient, Config as PlanetscaleConfig } from '@planetscale/database';\nimport type { Config as TiDBServerlessConfig, Connection as TiDBConnection } from '@tidbcloud/serverless';\nimport type { VercelPool } from '@vercel/postgres';\nimport type { Database as BetterSQLite3Database, Options as BetterSQLite3Options } from 'better-sqlite3';\nimport type { Database as BunDatabase } from 'bun:sqlite';\nimport type { Pool as Mysql2Pool, PoolOptions as Mysql2Config } from 'mysql2';\nimport type { Pool as NodePgPool, PoolConfig as NodePgPoolConfig } from 'pg';\nimport type {\n\tOptions as PostgresJSOptions,\n\tPostgresType as PostgresJSPostgresType,\n\tSql as PostgresJsClient,\n} from 'postgres';\nimport type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from './aws-data-api/pg/index.ts';\nimport type { BetterSQLite3Database as DrizzleBetterSQLite3Database } from './better-sqlite3/index.ts';\nimport type { BunSQLiteDatabase } from './bun-sqlite/index.ts';\nimport type { AnyD1Database, DrizzleD1Database } from './d1/index.ts';\nimport type { LibSQLDatabase } from './libsql/index.ts';\nimport type { MySql2Database, MySql2DrizzleConfig } from './mysql2/index.ts';\nimport type { NeonHttpDatabase } from './neon-http/index.ts';\nimport type { NeonDatabase } from './neon-serverless/index.ts';\nimport type { NodePgDatabase } from './node-postgres/driver.ts';\nimport type { PlanetScaleDatabase } from './planetscale-serverless/index.ts';\nimport type { PostgresJsDatabase } from './postgres-js/index.ts';\nimport type { TiDBServerlessDatabase } from './tidb-serverless/index.ts';\nimport type { DrizzleConfig, IfNotImported } from './utils.ts';\nimport type { VercelPgDatabase } from './vercel-postgres/index.ts';\n\ntype BunSqliteDatabaseOptions = {\n\t/**\n\t * Open the database as read-only (no write operations, no create).\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t */\n\treadonly?: boolean;\n\t/**\n\t * Allow creating a new database\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t */\n\tcreate?: boolean;\n\t/**\n\t * Open the database as read-write\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t */\n\treadwrite?: boolean;\n};\n\ntype BunSqliteDatabaseConfig =\n\t| ({\n\t\tsource?: string;\n\t} & BunSqliteDatabaseOptions)\n\t| string\n\t| undefined;\n\ntype BetterSQLite3DatabaseConfig =\n\t| ({\n\t\tsource?:\n\t\t\t| string\n\t\t\t| Buffer;\n\t} & BetterSQLite3Options)\n\t| string\n\t| undefined;\n\ntype MonodriverNeonHttpConfig =\n\t| ({\n\t\tconnectionString: string;\n\t} & NeonHttpConfig<boolean, boolean>)\n\t| string;\n\ntype AwsDataApiConnectionConfig = RDSConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\ntype DatabaseClient =\n\t| 'node-postgres'\n\t| 'postgres-js'\n\t| 'neon-websocket'\n\t| 'neon-http'\n\t| 'vercel-postgres'\n\t| 'aws-data-api-pg'\n\t| 'planetscale'\n\t| 'mysql2'\n\t| 'tidb-serverless'\n\t| 'libsql'\n\t| 'turso'\n\t| 'd1'\n\t| 'bun:sqlite'\n\t| 'better-sqlite3';\n\ntype ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {\n\t'node-postgres': NodePgDatabase<TSchema>;\n\t'postgres-js': PostgresJsDatabase<TSchema>;\n\t'neon-websocket': NeonDatabase<TSchema>;\n\t'neon-http': NeonHttpDatabase<TSchema>;\n\t'vercel-postgres': VercelPgDatabase<TSchema>;\n\t'aws-data-api-pg': AwsDataApiPgDatabase<TSchema>;\n\tplanetscale: PlanetScaleDatabase<TSchema>;\n\tmysql2: MySql2Database<TSchema>;\n\t'tidb-serverless': TiDBServerlessDatabase<TSchema>;\n\tlibsql: LibSQLDatabase<TSchema>;\n\tturso: LibSQLDatabase<TSchema>;\n\td1: DrizzleD1Database<TSchema>;\n\t'bun:sqlite': BunSQLiteDatabase<TSchema>;\n\t'better-sqlite3': DrizzleBetterSQLite3Database<TSchema>;\n};\n\ntype Primitive = string | number | boolean | undefined | null;\n\ntype ClientInstanceMap = {\n\t'node-postgres': NodePgPool;\n\t'postgres-js': PostgresJsClient;\n\t'neon-websocket': NeonServerlessPool;\n\t'neon-http': NeonQueryFunction<boolean, boolean>;\n\t'vercel-postgres':\n\t\t& VercelPool\n\t\t& (<O extends QueryResultRow>(strings: TemplateStringsArray, ...values: Primitive[]) => Promise<QueryResult<O>>);\n\t'aws-data-api-pg': RDSDataClient;\n\tplanetscale: PlanetscaleClient;\n\tmysql2: Mysql2Pool;\n\t'tidb-serverless': TiDBConnection;\n\tlibsql: LibsqlClient;\n\tturso: LibsqlClient;\n\td1: AnyD1Database;\n\t'bun:sqlite': BunDatabase;\n\t'better-sqlite3': BetterSQLite3Database;\n};\n\ntype ClientTypeImportErrorMap = {\n\t'node-postgres': 'pg`, `@types/pg';\n\t'postgres-js': 'postgres';\n\t'neon-websocket': '@neondatabase/serverless';\n\t'neon-http': '@neondatabase/serverless';\n\t'vercel-postgres': '@vercel/postgres';\n\t'aws-data-api-pg': '@aws-sdk/client-rds-data';\n\tplanetscale: '@planetscale/database';\n\tmysql2: 'mysql2';\n\t'tidb-serverless': '@tidbcloud/serverless';\n\tlibsql: '@libsql/client';\n\tturso: '@libsql/client';\n\td1: '@cloudflare/workers-types` or `@miniflare/d1';\n\t'bun:sqlite': 'bun-types';\n\t'better-sqlite3': 'better-sqlite3';\n};\n\ntype ImportTypeError<TClient extends DatabaseClient> =\n\t`Please install \\`${ClientTypeImportErrorMap[TClient]}\\` for Drizzle ORM to connect to database`;\n\ntype InitializerParams = {\n\t'node-postgres': {\n\t\tconnection: string | NodePgPoolConfig;\n\t};\n\t'postgres-js': {\n\t\tconnection: string | ({ url?: string } & PostgresJSOptions<Record<string, PostgresJSPostgresType>>);\n\t};\n\t'neon-websocket': {\n\t\tconnection: string | NeonServerlessConfig;\n\t};\n\t'neon-http': {\n\t\tconnection: MonodriverNeonHttpConfig;\n\t};\n\t'vercel-postgres': {};\n\t'aws-data-api-pg': {\n\t\tconnection: AwsDataApiConnectionConfig;\n\t};\n\tplanetscale: {\n\t\tconnection: PlanetscaleConfig | string;\n\t};\n\tmysql2: {\n\t\tconnection: Mysql2Config | string;\n\t};\n\t'tidb-serverless': {\n\t\tconnection: TiDBServerlessConfig | string;\n\t};\n\tlibsql: {\n\t\tconnection: LibsqlConfig | string;\n\t};\n\tturso: {\n\t\tconnection: LibsqlConfig | string;\n\t};\n\td1: {\n\t\tconnection: AnyD1Database;\n\t};\n\t'bun:sqlite': {\n\t\tconnection?: BunSqliteDatabaseConfig;\n\t};\n\t'better-sqlite3': {\n\t\tconnection?: BetterSQLite3DatabaseConfig;\n\t};\n};\n\ntype DetermineClient<\n\tTClient extends DatabaseClient,\n\tTSchema extends Record<string, unknown>,\n> =\n\t& ClientDrizzleInstanceMap<\n\t\tTSchema\n\t>[TClient]\n\t& {\n\t\t$client: ClientInstanceMap[TClient];\n\t};\n\nconst importError = (libName: string) => {\n\tthrow new Error(\n\t\t`Please install '${libName}' for Drizzle ORM to connect to database`,\n\t);\n};\n\nfunction assertUnreachable(_: never | undefined): never {\n\tthrow new Error(\"Didn't expect to get here\");\n}\n\nexport async function drizzle<\n\tTClient extends DatabaseClient,\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(\n\tclient: TClient,\n\t...params: TClient extends 'bun:sqlite' | 'better-sqlite3' ? (\n\t\t\t[] | [\n\t\t\t\t(\n\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t>\n\t\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t),\n\t\t\t] | [string]\n\t\t)\n\t\t: TClient extends 'vercel-postgres' ? ([] | [\n\t\t\t\t(\n\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t>\n\t\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t),\n\t\t\t])\n\t\t: TClient extends\n\t\t\t'postgres-js' | 'tidb-serverless' | 'libsql' | 'turso' | 'planetscale' | 'neon-http' | 'node-postgres' ? (\n\t\t\t\t[\n\t\t\t\t\t(\n\t\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t\t>\n\t\t\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t\t),\n\t\t\t\t] | [string]\n\t\t\t)\n\t\t: TClient extends 'mysql2' ? (\n\t\t\t\t[\n\t\t\t\t\t(\n\t\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t\t>\n\t\t\t\t\t\t& MySql2DrizzleConfig<TSchema>\n\t\t\t\t\t),\n\t\t\t\t] | [string]\n\t\t\t)\n\t\t: TClient extends 'neon-websocket' ? (\n\t\t\t\t| [\n\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t>\n\t\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t\t& {\n\t\t\t\t\t\tws?: any;\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t\t| [string]\n\t\t\t)\n\t\t: [\n\t\t\t(\n\t\t\t\t& IfNotImported<\n\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t>\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t),\n\t\t]\n): Promise<DetermineClient<TClient, TSchema>> {\n\tswitch (client) {\n\t\tcase 'node-postgres': {\n\t\t\tconst defpg = await import('pg').catch(() => importError('pg'));\n\t\t\tconst { drizzle } = await import('./node-postgres');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as\n\t\t\t\t\t& { connection: NodePgPoolConfig | string }\n\t\t\t\t\t& DrizzleConfig;\n\n\t\t\t\tconst instance = typeof connection === 'string'\n\t\t\t\t\t? new defpg.default.Pool({\n\t\t\t\t\t\tconnectionString: connection,\n\t\t\t\t\t})\n\t\t\t\t\t: new defpg.default.Pool(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = typeof params[0] === 'string'\n\t\t\t\t? new defpg.default.Pool({\n\t\t\t\t\tconnectionString: params[0],\n\t\t\t\t})\n\t\t\t\t: new defpg.default.Pool(params[0]);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'aws-data-api-pg': {\n\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\tconnection: AwsDataApiConnectionConfig;\n\t\t\t} & DrizzleConfig<TSchema>;\n\t\t\tconst { resourceArn, database, secretArn, ...rdsConfig } = connection;\n\n\t\t\tconst { RDSDataClient } = await import('@aws-sdk/client-rds-data').catch(() =>\n\t\t\t\timportError('@aws-sdk/client-rds-data')\n\t\t\t);\n\t\t\tconst { drizzle } = await import('./aws-data-api/pg');\n\n\t\t\tconst instance = new RDSDataClient(rdsConfig);\n\t\t\tconst db = drizzle(instance, { resourceArn, database, secretArn, ...drizzleConfig });\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'better-sqlite3': {\n\t\t\tconst { default: Client } = await import('better-sqlite3').catch(() => importError('better-sqlite3'));\n\t\t\tconst { drizzle } = await import('./better-sqlite3');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection: BetterSQLite3DatabaseConfig;\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object') {\n\t\t\t\t\tconst { source, ...options } = connection;\n\n\t\t\t\t\tconst instance = new Client(source, options);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = new Client(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new Client(params[0]);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'bun:sqlite': {\n\t\t\tconst { Database: Client } = await import('bun:sqlite').catch(() => {\n\t\t\t\tthrow new Error(`Please use bun to use 'bun:sqlite' for Drizzle ORM to connect to database`);\n\t\t\t});\n\t\t\tconst { drizzle } = await import('./bun-sqlite');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection: BunSqliteDatabaseConfig | string | undefined;\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object') {\n\t\t\t\t\tconst { source, ...opts } = connection;\n\n\t\t\t\t\tconst options = Object.values(opts).filter((v) => v !== undefined).length ? opts : undefined;\n\n\t\t\t\t\tconst instance = new Client(source, options);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = new Client(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new Client(params[0]);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'd1': {\n\t\t\tconst { connection, ...drizzleConfig } = params[0] as { connection: AnyD1Database } & DrizzleConfig;\n\n\t\t\tconst { drizzle } = await import('./d1');\n\n\t\t\tconst db = drizzle(connection, drizzleConfig);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'libsql':\n\t\tcase 'turso': {\n\t\t\tconst { createClient } = await import('@libsql/client').catch(() => importError('@libsql/client'));\n\t\t\tconst { drizzle } = await import('./libsql');\n\n\t\t\tif (typeof params[0] === 'string') {\n\t\t\t\tconst instance = createClient({\n\t\t\t\t\turl: params[0],\n\t\t\t\t});\n\t\t\t\tconst db = drizzle(instance);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst { connection, ...drizzleConfig } = params[0] as any as { connection: LibsqlConfig } & DrizzleConfig;\n\n\t\t\tconst instance = typeof connection === 'string' ? createClient({ url: connection }) : createClient(connection);\n\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'mysql2': {\n\t\t\tconst { createPool } = await import('mysql2/promise').catch(() => importError('mysql2'));\n\t\t\tconst { drizzle } = await import('./mysql2');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as\n\t\t\t\t\t& { connection: Mysql2Config | string }\n\t\t\t\t\t& MySql2DrizzleConfig;\n\n\t\t\t\tconst instance = createPool(connection as Mysql2Config);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst connectionString = params[0]!;\n\t\t\tconst instance = createPool(connectionString);\n\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'neon-http': {\n\t\t\tconst { neon } = await import('@neondatabase/serverless').catch(() => importError('@neondatabase/serverless'));\n\t\t\tconst { drizzle } = await import('./neon-http');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as { connection: MonodriverNeonHttpConfig } & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object') {\n\t\t\t\t\tconst { connectionString, ...options } = connection;\n\n\t\t\t\t\tconst instance = neon(connectionString, options);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = neon(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = neon(params[0]!);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'neon-websocket': {\n\t\t\tconst { Pool, neonConfig } = await import('@neondatabase/serverless').catch(() =>\n\t\t\t\timportError('@neondatabase/serverless')\n\t\t\t);\n\t\t\tconst { drizzle } = await import('./neon-serverless');\n\t\t\tif (typeof params[0] === 'string') {\n\t\t\t\tconst instance = new Pool({\n\t\t\t\t\tconnectionString: params[0],\n\t\t\t\t});\n\n\t\t\t\tconst db = drizzle(instance);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ws, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection?: NeonServerlessConfig | string;\n\t\t\t\t\tws?: any;\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (ws) {\n\t\t\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t\t\t}\n\n\t\t\t\tconst instance = typeof connection === 'string'\n\t\t\t\t\t? new Pool({\n\t\t\t\t\t\tconnectionString: connection,\n\t\t\t\t\t})\n\t\t\t\t\t: new Pool(connection);\n\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new Pool();\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'planetscale': {\n\t\t\tconst { Client } = await import('@planetscale/database').catch(() => importError('@planetscale/database'));\n\t\t\tconst { drizzle } = await import('./planetscale-serverless');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as\n\t\t\t\t\t& { connection: PlanetscaleConfig | string }\n\t\t\t\t\t& DrizzleConfig;\n\n\t\t\t\tconst instance = typeof connection === 'string'\n\t\t\t\t\t? new Client({\n\t\t\t\t\t\turl: connection,\n\t\t\t\t\t})\n\t\t\t\t\t: new Client(\n\t\t\t\t\t\tconnection,\n\t\t\t\t\t);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new Client({\n\t\t\t\turl: params[0],\n\t\t\t});\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'postgres-js': {\n\t\t\tconst { default: client } = await import('postgres').catch(() => importError('postgres'));\n\t\t\tconst { drizzle } = await import('./postgres-js');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection: { url?: string } & PostgresJSOptions<Record<string, PostgresJSPostgresType>>;\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\t\t\t\tconst { url, ...config } = connection;\n\n\t\t\t\t\tconst instance = client(url, config);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = client(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = client(params[0]!);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'tidb-serverless': {\n\t\t\tconst { connect } = await import('@tidbcloud/serverless').catch(() => importError('@tidbcloud/serverless'));\n\t\t\tconst { drizzle } = await import('./tidb-serverless');\n\n\t\t\tif (typeof params[0] === 'string') {\n\t\t\t\tconst instance = connect({\n\t\t\t\t\turl: params[0],\n\t\t\t\t});\n\t\t\t\tconst db = drizzle(instance);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst { connection, ...drizzleConfig } = params[0] as\n\t\t\t\t& { connection: TiDBServerlessConfig | string }\n\t\t\t\t& DrizzleConfig;\n\n\t\t\tconst instance = typeof connection === 'string'\n\t\t\t\t? connect({\n\t\t\t\t\turl: connection,\n\t\t\t\t})\n\t\t\t\t: connect(connection);\n\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'vercel-postgres': {\n\t\t\tconst drizzleConfig = params[0] as DrizzleConfig | undefined;\n\t\t\tconst { sql } = await import('@vercel/postgres').catch(() => importError('@vercel/postgres'));\n\t\t\tconst { drizzle } = await import('./vercel-postgres');\n\n\t\t\tconst db = drizzle(sql, drizzleConfig);\n\n\t\t\treturn db as any;\n\t\t}\n\t}\n\n\tassertUnreachable(client);\n}\n"],"mappings":"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","names":["drizzle","instance","db","client"]}
1
+ {"version":3,"sources":["../src/monodriver.ts"],"sourcesContent":["/* eslint-disable import/extensions */\nimport type { RDSDataClient, RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';\nimport type { PGlite, PGliteOptions } from '@electric-sql/pglite';\nimport type { Client as LibsqlClient, Config as LibsqlConfig } from '@libsql/client';\nimport type {\n\tHTTPTransactionOptions as NeonHttpConfig,\n\tNeonQueryFunction,\n\tPool as NeonServerlessPool,\n\tPoolConfig as NeonServerlessConfig,\n\tQueryResult,\n\tQueryResultRow,\n} from '@neondatabase/serverless';\nimport type { Client as PlanetscaleClient, Config as PlanetscaleConfig } from '@planetscale/database';\nimport type { Config as TiDBServerlessConfig, Connection as TiDBConnection } from '@tidbcloud/serverless';\nimport type { VercelPool } from '@vercel/postgres';\nimport type { Database as BetterSQLite3Database, Options as BetterSQLite3Options } from 'better-sqlite3';\nimport type { Database as BunDatabase } from 'bun:sqlite';\nimport type { Pool as Mysql2Pool, PoolOptions as Mysql2Config } from 'mysql2';\nimport type { Pool as NodePgPool, PoolConfig as NodePgPoolConfig } from 'pg';\nimport type {\n\tOptions as PostgresJSOptions,\n\tPostgresType as PostgresJSPostgresType,\n\tSql as PostgresJsClient,\n} from 'postgres';\nimport type { AwsDataApiPgDatabase, DrizzleAwsDataApiPgConfig } from './aws-data-api/pg/index.ts';\nimport type { BetterSQLite3Database as DrizzleBetterSQLite3Database } from './better-sqlite3/index.ts';\nimport type { BunSQLiteDatabase } from './bun-sqlite/index.ts';\nimport type { AnyD1Database, DrizzleD1Database } from './d1/index.ts';\nimport type { LibSQLDatabase } from './libsql/index.ts';\nimport type { MySql2Database, MySql2DrizzleConfig } from './mysql2/index.ts';\nimport type { NeonHttpDatabase } from './neon-http/index.ts';\nimport type { NeonDatabase } from './neon-serverless/index.ts';\nimport type { NodePgDatabase } from './node-postgres/driver.ts';\nimport type { PgliteDatabase } from './pglite/driver.ts';\nimport type { PlanetScaleDatabase } from './planetscale-serverless/index.ts';\nimport type { PostgresJsDatabase } from './postgres-js/index.ts';\nimport type { TiDBServerlessDatabase } from './tidb-serverless/index.ts';\nimport type { DrizzleConfig, IfNotImported } from './utils.ts';\nimport type { VercelPgDatabase } from './vercel-postgres/index.ts';\n\ntype BunSqliteDatabaseOptions = {\n\t/**\n\t * Open the database as read-only (no write operations, no create).\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READONLY}\n\t */\n\treadonly?: boolean;\n\t/**\n\t * Allow creating a new database\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_CREATE}\n\t */\n\tcreate?: boolean;\n\t/**\n\t * Open the database as read-write\n\t *\n\t * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}\n\t */\n\treadwrite?: boolean;\n};\n\ntype BunSqliteDatabaseConfig =\n\t| ({\n\t\tsource?: string;\n\t} & BunSqliteDatabaseOptions)\n\t| string\n\t| undefined;\n\ntype BetterSQLite3DatabaseConfig =\n\t| ({\n\t\tsource?:\n\t\t\t| string\n\t\t\t| Buffer;\n\t} & BetterSQLite3Options)\n\t| string\n\t| undefined;\n\ntype MonodriverNeonHttpConfig =\n\t| ({\n\t\tconnectionString: string;\n\t} & NeonHttpConfig<boolean, boolean>)\n\t| string;\n\ntype AwsDataApiConnectionConfig = RDSConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;\n\ntype DatabaseClient =\n\t| 'node-postgres'\n\t| 'postgres-js'\n\t| 'neon-websocket'\n\t| 'neon-http'\n\t| 'vercel-postgres'\n\t| 'aws-data-api-pg'\n\t| 'planetscale'\n\t| 'mysql2'\n\t| 'tidb-serverless'\n\t| 'libsql'\n\t| 'turso'\n\t| 'd1'\n\t| 'bun:sqlite'\n\t| 'better-sqlite3'\n\t| 'pglite';\n\ntype ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {\n\t'node-postgres': NodePgDatabase<TSchema>;\n\t'postgres-js': PostgresJsDatabase<TSchema>;\n\t'neon-websocket': NeonDatabase<TSchema>;\n\t'neon-http': NeonHttpDatabase<TSchema>;\n\t'vercel-postgres': VercelPgDatabase<TSchema>;\n\t'aws-data-api-pg': AwsDataApiPgDatabase<TSchema>;\n\tplanetscale: PlanetScaleDatabase<TSchema>;\n\tmysql2: MySql2Database<TSchema>;\n\t'tidb-serverless': TiDBServerlessDatabase<TSchema>;\n\tlibsql: LibSQLDatabase<TSchema>;\n\tturso: LibSQLDatabase<TSchema>;\n\td1: DrizzleD1Database<TSchema>;\n\t'bun:sqlite': BunSQLiteDatabase<TSchema>;\n\t'better-sqlite3': DrizzleBetterSQLite3Database<TSchema>;\n\tpglite: PgliteDatabase<TSchema>;\n};\n\ntype Primitive = string | number | boolean | undefined | null;\n\ntype ClientInstanceMap = {\n\t'node-postgres': NodePgPool;\n\t'postgres-js': PostgresJsClient;\n\t'neon-websocket': NeonServerlessPool;\n\t'neon-http': NeonQueryFunction<boolean, boolean>;\n\t'vercel-postgres':\n\t\t& VercelPool\n\t\t& (<O extends QueryResultRow>(strings: TemplateStringsArray, ...values: Primitive[]) => Promise<QueryResult<O>>);\n\t'aws-data-api-pg': RDSDataClient;\n\tplanetscale: PlanetscaleClient;\n\tmysql2: Mysql2Pool;\n\t'tidb-serverless': TiDBConnection;\n\tlibsql: LibsqlClient;\n\tturso: LibsqlClient;\n\td1: AnyD1Database;\n\t'bun:sqlite': BunDatabase;\n\t'better-sqlite3': BetterSQLite3Database;\n\tpglite: PGlite;\n};\n\ntype ClientTypeImportErrorMap = {\n\t'node-postgres': 'pg`, `@types/pg';\n\t'postgres-js': 'postgres';\n\t'neon-websocket': '@neondatabase/serverless';\n\t'neon-http': '@neondatabase/serverless';\n\t'vercel-postgres': '@vercel/postgres';\n\t'aws-data-api-pg': '@aws-sdk/client-rds-data';\n\tplanetscale: '@planetscale/database';\n\tmysql2: 'mysql2';\n\t'tidb-serverless': '@tidbcloud/serverless';\n\tlibsql: '@libsql/client';\n\tturso: '@libsql/client';\n\td1: '@cloudflare/workers-types` or `@miniflare/d1';\n\t'bun:sqlite': 'bun-types';\n\t'better-sqlite3': 'better-sqlite3';\n\tpglite: '@electric-sql/pglite';\n};\n\ntype ImportTypeError<TClient extends DatabaseClient> =\n\t`Please install \\`${ClientTypeImportErrorMap[TClient]}\\` for Drizzle ORM to connect to database`;\n\ntype InitializerParams = {\n\t'node-postgres': {\n\t\tconnection: string | NodePgPoolConfig;\n\t};\n\t'postgres-js': {\n\t\tconnection: string | ({ url?: string } & PostgresJSOptions<Record<string, PostgresJSPostgresType>>);\n\t};\n\t'neon-websocket': {\n\t\tconnection: string | NeonServerlessConfig;\n\t};\n\t'neon-http': {\n\t\tconnection: MonodriverNeonHttpConfig;\n\t};\n\t'vercel-postgres': {};\n\t'aws-data-api-pg': {\n\t\tconnection: AwsDataApiConnectionConfig;\n\t};\n\tplanetscale: {\n\t\tconnection: PlanetscaleConfig | string;\n\t};\n\tmysql2: {\n\t\tconnection: Mysql2Config | string;\n\t};\n\t'tidb-serverless': {\n\t\tconnection: TiDBServerlessConfig | string;\n\t};\n\tlibsql: {\n\t\tconnection: LibsqlConfig | string;\n\t};\n\tturso: {\n\t\tconnection: LibsqlConfig | string;\n\t};\n\td1: {\n\t\tconnection: AnyD1Database;\n\t};\n\t'bun:sqlite': {\n\t\tconnection?: BunSqliteDatabaseConfig;\n\t};\n\t'better-sqlite3': {\n\t\tconnection?: BetterSQLite3DatabaseConfig;\n\t};\n\tpglite: {\n\t\tconnection?: (PGliteOptions & { dataDir?: string }) | string;\n\t};\n};\n\ntype DetermineClient<\n\tTClient extends DatabaseClient,\n\tTSchema extends Record<string, unknown>,\n> =\n\t& ClientDrizzleInstanceMap<\n\t\tTSchema\n\t>[TClient]\n\t& {\n\t\t$client: ClientInstanceMap[TClient];\n\t};\n\nconst importError = (libName: string) => {\n\tthrow new Error(\n\t\t`Please install '${libName}' for Drizzle ORM to connect to database`,\n\t);\n};\n\nfunction assertUnreachable(_: never | undefined): never {\n\tthrow new Error(\"Didn't expect to get here\");\n}\n\nexport async function drizzle<\n\tTClient extends DatabaseClient,\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(\n\tclient: TClient,\n\t...params: TClient extends 'bun:sqlite' | 'better-sqlite3' | 'pglite' ? (\n\t\t\t[] | [\n\t\t\t\t(\n\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t>\n\t\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t),\n\t\t\t] | [string]\n\t\t)\n\t\t: TClient extends 'vercel-postgres' ? ([] | [\n\t\t\t\t(\n\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t>\n\t\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t),\n\t\t\t])\n\t\t: TClient extends\n\t\t\t'postgres-js' | 'tidb-serverless' | 'libsql' | 'turso' | 'planetscale' | 'neon-http' | 'node-postgres' ? (\n\t\t\t\t[\n\t\t\t\t\t(\n\t\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t\t>\n\t\t\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t\t),\n\t\t\t\t] | [string]\n\t\t\t)\n\t\t: TClient extends 'mysql2' ? (\n\t\t\t\t[\n\t\t\t\t\t(\n\t\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t\t>\n\t\t\t\t\t\t& MySql2DrizzleConfig<TSchema>\n\t\t\t\t\t),\n\t\t\t\t] | [string]\n\t\t\t)\n\t\t: TClient extends 'neon-websocket' ? (\n\t\t\t\t| [\n\t\t\t\t\t& IfNotImported<\n\t\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t\t>\n\t\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t\t& {\n\t\t\t\t\t\tws?: any;\n\t\t\t\t\t},\n\t\t\t\t]\n\t\t\t\t| [string]\n\t\t\t)\n\t\t: [\n\t\t\t(\n\t\t\t\t& IfNotImported<\n\t\t\t\t\tClientInstanceMap[TClient],\n\t\t\t\t\t{ connection: ImportTypeError<TClient> },\n\t\t\t\t\tInitializerParams[TClient]\n\t\t\t\t>\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t),\n\t\t]\n): Promise<DetermineClient<TClient, TSchema>> {\n\tswitch (client) {\n\t\tcase 'node-postgres': {\n\t\t\tconst defpg = await import('pg').catch(() => importError('pg'));\n\t\t\tconst { drizzle } = await import('./node-postgres');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as\n\t\t\t\t\t& { connection: NodePgPoolConfig | string }\n\t\t\t\t\t& DrizzleConfig;\n\n\t\t\t\tconst instance = typeof connection === 'string'\n\t\t\t\t\t? new defpg.default.Pool({\n\t\t\t\t\t\tconnectionString: connection,\n\t\t\t\t\t})\n\t\t\t\t\t: new defpg.default.Pool(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = typeof params[0] === 'string'\n\t\t\t\t? new defpg.default.Pool({\n\t\t\t\t\tconnectionString: params[0],\n\t\t\t\t})\n\t\t\t\t: new defpg.default.Pool(params[0]);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'aws-data-api-pg': {\n\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\tconnection: AwsDataApiConnectionConfig;\n\t\t\t} & DrizzleConfig<TSchema>;\n\t\t\tconst { resourceArn, database, secretArn, ...rdsConfig } = connection;\n\n\t\t\tconst { RDSDataClient } = await import('@aws-sdk/client-rds-data').catch(() =>\n\t\t\t\timportError('@aws-sdk/client-rds-data')\n\t\t\t);\n\t\t\tconst { drizzle } = await import('./aws-data-api/pg');\n\n\t\t\tconst instance = new RDSDataClient(rdsConfig);\n\t\t\tconst db = drizzle(instance, { resourceArn, database, secretArn, ...drizzleConfig });\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'better-sqlite3': {\n\t\t\tconst { default: Client } = await import('better-sqlite3').catch(() => importError('better-sqlite3'));\n\t\t\tconst { drizzle } = await import('./better-sqlite3');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection: BetterSQLite3DatabaseConfig;\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object') {\n\t\t\t\t\tconst { source, ...options } = connection;\n\n\t\t\t\t\tconst instance = new Client(source, options);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = new Client(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new Client(params[0]);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'bun:sqlite': {\n\t\t\tconst { Database: Client } = await import('bun:sqlite').catch(() => {\n\t\t\t\tthrow new Error(`Please use bun to use 'bun:sqlite' for Drizzle ORM to connect to database`);\n\t\t\t});\n\t\t\tconst { drizzle } = await import('./bun-sqlite');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection: BunSqliteDatabaseConfig | string | undefined;\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object') {\n\t\t\t\t\tconst { source, ...opts } = connection;\n\n\t\t\t\t\tconst options = Object.values(opts).filter((v) => v !== undefined).length ? opts : undefined;\n\n\t\t\t\t\tconst instance = new Client(source, options);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = new Client(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new Client(params[0]);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'd1': {\n\t\t\tconst { connection, ...drizzleConfig } = params[0] as { connection: AnyD1Database } & DrizzleConfig;\n\n\t\t\tconst { drizzle } = await import('./d1');\n\n\t\t\tconst db = drizzle(connection, drizzleConfig);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'libsql':\n\t\tcase 'turso': {\n\t\t\tconst { createClient } = await import('@libsql/client').catch(() => importError('@libsql/client'));\n\t\t\tconst { drizzle } = await import('./libsql');\n\n\t\t\tif (typeof params[0] === 'string') {\n\t\t\t\tconst instance = createClient({\n\t\t\t\t\turl: params[0],\n\t\t\t\t});\n\t\t\t\tconst db = drizzle(instance);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst { connection, ...drizzleConfig } = params[0] as any as { connection: LibsqlConfig } & DrizzleConfig;\n\n\t\t\tconst instance = typeof connection === 'string' ? createClient({ url: connection }) : createClient(connection);\n\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'mysql2': {\n\t\t\tconst { createPool } = await import('mysql2/promise').catch(() => importError('mysql2'));\n\t\t\tconst { drizzle } = await import('./mysql2');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as\n\t\t\t\t\t& { connection: Mysql2Config | string }\n\t\t\t\t\t& MySql2DrizzleConfig;\n\n\t\t\t\tconst instance = createPool(connection as Mysql2Config);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst connectionString = params[0]!;\n\t\t\tconst instance = createPool(connectionString);\n\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'neon-http': {\n\t\t\tconst { neon } = await import('@neondatabase/serverless').catch(() => importError('@neondatabase/serverless'));\n\t\t\tconst { drizzle } = await import('./neon-http');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as { connection: MonodriverNeonHttpConfig } & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object') {\n\t\t\t\t\tconst { connectionString, ...options } = connection;\n\n\t\t\t\t\tconst instance = neon(connectionString, options);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = neon(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = neon(params[0]!);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'neon-websocket': {\n\t\t\tconst { Pool, neonConfig } = await import('@neondatabase/serverless').catch(() =>\n\t\t\t\timportError('@neondatabase/serverless')\n\t\t\t);\n\t\t\tconst { drizzle } = await import('./neon-serverless');\n\t\t\tif (typeof params[0] === 'string') {\n\t\t\t\tconst instance = new Pool({\n\t\t\t\t\tconnectionString: params[0],\n\t\t\t\t});\n\n\t\t\t\tconst db = drizzle(instance);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ws, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection?: NeonServerlessConfig | string;\n\t\t\t\t\tws?: any;\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (ws) {\n\t\t\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t\t\t}\n\n\t\t\t\tconst instance = typeof connection === 'string'\n\t\t\t\t\t? new Pool({\n\t\t\t\t\t\tconnectionString: connection,\n\t\t\t\t\t})\n\t\t\t\t\t: new Pool(connection);\n\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new Pool();\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'planetscale': {\n\t\t\tconst { Client } = await import('@planetscale/database').catch(() => importError('@planetscale/database'));\n\t\t\tconst { drizzle } = await import('./planetscale-serverless');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as\n\t\t\t\t\t& { connection: PlanetscaleConfig | string }\n\t\t\t\t\t& DrizzleConfig;\n\n\t\t\t\tconst instance = typeof connection === 'string'\n\t\t\t\t\t? new Client({\n\t\t\t\t\t\turl: connection,\n\t\t\t\t\t})\n\t\t\t\t\t: new Client(\n\t\t\t\t\t\tconnection,\n\t\t\t\t\t);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new Client({\n\t\t\t\turl: params[0],\n\t\t\t});\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'postgres-js': {\n\t\t\tconst { default: client } = await import('postgres').catch(() => importError('postgres'));\n\t\t\tconst { drizzle } = await import('./postgres-js');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection: { url?: string } & PostgresJSOptions<Record<string, PostgresJSPostgresType>>;\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\t\t\t\tconst { url, ...config } = connection;\n\n\t\t\t\t\tconst instance = client(url, config);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = client(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = client(params[0]!);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'tidb-serverless': {\n\t\t\tconst { connect } = await import('@tidbcloud/serverless').catch(() => importError('@tidbcloud/serverless'));\n\t\t\tconst { drizzle } = await import('./tidb-serverless');\n\n\t\t\tif (typeof params[0] === 'string') {\n\t\t\t\tconst instance = connect({\n\t\t\t\t\turl: params[0],\n\t\t\t\t});\n\t\t\t\tconst db = drizzle(instance);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst { connection, ...drizzleConfig } = params[0] as\n\t\t\t\t& { connection: TiDBServerlessConfig | string }\n\t\t\t\t& DrizzleConfig;\n\n\t\t\tconst instance = typeof connection === 'string'\n\t\t\t\t? connect({\n\t\t\t\t\turl: connection,\n\t\t\t\t})\n\t\t\t\t: connect(connection);\n\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\treturn db as any;\n\t\t}\n\t\tcase 'vercel-postgres': {\n\t\t\tconst drizzleConfig = params[0] as DrizzleConfig | undefined;\n\t\t\tconst { sql } = await import('@vercel/postgres').catch(() => importError('@vercel/postgres'));\n\t\t\tconst { drizzle } = await import('./vercel-postgres');\n\n\t\t\tconst db = drizzle(sql, drizzleConfig);\n\n\t\t\treturn db as any;\n\t\t}\n\n\t\tcase 'pglite': {\n\t\t\tconst { PGlite } = await import('@electric-sql/pglite').catch(() => importError('@electric-sql/pglite'));\n\t\t\tconst { drizzle } = await import('./pglite');\n\n\t\t\tif (typeof params[0] === 'object') {\n\t\t\t\tconst { connection, ...drizzleConfig } = params[0] as {\n\t\t\t\t\tconnection: PGliteOptions & { dataDir: string };\n\t\t\t\t} & DrizzleConfig;\n\n\t\t\t\tif (typeof connection === 'object') {\n\t\t\t\t\tconst { dataDir, ...options } = connection;\n\n\t\t\t\t\tconst instance = new PGlite(dataDir, options);\n\t\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\t\treturn db as any;\n\t\t\t\t}\n\n\t\t\t\tconst instance = new PGlite(connection);\n\t\t\t\tconst db = drizzle(instance, drizzleConfig);\n\n\t\t\t\treturn db as any;\n\t\t\t}\n\n\t\t\tconst instance = new PGlite(params[0]);\n\t\t\tconst db = drizzle(instance);\n\n\t\t\treturn db as any;\n\t\t}\n\t}\n\n\tassertUnreachable(client);\n}\n"],"mappings":"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","names":["drizzle","instance","db","client"]}
package/monodriver.d.cts CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference types="bun-types" />
2
2
  /// <reference types="node" />
3
3
  import type { RDSDataClient, RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';
4
+ import type { PGlite, PGliteOptions } from '@electric-sql/pglite';
4
5
  import type { Client as LibsqlClient, Config as LibsqlConfig } from '@libsql/client';
5
6
  import type { HTTPTransactionOptions as NeonHttpConfig, NeonQueryFunction, Pool as NeonServerlessPool, PoolConfig as NeonServerlessConfig, QueryResult, QueryResultRow } from '@neondatabase/serverless';
6
7
  import type { Client as PlanetscaleClient, Config as PlanetscaleConfig } from '@planetscale/database';
@@ -20,6 +21,7 @@ import type { MySql2Database, MySql2DrizzleConfig } from "./mysql2/index.cjs";
20
21
  import type { NeonHttpDatabase } from "./neon-http/index.cjs";
21
22
  import type { NeonDatabase } from "./neon-serverless/index.cjs";
22
23
  import type { NodePgDatabase } from "./node-postgres/driver.cjs";
24
+ import type { PgliteDatabase } from "./pglite/driver.cjs";
23
25
  import type { PlanetScaleDatabase } from "./planetscale-serverless/index.cjs";
24
26
  import type { PostgresJsDatabase } from "./postgres-js/index.cjs";
25
27
  import type { TiDBServerlessDatabase } from "./tidb-serverless/index.cjs";
@@ -55,7 +57,7 @@ type MonodriverNeonHttpConfig = ({
55
57
  connectionString: string;
56
58
  } & NeonHttpConfig<boolean, boolean>) | string;
57
59
  type AwsDataApiConnectionConfig = RDSConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;
58
- type DatabaseClient = 'node-postgres' | 'postgres-js' | 'neon-websocket' | 'neon-http' | 'vercel-postgres' | 'aws-data-api-pg' | 'planetscale' | 'mysql2' | 'tidb-serverless' | 'libsql' | 'turso' | 'd1' | 'bun:sqlite' | 'better-sqlite3';
60
+ type DatabaseClient = 'node-postgres' | 'postgres-js' | 'neon-websocket' | 'neon-http' | 'vercel-postgres' | 'aws-data-api-pg' | 'planetscale' | 'mysql2' | 'tidb-serverless' | 'libsql' | 'turso' | 'd1' | 'bun:sqlite' | 'better-sqlite3' | 'pglite';
59
61
  type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
60
62
  'node-postgres': NodePgDatabase<TSchema>;
61
63
  'postgres-js': PostgresJsDatabase<TSchema>;
@@ -71,6 +73,7 @@ type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
71
73
  d1: DrizzleD1Database<TSchema>;
72
74
  'bun:sqlite': BunSQLiteDatabase<TSchema>;
73
75
  'better-sqlite3': DrizzleBetterSQLite3Database<TSchema>;
76
+ pglite: PgliteDatabase<TSchema>;
74
77
  };
75
78
  type Primitive = string | number | boolean | undefined | null;
76
79
  type ClientInstanceMap = {
@@ -88,6 +91,7 @@ type ClientInstanceMap = {
88
91
  d1: AnyD1Database;
89
92
  'bun:sqlite': BunDatabase;
90
93
  'better-sqlite3': BetterSQLite3Database;
94
+ pglite: PGlite;
91
95
  };
92
96
  type ClientTypeImportErrorMap = {
93
97
  'node-postgres': 'pg`, `@types/pg';
@@ -104,6 +108,7 @@ type ClientTypeImportErrorMap = {
104
108
  d1: '@cloudflare/workers-types` or `@miniflare/d1';
105
109
  'bun:sqlite': 'bun-types';
106
110
  'better-sqlite3': 'better-sqlite3';
111
+ pglite: '@electric-sql/pglite';
107
112
  };
108
113
  type ImportTypeError<TClient extends DatabaseClient> = `Please install \`${ClientTypeImportErrorMap[TClient]}\` for Drizzle ORM to connect to database`;
109
114
  type InitializerParams = {
@@ -149,11 +154,16 @@ type InitializerParams = {
149
154
  'better-sqlite3': {
150
155
  connection?: BetterSQLite3DatabaseConfig;
151
156
  };
157
+ pglite: {
158
+ connection?: (PGliteOptions & {
159
+ dataDir?: string;
160
+ }) | string;
161
+ };
152
162
  };
153
163
  type DetermineClient<TClient extends DatabaseClient, TSchema extends Record<string, unknown>> = ClientDrizzleInstanceMap<TSchema>[TClient] & {
154
164
  $client: ClientInstanceMap[TClient];
155
165
  };
156
- export declare function drizzle<TClient extends DatabaseClient, TSchema extends Record<string, unknown> = Record<string, never>>(client: TClient, ...params: TClient extends 'bun:sqlite' | 'better-sqlite3' ? ([
166
+ export declare function drizzle<TClient extends DatabaseClient, TSchema extends Record<string, unknown> = Record<string, never>>(client: TClient, ...params: TClient extends 'bun:sqlite' | 'better-sqlite3' | 'pglite' ? ([
157
167
  ] | [
158
168
  (IfNotImported<ClientInstanceMap[TClient], {
159
169
  connection: ImportTypeError<TClient>;
package/monodriver.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  /// <reference types="bun-types" />
2
2
  /// <reference types="node" />
3
3
  import type { RDSDataClient, RDSDataClientConfig as RDSConfig } from '@aws-sdk/client-rds-data';
4
+ import type { PGlite, PGliteOptions } from '@electric-sql/pglite';
4
5
  import type { Client as LibsqlClient, Config as LibsqlConfig } from '@libsql/client';
5
6
  import type { HTTPTransactionOptions as NeonHttpConfig, NeonQueryFunction, Pool as NeonServerlessPool, PoolConfig as NeonServerlessConfig, QueryResult, QueryResultRow } from '@neondatabase/serverless';
6
7
  import type { Client as PlanetscaleClient, Config as PlanetscaleConfig } from '@planetscale/database';
@@ -20,6 +21,7 @@ import type { MySql2Database, MySql2DrizzleConfig } from "./mysql2/index.js";
20
21
  import type { NeonHttpDatabase } from "./neon-http/index.js";
21
22
  import type { NeonDatabase } from "./neon-serverless/index.js";
22
23
  import type { NodePgDatabase } from "./node-postgres/driver.js";
24
+ import type { PgliteDatabase } from "./pglite/driver.js";
23
25
  import type { PlanetScaleDatabase } from "./planetscale-serverless/index.js";
24
26
  import type { PostgresJsDatabase } from "./postgres-js/index.js";
25
27
  import type { TiDBServerlessDatabase } from "./tidb-serverless/index.js";
@@ -55,7 +57,7 @@ type MonodriverNeonHttpConfig = ({
55
57
  connectionString: string;
56
58
  } & NeonHttpConfig<boolean, boolean>) | string;
57
59
  type AwsDataApiConnectionConfig = RDSConfig & Omit<DrizzleAwsDataApiPgConfig, keyof DrizzleConfig>;
58
- type DatabaseClient = 'node-postgres' | 'postgres-js' | 'neon-websocket' | 'neon-http' | 'vercel-postgres' | 'aws-data-api-pg' | 'planetscale' | 'mysql2' | 'tidb-serverless' | 'libsql' | 'turso' | 'd1' | 'bun:sqlite' | 'better-sqlite3';
60
+ type DatabaseClient = 'node-postgres' | 'postgres-js' | 'neon-websocket' | 'neon-http' | 'vercel-postgres' | 'aws-data-api-pg' | 'planetscale' | 'mysql2' | 'tidb-serverless' | 'libsql' | 'turso' | 'd1' | 'bun:sqlite' | 'better-sqlite3' | 'pglite';
59
61
  type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
60
62
  'node-postgres': NodePgDatabase<TSchema>;
61
63
  'postgres-js': PostgresJsDatabase<TSchema>;
@@ -71,6 +73,7 @@ type ClientDrizzleInstanceMap<TSchema extends Record<string, any>> = {
71
73
  d1: DrizzleD1Database<TSchema>;
72
74
  'bun:sqlite': BunSQLiteDatabase<TSchema>;
73
75
  'better-sqlite3': DrizzleBetterSQLite3Database<TSchema>;
76
+ pglite: PgliteDatabase<TSchema>;
74
77
  };
75
78
  type Primitive = string | number | boolean | undefined | null;
76
79
  type ClientInstanceMap = {
@@ -88,6 +91,7 @@ type ClientInstanceMap = {
88
91
  d1: AnyD1Database;
89
92
  'bun:sqlite': BunDatabase;
90
93
  'better-sqlite3': BetterSQLite3Database;
94
+ pglite: PGlite;
91
95
  };
92
96
  type ClientTypeImportErrorMap = {
93
97
  'node-postgres': 'pg`, `@types/pg';
@@ -104,6 +108,7 @@ type ClientTypeImportErrorMap = {
104
108
  d1: '@cloudflare/workers-types` or `@miniflare/d1';
105
109
  'bun:sqlite': 'bun-types';
106
110
  'better-sqlite3': 'better-sqlite3';
111
+ pglite: '@electric-sql/pglite';
107
112
  };
108
113
  type ImportTypeError<TClient extends DatabaseClient> = `Please install \`${ClientTypeImportErrorMap[TClient]}\` for Drizzle ORM to connect to database`;
109
114
  type InitializerParams = {
@@ -149,11 +154,16 @@ type InitializerParams = {
149
154
  'better-sqlite3': {
150
155
  connection?: BetterSQLite3DatabaseConfig;
151
156
  };
157
+ pglite: {
158
+ connection?: (PGliteOptions & {
159
+ dataDir?: string;
160
+ }) | string;
161
+ };
152
162
  };
153
163
  type DetermineClient<TClient extends DatabaseClient, TSchema extends Record<string, unknown>> = ClientDrizzleInstanceMap<TSchema>[TClient] & {
154
164
  $client: ClientInstanceMap[TClient];
155
165
  };
156
- export declare function drizzle<TClient extends DatabaseClient, TSchema extends Record<string, unknown> = Record<string, never>>(client: TClient, ...params: TClient extends 'bun:sqlite' | 'better-sqlite3' ? ([
166
+ export declare function drizzle<TClient extends DatabaseClient, TSchema extends Record<string, unknown> = Record<string, never>>(client: TClient, ...params: TClient extends 'bun:sqlite' | 'better-sqlite3' | 'pglite' ? ([
157
167
  ] | [
158
168
  (IfNotImported<ClientInstanceMap[TClient], {
159
169
  connection: ImportTypeError<TClient>;
package/monodriver.js CHANGED
@@ -221,6 +221,25 @@ async function drizzle(client, ...params) {
221
221
  const db = drizzle2(sql, drizzleConfig);
222
222
  return db;
223
223
  }
224
+ case "pglite": {
225
+ const { PGlite } = await import("@electric-sql/pglite").catch(() => importError("@electric-sql/pglite"));
226
+ const { drizzle: drizzle2 } = await import("./pglite");
227
+ if (typeof params[0] === "object") {
228
+ const { connection, ...drizzleConfig } = params[0];
229
+ if (typeof connection === "object") {
230
+ const { dataDir, ...options } = connection;
231
+ const instance3 = new PGlite(dataDir, options);
232
+ const db3 = drizzle2(instance3, drizzleConfig);
233
+ return db3;
234
+ }
235
+ const instance2 = new PGlite(connection);
236
+ const db2 = drizzle2(instance2, drizzleConfig);
237
+ return db2;
238
+ }
239
+ const instance = new PGlite(params[0]);
240
+ const db = drizzle2(instance);
241
+ return db;
242
+ }
224
243
  }
225
244
  assertUnreachable(client);
226
245
  }