faire-auth 1.0.3 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{adapter-factory-lKIOf2OR.mjs → adapter-factory-qPVW8x9-.mjs} +34 -36
- package/dist/{adapter-factory-D1I7joki.cjs → adapter-factory-u8r3oTez.cjs} +66 -68
- package/dist/adapters/drizzle-adapter/index.cjs +34 -40
- package/dist/adapters/drizzle-adapter/index.d.cts +4 -9
- package/dist/adapters/drizzle-adapter/index.d.mts +4 -9
- package/dist/adapters/drizzle-adapter/index.mjs +20 -26
- package/dist/adapters/index.cjs +11 -16
- package/dist/adapters/index.d.cts +11 -37
- package/dist/adapters/index.d.mts +11 -37
- package/dist/adapters/index.mjs +4 -13
- package/dist/adapters/kysely-adapter/index.cjs +270 -11
- package/dist/adapters/kysely-adapter/index.d.cts +9 -19
- package/dist/adapters/kysely-adapter/index.d.mts +9 -19
- package/dist/adapters/kysely-adapter/index.mjs +267 -9
- package/dist/adapters/memory-adapter/index.cjs +146 -9
- package/dist/adapters/memory-adapter/index.d.cts +4 -10
- package/dist/adapters/memory-adapter/index.d.mts +4 -10
- package/dist/adapters/memory-adapter/index.mjs +145 -9
- package/dist/adapters/mongodb-adapter/index.cjs +13 -21
- package/dist/adapters/mongodb-adapter/index.d.cts +3 -8
- package/dist/adapters/mongodb-adapter/index.d.mts +4 -9
- package/dist/adapters/mongodb-adapter/index.mjs +12 -20
- package/dist/adapters/prisma-adapter/index.cjs +12 -20
- package/dist/adapters/prisma-adapter/index.d.cts +4 -8
- package/dist/adapters/prisma-adapter/index.d.mts +4 -8
- package/dist/adapters/prisma-adapter/index.mjs +5 -13
- package/dist/adapters/test.cjs +86 -69
- package/dist/adapters/test.d.cts +7 -11
- package/dist/adapters/test.d.mts +7 -11
- package/dist/adapters/test.mjs +83 -66
- package/dist/api/index.cjs +3 -20
- package/dist/api/index.d.cts +2 -3
- package/dist/api/index.d.mts +2 -3
- package/dist/api/index.mjs +1 -20
- package/dist/api/middleware/index.cjs +4 -11
- package/dist/api/middleware/index.d.cts +3 -9
- package/dist/api/middleware/index.d.mts +3 -9
- package/dist/api/middleware/index.mjs +3 -11
- package/dist/{api-B4RDwBty.mjs → api-0f-F-Fi2.mjs} +292 -189
- package/dist/{api-CaRC1Gio.cjs → api-LjfH6hQi.cjs} +557 -452
- package/dist/{test-utils/bun-sqlite-dialect-BZBvHchL.cjs → bun-sqlite-dialect-BHkarnxN.cjs} +5 -9
- package/dist/{test-utils/bun-sqlite-dialect-BSWhhKNs.mjs → bun-sqlite-dialect-BiZBuEF6.mjs} +6 -9
- package/dist/client/index.cjs +8 -15
- package/dist/client/index.d.cts +9 -14
- package/dist/client/index.d.mts +9 -14
- package/dist/client/index.mjs +7 -15
- package/dist/client/lynx/index.cjs +10 -18
- package/dist/client/lynx/index.d.cts +402 -71
- package/dist/client/lynx/index.d.mts +402 -71
- package/dist/client/lynx/index.mjs +5 -13
- package/dist/client/plugins/index.cjs +3 -5
- package/dist/client/plugins/index.d.cts +5 -10
- package/dist/client/plugins/index.d.mts +5 -10
- package/dist/client/plugins/index.mjs +2 -4
- package/dist/client/react/index.cjs +6 -14
- package/dist/client/react/index.d.cts +402 -71
- package/dist/client/react/index.d.mts +402 -71
- package/dist/client/react/index.mjs +5 -13
- package/dist/client/solid/index.cjs +6 -14
- package/dist/client/solid/index.d.cts +393 -57
- package/dist/client/solid/index.d.mts +393 -57
- package/dist/client/solid/index.mjs +5 -13
- package/dist/client/svelte/index.cjs +5 -10
- package/dist/client/svelte/index.d.cts +400 -67
- package/dist/client/svelte/index.d.mts +400 -67
- package/dist/client/svelte/index.mjs +4 -10
- package/dist/client/vue/index.cjs +6 -14
- package/dist/client/vue/index.d.cts +401 -68
- package/dist/client/vue/index.d.mts +401 -68
- package/dist/client/vue/index.mjs +5 -13
- package/dist/{cookies-BTs1o992.mjs → cookies-D9aY_gJh.mjs} +25 -21
- package/dist/{cookies-BTl72THv.cjs → cookies-DQ52rcOy.cjs} +119 -115
- package/dist/crypto/index.cjs +10 -8
- package/dist/crypto/index.d.cts +5 -13
- package/dist/crypto/index.d.mts +5 -13
- package/dist/crypto/index.mjs +2 -5
- package/dist/{crypto-DH2Aa7jN.mjs → crypto-BH-hD0lJ.mjs} +7 -10
- package/dist/{crypto-DpSCnrTp.cjs → crypto-BITfWVwD.cjs} +24 -27
- package/dist/db/index.cjs +1135 -29
- package/dist/db/index.d.cts +1 -2
- package/dist/db/index.d.mts +1 -2
- package/dist/db/index.mjs +1115 -16
- package/dist/defu-D2h4S3X-.mjs +87 -0
- package/dist/defu-DWS5RPWt.cjs +134 -0
- package/dist/{email-verification-DI_0H4JC.cjs → email-verification-DOPnSgbI.cjs} +65 -71
- package/dist/{email-verification-C_lBu_JY.mjs → email-verification-YSR5n5lb.mjs} +23 -29
- package/dist/{hono-CO-zsqI-.mjs → hono-BAV2wQkK.mjs} +16 -33
- package/dist/hono-SVQuc5Ru.mjs +4 -0
- package/dist/hono-pgK4H_U1.cjs +9 -0
- package/dist/{hono-DnW5crl1.cjs → hono-tyFFJFdS.cjs} +42 -60
- package/dist/index-B86Cy0dE.d.cts +2 -0
- package/dist/index-B86Cy0dE.d.mts +2 -0
- package/dist/index.cjs +115 -150
- package/dist/index.d.cts +4 -5
- package/dist/index.d.mts +4 -5
- package/dist/index.mjs +46 -81
- package/dist/integrations/next-js.cjs +5 -9
- package/dist/integrations/next-js.d.cts +6 -14
- package/dist/integrations/next-js.d.mts +6 -14
- package/dist/integrations/next-js.mjs +4 -9
- package/dist/integrations/node.cjs +16 -14
- package/dist/integrations/node.d.cts +6 -14
- package/dist/integrations/node.d.mts +6 -14
- package/dist/integrations/node.mjs +15 -13
- package/dist/integrations/react-start.cjs +7 -11
- package/dist/integrations/react-start.d.cts +5 -13
- package/dist/integrations/react-start.d.mts +5 -13
- package/dist/integrations/react-start.mjs +6 -11
- package/dist/integrations/solid-start.cjs +3 -5
- package/dist/integrations/solid-start.d.cts +2 -5
- package/dist/integrations/solid-start.d.mts +2 -5
- package/dist/integrations/solid-start.mjs +2 -4
- package/dist/integrations/svelte-kit.cjs +6 -10
- package/dist/integrations/svelte-kit.d.cts +11 -23
- package/dist/integrations/svelte-kit.d.mts +11 -23
- package/dist/integrations/svelte-kit.mjs +5 -10
- package/dist/{ip-BjNYspCH.mjs → ip-6Lv2o42m.mjs} +4 -9
- package/dist/{ip-C17Qdq-G.cjs → ip-DPydExzV.cjs} +21 -27
- package/dist/{json--tl7Grvs.cjs → json-D3aq-nH2.cjs} +9 -13
- package/dist/{json-B1v2qRTQ.mjs → json-DooGMtnJ.mjs} +2 -5
- package/dist/{logged-CyGfp8_H.mjs → logged-B83SzMnJ.mjs} +6 -10
- package/dist/{logged-Dv3st5qc.cjs → logged-BIpCpnVY.cjs} +13 -18
- package/dist/{middleware-CE6OhDkq.mjs → middleware-Cakg4e1D.mjs} +2 -4
- package/dist/{middleware-CWvRH4EW.cjs → middleware-Cd-VkNxB.cjs} +17 -20
- package/dist/{node-sqlite-dialect-w4DAg0PH.mjs → node-sqlite-dialect-BMVOjEMh.mjs} +6 -9
- package/dist/{test-utils/node-sqlite-dialect-BgJqjBOu.cjs → node-sqlite-dialect-D3QPFROH.cjs} +5 -9
- package/dist/oauth2/index.cjs +166 -22
- package/dist/oauth2/index.d.cts +5 -17
- package/dist/oauth2/index.d.mts +5 -17
- package/dist/oauth2/index.mjs +156 -16
- package/dist/{origin-check-DjLTuZQ8.cjs → origin-check-BflGhEEN.cjs} +34 -38
- package/dist/{origin-check-8Gajklvh.mjs → origin-check-CRgs1M7k.mjs} +13 -16
- package/dist/{parser-B25ylT5u.mjs → parser-CqwvpF6l.cjs} +12 -10
- package/dist/{parser-B_wxvaAr.cjs → parser-DcKDjjHO.mjs} +7 -22
- package/dist/plugins/access/index.cjs +38 -4
- package/dist/plugins/access/index.d.cts +36 -2
- package/dist/plugins/access/index.d.mts +36 -2
- package/dist/plugins/access/index.mjs +36 -3
- package/dist/plugins/bearer/index.cjs +52 -7
- package/dist/plugins/bearer/index.d.cts +27 -4
- package/dist/plugins/bearer/index.d.mts +27 -4
- package/dist/plugins/bearer/index.mjs +51 -7
- package/dist/plugins/index.cjs +1385 -842
- package/dist/plugins/index.d.cts +489 -7566
- package/dist/plugins/index.d.mts +489 -7566
- package/dist/plugins/index.mjs +1118 -576
- package/dist/plugins/passkey/index.cjs +551 -15
- package/dist/plugins/passkey/index.d.cts +123 -4
- package/dist/plugins/passkey/index.d.mts +123 -4
- package/dist/plugins/passkey/index.mjs +547 -15
- package/dist/{chunk-BFnQceUY.mjs → rolldown-runtime-BKpuH2hG.mjs} +6 -7
- package/dist/{chunk-fPmz2rbM.cjs → rolldown-runtime-C_Pgydhf.cjs} +22 -24
- package/dist/{schema-DTIwLLmf.mjs → schema-CFCpv0tK.mjs} +3 -6
- package/dist/{schema-CirKflVs.cjs → schema-b-lKhMkG.cjs} +51 -55
- package/dist/{session-CM3rmOYF.mjs → session-BGjJgihS.mjs} +51 -74
- package/dist/{session-Cwrj4GfV.cjs → session-CzZSMmQC.cjs} +197 -219
- package/dist/shared.d.cts +1581 -0
- package/dist/shared.d.mts +1581 -0
- package/dist/social-providers/index.cjs +9 -9
- package/dist/social-providers/index.d.cts +1 -1
- package/dist/social-providers/index.d.mts +1 -1
- package/dist/social-providers/index.mjs +3 -5
- package/dist/social-providers-CjPww-qf.mjs +6 -0
- package/dist/social-providers-D7w_7Ym8.cjs +10 -0
- package/dist/{state-CvSihlVT.cjs → state-2OrNjOO-.cjs} +24 -24
- package/dist/{state-CQghgH9I.mjs → state-Dooeisfq.mjs} +17 -17
- package/dist/{bun-sqlite-dialect-DPgTzc0w.cjs → test-utils/bun-sqlite-dialect-BHkarnxN.cjs} +5 -9
- package/dist/{bun-sqlite-dialect-6NqeV3px.mjs → test-utils/bun-sqlite-dialect-BiZBuEF6.mjs} +6 -9
- package/dist/test-utils/index.cjs +8831 -7941
- package/dist/test-utils/index.d.cts +310 -12440
- package/dist/test-utils/index.d.mts +313 -12440
- package/dist/test-utils/index.mjs +8591 -7701
- package/dist/test-utils/{node-sqlite-dialect-DAQXiobH.mjs → node-sqlite-dialect-BMVOjEMh.mjs} +6 -9
- package/dist/{node-sqlite-dialect-DP11CB0y.cjs → test-utils/node-sqlite-dialect-D3QPFROH.cjs} +5 -9
- package/dist/types/index.d.cts +2 -3
- package/dist/types/index.d.mts +2 -3
- package/dist/types/index.mjs +1 -1
- package/dist/{url-BoUuoIwZ.mjs → url-CJtdrrUu.mjs} +12 -13
- package/dist/{url-Ce7CVaQD.cjs → url-DjCmCUHS.cjs} +42 -44
- package/dist/utils/cookies.cjs +29 -30
- package/dist/utils/cookies.d.cts +21 -25
- package/dist/utils/cookies.d.mts +20 -24
- package/dist/utils/cookies.mjs +2 -7
- package/dist/utils-C7OHyfHa.mjs +4 -0
- package/dist/utils-iX0Vy_UL.cjs +3 -0
- package/package.json +40 -30
- package/dist/access-BZ7-AbTM.cjs +0 -51
- package/dist/access-D0DRqUKC.mjs +0 -39
- package/dist/bearer-DDzrp5M7.cjs +0 -60
- package/dist/bearer-WZcs7gxL.mjs +0 -54
- package/dist/db-4tUsQJXd.mjs +0 -1119
- package/dist/db-ChMbb_U-.cjs +0 -1180
- package/dist/defu-BmOYq4PU.cjs +0 -34
- package/dist/defu-D9ZTXqlo.mjs +0 -28
- package/dist/hono-C14rpOEa.cjs +0 -13
- package/dist/hono-CoKYWnXA.mjs +0 -7
- package/dist/hono-D0VqxVy1.d.mts +0 -18
- package/dist/hono-DOM31WQz.d.cts +0 -18
- package/dist/index-BCTFWP_o.d.mts +0 -992
- package/dist/index-BDhhaE6Y.d.cts +0 -3
- package/dist/index-BVRfQy6L.d.mts +0 -992
- package/dist/index-Baarsq5J.d.mts +0 -33
- package/dist/index-By364WbF.d.cts +0 -992
- package/dist/index-BzWwMgxr.d.cts +0 -992
- package/dist/index-CF9iq55a.d.mts +0 -3
- package/dist/index-CJD2yB-W.d.cts +0 -33
- package/dist/index-CRt_fppq.d.mts +0 -41
- package/dist/index-CdLyn7qP.d.cts +0 -41
- package/dist/index-CsWF3f7U.d.cts +0 -13350
- package/dist/index-CzidsAyA.d.mts +0 -13350
- package/dist/index-DvW-GCcI.d.cts +0 -33
- package/dist/index-f-5OJ9yV.d.cts +0 -13350
- package/dist/index-rFv8Hxld.d.mts +0 -13350
- package/dist/index-ztVZPQdV.d.mts +0 -33
- package/dist/kysely-adapter-CtIdoHa8.mjs +0 -270
- package/dist/kysely-adapter-QZTx077T.cjs +0 -288
- package/dist/memory-adapter-17RZd5df.cjs +0 -154
- package/dist/memory-adapter-Dp4XdCZK.mjs +0 -148
- package/dist/oauth2-5RL4cVNS.cjs +0 -177
- package/dist/oauth2-C56wz-n9.mjs +0 -159
- package/dist/passkey-BTT-v5c-.cjs +0 -512
- package/dist/passkey-CzY_W2us.mjs +0 -505
- package/dist/request-1NL_1lyJ.mjs +0 -58
- package/dist/request-CPNlp-DK.cjs +0 -100
- package/dist/social-providers-B8RK5yqI.mjs +0 -9
- package/dist/social-providers-BmFOIIPk.cjs +0 -13
- package/dist/utils-44aDDP8f.cjs +0 -2
- package/dist/utils-D4vZd1-9.mjs +0 -4
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../hono-D0VqxVy1.mjs";
|
|
1
|
+
import { gt as FaireAuthOptions } from "../../shared.mjs";
|
|
3
2
|
import { DBAdapter, DBAdapterDebugLogOption } from "@faire-auth/core/db/adapter";
|
|
4
|
-
|
|
5
|
-
//#region src/adapters/drizzle-adapter/drizzle-adapter.d.ts
|
|
6
|
-
interface DB {
|
|
3
|
+
export interface DB {
|
|
7
4
|
[key: string]: any;
|
|
8
5
|
}
|
|
9
|
-
interface DrizzleAdapterConfig {
|
|
6
|
+
export interface DrizzleAdapterConfig {
|
|
10
7
|
/**
|
|
11
8
|
* The schema object that defines the tables and fields
|
|
12
9
|
*/
|
|
@@ -43,6 +40,4 @@ interface DrizzleAdapterConfig {
|
|
|
43
40
|
*/
|
|
44
41
|
transaction?: boolean;
|
|
45
42
|
}
|
|
46
|
-
declare const drizzleAdapter: (db: DB, config: DrizzleAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
|
|
47
|
-
//#endregion
|
|
48
|
-
export { DB, DrizzleAdapterConfig, drizzleAdapter };
|
|
43
|
+
export declare const drizzleAdapter: (db: DB, config: DrizzleAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import "../../
|
|
2
|
-
import "../../json-B1v2qRTQ.mjs";
|
|
3
|
-
import "../../state-CQghgH9I.mjs";
|
|
4
|
-
import "../../request-1NL_1lyJ.mjs";
|
|
5
|
-
import "../../utils-D4vZd1-9.mjs";
|
|
6
|
-
import { t as createAdapterFactory } from "../../adapter-factory-lKIOf2OR.mjs";
|
|
1
|
+
import { t as createAdapterFactory } from "../../adapter-factory-qPVW8x9-.mjs";
|
|
7
2
|
import { FaireAuthError } from "@faire-auth/core/error";
|
|
8
3
|
import { and, asc, count, desc, eq, gt, gte, inArray, like, lt, lte, ne, notInArray, or, sql } from "drizzle-orm";
|
|
9
|
-
|
|
10
|
-
//#region src/adapters/drizzle-adapter/drizzle-adapter.ts
|
|
4
|
+
// src/adapters/drizzle-adapter/drizzle-adapter.ts
|
|
11
5
|
const drizzleAdapter = (db, config) => {
|
|
12
6
|
let lazyOptions = null;
|
|
13
|
-
const createCustomAdapter = (db
|
|
7
|
+
const createCustomAdapter = (db) => ({ getFieldName, debugLog }) => {
|
|
14
8
|
function getSchema(model) {
|
|
15
|
-
const schema = config.schema || db
|
|
9
|
+
const schema = config.schema || db._.fullSchema;
|
|
16
10
|
if (!schema) throw new FaireAuthError("Drizzle adapter failed to initialize. Schema not found. Please provide a schema object in the adapter options object.");
|
|
17
11
|
const schemaModel = schema[model];
|
|
18
12
|
if (!schemaModel) throw new FaireAuthError(`[# Drizzle Adapter]: The model "${model}" was not found in the schema object. Please pass the schema directly to the adapter options.`);
|
|
@@ -31,15 +25,15 @@ const drizzleAdapter = (db, config) => {
|
|
|
31
25
|
};
|
|
32
26
|
return w;
|
|
33
27
|
}), model);
|
|
34
|
-
return (await db
|
|
28
|
+
return (await db.select().from(schemaModel).where(...clause))[0];
|
|
35
29
|
} else if (builderVal && builderVal[0]?.id?.value) {
|
|
36
30
|
let tId = builderVal[0]?.id?.value;
|
|
37
|
-
if (!tId) tId = (await db
|
|
38
|
-
return (await db
|
|
39
|
-
} else if (data.id) return (await db
|
|
31
|
+
if (!tId) tId = (await db.select({ id: sql`LAST_INSERT_ID()` }).from(schemaModel).orderBy(desc(schemaModel.id)).limit(1))[0].id;
|
|
32
|
+
return (await db.select().from(schemaModel).where(eq(schemaModel.id, tId)).limit(1).execute())[0];
|
|
33
|
+
} else if (data.id) return (await db.select().from(schemaModel).where(eq(schemaModel.id, data.id)).limit(1).execute())[0];
|
|
40
34
|
else {
|
|
41
35
|
if (!("id" in schemaModel)) throw new FaireAuthError(`The model "${model}" does not have an "id" field. Please use the "id" field as your primary key.`);
|
|
42
|
-
return (await db
|
|
36
|
+
return (await db.select().from(schemaModel).orderBy(desc(schemaModel.id)).limit(1).execute())[0];
|
|
43
37
|
}
|
|
44
38
|
};
|
|
45
39
|
function convertWhereClause(where, model) {
|
|
@@ -132,12 +126,13 @@ const drizzleAdapter = (db, config) => {
|
|
|
132
126
|
async create({ model, data: values }) {
|
|
133
127
|
const schemaModel = getSchema(model);
|
|
134
128
|
checkMissingFields(schemaModel, model, values);
|
|
135
|
-
|
|
129
|
+
const builder = db.insert(schemaModel).values(values);
|
|
130
|
+
return await withReturning(model, builder, values);
|
|
136
131
|
},
|
|
137
132
|
async findOne({ model, where }) {
|
|
138
133
|
const schemaModel = getSchema(model);
|
|
139
134
|
const clause = convertWhereClause(where, model);
|
|
140
|
-
const res = await db
|
|
135
|
+
const res = await db.select().from(schemaModel).where(...clause);
|
|
141
136
|
if (!res.length) return null;
|
|
142
137
|
return res[0];
|
|
143
138
|
},
|
|
@@ -145,7 +140,7 @@ const drizzleAdapter = (db, config) => {
|
|
|
145
140
|
const schemaModel = getSchema(model);
|
|
146
141
|
const clause = where ? convertWhereClause(where, model) : [];
|
|
147
142
|
const sortFn = sortBy?.direction === "desc" ? desc : asc;
|
|
148
|
-
const builder = db
|
|
143
|
+
const builder = db.select().from(schemaModel).limit(limit || 100).offset(offset || 0);
|
|
149
144
|
if (sortBy?.field) builder.orderBy(sortFn(schemaModel[getFieldName({
|
|
150
145
|
model,
|
|
151
146
|
field: sortBy?.field
|
|
@@ -155,27 +150,28 @@ const drizzleAdapter = (db, config) => {
|
|
|
155
150
|
async count({ model, where }) {
|
|
156
151
|
const schemaModel = getSchema(model);
|
|
157
152
|
const clause = where ? convertWhereClause(where, model) : [];
|
|
158
|
-
return (await db
|
|
153
|
+
return (await db.select({ count: count() }).from(schemaModel).where(...clause))[0].count;
|
|
159
154
|
},
|
|
160
155
|
async update({ model, where, update: values }) {
|
|
161
156
|
const schemaModel = getSchema(model);
|
|
162
157
|
const clause = convertWhereClause(where, model);
|
|
163
|
-
|
|
158
|
+
const builder = db.update(schemaModel).set(values).where(...clause);
|
|
159
|
+
return await withReturning(model, builder, values, where);
|
|
164
160
|
},
|
|
165
161
|
async updateMany({ model, where, update: values }) {
|
|
166
162
|
const schemaModel = getSchema(model);
|
|
167
163
|
const clause = convertWhereClause(where, model);
|
|
168
|
-
return await db
|
|
164
|
+
return await db.update(schemaModel).set(values).where(...clause);
|
|
169
165
|
},
|
|
170
166
|
async delete({ model, where }) {
|
|
171
167
|
const schemaModel = getSchema(model);
|
|
172
168
|
const clause = convertWhereClause(where, model);
|
|
173
|
-
return await db
|
|
169
|
+
return await db.delete(schemaModel).where(...clause);
|
|
174
170
|
},
|
|
175
171
|
async deleteMany({ model, where }) {
|
|
176
172
|
const schemaModel = getSchema(model);
|
|
177
173
|
const clause = convertWhereClause(where, model);
|
|
178
|
-
return await db
|
|
174
|
+
return await db.delete(schemaModel).where(...clause);
|
|
179
175
|
},
|
|
180
176
|
options: config
|
|
181
177
|
};
|
|
@@ -202,6 +198,4 @@ const drizzleAdapter = (db, config) => {
|
|
|
202
198
|
return adapter(options);
|
|
203
199
|
};
|
|
204
200
|
};
|
|
205
|
-
|
|
206
|
-
//#endregion
|
|
207
|
-
export { drizzleAdapter };
|
|
201
|
+
export { drizzleAdapter };
|
package/dist/adapters/index.cjs
CHANGED
|
@@ -1,23 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
require(
|
|
3
|
-
|
|
4
|
-
require('../request-CPNlp-DK.cjs');
|
|
5
|
-
require('../utils-44aDDP8f.cjs');
|
|
6
|
-
const require_adapter_factory = require('../adapter-factory-D1I7joki.cjs');
|
|
7
|
-
|
|
8
|
-
//#region src/adapters/index.ts
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_adapter_factory = require("../adapter-factory-u8r3oTez.cjs");
|
|
3
|
+
// src/adapters/index.ts
|
|
9
4
|
/**
|
|
10
5
|
* @deprecated Use `createAdapterFactory` instead. This export will be removed in the next major version.
|
|
11
6
|
*/
|
|
12
7
|
const createAdapter = require_adapter_factory.createAdapterFactory;
|
|
13
|
-
|
|
14
|
-
//#endregion
|
|
15
8
|
exports.createAdapter = createAdapter;
|
|
16
9
|
exports.createAdapterFactory = require_adapter_factory.createAdapterFactory;
|
|
17
|
-
var
|
|
18
|
-
Object.keys(
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
10
|
+
var _faire_auth_core_db_adapter = require("@faire-auth/core/db/adapter");
|
|
11
|
+
Object.keys(_faire_auth_core_db_adapter).forEach(function(k) {
|
|
12
|
+
if (k !== "default" && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function() {
|
|
15
|
+
return _faire_auth_core_db_adapter[k];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
23
18
|
});
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../hono-DOM31WQz.cjs";
|
|
1
|
+
import { _n as TransactionAdapter, fn as AdapterSchemaCreation, ht as FaireAuthOptions$1, vn as Where$1 } from "../shared.cjs";
|
|
3
2
|
import { CustomAdapter as CustomAdapter$1, DBAdapter, DBAdapterFactoryConfig } from "@faire-auth/core/db/adapter";
|
|
4
3
|
import { Prettify } from "@faire-auth/core/types";
|
|
5
4
|
import { DBFieldAttribute, FaireAuthDBSchema } from "@faire-auth/core/db";
|
|
6
5
|
export * from "@faire-auth/core/db/adapter";
|
|
7
|
-
|
|
8
|
-
//#region src/adapters/adapter-factory/types.d.ts
|
|
9
6
|
type AdapterFactoryOptions = {
|
|
10
7
|
config: AdapterFactoryConfig;
|
|
11
8
|
adapter: AdapterFactoryCustomizeAdapterCreator;
|
|
@@ -42,10 +39,7 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
|
|
|
42
39
|
/**
|
|
43
40
|
* Get the field name which is expected to be saved in the database based on the user's schema.
|
|
44
41
|
*/
|
|
45
|
-
getFieldName: ({
|
|
46
|
-
model,
|
|
47
|
-
field
|
|
48
|
-
}: {
|
|
42
|
+
getFieldName: ({ model, field }: {
|
|
49
43
|
model: string;
|
|
50
44
|
field: string;
|
|
51
45
|
}) => string;
|
|
@@ -73,10 +67,7 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
|
|
|
73
67
|
* 2. When using a custom fieldName, doing something like `schema[model].fields[field]` will not work.
|
|
74
68
|
*
|
|
75
69
|
*/
|
|
76
|
-
getDefaultFieldName: ({
|
|
77
|
-
model,
|
|
78
|
-
field
|
|
79
|
-
}: {
|
|
70
|
+
getDefaultFieldName: ({ model, field }: {
|
|
80
71
|
model: string;
|
|
81
72
|
field: string;
|
|
82
73
|
}) => string;
|
|
@@ -85,19 +76,13 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
|
|
|
85
76
|
*
|
|
86
77
|
* Note: any model name or field name is allowed, whether default to schema or not.
|
|
87
78
|
*/
|
|
88
|
-
getFieldAttributes: ({
|
|
89
|
-
model,
|
|
90
|
-
field
|
|
91
|
-
}: {
|
|
79
|
+
getFieldAttributes: ({ model, field }: {
|
|
92
80
|
model: string;
|
|
93
81
|
field: string;
|
|
94
82
|
}) => DBFieldAttribute;
|
|
95
83
|
transformInput: (data: Record<string, any>, defaultModelName: string, action: "create" | "update", forceAllowId?: boolean) => Promise<Record<string, any>>;
|
|
96
84
|
transformOutput: (data: Record<string, any>, defaultModelName: string, select?: string[]) => Promise<Record<string, any>>;
|
|
97
|
-
transformWhereClause: <W extends Where$1[] | undefined>({
|
|
98
|
-
model,
|
|
99
|
-
where
|
|
100
|
-
}: {
|
|
85
|
+
transformWhereClause: <W extends Where$1[] | undefined>({ model, where }: {
|
|
101
86
|
where: W;
|
|
102
87
|
model: string;
|
|
103
88
|
}) => W extends undefined ? undefined : CleanedWhere[];
|
|
@@ -125,33 +110,22 @@ type AdapterTestDebugLogs = {
|
|
|
125
110
|
resetDebugLogs: () => void;
|
|
126
111
|
printDebugLogs: () => void;
|
|
127
112
|
};
|
|
128
|
-
//#endregion
|
|
129
|
-
//#region src/adapters/adapter-factory/index.d.ts
|
|
130
113
|
type AdapterFactory = <O extends FaireAuthOptions$1>(options: O) => DBAdapter<O>;
|
|
131
|
-
declare const createAdapterFactory: ({
|
|
132
|
-
adapter: customAdapter,
|
|
133
|
-
config: cfg
|
|
134
|
-
}: AdapterFactoryOptions) => AdapterFactory;
|
|
135
|
-
//#endregion
|
|
136
|
-
//#region src/adapters/index.d.ts
|
|
114
|
+
export declare const createAdapterFactory: ({ adapter: customAdapter, config: cfg }: AdapterFactoryOptions) => AdapterFactory;
|
|
137
115
|
/**
|
|
138
116
|
* @deprecated Use `createAdapterFactory` instead. This export will be removed in the next major version.
|
|
139
117
|
*/
|
|
140
|
-
declare const createAdapter:
|
|
141
|
-
adapter: customAdapter,
|
|
142
|
-
config: cfg
|
|
143
|
-
}: AdapterFactoryOptions) => AdapterFactory;
|
|
118
|
+
export declare const createAdapter: typeof createAdapterFactory;
|
|
144
119
|
/**
|
|
145
120
|
* @deprecated Use `AdapterFactoryOptions` instead. This export will be removed in the next major version.
|
|
146
121
|
*/
|
|
147
|
-
type CreateAdapterOptions = AdapterFactoryOptions;
|
|
122
|
+
export type CreateAdapterOptions = AdapterFactoryOptions;
|
|
148
123
|
/**
|
|
149
124
|
* @deprecated Use `AdapterFactoryConfig` instead. This export will be removed in the next major version.
|
|
150
125
|
*/
|
|
151
|
-
type AdapterConfig = AdapterFactoryConfig;
|
|
126
|
+
export type AdapterConfig = AdapterFactoryConfig;
|
|
152
127
|
/**
|
|
153
128
|
* @deprecated Use `AdapterFactoryCustomizeAdapterCreator` instead. This export will be removed in the next major version.
|
|
154
129
|
*/
|
|
155
|
-
type CreateCustomAdapter = AdapterFactoryCustomizeAdapterCreator;
|
|
156
|
-
|
|
157
|
-
export { AdapterConfig, type AdapterFactory, type AdapterFactoryConfig, type AdapterFactoryCustomizeAdapterCreator, type AdapterFactoryOptions, type AdapterTestDebugLogs, CreateAdapterOptions, CreateCustomAdapter, type CustomAdapter, createAdapter, createAdapterFactory };
|
|
130
|
+
export type CreateCustomAdapter = AdapterFactoryCustomizeAdapterCreator;
|
|
131
|
+
export type { AdapterFactory, AdapterFactoryConfig, AdapterFactoryCustomizeAdapterCreator, AdapterFactoryOptions, AdapterTestDebugLogs, CustomAdapter };
|
|
@@ -1,11 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../hono-D0VqxVy1.mjs";
|
|
1
|
+
import { gt as FaireAuthOptions$1, pn as AdapterSchemaCreation, vn as TransactionAdapter, yn as Where$1 } from "../shared.mjs";
|
|
3
2
|
import { DBFieldAttribute, FaireAuthDBSchema } from "@faire-auth/core/db";
|
|
4
3
|
import { CustomAdapter as CustomAdapter$1, DBAdapter, DBAdapterFactoryConfig } from "@faire-auth/core/db/adapter";
|
|
5
4
|
import { Prettify } from "@faire-auth/core/types";
|
|
6
5
|
export * from "@faire-auth/core/db/adapter";
|
|
7
|
-
|
|
8
|
-
//#region src/adapters/adapter-factory/types.d.ts
|
|
9
6
|
type AdapterFactoryOptions = {
|
|
10
7
|
config: AdapterFactoryConfig;
|
|
11
8
|
adapter: AdapterFactoryCustomizeAdapterCreator;
|
|
@@ -42,10 +39,7 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
|
|
|
42
39
|
/**
|
|
43
40
|
* Get the field name which is expected to be saved in the database based on the user's schema.
|
|
44
41
|
*/
|
|
45
|
-
getFieldName: ({
|
|
46
|
-
model,
|
|
47
|
-
field
|
|
48
|
-
}: {
|
|
42
|
+
getFieldName: ({ model, field }: {
|
|
49
43
|
model: string;
|
|
50
44
|
field: string;
|
|
51
45
|
}) => string;
|
|
@@ -73,10 +67,7 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
|
|
|
73
67
|
* 2. When using a custom fieldName, doing something like `schema[model].fields[field]` will not work.
|
|
74
68
|
*
|
|
75
69
|
*/
|
|
76
|
-
getDefaultFieldName: ({
|
|
77
|
-
model,
|
|
78
|
-
field
|
|
79
|
-
}: {
|
|
70
|
+
getDefaultFieldName: ({ model, field }: {
|
|
80
71
|
model: string;
|
|
81
72
|
field: string;
|
|
82
73
|
}) => string;
|
|
@@ -85,19 +76,13 @@ type AdapterFactoryCustomizeAdapterCreator = (config: {
|
|
|
85
76
|
*
|
|
86
77
|
* Note: any model name or field name is allowed, whether default to schema or not.
|
|
87
78
|
*/
|
|
88
|
-
getFieldAttributes: ({
|
|
89
|
-
model,
|
|
90
|
-
field
|
|
91
|
-
}: {
|
|
79
|
+
getFieldAttributes: ({ model, field }: {
|
|
92
80
|
model: string;
|
|
93
81
|
field: string;
|
|
94
82
|
}) => DBFieldAttribute;
|
|
95
83
|
transformInput: (data: Record<string, any>, defaultModelName: string, action: "create" | "update", forceAllowId?: boolean) => Promise<Record<string, any>>;
|
|
96
84
|
transformOutput: (data: Record<string, any>, defaultModelName: string, select?: string[]) => Promise<Record<string, any>>;
|
|
97
|
-
transformWhereClause: <W extends Where$1[] | undefined>({
|
|
98
|
-
model,
|
|
99
|
-
where
|
|
100
|
-
}: {
|
|
85
|
+
transformWhereClause: <W extends Where$1[] | undefined>({ model, where }: {
|
|
101
86
|
where: W;
|
|
102
87
|
model: string;
|
|
103
88
|
}) => W extends undefined ? undefined : CleanedWhere[];
|
|
@@ -125,33 +110,22 @@ type AdapterTestDebugLogs = {
|
|
|
125
110
|
resetDebugLogs: () => void;
|
|
126
111
|
printDebugLogs: () => void;
|
|
127
112
|
};
|
|
128
|
-
//#endregion
|
|
129
|
-
//#region src/adapters/adapter-factory/index.d.ts
|
|
130
113
|
type AdapterFactory = <O extends FaireAuthOptions$1>(options: O) => DBAdapter<O>;
|
|
131
|
-
declare const createAdapterFactory: ({
|
|
132
|
-
adapter: customAdapter,
|
|
133
|
-
config: cfg
|
|
134
|
-
}: AdapterFactoryOptions) => AdapterFactory;
|
|
135
|
-
//#endregion
|
|
136
|
-
//#region src/adapters/index.d.ts
|
|
114
|
+
export declare const createAdapterFactory: ({ adapter: customAdapter, config: cfg }: AdapterFactoryOptions) => AdapterFactory;
|
|
137
115
|
/**
|
|
138
116
|
* @deprecated Use `createAdapterFactory` instead. This export will be removed in the next major version.
|
|
139
117
|
*/
|
|
140
|
-
declare const createAdapter:
|
|
141
|
-
adapter: customAdapter,
|
|
142
|
-
config: cfg
|
|
143
|
-
}: AdapterFactoryOptions) => AdapterFactory;
|
|
118
|
+
export declare const createAdapter: typeof createAdapterFactory;
|
|
144
119
|
/**
|
|
145
120
|
* @deprecated Use `AdapterFactoryOptions` instead. This export will be removed in the next major version.
|
|
146
121
|
*/
|
|
147
|
-
type CreateAdapterOptions = AdapterFactoryOptions;
|
|
122
|
+
export type CreateAdapterOptions = AdapterFactoryOptions;
|
|
148
123
|
/**
|
|
149
124
|
* @deprecated Use `AdapterFactoryConfig` instead. This export will be removed in the next major version.
|
|
150
125
|
*/
|
|
151
|
-
type AdapterConfig = AdapterFactoryConfig;
|
|
126
|
+
export type AdapterConfig = AdapterFactoryConfig;
|
|
152
127
|
/**
|
|
153
128
|
* @deprecated Use `AdapterFactoryCustomizeAdapterCreator` instead. This export will be removed in the next major version.
|
|
154
129
|
*/
|
|
155
|
-
type CreateCustomAdapter = AdapterFactoryCustomizeAdapterCreator;
|
|
156
|
-
|
|
157
|
-
export { AdapterConfig, type AdapterFactory, type AdapterFactoryConfig, type AdapterFactoryCustomizeAdapterCreator, type AdapterFactoryOptions, type AdapterTestDebugLogs, CreateAdapterOptions, CreateCustomAdapter, type CustomAdapter, createAdapter, createAdapterFactory };
|
|
130
|
+
export type CreateCustomAdapter = AdapterFactoryCustomizeAdapterCreator;
|
|
131
|
+
export type { AdapterFactory, AdapterFactoryConfig, AdapterFactoryCustomizeAdapterCreator, AdapterFactoryOptions, AdapterTestDebugLogs, CustomAdapter };
|
package/dist/adapters/index.mjs
CHANGED
|
@@ -1,17 +1,8 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
import "../request-1NL_1lyJ.mjs";
|
|
5
|
-
import "../utils-D4vZd1-9.mjs";
|
|
6
|
-
import { t as createAdapterFactory } from "../adapter-factory-lKIOf2OR.mjs";
|
|
7
|
-
|
|
8
|
-
export * from "@faire-auth/core/db/adapter"
|
|
9
|
-
|
|
10
|
-
//#region src/adapters/index.ts
|
|
1
|
+
import { t as createAdapterFactory } from "../adapter-factory-qPVW8x9-.mjs";
|
|
2
|
+
export * from "@faire-auth/core/db/adapter";
|
|
3
|
+
// src/adapters/index.ts
|
|
11
4
|
/**
|
|
12
5
|
* @deprecated Use `createAdapterFactory` instead. This export will be removed in the next major version.
|
|
13
6
|
*/
|
|
14
7
|
const createAdapter = createAdapterFactory;
|
|
15
|
-
|
|
16
|
-
//#endregion
|
|
17
|
-
export { createAdapter, createAdapterFactory };
|
|
8
|
+
export { createAdapter, createAdapterFactory };
|
|
@@ -1,11 +1,270 @@
|
|
|
1
|
-
|
|
2
|
-
require(
|
|
3
|
-
require(
|
|
4
|
-
require(
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_adapter_factory = require("../../adapter-factory-u8r3oTez.cjs");
|
|
3
|
+
let _faire_auth_core_static = require("@faire-auth/core/static");
|
|
4
|
+
let kysely = require("kysely");
|
|
5
|
+
// src/adapters/kysely-adapter/dialect.ts
|
|
6
|
+
function getKyselyDatabaseType(db) {
|
|
7
|
+
if (!db) return null;
|
|
8
|
+
if ("dialect" in db) return getKyselyDatabaseType(db.dialect);
|
|
9
|
+
if ("createDriver" in db) {
|
|
10
|
+
if (db instanceof kysely.SqliteDialect) return "sqlite";
|
|
11
|
+
if (db instanceof kysely.MysqlDialect) return "mysql";
|
|
12
|
+
if (db instanceof kysely.PostgresDialect) return "postgres";
|
|
13
|
+
if (db instanceof kysely.MssqlDialect) return "mssql";
|
|
14
|
+
}
|
|
15
|
+
if ("aggregate" in db) return "sqlite";
|
|
16
|
+
if ("getConnection" in db) return "mysql";
|
|
17
|
+
if ("connect" in db) return "postgres";
|
|
18
|
+
if ("fileControl" in db) return "sqlite";
|
|
19
|
+
if ("open" in db && "close" in db && "prepare" in db) return "sqlite";
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
const createKyselyAdapter = (config) => {
|
|
23
|
+
const db = config.database;
|
|
24
|
+
if (!db) return {
|
|
25
|
+
kysely: null,
|
|
26
|
+
databaseType: null,
|
|
27
|
+
transaction: void 0
|
|
28
|
+
};
|
|
29
|
+
if ("db" in db) return {
|
|
30
|
+
kysely: db.db,
|
|
31
|
+
databaseType: db.type,
|
|
32
|
+
transaction: db.transaction
|
|
33
|
+
};
|
|
34
|
+
if ("dialect" in db) return {
|
|
35
|
+
kysely: new kysely.Kysely({ dialect: db.dialect }),
|
|
36
|
+
databaseType: db.type,
|
|
37
|
+
transaction: db.transaction
|
|
38
|
+
};
|
|
39
|
+
let dialect = void 0;
|
|
40
|
+
const databaseType = getKyselyDatabaseType(db);
|
|
41
|
+
if ("createDriver" in db) dialect = db;
|
|
42
|
+
if ("aggregate" in db && !("createSession" in db)) dialect = new kysely.SqliteDialect({ database: db });
|
|
43
|
+
if ("getConnection" in db) dialect = new kysely.MysqlDialect(db);
|
|
44
|
+
if ("connect" in db) dialect = new kysely.PostgresDialect({ pool: db });
|
|
45
|
+
const toReturn = {
|
|
46
|
+
kysely: dialect ? new kysely.Kysely({ dialect }) : null,
|
|
47
|
+
databaseType,
|
|
48
|
+
transaction: void 0,
|
|
49
|
+
async initialize() {
|
|
50
|
+
if (toReturn.kysely == null) {
|
|
51
|
+
if ("fileControl" in db) {
|
|
52
|
+
console.log("found file control");
|
|
53
|
+
const { BunSqliteDialect } = await Promise.resolve().then(() => require("../../bun-sqlite-dialect-BHkarnxN.cjs"));
|
|
54
|
+
dialect = new BunSqliteDialect({ database: db });
|
|
55
|
+
}
|
|
56
|
+
if ("createSession" in db && typeof window === "undefined") {
|
|
57
|
+
console.log("found create session");
|
|
58
|
+
let DatabaseSync = void 0;
|
|
59
|
+
try {
|
|
60
|
+
let nodeSqlite = "node:sqlite";
|
|
61
|
+
({DatabaseSync} = await import(
|
|
62
|
+
/* @vite-ignore */
|
|
63
|
+
/* webpackIgnore: true */
|
|
64
|
+
nodeSqlite
|
|
65
|
+
));
|
|
66
|
+
} catch (error) {
|
|
67
|
+
console.log("caught");
|
|
68
|
+
if (error !== null && typeof error === "object" && "code" in error && error.code !== "ERR_UNKNOWN_BUILTIN_MODULE") throw error;
|
|
69
|
+
}
|
|
70
|
+
console.log("import dialect");
|
|
71
|
+
if (DatabaseSync && db instanceof DatabaseSync) {
|
|
72
|
+
const { NodeSqliteDialect } = await Promise.resolve().then(() => require("../../node-sqlite-dialect-D3QPFROH.cjs"));
|
|
73
|
+
dialect = new NodeSqliteDialect({ database: db });
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
if (dialect) toReturn.kysely = new kysely.Kysely({ dialect });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
return toReturn;
|
|
81
|
+
};
|
|
82
|
+
// src/adapters/kysely-adapter/kysely-adapter.ts
|
|
83
|
+
const withDbInit = (db, work) => async (fn) => {
|
|
84
|
+
const rdb = (0, _faire_auth_core_static.isPromise)(db) ? await db : db;
|
|
85
|
+
if (work) work(rdb);
|
|
86
|
+
return fn(rdb);
|
|
87
|
+
};
|
|
88
|
+
const kyselyAdapter = (db, config) => {
|
|
89
|
+
let lazyOptions = null;
|
|
90
|
+
const withDb = withDbInit(db);
|
|
91
|
+
const createCustomAdapter = (db) => {
|
|
92
|
+
return ({ getFieldName }) => {
|
|
93
|
+
const withReturningInit = (db) => async (values, builder, model, where) => {
|
|
94
|
+
let res;
|
|
95
|
+
if (config?.type === "mysql") {
|
|
96
|
+
await builder.execute();
|
|
97
|
+
const field = values.id ? "id" : where.length > 0 && where[0]?.field ? where[0].field : "id";
|
|
98
|
+
if (!values.id && where.length === 0) {
|
|
99
|
+
res = await db.selectFrom(model).selectAll().orderBy(getFieldName({
|
|
100
|
+
model,
|
|
101
|
+
field
|
|
102
|
+
}), "desc").limit(1).executeTakeFirst();
|
|
103
|
+
return res;
|
|
104
|
+
}
|
|
105
|
+
const value = values[field] || where[0]?.value;
|
|
106
|
+
res = await db.selectFrom(model).selectAll().orderBy(getFieldName({
|
|
107
|
+
model,
|
|
108
|
+
field
|
|
109
|
+
}), "desc").where(getFieldName({
|
|
110
|
+
model,
|
|
111
|
+
field
|
|
112
|
+
}), "=", value).limit(1).executeTakeFirst();
|
|
113
|
+
return res;
|
|
114
|
+
}
|
|
115
|
+
if (config?.type === "mssql") {
|
|
116
|
+
res = await builder.outputAll("inserted").executeTakeFirst();
|
|
117
|
+
return res;
|
|
118
|
+
}
|
|
119
|
+
res = await builder.returningAll().executeTakeFirst();
|
|
120
|
+
return res;
|
|
121
|
+
};
|
|
122
|
+
let withReturning;
|
|
123
|
+
const withDb = withDbInit(db, (db) => withReturning ??= withReturningInit(db));
|
|
124
|
+
function convertWhereClause(model, w) {
|
|
125
|
+
if (!w) return {
|
|
126
|
+
and: null,
|
|
127
|
+
or: null
|
|
128
|
+
};
|
|
129
|
+
const conditions = {
|
|
130
|
+
and: [],
|
|
131
|
+
or: []
|
|
132
|
+
};
|
|
133
|
+
w.forEach((condition) => {
|
|
134
|
+
let { field: _field, value: _value, operator = "=", connector = "AND" } = condition;
|
|
135
|
+
let value = _value;
|
|
136
|
+
let field = getFieldName({
|
|
137
|
+
model,
|
|
138
|
+
field: _field
|
|
139
|
+
});
|
|
140
|
+
const expr = (eb) => {
|
|
141
|
+
if (operator.toLowerCase() === "in") return eb(field, "in", Array.isArray(value) ? value : [value]);
|
|
142
|
+
if (operator.toLowerCase() === "not_in") return eb(field, "not in", Array.isArray(value) ? value : [value]);
|
|
143
|
+
if (operator === "contains") return eb(field, "like", `%${value}%`);
|
|
144
|
+
if (operator === "starts_with") return eb(field, "like", `${value}%`);
|
|
145
|
+
if (operator === "ends_with") return eb(field, "like", `%${value}`);
|
|
146
|
+
if (operator === "eq") return eb(field, "=", value);
|
|
147
|
+
if (operator === "ne") return eb(field, "<>", value);
|
|
148
|
+
if (operator === "gt") return eb(field, ">", value);
|
|
149
|
+
if (operator === "gte") return eb(field, ">=", value);
|
|
150
|
+
if (operator === "lt") return eb(field, "<", value);
|
|
151
|
+
if (operator === "lte") return eb(field, "<=", value);
|
|
152
|
+
return eb(field, operator, value);
|
|
153
|
+
};
|
|
154
|
+
if (connector === "OR") conditions.or.push(expr);
|
|
155
|
+
else conditions.and.push(expr);
|
|
156
|
+
});
|
|
157
|
+
return {
|
|
158
|
+
and: conditions.and.length ? conditions.and : null,
|
|
159
|
+
or: conditions.or.length ? conditions.or : null
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
create: ({ data, model }) => withDb(async (db) => {
|
|
164
|
+
const builder = db.insertInto(model).values(data);
|
|
165
|
+
return await withReturning(data, builder, model, []);
|
|
166
|
+
}),
|
|
167
|
+
findOne: ({ model, where, select }) => withDb(async (db) => {
|
|
168
|
+
const { and, or } = convertWhereClause(model, where);
|
|
169
|
+
let query = db.selectFrom(model).selectAll();
|
|
170
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
171
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
172
|
+
const res = await query.executeTakeFirst();
|
|
173
|
+
if (!res) return null;
|
|
174
|
+
return res;
|
|
175
|
+
}),
|
|
176
|
+
findMany: ({ model, where, limit, offset, sortBy }) => withDb(async (db) => {
|
|
177
|
+
const { and, or } = convertWhereClause(model, where);
|
|
178
|
+
let query = db.selectFrom(model);
|
|
179
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
180
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
181
|
+
if (config?.type === "mssql") {
|
|
182
|
+
if (!offset) query = query.top(limit || 100);
|
|
183
|
+
} else query = query.limit(limit || 100);
|
|
184
|
+
if (sortBy) query = query.orderBy(getFieldName({
|
|
185
|
+
model,
|
|
186
|
+
field: sortBy.field
|
|
187
|
+
}), sortBy.direction);
|
|
188
|
+
if (offset) {
|
|
189
|
+
if (config?.type === "mssql") {
|
|
190
|
+
if (!sortBy) query = query.orderBy(getFieldName({
|
|
191
|
+
model,
|
|
192
|
+
field: "id"
|
|
193
|
+
}));
|
|
194
|
+
query = query.offset(offset).fetch(limit || 100);
|
|
195
|
+
} else query = query.offset(offset);
|
|
196
|
+
}
|
|
197
|
+
const res = await query.selectAll().execute();
|
|
198
|
+
if (!res) return [];
|
|
199
|
+
return res;
|
|
200
|
+
}),
|
|
201
|
+
update: ({ model, where, update: values }) => withDb(async (db) => {
|
|
202
|
+
const { and, or } = convertWhereClause(model, where);
|
|
203
|
+
let query = db.updateTable(model).set(values);
|
|
204
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
205
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
206
|
+
return await withReturning(values, query, model, where);
|
|
207
|
+
}),
|
|
208
|
+
updateMany: ({ model, where, update: values }) => withDb(async (db) => {
|
|
209
|
+
const { and, or } = convertWhereClause(model, where);
|
|
210
|
+
let query = db.updateTable(model).set(values);
|
|
211
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
212
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
213
|
+
return (await query.execute()).length;
|
|
214
|
+
}),
|
|
215
|
+
count: ({ model, where }) => withDb(async (db) => {
|
|
216
|
+
const { and, or } = convertWhereClause(model, where);
|
|
217
|
+
let query = db.selectFrom(model).select(db.fn.count("id").as("count"));
|
|
218
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
219
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
220
|
+
const res = await query.execute();
|
|
221
|
+
if (typeof res[0].count === "number") return res[0].count;
|
|
222
|
+
if (typeof res[0].count === "bigint") return Number(res[0].count);
|
|
223
|
+
return parseInt(res[0].count);
|
|
224
|
+
}),
|
|
225
|
+
delete: ({ model, where }) => withDb(async (db) => {
|
|
226
|
+
const { and, or } = convertWhereClause(model, where);
|
|
227
|
+
let query = db.deleteFrom(model);
|
|
228
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
229
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
230
|
+
await query.execute();
|
|
231
|
+
}),
|
|
232
|
+
deleteMany: ({ model, where }) => withDb(async (db) => {
|
|
233
|
+
const { and, or } = convertWhereClause(model, where);
|
|
234
|
+
let query = db.deleteFrom(model);
|
|
235
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
236
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
237
|
+
return (await query.execute()).length;
|
|
238
|
+
}),
|
|
239
|
+
options: config
|
|
240
|
+
};
|
|
241
|
+
};
|
|
242
|
+
};
|
|
243
|
+
let adapterOptions = null;
|
|
244
|
+
adapterOptions = {
|
|
245
|
+
config: {
|
|
246
|
+
adapterId: "kysely",
|
|
247
|
+
adapterName: "Kysely Adapter",
|
|
248
|
+
usePlural: config?.usePlural,
|
|
249
|
+
debugLogs: config?.debugLogs,
|
|
250
|
+
supportsBooleans: config?.type === "sqlite" || config?.type === "mssql" || config?.type === "mysql" || !config?.type ? false : true,
|
|
251
|
+
supportsDates: config?.type === "sqlite" || config?.type === "mssql" || !config?.type ? false : true,
|
|
252
|
+
supportsJSON: false,
|
|
253
|
+
transaction: config?.transaction ?? false ? (cb) => withDb((db) => db.transaction().execute(((trx) => {
|
|
254
|
+
return cb(require_adapter_factory.createAdapterFactory({
|
|
255
|
+
config: adapterOptions.config,
|
|
256
|
+
adapter: createCustomAdapter(trx)
|
|
257
|
+
})(lazyOptions));
|
|
258
|
+
}))) : false
|
|
259
|
+
},
|
|
260
|
+
adapter: createCustomAdapter(db)
|
|
261
|
+
};
|
|
262
|
+
const adapter = require_adapter_factory.createAdapterFactory(adapterOptions);
|
|
263
|
+
return (options) => {
|
|
264
|
+
lazyOptions = options;
|
|
265
|
+
return adapter(options);
|
|
266
|
+
};
|
|
267
|
+
};
|
|
268
|
+
exports.createKyselyAdapter = createKyselyAdapter;
|
|
269
|
+
exports.getKyselyDatabaseType = getKyselyDatabaseType;
|
|
270
|
+
exports.kyselyAdapter = kyselyAdapter;
|