payload-auth 1.0.0 → 1.0.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 (328) hide show
  1. package/dist/authjs/index.d.ts +1 -0
  2. package/dist/authjs/index.d.ts.map +1 -0
  3. package/dist/authjs/index.js +1 -1
  4. package/dist/better-auth/adapter/dev/bin/run.d.ts +1 -0
  5. package/dist/better-auth/adapter/dev/bin/run.d.ts.map +1 -0
  6. package/dist/better-auth/adapter/dev/bin/run.js +1 -1
  7. package/dist/better-auth/adapter/dev/bin/schema.d.ts +1 -0
  8. package/dist/better-auth/adapter/dev/bin/schema.d.ts.map +1 -0
  9. package/dist/better-auth/adapter/dev/bin/schema.js +1 -1
  10. package/dist/better-auth/adapter/dev/collections.d.ts +1 -0
  11. package/dist/better-auth/adapter/dev/collections.d.ts.map +1 -0
  12. package/dist/better-auth/adapter/dev/collections.js +1 -1
  13. package/dist/better-auth/adapter/dev/index.d.ts +1 -0
  14. package/dist/better-auth/adapter/dev/index.d.ts.map +1 -0
  15. package/dist/better-auth/adapter/dev/index.js +1 -1
  16. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts +1 -0
  17. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.d.ts.map +1 -0
  18. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js +1 -1
  19. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts +1 -0
  20. package/dist/better-auth/adapter/generate-schema/get-payload-schema.d.ts.map +1 -0
  21. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js +1 -1
  22. package/dist/better-auth/adapter/generate-schema/index.d.ts +1 -0
  23. package/dist/better-auth/adapter/generate-schema/index.d.ts.map +1 -0
  24. package/dist/better-auth/adapter/generate-schema/index.js +3 -3
  25. package/dist/better-auth/adapter/generate-schema/utils.d.ts +1 -0
  26. package/dist/better-auth/adapter/generate-schema/utils.d.ts.map +1 -0
  27. package/dist/better-auth/adapter/generate-schema/utils.js +1 -1
  28. package/dist/better-auth/adapter/index.d.ts +3 -2
  29. package/dist/better-auth/adapter/index.d.ts.map +1 -0
  30. package/dist/better-auth/adapter/index.js +3 -3
  31. package/dist/better-auth/adapter/test/adapter.test.d.ts +1 -0
  32. package/dist/better-auth/adapter/test/adapter.test.d.ts.map +1 -0
  33. package/dist/better-auth/adapter/test/adapter.test.js +1 -1
  34. package/dist/better-auth/adapter/test/better-auth-adapter-test.d.ts +1 -0
  35. package/dist/better-auth/adapter/test/better-auth-adapter-test.d.ts.map +1 -0
  36. package/dist/better-auth/adapter/test/better-auth-adapter-test.js +1 -1
  37. package/dist/better-auth/adapter/test/schema.test.d.ts +1 -0
  38. package/dist/better-auth/adapter/test/schema.test.d.ts.map +1 -0
  39. package/dist/better-auth/adapter/test/schema.test.js +1 -1
  40. package/dist/better-auth/adapter/test/test_payload1/schema.d.ts +1 -0
  41. package/dist/better-auth/adapter/test/test_payload1/schema.d.ts.map +1 -0
  42. package/dist/better-auth/adapter/test/test_payload1/schema.js +1 -1
  43. package/dist/better-auth/adapter/test/test_payload2/schema.d.ts +1 -0
  44. package/dist/better-auth/adapter/test/test_payload2/schema.d.ts.map +1 -0
  45. package/dist/better-auth/adapter/test/test_payload2/schema.js +1 -1
  46. package/dist/better-auth/adapter/test/test_payload3/schema.d.ts +1 -0
  47. package/dist/better-auth/adapter/test/test_payload3/schema.d.ts.map +1 -0
  48. package/dist/better-auth/adapter/test/test_payload3/schema.js +1 -1
  49. package/dist/better-auth/adapter/transform/index.d.ts +5 -4
  50. package/dist/better-auth/adapter/transform/index.d.ts.map +1 -0
  51. package/dist/better-auth/adapter/transform/index.js +1 -1
  52. package/dist/better-auth/adapter/types.d.ts +1 -0
  53. package/dist/better-auth/adapter/types.d.ts.map +1 -0
  54. package/dist/better-auth/adapter/types.js +1 -1
  55. package/dist/better-auth/index.d.ts +1 -3
  56. package/dist/better-auth/index.d.ts.map +1 -0
  57. package/dist/better-auth/index.js +1 -4
  58. package/dist/better-auth/plugin/collections/accounts/hooks/sync-password-to-user.d.ts +1 -0
  59. package/dist/better-auth/plugin/collections/accounts/hooks/sync-password-to-user.d.ts.map +1 -0
  60. package/dist/better-auth/plugin/collections/accounts/hooks/sync-password-to-user.js +1 -1
  61. package/dist/better-auth/plugin/collections/users/endpoints/refresh-token.d.ts +1 -0
  62. package/dist/better-auth/plugin/collections/users/endpoints/refresh-token.d.ts.map +1 -0
  63. package/dist/better-auth/plugin/collections/users/endpoints/refresh-token.js +1 -1
  64. package/dist/better-auth/plugin/collections/users/hooks/after-login.d.ts +1 -0
  65. package/dist/better-auth/plugin/collections/users/hooks/after-login.d.ts.map +1 -0
  66. package/dist/better-auth/plugin/collections/users/hooks/after-login.js +1 -1
  67. package/dist/better-auth/plugin/collections/users/hooks/after-logout.d.ts +1 -0
  68. package/dist/better-auth/plugin/collections/users/hooks/after-logout.d.ts.map +1 -0
  69. package/dist/better-auth/plugin/collections/users/hooks/after-logout.js +1 -1
  70. package/dist/better-auth/plugin/collections/users/hooks/before-login.d.ts +1 -0
  71. package/dist/better-auth/plugin/collections/users/hooks/before-login.d.ts.map +1 -0
  72. package/dist/better-auth/plugin/collections/users/hooks/before-login.js +1 -1
  73. package/dist/better-auth/plugin/collections/users/hooks/clean-up-user-after-delete.d.ts +1 -0
  74. package/dist/better-auth/plugin/collections/users/hooks/clean-up-user-after-delete.d.ts.map +1 -0
  75. package/dist/better-auth/plugin/collections/users/hooks/clean-up-user-after-delete.js +1 -1
  76. package/dist/better-auth/plugin/collections/users/hooks/on-verified-change.d.ts +1 -0
  77. package/dist/better-auth/plugin/collections/users/hooks/on-verified-change.d.ts.map +1 -0
  78. package/dist/better-auth/plugin/collections/users/hooks/on-verified-change.js +1 -1
  79. package/dist/better-auth/plugin/collections/users/hooks/sync-account.d.ts +1 -0
  80. package/dist/better-auth/plugin/collections/users/hooks/sync-account.d.ts.map +1 -0
  81. package/dist/better-auth/plugin/collections/users/hooks/sync-account.js +2 -2
  82. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts +1 -0
  83. package/dist/better-auth/plugin/helpers/generate-verify-email-url.d.ts.map +1 -0
  84. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js +1 -1
  85. package/dist/better-auth/plugin/helpers/get-ip.d.ts +1 -0
  86. package/dist/better-auth/plugin/helpers/get-ip.d.ts.map +1 -0
  87. package/dist/better-auth/plugin/helpers/get-ip.js +1 -1
  88. package/dist/better-auth/plugin/helpers/index.d.ts +1 -0
  89. package/dist/better-auth/plugin/helpers/index.d.ts.map +1 -0
  90. package/dist/better-auth/plugin/helpers/index.js +1 -1
  91. package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts +3 -2
  92. package/dist/better-auth/plugin/helpers/serialize-cookie.d.ts.map +1 -0
  93. package/dist/better-auth/plugin/helpers/serialize-cookie.js +1 -1
  94. package/dist/better-auth/plugin/index.d.ts +2 -1
  95. package/dist/better-auth/plugin/index.d.ts.map +1 -0
  96. package/dist/better-auth/plugin/index.js +2 -2
  97. package/dist/better-auth/plugin/lib/auth-strategy.d.ts +1 -0
  98. package/dist/better-auth/plugin/lib/auth-strategy.d.ts.map +1 -0
  99. package/dist/better-auth/plugin/lib/auth-strategy.js +1 -1
  100. package/dist/better-auth/plugin/lib/build-collection-configs.d.ts +1 -0
  101. package/dist/better-auth/plugin/lib/build-collection-configs.d.ts.map +1 -0
  102. package/dist/better-auth/plugin/lib/build-collection-configs.js +2 -2
  103. package/dist/better-auth/plugin/lib/config.d.ts +2 -0
  104. package/dist/better-auth/plugin/lib/config.d.ts.map +1 -0
  105. package/dist/better-auth/plugin/lib/config.js +3 -2
  106. package/dist/better-auth/plugin/lib/ensure-password-set-before-create.d.ts +1 -0
  107. package/dist/better-auth/plugin/lib/ensure-password-set-before-create.d.ts.map +1 -0
  108. package/dist/better-auth/plugin/lib/ensure-password-set-before-create.js +1 -1
  109. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts +1 -0
  110. package/dist/better-auth/plugin/lib/get-payload-auth.d.ts.map +1 -0
  111. package/dist/better-auth/plugin/lib/get-payload-auth.js +1 -1
  112. package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts +1 -0
  113. package/dist/better-auth/plugin/lib/get-required-collection-slugs.d.ts.map +1 -0
  114. package/dist/better-auth/plugin/lib/get-required-collection-slugs.js +1 -1
  115. package/dist/better-auth/plugin/lib/init-better-auth.d.ts +1 -0
  116. package/dist/better-auth/plugin/lib/init-better-auth.d.ts.map +1 -0
  117. package/dist/better-auth/plugin/lib/init-better-auth.js +2 -2
  118. package/dist/better-auth/plugin/lib/password.d.ts +1 -0
  119. package/dist/better-auth/plugin/lib/password.d.ts.map +1 -0
  120. package/dist/better-auth/plugin/lib/password.js +1 -1
  121. package/dist/better-auth/plugin/lib/payload-access.d.ts +1 -0
  122. package/dist/better-auth/plugin/lib/payload-access.d.ts.map +1 -0
  123. package/dist/better-auth/plugin/lib/payload-access.js +1 -1
  124. package/dist/better-auth/plugin/lib/prepare-session-data.d.ts +2 -1
  125. package/dist/better-auth/plugin/lib/prepare-session-data.d.ts.map +1 -0
  126. package/dist/better-auth/plugin/lib/prepare-session-data.js +1 -1
  127. package/dist/better-auth/plugin/lib/respect-save-to-jwt-fields-middleware.d.ts +1 -0
  128. package/dist/better-auth/plugin/lib/respect-save-to-jwt-fields-middleware.d.ts.map +1 -0
  129. package/dist/better-auth/plugin/lib/respect-save-to-jwt-fields-middleware.js +1 -1
  130. package/dist/better-auth/plugin/lib/sanitize-auth-options.d.ts +1 -0
  131. package/dist/better-auth/plugin/lib/sanitize-auth-options.d.ts.map +1 -0
  132. package/dist/better-auth/plugin/lib/sanitize-auth-options.js +1 -1
  133. package/dist/better-auth/plugin/payload/components/admin-buttons.d.ts +3 -1
  134. package/dist/better-auth/plugin/payload/components/admin-buttons.d.ts.map +1 -0
  135. package/dist/better-auth/plugin/payload/components/admin-buttons.js +3 -6
  136. package/dist/better-auth/plugin/payload/components/login-redirect.d.ts +1 -0
  137. package/dist/better-auth/plugin/payload/components/login-redirect.d.ts.map +1 -0
  138. package/dist/better-auth/plugin/payload/components/login-redirect.js +1 -1
  139. package/dist/better-auth/plugin/payload/components/logo.d.ts +3 -1
  140. package/dist/better-auth/plugin/payload/components/logo.d.ts.map +1 -0
  141. package/dist/better-auth/plugin/payload/components/logo.js +1 -1
  142. package/dist/better-auth/plugin/payload/components/logout.d.ts +3 -1
  143. package/dist/better-auth/plugin/payload/components/logout.d.ts.map +1 -0
  144. package/dist/better-auth/plugin/payload/components/logout.js +1 -1
  145. package/dist/better-auth/plugin/payload/components/sign-in.d.ts +2 -1
  146. package/dist/better-auth/plugin/payload/components/sign-in.d.ts.map +1 -0
  147. package/dist/better-auth/plugin/payload/components/sign-in.js +1 -1
  148. package/dist/better-auth/plugin/payload/components/sign-up.d.ts +2 -1
  149. package/dist/better-auth/plugin/payload/components/sign-up.d.ts.map +1 -0
  150. package/dist/better-auth/plugin/payload/components/sign-up.js +2 -1
  151. package/dist/better-auth/plugin/payload/components/ui/button.d.ts +6 -5
  152. package/dist/better-auth/plugin/payload/components/ui/button.d.ts.map +1 -0
  153. package/dist/better-auth/plugin/payload/components/ui/button.js +1 -1
  154. package/dist/better-auth/plugin/payload/components/ui/card.d.ts +8 -7
  155. package/dist/better-auth/plugin/payload/components/ui/card.d.ts.map +1 -0
  156. package/dist/better-auth/plugin/payload/components/ui/card.js +1 -1
  157. package/dist/better-auth/plugin/payload/components/ui/checkbox.d.ts +2 -1
  158. package/dist/better-auth/plugin/payload/components/ui/checkbox.d.ts.map +1 -0
  159. package/dist/better-auth/plugin/payload/components/ui/checkbox.js +1 -1
  160. package/dist/better-auth/plugin/payload/components/ui/cn.d.ts +1 -0
  161. package/dist/better-auth/plugin/payload/components/ui/cn.d.ts.map +1 -0
  162. package/dist/better-auth/plugin/payload/components/ui/cn.js +1 -1
  163. package/dist/better-auth/plugin/payload/components/ui/input.d.ts +2 -1
  164. package/dist/better-auth/plugin/payload/components/ui/input.d.ts.map +1 -0
  165. package/dist/better-auth/plugin/payload/components/ui/input.js +1 -1
  166. package/dist/better-auth/plugin/payload/components/ui/label.d.ts +2 -1
  167. package/dist/better-auth/plugin/payload/components/ui/label.d.ts.map +1 -0
  168. package/dist/better-auth/plugin/payload/components/ui/label.js +1 -1
  169. package/dist/better-auth/plugin/payload/components/ui/password-input.d.ts +2 -1
  170. package/dist/better-auth/plugin/payload/components/ui/password-input.d.ts.map +1 -0
  171. package/dist/better-auth/plugin/payload/components/ui/password-input.js +1 -1
  172. package/dist/better-auth/plugin/payload/exports/client.d.ts +1 -0
  173. package/dist/better-auth/plugin/payload/exports/client.d.ts.map +1 -0
  174. package/dist/better-auth/plugin/payload/exports/client.js +1 -1
  175. package/dist/better-auth/plugin/payload/exports/rsc.d.ts +1 -0
  176. package/dist/better-auth/plugin/payload/exports/rsc.d.ts.map +1 -0
  177. package/dist/better-auth/plugin/payload/exports/rsc.js +1 -1
  178. package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts +3 -1
  179. package/dist/better-auth/plugin/payload/views/create-first-admin/index.d.ts.map +1 -0
  180. package/dist/better-auth/plugin/payload/views/create-first-admin/index.js +1 -1
  181. package/dist/better-auth/plugin/payload/views/login/index.d.ts +3 -1
  182. package/dist/better-auth/plugin/payload/views/login/index.d.ts.map +1 -0
  183. package/dist/better-auth/plugin/payload/views/login/index.js +1 -1
  184. package/dist/better-auth/plugin/types.d.ts +1 -0
  185. package/dist/better-auth/plugin/types.d.ts.map +1 -0
  186. package/dist/better-auth/plugin/types.js +1 -1
  187. package/dist/better-auth/types.d.ts +1 -0
  188. package/dist/better-auth/types.d.ts.map +1 -0
  189. package/dist/better-auth/types.js +1 -1
  190. package/dist/clerk/admin-ui.d.ts +4 -0
  191. package/dist/clerk/admin-ui.d.ts.map +1 -0
  192. package/dist/clerk/admin-ui.js +5 -0
  193. package/dist/clerk/index.d.ts +7 -1
  194. package/dist/clerk/index.d.ts.map +1 -0
  195. package/dist/clerk/index.js +7 -2
  196. package/dist/clerk/plugin/auth-strategy.d.ts +11 -0
  197. package/dist/clerk/plugin/auth-strategy.d.ts.map +1 -0
  198. package/dist/clerk/plugin/auth-strategy.js +45 -0
  199. package/dist/clerk/plugin/collections/users/access.d.ts +14 -0
  200. package/dist/clerk/plugin/collections/users/access.d.ts.map +1 -0
  201. package/dist/clerk/plugin/collections/users/access.js +36 -0
  202. package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts +14 -0
  203. package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.d.ts.map +1 -0
  204. package/dist/clerk/plugin/collections/users/endpoints/sync-from-clerk.js +108 -0
  205. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.d.ts +4 -0
  206. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.d.ts.map +1 -0
  207. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/index.js +5 -0
  208. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.d.ts +13 -0
  209. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.d.ts.map +1 -0
  210. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userCreated.js +33 -0
  211. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.d.ts +11 -0
  212. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.d.ts.map +1 -0
  213. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userDeleted.js +27 -0
  214. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.d.ts +13 -0
  215. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.d.ts.map +1 -0
  216. package/dist/clerk/plugin/collections/users/endpoints/webhook/handlers/userUpdated.js +35 -0
  217. package/dist/clerk/plugin/collections/users/endpoints/webhook/index.d.ts +12 -0
  218. package/dist/clerk/plugin/collections/users/endpoints/webhook/index.d.ts.map +1 -0
  219. package/dist/clerk/plugin/collections/users/endpoints/webhook/index.js +86 -0
  220. package/dist/clerk/plugin/collections/users/fields.d.ts +6 -0
  221. package/dist/clerk/plugin/collections/users/fields.d.ts.map +1 -0
  222. package/dist/clerk/plugin/collections/users/fields.js +81 -0
  223. package/dist/clerk/plugin/collections/users/index.d.ts +10 -0
  224. package/dist/clerk/plugin/collections/users/index.d.ts.map +1 -0
  225. package/dist/clerk/plugin/collections/users/index.js +95 -0
  226. package/dist/clerk/plugin/components/after-login-form.d.ts +4 -0
  227. package/dist/clerk/plugin/components/after-login-form.d.ts.map +1 -0
  228. package/dist/clerk/plugin/components/after-login-form.js +65 -0
  229. package/dist/clerk/plugin/components/logout-button.d.ts +2 -0
  230. package/dist/clerk/plugin/components/logout-button.d.ts.map +1 -0
  231. package/dist/clerk/plugin/components/logout-button.js +49 -0
  232. package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts +6 -0
  233. package/dist/clerk/plugin/components/sync-clerk-users-button.d.ts.map +1 -0
  234. package/dist/clerk/plugin/components/sync-clerk-users-button.js +75 -0
  235. package/dist/clerk/plugin.d.ts +6 -0
  236. package/dist/clerk/plugin.d.ts.map +1 -0
  237. package/dist/clerk/plugin.js +63 -0
  238. package/dist/clerk/types.d.ts +63 -0
  239. package/dist/clerk/types.d.ts.map +1 -0
  240. package/dist/clerk/types.js +3 -0
  241. package/dist/clerk/utils/clerk-user.d.ts +24 -0
  242. package/dist/clerk/utils/clerk-user.d.ts.map +1 -0
  243. package/dist/clerk/utils/clerk-user.js +47 -0
  244. package/dist/clerk/utils/index.d.ts +4 -0
  245. package/dist/clerk/utils/index.d.ts.map +1 -0
  246. package/dist/clerk/utils/index.js +5 -0
  247. package/dist/clerk/utils/load-clerk-instance.d.ts +8 -0
  248. package/dist/clerk/utils/load-clerk-instance.d.ts.map +1 -0
  249. package/dist/clerk/utils/load-clerk-instance.js +11 -0
  250. package/dist/clerk/utils/svix.d.ts +9 -0
  251. package/dist/clerk/utils/svix.d.ts.map +1 -0
  252. package/dist/clerk/utils/svix.js +40 -0
  253. package/dist/clerk/utils/user.d.ts +17 -0
  254. package/dist/clerk/utils/user.d.ts.map +1 -0
  255. package/dist/clerk/utils/user.js +46 -0
  256. package/dist/index.d.ts +5 -0
  257. package/dist/index.d.ts.map +1 -0
  258. package/dist/index.js +5 -5
  259. package/dist/kinde/index.d.ts +1 -0
  260. package/dist/kinde/index.d.ts.map +1 -0
  261. package/dist/kinde/index.js +1 -1
  262. package/package.json +39 -12
  263. package/dist/authjs/index.js.map +0 -1
  264. package/dist/better-auth/adapter/dev/bin/run.js.map +0 -1
  265. package/dist/better-auth/adapter/dev/bin/schema.js.map +0 -1
  266. package/dist/better-auth/adapter/dev/collections.js.map +0 -1
  267. package/dist/better-auth/adapter/dev/index.js.map +0 -1
  268. package/dist/better-auth/adapter/generate-schema/generate-schema-builder.js.map +0 -1
  269. package/dist/better-auth/adapter/generate-schema/get-payload-schema.js.map +0 -1
  270. package/dist/better-auth/adapter/generate-schema/index.js.map +0 -1
  271. package/dist/better-auth/adapter/generate-schema/utils.js.map +0 -1
  272. package/dist/better-auth/adapter/index.js.map +0 -1
  273. package/dist/better-auth/adapter/test/adapter.test.js.map +0 -1
  274. package/dist/better-auth/adapter/test/better-auth-adapter-test.js.map +0 -1
  275. package/dist/better-auth/adapter/test/schema.test.js.map +0 -1
  276. package/dist/better-auth/adapter/test/test_payload1/schema.js.map +0 -1
  277. package/dist/better-auth/adapter/test/test_payload2/schema.js.map +0 -1
  278. package/dist/better-auth/adapter/test/test_payload3/schema.js.map +0 -1
  279. package/dist/better-auth/adapter/transform/index.js.map +0 -1
  280. package/dist/better-auth/adapter/types.js.map +0 -1
  281. package/dist/better-auth/index.js.map +0 -1
  282. package/dist/better-auth/plugin/collections/accounts/hooks/sync-password-to-user.js.map +0 -1
  283. package/dist/better-auth/plugin/collections/users/endpoints/refresh-token.js.map +0 -1
  284. package/dist/better-auth/plugin/collections/users/hooks/after-login.js.map +0 -1
  285. package/dist/better-auth/plugin/collections/users/hooks/after-logout.js.map +0 -1
  286. package/dist/better-auth/plugin/collections/users/hooks/before-login.js.map +0 -1
  287. package/dist/better-auth/plugin/collections/users/hooks/clean-up-user-after-delete.js.map +0 -1
  288. package/dist/better-auth/plugin/collections/users/hooks/on-verified-change.js.map +0 -1
  289. package/dist/better-auth/plugin/collections/users/hooks/sync-account.js.map +0 -1
  290. package/dist/better-auth/plugin/helpers/generate-verify-email-url.js.map +0 -1
  291. package/dist/better-auth/plugin/helpers/get-ip.js.map +0 -1
  292. package/dist/better-auth/plugin/helpers/index.js.map +0 -1
  293. package/dist/better-auth/plugin/helpers/serialize-cookie.js.map +0 -1
  294. package/dist/better-auth/plugin/index.js.map +0 -1
  295. package/dist/better-auth/plugin/lib/auth-strategy.js.map +0 -1
  296. package/dist/better-auth/plugin/lib/build-collection-configs.js.map +0 -1
  297. package/dist/better-auth/plugin/lib/config.js.map +0 -1
  298. package/dist/better-auth/plugin/lib/ensure-password-set-before-create.js.map +0 -1
  299. package/dist/better-auth/plugin/lib/get-payload-auth.js.map +0 -1
  300. package/dist/better-auth/plugin/lib/get-required-collection-slugs.js.map +0 -1
  301. package/dist/better-auth/plugin/lib/init-better-auth.js.map +0 -1
  302. package/dist/better-auth/plugin/lib/password.js.map +0 -1
  303. package/dist/better-auth/plugin/lib/payload-access.js.map +0 -1
  304. package/dist/better-auth/plugin/lib/prepare-session-data.js.map +0 -1
  305. package/dist/better-auth/plugin/lib/respect-save-to-jwt-fields-middleware.js.map +0 -1
  306. package/dist/better-auth/plugin/lib/sanitize-auth-options.js.map +0 -1
  307. package/dist/better-auth/plugin/payload/components/admin-buttons.js.map +0 -1
  308. package/dist/better-auth/plugin/payload/components/login-redirect.js.map +0 -1
  309. package/dist/better-auth/plugin/payload/components/logo.js.map +0 -1
  310. package/dist/better-auth/plugin/payload/components/logout.js.map +0 -1
  311. package/dist/better-auth/plugin/payload/components/sign-in.js.map +0 -1
  312. package/dist/better-auth/plugin/payload/components/sign-up.js.map +0 -1
  313. package/dist/better-auth/plugin/payload/components/ui/button.js.map +0 -1
  314. package/dist/better-auth/plugin/payload/components/ui/card.js.map +0 -1
  315. package/dist/better-auth/plugin/payload/components/ui/checkbox.js.map +0 -1
  316. package/dist/better-auth/plugin/payload/components/ui/cn.js.map +0 -1
  317. package/dist/better-auth/plugin/payload/components/ui/input.js.map +0 -1
  318. package/dist/better-auth/plugin/payload/components/ui/label.js.map +0 -1
  319. package/dist/better-auth/plugin/payload/components/ui/password-input.js.map +0 -1
  320. package/dist/better-auth/plugin/payload/exports/client.js.map +0 -1
  321. package/dist/better-auth/plugin/payload/exports/rsc.js.map +0 -1
  322. package/dist/better-auth/plugin/payload/views/create-first-admin/index.js.map +0 -1
  323. package/dist/better-auth/plugin/payload/views/login/index.js.map +0 -1
  324. package/dist/better-auth/plugin/types.js.map +0 -1
  325. package/dist/better-auth/types.js.map +0 -1
  326. package/dist/clerk/index.js.map +0 -1
  327. package/dist/index.js.map +0 -1
  328. package/dist/kinde/index.js.map +0 -1
