zudoku 0.0.0-z6e949a6d → 0.0.0-z8ac421f0

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/dist/app/main.js +1 -1
  2. package/dist/app/main.js.map +1 -1
  3. package/dist/config/create-plugin.d.ts +2 -0
  4. package/dist/config/create-plugin.js +55 -0
  5. package/dist/config/create-plugin.js.map +1 -0
  6. package/dist/config/loader.js +2 -2
  7. package/dist/config/loader.js.map +1 -1
  8. package/dist/config/validators/InputNavigationSchema.d.ts +67 -67
  9. package/dist/config/validators/NavigationSchema.js +1 -0
  10. package/dist/config/validators/NavigationSchema.js.map +1 -1
  11. package/dist/config/validators/validate.d.ts +5 -4
  12. package/dist/config/validators/validate.js +2 -0
  13. package/dist/config/validators/validate.js.map +1 -1
  14. package/dist/flat-config.d.ts +1 -0
  15. package/dist/index.d.ts +2 -1
  16. package/dist/index.js +1 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/lib/components/Bootstrap.js +1 -2
  19. package/dist/lib/components/Bootstrap.js.map +1 -1
  20. package/dist/lib/components/Slot.test.js +1 -1
  21. package/dist/lib/components/Slot.test.js.map +1 -1
  22. package/dist/lib/components/Zudoku.d.ts +4 -1
  23. package/dist/lib/components/Zudoku.js +4 -7
  24. package/dist/lib/components/Zudoku.js.map +1 -1
  25. package/dist/lib/components/context/ZudokuContext.d.ts +2 -4
  26. package/dist/lib/components/context/ZudokuContext.js +2 -2
  27. package/dist/lib/components/context/ZudokuContext.js.map +1 -1
  28. package/dist/lib/components/context/ZudokuProvider.js +1 -1
  29. package/dist/lib/components/context/ZudokuProvider.js.map +1 -1
  30. package/dist/lib/components/context/ZudokuReactContext.d.ts +11 -0
  31. package/dist/lib/components/context/ZudokuReactContext.js +4 -0
  32. package/dist/lib/components/context/ZudokuReactContext.js.map +1 -0
  33. package/dist/lib/core/ZudokuContext.d.ts +2 -1
  34. package/dist/lib/core/ZudokuContext.js +3 -1
  35. package/dist/lib/core/ZudokuContext.js.map +1 -1
  36. package/dist/lib/core/__internal.d.ts +1 -0
  37. package/dist/lib/core/__internal.js +2 -0
  38. package/dist/lib/core/__internal.js.map +1 -1
  39. package/dist/lib/core/plugins.d.ts +5 -1
  40. package/dist/lib/core/plugins.js.map +1 -1
  41. package/dist/lib/core/transform-config.d.ts +4 -2
  42. package/dist/lib/core/transform-config.js +33 -13
  43. package/dist/lib/core/transform-config.js.map +1 -1
  44. package/dist/lib/core/transform-config.test.d.ts +1 -0
  45. package/dist/lib/core/transform-config.test.js +83 -0
  46. package/dist/lib/core/transform-config.test.js.map +1 -0
  47. package/dist/lib/errors/ErrorAlert.js +1 -2
  48. package/dist/lib/errors/ErrorAlert.js.map +1 -1
  49. package/dist/lib/hooks/useEvent.test.js +1 -1
  50. package/dist/lib/hooks/useEvent.test.js.map +1 -1
  51. package/dist/lib/plugins/openapi/ParamInfos.js +8 -5
  52. package/dist/lib/plugins/openapi/ParamInfos.js.map +1 -1
  53. package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
  54. package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
  55. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js +2 -2
  56. package/dist/lib/plugins/openapi/schema/SchemaPropertyItem.js.map +1 -1
  57. package/dist/lib/ui/Alert.d.ts +3 -2
  58. package/dist/lib/ui/Alert.js +9 -5
  59. package/dist/lib/ui/Alert.js.map +1 -1
  60. package/dist/lib/ui/Secret.js +2 -2
  61. package/dist/lib/ui/Secret.js.map +1 -1
  62. package/dist/lib/util/flattenAllOf.js +6 -0
  63. package/dist/lib/util/flattenAllOf.js.map +1 -1
  64. package/dist/lib/util/flattenAllOf.test.js +26 -0
  65. package/dist/lib/util/flattenAllOf.test.js.map +1 -1
  66. package/dist/vite/config.js +5 -2
  67. package/dist/vite/config.js.map +1 -1
  68. package/dist/vite/plugin-config.js +16 -4
  69. package/dist/vite/plugin-config.js.map +1 -1
  70. package/dist/vite/plugin-theme.js +2 -1
  71. package/dist/vite/plugin-theme.js.map +1 -1
  72. package/dist/vite/prerender/prerender.js +3 -1
  73. package/dist/vite/prerender/prerender.js.map +1 -1
  74. package/dist/vite/prerender/worker.js +3 -1
  75. package/dist/vite/prerender/worker.js.map +1 -1
  76. package/lib/{ClaudeLogo-OpUSMQJe.js → ClaudeLogo-Br8C_vTq.js} +3 -3
  77. package/lib/{ClaudeLogo-OpUSMQJe.js.map → ClaudeLogo-Br8C_vTq.js.map} +1 -1
  78. package/lib/Drawer-Ch7927PF.js.map +1 -1
  79. package/lib/{HydrationBoundary-CNF2ZV3E.js → HydrationBoundary-CJu4vUlG.js} +6 -6
  80. package/lib/{HydrationBoundary-CNF2ZV3E.js.map → HydrationBoundary-CJu4vUlG.js.map} +1 -1
  81. package/lib/{MdxPage-dzCPGdvD.js → MdxPage-C0QFAsgv.js} +6 -6
  82. package/lib/{MdxPage-dzCPGdvD.js.map → MdxPage-C0QFAsgv.js.map} +1 -1
  83. package/lib/Mermaid-Chx5BPHn.js +104 -0
  84. package/lib/Mermaid-Chx5BPHn.js.map +1 -0
  85. package/lib/{OAuthErrorPage-D7n-_cqN.js → OAuthErrorPage-CFz_gBFx.js} +11 -10
  86. package/lib/{OAuthErrorPage-D7n-_cqN.js.map → OAuthErrorPage-CFz_gBFx.js.map} +1 -1
  87. package/lib/{OasProvider-DPPdikt_.js → OasProvider-BwIOIlky.js} +3 -3
  88. package/lib/{OasProvider-DPPdikt_.js.map → OasProvider-BwIOIlky.js.map} +1 -1
  89. package/lib/OperationList-DYRzbPJu.js +5908 -0
  90. package/lib/OperationList-DYRzbPJu.js.map +1 -0
  91. package/lib/{RouteGuard-BMbu_Yb7.js → RouteGuard-CVs3yvEs.js} +3 -3
  92. package/lib/{RouteGuard-BMbu_Yb7.js.map → RouteGuard-CVs3yvEs.js.map} +1 -1
  93. package/lib/{SchemaList-CRC8n5co.js → SchemaList-D4FEyoDV.js} +7 -7
  94. package/lib/{SchemaList-CRC8n5co.js.map → SchemaList-D4FEyoDV.js.map} +1 -1
  95. package/lib/{SchemaView-BR6dtnPg.js → SchemaView-ScvkhsYE.js} +116 -110
  96. package/lib/SchemaView-ScvkhsYE.js.map +1 -0
  97. package/lib/{Secret-BDBqq4p3.js → Secret-DUpgv4V3.js} +92 -72
  98. package/lib/Secret-DUpgv4V3.js.map +1 -0
  99. package/lib/{SignUp-ChqXj9vd.js → SignUp-Dug1jAGC.js} +4 -4
  100. package/lib/{SignUp-ChqXj9vd.js.map → SignUp-Dug1jAGC.js.map} +1 -1
  101. package/lib/{SyntaxHighlight-O-IZOPLg.js → SyntaxHighlight-BMu0b_hF.js} +8 -8
  102. package/lib/{SyntaxHighlight-O-IZOPLg.js.map → SyntaxHighlight-BMu0b_hF.js.map} +1 -1
  103. package/lib/{Toc-DQF7trHT.js → Toc-BiJ2YL0O.js} +2 -2
  104. package/lib/{Toc-DQF7trHT.js.map → Toc-BiJ2YL0O.js.map} +1 -1
  105. package/lib/{Zudoku-DA1yA-te.js → Zudoku-iyiXgWFY.js} +2101 -2121
  106. package/lib/Zudoku-iyiXgWFY.js.map +1 -0
  107. package/lib/ZudokuContext-CYyb_PB_.js +175 -0
  108. package/lib/ZudokuContext-CYyb_PB_.js.map +1 -0
  109. package/lib/ZudokuReactContext-DGJAP1sN.js +222 -0
  110. package/lib/ZudokuReactContext-DGJAP1sN.js.map +1 -0
  111. package/lib/chunk-EPOLDU6W-C6C8jAwd.js.map +1 -1
  112. package/lib/{circular-C4l1Kj1N.js → circular-BOpxmAie.js} +2 -2
  113. package/lib/{circular-C4l1Kj1N.js.map → circular-BOpxmAie.js.map} +1 -1
  114. package/lib/{createServer-DoRZ6tMa.js → createServer-BunbJzB5.js} +6 -4
  115. package/lib/{createServer-DoRZ6tMa.js.map → createServer-BunbJzB5.js.map} +1 -1
  116. package/lib/{errors-CYLN8SNc.js → errors-B77S9iOc.js} +2 -2
  117. package/lib/{errors-CYLN8SNc.js.map → errors-B77S9iOc.js.map} +1 -1
  118. package/lib/{firebase-DF-VVKB7.js → firebase-C7XKRGLf.js} +25 -24
  119. package/lib/{firebase-DF-VVKB7.js.map → firebase-C7XKRGLf.js.map} +1 -1
  120. package/lib/{hook-C35h0YhF.js → hook-Dz_n9SoE.js} +16 -15
  121. package/lib/{hook-C35h0YhF.js.map → hook-Dz_n9SoE.js.map} +1 -1
  122. package/lib/{index-DrAVvbXa.js → index-BDp2MTiq.js} +2 -2
  123. package/lib/{index-DrAVvbXa.js.map → index-BDp2MTiq.js.map} +1 -1
  124. package/lib/{index-Ck4TmzTO.js → index-Bx29qHVi.js} +52 -50
  125. package/lib/{index-Ck4TmzTO.js.map → index-Bx29qHVi.js.map} +1 -1
  126. package/lib/index-CrcNWbel.js.map +1 -1
  127. package/lib/index-DAWHN3cH.js.map +1 -1
  128. package/lib/index.esm-BYObtETB.js.map +1 -1
  129. package/lib/index.esm-Ca5zvoff.js.map +1 -1
  130. package/lib/{index.esm-B2cLXwjS.js → index.esm-Cth49JBv.js} +2 -2
  131. package/lib/index.esm-Cth49JBv.js.map +1 -0
  132. package/lib/jsx-runtime-BzflLqGi.js.map +1 -1
  133. package/lib/{mutation-BISOc7OM.js → mutation-B7eFBLZY.js} +2 -2
  134. package/lib/{mutation-BISOc7OM.js.map → mutation-B7eFBLZY.js.map} +1 -1
  135. package/lib/ui/Alert.js +32 -20
  136. package/lib/ui/Alert.js.map +1 -1
  137. package/lib/ui/Carousel.js.map +1 -1
  138. package/lib/ui/Secret.js +2 -2
  139. package/lib/ui/Secret.js.map +1 -1
  140. package/lib/ui/SyntaxHighlight.js +2 -2
  141. package/lib/useExposedProps-CzTDfXfq.js.map +1 -1
  142. package/lib/{useMutation-CFMGlAMW.js → useMutation-CErliDZ9.js} +5 -5
  143. package/lib/{useMutation-CFMGlAMW.js.map → useMutation-CErliDZ9.js.map} +1 -1
  144. package/lib/{useSuspenseQuery-CSB_rVek.js → useQuery-ht7aWJ3S.js} +432 -446
  145. package/lib/useQuery-ht7aWJ3S.js.map +1 -0
  146. package/lib/useSuspenseQuery-DQH4Bmc2.js +18 -0
  147. package/lib/useSuspenseQuery-DQH4Bmc2.js.map +1 -0
  148. package/lib/zudoku.__internal.js +520 -496
  149. package/lib/zudoku.__internal.js.map +1 -1
  150. package/lib/zudoku.auth-auth0.js +6 -5
  151. package/lib/zudoku.auth-auth0.js.map +1 -1
  152. package/lib/zudoku.auth-azureb2c.js +14 -13
  153. package/lib/zudoku.auth-azureb2c.js.map +1 -1
  154. package/lib/zudoku.auth-clerk.js +2 -2
  155. package/lib/zudoku.auth-firebase.js +4 -4
  156. package/lib/zudoku.auth-openid.js +7 -6
  157. package/lib/zudoku.auth-openid.js.map +1 -1
  158. package/lib/zudoku.auth-supabase.js +4 -4
  159. package/lib/zudoku.components.js +3 -3
  160. package/lib/zudoku.hooks.js +3 -3
  161. package/lib/zudoku.mermaid.js +3 -3
  162. package/lib/zudoku.plugin-api-catalog.js +28 -27
  163. package/lib/zudoku.plugin-api-catalog.js.map +1 -1
  164. package/lib/zudoku.plugin-api-keys.js +98 -96
  165. package/lib/zudoku.plugin-api-keys.js.map +1 -1
  166. package/lib/zudoku.plugin-custom-pages.js +1 -1
  167. package/lib/zudoku.plugin-markdown.js +1 -1
  168. package/lib/zudoku.plugin-openapi.js +2 -2
  169. package/lib/zudoku.plugin-search-pagefind.js +19 -18
  170. package/lib/zudoku.plugin-search-pagefind.js.map +1 -1
  171. package/lib/zudoku.plugins.js.map +1 -1
  172. package/lib/zudoku.react-query.js +26 -25
  173. package/lib/zudoku.react-query.js.map +1 -1
  174. package/lib/zudoku.router.js.map +1 -1
  175. package/package.json +13 -7
  176. package/src/app/defaultTheme.css +4 -0
  177. package/src/app/main.css +2 -0
  178. package/src/app/main.tsx +1 -1
  179. package/src/lib/components/Bootstrap.tsx +1 -4
  180. package/src/lib/components/Slot.test.tsx +1 -1
  181. package/src/lib/components/Zudoku.tsx +18 -14
  182. package/src/lib/components/context/ZudokuContext.ts +2 -6
  183. package/src/lib/components/context/ZudokuProvider.tsx +1 -1
  184. package/src/lib/components/context/ZudokuReactContext.tsx +17 -0
  185. package/src/lib/core/ZudokuContext.ts +7 -1
  186. package/src/lib/core/__internal.tsx +2 -0
  187. package/src/lib/core/plugins.ts +7 -3
  188. package/src/lib/core/transform-config.test.tsx +99 -0
  189. package/src/lib/core/transform-config.ts +57 -19
  190. package/src/lib/errors/ErrorAlert.tsx +1 -6
  191. package/src/lib/hooks/useEvent.test.tsx +1 -1
  192. package/src/lib/plugins/openapi/ParamInfos.tsx +10 -5
  193. package/src/lib/plugins/openapi/ParameterListItem.tsx +1 -0
  194. package/src/lib/plugins/openapi/schema/SchemaPropertyItem.tsx +2 -0
  195. package/src/lib/ui/Alert.tsx +17 -5
  196. package/src/lib/ui/Secret.tsx +2 -2
  197. package/src/lib/util/flattenAllOf.test.ts +32 -0
  198. package/src/lib/util/flattenAllOf.ts +7 -0
  199. package/lib/Mermaid-JEnWyK0s.js +0 -103
  200. package/lib/Mermaid-JEnWyK0s.js.map +0 -1
  201. package/lib/OperationList-cEveQ_l5.js +0 -5822
  202. package/lib/OperationList-cEveQ_l5.js.map +0 -1
  203. package/lib/SchemaView-BR6dtnPg.js.map +0 -1
  204. package/lib/Secret-BDBqq4p3.js.map +0 -1
  205. package/lib/Zudoku-DA1yA-te.js.map +0 -1
  206. package/lib/ZudokuContext-C6wlLMUH.js +0 -389
  207. package/lib/ZudokuContext-C6wlLMUH.js.map +0 -1
  208. package/lib/index.esm-B2cLXwjS.js.map +0 -1
  209. package/lib/useSuspenseQuery-CSB_rVek.js.map +0 -1
