drizzle-orm 0.34.1-f9ec555 → 0.35.0

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 (141) hide show
  1. package/aws-data-api/pg/driver.cjs +21 -1
  2. package/aws-data-api/pg/driver.cjs.map +1 -1
  3. package/aws-data-api/pg/driver.d.cts +20 -3
  4. package/aws-data-api/pg/driver.d.ts +20 -3
  5. package/aws-data-api/pg/driver.js +21 -1
  6. package/aws-data-api/pg/driver.js.map +1 -1
  7. package/better-sqlite3/driver.cjs +37 -1
  8. package/better-sqlite3/driver.cjs.map +1 -1
  9. package/better-sqlite3/driver.d.cts +24 -3
  10. package/better-sqlite3/driver.d.ts +24 -3
  11. package/better-sqlite3/driver.js +27 -1
  12. package/better-sqlite3/driver.js.map +1 -1
  13. package/bun-sqlite/driver.cjs +28 -1
  14. package/bun-sqlite/driver.cjs.map +1 -1
  15. package/bun-sqlite/driver.d.cts +46 -4
  16. package/bun-sqlite/driver.d.ts +46 -4
  17. package/bun-sqlite/driver.js +28 -1
  18. package/bun-sqlite/driver.js.map +1 -1
  19. package/libsql/driver.cjs +27 -1
  20. package/libsql/driver.cjs.map +1 -1
  21. package/libsql/driver.d.cts +22 -4
  22. package/libsql/driver.d.ts +22 -4
  23. package/libsql/driver.js +27 -1
  24. package/libsql/driver.js.map +1 -1
  25. package/mysql-core/dialect.cjs +17 -13
  26. package/mysql-core/dialect.cjs.map +1 -1
  27. package/mysql-core/dialect.d.cts +4 -2
  28. package/mysql-core/dialect.d.ts +4 -2
  29. package/mysql-core/dialect.js +17 -13
  30. package/mysql-core/dialect.js.map +1 -1
  31. package/mysql-core/query-builders/delete.cjs +22 -0
  32. package/mysql-core/query-builders/delete.cjs.map +1 -1
  33. package/mysql-core/query-builders/delete.d.cts +8 -1
  34. package/mysql-core/query-builders/delete.d.ts +8 -1
  35. package/mysql-core/query-builders/delete.js +22 -0
  36. package/mysql-core/query-builders/delete.js.map +1 -1
  37. package/mysql-core/query-builders/update.cjs +22 -0
  38. package/mysql-core/query-builders/update.cjs.map +1 -1
  39. package/mysql-core/query-builders/update.d.cts +8 -2
  40. package/mysql-core/query-builders/update.d.ts +8 -2
  41. package/mysql-core/query-builders/update.js +22 -0
  42. package/mysql-core/query-builders/update.js.map +1 -1
  43. package/mysql2/driver.cjs +29 -1
  44. package/mysql2/driver.cjs.map +1 -1
  45. package/mysql2/driver.d.cts +23 -3
  46. package/mysql2/driver.d.ts +23 -3
  47. package/mysql2/driver.js +29 -1
  48. package/mysql2/driver.js.map +1 -1
  49. package/neon-http/driver.cjs +26 -1
  50. package/neon-http/driver.cjs.map +1 -1
  51. package/neon-http/driver.d.cts +23 -3
  52. package/neon-http/driver.d.ts +23 -3
  53. package/neon-http/driver.js +27 -2
  54. package/neon-http/driver.js.map +1 -1
  55. package/neon-serverless/driver.cjs +29 -1
  56. package/neon-serverless/driver.cjs.map +1 -1
  57. package/neon-serverless/driver.d.cts +23 -2
  58. package/neon-serverless/driver.d.ts +23 -2
  59. package/neon-serverless/driver.js +29 -1
  60. package/neon-serverless/driver.js.map +1 -1
  61. package/node-postgres/driver.cjs +37 -1
  62. package/node-postgres/driver.cjs.map +1 -1
  63. package/node-postgres/driver.d.cts +21 -2
  64. package/node-postgres/driver.d.ts +21 -2
  65. package/node-postgres/driver.js +27 -1
  66. package/node-postgres/driver.js.map +1 -1
  67. package/package.json +49 -85
  68. package/pglite/driver.cjs +27 -1
  69. package/pglite/driver.cjs.map +1 -1
  70. package/pglite/driver.d.cts +24 -3
  71. package/pglite/driver.d.ts +24 -3
  72. package/pglite/driver.js +27 -1
  73. package/pglite/driver.js.map +1 -1
  74. package/planetscale-serverless/driver.cjs +27 -1
  75. package/planetscale-serverless/driver.cjs.map +1 -1
  76. package/planetscale-serverless/driver.d.cts +21 -3
  77. package/planetscale-serverless/driver.d.ts +21 -3
  78. package/planetscale-serverless/driver.js +27 -1
  79. package/planetscale-serverless/driver.js.map +1 -1
  80. package/postgres-js/driver.cjs +37 -1
  81. package/postgres-js/driver.cjs.map +1 -1
  82. package/postgres-js/driver.d.cts +24 -4
  83. package/postgres-js/driver.d.ts +24 -4
  84. package/postgres-js/driver.js +27 -1
  85. package/postgres-js/driver.js.map +1 -1
  86. package/sqlite-core/dialect.cjs +25 -15
  87. package/sqlite-core/dialect.cjs.map +1 -1
  88. package/sqlite-core/dialect.d.cts +4 -2
  89. package/sqlite-core/dialect.d.ts +4 -2
  90. package/sqlite-core/dialect.js +25 -15
  91. package/sqlite-core/dialect.js.map +1 -1
  92. package/sqlite-core/query-builders/delete.cjs +22 -0
  93. package/sqlite-core/query-builders/delete.cjs.map +1 -1
  94. package/sqlite-core/query-builders/delete.d.cts +8 -2
  95. package/sqlite-core/query-builders/delete.d.ts +8 -2
  96. package/sqlite-core/query-builders/delete.js +22 -0
  97. package/sqlite-core/query-builders/delete.js.map +1 -1
  98. package/sqlite-core/query-builders/update.cjs +22 -0
  99. package/sqlite-core/query-builders/update.cjs.map +1 -1
  100. package/sqlite-core/query-builders/update.d.cts +8 -2
  101. package/sqlite-core/query-builders/update.d.ts +8 -2
  102. package/sqlite-core/query-builders/update.js +26 -1
  103. package/sqlite-core/query-builders/update.js.map +1 -1
  104. package/tidb-serverless/driver.cjs +26 -1
  105. package/tidb-serverless/driver.cjs.map +1 -1
  106. package/tidb-serverless/driver.d.cts +22 -4
  107. package/tidb-serverless/driver.d.ts +22 -4
  108. package/tidb-serverless/driver.js +26 -1
  109. package/tidb-serverless/driver.js.map +1 -1
  110. package/utils.cjs.map +1 -1
  111. package/utils.d.cts +1 -0
  112. package/utils.d.ts +1 -0
  113. package/utils.js.map +1 -1
  114. package/vercel-postgres/driver.cjs +18 -1
  115. package/vercel-postgres/driver.cjs.map +1 -1
  116. package/vercel-postgres/driver.d.cts +23 -3
  117. package/vercel-postgres/driver.d.ts +23 -3
  118. package/vercel-postgres/driver.js +18 -1
  119. package/vercel-postgres/driver.js.map +1 -1
  120. package/version.cjs +1 -1
  121. package/version.d.cts +1 -1
  122. package/version.d.ts +1 -1
  123. package/version.js +1 -1
  124. package/connect.cjs +0 -25
  125. package/connect.cjs.map +0 -1
  126. package/connect.d.cts +0 -2
  127. package/connect.d.ts +0 -2
  128. package/connect.js +0 -3
  129. package/connect.js.map +0 -1
  130. package/monodriver.cjs +0 -283
  131. package/monodriver.cjs.map +0 -1
  132. package/monodriver.d.cts +0 -192
  133. package/monodriver.d.ts +0 -192
  134. package/monodriver.js +0 -249
  135. package/monodriver.js.map +0 -1
  136. package/monomigrator.cjs +0 -99
  137. package/monomigrator.cjs.map +0 -1
  138. package/monomigrator.d.cts +0 -16
  139. package/monomigrator.d.ts +0 -16
  140. package/monomigrator.js +0 -65
  141. package/monomigrator.js.map +0 -1
