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,208 @@
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
+ let drizzle_orm = require("drizzle-orm");
10
+
11
+ //#region src/adapters/drizzle-adapter/drizzle-adapter.ts
12
+ const drizzleAdapter = (db, config) => {
13
+ let lazyOptions = null;
14
+ const createCustomAdapter = (db$1) => ({ getFieldName, debugLog }) => {
15
+ function getSchema(model) {
16
+ const schema = config.schema || db$1._.fullSchema;
17
+ if (!schema) throw new __faire_auth_core_error.FaireAuthError("Drizzle adapter failed to initialize. Schema not found. Please provide a schema object in the adapter options object.");
18
+ const schemaModel = schema[model];
19
+ if (!schemaModel) throw new __faire_auth_core_error.FaireAuthError(`[# Drizzle Adapter]: The model "${model}" was not found in the schema object. Please pass the schema directly to the adapter options.`);
20
+ return schemaModel;
21
+ }
22
+ const withReturning = async (model, builder, data, where) => {
23
+ if (config.provider !== "mysql") return (await builder.returning())[0];
24
+ await builder.execute();
25
+ const schemaModel = getSchema(model);
26
+ const builderVal = builder.config?.values;
27
+ if (where?.length) {
28
+ const clause = convertWhereClause(where.map((w) => {
29
+ if (data[w.field] !== void 0) return {
30
+ ...w,
31
+ value: data[w.field]
32
+ };
33
+ return w;
34
+ }), model);
35
+ return (await db$1.select().from(schemaModel).where(...clause))[0];
36
+ } else if (builderVal && builderVal[0]?.id?.value) {
37
+ let tId = builderVal[0]?.id?.value;
38
+ if (!tId) tId = (await db$1.select({ id: drizzle_orm.sql`LAST_INSERT_ID()` }).from(schemaModel).orderBy((0, drizzle_orm.desc)(schemaModel.id)).limit(1))[0].id;
39
+ return (await db$1.select().from(schemaModel).where((0, drizzle_orm.eq)(schemaModel.id, tId)).limit(1).execute())[0];
40
+ } else if (data.id) return (await db$1.select().from(schemaModel).where((0, drizzle_orm.eq)(schemaModel.id, data.id)).limit(1).execute())[0];
41
+ else {
42
+ if (!("id" in schemaModel)) throw new __faire_auth_core_error.FaireAuthError(`The model "${model}" does not have an "id" field. Please use the "id" field as your primary key.`);
43
+ return (await db$1.select().from(schemaModel).orderBy((0, drizzle_orm.desc)(schemaModel.id)).limit(1).execute())[0];
44
+ }
45
+ };
46
+ function convertWhereClause(where, model) {
47
+ const schemaModel = getSchema(model);
48
+ if (!where) return [];
49
+ if (where.length === 1) {
50
+ const w = where[0];
51
+ if (!w) return [];
52
+ const field = getFieldName({
53
+ model,
54
+ field: w.field
55
+ });
56
+ if (!schemaModel[field]) throw new __faire_auth_core_error.FaireAuthError(`The field "${w.field}" does not exist in the schema for the model "${model}". Please update your schema.`);
57
+ if (w.operator === "in") {
58
+ if (!Array.isArray(w.value)) throw new __faire_auth_core_error.FaireAuthError(`The value for the field "${w.field}" must be an array when using the "in" operator.`);
59
+ return [(0, drizzle_orm.inArray)(schemaModel[field], w.value)];
60
+ }
61
+ if (w.operator === "not_in") {
62
+ if (!Array.isArray(w.value)) throw new __faire_auth_core_error.FaireAuthError(`The value for the field "${w.field}" must be an array when using the "not_in" operator.`);
63
+ return [(0, drizzle_orm.notInArray)(schemaModel[field], w.value)];
64
+ }
65
+ if (w.operator === "contains") return [(0, drizzle_orm.like)(schemaModel[field], `%${w.value}%`)];
66
+ if (w.operator === "starts_with") return [(0, drizzle_orm.like)(schemaModel[field], `${w.value}%`)];
67
+ if (w.operator === "ends_with") return [(0, drizzle_orm.like)(schemaModel[field], `%${w.value}`)];
68
+ if (w.operator === "lt") return [(0, drizzle_orm.lt)(schemaModel[field], w.value)];
69
+ if (w.operator === "lte") return [(0, drizzle_orm.lte)(schemaModel[field], w.value)];
70
+ if (w.operator === "ne") return [(0, drizzle_orm.ne)(schemaModel[field], w.value)];
71
+ if (w.operator === "gt") return [(0, drizzle_orm.gt)(schemaModel[field], w.value)];
72
+ if (w.operator === "gte") return [(0, drizzle_orm.gte)(schemaModel[field], w.value)];
73
+ return [(0, drizzle_orm.eq)(schemaModel[field], w.value)];
74
+ }
75
+ const andGroup = where.filter((w) => w.connector === "AND" || !w.connector);
76
+ const orGroup = where.filter((w) => w.connector === "OR");
77
+ const andClause = (0, drizzle_orm.and)(...andGroup.map((w) => {
78
+ const field = getFieldName({
79
+ model,
80
+ field: w.field
81
+ });
82
+ if (w.operator === "in") {
83
+ if (!Array.isArray(w.value)) throw new __faire_auth_core_error.FaireAuthError(`The value for the field "${w.field}" must be an array when using the "in" operator.`);
84
+ return (0, drizzle_orm.inArray)(schemaModel[field], w.value);
85
+ }
86
+ if (w.operator === "not_in") {
87
+ if (!Array.isArray(w.value)) throw new __faire_auth_core_error.FaireAuthError(`The value for the field "${w.field}" must be an array when using the "not_in" operator.`);
88
+ return (0, drizzle_orm.notInArray)(schemaModel[field], w.value);
89
+ }
90
+ if (w.operator === "contains") return (0, drizzle_orm.like)(schemaModel[field], `%${w.value}%`);
91
+ if (w.operator === "starts_with") return (0, drizzle_orm.like)(schemaModel[field], `${w.value}%`);
92
+ if (w.operator === "ends_with") return (0, drizzle_orm.like)(schemaModel[field], `%${w.value}`);
93
+ if (w.operator === "lt") return (0, drizzle_orm.lt)(schemaModel[field], w.value);
94
+ if (w.operator === "lte") return (0, drizzle_orm.lte)(schemaModel[field], w.value);
95
+ if (w.operator === "gt") return (0, drizzle_orm.gt)(schemaModel[field], w.value);
96
+ if (w.operator === "gte") return (0, drizzle_orm.gte)(schemaModel[field], w.value);
97
+ if (w.operator === "ne") return (0, drizzle_orm.ne)(schemaModel[field], w.value);
98
+ return (0, drizzle_orm.eq)(schemaModel[field], w.value);
99
+ }));
100
+ const orClause = (0, drizzle_orm.or)(...orGroup.map((w) => {
101
+ const field = getFieldName({
102
+ model,
103
+ field: w.field
104
+ });
105
+ if (w.operator === "in") {
106
+ if (!Array.isArray(w.value)) throw new __faire_auth_core_error.FaireAuthError(`The value for the field "${w.field}" must be an array when using the "in" operator.`);
107
+ return (0, drizzle_orm.inArray)(schemaModel[field], w.value);
108
+ }
109
+ if (w.operator === "not_in") {
110
+ if (!Array.isArray(w.value)) throw new __faire_auth_core_error.FaireAuthError(`The value for the field "${w.field}" must be an array when using the "not_in" operator.`);
111
+ return (0, drizzle_orm.notInArray)(schemaModel[field], w.value);
112
+ }
113
+ if (w.operator === "contains") return (0, drizzle_orm.like)(schemaModel[field], `%${w.value}%`);
114
+ if (w.operator === "starts_with") return (0, drizzle_orm.like)(schemaModel[field], `${w.value}%`);
115
+ if (w.operator === "ends_with") return (0, drizzle_orm.like)(schemaModel[field], `%${w.value}`);
116
+ if (w.operator === "lt") return (0, drizzle_orm.lt)(schemaModel[field], w.value);
117
+ if (w.operator === "lte") return (0, drizzle_orm.lte)(schemaModel[field], w.value);
118
+ if (w.operator === "gt") return (0, drizzle_orm.gt)(schemaModel[field], w.value);
119
+ if (w.operator === "gte") return (0, drizzle_orm.gte)(schemaModel[field], w.value);
120
+ if (w.operator === "ne") return (0, drizzle_orm.ne)(schemaModel[field], w.value);
121
+ return (0, drizzle_orm.eq)(schemaModel[field], w.value);
122
+ }));
123
+ const clause = [];
124
+ if (andGroup.length) clause.push(andClause);
125
+ if (orGroup.length) clause.push(orClause);
126
+ return clause;
127
+ }
128
+ function checkMissingFields(schema, model, values) {
129
+ if (!schema) throw new __faire_auth_core_error.FaireAuthError("Drizzle adapter failed to initialize. Schema not found. Please provide a schema object in the adapter options object.");
130
+ for (const key in values) if (!schema[key]) throw new __faire_auth_core_error.FaireAuthError(`The field "${key}" does not exist in the "${model}" schema. Please update your drizzle schema or re-generate using "npx @faire-auth/cli generate".`);
131
+ }
132
+ return {
133
+ async create({ model, data: values }) {
134
+ const schemaModel = getSchema(model);
135
+ checkMissingFields(schemaModel, model, values);
136
+ return await withReturning(model, db$1.insert(schemaModel).values(values), values);
137
+ },
138
+ async findOne({ model, where }) {
139
+ const schemaModel = getSchema(model);
140
+ const clause = convertWhereClause(where, model);
141
+ const res = await db$1.select().from(schemaModel).where(...clause);
142
+ if (!res.length) return null;
143
+ return res[0];
144
+ },
145
+ async findMany({ model, where, sortBy, limit, offset }) {
146
+ const schemaModel = getSchema(model);
147
+ const clause = where ? convertWhereClause(where, model) : [];
148
+ const sortFn = sortBy?.direction === "desc" ? drizzle_orm.desc : drizzle_orm.asc;
149
+ const builder = db$1.select().from(schemaModel).limit(limit || 100).offset(offset || 0);
150
+ if (sortBy?.field) builder.orderBy(sortFn(schemaModel[getFieldName({
151
+ model,
152
+ field: sortBy?.field
153
+ })]));
154
+ return await builder.where(...clause);
155
+ },
156
+ async count({ model, where }) {
157
+ const schemaModel = getSchema(model);
158
+ const clause = where ? convertWhereClause(where, model) : [];
159
+ return (await db$1.select({ count: (0, drizzle_orm.count)() }).from(schemaModel).where(...clause))[0].count;
160
+ },
161
+ async update({ model, where, update: values }) {
162
+ const schemaModel = getSchema(model);
163
+ const clause = convertWhereClause(where, model);
164
+ return await withReturning(model, db$1.update(schemaModel).set(values).where(...clause), values, where);
165
+ },
166
+ async updateMany({ model, where, update: values }) {
167
+ const schemaModel = getSchema(model);
168
+ const clause = convertWhereClause(where, model);
169
+ return await db$1.update(schemaModel).set(values).where(...clause);
170
+ },
171
+ async delete({ model, where }) {
172
+ const schemaModel = getSchema(model);
173
+ const clause = convertWhereClause(where, model);
174
+ return await db$1.delete(schemaModel).where(...clause);
175
+ },
176
+ async deleteMany({ model, where }) {
177
+ const schemaModel = getSchema(model);
178
+ const clause = convertWhereClause(where, model);
179
+ return await db$1.delete(schemaModel).where(...clause);
180
+ },
181
+ options: config
182
+ };
183
+ };
184
+ let adapterOptions = null;
185
+ adapterOptions = {
186
+ config: {
187
+ adapterId: "drizzle",
188
+ adapterName: "Drizzle Adapter",
189
+ usePlural: config.usePlural ?? false,
190
+ debugLogs: config.debugLogs ?? false,
191
+ transaction: config.transaction ?? false ? (cb) => db.transaction((tx) => {
192
+ return cb(require_adapter_factory.createAdapterFactory({
193
+ config: adapterOptions.config,
194
+ adapter: createCustomAdapter(tx)
195
+ })(lazyOptions));
196
+ }) : false
197
+ },
198
+ adapter: createCustomAdapter(db)
199
+ };
200
+ const adapter = require_adapter_factory.createAdapterFactory(adapterOptions);
201
+ return (options) => {
202
+ lazyOptions = options;
203
+ return adapter(options);
204
+ };
205
+ };
206
+
207
+ //#endregion
208
+ exports.drizzleAdapter = drizzleAdapter;
@@ -0,0 +1,48 @@
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/drizzle-adapter/drizzle-adapter.d.ts
6
+ interface DB {
7
+ [key: string]: any;
8
+ }
9
+ interface DrizzleAdapterConfig {
10
+ /**
11
+ * The schema object that defines the tables and fields
12
+ */
13
+ schema?: Record<string, any>;
14
+ /**
15
+ * The database provider
16
+ */
17
+ provider: "pg" | "mysql" | "sqlite";
18
+ /**
19
+ * If the table names in the schema are plural
20
+ * set this to true. For example, if the schema
21
+ * has an object with a key "users" instead of "user"
22
+ */
23
+ usePlural?: boolean;
24
+ /**
25
+ * Enable debug logs for the adapter
26
+ *
27
+ * @default false
28
+ */
29
+ debugLogs?: DBAdapterDebugLogOption;
30
+ /**
31
+ * By default snake case is used for table and field names
32
+ * when the CLI is used to generate the schema. If you want
33
+ * to use camel case, set this to true.
34
+ * @default false
35
+ */
36
+ camelCase?: boolean;
37
+ /**
38
+ * Whether to execute multiple operations in a transaction.
39
+ *
40
+ * If the database doesn't support transactions,
41
+ * set this to `false` and operations will be executed sequentially.
42
+ * @default false
43
+ */
44
+ transaction?: boolean;
45
+ }
46
+ declare const drizzleAdapter: (db: DB, config: DrizzleAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
47
+ //#endregion
48
+ export { DB, DrizzleAdapterConfig, drizzleAdapter };
@@ -0,0 +1,48 @@
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/drizzle-adapter/drizzle-adapter.d.ts
6
+ interface DB {
7
+ [key: string]: any;
8
+ }
9
+ interface DrizzleAdapterConfig {
10
+ /**
11
+ * The schema object that defines the tables and fields
12
+ */
13
+ schema?: Record<string, any>;
14
+ /**
15
+ * The database provider
16
+ */
17
+ provider: "pg" | "mysql" | "sqlite";
18
+ /**
19
+ * If the table names in the schema are plural
20
+ * set this to true. For example, if the schema
21
+ * has an object with a key "users" instead of "user"
22
+ */
23
+ usePlural?: boolean;
24
+ /**
25
+ * Enable debug logs for the adapter
26
+ *
27
+ * @default false
28
+ */
29
+ debugLogs?: DBAdapterDebugLogOption;
30
+ /**
31
+ * By default snake case is used for table and field names
32
+ * when the CLI is used to generate the schema. If you want
33
+ * to use camel case, set this to true.
34
+ * @default false
35
+ */
36
+ camelCase?: boolean;
37
+ /**
38
+ * Whether to execute multiple operations in a transaction.
39
+ *
40
+ * If the database doesn't support transactions,
41
+ * set this to `false` and operations will be executed sequentially.
42
+ * @default false
43
+ */
44
+ transaction?: boolean;
45
+ }
46
+ declare const drizzleAdapter: (db: DB, config: DrizzleAdapterConfig) => (options: FaireAuthOptions) => DBAdapter<FaireAuthOptions>;
47
+ //#endregion
48
+ export { DB, DrizzleAdapterConfig, drizzleAdapter };
@@ -0,0 +1,207 @@
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
+ 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
11
+ const drizzleAdapter = (db, config) => {
12
+ let lazyOptions = null;
13
+ const createCustomAdapter = (db$1) => ({ getFieldName, debugLog }) => {
14
+ function getSchema(model) {
15
+ const schema = config.schema || db$1._.fullSchema;
16
+ if (!schema) throw new FaireAuthError("Drizzle adapter failed to initialize. Schema not found. Please provide a schema object in the adapter options object.");
17
+ const schemaModel = schema[model];
18
+ 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.`);
19
+ return schemaModel;
20
+ }
21
+ const withReturning = async (model, builder, data, where) => {
22
+ if (config.provider !== "mysql") return (await builder.returning())[0];
23
+ await builder.execute();
24
+ const schemaModel = getSchema(model);
25
+ const builderVal = builder.config?.values;
26
+ if (where?.length) {
27
+ const clause = convertWhereClause(where.map((w) => {
28
+ if (data[w.field] !== void 0) return {
29
+ ...w,
30
+ value: data[w.field]
31
+ };
32
+ return w;
33
+ }), model);
34
+ return (await db$1.select().from(schemaModel).where(...clause))[0];
35
+ } else if (builderVal && builderVal[0]?.id?.value) {
36
+ let tId = builderVal[0]?.id?.value;
37
+ if (!tId) tId = (await db$1.select({ id: sql`LAST_INSERT_ID()` }).from(schemaModel).orderBy(desc(schemaModel.id)).limit(1))[0].id;
38
+ return (await db$1.select().from(schemaModel).where(eq(schemaModel.id, tId)).limit(1).execute())[0];
39
+ } else if (data.id) return (await db$1.select().from(schemaModel).where(eq(schemaModel.id, data.id)).limit(1).execute())[0];
40
+ else {
41
+ 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$1.select().from(schemaModel).orderBy(desc(schemaModel.id)).limit(1).execute())[0];
43
+ }
44
+ };
45
+ function convertWhereClause(where, model) {
46
+ const schemaModel = getSchema(model);
47
+ if (!where) return [];
48
+ if (where.length === 1) {
49
+ const w = where[0];
50
+ if (!w) return [];
51
+ const field = getFieldName({
52
+ model,
53
+ field: w.field
54
+ });
55
+ if (!schemaModel[field]) throw new FaireAuthError(`The field "${w.field}" does not exist in the schema for the model "${model}". Please update your schema.`);
56
+ if (w.operator === "in") {
57
+ if (!Array.isArray(w.value)) throw new FaireAuthError(`The value for the field "${w.field}" must be an array when using the "in" operator.`);
58
+ return [inArray(schemaModel[field], w.value)];
59
+ }
60
+ if (w.operator === "not_in") {
61
+ if (!Array.isArray(w.value)) throw new FaireAuthError(`The value for the field "${w.field}" must be an array when using the "not_in" operator.`);
62
+ return [notInArray(schemaModel[field], w.value)];
63
+ }
64
+ if (w.operator === "contains") return [like(schemaModel[field], `%${w.value}%`)];
65
+ if (w.operator === "starts_with") return [like(schemaModel[field], `${w.value}%`)];
66
+ if (w.operator === "ends_with") return [like(schemaModel[field], `%${w.value}`)];
67
+ if (w.operator === "lt") return [lt(schemaModel[field], w.value)];
68
+ if (w.operator === "lte") return [lte(schemaModel[field], w.value)];
69
+ if (w.operator === "ne") return [ne(schemaModel[field], w.value)];
70
+ if (w.operator === "gt") return [gt(schemaModel[field], w.value)];
71
+ if (w.operator === "gte") return [gte(schemaModel[field], w.value)];
72
+ return [eq(schemaModel[field], w.value)];
73
+ }
74
+ const andGroup = where.filter((w) => w.connector === "AND" || !w.connector);
75
+ const orGroup = where.filter((w) => w.connector === "OR");
76
+ const andClause = and(...andGroup.map((w) => {
77
+ const field = getFieldName({
78
+ model,
79
+ field: w.field
80
+ });
81
+ if (w.operator === "in") {
82
+ if (!Array.isArray(w.value)) throw new FaireAuthError(`The value for the field "${w.field}" must be an array when using the "in" operator.`);
83
+ return inArray(schemaModel[field], w.value);
84
+ }
85
+ if (w.operator === "not_in") {
86
+ if (!Array.isArray(w.value)) throw new FaireAuthError(`The value for the field "${w.field}" must be an array when using the "not_in" operator.`);
87
+ return notInArray(schemaModel[field], w.value);
88
+ }
89
+ if (w.operator === "contains") return like(schemaModel[field], `%${w.value}%`);
90
+ if (w.operator === "starts_with") return like(schemaModel[field], `${w.value}%`);
91
+ if (w.operator === "ends_with") return like(schemaModel[field], `%${w.value}`);
92
+ if (w.operator === "lt") return lt(schemaModel[field], w.value);
93
+ if (w.operator === "lte") return lte(schemaModel[field], w.value);
94
+ if (w.operator === "gt") return gt(schemaModel[field], w.value);
95
+ if (w.operator === "gte") return gte(schemaModel[field], w.value);
96
+ if (w.operator === "ne") return ne(schemaModel[field], w.value);
97
+ return eq(schemaModel[field], w.value);
98
+ }));
99
+ const orClause = or(...orGroup.map((w) => {
100
+ const field = getFieldName({
101
+ model,
102
+ field: w.field
103
+ });
104
+ if (w.operator === "in") {
105
+ if (!Array.isArray(w.value)) throw new FaireAuthError(`The value for the field "${w.field}" must be an array when using the "in" operator.`);
106
+ return inArray(schemaModel[field], w.value);
107
+ }
108
+ if (w.operator === "not_in") {
109
+ if (!Array.isArray(w.value)) throw new FaireAuthError(`The value for the field "${w.field}" must be an array when using the "not_in" operator.`);
110
+ return notInArray(schemaModel[field], w.value);
111
+ }
112
+ if (w.operator === "contains") return like(schemaModel[field], `%${w.value}%`);
113
+ if (w.operator === "starts_with") return like(schemaModel[field], `${w.value}%`);
114
+ if (w.operator === "ends_with") return like(schemaModel[field], `%${w.value}`);
115
+ if (w.operator === "lt") return lt(schemaModel[field], w.value);
116
+ if (w.operator === "lte") return lte(schemaModel[field], w.value);
117
+ if (w.operator === "gt") return gt(schemaModel[field], w.value);
118
+ if (w.operator === "gte") return gte(schemaModel[field], w.value);
119
+ if (w.operator === "ne") return ne(schemaModel[field], w.value);
120
+ return eq(schemaModel[field], w.value);
121
+ }));
122
+ const clause = [];
123
+ if (andGroup.length) clause.push(andClause);
124
+ if (orGroup.length) clause.push(orClause);
125
+ return clause;
126
+ }
127
+ function checkMissingFields(schema, model, values) {
128
+ if (!schema) throw new FaireAuthError("Drizzle adapter failed to initialize. Schema not found. Please provide a schema object in the adapter options object.");
129
+ for (const key in values) if (!schema[key]) throw new FaireAuthError(`The field "${key}" does not exist in the "${model}" schema. Please update your drizzle schema or re-generate using "npx @faire-auth/cli generate".`);
130
+ }
131
+ return {
132
+ async create({ model, data: values }) {
133
+ const schemaModel = getSchema(model);
134
+ checkMissingFields(schemaModel, model, values);
135
+ return await withReturning(model, db$1.insert(schemaModel).values(values), values);
136
+ },
137
+ async findOne({ model, where }) {
138
+ const schemaModel = getSchema(model);
139
+ const clause = convertWhereClause(where, model);
140
+ const res = await db$1.select().from(schemaModel).where(...clause);
141
+ if (!res.length) return null;
142
+ return res[0];
143
+ },
144
+ async findMany({ model, where, sortBy, limit, offset }) {
145
+ const schemaModel = getSchema(model);
146
+ const clause = where ? convertWhereClause(where, model) : [];
147
+ const sortFn = sortBy?.direction === "desc" ? desc : asc;
148
+ const builder = db$1.select().from(schemaModel).limit(limit || 100).offset(offset || 0);
149
+ if (sortBy?.field) builder.orderBy(sortFn(schemaModel[getFieldName({
150
+ model,
151
+ field: sortBy?.field
152
+ })]));
153
+ return await builder.where(...clause);
154
+ },
155
+ async count({ model, where }) {
156
+ const schemaModel = getSchema(model);
157
+ const clause = where ? convertWhereClause(where, model) : [];
158
+ return (await db$1.select({ count: count() }).from(schemaModel).where(...clause))[0].count;
159
+ },
160
+ async update({ model, where, update: values }) {
161
+ const schemaModel = getSchema(model);
162
+ const clause = convertWhereClause(where, model);
163
+ return await withReturning(model, db$1.update(schemaModel).set(values).where(...clause), values, where);
164
+ },
165
+ async updateMany({ model, where, update: values }) {
166
+ const schemaModel = getSchema(model);
167
+ const clause = convertWhereClause(where, model);
168
+ return await db$1.update(schemaModel).set(values).where(...clause);
169
+ },
170
+ async delete({ model, where }) {
171
+ const schemaModel = getSchema(model);
172
+ const clause = convertWhereClause(where, model);
173
+ return await db$1.delete(schemaModel).where(...clause);
174
+ },
175
+ async deleteMany({ model, where }) {
176
+ const schemaModel = getSchema(model);
177
+ const clause = convertWhereClause(where, model);
178
+ return await db$1.delete(schemaModel).where(...clause);
179
+ },
180
+ options: config
181
+ };
182
+ };
183
+ let adapterOptions = null;
184
+ adapterOptions = {
185
+ config: {
186
+ adapterId: "drizzle",
187
+ adapterName: "Drizzle Adapter",
188
+ usePlural: config.usePlural ?? false,
189
+ debugLogs: config.debugLogs ?? false,
190
+ transaction: config.transaction ?? false ? (cb) => db.transaction((tx) => {
191
+ return cb(createAdapterFactory({
192
+ config: adapterOptions.config,
193
+ adapter: createCustomAdapter(tx)
194
+ })(lazyOptions));
195
+ }) : false
196
+ },
197
+ adapter: createCustomAdapter(db)
198
+ };
199
+ const adapter = createAdapterFactory(adapterOptions);
200
+ return (options) => {
201
+ lazyOptions = options;
202
+ return adapter(options);
203
+ };
204
+ };
205
+
206
+ //#endregion
207
+ export { drizzleAdapter };
@@ -0,0 +1,23 @@
1
+ require('../crypto-CcTxYH82.cjs');
2
+ require('../json-CcJ2HjGo.cjs');
3
+ require('../state--f7fwIGh.cjs');
4
+ require('../request-CPNlp-DK.cjs');
5
+ require('../utils-44aDDP8f.cjs');
6
+ const require_adapter_factory = require('../adapter-factory-DT-_2aHJ.cjs');
7
+
8
+ //#region src/adapters/index.ts
9
+ /**
10
+ * @deprecated Use `createAdapterFactory` instead. This export will be removed in the next major version.
11
+ */
12
+ const createAdapter = require_adapter_factory.createAdapterFactory;
13
+
14
+ //#endregion
15
+ exports.createAdapter = createAdapter;
16
+ exports.createAdapterFactory = require_adapter_factory.createAdapterFactory;
17
+ var __faire_auth_core_db_adapter = require("@faire-auth/core/db/adapter");
18
+ Object.keys(__faire_auth_core_db_adapter).forEach(function (k) {
19
+ if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
20
+ enumerable: true,
21
+ get: function () { return __faire_auth_core_db_adapter[k]; }
22
+ });
23
+ });