drizzle-orm 0.34.1-a5ec472 → 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 +33 -1
- package/neon-serverless/driver.cjs.map +1 -1
- package/neon-serverless/driver.d.cts +23 -2
- package/neon-serverless/driver.d.ts +23 -2
- package/neon-serverless/driver.js +33 -1
- package/neon-serverless/driver.js.map +1 -1
- package/node-postgres/driver.cjs +37 -1
- package/node-postgres/driver.cjs.map +1 -1
- package/node-postgres/driver.d.cts +21 -2
- package/node-postgres/driver.d.ts +21 -2
- package/node-postgres/driver.js +27 -1
- package/node-postgres/driver.js.map +1 -1
- package/package.json +3 -87
- package/pg-core/index.cjs +0 -4
- package/pg-core/index.cjs.map +1 -1
- package/pg-core/index.d.cts +0 -2
- package/pg-core/index.d.ts +0 -2
- package/pg-core/index.js +0 -2
- package/pg-core/index.js.map +1 -1
- package/pg-core/table.cjs.map +1 -1
- package/pg-core/table.d.cts +3 -23
- package/pg-core/table.d.ts +3 -23
- package/pg-core/table.js.map +1 -1
- package/pg-core/utils.cjs +2 -8
- package/pg-core/utils.cjs.map +1 -1
- package/pg-core/utils.d.cts +0 -2
- package/pg-core/utils.d.ts +0 -2
- package/pg-core/utils.js +2 -8
- package/pg-core/utils.js.map +1 -1
- 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/table.cjs.map +1 -1
- package/table.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 +18 -1
- package/vercel-postgres/driver.cjs.map +1 -1
- package/vercel-postgres/driver.d.cts +23 -3
- package/vercel-postgres/driver.d.ts +23 -3
- package/vercel-postgres/driver.js +18 -1
- package/vercel-postgres/driver.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/neon/index.cjs +0 -23
- package/neon/index.cjs.map +0 -1
- package/neon/index.d.cts +0 -1
- package/neon/index.d.ts +0 -1
- package/neon/index.js +0 -2
- package/neon/index.js.map +0 -1
- package/neon/rls.cjs +0 -77
- package/neon/rls.cjs.map +0 -1
- package/neon/rls.d.cts +0 -11
- package/neon/rls.d.ts +0 -11
- package/neon/rls.js +0 -50
- package/neon/rls.js.map +0 -1
- package/pg-core/policies.cjs +0 -52
- package/pg-core/policies.cjs.map +0 -1
- package/pg-core/policies.d.cts +0 -22
- package/pg-core/policies.d.ts +0 -22
- package/pg-core/policies.js +0 -27
- package/pg-core/policies.js.map +0 -1
- package/pg-core/roles.cjs +0 -57
- package/pg-core/roles.cjs.map +0 -1
- package/pg-core/roles.d.cts +0 -13
- package/pg-core/roles.d.ts +0 -13
- package/pg-core/roles.js +0 -32
- package/pg-core/roles.js.map +0 -1
package/neon-http/driver.d.cts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { NeonQueryFunction } from '@neondatabase/serverless';
|
|
1
|
+
import type { HTTPTransactionOptions, NeonQueryFunction } from '@neondatabase/serverless';
|
|
2
2
|
import type { BatchItem, BatchResponse } from "../batch.cjs";
|
|
3
3
|
import { entityKind } from "../entity.cjs";
|
|
4
4
|
import type { Logger } from "../logger.cjs";
|
|
5
5
|
import { PgDatabase } from "../pg-core/db.cjs";
|
|
6
6
|
import { PgDialect } from "../pg-core/dialect.cjs";
|
|
7
7
|
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.cjs";
|
|
8
|
-
import type { DrizzleConfig } from "../utils.cjs";
|
|
8
|
+
import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.cjs";
|
|
9
9
|
import { type NeonHttpClient, type NeonHttpQueryResultHKT, NeonHttpSession } from "./session.cjs";
|
|
10
10
|
export interface NeonDriverOptions {
|
|
11
11
|
logger?: Logger;
|
|
@@ -23,6 +23,24 @@ export declare class NeonHttpDatabase<TSchema extends Record<string, unknown> =
|
|
|
23
23
|
static readonly [entityKind]: string;
|
|
24
24
|
batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(batch: T): Promise<BatchResponse<T>>;
|
|
25
25
|
}
|
|
26
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NeonQueryFunction<any, any> = NeonQueryFunction<
|
|
26
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NeonQueryFunction<any, any> = NeonQueryFunction<false, false>>(...params: IfNotImported<HTTPTransactionOptions<boolean, boolean>, [
|
|
27
|
+
ImportTypeError<'@neondatabase/serverless'>
|
|
28
|
+
], [
|
|
29
|
+
TClient | string
|
|
30
|
+
] | [
|
|
31
|
+
TClient | string,
|
|
32
|
+
DrizzleConfig<TSchema>
|
|
33
|
+
] | [
|
|
34
|
+
(DrizzleConfig<TSchema> & ({
|
|
35
|
+
connection: string | HTTPTransactionOptions<boolean, boolean>;
|
|
36
|
+
} | {
|
|
37
|
+
client: TClient;
|
|
38
|
+
}))
|
|
39
|
+
]>): NeonHttpDatabase<TSchema> & {
|
|
27
40
|
$client: TClient;
|
|
28
41
|
};
|
|
42
|
+
export declare namespace drizzle {
|
|
43
|
+
function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NeonHttpDatabase<TSchema> & {
|
|
44
|
+
$client: '$client is not available on drizzle.mock()';
|
|
45
|
+
};
|
|
46
|
+
}
|
package/neon-http/driver.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type { NeonQueryFunction } from '@neondatabase/serverless';
|
|
1
|
+
import type { HTTPTransactionOptions, NeonQueryFunction } from '@neondatabase/serverless';
|
|
2
2
|
import type { BatchItem, BatchResponse } from "../batch.js";
|
|
3
3
|
import { entityKind } from "../entity.js";
|
|
4
4
|
import type { Logger } from "../logger.js";
|
|
5
5
|
import { PgDatabase } from "../pg-core/db.js";
|
|
6
6
|
import { PgDialect } from "../pg-core/dialect.js";
|
|
7
7
|
import type { RelationalSchemaConfig, TablesRelationalConfig } from "../relations.js";
|
|
8
|
-
import type { DrizzleConfig } from "../utils.js";
|
|
8
|
+
import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.js";
|
|
9
9
|
import { type NeonHttpClient, type NeonHttpQueryResultHKT, NeonHttpSession } from "./session.js";
|
|
10
10
|
export interface NeonDriverOptions {
|
|
11
11
|
logger?: Logger;
|
|
@@ -23,6 +23,24 @@ export declare class NeonHttpDatabase<TSchema extends Record<string, unknown> =
|
|
|
23
23
|
static readonly [entityKind]: string;
|
|
24
24
|
batch<U extends BatchItem<'pg'>, T extends Readonly<[U, ...U[]]>>(batch: T): Promise<BatchResponse<T>>;
|
|
25
25
|
}
|
|
26
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NeonQueryFunction<any, any> = NeonQueryFunction<
|
|
26
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NeonQueryFunction<any, any> = NeonQueryFunction<false, false>>(...params: IfNotImported<HTTPTransactionOptions<boolean, boolean>, [
|
|
27
|
+
ImportTypeError<'@neondatabase/serverless'>
|
|
28
|
+
], [
|
|
29
|
+
TClient | string
|
|
30
|
+
] | [
|
|
31
|
+
TClient | string,
|
|
32
|
+
DrizzleConfig<TSchema>
|
|
33
|
+
] | [
|
|
34
|
+
(DrizzleConfig<TSchema> & ({
|
|
35
|
+
connection: string | HTTPTransactionOptions<boolean, boolean>;
|
|
36
|
+
} | {
|
|
37
|
+
client: TClient;
|
|
38
|
+
}))
|
|
39
|
+
]>): NeonHttpDatabase<TSchema> & {
|
|
27
40
|
$client: TClient;
|
|
28
41
|
};
|
|
42
|
+
export declare namespace drizzle {
|
|
43
|
+
function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NeonHttpDatabase<TSchema> & {
|
|
44
|
+
$client: '$client is not available on drizzle.mock()';
|
|
45
|
+
};
|
|
46
|
+
}
|
package/neon-http/driver.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { types } from "@neondatabase/serverless";
|
|
1
|
+
import { neon, types } from "@neondatabase/serverless";
|
|
2
2
|
import { entityKind } from "../entity.js";
|
|
3
3
|
import { DefaultLogger } from "../logger.js";
|
|
4
4
|
import { PgDatabase } from "../pg-core/db.js";
|
|
@@ -29,7 +29,7 @@ class NeonHttpDatabase extends PgDatabase {
|
|
|
29
29
|
return this.session.batch(batch);
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
|
-
function
|
|
32
|
+
function construct(client, config = {}) {
|
|
33
33
|
const dialect = new PgDialect({ casing: config.casing });
|
|
34
34
|
let logger;
|
|
35
35
|
if (config.logger === true) {
|
|
@@ -59,6 +59,31 @@ function drizzle(client, config = {}) {
|
|
|
59
59
|
db.$client = client;
|
|
60
60
|
return db;
|
|
61
61
|
}
|
|
62
|
+
function drizzle(...params) {
|
|
63
|
+
if (typeof params[0] === "function") {
|
|
64
|
+
return construct(params[0], params[1]);
|
|
65
|
+
}
|
|
66
|
+
if (typeof params[0] === "object") {
|
|
67
|
+
const { connection, client, ...drizzleConfig } = params[0];
|
|
68
|
+
if (client)
|
|
69
|
+
return construct(client, drizzleConfig);
|
|
70
|
+
if (typeof connection === "object") {
|
|
71
|
+
const { connectionString, ...options } = connection;
|
|
72
|
+
const instance3 = neon(connectionString, options);
|
|
73
|
+
return construct(instance3, drizzleConfig);
|
|
74
|
+
}
|
|
75
|
+
const instance2 = neon(connection);
|
|
76
|
+
return construct(instance2, drizzleConfig);
|
|
77
|
+
}
|
|
78
|
+
const instance = neon(params[0]);
|
|
79
|
+
return construct(instance, params[1]);
|
|
80
|
+
}
|
|
81
|
+
((drizzle2) => {
|
|
82
|
+
function mock(config) {
|
|
83
|
+
return construct({}, config);
|
|
84
|
+
}
|
|
85
|
+
drizzle2.mock = mock;
|
|
86
|
+
})(drizzle || (drizzle = {}));
|
|
62
87
|
export {
|
|
63
88
|
NeonHttpDatabase,
|
|
64
89
|
NeonHttpDriver,
|
package/neon-http/driver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/neon-http/driver.ts"],"sourcesContent":["import type { NeonQueryFunction } from '@neondatabase/serverless';\nimport { types } from '@neondatabase/serverless';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport { createTableRelationsHelpers, extractTablesRelationalConfig } from '~/relations.ts';\nimport type { ExtractTablesWithRelations, RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport { type NeonHttpClient, type NeonHttpQueryResultHKT, NeonHttpSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonHttpDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t) {\n\t\tthis.initMappers();\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonHttpSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonHttpSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n\n\tinitMappers() {\n\t\ttypes.setTypeParser(types.builtins.TIMESTAMPTZ, (val) => val);\n\t\ttypes.setTypeParser(types.builtins.TIMESTAMP, (val) => val);\n\t\ttypes.setTypeParser(types.builtins.DATE, (val) => val);\n\t\ttypes.setTypeParser(types.builtins.INTERVAL, (val) => val);\n\t}\n}\n\nexport class NeonHttpDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonHttpQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: NeonHttpSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'pg'>, 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\
|
|
1
|
+
{"version":3,"sources":["../../src/neon-http/driver.ts"],"sourcesContent":["import type { HTTPTransactionOptions, NeonQueryFunction } from '@neondatabase/serverless';\nimport { neon, types } from '@neondatabase/serverless';\nimport type { BatchItem, BatchResponse } from '~/batch.ts';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport { createTableRelationsHelpers, extractTablesRelationalConfig } from '~/relations.ts';\nimport type { ExtractTablesWithRelations, RelationalSchemaConfig, TablesRelationalConfig } from '~/relations.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport { type NeonHttpClient, type NeonHttpQueryResultHKT, NeonHttpSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonHttpDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonHttpClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t) {\n\t\tthis.initMappers();\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonHttpSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonHttpSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n\n\tinitMappers() {\n\t\ttypes.setTypeParser(types.builtins.TIMESTAMPTZ, (val) => val);\n\t\ttypes.setTypeParser(types.builtins.TIMESTAMP, (val) => val);\n\t\ttypes.setTypeParser(types.builtins.DATE, (val) => val);\n\t\ttypes.setTypeParser(types.builtins.INTERVAL, (val) => val);\n\t}\n}\n\nexport class NeonHttpDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonHttpQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonHttpDatabase';\n\n\t/** @internal */\n\tdeclare readonly session: NeonHttpSession<TSchema, ExtractTablesWithRelations<TSchema>>;\n\n\tasync batch<U extends BatchItem<'pg'>, 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\tTClient extends NeonQueryFunction<any, any> = NeonQueryFunction<any, any>,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): NeonHttpDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new NeonHttpDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\n\tconst db = new NeonHttpDatabase(\n\t\tdialect,\n\t\tsession,\n\t\tschema as RelationalSchemaConfig<ExtractTablesWithRelations<TSchema>> | undefined,\n\t);\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 NeonQueryFunction<any, any> = NeonQueryFunction<false, false>,\n>(\n\t...params: IfNotImported<\n\t\tHTTPTransactionOptions<boolean, boolean>,\n\t\t[ImportTypeError<'@neondatabase/serverless'>],\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 | HTTPTransactionOptions<boolean, boolean>;\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): NeonHttpDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (typeof params[0] === 'function') {\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?:\n\t\t\t\t\t| ({\n\t\t\t\t\t\tconnectionString: string;\n\t\t\t\t\t} & HTTPTransactionOptions<boolean, boolean>)\n\t\t\t\t\t| 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);\n\n\t\tif (typeof connection === 'object') {\n\t\t\tconst { connectionString, ...options } = connection;\n\n\t\t\tconst instance = neon(connectionString, options);\n\n\t\t\treturn construct(instance, drizzleConfig) as any;\n\t\t}\n\n\t\tconst instance = neon(connection!);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\tconst instance = neon(params[0] as string);\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): NeonHttpDatabase<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":"AACA,SAAS,MAAM,aAAa;AAE5B,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B,SAAS,6BAA6B,qCAAqC;AAG3E,SAA2D,uBAAuB;AAM3E,MAAM,eAAe;AAAA,EAG3B,YACS,QACA,SACA,UAA6B,CAAC,GACrC;AAHO;AACA;AACA;AAER,SAAK,YAAY;AAAA,EAClB;AAAA,EARA,QAAiB,UAAU,IAAY;AAAA,EAUvC,cACC,QACmE;AACnE,WAAO,IAAI,gBAAgB,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC9F;AAAA,EAEA,cAAc;AACb,UAAM,cAAc,MAAM,SAAS,aAAa,CAAC,QAAQ,GAAG;AAC5D,UAAM,cAAc,MAAM,SAAS,WAAW,CAAC,QAAQ,GAAG;AAC1D,UAAM,cAAc,MAAM,SAAS,MAAM,CAAC,QAAQ,GAAG;AACrD,UAAM,cAAc,MAAM,SAAS,UAAU,CAAC,QAAQ,GAAG;AAAA,EAC1D;AACD;AAEO,MAAM,yBAEH,WAA4C;AAAA,EACrD,QAA0B,UAAU,IAAY;AAAA,EAKhD,MAAM,MACL,OAC4B;AAC5B,WAAO,KAAK,QAAQ,MAAM,KAAK;AAAA,EAChC;AACD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,eAAe,QAAQ,SAAS,EAAE,OAAO,CAAC;AAC7D,QAAM,UAAU,OAAO,cAAc,MAAM;AAE3C,QAAM,KAAK,IAAI;AAAA,IACd;AAAA,IACA;AAAA,IACA;AAAA,EACD;AACA,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAqBF;AAED,MAAI,OAAO,OAAO,CAAC,MAAM,YAAY;AACpC,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;AAWzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,QAAI,OAAO,eAAe,UAAU;AACnC,YAAM,EAAE,kBAAkB,GAAG,QAAQ,IAAI;AAEzC,YAAMA,YAAW,KAAK,kBAAkB,OAAO;AAE/C,aAAO,UAAUA,WAAU,aAAa;AAAA,IACzC;AAEA,UAAMA,YAAW,KAAK,UAAW;AAEjC,WAAO,UAAUA,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,KAAK,OAAO,CAAC,CAAW;AACzC,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"]}
|
|
@@ -23,6 +23,7 @@ __export(driver_exports, {
|
|
|
23
23
|
drizzle: () => drizzle
|
|
24
24
|
});
|
|
25
25
|
module.exports = __toCommonJS(driver_exports);
|
|
26
|
+
var import_serverless = require("@neondatabase/serverless");
|
|
26
27
|
var import_entity = require("../entity.cjs");
|
|
27
28
|
var import_logger = require("../logger.cjs");
|
|
28
29
|
var import_db = require("../pg-core/db.cjs");
|
|
@@ -43,7 +44,7 @@ class NeonDriver {
|
|
|
43
44
|
class NeonDatabase extends import_db.PgDatabase {
|
|
44
45
|
static [import_entity.entityKind] = "NeonServerlessDatabase";
|
|
45
46
|
}
|
|
46
|
-
function
|
|
47
|
+
function construct(client, config = {}) {
|
|
47
48
|
const dialect = new import_dialect.PgDialect({ casing: config.casing });
|
|
48
49
|
let logger;
|
|
49
50
|
if (config.logger === true) {
|
|
@@ -69,6 +70,37 @@ function drizzle(client, config = {}) {
|
|
|
69
70
|
db.$client = client;
|
|
70
71
|
return db;
|
|
71
72
|
}
|
|
73
|
+
function drizzle(...params) {
|
|
74
|
+
if (params[0] instanceof import_serverless.Pool) {
|
|
75
|
+
return construct(params[0], params[1]);
|
|
76
|
+
}
|
|
77
|
+
if (typeof params[0] === "string") {
|
|
78
|
+
const instance2 = new import_serverless.Pool({
|
|
79
|
+
connectionString: params[0]
|
|
80
|
+
});
|
|
81
|
+
construct(instance2);
|
|
82
|
+
}
|
|
83
|
+
if (typeof params[0] === "object") {
|
|
84
|
+
const { connection, client, ws, ...drizzleConfig } = params[0];
|
|
85
|
+
if (ws) {
|
|
86
|
+
import_serverless.neonConfig.webSocketConstructor = ws;
|
|
87
|
+
}
|
|
88
|
+
if (client)
|
|
89
|
+
return construct(client, drizzleConfig);
|
|
90
|
+
const instance2 = typeof connection === "string" ? new import_serverless.Pool({
|
|
91
|
+
connectionString: connection
|
|
92
|
+
}) : new import_serverless.Pool(connection);
|
|
93
|
+
return construct(instance2, drizzleConfig);
|
|
94
|
+
}
|
|
95
|
+
const instance = new import_serverless.Pool();
|
|
96
|
+
return construct(instance, params[1]);
|
|
97
|
+
}
|
|
98
|
+
((drizzle2) => {
|
|
99
|
+
function mock(config) {
|
|
100
|
+
return construct({}, config);
|
|
101
|
+
}
|
|
102
|
+
drizzle2.mock = mock;
|
|
103
|
+
})(drizzle || (drizzle = {}));
|
|
72
104
|
// Annotate the CommonJS export names for ESM import in node:
|
|
73
105
|
0 && (module.exports = {
|
|
74
106
|
NeonDatabase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/neon-serverless/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { NeonClient, NeonQueryResultHKT } from './session.ts';\nimport { NeonSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class NeonDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonServerlessDatabase';\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../src/neon-serverless/driver.ts"],"sourcesContent":["import { neonConfig, Pool, type PoolConfig } from '@neondatabase/serverless';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport type { NeonClient, NeonQueryResultHKT } from './session.ts';\nimport { NeonSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class NeonDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonServerlessDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = NeonClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new NeonDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new NeonDatabase(dialect, session, schema as any) as NeonDatabase<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 NeonClient = Pool,\n>(\n\t...params: IfNotImported<\n\t\tPool,\n\t\t[ImportTypeError<'@neondatabase/serverless'>],\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 | PoolConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t\t& {\n\t\t\t\t\tws?: any;\n\t\t\t\t}\n\t\t\t),\n\t\t]\n\t>\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof Pool) {\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 = new Pool({\n\t\t\tconnectionString: params[0],\n\t\t});\n\n\t\tconstruct(instance);\n\t}\n\n\tif (typeof params[0] === 'object') {\n\t\tconst { connection, client, ws, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: PoolConfig | string;\n\t\t\tws?: any;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema>;\n\n\t\tif (ws) {\n\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t}\n\n\t\tif (client) return construct(client, drizzleConfig);\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Pool({\n\t\t\t\tconnectionString: connection,\n\t\t\t})\n\t\t\t: new Pool(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\tconst instance = new Pool();\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): NeonDatabase<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;AAAA,wBAAkD;AAClD,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AAGP,qBAA4B;AAMrB,MAAM,WAAW;AAAA,EAGvB,YACS,QACA,SACA,UAA6B,CAAC,GACrC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,wBAAU,IAAY;AAAA,EASvC,cACC,QAC+D;AAC/D,WAAO,IAAI,2BAAY,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC1F;AACD;AAEO,MAAM,qBAEH,qBAAwC;AAAA,EACjD,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,yBAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,WAAW,QAAQ,SAAS,EAAE,OAAO,CAAC;AACzD,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,aAAa,SAAS,SAAS,MAAa;AAC3D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAwBF;AAED,MAAI,OAAO,CAAC,aAAa,wBAAM;AAC9B,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAMA,YAAW,IAAI,uBAAK;AAAA,MACzB,kBAAkB,OAAO,CAAC;AAAA,IAC3B,CAAC;AAED,cAAUA,SAAQ;AAAA,EACnB;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,EAAE,YAAY,QAAQ,IAAI,GAAG,cAAc,IAAI,OAAO,CAAC;AAM7D,QAAI,IAAI;AACP,mCAAW,uBAAuB;AAAA,IACnC;AAEA,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAMA,YAAW,OAAO,eAAe,WACpC,IAAI,uBAAK;AAAA,MACV,kBAAkB;AAAA,IACnB,CAAC,IACC,IAAI,uBAAK,UAAU;AAEtB,WAAO,UAAUA,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,IAAI,uBAAK;AAE1B,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"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { Pool, type PoolConfig } from '@neondatabase/serverless';
|
|
1
2
|
import { entityKind } from "../entity.cjs";
|
|
2
3
|
import type { Logger } from "../logger.cjs";
|
|
3
4
|
import { PgDatabase } from "../pg-core/db.cjs";
|
|
4
5
|
import { PgDialect } from "../pg-core/dialect.cjs";
|
|
5
6
|
import { type RelationalSchemaConfig, type TablesRelationalConfig } from "../relations.cjs";
|
|
6
|
-
import type { DrizzleConfig } from "../utils.cjs";
|
|
7
|
+
import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.cjs";
|
|
7
8
|
import type { NeonClient, NeonQueryResultHKT } from "./session.cjs";
|
|
8
9
|
import { NeonSession } from "./session.cjs";
|
|
9
10
|
export interface NeonDriverOptions {
|
|
@@ -20,6 +21,26 @@ export declare class NeonDriver {
|
|
|
20
21
|
export declare class NeonDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<NeonQueryResultHKT, TSchema> {
|
|
21
22
|
static readonly [entityKind]: string;
|
|
22
23
|
}
|
|
23
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NeonClient =
|
|
24
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NeonClient = Pool>(...params: IfNotImported<Pool, [
|
|
25
|
+
ImportTypeError<'@neondatabase/serverless'>
|
|
26
|
+
], [
|
|
27
|
+
TClient | string
|
|
28
|
+
] | [
|
|
29
|
+
TClient | string,
|
|
30
|
+
DrizzleConfig<TSchema>
|
|
31
|
+
] | [
|
|
32
|
+
(DrizzleConfig<TSchema> & ({
|
|
33
|
+
connection: string | PoolConfig;
|
|
34
|
+
} | {
|
|
35
|
+
client: TClient;
|
|
36
|
+
}) & {
|
|
37
|
+
ws?: any;
|
|
38
|
+
})
|
|
39
|
+
]>): NeonDatabase<TSchema> & {
|
|
24
40
|
$client: TClient;
|
|
25
41
|
};
|
|
42
|
+
export declare namespace drizzle {
|
|
43
|
+
function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NeonDatabase<TSchema> & {
|
|
44
|
+
$client: '$client is not available on drizzle.mock()';
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { Pool, type PoolConfig } from '@neondatabase/serverless';
|
|
1
2
|
import { entityKind } from "../entity.js";
|
|
2
3
|
import type { Logger } from "../logger.js";
|
|
3
4
|
import { PgDatabase } from "../pg-core/db.js";
|
|
4
5
|
import { PgDialect } from "../pg-core/dialect.js";
|
|
5
6
|
import { type RelationalSchemaConfig, type TablesRelationalConfig } from "../relations.js";
|
|
6
|
-
import type { DrizzleConfig } from "../utils.js";
|
|
7
|
+
import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.js";
|
|
7
8
|
import type { NeonClient, NeonQueryResultHKT } from "./session.js";
|
|
8
9
|
import { NeonSession } from "./session.js";
|
|
9
10
|
export interface NeonDriverOptions {
|
|
@@ -20,6 +21,26 @@ export declare class NeonDriver {
|
|
|
20
21
|
export declare class NeonDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<NeonQueryResultHKT, TSchema> {
|
|
21
22
|
static readonly [entityKind]: string;
|
|
22
23
|
}
|
|
23
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NeonClient =
|
|
24
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NeonClient = Pool>(...params: IfNotImported<Pool, [
|
|
25
|
+
ImportTypeError<'@neondatabase/serverless'>
|
|
26
|
+
], [
|
|
27
|
+
TClient | string
|
|
28
|
+
] | [
|
|
29
|
+
TClient | string,
|
|
30
|
+
DrizzleConfig<TSchema>
|
|
31
|
+
] | [
|
|
32
|
+
(DrizzleConfig<TSchema> & ({
|
|
33
|
+
connection: string | PoolConfig;
|
|
34
|
+
} | {
|
|
35
|
+
client: TClient;
|
|
36
|
+
}) & {
|
|
37
|
+
ws?: any;
|
|
38
|
+
})
|
|
39
|
+
]>): NeonDatabase<TSchema> & {
|
|
24
40
|
$client: TClient;
|
|
25
41
|
};
|
|
42
|
+
export declare namespace drizzle {
|
|
43
|
+
function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NeonDatabase<TSchema> & {
|
|
44
|
+
$client: '$client is not available on drizzle.mock()';
|
|
45
|
+
};
|
|
46
|
+
}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { neonConfig, Pool } from "@neondatabase/serverless";
|
|
1
2
|
import { entityKind } from "../entity.js";
|
|
2
3
|
import { DefaultLogger } from "../logger.js";
|
|
3
4
|
import { PgDatabase } from "../pg-core/db.js";
|
|
@@ -21,7 +22,7 @@ class NeonDriver {
|
|
|
21
22
|
class NeonDatabase extends PgDatabase {
|
|
22
23
|
static [entityKind] = "NeonServerlessDatabase";
|
|
23
24
|
}
|
|
24
|
-
function
|
|
25
|
+
function construct(client, config = {}) {
|
|
25
26
|
const dialect = new PgDialect({ casing: config.casing });
|
|
26
27
|
let logger;
|
|
27
28
|
if (config.logger === true) {
|
|
@@ -47,6 +48,37 @@ function drizzle(client, config = {}) {
|
|
|
47
48
|
db.$client = client;
|
|
48
49
|
return db;
|
|
49
50
|
}
|
|
51
|
+
function drizzle(...params) {
|
|
52
|
+
if (params[0] instanceof Pool) {
|
|
53
|
+
return construct(params[0], params[1]);
|
|
54
|
+
}
|
|
55
|
+
if (typeof params[0] === "string") {
|
|
56
|
+
const instance2 = new Pool({
|
|
57
|
+
connectionString: params[0]
|
|
58
|
+
});
|
|
59
|
+
construct(instance2);
|
|
60
|
+
}
|
|
61
|
+
if (typeof params[0] === "object") {
|
|
62
|
+
const { connection, client, ws, ...drizzleConfig } = params[0];
|
|
63
|
+
if (ws) {
|
|
64
|
+
neonConfig.webSocketConstructor = ws;
|
|
65
|
+
}
|
|
66
|
+
if (client)
|
|
67
|
+
return construct(client, drizzleConfig);
|
|
68
|
+
const instance2 = typeof connection === "string" ? new Pool({
|
|
69
|
+
connectionString: connection
|
|
70
|
+
}) : new Pool(connection);
|
|
71
|
+
return construct(instance2, drizzleConfig);
|
|
72
|
+
}
|
|
73
|
+
const instance = new Pool();
|
|
74
|
+
return construct(instance, params[1]);
|
|
75
|
+
}
|
|
76
|
+
((drizzle2) => {
|
|
77
|
+
function mock(config) {
|
|
78
|
+
return construct({}, config);
|
|
79
|
+
}
|
|
80
|
+
drizzle2.mock = mock;
|
|
81
|
+
})(drizzle || (drizzle = {}));
|
|
50
82
|
export {
|
|
51
83
|
NeonDatabase,
|
|
52
84
|
NeonDriver,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/neon-serverless/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { NeonClient, NeonQueryResultHKT } from './session.ts';\nimport { NeonSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class NeonDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonServerlessDatabase';\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../src/neon-serverless/driver.ts"],"sourcesContent":["import { neonConfig, Pool, type PoolConfig } from '@neondatabase/serverless';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport type { NeonClient, NeonQueryResultHKT } from './session.ts';\nimport { NeonSession } from './session.ts';\n\nexport interface NeonDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NeonDriver {\n\tstatic readonly [entityKind]: string = 'NeonDriver';\n\n\tconstructor(\n\t\tprivate client: NeonClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: NeonDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NeonSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NeonSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class NeonDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NeonQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NeonServerlessDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NeonClient = NeonClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new NeonDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new NeonDatabase(dialect, session, schema as any) as NeonDatabase<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 NeonClient = Pool,\n>(\n\t...params: IfNotImported<\n\t\tPool,\n\t\t[ImportTypeError<'@neondatabase/serverless'>],\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 | PoolConfig;\n\t\t\t\t} | {\n\t\t\t\t\tclient: TClient;\n\t\t\t\t})\n\t\t\t\t& {\n\t\t\t\t\tws?: any;\n\t\t\t\t}\n\t\t\t),\n\t\t]\n\t>\n): NeonDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof Pool) {\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 = new Pool({\n\t\t\tconnectionString: params[0],\n\t\t});\n\n\t\tconstruct(instance);\n\t}\n\n\tif (typeof params[0] === 'object') {\n\t\tconst { connection, client, ws, ...drizzleConfig } = params[0] as {\n\t\t\tconnection?: PoolConfig | string;\n\t\t\tws?: any;\n\t\t\tclient?: TClient;\n\t\t} & DrizzleConfig<TSchema>;\n\n\t\tif (ws) {\n\t\t\tneonConfig.webSocketConstructor = ws;\n\t\t}\n\n\t\tif (client) return construct(client, drizzleConfig);\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new Pool({\n\t\t\t\tconnectionString: connection,\n\t\t\t})\n\t\t\t: new Pool(connection);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\tconst instance = new Pool();\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): NeonDatabase<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,SAAS,YAAY,YAA6B;AAClD,SAAS,kBAAkB;AAE3B,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB;AAC3B,SAAS,iBAAiB;AAC1B;AAAA,EACC;AAAA,EACA;AAAA,OAGM;AAGP,SAAS,mBAAmB;AAMrB,MAAM,WAAW;AAAA,EAGvB,YACS,QACA,SACA,UAA6B,CAAC,GACrC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,UAAU,IAAY;AAAA,EASvC,cACC,QAC+D;AAC/D,WAAO,IAAI,YAAY,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC1F;AACD;AAEO,MAAM,qBAEH,WAAwC;AAAA,EACjD,QAA0B,UAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,UAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,cAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,eAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,WAAW,QAAQ,SAAS,EAAE,OAAO,CAAC;AACzD,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,aAAa,SAAS,SAAS,MAAa;AAC3D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAwBF;AAED,MAAI,OAAO,CAAC,aAAa,MAAM;AAC9B,WAAO,UAAU,OAAO,CAAC,GAAc,OAAO,CAAC,CAAuC;AAAA,EACvF;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAMA,YAAW,IAAI,KAAK;AAAA,MACzB,kBAAkB,OAAO,CAAC;AAAA,IAC3B,CAAC;AAED,cAAUA,SAAQ;AAAA,EACnB;AAEA,MAAI,OAAO,OAAO,CAAC,MAAM,UAAU;AAClC,UAAM,EAAE,YAAY,QAAQ,IAAI,GAAG,cAAc,IAAI,OAAO,CAAC;AAM7D,QAAI,IAAI;AACP,iBAAW,uBAAuB;AAAA,IACnC;AAEA,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAMA,YAAW,OAAO,eAAe,WACpC,IAAI,KAAK;AAAA,MACV,kBAAkB;AAAA,IACnB,CAAC,IACC,IAAI,KAAK,UAAU;AAEtB,WAAO,UAAUA,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,IAAI,KAAK;AAE1B,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/node-postgres/driver.cjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,6 +17,14 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
var driver_exports = {};
|
|
20
30
|
__export(driver_exports, {
|
|
@@ -23,6 +33,8 @@ __export(driver_exports, {
|
|
|
23
33
|
drizzle: () => drizzle
|
|
24
34
|
});
|
|
25
35
|
module.exports = __toCommonJS(driver_exports);
|
|
36
|
+
var import_events = require("events");
|
|
37
|
+
var import_pg = __toESM(require("pg"), 1);
|
|
26
38
|
var import_entity = require("../entity.cjs");
|
|
27
39
|
var import_logger = require("../logger.cjs");
|
|
28
40
|
var import_db = require("../pg-core/db.cjs");
|
|
@@ -43,7 +55,7 @@ class NodePgDriver {
|
|
|
43
55
|
class NodePgDatabase extends import_db.PgDatabase {
|
|
44
56
|
static [import_entity.entityKind] = "NodePgDatabase";
|
|
45
57
|
}
|
|
46
|
-
function
|
|
58
|
+
function construct(client, config = {}) {
|
|
47
59
|
const dialect = new import_dialect.PgDialect({ casing: config.casing });
|
|
48
60
|
let logger;
|
|
49
61
|
if (config.logger === true) {
|
|
@@ -69,6 +81,30 @@ function drizzle(client, config = {}) {
|
|
|
69
81
|
db.$client = client;
|
|
70
82
|
return db;
|
|
71
83
|
}
|
|
84
|
+
function drizzle(...params) {
|
|
85
|
+
if (params[0] instanceof import_events.EventEmitter) {
|
|
86
|
+
return construct(params[0], params[1]);
|
|
87
|
+
}
|
|
88
|
+
if (typeof params[0] === "object") {
|
|
89
|
+
const { connection, client, ...drizzleConfig } = params[0];
|
|
90
|
+
if (client)
|
|
91
|
+
return construct(client, drizzleConfig);
|
|
92
|
+
const instance2 = typeof connection === "string" ? new import_pg.default.Pool({
|
|
93
|
+
connectionString: connection
|
|
94
|
+
}) : new import_pg.default.Pool(connection);
|
|
95
|
+
return construct(instance2, drizzleConfig);
|
|
96
|
+
}
|
|
97
|
+
const instance = new import_pg.default.Pool({
|
|
98
|
+
connectionString: params[0]
|
|
99
|
+
});
|
|
100
|
+
return construct(instance, params[1]);
|
|
101
|
+
}
|
|
102
|
+
((drizzle2) => {
|
|
103
|
+
function mock(config) {
|
|
104
|
+
return construct({}, config);
|
|
105
|
+
}
|
|
106
|
+
drizzle2.mock = mock;
|
|
107
|
+
})(drizzle || (drizzle = {}));
|
|
72
108
|
// Annotate the CommonJS export names for ESM import in node:
|
|
73
109
|
0 && (module.exports = {
|
|
74
110
|
NodePgDatabase,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/node-postgres/driver.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig } from '~/utils.ts';\nimport type { NodePgClient, NodePgQueryResultHKT } from './session.ts';\nimport { NodePgSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NodePgDriver {\n\tstatic readonly [entityKind]: string = 'NodePgDriver';\n\n\tconstructor(\n\t\tprivate client: NodePgClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: PgDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NodePgSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NodePgSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class NodePgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NodePgQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodePgDatabase';\n}\n\
|
|
1
|
+
{"version":3,"sources":["../../src/node-postgres/driver.ts"],"sourcesContent":["import { EventEmitter } from 'events';\nimport pg, { type Pool, type PoolConfig } from 'pg';\nimport { entityKind } from '~/entity.ts';\nimport type { Logger } from '~/logger.ts';\nimport { DefaultLogger } from '~/logger.ts';\nimport { PgDatabase } from '~/pg-core/db.ts';\nimport { PgDialect } from '~/pg-core/dialect.ts';\nimport {\n\tcreateTableRelationsHelpers,\n\textractTablesRelationalConfig,\n\ttype RelationalSchemaConfig,\n\ttype TablesRelationalConfig,\n} from '~/relations.ts';\nimport type { DrizzleConfig, IfNotImported, ImportTypeError } from '~/utils.ts';\nimport type { NodePgClient, NodePgQueryResultHKT } from './session.ts';\nimport { NodePgSession } from './session.ts';\n\nexport interface PgDriverOptions {\n\tlogger?: Logger;\n}\n\nexport class NodePgDriver {\n\tstatic readonly [entityKind]: string = 'NodePgDriver';\n\n\tconstructor(\n\t\tprivate client: NodePgClient,\n\t\tprivate dialect: PgDialect,\n\t\tprivate options: PgDriverOptions = {},\n\t) {\n\t}\n\n\tcreateSession(\n\t\tschema: RelationalSchemaConfig<TablesRelationalConfig> | undefined,\n\t): NodePgSession<Record<string, unknown>, TablesRelationalConfig> {\n\t\treturn new NodePgSession(this.client, this.dialect, schema, { logger: this.options.logger });\n\t}\n}\n\nexport class NodePgDatabase<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> extends PgDatabase<NodePgQueryResultHKT, TSchema> {\n\tstatic override readonly [entityKind]: string = 'NodePgDatabase';\n}\n\nfunction construct<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n\tTClient extends NodePgClient = NodePgClient,\n>(\n\tclient: TClient,\n\tconfig: DrizzleConfig<TSchema> = {},\n): NodePgDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\tconst dialect = new PgDialect({ casing: config.casing });\n\tlet logger;\n\tif (config.logger === true) {\n\t\tlogger = new DefaultLogger();\n\t} else if (config.logger !== false) {\n\t\tlogger = config.logger;\n\t}\n\n\tlet schema: RelationalSchemaConfig<TablesRelationalConfig> | undefined;\n\tif (config.schema) {\n\t\tconst tablesConfig = extractTablesRelationalConfig(\n\t\t\tconfig.schema,\n\t\t\tcreateTableRelationsHelpers,\n\t\t);\n\t\tschema = {\n\t\t\tfullSchema: config.schema,\n\t\t\tschema: tablesConfig.tables,\n\t\t\ttableNamesMap: tablesConfig.tableNamesMap,\n\t\t};\n\t}\n\n\tconst driver = new NodePgDriver(client, dialect, { logger });\n\tconst session = driver.createSession(schema);\n\tconst db = new NodePgDatabase(dialect, session, schema as any) as NodePgDatabase<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 NodePgClient = Pool,\n>(\n\t...params: IfNotImported<\n\t\tPool,\n\t\t[ImportTypeError<'pg'>],\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: string | PoolConfig;\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): NodePgDatabase<TSchema> & {\n\t$client: TClient;\n} {\n\t// eslint-disable-next-line no-instanceof/no-instanceof\n\tif (params[0] instanceof EventEmitter) {\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& ({ connection?: PoolConfig | string; client?: TClient })\n\t\t\t& DrizzleConfig<TSchema>\n\t\t);\n\n\t\tif (client) return construct(client, drizzleConfig);\n\n\t\tconst instance = typeof connection === 'string'\n\t\t\t? new pg.Pool({\n\t\t\t\tconnectionString: connection,\n\t\t\t})\n\t\t\t: new pg.Pool(connection!);\n\n\t\treturn construct(instance, drizzleConfig) as any;\n\t}\n\n\tconst instance = new pg.Pool({\n\t\tconnectionString: params[0],\n\t});\n\n\treturn construct(instance, params[1] as DrizzleConfig<TSchema> | undefined) as any;\n}\n\nexport namespace drizzle {\n\texport function mock<TSchema extends Record<string, unknown> = Record<string, never>>(\n\t\tconfig?: DrizzleConfig<TSchema>,\n\t): NodePgDatabase<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;AAAA,oBAA6B;AAC7B,gBAA+C;AAC/C,oBAA2B;AAE3B,oBAA8B;AAC9B,gBAA2B;AAC3B,qBAA0B;AAC1B,uBAKO;AAGP,qBAA8B;AAMvB,MAAM,aAAa;AAAA,EAGzB,YACS,QACA,SACA,UAA2B,CAAC,GACnC;AAHO;AACA;AACA;AAAA,EAET;AAAA,EAPA,QAAiB,wBAAU,IAAY;AAAA,EASvC,cACC,QACiE;AACjE,WAAO,IAAI,6BAAc,KAAK,QAAQ,KAAK,SAAS,QAAQ,EAAE,QAAQ,KAAK,QAAQ,OAAO,CAAC;AAAA,EAC5F;AACD;AAEO,MAAM,uBAEH,qBAA0C;AAAA,EACnD,QAA0B,wBAAU,IAAY;AACjD;AAEA,SAAS,UAIR,QACA,SAAiC,CAAC,GAGjC;AACD,QAAM,UAAU,IAAI,yBAAU,EAAE,QAAQ,OAAO,OAAO,CAAC;AACvD,MAAI;AACJ,MAAI,OAAO,WAAW,MAAM;AAC3B,aAAS,IAAI,4BAAc;AAAA,EAC5B,WAAW,OAAO,WAAW,OAAO;AACnC,aAAS,OAAO;AAAA,EACjB;AAEA,MAAI;AACJ,MAAI,OAAO,QAAQ;AAClB,UAAM,mBAAe;AAAA,MACpB,OAAO;AAAA,MACP;AAAA,IACD;AACA,aAAS;AAAA,MACR,YAAY,OAAO;AAAA,MACnB,QAAQ,aAAa;AAAA,MACrB,eAAe,aAAa;AAAA,IAC7B;AAAA,EACD;AAEA,QAAM,SAAS,IAAI,aAAa,QAAQ,SAAS,EAAE,OAAO,CAAC;AAC3D,QAAM,UAAU,OAAO,cAAc,MAAM;AAC3C,QAAM,KAAK,IAAI,eAAe,SAAS,SAAS,MAAa;AAC7D,EAAO,GAAI,UAAU;AAErB,SAAO;AACR;AAEO,SAAS,WAIZ,QAuBF;AAED,MAAI,OAAO,CAAC,aAAa,4BAAc;AACtC,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;AAKzD,QAAI;AAAQ,aAAO,UAAU,QAAQ,aAAa;AAElD,UAAMA,YAAW,OAAO,eAAe,WACpC,IAAI,UAAAC,QAAG,KAAK;AAAA,MACb,kBAAkB;AAAA,IACnB,CAAC,IACC,IAAI,UAAAA,QAAG,KAAK,UAAW;AAE1B,WAAO,UAAUD,WAAU,aAAa;AAAA,EACzC;AAEA,QAAM,WAAW,IAAI,UAAAC,QAAG,KAAK;AAAA,IAC5B,kBAAkB,OAAO,CAAC;AAAA,EAC3B,CAAC;AAED,SAAO,UAAU,UAAU,OAAO,CAAC,CAAuC;AAC3E;AAAA,CAEO,CAAUC,aAAV;AACC,WAAS,KACf,QAGC;AACD,WAAO,UAAU,CAAC,GAAU,MAAM;AAAA,EACnC;AANO,EAAAA,SAAS;AAAA,GADA;","names":["instance","pg","drizzle"]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { type Pool, type PoolConfig } from 'pg';
|
|
1
2
|
import { entityKind } from "../entity.cjs";
|
|
2
3
|
import type { Logger } from "../logger.cjs";
|
|
3
4
|
import { PgDatabase } from "../pg-core/db.cjs";
|
|
4
5
|
import { PgDialect } from "../pg-core/dialect.cjs";
|
|
5
6
|
import { type RelationalSchemaConfig, type TablesRelationalConfig } from "../relations.cjs";
|
|
6
|
-
import type { DrizzleConfig } from "../utils.cjs";
|
|
7
|
+
import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.cjs";
|
|
7
8
|
import type { NodePgClient, NodePgQueryResultHKT } from "./session.cjs";
|
|
8
9
|
import { NodePgSession } from "./session.cjs";
|
|
9
10
|
export interface PgDriverOptions {
|
|
@@ -20,6 +21,24 @@ export declare class NodePgDriver {
|
|
|
20
21
|
export declare class NodePgDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<NodePgQueryResultHKT, TSchema> {
|
|
21
22
|
static readonly [entityKind]: string;
|
|
22
23
|
}
|
|
23
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NodePgClient =
|
|
24
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NodePgClient = Pool>(...params: IfNotImported<Pool, [
|
|
25
|
+
ImportTypeError<'pg'>
|
|
26
|
+
], [
|
|
27
|
+
TClient | string
|
|
28
|
+
] | [
|
|
29
|
+
TClient | string,
|
|
30
|
+
DrizzleConfig<TSchema>
|
|
31
|
+
] | [
|
|
32
|
+
(DrizzleConfig<TSchema> & ({
|
|
33
|
+
connection: string | PoolConfig;
|
|
34
|
+
} | {
|
|
35
|
+
client: TClient;
|
|
36
|
+
}))
|
|
37
|
+
]>): NodePgDatabase<TSchema> & {
|
|
24
38
|
$client: TClient;
|
|
25
39
|
};
|
|
40
|
+
export declare namespace drizzle {
|
|
41
|
+
function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NodePgDatabase<TSchema> & {
|
|
42
|
+
$client: '$client is not available on drizzle.mock()';
|
|
43
|
+
};
|
|
44
|
+
}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
import { type Pool, type PoolConfig } from 'pg';
|
|
1
2
|
import { entityKind } from "../entity.js";
|
|
2
3
|
import type { Logger } from "../logger.js";
|
|
3
4
|
import { PgDatabase } from "../pg-core/db.js";
|
|
4
5
|
import { PgDialect } from "../pg-core/dialect.js";
|
|
5
6
|
import { type RelationalSchemaConfig, type TablesRelationalConfig } from "../relations.js";
|
|
6
|
-
import type { DrizzleConfig } from "../utils.js";
|
|
7
|
+
import type { DrizzleConfig, IfNotImported, ImportTypeError } from "../utils.js";
|
|
7
8
|
import type { NodePgClient, NodePgQueryResultHKT } from "./session.js";
|
|
8
9
|
import { NodePgSession } from "./session.js";
|
|
9
10
|
export interface PgDriverOptions {
|
|
@@ -20,6 +21,24 @@ export declare class NodePgDriver {
|
|
|
20
21
|
export declare class NodePgDatabase<TSchema extends Record<string, unknown> = Record<string, never>> extends PgDatabase<NodePgQueryResultHKT, TSchema> {
|
|
21
22
|
static readonly [entityKind]: string;
|
|
22
23
|
}
|
|
23
|
-
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NodePgClient =
|
|
24
|
+
export declare function drizzle<TSchema extends Record<string, unknown> = Record<string, never>, TClient extends NodePgClient = Pool>(...params: IfNotImported<Pool, [
|
|
25
|
+
ImportTypeError<'pg'>
|
|
26
|
+
], [
|
|
27
|
+
TClient | string
|
|
28
|
+
] | [
|
|
29
|
+
TClient | string,
|
|
30
|
+
DrizzleConfig<TSchema>
|
|
31
|
+
] | [
|
|
32
|
+
(DrizzleConfig<TSchema> & ({
|
|
33
|
+
connection: string | PoolConfig;
|
|
34
|
+
} | {
|
|
35
|
+
client: TClient;
|
|
36
|
+
}))
|
|
37
|
+
]>): NodePgDatabase<TSchema> & {
|
|
24
38
|
$client: TClient;
|
|
25
39
|
};
|
|
40
|
+
export declare namespace drizzle {
|
|
41
|
+
function mock<TSchema extends Record<string, unknown> = Record<string, never>>(config?: DrizzleConfig<TSchema>): NodePgDatabase<TSchema> & {
|
|
42
|
+
$client: '$client is not available on drizzle.mock()';
|
|
43
|
+
};
|
|
44
|
+
}
|
package/node-postgres/driver.js
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { EventEmitter } from "events";
|
|
2
|
+
import pg from "pg";
|
|
1
3
|
import { entityKind } from "../entity.js";
|
|
2
4
|
import { DefaultLogger } from "../logger.js";
|
|
3
5
|
import { PgDatabase } from "../pg-core/db.js";
|
|
@@ -21,7 +23,7 @@ class NodePgDriver {
|
|
|
21
23
|
class NodePgDatabase extends PgDatabase {
|
|
22
24
|
static [entityKind] = "NodePgDatabase";
|
|
23
25
|
}
|
|
24
|
-
function
|
|
26
|
+
function construct(client, config = {}) {
|
|
25
27
|
const dialect = new PgDialect({ casing: config.casing });
|
|
26
28
|
let logger;
|
|
27
29
|
if (config.logger === true) {
|
|
@@ -47,6 +49,30 @@ function drizzle(client, config = {}) {
|
|
|
47
49
|
db.$client = client;
|
|
48
50
|
return db;
|
|
49
51
|
}
|
|
52
|
+
function drizzle(...params) {
|
|
53
|
+
if (params[0] instanceof EventEmitter) {
|
|
54
|
+
return construct(params[0], params[1]);
|
|
55
|
+
}
|
|
56
|
+
if (typeof params[0] === "object") {
|
|
57
|
+
const { connection, client, ...drizzleConfig } = params[0];
|
|
58
|
+
if (client)
|
|
59
|
+
return construct(client, drizzleConfig);
|
|
60
|
+
const instance2 = typeof connection === "string" ? new pg.Pool({
|
|
61
|
+
connectionString: connection
|
|
62
|
+
}) : new pg.Pool(connection);
|
|
63
|
+
return construct(instance2, drizzleConfig);
|
|
64
|
+
}
|
|
65
|
+
const instance = new pg.Pool({
|
|
66
|
+
connectionString: params[0]
|
|
67
|
+
});
|
|
68
|
+
return construct(instance, params[1]);
|
|
69
|
+
}
|
|
70
|
+
((drizzle2) => {
|
|
71
|
+
function mock(config) {
|
|
72
|
+
return construct({}, config);
|
|
73
|
+
}
|
|
74
|
+
drizzle2.mock = mock;
|
|
75
|
+
})(drizzle || (drizzle = {}));
|
|
50
76
|
export {
|
|
51
77
|
NodePgDatabase,
|
|
52
78
|
NodePgDriver,
|