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.
Files changed (221) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +34 -0
  3. package/dist/access-B5bBI4uT.mjs +39 -0
  4. package/dist/access-Crt-IJ2P.cjs +51 -0
  5. package/dist/adapter-factory-BXei1QRX.mjs +881 -0
  6. package/dist/adapter-factory-DT-_2aHJ.cjs +893 -0
  7. package/dist/adapters/drizzle-adapter/index.cjs +208 -0
  8. package/dist/adapters/drizzle-adapter/index.d.cts +48 -0
  9. package/dist/adapters/drizzle-adapter/index.d.mts +48 -0
  10. package/dist/adapters/drizzle-adapter/index.mjs +207 -0
  11. package/dist/adapters/index.cjs +23 -0
  12. package/dist/adapters/index.d.cts +157 -0
  13. package/dist/adapters/index.d.mts +157 -0
  14. package/dist/adapters/index.mjs +17 -0
  15. package/dist/adapters/kysely-adapter/index.cjs +11 -0
  16. package/dist/adapters/kysely-adapter/index.d.cts +52 -0
  17. package/dist/adapters/kysely-adapter/index.d.mts +52 -0
  18. package/dist/adapters/kysely-adapter/index.mjs +9 -0
  19. package/dist/adapters/memory-adapter/index.cjs +9 -0
  20. package/dist/adapters/memory-adapter/index.d.cts +15 -0
  21. package/dist/adapters/memory-adapter/index.d.mts +15 -0
  22. package/dist/adapters/memory-adapter/index.mjs +9 -0
  23. package/dist/adapters/mongodb-adapter/index.cjs +9 -0
  24. package/dist/adapters/mongodb-adapter/index.d.cts +4 -0
  25. package/dist/adapters/mongodb-adapter/index.d.mts +4 -0
  26. package/dist/adapters/mongodb-adapter/index.mjs +9 -0
  27. package/dist/adapters/prisma-adapter/index.cjs +156 -0
  28. package/dist/adapters/prisma-adapter/index.d.cts +35 -0
  29. package/dist/adapters/prisma-adapter/index.d.mts +35 -0
  30. package/dist/adapters/prisma-adapter/index.mjs +155 -0
  31. package/dist/adapters/test.cjs +797 -0
  32. package/dist/adapters/test.d.cts +82 -0
  33. package/dist/adapters/test.d.mts +82 -0
  34. package/dist/adapters/test.mjs +793 -0
  35. package/dist/api/index.cjs +20 -0
  36. package/dist/api/index.d.cts +3 -0
  37. package/dist/api/index.d.mts +3 -0
  38. package/dist/api/index.mjs +20 -0
  39. package/dist/api/middleware/index.cjs +16 -0
  40. package/dist/api/middleware/index.d.cts +16 -0
  41. package/dist/api/middleware/index.d.mts +16 -0
  42. package/dist/api/middleware/index.mjs +11 -0
  43. package/dist/api-Bm89BLgN.cjs +1899 -0
  44. package/dist/api-_B7qO28y.mjs +1892 -0
  45. package/dist/auth-Bo9PDt5j.cjs +739 -0
  46. package/dist/auth-Ds4AG4h4.mjs +709 -0
  47. package/dist/bearer-0SeEmaS4.mjs +54 -0
  48. package/dist/bearer-CHeREcGT.cjs +60 -0
  49. package/dist/bun-sqlite-dialect-CfkBo2v5.mjs +155 -0
  50. package/dist/bun-sqlite-dialect-wuaC2-gh.cjs +156 -0
  51. package/dist/chunk-Ceigfy4P.mjs +39 -0
  52. package/dist/chunk-oakRccI5.cjs +60 -0
  53. package/dist/client/index.cjs +22 -0
  54. package/dist/client/index.d.cts +8 -0
  55. package/dist/client/index.d.mts +8 -0
  56. package/dist/client/index.mjs +19 -0
  57. package/dist/client/lynx/index.cjs +79 -0
  58. package/dist/client/lynx/index.d.cts +156 -0
  59. package/dist/client/lynx/index.d.mts +156 -0
  60. package/dist/client/lynx/index.mjs +76 -0
  61. package/dist/client/plugins/index.cjs +11 -0
  62. package/dist/client/plugins/index.d.cts +17 -0
  63. package/dist/client/plugins/index.d.mts +17 -0
  64. package/dist/client/plugins/index.mjs +10 -0
  65. package/dist/client/react/index.cjs +79 -0
  66. package/dist/client/react/index.d.cts +156 -0
  67. package/dist/client/react/index.d.mts +156 -0
  68. package/dist/client/react/index.mjs +76 -0
  69. package/dist/client/solid/index.cjs +51 -0
  70. package/dist/client/solid/index.d.cts +90 -0
  71. package/dist/client/solid/index.d.mts +90 -0
  72. package/dist/client/solid/index.mjs +50 -0
  73. package/dist/client/svelte/index.cjs +28 -0
  74. package/dist/client/svelte/index.d.cts +110 -0
  75. package/dist/client/svelte/index.d.mts +110 -0
  76. package/dist/client/svelte/index.mjs +28 -0
  77. package/dist/client/vue/index.cjs +68 -0
  78. package/dist/client/vue/index.d.cts +123 -0
  79. package/dist/client/vue/index.d.mts +123 -0
  80. package/dist/client/vue/index.mjs +67 -0
  81. package/dist/cookies-B5xeA6i8.cjs +456 -0
  82. package/dist/cookies-Ch1JfQIz.mjs +367 -0
  83. package/dist/crypto/index.cjs +11 -0
  84. package/dist/crypto/index.d.cts +22 -0
  85. package/dist/crypto/index.d.mts +22 -0
  86. package/dist/crypto/index.mjs +5 -0
  87. package/dist/crypto-CcTxYH82.cjs +57 -0
  88. package/dist/crypto-CyQRFtkq.mjs +41 -0
  89. package/dist/db/index.cjs +40 -0
  90. package/dist/db/index.d.cts +4 -0
  91. package/dist/db/index.d.mts +4 -0
  92. package/dist/db/index.mjs +16 -0
  93. package/dist/db-BTKyYu-_.cjs +1180 -0
  94. package/dist/db-xiJtoDgz.mjs +1119 -0
  95. package/dist/defu-B0Svx_x4.cjs +34 -0
  96. package/dist/defu-SZkpHhbR.mjs +28 -0
  97. package/dist/email-verification-C-AsfJsb.cjs +247 -0
  98. package/dist/email-verification-CWhj2qfb.mjs +228 -0
  99. package/dist/hono-BEq1NYVX.cjs +526 -0
  100. package/dist/hono-Cdukwu5K.cjs +13 -0
  101. package/dist/hono-CoKYWnXA.mjs +7 -0
  102. package/dist/hono-Covz10jU.mjs +508 -0
  103. package/dist/hono-DOM31WQz.d.cts +18 -0
  104. package/dist/hono-DuE14mmj.d.mts +18 -0
  105. package/dist/index-B-WeOMzg.d.cts +13350 -0
  106. package/dist/index-B09P9p5_.d.cts +33 -0
  107. package/dist/index-B5_0QTLg.d.mts +3 -0
  108. package/dist/index-B7SKyR_a.d.cts +3 -0
  109. package/dist/index-BVHscLQl.d.cts +992 -0
  110. package/dist/index-C2-2QDyS.d.cts +35 -0
  111. package/dist/index-CTwrVluH.d.mts +41 -0
  112. package/dist/index-CWAqWfoZ.d.cts +27 -0
  113. package/dist/index-CYSShrFx.d.mts +27 -0
  114. package/dist/index-Qu-iJGNr.d.mts +992 -0
  115. package/dist/index-cs4Sh0En.d.cts +41 -0
  116. package/dist/index-jlessPI0.d.mts +13350 -0
  117. package/dist/index-ppgcFe12.d.mts +33 -0
  118. package/dist/index-to0RO38U.d.mts +35 -0
  119. package/dist/index.cjs +85 -0
  120. package/dist/index.d.cts +5 -0
  121. package/dist/index.d.mts +5 -0
  122. package/dist/index.mjs +27 -0
  123. package/dist/integrations/next-js.cjs +50 -0
  124. package/dist/integrations/next-js.d.cts +23 -0
  125. package/dist/integrations/next-js.d.mts +23 -0
  126. package/dist/integrations/next-js.mjs +49 -0
  127. package/dist/integrations/node.cjs +139 -0
  128. package/dist/integrations/node.d.cts +22 -0
  129. package/dist/integrations/node.d.mts +22 -0
  130. package/dist/integrations/node.mjs +134 -0
  131. package/dist/integrations/react-start.cjs +37 -0
  132. package/dist/integrations/react-start.d.cts +17 -0
  133. package/dist/integrations/react-start.d.mts +17 -0
  134. package/dist/integrations/react-start.mjs +37 -0
  135. package/dist/integrations/solid-start.cjs +14 -0
  136. package/dist/integrations/solid-start.d.cts +13 -0
  137. package/dist/integrations/solid-start.d.mts +13 -0
  138. package/dist/integrations/solid-start.mjs +13 -0
  139. package/dist/integrations/svelte-kit.cjs +52 -0
  140. package/dist/integrations/svelte-kit.d.cts +42 -0
  141. package/dist/integrations/svelte-kit.d.mts +42 -0
  142. package/dist/integrations/svelte-kit.mjs +49 -0
  143. package/dist/ip-B5SwXaMB.cjs +54 -0
  144. package/dist/ip-BjNYspCH.mjs +36 -0
  145. package/dist/json-B1v2qRTQ.mjs +24 -0
  146. package/dist/json-CcJ2HjGo.cjs +30 -0
  147. package/dist/kysely-adapter-Bxi7sPdG.cjs +288 -0
  148. package/dist/kysely-adapter-DRuoT_X8.mjs +270 -0
  149. package/dist/logged-CyGfp8_H.mjs +187 -0
  150. package/dist/logged-DQK3C64b.cjs +193 -0
  151. package/dist/memory-adapter-BlnDIAAX.cjs +154 -0
  152. package/dist/memory-adapter-Db3tsJTn.mjs +148 -0
  153. package/dist/middleware-CE6OhDkq.mjs +29 -0
  154. package/dist/middleware-CWvRH4EW.cjs +47 -0
  155. package/dist/mongodb-adapter-C_qGQED5.mjs +291 -0
  156. package/dist/mongodb-adapter-C_qfK87x.cjs +297 -0
  157. package/dist/node-sqlite-dialect-BfBzyOAg.mjs +155 -0
  158. package/dist/node-sqlite-dialect-mJWC8LWQ.cjs +156 -0
  159. package/dist/oauth2/index.cjs +25 -0
  160. package/dist/oauth2/index.d.cts +42 -0
  161. package/dist/oauth2/index.d.mts +42 -0
  162. package/dist/oauth2/index.mjs +16 -0
  163. package/dist/oauth2-B8M0lW9l.mjs +159 -0
  164. package/dist/oauth2-BLeOEi7Y.cjs +177 -0
  165. package/dist/origin-check-8Gajklvh.mjs +228 -0
  166. package/dist/origin-check-id9lTnqZ.cjs +246 -0
  167. package/dist/parser-CdncAl9i.cjs +83 -0
  168. package/dist/parser-CeAer-RM.mjs +71 -0
  169. package/dist/passkey-B6N20LSS.cjs +512 -0
  170. package/dist/passkey-DJsR_GX3.mjs +505 -0
  171. package/dist/plugins/access/index.cjs +4 -0
  172. package/dist/plugins/access/index.d.cts +2 -0
  173. package/dist/plugins/access/index.d.mts +2 -0
  174. package/dist/plugins/access/index.mjs +3 -0
  175. package/dist/plugins/bearer/index.cjs +7 -0
  176. package/dist/plugins/bearer/index.d.cts +4 -0
  177. package/dist/plugins/bearer/index.d.mts +4 -0
  178. package/dist/plugins/bearer/index.mjs +7 -0
  179. package/dist/plugins/index.cjs +49 -0
  180. package/dist/plugins/index.d.cts +9326 -0
  181. package/dist/plugins/index.d.mts +9326 -0
  182. package/dist/plugins/index.mjs +26 -0
  183. package/dist/plugins/passkey/index.cjs +15 -0
  184. package/dist/plugins/passkey/index.d.cts +4 -0
  185. package/dist/plugins/passkey/index.d.mts +4 -0
  186. package/dist/plugins/passkey/index.mjs +15 -0
  187. package/dist/plugins-C1lm2Wj3.cjs +5254 -0
  188. package/dist/plugins-Dai1QkRU.mjs +5199 -0
  189. package/dist/request-1NL_1lyJ.mjs +58 -0
  190. package/dist/request-CPNlp-DK.cjs +100 -0
  191. package/dist/schema-D-qjygfE.cjs +179 -0
  192. package/dist/schema-DTIwLLmf.mjs +125 -0
  193. package/dist/session-De9POJTW.cjs +641 -0
  194. package/dist/session-rH8ougDl.mjs +538 -0
  195. package/dist/social-providers/index.cjs +10 -0
  196. package/dist/social-providers/index.d.cts +2 -0
  197. package/dist/social-providers/index.d.mts +2 -0
  198. package/dist/social-providers/index.mjs +5 -0
  199. package/dist/social-providers-DcFNUT0S.cjs +13 -0
  200. package/dist/social-providers-DoYJhBe3.mjs +9 -0
  201. package/dist/state--f7fwIGh.cjs +99 -0
  202. package/dist/state-CqJfCIl9.mjs +86 -0
  203. package/dist/test-utils/index.cjs +27492 -0
  204. package/dist/test-utils/index.d.cts +4584 -0
  205. package/dist/test-utils/index.d.mts +4584 -0
  206. package/dist/test-utils/index.mjs +27490 -0
  207. package/dist/types/index.cjs +0 -0
  208. package/dist/types/index.d.cts +3 -0
  209. package/dist/types/index.d.mts +3 -0
  210. package/dist/types/index.mjs +1 -0
  211. package/dist/url-BoUuoIwZ.mjs +88 -0
  212. package/dist/url-D2yvKaM7.cjs +118 -0
  213. package/dist/utils/cookies.cjs +51 -0
  214. package/dist/utils/cookies.d.cts +179 -0
  215. package/dist/utils/cookies.d.mts +179 -0
  216. package/dist/utils/cookies.mjs +7 -0
  217. package/dist/utils-44aDDP8f.cjs +2 -0
  218. package/dist/utils-D4vZd1-9.mjs +4 -0
  219. package/dist/vanilla-Bu2PmFzE.cjs +30 -0
  220. package/dist/vanilla-TfHqeiC7.mjs +25 -0
  221. 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 };