drizzle-orm 0.38.4 → 0.39.0-2c67783

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 (165) hide show
  1. package/bun-sql/driver.cjs +96 -0
  2. package/bun-sql/driver.cjs.map +1 -0
  3. package/bun-sql/driver.d.cts +30 -0
  4. package/bun-sql/driver.d.ts +30 -0
  5. package/bun-sql/driver.js +74 -0
  6. package/bun-sql/driver.js.map +1 -0
  7. package/bun-sql/index.cjs +25 -0
  8. package/bun-sql/index.cjs.map +1 -0
  9. package/bun-sql/index.d.cts +2 -0
  10. package/bun-sql/index.d.ts +2 -0
  11. package/bun-sql/index.js +3 -0
  12. package/bun-sql/index.js.map +1 -0
  13. package/bun-sql/migrator.cjs +33 -0
  14. package/bun-sql/migrator.cjs.map +1 -0
  15. package/bun-sql/migrator.d.cts +3 -0
  16. package/bun-sql/migrator.d.ts +3 -0
  17. package/bun-sql/migrator.js +9 -0
  18. package/bun-sql/migrator.js.map +1 -0
  19. package/bun-sql/session.cjs +162 -0
  20. package/bun-sql/session.cjs.map +1 -0
  21. package/bun-sql/session.d.cts +50 -0
  22. package/bun-sql/session.d.ts +50 -0
  23. package/bun-sql/session.js +136 -0
  24. package/bun-sql/session.js.map +1 -0
  25. package/bun-sqlite/session.cjs.map +1 -1
  26. package/bun-sqlite/session.d.cts +1 -1
  27. package/bun-sqlite/session.d.ts +1 -1
  28. package/bun-sqlite/session.js.map +1 -1
  29. package/mysql-core/db.cjs +17 -11
  30. package/mysql-core/db.cjs.map +1 -1
  31. package/mysql-core/db.d.cts +4 -7
  32. package/mysql-core/db.d.ts +4 -7
  33. package/mysql-core/db.js +17 -11
  34. package/mysql-core/db.js.map +1 -1
  35. package/mysql-core/query-builders/query-builder.cjs +15 -11
  36. package/mysql-core/query-builders/query-builder.cjs.map +1 -1
  37. package/mysql-core/query-builders/query-builder.d.cts +2 -6
  38. package/mysql-core/query-builders/query-builder.d.ts +2 -6
  39. package/mysql-core/query-builders/query-builder.js +15 -11
  40. package/mysql-core/query-builders/query-builder.js.map +1 -1
  41. package/mysql-core/subquery.cjs.map +1 -1
  42. package/mysql-core/subquery.d.cts +15 -2
  43. package/mysql-core/subquery.d.ts +15 -2
  44. package/neon/index.cjs +2 -0
  45. package/neon/index.cjs.map +1 -1
  46. package/neon/index.d.cts +1 -0
  47. package/neon/index.d.ts +1 -0
  48. package/neon/index.js +1 -0
  49. package/neon/index.js.map +1 -1
  50. package/neon/neon-identity.cjs +38 -0
  51. package/neon/neon-identity.cjs.map +1 -0
  52. package/neon/neon-identity.d.cts +116 -0
  53. package/neon/neon-identity.d.ts +116 -0
  54. package/neon/neon-identity.js +14 -0
  55. package/neon/neon-identity.js.map +1 -0
  56. package/package.json +62 -2
  57. package/pg-core/db.cjs +17 -11
  58. package/pg-core/db.cjs.map +1 -1
  59. package/pg-core/db.d.cts +4 -7
  60. package/pg-core/db.d.ts +4 -7
  61. package/pg-core/db.js +17 -11
  62. package/pg-core/db.js.map +1 -1
  63. package/pg-core/query-builders/delete.cjs +13 -0
  64. package/pg-core/query-builders/delete.cjs.map +1 -1
  65. package/pg-core/query-builders/delete.d.cts +13 -10
  66. package/pg-core/query-builders/delete.d.ts +13 -10
  67. package/pg-core/query-builders/delete.js +14 -1
  68. package/pg-core/query-builders/delete.js.map +1 -1
  69. package/pg-core/query-builders/insert.cjs +13 -0
  70. package/pg-core/query-builders/insert.cjs.map +1 -1
  71. package/pg-core/query-builders/insert.d.cts +10 -8
  72. package/pg-core/query-builders/insert.d.ts +10 -8
  73. package/pg-core/query-builders/insert.js +14 -1
  74. package/pg-core/query-builders/insert.js.map +1 -1
  75. package/pg-core/query-builders/query-builder.cjs +15 -11
  76. package/pg-core/query-builders/query-builder.cjs.map +1 -1
  77. package/pg-core/query-builders/query-builder.d.cts +3 -6
  78. package/pg-core/query-builders/query-builder.d.ts +3 -6
  79. package/pg-core/query-builders/query-builder.js +15 -11
  80. package/pg-core/query-builders/query-builder.js.map +1 -1
  81. package/pg-core/query-builders/select.cjs +8 -7
  82. package/pg-core/query-builders/select.cjs.map +1 -1
  83. package/pg-core/query-builders/select.d.cts +3 -3
  84. package/pg-core/query-builders/select.d.ts +3 -3
  85. package/pg-core/query-builders/select.js +8 -7
  86. package/pg-core/query-builders/select.js.map +1 -1
  87. package/pg-core/query-builders/select.types.cjs.map +1 -1
  88. package/pg-core/query-builders/select.types.d.cts +3 -2
  89. package/pg-core/query-builders/select.types.d.ts +3 -2
  90. package/pg-core/query-builders/update.cjs +15 -2
  91. package/pg-core/query-builders/update.cjs.map +1 -1
  92. package/pg-core/query-builders/update.d.cts +18 -13
  93. package/pg-core/query-builders/update.d.ts +18 -13
  94. package/pg-core/query-builders/update.js +16 -3
  95. package/pg-core/query-builders/update.js.map +1 -1
  96. package/pg-core/subquery.cjs.map +1 -1
  97. package/pg-core/subquery.d.cts +15 -2
  98. package/pg-core/subquery.d.ts +15 -2
  99. package/query-builders/select.types.cjs.map +1 -1
  100. package/query-builders/select.types.d.cts +1 -1
  101. package/query-builders/select.types.d.ts +1 -1
  102. package/singlestore-core/db.cjs +17 -11
  103. package/singlestore-core/db.cjs.map +1 -1
  104. package/singlestore-core/db.d.cts +4 -7
  105. package/singlestore-core/db.d.ts +4 -7
  106. package/singlestore-core/db.js +17 -11
  107. package/singlestore-core/db.js.map +1 -1
  108. package/singlestore-core/query-builders/query-builder.cjs +15 -11
  109. package/singlestore-core/query-builders/query-builder.cjs.map +1 -1
  110. package/singlestore-core/query-builders/query-builder.d.cts +2 -6
  111. package/singlestore-core/query-builders/query-builder.d.ts +2 -6
  112. package/singlestore-core/query-builders/query-builder.js +15 -11
  113. package/singlestore-core/query-builders/query-builder.js.map +1 -1
  114. package/singlestore-core/subquery.cjs.map +1 -1
  115. package/singlestore-core/subquery.d.cts +15 -2
  116. package/singlestore-core/subquery.d.ts +15 -2
  117. package/singlestore-core/table.cjs.map +1 -1
  118. package/singlestore-core/table.d.cts +12 -12
  119. package/singlestore-core/table.d.ts +12 -12
  120. package/singlestore-core/table.js.map +1 -1
  121. package/sql/sql.cjs +5 -0
  122. package/sql/sql.cjs.map +1 -1
  123. package/sql/sql.d.cts +1 -0
  124. package/sql/sql.d.ts +1 -0
  125. package/sql/sql.js +4 -0
  126. package/sql/sql.js.map +1 -1
  127. package/sqlite-core/db.cjs +17 -11
  128. package/sqlite-core/db.cjs.map +1 -1
  129. package/sqlite-core/db.d.cts +4 -7
  130. package/sqlite-core/db.d.ts +4 -7
  131. package/sqlite-core/db.js +17 -11
  132. package/sqlite-core/db.js.map +1 -1
  133. package/sqlite-core/dialect.cjs +1 -1
  134. package/sqlite-core/dialect.cjs.map +1 -1
  135. package/sqlite-core/dialect.js +1 -1
  136. package/sqlite-core/dialect.js.map +1 -1
  137. package/sqlite-core/query-builders/insert.cjs +9 -3
  138. package/sqlite-core/query-builders/insert.cjs.map +1 -1
  139. package/sqlite-core/query-builders/insert.d.cts +1 -1
  140. package/sqlite-core/query-builders/insert.d.ts +1 -1
  141. package/sqlite-core/query-builders/insert.js +9 -3
  142. package/sqlite-core/query-builders/insert.js.map +1 -1
  143. package/sqlite-core/query-builders/query-builder.cjs +15 -11
  144. package/sqlite-core/query-builders/query-builder.cjs.map +1 -1
  145. package/sqlite-core/query-builders/query-builder.d.cts +2 -6
  146. package/sqlite-core/query-builders/query-builder.d.ts +2 -6
  147. package/sqlite-core/query-builders/query-builder.js +15 -11
  148. package/sqlite-core/query-builders/query-builder.js.map +1 -1
  149. package/sqlite-core/subquery.cjs.map +1 -1
  150. package/sqlite-core/subquery.d.cts +15 -2
  151. package/sqlite-core/subquery.d.ts +15 -2
  152. package/subquery.cjs.map +1 -1
  153. package/subquery.d.cts +1 -0
  154. package/subquery.d.ts +1 -0
  155. package/subquery.js.map +1 -1
  156. package/vercel-postgres/session.cjs +4 -0
  157. package/vercel-postgres/session.cjs.map +1 -1
  158. package/vercel-postgres/session.d.cts +2 -1
  159. package/vercel-postgres/session.d.ts +2 -1
  160. package/vercel-postgres/session.js +4 -0
  161. package/vercel-postgres/session.js.map +1 -1
  162. package/version.cjs +1 -1
  163. package/version.d.cts +1 -1
  164. package/version.d.ts +1 -1
  165. package/version.js +1 -1
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var driver_exports = {};
20
+ __export(driver_exports, {
21
+ BunSQLDatabase: () => BunSQLDatabase,
22
+ drizzle: () => drizzle
23
+ });
24
+ module.exports = __toCommonJS(driver_exports);
25
+ var import_bun = require("bun");
26
+ var import_entity = require("../entity.cjs");
27
+ var import_logger = require("../logger.cjs");
28
+ var import_db = require("../pg-core/db.cjs");
29
+ var import_dialect = require("../pg-core/dialect.cjs");
30
+ var import_relations = require("../relations.cjs");
31
+ var import_utils = require("../utils.cjs");
32
+ var import_session = require("./session.cjs");
33
+ class BunSQLDatabase extends import_db.PgDatabase {
34
+ static [import_entity.entityKind] = "BunSQLDatabase";
35
+ }
36
+ function construct(client, config = {}) {
37
+ const dialect = new import_dialect.PgDialect({ casing: config.casing });
38
+ let logger;
39
+ if (config.logger === true) {
40
+ logger = new import_logger.DefaultLogger();
41
+ } else if (config.logger !== false) {
42
+ logger = config.logger;
43
+ }
44
+ let schema;
45
+ if (config.schema) {
46
+ const tablesConfig = (0, import_relations.extractTablesRelationalConfig)(
47
+ config.schema,
48
+ import_relations.createTableRelationsHelpers
49
+ );
50
+ schema = {
51
+ fullSchema: config.schema,
52
+ schema: tablesConfig.tables,
53
+ tableNamesMap: tablesConfig.tableNamesMap
54
+ };
55
+ }
56
+ const session = new import_session.BunSQLSession(client, dialect, schema, { logger });
57
+ const db = new BunSQLDatabase(dialect, session, schema);
58
+ db.$client = client;
59
+ return db;
60
+ }
61
+ function drizzle(...params) {
62
+ if (typeof params[0] === "string") {
63
+ const instance = new import_bun.SQL(params[0]);
64
+ return construct(instance, params[1]);
65
+ }
66
+ if ((0, import_utils.isConfig)(params[0])) {
67
+ const { connection, client, ...drizzleConfig } = params[0];
68
+ if (client)
69
+ return construct(client, drizzleConfig);
70
+ if (typeof connection === "object" && connection.url !== void 0) {
71
+ const { url, ...config } = connection;
72
+ const instance2 = new import_bun.SQL({ url, ...config });
73
+ return construct(instance2, drizzleConfig);
74
+ }
75
+ const instance = new import_bun.SQL(connection);
76
+ return construct(instance, drizzleConfig);
77
+ }
78
+ return construct(params[0], params[1]);
79
+ }
80
+ ((drizzle2) => {
81
+ function mock(config) {
82
+ return construct({
83
+ options: {
84
+ parsers: {},
85
+ serializers: {}
86
+ }
87
+ }, config);
88
+ }
89
+ drizzle2.mock = mock;
90
+ })(drizzle || (drizzle = {}));
91
+ // Annotate the CommonJS export names for ESM import in node:
92
+ 0 && (module.exports = {
93
+ BunSQLDatabase,
94
+ drizzle
95
+ });
96
+ //# sourceMappingURL=driver.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bun-sql/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SQLOptions } from 'bun';\nimport { SQL } from 'bun';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport type { BunSQLQueryResultHKT } from './session.ts';\nimport { BunSQLSession } from './session.ts';\n\nexport class BunSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<BunSQLQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLDatabase';\n}\n\nfunction construct<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: SQL,\n\tconfig: DrizzleConfig<TSchema> = {},\n): BunSQLDatabase<TSchema> & {\n\t$client: SQL;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\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 BunSQLSession(client, dialect, schema, { logger });\n\tconst db = new BunSQLDatabase(dialect, session, schema as any) as BunSQLDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends SQL = SQL,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema>\n\t\t\t& ({\n\t\t\t\tconnection: string | ({ url?: string } & SQLOptions);\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): BunSQLDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new SQL(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: { url?: string } & SQLOptions;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\t\tconst { url, ...config } = connection;\n\n\t\t\tconst instance = new SQL({ url, ...config });\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new SQL(connection);\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): BunSQLDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({\n\t\t\toptions: {\n\t\t\t\tparsers: {},\n\t\t\t\tserializers: {},\n\t\t\t},\n\t\t} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAoB;AACpB,oBAA2B;AAC3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AACP,mBAA6C;AAE7C,qBAA8B;AAEvB,MAAM,uBAEH,qBAA0C;AAAA,EACnD,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UACR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,yBAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,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,6BAAc,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACrE,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,MAAa;AAC7D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,eAAI,OAAO,CAAC,CAAC;AAElC,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,UAAI,uBAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAKzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,YAAY,WAAW,QAAQ,QAAW;AACnE,YAAM,EAAE,KAAK,GAAG,OAAO,IAAI;AAE3B,YAAMA,YAAW,IAAI,eAAI,EAAE,KAAK,GAAG,OAAO,CAAC;AAC3C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,WAAW,IAAI,eAAI,UAAU;AACnC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AACvF;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU;AAAA,MAChB,SAAS;AAAA,QACR,SAAS,CAAC;AAAA,QACV,aAAa,CAAC;AAAA,MACf;AAAA,IACD,GAAU,MAAM;AAAA,EACjB;AAXO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -0,0 +1,30 @@
1
+ import type { SQLOptions } from 'bun';
2
+ import { SQL } from 'bun';
3
+ import { entityKind } from "../entity.cjs";
4
+ import { PgDatabase } from "../pg-core/db.cjs";
5
+ import { type DrizzleConfig } from "../utils.cjs";
6
+ import type { BunSQLQueryResultHKT } from "./session.cjs";
7
+ export declare class BunSQLDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<BunSQLQueryResultHKT, TSchema> {
8
+ static readonly [entityKind]: string;
9
+ }
10
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends SQL = SQL>(...params: [
11
+ TClient | string
12
+ ] | [
13
+ TClient | string,
14
+ DrizzleConfig<TSchema>
15
+ ] | [
16
+ (DrizzleConfig<TSchema> & ({
17
+ connection: string | ({
18
+ url?: string;
19
+ } & SQLOptions);
20
+ } | {
21
+ client: TClient;
22
+ }))
23
+ ]): BunSQLDatabase<TSchema> & {
24
+ $client: TClient;
25
+ };
26
+ export declare namespace drizzle {
27
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): BunSQLDatabase<TSchema> & {
28
+ $client: '$client is not available on drizzle.mock()';
29
+ };
30
+ }
@@ -0,0 +1,30 @@
1
+ import type { SQLOptions } from 'bun';
2
+ import { SQL } from 'bun';
3
+ import { entityKind } from "../entity.js";
4
+ import { PgDatabase } from "../pg-core/db.js";
5
+ import { type DrizzleConfig } from "../utils.js";
6
+ import type { BunSQLQueryResultHKT } from "./session.js";
7
+ export declare class BunSQLDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<BunSQLQueryResultHKT, TSchema> {
8
+ static readonly [entityKind]: string;
9
+ }
10
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends SQL = SQL>(...params: [
11
+ TClient | string
12
+ ] | [
13
+ TClient | string,
14
+ DrizzleConfig<TSchema>
15
+ ] | [
16
+ (DrizzleConfig<TSchema> & ({
17
+ connection: string | ({
18
+ url?: string;
19
+ } & SQLOptions);
20
+ } | {
21
+ client: TClient;
22
+ }))
23
+ ]): BunSQLDatabase<TSchema> & {
24
+ $client: TClient;
25
+ };
26
+ export declare namespace drizzle {
27
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): BunSQLDatabase<TSchema> & {
28
+ $client: '$client is not available on drizzle.mock()';
29
+ };
30
+ }
@@ -0,0 +1,74 @@
1
+ import { SQL } from "bun";
2
+ import { entityKind } from "../entity.js";
3
+ import { DefaultLogger } from "../logger.js";
4
+ import { PgDatabase } from "../pg-core/db.js";
5
+ import { PgDialect } from "../pg-core/dialect.js";
6
+ import {
7
+ createTableRelationsHelpers,
8
+ extractTablesRelationalConfig
9
+ } from "../relations.js";
10
+ import { isConfig } from "../utils.js";
11
+ import { BunSQLSession } from "./session.js";
12
+ class BunSQLDatabase extends PgDatabase {
13
+ static [entityKind] = "BunSQLDatabase";
14
+ }
15
+ function construct(client, config = {}) {
16
+ const dialect = new PgDialect({ casing: config.casing });
17
+ let logger;
18
+ if (config.logger === true) {
19
+ logger = new DefaultLogger();
20
+ } else if (config.logger !== false) {
21
+ logger = config.logger;
22
+ }
23
+ let schema;
24
+ if (config.schema) {
25
+ const tablesConfig = extractTablesRelationalConfig(
26
+ config.schema,
27
+ createTableRelationsHelpers
28
+ );
29
+ schema = {
30
+ fullSchema: config.schema,
31
+ schema: tablesConfig.tables,
32
+ tableNamesMap: tablesConfig.tableNamesMap
33
+ };
34
+ }
35
+ const session = new BunSQLSession(client, dialect, schema, { logger });
36
+ const db = new BunSQLDatabase(dialect, session, schema);
37
+ db.$client = client;
38
+ return db;
39
+ }
40
+ function drizzle(...params) {
41
+ if (typeof params[0] === "string") {
42
+ const instance = new SQL(params[0]);
43
+ return construct(instance, params[1]);
44
+ }
45
+ if (isConfig(params[0])) {
46
+ const { connection, client, ...drizzleConfig } = params[0];
47
+ if (client)
48
+ return construct(client, drizzleConfig);
49
+ if (typeof connection === "object" && connection.url !== void 0) {
50
+ const { url, ...config } = connection;
51
+ const instance2 = new SQL({ url, ...config });
52
+ return construct(instance2, drizzleConfig);
53
+ }
54
+ const instance = new SQL(connection);
55
+ return construct(instance, drizzleConfig);
56
+ }
57
+ return construct(params[0], params[1]);
58
+ }
59
+ ((drizzle2) => {
60
+ function mock(config) {
61
+ return construct({
62
+ options: {
63
+ parsers: {},
64
+ serializers: {}
65
+ }
66
+ }, config);
67
+ }
68
+ drizzle2.mock = mock;
69
+ })(drizzle || (drizzle = {}));
70
+ export {
71
+ BunSQLDatabase,
72
+ drizzle
73
+ };
74
+ //# sourceMappingURL=driver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bun-sql/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SQLOptions } from 'bun';\nimport { SQL } from 'bun';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { type DrizzleConfig, isConfig } from '~/utils.ts';\nimport type { BunSQLQueryResultHKT } from './session.ts';\nimport { BunSQLSession } from './session.ts';\n\nexport class BunSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<BunSQLQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLDatabase';\n}\n\nfunction construct<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: SQL,\n\tconfig: DrizzleConfig<TSchema> = {},\n): BunSQLDatabase<TSchema> & {\n\t$client: SQL;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\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 BunSQLSession(client, dialect, schema, { logger });\n\tconst db = new BunSQLDatabase(dialect, session, schema as any) as BunSQLDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends SQL = SQL,\n>(\n\t...params: [\n\t\tTClient | string,\n\t] | [\n\t\tTClient | string,\n\t\tDrizzleConfig<TSchema>,\n\t] | [\n\t\t(\n\t\t\t& DrizzleConfig<TSchema>\n\t\t\t& ({\n\t\t\t\tconnection: string | ({ url?: string } & SQLOptions);\n\t\t\t} | {\n\t\t\t\tclient: TClient;\n\t\t\t})\n\t\t),\n\t]\n): BunSQLDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = new SQL(params[0]);\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tif (isConfig(params[0])) {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: { url?: string } & SQLOptions;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object' && connection.url !== undefined) {\n\t\t\tconst { url, ...config } = connection;\n\n\t\t\tconst instance = new SQL({ url, ...config });\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new SQL(connection);\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): BunSQLDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({\n\t\t\toptions: {\n\t\t\t\tparsers: {},\n\t\t\t\tserializers: {},\n\t\t\t},\n\t\t} as any, config) as any;\n\t}\n}\n"],"mappings":"AAGA,SAAS,WAAW;AACpB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAA6B,gBAAgB;AAE7C,SAAS,qBAAqB;AAEvB,MAAM,uBAEH,WAA0C;AAAA,EACnD,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UACR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,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,cAAc,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACrE,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,MAAa;AAC7D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAiBF;AACD,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,WAAW,IAAI,IAAI,OAAO,CAAC,CAAC;AAElC,WAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,MAAI,SAAS,OAAO,CAAC,CAAC,GAAG;AACxB,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAKzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,YAAY,WAAW,QAAQ,QAAW;AACnE,YAAM,EAAE,KAAK,GAAG,OAAO,IAAI;AAE3B,YAAMA,YAAW,IAAI,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;AAC3C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAM,WAAW,IAAI,IAAI,UAAU;AACnC,WAAO,UAAU,UAAU,aAAa;AAAA,EACzC;AAEA,SAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AACvF;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU;AAAA,MAChB,SAAS;AAAA,QACR,SAAS,CAAC;AAAA,QACV,aAAa,CAAC;AAAA,MACf;AAAA,IACD,GAAU,MAAM;AAAA,EACjB;AAXO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __copyProps = (to, from, except, desc) => {
7
+ if (from && typeof from === "object" || typeof from === "function") {
8
+ for (let key of __getOwnPropNames(from))
9
+ if (!__hasOwnProp.call(to, key) && key !== except)
10
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
11
+ }
12
+ return to;
13
+ };
14
+ var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
15
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
16
+ var bun_sql_exports = {};
17
+ module.exports = __toCommonJS(bun_sql_exports);
18
+ __reExport(bun_sql_exports, require("./driver.cjs"), module.exports);
19
+ __reExport(bun_sql_exports, require("./session.cjs"), module.exports);
20
+ // Annotate the CommonJS export names for ESM import in node:
21
+ 0 && (module.exports = {
22
+ ...require("./driver.cjs"),
23
+ ...require("./session.cjs")
24
+ });
25
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bun-sql/index.ts"],"sourcesContent":["export * from './driver.ts';\nexport * from './session.ts';\n"],"mappings":";;;;;;;;;;;;;;;AAAA;AAAA;AAAA,4BAAc,wBAAd;AACA,4BAAc,yBADd;","names":[]}
@@ -0,0 +1,2 @@
1
+ export * from "./driver.cjs";
2
+ export * from "./session.cjs";
@@ -0,0 +1,2 @@
1
+ export * from "./driver.js";
2
+ export * from "./session.js";
@@ -0,0 +1,3 @@
1
+ export * from "./driver.js";
2
+ export * from "./session.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bun-sql/index.ts"],"sourcesContent":["export * from './driver.ts';\nexport * from './session.ts';\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var migrator_exports = {};
20
+ __export(migrator_exports, {
21
+ migrate: () => migrate
22
+ });
23
+ module.exports = __toCommonJS(migrator_exports);
24
+ var import_migrator = require("../migrator.cjs");
25
+ async function migrate(db, config) {
26
+ const migrations = (0, import_migrator.readMigrationFiles)(config);
27
+ await db.dialect.migrate(migrations, db.session, config);
28
+ }
29
+ // Annotate the CommonJS export names for ESM import in node:
30
+ 0 && (module.exports = {
31
+ migrate
32
+ });
33
+ //# sourceMappingURL=migrator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bun-sql/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { BunSQLDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: BunSQLDatabase<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tawait db.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAAmC;AAGnC,eAAsB,QACrB,IACA,QACC;AACD,QAAM,iBAAa,oCAAmB,MAAM;AAC5C,QAAM,GAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AACxD;","names":[]}
@@ -0,0 +1,3 @@
1
+ import type { MigrationConfig } from "../migrator.cjs";
2
+ import type { BunSQLDatabase } from "./driver.cjs";
3
+ export declare function migrate<TSchema extends Record<string, unknown>>(db: BunSQLDatabase<TSchema>, config: MigrationConfig): Promise<void>;
@@ -0,0 +1,3 @@
1
+ import type { MigrationConfig } from "../migrator.js";
2
+ import type { BunSQLDatabase } from "./driver.js";
3
+ export declare function migrate<TSchema extends Record<string, unknown>>(db: BunSQLDatabase<TSchema>, config: MigrationConfig): Promise<void>;
@@ -0,0 +1,9 @@
1
+ import { readMigrationFiles } from "../migrator.js";
2
+ async function migrate(db, config) {
3
+ const migrations = readMigrationFiles(config);
4
+ await db.dialect.migrate(migrations, db.session, config);
5
+ }
6
+ export {
7
+ migrate
8
+ };
9
+ //# sourceMappingURL=migrator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bun-sql/migrator.ts"],"sourcesContent":["import type { MigrationConfig } from '~/migrator.ts';\nimport { readMigrationFiles } from '~/migrator.ts';\nimport type { BunSQLDatabase } from './driver.ts';\n\nexport async function migrate<TSchema extends Record<string, unknown>>(\n\tdb: BunSQLDatabase<TSchema>,\n\tconfig: MigrationConfig,\n) {\n\tconst migrations = readMigrationFiles(config);\n\tawait db.dialect.migrate(migrations, db.session, config);\n}\n"],"mappings":"AACA,SAAS,0BAA0B;AAGnC,eAAsB,QACrB,IACA,QACC;AACD,QAAM,aAAa,mBAAmB,MAAM;AAC5C,QAAM,GAAG,QAAQ,QAAQ,YAAY,GAAG,SAAS,MAAM;AACxD;","names":[]}
@@ -0,0 +1,162 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var session_exports = {};
20
+ __export(session_exports, {
21
+ BunSQLPreparedQuery: () => BunSQLPreparedQuery,
22
+ BunSQLSession: () => BunSQLSession,
23
+ BunSQLTransaction: () => BunSQLTransaction
24
+ });
25
+ module.exports = __toCommonJS(session_exports);
26
+ var import_entity = require("../entity.cjs");
27
+ var import_logger = require("../logger.cjs");
28
+ var import_pg_core = require("../pg-core/index.cjs");
29
+ var import_session = require("../pg-core/session.cjs");
30
+ var import_sql = require("../sql/sql.cjs");
31
+ var import_tracing = require("../tracing.cjs");
32
+ var import_utils = require("../utils.cjs");
33
+ class BunSQLPreparedQuery extends import_session.PgPreparedQuery {
34
+ constructor(client, queryString, params, logger, fields, _isResponseInArrayMode, customResultMapper) {
35
+ super({ sql: queryString, params });
36
+ this.client = client;
37
+ this.queryString = queryString;
38
+ this.params = params;
39
+ this.logger = logger;
40
+ this.fields = fields;
41
+ this._isResponseInArrayMode = _isResponseInArrayMode;
42
+ this.customResultMapper = customResultMapper;
43
+ }
44
+ static [import_entity.entityKind] = "BunSQLPreparedQuery";
45
+ async execute(placeholderValues = {}) {
46
+ return import_tracing.tracer.startActiveSpan("drizzle.execute", async (span) => {
47
+ const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
48
+ span?.setAttributes({
49
+ "drizzle.query.text": this.queryString,
50
+ "drizzle.query.params": JSON.stringify(params)
51
+ });
52
+ this.logger.logQuery(this.queryString, params);
53
+ const { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;
54
+ if (!fields && !customResultMapper) {
55
+ return import_tracing.tracer.startActiveSpan("drizzle.driver.execute", () => {
56
+ return client.unsafe(query, params);
57
+ });
58
+ }
59
+ const rows = await import_tracing.tracer.startActiveSpan("drizzle.driver.execute", () => {
60
+ span?.setAttributes({
61
+ "drizzle.query.text": query,
62
+ "drizzle.query.params": JSON.stringify(params)
63
+ });
64
+ return client.unsafe(query, params).values();
65
+ });
66
+ return import_tracing.tracer.startActiveSpan("drizzle.mapResponse", () => {
67
+ return customResultMapper ? customResultMapper(rows) : rows.map((row) => (0, import_utils.mapResultRow)(fields, row, joinsNotNullableMap));
68
+ });
69
+ });
70
+ }
71
+ all(placeholderValues = {}) {
72
+ return import_tracing.tracer.startActiveSpan("drizzle.execute", async (span) => {
73
+ const params = (0, import_sql.fillPlaceholders)(this.params, placeholderValues);
74
+ span?.setAttributes({
75
+ "drizzle.query.text": this.queryString,
76
+ "drizzle.query.params": JSON.stringify(params)
77
+ });
78
+ this.logger.logQuery(this.queryString, params);
79
+ return import_tracing.tracer.startActiveSpan("drizzle.driver.execute", () => {
80
+ span?.setAttributes({
81
+ "drizzle.query.text": this.queryString,
82
+ "drizzle.query.params": JSON.stringify(params)
83
+ });
84
+ return this.client.unsafe(this.queryString, params);
85
+ });
86
+ });
87
+ }
88
+ /** @internal */
89
+ isResponseInArrayMode() {
90
+ return this._isResponseInArrayMode;
91
+ }
92
+ }
93
+ class BunSQLSession extends import_session.PgSession {
94
+ constructor(client, dialect, schema, options = {}) {
95
+ super(dialect);
96
+ this.client = client;
97
+ this.schema = schema;
98
+ this.options = options;
99
+ this.logger = options.logger ?? new import_logger.NoopLogger();
100
+ }
101
+ static [import_entity.entityKind] = "BunSQLSession";
102
+ logger;
103
+ prepareQuery(query, fields, name, isResponseInArrayMode, customResultMapper) {
104
+ return new BunSQLPreparedQuery(
105
+ this.client,
106
+ query.sql,
107
+ query.params,
108
+ this.logger,
109
+ fields,
110
+ isResponseInArrayMode,
111
+ customResultMapper
112
+ );
113
+ }
114
+ query(query, params) {
115
+ this.logger.logQuery(query, params);
116
+ return this.client.unsafe(query, params).values();
117
+ }
118
+ queryObjects(query, params) {
119
+ return this.client.unsafe(query, params);
120
+ }
121
+ transaction(transaction, config) {
122
+ return this.client.begin(async (client) => {
123
+ const session = new BunSQLSession(
124
+ client,
125
+ this.dialect,
126
+ this.schema,
127
+ this.options
128
+ );
129
+ const tx = new BunSQLTransaction(this.dialect, session, this.schema);
130
+ if (config) {
131
+ await tx.setTransaction(config);
132
+ }
133
+ return transaction(tx);
134
+ });
135
+ }
136
+ }
137
+ class BunSQLTransaction extends import_pg_core.PgTransaction {
138
+ constructor(dialect, session, schema, nestedIndex = 0) {
139
+ super(dialect, session, schema, nestedIndex);
140
+ this.session = session;
141
+ }
142
+ static [import_entity.entityKind] = "BunSQLTransaction";
143
+ transaction(transaction) {
144
+ return this.session.client.savepoint((client) => {
145
+ const session = new BunSQLSession(
146
+ client,
147
+ this.dialect,
148
+ this.schema,
149
+ this.session.options
150
+ );
151
+ const tx = new BunSQLTransaction(this.dialect, session, this.schema);
152
+ return transaction(tx);
153
+ });
154
+ }
155
+ }
156
+ // Annotate the CommonJS export names for ESM import in node:
157
+ 0 && (module.exports = {
158
+ BunSQLPreparedQuery,
159
+ BunSQLSession,
160
+ BunSQLTransaction
161
+ });
162
+ //# sourceMappingURL=session.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/bun-sql/session.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { SavepointSQL, SQL, TransactionSQL } from 'bun';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { NoopLogger } from '~/logger.ts';\nimport type { PgDialect } from '~/pg-core/dialect.ts';\nimport { PgTransaction } from '~/pg-core/index.ts';\nimport type { SelectedFieldsOrdered } from '~/pg-core/query-builders/select.types.ts';\nimport type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport { PgPreparedQuery, PgSession } from '~/pg-core/session.ts';\nimport type { RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport { fillPlaceholders, type Query } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { type Assume, mapResultRow } from '~/utils.ts';\n\nexport class BunSQLPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {\n\tstatic override readonly [entityKind]: string = 'BunSQLPreparedQuery';\n\n\tconstructor(\n\t\tprivate client: SQL,\n\t\tprivate queryString: string,\n\t\tprivate params: unknown[],\n\t\tprivate logger: Logger,\n\t\tprivate fields: SelectedFieldsOrdered | undefined,\n\t\tprivate _isResponseInArrayMode: boolean,\n\t\tprivate customResultMapper?: (rows: unknown[][]) => T['execute'],\n\t) {\n\t\tsuper({ sql: queryString, params });\n\t}\n\n\tasync execute(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['execute']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\n\t\t\tconst { fields, queryString: query, client, joinsNotNullableMap, customResultMapper } = this;\n\t\t\tif (!fields && !customResultMapper) {\n\t\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\t\treturn client.unsafe(query, params as any[]);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst rows: any[] = await tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': query,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\n\t\t\t\treturn client.unsafe(query, params as any[]).values();\n\t\t\t});\n\n\t\t\treturn tracer.startActiveSpan('drizzle.mapResponse', () => {\n\t\t\t\treturn customResultMapper\n\t\t\t\t\t? customResultMapper(rows)\n\t\t\t\t\t: rows.map((row) => mapResultRow<T['execute']>(fields!, row, joinsNotNullableMap));\n\t\t\t});\n\t\t});\n\t}\n\n\tall(placeholderValues: Record<string, unknown> | undefined = {}): Promise<T['all']> {\n\t\treturn tracer.startActiveSpan('drizzle.execute', async (span) => {\n\t\t\tconst params = fillPlaceholders(this.params, placeholderValues);\n\t\t\tspan?.setAttributes({\n\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t});\n\t\t\tthis.logger.logQuery(this.queryString, params);\n\t\t\treturn tracer.startActiveSpan('drizzle.driver.execute', () => {\n\t\t\t\tspan?.setAttributes({\n\t\t\t\t\t'drizzle.query.text': this.queryString,\n\t\t\t\t\t'drizzle.query.params': JSON.stringify(params),\n\t\t\t\t});\n\t\t\t\treturn this.client.unsafe(this.queryString, params as any[]);\n\t\t\t});\n\t\t});\n\t}\n\n\t/** @internal */\n\tisResponseInArrayMode(): boolean {\n\t\treturn this._isResponseInArrayMode;\n\t}\n}\n\nexport interface BunSQLSessionOptions {\n\tlogger?: Logger;\n}\n\nexport class BunSQLSession<\n\tTSQL extends SQL,\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLSession';\n\n\tlogger: Logger;\n\n\tconstructor(\n\t\tpublic client: TSQL,\n\t\tdialect: PgDialect,\n\t\tprivate schema: RelationalSchemaConfig<TSchema> | undefined,\n\t\t/** @internal */\n\t\treadonly options: BunSQLSessionOptions = {},\n\t) {\n\t\tsuper(dialect);\n\t\tthis.logger = options.logger ?? new NoopLogger();\n\t}\n\n\tprepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(\n\t\tquery: Query,\n\t\tfields: SelectedFieldsOrdered | undefined,\n\t\tname: string | undefined,\n\t\tisResponseInArrayMode: boolean,\n\t\tcustomResultMapper?: (rows: unknown[][]) => T['execute'],\n\t): PgPreparedQuery<T> {\n\t\treturn new BunSQLPreparedQuery(\n\t\t\tthis.client,\n\t\t\tquery.sql,\n\t\t\tquery.params,\n\t\t\tthis.logger,\n\t\t\tfields,\n\t\t\tisResponseInArrayMode,\n\t\t\tcustomResultMapper,\n\t\t);\n\t}\n\n\tquery(query: string, params: unknown[]): Promise<any> {\n\t\tthis.logger.logQuery(query, params);\n\t\treturn this.client.unsafe(query, params as any[]).values();\n\t}\n\n\tqueryObjects(\n\t\tquery: string,\n\t\tparams: unknown[],\n\t): Promise<any> {\n\t\treturn this.client.unsafe(query, params as any[]);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t\tconfig?: PgTransactionConfig,\n\t): Promise<T> {\n\t\treturn this.client.begin(async (client) => {\n\t\t\tconst session = new BunSQLSession<TransactionSQL, TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction(this.dialect, session, this.schema);\n\t\t\tif (config) {\n\t\t\t\tawait tx.setTransaction(config);\n\t\t\t}\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport class BunSQLTransaction<\n\tTFullSchema extends Record<string, unknown>,\n\tTSchema extends TablesRelationalConfig,\n> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLTransaction';\n\n\tconstructor(\n\t\tdialect: PgDialect,\n\t\t/** @internal */\n\t\toverride readonly session: BunSQLSession<TransactionSQL | SavepointSQL, TFullSchema, TSchema>,\n\t\tschema: RelationalSchemaConfig<TSchema> | undefined,\n\t\tnestedIndex = 0,\n\t) {\n\t\tsuper(dialect, session, schema, nestedIndex);\n\t}\n\n\toverride transaction<T>(\n\t\ttransaction: (tx: BunSQLTransaction<TFullSchema, TSchema>) => Promise<T>,\n\t): Promise<T> {\n\t\treturn (this.session.client as TransactionSQL).savepoint((client) => {\n\t\t\tconst session = new BunSQLSession<SavepointSQL, TFullSchema, TSchema>(\n\t\t\t\tclient,\n\t\t\t\tthis.dialect,\n\t\t\t\tthis.schema,\n\t\t\t\tthis.session.options,\n\t\t\t);\n\t\t\tconst tx = new BunSQLTransaction<TFullSchema, TSchema>(this.dialect, session, this.schema);\n\t\t\treturn transaction(tx);\n\t\t}) as Promise<T>;\n\t}\n}\n\nexport interface BunSQLQueryResultHKT extends PgQueryResultHKT {\n\ttype: Assume<this['row'], Record<string, any>[]>;\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,50 @@
1
+ import type { SavepointSQL, SQL, TransactionSQL } from 'bun';
2
+ import { entityKind } from "../entity.cjs";
3
+ import type { Logger } from "../logger.cjs";
4
+ import type { PgDialect } from "../pg-core/dialect.cjs";
5
+ import { PgTransaction } from "../pg-core/index.cjs";
6
+ import type { SelectedFieldsOrdered } from "../pg-core/query-builders/select.types.cjs";
7
+ import type { PgQueryResultHKT, PgTransactionConfig, PreparedQueryConfig } from "../pg-core/session.cjs";
8
+ import { PgPreparedQuery, PgSession } from "../pg-core/session.cjs";
9
+ import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
10
+ import { type Query } from "../sql/sql.cjs";
11
+ import { type Assume } from "../utils.cjs";
12
+ export declare class BunSQLPreparedQuery<T extends PreparedQueryConfig> extends PgPreparedQuery<T> {
13
+ private client;
14
+ private queryString;
15
+ private params;
16
+ private logger;
17
+ private fields;
18
+ private _isResponseInArrayMode;
19
+ private customResultMapper?;
20
+ static readonly [entityKind]: string;
21
+ constructor(client: SQL, queryString: string, params: unknown[], logger: Logger, fields: SelectedFieldsOrdered | undefined, _isResponseInArrayMode: boolean, customResultMapper?: ((rows: unknown[][]) => T["execute"]) | undefined);
22
+ execute(placeholderValues?: Record<string, unknown> | undefined): Promise<T['execute']>;
23
+ all(placeholderValues?: Record<string, unknown> | undefined): Promise<T['all']>;
24
+ }
25
+ export interface BunSQLSessionOptions {
26
+ logger?: Logger;
27
+ }
28
+ export declare class BunSQLSession<TSQL extends SQL, TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgSession<BunSQLQueryResultHKT, TFullSchema, TSchema> {
29
+ client: TSQL;
30
+ private schema;
31
+ static readonly [entityKind]: string;
32
+ logger: Logger;
33
+ constructor(client: TSQL, dialect: PgDialect, schema: RelationalSchemaConfig<TSchema> | undefined,
34
+ /** @internal */
35
+ options?: BunSQLSessionOptions);
36
+ prepareQuery<T extends PreparedQueryConfig = PreparedQueryConfig>(query: Query, fields: SelectedFieldsOrdered | undefined, name: string | undefined, isResponseInArrayMode: boolean, customResultMapper?: (rows: unknown[][]) => T['execute']): PgPreparedQuery<T>;
37
+ query(query: string, params: unknown[]): Promise<any>;
38
+ queryObjects(query: string, params: unknown[]): Promise<any>;
39
+ transaction<T>(transaction: (tx: BunSQLTransaction<TFullSchema, TSchema>) => Promise<T>, config?: PgTransactionConfig): Promise<T>;
40
+ }
41
+ export declare class BunSQLTransaction<TFullSchema extends Record<string, unknown>, TSchema extends TablesRelationalConfig> extends PgTransaction<BunSQLQueryResultHKT, TFullSchema, TSchema> {
42
+ static readonly [entityKind]: string;
43
+ constructor(dialect: PgDialect,
44
+ /** @internal */
45
+ session: BunSQLSession<TransactionSQL | SavepointSQL, TFullSchema, TSchema>, schema: RelationalSchemaConfig<TSchema> | undefined, nestedIndex?: number);
46
+ transaction<T>(transaction: (tx: BunSQLTransaction<TFullSchema, TSchema>) => Promise<T>): Promise<T>;
47
+ }
48
+ export interface BunSQLQueryResultHKT extends PgQueryResultHKT {
49
+ type: Assume<this['row'], Record<string, any>[]>;
50
+ }