@@ -1,10 +1,52 @@
1
- import type { Database } from 'bun:sqlite';
1
+ import { Database } from 'bun:sqlite';
2
2
  import { entityKind } from "../entity.js";
3
3
  import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
4
- import type { DrizzleConfig } from "../utils.js";
4
+ import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.js";
5
5
  export declare class BunSQLiteDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends BaseSQLiteDatabase<'sync', void, TSchema> {
6
6
  static readonly [entityKind]: string;
7
7
  }
8
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: Database, config?: DrizzleConfig<TSchema>): BunSQLiteDatabase<TSchema> & {
9
- $client: Database;
8
+ type DrizzleBunSqliteDatabaseOptions = {
9
+ /**
10
+ * Open the database as read-only (no write operations, no create).
11
+ *
12
+ * Equivalent to {@link constants.SQLITE_OPEN_READONLY}
13
+ */
14
+ readonly?: boolean;
15
+ /**
16
+ * Allow creating a new database
17
+ *
18
+ * Equivalent to {@link constants.SQLITE_OPEN_CREATE}
19
+ */
20
+ create?: boolean;
21
+ /**
22
+ * Open the database as read-write
23
+ *
24
+ * Equivalent to {@link constants.SQLITE_OPEN_READWRITE}
25
+ */
26
+ readwrite?: boolean;
10
27
  };
28
+ export type DrizzleBunSqliteDatabaseConfig = ({
29
+ source?: string;
30
+ } & DrizzleBunSqliteDatabaseOptions) | string | undefined;
31
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Database = Database>(...params: IfNotImported<Database, [
32
+ ImportTypeError<'bun-types'>
33
+ ], [] | [
34
+ TClient | string
35
+ ] | [
36
+ TClient | string,
37
+ DrizzleConfig<TSchema>
38
+ ] | [
39
+ (DrizzleConfig<TSchema> & ({
40
+ connection?: DrizzleBunSqliteDatabaseConfig;
41
+ } | {
42
+ client: TClient;
43
+ }))
44
+ ]>): BunSQLiteDatabase<TSchema> & {
45
+ $client: TClient;
46
+ };
47
+ export declare namespace drizzle {
48
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): BunSQLiteDatabase<TSchema> & {
49
+ $client: '$client is not available on drizzle.mock()';
50
+ };
51
+ }
52
+ export {};
@@ -1,3 +1,4 @@
1
+ import { Database } from "bun:sqlite";
1
2
  import { entityKind } from "../entity.js";
