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,288 @@
1
+ const require_chunk = require('./chunk-oakRccI5.cjs');
2
+ const require_adapter_factory = require('./adapter-factory-DT-_2aHJ.cjs');
3
+ let __faire_auth_core_static = require("@faire-auth/core/static");
4
+ let kysely = require("kysely");
5
+
6
+ //#region src/adapters/kysely-adapter/dialect.ts
7
+ function getKyselyDatabaseType(db) {
8
+ if (!db) return null;
9
+ if ("dialect" in db) return getKyselyDatabaseType(db.dialect);
10
+ if ("createDriver" in db) {
11
+ if (db instanceof kysely.SqliteDialect) return "sqlite";
12
+ if (db instanceof kysely.MysqlDialect) return "mysql";
13
+ if (db instanceof kysely.PostgresDialect) return "postgres";
14
+ if (db instanceof kysely.MssqlDialect) return "mssql";
15
+ }
16
+ if ("aggregate" in db) return "sqlite";
17
+ if ("getConnection" in db) return "mysql";
18
+ if ("connect" in db) return "postgres";
19
+ if ("fileControl" in db) return "sqlite";
20
+ if ("open" in db && "close" in db && "prepare" in db) return "sqlite";
21
+ return null;
22
+ }
23
+ const createKyselyAdapter = (config) => {
24
+ const db = config.database;
25
+ if (!db) return {
26
+ kysely: null,
27
+ databaseType: null,
28
+ transaction: void 0
29
+ };
30
+ if ("db" in db) return {
31
+ kysely: db.db,
32
+ databaseType: db.type,
33
+ transaction: db.transaction
34
+ };
35
+ if ("dialect" in db) return {
36
+ kysely: new kysely.Kysely({ dialect: db.dialect }),
37
+ databaseType: db.type,
38
+ transaction: db.transaction
39
+ };
40
+ let dialect = void 0;
41
+ const databaseType = getKyselyDatabaseType(db);
42
+ if ("createDriver" in db) dialect = db;
43
+ if ("aggregate" in db && !("createSession" in db)) dialect = new kysely.SqliteDialect({ database: db });
44
+ if ("getConnection" in db) dialect = new kysely.MysqlDialect(db);
45
+ if ("connect" in db) dialect = new kysely.PostgresDialect({ pool: db });
46
+ const toReturn = {
47
+ kysely: dialect ? new kysely.Kysely({ dialect }) : null,
48
+ databaseType,
49
+ transaction: void 0,
50
+ async initialize() {
51
+ if (toReturn.kysely == null) {
52
+ if ("fileControl" in db) {
53
+ console.log("found file control");
54
+ const { BunSqliteDialect } = await Promise.resolve().then(() => require("./bun-sqlite-dialect-wuaC2-gh.cjs"));
55
+ dialect = new BunSqliteDialect({ database: db });
56
+ }
57
+ if ("createSession" in db && typeof window === "undefined") {
58
+ console.log("found create session");
59
+ let DatabaseSync = void 0;
60
+ try {
61
+ let nodeSqlite = "node:sqlite";
62
+ ({DatabaseSync} = await import(
63
+ /* @vite-ignore */
64
+ /* webpackIgnore: true */
65
+ nodeSqlite
66
+ ));
67
+ } catch (error) {
68
+ console.log("caught");
69
+ if (error !== null && typeof error === "object" && "code" in error && error.code !== "ERR_UNKNOWN_BUILTIN_MODULE") throw error;
70
+ }
71
+ console.log("import dialect");
72
+ if (DatabaseSync && db instanceof DatabaseSync) {
73
+ const { NodeSqliteDialect } = await Promise.resolve().then(() => require("./node-sqlite-dialect-mJWC8LWQ.cjs"));
74
+ dialect = new NodeSqliteDialect({ database: db });
75
+ }
76
+ }
77
+ if (dialect) toReturn.kysely = new kysely.Kysely({ dialect });
78
+ }
79
+ }
80
+ };
81
+ return toReturn;
82
+ };
83
+
84
+ //#endregion
85
+ //#region src/adapters/kysely-adapter/kysely-adapter.ts
86
+ const withDbInit = (db, work) => async (fn) => {
87
+ const rdb = (0, __faire_auth_core_static.isPromise)(db) ? await db : db;
88
+ if (work) work(rdb);
89
+ return fn(rdb);
90
+ };
91
+ const kyselyAdapter = (db, config) => {
92
+ let lazyOptions = null;
93
+ const withDb = withDbInit(db);
94
+ const createCustomAdapter = (db$1) => {
95
+ return ({ getFieldName }) => {
96
+ const withReturningInit = (db$2) => async (values, builder, model, where) => {
97
+ let res;
98
+ if (config?.type === "mysql") {
99
+ await builder.execute();
100
+ const field = values.id ? "id" : where.length > 0 && where[0]?.field ? where[0].field : "id";
101
+ if (!values.id && where.length === 0) {
102
+ res = await db$2.selectFrom(model).selectAll().orderBy(getFieldName({
103
+ model,
104
+ field
105
+ }), "desc").limit(1).executeTakeFirst();
106
+ return res;
107
+ }
108
+ const value = values[field] || where[0]?.value;
109
+ res = await db$2.selectFrom(model).selectAll().orderBy(getFieldName({
110
+ model,
111
+ field
112
+ }), "desc").where(getFieldName({
113
+ model,
114
+ field
115
+ }), "=", value).limit(1).executeTakeFirst();
116
+ return res;
117
+ }
118
+ if (config?.type === "mssql") {
119
+ res = await builder.outputAll("inserted").executeTakeFirst();
120
+ return res;
121
+ }
122
+ res = await builder.returningAll().executeTakeFirst();
123
+ return res;
124
+ };
125
+ let withReturning;
126
+ const withDb$1 = withDbInit(db$1, (db$2) => withReturning ??= withReturningInit(db$2));
127
+ function convertWhereClause(model, w) {
128
+ if (!w) return {
129
+ and: null,
130
+ or: null
131
+ };
132
+ const conditions = {
133
+ and: [],
134
+ or: []
135
+ };
136
+ w.forEach((condition) => {
137
+ let { field: _field, value: _value, operator = "=", connector = "AND" } = condition;
138
+ let value = _value;
139
+ let field = getFieldName({
140
+ model,
141
+ field: _field
142
+ });
143
+ const expr = (eb) => {
144
+ if (operator.toLowerCase() === "in") return eb(field, "in", Array.isArray(value) ? value : [value]);
145
+ if (operator.toLowerCase() === "not_in") return eb(field, "not in", Array.isArray(value) ? value : [value]);
146
+ if (operator === "contains") return eb(field, "like", `%${value}%`);
147
+ if (operator === "starts_with") return eb(field, "like", `${value}%`);
148
+ if (operator === "ends_with") return eb(field, "like", `%${value}`);
149
+ if (operator === "eq") return eb(field, "=", value);
150
+ if (operator === "ne") return eb(field, "<>", value);
151
+ if (operator === "gt") return eb(field, ">", value);
152
+ if (operator === "gte") return eb(field, ">=", value);
153
+ if (operator === "lt") return eb(field, "<", value);
154
+ if (operator === "lte") return eb(field, "<=", value);
155
+ return eb(field, operator, value);
156
+ };
157
+ if (connector === "OR") conditions.or.push(expr);
158
+ else conditions.and.push(expr);
159
+ });
160
+ return {
161
+ and: conditions.and.length ? conditions.and : null,
162
+ or: conditions.or.length ? conditions.or : null
163
+ };
164
+ }
165
+ return {
166
+ create: ({ data, model }) => withDb$1(async (db$2) => {
167
+ const builder = db$2.insertInto(model).values(data);
168
+ return await withReturning(data, builder, model, []);
169
+ }),
170
+ findOne: ({ model, where, select }) => withDb$1(async (db$2) => {
171
+ const { and, or } = convertWhereClause(model, where);
172
+ let query = db$2.selectFrom(model).selectAll();
173
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
174
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
175
+ const res = await query.executeTakeFirst();
176
+ if (!res) return null;
177
+ return res;
178
+ }),
179
+ findMany: ({ model, where, limit, offset, sortBy }) => withDb$1(async (db$2) => {
180
+ const { and, or } = convertWhereClause(model, where);
181
+ let query = db$2.selectFrom(model);
182
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
183
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
184
+ if (config?.type === "mssql") {
185
+ if (!offset) query = query.top(limit || 100);
186
+ } else query = query.limit(limit || 100);
187
+ if (sortBy) query = query.orderBy(getFieldName({
188
+ model,
189
+ field: sortBy.field
190
+ }), sortBy.direction);
191
+ if (offset) if (config?.type === "mssql") {
192
+ if (!sortBy) query = query.orderBy(getFieldName({
193
+ model,
194
+ field: "id"
195
+ }));
196
+ query = query.offset(offset).fetch(limit || 100);
197
+ } else query = query.offset(offset);
198
+ const res = await query.selectAll().execute();
199
+ if (!res) return [];
200
+ return res;
201
+ }),
202
+ update: ({ model, where, update: values }) => withDb$1(async (db$2) => {
203
+ const { and, or } = convertWhereClause(model, where);
204
+ let query = db$2.updateTable(model).set(values);
205
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
206
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
207
+ return await withReturning(values, query, model, where);
208
+ }),
209
+ updateMany: ({ model, where, update: values }) => withDb$1(async (db$2) => {
210
+ const { and, or } = convertWhereClause(model, where);
211
+ let query = db$2.updateTable(model).set(values);
212
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
213
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
214
+ return (await query.execute()).length;
215
+ }),
216
+ count: ({ model, where }) => withDb$1(async (db$2) => {
217
+ const { and, or } = convertWhereClause(model, where);
218
+ let query = db$2.selectFrom(model).select(db$2.fn.count("id").as("count"));
219
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
220
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
221
+ const res = await query.execute();
222
+ if (typeof res[0].count === "number") return res[0].count;
223
+ if (typeof res[0].count === "bigint") return Number(res[0].count);
224
+ return parseInt(res[0].count);
225
+ }),
226
+ delete: ({ model, where }) => withDb$1(async (db$2) => {
227
+ const { and, or } = convertWhereClause(model, where);
228
+ let query = db$2.deleteFrom(model);
229
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
230
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
231
+ await query.execute();
232
+ }),
233
+ deleteMany: ({ model, where }) => withDb$1(async (db$2) => {
234
+ const { and, or } = convertWhereClause(model, where);
235
+ let query = db$2.deleteFrom(model);
236
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
237
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
238
+ return (await query.execute()).length;
239
+ }),
240
+ options: config
241
+ };
242
+ };
243
+ };
244
+ let adapterOptions = null;
245
+ adapterOptions = {
246
+ config: {
247
+ adapterId: "kysely",
248
+ adapterName: "Kysely Adapter",
249
+ usePlural: config?.usePlural,
250
+ debugLogs: config?.debugLogs,
251
+ supportsBooleans: config?.type === "sqlite" || config?.type === "mssql" || config?.type === "mysql" || !config?.type ? false : true,
252
+ supportsDates: config?.type === "sqlite" || config?.type === "mssql" || !config?.type ? false : true,
253
+ supportsJSON: false,
254
+ transaction: config?.transaction ?? false ? (cb) => withDb((db$1) => db$1.transaction().execute(((trx) => {
255
+ return cb(require_adapter_factory.createAdapterFactory({
256
+ config: adapterOptions.config,
257
+ adapter: createCustomAdapter(trx)
258
+ })(lazyOptions));
259
+ }))) : false
260
+ },
261
+ adapter: createCustomAdapter(db)
262
+ };
263
+ const adapter = require_adapter_factory.createAdapterFactory(adapterOptions);
264
+ return (options) => {
265
+ lazyOptions = options;
266
+ return adapter(options);
267
+ };
268
+ };
269
+
270
+ //#endregion
271
+ Object.defineProperty(exports, 'createKyselyAdapter', {
272
+ enumerable: true,
273
+ get: function () {
274
+ return createKyselyAdapter;
275
+ }
276
+ });
277
+ Object.defineProperty(exports, 'getKyselyDatabaseType', {
278
+ enumerable: true,
279
+ get: function () {
280
+ return getKyselyDatabaseType;
281
+ }
282
+ });
283
+ Object.defineProperty(exports, 'kyselyAdapter', {
284
+ enumerable: true,
285
+ get: function () {
286
+ return kyselyAdapter;
287
+ }
288
+ });
@@ -0,0 +1,270 @@
1
+ import { t as createAdapterFactory } from "./adapter-factory-BXei1QRX.mjs";
2
+ import { isPromise } from "@faire-auth/core/static";
3
+ import { Kysely, MssqlDialect, MysqlDialect, PostgresDialect, SqliteDialect } from "kysely";
4
+
5
+ //#region src/adapters/kysely-adapter/dialect.ts
6
+ function getKyselyDatabaseType(db) {
7
+ if (!db) return null;
8
+ if ("dialect" in db) return getKyselyDatabaseType(db.dialect);
9
+ if ("createDriver" in db) {
10
+ if (db instanceof SqliteDialect) return "sqlite";
11
+ if (db instanceof MysqlDialect) return "mysql";
12
+ if (db instanceof PostgresDialect) return "postgres";
13
+ if (db instanceof MssqlDialect) return "mssql";
14
+ }
15
+ if ("aggregate" in db) return "sqlite";
16
+ if ("getConnection" in db) return "mysql";
17
+ if ("connect" in db) return "postgres";
18
+ if ("fileControl" in db) return "sqlite";
19
+ if ("open" in db && "close" in db && "prepare" in db) return "sqlite";
20
+ return null;
21
+ }
22
+ const createKyselyAdapter = (config) => {
23
+ const db = config.database;
24
+ if (!db) return {
25
+ kysely: null,
26
+ databaseType: null,
27
+ transaction: void 0
28
+ };
29
+ if ("db" in db) return {
30
+ kysely: db.db,
31
+ databaseType: db.type,
32
+ transaction: db.transaction
33
+ };
34
+ if ("dialect" in db) return {
35
+ kysely: new Kysely({ dialect: db.dialect }),
36
+ databaseType: db.type,
37
+ transaction: db.transaction
38
+ };
39
+ let dialect = void 0;
40
+ const databaseType = getKyselyDatabaseType(db);
41
+ if ("createDriver" in db) dialect = db;
42
+ if ("aggregate" in db && !("createSession" in db)) dialect = new SqliteDialect({ database: db });
43
+ if ("getConnection" in db) dialect = new MysqlDialect(db);
44
+ if ("connect" in db) dialect = new PostgresDialect({ pool: db });
45
+ const toReturn = {
46
+ kysely: dialect ? new Kysely({ dialect }) : null,
47
+ databaseType,
48
+ transaction: void 0,
49
+ async initialize() {
50
+ if (toReturn.kysely == null) {
51
+ if ("fileControl" in db) {
52
+ console.log("found file control");
53
+ const { BunSqliteDialect } = await import("./bun-sqlite-dialect-CfkBo2v5.mjs");
54
+ dialect = new BunSqliteDialect({ database: db });
55
+ }
56
+ if ("createSession" in db && typeof window === "undefined") {
57
+ console.log("found create session");
58
+ let DatabaseSync = void 0;
59
+ try {
60
+ let nodeSqlite = "node:sqlite";
61
+ ({DatabaseSync} = await import(
62
+ /* @vite-ignore */
63
+ /* webpackIgnore: true */
64
+ nodeSqlite
65
+ ));
66
+ } catch (error) {
67
+ console.log("caught");
68
+ if (error !== null && typeof error === "object" && "code" in error && error.code !== "ERR_UNKNOWN_BUILTIN_MODULE") throw error;
69
+ }
70
+ console.log("import dialect");
71
+ if (DatabaseSync && db instanceof DatabaseSync) {
72
+ const { NodeSqliteDialect } = await import("./node-sqlite-dialect-BfBzyOAg.mjs");
73
+ dialect = new NodeSqliteDialect({ database: db });
74
+ }
75
+ }
76
+ if (dialect) toReturn.kysely = new Kysely({ dialect });
77
+ }
78
+ }
79
+ };
80
+ return toReturn;
81
+ };
82
+
83
+ //#endregion
84
+ //#region src/adapters/kysely-adapter/kysely-adapter.ts
85
+ const withDbInit = (db, work) => async (fn) => {
86
+ const rdb = isPromise(db) ? await db : db;
87
+ if (work) work(rdb);
88
+ return fn(rdb);
89
+ };
90
+ const kyselyAdapter = (db, config) => {
91
+ let lazyOptions = null;
92
+ const withDb = withDbInit(db);
93
+ const createCustomAdapter = (db$1) => {
94
+ return ({ getFieldName }) => {
95
+ const withReturningInit = (db$2) => async (values, builder, model, where) => {
96
+ let res;
97
+ if (config?.type === "mysql") {
98
+ await builder.execute();
99
+ const field = values.id ? "id" : where.length > 0 && where[0]?.field ? where[0].field : "id";
100
+ if (!values.id && where.length === 0) {
101
+ res = await db$2.selectFrom(model).selectAll().orderBy(getFieldName({
102
+ model,
103
+ field
104
+ }), "desc").limit(1).executeTakeFirst();
105
+ return res;
106
+ }
107
+ const value = values[field] || where[0]?.value;
108
+ res = await db$2.selectFrom(model).selectAll().orderBy(getFieldName({
109
+ model,
110
+ field
111
+ }), "desc").where(getFieldName({
112
+ model,
113
+ field
114
+ }), "=", value).limit(1).executeTakeFirst();
115
+ return res;
116
+ }
117
+ if (config?.type === "mssql") {
118
+ res = await builder.outputAll("inserted").executeTakeFirst();
119
+ return res;
120
+ }
121
+ res = await builder.returningAll().executeTakeFirst();
122
+ return res;
123
+ };
124
+ let withReturning;
125
+ const withDb$1 = withDbInit(db$1, (db$2) => withReturning ??= withReturningInit(db$2));
126
+ function convertWhereClause(model, w) {
127
+ if (!w) return {
128
+ and: null,
129
+ or: null
130
+ };
131
+ const conditions = {
132
+ and: [],
133
+ or: []
134
+ };
135
+ w.forEach((condition) => {
136
+ let { field: _field, value: _value, operator = "=", connector = "AND" } = condition;
137
+ let value = _value;
138
+ let field = getFieldName({
139
+ model,
140
+ field: _field
141
+ });
142
+ const expr = (eb) => {
143
+ if (operator.toLowerCase() === "in") return eb(field, "in", Array.isArray(value) ? value : [value]);
144
+ if (operator.toLowerCase() === "not_in") return eb(field, "not in", Array.isArray(value) ? value : [value]);
145
+ if (operator === "contains") return eb(field, "like", `%${value}%`);
146
+ if (operator === "starts_with") return eb(field, "like", `${value}%`);
147
+ if (operator === "ends_with") return eb(field, "like", `%${value}`);
148
+ if (operator === "eq") return eb(field, "=", value);
149
+ if (operator === "ne") return eb(field, "<>", value);
150
+ if (operator === "gt") return eb(field, ">", value);
151
+ if (operator === "gte") return eb(field, ">=", value);
152
+ if (operator === "lt") return eb(field, "<", value);
153
+ if (operator === "lte") return eb(field, "<=", value);
154
+ return eb(field, operator, value);
155
+ };
156
+ if (connector === "OR") conditions.or.push(expr);
157
+ else conditions.and.push(expr);
158
+ });
159
+ return {
160
+ and: conditions.and.length ? conditions.and : null,
161
+ or: conditions.or.length ? conditions.or : null
162
+ };
163
+ }
164
+ return {
165
+ create: ({ data, model }) => withDb$1(async (db$2) => {
166
+ const builder = db$2.insertInto(model).values(data);
167
+ return await withReturning(data, builder, model, []);
168
+ }),
169
+ findOne: ({ model, where, select }) => withDb$1(async (db$2) => {
170
+ const { and, or } = convertWhereClause(model, where);
171
+ let query = db$2.selectFrom(model).selectAll();
172
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
173
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
174
+ const res = await query.executeTakeFirst();
175
+ if (!res) return null;
176
+ return res;
177
+ }),
178
+ findMany: ({ model, where, limit, offset, sortBy }) => withDb$1(async (db$2) => {
179
+ const { and, or } = convertWhereClause(model, where);
180
+ let query = db$2.selectFrom(model);
181
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
182
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
183
+ if (config?.type === "mssql") {
184
+ if (!offset) query = query.top(limit || 100);
185
+ } else query = query.limit(limit || 100);
186
+ if (sortBy) query = query.orderBy(getFieldName({
187
+ model,
188
+ field: sortBy.field
189
+ }), sortBy.direction);
190
+ if (offset) if (config?.type === "mssql") {
191
+ if (!sortBy) query = query.orderBy(getFieldName({
192
+ model,
193
+ field: "id"
194
+ }));
195
+ query = query.offset(offset).fetch(limit || 100);
196
+ } else query = query.offset(offset);
197
+ const res = await query.selectAll().execute();
198
+ if (!res) return [];
199
+ return res;
200
+ }),
201
+ update: ({ model, where, update: values }) => withDb$1(async (db$2) => {
202
+ const { and, or } = convertWhereClause(model, where);
203
+ let query = db$2.updateTable(model).set(values);
204
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
205
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
206
+ return await withReturning(values, query, model, where);
207
+ }),
208
+ updateMany: ({ model, where, update: values }) => withDb$1(async (db$2) => {
209
+ const { and, or } = convertWhereClause(model, where);
210
+ let query = db$2.updateTable(model).set(values);
211
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
212
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
213
+ return (await query.execute()).length;
214
+ }),
215
+ count: ({ model, where }) => withDb$1(async (db$2) => {
216
+ const { and, or } = convertWhereClause(model, where);
217
+ let query = db$2.selectFrom(model).select(db$2.fn.count("id").as("count"));
218
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
219
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
220
+ const res = await query.execute();
221
+ if (typeof res[0].count === "number") return res[0].count;
222
+ if (typeof res[0].count === "bigint") return Number(res[0].count);
223
+ return parseInt(res[0].count);
224
+ }),
225
+ delete: ({ model, where }) => withDb$1(async (db$2) => {
226
+ const { and, or } = convertWhereClause(model, where);
227
+ let query = db$2.deleteFrom(model);
228
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
229
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
230
+ await query.execute();
231
+ }),
232
+ deleteMany: ({ model, where }) => withDb$1(async (db$2) => {
233
+ const { and, or } = convertWhereClause(model, where);
234
+ let query = db$2.deleteFrom(model);
235
+ if (and) query = query.where((eb) => eb.and(and.map((expr) => expr(eb))));
236
+ if (or) query = query.where((eb) => eb.or(or.map((expr) => expr(eb))));
237
+ return (await query.execute()).length;
238
+ }),
239
+ options: config
240
+ };
241
+ };
242
+ };
243
+ let adapterOptions = null;
244
+ adapterOptions = {
245
+ config: {
246
+ adapterId: "kysely",
247
+ adapterName: "Kysely Adapter",
248
+ usePlural: config?.usePlural,
249
+ debugLogs: config?.debugLogs,
250
+ supportsBooleans: config?.type === "sqlite" || config?.type === "mssql" || config?.type === "mysql" || !config?.type ? false : true,
251
+ supportsDates: config?.type === "sqlite" || config?.type === "mssql" || !config?.type ? false : true,
252
+ supportsJSON: false,
253
+ transaction: config?.transaction ?? false ? (cb) => withDb((db$1) => db$1.transaction().execute(((trx) => {
254
+ return cb(createAdapterFactory({
255
+ config: adapterOptions.config,
256
+ adapter: createCustomAdapter(trx)
257
+ })(lazyOptions));
258
+ }))) : false
259
+ },
260
+ adapter: createCustomAdapter(db)
261
+ };
262
+ const adapter = createAdapterFactory(adapterOptions);
263
+ return (options) => {
264
+ lazyOptions = options;
265
+ return adapter(options);
266
+ };
267
+ };
268
+
269
+ //#endregion
270
+ export { createKyselyAdapter as n, getKyselyDatabaseType as r, kyselyAdapter as t };