@depup/better-auth__core 1.6.23-depup.2

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 (310) hide show
  1. package/LICENSE.md +20 -0
  2. package/README.md +32 -0
  3. package/changes.json +14 -0
  4. package/dist/api/index.d.mts +281 -0
  5. package/dist/api/index.mjs +92 -0
  6. package/dist/async_hooks/index.d.mts +6 -0
  7. package/dist/async_hooks/index.mjs +20 -0
  8. package/dist/async_hooks/pure.index.d.mts +6 -0
  9. package/dist/async_hooks/pure.index.mjs +33 -0
  10. package/dist/context/endpoint-context.d.mts +18 -0
  11. package/dist/context/endpoint-context.mjs +29 -0
  12. package/dist/context/global.d.mts +6 -0
  13. package/dist/context/global.mjs +36 -0
  14. package/dist/context/index.d.mts +5 -0
  15. package/dist/context/index.mjs +5 -0
  16. package/dist/context/request-state.d.mts +27 -0
  17. package/dist/context/request-state.mjs +47 -0
  18. package/dist/context/transaction.d.mts +27 -0
  19. package/dist/context/transaction.mjs +96 -0
  20. package/dist/db/adapter/factory.d.mts +17 -0
  21. package/dist/db/adapter/factory.mjs +905 -0
  22. package/dist/db/adapter/get-default-field-name.d.mts +18 -0
  23. package/dist/db/adapter/get-default-field-name.mjs +36 -0
  24. package/dist/db/adapter/get-default-model-name.d.mts +12 -0
  25. package/dist/db/adapter/get-default-model-name.mjs +30 -0
  26. package/dist/db/adapter/get-field-attributes.d.mts +26 -0
  27. package/dist/db/adapter/get-field-attributes.mjs +37 -0
  28. package/dist/db/adapter/get-field-name.d.mts +18 -0
  29. package/dist/db/adapter/get-field-name.mjs +31 -0
  30. package/dist/db/adapter/get-id-field.d.mts +36 -0
  31. package/dist/db/adapter/get-id-field.mjs +64 -0
  32. package/dist/db/adapter/get-model-name.d.mts +12 -0
  33. package/dist/db/adapter/get-model-name.mjs +21 -0
  34. package/dist/db/adapter/index.d.mts +615 -0
  35. package/dist/db/adapter/index.mjs +24 -0
  36. package/dist/db/adapter/types.d.mts +105 -0
  37. package/dist/db/adapter/utils.d.mts +7 -0
  38. package/dist/db/adapter/utils.mjs +37 -0
  39. package/dist/db/get-tables.d.mts +6 -0
  40. package/dist/db/get-tables.mjs +266 -0
  41. package/dist/db/index.d.mts +10 -0
  42. package/dist/db/index.mjs +8 -0
  43. package/dist/db/plugin.d.mts +12 -0
  44. package/dist/db/schema/account.d.mts +28 -0
  45. package/dist/db/schema/account.mjs +17 -0
  46. package/dist/db/schema/rate-limit.d.mts +18 -0
  47. package/dist/db/schema/rate-limit.mjs +9 -0
  48. package/dist/db/schema/session.d.mts +23 -0
  49. package/dist/db/schema/session.mjs +12 -0
  50. package/dist/db/schema/shared.d.mts +10 -0
  51. package/dist/db/schema/shared.mjs +9 -0
  52. package/dist/db/schema/user.d.mts +22 -0
  53. package/dist/db/schema/user.mjs +11 -0
  54. package/dist/db/schema/verification.d.mts +21 -0
  55. package/dist/db/schema/verification.mjs +10 -0
  56. package/dist/db/type.d.mts +194 -0
  57. package/dist/env/color-depth.d.mts +4 -0
  58. package/dist/env/color-depth.mjs +86 -0
  59. package/dist/env/env-impl.d.mts +32 -0
  60. package/dist/env/env-impl.mjs +81 -0
  61. package/dist/env/index.d.mts +4 -0
  62. package/dist/env/index.mjs +4 -0
  63. package/dist/env/logger.d.mts +48 -0
  64. package/dist/env/logger.mjs +79 -0
  65. package/dist/error/codes.d.mts +69 -0
  66. package/dist/error/codes.mjs +55 -0
  67. package/dist/error/index.d.mts +26 -0
  68. package/dist/error/index.mjs +27 -0
  69. package/dist/index.d.mts +9 -0
  70. package/dist/index.mjs +1 -0
  71. package/dist/instrumentation/api.mjs +12 -0
  72. package/dist/instrumentation/attributes.d.mts +11 -0
  73. package/dist/instrumentation/attributes.mjs +10 -0
  74. package/dist/instrumentation/index.d.mts +3 -0
  75. package/dist/instrumentation/index.mjs +3 -0
  76. package/dist/instrumentation/noop.mjs +42 -0
  77. package/dist/instrumentation/pure.index.d.mts +7 -0
  78. package/dist/instrumentation/pure.index.mjs +7 -0
  79. package/dist/instrumentation/tracer.d.mts +13 -0
  80. package/dist/instrumentation/tracer.mjs +53 -0
  81. package/dist/oauth2/client-credentials-token.d.mts +56 -0
  82. package/dist/oauth2/client-credentials-token.mjs +64 -0
  83. package/dist/oauth2/create-authorization-url.d.mts +44 -0
  84. package/dist/oauth2/create-authorization-url.mjs +41 -0
  85. package/dist/oauth2/index.d.mts +8 -0
  86. package/dist/oauth2/index.mjs +7 -0
  87. package/dist/oauth2/oauth-provider.d.mts +192 -0
  88. package/dist/oauth2/refresh-access-token.d.mts +54 -0
  89. package/dist/oauth2/refresh-access-token.mjs +73 -0
  90. package/dist/oauth2/reject-redirects.mjs +60 -0
  91. package/dist/oauth2/utils.d.mts +24 -0
  92. package/dist/oauth2/utils.mjs +48 -0
  93. package/dist/oauth2/validate-authorization-code.d.mts +85 -0
  94. package/dist/oauth2/validate-authorization-code.mjs +86 -0
  95. package/dist/oauth2/verify.d.mts +65 -0
  96. package/dist/oauth2/verify.mjs +202 -0
  97. package/dist/social-providers/apple.d.mts +133 -0
  98. package/dist/social-providers/apple.mjs +117 -0
  99. package/dist/social-providers/atlassian.d.mts +70 -0
  100. package/dist/social-providers/atlassian.mjs +80 -0
  101. package/dist/social-providers/cognito.d.mts +85 -0
  102. package/dist/social-providers/cognito.mjs +162 -0
  103. package/dist/social-providers/discord.d.mts +124 -0
  104. package/dist/social-providers/discord.mjs +62 -0
  105. package/dist/social-providers/dropbox.d.mts +69 -0
  106. package/dist/social-providers/dropbox.mjs +72 -0
  107. package/dist/social-providers/facebook.d.mts +79 -0
  108. package/dist/social-providers/facebook.mjs +157 -0
  109. package/dist/social-providers/figma.d.mts +61 -0
  110. package/dist/social-providers/figma.mjs +83 -0
  111. package/dist/social-providers/github.d.mts +102 -0
  112. package/dist/social-providers/github.mjs +92 -0
  113. package/dist/social-providers/gitlab.d.mts +123 -0
  114. package/dist/social-providers/gitlab.mjs +79 -0
  115. package/dist/social-providers/google.d.mts +123 -0
  116. package/dist/social-providers/google.mjs +137 -0
  117. package/dist/social-providers/huggingface.d.mts +83 -0
  118. package/dist/social-providers/huggingface.mjs +73 -0
  119. package/dist/social-providers/index.d.mts +1834 -0
  120. package/dist/social-providers/index.mjs +78 -0
  121. package/dist/social-providers/kakao.d.mts +161 -0
  122. package/dist/social-providers/kakao.mjs +70 -0
  123. package/dist/social-providers/kick.d.mts +73 -0
  124. package/dist/social-providers/kick.mjs +68 -0
  125. package/dist/social-providers/line.d.mts +105 -0
  126. package/dist/social-providers/line.mjs +110 -0
  127. package/dist/social-providers/linear.d.mts +68 -0
  128. package/dist/social-providers/linear.mjs +85 -0
  129. package/dist/social-providers/linkedin.d.mts +67 -0
  130. package/dist/social-providers/linkedin.mjs +73 -0
  131. package/dist/social-providers/microsoft-entra-id.d.mts +174 -0
  132. package/dist/social-providers/microsoft-entra-id.mjs +152 -0
  133. package/dist/social-providers/naver.d.mts +92 -0
  134. package/dist/social-providers/naver.mjs +65 -0
  135. package/dist/social-providers/notion.d.mts +64 -0
  136. package/dist/social-providers/notion.mjs +72 -0
  137. package/dist/social-providers/paybin.d.mts +71 -0
  138. package/dist/social-providers/paybin.mjs +81 -0
  139. package/dist/social-providers/paypal.d.mts +131 -0
  140. package/dist/social-providers/paypal.mjs +188 -0
  141. package/dist/social-providers/polar.d.mts +74 -0
  142. package/dist/social-providers/polar.mjs +71 -0
  143. package/dist/social-providers/railway.d.mts +65 -0
  144. package/dist/social-providers/railway.mjs +74 -0
  145. package/dist/social-providers/reddit.d.mts +62 -0
  146. package/dist/social-providers/reddit.mjs +81 -0
  147. package/dist/social-providers/roblox.d.mts +70 -0
  148. package/dist/social-providers/roblox.mjs +57 -0
  149. package/dist/social-providers/salesforce.d.mts +79 -0
  150. package/dist/social-providers/salesforce.mjs +87 -0
  151. package/dist/social-providers/slack.d.mts +83 -0
  152. package/dist/social-providers/slack.mjs +66 -0
  153. package/dist/social-providers/spotify.d.mts +63 -0
  154. package/dist/social-providers/spotify.mjs +69 -0
  155. package/dist/social-providers/tiktok.d.mts +168 -0
  156. package/dist/social-providers/tiktok.mjs +60 -0
  157. package/dist/social-providers/twitch.d.mts +79 -0
  158. package/dist/social-providers/twitch.mjs +75 -0
  159. package/dist/social-providers/twitter.d.mts +126 -0
  160. package/dist/social-providers/twitter.mjs +85 -0
  161. package/dist/social-providers/vercel.d.mts +62 -0
  162. package/dist/social-providers/vercel.mjs +58 -0
  163. package/dist/social-providers/vk.d.mts +70 -0
  164. package/dist/social-providers/vk.mjs +81 -0
  165. package/dist/social-providers/wechat.d.mts +113 -0
  166. package/dist/social-providers/wechat.mjs +81 -0
  167. package/dist/social-providers/zoom.d.mts +163 -0
  168. package/dist/social-providers/zoom.mjs +69 -0
  169. package/dist/types/context.d.mts +319 -0
  170. package/dist/types/cookie.d.mts +15 -0
  171. package/dist/types/helper.d.mts +10 -0
  172. package/dist/types/index.d.mts +9 -0
  173. package/dist/types/init-options.d.mts +1430 -0
  174. package/dist/types/plugin-client.d.mts +123 -0
  175. package/dist/types/plugin.d.mts +124 -0
  176. package/dist/types/secret.d.mts +11 -0
  177. package/dist/utils/async.d.mts +22 -0
  178. package/dist/utils/async.mjs +32 -0
  179. package/dist/utils/db.d.mts +9 -0
  180. package/dist/utils/db.mjs +15 -0
  181. package/dist/utils/deprecate.d.mts +9 -0
  182. package/dist/utils/deprecate.mjs +16 -0
  183. package/dist/utils/error-codes.d.mts +13 -0
  184. package/dist/utils/error-codes.mjs +10 -0
  185. package/dist/utils/fetch-metadata.d.mts +4 -0
  186. package/dist/utils/fetch-metadata.mjs +6 -0
  187. package/dist/utils/host.d.mts +147 -0
  188. package/dist/utils/host.mjs +295 -0
  189. package/dist/utils/id.d.mts +4 -0
  190. package/dist/utils/id.mjs +7 -0
  191. package/dist/utils/ip.d.mts +77 -0
  192. package/dist/utils/ip.mjs +230 -0
  193. package/dist/utils/is-api-error.d.mts +6 -0
  194. package/dist/utils/is-api-error.mjs +8 -0
  195. package/dist/utils/json.d.mts +4 -0
  196. package/dist/utils/json.mjs +41 -0
  197. package/dist/utils/redirect-uri.d.mts +20 -0
  198. package/dist/utils/redirect-uri.mjs +48 -0
  199. package/dist/utils/string.d.mts +8 -0
  200. package/dist/utils/string.mjs +25 -0
  201. package/dist/utils/url.d.mts +37 -0
  202. package/dist/utils/url.mjs +61 -0
  203. package/package.json +216 -0
  204. package/src/api/index.ts +185 -0
  205. package/src/async_hooks/index.ts +40 -0
  206. package/src/async_hooks/pure.index.ts +46 -0
  207. package/src/context/endpoint-context.ts +50 -0
  208. package/src/context/global.ts +57 -0
  209. package/src/context/index.ts +23 -0
  210. package/src/context/request-state.ts +91 -0
  211. package/src/context/transaction.ts +169 -0
  212. package/src/db/adapter/factory.ts +1740 -0
  213. package/src/db/adapter/get-default-field-name.ts +59 -0
  214. package/src/db/adapter/get-default-model-name.ts +51 -0
  215. package/src/db/adapter/get-field-attributes.ts +62 -0
  216. package/src/db/adapter/get-field-name.ts +43 -0
  217. package/src/db/adapter/get-id-field.ts +150 -0
  218. package/src/db/adapter/get-model-name.ts +36 -0
  219. package/src/db/adapter/index.ts +656 -0
  220. package/src/db/adapter/types.ts +134 -0
  221. package/src/db/adapter/utils.ts +61 -0
  222. package/src/db/get-tables.ts +304 -0
  223. package/src/db/index.ts +43 -0
  224. package/src/db/plugin.ts +11 -0
  225. package/src/db/schema/account.ts +47 -0
  226. package/src/db/schema/rate-limit.ts +36 -0
  227. package/src/db/schema/session.ts +29 -0
  228. package/src/db/schema/shared.ts +7 -0
  229. package/src/db/schema/user.ts +31 -0
  230. package/src/db/schema/verification.ts +28 -0
  231. package/src/db/type.ts +360 -0
  232. package/src/env/color-depth.ts +172 -0
  233. package/src/env/env-impl.ts +123 -0
  234. package/src/env/index.ts +23 -0
  235. package/src/env/logger.ts +145 -0
  236. package/src/error/codes.ts +72 -0
  237. package/src/error/index.ts +44 -0
  238. package/src/index.ts +1 -0
  239. package/src/instrumentation/api.ts +17 -0
  240. package/src/instrumentation/attributes.ts +22 -0
  241. package/src/instrumentation/index.ts +2 -0
  242. package/src/instrumentation/noop.ts +74 -0
  243. package/src/instrumentation/pure.index.ts +31 -0
  244. package/src/instrumentation/tracer.ts +95 -0
  245. package/src/oauth2/client-credentials-token.ts +126 -0
  246. package/src/oauth2/create-authorization-url.ts +89 -0
  247. package/src/oauth2/index.ts +34 -0
  248. package/src/oauth2/oauth-provider.ts +222 -0
  249. package/src/oauth2/refresh-access-token.ts +157 -0
  250. package/src/oauth2/reject-redirects.ts +70 -0
  251. package/src/oauth2/utils.ts +70 -0
  252. package/src/oauth2/validate-authorization-code.ts +190 -0
  253. package/src/oauth2/verify.ts +408 -0
  254. package/src/social-providers/apple.ts +249 -0
  255. package/src/social-providers/atlassian.ts +133 -0
  256. package/src/social-providers/cognito.ts +281 -0
  257. package/src/social-providers/discord.ts +170 -0
  258. package/src/social-providers/dropbox.ts +112 -0
  259. package/src/social-providers/facebook.ts +288 -0
  260. package/src/social-providers/figma.ts +118 -0
  261. package/src/social-providers/github.ts +184 -0
  262. package/src/social-providers/gitlab.ts +155 -0
  263. package/src/social-providers/google.ts +263 -0
  264. package/src/social-providers/huggingface.ts +119 -0
  265. package/src/social-providers/index.ts +132 -0
  266. package/src/social-providers/kakao.ts +179 -0
  267. package/src/social-providers/kick.ts +109 -0
  268. package/src/social-providers/line.ts +169 -0
  269. package/src/social-providers/linear.ts +121 -0
  270. package/src/social-providers/linkedin.ts +110 -0
  271. package/src/social-providers/microsoft-entra-id.ts +391 -0
  272. package/src/social-providers/naver.ts +113 -0
  273. package/src/social-providers/notion.ts +108 -0
  274. package/src/social-providers/paybin.ts +118 -0
  275. package/src/social-providers/paypal.ts +371 -0
  276. package/src/social-providers/polar.ts +111 -0
  277. package/src/social-providers/railway.ts +100 -0
  278. package/src/social-providers/reddit.ts +126 -0
  279. package/src/social-providers/roblox.ts +112 -0
  280. package/src/social-providers/salesforce.ts +159 -0
  281. package/src/social-providers/slack.ts +112 -0
  282. package/src/social-providers/spotify.ts +94 -0
  283. package/src/social-providers/tiktok.ts +211 -0
  284. package/src/social-providers/twitch.ts +112 -0
  285. package/src/social-providers/twitter.ts +199 -0
  286. package/src/social-providers/vercel.ts +87 -0
  287. package/src/social-providers/vk.ts +125 -0
  288. package/src/social-providers/wechat.ts +220 -0
  289. package/src/social-providers/zoom.ts +230 -0
  290. package/src/types/context.ts +460 -0
  291. package/src/types/cookie.ts +10 -0
  292. package/src/types/helper.ts +27 -0
  293. package/src/types/index.ts +40 -0
  294. package/src/types/init-options.ts +1679 -0
  295. package/src/types/plugin-client.ts +143 -0
  296. package/src/types/plugin.ts +163 -0
  297. package/src/types/secret.ts +8 -0
  298. package/src/utils/async.ts +53 -0
  299. package/src/utils/db.ts +20 -0
  300. package/src/utils/deprecate.ts +21 -0
  301. package/src/utils/error-codes.ts +68 -0
  302. package/src/utils/fetch-metadata.ts +3 -0
  303. package/src/utils/host.ts +416 -0
  304. package/src/utils/id.ts +5 -0
  305. package/src/utils/ip.ts +395 -0
  306. package/src/utils/is-api-error.ts +10 -0
  307. package/src/utils/json.ts +56 -0
  308. package/src/utils/redirect-uri.ts +54 -0
  309. package/src/utils/string.ts +40 -0
  310. package/src/utils/url.ts +77 -0