2
3
  import { DefaultLogger } from "../logger.js";
3
4
  import {
@@ -10,7 +11,7 @@ import { SQLiteBunSession } from "./session.js";
10
11
  class BunSQLiteDatabase extends BaseSQLiteDatabase {
11
12
  static [entityKind] = "BunSQLiteDatabase";
12
13
  }
13
- function drizzle(client, config = {}) {
14
+ function construct(client, config = {}) {
14
15
  const dialect = new SQLiteSyncDialect({ casing: config.casing });
15
16
  let logger;
16
17
  if (config.logger === true) {
@@ -35,6 +36,32 @@ function drizzle(client, config = {}) {
35
36
  db.$client = client;
36
37
  return db;
37
38
  }
39
+ function drizzle(...params) {
40
+ if (params[0] instanceof Database) {
41
+ return construct(params[0], params[1]);
42
+ }
43
+ if (typeof params[0] === "object") {
44
+ const { connection, client, ...drizzleConfig } = params[0];
45
+ if (client)
46
+ return construct(client, drizzleConfig);
47
+ if (typeof connection === "object") {
48
+ const { source, ...opts } = connection;
49
+ const options = Object.values(opts).filter((v) => v !== void 0).length ? opts : void 0;
50
+ const instance3 = new Database(source, options);
51
+ return construct(instance3, drizzleConfig);
52
+ }
53
+ const instance2 = new Database(connection);
54
+ return construct(instance2, drizzleConfig);
55
+ }
56
+ const instance = new Database(params[0]);
57
+ return construct(instance, params[1]);
58
+ }
59
+ ((drizzle2) => {
60
+ function mock(config) {
61
+ return construct({}, config);
62
+ }
63
+ drizzle2.mock = mock;
64
+ })(drizzle || (drizzle = {}));
38
65
  export {
39
66
  BunSQLiteDatabase,
40
67
  drizzle
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/bun-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport type { Database } from 'bun:sqlite';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { SQLiteBunSession } from './session.ts';\n\nexport class BunSQLiteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'sync', void, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLiteDatabase';\n}\n\nexport function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Database,\n\tconfig: DrizzleConfig<TSchema> = {},\n): BunSQLiteDatabase<TSchema> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteSyncDialect({ 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 SQLiteBunSession(client, dialect, schema, { logger });\n\tconst db = new BunSQLiteDatabase('sync', dialect, session, schema) as BunSQLiteDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AAGA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAElC,SAAS,wBAAwB;AAE1B,MAAM,0BAEH,mBAA0C;AAAA,EACnD,QAA0B,UAAU,IAAY;AACjD;AAEO,SAAS,QACf,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,kBAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,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,iBAAiB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACxE,QAAM,KAAK,IAAI,kBAAkB,QAAQ,SAAS,SAAS,MAAM;AACjE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/bun-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport { Database } from 'bun:sqlite';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteSyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport { SQLiteBunSession } from './session.ts';\n\nexport class BunSQLiteDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'sync', void, TSchema> {\n\tstatic override readonly [entityKind]: string = 'BunSQLiteDatabase';\n}\n\ntype DrizzleBunSqliteDatabaseOptions = {\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\nexport type DrizzleBunSqliteDatabaseConfig =\n\t| ({\n\t\tsource?: string;\n\t} & DrizzleBunSqliteDatabaseOptions)\n\t| string\n\t| undefined;\n\nfunction construct<TSchema extends Record<string, unknown> = Record<string, never>>(\n\tclient: Database,\n\tconfig: DrizzleConfig<TSchema> = {},\n): BunSQLiteDatabase<TSchema> & {\n\t$client: Database;\n} {\n\tconst dialect = new SQLiteSyncDialect({ 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 SQLiteBunSession(client, dialect, schema, { logger });\n\tconst db = new BunSQLiteDatabase('sync', dialect, session, schema) as BunSQLiteDatabase<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 Database = Database,\n>(\n\t...params: IfNotImported<\n\t\tDatabase,\n\t\t[ImportTypeError<'bun-types'>],\n\t\t| []\n\t\t| [\n\t\t\tTClient | string,\n\t\t]\n\t\t| [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t]\n\t\t| [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n\t>\n): BunSQLiteDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof Database) {\n\t\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tif (typeof params[0] === 'object') {\n\t\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t\t& ({\n\t\t\t\tconnection?: DrizzleBunSqliteDatabaseConfig | string;\n\t\t\t\tclient?: TClient;\n\t\t\t})\n\t\t\t& DrizzleConfig<TSchema>;\n\n\t\tif (client) return construct(client, drizzleConfig) as any;\n\n\t\tif (typeof connection === 'object') {\n\t\t\tconst { source, ...opts } = connection;\n\n\t\t\tconst options = Object.values(opts).filter((v) => v !== undefined).length ? opts : undefined;\n\n\t\t\tconst instance = new Database(source, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = new Database(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\tconst instance = new Database(params[0]);\n\n\treturn construct(instance, params[1]) 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): BunSQLiteDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AAEA,SAAS,gBAAgB;AACzB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AACP,SAAS,0BAA0B;AACnC,SAAS,yBAAyB;AAElC,SAAS,wBAAwB;AAE1B,MAAM,0BAEH,mBAA0C;AAAA,EACnD,QAA0B,UAAU,IAAY;AACjD;AA8BA,SAAS,UACR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,kBAAkB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAC/D,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,iBAAiB,QAAQ,SAAS,QAAQ,EAAE,OAAO,CAAC;AACxE,QAAM,KAAK,IAAI,kBAAkB,QAAQ,SAAS,SAAS,MAAM;AACjE,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAwBF;AAED,MAAI,OAAO,CAAC,aAAa,UAAU;AAClC,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAOzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,QAAQ,GAAG,KAAK,IAAI;AAE5B,YAAM,UAAU,OAAO,OAAO,IAAI,EAAE,OAAO,CAAC,MAAM,MAAM,MAAS,EAAE,SAAS,OAAO;AAEnF,YAAMA,YAAW,IAAI,SAAS,QAAQ,OAAO;AAE7C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAMA,YAAW,IAAI,SAAS,UAAU;AAExC,WAAO,UAAUA,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,IAAI,SAAS,OAAO,CAAC,CAAC;AAEvC,SAAO,UAAU,UAAU,OAAO,CAAC,CAAC;AACrC;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
package/libsql/driver.cjs CHANGED
@@ -22,6 +22,10 @@ __export(driver_exports, {
22
22
  drizzle: () => drizzle
23
23
  });
24
24
  module.exports = __toCommonJS(driver_exports);
25
+ var import_client = require("@libsql/client");
26
+ var import_http = require("@libsql/client/http");
27
+ var import_sqlite3 = require("@libsql/client/sqlite3");
28
+ var import_ws = require("@libsql/client/ws");
25
29
  var import_entity = require("../entity.cjs");
26
30
  var import_logger = require("../logger.cjs");
27
31
  var import_relations = require("../relations.cjs");
@@ -34,7 +38,7 @@ class LibSQLDatabase extends import_db.BaseSQLiteDatabase {
34
38
  return this.session.batch(batch);
35
39
  }
36
40
  }
37
- function drizzle(client, config = {}) {
41
+ function construct(client, config = {}) {
38
42
  const dialect = new import_dialect.SQLiteAsyncDialect({ casing: config.casing });
39
43
  let logger;
40
44
  if (config.logger === true) {
@@ -59,6 +63,28 @@ function drizzle(client, config = {}) {
59
63
  db.$client = client;
60
64
  return db;
61
65
  }
66
+ function drizzle(...params) {
67
+ if (params[0] instanceof import_ws.WsClient || params[0] instanceof import_http.HttpClient || params[0] instanceof import_sqlite3.Sqlite3Client) {
68
+ return construct(params[0], params[1]);
69
+ }
70
+ if (typeof params[0] === "string") {
71
+ const instance2 = (0, import_client.createClient)({
72
+ url: params[0]
73
+ });
74
+ return construct(instance2, params[1]);
75
+ }
76
+ const { connection, client, ...drizzleConfig } = params[0];
77
+ if (client)
78
+ return construct(client, drizzleConfig);
79
+ const instance = typeof connection === "string" ? (0, import_client.createClient)({ url: connection }) : (0, import_client.createClient)(connection);
80
+ return construct(instance, drizzleConfig);
81
+ }
82
+ ((drizzle2) => {
83
+ function mock(config) {
84
+ return construct({}, config);
85
+ }
86
+ drizzle2.mock = mock;
87
+ })(drizzle || (drizzle = {}));
62
88
  // Annotate the CommonJS export names for ESM import in node:
63
89
  0 && (module.exports = {
64
90
  LibSQLDatabase,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(client: Client, config: DrizzleConfig<TSchema> = {}): LibSQLDatabase<TSchema> & {\n\t$client: Client;\n} {\n\tconst dialect = new SQLiteAsyncDialect({ 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 LibSQLSession(client, dialect, schema, { logger }, undefined);\n\tconst db = new LibSQLDatabase('async', dialect, session, schema) as LibSQLDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,oBAA2B;AAC3B,oBAA8B;AAC9B,uBAMO;AACP,gBAAmC;AACnC,qBAAmC;AAEnC,qBAA8B;AAEvB,MAAM,uBAEH,6BAAgD;AAAA,EACzD,QAA0B,wBAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAEd,QAAgB,SAAiC,CAAC,GAElD;AACD,QAAM,UAAU,IAAI,kCAAmB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAChE,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,GAAG,MAAS;AAChF,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,SAAS,MAAM;AAC/D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import { type Client, type Config, createClient, type ResultSet } from '@libsql/client';\nimport { HttpClient } from '@libsql/client/http';\nimport { Sqlite3Client } from '@libsql/client/sqlite3';\nimport { WsClient } from '@libsql/client/ws';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(client: Client, config: DrizzleConfig<TSchema> = {}): LibSQLDatabase<TSchema> & {\n\t$client: Client;\n} {\n\tconst dialect = new SQLiteAsyncDialect({ 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 LibSQLSession(client, dialect, schema, { logger }, undefined);\n\tconst db = new LibSQLDatabase('async', dialect, session, schema) as LibSQLDatabase<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 Client = Client,\n>(\n\t...params: IfNotImported<\n\t\tClient,\n\t\t[ImportTypeError<'@libsql/client'>],\n\t\t[\n\t\t\tTClient | string,\n\t\t] | [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t] | [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection: string | Config;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n\t>\n): LibSQLDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof WsClient || params[0] instanceof HttpClient || params[0] instanceof Sqlite3Client) {\n\t\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = createClient({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t& { connection?: Config; client?: TClient }\n\t\t& DrizzleConfig<TSchema>;\n\n\tif (client) return construct(client, drizzleConfig) as any;\n\n\tconst instance = typeof connection === 'string' ? createClient({ url: connection }) : createClient(connection!);\n\n\treturn construct(instance, drizzleConfig) 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): LibSQLDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAAuE;AACvE,kBAA2B;AAC3B,qBAA8B;AAC9B,gBAAyB;AAEzB,oBAA2B;AAC3B,oBAA8B;AAC9B,uBAMO;AACP,gBAAmC;AACnC,qBAAmC;AAEnC,qBAA8B;AAEvB,MAAM,uBAEH,6BAAgD;AAAA,EACzD,QAA0B,wBAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEA,SAAS,UAEP,QAAgB,SAAiC,CAAC,GAElD;AACD,QAAM,UAAU,IAAI,kCAAmB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAChE,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,GAAG,MAAS;AAChF,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,SAAS,MAAM;AAC/D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAqBF;AAED,MAAI,OAAO,CAAC,aAAa,sBAAY,OAAO,CAAC,aAAa,0BAAc,OAAO,CAAC,aAAa,8BAAe;AAC3G,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAMA,gBAAW,4BAAa;AAAA,MAC7B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAUA,WAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,QAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,MAAI;AAAQ,WAAO,UAAU,QAAQ,aAAa;AAElD,QAAM,WAAW,OAAO,eAAe,eAAW,4BAAa,EAAE,KAAK,WAAW,CAAC,QAAI,4BAAa,UAAW;AAE9G,SAAO,UAAU,UAAU,aAAa;AACzC;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -1,12 +1,30 @@
1
- import type { Client, ResultSet } from '@libsql/client';
1
+ import { type Client, type Config, type ResultSet } from '@libsql/client';
2
2
  import type { BatchItem, BatchResponse } from "../batch.cjs";
3
3
  import { entityKind } from "../entity.cjs";
4
4
  import { BaseSQLiteDatabase } from "../sqlite-core/db.cjs";
5
- import type { DrizzleConfig } from "../utils.cjs";
5
+ import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.cjs";
6
6
  export declare class LibSQLDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {
7
7
  static readonly [entityKind]: string;
8
8
  batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(batch: T): Promise<BatchResponse<T>>;
9
9
  }
10
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: Client, config?: DrizzleConfig<TSchema>): LibSQLDatabase<TSchema> & {
11
- $client: Client;
10
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Client = Client>(...params: IfNotImported<Client, [
11
+ ImportTypeError<'@libsql/client'>
12
+ ], [
13
+ TClient | string
14
+ ] | [
15
+ TClient | string,
16
+ DrizzleConfig<TSchema>
17
+ ] | [
18
+ (DrizzleConfig<TSchema> & ({
19
+ connection: string | Config;
20
+ } | {
21
+ client: TClient;
22
+ }))
23
+ ]>): LibSQLDatabase<TSchema> & {
24
+ $client: TClient;
12
25
  };
26
+ export declare namespace drizzle {
27
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): LibSQLDatabase<TSchema> & {
28
+ $client: '$client is not available on drizzle.mock()';
29
+ };
30
+ }
@@ -1,12 +1,30 @@
1
- import type { Client, ResultSet } from '@libsql/client';
1
+ import { type Client, type Config, type ResultSet } from '@libsql/client';
2
2
  import type { BatchItem, BatchResponse } from "../batch.js";
3
3
  import { entityKind } from "../entity.js";
4
4
  import { BaseSQLiteDatabase } from "../sqlite-core/db.js";
5
- import type { DrizzleConfig } from "../utils.js";
5
+ import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.js";
6
6
  export declare class LibSQLDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {
7
7
  static readonly [entityKind]: string;
8
8
  batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(batch: T): Promise<BatchResponse<T>>;
9
9
  }
10
- export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>>(client: Client, config?: DrizzleConfig<TSchema>): LibSQLDatabase<TSchema> & {
11
- $client: Client;
10
+ export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends Client = Client>(...params: IfNotImported<Client, [
11
+ ImportTypeError<'@libsql/client'>
12
+ ], [
13
+ TClient | string
14
+ ] | [
15
+ TClient | string,
16
+ DrizzleConfig<TSchema>
17
+ ] | [
18
+ (DrizzleConfig<TSchema> & ({
19
+ connection: string | Config;
20
+ } | {
21
+ client: TClient;
22
+ }))
23
+ ]>): LibSQLDatabase<TSchema> & {
24
+ $client: TClient;
12
25
  };
26
+ export declare namespace drizzle {
27
+ function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): LibSQLDatabase<TSchema> & {
28
+ $client: '$client is not available on drizzle.mock()';
29
+ };
30
+ }
package/libsql/driver.js CHANGED
@@ -1,3 +1,7 @@
1
+ import { createClient } from "@libsql/client";
2
+ import { HttpClient } from "@libsql/client/http";
3
+ import { Sqlite3Client } from "@libsql/client/sqlite3";
4
+ import { WsClient } from "@libsql/client/ws";
1
5
  import { entityKind } from "../entity.js";
2
6
  import { DefaultLogger } from "../logger.js";
3
7
  import {
@@ -13,7 +17,7 @@ class LibSQLDatabase extends BaseSQLiteDatabase {
13
17
  return this.session.batch(batch);
14
18
  }
15
19
  }
16
- function drizzle(client, config = {}) {
20
+ function construct(client, config = {}) {
17
21
  const dialect = new SQLiteAsyncDialect({ casing: config.casing });
18
22
  let logger;
19
23
  if (config.logger === true) {
@@ -38,6 +42,28 @@ function drizzle(client, config = {}) {
38
42
  db.$client = client;
39
43
  return db;
40
44
  }
45
+ function drizzle(...params) {
46
+ if (params[0] instanceof WsClient || params[0] instanceof HttpClient || params[0] instanceof Sqlite3Client) {
47
+ return construct(params[0], params[1]);
48
+ }
49
+ if (typeof params[0] === "string") {
50
+ const instance2 = createClient({
51
+ url: params[0]
52
+ });
53
+ return construct(instance2, params[1]);
54
+ }
55
+ const { connection, client, ...drizzleConfig } = params[0];
56
+ if (client)
57
+ return construct(client, drizzleConfig);
58
+ const instance = typeof connection === "string" ? createClient({ url: connection }) : createClient(connection);
59
+ return construct(instance, drizzleConfig);
60
+ }
61
+ ((drizzle2) => {
62
+ function mock(config) {
63
+ return construct({}, config);
64
+ }
65
+ drizzle2.mock = mock;
66
+ })(drizzle || (drizzle = {}));
41
67
  export {
42
68
  LibSQLDatabase,
43
69
  drizzle
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import type { Client, ResultSet } from '@libsql/client';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nexport function drizzle<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(client: Client, config: DrizzleConfig<TSchema> = {}): LibSQLDatabase<TSchema> & {\n\t$client: Client;\n} {\n\tconst dialect = new SQLiteAsyncDialect({ 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 LibSQLSession(client, dialect, schema, { logger }, undefined);\n\tconst db = new LibSQLDatabase('async', dialect, session, schema) as LibSQLDatabase<TSchema>;\n\t(<any> db).$client = client;\n\n\treturn db as any;\n}\n"],"mappings":"AAEA,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAIM;AACP,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AAEnC,SAAS,qBAAqB;AAEvB,MAAM,uBAEH,mBAAgD;AAAA,EACzD,QAA0B,UAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEO,SAAS,QAEd,QAAgB,SAAiC,CAAC,GAElD;AACD,QAAM,UAAU,IAAI,mBAAmB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAChE,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,GAAG,MAAS;AAChF,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,SAAS,MAAM;AAC/D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;","names":[]}
1
+ {"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import { type Client, type Config, createClient, type ResultSet } from '@libsql/client';\nimport { HttpClient } from '@libsql/client/http';\nimport { Sqlite3Client } from '@libsql/client/sqlite3';\nimport { WsClient } from '@libsql/client/ws';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype ExtractTablesWithRelations,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport { BaseSQLiteDatabase } from '~/sqlite-core/db.ts';\nimport { SQLiteAsyncDialect } from '~/sqlite-core/dialect.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport { LibSQLSession } from './session.ts';\n\nexport class LibSQLDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends BaseSQLiteDatabase<'async', ResultSet, TSchema> {\n\tstatic override readonly [entityKind]: string = 'LibSQLDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: LibSQLSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'sqlite'>, T extends Readonly<[U, ...U[]]>>(\n\t\tbatch: T,\n\t): Promise<BatchResponse<T>> {\n\t\treturn this.session.batch(batch) as Promise<BatchResponse<T>>;\n\t}\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(client: Client, config: DrizzleConfig<TSchema> = {}): LibSQLDatabase<TSchema> & {\n\t$client: Client;\n} {\n\tconst dialect = new SQLiteAsyncDialect({ 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 LibSQLSession(client, dialect, schema, { logger }, undefined);\n\tconst db = new LibSQLDatabase('async', dialect, session, schema) as LibSQLDatabase<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 Client = Client,\n>(\n\t...params: IfNotImported<\n\t\tClient,\n\t\t[ImportTypeError<'@libsql/client'>],\n\t\t[\n\t\t\tTClient | string,\n\t\t] | [\n\t\t\tTClient | string,\n\t\t\tDrizzleConfig<TSchema>,\n\t\t] | [\n\t\t\t(\n\t\t\t\t& DrizzleConfig<TSchema>\n\t\t\t\t& ({\n\t\t\t\t\tconnection: string | Config;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t),\n\t\t]\n\t>\n): LibSQLDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof WsClient || params[0] instanceof HttpClient || params[0] instanceof Sqlite3Client) {\n\t\treturn construct(params[0] as TClient, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n\t}\n\n\tif (typeof params[0] === 'string') {\n\t\tconst instance = createClient({\n\t\t\turl: params[0],\n\t\t});\n\n\t\treturn construct(instance, params[1]) as any;\n\t}\n\n\tconst { connection, client, ...drizzleConfig } = params[0] as\n\t\t& { connection?: Config; client?: TClient }\n\t\t& DrizzleConfig<TSchema>;\n\n\tif (client) return construct(client, drizzleConfig) as any;\n\n\tconst instance = typeof connection === 'string' ? createClient({ url: connection }) : createClient(connection!);\n\n\treturn construct(instance, drizzleConfig) 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): LibSQLDatabase<TSchema> & {\n\t\t$client: '$client is not available on drizzle.mock()';\n\t} {\n\t\treturn construct({} as any, config) as any;\n\t}\n}\n"],"mappings":"AAAA,SAAmC,oBAAoC;AACvE,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B,SAAS,gBAAgB;AAEzB,SAAS,kBAAkB;AAC3B,SAAS,qBAAqB;AAC9B;AAAA,EACC;AAAA,EACA;AAAA,OAIM;AACP,SAAS,0BAA0B;AACnC,SAAS,0BAA0B;AAEnC,SAAS,qBAAqB;AAEvB,MAAM,uBAEH,mBAAgD;AAAA,EACzD,QAA0B,UAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEA,SAAS,UAEP,QAAgB,SAAiC,CAAC,GAElD;AACD,QAAM,UAAU,IAAI,mBAAmB,EAAE,QAAQ,OAAO,OAAO,CAAC;AAChE,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,GAAG,MAAS;AAChF,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,SAAS,MAAM;AAC/D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAqBF;AAED,MAAI,OAAO,CAAC,aAAa,YAAY,OAAO,CAAC,aAAa,cAAc,OAAO,CAAC,aAAa,eAAe;AAC3G,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAMA,YAAW,aAAa;AAAA,MAC7B,KAAK,OAAO,CAAC;AAAA,IACd,CAAC;AAED,WAAO,UAAUA,WAAU,OAAO,CAAC,CAAC;AAAA,EACrC;AAEA,QAAM,EAAE,YAAY,QAAQ,GAAG,cAAc,IAAI,OAAO,CAAC;AAIzD,MAAI;AAAQ,WAAO,UAAU,QAAQ,aAAa;AAElD,QAAM,WAAW,OAAO,eAAe,WAAW,aAAa,EAAE,KAAK,WAAW,CAAC,IAAI,aAAa,UAAW;AAE9G,SAAO,UAAU,UAAU,aAAa;AACzC;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","drizzle"]}
@@ -92,11 +92,13 @@ class MySqlDialect {
92
92
  withSqlChunks.push(import_sql.sql` `);
93
93
  return import_sql.sql.join(withSqlChunks);
94
94
  }
95
- buildDeleteQuery({ table, where, returning, withList }) {
95
+ buildDeleteQuery({ table, where, returning, withList, limit, orderBy }) {
96
96
  const withSql = this.buildWithCTE(withList);
97
97
  const returningSql = returning ? import_sql.sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
98
98
  const whereSql = where ? import_sql.sql` where ${where}` : void 0;
99
- return import_sql.sql`${withSql}delete from ${table}${whereSql}${returningSql}`;
99
+ const orderBySql = this.buildOrderBy(orderBy);
100
+ const limitSql = this.buildLimit(limit);
101
+ return import_sql.sql`${withSql}delete from ${table}${whereSql}${orderBySql}${limitSql}${returningSql}`;
100
102
  }
101
103
  buildUpdateSet(table, set) {
102
104
  const tableColumns = table[import_table.Table.Symbol.Columns];
@@ -114,12 +116,14 @@ class MySqlDialect {
114
116
  return [res];
115
117
  }));
116
118
  }
117
- buildUpdateQuery({ table, set, where, returning, withList }) {
119
+ buildUpdateQuery({ table, set, where, returning, withList, limit, orderBy }) {
118
120
  const withSql = this.buildWithCTE(withList);
119
121
  const setSql = this.buildUpdateSet(table, set);
120
122
  const returningSql = returning ? import_sql.sql` returning ${this.buildSelection(returning, { isSingleTable: true })}` : void 0;
121
123
  const whereSql = where ? import_sql.sql` where ${where}` : void 0;
122
- return import_sql.sql`${withSql}update ${table} set ${setSql}${whereSql}${returningSql}`;
124
+ const orderBySql = this.buildOrderBy(orderBy);
125
+ const limitSql = this.buildLimit(limit);
126
+ return import_sql.sql`${withSql}update ${table} set ${setSql}${whereSql}${orderBySql}${limitSql}${returningSql}`;
123
127
  }
124
128
  /**
125
129
  * Builds selection SQL with provided fields/expressions
@@ -171,6 +175,12 @@ class MySqlDialect {
171
175
  });
172
176
  return import_sql.sql.join(chunks);
173
177
  }
178
+ buildLimit(limit) {
179
+ return typeof limit === "object" || typeof limit === "number" && limit >= 0 ? import_sql.sql` limit ${limit}` : void 0;
180
+ }
181
+ buildOrderBy(orderBy) {
182
+ return orderBy && orderBy.length > 0 ? import_sql.sql` order by ${import_sql.sql.join(orderBy, import_sql.sql`, `)}` : void 0;
183
+ }
174
184
  buildSelectQuery({
175
185
  withList,
176
186
  fields,
@@ -245,15 +255,9 @@ class MySqlDialect {
245
255
  const joinsSql = import_sql.sql.join(joinsArray);
246
256
  const whereSql = where ? import_sql.sql` where ${where}` : void 0;
247
257
  const havingSql = having ? import_sql.sql` having ${having}` : void 0;
248
- let orderBySql;
249
- if (orderBy && orderBy.length > 0) {
250
- orderBySql = import_sql.sql` order by ${import_sql.sql.join(orderBy, import_sql.sql`, `)}`;
251
- }
252
- let groupBySql;
253
- if (groupBy && groupBy.length > 0) {
254
- groupBySql = import_sql.sql` group by ${import_sql.sql.join(groupBy, import_sql.sql`, `)}`;
255
- }
256
- const limitSql = typeof limit === "object" || typeof limit === "number" && limit >= 0 ? import_sql.sql` limit ${limit}` : void 0;
258
+ const orderBySql = this.buildOrderBy(orderBy);
259
+ const groupBySql = groupBy && groupBy.length > 0 ? import_sql.sql` group by ${import_sql.sql.join(groupBy, import_sql.sql`, `)}` : void 0;
260
+ const limitSql = this.buildLimit(limit);
257
261
  const offsetSql = offset ? import_sql.sql` offset ${offset}` : void 0;
258
262
  let lockingClausesSql;
259
263
  if (lockingClause) {