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,26 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../hono-DOM31WQz.cjs";
|
|
1
|
+
import { ht as FaireAuthOptions, qt as KyselyDatabaseType } from "../../shared.cjs";
|
|
3
2
|
import { DBAdapter, DBAdapterDebugLogOption } from "@faire-auth/core/db/adapter";
|
|
4
3
|
import { Kysely } from "kysely";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export declare function getKyselyDatabaseType(db: FaireAuthOptions["database"]): KyselyDatabaseType | null;
|
|
5
|
+
export declare const createKyselyAdapter: (config: FaireAuthOptions) => {
|
|
6
|
+
kysely: any;
|
|
7
|
+
databaseType: any;
|
|
8
|
+
transaction: any;
|
|
9
|
+
} | {
|
|
9
10
|
kysely: Kysely<any> | null;
|
|
10
11
|
databaseType: KyselyDatabaseType | null;
|
|
11
12
|
transaction: undefined;
|
|
12
13
|
initialize(): Promise<void>;
|
|
13
|
-
} | {
|
|
14
|
-
kysely: null;
|
|
15
|
-
databaseType: null;
|
|
16
|
-
transaction: undefined;
|
|
17
|
-
} | {
|
|
18
|
-
kysely: Kysely<any>;
|
|
19
|
-
databaseType: "postgres" | "mysql" | "sqlite" | "mssql";
|
|
20
|
-
transaction: boolean | undefined;
|
|
21
14
|
};
|
|
22
|
-
//#endregion
|
|
23
|
-
//#region src/adapters/kysely-adapter/kysely-adapter.d.ts
|
|
24
15
|
interface KyselyAdapterConfig {
|
|
25
16
|
/**
|
|
26
17
|
* Database type.
|
|
@@ -47,6 +38,5 @@ interface KyselyAdapterConfig {
|
|
|
47
38
|
*/
|
|
48
39
|
transaction?: boolean | undefined;
|
|
49
40
|
}
|
|
50
|
-
declare const kyselyAdapter: (db: Kysely<any> | Promise<Kysely<any>>, config?: KyselyAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
|
|
51
|
-
|
|
52
|
-
export { KyselyDatabaseType, createKyselyAdapter, getKyselyDatabaseType, kyselyAdapter };
|
|
41
|
+
export declare const kyselyAdapter: (db: Kysely<any> | Promise<Kysely<any>>, config?: KyselyAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
|
|
42
|
+
export { KyselyDatabaseType };
|
|
@@ -1,26 +1,17 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../hono-D0VqxVy1.mjs";
|
|
1
|
+
import { Jt as KyselyDatabaseType, gt as FaireAuthOptions } from "../../shared.mjs";
|
|
3
2
|
import { Kysely } from "kysely";
|
|
4
3
|
import { DBAdapter, DBAdapterDebugLogOption } from "@faire-auth/core/db/adapter";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
export declare function getKyselyDatabaseType(db: FaireAuthOptions["database"]): KyselyDatabaseType | null;
|
|
5
|
+
export declare const createKyselyAdapter: (config: FaireAuthOptions) => {
|
|
6
|
+
kysely: any;
|
|
7
|
+
databaseType: any;
|
|
8
|
+
transaction: any;
|
|
9
|
+
} | {
|
|
9
10
|
kysely: Kysely<any> | null;
|
|
10
11
|
databaseType: KyselyDatabaseType | null;
|
|
11
12
|
transaction: undefined;
|
|
12
13
|
initialize(): Promise<void>;
|
|
13
|
-
} | {
|
|
14
|
-
kysely: null;
|
|
15
|
-
databaseType: null;
|
|
16
|
-
transaction: undefined;
|
|
17
|
-
} | {
|
|
18
|
-
kysely: Kysely<any>;
|
|
19
|
-
databaseType: "postgres" | "mysql" | "sqlite" | "mssql";
|
|
20
|
-
transaction: boolean | undefined;
|
|
21
14
|
};
|
|
22
|
-
//#endregion
|
|
23
|
-
//#region src/adapters/kysely-adapter/kysely-adapter.d.ts
|
|
24
15
|
interface KyselyAdapterConfig {
|
|
25
16
|
/**
|
|
26
17
|
* Database type.
|
|
@@ -47,6 +38,5 @@ interface KyselyAdapterConfig {
|
|
|
47
38
|
*/
|
|
48
39
|
transaction?: boolean | undefined;
|
|
49
40
|
}
|
|
50
|
-
declare const kyselyAdapter: (db: Kysely<any> | Promise<Kysely<any>>, config?: KyselyAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
|
|
51
|
-
|
|
52
|
-
export { KyselyDatabaseType, createKyselyAdapter, getKyselyDatabaseType, kyselyAdapter };
|
|
41
|
+
export declare const kyselyAdapter: (db: Kysely<any> | Promise<Kysely<any>>, config?: KyselyAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
|
|
42
|
+
export { KyselyDatabaseType };
|
|
@@ -1,9 +1,267 @@
|
|
|
1
|
-
import "../../
|
|
2
|
-
import "
|
|
3
|
-
import "
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
import { t as createAdapterFactory } from "../../adapter-factory-qPVW8x9-.mjs";
|
|
2
|
+
import { isPromise } from "@faire-auth/core/static";
|
|
3
|
+
import { Kysely, MssqlDialect, MysqlDialect, PostgresDialect, SqliteDialect } from "kysely";
|
|
4
|
+
// src/adapters/kysely-adapter/dialect.ts
|
|
5
|
+
function getKyselyDatabaseType(db) {
|
|
6
|
+
if (!db) return null;
|
|
7
|
+
if ("dialect" in db) return getKyselyDatabaseType(db.dialect);
|
|
8
|
+
if ("createDriver" in db) {
|
|
9
|
+
if (db instanceof SqliteDialect) return "sqlite";
|
|
10
|
+
if (db instanceof MysqlDialect) return "mysql";
|
|
11
|
+
if (db instanceof PostgresDialect) return "postgres";
|
|
12
|
+
if (db instanceof MssqlDialect) return "mssql";
|
|
13
|
+
}
|
|
14
|
+
if ("aggregate" in db) return "sqlite";
|
|
15
|
+
if ("getConnection" in db) return "mysql";
|
|
16
|
+
if ("connect" in db) return "postgres";
|
|
17
|
+
if ("fileControl" in db) return "sqlite";
|
|
18
|
+
if ("open" in db && "close" in db && "prepare" in db) return "sqlite";
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const createKyselyAdapter = (config) => {
|
|
22
|
+
const db = config.database;
|
|
23
|
+
if (!db) return {
|
|
24
|
+
kysely: null,
|
|
25
|
+
databaseType: null,
|
|
26
|
+
transaction: void 0
|
|
27
|
+
};
|
|
28
|
+
if ("db" in db) return {
|
|
29
|
+
kysely: db.db,
|
|
30
|
+
databaseType: db.type,
|
|
31
|
+
transaction: db.transaction
|
|
32
|
+
};
|
|
33
|
+
if ("dialect" in db) return {
|
|
34
|
+
kysely: new Kysely({ dialect: db.dialect }),
|
|
35
|
+
databaseType: db.type,
|
|
36
|
+
transaction: db.transaction
|
|
37
|
+
};
|
|
38
|
+
let dialect = void 0;
|
|
39
|
+
const databaseType = getKyselyDatabaseType(db);
|
|
40
|
+
if ("createDriver" in db) dialect = db;
|
|
41
|
+
if ("aggregate" in db && !("createSession" in db)) dialect = new SqliteDialect({ database: db });
|
|
42
|
+
if ("getConnection" in db) dialect = new MysqlDialect(db);
|
|
43
|
+
if ("connect" in db) dialect = new PostgresDialect({ pool: db });
|
|
44
|
+
const toReturn = {
|
|
45
|
+
kysely: dialect ? new Kysely({ dialect }) : null,
|
|
46
|
+
databaseType,
|
|
47
|
+
transaction: void 0,
|
|
48
|
+
async initialize() {
|
|
49
|
+
if (toReturn.kysely == null) {
|
|
50
|
+
if ("fileControl" in db) {
|
|
51
|
+
console.log("found file control");
|
|
52
|
+
const { BunSqliteDialect } = await import("../../bun-sqlite-dialect-BiZBuEF6.mjs");
|
|
53
|
+
dialect = new BunSqliteDialect({ database: db });
|
|
54
|
+
}
|
|
55
|
+
if ("createSession" in db && typeof window === "undefined") {
|
|
56
|
+
console.log("found create session");
|
|
57
|
+
let DatabaseSync = void 0;
|
|
58
|
+
try {
|
|
59
|
+
let nodeSqlite = "node:sqlite";
|
|
60
|
+
({DatabaseSync} = await import(
|
|
61
|
+
/* @vite-ignore */
|
|
62
|
+
/* webpackIgnore: true */
|
|
63
|
+
nodeSqlite
|
|
64
|
+
));
|
|
65
|
+
} catch (error) {
|
|
66
|
+
console.log("caught");
|
|
67
|
+
if (error !== null && typeof error === "object" && "code" in error && error.code !== "ERR_UNKNOWN_BUILTIN_MODULE") throw error;
|
|
68
|
+
}
|
|
69
|
+
console.log("import dialect");
|
|
70
|
+
if (DatabaseSync && db instanceof DatabaseSync) {
|
|
71
|
+
const { NodeSqliteDialect } = await import("../../node-sqlite-dialect-BMVOjEMh.mjs");
|
|
72
|
+
dialect = new NodeSqliteDialect({ database: db });
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (dialect) toReturn.kysely = new Kysely({ dialect });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
return toReturn;
|
|
80
|
+
};
|
|
81
|
+
// src/adapters/kysely-adapter/kysely-adapter.ts
|
|
82
|
+
const withDbInit = (db, work) => async (fn) => {
|
|
83
|
+
const rdb = isPromise(db) ? await db : db;
|
|
84
|
+
if (work) work(rdb);
|
|
85
|
+
return fn(rdb);
|
|
86
|
+
};
|
|
87
|
+
const kyselyAdapter = (db, config) => {
|
|
88
|
+
let lazyOptions = null;
|
|
89
|
+
const withDb = withDbInit(db);
|
|
90
|
+
const createCustomAdapter = (db) => {
|
|
91
|
+
return ({ getFieldName }) => {
|
|
92
|
+
const withReturningInit = (db) => async (values, builder, model, where) => {
|
|
93
|
+
let res;
|
|
94
|
+
if (config?.type === "mysql") {
|
|
95
|
+
await builder.execute();
|
|
96
|
+
const field = values.id ? "id" : where.length > 0 && where[0]?.field ? where[0].field : "id";
|
|
97
|
+
if (!values.id && where.length === 0) {
|
|
98
|
+
res = await db.selectFrom(model).selectAll().orderBy(getFieldName({
|
|
99
|
+
model,
|
|
100
|
+
field
|
|
101
|
+
}), "desc").limit(1).executeTakeFirst();
|
|
102
|
+
return res;
|
|
103
|
+
}
|
|
104
|
+
const value = values[field] || where[0]?.value;
|
|
105
|
+
res = await db.selectFrom(model).selectAll().orderBy(getFieldName({
|
|
106
|
+
model,
|
|
107
|
+
field
|
|
108
|
+
}), "desc").where(getFieldName({
|
|
109
|
+
model,
|
|
110
|
+
field
|
|
111
|
+
}), "=", value).limit(1).executeTakeFirst();
|
|
112
|
+
return res;
|
|
113
|
+
}
|
|
114
|
+
if (config?.type === "mssql") {
|
|
115
|
+
res = await builder.outputAll("inserted").executeTakeFirst();
|
|
116
|
+
return res;
|
|
117
|
+
}
|
|
118
|
+
res = await builder.returningAll().executeTakeFirst();
|
|
119
|
+
return res;
|
|
120
|
+
};
|
|
121
|
+
let withReturning;
|
|
122
|
+
const withDb = withDbInit(db, (db) => withReturning ??= withReturningInit(db));
|
|
123
|
+
function convertWhereClause(model, w) {
|
|
124
|
+
if (!w) return {
|
|
125
|
+
and: null,
|
|
126
|
+
or: null
|
|
127
|
+
};
|
|
128
|
+
const conditions = {
|
|
129
|
+
and: [],
|
|
130
|
+
or: []
|
|
131
|
+
};
|
|
132
|
+
w.forEach((condition) => {
|
|
133
|
+
let { field: _field, value: _value, operator = "=", connector = "AND" } = condition;
|
|
134
|
+
let value = _value;
|
|
135
|
+
let field = getFieldName({
|
|
136
|
+
model,
|
|
137
|
+
field: _field
|
|
138
|
+
});
|
|
139
|
+
const expr = (eb) => {
|
|
140
|
+
if (operator.toLowerCase() === "in") return eb(field, "in", Array.isArray(value) ? value : [value]);
|
|
141
|
+
if (operator.toLowerCase() === "not_in") return eb(field, "not in", Array.isArray(value) ? value : [value]);
|
|
142
|
+
if (operator === "contains") return eb(field, "like", `%${value}%`);
|
|
143
|
+
if (operator === "starts_with") return eb(field, "like", `${value}%`);
|
|
144
|
+
if (operator === "ends_with") return eb(field, "like", `%${value}`);
|
|
145
|
+
if (operator === "eq") return eb(field, "=", value);
|
|
146
|
+
if (operator === "ne") return eb(field, "<>", value);
|
|
147
|
+
if (operator === "gt") return eb(field, ">", value);
|
|
148
|
+
if (operator === "gte") return eb(field, ">=", value);
|
|
149
|
+
if (operator === "lt") return eb(field, "<", value);
|
|
150
|
+
if (operator === "lte") return eb(field, "<=", value);
|
|
151
|
+
return eb(field, operator, value);
|
|
152
|
+
};
|
|
153
|
+
if (connector === "OR") conditions.or.push(expr);
|
|
154
|
+
else conditions.and.push(expr);
|
|
155
|
+
});
|
|
156
|
+
return {
|
|
157
|
+
and: conditions.and.length ? conditions.and : null,
|
|
158
|
+
or: conditions.or.length ? conditions.or : null
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
create: ({ data, model }) => withDb(async (db) => {
|
|
163
|
+
const builder = db.insertInto(model).values(data);
|
|
164
|
+
return await withReturning(data, builder, model, []);
|
|
165
|
+
}),
|
|
166
|
+
findOne: ({ model, where, select }) => withDb(async (db) => {
|
|
167
|
+
const { and, or } = convertWhereClause(model, where);
|
|
168
|
+
let query = db.selectFrom(model).selectAll();
|
|
169
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
170
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
171
|
+
const res = await query.executeTakeFirst();
|
|
172
|
+
if (!res) return null;
|
|
173
|
+
return res;
|
|
174
|
+
}),
|
|
175
|
+
findMany: ({ model, where, limit, offset, sortBy }) => withDb(async (db) => {
|
|
176
|
+
const { and, or } = convertWhereClause(model, where);
|
|
177
|
+
let query = db.selectFrom(model);
|
|
178
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
179
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
180
|
+
if (config?.type === "mssql") {
|
|
181
|
+
if (!offset) query = query.top(limit || 100);
|
|
182
|
+
} else query = query.limit(limit || 100);
|
|
183
|
+
if (sortBy) query = query.orderBy(getFieldName({
|
|
184
|
+
model,
|
|
185
|
+
field: sortBy.field
|
|
186
|
+
}), sortBy.direction);
|
|
187
|
+
if (offset) {
|
|
188
|
+
if (config?.type === "mssql") {
|
|
189
|
+
if (!sortBy) query = query.orderBy(getFieldName({
|
|
190
|
+
model,
|
|
191
|
+
field: "id"
|
|
192
|
+
}));
|
|
193
|
+
query = query.offset(offset).fetch(limit || 100);
|
|
194
|
+
} else query = query.offset(offset);
|
|
195
|
+
}
|
|
196
|
+
const res = await query.selectAll().execute();
|
|
197
|
+
if (!res) return [];
|
|
198
|
+
return res;
|
|
199
|
+
}),
|
|
200
|
+
update: ({ model, where, update: values }) => withDb(async (db) => {
|
|
201
|
+
const { and, or } = convertWhereClause(model, where);
|
|
202
|
+
let query = db.updateTable(model).set(values);
|
|
203
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
204
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
205
|
+
return await withReturning(values, query, model, where);
|
|
206
|
+
}),
|
|
207
|
+
updateMany: ({ model, where, update: values }) => withDb(async (db) => {
|
|
208
|
+
const { and, or } = convertWhereClause(model, where);
|
|
209
|
+
let query = db.updateTable(model).set(values);
|
|
210
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
211
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
212
|
+
return (await query.execute()).length;
|
|
213
|
+
}),
|
|
214
|
+
count: ({ model, where }) => withDb(async (db) => {
|
|
215
|
+
const { and, or } = convertWhereClause(model, where);
|
|
216
|
+
let query = db.selectFrom(model).select(db.fn.count("id").as("count"));
|
|
217
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
218
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
219
|
+
const res = await query.execute();
|
|
220
|
+
if (typeof res[0].count === "number") return res[0].count;
|
|
221
|
+
if (typeof res[0].count === "bigint") return Number(res[0].count);
|
|
222
|
+
return parseInt(res[0].count);
|
|
223
|
+
}),
|
|
224
|
+
delete: ({ model, where }) => withDb(async (db) => {
|
|
225
|
+
const { and, or } = convertWhereClause(model, where);
|
|
226
|
+
let query = db.deleteFrom(model);
|
|
227
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
228
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
229
|
+
await query.execute();
|
|
230
|
+
}),
|
|
231
|
+
deleteMany: ({ model, where }) => withDb(async (db) => {
|
|
232
|
+
const { and, or } = convertWhereClause(model, where);
|
|
233
|
+
let query = db.deleteFrom(model);
|
|
234
|
+
if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
|
|
235
|
+
if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
|
|
236
|
+
return (await query.execute()).length;
|
|
237
|
+
}),
|
|
238
|
+
options: config
|
|
239
|
+
};
|
|
240
|
+
};
|
|
241
|
+
};
|
|
242
|
+
let adapterOptions = null;
|
|
243
|
+
adapterOptions = {
|
|
244
|
+
config: {
|
|
245
|
+
adapterId: "kysely",
|
|
246
|
+
adapterName: "Kysely Adapter",
|
|
247
|
+
usePlural: config?.usePlural,
|
|
248
|
+
debugLogs: config?.debugLogs,
|
|
249
|
+
supportsBooleans: config?.type === "sqlite" || config?.type === "mssql" || config?.type === "mysql" || !config?.type ? false : true,
|
|
250
|
+
supportsDates: config?.type === "sqlite" || config?.type === "mssql" || !config?.type ? false : true,
|
|
251
|
+
supportsJSON: false,
|
|
252
|
+
transaction: config?.transaction ?? false ? (cb) => withDb((db) => db.transaction().execute(((trx) => {
|
|
253
|
+
return cb(createAdapterFactory({
|
|
254
|
+
config: adapterOptions.config,
|
|
255
|
+
adapter: createCustomAdapter(trx)
|
|
256
|
+
})(lazyOptions));
|
|
257
|
+
}))) : false
|
|
258
|
+
},
|
|
259
|
+
adapter: createCustomAdapter(db)
|
|
260
|
+
};
|
|
261
|
+
const adapter = createAdapterFactory(adapterOptions);
|
|
262
|
+
return (options) => {
|
|
263
|
+
lazyOptions = options;
|
|
264
|
+
return adapter(options);
|
|
265
|
+
};
|
|
266
|
+
};
|
|
267
|
+
export { createKyselyAdapter, getKyselyDatabaseType, kyselyAdapter };
|
|
@@ -1,9 +1,146 @@
|
|
|
1
|
-
|
|
2
|
-
require(
|
|
3
|
-
require(
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_adapter_factory = require("../../adapter-factory-u8r3oTez.cjs");
|
|
3
|
+
let _faire_auth_core_env = require("@faire-auth/core/env");
|
|
4
|
+
// src/adapters/memory-adapter/memory-adapter.ts
|
|
5
|
+
const memoryAdapter = (db, config) => {
|
|
6
|
+
let lazyOptions = null;
|
|
7
|
+
let adapterCreator = require_adapter_factory.createAdapterFactory({
|
|
8
|
+
config: {
|
|
9
|
+
adapterId: "memory",
|
|
10
|
+
adapterName: "Memory Adapter",
|
|
11
|
+
usePlural: false,
|
|
12
|
+
debugLogs: config?.debugLogs || false,
|
|
13
|
+
customTransformInput(props) {
|
|
14
|
+
if (props.options.advanced?.database?.useNumberId && props.field === "id" && props.action === "create") return db[props.model].length + 1;
|
|
15
|
+
return props.data;
|
|
16
|
+
},
|
|
17
|
+
transaction: async (cb) => {
|
|
18
|
+
let clone = structuredClone(db);
|
|
19
|
+
try {
|
|
20
|
+
return await cb(adapterCreator(lazyOptions));
|
|
21
|
+
} catch (error) {
|
|
22
|
+
Object.keys(db).forEach((key) => {
|
|
23
|
+
db[key] = clone[key];
|
|
24
|
+
});
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
},
|
|
29
|
+
adapter: ({ getFieldName, options, debugLog }) => {
|
|
30
|
+
function convertWhereClause(where, model) {
|
|
31
|
+
const table = db[model];
|
|
32
|
+
if (!table) {
|
|
33
|
+
_faire_auth_core_env.logger.error(`[MemoryAdapter] Model ${model} not found in the DB`, Object.keys(db));
|
|
34
|
+
throw new Error(`Model ${model} not found`);
|
|
35
|
+
}
|
|
36
|
+
const evalClause = (record, clause) => {
|
|
37
|
+
const { field, value, operator } = clause;
|
|
38
|
+
switch (operator) {
|
|
39
|
+
case "in":
|
|
40
|
+
if (!Array.isArray(value)) throw new Error("Value must be an array");
|
|
41
|
+
return value.includes(record[field]);
|
|
42
|
+
case "not_in":
|
|
43
|
+
if (!Array.isArray(value)) throw new Error("Value must be an array");
|
|
44
|
+
return !value.includes(record[field]);
|
|
45
|
+
case "contains": return record[field].includes(value);
|
|
46
|
+
case "starts_with": return record[field].startsWith(value);
|
|
47
|
+
case "ends_with": return record[field].endsWith(value);
|
|
48
|
+
case "ne": return record[field] !== value;
|
|
49
|
+
case "gt": return value != null && Boolean(record[field] > value);
|
|
50
|
+
case "gte": return value != null && Boolean(record[field] >= value);
|
|
51
|
+
case "lt": return value != null && Boolean(record[field] < value);
|
|
52
|
+
case "lte": return value != null && Boolean(record[field] <= value);
|
|
53
|
+
default: return record[field] === value;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
return table.filter((record) => {
|
|
57
|
+
if (!where.length || where.length === 0) return true;
|
|
58
|
+
let result = evalClause(record, where[0]);
|
|
59
|
+
for (const clause of where) {
|
|
60
|
+
const clauseResult = evalClause(record, clause);
|
|
61
|
+
if (clause.connector === "OR") result = result || clauseResult;
|
|
62
|
+
else result = result && clauseResult;
|
|
63
|
+
}
|
|
64
|
+
return result;
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
return {
|
|
68
|
+
create: async ({ model, data }) => {
|
|
69
|
+
if (options.advanced?.database?.useNumberId) data.id = db[model].length + 1;
|
|
70
|
+
if (!db[model]) db[model] = [];
|
|
71
|
+
db[model].push(data);
|
|
72
|
+
return data;
|
|
73
|
+
},
|
|
74
|
+
findOne: async ({ model, where }) => {
|
|
75
|
+
return convertWhereClause(where, model)[0] || null;
|
|
76
|
+
},
|
|
77
|
+
findMany: async ({ model, where, sortBy, limit, offset }) => {
|
|
78
|
+
let table = db[model];
|
|
79
|
+
if (where) table = convertWhereClause(where, model);
|
|
80
|
+
if (sortBy) table = table.sort((a, b) => {
|
|
81
|
+
const field = getFieldName({
|
|
82
|
+
model,
|
|
83
|
+
field: sortBy.field
|
|
84
|
+
});
|
|
85
|
+
const aValue = a[field];
|
|
86
|
+
const bValue = b[field];
|
|
87
|
+
let comparison = 0;
|
|
88
|
+
if (aValue == null && bValue == null) comparison = 0;
|
|
89
|
+
else if (aValue == null) comparison = -1;
|
|
90
|
+
else if (bValue == null) comparison = 1;
|
|
91
|
+
else if (typeof aValue === "string" && typeof bValue === "string") comparison = aValue.localeCompare(bValue);
|
|
92
|
+
else if (aValue instanceof Date && bValue instanceof Date) comparison = aValue.getTime() - bValue.getTime();
|
|
93
|
+
else if (typeof aValue === "number" && typeof bValue === "number") comparison = aValue - bValue;
|
|
94
|
+
else if (typeof aValue === "boolean" && typeof bValue === "boolean") comparison = aValue === bValue ? 0 : aValue ? 1 : -1;
|
|
95
|
+
else comparison = String(aValue).localeCompare(String(bValue));
|
|
96
|
+
return sortBy.direction === "asc" ? comparison : -comparison;
|
|
97
|
+
});
|
|
98
|
+
if (offset !== void 0) table = table.slice(offset);
|
|
99
|
+
if (limit !== void 0) table = table.slice(0, limit);
|
|
100
|
+
return table || [];
|
|
101
|
+
},
|
|
102
|
+
count: async ({ model, where }) => {
|
|
103
|
+
if (where) return convertWhereClause(where, model).length;
|
|
104
|
+
return db[model].length;
|
|
105
|
+
},
|
|
106
|
+
update: async ({ model, where, update }) => {
|
|
107
|
+
const res = convertWhereClause(where, model);
|
|
108
|
+
res.forEach((record) => {
|
|
109
|
+
Object.assign(record, update);
|
|
110
|
+
});
|
|
111
|
+
return res[0] || null;
|
|
112
|
+
},
|
|
113
|
+
delete: async ({ model, where }) => {
|
|
114
|
+
const table = db[model];
|
|
115
|
+
const res = convertWhereClause(where, model);
|
|
116
|
+
db[model] = table.filter((record) => !res.includes(record));
|
|
117
|
+
},
|
|
118
|
+
deleteMany: async ({ model, where }) => {
|
|
119
|
+
const table = db[model];
|
|
120
|
+
const res = convertWhereClause(where, model);
|
|
121
|
+
let count = 0;
|
|
122
|
+
db[model] = table.filter((record) => {
|
|
123
|
+
if (res.includes(record)) {
|
|
124
|
+
count++;
|
|
125
|
+
return false;
|
|
126
|
+
}
|
|
127
|
+
return !res.includes(record);
|
|
128
|
+
});
|
|
129
|
+
return count;
|
|
130
|
+
},
|
|
131
|
+
updateMany({ model, where, update }) {
|
|
132
|
+
const res = convertWhereClause(where, model);
|
|
133
|
+
res.forEach((record) => {
|
|
134
|
+
Object.assign(record, update);
|
|
135
|
+
});
|
|
136
|
+
return res[0] || null;
|
|
137
|
+
}
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
});
|
|
141
|
+
return (options) => {
|
|
142
|
+
lazyOptions = options;
|
|
143
|
+
return adapterCreator(options);
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
exports.memoryAdapter = memoryAdapter;
|
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../hono-DOM31WQz.cjs";
|
|
1
|
+
import { ht as FaireAuthOptions } from "../../shared.cjs";
|
|
3
2
|
import { DBAdapterDebugLogOption } from "@faire-auth/core/db/adapter";
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
//#region src/adapters/memory-adapter/memory-adapter.d.ts
|
|
7
|
-
interface MemoryDB {
|
|
3
|
+
export interface MemoryDB {
|
|
8
4
|
[key: string]: any[];
|
|
9
5
|
}
|
|
10
|
-
interface MemoryAdapterConfig {
|
|
6
|
+
export interface MemoryAdapterConfig {
|
|
11
7
|
debugLogs?: DBAdapterDebugLogOption;
|
|
12
8
|
}
|
|
13
|
-
declare const memoryAdapter: (db: MemoryDB, config?: MemoryAdapterConfig) => (options: FaireAuthOptions) =>
|
|
14
|
-
//#endregion
|
|
15
|
-
export { MemoryAdapterConfig, MemoryDB, memoryAdapter };
|
|
9
|
+
export declare const memoryAdapter: (db: MemoryDB, config?: MemoryAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<O>;
|
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import "../../hono-D0VqxVy1.mjs";
|
|
3
|
-
import * as _faire_auth_core_db15 from "@faire-auth/core/db";
|
|
1
|
+
import { gt as FaireAuthOptions } from "../../shared.mjs";
|
|
4
2
|
import { DBAdapterDebugLogOption } from "@faire-auth/core/db/adapter";
|
|
5
|
-
|
|
6
|
-
//#region src/adapters/memory-adapter/memory-adapter.d.ts
|
|
7
|
-
interface MemoryDB {
|
|
3
|
+
export interface MemoryDB {
|
|
8
4
|
[key: string]: any[];
|
|
9
5
|
}
|
|
10
|
-
interface MemoryAdapterConfig {
|
|
6
|
+
export interface MemoryAdapterConfig {
|
|
11
7
|
debugLogs?: DBAdapterDebugLogOption;
|
|
12
8
|
}
|
|
13
|
-
declare const memoryAdapter: (db: MemoryDB, config?: MemoryAdapterConfig) => (options: FaireAuthOptions) =>
|
|
14
|
-
//#endregion
|
|
15
|
-
export { MemoryAdapterConfig, MemoryDB, memoryAdapter };
|
|
9
|
+
export declare const memoryAdapter: (db: MemoryDB, config?: MemoryAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<O>;
|