@revealui/auth 0.0.1-pre.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 (413) hide show
  1. package/LICENSE +202 -0
  2. package/dist/better-auth/adapter/__tests__/transform.test.js +213 -0
  3. package/dist/better-auth/adapter/__tests__/transform.test.js.map +1 -0
  4. package/dist/better-auth/adapter/generate-schema/biome.d.js +2 -0
  5. package/dist/better-auth/adapter/generate-schema/biome.d.js.map +1 -0
  6. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +5 -0
  7. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +482 -0
  8. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js.map +1 -0
  9. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts +1 -0
  10. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +42 -0
  11. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js.map +1 -0
  12. package/dist/better-auth/adapter/generate-schema/index.d.ts +4 -0
  13. package/dist/better-auth/adapter/generate-schema/index.js +19 -0
  14. package/dist/better-auth/adapter/generate-schema/index.js.map +1 -0
  15. package/dist/better-auth/adapter/generate-schema/utils.d.ts +2 -0
  16. package/dist/better-auth/adapter/generate-schema/utils.js +20 -0
  17. package/dist/better-auth/adapter/generate-schema/utils.js.map +1 -0
  18. package/dist/better-auth/adapter/index.d.ts +15 -0
  19. package/dist/better-auth/adapter/index.js +731 -0
  20. package/dist/better-auth/adapter/index.js.map +1 -0
  21. package/dist/better-auth/adapter/tests/adapter.test.js +174 -0
  22. package/dist/better-auth/adapter/tests/adapter.test.js.map +1 -0
  23. package/dist/better-auth/adapter/tests/base-collections-tests.js +575 -0
  24. package/dist/better-auth/adapter/tests/base-collections-tests.js.map +1 -0
  25. package/dist/better-auth/adapter/tests/dev/index.js +117 -0
  26. package/dist/better-auth/adapter/tests/dev/index.js.map +1 -0
  27. package/dist/better-auth/adapter/tests/dev/migrate.js +26 -0
  28. package/dist/better-auth/adapter/tests/dev/migrate.js.map +1 -0
  29. package/dist/better-auth/adapter/tests/dev/migrations/20250423_232936_init.js +218 -0
  30. package/dist/better-auth/adapter/tests/dev/migrations/20250423_232936_init.js.map +1 -0
  31. package/dist/better-auth/adapter/tests/dev/schema.js +160 -0
  32. package/dist/better-auth/adapter/tests/dev/schema.js.map +1 -0
  33. package/dist/better-auth/adapter/tests/plugins-tests.js +2 -0
  34. package/dist/better-auth/adapter/tests/plugins-tests.js.map +1 -0
  35. package/dist/better-auth/adapter/transform/index.d.ts +27 -0
  36. package/dist/better-auth/adapter/transform/index.js +664 -0
  37. package/dist/better-auth/adapter/transform/index.js.map +1 -0
  38. package/dist/better-auth/adapter/types.d.ts +10 -0
  39. package/dist/better-auth/adapter/types.js +3 -0
  40. package/dist/better-auth/adapter/types.js.map +1 -0
  41. package/dist/better-auth/generated-types.d.ts +285 -0
  42. package/dist/better-auth/index.d.ts +3 -0
  43. package/dist/better-auth/index.js +5 -0
  44. package/dist/better-auth/index.js.map +1 -0
  45. package/dist/better-auth/plugin/__tests__/plugin.test.js +162 -0
  46. package/dist/better-auth/plugin/__tests__/plugin.test.js.map +1 -0
  47. package/dist/better-auth/plugin/constants.d.ts +220 -0
  48. package/dist/better-auth/plugin/constants.js +249 -0
  49. package/dist/better-auth/plugin/constants.js.map +1 -0
  50. package/dist/better-auth/plugin/helpers/check-plugin-exists.d.ts +12 -0
  51. package/dist/better-auth/plugin/helpers/check-plugin-exists.js +14 -0
  52. package/dist/better-auth/plugin/helpers/check-plugin-exists.js.map +1 -0
  53. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +29 -0
  54. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +46 -0
  55. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js.map +1 -0
  56. package/dist/better-auth/plugin/helpers/get-admin-access.d.ts +7 -0
  57. package/dist/better-auth/plugin/helpers/get-admin-access.js +22 -0
  58. package/dist/better-auth/plugin/helpers/get-admin-access.js.map +1 -0
  59. package/dist/better-auth/plugin/helpers/get-all-roles.d.ts +5 -0
  60. package/dist/better-auth/plugin/helpers/get-all-roles.js +20 -0
  61. package/dist/better-auth/plugin/helpers/get-all-roles.js.map +1 -0
  62. package/dist/better-auth/plugin/helpers/get-better-auth-schema.d.ts +18 -0
  63. package/dist/better-auth/plugin/helpers/get-better-auth-schema.js +70 -0
  64. package/dist/better-auth/plugin/helpers/get-better-auth-schema.js.map +1 -0
  65. package/dist/better-auth/plugin/helpers/get-collection-slug.d.ts +5 -0
  66. package/dist/better-auth/plugin/helpers/get-collection-slug.js +20 -0
  67. package/dist/better-auth/plugin/helpers/get-collection-slug.js.map +1 -0
  68. package/dist/better-auth/plugin/helpers/get-collection.d.ts +15 -0
  69. package/dist/better-auth/plugin/helpers/get-collection.js +29 -0
  70. package/dist/better-auth/plugin/helpers/get-collection.js.map +1 -0
  71. package/dist/better-auth/plugin/helpers/get-ip.d.ts +2 -0
  72. package/dist/better-auth/plugin/helpers/get-ip.js +31 -0
  73. package/dist/better-auth/plugin/helpers/get-ip.js.map +1 -0
  74. package/dist/better-auth/plugin/helpers/get-signed-cookie.d.ts +2 -0
  75. package/dist/better-auth/plugin/helpers/get-signed-cookie.js +65 -0
  76. package/dist/better-auth/plugin/helpers/get-signed-cookie.js.map +1 -0
  77. package/dist/better-auth/plugin/helpers/index.d.ts +1 -0
  78. package/dist/better-auth/plugin/helpers/index.js +3 -0
  79. package/dist/better-auth/plugin/helpers/index.js.map +1 -0
  80. package/dist/better-auth/plugin/helpers/prepare-session-data.d.ts +59 -0
  81. package/dist/better-auth/plugin/helpers/prepare-session-data.js +49 -0
  82. package/dist/better-auth/plugin/helpers/prepare-session-data.js.map +1 -0
  83. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.d.ts +20 -0
  84. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js +67 -0
  85. package/dist/better-auth/plugin/helpers/sync-resolved-schema-with-collection-map.js.map +1 -0
  86. package/dist/better-auth/plugin/index.d.ts +11 -0
  87. package/dist/better-auth/plugin/index.js +125 -0
  88. package/dist/better-auth/plugin/index.js.map +1 -0
  89. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.d.ts +12 -0
  90. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js +87 -0
  91. package/dist/better-auth/plugin/lib/apply-disabled-default-auth-config.js.map +1 -0
  92. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.d.ts +3 -0
  93. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js +60 -0
  94. package/dist/better-auth/plugin/lib/build-collections/accounts/hooks/sync-password-to-user.js.map +1 -0
  95. package/dist/better-auth/plugin/lib/build-collections/accounts/index.d.ts +3 -0
  96. package/dist/better-auth/plugin/lib/build-collections/accounts/index.js +154 -0
  97. package/dist/better-auth/plugin/lib/build-collections/accounts/index.js.map +1 -0
  98. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.d.ts +5 -0
  99. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js +11 -0
  100. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-after-read.js.map +1 -0
  101. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.d.ts +2 -0
  102. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js +8 -0
  103. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/hooks/get-url-before-change.js.map +1 -0
  104. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.d.ts +6 -0
  105. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js +119 -0
  106. package/dist/better-auth/plugin/lib/build-collections/admin-invitations/index.js.map +1 -0
  107. package/dist/better-auth/plugin/lib/build-collections/api-keys.d.ts +3 -0
  108. package/dist/better-auth/plugin/lib/build-collections/api-keys.js +177 -0
  109. package/dist/better-auth/plugin/lib/build-collections/api-keys.js.map +1 -0
  110. package/dist/better-auth/plugin/lib/build-collections/device-code.d.ts +3 -0
  111. package/dist/better-auth/plugin/lib/build-collections/device-code.js +50 -0
  112. package/dist/better-auth/plugin/lib/build-collections/device-code.js.map +1 -0
  113. package/dist/better-auth/plugin/lib/build-collections/index.d.ts +10 -0
  114. package/dist/better-auth/plugin/lib/build-collections/index.js +73 -0
  115. package/dist/better-auth/plugin/lib/build-collections/index.js.map +1 -0
  116. package/dist/better-auth/plugin/lib/build-collections/invitations.d.ts +3 -0
  117. package/dist/better-auth/plugin/lib/build-collections/invitations.js +94 -0
  118. package/dist/better-auth/plugin/lib/build-collections/invitations.js.map +1 -0
  119. package/dist/better-auth/plugin/lib/build-collections/jwks.d.ts +3 -0
  120. package/dist/better-auth/plugin/lib/build-collections/jwks.js +59 -0
  121. package/dist/better-auth/plugin/lib/build-collections/jwks.js.map +1 -0
  122. package/dist/better-auth/plugin/lib/build-collections/members.d.ts +3 -0
  123. package/dist/better-auth/plugin/lib/build-collections/members.js +73 -0
  124. package/dist/better-auth/plugin/lib/build-collections/members.js.map +1 -0
  125. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.d.ts +3 -0
  126. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js +107 -0
  127. package/dist/better-auth/plugin/lib/build-collections/oauth-access-tokens.js.map +1 -0
  128. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.d.ts +3 -0
  129. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js +118 -0
  130. package/dist/better-auth/plugin/lib/build-collections/oauth-applications.js.map +1 -0
  131. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.d.ts +3 -0
  132. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js +89 -0
  133. package/dist/better-auth/plugin/lib/build-collections/oauth-consents.js.map +1 -0
  134. package/dist/better-auth/plugin/lib/build-collections/organizations.d.ts +3 -0
  135. package/dist/better-auth/plugin/lib/build-collections/organizations.js +70 -0
  136. package/dist/better-auth/plugin/lib/build-collections/organizations.js.map +1 -0
  137. package/dist/better-auth/plugin/lib/build-collections/passkeys.d.ts +3 -0
  138. package/dist/better-auth/plugin/lib/build-collections/passkeys.js +115 -0
  139. package/dist/better-auth/plugin/lib/build-collections/passkeys.js.map +1 -0
  140. package/dist/better-auth/plugin/lib/build-collections/sessions.d.ts +3 -0
  141. package/dist/better-auth/plugin/lib/build-collections/sessions.js +170 -0
  142. package/dist/better-auth/plugin/lib/build-collections/sessions.js.map +1 -0
  143. package/dist/better-auth/plugin/lib/build-collections/sso-providers.d.ts +3 -0
  144. package/dist/better-auth/plugin/lib/build-collections/sso-providers.js +81 -0
  145. package/dist/better-auth/plugin/lib/build-collections/sso-providers.js.map +1 -0
  146. package/dist/better-auth/plugin/lib/build-collections/subscriptions.d.ts +3 -0
  147. package/dist/better-auth/plugin/lib/build-collections/subscriptions.js +111 -0
  148. package/dist/better-auth/plugin/lib/build-collections/subscriptions.js.map +1 -0
  149. package/dist/better-auth/plugin/lib/build-collections/team-members.d.ts +3 -0
  150. package/dist/better-auth/plugin/lib/build-collections/team-members.js +57 -0
  151. package/dist/better-auth/plugin/lib/build-collections/team-members.js.map +1 -0
  152. package/dist/better-auth/plugin/lib/build-collections/teams.d.ts +3 -0
  153. package/dist/better-auth/plugin/lib/build-collections/teams.js +76 -0
  154. package/dist/better-auth/plugin/lib/build-collections/teams.js.map +1 -0
  155. package/dist/better-auth/plugin/lib/build-collections/two-factors.d.ts +3 -0
  156. package/dist/better-auth/plugin/lib/build-collections/two-factors.js +67 -0
  157. package/dist/better-auth/plugin/lib/build-collections/two-factors.js.map +1 -0
  158. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.d.ts +7 -0
  159. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js +53 -0
  160. package/dist/better-auth/plugin/lib/build-collections/users/better-auth-strategy.js.map +1 -0
  161. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.d.ts +11 -0
  162. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js +75 -0
  163. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/generate-invite-url.js.map +1 -0
  164. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.d.ts +4 -0
  165. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js +6 -0
  166. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/index.js.map +1 -0
  167. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.d.ts +2 -0
  168. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js +115 -0
  169. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/refresh-token.js.map +1 -0
  170. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.d.ts +3 -0
  171. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js +64 -0
  172. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/send-invite-url.js.map +1 -0
  173. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.d.ts +3 -0
  174. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js +80 -0
  175. package/dist/better-auth/plugin/lib/build-collections/users/endpoints/set-admin-role.js.map +1 -0
  176. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.d.ts +6 -0
  177. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js +79 -0
  178. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-login.js.map +1 -0
  179. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.d.ts +2 -0
  180. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js +82 -0
  181. package/dist/better-auth/plugin/lib/build-collections/users/hooks/after-logout.js.map +1 -0
  182. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.d.ts +2 -0
  183. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js +54 -0
  184. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-delete.js.map +1 -0
  185. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.d.ts +6 -0
  186. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js +15 -0
  187. package/dist/better-auth/plugin/lib/build-collections/users/hooks/before-login.js.map +1 -0
  188. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.d.ts +6 -0
  189. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js +8 -0
  190. package/dist/better-auth/plugin/lib/build-collections/users/hooks/index.js.map +1 -0
  191. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.d.ts +2 -0
  192. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js +17 -0
  193. package/dist/better-auth/plugin/lib/build-collections/users/hooks/on-verified-change.js.map +1 -0
  194. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.d.ts +2 -0
  195. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js +91 -0
  196. package/dist/better-auth/plugin/lib/build-collections/users/hooks/sync-account.js.map +1 -0
  197. package/dist/better-auth/plugin/lib/build-collections/users/index.d.ts +3 -0
  198. package/dist/better-auth/plugin/lib/build-collections/users/index.js +341 -0
  199. package/dist/better-auth/plugin/lib/build-collections/users/index.js.map +1 -0
  200. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.d.ts +15 -0
  201. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js +24 -0
  202. package/dist/better-auth/plugin/lib/build-collections/utils/collection-schema.js.map +1 -0
  203. package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.d.ts +10 -0
  204. package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.js +67 -0
  205. package/dist/better-auth/plugin/lib/build-collections/utils/filter-duplicate-fields.js.map +1 -0
  206. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.d.ts +9 -0
  207. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js +94 -0
  208. package/dist/better-auth/plugin/lib/build-collections/utils/filter-properties.js.map +1 -0
  209. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.d.ts +7 -0
  210. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js +35 -0
  211. package/dist/better-auth/plugin/lib/build-collections/utils/get-timestamp-fields.js.map +1 -0
  212. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.d.ts +12 -0
  213. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js +25 -0
  214. package/dist/better-auth/plugin/lib/build-collections/utils/model-field-transformations.js.map +1 -0
  215. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.d.ts +14 -0
  216. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js +67 -0
  217. package/dist/better-auth/plugin/lib/build-collections/utils/payload-access.js.map +1 -0
  218. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.d.ts +20 -0
  219. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js +98 -0
  220. package/dist/better-auth/plugin/lib/build-collections/utils/transform-schema-fields-to-payload.js.map +1 -0
  221. package/dist/better-auth/plugin/lib/build-collections/verifications.d.ts +3 -0
  222. package/dist/better-auth/plugin/lib/build-collections/verifications.js +87 -0
  223. package/dist/better-auth/plugin/lib/build-collections/verifications.js.map +1 -0
  224. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +5 -0
  225. package/dist/better-auth/plugin/lib/get-payload-auth.js +9 -0
  226. package/dist/better-auth/plugin/lib/get-payload-auth.js.map +1 -0
  227. package/dist/better-auth/plugin/lib/init-better-auth.d.ts +7 -0
  228. package/dist/better-auth/plugin/lib/init-better-auth.js +46 -0
  229. package/dist/better-auth/plugin/lib/init-better-auth.js.map +1 -0
  230. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.d.ts +2 -0
  231. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js +9 -0
  232. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/admin-plugin.js.map +1 -0
  233. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.d.ts +2 -0
  234. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js +10 -0
  235. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/api-key-plugin.js.map +1 -0
  236. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.d.ts +2 -0
  237. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js +8 -0
  238. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/device-authorization-plugin.js.map +1 -0
  239. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.d.ts +10 -0
  240. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js +156 -0
  241. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/index.js.map +1 -0
  242. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.d.ts +2 -0
  243. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js +18 -0
  244. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/oidc-plugin.js.map +1 -0
  245. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.d.ts +2 -0
  246. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js +34 -0
  247. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/organizations-plugin.js.map +1 -0
  248. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.d.ts +2 -0
  249. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js +11 -0
  250. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/passkey-plugin.js.map +1 -0
  251. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.d.ts +2 -0
  252. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js +10 -0
  253. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/sso-plugin.js.map +1 -0
  254. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.d.ts +2 -0
  255. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js +11 -0
  256. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/two-factor-plugin.js.map +1 -0
  257. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.d.ts +7 -0
  258. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js +23 -0
  259. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/ensure-password-set-before-create.js.map +1 -0
  260. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.d.ts +25 -0
  261. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js +62 -0
  262. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/password.js.map +1 -0
  263. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.d.ts +9 -0
  264. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js +47 -0
  265. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/require-admin-invite-for-sign-up-middleware.js.map +1 -0
  266. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.d.ts +15 -0
  267. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js +42 -0
  268. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/save-to-jwt-middleware.js.map +1 -0
  269. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.d.ts +9 -0
  270. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js +63 -0
  271. package/dist/better-auth/plugin/lib/sanitize-better-auth-options/utils/use-admin-invite-after-email-sign-up-middleware.js.map +1 -0
  272. package/dist/better-auth/plugin/lib/set-login-methods.d.ts +4 -0
  273. package/dist/better-auth/plugin/lib/set-login-methods.js +14 -0
  274. package/dist/better-auth/plugin/lib/set-login-methods.js.map +1 -0
  275. package/dist/better-auth/plugin/payload/components/admin-buttons/index.d.ts +9 -0
  276. package/dist/better-auth/plugin/payload/components/admin-buttons/index.js +143 -0
  277. package/dist/better-auth/plugin/payload/components/admin-buttons/index.js.map +1 -0
  278. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.d.ts +10 -0
  279. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js +219 -0
  280. package/dist/better-auth/plugin/payload/components/admin-invite-button/index.js.map +1 -0
  281. package/dist/better-auth/plugin/payload/components/logout-button.d.ts +4 -0
  282. package/dist/better-auth/plugin/payload/components/logout-button.js +24 -0
  283. package/dist/better-auth/plugin/payload/components/logout-button.js.map +1 -0
  284. package/dist/better-auth/plugin/payload/components/passkeys/add-button.d.ts +8 -0
  285. package/dist/better-auth/plugin/payload/components/passkeys/add-button.js +117 -0
  286. package/dist/better-auth/plugin/payload/components/passkeys/add-button.js.map +1 -0
  287. package/dist/better-auth/plugin/payload/components/passkeys/client.d.ts +3 -0
  288. package/dist/better-auth/plugin/payload/components/passkeys/client.js +66 -0
  289. package/dist/better-auth/plugin/payload/components/passkeys/client.js.map +1 -0
  290. package/dist/better-auth/plugin/payload/components/passkeys/index.d.ts +4 -0
  291. package/dist/better-auth/plugin/payload/components/passkeys/index.js +52 -0
  292. package/dist/better-auth/plugin/payload/components/passkeys/index.js.map +1 -0
  293. package/dist/better-auth/plugin/payload/components/passkeys/list.d.ts +8 -0
  294. package/dist/better-auth/plugin/payload/components/passkeys/list.js +57 -0
  295. package/dist/better-auth/plugin/payload/components/passkeys/list.js.map +1 -0
  296. package/dist/better-auth/plugin/payload/components/passkeys/types.d.ts +22 -0
  297. package/dist/better-auth/plugin/payload/components/passkeys/types.js +3 -0
  298. package/dist/better-auth/plugin/payload/components/passkeys/types.js.map +1 -0
  299. package/dist/better-auth/plugin/payload/components/rsc-redirect.d.ts +6 -0
  300. package/dist/better-auth/plugin/payload/components/rsc-redirect.js +7 -0
  301. package/dist/better-auth/plugin/payload/components/rsc-redirect.js.map +1 -0
  302. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.d.ts +15 -0
  303. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js +157 -0
  304. package/dist/better-auth/plugin/payload/components/social-provider-buttons/index.js.map +1 -0
  305. package/dist/better-auth/plugin/payload/components/token-field.d.ts +4 -0
  306. package/dist/better-auth/plugin/payload/components/token-field.js +31 -0
  307. package/dist/better-auth/plugin/payload/components/token-field.js.map +1 -0
  308. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.d.ts +8 -0
  309. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js +300 -0
  310. package/dist/better-auth/plugin/payload/components/two-factor-auth/index.js.map +1 -0
  311. package/dist/better-auth/plugin/payload/exports/client.d.ts +6 -0
  312. package/dist/better-auth/plugin/payload/exports/client.js +8 -0
  313. package/dist/better-auth/plugin/payload/exports/client.js.map +1 -0
  314. package/dist/better-auth/plugin/payload/exports/rsc.d.ts +8 -0
  315. package/dist/better-auth/plugin/payload/exports/rsc.js +10 -0
  316. package/dist/better-auth/plugin/payload/exports/rsc.js.map +1 -0
  317. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.d.ts +2 -0
  318. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js +9 -0
  319. package/dist/better-auth/plugin/payload/utils/generate-admin-invite-url.js.map +1 -0
  320. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.d.ts +1 -0
  321. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js +22 -0
  322. package/dist/better-auth/plugin/payload/utils/get-safe-redirect.js.map +1 -0
  323. package/dist/better-auth/plugin/payload/views/admin-login/client.d.ts +19 -0
  324. package/dist/better-auth/plugin/payload/views/admin-login/client.js +226 -0
  325. package/dist/better-auth/plugin/payload/views/admin-login/client.js.map +1 -0
  326. package/dist/better-auth/plugin/payload/views/admin-login/index.d.ts +10 -0
  327. package/dist/better-auth/plugin/payload/views/admin-login/index.js +150 -0
  328. package/dist/better-auth/plugin/payload/views/admin-login/index.js.map +1 -0
  329. package/dist/better-auth/plugin/payload/views/admin-signup/client.d.ts +16 -0
  330. package/dist/better-auth/plugin/payload/views/admin-signup/client.js +299 -0
  331. package/dist/better-auth/plugin/payload/views/admin-signup/client.js.map +1 -0
  332. package/dist/better-auth/plugin/payload/views/admin-signup/index.d.ts +9 -0
  333. package/dist/better-auth/plugin/payload/views/admin-signup/index.js +104 -0
  334. package/dist/better-auth/plugin/payload/views/admin-signup/index.js.map +1 -0
  335. package/dist/better-auth/plugin/payload/views/forgot-password/client.d.ts +7 -0
  336. package/dist/better-auth/plugin/payload/views/forgot-password/client.js +119 -0
  337. package/dist/better-auth/plugin/payload/views/forgot-password/client.js.map +1 -0
  338. package/dist/better-auth/plugin/payload/views/forgot-password/index.d.ts +8 -0
  339. package/dist/better-auth/plugin/payload/views/forgot-password/index.js +78 -0
  340. package/dist/better-auth/plugin/payload/views/forgot-password/index.js.map +1 -0
  341. package/dist/better-auth/plugin/payload/views/reset-password/client.d.ts +10 -0
  342. package/dist/better-auth/plugin/payload/views/reset-password/client.js +144 -0
  343. package/dist/better-auth/plugin/payload/views/reset-password/client.js.map +1 -0
  344. package/dist/better-auth/plugin/payload/views/reset-password/index.d.ts +8 -0
  345. package/dist/better-auth/plugin/payload/views/reset-password/index.js +96 -0
  346. package/dist/better-auth/plugin/payload/views/reset-password/index.js.map +1 -0
  347. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.d.ts +6 -0
  348. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js +96 -0
  349. package/dist/better-auth/plugin/payload/views/two-factor-verify/client.js.map +1 -0
  350. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.d.ts +9 -0
  351. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js +56 -0
  352. package/dist/better-auth/plugin/payload/views/two-factor-verify/index.js.map +1 -0
  353. package/dist/better-auth/plugin/types.d.ts +429 -0
  354. package/dist/better-auth/plugin/types.js +3 -0
  355. package/dist/better-auth/plugin/types.js.map +1 -0
  356. package/dist/better-auth/plugin/utils/set.d.ts +39 -0
  357. package/dist/better-auth/plugin/utils/set.js +103 -0
  358. package/dist/better-auth/plugin/utils/set.js.map +1 -0
  359. package/dist/better-auth/scripts/generate-types.d.ts +1 -0
  360. package/dist/better-auth/scripts/generate-types.js +234 -0
  361. package/dist/better-auth/scripts/generate-types.js.map +1 -0
  362. package/dist/better-auth/types.d.ts +2 -0
  363. package/dist/better-auth/types.js +4 -0
  364. package/dist/better-auth/types.js.map +1 -0
  365. package/dist/index.d.ts +1 -0
  366. package/dist/index.js +4 -0
  367. package/dist/index.js.map +1 -0
  368. package/dist/shared/components/icons.d.ts +7 -0
  369. package/dist/shared/components/icons.js +442 -0
  370. package/dist/shared/components/icons.js.map +1 -0
  371. package/dist/shared/components/logo.d.ts +3 -0
  372. package/dist/shared/components/logo.js +24 -0
  373. package/dist/shared/components/logo.js.map +1 -0
  374. package/dist/shared/form/components/submit.d.ts +7 -0
  375. package/dist/shared/form/components/submit.js +16 -0
  376. package/dist/shared/form/components/submit.js.map +1 -0
  377. package/dist/shared/form/fields/text-field.d.ts +8 -0
  378. package/dist/shared/form/fields/text-field.js +37 -0
  379. package/dist/shared/form/fields/text-field.js.map +1 -0
  380. package/dist/shared/form/index.d.ts +4 -0
  381. package/dist/shared/form/index.js +8 -0
  382. package/dist/shared/form/index.js.map +1 -0
  383. package/dist/shared/form/ui/header/index.d.ts +8 -0
  384. package/dist/shared/form/ui/header/index.js +24 -0
  385. package/dist/shared/form/ui/header/index.js.map +1 -0
  386. package/dist/shared/form/ui/index.d.ts +31 -0
  387. package/dist/shared/form/ui/index.js +57 -0
  388. package/dist/shared/form/ui/index.js.map +1 -0
  389. package/dist/shared/form/validation.d.ts +51 -0
  390. package/dist/shared/form/validation.js +127 -0
  391. package/dist/shared/form/validation.js.map +1 -0
  392. package/dist/shared/index.d.ts +2 -0
  393. package/dist/shared/index.js +4 -0
  394. package/dist/shared/index.js.map +1 -0
  395. package/dist/shared/payload/fields/field-copy-button/index.d.ts +3 -0
  396. package/dist/shared/payload/fields/field-copy-button/index.js +38 -0
  397. package/dist/shared/payload/fields/field-copy-button/index.js.map +1 -0
  398. package/dist/shared/payload/fields/generate-uuid-button/index.d.ts +3 -0
  399. package/dist/shared/payload/fields/generate-uuid-button/index.js +26 -0
  400. package/dist/shared/payload/fields/generate-uuid-button/index.js.map +1 -0
  401. package/dist/shared/payload/fields/index.d.ts +2 -0
  402. package/dist/shared/payload/fields/index.js +4 -0
  403. package/dist/shared/payload/fields/index.js.map +1 -0
  404. package/dist/shared/utils/regex.d.ts +2 -0
  405. package/dist/shared/utils/regex.js +4 -0
  406. package/dist/shared/utils/regex.js.map +1 -0
  407. package/dist/shared/utils/try-catch.d.ts +11 -0
  408. package/dist/shared/utils/try-catch.js +17 -0
  409. package/dist/shared/utils/try-catch.js.map +1 -0
  410. package/dist/shared/utils/value-or-default.d.ts +9 -0
  411. package/dist/shared/utils/value-or-default.js +12 -0
  412. package/dist/shared/utils/value-or-default.js.map +1 -0
  413. package/package.json +122 -0