@@ -0,0 +1,18 @@
1
+ import { BetterAuthDBSchema } from "../type.mjs";
2
+
3
+ //#region src/db/adapter/get-default-field-name.d.ts
4
+ declare const initGetDefaultFieldName: ({
5
+ schema,
6
+ usePlural
7
+ }: {
8
+ schema: BetterAuthDBSchema;
9
+ usePlural: boolean | undefined;
10
+ }) => ({
11
+ field,
12
+ model: unsafeModel
13
+ }: {
14
+ model: string;
15
+ field: string;
16
+ }) => string;
17
+ //#endregion
18
+ export { initGetDefaultFieldName };
@@ -0,0 +1,36 @@
1
+ import { BetterAuthError } from "../../error/index.mjs";
2
+ import { initGetDefaultModelName } from "./get-default-model-name.mjs";
3
+ //#region src/db/adapter/get-default-field-name.ts
4
+ const initGetDefaultFieldName = ({ schema, usePlural }) => {
5
+ const getDefaultModelName = initGetDefaultModelName({
6
+ schema,
7
+ usePlural
8
+ });
9
+ /**
10
+ * This function helps us get the default field name from the schema defined by devs.
11
+ * Often times, the user will be using the `fieldName` which could had been customized by the users.
12
+ * This function helps us get the actual field name useful to match against the schema. (eg: schema[model].fields[field])
13
+ *
14
+ * If it's still unclear what this does:
15
+ *
16
+ * 1. User can define a custom fieldName.
17
+ * 2. When using a custom fieldName, doing something like `schema[model].fields[field]` will not work.
18
+ */
19
+ const getDefaultFieldName = ({ field, model: unsafeModel }) => {
20
+ if (field === "id" || field === "_id") return "id";
21
+ const model = getDefaultModelName(unsafeModel);
22
+ let f = schema[model]?.fields[field];
23
+ if (!f) {
24
+ const result = Object.entries(schema[model].fields).find(([_, f]) => f.fieldName === field);
25
+ if (result) {
26
+ f = result[1];
27
+ field = result[0];
28
+ }
29
+ }
30
+ if (!f) throw new BetterAuthError(`Field ${field} not found in model ${model}`);
31
+ return field;
32
+ };
33
+ return getDefaultFieldName;
34
+ };
35
+ //#endregion
36
+ export { initGetDefaultFieldName };
@@ -0,0 +1,12 @@
1
+ import { BetterAuthDBSchema } from "../type.mjs";
2
+
3
+ //#region src/db/adapter/get-default-model-name.d.ts
4
+ declare const initGetDefaultModelName: ({
5
+ usePlural,
6
+ schema
7
+ }: {
8
+ usePlural: boolean | undefined;
9
+ schema: BetterAuthDBSchema;
10
+ }) => (model: string) => string;
11
+ //#endregion
12
+ export { initGetDefaultModelName };
@@ -0,0 +1,30 @@
1
+ import { BetterAuthError } from "../../error/index.mjs";
2
+ //#region src/db/adapter/get-default-model-name.ts
3
+ const initGetDefaultModelName = ({ usePlural, schema }) => {
4
+ /**
5
+ * This function helps us get the default model name from the schema defined by devs.
6
+ * Often times, the user will be using the `modelName` which could had been customized by the users.
7
+ * This function helps us get the actual model name useful to match against the schema. (eg: schema[model])
8
+ *
9
+ * If it's still unclear what this does:
10
+ *
11
+ * 1. User can define a custom modelName.
12
+ * 2. When using a custom modelName, doing something like `schema[model]` will not work.
13
+ * 3. Using this function helps us get the actual model name based on the user's defined custom modelName.
14
+ */
15
+ const getDefaultModelName = (model) => {
16
+ if (usePlural && model.charAt(model.length - 1) === "s") {
17
+ const pluralessModel = model.slice(0, -1);
18
+ let m = schema[pluralessModel] ? pluralessModel : void 0;
19
+ if (!m) m = Object.entries(schema).find(([_, f]) => f.modelName === pluralessModel)?.[0];
20
+ if (m) return m;
21
+ }
22
+ let m = schema[model] ? model : void 0;
23
+ if (!m) m = Object.entries(schema).find(([_, f]) => f.modelName === model)?.[0];
24
+ if (!m) throw new BetterAuthError(`Model "${model}" not found in schema`);
25
+ return m;
26
+ };
27
+ return getDefaultModelName;
28
+ };
29
+ //#endregion
30
+ export { initGetDefaultModelName };
@@ -0,0 +1,26 @@
1
+ import { BetterAuthDBSchema, DBFieldAttribute, DBFieldType } from "../type.mjs";
2
+ import { BetterAuthOptions } from "../../types/init-options.mjs";
3
+ //#region src/db/adapter/get-field-attributes.d.ts
4
+ declare const initGetFieldAttributes: ({
5
+ usePlural,
6
+ schema,
7
+ options,
8
+ customIdGenerator,
9
+ disableIdGeneration
10
+ }: {
11
+ usePlural?: boolean;
12
+ schema: BetterAuthDBSchema;
13
+ options: BetterAuthOptions;
14
+ disableIdGeneration?: boolean;
15
+ customIdGenerator?: ((props: {
16
+ model: string;
17
+ }) => string) | undefined;
18
+ }) => ({
19
+ model,
20
+ field
21
+ }: {
22
+ model: string;
23
+ field: string;
24
+ }) => DBFieldAttribute<DBFieldType>;
25
+ //#endregion
26
+ export { initGetFieldAttributes };
@@ -0,0 +1,37 @@
1
+ import { BetterAuthError } from "../../error/index.mjs";
2
+ import { initGetDefaultModelName } from "./get-default-model-name.mjs";
3
+ import { initGetDefaultFieldName } from "./get-default-field-name.mjs";
4
+ import { initGetIdField } from "./get-id-field.mjs";
5
+ //#region src/db/adapter/get-field-attributes.ts
6
+ const initGetFieldAttributes = ({ usePlural, schema, options, customIdGenerator, disableIdGeneration }) => {
7
+ const getDefaultModelName = initGetDefaultModelName({
8
+ usePlural,
9
+ schema
10
+ });
11
+ const getDefaultFieldName = initGetDefaultFieldName({
12
+ usePlural,
13
+ schema
14
+ });
15
+ const idField = initGetIdField({
16
+ usePlural,
17
+ schema,
18
+ options,
19
+ customIdGenerator,
20
+ disableIdGeneration
21
+ });
22
+ const getFieldAttributes = ({ model, field }) => {
23
+ const defaultModelName = getDefaultModelName(model);
24
+ const defaultFieldName = getDefaultFieldName({
25
+ field,
26
+ model: defaultModelName
27
+ });
28
+ const fields = schema[defaultModelName].fields;
29
+ fields.id = idField({ customModelName: defaultModelName });
30
+ const fieldAttributes = fields[defaultFieldName];
31
+ if (!fieldAttributes) throw new BetterAuthError(`Field ${field} not found in model ${model}`);
32
+ return fieldAttributes;
33
+ };
34
+ return getFieldAttributes;
35
+ };
36
+ //#endregion
37
+ export { initGetFieldAttributes };
@@ -0,0 +1,18 @@
1
+ import { BetterAuthDBSchema } from "../type.mjs";
2
+
3
+ //#region src/db/adapter/get-field-name.d.ts
4
+ declare const initGetFieldName: ({
5
+ schema,
6
+ usePlural
7
+ }: {
8
+ schema: BetterAuthDBSchema;
9
+ usePlural: boolean | undefined;
10
+ }) => ({
11
+ model: modelName,
12
+ field: fieldName
13
+ }: {
14
+ model: string;
15
+ field: string;
16
+ }) => string;
17
+ //#endregion
18
+ export { initGetFieldName };
@@ -0,0 +1,31 @@
1
+ import { initGetDefaultModelName } from "./get-default-model-name.mjs";
2
+ import { initGetDefaultFieldName } from "./get-default-field-name.mjs";
3
+ //#region src/db/adapter/get-field-name.ts
4
+ const initGetFieldName = ({ schema, usePlural }) => {
5
+ const getDefaultModelName = initGetDefaultModelName({
6
+ schema,
7
+ usePlural
8
+ });
9
+ const getDefaultFieldName = initGetDefaultFieldName({
10
+ schema,
11
+ usePlural
12
+ });
13
+ /**
14
+ * Get the field name which is expected to be saved in the database based on the user's schema.
15
+ *
16
+ * This function is useful if you need to save the field name to the database.
17
+ *
18
+ * For example, if the user has defined a custom field name for the `user` model, then you can use this function to get the actual field name from the schema.
19
+ */
20
+ function getFieldName({ model: modelName, field: fieldName }) {
21
+ const model = getDefaultModelName(modelName);
22
+ const field = getDefaultFieldName({
23
+ model,
24
+ field: fieldName
25
+ });
26
+ return schema[model]?.fields[field]?.fieldName || field;
27
+ }
28
+ return getFieldName;
29
+ };
30
+ //#endregion
31
+ export { initGetFieldName };
@@ -0,0 +1,36 @@
1
+ import { BetterAuthDBSchema, DBPrimitive } from "../type.mjs";
2
+ import { BetterAuthOptions } from "../../types/init-options.mjs";
3
+ //#region src/db/adapter/get-id-field.d.ts
4
+ declare const initGetIdField: ({
5
+ usePlural,
6
+ schema,
7
+ disableIdGeneration,
8
+ options,
9
+ customIdGenerator,
10
+ supportsUUIDs
11
+ }: {
12
+ usePlural?: boolean;
13
+ schema: BetterAuthDBSchema;
14
+ options: BetterAuthOptions;
15
+ disableIdGeneration?: boolean;
16
+ customIdGenerator?: ((props: {
17
+ model: string;
18
+ }) => string) | undefined;
19
+ supportsUUIDs?: boolean;
20
+ }) => ({
21
+ customModelName,
22
+ forceAllowId
23
+ }: {
24
+ customModelName?: string;
25
+ forceAllowId?: boolean;
26
+ }) => {
27
+ transform: {
28
+ input: (value: DBPrimitive) => string | number | true | unknown[] | Date | Record<string, unknown> | undefined;
29
+ output: (value: DBPrimitive) => string | undefined;
30
+ };
31
+ defaultValue?: (() => string | false | undefined) | undefined;
32
+ type: "string" | "number";
33
+ required: boolean;
34
+ };
35
+ //#endregion
36
+ export { initGetIdField };
@@ -0,0 +1,64 @@
1
+ import { logger } from "../../env/logger.mjs";
2
+ import { generateId } from "../../utils/id.mjs";
3
+ import { initGetDefaultModelName } from "./get-default-model-name.mjs";
4
+ //#region src/db/adapter/get-id-field.ts
5
+ const initGetIdField = ({ usePlural, schema, disableIdGeneration, options, customIdGenerator, supportsUUIDs }) => {
6
+ const getDefaultModelName = initGetDefaultModelName({
7
+ usePlural,
8
+ schema
9
+ });
10
+ const idField = ({ customModelName, forceAllowId }) => {
11
+ const useNumberId = options.advanced?.database?.generateId === "serial";
12
+ const useUUIDs = options.advanced?.database?.generateId === "uuid";
13
+ const shouldGenerateId = (() => {
14
+ if (disableIdGeneration) return false;
15
+ else if (useNumberId && !forceAllowId) return false;
16
+ else if (useUUIDs) return !supportsUUIDs;
17
+ else return true;
18
+ })();
19
+ const model = getDefaultModelName(customModelName ?? "id");
20
+ return {
21
+ type: useNumberId ? "number" : "string",
22
+ required: shouldGenerateId ? true : false,
23
+ ...shouldGenerateId ? { defaultValue() {
24
+ if (disableIdGeneration) return void 0;
25
+ const generateId$1 = options.advanced?.database?.generateId;
26
+ if (generateId$1 === false || generateId$1 === "serial") return void 0;
27
+ if (typeof generateId$1 === "function") return generateId$1({ model });
28
+ if (generateId$1 === "uuid") return crypto.randomUUID();
29
+ if (customIdGenerator) return customIdGenerator({ model });
30
+ return generateId();
31
+ } } : {},
32
+ transform: {
33
+ input: (value) => {
34
+ if (!value) return void 0;
35
+ if (useNumberId) {
36
+ const numberValue = Number(value);
37
+ if (isNaN(numberValue)) return;
38
+ return numberValue;
39
+ }
40
+ if (useUUIDs) {
41
+ if (shouldGenerateId && !forceAllowId) return value;
42
+ if (disableIdGeneration) return void 0;
43
+ if (forceAllowId && typeof value === "string") if (/^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value)) return value;
44
+ else {
45
+ const stack = (/* @__PURE__ */ new Error()).stack?.split("\n").filter((_, i) => i !== 1).join("\n").replace("Error:", "");
46
+ logger.warn("[Adapter Factory] - Invalid UUID value for field `id` provided when `forceAllowId` is true. Generating a new UUID.", stack);
47
+ }
48
+ if (supportsUUIDs) return void 0;
49
+ if (typeof value !== "string" && !supportsUUIDs) return crypto.randomUUID();
50
+ return;
51
+ }
52
+ return value;
53
+ },
54
+ output: (value) => {
55
+ if (!value) return void 0;
56
+ return String(value);
57
+ }
58
+ }
59
+ };
60
+ };
61
+ return idField;
62
+ };
63
+ //#endregion
64
+ export { initGetIdField };
@@ -0,0 +1,12 @@
1
+ import { BetterAuthDBSchema } from "../type.mjs";
2
+
3
+ //#region src/db/adapter/get-model-name.d.ts
4
+ declare const initGetModelName: ({
5
+ usePlural,
6
+ schema
7
+ }: {
8
+ usePlural: boolean | undefined;
9
+ schema: BetterAuthDBSchema;
10
+ }) => (model: string) => string;
11
+ //#endregion
12
+ export { initGetModelName };
@@ -0,0 +1,21 @@
1
+ import { initGetDefaultModelName } from "./get-default-model-name.mjs";
2
+ //#region src/db/adapter/get-model-name.ts
3
+ const initGetModelName = ({ usePlural, schema }) => {
4
+ const getDefaultModelName = initGetDefaultModelName({
5
+ schema,
6
+ usePlural
7
+ });
8
+ /**
9
+ * Users can overwrite the default model of some tables. This function helps find the correct model name.
10
+ * Furthermore, if the user passes `usePlural` as true in their adapter config,
11
+ * then we should return the model name ending with an `s`.
12
+ */
13
+ const getModelName = (model) => {
14
+ const defaultModelKey = getDefaultModelName(model);
15
+ if (schema && schema[defaultModelKey] && schema[defaultModelKey].modelName !== model) return usePlural ? `${schema[defaultModelKey].modelName}s` : schema[defaultModelKey].modelName;
16
+ return usePlural ? `${model}s` : model;
17
+ };
18
+ return getModelName;
19
+ };
20
+ //#endregion
21
+ export { initGetModelName };