@baseplate-dev/plugin-auth 0.6.18 → 0.6.20

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 (209) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/admin-crud-manage-roles-action.generator.d.ts +64 -0
  3. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/generated/index.d.ts +64 -0
  4. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/generated/template-renderers.d.ts +32 -0
  5. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/generated/typed-templates.d.ts +32 -0
  6. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/templates/routes/-components/role-manager-dialog.js +1 -2
  7. package/dist/better-auth/admin/generators/admin-crud-manage-roles-action/templates/routes/-components/role-manager-dialog.tsx +1 -1
  8. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/admin-crud-reset-password-action.generator.d.ts +64 -0
  9. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/generated/index.d.ts +64 -0
  10. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/generated/template-renderers.d.ts +32 -0
  11. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/generated/typed-templates.d.ts +64 -0
  12. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/templates/routes/-components/password-reset-dialog.js +1 -2
  13. package/dist/better-auth/admin/generators/admin-crud-reset-password-action/templates/routes/-components/password-reset-dialog.tsx +1 -1
  14. package/dist/better-auth/admin/generators/admin-crud-roles-column/admin-crud-roles-column.generator.d.ts +32 -0
  15. package/dist/better-auth/core/node.js +7 -8
  16. package/dist/better-auth/generators/fastify/better-auth-admin-module/generated/index.d.ts +1 -0
  17. package/dist/better-auth/generators/fastify/better-auth-admin-module/generated/ts-import-providers.d.ts +1 -0
  18. package/dist/better-auth/generators/fastify/better-auth-admin-module/generated/ts-import-providers.js +1 -0
  19. package/dist/better-auth/generators/fastify/better-auth-module/better-auth-module.generator.d.ts +20 -3
  20. package/dist/better-auth/generators/fastify/better-auth-module/better-auth-module.generator.js +5 -24
  21. package/dist/better-auth/generators/fastify/better-auth-module/generated/index.d.ts +40 -2
  22. package/dist/better-auth/generators/fastify/better-auth-module/generated/template-renderers.d.ts +19 -1
  23. package/dist/better-auth/generators/fastify/better-auth-module/generated/template-renderers.js +6 -2
  24. package/dist/better-auth/generators/fastify/better-auth-module/generated/ts-import-providers.d.ts +1 -0
  25. package/dist/better-auth/generators/fastify/better-auth-module/generated/ts-import-providers.js +1 -0
  26. package/dist/better-auth/generators/fastify/better-auth-module/generated/typed-templates.d.ts +20 -1
  27. package/dist/better-auth/generators/fastify/better-auth-module/generated/typed-templates.js +4 -1
  28. package/dist/better-auth/generators/fastify/better-auth-module/templates/module/services/auth.ts +16 -8
  29. package/dist/better-auth/generators/react/better-auth-hooks/better-auth-hooks.generator.d.ts +1 -1
  30. package/dist/better-auth/generators/react/better-auth-hooks/generated/index.d.ts +5 -4
  31. package/dist/better-auth/generators/react/better-auth-hooks/generated/template-paths.d.ts +1 -1
  32. package/dist/better-auth/generators/react/better-auth-hooks/generated/template-paths.js +1 -1
  33. package/dist/better-auth/generators/react/better-auth-hooks/generated/ts-import-providers.d.ts +2 -1
  34. package/dist/better-auth/generators/react/better-auth-hooks/generated/ts-import-providers.js +2 -1
  35. package/dist/better-auth/generators/react/better-auth-hooks/generated/typed-templates.d.ts +6 -6
  36. package/dist/better-auth/generators/react/better-auth-hooks/generated/typed-templates.js +13 -13
  37. package/dist/better-auth/generators/react/better-auth-hooks/templates/src/hooks/{use-required-user-id.ts → use-user-id-or-throw.ts} +1 -1
  38. package/dist/better-auth/generators/react/better-auth-pages/better-auth-pages.generator.d.ts +32 -0
  39. package/dist/better-auth/generators/react/better-auth-pages/generated/index.d.ts +192 -0
  40. package/dist/better-auth/generators/react/better-auth-pages/generated/template-renderers.d.ts +32 -0
  41. package/dist/better-auth/generators/react/better-auth-pages/generated/typed-templates.d.ts +320 -0
  42. package/dist/better-auth/generators/react/better-auth-pages/templates/routes/forgot-password.tsx +1 -4
  43. package/dist/better-auth/generators/react/react-better-auth/generated/index.d.ts +67 -2
  44. package/dist/better-auth/generators/react/react-better-auth/generated/template-renderers.d.ts +33 -1
  45. package/dist/better-auth/generators/react/react-better-auth/generated/ts-import-providers.d.ts +1 -0
  46. package/dist/better-auth/generators/react/react-better-auth/generated/ts-import-providers.js +1 -0
  47. package/dist/better-auth/generators/react/react-better-auth/generated/typed-templates.d.ts +33 -1
  48. package/dist/better-auth/generators/react/react-better-auth/react-better-auth.generator.d.ts +33 -1
  49. package/dist/better-auth/generators/react/react-better-auth/templates/src/app/auth-loaded-gate.tsx +12 -3
  50. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/admin-crud-invite-user-action.generator.d.ts +64 -0
  51. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/index.d.ts +64 -0
  52. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/template-renderers.d.ts +32 -0
  53. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/generated/typed-templates.d.ts +32 -0
  54. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/templates/routes/-components/invite-user-dialog.js +1 -2
  55. package/dist/local-auth/admin/generators/admin-crud-invite-user-action/templates/routes/-components/invite-user-dialog.tsx +1 -1
  56. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/admin-crud-manage-roles-action.generator.d.ts +64 -0
  57. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/generated/index.d.ts +64 -0
  58. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/generated/template-renderers.d.ts +32 -0
  59. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/generated/typed-templates.d.ts +32 -0
  60. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/templates/routes/-components/role-manager-dialog.js +1 -2
  61. package/dist/local-auth/admin/generators/admin-crud-manage-roles-action/templates/routes/-components/role-manager-dialog.tsx +1 -1
  62. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/admin-crud-reset-password-action.generator.d.ts +64 -0
  63. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/generated/index.d.ts +64 -0
  64. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/generated/template-renderers.d.ts +32 -0
  65. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/generated/typed-templates.d.ts +64 -0
  66. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/templates/routes/-components/password-reset-dialog.js +1 -2
  67. package/dist/local-auth/admin/generators/admin-crud-reset-password-action/templates/routes/-components/password-reset-dialog.tsx +1 -1
  68. package/dist/local-auth/admin/generators/admin-crud-roles-column/admin-crud-roles-column.generator.d.ts +32 -0
  69. package/dist/local-auth/core/generators/auth-email-password/auth-email-password.generator.d.ts +10 -7
  70. package/dist/local-auth/core/generators/auth-email-password/auth-email-password.generator.js +8 -11
  71. package/dist/local-auth/core/generators/auth-email-password/generated/index.d.ts +40 -13
  72. package/dist/local-auth/core/generators/auth-email-password/generated/template-renderers.d.ts +9 -0
  73. package/dist/local-auth/core/generators/auth-email-password/generated/template-renderers.js +6 -5
  74. package/dist/local-auth/core/generators/auth-email-password/generated/ts-import-providers.d.ts +1 -3
  75. package/dist/local-auth/core/generators/auth-email-password/generated/ts-import-providers.js +1 -2
  76. package/dist/local-auth/core/generators/auth-email-password/generated/typed-templates.d.ts +40 -16
  77. package/dist/local-auth/core/generators/auth-email-password/generated/typed-templates.js +11 -8
  78. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/email-verification.service.js +2 -3
  79. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/email-verification.service.ts +5 -3
  80. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/invite.service.js +17 -13
  81. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/invite.service.ts +25 -13
  82. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.js +2 -3
  83. package/dist/local-auth/core/generators/auth-email-password/templates/module/services/password-reset.service.ts +5 -3
  84. package/dist/local-auth/core/generators/auth-hooks/auth-hooks.generator.d.ts +273 -1
  85. package/dist/local-auth/core/generators/auth-hooks/generated/index.d.ts +549 -4
  86. package/dist/local-auth/core/generators/auth-hooks/generated/template-paths.d.ts +1 -1
  87. package/dist/local-auth/core/generators/auth-hooks/generated/template-paths.js +1 -1
  88. package/dist/local-auth/core/generators/auth-hooks/generated/template-renderers.d.ts +272 -0
  89. package/dist/local-auth/core/generators/auth-hooks/generated/template-renderers.js +4 -2
  90. package/dist/local-auth/core/generators/auth-hooks/generated/ts-import-providers.d.ts +2 -1
  91. package/dist/local-auth/core/generators/auth-hooks/generated/ts-import-providers.js +2 -1
  92. package/dist/local-auth/core/generators/auth-hooks/generated/typed-templates.d.ts +550 -6
  93. package/dist/local-auth/core/generators/auth-hooks/generated/typed-templates.js +15 -14
  94. package/dist/local-auth/core/generators/auth-hooks/templates/src/hooks/use-log-out.js +1 -1
  95. package/dist/local-auth/core/generators/auth-hooks/templates/src/hooks/use-log-out.ts +1 -1
  96. package/dist/local-auth/core/generators/auth-hooks/templates/src/hooks/use-session.d.ts +7 -0
  97. package/dist/local-auth/core/generators/auth-hooks/templates/src/hooks/use-session.ts +7 -0
  98. package/dist/local-auth/core/generators/auth-module/auth-module.generator.d.ts +19 -7
  99. package/dist/local-auth/core/generators/auth-module/auth-module.generator.js +3 -26
  100. package/dist/local-auth/core/generators/auth-module/generated/index.d.ts +48 -7
  101. package/dist/local-auth/core/generators/auth-module/generated/template-paths.d.ts +0 -1
  102. package/dist/local-auth/core/generators/auth-module/generated/template-paths.js +0 -1
  103. package/dist/local-auth/core/generators/auth-module/generated/template-renderers.d.ts +19 -1
  104. package/dist/local-auth/core/generators/auth-module/generated/template-renderers.js +7 -3
  105. package/dist/local-auth/core/generators/auth-module/generated/ts-import-providers.d.ts +1 -0
  106. package/dist/local-auth/core/generators/auth-module/generated/ts-import-providers.js +1 -0
  107. package/dist/local-auth/core/generators/auth-module/generated/typed-templates.d.ts +28 -7
  108. package/dist/local-auth/core/generators/auth-module/generated/typed-templates.js +5 -14
  109. package/dist/local-auth/core/generators/auth-module/templates/module/services/code-verification.service.d.ts +7 -6
  110. package/dist/local-auth/core/generators/auth-module/templates/module/services/code-verification.service.js +23 -17
  111. package/dist/local-auth/core/generators/auth-module/templates/module/services/code-verification.service.ts +25 -18
  112. package/dist/local-auth/core/generators/auth-module/templates/module/services/user-session.service.js +8 -9
  113. package/dist/local-auth/core/generators/auth-module/templates/module/services/user-session.service.ts +10 -11
  114. package/dist/local-auth/core/generators/auth-routes/auth-routes.generator.d.ts +32 -0
  115. package/dist/local-auth/core/generators/auth-routes/generated/index.d.ts +257 -0
  116. package/dist/local-auth/core/generators/auth-routes/generated/template-renderers.d.ts +32 -0
  117. package/dist/local-auth/core/generators/auth-routes/generated/ts-import-providers.d.ts +1 -0
  118. package/dist/local-auth/core/generators/auth-routes/generated/ts-import-providers.js +1 -0
  119. package/dist/local-auth/core/generators/auth-routes/generated/typed-templates.d.ts +320 -0
  120. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/accept-invite.js +12 -5
  121. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/accept-invite.tsx +14 -4
  122. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/forgot-password.js +1 -2
  123. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/forgot-password.tsx +1 -1
  124. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login-otp.js +4 -4
  125. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login-otp.tsx +4 -3
  126. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login.js +4 -4
  127. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/login.tsx +4 -3
  128. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/register.js +4 -4
  129. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/register.tsx +4 -3
  130. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/reset-password.js +1 -2
  131. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/reset-password.tsx +1 -1
  132. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/verify-email.js +1 -2
  133. package/dist/local-auth/core/generators/auth-routes/templates/routes/auth_/verify-email.tsx +1 -1
  134. package/dist/local-auth/core/generators/react-session/generated/index.d.ts +80 -7
  135. package/dist/local-auth/core/generators/react-session/generated/template-renderers.d.ts +33 -1
  136. package/dist/local-auth/core/generators/react-session/generated/ts-import-providers.d.ts +1 -0
  137. package/dist/local-auth/core/generators/react-session/generated/ts-import-providers.js +1 -0
  138. package/dist/local-auth/core/generators/react-session/generated/typed-templates.d.ts +92 -12
  139. package/dist/local-auth/core/generators/react-session/generated/typed-templates.js +5 -2
  140. package/dist/local-auth/core/generators/react-session/react-session.generator.d.ts +49 -1
  141. package/dist/local-auth/core/generators/react-session/react-session.generator.js +35 -1
  142. package/dist/local-auth/core/generators/react-session/templates/src/app/user-session-provider.js +17 -44
  143. package/dist/local-auth/core/generators/react-session/templates/src/app/user-session-provider.tsx +21 -49
  144. package/dist/local-auth/core/generators/react-session/templates/src/services/user-session-client.d.ts +43 -34
  145. package/dist/local-auth/core/generators/react-session/templates/src/services/user-session-client.js +96 -80
  146. package/dist/local-auth/core/generators/react-session/templates/src/services/user-session-client.ts +148 -82
  147. package/dist/local-auth/core/generators/seed-initial-user/generated/index.d.ts +0 -2
  148. package/dist/local-auth/core/generators/seed-initial-user/generated/template-renderers.d.ts +0 -1
  149. package/dist/local-auth/core/generators/seed-initial-user/generated/typed-templates.d.ts +0 -1
  150. package/dist/local-auth/core/generators/seed-initial-user/seed-initial-user.generator.d.ts +0 -1
  151. package/dist/local-auth/core/node.js +7 -7
  152. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/generated/index.d.ts +4 -3
  153. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/generated/template-paths.d.ts +1 -1
  154. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/generated/template-paths.js +1 -1
  155. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/generated/ts-import-providers.d.ts +2 -1
  156. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/generated/ts-import-providers.js +2 -1
  157. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/generated/typed-templates.d.ts +4 -4
  158. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/generated/typed-templates.js +13 -13
  159. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/placeholder-auth-hooks.generator.d.ts +1 -1
  160. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/templates/src/hooks/use-session.d.ts +1 -0
  161. package/dist/placeholder-auth/core/generators/placeholder-auth-hooks/templates/src/hooks/use-session.ts +2 -0
  162. package/dist/placeholder-auth/core/generators/placeholder-auth-module/generated/index.d.ts +1 -2
  163. package/dist/placeholder-auth/core/generators/placeholder-auth-module/generated/template-renderers.d.ts +0 -1
  164. package/dist/placeholder-auth/core/generators/placeholder-auth-module/generated/ts-import-providers.d.ts +1 -0
  165. package/dist/placeholder-auth/core/generators/placeholder-auth-module/generated/ts-import-providers.js +1 -0
  166. package/dist/placeholder-auth/core/generators/placeholder-auth-module/generated/typed-templates.d.ts +0 -1
  167. package/dist/placeholder-auth/core/generators/placeholder-auth-module/placeholder-auth-module.generator.d.ts +0 -1
  168. package/dist/web/assets/{_virtual_mf-localSharedImportMap___mfe_internal__plugin_mf_2_auth__mf_owner__1-CKKmnLep.js → _virtual_mf-localSharedImportMap___mfe_internal__plugin_mf_2_auth__mf_owner__1-Ckrp2j8j.js} +14 -14
  169. package/dist/web/assets/{_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib__loadShare__.js-Cx7TvZ_H.js → _virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib__loadShare__.js-DE4rTqEA.js} +198 -66
  170. package/dist/web/assets/{_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib_mf_1_web__loadShare__.js-D3Nvasea.js → _virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_project_mf_2_builder_mf_2_lib_mf_1_web__loadShare__.js-aFLESEyS.js} +1 -1
  171. package/dist/web/assets/{_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-C2GDE8Py.js → _virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_baseplate_mf_2_dev_mf_1_ui_mf_2_components__loadShare__.js-tY6BN-tn.js} +2844 -1738
  172. package/dist/web/assets/{_virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_tanstack_mf_1_react_mf_2_router__loadShare__.js-CiccpWjh.js → _virtual_mf___mfe_internal__plugin_mf_2_auth__mf_owner__1__loadShare___mf_0_tanstack_mf_1_react_mf_2_router__loadShare__.js-R9lCFRaW.js} +2 -2
  173. package/dist/web/assets/auth-DR6QxrAW.js +1 -0
  174. package/dist/web/assets/{common-CoLuMS7U.js → common-BsyRiQi3.js} +6 -6
  175. package/dist/web/assets/{common-N3skPbzk.js → common-CRwNlCMn.js} +10 -10
  176. package/dist/web/assets/{common-Co5lW_TK.js → common-CvqlRZC9.js} +12 -12
  177. package/dist/web/assets/{common-C8_sC5pp.js → common-D3atSs7O.js} +15 -15
  178. package/dist/web/assets/common-DuFyXa6l.js +36 -0
  179. package/dist/web/assets/common-islduJTj.js +43 -0
  180. package/dist/web/assets/{get-auth-plugin-definition-DyokUVjX.js → get-auth-plugin-definition-BgWWHl_Y.js} +3 -3
  181. package/dist/web/assets/{hostInit-BCYmw0H5.js → hostInit-CGEb3Tbe.js} +1 -1
  182. package/dist/web/assets/{mf-entry-bootstrap-0-3ede9334.js → mf-entry-bootstrap-0-ed392701.js} +1 -1
  183. package/dist/web/assets/{mf-entry-bootstrap-1-3da85eea.js → mf-entry-bootstrap-1-e2d80a25.js} +2 -2
  184. package/dist/web/assets/{mf-entry-bootstrap-2-32e24e11.js → mf-entry-bootstrap-2-ea90e6fe.js} +1 -1
  185. package/dist/web/assets/{mf-entry-bootstrap-3-a3cfea9d.js → mf-entry-bootstrap-3-5268230e.js} +2 -2
  186. package/dist/web/assets/{models-BcPOQC5p.js → models-BOeSYfRn.js} +4 -4
  187. package/dist/web/assets/{models-BcUgOGGn.js → models-DF6DoXt6.js} +4 -4
  188. package/dist/web/assets/{plugin-definition-D1EImXIf.js → plugin-definition--k0VAeK3.js} +9 -9
  189. package/dist/web/assets/{plugin-definition-lw-gB4hU.js → plugin-definition-CMwSlxsJ.js} +3 -3
  190. package/dist/web/assets/{styles-EOyEbGA4.js → styles-DZYLavnA.js} +8 -8
  191. package/dist/web/assets/{virtualExposes-DWORnjyA.js → virtualExposes-DnIi4GOx.js} +1 -1
  192. package/dist/web/assets/{virtual_mf-REMOTE_ENTRY_ID___mfe_internal__plugin-auth__remoteEntry_js-t-KnBiUh.js → virtual_mf-REMOTE_ENTRY_ID___mfe_internal__plugin-auth__remoteEntry_js-rNmzkDAw.js} +3 -3
  193. package/dist/web/assets/{virtual_mf-exposes___mfe_internal__plugin-auth__remoteEntry_js-DZfE3QCR.js → virtual_mf-exposes___mfe_internal__plugin-auth__remoteEntry_js-E86pU-VB.js} +13 -13
  194. package/dist/web/assets/{web-Dgb85jhs.js → web-BKsbE-x8.js} +41 -41
  195. package/dist/web/assets/{web-xJ-GnSkC.js → web-BNZ-0TYy.js} +25 -25
  196. package/dist/web/assets/{web-kaD9AzNS.js → web-C6j3Z4Pi.js} +8 -8
  197. package/dist/web/assets/{web-CBVepebK.js → web-DPZssHx1.js} +19 -19
  198. package/dist/web/assets/{web-PqAcfBSy.js → web-DiHdy5Ov.js} +7 -7
  199. package/dist/web/assets/{web-EDeSquSP.js → web-RWlatCpa.js} +19 -19
  200. package/dist/web/assets/{web-RhChfBw_.js → web-f-cndKO0.js} +17 -17
  201. package/dist/web/index.html +4 -4
  202. package/dist/web/remoteEntry.js +1 -1
  203. package/package.json +13 -13
  204. package/dist/local-auth/core/generators/auth-module/templates/module/utils/cookie-signer.d.ts +0 -38
  205. package/dist/local-auth/core/generators/auth-module/templates/module/utils/cookie-signer.js +0 -71
  206. package/dist/local-auth/core/generators/auth-module/templates/module/utils/cookie-signer.ts +0 -77
  207. package/dist/web/assets/auth-CsHp2bQi.js +0 -1
  208. package/dist/web/assets/common-BGTuTgx7.js +0 -43
  209. package/dist/web/assets/common-Dueu_1NG.js +0 -36