@@ -0,0 +1,3 @@
1
+ import type { BuildCollectionProps } from '@/better-auth/plugin/types';
2
+ import type { CollectionConfig } from 'payload';
3
+ export declare function buildPasskeysCollection({ incomingCollections, pluginOptions, resolvedSchemas, }: BuildCollectionProps): CollectionConfig;
@@ -0,0 +1,115 @@
1
+ import { baModelFieldKeysToFieldNames, baModelKey, defaults } from "../../constants";
2
+ import { getAdminAccess } from "../../helpers/get-admin-access";
3
+ import { assertAllSchemaFields, getSchemaCollectionSlug, getSchemaFieldName } from "./utils/collection-schema";
4
+ import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
5
+ import { isAdminOrCurrentUserWithRoles } from "./utils/payload-access";
6
+ import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
7
+ export function buildPasskeysCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
8
+ const passkeySlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.passkey);
9
+ const passkeySchema = resolvedSchemas[baModelKey.passkey];
10
+ const userIdFieldName = passkeySchema?.fields?.userId?.fieldName ?? baModelFieldKeysToFieldNames.passkey.userId;
11
+ const adminRoles = pluginOptions.users?.adminRoles ?? [
12
+ defaults.adminRole
13
+ ];
14
+ const existingPasskeyCollection = incomingCollections.find((collection)=>collection.slug === passkeySlug);
15
+ const fieldOverrides = {
16
+ name: ()=>({
17
+ admin: {
18
+ readOnly: true,
19
+ description: 'The name of the passkey'
20
+ }
21
+ }),
22
+ publicKey: ()=>({
23
+ index: true,
24
+ admin: {
25
+ readOnly: true,
26
+ description: 'The public key of the passkey'
27
+ }
28
+ }),
29
+ userId: ()=>({
30
+ index: true,
31
+ admin: {
32
+ readOnly: true,
33
+ description: 'The user that the passkey belongs to'
34
+ }
35
+ }),
36
+ credentialID: ()=>({
37
+ admin: {
38
+ readOnly: true,
39
+ description: 'The unique identifier of the registered credential'
40
+ }
41
+ }),
42
+ counter: ()=>({
43
+ required: true,
44
+ admin: {
45
+ readOnly: true,
46
+ description: 'The counter of the passkey'
47
+ }
48
+ }),
49
+ deviceType: ()=>({
50
+ required: true,
51
+ admin: {
52
+ readOnly: true,
53
+ description: 'The type of device used to register the passkey'
54
+ }
55
+ }),
56
+ backedUp: ()=>({
57
+ required: true,
58
+ admin: {
59
+ readOnly: true,
60
+ description: 'Whether the passkey is backed up'
61
+ }
62
+ }),
63
+ transports: ()=>({
64
+ required: true,
65
+ admin: {
66
+ readOnly: true,
67
+ description: 'The transports used to register the passkey'
68
+ }
69
+ })
70
+ };
71
+ const collectionFields = getCollectionFields({
72
+ schema: passkeySchema,
73
+ additionalProperties: fieldOverrides
74
+ });
75
+ let passkeyCollection = {
76
+ ...existingPasskeyCollection,
77
+ slug: passkeySlug,
78
+ admin: {
79
+ hidden: pluginOptions.hidePluginCollections ?? false,
80
+ useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.passkey, 'name'),
81
+ description: 'Passkeys are used to authenticate users',
82
+ group: pluginOptions?.collectionAdminGroup ?? 'Auth',
83
+ ...existingPasskeyCollection?.admin
84
+ },
85
+ access: {
86
+ ...getAdminAccess(pluginOptions),
87
+ read: isAdminOrCurrentUserWithRoles({
88
+ idField: userIdFieldName,
89
+ adminRoles
90
+ }),
91
+ delete: isAdminOrCurrentUserWithRoles({
92
+ idField: userIdFieldName,
93
+ adminRoles
94
+ }),
95
+ ...existingPasskeyCollection?.access ?? {}
96
+ },
97
+ custom: {
98
+ ...existingPasskeyCollection?.custom ?? {},
99
+ betterAuthModelKey: baModelKey.passkey
100
+ },
101
+ fields: [
102
+ ...existingPasskeyCollection?.fields ?? [],
103
+ ...filterDuplicateFields(existingPasskeyCollection?.fields, collectionFields)
104
+ ]
105
+ };
106
+ if (typeof pluginOptions.pluginCollectionOverrides?.passkeys === 'function') {
107
+ passkeyCollection = pluginOptions.pluginCollectionOverrides.passkeys({
108
+ collection: passkeyCollection
109
+ });
110
+ }
111
+ assertAllSchemaFields(passkeyCollection, passkeySchema);
112
+ return passkeyCollection;
113
+ }
114
+
115
+ //# sourceMappingURL=passkeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/passkeys.ts"],"sourcesContent":["import type { Passkey } from '@/better-auth/generated-types';\nimport type { BuildCollectionProps, FieldOverrides } from '@/better-auth/plugin/types';\nimport type { CollectionConfig } from 'payload';\nimport { baModelFieldKeysToFieldNames, baModelKey, defaults } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport {\n assertAllSchemaFields,\n getSchemaCollectionSlug,\n getSchemaFieldName,\n} from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { isAdminOrCurrentUserWithRoles } from './utils/payload-access';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nexport function buildPasskeysCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const passkeySlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.passkey);\n const passkeySchema = resolvedSchemas[baModelKey.passkey];\n const userIdFieldName =\n passkeySchema?.fields?.userId?.fieldName ?? baModelFieldKeysToFieldNames.passkey.userId;\n const adminRoles = pluginOptions.users?.adminRoles ?? [defaults.adminRole];\n\n const existingPasskeyCollection = incomingCollections.find(\n collection => collection.slug === passkeySlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof Passkey> = {\n name: () => ({\n admin: { readOnly: true, description: 'The name of the passkey' },\n }),\n publicKey: () => ({\n index: true,\n admin: { readOnly: true, description: 'The public key of the passkey' },\n }),\n userId: () => ({\n index: true,\n admin: { readOnly: true, description: 'The user that the passkey belongs to' },\n }),\n credentialID: () => ({\n admin: { readOnly: true, description: 'The unique identifier of the registered credential' },\n }),\n counter: () => ({\n required: true,\n admin: { readOnly: true, description: 'The counter of the passkey' },\n }),\n deviceType: () => ({\n required: true,\n admin: { readOnly: true, description: 'The type of device used to register the passkey' },\n }),\n backedUp: () => ({\n required: true,\n admin: { readOnly: true, description: 'Whether the passkey is backed up' },\n }),\n transports: () => ({\n required: true,\n admin: { readOnly: true, description: 'The transports used to register the passkey' },\n }),\n };\n\n const collectionFields = getCollectionFields({\n schema: passkeySchema,\n additionalProperties: fieldOverrides,\n });\n\n let passkeyCollection: CollectionConfig = {\n ...existingPasskeyCollection,\n slug: passkeySlug,\n admin: {\n hidden: pluginOptions.hidePluginCollections ?? false,\n useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.passkey, 'name'),\n description: 'Passkeys are used to authenticate users',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingPasskeyCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n read: isAdminOrCurrentUserWithRoles({\n idField: userIdFieldName,\n adminRoles,\n }),\n delete: isAdminOrCurrentUserWithRoles({\n idField: userIdFieldName,\n adminRoles,\n }),\n ...(existingPasskeyCollection?.access ?? {}),\n },\n custom: {\n ...(existingPasskeyCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.passkey,\n },\n fields: [\n ...(existingPasskeyCollection?.fields ?? []),\n ...filterDuplicateFields(existingPasskeyCollection?.fields, collectionFields),\n ],\n };\n\n if (typeof pluginOptions.pluginCollectionOverrides?.passkeys === 'function') {\n passkeyCollection = pluginOptions.pluginCollectionOverrides.passkeys({\n collection: passkeyCollection,\n });\n }\n\n assertAllSchemaFields(passkeyCollection, passkeySchema);\n\n return passkeyCollection;\n}\n"],"names":["baModelFieldKeysToFieldNames","baModelKey","defaults","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","getSchemaFieldName","filterDuplicateFields","isAdminOrCurrentUserWithRoles","getCollectionFields","buildPasskeysCollection","incomingCollections","pluginOptions","resolvedSchemas","passkeySlug","passkey","passkeySchema","userIdFieldName","fields","userId","fieldName","adminRoles","users","adminRole","existingPasskeyCollection","find","collection","slug","fieldOverrides","name","admin","readOnly","description","publicKey","index","credentialID","counter","required","deviceType","backedUp","transports","collectionFields","schema","additionalProperties","passkeyCollection","hidden","hidePluginCollections","useAsTitle","group","collectionAdminGroup","access","read","idField","delete","custom","betterAuthModelKey","pluginCollectionOverrides","passkeys"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuildCollectionProps } from '@/better-auth/plugin/types';
2
+ import type { CollectionConfig } from 'payload';
3
+ export declare function buildSessionsCollection({ incomingCollections, pluginOptions, resolvedSchemas, }: BuildCollectionProps): CollectionConfig;
@@ -0,0 +1,170 @@
1
+ import { baModelKey, baseSlugs } from "../../constants";
2
+ import { getAdminAccess } from "../../helpers/get-admin-access";
3
+ import { getDefaultCollectionSlug } from "../../helpers/get-collection-slug";
4
+ import { assertAllSchemaFields, getSchemaCollectionSlug } from "./utils/collection-schema";
5
+ import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
6
+ import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
7
+ export function buildSessionsCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
8
+ const sessionSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.session);
9
+ const sessionSchema = resolvedSchemas[baModelKey.session];
10
+ const existingSessionCollection = incomingCollections.find((collection)=>collection.slug === sessionSlug);
11
+ const fieldOverrides = {
12
+ userId: ()=>({
13
+ index: true,
14
+ saveToJWT: true,
15
+ admin: {
16
+ readOnly: true,
17
+ description: 'The user that the session belongs to'
18
+ },
19
+ relationTo: getDefaultCollectionSlug({
20
+ modelKey: baModelKey.user,
21
+ pluginOptions
22
+ })
23
+ }),
24
+ token: ()=>({
25
+ index: true,
26
+ saveToJWT: true,
27
+ admin: {
28
+ readOnly: true,
29
+ description: 'The unique session token'
30
+ }
31
+ }),
32
+ expiresAt: ()=>({
33
+ saveToJWT: true,
34
+ admin: {
35
+ readOnly: true,
36
+ description: 'The date and time when the session will expire'
37
+ }
38
+ }),
39
+ ipAddress: ()=>({
40
+ saveToJWT: true,
41
+ admin: {
42
+ readOnly: true,
43
+ description: 'The IP address of the device'
44
+ }
45
+ }),
46
+ userAgent: ()=>({
47
+ saveToJWT: true,
48
+ admin: {
49
+ readOnly: true,
50
+ description: 'The user agent information of the device'
51
+ }
52
+ }),
53
+ impersonatedBy: ()=>({
54
+ type: 'relationship',
55
+ relationTo: pluginOptions.users?.slug ?? baseSlugs.users,
56
+ required: false,
57
+ saveToJWT: true,
58
+ admin: {
59
+ readOnly: true,
60
+ description: 'The admin who is impersonating this session'
61
+ }
62
+ }),
63
+ activeOrganizationId: ()=>({
64
+ type: 'relationship',
65
+ saveToJWT: true,
66
+ relationTo: getDefaultCollectionSlug({
67
+ modelKey: baModelKey.organization,
68
+ pluginOptions
69
+ }),
70
+ admin: {
71
+ readOnly: true,
72
+ description: 'The currently active organization for the session'
73
+ }
74
+ }),
75
+ activeTeamId: ()=>({
76
+ type: 'relationship',
77
+ saveToJWT: true,
78
+ relationTo: getDefaultCollectionSlug({
79
+ modelKey: baModelKey.team,
80
+ pluginOptions
81
+ }),
82
+ admin: {
83
+ readOnly: true,
84
+ description: 'The currently active team for the session'
85
+ }
86
+ })
87
+ };
88
+ const sessionFieldRules = [
89
+ {
90
+ condition: (field)=>field.fieldName === 'updatedAt' || field.fieldName === 'createdAt',
91
+ transform: (field)=>({
92
+ ...field,
93
+ saveToJWT: false,
94
+ admin: {
95
+ disableBulkEdit: true,
96
+ hidden: true
97
+ },
98
+ index: true,
99
+ // Using any because PayloadCMS label function receives translation function with dynamic type
100
+ label: ({ t })=>t('general:updatedAt')
101
+ })
102
+ }
103
+ ];
104
+ // Get collection fields from Better Auth schema
105
+ let collectionFields = getCollectionFields({
106
+ schema: sessionSchema,
107
+ fieldRules: sessionFieldRules,
108
+ additionalProperties: fieldOverrides
109
+ });
110
+ // Pre-filter userAgent field if it already exists in the collection
111
+ // This is a safety check before the main filterDuplicateFields call
112
+ if (existingSessionCollection?.fields) {
113
+ const hasUserAgentField = existingSessionCollection.fields.some((field)=>{
114
+ if ('name' in field && field.name === 'userAgent') {
115
+ return true;
116
+ }
117
+ if (field.custom && typeof field.custom === 'object' && 'betterAuthFieldKey' in field.custom && field.custom.betterAuthFieldKey === 'userAgent') {
118
+ return true;
119
+ }
120
+ return false;
121
+ });
122
+ if (hasUserAgentField && collectionFields) {
123
+ collectionFields = collectionFields.filter((field)=>{
124
+ if ('name' in field && field.name === 'userAgent') {
125
+ // Check if this is the Better Auth userAgent field
126
+ if (field.custom && typeof field.custom === 'object' && 'betterAuthFieldKey' in field.custom && field.custom.betterAuthFieldKey === 'userAgent') {
127
+ return false; // Filter out Better Auth's userAgent field
128
+ }
129
+ }
130
+ return true;
131
+ });
132
+ }
133
+ }
134
+ let sessionCollection = {
135
+ ...existingSessionCollection,
136
+ slug: sessionSlug,
137
+ admin: {
138
+ ...pluginOptions.sessions?.hidden !== undefined && {
139
+ hidden: pluginOptions.sessions.hidden
140
+ },
141
+ description: 'Sessions are active sessions for users. They are used to authenticate users with a session token',
142
+ group: pluginOptions?.collectionAdminGroup ?? 'Auth',
143
+ ...existingSessionCollection?.admin
144
+ },
145
+ access: {
146
+ ...getAdminAccess(pluginOptions),
147
+ ...existingSessionCollection?.access ?? {}
148
+ },
149
+ custom: {
150
+ ...existingSessionCollection?.custom ?? {},
151
+ betterAuthModelKey: baModelKey.session
152
+ },
153
+ fields: [
154
+ ...existingSessionCollection?.fields ?? [],
155
+ // Filter out fields that already exist to prevent duplicates
156
+ // Check both by name and betterAuthFieldKey to catch all duplicates
157
+ // This is critical to prevent "DuplicateFieldName" errors from PayloadCMS
158
+ ...collectionFields ? filterDuplicateFields(existingSessionCollection?.fields, collectionFields) : []
159
+ ]
160
+ };
161
+ if (typeof pluginOptions.sessions?.collectionOverrides === 'function') {
162
+ sessionCollection = pluginOptions.sessions.collectionOverrides({
163
+ collection: sessionCollection
164
+ });
165
+ }
166
+ assertAllSchemaFields(sessionCollection, sessionSchema);
167
+ return sessionCollection;
168
+ }
169
+
170
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/sessions.ts"],"sourcesContent":["import { baModelKey, baseSlugs } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport { getDefaultCollectionSlug } from '../../helpers/get-collection-slug';\nimport { assertAllSchemaFields, getSchemaCollectionSlug } from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nimport type { Session } from '@/better-auth/generated-types';\nimport type { BuildCollectionProps, FieldOverrides, FieldRule } from '@/better-auth/plugin/types';\nimport type { CollectionConfig, CollectionSlug } from 'payload';\n\nexport function buildSessionsCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const sessionSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.session);\n const sessionSchema = resolvedSchemas[baModelKey.session];\n\n const existingSessionCollection = incomingCollections.find(\n collection => collection.slug === sessionSlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof Session> = {\n userId: () => ({\n index: true,\n saveToJWT: true,\n admin: { readOnly: true, description: 'The user that the session belongs to' },\n relationTo: getDefaultCollectionSlug({\n modelKey: baModelKey.user,\n pluginOptions,\n }) as CollectionSlug,\n }),\n token: () => ({\n index: true,\n saveToJWT: true,\n admin: { readOnly: true, description: 'The unique session token' },\n }),\n expiresAt: () => ({\n saveToJWT: true,\n admin: { readOnly: true, description: 'The date and time when the session will expire' },\n }),\n ipAddress: () => ({\n saveToJWT: true,\n admin: { readOnly: true, description: 'The IP address of the device' },\n }),\n userAgent: () => ({\n saveToJWT: true,\n admin: { readOnly: true, description: 'The user agent information of the device' },\n }),\n impersonatedBy: () => ({\n type: 'relationship',\n relationTo: (pluginOptions.users?.slug ?? baseSlugs.users) as CollectionSlug,\n required: false,\n saveToJWT: true,\n admin: {\n readOnly: true,\n description: 'The admin who is impersonating this session',\n },\n }),\n activeOrganizationId: () => ({\n type: 'relationship',\n saveToJWT: true,\n relationTo: getDefaultCollectionSlug({\n modelKey: baModelKey.organization,\n pluginOptions,\n }) as CollectionSlug,\n admin: {\n readOnly: true,\n description: 'The currently active organization for the session',\n },\n }),\n activeTeamId: () => ({\n type: 'relationship',\n saveToJWT: true,\n relationTo: getDefaultCollectionSlug({\n modelKey: baModelKey.team,\n pluginOptions,\n }) as CollectionSlug,\n admin: {\n readOnly: true,\n description: 'The currently active team for the session',\n },\n }),\n };\n\n const sessionFieldRules: FieldRule[] = [\n {\n condition: field => field.fieldName === 'updatedAt' || field.fieldName === 'createdAt',\n transform: field => ({\n ...field,\n saveToJWT: false,\n admin: {\n disableBulkEdit: true,\n hidden: true,\n },\n index: true,\n // Using any because PayloadCMS label function receives translation function with dynamic type\n label: ({ t }: any) => t('general:updatedAt'),\n }),\n },\n ];\n\n // Get collection fields from Better Auth schema\n let collectionFields = getCollectionFields({\n schema: sessionSchema,\n fieldRules: sessionFieldRules,\n additionalProperties: fieldOverrides,\n });\n\n // Pre-filter userAgent field if it already exists in the collection\n // This is a safety check before the main filterDuplicateFields call\n if (existingSessionCollection?.fields) {\n const hasUserAgentField = existingSessionCollection.fields.some((field: any) => {\n if ('name' in field && field.name === 'userAgent') {\n return true;\n }\n if (\n field.custom &&\n typeof field.custom === 'object' &&\n 'betterAuthFieldKey' in field.custom &&\n (field.custom as { betterAuthFieldKey: string }).betterAuthFieldKey === 'userAgent'\n ) {\n return true;\n }\n return false;\n });\n\n if (hasUserAgentField && collectionFields) {\n collectionFields = collectionFields.filter((field: any) => {\n if ('name' in field && field.name === 'userAgent') {\n // Check if this is the Better Auth userAgent field\n if (\n field.custom &&\n typeof field.custom === 'object' &&\n 'betterAuthFieldKey' in field.custom &&\n (field.custom as { betterAuthFieldKey: string }).betterAuthFieldKey === 'userAgent'\n ) {\n return false; // Filter out Better Auth's userAgent field\n }\n }\n return true;\n });\n }\n }\n\n let sessionCollection: CollectionConfig = {\n ...existingSessionCollection,\n slug: sessionSlug,\n admin: {\n ...(pluginOptions.sessions?.hidden !== undefined && {\n hidden: pluginOptions.sessions.hidden,\n }),\n description:\n 'Sessions are active sessions for users. They are used to authenticate users with a session token',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingSessionCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingSessionCollection?.access ?? {}),\n },\n custom: {\n ...(existingSessionCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.session,\n },\n fields: [\n ...(existingSessionCollection?.fields ?? []),\n // Filter out fields that already exist to prevent duplicates\n // Check both by name and betterAuthFieldKey to catch all duplicates\n // This is critical to prevent \"DuplicateFieldName\" errors from PayloadCMS\n ...(collectionFields\n ? filterDuplicateFields(existingSessionCollection?.fields, collectionFields)\n : []),\n ],\n };\n\n if (typeof pluginOptions.sessions?.collectionOverrides === 'function') {\n sessionCollection = pluginOptions.sessions.collectionOverrides({\n collection: sessionCollection,\n });\n }\n\n assertAllSchemaFields(sessionCollection, sessionSchema);\n\n return sessionCollection;\n}\n"],"names":["baModelKey","baseSlugs","getAdminAccess","getDefaultCollectionSlug","assertAllSchemaFields","getSchemaCollectionSlug","filterDuplicateFields","getCollectionFields","buildSessionsCollection","incomingCollections","pluginOptions","resolvedSchemas","sessionSlug","session","sessionSchema","existingSessionCollection","find","collection","slug","fieldOverrides","userId","index","saveToJWT","admin","readOnly","description","relationTo","modelKey","user","token","expiresAt","ipAddress","userAgent","impersonatedBy","type","users","required","activeOrganizationId","organization","activeTeamId","team","sessionFieldRules","condition","field","fieldName","transform","disableBulkEdit","hidden","label","t","collectionFields","schema","fieldRules","additionalProperties","fields","hasUserAgentField","some","name","custom","betterAuthFieldKey","filter","sessionCollection","sessions","undefined","group","collectionAdminGroup","access","betterAuthModelKey","collectionOverrides"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { BuildCollectionProps } from '@/better-auth/plugin/types';
2
+ import type { CollectionConfig } from 'payload';
3
+ export declare function buildSsoProvidersCollection({ incomingCollections, pluginOptions, resolvedSchemas, }: BuildCollectionProps): CollectionConfig;
@@ -0,0 +1,81 @@
1
+ import { baModelKey } from "../../constants";
2
+ import { getAdminAccess } from "../../helpers/get-admin-access";
3
+ import { assertAllSchemaFields, getSchemaCollectionSlug, getSchemaFieldName } from "./utils/collection-schema";
4
+ import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
5
+ import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
6
+ export function buildSsoProvidersCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
7
+ const ssoProviderSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.ssoProvider);
8
+ const ssoProviderSchema = resolvedSchemas[baModelKey.ssoProvider];
9
+ const existingSsoProviderCollection = incomingCollections.find((collection)=>collection.slug === ssoProviderSlug);
10
+ const fieldOverrides = {
11
+ issuer: ()=>({
12
+ index: true,
13
+ admin: {
14
+ description: 'The issuer of the SSO provider'
15
+ }
16
+ }),
17
+ domain: ()=>({
18
+ admin: {
19
+ description: 'The domain of the SSO provider'
20
+ }
21
+ }),
22
+ oidcConfig: ()=>({
23
+ admin: {
24
+ description: 'The OIDC config of the SSO provider'
25
+ }
26
+ }),
27
+ userId: ()=>({
28
+ admin: {
29
+ description: 'The user associated with the SSO provider'
30
+ }
31
+ }),
32
+ providerId: ()=>({
33
+ admin: {
34
+ readOnly: true,
35
+ description: 'The provider id. Used to identify a provider and to generate a redirect url'
36
+ }
37
+ }),
38
+ organizationId: ()=>({
39
+ admin: {
40
+ readOnly: true,
41
+ description: 'The organization Id. If provider is linked to an organization'
42
+ }
43
+ })
44
+ };
45
+ const collectionFields = getCollectionFields({
46
+ schema: ssoProviderSchema,
47
+ additionalProperties: fieldOverrides
48
+ });
49
+ let ssoProviderCollection = {
50
+ ...existingSsoProviderCollection,
51
+ slug: ssoProviderSlug,
52
+ admin: {
53
+ hidden: pluginOptions.hidePluginCollections ?? false,
54
+ useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.ssoProvider, 'issuer'),
55
+ description: 'SSO providers are used to authenticate users with an external provider',
56
+ group: pluginOptions?.collectionAdminGroup ?? 'Auth',
57
+ ...existingSsoProviderCollection?.admin
58
+ },
59
+ access: {
60
+ ...getAdminAccess(pluginOptions),
61
+ ...existingSsoProviderCollection?.access ?? {}
62
+ },
63
+ custom: {
64
+ ...existingSsoProviderCollection?.custom ?? {},
65
+ betterAuthModelKey: baModelKey.ssoProvider
66
+ },
67
+ fields: [
68
+ ...existingSsoProviderCollection?.fields ?? [],
69
+ ...filterDuplicateFields(existingSsoProviderCollection?.fields, collectionFields)
70
+ ]
71
+ };
72
+ if (typeof pluginOptions.pluginCollectionOverrides?.ssoProviders === 'function') {
73
+ ssoProviderCollection = pluginOptions.pluginCollectionOverrides.ssoProviders({
74
+ collection: ssoProviderCollection
75
+ });
76
+ }
77
+ assertAllSchemaFields(ssoProviderCollection, ssoProviderSchema);
78
+ return ssoProviderCollection;
79
+ }
80
+
81
+ //# sourceMappingURL=sso-providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/sso-providers.ts"],"sourcesContent":["import { baModelKey } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport {\n assertAllSchemaFields,\n getSchemaCollectionSlug,\n getSchemaFieldName,\n} from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nimport type { SsoProvider } from '@/better-auth/generated-types';\nimport type { BuildCollectionProps, FieldOverrides } from '@/better-auth/plugin/types';\nimport type { CollectionConfig } from 'payload';\n\nexport function buildSsoProvidersCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const ssoProviderSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.ssoProvider);\n const ssoProviderSchema = resolvedSchemas[baModelKey.ssoProvider];\n\n const existingSsoProviderCollection = incomingCollections.find(\n collection => collection.slug === ssoProviderSlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof SsoProvider> = {\n issuer: () => ({\n index: true,\n admin: { description: 'The issuer of the SSO provider' },\n }),\n domain: () => ({\n admin: { description: 'The domain of the SSO provider' },\n }),\n oidcConfig: () => ({\n admin: { description: 'The OIDC config of the SSO provider' },\n }),\n userId: () => ({\n admin: { description: 'The user associated with the SSO provider' },\n }),\n providerId: () => ({\n admin: {\n readOnly: true,\n description: 'The provider id. Used to identify a provider and to generate a redirect url',\n },\n }),\n organizationId: () => ({\n admin: {\n readOnly: true,\n description: 'The organization Id. If provider is linked to an organization',\n },\n }),\n };\n\n const collectionFields = getCollectionFields({\n schema: ssoProviderSchema,\n additionalProperties: fieldOverrides,\n });\n\n let ssoProviderCollection: CollectionConfig = {\n ...existingSsoProviderCollection,\n slug: ssoProviderSlug,\n admin: {\n hidden: pluginOptions.hidePluginCollections ?? false,\n useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.ssoProvider, 'issuer'),\n description: 'SSO providers are used to authenticate users with an external provider',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingSsoProviderCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingSsoProviderCollection?.access ?? {}),\n },\n custom: {\n ...(existingSsoProviderCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.ssoProvider,\n },\n fields: [\n ...(existingSsoProviderCollection?.fields ?? []),\n ...filterDuplicateFields(existingSsoProviderCollection?.fields, collectionFields),\n ],\n };\n\n if (typeof pluginOptions.pluginCollectionOverrides?.ssoProviders === 'function') {\n ssoProviderCollection = pluginOptions.pluginCollectionOverrides.ssoProviders({\n collection: ssoProviderCollection,\n });\n }\n\n assertAllSchemaFields(ssoProviderCollection, ssoProviderSchema);\n\n return ssoProviderCollection;\n}\n"],"names":["baModelKey","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","getSchemaFieldName","filterDuplicateFields","getCollectionFields","buildSsoProvidersCollection","incomingCollections","pluginOptions","resolvedSchemas","ssoProviderSlug","ssoProvider","ssoProviderSchema","existingSsoProviderCollection","find","collection","slug","fieldOverrides","issuer","index","admin","description","domain","oidcConfig","userId","providerId","readOnly","organizationId","collectionFields","schema","additionalProperties","ssoProviderCollection","hidden","hidePluginCollections","useAsTitle","group","collectionAdminGroup","access","custom","betterAuthModelKey","fields","pluginCollectionOverrides","ssoProviders"],"mappings":"AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SACEC,qBAAqB,EACrBC,uBAAuB,EACvBC,kBAAkB,QACb,4BAA4B;AACnC,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,mBAAmB,QAAQ,6CAA6C;AAMjF,OAAO,SAASC,4BAA4B,EAC1CC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACM;IACrB,MAAMC,kBAAkBR,wBAAwBO,iBAAiBV,WAAWY,WAAW;IACvF,MAAMC,oBAAoBH,eAAe,CAACV,WAAWY,WAAW,CAAC;IAEjE,MAAME,gCAAgCN,oBAAoBO,IAAI,CAC5DC,CAAAA,aAAcA,WAAWC,IAAI,KAAKN;IAGpC,MAAMO,iBAAoD;QACxDC,QAAQ,IAAO,CAAA;gBACbC,OAAO;gBACPC,OAAO;oBAAEC,aAAa;gBAAiC;YACzD,CAAA;QACAC,QAAQ,IAAO,CAAA;gBACbF,OAAO;oBAAEC,aAAa;gBAAiC;YACzD,CAAA;QACAE,YAAY,IAAO,CAAA;gBACjBH,OAAO;oBAAEC,aAAa;gBAAsC;YAC9D,CAAA;QACAG,QAAQ,IAAO,CAAA;gBACbJ,OAAO;oBAAEC,aAAa;gBAA4C;YACpE,CAAA;QACAI,YAAY,IAAO,CAAA;gBACjBL,OAAO;oBACLM,UAAU;oBACVL,aAAa;gBACf;YACF,CAAA;QACAM,gBAAgB,IAAO,CAAA;gBACrBP,OAAO;oBACLM,UAAU;oBACVL,aAAa;gBACf;YACF,CAAA;IACF;IAEA,MAAMO,mBAAmBvB,oBAAoB;QAC3CwB,QAAQjB;QACRkB,sBAAsBb;IACxB;IAEA,IAAIc,wBAA0C;QAC5C,GAAGlB,6BAA6B;QAChCG,MAAMN;QACNU,OAAO;YACLY,QAAQxB,cAAcyB,qBAAqB,IAAI;YAC/CC,YAAY/B,mBAAmBM,iBAAiBV,WAAWY,WAAW,EAAE;YACxEU,aAAa;YACbc,OAAO3B,eAAe4B,wBAAwB;YAC9C,GAAGvB,+BAA+BO,KAAK;QACzC;QACAiB,QAAQ;YACN,GAAGrC,eAAeQ,cAAc;YAChC,GAAIK,+BAA+BwB,UAAU,CAAC,CAAC;QACjD;QACAC,QAAQ;YACN,GAAIzB,+BAA+ByB,UAAU,CAAC,CAAC;YAC/CC,oBAAoBxC,WAAWY,WAAW;QAC5C;QACA6B,QAAQ;eACF3B,+BAA+B2B,UAAU,EAAE;eAC5CpC,sBAAsBS,+BAA+B2B,QAAQZ;SACjE;IACH;IAEA,IAAI,OAAOpB,cAAciC,yBAAyB,EAAEC,iBAAiB,YAAY;QAC/EX,wBAAwBvB,cAAciC,yBAAyB,CAACC,YAAY,CAAC;YAC3E3B,YAAYgB;QACd;IACF;IAEA9B,sBAAsB8B,uBAAuBnB;IAE7C,OAAOmB;AACT"}
@@ -0,0 +1,3 @@
1
+ import type { BuildCollectionProps } from '@/better-auth/plugin/types';
2
+ import type { CollectionConfig } from 'payload';
3
+ export declare function buildSubscriptionsCollection({ incomingCollections, pluginOptions, resolvedSchemas, }: BuildCollectionProps): CollectionConfig;
@@ -0,0 +1,111 @@
1
+ import { baModelKey } from "../../constants";
2
+ import { getAdminAccess } from "../../helpers/get-admin-access";
3
+ import { assertAllSchemaFields, getSchemaCollectionSlug, getSchemaFieldName } from "./utils/collection-schema";
4
+ import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
5
+ import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
6
+ export function buildSubscriptionsCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
7
+ const subscriptionsSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.subscription);
8
+ const subscriptionsSchema = resolvedSchemas[baModelKey.subscription];
9
+ const existingSubscriptionCollection = incomingCollections.find((collection)=>collection.slug === subscriptionsSlug);
10
+ const fieldOverrides = {
11
+ plan: ()=>({
12
+ index: true,
13
+ admin: {
14
+ readOnly: true,
15
+ description: 'The name of the subscription plan'
16
+ }
17
+ }),
18
+ referenceId: ()=>({
19
+ index: true,
20
+ admin: {
21
+ readOnly: true,
22
+ description: 'The ID this subscription is associated with (user ID by default)'
23
+ }
24
+ }),
25
+ stripeCustomerId: ()=>({
26
+ index: true,
27
+ admin: {
28
+ readOnly: true,
29
+ description: 'The Stripe customer ID'
30
+ }
31
+ }),
32
+ stripeSubscriptionId: ()=>({
33
+ index: true,
34
+ admin: {
35
+ readOnly: true,
36
+ description: 'The Stripe subscription ID'
37
+ }
38
+ }),
39
+ status: ()=>({
40
+ index: true,
41
+ admin: {
42
+ description: 'The status of the subscription (active, canceled, etc.)'
43
+ }
44
+ }),
45
+ periodStart: ()=>({
46
+ admin: {
47
+ description: 'Start date of the current billing period'
48
+ }
49
+ }),
50
+ periodEnd: ()=>({
51
+ admin: {
52
+ description: 'End date of the current billing period'
53
+ }
54
+ }),
55
+ cancelAtPeriodEnd: ()=>({
56
+ admin: {
57
+ description: 'Whether the subscription will be canceled at the end of the period'
58
+ }
59
+ }),
60
+ seats: ()=>({
61
+ admin: {
62
+ description: 'Number of seats for team plans'
63
+ }
64
+ }),
65
+ trialStart: ()=>({
66
+ admin: {
67
+ description: 'Start date of the trial period'
68
+ }
69
+ }),
70
+ trialEnd: ()=>({
71
+ admin: {
72
+ description: 'End date of the trial period'
73
+ }
74
+ })
75
+ };
76
+ const collectionFields = getCollectionFields({
77
+ schema: subscriptionsSchema,
78
+ additionalProperties: fieldOverrides
79
+ });
80
+ let subscriptionsCollection = {
81
+ ...existingSubscriptionCollection,
82
+ slug: subscriptionsSlug,
83
+ admin: {
84
+ useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.subscription, 'plan'),
85
+ description: 'Subscriptions are used to manage the subscriptions of the users',
86
+ group: pluginOptions?.collectionAdminGroup ?? 'Auth',
87
+ ...existingSubscriptionCollection?.admin
88
+ },
89
+ access: {
90
+ ...getAdminAccess(pluginOptions),
91
+ ...existingSubscriptionCollection?.access ?? {}
92
+ },
93
+ custom: {
94
+ ...existingSubscriptionCollection?.custom ?? {},
95
+ betterAuthModelKey: baModelKey.subscription
96
+ },
97
+ fields: [
98
+ ...existingSubscriptionCollection?.fields ?? [],
99
+ ...filterDuplicateFields(existingSubscriptionCollection?.fields, collectionFields)
100
+ ]
101
+ };
102
+ if (typeof pluginOptions.pluginCollectionOverrides?.subscriptions === 'function') {
103
+ subscriptionsCollection = pluginOptions.pluginCollectionOverrides.subscriptions({
104
+ collection: subscriptionsCollection
105
+ });
106
+ }
107
+ assertAllSchemaFields(subscriptionsCollection, subscriptionsSchema);
108
+ return subscriptionsCollection;
109
+ }
110
+
111
+ //# sourceMappingURL=subscriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../src/better-auth/plugin/lib/build-collections/subscriptions.ts"],"sourcesContent":["import { baModelKey } from '../../constants';\nimport { getAdminAccess } from '../../helpers/get-admin-access';\nimport {\n assertAllSchemaFields,\n getSchemaCollectionSlug,\n getSchemaFieldName,\n} from './utils/collection-schema';\nimport { filterDuplicateFields } from './utils/filter-duplicate-fields';\nimport { getCollectionFields } from './utils/transform-schema-fields-to-payload';\n\nimport type { Subscription } from '@/better-auth/generated-types';\nimport type { BuildCollectionProps, FieldOverrides } from '@/better-auth/plugin/types';\nimport type { CollectionConfig } from 'payload';\n\nexport function buildSubscriptionsCollection({\n incomingCollections,\n pluginOptions,\n resolvedSchemas,\n}: BuildCollectionProps): CollectionConfig {\n const subscriptionsSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.subscription);\n const subscriptionsSchema = resolvedSchemas[baModelKey.subscription];\n\n const existingSubscriptionCollection = incomingCollections.find(\n collection => collection.slug === subscriptionsSlug\n ) as CollectionConfig | undefined;\n\n const fieldOverrides: FieldOverrides<keyof Subscription> = {\n plan: () => ({\n index: true,\n admin: { readOnly: true, description: 'The name of the subscription plan' },\n }),\n referenceId: () => ({\n index: true,\n admin: {\n readOnly: true,\n description: 'The ID this subscription is associated with (user ID by default)',\n },\n }),\n stripeCustomerId: () => ({\n index: true,\n admin: { readOnly: true, description: 'The Stripe customer ID' },\n }),\n stripeSubscriptionId: () => ({\n index: true,\n admin: { readOnly: true, description: 'The Stripe subscription ID' },\n }),\n status: () => ({\n index: true,\n admin: { description: 'The status of the subscription (active, canceled, etc.)' },\n }),\n periodStart: () => ({\n admin: { description: 'Start date of the current billing period' },\n }),\n periodEnd: () => ({\n admin: { description: 'End date of the current billing period' },\n }),\n cancelAtPeriodEnd: () => ({\n admin: { description: 'Whether the subscription will be canceled at the end of the period' },\n }),\n seats: () => ({\n admin: { description: 'Number of seats for team plans' },\n }),\n trialStart: () => ({\n admin: { description: 'Start date of the trial period' },\n }),\n trialEnd: () => ({\n admin: { description: 'End date of the trial period' },\n }),\n };\n\n const collectionFields = getCollectionFields({\n schema: subscriptionsSchema,\n additionalProperties: fieldOverrides,\n });\n\n let subscriptionsCollection: CollectionConfig = {\n ...existingSubscriptionCollection,\n slug: subscriptionsSlug,\n admin: {\n useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.subscription, 'plan'),\n description: 'Subscriptions are used to manage the subscriptions of the users',\n group: pluginOptions?.collectionAdminGroup ?? 'Auth',\n ...existingSubscriptionCollection?.admin,\n },\n access: {\n ...getAdminAccess(pluginOptions),\n ...(existingSubscriptionCollection?.access ?? {}),\n },\n custom: {\n ...(existingSubscriptionCollection?.custom ?? {}),\n betterAuthModelKey: baModelKey.subscription,\n },\n fields: [\n ...(existingSubscriptionCollection?.fields ?? []),\n ...filterDuplicateFields(existingSubscriptionCollection?.fields, collectionFields),\n ],\n };\n\n if (typeof pluginOptions.pluginCollectionOverrides?.subscriptions === 'function') {\n subscriptionsCollection = pluginOptions.pluginCollectionOverrides.subscriptions({\n collection: subscriptionsCollection,\n });\n }\n\n assertAllSchemaFields(subscriptionsCollection, subscriptionsSchema);\n\n return subscriptionsCollection;\n}\n"],"names":["baModelKey","getAdminAccess","assertAllSchemaFields","getSchemaCollectionSlug","getSchemaFieldName","filterDuplicateFields","getCollectionFields","buildSubscriptionsCollection","incomingCollections","pluginOptions","resolvedSchemas","subscriptionsSlug","subscription","subscriptionsSchema","existingSubscriptionCollection","find","collection","slug","fieldOverrides","plan","index","admin","readOnly","description","referenceId","stripeCustomerId","stripeSubscriptionId","status","periodStart","periodEnd","cancelAtPeriodEnd","seats","trialStart","trialEnd","collectionFields","schema","additionalProperties","subscriptionsCollection","useAsTitle","group","collectionAdminGroup","access","custom","betterAuthModelKey","fields","pluginCollectionOverrides","subscriptions"],"mappings":"AAAA,SAASA,UAAU,QAAQ,kBAAkB;AAC7C,SAASC,cAAc,QAAQ,iCAAiC;AAChE,SACEC,qBAAqB,EACrBC,uBAAuB,EACvBC,kBAAkB,QACb,4BAA4B;AACnC,SAASC,qBAAqB,QAAQ,kCAAkC;AACxE,SAASC,mBAAmB,QAAQ,6CAA6C;AAMjF,OAAO,SAASC,6BAA6B,EAC3CC,mBAAmB,EACnBC,aAAa,EACbC,eAAe,EACM;IACrB,MAAMC,oBAAoBR,wBAAwBO,iBAAiBV,WAAWY,YAAY;IAC1F,MAAMC,sBAAsBH,eAAe,CAACV,WAAWY,YAAY,CAAC;IAEpE,MAAME,iCAAiCN,oBAAoBO,IAAI,CAC7DC,CAAAA,aAAcA,WAAWC,IAAI,KAAKN;IAGpC,MAAMO,iBAAqD;QACzDC,MAAM,IAAO,CAAA;gBACXC,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAoC;YAC5E,CAAA;QACAC,aAAa,IAAO,CAAA;gBAClBJ,OAAO;gBACPC,OAAO;oBACLC,UAAU;oBACVC,aAAa;gBACf;YACF,CAAA;QACAE,kBAAkB,IAAO,CAAA;gBACvBL,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAAyB;YACjE,CAAA;QACAG,sBAAsB,IAAO,CAAA;gBAC3BN,OAAO;gBACPC,OAAO;oBAAEC,UAAU;oBAAMC,aAAa;gBAA6B;YACrE,CAAA;QACAI,QAAQ,IAAO,CAAA;gBACbP,OAAO;gBACPC,OAAO;oBAAEE,aAAa;gBAA0D;YAClF,CAAA;QACAK,aAAa,IAAO,CAAA;gBAClBP,OAAO;oBAAEE,aAAa;gBAA2C;YACnE,CAAA;QACAM,WAAW,IAAO,CAAA;gBAChBR,OAAO;oBAAEE,aAAa;gBAAyC;YACjE,CAAA;QACAO,mBAAmB,IAAO,CAAA;gBACxBT,OAAO;oBAAEE,aAAa;gBAAqE;YAC7F,CAAA;QACAQ,OAAO,IAAO,CAAA;gBACZV,OAAO;oBAAEE,aAAa;gBAAiC;YACzD,CAAA;QACAS,YAAY,IAAO,CAAA;gBACjBX,OAAO;oBAAEE,aAAa;gBAAiC;YACzD,CAAA;QACAU,UAAU,IAAO,CAAA;gBACfZ,OAAO;oBAAEE,aAAa;gBAA+B;YACvD,CAAA;IACF;IAEA,MAAMW,mBAAmB5B,oBAAoB;QAC3C6B,QAAQtB;QACRuB,sBAAsBlB;IACxB;IAEA,IAAImB,0BAA4C;QAC9C,GAAGvB,8BAA8B;QACjCG,MAAMN;QACNU,OAAO;YACLiB,YAAYlC,mBAAmBM,iBAAiBV,WAAWY,YAAY,EAAE;YACzEW,aAAa;YACbgB,OAAO9B,eAAe+B,wBAAwB;YAC9C,GAAG1B,gCAAgCO,KAAK;QAC1C;QACAoB,QAAQ;YACN,GAAGxC,eAAeQ,cAAc;YAChC,GAAIK,gCAAgC2B,UAAU,CAAC,CAAC;QAClD;QACAC,QAAQ;YACN,GAAI5B,gCAAgC4B,UAAU,CAAC,CAAC;YAChDC,oBAAoB3C,WAAWY,YAAY;QAC7C;QACAgC,QAAQ;eACF9B,gCAAgC8B,UAAU,EAAE;eAC7CvC,sBAAsBS,gCAAgC8B,QAAQV;SAClE;IACH;IAEA,IAAI,OAAOzB,cAAcoC,yBAAyB,EAAEC,kBAAkB,YAAY;QAChFT,0BAA0B5B,cAAcoC,yBAAyB,CAACC,aAAa,CAAC;YAC9E9B,YAAYqB;QACd;IACF;IAEAnC,sBAAsBmC,yBAAyBxB;IAE/C,OAAOwB;AACT"}
@@ -0,0 +1,3 @@
1
+ import type { BuildCollectionProps } from '@/better-auth/plugin/types';
2
+ import type { CollectionConfig } from 'payload';
3
+ export declare function buildTeamMembersCollection({ incomingCollections, pluginOptions, resolvedSchemas, }: BuildCollectionProps): CollectionConfig;
@@ -0,0 +1,57 @@
1
+ import { baModelKey } from "../../constants";
2
+ import { getAdminAccess } from "../../helpers/get-admin-access";
3
+ import { assertAllSchemaFields, getSchemaCollectionSlug, getSchemaFieldName } from "./utils/collection-schema";
4
+ import { filterDuplicateFields } from "./utils/filter-duplicate-fields";
5
+ import { getCollectionFields } from "./utils/transform-schema-fields-to-payload";
6
+ export function buildTeamMembersCollection({ incomingCollections, pluginOptions, resolvedSchemas }) {
7
+ const teamMemberSlug = getSchemaCollectionSlug(resolvedSchemas, baModelKey.teamMember);
8
+ const teamMemberSchema = resolvedSchemas[baModelKey.teamMember];
9
+ const existingTeamMemberCollection = incomingCollections.find((collection)=>collection.slug === teamMemberSlug);
10
+ const fieldOverrides = {
11
+ teamId: ()=>({
12
+ index: true,
13
+ admin: {
14
+ readOnly: true,
15
+ description: 'The team that the membership belongs to.'
16
+ }
17
+ }),
18
+ userId: ()=>({
19
+ index: true,
20
+ admin: {
21
+ readOnly: true,
22
+ description: 'The user that is a member of the team.'
23
+ }
24
+ })
25
+ };
26
+ const collectionFields = getCollectionFields({
27
+ schema: teamMemberSchema,
28
+ additionalProperties: fieldOverrides
29
+ });
30
+ const teamMemberCollection = {
31
+ ...existingTeamMemberCollection,
32
+ slug: teamMemberSlug,
33
+ admin: {
34
+ hidden: pluginOptions.hidePluginCollections ?? false,
35
+ useAsTitle: getSchemaFieldName(resolvedSchemas, baModelKey.teamMember, 'teamId'),
36
+ description: 'Team members of an organization team.',
37
+ group: pluginOptions?.collectionAdminGroup ?? 'Auth',
38
+ ...existingTeamMemberCollection?.admin
39
+ },
40
+ access: {
41
+ ...getAdminAccess(pluginOptions),
42
+ ...existingTeamMemberCollection?.access ?? {}
43
+ },
44
+ custom: {
45
+ ...existingTeamMemberCollection?.custom ?? {},
46
+ betterAuthModelKey: baModelKey.teamMember
47
+ },
48
+ fields: [
49
+ ...existingTeamMemberCollection?.fields ?? [],
50
+ ...filterDuplicateFields(existingTeamMemberCollection?.fields, collectionFields)
51
+ ]
52
+ };
53
+ assertAllSchemaFields(teamMemberCollection, teamMemberSchema);
54
+ return teamMemberCollection;
55
+ }
56
+
57
+ //# sourceMappingURL=team-members.js.map