faire-auth 1.0.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/LICENSE +661 -0
- package/README.md +34 -0
- package/dist/access-B5bBI4uT.mjs +39 -0
- package/dist/access-Crt-IJ2P.cjs +51 -0
- package/dist/adapter-factory-BXei1QRX.mjs +881 -0
- package/dist/adapter-factory-DT-_2aHJ.cjs +893 -0
- package/dist/adapters/drizzle-adapter/index.cjs +208 -0
- package/dist/adapters/drizzle-adapter/index.d.cts +48 -0
- package/dist/adapters/drizzle-adapter/index.d.mts +48 -0
- package/dist/adapters/drizzle-adapter/index.mjs +207 -0
- package/dist/adapters/index.cjs +23 -0
- package/dist/adapters/index.d.cts +157 -0
- package/dist/adapters/index.d.mts +157 -0
- package/dist/adapters/index.mjs +17 -0
- package/dist/adapters/kysely-adapter/index.cjs +11 -0
- package/dist/adapters/kysely-adapter/index.d.cts +52 -0
- package/dist/adapters/kysely-adapter/index.d.mts +52 -0
- package/dist/adapters/kysely-adapter/index.mjs +9 -0
- package/dist/adapters/memory-adapter/index.cjs +9 -0
- package/dist/adapters/memory-adapter/index.d.cts +15 -0
- package/dist/adapters/memory-adapter/index.d.mts +15 -0
- package/dist/adapters/memory-adapter/index.mjs +9 -0
- package/dist/adapters/mongodb-adapter/index.cjs +9 -0
- package/dist/adapters/mongodb-adapter/index.d.cts +4 -0
- package/dist/adapters/mongodb-adapter/index.d.mts +4 -0
- package/dist/adapters/mongodb-adapter/index.mjs +9 -0
- package/dist/adapters/prisma-adapter/index.cjs +156 -0
- package/dist/adapters/prisma-adapter/index.d.cts +35 -0
- package/dist/adapters/prisma-adapter/index.d.mts +35 -0
- package/dist/adapters/prisma-adapter/index.mjs +155 -0
- package/dist/adapters/test.cjs +797 -0
- package/dist/adapters/test.d.cts +82 -0
- package/dist/adapters/test.d.mts +82 -0
- package/dist/adapters/test.mjs +793 -0
- package/dist/api/index.cjs +20 -0
- package/dist/api/index.d.cts +3 -0
- package/dist/api/index.d.mts +3 -0
- package/dist/api/index.mjs +20 -0
- package/dist/api/middleware/index.cjs +16 -0
- package/dist/api/middleware/index.d.cts +16 -0
- package/dist/api/middleware/index.d.mts +16 -0
- package/dist/api/middleware/index.mjs +11 -0
- package/dist/api-Bm89BLgN.cjs +1899 -0
- package/dist/api-_B7qO28y.mjs +1892 -0
- package/dist/auth-Bo9PDt5j.cjs +739 -0
- package/dist/auth-Ds4AG4h4.mjs +709 -0
- package/dist/bearer-0SeEmaS4.mjs +54 -0
- package/dist/bearer-CHeREcGT.cjs +60 -0
- package/dist/bun-sqlite-dialect-CfkBo2v5.mjs +155 -0
- package/dist/bun-sqlite-dialect-wuaC2-gh.cjs +156 -0
- package/dist/chunk-Ceigfy4P.mjs +39 -0
- package/dist/chunk-oakRccI5.cjs +60 -0
- package/dist/client/index.cjs +22 -0
- package/dist/client/index.d.cts +8 -0
- package/dist/client/index.d.mts +8 -0
- package/dist/client/index.mjs +19 -0
- package/dist/client/lynx/index.cjs +79 -0
- package/dist/client/lynx/index.d.cts +156 -0
- package/dist/client/lynx/index.d.mts +156 -0
- package/dist/client/lynx/index.mjs +76 -0
- package/dist/client/plugins/index.cjs +11 -0
- package/dist/client/plugins/index.d.cts +17 -0
- package/dist/client/plugins/index.d.mts +17 -0
- package/dist/client/plugins/index.mjs +10 -0
- package/dist/client/react/index.cjs +79 -0
- package/dist/client/react/index.d.cts +156 -0
- package/dist/client/react/index.d.mts +156 -0
- package/dist/client/react/index.mjs +76 -0
- package/dist/client/solid/index.cjs +51 -0
- package/dist/client/solid/index.d.cts +90 -0
- package/dist/client/solid/index.d.mts +90 -0
- package/dist/client/solid/index.mjs +50 -0
- package/dist/client/svelte/index.cjs +28 -0
- package/dist/client/svelte/index.d.cts +110 -0
- package/dist/client/svelte/index.d.mts +110 -0
- package/dist/client/svelte/index.mjs +28 -0
- package/dist/client/vue/index.cjs +68 -0
- package/dist/client/vue/index.d.cts +123 -0
- package/dist/client/vue/index.d.mts +123 -0
- package/dist/client/vue/index.mjs +67 -0
- package/dist/cookies-B5xeA6i8.cjs +456 -0
- package/dist/cookies-Ch1JfQIz.mjs +367 -0
- package/dist/crypto/index.cjs +11 -0
- package/dist/crypto/index.d.cts +22 -0
- package/dist/crypto/index.d.mts +22 -0
- package/dist/crypto/index.mjs +5 -0
- package/dist/crypto-CcTxYH82.cjs +57 -0
- package/dist/crypto-CyQRFtkq.mjs +41 -0
- package/dist/db/index.cjs +40 -0
- package/dist/db/index.d.cts +4 -0
- package/dist/db/index.d.mts +4 -0
- package/dist/db/index.mjs +16 -0
- package/dist/db-BTKyYu-_.cjs +1180 -0
- package/dist/db-xiJtoDgz.mjs +1119 -0
- package/dist/defu-B0Svx_x4.cjs +34 -0
- package/dist/defu-SZkpHhbR.mjs +28 -0
- package/dist/email-verification-C-AsfJsb.cjs +247 -0
- package/dist/email-verification-CWhj2qfb.mjs +228 -0
- package/dist/hono-BEq1NYVX.cjs +526 -0
- package/dist/hono-Cdukwu5K.cjs +13 -0
- package/dist/hono-CoKYWnXA.mjs +7 -0
- package/dist/hono-Covz10jU.mjs +508 -0
- package/dist/hono-DOM31WQz.d.cts +18 -0
- package/dist/hono-DuE14mmj.d.mts +18 -0
- package/dist/index-B-WeOMzg.d.cts +13350 -0
- package/dist/index-B09P9p5_.d.cts +33 -0
- package/dist/index-B5_0QTLg.d.mts +3 -0
- package/dist/index-B7SKyR_a.d.cts +3 -0
- package/dist/index-BVHscLQl.d.cts +992 -0
- package/dist/index-C2-2QDyS.d.cts +35 -0
- package/dist/index-CTwrVluH.d.mts +41 -0
- package/dist/index-CWAqWfoZ.d.cts +27 -0
- package/dist/index-CYSShrFx.d.mts +27 -0
- package/dist/index-Qu-iJGNr.d.mts +992 -0
- package/dist/index-cs4Sh0En.d.cts +41 -0
- package/dist/index-jlessPI0.d.mts +13350 -0
- package/dist/index-ppgcFe12.d.mts +33 -0
- package/dist/index-to0RO38U.d.mts +35 -0
- package/dist/index.cjs +85 -0
- package/dist/index.d.cts +5 -0
- package/dist/index.d.mts +5 -0
- package/dist/index.mjs +27 -0
- package/dist/integrations/next-js.cjs +50 -0
- package/dist/integrations/next-js.d.cts +23 -0
- package/dist/integrations/next-js.d.mts +23 -0
- package/dist/integrations/next-js.mjs +49 -0
- package/dist/integrations/node.cjs +139 -0
- package/dist/integrations/node.d.cts +22 -0
- package/dist/integrations/node.d.mts +22 -0
- package/dist/integrations/node.mjs +134 -0
- package/dist/integrations/react-start.cjs +37 -0
- package/dist/integrations/react-start.d.cts +17 -0
- package/dist/integrations/react-start.d.mts +17 -0
- package/dist/integrations/react-start.mjs +37 -0
- package/dist/integrations/solid-start.cjs +14 -0
- package/dist/integrations/solid-start.d.cts +13 -0
- package/dist/integrations/solid-start.d.mts +13 -0
- package/dist/integrations/solid-start.mjs +13 -0
- package/dist/integrations/svelte-kit.cjs +52 -0
- package/dist/integrations/svelte-kit.d.cts +42 -0
- package/dist/integrations/svelte-kit.d.mts +42 -0
- package/dist/integrations/svelte-kit.mjs +49 -0
- package/dist/ip-B5SwXaMB.cjs +54 -0
- package/dist/ip-BjNYspCH.mjs +36 -0
- package/dist/json-B1v2qRTQ.mjs +24 -0
- package/dist/json-CcJ2HjGo.cjs +30 -0
- package/dist/kysely-adapter-Bxi7sPdG.cjs +288 -0
- package/dist/kysely-adapter-DRuoT_X8.mjs +270 -0
- package/dist/logged-CyGfp8_H.mjs +187 -0
- package/dist/logged-DQK3C64b.cjs +193 -0
- package/dist/memory-adapter-BlnDIAAX.cjs +154 -0
- package/dist/memory-adapter-Db3tsJTn.mjs +148 -0
- package/dist/middleware-CE6OhDkq.mjs +29 -0
- package/dist/middleware-CWvRH4EW.cjs +47 -0
- package/dist/mongodb-adapter-C_qGQED5.mjs +291 -0
- package/dist/mongodb-adapter-C_qfK87x.cjs +297 -0
- package/dist/node-sqlite-dialect-BfBzyOAg.mjs +155 -0
- package/dist/node-sqlite-dialect-mJWC8LWQ.cjs +156 -0
- package/dist/oauth2/index.cjs +25 -0
- package/dist/oauth2/index.d.cts +42 -0
- package/dist/oauth2/index.d.mts +42 -0
- package/dist/oauth2/index.mjs +16 -0
- package/dist/oauth2-B8M0lW9l.mjs +159 -0
- package/dist/oauth2-BLeOEi7Y.cjs +177 -0
- package/dist/origin-check-8Gajklvh.mjs +228 -0
- package/dist/origin-check-id9lTnqZ.cjs +246 -0
- package/dist/parser-CdncAl9i.cjs +83 -0
- package/dist/parser-CeAer-RM.mjs +71 -0
- package/dist/passkey-B6N20LSS.cjs +512 -0
- package/dist/passkey-DJsR_GX3.mjs +505 -0
- package/dist/plugins/access/index.cjs +4 -0
- package/dist/plugins/access/index.d.cts +2 -0
- package/dist/plugins/access/index.d.mts +2 -0
- package/dist/plugins/access/index.mjs +3 -0
- package/dist/plugins/bearer/index.cjs +7 -0
- package/dist/plugins/bearer/index.d.cts +4 -0
- package/dist/plugins/bearer/index.d.mts +4 -0
- package/dist/plugins/bearer/index.mjs +7 -0
- package/dist/plugins/index.cjs +49 -0
- package/dist/plugins/index.d.cts +9326 -0
- package/dist/plugins/index.d.mts +9326 -0
- package/dist/plugins/index.mjs +26 -0
- package/dist/plugins/passkey/index.cjs +15 -0
- package/dist/plugins/passkey/index.d.cts +4 -0
- package/dist/plugins/passkey/index.d.mts +4 -0
- package/dist/plugins/passkey/index.mjs +15 -0
- package/dist/plugins-C1lm2Wj3.cjs +5254 -0
- package/dist/plugins-Dai1QkRU.mjs +5199 -0
- package/dist/request-1NL_1lyJ.mjs +58 -0
- package/dist/request-CPNlp-DK.cjs +100 -0
- package/dist/schema-D-qjygfE.cjs +179 -0
- package/dist/schema-DTIwLLmf.mjs +125 -0
- package/dist/session-De9POJTW.cjs +641 -0
- package/dist/session-rH8ougDl.mjs +538 -0
- package/dist/social-providers/index.cjs +10 -0
- package/dist/social-providers/index.d.cts +2 -0
- package/dist/social-providers/index.d.mts +2 -0
- package/dist/social-providers/index.mjs +5 -0
- package/dist/social-providers-DcFNUT0S.cjs +13 -0
- package/dist/social-providers-DoYJhBe3.mjs +9 -0
- package/dist/state--f7fwIGh.cjs +99 -0
- package/dist/state-CqJfCIl9.mjs +86 -0
- package/dist/test-utils/index.cjs +27492 -0
- package/dist/test-utils/index.d.cts +4584 -0
- package/dist/test-utils/index.d.mts +4584 -0
- package/dist/test-utils/index.mjs +27490 -0
- package/dist/types/index.cjs +0 -0
- package/dist/types/index.d.cts +3 -0
- package/dist/types/index.d.mts +3 -0
- package/dist/types/index.mjs +1 -0
- package/dist/url-BoUuoIwZ.mjs +88 -0
- package/dist/url-D2yvKaM7.cjs +118 -0
- package/dist/utils/cookies.cjs +51 -0
- package/dist/utils/cookies.d.cts +179 -0
- package/dist/utils/cookies.d.mts +179 -0
- package/dist/utils/cookies.mjs +7 -0
- package/dist/utils-44aDDP8f.cjs +2 -0
- package/dist/utils-D4vZd1-9.mjs +4 -0
- package/dist/vanilla-Bu2PmFzE.cjs +30 -0
- package/dist/vanilla-TfHqeiC7.mjs +25 -0
- package/package.json +470 -0
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
const require_chunk = require('../../chunk-oakRccI5.cjs');
|
|
2
|
+
require('../../crypto-CcTxYH82.cjs');
|
|
3
|
+
require('../../json-CcJ2HjGo.cjs');
|
|
4
|
+
require('../../state--f7fwIGh.cjs');
|
|
5
|
+
require('../../request-CPNlp-DK.cjs');
|
|
6
|
+
require('../../utils-44aDDP8f.cjs');
|
|
7
|
+
const require_adapter_factory = require('../../adapter-factory-DT-_2aHJ.cjs');
|
|
8
|
+
let __faire_auth_core_error = require("@faire-auth/core/error");
|
|
9
|
+
|
|
10
|
+
//#region src/adapters/prisma-adapter/prisma-adapter.ts
|
|
11
|
+
const prismaAdapter = (prisma, config) => {
|
|
12
|
+
let lazyOptions = null;
|
|
13
|
+
const createCustomAdapter = (prisma$1) => ({ getFieldName }) => {
|
|
14
|
+
const db = prisma$1;
|
|
15
|
+
const convertSelect = (select, model) => {
|
|
16
|
+
if (!select || !model) return void 0;
|
|
17
|
+
return select.reduce((prev, cur) => {
|
|
18
|
+
return {
|
|
19
|
+
...prev,
|
|
20
|
+
[getFieldName({
|
|
21
|
+
model,
|
|
22
|
+
field: cur
|
|
23
|
+
})]: true
|
|
24
|
+
};
|
|
25
|
+
}, {});
|
|
26
|
+
};
|
|
27
|
+
function operatorToPrismaOperator(operator) {
|
|
28
|
+
switch (operator) {
|
|
29
|
+
case "starts_with": return "startsWith";
|
|
30
|
+
case "ends_with": return "endsWith";
|
|
31
|
+
case "ne": return "not";
|
|
32
|
+
case "not_in": return "notIn";
|
|
33
|
+
default: return operator;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
const convertWhereClause = (model, where) => {
|
|
37
|
+
if (!where || !where.length) return {};
|
|
38
|
+
if (where.length === 1) {
|
|
39
|
+
const w = where[0];
|
|
40
|
+
if (!w) return;
|
|
41
|
+
return { [getFieldName({
|
|
42
|
+
model,
|
|
43
|
+
field: w.field
|
|
44
|
+
})]: w.operator === "eq" || !w.operator ? w.value : { [operatorToPrismaOperator(w.operator)]: w.value } };
|
|
45
|
+
}
|
|
46
|
+
const and = where.filter((w) => w.connector === "AND" || !w.connector);
|
|
47
|
+
const or = where.filter((w) => w.connector === "OR");
|
|
48
|
+
const andClause = and.map((w) => {
|
|
49
|
+
return { [getFieldName({
|
|
50
|
+
model,
|
|
51
|
+
field: w.field
|
|
52
|
+
})]: w.operator === "eq" || !w.operator ? w.value : { [operatorToPrismaOperator(w.operator)]: w.value } };
|
|
53
|
+
});
|
|
54
|
+
const orClause = or.map((w) => {
|
|
55
|
+
return { [getFieldName({
|
|
56
|
+
model,
|
|
57
|
+
field: w.field
|
|
58
|
+
})]: w.operator === "eq" || !w.operator ? w.value : { [operatorToPrismaOperator(w.operator)]: w.value } };
|
|
59
|
+
});
|
|
60
|
+
return {
|
|
61
|
+
...andClause.length ? { AND: andClause } : {},
|
|
62
|
+
...orClause.length ? { OR: orClause } : {}
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
return {
|
|
66
|
+
async create({ model, data: values, select }) {
|
|
67
|
+
if (!db[model]) throw new __faire_auth_core_error.FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
68
|
+
return await db[model].create({
|
|
69
|
+
data: values,
|
|
70
|
+
select: convertSelect(select, model)
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
async findOne({ model, where, select }) {
|
|
74
|
+
const whereClause = convertWhereClause(model, where);
|
|
75
|
+
if (!db[model]) throw new __faire_auth_core_error.FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
76
|
+
return await db[model].findFirst({
|
|
77
|
+
where: whereClause,
|
|
78
|
+
select: convertSelect(select, model)
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
async findMany({ model, where, limit, offset, sortBy }) {
|
|
82
|
+
const whereClause = convertWhereClause(model, where);
|
|
83
|
+
if (!db[model]) throw new __faire_auth_core_error.FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
84
|
+
return await db[model].findMany({
|
|
85
|
+
where: whereClause,
|
|
86
|
+
take: limit || 100,
|
|
87
|
+
skip: offset || 0,
|
|
88
|
+
...sortBy?.field ? { orderBy: { [getFieldName({
|
|
89
|
+
model,
|
|
90
|
+
field: sortBy.field
|
|
91
|
+
})]: sortBy.direction === "desc" ? "desc" : "asc" } } : {}
|
|
92
|
+
});
|
|
93
|
+
},
|
|
94
|
+
async count({ model, where }) {
|
|
95
|
+
const whereClause = convertWhereClause(model, where);
|
|
96
|
+
if (!db[model]) throw new __faire_auth_core_error.FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
97
|
+
return await db[model].count({ where: whereClause });
|
|
98
|
+
},
|
|
99
|
+
async update({ model, where, update }) {
|
|
100
|
+
if (!db[model]) throw new __faire_auth_core_error.FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
101
|
+
const whereClause = convertWhereClause(model, where);
|
|
102
|
+
return await db[model].update({
|
|
103
|
+
where: whereClause,
|
|
104
|
+
data: update
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
async updateMany({ model, where, update }) {
|
|
108
|
+
const whereClause = convertWhereClause(model, where);
|
|
109
|
+
const result = await db[model].updateMany({
|
|
110
|
+
where: whereClause,
|
|
111
|
+
data: update
|
|
112
|
+
});
|
|
113
|
+
return result ? result.count : 0;
|
|
114
|
+
},
|
|
115
|
+
async delete({ model, where }) {
|
|
116
|
+
const whereClause = convertWhereClause(model, where);
|
|
117
|
+
try {
|
|
118
|
+
await db[model].delete({ where: whereClause });
|
|
119
|
+
} catch (e) {
|
|
120
|
+
if (e?.meta?.cause === "Record to delete does not exist.") return;
|
|
121
|
+
console.log(e);
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
async deleteMany({ model, where }) {
|
|
125
|
+
const whereClause = convertWhereClause(model, where);
|
|
126
|
+
const result = await db[model].deleteMany({ where: whereClause });
|
|
127
|
+
return result ? result.count : 0;
|
|
128
|
+
},
|
|
129
|
+
options: config
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
let adapterOptions = null;
|
|
133
|
+
adapterOptions = {
|
|
134
|
+
config: {
|
|
135
|
+
adapterId: "prisma",
|
|
136
|
+
adapterName: "Prisma Adapter",
|
|
137
|
+
usePlural: config.usePlural ?? false,
|
|
138
|
+
debugLogs: config.debugLogs ?? false,
|
|
139
|
+
transaction: config.transaction ?? false ? (cb) => prisma.$transaction((tx) => {
|
|
140
|
+
return cb(require_adapter_factory.createAdapterFactory({
|
|
141
|
+
config: adapterOptions.config,
|
|
142
|
+
adapter: createCustomAdapter(tx)
|
|
143
|
+
})(lazyOptions));
|
|
144
|
+
}) : false
|
|
145
|
+
},
|
|
146
|
+
adapter: createCustomAdapter(prisma)
|
|
147
|
+
};
|
|
148
|
+
const adapter = require_adapter_factory.createAdapterFactory(adapterOptions);
|
|
149
|
+
return (options) => {
|
|
150
|
+
lazyOptions = options;
|
|
151
|
+
return adapter(options);
|
|
152
|
+
};
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
//#endregion
|
|
156
|
+
exports.prismaAdapter = prismaAdapter;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { I as FaireAuthOptions } from "../../index-B-WeOMzg.cjs";
|
|
2
|
+
import "../../hono-DOM31WQz.cjs";
|
|
3
|
+
import { DBAdapter, DBAdapterDebugLogOption } from "@faire-auth/core/db/adapter";
|
|
4
|
+
|
|
5
|
+
//#region src/adapters/prisma-adapter/prisma-adapter.d.ts
|
|
6
|
+
interface PrismaConfig {
|
|
7
|
+
/**
|
|
8
|
+
* Database provider.
|
|
9
|
+
*/
|
|
10
|
+
provider: "sqlite" | "cockroachdb" | "mysql" | "postgresql" | "sqlserver" | "mongodb";
|
|
11
|
+
/**
|
|
12
|
+
* Enable debug logs for the adapter
|
|
13
|
+
*
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
debugLogs?: DBAdapterDebugLogOption;
|
|
17
|
+
/**
|
|
18
|
+
* Use plural table names
|
|
19
|
+
*
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
usePlural?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Whether to execute multiple operations in a transaction.
|
|
25
|
+
*
|
|
26
|
+
* If the database doesn't support transactions,
|
|
27
|
+
* set this to `false` and operations will be executed sequentially.
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
transaction?: boolean;
|
|
31
|
+
}
|
|
32
|
+
interface PrismaClient {}
|
|
33
|
+
declare const prismaAdapter: (prisma: PrismaClient, config: PrismaConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { PrismaConfig, prismaAdapter };
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { I as FaireAuthOptions } from "../../index-jlessPI0.mjs";
|
|
2
|
+
import "../../hono-DuE14mmj.mjs";
|
|
3
|
+
import { DBAdapter, DBAdapterDebugLogOption } from "@faire-auth/core/db/adapter";
|
|
4
|
+
|
|
5
|
+
//#region src/adapters/prisma-adapter/prisma-adapter.d.ts
|
|
6
|
+
interface PrismaConfig {
|
|
7
|
+
/**
|
|
8
|
+
* Database provider.
|
|
9
|
+
*/
|
|
10
|
+
provider: "sqlite" | "cockroachdb" | "mysql" | "postgresql" | "sqlserver" | "mongodb";
|
|
11
|
+
/**
|
|
12
|
+
* Enable debug logs for the adapter
|
|
13
|
+
*
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
debugLogs?: DBAdapterDebugLogOption;
|
|
17
|
+
/**
|
|
18
|
+
* Use plural table names
|
|
19
|
+
*
|
|
20
|
+
* @default false
|
|
21
|
+
*/
|
|
22
|
+
usePlural?: boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Whether to execute multiple operations in a transaction.
|
|
25
|
+
*
|
|
26
|
+
* If the database doesn't support transactions,
|
|
27
|
+
* set this to `false` and operations will be executed sequentially.
|
|
28
|
+
* @default false
|
|
29
|
+
*/
|
|
30
|
+
transaction?: boolean;
|
|
31
|
+
}
|
|
32
|
+
interface PrismaClient {}
|
|
33
|
+
declare const prismaAdapter: (prisma: PrismaClient, config: PrismaConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
|
|
34
|
+
//#endregion
|
|
35
|
+
export { PrismaConfig, prismaAdapter };
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
import "../../crypto-CyQRFtkq.mjs";
|
|
2
|
+
import "../../json-B1v2qRTQ.mjs";
|
|
3
|
+
import "../../state-CqJfCIl9.mjs";
|
|
4
|
+
import "../../request-1NL_1lyJ.mjs";
|
|
5
|
+
import "../../utils-D4vZd1-9.mjs";
|
|
6
|
+
import { t as createAdapterFactory } from "../../adapter-factory-BXei1QRX.mjs";
|
|
7
|
+
import { FaireAuthError } from "@faire-auth/core/error";
|
|
8
|
+
|
|
9
|
+
//#region src/adapters/prisma-adapter/prisma-adapter.ts
|
|
10
|
+
const prismaAdapter = (prisma, config) => {
|
|
11
|
+
let lazyOptions = null;
|
|
12
|
+
const createCustomAdapter = (prisma$1) => ({ getFieldName }) => {
|
|
13
|
+
const db = prisma$1;
|
|
14
|
+
const convertSelect = (select, model) => {
|
|
15
|
+
if (!select || !model) return void 0;
|
|
16
|
+
return select.reduce((prev, cur) => {
|
|
17
|
+
return {
|
|
18
|
+
...prev,
|
|
19
|
+
[getFieldName({
|
|
20
|
+
model,
|
|
21
|
+
field: cur
|
|
22
|
+
})]: true
|
|
23
|
+
};
|
|
24
|
+
}, {});
|
|
25
|
+
};
|
|
26
|
+
function operatorToPrismaOperator(operator) {
|
|
27
|
+
switch (operator) {
|
|
28
|
+
case "starts_with": return "startsWith";
|
|
29
|
+
case "ends_with": return "endsWith";
|
|
30
|
+
case "ne": return "not";
|
|
31
|
+
case "not_in": return "notIn";
|
|
32
|
+
default: return operator;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
const convertWhereClause = (model, where) => {
|
|
36
|
+
if (!where || !where.length) return {};
|
|
37
|
+
if (where.length === 1) {
|
|
38
|
+
const w = where[0];
|
|
39
|
+
if (!w) return;
|
|
40
|
+
return { [getFieldName({
|
|
41
|
+
model,
|
|
42
|
+
field: w.field
|
|
43
|
+
})]: w.operator === "eq" || !w.operator ? w.value : { [operatorToPrismaOperator(w.operator)]: w.value } };
|
|
44
|
+
}
|
|
45
|
+
const and = where.filter((w) => w.connector === "AND" || !w.connector);
|
|
46
|
+
const or = where.filter((w) => w.connector === "OR");
|
|
47
|
+
const andClause = and.map((w) => {
|
|
48
|
+
return { [getFieldName({
|
|
49
|
+
model,
|
|
50
|
+
field: w.field
|
|
51
|
+
})]: w.operator === "eq" || !w.operator ? w.value : { [operatorToPrismaOperator(w.operator)]: w.value } };
|
|
52
|
+
});
|
|
53
|
+
const orClause = or.map((w) => {
|
|
54
|
+
return { [getFieldName({
|
|
55
|
+
model,
|
|
56
|
+
field: w.field
|
|
57
|
+
})]: w.operator === "eq" || !w.operator ? w.value : { [operatorToPrismaOperator(w.operator)]: w.value } };
|
|
58
|
+
});
|
|
59
|
+
return {
|
|
60
|
+
...andClause.length ? { AND: andClause } : {},
|
|
61
|
+
...orClause.length ? { OR: orClause } : {}
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
return {
|
|
65
|
+
async create({ model, data: values, select }) {
|
|
66
|
+
if (!db[model]) throw new FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
67
|
+
return await db[model].create({
|
|
68
|
+
data: values,
|
|
69
|
+
select: convertSelect(select, model)
|
|
70
|
+
});
|
|
71
|
+
},
|
|
72
|
+
async findOne({ model, where, select }) {
|
|
73
|
+
const whereClause = convertWhereClause(model, where);
|
|
74
|
+
if (!db[model]) throw new FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
75
|
+
return await db[model].findFirst({
|
|
76
|
+
where: whereClause,
|
|
77
|
+
select: convertSelect(select, model)
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
async findMany({ model, where, limit, offset, sortBy }) {
|
|
81
|
+
const whereClause = convertWhereClause(model, where);
|
|
82
|
+
if (!db[model]) throw new FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
83
|
+
return await db[model].findMany({
|
|
84
|
+
where: whereClause,
|
|
85
|
+
take: limit || 100,
|
|
86
|
+
skip: offset || 0,
|
|
87
|
+
...sortBy?.field ? { orderBy: { [getFieldName({
|
|
88
|
+
model,
|
|
89
|
+
field: sortBy.field
|
|
90
|
+
})]: sortBy.direction === "desc" ? "desc" : "asc" } } : {}
|
|
91
|
+
});
|
|
92
|
+
},
|
|
93
|
+
async count({ model, where }) {
|
|
94
|
+
const whereClause = convertWhereClause(model, where);
|
|
95
|
+
if (!db[model]) throw new FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
96
|
+
return await db[model].count({ where: whereClause });
|
|
97
|
+
},
|
|
98
|
+
async update({ model, where, update }) {
|
|
99
|
+
if (!db[model]) throw new FaireAuthError(`Model ${model} does not exist in the database. If you haven't generated the Prisma client, you need to run 'npx prisma generate'`);
|
|
100
|
+
const whereClause = convertWhereClause(model, where);
|
|
101
|
+
return await db[model].update({
|
|
102
|
+
where: whereClause,
|
|
103
|
+
data: update
|
|
104
|
+
});
|
|
105
|
+
},
|
|
106
|
+
async updateMany({ model, where, update }) {
|
|
107
|
+
const whereClause = convertWhereClause(model, where);
|
|
108
|
+
const result = await db[model].updateMany({
|
|
109
|
+
where: whereClause,
|
|
110
|
+
data: update
|
|
111
|
+
});
|
|
112
|
+
return result ? result.count : 0;
|
|
113
|
+
},
|
|
114
|
+
async delete({ model, where }) {
|
|
115
|
+
const whereClause = convertWhereClause(model, where);
|
|
116
|
+
try {
|
|
117
|
+
await db[model].delete({ where: whereClause });
|
|
118
|
+
} catch (e) {
|
|
119
|
+
if (e?.meta?.cause === "Record to delete does not exist.") return;
|
|
120
|
+
console.log(e);
|
|
121
|
+
}
|
|
122
|
+
},
|
|
123
|
+
async deleteMany({ model, where }) {
|
|
124
|
+
const whereClause = convertWhereClause(model, where);
|
|
125
|
+
const result = await db[model].deleteMany({ where: whereClause });
|
|
126
|
+
return result ? result.count : 0;
|
|
127
|
+
},
|
|
128
|
+
options: config
|
|
129
|
+
};
|
|
130
|
+
};
|
|
131
|
+
let adapterOptions = null;
|
|
132
|
+
adapterOptions = {
|
|
133
|
+
config: {
|
|
134
|
+
adapterId: "prisma",
|
|
135
|
+
adapterName: "Prisma Adapter",
|
|
136
|
+
usePlural: config.usePlural ?? false,
|
|
137
|
+
debugLogs: config.debugLogs ?? false,
|
|
138
|
+
transaction: config.transaction ?? false ? (cb) => prisma.$transaction((tx) => {
|
|
139
|
+
return cb(createAdapterFactory({
|
|
140
|
+
config: adapterOptions.config,
|
|
141
|
+
adapter: createCustomAdapter(tx)
|
|
142
|
+
})(lazyOptions));
|
|
143
|
+
}) : false
|
|
144
|
+
},
|
|
145
|
+
adapter: createCustomAdapter(prisma)
|
|
146
|
+
};
|
|
147
|
+
const adapter = createAdapterFactory(adapterOptions);
|
|
148
|
+
return (options) => {
|
|
149
|
+
lazyOptions = options;
|
|
150
|
+
return adapter(options);
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
//#endregion
|
|
155
|
+
export { prismaAdapter };
|