@@ -16,8 +16,8 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_RENDERERS: {
16
16
  isTypeOnly: true;
17
17
  };
18
18
  useLogOut: {};
19
- useRequiredUserId: {};
20
19
  useSession: {};
20
+ useUserIdOrThrow: {};
21
21
  AuthRole: {
22
22
  isTypeOnly: true;
23
23
  };
@@ -39,6 +39,7 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_RENDERERS: {
39
39
  isTypeOnly: true;
40
40
  };
41
41
  Alert: {};
42
+ AlertAction: {};
42
43
  AlertDescription: {};
43
44
  AlertTitle: {};
44
45
  Autocomplete: {};
@@ -68,6 +69,7 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_RENDERERS: {
68
69
  buttonVariants: {};
69
70
  Calendar: {};
70
71
  Card: {};
72
+ CardAction: {};
71
73
  CardContent: {};
72
74
  CardDescription: {};
73
75
  CardFooter: {};
@@ -194,6 +196,10 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_RENDERERS: {
194
196
  NotFoundCard: {};
195
197
  NumberField: {};
196
198
  NumberFieldController: {};
199
+ PageHeader: {};
200
+ PageHeaderActions: {};
201
+ PageHeaderDescription: {};
202
+ PageHeaderTitle: {};
197
203
  Popover: {};
198
204
  PopoverContent: {};
199
205
  PopoverTrigger: {};
@@ -203,6 +209,11 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_RENDERERS: {
203
209
  isTypeOnly: true;
204
210
  };
205
211
  ScrollArea: {};
212
+ Section: {};
213
+ SectionActions: {};
214
+ SectionDescription: {};
215
+ SectionHeader: {};
216
+ SectionTitle: {};
206
217
  Select: {};
207
218
  SelectField: {};
208
219
  SelectFieldController: {};
@@ -258,7 +269,27 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_RENDERERS: {
258
269
  Textarea: {};
259
270
  TextareaField: {};
260
271
  TextareaFieldController: {};
272
+ Toast: {};
273
+ toast: {};
274
+ ToastAction: {};
275
+ ToastClose: {};
276
+ ToastContent: {};
277
+ ToastDescription: {};
261
278
  Toaster: {};
279
+ toastManager: {};
280
+ ToastOptions: {
281
+ isTypeOnly: true;
282
+ };
283
+ ToastPortal: {};
284
+ ToastProvider: {};
285
+ ToastTitle: {};
286
+ ToastType: {
287
+ isTypeOnly: true;
288
+ };
289
+ ToastUpdateOptions: {
290
+ isTypeOnly: true;
291
+ };
292
+ ToastViewport: {};
262
293
  Tooltip: {};
263
294
  TooltipContent: {};
264
295
  TooltipProvider: {};
@@ -271,6 +302,7 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_RENDERERS: {
271
302
  useConfirmDialogState: {};
272
303
  useControlledState: {};
273
304
  useControllerMerged: {};
305
+ useFieldIds: {};
274
306
  useIsMobile: {};
275
307
  useSidebar: {};
276
308
  }>>;
@@ -9,6 +9,7 @@ export declare const reactSessionImportsProvider: import("@baseplate-dev/sync").
9
9
  userSessionClient: {};
10
10
  }>>;
11
11
  export declare const LOCAL_AUTH_CORE_REACT_SESSION_IMPORTS: {
12
+ generatorName: string;
12
13
  task: import("@baseplate-dev/sync").GeneratorTask<{
13
14
  reactSessionImports: import("@baseplate-dev/sync").ProviderExport<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
14
15
  UserSessionClient: {};
@@ -25,6 +25,7 @@ const localAuthCoreReactSessionImportsTask = createGeneratorTask({
25
25
  },
26
26
  });
27
27
  export const LOCAL_AUTH_CORE_REACT_SESSION_IMPORTS = {
28
+ generatorName: '@baseplate-dev/plugin-auth#local-auth/core/react-session',
28
29
  task: localAuthCoreReactSessionImportsTask,
29
30
  };
30
31
  //# sourceMappingURL=ts-import-providers.js.map
@@ -1,21 +1,29 @@
1
1
  export declare const mainGroup: {
2
2
  userSessionClient: import("@baseplate-dev/core-generators").TsTemplateFile<{}, {
3
- reactUtilsImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
4
- getSafeLocalStorage: {};
5
- }>>;
6
- }, Record<never, Record<never, never>>>;
7
- userSessionProvider: import("@baseplate-dev/core-generators").TsTemplateFile<{}, {
8
3
  authHooksImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
9
4
  SessionData: {
10
5
  isTypeOnly: true;
11
6
  };
12
7
  useLogOut: {};
13
- useRequiredUserId: {};
14
8
  useSession: {};
9
+ useUserIdOrThrow: {};
15
10
  AuthRole: {
16
11
  isTypeOnly: true;
17
12
  };
18
13
  }>>;
14
+ graphqlImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
15
+ '*': {};
16
+ graphql: {};
17
+ readFragment: {};
18
+ FragmentType: {
19
+ isTypeOnly: true;
20
+ };
21
+ }>>;
22
+ reactUtilsImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
23
+ getSafeLocalStorage: {};
24
+ }>>;
25
+ }, Record<never, Record<never, never>>>;
26
+ userSessionProvider: import("@baseplate-dev/core-generators").TsTemplateFile<{}, {
19
27
  graphqlImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
20
28
  '*': {};
21
29
  graphql: {};
@@ -32,6 +40,7 @@ export declare const mainGroup: {
32
40
  isTypeOnly: true;
33
41
  };
34
42
  Alert: {};
43
+ AlertAction: {};
35
44
  AlertDescription: {};
36
45
  AlertTitle: {};
37
46
  Autocomplete: {};
@@ -61,6 +70,7 @@ export declare const mainGroup: {
61
70
  buttonVariants: {};
62
71
  Calendar: {};
63
72
  Card: {};
73
+ CardAction: {};
64
74
  CardContent: {};
65
75
  CardDescription: {};
66
76
  CardFooter: {};
@@ -187,6 +197,10 @@ export declare const mainGroup: {
187
197
  NotFoundCard: {};
188
198
  NumberField: {};
189
199
  NumberFieldController: {};
200
+ PageHeader: {};
201
+ PageHeaderActions: {};
202
+ PageHeaderDescription: {};
203
+ PageHeaderTitle: {};
190
204
  Popover: {};
191
205
  PopoverContent: {};
192
206
  PopoverTrigger: {};
@@ -196,6 +210,11 @@ export declare const mainGroup: {
196
210
  isTypeOnly: true;
197
211
  };
198
212
  ScrollArea: {};
213
+ Section: {};
214
+ SectionActions: {};
215
+ SectionDescription: {};
216
+ SectionHeader: {};
217
+ SectionTitle: {};
199
218
  Select: {};
200
219
  SelectField: {};
201
220
  SelectFieldController: {};
@@ -251,7 +270,27 @@ export declare const mainGroup: {
251
270
  Textarea: {};
252
271
  TextareaField: {};
253
272
  TextareaFieldController: {};
273
+ Toast: {};
274
+ toast: {};
275
+ ToastAction: {};
276
+ ToastClose: {};
277
+ ToastContent: {};
278
+ ToastDescription: {};
254
279
  Toaster: {};
280
+ toastManager: {};
281
+ ToastOptions: {
282
+ isTypeOnly: true;
283
+ };
284
+ ToastPortal: {};
285
+ ToastProvider: {};
286
+ ToastTitle: {};
287
+ ToastType: {
288
+ isTypeOnly: true;
289
+ };
290
+ ToastUpdateOptions: {
291
+ isTypeOnly: true;
292
+ };
293
+ ToastViewport: {};
255
294
  Tooltip: {};
256
295
  TooltipContent: {};
257
296
  TooltipProvider: {};
@@ -264,6 +303,7 @@ export declare const mainGroup: {
264
303
  useConfirmDialogState: {};
265
304
  useControlledState: {};
266
305
  useControllerMerged: {};
306
+ useFieldIds: {};
267
307
  useIsMobile: {};
268
308
  useSidebar: {};
269
309
  }>>;
@@ -279,22 +319,30 @@ export declare const mainGroup: {
279
319
  export declare const LOCAL_AUTH_CORE_REACT_SESSION_TEMPLATES: {
280
320
  mainGroup: {
281
321
  userSessionClient: import("@baseplate-dev/core-generators").TsTemplateFile<{}, {
282
- reactUtilsImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
283
- getSafeLocalStorage: {};
284
- }>>;
285
- }, Record<never, Record<never, never>>>;
286
- userSessionProvider: import("@baseplate-dev/core-generators").TsTemplateFile<{}, {
287
322
  authHooksImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
288
323
  SessionData: {
289
324
  isTypeOnly: true;
290
325
  };
291
326
  useLogOut: {};
292
- useRequiredUserId: {};
293
327
  useSession: {};
328
+ useUserIdOrThrow: {};
294
329
  AuthRole: {
295
330
  isTypeOnly: true;
296
331
  };
297
332
  }>>;
333
+ graphqlImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
334
+ '*': {};
335
+ graphql: {};
336
+ readFragment: {};
337
+ FragmentType: {
338
+ isTypeOnly: true;
339
+ };
340
+ }>>;
341
+ reactUtilsImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
342
+ getSafeLocalStorage: {};
343
+ }>>;
344
+ }, Record<never, Record<never, never>>>;
345
+ userSessionProvider: import("@baseplate-dev/core-generators").TsTemplateFile<{}, {
298
346
  graphqlImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
299
347
  '*': {};
300
348
  graphql: {};
@@ -311,6 +359,7 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_TEMPLATES: {
311
359
  isTypeOnly: true;
312
360
  };
313
361
  Alert: {};
362
+ AlertAction: {};
314
363
  AlertDescription: {};
315
364
  AlertTitle: {};
316
365
  Autocomplete: {};
@@ -340,6 +389,7 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_TEMPLATES: {
340
389
  buttonVariants: {};
341
390
  Calendar: {};
342
391
  Card: {};
392
+ CardAction: {};
343
393
  CardContent: {};
344
394
  CardDescription: {};
345
395
  CardFooter: {};
@@ -466,6 +516,10 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_TEMPLATES: {
466
516
  NotFoundCard: {};
467
517
  NumberField: {};
468
518
  NumberFieldController: {};
519
+ PageHeader: {};
520
+ PageHeaderActions: {};
521
+ PageHeaderDescription: {};
522
+ PageHeaderTitle: {};
469
523
  Popover: {};
470
524
  PopoverContent: {};
471
525
  PopoverTrigger: {};
@@ -475,6 +529,11 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_TEMPLATES: {
475
529
  isTypeOnly: true;
476
530
  };
477
531
  ScrollArea: {};
532
+ Section: {};
533
+ SectionActions: {};
534
+ SectionDescription: {};
535
+ SectionHeader: {};
536
+ SectionTitle: {};
478
537
  Select: {};
479
538
  SelectField: {};
480
539
  SelectFieldController: {};
@@ -530,7 +589,27 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_TEMPLATES: {
530
589
  Textarea: {};
531
590
  TextareaField: {};
532
591
  TextareaFieldController: {};
592
+ Toast: {};
593
+ toast: {};
594
+ ToastAction: {};
595
+ ToastClose: {};
596
+ ToastContent: {};
597
+ ToastDescription: {};
533
598
  Toaster: {};
599
+ toastManager: {};
600
+ ToastOptions: {
601
+ isTypeOnly: true;
602
+ };
603
+ ToastPortal: {};
604
+ ToastProvider: {};
605
+ ToastTitle: {};
606
+ ToastType: {
607
+ isTypeOnly: true;
608
+ };
609
+ ToastUpdateOptions: {
610
+ isTypeOnly: true;
611
+ };
612
+ ToastViewport: {};
534
613
  Tooltip: {};
535
614
  TooltipContent: {};
536
615
  TooltipProvider: {};
@@ -543,6 +622,7 @@ export declare const LOCAL_AUTH_CORE_REACT_SESSION_TEMPLATES: {
543
622
  useConfirmDialogState: {};
544
623
  useControlledState: {};
545
624
  useControllerMerged: {};
625
+ useFieldIds: {};
546
626
  useIsMobile: {};
547
627
  useSidebar: {};
548
628
  }>>;
@@ -5,7 +5,11 @@ import { localAuthHooksImportsProvider } from '#src/local-auth/core/generators/a
5
5
  const userSessionClient = createTsTemplateFile({
6
6
  fileOptions: { kind: 'singleton' },
7
7
  group: 'main',
8
- importMapProviders: { reactUtilsImports: reactUtilsImportsProvider },
8
+ importMapProviders: {
9
+ authHooksImports: authHooksImportsProvider,
10
+ graphqlImports: graphqlImportsProvider,
11
+ reactUtilsImports: reactUtilsImportsProvider,
12
+ },
9
13
  name: 'user-session-client',
10
14
  projectExports: { UserSessionClient: {}, userSessionClient: {} },
11
15
  source: {
@@ -17,7 +21,6 @@ const userSessionProvider = createTsTemplateFile({
17
21
  fileOptions: { kind: 'singleton' },
18
22
  group: 'main',
19
23
  importMapProviders: {
20
- authHooksImports: authHooksImportsProvider,
21
24
  graphqlImports: graphqlImportsProvider,
22
25
  localAuthHooksImports: localAuthHooksImportsProvider,
23
26
  reactComponentsImports: reactComponentsImportsProvider,
@@ -23,8 +23,8 @@ export declare const reactSessionGenerator: import("@baseplate-dev/sync").Genera
23
23
  isTypeOnly: true;
24
24
  };
25
25
  useLogOut: {};
26
- useRequiredUserId: {};
27
26
  useSession: {};
27
+ useUserIdOrThrow: {};
28
28
  AuthRole: {
29
29
  isTypeOnly: true;
30
30
  };
@@ -46,6 +46,7 @@ export declare const reactSessionGenerator: import("@baseplate-dev/sync").Genera
46
46
  isTypeOnly: true;
47
47
  };
48
48
  Alert: {};
49
+ AlertAction: {};
49
50
  AlertDescription: {};
50
51
  AlertTitle: {};
51
52
  Autocomplete: {};
@@ -75,6 +76,7 @@ export declare const reactSessionGenerator: import("@baseplate-dev/sync").Genera
75
76
  buttonVariants: {};
76
77
  Calendar: {};
77
78
  Card: {};
79
+ CardAction: {};
78
80
  CardContent: {};
79
81
  CardDescription: {};
80
82
  CardFooter: {};
@@ -201,6 +203,10 @@ export declare const reactSessionGenerator: import("@baseplate-dev/sync").Genera
201
203
  NotFoundCard: {};
202
204
  NumberField: {};
203
205
  NumberFieldController: {};
206
+ PageHeader: {};
207
+ PageHeaderActions: {};
208
+ PageHeaderDescription: {};
209
+ PageHeaderTitle: {};
204
210
  Popover: {};
205
211
  PopoverContent: {};
206
212
  PopoverTrigger: {};
@@ -210,6 +216,11 @@ export declare const reactSessionGenerator: import("@baseplate-dev/sync").Genera
210
216
  isTypeOnly: true;
211
217
  };
212
218
  ScrollArea: {};
219
+ Section: {};
220
+ SectionActions: {};
221
+ SectionDescription: {};
222
+ SectionHeader: {};
223
+ SectionTitle: {};
213
224
  Select: {};
214
225
  SelectField: {};
215
226
  SelectFieldController: {};
@@ -265,7 +276,27 @@ export declare const reactSessionGenerator: import("@baseplate-dev/sync").Genera
265
276
  Textarea: {};
266
277
  TextareaField: {};
267
278
  TextareaFieldController: {};
279
+ Toast: {};
280
+ toast: {};
281
+ ToastAction: {};
282
+ ToastClose: {};
283
+ ToastContent: {};
284
+ ToastDescription: {};
268
285
  Toaster: {};
286
+ toastManager: {};
287
+ ToastOptions: {
288
+ isTypeOnly: true;
289
+ };
290
+ ToastPortal: {};
291
+ ToastProvider: {};
292
+ ToastTitle: {};
293
+ ToastType: {
294
+ isTypeOnly: true;
295
+ };
296
+ ToastUpdateOptions: {
297
+ isTypeOnly: true;
298
+ };
299
+ ToastViewport: {};
269
300
  Tooltip: {};
270
301
  TooltipContent: {};
271
302
  TooltipProvider: {};
@@ -278,6 +309,7 @@ export declare const reactSessionGenerator: import("@baseplate-dev/sync").Genera
278
309
  useConfirmDialogState: {};
279
310
  useControlledState: {};
280
311
  useControllerMerged: {};
312
+ useFieldIds: {};
281
313
  useIsMobile: {};
282
314
  useSidebar: {};
283
315
  }>>;
@@ -300,6 +332,22 @@ export declare const reactSessionGenerator: import("@baseplate-dev/sync").Genera
300
332
  }>, "getValues">>;
301
333
  paths: import("@baseplate-dev/sync").ProviderType<import("./generated/template-paths.js").LocalAuthCoreReactSessionPaths>;
302
334
  }, any>;
335
+ reactRouterConfig: import("@baseplate-dev/sync").GeneratorTask<any, {
336
+ reactRouterConfig: import("@baseplate-dev/sync").ProviderType<Omit<import("@baseplate-dev/utils").FieldMap<{
337
+ routerSetupFragments: import("@baseplate-dev/utils").MapContainer<string, import("@baseplate-dev/core-generators").TsCodeFragment>;
338
+ routerBodyFragments: import("@baseplate-dev/utils").MapContainer<string, import("@baseplate-dev/core-generators").TsCodeFragment>;
339
+ rootLayoutComponent: import("@baseplate-dev/utils").ScalarContainer<import("@baseplate-dev/core-generators").TsCodeFragment | undefined>;
340
+ rootContextFields: import("@baseplate-dev/utils").NamedArrayFieldContainer<import("@baseplate-dev/react-generators").RootRouteContextField>;
341
+ errorComponentHeaderFragments: import("@baseplate-dev/utils").MapContainer<string, import("@baseplate-dev/core-generators").TsCodeFragment>;
342
+ errorComponentBodyFragments: import("@baseplate-dev/utils").MapContainer<string, import("@baseplate-dev/core-generators").TsCodeFragment>;
343
+ }>, "getValues">>;
344
+ reactRouterImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
345
+ AppRoutes: {};
346
+ ErrorComponent: {};
347
+ router: {};
348
+ }>>;
349
+ paths: import("@baseplate-dev/sync").ProviderType<import("./generated/template-paths.js").LocalAuthCoreReactSessionPaths>;
350
+ }, any>;
303
351
  main: import("@baseplate-dev/sync").GeneratorTask<any, {
304
352
  renderers: import("@baseplate-dev/sync").ProviderType<import("./generated/template-renderers.js").LocalAuthCoreReactSessionRenderers>;
305
353
  }, any>;
@@ -1,5 +1,5 @@
1
1
  import { TsCodeUtils, tsImportBuilder } from '@baseplate-dev/core-generators';
2
- import { reactAppConfigProvider } from '@baseplate-dev/react-generators';
2
+ import { reactAppConfigProvider, reactRouterConfigProvider, reactRouterImportsProvider, } from '@baseplate-dev/react-generators';
3
3
  import { createGenerator, createGeneratorTask } from '@baseplate-dev/sync';
4
4
  import { z } from 'zod';
5
5
  import { LOCAL_AUTH_CORE_REACT_SESSION_GENERATED as GENERATED_TEMPLATES } from './generated/index.js';
@@ -29,6 +29,40 @@ export const reactSessionGenerator = createGenerator({
29
29
  });
30
30
  },
31
31
  }),
32
+ reactRouterConfig: createGeneratorTask({
33
+ dependencies: {
34
+ reactRouterConfig: reactRouterConfigProvider,
35
+ reactRouterImports: reactRouterImportsProvider,
36
+ paths: GENERATED_TEMPLATES.paths.provider,
37
+ },
38
+ run({ reactRouterConfig, reactRouterImports, paths }) {
39
+ reactRouterConfig.routerSetupFragments.set('auth-session-router-sync', TsCodeUtils.templateWithImports([
40
+ tsImportBuilder(['useEffect']).from('react'),
41
+ tsImportBuilder(['userSessionClient']).from(paths.userSessionClient),
42
+ reactRouterImports.router.declaration(),
43
+ ]) `
44
+ // RouterProvider only copies the context into the router when it renders, so push
45
+ // the session in as soon as it changes. Otherwise a navigation triggered in the
46
+ // same tick as a sign in or sign out runs its guards against the old session.
47
+ useEffect(
48
+ () =>
49
+ userSessionClient.subscribe(() => {
50
+ const currentSession = userSessionClient.getSession();
51
+ if (!currentSession) return;
52
+ router.update({
53
+ ...router.options,
54
+ context: {
55
+ ...router.options.context,
56
+ session: currentSession,
57
+ userId: currentSession.userId,
58
+ },
59
+ });
60
+ }),
61
+ [],
62
+ );
63
+ `);
64
+ },
65
+ }),
32
66
  main: createGeneratorTask({
33
67
  dependencies: {
34
68
  renderers: GENERATED_TEMPLATES.renderers.provider,
@@ -5,7 +5,7 @@ import { AuthSessionContext } from '%localAuthHooksImports';
5
5
  import { ErrorableLoader } from '%reactComponentsImports';
6
6
  import { logError } from '%reactErrorImports';
7
7
  import { useApolloClient, useQuery } from '@apollo/client/react';
8
- import { useEffect, useMemo, useState } from 'react';
8
+ import { useEffect, useRef, useSyncExternalStore } from 'react';
9
9
  const getCurrentUserSessionQuery = graphql(`
10
10
  query CurrentUserSession {
11
11
  currentUserSession {
@@ -15,55 +15,28 @@ const getCurrentUserSessionQuery = graphql(`
15
15
  }
16
16
  `);
17
17
  export function UserSessionProvider({ children, }) {
18
- const [cachedUserId, setCachedUserId] = useState(userSessionClient.getUserId());
19
18
  const apolloClient = useApolloClient();
19
+ // The session comes from the session client rather than the query, since signing
20
+ // in clears the Apollo cache and would otherwise blank the session mid-transition.
21
+ const session = useSyncExternalStore(userSessionClient.subscribe, userSessionClient.getSession);
20
22
  const { data: sessionQueryData, error: sessionError } = useQuery(getCurrentUserSessionQuery, {
21
23
  notifyOnNetworkStatusChange: true,
22
24
  });
23
- const session = useMemo(() => {
24
- if (!sessionQueryData && cachedUserId) {
25
- // wait for server to fetch before loading session
26
- return undefined;
27
- }
28
- if (!sessionQueryData?.currentUserSession) {
29
- return {
30
- userId: undefined,
31
- isAuthenticated: false,
32
- roles: ['public'],
33
- };
34
- }
35
- return {
36
- userId: sessionQueryData.currentUserSession.userId,
37
- isAuthenticated: true,
38
- roles: sessionQueryData.currentUserSession.roles,
39
- };
40
- }, [sessionQueryData, cachedUserId]);
41
25
  useEffect(() => {
42
- const unsubscribe = userSessionClient.onUserIdChange((newUserId) => {
43
- if (newUserId !== cachedUserId) {
44
- setCachedUserId(newUserId);
45
- // Make sure to reset the Apollo client to clear any cached data
46
- apolloClient.resetStore().catch(logError);
47
- }
48
- });
49
- return unsubscribe;
50
- }, [cachedUserId, apolloClient]);
51
- useEffect(() => {
52
- // Once we have server session data, sync it with the client
53
- if (sessionQueryData) {
54
- const serverUserId = sessionQueryData.currentUserSession?.userId;
55
- const clientUserId = userSessionClient.getUserId();
56
- // If server says different user (or no user), update the client
57
- if (serverUserId !== clientUserId) {
58
- if (serverUserId) {
59
- userSessionClient.signIn(serverUserId);
60
- }
61
- else {
62
- userSessionClient.signOut();
63
- }
64
- }
65
- }
26
+ if (!sessionQueryData)
27
+ return;
28
+ userSessionClient.setServerSession(sessionQueryData.currentUserSession ?? undefined);
66
29
  }, [sessionQueryData]);
30
+ // The Apollo cache belongs to exactly one identity, so reset it whenever the
31
+ // identity changes and no data fetched for the previous user survives.
32
+ const cacheUserId = useRef(userSessionClient.getPersistedUserId());
33
+ useEffect(() => {
34
+ if (!session || session.userId === cacheUserId.current)
35
+ return;
36
+ cacheUserId.current = session.userId;
37
+ apolloClient.resetStore().catch(logError);
38
+ }, [session, apolloClient]);
39
+ // Only reachable before the first session is known, when nothing has mounted yet.
67
40
  if (!session) {
68
41
  return _jsx(ErrorableLoader, { error: sessionError });
69
42
  }
@@ -1,6 +1,5 @@
1
1
  // @ts-nocheck
2
2
 
3
- import type { SessionData } from '%authHooksImports';
4
3
  import type React from 'react';
5
4
 
6
5
  import { userSessionClient } from '$userSessionClient';
@@ -9,7 +8,7 @@ import { AuthSessionContext } from '%localAuthHooksImports';
9
8
  import { ErrorableLoader } from '%reactComponentsImports';
10
9
  import { logError } from '%reactErrorImports';
11
10
  import { useApolloClient, useQuery } from '@apollo/client/react';
12
- import { useEffect, useMemo, useState } from 'react';
11
+ import { useEffect, useRef, useSyncExternalStore } from 'react';
13
12
 
14
13
  interface UserSessionProviderProps {
15
14
  children: React.ReactNode;
@@ -27,11 +26,15 @@ const getCurrentUserSessionQuery = graphql(`
27
26
  export function UserSessionProvider({
28
27
  children,
29
28
  }: UserSessionProviderProps): React.JSX.Element {
30
- const [cachedUserId, setCachedUserId] = useState<string | undefined>(
31
- userSessionClient.getUserId(),
32
- );
33
29
  const apolloClient = useApolloClient();
34
30
 
31
+ // The session comes from the session client rather than the query, since signing
32
+ // in clears the Apollo cache and would otherwise blank the session mid-transition.
33
+ const session = useSyncExternalStore(
34
+ userSessionClient.subscribe,
35
+ userSessionClient.getSession,
36
+ );
37
+
35
38
  const { data: sessionQueryData, error: sessionError } = useQuery(
36
39
  getCurrentUserSessionQuery,
37
40
  {
@@ -39,54 +42,23 @@ export function UserSessionProvider({
39
42
  },
40
43
  );
41
44
 
42
- const session = useMemo((): SessionData | undefined => {
43
- if (!sessionQueryData && cachedUserId) {
44
- // wait for server to fetch before loading session
45
- return undefined;
46
- }
47
- if (!sessionQueryData?.currentUserSession) {
48
- return {
49
- userId: undefined,
50
- isAuthenticated: false,
51
- roles: ['public'],
52
- };
53
- }
54
- return {
55
- userId: sessionQueryData.currentUserSession.userId,
56
- isAuthenticated: true,
57
- roles: sessionQueryData.currentUserSession.roles,
58
- };
59
- }, [sessionQueryData, cachedUserId]);
60
-
61
45
  useEffect(() => {
62
- const unsubscribe = userSessionClient.onUserIdChange((newUserId) => {
63
- if (newUserId !== cachedUserId) {
64
- setCachedUserId(newUserId);
65
- // Make sure to reset the Apollo client to clear any cached data
66
- apolloClient.resetStore().catch(logError);
67
- }
68
- });
69
-
70
- return unsubscribe;
71
- }, [cachedUserId, apolloClient]);
46
+ if (!sessionQueryData) return;
47
+ userSessionClient.setServerSession(
48
+ sessionQueryData.currentUserSession ?? undefined,
49
+ );
50
+ }, [sessionQueryData]);
72
51
 
52
+ // The Apollo cache belongs to exactly one identity, so reset it whenever the
53
+ // identity changes and no data fetched for the previous user survives.
54
+ const cacheUserId = useRef(userSessionClient.getPersistedUserId());
73
55
  useEffect(() => {
74
- // Once we have server session data, sync it with the client
75
- if (sessionQueryData) {
76
- const serverUserId = sessionQueryData.currentUserSession?.userId;
77
- const clientUserId = userSessionClient.getUserId();
78
-
79
- // If server says different user (or no user), update the client
80
- if (serverUserId !== clientUserId) {
81
- if (serverUserId) {
82
- userSessionClient.signIn(serverUserId);
83
- } else {
84
- userSessionClient.signOut();
85
- }
86
- }
87
- }
88
- }, [sessionQueryData]);
56
+ if (!session || session.userId === cacheUserId.current) return;
57
+ cacheUserId.current = session.userId;
58
+ apolloClient.resetStore().catch(logError);
59
+ }, [session, apolloClient]);
89
60
 
61
+ // Only reachable before the first session is known, when nothing has mounted yet.
90
62
  if (!session) {
91
63
  return <ErrorableLoader error={sessionError} />;
92
64
  }