@@ -1,4 +1,5 @@
1
- import { b as r, j as a } from "./ZudokuContext-C6wlLMUH.js";
1
+ import { j as a } from "./ZudokuContext-CYyb_PB_.js";
2
+ import { u as r } from "./ZudokuReactContext-DGJAP1sN.js";
2
3
  import { OpenIDAuthenticationProvider as p } from "./zudoku.auth-openid.js";
3
4
  class d extends p {
4
5
  options;
@@ -28,15 +29,15 @@ class d extends p {
28
29
  "/",
29
30
  this.redirectToAfterSignOut
30
31
  ), e.end_session_endpoint) {
31
- const i = new URL(e.end_session_endpoint);
32
- s && i.searchParams.set("id_token_hint", s), i.searchParams.set(
32
+ const o = new URL(e.end_session_endpoint);
33
+ s && o.searchParams.set("id_token_hint", s), o.searchParams.set(
33
34
  "post_logout_redirect_uri",
34
35
  n.toString()
35
- ), window.location.href = i.toString();
36
+ ), window.location.href = o.toString();
36
37
  }
37
38
  };
38
39
  }
39
- const l = (o) => new d(o);
40
+ const l = (i) => new d(i);
40
41
  export {
41
42
  l as default
42
43
  };
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.auth-auth0.js","sources":["../src/lib/authentication/providers/auth0.tsx"],"sourcesContent":["import type { Auth0AuthenticationConfig } from \"../../../config/config.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport type {\n AuthActionContext,\n AuthenticationPlugin,\n AuthenticationProviderInitializer,\n} from \"../authentication.js\";\nimport { useAuthState } from \"../state.js\";\nimport { OpenIDAuthenticationProvider } from \"./openid.js\";\n\nclass Auth0AuthenticationProvider\n extends OpenIDAuthenticationProvider\n implements AuthenticationPlugin\n{\n private readonly options: Auth0AuthenticationConfig[\"options\"];\n constructor(config: Auth0AuthenticationConfig) {\n super({\n ...config,\n type: \"openid\",\n issuer: `https://${config.domain}/`,\n clientId: config.clientId,\n audience: config.audience,\n scopes: config.scopes,\n });\n this.options = config.options;\n }\n\n onAuthorizationUrl = async (\n url: URL,\n { isSignUp }: { isSignUp: boolean },\n ) => {\n if (this.options?.prompt !== undefined) {\n if (this.options.prompt !== \"\") {\n url.searchParams.set(\"prompt\", this.options.prompt);\n }\n } else if (this.options?.alwaysPromptLogin !== false) {\n url.searchParams.set(\"prompt\", \"login\");\n }\n\n if (isSignUp) {\n url.searchParams.set(\"screen_hint\", \"signup\");\n }\n };\n\n signOut = async (_: AuthActionContext): Promise<void> => {\n const as = await this.getAuthServer();\n\n // biome-ignore lint/suspicious/noExplicitAny: We don't have a good way for typing provider-data yet.\n const providerData = useAuthState.getState().providerData as any;\n const idToken = providerData?.idToken;\n\n useAuthState.setState({\n isAuthenticated: false,\n isPending: false,\n profile: undefined,\n providerData: undefined,\n });\n\n const redirectUrl = new URL(window.location.origin);\n redirectUrl.pathname = joinUrl(\n import.meta.env.BASE_URL,\n this.redirectToAfterSignOut,\n );\n\n // SEE: https://auth0.com/docs/authenticate/login/logout/log-users-out-of-auth0\n // For Auth0 tenants created on or after 14 November 2023, RP-Initiated\n // Logout End Session Endpoint Discovery is enabled by default.\n // Otherwise we fallback to the old non-compliant logout\n\n // The end_session_endpoint is set, the IdP supports some form of logout,\n // so we use auth0 logout. Otherwise, just redirect the user to home\n if (as.end_session_endpoint) {\n const logoutUrl = new URL(as.end_session_endpoint);\n if (idToken) {\n logoutUrl.searchParams.set(\"id_token_hint\", idToken);\n }\n logoutUrl.searchParams.set(\n \"post_logout_redirect_uri\",\n redirectUrl.toString(),\n );\n\n window.location.href = logoutUrl.toString();\n } else {\n // const logoutUrl = new URL(`${this.issuer.replace(/\\/$/, \"\")}/v2/logout`);\n // logoutUrl.searchParams.set(\"returnTo\", redirectUrl.toString());\n // don't support the deprecated logout today\n }\n };\n}\n\nconst auth0Auth: AuthenticationProviderInitializer<\n Auth0AuthenticationConfig\n> = (options) => new Auth0AuthenticationProvider(options);\n\nexport default auth0Auth;\n"],"names":["Auth0AuthenticationProvider","OpenIDAuthenticationProvider","config","url","isSignUp","_","as","idToken","useAuthState","redirectUrl","joinUrl","logoutUrl","auth0Auth","options"],"mappings":";;AAUA,MAAMA,UACIC,EAEV;AAAA,EACmB;AAAA,EACjB,YAAYC,GAAmC;AAC7C,UAAM;AAAA,MACJ,GAAGA;AAAA,MACH,MAAM;AAAA,MACN,QAAQ,WAAWA,EAAO,MAAM;AAAA,MAChC,UAAUA,EAAO;AAAA,MACjB,UAAUA,EAAO;AAAA,MACjB,QAAQA,EAAO;AAAA,IAAA,CAChB,GACD,KAAK,UAAUA,EAAO;AAAA,EACxB;AAAA,EAEA,qBAAqB,OACnBC,GACA,EAAE,UAAAC,QACC;AACH,IAAI,KAAK,SAAS,WAAW,SACvB,KAAK,QAAQ,WAAW,MAC1BD,EAAI,aAAa,IAAI,UAAU,KAAK,QAAQ,MAAM,IAE3C,KAAK,SAAS,sBAAsB,MAC7CA,EAAI,aAAa,IAAI,UAAU,OAAO,GAGpCC,KACFD,EAAI,aAAa,IAAI,eAAe,QAAQ;AAAA,EAEhD;AAAA,EAEA,UAAU,OAAOE,MAAwC;AACvD,UAAMC,IAAK,MAAM,KAAK,cAAA,GAIhBC,IADeC,EAAa,SAAA,EAAW,cACf;AAE9B,IAAAA,EAAa,SAAS;AAAA,MACpB,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,cAAc;AAAA,IAAA,CACf;AAED,UAAMC,IAAc,IAAI,IAAI,OAAO,SAAS,MAAM;AAalD,QAZAA,EAAY,WAAWC;AAAA,MACrB;AAAA,MACA,KAAK;AAAA,IAAA,GAUHJ,EAAG,sBAAsB;AAC3B,YAAMK,IAAY,IAAI,IAAIL,EAAG,oBAAoB;AACjD,MAAIC,KACFI,EAAU,aAAa,IAAI,iBAAiBJ,CAAO,GAErDI,EAAU,aAAa;AAAA,QACrB;AAAA,QACAF,EAAY,SAAA;AAAA,MAAS,GAGvB,OAAO,SAAS,OAAOE,EAAU,SAAA;AAAA,IACnC;AAAA,EAKF;AACF;AAEA,MAAMC,IAEF,CAACC,MAAY,IAAIb,EAA4Ba,CAAO;"}
1
+ {"version":3,"file":"zudoku.auth-auth0.js","sources":["../src/lib/authentication/providers/auth0.tsx"],"sourcesContent":["import type { Auth0AuthenticationConfig } from \"../../../config/config.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport type {\n AuthActionContext,\n AuthenticationPlugin,\n AuthenticationProviderInitializer,\n} from \"../authentication.js\";\nimport { useAuthState } from \"../state.js\";\nimport { OpenIDAuthenticationProvider } from \"./openid.js\";\n\nclass Auth0AuthenticationProvider\n extends OpenIDAuthenticationProvider\n implements AuthenticationPlugin\n{\n private readonly options: Auth0AuthenticationConfig[\"options\"];\n constructor(config: Auth0AuthenticationConfig) {\n super({\n ...config,\n type: \"openid\",\n issuer: `https://${config.domain}/`,\n clientId: config.clientId,\n audience: config.audience,\n scopes: config.scopes,\n });\n this.options = config.options;\n }\n\n onAuthorizationUrl = async (\n url: URL,\n { isSignUp }: { isSignUp: boolean },\n ) => {\n if (this.options?.prompt !== undefined) {\n if (this.options.prompt !== \"\") {\n url.searchParams.set(\"prompt\", this.options.prompt);\n }\n } else if (this.options?.alwaysPromptLogin !== false) {\n url.searchParams.set(\"prompt\", \"login\");\n }\n\n if (isSignUp) {\n url.searchParams.set(\"screen_hint\", \"signup\");\n }\n };\n\n signOut = async (_: AuthActionContext): Promise<void> => {\n const as = await this.getAuthServer();\n\n // biome-ignore lint/suspicious/noExplicitAny: We don't have a good way for typing provider-data yet.\n const providerData = useAuthState.getState().providerData as any;\n const idToken = providerData?.idToken;\n\n useAuthState.setState({\n isAuthenticated: false,\n isPending: false,\n profile: undefined,\n providerData: undefined,\n });\n\n const redirectUrl = new URL(window.location.origin);\n redirectUrl.pathname = joinUrl(\n import.meta.env.BASE_URL,\n this.redirectToAfterSignOut,\n );\n\n // SEE: https://auth0.com/docs/authenticate/login/logout/log-users-out-of-auth0\n // For Auth0 tenants created on or after 14 November 2023, RP-Initiated\n // Logout End Session Endpoint Discovery is enabled by default.\n // Otherwise we fallback to the old non-compliant logout\n\n // The end_session_endpoint is set, the IdP supports some form of logout,\n // so we use auth0 logout. Otherwise, just redirect the user to home\n if (as.end_session_endpoint) {\n const logoutUrl = new URL(as.end_session_endpoint);\n if (idToken) {\n logoutUrl.searchParams.set(\"id_token_hint\", idToken);\n }\n logoutUrl.searchParams.set(\n \"post_logout_redirect_uri\",\n redirectUrl.toString(),\n );\n\n window.location.href = logoutUrl.toString();\n } else {\n // const logoutUrl = new URL(`${this.issuer.replace(/\\/$/, \"\")}/v2/logout`);\n // logoutUrl.searchParams.set(\"returnTo\", redirectUrl.toString());\n // don't support the deprecated logout today\n }\n };\n}\n\nconst auth0Auth: AuthenticationProviderInitializer<\n Auth0AuthenticationConfig\n> = (options) => new Auth0AuthenticationProvider(options);\n\nexport default auth0Auth;\n"],"names":["Auth0AuthenticationProvider","OpenIDAuthenticationProvider","config","url","isSignUp","_","as","idToken","useAuthState","redirectUrl","joinUrl","logoutUrl","auth0Auth","options"],"mappings":";;;AAUA,MAAMA,UACIC,EAEV;AAAA,EACmB;AAAA,EACjB,YAAYC,GAAmC;AAC7C,UAAM;AAAA,MACJ,GAAGA;AAAA,MACH,MAAM;AAAA,MACN,QAAQ,WAAWA,EAAO,MAAM;AAAA,MAChC,UAAUA,EAAO;AAAA,MACjB,UAAUA,EAAO;AAAA,MACjB,QAAQA,EAAO;AAAA,IAAA,CAChB,GACD,KAAK,UAAUA,EAAO;AAAA,EACxB;AAAA,EAEA,qBAAqB,OACnBC,GACA,EAAE,UAAAC,QACC;AACH,IAAI,KAAK,SAAS,WAAW,SACvB,KAAK,QAAQ,WAAW,MAC1BD,EAAI,aAAa,IAAI,UAAU,KAAK,QAAQ,MAAM,IAE3C,KAAK,SAAS,sBAAsB,MAC7CA,EAAI,aAAa,IAAI,UAAU,OAAO,GAGpCC,KACFD,EAAI,aAAa,IAAI,eAAe,QAAQ;AAAA,EAEhD;AAAA,EAEA,UAAU,OAAOE,MAAwC;AACvD,UAAMC,IAAK,MAAM,KAAK,cAAA,GAIhBC,IADeC,EAAa,SAAA,EAAW,cACf;AAE9B,IAAAA,EAAa,SAAS;AAAA,MACpB,iBAAiB;AAAA,MACjB,WAAW;AAAA,MACX,SAAS;AAAA,MACT,cAAc;AAAA,IAAA,CACf;AAED,UAAMC,IAAc,IAAI,IAAI,OAAO,SAAS,MAAM;AAalD,QAZAA,EAAY,WAAWC;AAAA,MACrB;AAAA,MACA,KAAK;AAAA,IAAA,GAUHJ,EAAG,sBAAsB;AAC3B,YAAMK,IAAY,IAAI,IAAIL,EAAG,oBAAoB;AACjD,MAAIC,KACFI,EAAU,aAAa,IAAI,iBAAiBJ,CAAO,GAErDI,EAAU,aAAa;AAAA,QACrB;AAAA,QACAF,EAAY,SAAA;AAAA,MAAS,GAGvB,OAAO,SAAS,OAAOE,EAAU,SAAA;AAAA,IACnC;AAAA,EAKF;AACF;AAEA,MAAMC,IAEF,CAACC,MAAY,IAAIb,EAA4Ba,CAAO;"}
@@ -1,10 +1,11 @@
1
1
  import { j as n } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { PublicClientApplication as A, EventType as f } from "@azure/msal-browser";
