drizzle-orm 0.34.1-a345cb3 → 0.34.1-a88d6b6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/aws-data-api/pg/driver.cjs +21 -1
- package/aws-data-api/pg/driver.cjs.map +1 -1
- package/aws-data-api/pg/driver.d.cts +20 -3
- package/aws-data-api/pg/driver.d.ts +20 -3
- package/aws-data-api/pg/driver.js +21 -1
- package/aws-data-api/pg/driver.js.map +1 -1
- package/better-sqlite3/driver.cjs +37 -1
- package/better-sqlite3/driver.cjs.map +1 -1
- package/better-sqlite3/driver.d.cts +24 -3
- package/better-sqlite3/driver.d.ts +24 -3
- package/better-sqlite3/driver.js +27 -1
- package/better-sqlite3/driver.js.map +1 -1
- package/bun-sqlite/driver.cjs +28 -1
- package/bun-sqlite/driver.cjs.map +1 -1
- package/bun-sqlite/driver.d.cts +46 -4
- package/bun-sqlite/driver.d.ts +46 -4
- package/bun-sqlite/driver.js +28 -1
- package/bun-sqlite/driver.js.map +1 -1
- package/entity.cjs +1 -1
- package/entity.cjs.map +1 -1
- package/entity.js +1 -1
- package/entity.js.map +1 -1
- package/libsql/driver.cjs +27 -1
- package/libsql/driver.cjs.map +1 -1
- package/libsql/driver.d.cts +22 -4
- package/libsql/driver.d.ts +22 -4
- package/libsql/driver.js +27 -1
- package/libsql/driver.js.map +1 -1
- package/mysql-core/dialect.cjs +17 -13
- package/mysql-core/dialect.cjs.map +1 -1
- package/mysql-core/dialect.d.cts +4 -2
- package/mysql-core/dialect.d.ts +4 -2
- package/mysql-core/dialect.js +17 -13
- package/mysql-core/dialect.js.map +1 -1
- package/mysql-core/query-builders/delete.cjs +22 -0
- package/mysql-core/query-builders/delete.cjs.map +1 -1
- package/mysql-core/query-builders/delete.d.cts +8 -1
- package/mysql-core/query-builders/delete.d.ts +8 -1
- package/mysql-core/query-builders/delete.js +22 -0
- package/mysql-core/query-builders/delete.js.map +1 -1
- package/mysql-core/query-builders/update.cjs +22 -0
- package/mysql-core/query-builders/update.cjs.map +1 -1
- package/mysql-core/query-builders/update.d.cts +8 -2
- package/mysql-core/query-builders/update.d.ts +8 -2
- package/mysql-core/query-builders/update.js +22 -0
- package/mysql-core/query-builders/update.js.map +1 -1
- package/mysql-core/utils.d.cts +0 -1
- package/mysql-core/utils.d.ts +0 -1
- package/mysql-core/view.cjs +0 -4
- package/mysql-core/view.cjs.map +1 -1
- package/mysql-core/view.d.cts +0 -2
- package/mysql-core/view.d.ts +0 -2
- package/mysql-core/view.js +0 -4
- package/mysql-core/view.js.map +1 -1
- package/mysql2/driver.cjs +27 -1
- package/mysql2/driver.cjs.map +1 -1
- package/mysql2/driver.d.cts +21 -3
- package/mysql2/driver.d.ts +21 -3
- package/mysql2/driver.js +27 -1
- package/mysql2/driver.js.map +1 -1
- package/neon-http/driver.cjs +26 -1
- package/neon-http/driver.cjs.map +1 -1
- package/neon-http/driver.d.cts +21 -3
- package/neon-http/driver.d.ts +21 -3
- package/neon-http/driver.js +27 -2
- package/neon-http/driver.js.map +1 -1
- package/neon-serverless/driver.cjs +32 -8
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +23 -3
- package/neon-serverless/driver.d.ts +23 -3
- package/neon-serverless/driver.js +33 -9
- package/neon-serverless/driver.js.map +1 -1
- package/neon-serverless/session.cjs +44 -2
- package/neon-serverless/session.cjs.map +1 -1
- package/neon-serverless/session.d.cts +2 -1
- package/neon-serverless/session.d.ts +2 -1
- package/neon-serverless/session.js +46 -3
- package/neon-serverless/session.js.map +1 -1
- package/node-postgres/driver.cjs +26 -9
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +21 -3
- package/node-postgres/driver.d.ts +21 -3
- package/node-postgres/driver.js +26 -9
- package/node-postgres/driver.js.map +1 -1
- package/node-postgres/session.cjs +39 -3
- package/node-postgres/session.cjs.map +1 -1
- package/node-postgres/session.js +39 -3
- package/node-postgres/session.js.map +1 -1
- package/package.json +1 -37
- package/pg-core/view.cjs +22 -2
- package/pg-core/view.cjs.map +1 -1
- package/pg-core/view.d.cts +25 -5
- package/pg-core/view.d.ts +25 -5
- package/pg-core/view.js +21 -3
- package/pg-core/view.js.map +1 -1
- package/pglite/driver.cjs +27 -1
- package/pglite/driver.cjs.map +1 -1
- package/pglite/driver.d.cts +24 -3
- package/pglite/driver.d.ts +24 -3
- package/pglite/driver.js +27 -1
- package/pglite/driver.js.map +1 -1
- package/planetscale-serverless/driver.cjs +25 -1
- package/planetscale-serverless/driver.cjs.map +1 -1
- package/planetscale-serverless/driver.d.cts +19 -3
- package/planetscale-serverless/driver.d.ts +19 -3
- package/planetscale-serverless/driver.js +25 -1
- package/planetscale-serverless/driver.js.map +1 -1
- package/postgres-js/driver.cjs +37 -1
- package/postgres-js/driver.cjs.map +1 -1
- package/postgres-js/driver.d.cts +24 -4
- package/postgres-js/driver.d.ts +24 -4
- package/postgres-js/driver.js +27 -1
- package/postgres-js/driver.js.map +1 -1
- package/sqlite-core/dialect.cjs +25 -15
- package/sqlite-core/dialect.cjs.map +1 -1
- package/sqlite-core/dialect.d.cts +4 -2
- package/sqlite-core/dialect.d.ts +4 -2
- package/sqlite-core/dialect.js +25 -15
- package/sqlite-core/dialect.js.map +1 -1
- package/sqlite-core/query-builders/delete.cjs +22 -0
- package/sqlite-core/query-builders/delete.cjs.map +1 -1
- package/sqlite-core/query-builders/delete.d.cts +8 -2
- package/sqlite-core/query-builders/delete.d.ts +8 -2
- package/sqlite-core/query-builders/delete.js +22 -0
- package/sqlite-core/query-builders/delete.js.map +1 -1
- package/sqlite-core/query-builders/update.cjs +22 -0
- package/sqlite-core/query-builders/update.cjs.map +1 -1
- package/sqlite-core/query-builders/update.d.cts +8 -2
- package/sqlite-core/query-builders/update.d.ts +8 -2
- package/sqlite-core/query-builders/update.js +26 -1
- package/sqlite-core/query-builders/update.js.map +1 -1
- package/sqlite-core/utils.cjs +2 -3
- package/sqlite-core/utils.cjs.map +1 -1
- package/sqlite-core/utils.d.cts +0 -4
- package/sqlite-core/utils.d.ts +0 -4
- package/sqlite-core/utils.js +2 -3
- package/sqlite-core/utils.js.map +1 -1
- package/sqlite-core/view.cjs +2 -8
- package/sqlite-core/view.cjs.map +1 -1
- package/sqlite-core/view.d.cts +1 -2
- package/sqlite-core/view.d.ts +1 -2
- package/sqlite-core/view.js +2 -8
- package/sqlite-core/view.js.map +1 -1
- package/tidb-serverless/driver.cjs +26 -1
- package/tidb-serverless/driver.cjs.map +1 -1
- package/tidb-serverless/driver.d.cts +22 -4
- package/tidb-serverless/driver.d.ts +22 -4
- package/tidb-serverless/driver.js +26 -1
- package/tidb-serverless/driver.js.map +1 -1
- package/utils.cjs.map +1 -1
- package/utils.d.cts +2 -0
- package/utils.d.ts +2 -0
- package/utils.js.map +1 -1
- package/vercel-postgres/driver.cjs +17 -8
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +23 -4
- package/vercel-postgres/driver.d.ts +23 -4
- package/vercel-postgres/driver.js +18 -9
- package/vercel-postgres/driver.js.map +1 -1
- package/vercel-postgres/session.cjs +38 -2
- package/vercel-postgres/session.cjs.map +1 -1
- package/vercel-postgres/session.js +39 -2
- package/vercel-postgres/session.js.map +1 -1
- package/version.cjs +1 -1
- package/version.d.cts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/connect.cjs +0 -25
- package/connect.cjs.map +0 -1
- package/connect.d.cts +0 -2
- package/connect.d.ts +0 -2
- package/connect.js +0 -3
- package/connect.js.map +0 -1
- package/monodriver.cjs +0 -283
- package/monodriver.cjs.map +0 -1
- package/monodriver.d.cts +0 -192
- package/monodriver.d.ts +0 -192
- package/monodriver.js +0 -249
- package/monodriver.js.map +0 -1
- package/monomigrator.cjs +0 -99
- package/monomigrator.cjs.map +0 -1
- package/monomigrator.d.cts +0 -16
- package/monomigrator.d.ts +0 -16
- package/monomigrator.js +0 -65
- package/monomigrator.js.map +0 -1
package/bun-sqlite/driver.d.ts
CHANGED
|
@@ -1,10 +1,52 @@
|
|
|
1
|
-
import
|
|
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
|
-
|
|
9
|
-
|
|
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 {};
|
package/bun-sqlite/driver.js
CHANGED
|
@@ -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
|
|
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
|
package/bun-sqlite/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/bun-sqlite/driver.ts"],"sourcesContent":["/// <reference types=\"bun-types\" />\n\nimport
|
|
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/entity.cjs
CHANGED
|
@@ -37,7 +37,7 @@ function is(value, type) {
|
|
|
37
37
|
`Class "${type.name ?? "<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`
|
|
38
38
|
);
|
|
39
39
|
}
|
|
40
|
-
let cls = value.constructor;
|
|
40
|
+
let cls = Object.getPrototypeOf(value).constructor;
|
|
41
41
|
if (cls) {
|
|
42
42
|
while (cls) {
|
|
43
43
|
if (entityKind in cls && cls[entityKind] === type[entityKind]) {
|
package/entity.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/entity.ts"],"sourcesContent":["export const entityKind = Symbol.for('drizzle:entityKind');\nexport const hasOwnEntityKind = Symbol.for('drizzle:hasOwnEntityKind');\n\nexport interface DrizzleEntity {\n\t[entityKind]: string;\n}\n\nexport type DrizzleEntityClass<T> =\n\t& ((abstract new(...args: any[]) => T) | (new(...args: any[]) => T))\n\t& DrizzleEntity;\n\nexport function is<T extends DrizzleEntityClass<any>>(value: any, type: T): value is InstanceType<T> {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (value instanceof type) { // eslint-disable-line no-instanceof/no-instanceof\n\t\treturn true;\n\t}\n\n\tif (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n\t\tthrow new Error(\n\t\t\t`Class \"${\n\t\t\t\ttype.name ?? '<unknown>'\n\t\t\t}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`,\n\t\t);\n\t}\n\n\tlet cls = value.constructor;\n\tif (cls) {\n\t\t// Traverse the prototype chain to find the entityKind\n\t\twhile (cls) {\n\t\t\tif (entityKind in cls && cls[entityKind] === type[entityKind]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcls = Object.getPrototypeOf(cls);\n\t\t}\n\t}\n\n\treturn false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,aAAa,OAAO,IAAI,oBAAoB;AAClD,MAAM,mBAAmB,OAAO,IAAI,0BAA0B;AAU9D,SAAS,GAAsC,OAAY,MAAmC;AACpG,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACxC,WAAO;AAAA,EACR;AAEA,MAAI,iBAAiB,MAAM;AAC1B,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,UAAU,GAAG;AAC5D,UAAM,IAAI;AAAA,MACT,UACC,KAAK,QAAQ,WACd;AAAA,IACD;AAAA,EACD;AAEA,MAAI,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/entity.ts"],"sourcesContent":["export const entityKind = Symbol.for('drizzle:entityKind');\nexport const hasOwnEntityKind = Symbol.for('drizzle:hasOwnEntityKind');\n\nexport interface DrizzleEntity {\n\t[entityKind]: string;\n}\n\nexport type DrizzleEntityClass<T> =\n\t& ((abstract new(...args: any[]) => T) | (new(...args: any[]) => T))\n\t& DrizzleEntity;\n\nexport function is<T extends DrizzleEntityClass<any>>(value: any, type: T): value is InstanceType<T> {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (value instanceof type) { // eslint-disable-line no-instanceof/no-instanceof\n\t\treturn true;\n\t}\n\n\tif (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n\t\tthrow new Error(\n\t\t\t`Class \"${\n\t\t\t\ttype.name ?? '<unknown>'\n\t\t\t}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`,\n\t\t);\n\t}\n\n\tlet cls = Object.getPrototypeOf(value).constructor;\n\tif (cls) {\n\t\t// Traverse the prototype chain to find the entityKind\n\t\twhile (cls) {\n\t\t\tif (entityKind in cls && cls[entityKind] === type[entityKind]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcls = Object.getPrototypeOf(cls);\n\t\t}\n\t}\n\n\treturn false;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,aAAa,OAAO,IAAI,oBAAoB;AAClD,MAAM,mBAAmB,OAAO,IAAI,0BAA0B;AAU9D,SAAS,GAAsC,OAAY,MAAmC;AACpG,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACxC,WAAO;AAAA,EACR;AAEA,MAAI,iBAAiB,MAAM;AAC1B,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,UAAU,GAAG;AAC5D,UAAM,IAAI;AAAA,MACT,UACC,KAAK,QAAQ,WACd;AAAA,IACD;AAAA,EACD;AAEA,MAAI,MAAM,OAAO,eAAe,KAAK,EAAE;AACvC,MAAI,KAAK;AAER,WAAO,KAAK;AACX,UAAI,cAAc,OAAO,IAAI,UAAU,MAAM,KAAK,UAAU,GAAG;AAC9D,eAAO;AAAA,MACR;AAEA,YAAM,OAAO,eAAe,GAAG;AAAA,IAChC;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
|
package/entity.js
CHANGED
|
@@ -12,7 +12,7 @@ function is(value, type) {
|
|
|
12
12
|
`Class "${type.name ?? "<unknown>"}" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`
|
|
13
13
|
);
|
|
14
14
|
}
|
|
15
|
-
let cls = value.constructor;
|
|
15
|
+
let cls = Object.getPrototypeOf(value).constructor;
|
|
16
16
|
if (cls) {
|
|
17
17
|
while (cls) {
|
|
18
18
|
if (entityKind in cls && cls[entityKind] === type[entityKind]) {
|
package/entity.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/entity.ts"],"sourcesContent":["export const entityKind = Symbol.for('drizzle:entityKind');\nexport const hasOwnEntityKind = Symbol.for('drizzle:hasOwnEntityKind');\n\nexport interface DrizzleEntity {\n\t[entityKind]: string;\n}\n\nexport type DrizzleEntityClass<T> =\n\t& ((abstract new(...args: any[]) => T) | (new(...args: any[]) => T))\n\t& DrizzleEntity;\n\nexport function is<T extends DrizzleEntityClass<any>>(value: any, type: T): value is InstanceType<T> {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (value instanceof type) { // eslint-disable-line no-instanceof/no-instanceof\n\t\treturn true;\n\t}\n\n\tif (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n\t\tthrow new Error(\n\t\t\t`Class \"${\n\t\t\t\ttype.name ?? '<unknown>'\n\t\t\t}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`,\n\t\t);\n\t}\n\n\tlet cls = value.constructor;\n\tif (cls) {\n\t\t// Traverse the prototype chain to find the entityKind\n\t\twhile (cls) {\n\t\t\tif (entityKind in cls && cls[entityKind] === type[entityKind]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcls = Object.getPrototypeOf(cls);\n\t\t}\n\t}\n\n\treturn false;\n}\n"],"mappings":"AAAO,MAAM,aAAa,OAAO,IAAI,oBAAoB;AAClD,MAAM,mBAAmB,OAAO,IAAI,0BAA0B;AAU9D,SAAS,GAAsC,OAAY,MAAmC;AACpG,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACxC,WAAO;AAAA,EACR;AAEA,MAAI,iBAAiB,MAAM;AAC1B,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,UAAU,GAAG;AAC5D,UAAM,IAAI;AAAA,MACT,UACC,KAAK,QAAQ,WACd;AAAA,IACD;AAAA,EACD;AAEA,MAAI,MAAM,
|
|
1
|
+
{"version":3,"sources":["../src/entity.ts"],"sourcesContent":["export const entityKind = Symbol.for('drizzle:entityKind');\nexport const hasOwnEntityKind = Symbol.for('drizzle:hasOwnEntityKind');\n\nexport interface DrizzleEntity {\n\t[entityKind]: string;\n}\n\nexport type DrizzleEntityClass<T> =\n\t& ((abstract new(...args: any[]) => T) | (new(...args: any[]) => T))\n\t& DrizzleEntity;\n\nexport function is<T extends DrizzleEntityClass<any>>(value: any, type: T): value is InstanceType<T> {\n\tif (!value || typeof value !== 'object') {\n\t\treturn false;\n\t}\n\n\tif (value instanceof type) { // eslint-disable-line no-instanceof/no-instanceof\n\t\treturn true;\n\t}\n\n\tif (!Object.prototype.hasOwnProperty.call(type, entityKind)) {\n\t\tthrow new Error(\n\t\t\t`Class \"${\n\t\t\t\ttype.name ?? '<unknown>'\n\t\t\t}\" doesn't look like a Drizzle entity. If this is incorrect and the class is provided by Drizzle, please report this as a bug.`,\n\t\t);\n\t}\n\n\tlet cls = Object.getPrototypeOf(value).constructor;\n\tif (cls) {\n\t\t// Traverse the prototype chain to find the entityKind\n\t\twhile (cls) {\n\t\t\tif (entityKind in cls && cls[entityKind] === type[entityKind]) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tcls = Object.getPrototypeOf(cls);\n\t\t}\n\t}\n\n\treturn false;\n}\n"],"mappings":"AAAO,MAAM,aAAa,OAAO,IAAI,oBAAoB;AAClD,MAAM,mBAAmB,OAAO,IAAI,0BAA0B;AAU9D,SAAS,GAAsC,OAAY,MAAmC;AACpG,MAAI,CAAC,SAAS,OAAO,UAAU,UAAU;AACxC,WAAO;AAAA,EACR;AAEA,MAAI,iBAAiB,MAAM;AAC1B,WAAO;AAAA,EACR;AAEA,MAAI,CAAC,OAAO,UAAU,eAAe,KAAK,MAAM,UAAU,GAAG;AAC5D,UAAM,IAAI;AAAA,MACT,UACC,KAAK,QAAQ,WACd;AAAA,IACD;AAAA,EACD;AAEA,MAAI,MAAM,OAAO,eAAe,KAAK,EAAE;AACvC,MAAI,KAAK;AAER,WAAO,KAAK;AACX,UAAI,cAAc,OAAO,IAAI,UAAU,MAAM,KAAK,UAAU,GAAG;AAC9D,eAAO;AAAA,MACR;AAEA,YAAM,OAAO,eAAe,GAAG;AAAA,IAChC;AAAA,EACD;AAEA,SAAO;AACR;","names":[]}
|
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
|
|
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,
|
package/libsql/driver.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import type
|
|
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"]}
|
package/libsql/driver.d.cts
CHANGED
|
@@ -1,12 +1,30 @@
|
|
|
1
|
-
import type
|
|
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
|
|
11
|
-
|
|
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.d.ts
CHANGED
|
@@ -1,12 +1,30 @@
|
|
|
1
|
-
import type
|
|
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
|
|
11
|
-
|
|
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
|
|
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
|
package/libsql/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/libsql/driver.ts"],"sourcesContent":["import type
|
|
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"]}
|
package/mysql-core/dialect.cjs
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
249
|
-
|
|
250
|
-
|
|
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) {
|