@@ -0,0 +1,95 @@
1
+ import { clerkAuthStrategy } from '../../auth-strategy';
2
+ import { getCreateAccess, getDeleteAccess, getReadAccess, getUpdateAccess } from './access';
3
+ import { syncClerkUsersEndpoint } from './endpoints/sync-from-clerk';
4
+ import { clerkWebhookEndpoint } from './endpoints/webhook/index';
5
+ import { clerkUserFields } from './fields';
6
+ import { cookies } from 'next/headers';
7
+ export function withClerkUsersCollection({ collection = {
8
+ slug: 'users'
9
+ }, options, apiBasePath = '/api', adminBasePath = '/admin' }) {
10
+ const userSlug = options.users?.slug ?? 'users';
11
+ const adminRoles = options.users?.adminRoles ?? [
12
+ 'admin'
13
+ ];
14
+ let clerkUserCollection = {
15
+ ...collection,
16
+ slug: userSlug,
17
+ admin: {
18
+ useAsTitle: 'email',
19
+ defaultColumns: [
20
+ 'email',
21
+ 'clerkId',
22
+ 'firstName',
23
+ 'lastName'
24
+ ],
25
+ hidden: options.users?.hidden ?? false,
26
+ ...collection.admin || {},
27
+ components: {
28
+ Description: {
29
+ path: 'payload-auth/clerk/admin/ui#SyncClerkUsersButton',
30
+ clientProps: {
31
+ userCollectionSlug: userSlug,
32
+ apiBasePath,
33
+ adminBasePath
34
+ }
35
+ }
36
+ }
37
+ },
38
+ fields: [
39
+ ...collection.fields || [],
40
+ ...clerkUserFields
41
+ ],
42
+ auth: {
43
+ ...typeof collection?.auth === 'object' ? collection.auth : {},
44
+ strategies: [
45
+ clerkAuthStrategy(userSlug)
46
+ ]
47
+ },
48
+ access: {
49
+ read: getReadAccess({
50
+ adminRoles
51
+ }),
52
+ create: getCreateAccess({
53
+ adminRoles
54
+ }),
55
+ update: getUpdateAccess({
56
+ adminRoles
57
+ }),
58
+ delete: getDeleteAccess({
59
+ adminRoles
60
+ })
61
+ },
62
+ endpoints: [
63
+ ...collection.endpoints || [],
64
+ clerkWebhookEndpoint({
65
+ userSlug,
66
+ options
67
+ }),
68
+ syncClerkUsersEndpoint({
69
+ userCollectionSlug: userSlug
70
+ })
71
+ ],
72
+ hooks: {
73
+ afterLogout: [
74
+ async ()=>{
75
+ const cookieStore = await cookies();
76
+ // Get all cookies and delete any with __session or __clerk in their name
77
+ const allCookies = cookieStore.getAll();
78
+ allCookies.forEach((cookie)=>{
79
+ if (cookie.name.includes('__session') || cookie.name.includes('__clerk')) {
80
+ cookieStore.delete(cookie.name);
81
+ }
82
+ });
83
+ }
84
+ ]
85
+ }
86
+ };
87
+ if (options.users?.collectionOverrides) {
88
+ clerkUserCollection = options.users.collectionOverrides({
89
+ collection: clerkUserCollection
90
+ });
91
+ }
92
+ return clerkUserCollection;
93
+ }
94
+
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9jbGVyay9wbHVnaW4vY29sbGVjdGlvbnMvdXNlcnMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAncGF5bG9hZCdcbmltcG9ydCB0eXBlIHsgQ2xlcmtQbHVnaW5PcHRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMnXG5pbXBvcnQgeyBjbGVya0F1dGhTdHJhdGVneSB9IGZyb20gJy4uLy4uL2F1dGgtc3RyYXRlZ3knXG5pbXBvcnQgeyBnZXRDcmVhdGVBY2Nlc3MsIGdldERlbGV0ZUFjY2VzcywgZ2V0UmVhZEFjY2VzcywgZ2V0VXBkYXRlQWNjZXNzIH0gZnJvbSAnLi9hY2Nlc3MnXG5pbXBvcnQgeyBzeW5jQ2xlcmtVc2Vyc0VuZHBvaW50IH0gZnJvbSAnLi9lbmRwb2ludHMvc3luYy1mcm9tLWNsZXJrJ1xuaW1wb3J0IHsgY2xlcmtXZWJob29rRW5kcG9pbnQgfSBmcm9tICcuL2VuZHBvaW50cy93ZWJob29rL2luZGV4J1xuaW1wb3J0IHsgY2xlcmtVc2VyRmllbGRzIH0gZnJvbSAnLi9maWVsZHMnXG5pbXBvcnQgeyBjb29raWVzIH0gZnJvbSAnbmV4dC9oZWFkZXJzJ1xuXG5leHBvcnQgaW50ZXJmYWNlIFdpdGhDbGVya1VzZXJzQ29sbGVjdGlvbk9wdGlvbnMge1xuICBjb2xsZWN0aW9uPzogUGFydGlhbDxDb2xsZWN0aW9uQ29uZmlnPlxuICBvcHRpb25zOiBDbGVya1BsdWdpbk9wdGlvbnNcbiAgYXBpQmFzZVBhdGg/OiBzdHJpbmdcbiAgYWRtaW5CYXNlUGF0aD86IHN0cmluZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gd2l0aENsZXJrVXNlcnNDb2xsZWN0aW9uKHtcbiAgY29sbGVjdGlvbiA9IHsgc2x1ZzogJ3VzZXJzJyB9LFxuICBvcHRpb25zLFxuICBhcGlCYXNlUGF0aCA9ICcvYXBpJyxcbiAgYWRtaW5CYXNlUGF0aCA9ICcvYWRtaW4nLFxufTogV2l0aENsZXJrVXNlcnNDb2xsZWN0aW9uT3B0aW9ucyk6IENvbGxlY3Rpb25Db25maWcge1xuICBjb25zdCB1c2VyU2x1ZyA9IG9wdGlvbnMudXNlcnM/LnNsdWcgPz8gJ3VzZXJzJ1xuICBjb25zdCBhZG1pblJvbGVzID0gb3B0aW9ucy51c2Vycz8uYWRtaW5Sb2xlcyA/PyBbJ2FkbWluJ11cbiAgXG4gIGxldCBjbGVya1VzZXJDb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnID0ge1xuICAgIC4uLmNvbGxlY3Rpb24sXG4gICAgc2x1ZzogdXNlclNsdWcsXG4gICAgYWRtaW46IHtcbiAgICAgIHVzZUFzVGl0bGU6ICdlbWFpbCcsXG4gICAgICBkZWZhdWx0Q29sdW1uczogWydlbWFpbCcsICdjbGVya0lkJywgJ2ZpcnN0TmFtZScsICdsYXN0TmFtZSddLFxuICAgICAgaGlkZGVuOiBvcHRpb25zLnVzZXJzPy5oaWRkZW4gPz8gZmFsc2UsXG4gICAgICAuLi4oY29sbGVjdGlvbi5hZG1pbiB8fCB7fSksXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIERlc2NyaXB0aW9uOiB7XG4gICAgICAgICAgcGF0aDogJ3BheWxvYWQtYXV0aC9jbGVyay9hZG1pbi91aSNTeW5jQ2xlcmtVc2Vyc0J1dHRvbicsXG4gICAgICAgICAgY2xpZW50UHJvcHM6IHtcbiAgICAgICAgICAgIHVzZXJDb2xsZWN0aW9uU2x1ZzogdXNlclNsdWcsXG4gICAgICAgICAgICBhcGlCYXNlUGF0aCxcbiAgICAgICAgICAgIGFkbWluQmFzZVBhdGgsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgICBmaWVsZHM6IFtcbiAgICAgIC4uLihjb2xsZWN0aW9uLmZpZWxkcyB8fCBbXSksXG4gICAgICAuLi5jbGVya1VzZXJGaWVsZHMsXG4gICAgXSxcbiAgICBhdXRoOiB7XG4gICAgICAuLi4odHlwZW9mIGNvbGxlY3Rpb24/LmF1dGggPT09ICdvYmplY3QnID8gY29sbGVjdGlvbi5hdXRoIDoge30pLFxuICAgICAgc3RyYXRlZ2llczogW1xuICAgICAgICBjbGVya0F1dGhTdHJhdGVneSh1c2VyU2x1ZyksXG4gICAgICBdLFxuICAgIH0sXG4gICAgYWNjZXNzOiB7XG4gICAgICByZWFkOiBnZXRSZWFkQWNjZXNzKHsgYWRtaW5Sb2xlcyB9KSxcbiAgICAgIGNyZWF0ZTogZ2V0Q3JlYXRlQWNjZXNzKHsgYWRtaW5Sb2xlcyB9KSxcbiAgICAgIHVwZGF0ZTogZ2V0VXBkYXRlQWNjZXNzKHsgYWRtaW5Sb2xlcyB9KSxcbiAgICAgIGRlbGV0ZTogZ2V0RGVsZXRlQWNjZXNzKHsgYWRtaW5Sb2xlcyB9KSxcbiAgICB9LFxuICAgIGVuZHBvaW50czogW1xuICAgICAgLi4uKGNvbGxlY3Rpb24uZW5kcG9pbnRzIHx8IFtdKSxcbiAgICAgIGNsZXJrV2ViaG9va0VuZHBvaW50KHsgdXNlclNsdWcsIG9wdGlvbnMgfSksXG4gICAgICBzeW5jQ2xlcmtVc2Vyc0VuZHBvaW50KHsgdXNlckNvbGxlY3Rpb25TbHVnOiB1c2VyU2x1ZyB9KVxuICAgIF0sXG4gICAgaG9va3M6IHtcbiAgICAgIGFmdGVyTG9nb3V0OiBbXG4gICAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgICBjb25zdCBjb29raWVTdG9yZSA9IGF3YWl0IGNvb2tpZXMoKVxuICAgICAgICAgIFxuICAgICAgICAgIC8vIEdldCBhbGwgY29va2llcyBhbmQgZGVsZXRlIGFueSB3aXRoIF9fc2Vzc2lvbiBvciBfX2NsZXJrIGluIHRoZWlyIG5hbWVcbiAgICAgICAgICBjb25zdCBhbGxDb29raWVzID0gY29va2llU3RvcmUuZ2V0QWxsKClcbiAgICAgICAgICBhbGxDb29raWVzLmZvckVhY2goY29va2llID0+IHtcbiAgICAgICAgICAgIGlmIChjb29raWUubmFtZS5pbmNsdWRlcygnX19zZXNzaW9uJykgfHwgY29va2llLm5hbWUuaW5jbHVkZXMoJ19fY2xlcmsnKSkge1xuICAgICAgICAgICAgICBjb29raWVTdG9yZS5kZWxldGUoY29va2llLm5hbWUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH1cbiAgfVxuXG4gIGlmIChvcHRpb25zLnVzZXJzPy5jb2xsZWN0aW9uT3ZlcnJpZGVzKSB7XG4gICAgY2xlcmtVc2VyQ29sbGVjdGlvbiA9IG9wdGlvbnMudXNlcnMuY29sbGVjdGlvbk92ZXJyaWRlcyh7IFxuICAgICAgY29sbGVjdGlvbjogY2xlcmtVc2VyQ29sbGVjdGlvbiBcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIGNsZXJrVXNlckNvbGxlY3Rpb25cbn0gIl0sIm5hbWVzIjpbImNsZXJrQXV0aFN0cmF0ZWd5IiwiZ2V0Q3JlYXRlQWNjZXNzIiwiZ2V0RGVsZXRlQWNjZXNzIiwiZ2V0UmVhZEFjY2VzcyIsImdldFVwZGF0ZUFjY2VzcyIsInN5bmNDbGVya1VzZXJzRW5kcG9pbnQiLCJjbGVya1dlYmhvb2tFbmRwb2ludCIsImNsZXJrVXNlckZpZWxkcyIsImNvb2tpZXMiLCJ3aXRoQ2xlcmtVc2Vyc0NvbGxlY3Rpb24iLCJjb2xsZWN0aW9uIiwic2x1ZyIsIm9wdGlvbnMiLCJhcGlCYXNlUGF0aCIsImFkbWluQmFzZVBhdGgiLCJ1c2VyU2x1ZyIsInVzZXJzIiwiYWRtaW5Sb2xlcyIsImNsZXJrVXNlckNvbGxlY3Rpb24iLCJhZG1pbiIsInVzZUFzVGl0bGUiLCJkZWZhdWx0Q29sdW1ucyIsImhpZGRlbiIsImNvbXBvbmVudHMiLCJEZXNjcmlwdGlvbiIsInBhdGgiLCJjbGllbnRQcm9wcyIsInVzZXJDb2xsZWN0aW9uU2x1ZyIsImZpZWxkcyIsImF1dGgiLCJzdHJhdGVnaWVzIiwiYWNjZXNzIiwicmVhZCIsImNyZWF0ZSIsInVwZGF0ZSIsImRlbGV0ZSIsImVuZHBvaW50cyIsImhvb2tzIiwiYWZ0ZXJMb2dvdXQiLCJjb29raWVTdG9yZSIsImFsbENvb2tpZXMiLCJnZXRBbGwiLCJmb3JFYWNoIiwiY29va2llIiwibmFtZSIsImluY2x1ZGVzIiwiY29sbGVjdGlvbk92ZXJyaWRlcyJdLCJtYXBwaW5ncyI6IkFBRUEsU0FBU0EsaUJBQWlCLFFBQVEsc0JBQXFCO0FBQ3ZELFNBQVNDLGVBQWUsRUFBRUMsZUFBZSxFQUFFQyxhQUFhLEVBQUVDLGVBQWUsUUFBUSxXQUFVO0FBQzNGLFNBQVNDLHNCQUFzQixRQUFRLDhCQUE2QjtBQUNwRSxTQUFTQyxvQkFBb0IsUUFBUSw0QkFBMkI7QUFDaEUsU0FBU0MsZUFBZSxRQUFRLFdBQVU7QUFDMUMsU0FBU0MsT0FBTyxRQUFRLGVBQWM7QUFTdEMsT0FBTyxTQUFTQyx5QkFBeUIsRUFDdkNDLGFBQWE7SUFBRUMsTUFBTTtBQUFRLENBQUMsRUFDOUJDLE9BQU8sRUFDUEMsY0FBYyxNQUFNLEVBQ3BCQyxnQkFBZ0IsUUFBUSxFQUNRO0lBQ2hDLE1BQU1DLFdBQVdILFFBQVFJLEtBQUssRUFBRUwsUUFBUTtJQUN4QyxNQUFNTSxhQUFhTCxRQUFRSSxLQUFLLEVBQUVDLGNBQWM7UUFBQztLQUFRO0lBRXpELElBQUlDLHNCQUF3QztRQUMxQyxHQUFHUixVQUFVO1FBQ2JDLE1BQU1JO1FBQ05JLE9BQU87WUFDTEMsWUFBWTtZQUNaQyxnQkFBZ0I7Z0JBQUM7Z0JBQVM7Z0JBQVc7Z0JBQWE7YUFBVztZQUM3REMsUUFBUVYsUUFBUUksS0FBSyxFQUFFTSxVQUFVO1lBQ2pDLEdBQUlaLFdBQVdTLEtBQUssSUFBSSxDQUFDLENBQUM7WUFDMUJJLFlBQVk7Z0JBQ1ZDLGFBQWE7b0JBQ1hDLE1BQU07b0JBQ05DLGFBQWE7d0JBQ1hDLG9CQUFvQlo7d0JBQ3BCRjt3QkFDQUM7b0JBQ0Y7Z0JBQ0Y7WUFDRjtRQUNGO1FBQ0FjLFFBQVE7ZUFDRmxCLFdBQVdrQixNQUFNLElBQUksRUFBRTtlQUN4QnJCO1NBQ0o7UUFDRHNCLE1BQU07WUFDSixHQUFJLE9BQU9uQixZQUFZbUIsU0FBUyxXQUFXbkIsV0FBV21CLElBQUksR0FBRyxDQUFDLENBQUM7WUFDL0RDLFlBQVk7Z0JBQ1Y5QixrQkFBa0JlO2FBQ25CO1FBQ0g7UUFDQWdCLFFBQVE7WUFDTkMsTUFBTTdCLGNBQWM7Z0JBQUVjO1lBQVc7WUFDakNnQixRQUFRaEMsZ0JBQWdCO2dCQUFFZ0I7WUFBVztZQUNyQ2lCLFFBQVE5QixnQkFBZ0I7Z0JBQUVhO1lBQVc7WUFDckNrQixRQUFRakMsZ0JBQWdCO2dCQUFFZTtZQUFXO1FBQ3ZDO1FBQ0FtQixXQUFXO2VBQ0wxQixXQUFXMEIsU0FBUyxJQUFJLEVBQUU7WUFDOUI5QixxQkFBcUI7Z0JBQUVTO2dCQUFVSDtZQUFRO1lBQ3pDUCx1QkFBdUI7Z0JBQUVzQixvQkFBb0JaO1lBQVM7U0FDdkQ7UUFDRHNCLE9BQU87WUFDTEMsYUFBYTtnQkFDWDtvQkFDRSxNQUFNQyxjQUFjLE1BQU0vQjtvQkFFMUIseUVBQXlFO29CQUN6RSxNQUFNZ0MsYUFBYUQsWUFBWUUsTUFBTTtvQkFDckNELFdBQVdFLE9BQU8sQ0FBQ0MsQ0FBQUE7d0JBQ2pCLElBQUlBLE9BQU9DLElBQUksQ0FBQ0MsUUFBUSxDQUFDLGdCQUFnQkYsT0FBT0MsSUFBSSxDQUFDQyxRQUFRLENBQUMsWUFBWTs0QkFDeEVOLFlBQVlKLE1BQU0sQ0FBQ1EsT0FBT0MsSUFBSTt3QkFDaEM7b0JBQ0Y7Z0JBQ0Y7YUFDRDtRQUNIO0lBQ0Y7SUFFQSxJQUFJaEMsUUFBUUksS0FBSyxFQUFFOEIscUJBQXFCO1FBQ3RDNUIsc0JBQXNCTixRQUFRSSxLQUFLLENBQUM4QixtQkFBbUIsQ0FBQztZQUN0RHBDLFlBQVlRO1FBQ2Q7SUFDRjtJQUVBLE9BQU9BO0FBQ1QifQ==
@@ -0,0 +1,4 @@
1
+ export declare function AfterLoginForm({ redirectOnLoginTo }: {
2
+ redirectOnLoginTo: string;
3
+ }): import("react").JSX.Element;
4
+ //# sourceMappingURL=after-login-form.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"after-login-form.d.ts","sourceRoot":"","sources":["../../../../src/clerk/plugin/components/after-login-form.tsx"],"names":[],"mappings":"AAMA,wBAAgB,cAAc,CAAC,EAAE,iBAAiB,EAAE,EAAE;IAAE,iBAAiB,EAAE,MAAM,CAAA;CAAE,+BAmElF"}
@@ -0,0 +1,65 @@
1
+ 'use client';
2
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useEffect, useState } from 'react';
4
+ import { useRouter } from 'next/navigation';
5
+ import { loadClerkInstance } from '../../utils/load-clerk-instance';
6
+ export function AfterLoginForm({ redirectOnLoginTo }) {
7
+ const router = useRouter();
8
+ const [isLoading, setIsLoading] = useState(false);
9
+ const [loginSuccessful, setLoginSuccessful] = useState(false);
10
+ useEffect(()=>{
11
+ loadClerkInstance().catch((err)=>console.error('Error loading clerk:', err));
12
+ }, []);
13
+ useEffect(()=>{
14
+ const form = document.querySelector('form.login__form');
15
+ if (!form) return;
16
+ const onSubmit = async (event)=>{
17
+ event.preventDefault();
18
+ setIsLoading(true);
19
+ try {
20
+ const emailInput = form.querySelector('input[name="email"]');
21
+ if (!emailInput) throw new Error('Email input not found');
22
+ const passwordInput = form.querySelector('input[name="password"]');
23
+ if (!passwordInput) throw new Error('Password input not found');
24
+ const email = emailInput.value;
25
+ if (!email) throw new Error('Email is required');
26
+ const password = passwordInput.value;
27
+ if (!password) throw new Error('Password is required');
28
+ const clerk = await loadClerkInstance();
29
+ if (!clerk) return;
30
+ const signInAttempt = await clerk.client?.signIn.create({
31
+ identifier: email,
32
+ password,
33
+ strategy: 'password'
34
+ });
35
+ if (signInAttempt?.status !== 'complete') {
36
+ console.error(JSON.stringify(signInAttempt, null, 2));
37
+ return;
38
+ }
39
+ setLoginSuccessful(true);
40
+ document.querySelector('.payload-toast-item')?.remove();
41
+ await clerk.setActive({
42
+ session: signInAttempt.createdSessionId
43
+ });
44
+ router.push(redirectOnLoginTo ?? '/admin');
45
+ } catch (error) {
46
+ console.log('Error logging in:', error);
47
+ } finally{
48
+ setIsLoading(false);
49
+ }
50
+ };
51
+ form.addEventListener('submit', onSubmit);
52
+ return ()=>form.removeEventListener('submit', onSubmit);
53
+ }, []);
54
+ return /*#__PURE__*/ _jsx(_Fragment, {
55
+ children: /*#__PURE__*/ _jsx("style", {
56
+ children: `
57
+ .payload-toast-item {
58
+ opacity: ${isLoading || loginSuccessful ? '0' : '1'} !important;
59
+ }
60
+ `
61
+ })
62
+ });
63
+ }
64
+
65
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGVyay9wbHVnaW4vY29tcG9uZW50cy9hZnRlci1sb2dpbi1mb3JtLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVJvdXRlciB9IGZyb20gJ25leHQvbmF2aWdhdGlvbic7XG5pbXBvcnQgeyBsb2FkQ2xlcmtJbnN0YW5jZSB9IGZyb20gJy4uLy4uL3V0aWxzL2xvYWQtY2xlcmstaW5zdGFuY2UnO1xuXG5leHBvcnQgZnVuY3Rpb24gQWZ0ZXJMb2dpbkZvcm0oeyByZWRpcmVjdE9uTG9naW5UbyB9OiB7IHJlZGlyZWN0T25Mb2dpblRvOiBzdHJpbmcgfSkge1xuICBjb25zdCByb3V0ZXIgPSB1c2VSb3V0ZXIoKTtcbiAgY29uc3QgW2lzTG9hZGluZywgc2V0SXNMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2xvZ2luU3VjY2Vzc2Z1bCwgc2V0TG9naW5TdWNjZXNzZnVsXSA9IHVzZVN0YXRlKGZhbHNlKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxvYWRDbGVya0luc3RhbmNlKCkuY2F0Y2goKGVycjogYW55KSA9PiBjb25zb2xlLmVycm9yKCdFcnJvciBsb2FkaW5nIGNsZXJrOicsIGVycikpO1xuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmb3JtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignZm9ybS5sb2dpbl9fZm9ybScpO1xuICAgIGlmICghZm9ybSkgcmV0dXJuO1xuXG4gICAgY29uc3Qgb25TdWJtaXQgPSBhc3luYyAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZW1haWxJbnB1dCA9IGZvcm0ucXVlcnlTZWxlY3RvcignaW5wdXRbbmFtZT1cImVtYWlsXCJdJykgYXMgSFRNTElucHV0RWxlbWVudDtcbiAgICAgICAgaWYgKCFlbWFpbElucHV0KSB0aHJvdyBuZXcgRXJyb3IoJ0VtYWlsIGlucHV0IG5vdCBmb3VuZCcpO1xuXG4gICAgICAgIGNvbnN0IHBhc3N3b3JkSW5wdXQgPSBmb3JtLnF1ZXJ5U2VsZWN0b3IoJ2lucHV0W25hbWU9XCJwYXNzd29yZFwiXScpIGFzIEhUTUxJbnB1dEVsZW1lbnQ7XG4gICAgICAgIGlmICghcGFzc3dvcmRJbnB1dCkgdGhyb3cgbmV3IEVycm9yKCdQYXNzd29yZCBpbnB1dCBub3QgZm91bmQnKTtcblxuICAgICAgICBjb25zdCBlbWFpbCA9IGVtYWlsSW5wdXQudmFsdWU7XG4gICAgICAgIGlmICghZW1haWwpIHRocm93IG5ldyBFcnJvcignRW1haWwgaXMgcmVxdWlyZWQnKTtcblxuICAgICAgICBjb25zdCBwYXNzd29yZCA9IHBhc3N3b3JkSW5wdXQudmFsdWU7XG4gICAgICAgIGlmICghcGFzc3dvcmQpIHRocm93IG5ldyBFcnJvcignUGFzc3dvcmQgaXMgcmVxdWlyZWQnKTtcblxuICAgICAgICBjb25zdCBjbGVyayA9IGF3YWl0IGxvYWRDbGVya0luc3RhbmNlKCk7XG4gICAgICAgIGlmICghY2xlcmspIHJldHVybjtcbiAgICAgICAgY29uc3Qgc2lnbkluQXR0ZW1wdCA9IGF3YWl0IGNsZXJrLmNsaWVudD8uc2lnbkluLmNyZWF0ZSh7XG4gICAgICAgICAgaWRlbnRpZmllcjogZW1haWwsXG4gICAgICAgICAgcGFzc3dvcmQsXG4gICAgICAgICAgc3RyYXRlZ3k6ICdwYXNzd29yZCcsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChzaWduSW5BdHRlbXB0Py5zdGF0dXMgIT09ICdjb21wbGV0ZScpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KHNpZ25JbkF0dGVtcHQsIG51bGwsIDIpKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBzZXRMb2dpblN1Y2Nlc3NmdWwodHJ1ZSk7XG4gICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wYXlsb2FkLXRvYXN0LWl0ZW0nKT8ucmVtb3ZlKCk7XG4gICAgICAgIGF3YWl0IGNsZXJrLnNldEFjdGl2ZSh7IHNlc3Npb246IHNpZ25JbkF0dGVtcHQuY3JlYXRlZFNlc3Npb25JZCB9KTtcbiAgICAgICAgcm91dGVyLnB1c2gocmVkaXJlY3RPbkxvZ2luVG8gPz8gJy9hZG1pbicpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ0Vycm9yIGxvZ2dpbmcgaW46JywgZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9ybS5hZGRFdmVudExpc3RlbmVyKCdzdWJtaXQnLCBvblN1Ym1pdCk7XG4gICAgcmV0dXJuICgpID0+IGZvcm0ucmVtb3ZlRXZlbnRMaXN0ZW5lcignc3VibWl0Jywgb25TdWJtaXQpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPHN0eWxlPntgXG4gICAgICAgIC5wYXlsb2FkLXRvYXN0LWl0ZW0ge1xuICAgICAgICAgIG9wYWNpdHk6ICR7aXNMb2FkaW5nIHx8IGxvZ2luU3VjY2Vzc2Z1bCA/ICcwJyA6ICcxJ30gIWltcG9ydGFudDtcbiAgICAgICAgfVxuICAgICAgYH08L3N0eWxlPlxuICAgIDwvPlxuICApO1xufVxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlUm91dGVyIiwibG9hZENsZXJrSW5zdGFuY2UiLCJBZnRlckxvZ2luRm9ybSIsInJlZGlyZWN0T25Mb2dpblRvIiwicm91dGVyIiwiaXNMb2FkaW5nIiwic2V0SXNMb2FkaW5nIiwibG9naW5TdWNjZXNzZnVsIiwic2V0TG9naW5TdWNjZXNzZnVsIiwiY2F0Y2giLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJmb3JtIiwiZG9jdW1lbnQiLCJxdWVyeVNlbGVjdG9yIiwib25TdWJtaXQiLCJldmVudCIsInByZXZlbnREZWZhdWx0IiwiZW1haWxJbnB1dCIsIkVycm9yIiwicGFzc3dvcmRJbnB1dCIsImVtYWlsIiwidmFsdWUiLCJwYXNzd29yZCIsImNsZXJrIiwic2lnbkluQXR0ZW1wdCIsImNsaWVudCIsInNpZ25JbiIsImNyZWF0ZSIsImlkZW50aWZpZXIiLCJzdHJhdGVneSIsInN0YXR1cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZW1vdmUiLCJzZXRBY3RpdmUiLCJzZXNzaW9uIiwiY3JlYXRlZFNlc3Npb25JZCIsInB1c2giLCJsb2ciLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInN0eWxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxTQUFTQSxTQUFTLEVBQUVDLFFBQVEsUUFBUSxRQUFRO0FBQzVDLFNBQVNDLFNBQVMsUUFBUSxrQkFBa0I7QUFDNUMsU0FBU0MsaUJBQWlCLFFBQVEsa0NBQWtDO0FBRXBFLE9BQU8sU0FBU0MsZUFBZSxFQUFFQyxpQkFBaUIsRUFBaUM7SUFDakYsTUFBTUMsU0FBU0o7SUFDZixNQUFNLENBQUNLLFdBQVdDLGFBQWEsR0FBR1AsU0FBUztJQUMzQyxNQUFNLENBQUNRLGlCQUFpQkMsbUJBQW1CLEdBQUdULFNBQVM7SUFFdkRELFVBQVU7UUFDUkcsb0JBQW9CUSxLQUFLLENBQUMsQ0FBQ0MsTUFBYUMsUUFBUUMsS0FBSyxDQUFDLHdCQUF3QkY7SUFDaEYsR0FBRyxFQUFFO0lBRUxaLFVBQVU7UUFDUixNQUFNZSxPQUFPQyxTQUFTQyxhQUFhLENBQUM7UUFDcEMsSUFBSSxDQUFDRixNQUFNO1FBRVgsTUFBTUcsV0FBVyxPQUFPQztZQUN0QkEsTUFBTUMsY0FBYztZQUNwQlosYUFBYTtZQUViLElBQUk7Z0JBQ0YsTUFBTWEsYUFBYU4sS0FBS0UsYUFBYSxDQUFDO2dCQUN0QyxJQUFJLENBQUNJLFlBQVksTUFBTSxJQUFJQyxNQUFNO2dCQUVqQyxNQUFNQyxnQkFBZ0JSLEtBQUtFLGFBQWEsQ0FBQztnQkFDekMsSUFBSSxDQUFDTSxlQUFlLE1BQU0sSUFBSUQsTUFBTTtnQkFFcEMsTUFBTUUsUUFBUUgsV0FBV0ksS0FBSztnQkFDOUIsSUFBSSxDQUFDRCxPQUFPLE1BQU0sSUFBSUYsTUFBTTtnQkFFNUIsTUFBTUksV0FBV0gsY0FBY0UsS0FBSztnQkFDcEMsSUFBSSxDQUFDQyxVQUFVLE1BQU0sSUFBSUosTUFBTTtnQkFFL0IsTUFBTUssUUFBUSxNQUFNeEI7Z0JBQ3BCLElBQUksQ0FBQ3dCLE9BQU87Z0JBQ1osTUFBTUMsZ0JBQWdCLE1BQU1ELE1BQU1FLE1BQU0sRUFBRUMsT0FBT0MsT0FBTztvQkFDdERDLFlBQVlSO29CQUNaRTtvQkFDQU8sVUFBVTtnQkFDWjtnQkFFQSxJQUFJTCxlQUFlTSxXQUFXLFlBQVk7b0JBQ3hDckIsUUFBUUMsS0FBSyxDQUFDcUIsS0FBS0MsU0FBUyxDQUFDUixlQUFlLE1BQU07b0JBQ2xEO2dCQUNGO2dCQUVBbEIsbUJBQW1CO2dCQUNuQk0sU0FBU0MsYUFBYSxDQUFDLHdCQUF3Qm9CO2dCQUMvQyxNQUFNVixNQUFNVyxTQUFTLENBQUM7b0JBQUVDLFNBQVNYLGNBQWNZLGdCQUFnQjtnQkFBQztnQkFDaEVsQyxPQUFPbUMsSUFBSSxDQUFDcEMscUJBQXFCO1lBQ25DLEVBQUUsT0FBT1MsT0FBTztnQkFDZEQsUUFBUTZCLEdBQUcsQ0FBQyxxQkFBcUI1QjtZQUNuQyxTQUFVO2dCQUNSTixhQUFhO1lBQ2Y7UUFDRjtRQUVBTyxLQUFLNEIsZ0JBQWdCLENBQUMsVUFBVXpCO1FBQ2hDLE9BQU8sSUFBTUgsS0FBSzZCLG1CQUFtQixDQUFDLFVBQVUxQjtJQUNsRCxHQUFHLEVBQUU7SUFFTCxxQkFDRTtrQkFDRSxjQUFBLEtBQUMyQjtzQkFBTyxDQUFDOzttQkFFSSxFQUFFdEMsYUFBYUUsa0JBQWtCLE1BQU0sSUFBSTs7TUFFeEQsQ0FBQzs7O0FBR1AifQ==
@@ -0,0 +1,2 @@
1
+ export declare const LogoutButton: () => import("react").JSX.Element;
2
+ //# sourceMappingURL=logout-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logout-button.d.ts","sourceRoot":"","sources":["../../../../src/clerk/plugin/components/logout-button.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,YAAY,mCAkDxB,CAAC"}
@@ -0,0 +1,49 @@
1
+ "use client";
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { LogOutIcon, useAuth, useTranslation } from "@payloadcms/ui";
4
+ import { useEffect, useState } from "react";
5
+ import { loadClerkInstance } from "../../utils/load-clerk-instance";
6
+ export const LogoutButton = ()=>{
7
+ const [clerkInstance, setClerkInstance] = useState(undefined);
8
+ const { logOut } = useAuth();
9
+ const { t } = useTranslation();
10
+ useEffect(()=>{
11
+ loadClerkInstance().then((instance)=>{
12
+ setClerkInstance(instance);
13
+ }).catch((err)=>console.error("Error loading clerk:", err));
14
+ }, []);
15
+ return /*#__PURE__*/ _jsx("button", {
16
+ "aria-label": t("authentication:logOut"),
17
+ className: `nav__log-out`,
18
+ style: {
19
+ background: "transparent",
20
+ border: "1px solid var(--theme-elevation-100)",
21
+ width: "34px",
22
+ height: "34px",
23
+ borderRadius: "9999px",
24
+ display: "flex",
25
+ alignItems: "center",
26
+ justifyContent: "center",
27
+ WebkitAppearance: "none",
28
+ cursor: "pointer",
29
+ padding: "7px"
30
+ },
31
+ onClick: async ()=>{
32
+ if (!clerkInstance) return;
33
+ try {
34
+ if (clerkInstance.user) {
35
+ await clerkInstance.signOut();
36
+ }
37
+ if (logOut) {
38
+ await logOut();
39
+ }
40
+ window.location.reload();
41
+ } catch (err) {
42
+ console.error("Error logging out:", err);
43
+ }
44
+ },
45
+ children: /*#__PURE__*/ _jsx(LogOutIcon, {})
46
+ });
47
+ };
48
+
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGVyay9wbHVnaW4vY29tcG9uZW50cy9sb2dvdXQtYnV0dG9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBDbGVyayB9IGZyb20gXCJAY2xlcmsvY2xlcmstanNcIjtcbmltcG9ydCB7IExvZ091dEljb24sIHVzZUF1dGgsIHVzZVRyYW5zbGF0aW9uIH0gZnJvbSBcIkBwYXlsb2FkY21zL3VpXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBsb2FkQ2xlcmtJbnN0YW5jZSB9IGZyb20gXCIuLi8uLi91dGlscy9sb2FkLWNsZXJrLWluc3RhbmNlXCI7XG5cbmV4cG9ydCBjb25zdCBMb2dvdXRCdXR0b24gPSAoKSA9PiB7XG4gIGNvbnN0IFtjbGVya0luc3RhbmNlLCBzZXRDbGVya0luc3RhbmNlXSA9IHVzZVN0YXRlPENsZXJrIHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWRcbiAgKTtcbiAgY29uc3QgeyBsb2dPdXQgfSA9IHVzZUF1dGgoKTtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbG9hZENsZXJrSW5zdGFuY2UoKVxuICAgICAgLnRoZW4oKGluc3RhbmNlKSA9PiB7XG4gICAgICAgIHNldENsZXJrSW5zdGFuY2UoaW5zdGFuY2UpO1xuICAgICAgfSlcbiAgICAgIC5jYXRjaCgoZXJyOiBhbnkpID0+IGNvbnNvbGUuZXJyb3IoXCJFcnJvciBsb2FkaW5nIGNsZXJrOlwiLCBlcnIpKTtcbiAgfSwgW10pO1xuXG4gIHJldHVybiAoXG4gICAgPGJ1dHRvblxuICAgICAgYXJpYS1sYWJlbD17dChcImF1dGhlbnRpY2F0aW9uOmxvZ091dFwiKX1cbiAgICAgIGNsYXNzTmFtZT17YG5hdl9fbG9nLW91dGB9XG4gICAgICBzdHlsZT17e1xuICAgICAgICBiYWNrZ3JvdW5kOiBcInRyYW5zcGFyZW50XCIsXG4gICAgICAgIGJvcmRlcjogXCIxcHggc29saWQgdmFyKC0tdGhlbWUtZWxldmF0aW9uLTEwMClcIixcbiAgICAgICAgd2lkdGg6IFwiMzRweFwiLFxuICAgICAgICBoZWlnaHQ6IFwiMzRweFwiLFxuICAgICAgICBib3JkZXJSYWRpdXM6IFwiOTk5OXB4XCIsXG4gICAgICAgIGRpc3BsYXk6IFwiZmxleFwiLFxuICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgV2Via2l0QXBwZWFyYW5jZTogXCJub25lXCIsXG4gICAgICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gICAgICAgIHBhZGRpbmc6IFwiN3B4XCIsXG4gICAgICB9fVxuICAgICAgb25DbGljaz17YXN5bmMgKCkgPT4ge1xuICAgICAgICBpZiAoIWNsZXJrSW5zdGFuY2UpIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoY2xlcmtJbnN0YW5jZS51c2VyKSB7XG4gICAgICAgICAgICBhd2FpdCBjbGVya0luc3RhbmNlLnNpZ25PdXQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGxvZ091dCkge1xuICAgICAgICAgICAgYXdhaXQgbG9nT3V0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZWxvYWQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIkVycm9yIGxvZ2dpbmcgb3V0OlwiLCBlcnIpO1xuICAgICAgICB9XG4gICAgICB9fVxuICAgID5cbiAgICAgIDxMb2dPdXRJY29uIC8+XG4gICAgPC9idXR0b24+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbIkxvZ091dEljb24iLCJ1c2VBdXRoIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsImxvYWRDbGVya0luc3RhbmNlIiwiTG9nb3V0QnV0dG9uIiwiY2xlcmtJbnN0YW5jZSIsInNldENsZXJrSW5zdGFuY2UiLCJ1bmRlZmluZWQiLCJsb2dPdXQiLCJ0IiwidGhlbiIsImluc3RhbmNlIiwiY2F0Y2giLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJidXR0b24iLCJhcmlhLWxhYmVsIiwiY2xhc3NOYW1lIiwic3R5bGUiLCJiYWNrZ3JvdW5kIiwiYm9yZGVyIiwid2lkdGgiLCJoZWlnaHQiLCJib3JkZXJSYWRpdXMiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImp1c3RpZnlDb250ZW50IiwiV2Via2l0QXBwZWFyYW5jZSIsImN1cnNvciIsInBhZGRpbmciLCJvbkNsaWNrIiwidXNlciIsInNpZ25PdXQiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsInJlbG9hZCJdLCJtYXBwaW5ncyI6IkFBQUE7O0FBR0EsU0FBU0EsVUFBVSxFQUFFQyxPQUFPLEVBQUVDLGNBQWMsUUFBUSxpQkFBaUI7QUFDckUsU0FBU0MsU0FBUyxFQUFFQyxRQUFRLFFBQVEsUUFBUTtBQUM1QyxTQUFTQyxpQkFBaUIsUUFBUSxrQ0FBa0M7QUFFcEUsT0FBTyxNQUFNQyxlQUFlO0lBQzFCLE1BQU0sQ0FBQ0MsZUFBZUMsaUJBQWlCLEdBQUdKLFNBQ3hDSztJQUVGLE1BQU0sRUFBRUMsTUFBTSxFQUFFLEdBQUdUO0lBQ25CLE1BQU0sRUFBRVUsQ0FBQyxFQUFFLEdBQUdUO0lBRWRDLFVBQVU7UUFDUkUsb0JBQ0dPLElBQUksQ0FBQyxDQUFDQztZQUNMTCxpQkFBaUJLO1FBQ25CLEdBQ0NDLEtBQUssQ0FBQyxDQUFDQyxNQUFhQyxRQUFRQyxLQUFLLENBQUMsd0JBQXdCRjtJQUMvRCxHQUFHLEVBQUU7SUFFTCxxQkFDRSxLQUFDRztRQUNDQyxjQUFZUixFQUFFO1FBQ2RTLFdBQVcsQ0FBQyxZQUFZLENBQUM7UUFDekJDLE9BQU87WUFDTEMsWUFBWTtZQUNaQyxRQUFRO1lBQ1JDLE9BQU87WUFDUEMsUUFBUTtZQUNSQyxjQUFjO1lBQ2RDLFNBQVM7WUFDVEMsWUFBWTtZQUNaQyxnQkFBZ0I7WUFDaEJDLGtCQUFrQjtZQUNsQkMsUUFBUTtZQUNSQyxTQUFTO1FBQ1g7UUFDQUMsU0FBUztZQUNQLElBQUksQ0FBQzFCLGVBQWU7WUFDcEIsSUFBSTtnQkFDRixJQUFJQSxjQUFjMkIsSUFBSSxFQUFFO29CQUN0QixNQUFNM0IsY0FBYzRCLE9BQU87Z0JBQzdCO2dCQUNBLElBQUl6QixRQUFRO29CQUNWLE1BQU1BO2dCQUNSO2dCQUNBMEIsT0FBT0MsUUFBUSxDQUFDQyxNQUFNO1lBQ3hCLEVBQUUsT0FBT3ZCLEtBQUs7Z0JBQ1pDLFFBQVFDLEtBQUssQ0FBQyxzQkFBc0JGO1lBQ3RDO1FBQ0Y7a0JBRUEsY0FBQSxLQUFDZjs7QUFHUCxFQUFFIn0=
@@ -0,0 +1,6 @@
1
+ export declare const SyncClerkUsersButton: ({ userCollectionSlug, apiBasePath, adminBasePath, }: {
2
+ userCollectionSlug: string;
3
+ apiBasePath: string;
4
+ adminBasePath: string;
5
+ }) => import("react").JSX.Element;
6
+ //# sourceMappingURL=sync-clerk-users-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync-clerk-users-button.d.ts","sourceRoot":"","sources":["../../../../src/clerk/plugin/components/sync-clerk-users-button.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,oBAAoB,GAAI,qDAIlC;IACD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;CACvB,gCAwEA,CAAC"}
@@ -0,0 +1,75 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { Button, toast } from "@payloadcms/ui";
4
+ import { useState } from "react";
5
+ import { usePathname } from "next/navigation";
6
+ export const SyncClerkUsersButton = ({ userCollectionSlug, apiBasePath, adminBasePath })=>{
7
+ const [isPending, setIsPending] = useState(false);
8
+ const path = usePathname();
9
+ if (`${adminBasePath}/collections/${userCollectionSlug}` !== path) return null;
10
+ const handleSync = async ()=>{
11
+ setIsPending(true);
12
+ try {
13
+ const response = await fetch(`${apiBasePath}/${userCollectionSlug}/sync-from-clerk`, {
14
+ method: "POST",
15
+ headers: {
16
+ "Content-Type": "application/json"
17
+ }
18
+ });
19
+ const result = await response.json();
20
+ if (result.success) {
21
+ toast.success(result.message || `Successfully synced users from Clerk`, {
22
+ duration: 5000
23
+ });
24
+ } else {
25
+ toast.error(result.error || "Failed to sync users from Clerk", {
26
+ duration: 5000
27
+ });
28
+ }
29
+ } catch (error) {
30
+ toast.error(error instanceof Error ? error.message : "Error syncing users from Clerk", {
31
+ duration: 5000
32
+ });
33
+ console.error("Error syncing users:", error);
34
+ } finally{
35
+ setIsPending(false);
36
+ }
37
+ };
38
+ return /*#__PURE__*/ _jsxs(_Fragment, {
39
+ children: [
40
+ /*#__PURE__*/ _jsx(Button, {
41
+ className: "sync-clerk-users-button",
42
+ disabled: isPending,
43
+ onClick: handleSync,
44
+ children: isPending ? "Syncing..." : "Sync Users"
45
+ }),
46
+ /*#__PURE__*/ _jsx("style", {
47
+ children: `
48
+ .list-header:has(.collection-list__sub-header .sync-clerk-users-button) {
49
+ display: flex;
50
+ align-items: center;
51
+ }
52
+
53
+ .list-header:has(.collection-list__sub-header .sync-clerk-users-button) .collection-list__sub-header {
54
+ margin-left: auto;
55
+ display: flex;
56
+ justify-content: flex-start;
57
+ flex-basis: 100%;
58
+ }
59
+ .list-header:has(.collection-list__sub-header .sync-clerk-users-button) .btn {
60
+ flex-shrink: 0;
61
+ margin-bottom: 0;
62
+ }
63
+ @media (min-width: 768px) {
64
+ .list-header:has(.collection-list__sub-header .sync-clerk-users-button) .collection-list__sub-header {
65
+ flex-basis: 70%;
66
+ justify-content: flex-end;
67
+ }
68
+ }
69
+ `
70
+ })
71
+ ]
72
+ });
73
+ };
74
+
75
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jbGVyay9wbHVnaW4vY29tcG9uZW50cy9zeW5jLWNsZXJrLXVzZXJzLWJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IEJ1dHRvbiwgdG9hc3QgfSBmcm9tIFwiQHBheWxvYWRjbXMvdWlcIjtcbmltcG9ydCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyB1c2VQYXRobmFtZSB9IGZyb20gXCJuZXh0L25hdmlnYXRpb25cIjtcbmltcG9ydCB0eXBlIHsgU3luY0NsZXJrVXNlcnNSZXNwb25zZSB9IGZyb20gXCIuLi9jb2xsZWN0aW9ucy91c2Vycy9lbmRwb2ludHMvc3luYy1mcm9tLWNsZXJrXCI7XG5cbmV4cG9ydCBjb25zdCBTeW5jQ2xlcmtVc2Vyc0J1dHRvbiA9ICh7XG4gIHVzZXJDb2xsZWN0aW9uU2x1ZyxcbiAgYXBpQmFzZVBhdGgsXG4gIGFkbWluQmFzZVBhdGgsXG59OiB7XG4gIHVzZXJDb2xsZWN0aW9uU2x1Zzogc3RyaW5nO1xuICBhcGlCYXNlUGF0aDogc3RyaW5nO1xuICBhZG1pbkJhc2VQYXRoOiBzdHJpbmc7XG59KSA9PiB7XG4gIGNvbnN0IFtpc1BlbmRpbmcsIHNldElzUGVuZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHBhdGggPSB1c2VQYXRobmFtZSgpO1xuXG4gIGlmIChgJHthZG1pbkJhc2VQYXRofS9jb2xsZWN0aW9ucy8ke3VzZXJDb2xsZWN0aW9uU2x1Z31gICE9PSBwYXRoKSByZXR1cm4gbnVsbDtcblxuICBjb25zdCBoYW5kbGVTeW5jID0gYXN5bmMgKCkgPT4ge1xuICAgIHNldElzUGVuZGluZyh0cnVlKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoKFxuICAgICAgICBgJHthcGlCYXNlUGF0aH0vJHt1c2VyQ29sbGVjdGlvblNsdWd9L3N5bmMtZnJvbS1jbGVya2AsXG4gICAgICAgIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHJlc3VsdDogU3luY0NsZXJrVXNlcnNSZXNwb25zZSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcblxuICAgICAgaWYgKHJlc3VsdC5zdWNjZXNzKSB7XG4gICAgICAgIHRvYXN0LnN1Y2Nlc3MocmVzdWx0Lm1lc3NhZ2UgfHwgYFN1Y2Nlc3NmdWxseSBzeW5jZWQgdXNlcnMgZnJvbSBDbGVya2AsIHsgZHVyYXRpb246IDUwMDAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2FzdC5lcnJvcihyZXN1bHQuZXJyb3IgfHwgXCJGYWlsZWQgdG8gc3luYyB1c2VycyBmcm9tIENsZXJrXCIsIHsgZHVyYXRpb246IDUwMDAgfSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRvYXN0LmVycm9yKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogXCJFcnJvciBzeW5jaW5nIHVzZXJzIGZyb20gQ2xlcmtcIiwgeyBkdXJhdGlvbjogNTAwMCB9KTtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCJFcnJvciBzeW5jaW5nIHVzZXJzOlwiLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzUGVuZGluZyhmYWxzZSk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxCdXR0b25cbiAgICAgICAgY2xhc3NOYW1lPVwic3luYy1jbGVyay11c2Vycy1idXR0b25cIlxuICAgICAgICBkaXNhYmxlZD17aXNQZW5kaW5nfVxuICAgICAgICBvbkNsaWNrPXtoYW5kbGVTeW5jfVxuICAgICAgPlxuICAgICAgICB7aXNQZW5kaW5nID8gXCJTeW5jaW5nLi4uXCIgOiBcIlN5bmMgVXNlcnNcIn1cbiAgICAgIDwvQnV0dG9uPlxuXG4gICAgICA8c3R5bGU+XG4gICAgICAgIHtgXG4gICAgICAgIC5saXN0LWhlYWRlcjpoYXMoLmNvbGxlY3Rpb24tbGlzdF9fc3ViLWhlYWRlciAuc3luYy1jbGVyay11c2Vycy1idXR0b24pIHtcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgICAgIH1cblxuICAgICAgICAubGlzdC1oZWFkZXI6aGFzKC5jb2xsZWN0aW9uLWxpc3RfX3N1Yi1oZWFkZXIgLnN5bmMtY2xlcmstdXNlcnMtYnV0dG9uKSAuY29sbGVjdGlvbi1saXN0X19zdWItaGVhZGVyIHtcbiAgICAgICAgICBtYXJnaW4tbGVmdDogYXV0bztcbiAgICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbiAgICAgICAgICBmbGV4LWJhc2lzOiAxMDAlO1xuICAgICAgICB9XG4gICAgICAgIC5saXN0LWhlYWRlcjpoYXMoLmNvbGxlY3Rpb24tbGlzdF9fc3ViLWhlYWRlciAuc3luYy1jbGVyay11c2Vycy1idXR0b24pIC5idG4ge1xuICAgICAgICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICAgIH1cbiAgICAgICAgQG1lZGlhIChtaW4td2lkdGg6IDc2OHB4KSB7XG4gICAgICAgICAgLmxpc3QtaGVhZGVyOmhhcyguY29sbGVjdGlvbi1saXN0X19zdWItaGVhZGVyIC5zeW5jLWNsZXJrLXVzZXJzLWJ1dHRvbikgLmNvbGxlY3Rpb24tbGlzdF9fc3ViLWhlYWRlciB7XG4gICAgICAgICAgICBmbGV4LWJhc2lzOiA3MCU7XG4gICAgICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBgfVxuICAgICAgPC9zdHlsZT5cbiAgICA8Lz5cbiAgKTtcbn07XG4iXSwibmFtZXMiOlsiQnV0dG9uIiwidG9hc3QiLCJ1c2VTdGF0ZSIsInVzZVBhdGhuYW1lIiwiU3luY0NsZXJrVXNlcnNCdXR0b24iLCJ1c2VyQ29sbGVjdGlvblNsdWciLCJhcGlCYXNlUGF0aCIsImFkbWluQmFzZVBhdGgiLCJpc1BlbmRpbmciLCJzZXRJc1BlbmRpbmciLCJwYXRoIiwiaGFuZGxlU3luYyIsInJlc3BvbnNlIiwiZmV0Y2giLCJtZXRob2QiLCJoZWFkZXJzIiwicmVzdWx0IiwianNvbiIsInN1Y2Nlc3MiLCJtZXNzYWdlIiwiZHVyYXRpb24iLCJlcnJvciIsIkVycm9yIiwiY29uc29sZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwib25DbGljayIsInN0eWxlIl0sIm1hcHBpbmdzIjoiQUFBQTs7QUFFQSxTQUFTQSxNQUFNLEVBQUVDLEtBQUssUUFBUSxpQkFBaUI7QUFDL0MsU0FBU0MsUUFBUSxRQUFRLFFBQVE7QUFDakMsU0FBU0MsV0FBVyxRQUFRLGtCQUFrQjtBQUc5QyxPQUFPLE1BQU1DLHVCQUF1QixDQUFDLEVBQ25DQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsYUFBYSxFQUtkO0lBQ0MsTUFBTSxDQUFDQyxXQUFXQyxhQUFhLEdBQUdQLFNBQVM7SUFDM0MsTUFBTVEsT0FBT1A7SUFFYixJQUFJLEdBQUdJLGNBQWMsYUFBYSxFQUFFRixvQkFBb0IsS0FBS0ssTUFBTSxPQUFPO0lBRTFFLE1BQU1DLGFBQWE7UUFDakJGLGFBQWE7UUFFYixJQUFJO1lBQ0YsTUFBTUcsV0FBVyxNQUFNQyxNQUNyQixHQUFHUCxZQUFZLENBQUMsRUFBRUQsbUJBQW1CLGdCQUFnQixDQUFDLEVBQ3REO2dCQUNFUyxRQUFRO2dCQUNSQyxTQUFTO29CQUNQLGdCQUFnQjtnQkFDbEI7WUFDRjtZQUdGLE1BQU1DLFNBQWlDLE1BQU1KLFNBQVNLLElBQUk7WUFFMUQsSUFBSUQsT0FBT0UsT0FBTyxFQUFFO2dCQUNsQmpCLE1BQU1pQixPQUFPLENBQUNGLE9BQU9HLE9BQU8sSUFBSSxDQUFDLG9DQUFvQyxDQUFDLEVBQUU7b0JBQUVDLFVBQVU7Z0JBQUs7WUFDM0YsT0FBTztnQkFDTG5CLE1BQU1vQixLQUFLLENBQUNMLE9BQU9LLEtBQUssSUFBSSxtQ0FBbUM7b0JBQUVELFVBQVU7Z0JBQUs7WUFDbEY7UUFDRixFQUFFLE9BQU9DLE9BQU87WUFDZHBCLE1BQU1vQixLQUFLLENBQUNBLGlCQUFpQkMsUUFBUUQsTUFBTUYsT0FBTyxHQUFHLGtDQUFrQztnQkFBRUMsVUFBVTtZQUFLO1lBQ3hHRyxRQUFRRixLQUFLLENBQUMsd0JBQXdCQTtRQUN4QyxTQUFVO1lBQ1JaLGFBQWE7UUFDZjtJQUNGO0lBRUEscUJBQ0U7OzBCQUNFLEtBQUNUO2dCQUNDd0IsV0FBVTtnQkFDVkMsVUFBVWpCO2dCQUNWa0IsU0FBU2Y7MEJBRVJILFlBQVksZUFBZTs7MEJBRzlCLEtBQUNtQjswQkFDRSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O1FBc0JGLENBQUM7Ozs7QUFJVCxFQUFFIn0=
@@ -0,0 +1,6 @@
1
+ import type { Config } from "payload";
2
+ import type { ClerkPluginOptions } from "./types";
3
+ export * from "./plugin/auth-strategy";
4
+ export * from "./plugin/collections/users";
5
+ export declare function clerkPlugin(pluginOptions?: ClerkPluginOptions): (config: Config) => Config;
6
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/clerk/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAOlD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAE3C,wBAAgB,WAAW,CAAC,aAAa,GAAE,kBAAuB,IACxD,QAAQ,MAAM,KAAG,MAAM,CAoEhC"}
@@ -0,0 +1,63 @@
1
+ import { withClerkUsersCollection } from "./plugin/collections/users";
2
+ import { defaultClerkMapping, createMappingWithRequiredClerkFields } from "./utils/clerk-user";
3
+ export * from "./plugin/auth-strategy";
4
+ export * from "./plugin/collections/users";
5
+ export function clerkPlugin(pluginOptions = {}) {
6
+ return (config)=>{
7
+ if (pluginOptions.disabled) {
8
+ return config;
9
+ }
10
+ const clerkToPayloadMappingFunction = createMappingWithRequiredClerkFields(pluginOptions?.users?.clerkToPayloadMapping ?? defaultClerkMapping);
11
+ pluginOptions.users = pluginOptions.users ?? {};
12
+ pluginOptions.users.clerkToPayloadMapping = clerkToPayloadMappingFunction;
13
+ config.custom = {
14
+ ...config.custom,
15
+ hasClerkPlugin: true,
16
+ clerkPlugin: {
17
+ clerkToPayloadMapping: clerkToPayloadMappingFunction
18
+ }
19
+ };
20
+ if (!config.collections) {
21
+ config.collections = [];
22
+ }
23
+ config.admin = {
24
+ ...config.admin,
25
+ components: {
26
+ logout: {
27
+ Button: {
28
+ path: "payload-auth/clerk/admin/ui#LogoutButton"
29
+ }
30
+ },
31
+ ...config.admin?.components,
32
+ afterLogin: [
33
+ {
34
+ path: "payload-auth/clerk/admin/ui#AfterLoginForm",
35
+ clientProps: {
36
+ redirectOnLoginTo: config?.routes?.admin
37
+ }
38
+ }
39
+ ]
40
+ }
41
+ };
42
+ const userSlug = pluginOptions.users?.slug ?? "users";
43
+ const existingUserCollection = config.collections.find((collection)=>collection.slug === userSlug);
44
+ if (existingUserCollection) {
45
+ const index = config.collections.findIndex((collection)=>collection.slug === userSlug);
46
+ config.collections[index] = withClerkUsersCollection({
47
+ collection: existingUserCollection,
48
+ options: pluginOptions,
49
+ apiBasePath: config?.routes?.api ?? undefined,
50
+ adminBasePath: config?.routes?.admin ?? undefined
51
+ });
52
+ } else {
53
+ config.collections.push(withClerkUsersCollection({
54
+ options: pluginOptions,
55
+ apiBasePath: config?.routes?.api ?? undefined,
56
+ adminBasePath: config?.routes?.admin ?? undefined
57
+ }));
58
+ }
59
+ return config;
60
+ };
61
+ }
62
+
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVyay9wbHVnaW4udHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tIFwicGF5bG9hZFwiO1xuaW1wb3J0IHR5cGUgeyBDbGVya1BsdWdpbk9wdGlvbnMgfSBmcm9tIFwiLi90eXBlc1wiO1xuaW1wb3J0IHsgd2l0aENsZXJrVXNlcnNDb2xsZWN0aW9uIH0gZnJvbSBcIi4vcGx1Z2luL2NvbGxlY3Rpb25zL3VzZXJzXCI7XG5pbXBvcnQge1xuICBkZWZhdWx0Q2xlcmtNYXBwaW5nLFxuICBjcmVhdGVNYXBwaW5nV2l0aFJlcXVpcmVkQ2xlcmtGaWVsZHMsXG59IGZyb20gXCIuL3V0aWxzL2NsZXJrLXVzZXJcIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vcGx1Z2luL2F1dGgtc3RyYXRlZ3lcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BsdWdpbi9jb2xsZWN0aW9ucy91c2Vyc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY2xlcmtQbHVnaW4ocGx1Z2luT3B0aW9uczogQ2xlcmtQbHVnaW5PcHRpb25zID0ge30pIHtcbiAgcmV0dXJuIChjb25maWc6IENvbmZpZyk6IENvbmZpZyA9PiB7XG4gICAgaWYgKHBsdWdpbk9wdGlvbnMuZGlzYWJsZWQpIHtcbiAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgY29uc3QgY2xlcmtUb1BheWxvYWRNYXBwaW5nRnVuY3Rpb24gPSBjcmVhdGVNYXBwaW5nV2l0aFJlcXVpcmVkQ2xlcmtGaWVsZHMoXG4gICAgICBwbHVnaW5PcHRpb25zPy51c2Vycz8uY2xlcmtUb1BheWxvYWRNYXBwaW5nID8/IGRlZmF1bHRDbGVya01hcHBpbmdcbiAgICApO1xuICAgIHBsdWdpbk9wdGlvbnMudXNlcnMgPSBwbHVnaW5PcHRpb25zLnVzZXJzID8/IHt9O1xuICAgIHBsdWdpbk9wdGlvbnMudXNlcnMuY2xlcmtUb1BheWxvYWRNYXBwaW5nID0gY2xlcmtUb1BheWxvYWRNYXBwaW5nRnVuY3Rpb247XG5cbiAgICBjb25maWcuY3VzdG9tID0ge1xuICAgICAgLi4uY29uZmlnLmN1c3RvbSxcbiAgICAgIGhhc0NsZXJrUGx1Z2luOiB0cnVlLFxuICAgICAgY2xlcmtQbHVnaW46IHtcbiAgICAgICAgY2xlcmtUb1BheWxvYWRNYXBwaW5nOiBjbGVya1RvUGF5bG9hZE1hcHBpbmdGdW5jdGlvbixcbiAgICAgIH0sXG4gICAgfTtcblxuICAgIGlmICghY29uZmlnLmNvbGxlY3Rpb25zKSB7XG4gICAgICBjb25maWcuY29sbGVjdGlvbnMgPSBbXTtcbiAgICB9XG5cbiAgICBjb25maWcuYWRtaW4gPSB7XG4gICAgICAuLi5jb25maWcuYWRtaW4sXG4gICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgIGxvZ291dDoge1xuICAgICAgICAgIEJ1dHRvbjoge1xuICAgICAgICAgICAgcGF0aDogXCJwYXlsb2FkLWF1dGgvY2xlcmsvYWRtaW4vdWkjTG9nb3V0QnV0dG9uXCIsXG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICAuLi5jb25maWcuYWRtaW4/LmNvbXBvbmVudHMsXG4gICAgICAgIGFmdGVyTG9naW46IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwYXRoOiBcInBheWxvYWQtYXV0aC9jbGVyay9hZG1pbi91aSNBZnRlckxvZ2luRm9ybVwiLFxuICAgICAgICAgICAgY2xpZW50UHJvcHM6IHsgcmVkaXJlY3RPbkxvZ2luVG86IGNvbmZpZz8ucm91dGVzPy5hZG1pbiB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICB9LFxuICAgIH07XG4gICAgY29uc3QgdXNlclNsdWcgPSBwbHVnaW5PcHRpb25zLnVzZXJzPy5zbHVnID8/IFwidXNlcnNcIjtcblxuICAgIGNvbnN0IGV4aXN0aW5nVXNlckNvbGxlY3Rpb24gPSBjb25maWcuY29sbGVjdGlvbnMuZmluZChcbiAgICAgIChjb2xsZWN0aW9uOiBhbnkpID0+IGNvbGxlY3Rpb24uc2x1ZyA9PT0gdXNlclNsdWdcbiAgICApO1xuXG4gICAgaWYgKGV4aXN0aW5nVXNlckNvbGxlY3Rpb24pIHtcbiAgICAgIGNvbnN0IGluZGV4ID0gY29uZmlnLmNvbGxlY3Rpb25zLmZpbmRJbmRleChcbiAgICAgICAgKGNvbGxlY3Rpb246IGFueSkgPT4gY29sbGVjdGlvbi5zbHVnID09PSB1c2VyU2x1Z1xuICAgICAgKTtcbiAgICAgIGNvbmZpZy5jb2xsZWN0aW9uc1tpbmRleF0gPSB3aXRoQ2xlcmtVc2Vyc0NvbGxlY3Rpb24oe1xuICAgICAgICBjb2xsZWN0aW9uOiBleGlzdGluZ1VzZXJDb2xsZWN0aW9uLFxuICAgICAgICBvcHRpb25zOiBwbHVnaW5PcHRpb25zLFxuICAgICAgICBhcGlCYXNlUGF0aDogY29uZmlnPy5yb3V0ZXM/LmFwaSA/PyB1bmRlZmluZWQsXG4gICAgICAgIGFkbWluQmFzZVBhdGg6IGNvbmZpZz8ucm91dGVzPy5hZG1pbiA/PyB1bmRlZmluZWQsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnLmNvbGxlY3Rpb25zLnB1c2goXG4gICAgICAgIHdpdGhDbGVya1VzZXJzQ29sbGVjdGlvbih7XG4gICAgICAgICAgb3B0aW9uczogcGx1Z2luT3B0aW9ucyxcbiAgICAgICAgICBhcGlCYXNlUGF0aDogY29uZmlnPy5yb3V0ZXM/LmFwaSA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgYWRtaW5CYXNlUGF0aDogY29uZmlnPy5yb3V0ZXM/LmFkbWluID8/IHVuZGVmaW5lZCxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJ3aXRoQ2xlcmtVc2Vyc0NvbGxlY3Rpb24iLCJkZWZhdWx0Q2xlcmtNYXBwaW5nIiwiY3JlYXRlTWFwcGluZ1dpdGhSZXF1aXJlZENsZXJrRmllbGRzIiwiY2xlcmtQbHVnaW4iLCJwbHVnaW5PcHRpb25zIiwiY29uZmlnIiwiZGlzYWJsZWQiLCJjbGVya1RvUGF5bG9hZE1hcHBpbmdGdW5jdGlvbiIsInVzZXJzIiwiY2xlcmtUb1BheWxvYWRNYXBwaW5nIiwiY3VzdG9tIiwiaGFzQ2xlcmtQbHVnaW4iLCJjb2xsZWN0aW9ucyIsImFkbWluIiwiY29tcG9uZW50cyIsImxvZ291dCIsIkJ1dHRvbiIsInBhdGgiLCJhZnRlckxvZ2luIiwiY2xpZW50UHJvcHMiLCJyZWRpcmVjdE9uTG9naW5UbyIsInJvdXRlcyIsInVzZXJTbHVnIiwic2x1ZyIsImV4aXN0aW5nVXNlckNvbGxlY3Rpb24iLCJmaW5kIiwiY29sbGVjdGlvbiIsImluZGV4IiwiZmluZEluZGV4Iiwib3B0aW9ucyIsImFwaUJhc2VQYXRoIiwiYXBpIiwidW5kZWZpbmVkIiwiYWRtaW5CYXNlUGF0aCIsInB1c2giXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLHdCQUF3QixRQUFRLDZCQUE2QjtBQUN0RSxTQUNFQyxtQkFBbUIsRUFDbkJDLG9DQUFvQyxRQUMvQixxQkFBcUI7QUFFNUIsY0FBYyx5QkFBeUI7QUFDdkMsY0FBYyw2QkFBNkI7QUFFM0MsT0FBTyxTQUFTQyxZQUFZQyxnQkFBb0MsQ0FBQyxDQUFDO0lBQ2hFLE9BQU8sQ0FBQ0M7UUFDTixJQUFJRCxjQUFjRSxRQUFRLEVBQUU7WUFDMUIsT0FBT0Q7UUFDVDtRQUVBLE1BQU1FLGdDQUFnQ0wscUNBQ3BDRSxlQUFlSSxPQUFPQyx5QkFBeUJSO1FBRWpERyxjQUFjSSxLQUFLLEdBQUdKLGNBQWNJLEtBQUssSUFBSSxDQUFDO1FBQzlDSixjQUFjSSxLQUFLLENBQUNDLHFCQUFxQixHQUFHRjtRQUU1Q0YsT0FBT0ssTUFBTSxHQUFHO1lBQ2QsR0FBR0wsT0FBT0ssTUFBTTtZQUNoQkMsZ0JBQWdCO1lBQ2hCUixhQUFhO2dCQUNYTSx1QkFBdUJGO1lBQ3pCO1FBQ0Y7UUFFQSxJQUFJLENBQUNGLE9BQU9PLFdBQVcsRUFBRTtZQUN2QlAsT0FBT08sV0FBVyxHQUFHLEVBQUU7UUFDekI7UUFFQVAsT0FBT1EsS0FBSyxHQUFHO1lBQ2IsR0FBR1IsT0FBT1EsS0FBSztZQUNmQyxZQUFZO2dCQUNWQyxRQUFRO29CQUNOQyxRQUFRO3dCQUNOQyxNQUFNO29CQUNSO2dCQUNGO2dCQUNBLEdBQUdaLE9BQU9RLEtBQUssRUFBRUMsVUFBVTtnQkFDM0JJLFlBQVk7b0JBQ1Y7d0JBQ0VELE1BQU07d0JBQ05FLGFBQWE7NEJBQUVDLG1CQUFtQmYsUUFBUWdCLFFBQVFSO3dCQUFNO29CQUMxRDtpQkFDRDtZQUNIO1FBQ0Y7UUFDQSxNQUFNUyxXQUFXbEIsY0FBY0ksS0FBSyxFQUFFZSxRQUFRO1FBRTlDLE1BQU1DLHlCQUF5Qm5CLE9BQU9PLFdBQVcsQ0FBQ2EsSUFBSSxDQUNwRCxDQUFDQyxhQUFvQkEsV0FBV0gsSUFBSSxLQUFLRDtRQUczQyxJQUFJRSx3QkFBd0I7WUFDMUIsTUFBTUcsUUFBUXRCLE9BQU9PLFdBQVcsQ0FBQ2dCLFNBQVMsQ0FDeEMsQ0FBQ0YsYUFBb0JBLFdBQVdILElBQUksS0FBS0Q7WUFFM0NqQixPQUFPTyxXQUFXLENBQUNlLE1BQU0sR0FBRzNCLHlCQUF5QjtnQkFDbkQwQixZQUFZRjtnQkFDWkssU0FBU3pCO2dCQUNUMEIsYUFBYXpCLFFBQVFnQixRQUFRVSxPQUFPQztnQkFDcENDLGVBQWU1QixRQUFRZ0IsUUFBUVIsU0FBU21CO1lBQzFDO1FBQ0YsT0FBTztZQUNMM0IsT0FBT08sV0FBVyxDQUFDc0IsSUFBSSxDQUNyQmxDLHlCQUF5QjtnQkFDdkI2QixTQUFTekI7Z0JBQ1QwQixhQUFhekIsUUFBUWdCLFFBQVFVLE9BQU9DO2dCQUNwQ0MsZUFBZTVCLFFBQVFnQixRQUFRUixTQUFTbUI7WUFDMUM7UUFFSjtRQUVBLE9BQU8zQjtJQUNUO0FBQ0YifQ==
@@ -0,0 +1,63 @@
1
+ import type { UserJSON } from '@clerk/backend';
2
+ import type { CollectionConfig, User } from 'payload';
3
+ /**
4
+ * Function type for mapping Clerk user data to Payload fields
5
+ */
6
+ export type ClerkToPayloadMappingFunction = (clerkUser: UserJSON) => Omit<User, 'id'>;
7
+ export interface ClerkPluginOptions {
8
+ /**
9
+ * Disable the plugin
10
+ */
11
+ disabled?: boolean;
12
+ /**
13
+ * Enable debug logs
14
+ */
15
+ enableDebugLogs?: boolean;
16
+ /**
17
+ * Collection options for the Clerk users
18
+ */
19
+ users?: {
20
+ /**
21
+ * The slug for the users collection
22
+ * @default "users"
23
+ */
24
+ slug?: string;
25
+ /**
26
+ * Whether to hide the collection in the admin UI
27
+ * @default false
28
+ */
29
+ hidden?: boolean;
30
+ /**
31
+ * Collection override function that lets you customize the collection config
32
+ */
33
+ collectionOverrides?: (args: {
34
+ collection: CollectionConfig;
35
+ }) => CollectionConfig;
36
+ /**
37
+ * Admin roles that have permission to perform admin actions
38
+ * @default ["admin"]
39
+ */
40
+ adminRoles?: string[];
41
+ /**
42
+ * Custom function to map Clerk user data to Payload fields
43
+ * If not provided, default mapping will be used
44
+ */
45
+ clerkToPayloadMapping?: ClerkToPayloadMappingFunction;
46
+ };
47
+ /**
48
+ * Webhook configuration
49
+ */
50
+ webhook?: {
51
+ /**
52
+ * Svix signing secret for validating webhook requests
53
+ * If not provided, webhook validation will be skipped (not recommended for production)
54
+ */
55
+ svixSecret?: string;
56
+ /**
57
+ * Custom endpoint path for the webhook
58
+ * @default "/api/webhooks/clerk"
59
+ */
60
+ path?: string;
61
+ };
62
+ }
63
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/clerk/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAErD;;GAEG;AACH,MAAM,MAAM,6BAA6B,GAAG,CAAC,SAAS,EAAE,QAAQ,KAAK,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;AAErF,MAAM,WAAW,kBAAkB;IACjC;;OAEG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB;;OAEG;IACH,KAAK,CAAC,EAAE;QACN;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;QAEb;;;WAGG;QACH,MAAM,CAAC,EAAE,OAAO,CAAA;QAEhB;;WAEG;QACH,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;YAAE,UAAU,EAAE,gBAAgB,CAAA;SAAE,KAAK,gBAAgB,CAAA;QAElF;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;QAErB;;;WAGG;QACH,qBAAqB,CAAC,EAAE,6BAA6B,CAAA;KACtD,CAAA;IAED;;OAEG;IACH,OAAO,CAAC,EAAE;QACR;;;WAGG;QACH,UAAU,CAAC,EAAE,MAAM,CAAA;QAEnB;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;CACF"}
@@ -0,0 +1,3 @@
1
+ export { };
2
+
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jbGVyay90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVzZXJKU09OIH0gZnJvbSAnQGNsZXJrL2JhY2tlbmQnXG5pbXBvcnQgdHlwZSB7IENvbGxlY3Rpb25Db25maWcsIFVzZXIgfSBmcm9tICdwYXlsb2FkJ1xuXG4vKipcbiAqIEZ1bmN0aW9uIHR5cGUgZm9yIG1hcHBpbmcgQ2xlcmsgdXNlciBkYXRhIHRvIFBheWxvYWQgZmllbGRzXG4gKi9cbmV4cG9ydCB0eXBlIENsZXJrVG9QYXlsb2FkTWFwcGluZ0Z1bmN0aW9uID0gKGNsZXJrVXNlcjogVXNlckpTT04pID0+IE9taXQ8VXNlciwgJ2lkJz5cblxuZXhwb3J0IGludGVyZmFjZSBDbGVya1BsdWdpbk9wdGlvbnMge1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgcGx1Z2luXG4gICAqL1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgXG4gIC8qKlxuICAgKiBFbmFibGUgZGVidWcgbG9nc1xuICAgKi9cbiAgZW5hYmxlRGVidWdMb2dzPzogYm9vbGVhblxuXG4gIC8qKlxuICAgKiBDb2xsZWN0aW9uIG9wdGlvbnMgZm9yIHRoZSBDbGVyayB1c2Vyc1xuICAgKi9cbiAgdXNlcnM/OiB7XG4gICAgLyoqXG4gICAgICogVGhlIHNsdWcgZm9yIHRoZSB1c2VycyBjb2xsZWN0aW9uXG4gICAgICogQGRlZmF1bHQgXCJ1c2Vyc1wiXG4gICAgICovXG4gICAgc2x1Zz86IHN0cmluZ1xuICAgIFxuICAgIC8qKlxuICAgICAqIFdoZXRoZXIgdG8gaGlkZSB0aGUgY29sbGVjdGlvbiBpbiB0aGUgYWRtaW4gVUlcbiAgICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgICAqL1xuICAgIGhpZGRlbj86IGJvb2xlYW5cbiAgICBcbiAgICAvKipcbiAgICAgKiBDb2xsZWN0aW9uIG92ZXJyaWRlIGZ1bmN0aW9uIHRoYXQgbGV0cyB5b3UgY3VzdG9taXplIHRoZSBjb2xsZWN0aW9uIGNvbmZpZ1xuICAgICAqL1xuICAgIGNvbGxlY3Rpb25PdmVycmlkZXM/OiAoYXJnczogeyBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uQ29uZmlnIH0pID0+IENvbGxlY3Rpb25Db25maWdcbiAgICBcbiAgICAvKipcbiAgICAgKiBBZG1pbiByb2xlcyB0aGF0IGhhdmUgcGVybWlzc2lvbiB0byBwZXJmb3JtIGFkbWluIGFjdGlvbnNcbiAgICAgKiBAZGVmYXVsdCBbXCJhZG1pblwiXVxuICAgICAqL1xuICAgIGFkbWluUm9sZXM/OiBzdHJpbmdbXVxuXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGZ1bmN0aW9uIHRvIG1hcCBDbGVyayB1c2VyIGRhdGEgdG8gUGF5bG9hZCBmaWVsZHNcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIGRlZmF1bHQgbWFwcGluZyB3aWxsIGJlIHVzZWRcbiAgICAgKi9cbiAgICBjbGVya1RvUGF5bG9hZE1hcHBpbmc/OiBDbGVya1RvUGF5bG9hZE1hcHBpbmdGdW5jdGlvblxuICB9XG5cbiAgLyoqXG4gICAqIFdlYmhvb2sgY29uZmlndXJhdGlvblxuICAgKi9cbiAgd2ViaG9vaz86IHtcbiAgICAvKipcbiAgICAgKiBTdml4IHNpZ25pbmcgc2VjcmV0IGZvciB2YWxpZGF0aW5nIHdlYmhvb2sgcmVxdWVzdHNcbiAgICAgKiBJZiBub3QgcHJvdmlkZWQsIHdlYmhvb2sgdmFsaWRhdGlvbiB3aWxsIGJlIHNraXBwZWQgKG5vdCByZWNvbW1lbmRlZCBmb3IgcHJvZHVjdGlvbilcbiAgICAgKi9cbiAgICBzdml4U2VjcmV0Pzogc3RyaW5nXG4gICAgXG4gICAgLyoqXG4gICAgICogQ3VzdG9tIGVuZHBvaW50IHBhdGggZm9yIHRoZSB3ZWJob29rXG4gICAgICogQGRlZmF1bHQgXCIvYXBpL3dlYmhvb2tzL2NsZXJrXCJcbiAgICAgKi9cbiAgICBwYXRoPzogc3RyaW5nXG4gIH1cbn0gIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLFdBNkRDIn0=
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Helper functions for processing Clerk user data
3
+ */
4
+ import { ClerkToPayloadMappingFunction } from '../types';
5
+ import type { User, UserJSON } from '@clerk/backend';
6
+ /**
7
+ * Default mapping function for Clerk user data to Payload fields
8
+ */
9
+ export declare const defaultClerkMapping: ClerkToPayloadMappingFunction;
10
+ /**
11
+ * Ensures that essential Clerk fields are always set regardless of the mapping function
12
+ * This wrapper guarantees that clerkId and email will always be present in the mapped data
13
+ */
14
+ export declare const createMappingWithRequiredClerkFields: (mappingFunction: ClerkToPayloadMappingFunction) => ClerkToPayloadMappingFunction;
15
+ /**
16
+ * Extracts the primary email from Clerk user data
17
+ */
18
+ export declare function getPrimaryEmail(clerkUser: User): string | undefined;
19
+ export declare function getPrimaryEmailFromJson(clerkUser: UserJSON): string | undefined;
20
+ /**
21
+ * Formats a user's full name from their first and last name
22
+ */
23
+ export declare function formatFullName(firstName?: string, lastName?: string): string | undefined;
24
+ //# sourceMappingURL=clerk-user.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clerk-user.d.ts","sourceRoot":"","sources":["../../../src/clerk/utils/clerk-user.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,6BAA6B,EAAE,MAAM,UAAU,CAAA;AACxD,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE,6BAWjC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,oCAAoC,GAC/C,iBAAiB,6BAA6B,KAC7C,6BAUF,CAAA;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,IAAI,GAAG,MAAM,GAAG,SAAS,CAMnE;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAM/E;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGxF"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Helper functions for processing Clerk user data
3
+ */ /**
4
+ * Default mapping function for Clerk user data to Payload fields
5
+ */ export const defaultClerkMapping = (clerkUser)=>{
6
+ return {
7
+ clerkId: clerkUser.id,
8
+ email: getPrimaryEmailFromJson(clerkUser),
9
+ emailVerified: clerkUser.email_addresses?.[0]?.verification?.status === 'verified',
10
+ firstName: clerkUser.first_name,
11
+ lastName: clerkUser.last_name,
12
+ imageUrl: clerkUser.image_url,
13
+ lastSyncedAt: new Date(),
14
+ clerkPublicMetadata: clerkUser?.public_metadata || {}
15
+ };
16
+ };
17
+ /**
18
+ * Ensures that essential Clerk fields are always set regardless of the mapping function
19
+ * This wrapper guarantees that clerkId and email will always be present in the mapped data
20
+ */ export const createMappingWithRequiredClerkFields = (mappingFunction)=>{
21
+ return (clerkUser)=>{
22
+ const mappedData = mappingFunction(clerkUser);
23
+ return {
24
+ ...mappedData,
25
+ clerkId: clerkUser.id,
26
+ email: mappedData.email || getPrimaryEmailFromJson(clerkUser)
27
+ };
28
+ };
29
+ };
30
+ /**
31
+ * Extracts the primary email from Clerk user data
32
+ */ export function getPrimaryEmail(clerkUser) {
33
+ const primaryEmail = clerkUser.emailAddresses?.find((email)=>email.id === clerkUser.primaryEmailAddressId);
34
+ return primaryEmail?.emailAddress || clerkUser.emailAddresses?.[0]?.emailAddress;
35
+ }
36
+ export function getPrimaryEmailFromJson(clerkUser) {
37
+ const primaryEmail = clerkUser.email_addresses?.find((email)=>email.id === clerkUser.primary_email_address_id);
38
+ return primaryEmail?.email_address || clerkUser.email_addresses?.[0]?.email_address;
39
+ }
40
+ /**
41
+ * Formats a user's full name from their first and last name
42
+ */ export function formatFullName(firstName, lastName) {
43
+ if (!firstName && !lastName) return undefined;
44
+ return `${firstName || ''} ${lastName || ''}`.trim();
45
+ }
46
+
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGVyay91dGlscy9jbGVyay11c2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogSGVscGVyIGZ1bmN0aW9ucyBmb3IgcHJvY2Vzc2luZyBDbGVyayB1c2VyIGRhdGFcbiAqL1xuXG5pbXBvcnQgeyBDbGVya1RvUGF5bG9hZE1hcHBpbmdGdW5jdGlvbiB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBVc2VyLCBVc2VySlNPTiB9IGZyb20gJ0BjbGVyay9iYWNrZW5kJ1xuXG4vKipcbiAqIERlZmF1bHQgbWFwcGluZyBmdW5jdGlvbiBmb3IgQ2xlcmsgdXNlciBkYXRhIHRvIFBheWxvYWQgZmllbGRzXG4gKi9cbmV4cG9ydCBjb25zdCBkZWZhdWx0Q2xlcmtNYXBwaW5nOiBDbGVya1RvUGF5bG9hZE1hcHBpbmdGdW5jdGlvbiA9IChjbGVya1VzZXI6IFVzZXJKU09OKSA9PiB7XG4gIHJldHVybiB7XG4gICAgY2xlcmtJZDogY2xlcmtVc2VyLmlkLFxuICAgIGVtYWlsOiBnZXRQcmltYXJ5RW1haWxGcm9tSnNvbihjbGVya1VzZXIpLFxuICAgIGVtYWlsVmVyaWZpZWQ6IGNsZXJrVXNlci5lbWFpbF9hZGRyZXNzZXM/LlswXT8udmVyaWZpY2F0aW9uPy5zdGF0dXMgPT09ICd2ZXJpZmllZCcsXG4gICAgZmlyc3ROYW1lOiBjbGVya1VzZXIuZmlyc3RfbmFtZSxcbiAgICBsYXN0TmFtZTogY2xlcmtVc2VyLmxhc3RfbmFtZSxcbiAgICBpbWFnZVVybDogY2xlcmtVc2VyLmltYWdlX3VybCxcbiAgICBsYXN0U3luY2VkQXQ6IG5ldyBEYXRlKCksXG4gICAgY2xlcmtQdWJsaWNNZXRhZGF0YTogY2xlcmtVc2VyPy5wdWJsaWNfbWV0YWRhdGEgfHwge30sXG4gIH1cbn1cblxuLyoqXG4gKiBFbnN1cmVzIHRoYXQgZXNzZW50aWFsIENsZXJrIGZpZWxkcyBhcmUgYWx3YXlzIHNldCByZWdhcmRsZXNzIG9mIHRoZSBtYXBwaW5nIGZ1bmN0aW9uXG4gKiBUaGlzIHdyYXBwZXIgZ3VhcmFudGVlcyB0aGF0IGNsZXJrSWQgYW5kIGVtYWlsIHdpbGwgYWx3YXlzIGJlIHByZXNlbnQgaW4gdGhlIG1hcHBlZCBkYXRhXG4gKi9cbmV4cG9ydCBjb25zdCBjcmVhdGVNYXBwaW5nV2l0aFJlcXVpcmVkQ2xlcmtGaWVsZHMgPSAoXG4gIG1hcHBpbmdGdW5jdGlvbjogQ2xlcmtUb1BheWxvYWRNYXBwaW5nRnVuY3Rpb25cbik6IENsZXJrVG9QYXlsb2FkTWFwcGluZ0Z1bmN0aW9uID0+IHtcbiAgcmV0dXJuIChjbGVya1VzZXI6IFVzZXJKU09OKSA9PiB7XG4gICAgY29uc3QgbWFwcGVkRGF0YSA9IG1hcHBpbmdGdW5jdGlvbihjbGVya1VzZXIpXG4gICAgXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm1hcHBlZERhdGEsXG4gICAgICBjbGVya0lkOiBjbGVya1VzZXIuaWQsXG4gICAgICBlbWFpbDogbWFwcGVkRGF0YS5lbWFpbCB8fCBnZXRQcmltYXJ5RW1haWxGcm9tSnNvbihjbGVya1VzZXIpLFxuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEV4dHJhY3RzIHRoZSBwcmltYXJ5IGVtYWlsIGZyb20gQ2xlcmsgdXNlciBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcmltYXJ5RW1haWwoY2xlcmtVc2VyOiBVc2VyKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgcHJpbWFyeUVtYWlsID0gY2xlcmtVc2VyLmVtYWlsQWRkcmVzc2VzPy5maW5kKFxuICAgIChlbWFpbCkgPT4gZW1haWwuaWQgPT09IGNsZXJrVXNlci5wcmltYXJ5RW1haWxBZGRyZXNzSWRcbiAgKVxuICBcbiAgcmV0dXJuIHByaW1hcnlFbWFpbD8uZW1haWxBZGRyZXNzIHx8IGNsZXJrVXNlci5lbWFpbEFkZHJlc3Nlcz8uWzBdPy5lbWFpbEFkZHJlc3Ncbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFByaW1hcnlFbWFpbEZyb21Kc29uKGNsZXJrVXNlcjogVXNlckpTT04pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBjb25zdCBwcmltYXJ5RW1haWwgPSBjbGVya1VzZXIuZW1haWxfYWRkcmVzc2VzPy5maW5kKFxuICAgIChlbWFpbCkgPT4gZW1haWwuaWQgPT09IGNsZXJrVXNlci5wcmltYXJ5X2VtYWlsX2FkZHJlc3NfaWRcbiAgKVxuICBcbiAgcmV0dXJuIHByaW1hcnlFbWFpbD8uZW1haWxfYWRkcmVzcyB8fCBjbGVya1VzZXIuZW1haWxfYWRkcmVzc2VzPy5bMF0/LmVtYWlsX2FkZHJlc3Ncbn1cblxuLyoqXG4gKiBGb3JtYXRzIGEgdXNlcidzIGZ1bGwgbmFtZSBmcm9tIHRoZWlyIGZpcnN0IGFuZCBsYXN0IG5hbWVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEZ1bGxOYW1lKGZpcnN0TmFtZT86IHN0cmluZywgbGFzdE5hbWU/OiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBpZiAoIWZpcnN0TmFtZSAmJiAhbGFzdE5hbWUpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIGAke2ZpcnN0TmFtZSB8fCAnJ30gJHtsYXN0TmFtZSB8fCAnJ31gLnRyaW0oKVxufSAiXSwibmFtZXMiOlsiZGVmYXVsdENsZXJrTWFwcGluZyIsImNsZXJrVXNlciIsImNsZXJrSWQiLCJpZCIsImVtYWlsIiwiZ2V0UHJpbWFyeUVtYWlsRnJvbUpzb24iLCJlbWFpbFZlcmlmaWVkIiwiZW1haWxfYWRkcmVzc2VzIiwidmVyaWZpY2F0aW9uIiwic3RhdHVzIiwiZmlyc3ROYW1lIiwiZmlyc3RfbmFtZSIsImxhc3ROYW1lIiwibGFzdF9uYW1lIiwiaW1hZ2VVcmwiLCJpbWFnZV91cmwiLCJsYXN0U3luY2VkQXQiLCJEYXRlIiwiY2xlcmtQdWJsaWNNZXRhZGF0YSIsInB1YmxpY19tZXRhZGF0YSIsImNyZWF0ZU1hcHBpbmdXaXRoUmVxdWlyZWRDbGVya0ZpZWxkcyIsIm1hcHBpbmdGdW5jdGlvbiIsIm1hcHBlZERhdGEiLCJnZXRQcmltYXJ5RW1haWwiLCJwcmltYXJ5RW1haWwiLCJlbWFpbEFkZHJlc3NlcyIsImZpbmQiLCJwcmltYXJ5RW1haWxBZGRyZXNzSWQiLCJlbWFpbEFkZHJlc3MiLCJwcmltYXJ5X2VtYWlsX2FkZHJlc3NfaWQiLCJlbWFpbF9hZGRyZXNzIiwiZm9ybWF0RnVsbE5hbWUiLCJ1bmRlZmluZWQiLCJ0cmltIl0sIm1hcHBpbmdzIjoiQUFBQTs7Q0FFQyxHQUtEOztDQUVDLEdBQ0QsT0FBTyxNQUFNQSxzQkFBcUQsQ0FBQ0M7SUFDakUsT0FBTztRQUNMQyxTQUFTRCxVQUFVRSxFQUFFO1FBQ3JCQyxPQUFPQyx3QkFBd0JKO1FBQy9CSyxlQUFlTCxVQUFVTSxlQUFlLEVBQUUsQ0FBQyxFQUFFLEVBQUVDLGNBQWNDLFdBQVc7UUFDeEVDLFdBQVdULFVBQVVVLFVBQVU7UUFDL0JDLFVBQVVYLFVBQVVZLFNBQVM7UUFDN0JDLFVBQVViLFVBQVVjLFNBQVM7UUFDN0JDLGNBQWMsSUFBSUM7UUFDbEJDLHFCQUFxQmpCLFdBQVdrQixtQkFBbUIsQ0FBQztJQUN0RDtBQUNGLEVBQUM7QUFFRDs7O0NBR0MsR0FDRCxPQUFPLE1BQU1DLHVDQUF1QyxDQUNsREM7SUFFQSxPQUFPLENBQUNwQjtRQUNOLE1BQU1xQixhQUFhRCxnQkFBZ0JwQjtRQUVuQyxPQUFPO1lBQ0wsR0FBR3FCLFVBQVU7WUFDYnBCLFNBQVNELFVBQVVFLEVBQUU7WUFDckJDLE9BQU9rQixXQUFXbEIsS0FBSyxJQUFJQyx3QkFBd0JKO1FBQ3JEO0lBQ0Y7QUFDRixFQUFDO0FBRUQ7O0NBRUMsR0FDRCxPQUFPLFNBQVNzQixnQkFBZ0J0QixTQUFlO0lBQzdDLE1BQU11QixlQUFldkIsVUFBVXdCLGNBQWMsRUFBRUMsS0FDN0MsQ0FBQ3RCLFFBQVVBLE1BQU1ELEVBQUUsS0FBS0YsVUFBVTBCLHFCQUFxQjtJQUd6RCxPQUFPSCxjQUFjSSxnQkFBZ0IzQixVQUFVd0IsY0FBYyxFQUFFLENBQUMsRUFBRSxFQUFFRztBQUN0RTtBQUVBLE9BQU8sU0FBU3ZCLHdCQUF3QkosU0FBbUI7SUFDekQsTUFBTXVCLGVBQWV2QixVQUFVTSxlQUFlLEVBQUVtQixLQUM5QyxDQUFDdEIsUUFBVUEsTUFBTUQsRUFBRSxLQUFLRixVQUFVNEIsd0JBQXdCO0lBRzVELE9BQU9MLGNBQWNNLGlCQUFpQjdCLFVBQVVNLGVBQWUsRUFBRSxDQUFDLEVBQUUsRUFBRXVCO0FBQ3hFO0FBRUE7O0NBRUMsR0FDRCxPQUFPLFNBQVNDLGVBQWVyQixTQUFrQixFQUFFRSxRQUFpQjtJQUNsRSxJQUFJLENBQUNGLGFBQWEsQ0FBQ0UsVUFBVSxPQUFPb0I7SUFDcEMsT0FBTyxHQUFHdEIsYUFBYSxHQUFHLENBQUMsRUFBRUUsWUFBWSxJQUFJLENBQUNxQixJQUFJO0FBQ3BEIn0=
@@ -0,0 +1,4 @@
1
+ export * from './clerk-user';
2
+ export * from './svix';
3
+ export * from './user';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/clerk/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAA;AAC5B,cAAc,QAAQ,CAAA;AACtB,cAAc,QAAQ,CAAA"}
@@ -0,0 +1,5 @@
1
+ export * from './clerk-user';
2
+ export * from './svix';
3
+ export * from './user';
4
+
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGVyay91dGlscy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2NsZXJrLXVzZXInXG5leHBvcnQgKiBmcm9tICcuL3N2aXgnXG5leHBvcnQgKiBmcm9tICcuL3VzZXInICJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLGVBQWM7QUFDNUIsY0FBYyxTQUFRO0FBQ3RCLGNBQWMsU0FBUSJ9
@@ -0,0 +1,8 @@
1
+ import type { Clerk } from '@clerk/clerk-js';
2
+ declare global {
3
+ interface Window {
4
+ clerkInstance?: Clerk;
5
+ }
6
+ }
7
+ export declare function loadClerkInstance(): Promise<Clerk>;
8
+ //# sourceMappingURL=load-clerk-instance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load-clerk-instance.d.ts","sourceRoot":"","sources":["../../../src/clerk/utils/load-clerk-instance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,aAAa,CAAC,EAAE,KAAK,CAAC;KACvB;CACF;AAED,wBAAsB,iBAAiB,mBAQtC"}