3
- import { E as I } from "./Zudoku-DA1yA-te.js";
3
+ import { E as I } from "./Zudoku-iyiXgWFY.js";
4
4
  import { C as T } from "./ClientOnly-E7hGysn1.js";
5
- import { j as S, b as h } from "./ZudokuContext-C6wlLMUH.js";
6
- import { C, A as c } from "./errors-CYLN8SNc.js";
7
- import { C as k, O as w } from "./OAuthErrorPage-D7n-_cqN.js";
5
+ import { j as S } from "./ZudokuContext-CYyb_PB_.js";
6
+ import { C, A as c } from "./errors-B77S9iOc.js";
7
+ import { C as k, O as w } from "./OAuthErrorPage-CFz_gBFx.js";
8
+ import { u as h } from "./ZudokuReactContext-DGJAP1sN.js";
8
9
  const u = "/oauth/callback";
9
10
  class y extends C {
10
11
  msalInstance;
@@ -16,13 +17,13 @@ class y extends C {
16
17
  clientId: e,
17
18
  tenantName: t,
18
19
  policyName: i,
19
- scopes: a,
20
+ scopes: r,
20
21
  redirectToAfterSignUp: s,
21
- redirectToAfterSignIn: r,
22
+ redirectToAfterSignIn: a,
22
23
  redirectToAfterSignOut: d = "/",
23
24
  basePath: m = ""
24
25
  }) {
25
- super(), this.scopes = a ?? ["openid", "profile", "email"], this.redirectToAfterSignUp = s, this.redirectToAfterSignIn = r, this.redirectToAfterSignOut = d;
26
+ super(), this.scopes = r ?? ["openid", "profile", "email"], this.redirectToAfterSignUp = s, this.redirectToAfterSignIn = a, this.redirectToAfterSignOut = d;
26
27
  const p = `https://${t}.b2clogin.com/${t}.onmicrosoft.com/${i}`, g = S(m, u);
27
28
  this.msalInstance = new A({
28
29
  auth: {
@@ -44,21 +45,21 @@ class y extends C {
44
45
  });
45
46
  }
46
47
  handleAuthResponse(e) {
47
- const { accessToken: t, idToken: i, scopes: a, account: s } = e;
48
+ const { accessToken: t, idToken: i, scopes: r, account: s } = e;
48
49
  if (!s)
49
50
  throw new c("No account information in response");
50
- const r = [s.idTokenClaims?.given_name, s.idTokenClaims?.family_name].filter(Boolean).join(" ") || s.username;
51
+ const a = [s.idTokenClaims?.given_name, s.idTokenClaims?.family_name].filter(Boolean).join(" ") || s.username;
51
52
  h.getState().setLoggedIn({
52
53
  providerData: {
53
54
  accessToken: t,
54
55
  idToken: i,
55
- scopes: a,
56
+ scopes: r,
56
57
  account: s
57
58
  },
58
59
  profile: {
59
60
  sub: s.localAccountId,
60
61
  email: s.username,
61
- name: r,
62
+ name: a,
62
63
  emailVerified: !0,
63
64
  // Azure B2C emails are verified
64
65
  pictureUrl: void 0
@@ -128,9 +129,9 @@ class y extends C {
128
129
  ];
129
130
  }
130
131
  }
131
- const _ = (l) => new y(l);
132
+ const x = (l) => new y(l);
132
133
  export {
133
134
  y as AzureB2CAuthPlugin,
134
- _ as default
135
+ x as default
135
136
  };
136
137
  //# sourceMappingURL=zudoku.auth-azureb2c.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.auth-azureb2c.js","sources":["../src/lib/authentication/providers/azureb2c.tsx"],"sourcesContent":["import type { AuthenticationResult, EventMessage } from \"@azure/msal-browser\";\nimport { EventType, PublicClientApplication } from \"@azure/msal-browser\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport type { AzureB2CAuthenticationConfig } from \"../../../config/config.js\";\nimport { ClientOnly } from \"../../components/ClientOnly.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { CoreAuthenticationPlugin } from \"../AuthenticationPlugin.js\";\nimport type {\n AuthActionContext,\n AuthenticationPlugin,\n AuthenticationProviderInitializer,\n} from \"../authentication.js\";\nimport { CallbackHandler } from \"../components/CallbackHandler.js\";\nimport { OAuthErrorPage } from \"../components/OAuthErrorPage.js\";\nimport { AuthorizationError } from \"../errors.js\";\nimport { useAuthState } from \"../state.js\";\n\nconst AZUREB2C_CALLBACK_PATH = \"/oauth/callback\";\n\nexport class AzureB2CAuthPlugin\n extends CoreAuthenticationPlugin\n implements AuthenticationPlugin\n{\n private msalInstance: PublicClientApplication;\n private readonly scopes: string[];\n private readonly redirectToAfterSignUp?: string;\n private readonly redirectToAfterSignIn?: string;\n private readonly redirectToAfterSignOut: string;\n\n constructor({\n clientId,\n tenantName,\n policyName,\n scopes,\n redirectToAfterSignUp,\n redirectToAfterSignIn,\n redirectToAfterSignOut = \"/\",\n basePath = \"\",\n }: AzureB2CAuthenticationConfig) {\n super();\n this.scopes = scopes ?? [\"openid\", \"profile\", \"email\"];\n this.redirectToAfterSignUp = redirectToAfterSignUp;\n this.redirectToAfterSignIn = redirectToAfterSignIn;\n this.redirectToAfterSignOut = redirectToAfterSignOut;\n\n const authority = `https://${tenantName}.b2clogin.com/${tenantName}.onmicrosoft.com/${policyName}`;\n const redirectUri = joinUrl(basePath, AZUREB2C_CALLBACK_PATH);\n\n this.msalInstance = new PublicClientApplication({\n auth: {\n clientId,\n authority,\n redirectUri,\n knownAuthorities: [`${tenantName}.b2clogin.com`],\n },\n cache: {\n cacheLocation: \"sessionStorage\",\n storeAuthStateInCookie: false,\n },\n });\n\n void this.msalInstance.initialize().then(async () => {\n void this.msalInstance\n .handleRedirectPromise()\n .then((response: AuthenticationResult | null) => {\n if (response) {\n this.handleAuthResponse(response);\n }\n });\n\n // Add event callback\n void this.msalInstance.addEventCallback((event: EventMessage) => {\n if (event.eventType === EventType.LOGIN_SUCCESS) {\n this.handleAuthResponse(event.payload as AuthenticationResult);\n }\n });\n });\n }\n\n private handleAuthResponse(response: AuthenticationResult) {\n const { accessToken, idToken, scopes, account } = response;\n\n if (!account) {\n throw new AuthorizationError(\"No account information in response\");\n }\n\n // Get the user's name from Azure B2C claims\n const name =\n [account.idTokenClaims?.given_name, account.idTokenClaims?.family_name]\n .filter(Boolean)\n .join(\" \") || account.username;\n\n useAuthState.getState().setLoggedIn({\n providerData: {\n accessToken,\n idToken,\n scopes,\n account,\n },\n profile: {\n sub: account.localAccountId,\n email: account.username,\n name,\n emailVerified: true, // Azure B2C emails are verified\n pictureUrl: undefined, // Azure B2C doesn't provide profile pictures by default\n },\n });\n }\n\n async signUp(\n _: AuthActionContext,\n { redirectTo }: { redirectTo?: string } = {},\n ) {\n const redirectUri = this.redirectToAfterSignUp ?? redirectTo ?? \"/\";\n sessionStorage.setItem(\"redirect-to\", redirectUri);\n\n await this.msalInstance.loginRedirect({\n scopes: this.scopes,\n prompt: \"select_account\",\n });\n }\n\n async signIn(\n _: AuthActionContext,\n { redirectTo }: { redirectTo?: string } = {},\n ) {\n const redirectUri = this.redirectToAfterSignIn ?? redirectTo ?? \"/\";\n sessionStorage.setItem(\"redirect-to\", redirectUri);\n\n await this.msalInstance.loginRedirect({\n scopes: this.scopes,\n });\n }\n\n async getAccessToken(): Promise<string> {\n const account = this.msalInstance.getAllAccounts()[0];\n if (!account) {\n throw new AuthorizationError(\"No active account\");\n }\n\n try {\n const response = await this.msalInstance.acquireTokenSilent({\n scopes: this.scopes,\n account,\n });\n return response.accessToken;\n } catch {\n // If silent token acquisition fails, try interactive\n await this.msalInstance.acquireTokenRedirect({\n scopes: this.scopes,\n account,\n });\n\n throw new AuthorizationError(\n \"Token acquisition failed after interactive attempt\",\n );\n }\n }\n\n signRequest = async (request: Request): Promise<Request> => {\n const accessToken = await this.getAccessToken();\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return request;\n };\n\n signOut = async (_: AuthActionContext) => {\n const account = this.msalInstance.getAllAccounts()[0];\n if (account) {\n await this.msalInstance.logoutRedirect({\n account,\n postLogoutRedirectUri:\n window.location.origin + this.redirectToAfterSignOut,\n });\n }\n\n useAuthState.getState().setLoggedOut();\n };\n\n handleCallback = async () => {\n const redirectTo = sessionStorage.getItem(\"redirect-to\") ?? \"/\";\n sessionStorage.removeItem(\"redirect-to\");\n return redirectTo;\n };\n\n getRoutes() {\n return [\n ...super.getRoutes(),\n {\n path: AZUREB2C_CALLBACK_PATH,\n element: (\n <ClientOnly>\n <ErrorBoundary\n fallbackRender={({ error }) => <OAuthErrorPage error={error} />}\n >\n <CallbackHandler handleCallback={this.handleCallback} />\n </ErrorBoundary>\n </ClientOnly>\n ),\n },\n ];\n }\n}\n\nconst azureB2CAuth: AuthenticationProviderInitializer<\n AzureB2CAuthenticationConfig\n> = (options) => new AzureB2CAuthPlugin(options);\n\nexport default azureB2CAuth;\n"],"names":["AZUREB2C_CALLBACK_PATH","AzureB2CAuthPlugin","CoreAuthenticationPlugin","clientId","tenantName","policyName","scopes","redirectToAfterSignUp","redirectToAfterSignIn","redirectToAfterSignOut","basePath","authority","redirectUri","joinUrl","PublicClientApplication","response","event","EventType","accessToken","idToken","account","AuthorizationError","name","useAuthState","_","redirectTo","request","ClientOnly","jsx","ErrorBoundary","error","OAuthErrorPage","CallbackHandler","azureB2CAuth","options"],"mappings":"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"}
1
+ {"version":3,"file":"zudoku.auth-azureb2c.js","sources":["../src/lib/authentication/providers/azureb2c.tsx"],"sourcesContent":["import type { AuthenticationResult, EventMessage } from \"@azure/msal-browser\";\nimport { EventType, PublicClientApplication } from \"@azure/msal-browser\";\nimport { ErrorBoundary } from \"react-error-boundary\";\nimport type { AzureB2CAuthenticationConfig } from \"../../../config/config.js\";\nimport { ClientOnly } from \"../../components/ClientOnly.js\";\nimport { joinUrl } from \"../../util/joinUrl.js\";\nimport { CoreAuthenticationPlugin } from \"../AuthenticationPlugin.js\";\nimport type {\n AuthActionContext,\n AuthenticationPlugin,\n AuthenticationProviderInitializer,\n} from \"../authentication.js\";\nimport { CallbackHandler } from \"../components/CallbackHandler.js\";\nimport { OAuthErrorPage } from \"../components/OAuthErrorPage.js\";\nimport { AuthorizationError } from \"../errors.js\";\nimport { useAuthState } from \"../state.js\";\n\nconst AZUREB2C_CALLBACK_PATH = \"/oauth/callback\";\n\nexport class AzureB2CAuthPlugin\n extends CoreAuthenticationPlugin\n implements AuthenticationPlugin\n{\n private msalInstance: PublicClientApplication;\n private readonly scopes: string[];\n private readonly redirectToAfterSignUp?: string;\n private readonly redirectToAfterSignIn?: string;\n private readonly redirectToAfterSignOut: string;\n\n constructor({\n clientId,\n tenantName,\n policyName,\n scopes,\n redirectToAfterSignUp,\n redirectToAfterSignIn,\n redirectToAfterSignOut = \"/\",\n basePath = \"\",\n }: AzureB2CAuthenticationConfig) {\n super();\n this.scopes = scopes ?? [\"openid\", \"profile\", \"email\"];\n this.redirectToAfterSignUp = redirectToAfterSignUp;\n this.redirectToAfterSignIn = redirectToAfterSignIn;\n this.redirectToAfterSignOut = redirectToAfterSignOut;\n\n const authority = `https://${tenantName}.b2clogin.com/${tenantName}.onmicrosoft.com/${policyName}`;\n const redirectUri = joinUrl(basePath, AZUREB2C_CALLBACK_PATH);\n\n this.msalInstance = new PublicClientApplication({\n auth: {\n clientId,\n authority,\n redirectUri,\n knownAuthorities: [`${tenantName}.b2clogin.com`],\n },\n cache: {\n cacheLocation: \"sessionStorage\",\n storeAuthStateInCookie: false,\n },\n });\n\n void this.msalInstance.initialize().then(async () => {\n void this.msalInstance\n .handleRedirectPromise()\n .then((response: AuthenticationResult | null) => {\n if (response) {\n this.handleAuthResponse(response);\n }\n });\n\n // Add event callback\n void this.msalInstance.addEventCallback((event: EventMessage) => {\n if (event.eventType === EventType.LOGIN_SUCCESS) {\n this.handleAuthResponse(event.payload as AuthenticationResult);\n }\n });\n });\n }\n\n private handleAuthResponse(response: AuthenticationResult) {\n const { accessToken, idToken, scopes, account } = response;\n\n if (!account) {\n throw new AuthorizationError(\"No account information in response\");\n }\n\n // Get the user's name from Azure B2C claims\n const name =\n [account.idTokenClaims?.given_name, account.idTokenClaims?.family_name]\n .filter(Boolean)\n .join(\" \") || account.username;\n\n useAuthState.getState().setLoggedIn({\n providerData: {\n accessToken,\n idToken,\n scopes,\n account,\n },\n profile: {\n sub: account.localAccountId,\n email: account.username,\n name,\n emailVerified: true, // Azure B2C emails are verified\n pictureUrl: undefined, // Azure B2C doesn't provide profile pictures by default\n },\n });\n }\n\n async signUp(\n _: AuthActionContext,\n { redirectTo }: { redirectTo?: string } = {},\n ) {\n const redirectUri = this.redirectToAfterSignUp ?? redirectTo ?? \"/\";\n sessionStorage.setItem(\"redirect-to\", redirectUri);\n\n await this.msalInstance.loginRedirect({\n scopes: this.scopes,\n prompt: \"select_account\",\n });\n }\n\n async signIn(\n _: AuthActionContext,\n { redirectTo }: { redirectTo?: string } = {},\n ) {\n const redirectUri = this.redirectToAfterSignIn ?? redirectTo ?? \"/\";\n sessionStorage.setItem(\"redirect-to\", redirectUri);\n\n await this.msalInstance.loginRedirect({\n scopes: this.scopes,\n });\n }\n\n async getAccessToken(): Promise<string> {\n const account = this.msalInstance.getAllAccounts()[0];\n if (!account) {\n throw new AuthorizationError(\"No active account\");\n }\n\n try {\n const response = await this.msalInstance.acquireTokenSilent({\n scopes: this.scopes,\n account,\n });\n return response.accessToken;\n } catch {\n // If silent token acquisition fails, try interactive\n await this.msalInstance.acquireTokenRedirect({\n scopes: this.scopes,\n account,\n });\n\n throw new AuthorizationError(\n \"Token acquisition failed after interactive attempt\",\n );\n }\n }\n\n signRequest = async (request: Request): Promise<Request> => {\n const accessToken = await this.getAccessToken();\n request.headers.set(\"Authorization\", `Bearer ${accessToken}`);\n return request;\n };\n\n signOut = async (_: AuthActionContext) => {\n const account = this.msalInstance.getAllAccounts()[0];\n if (account) {\n await this.msalInstance.logoutRedirect({\n account,\n postLogoutRedirectUri:\n window.location.origin + this.redirectToAfterSignOut,\n });\n }\n\n useAuthState.getState().setLoggedOut();\n };\n\n handleCallback = async () => {\n const redirectTo = sessionStorage.getItem(\"redirect-to\") ?? \"/\";\n sessionStorage.removeItem(\"redirect-to\");\n return redirectTo;\n };\n\n getRoutes() {\n return [\n ...super.getRoutes(),\n {\n path: AZUREB2C_CALLBACK_PATH,\n element: (\n <ClientOnly>\n <ErrorBoundary\n fallbackRender={({ error }) => <OAuthErrorPage error={error} />}\n >\n <CallbackHandler handleCallback={this.handleCallback} />\n </ErrorBoundary>\n </ClientOnly>\n ),\n },\n ];\n }\n}\n\nconst azureB2CAuth: AuthenticationProviderInitializer<\n AzureB2CAuthenticationConfig\n> = (options) => new AzureB2CAuthPlugin(options);\n\nexport default azureB2CAuth;\n"],"names":["AZUREB2C_CALLBACK_PATH","AzureB2CAuthPlugin","CoreAuthenticationPlugin","clientId","tenantName","policyName","scopes","redirectToAfterSignUp","redirectToAfterSignIn","redirectToAfterSignOut","basePath","authority","redirectUri","joinUrl","PublicClientApplication","response","event","EventType","accessToken","idToken","account","AuthorizationError","name","useAuthState","_","redirectTo","request","ClientOnly","jsx","ErrorBoundary","error","OAuthErrorPage","CallbackHandler","azureB2CAuth","options"],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { j as a } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { LogOutIcon as m } from "lucide-react";
3
- import { S as p, a as f, b as h } from "./SignUp-ChqXj9vd.js";
4
- import { b as r } from "./ZudokuContext-C6wlLMUH.js";
3
+ import { S as p, a as f, b as h } from "./SignUp-Dug1jAGC.js";
4
+ import { u as r } from "./ZudokuReactContext-DGJAP1sN.js";
5
5
  const R = ({
6
6
  clerkPubKey: u,
7
7
  jwtTemplateName: c,
@@ -1,9 +1,9 @@
1
1
  import "./jsx-runtime-BzflLqGi.js";
2
- import { y as e } from "./firebase-DF-VVKB7.js";
2
+ import { y as e } from "./firebase-C7XKRGLf.js";
3
3
  import "./invariant-B_t_F2s_.js";
4
- import "./errors-CYLN8SNc.js";
5
- import "./SignUp-ChqXj9vd.js";
6
- import "./ZudokuContext-C6wlLMUH.js";
4
+ import "./errors-B77S9iOc.js";
5
+ import "./SignUp-Dug1jAGC.js";
6
+ import "./ZudokuReactContext-DGJAP1sN.js";
7
7
  export {
8
8
  e as default
9
9
  };
@@ -1,10 +1,11 @@
1
1
  import { j as D } from "./jsx-runtime-BzflLqGi.js";
2
2
  import { g as Le } from "./invariant-B_t_F2s_.js";
3
- import { E as Ue } from "./Zudoku-DA1yA-te.js";
3
+ import { E as Ue } from "./Zudoku-iyiXgWFY.js";
4
4
  import { C as xe } from "./ClientOnly-E7hGysn1.js";
5
- import { j as Ce, b as S } from "./ZudokuContext-C6wlLMUH.js";
6
- import { C as Ie, O as re, A as R } from "./errors-CYLN8SNc.js";
7
- import { C as je, O as Oe } from "./OAuthErrorPage-D7n-_cqN.js";
5
+ import { j as Ce } from "./ZudokuContext-CYyb_PB_.js";
6
+ import { C as Ie, O as re, A as R } from "./errors-B77S9iOc.js";
7
+ import { C as je, O as Oe } from "./OAuthErrorPage-CFz_gBFx.js";
8
+ import { u as S } from "./ZudokuReactContext-DGJAP1sN.js";
8
9
  var J = { exports: {} }, De = J.exports, oe;
9
10
  function Je() {
10
11
  return oe || (oe = 1, (function(t) {
@@ -1110,10 +1111,10 @@ class It extends Ie {
1110
1111
  ];
1111
1112
  }
1112
1113
  }
1113
- const Kt = (t) => new It(t);
1114
+ const Ht = (t) => new It(t);
1114
1115
  export {
1115
1116
  pe as OPENID_CALLBACK_PATH,
1116
1117
  It as OpenIDAuthenticationProvider,
1117
- Kt as default
1118
+ Ht as default
1118
1119
  };
1119
1120
  //# sourceMappingURL=zudoku.auth-openid.js.map