zudoku 0.3.1-dev.17 → 0.3.1-dev.19

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 (27) hide show
  1. package/dist/lib/authentication/components/CallbackHandler.js +2 -1
  2. package/dist/lib/authentication/components/CallbackHandler.js.map +1 -1
  3. package/dist/lib/authentication/providers/auth0.js +19 -0
  4. package/dist/lib/authentication/providers/auth0.js.map +1 -1
  5. package/lib/{OperationList-DA1JffOY.js → OperationList-CZiSz5JH.js} +3 -3
  6. package/lib/{OperationList-DA1JffOY.js.map → OperationList-CZiSz5JH.js.map} +1 -1
  7. package/lib/{Route-DjCjfuk3.js → Route-Cle-r-bq.js} +2 -2
  8. package/lib/{Route-DjCjfuk3.js.map → Route-Cle-r-bq.js.map} +1 -1
  9. package/lib/{Spinner-BxpiCVtl.js → SidebarBadge-Ba0PhibA.js} +65 -75
  10. package/lib/SidebarBadge-Ba0PhibA.js.map +1 -0
  11. package/lib/Spinner-CvXZ7QK4.js +15 -0
  12. package/lib/Spinner-CvXZ7QK4.js.map +1 -0
  13. package/lib/{index-COKIoyh6.js → index-Br1MQPxy.js} +14 -13
  14. package/lib/{index-COKIoyh6.js.map → index-Br1MQPxy.js.map} +1 -1
  15. package/lib/{index-CKQG-w6R.js → index-DCJ9wEIV.js} +2 -2
  16. package/lib/{index-CKQG-w6R.js.map → index-DCJ9wEIV.js.map} +1 -1
  17. package/lib/zudoku.auth-auth0.js +32 -18
  18. package/lib/zudoku.auth-auth0.js.map +1 -1
  19. package/lib/zudoku.auth-openid.js +123 -122
  20. package/lib/zudoku.auth-openid.js.map +1 -1
  21. package/lib/zudoku.components.js +16 -15
  22. package/lib/zudoku.components.js.map +1 -1
  23. package/lib/zudoku.plugin-openapi.js +1 -1
  24. package/package.json +1 -1
  25. package/src/lib/authentication/components/CallbackHandler.tsx +6 -1
  26. package/src/lib/authentication/providers/auth0.tsx +27 -1
  27. package/lib/Spinner-BxpiCVtl.js.map +0 -1
@@ -1,7 +1,7 @@
1
1
  import * as n from "react";
2
2
  import { createContext as j, useContext as w, useState as O, useEffect as k, Children as D } from "react";
3
3
  import { a as M, o as L, n as F, P as b, d as q, u as B, r as G } from "./Combination-DruV0zX_.js";
4
- import { P as $ } from "./Spinner-BxpiCVtl.js";
4
+ import { P as $ } from "./SidebarBadge-Ba0PhibA.js";
5
5
  import { j as c } from "./jsx-runtime-B6kdoens.js";
6
6
  const H = j({ stagger: !1 }), X = ({ children: e }) => {
7
7
  const { stagger: r } = w(H), [o, a] = O(!r);
@@ -121,4 +121,4 @@ export {
121
121
  ee as T,
122
122
  X as a
123
123
  };
124
- //# sourceMappingURL=index-CKQG-w6R.js.map
124
+ //# sourceMappingURL=index-DCJ9wEIV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-CKQG-w6R.js","sources":["../src/lib/plugins/openapi/StaggeredRender.tsx","../../../node_modules/.pnpm/@radix-ui+react-collapsible@1.1.0_@types+react-dom@18.3.0_@types+react@18.3.3_react-dom@18.3._qjsk5diswkeszbepgt4ntypuku/node_modules/@radix-ui/react-collapsible/dist/index.mjs"],"sourcesContent":["import {\n Children,\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from \"react\";\n\nexport const StaggeredRenderContext = createContext({ stagger: false });\n\nconst StaggeredRender = ({ children }: { children: ReactNode[] }) => {\n const { stagger } = useContext(StaggeredRenderContext);\n const [renderAll, setRenderAll] = useState(!stagger);\n\n useEffect(() => {\n if (renderAll) {\n return;\n }\n\n const idle = requestIdleCallback(() => {\n setRenderAll(true);\n });\n\n return () => cancelIdleCallback(idle);\n }, [renderAll]);\n\n return !renderAll ? Children.toArray(children).slice(0, 3) : children;\n};\n\nexport default StaggeredRender;\n","\"use client\";\n\n// packages/react/collapsible/src/Collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(\n CollapsibleProvider,\n {\n scope: __scopeCollapsible,\n disabled,\n contentId: useId(),\n open,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(open),\n \"data-disabled\": disabled ? \"\" : void 0,\n ...collapsibleProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n disabled: context.disabled,\n ...triggerProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const height = heightRef.current;\n const widthRef = React.useRef(0);\n const width = widthRef.current;\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef();\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n node.style.transitionDuration = \"0s\";\n node.style.animationName = \"none\";\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n }, [context.open, present]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n id: context.contentId,\n hidden: !isOpen,\n ...contentProps,\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n ...props.style\n },\n children: isOpen && children\n }\n );\n});\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n Content,\n Root,\n Trigger,\n createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["StaggeredRenderContext","createContext","StaggeredRender","children","stagger","useContext","renderAll","setRenderAll","useState","useEffect","idle","Children","COLLAPSIBLE_NAME","createCollapsibleContext","createCollapsibleScope","createContextScope","CollapsibleProvider","useCollapsibleContext","Collapsible","React","props","forwardedRef","__scopeCollapsible","openProp","defaultOpen","disabled","onOpenChange","collapsibleProps","open","setOpen","useControllableState","jsx","useId","prevOpen","Primitive","getState","TRIGGER_NAME","CollapsibleTrigger","triggerProps","context","composeEventHandlers","CONTENT_NAME","CollapsibleContent","forceMount","contentProps","Presence","present","CollapsibleContentImpl","isPresent","setIsPresent","ref","composedRefs","useComposedRefs","heightRef","height","widthRef","width","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","useLayoutEffect","node","rect","Root","Trigger","Content"],"mappings":"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","x_google_ignoreList":[1]}
1
+ {"version":3,"file":"index-DCJ9wEIV.js","sources":["../src/lib/plugins/openapi/StaggeredRender.tsx","../../../node_modules/.pnpm/@radix-ui+react-collapsible@1.1.0_@types+react-dom@18.3.0_@types+react@18.3.3_react-dom@18.3._qjsk5diswkeszbepgt4ntypuku/node_modules/@radix-ui/react-collapsible/dist/index.mjs"],"sourcesContent":["import {\n Children,\n createContext,\n ReactNode,\n useContext,\n useEffect,\n useState,\n} from \"react\";\n\nexport const StaggeredRenderContext = createContext({ stagger: false });\n\nconst StaggeredRender = ({ children }: { children: ReactNode[] }) => {\n const { stagger } = useContext(StaggeredRenderContext);\n const [renderAll, setRenderAll] = useState(!stagger);\n\n useEffect(() => {\n if (renderAll) {\n return;\n }\n\n const idle = requestIdleCallback(() => {\n setRenderAll(true);\n });\n\n return () => cancelIdleCallback(idle);\n }, [renderAll]);\n\n return !renderAll ? Children.toArray(children).slice(0, 3) : children;\n};\n\nexport default StaggeredRender;\n","\"use client\";\n\n// packages/react/collapsible/src/Collapsible.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useLayoutEffect } from \"@radix-ui/react-use-layout-effect\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { useId } from \"@radix-ui/react-id\";\nimport { jsx } from \"react/jsx-runtime\";\nvar COLLAPSIBLE_NAME = \"Collapsible\";\nvar [createCollapsibleContext, createCollapsibleScope] = createContextScope(COLLAPSIBLE_NAME);\nvar [CollapsibleProvider, useCollapsibleContext] = createCollapsibleContext(COLLAPSIBLE_NAME);\nvar Collapsible = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeCollapsible,\n open: openProp,\n defaultOpen,\n disabled,\n onOpenChange,\n ...collapsibleProps\n } = props;\n const [open = false, setOpen] = useControllableState({\n prop: openProp,\n defaultProp: defaultOpen,\n onChange: onOpenChange\n });\n return /* @__PURE__ */ jsx(\n CollapsibleProvider,\n {\n scope: __scopeCollapsible,\n disabled,\n contentId: useId(),\n open,\n onOpenToggle: React.useCallback(() => setOpen((prevOpen) => !prevOpen), [setOpen]),\n children: /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(open),\n \"data-disabled\": disabled ? \"\" : void 0,\n ...collapsibleProps,\n ref: forwardedRef\n }\n )\n }\n );\n }\n);\nCollapsible.displayName = COLLAPSIBLE_NAME;\nvar TRIGGER_NAME = \"CollapsibleTrigger\";\nvar CollapsibleTrigger = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeCollapsible, ...triggerProps } = props;\n const context = useCollapsibleContext(TRIGGER_NAME, __scopeCollapsible);\n return /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n \"aria-controls\": context.contentId,\n \"aria-expanded\": context.open || false,\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n disabled: context.disabled,\n ...triggerProps,\n ref: forwardedRef,\n onClick: composeEventHandlers(props.onClick, context.onOpenToggle)\n }\n );\n }\n);\nCollapsibleTrigger.displayName = TRIGGER_NAME;\nvar CONTENT_NAME = \"CollapsibleContent\";\nvar CollapsibleContent = React.forwardRef(\n (props, forwardedRef) => {\n const { forceMount, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, props.__scopeCollapsible);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.open, children: ({ present }) => /* @__PURE__ */ jsx(CollapsibleContentImpl, { ...contentProps, ref: forwardedRef, present }) });\n }\n);\nCollapsibleContent.displayName = CONTENT_NAME;\nvar CollapsibleContentImpl = React.forwardRef((props, forwardedRef) => {\n const { __scopeCollapsible, present, children, ...contentProps } = props;\n const context = useCollapsibleContext(CONTENT_NAME, __scopeCollapsible);\n const [isPresent, setIsPresent] = React.useState(present);\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(forwardedRef, ref);\n const heightRef = React.useRef(0);\n const height = heightRef.current;\n const widthRef = React.useRef(0);\n const width = widthRef.current;\n const isOpen = context.open || isPresent;\n const isMountAnimationPreventedRef = React.useRef(isOpen);\n const originalStylesRef = React.useRef();\n React.useEffect(() => {\n const rAF = requestAnimationFrame(() => isMountAnimationPreventedRef.current = false);\n return () => cancelAnimationFrame(rAF);\n }, []);\n useLayoutEffect(() => {\n const node = ref.current;\n if (node) {\n originalStylesRef.current = originalStylesRef.current || {\n transitionDuration: node.style.transitionDuration,\n animationName: node.style.animationName\n };\n node.style.transitionDuration = \"0s\";\n node.style.animationName = \"none\";\n const rect = node.getBoundingClientRect();\n heightRef.current = rect.height;\n widthRef.current = rect.width;\n if (!isMountAnimationPreventedRef.current) {\n node.style.transitionDuration = originalStylesRef.current.transitionDuration;\n node.style.animationName = originalStylesRef.current.animationName;\n }\n setIsPresent(present);\n }\n }, [context.open, present]);\n return /* @__PURE__ */ jsx(\n Primitive.div,\n {\n \"data-state\": getState(context.open),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n id: context.contentId,\n hidden: !isOpen,\n ...contentProps,\n ref: composedRefs,\n style: {\n [`--radix-collapsible-content-height`]: height ? `${height}px` : void 0,\n [`--radix-collapsible-content-width`]: width ? `${width}px` : void 0,\n ...props.style\n },\n children: isOpen && children\n }\n );\n});\nfunction getState(open) {\n return open ? \"open\" : \"closed\";\n}\nvar Root = Collapsible;\nvar Trigger = CollapsibleTrigger;\nvar Content = CollapsibleContent;\nexport {\n Collapsible,\n CollapsibleContent,\n CollapsibleTrigger,\n Content,\n Root,\n Trigger,\n createCollapsibleScope\n};\n//# sourceMappingURL=index.mjs.map\n"],"names":["StaggeredRenderContext","createContext","StaggeredRender","children","stagger","useContext","renderAll","setRenderAll","useState","useEffect","idle","Children","COLLAPSIBLE_NAME","createCollapsibleContext","createCollapsibleScope","createContextScope","CollapsibleProvider","useCollapsibleContext","Collapsible","React","props","forwardedRef","__scopeCollapsible","openProp","defaultOpen","disabled","onOpenChange","collapsibleProps","open","setOpen","useControllableState","jsx","useId","prevOpen","Primitive","getState","TRIGGER_NAME","CollapsibleTrigger","triggerProps","context","composeEventHandlers","CONTENT_NAME","CollapsibleContent","forceMount","contentProps","Presence","present","CollapsibleContentImpl","isPresent","setIsPresent","ref","composedRefs","useComposedRefs","heightRef","height","widthRef","width","isOpen","isMountAnimationPreventedRef","originalStylesRef","rAF","useLayoutEffect","node","rect","Root","Trigger","Content"],"mappings":"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","x_google_ignoreList":[1]}
@@ -1,38 +1,52 @@
1
1
  var r = Object.defineProperty;
2
- var a = (s, t, e) => t in s ? r(s, t, { enumerable: !0, configurable: !0, writable: !0, value: e }) : s[t] = e;
3
- var n = (s, t, e) => a(s, typeof t != "symbol" ? t + "" : t, e);
2
+ var a = (i, e, t) => e in i ? r(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
+ var s = (i, e, t) => a(i, typeof e != "symbol" ? e + "" : e, t);
4
4
  import { u } from "./state-DsXXkBLH.js";
5
5
  import { OpenIDAuthenticationProvider as h } from "./zudoku.auth-openid.js";
6
- class c extends h {
7
- constructor() {
8
- super(...arguments);
9
- n(this, "onAuthorizationUrl", async (e, { isSignUp: i }) => {
10
- i && e.searchParams.set("screen_hint", "signup");
6
+ class d extends h {
7
+ constructor(t) {
8
+ super(t);
9
+ s(this, "onAuthorizationUrl", async (t, { isSignUp: o }) => {
10
+ o && t.searchParams.set("screen_hint", "signup");
11
11
  });
12
- n(this, "signOut", async () => {
12
+ s(this, "signOut", async () => {
13
13
  u.setState({
14
14
  isAuthenticated: !1,
15
15
  isPending: !1,
16
16
  profile: void 0
17
17
  }), sessionStorage.clear();
18
- const e = await this.getAuthServer(), i = new URL(
18
+ const t = await this.getAuthServer(), o = new URL(
19
19
  window.location.origin + this.logoutRedirectUrlPath
20
20
  );
21
- i.pathname = this.logoutRedirectUrlPath;
22
- let o;
23
- e.end_session_endpoint ? (o = new URL(e.end_session_endpoint), o.searchParams.set(
21
+ o.pathname = this.logoutRedirectUrlPath;
22
+ let n;
23
+ t.end_session_endpoint ? (n = new URL(t.end_session_endpoint), n.searchParams.set(
24
24
  "post_logout_redirect_uri",
25
- i.toString()
26
- )) : o = new URL(`${this.issuer}oidc/logout`);
25
+ o.toString()
26
+ )) : n = new URL(`${this.issuer}oidc/logout`);
27
27
  });
28
+ this.authorizationServer = {
29
+ issuer: t.issuer,
30
+ authorization_endpoint: `${t.issuer}/authorize`,
31
+ token_endpoint: `${t.issuer}/oauth/token`,
32
+ code_challenge_methods_supported: ["S256", "plain"]
33
+ };
34
+ }
35
+ async getAuthServer() {
36
+ return this.authorizationServer = {
37
+ issuer: new URL(this.authorizationEndpoint).origin,
38
+ authorization_endpoint: this.authorizationEndpoint,
39
+ token_endpoint: this.tokenEndpoint,
40
+ code_challenge_methods_supported: []
41
+ }, this.authorizationServer;
28
42
  }
29
43
  }
30
- const g = ({ domain: s, ...t }) => new c({
31
- ...t,
44
+ const _ = ({ domain: i, ...e }) => new d({
45
+ ...e,
32
46
  type: "openid",
33
- issuer: `https://${s}`
47
+ issuer: `https://${i}`
34
48
  });
35
49
  export {
36
- g as default
50
+ _ as default
37
51
  };
38
52
  //# sourceMappingURL=zudoku.auth-auth0.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"zudoku.auth-auth0.js","sources":["../src/lib/authentication/providers/auth0.tsx"],"sourcesContent":["import { Auth0AuthenticationConfig } from \"../../../config/config.js\";\nimport { AuthenticationProviderInitializer } from \"../authentication.js\";\nimport { useAuthState } from \"../state.js\";\nimport { OpenIDAuthenticationProvider } from \"./openid.js\";\n\nclass Auth0AuthenticationProvider extends OpenIDAuthenticationProvider {\n onAuthorizationUrl = async (\n url: URL,\n { isSignUp }: { isSignUp: boolean },\n ) => {\n if (isSignUp) {\n url.searchParams.set(\"screen_hint\", \"signup\");\n }\n };\n signOut = async (): Promise<void> => {\n useAuthState.setState({\n isAuthenticated: false,\n isPending: false,\n profile: undefined,\n });\n sessionStorage.clear();\n const as = await this.getAuthServer();\n\n const redirectUrl = new URL(\n window.location.origin + this.logoutRedirectUrlPath,\n );\n redirectUrl.pathname = this.logoutRedirectUrlPath;\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 let logoutUrl: URL;\n // The endSessionEndpoint is set, the IdP supports some form of logout,\n // so we use the IdP logout. Otherwise, just redirect the user to home\n if (as.end_session_endpoint) {\n logoutUrl = new URL(as.end_session_endpoint);\n // TODO: get id_token and set hint\n // const { id_token } = session;\n // if (id_token) {\n // logoutUrl.searchParams.set(\"id_token_hint\", id_token);\n // }\n logoutUrl.searchParams.set(\n \"post_logout_redirect_uri\",\n redirectUrl.toString(),\n );\n } else {\n logoutUrl = new URL(`${this.issuer}oidc/logout`);\n }\n };\n}\n\nconst auth0Auth: AuthenticationProviderInitializer<\n Auth0AuthenticationConfig\n> = ({ domain, ...options }) =>\n new Auth0AuthenticationProvider({\n ...options,\n type: \"openid\",\n issuer: `https://${domain}`,\n });\n\nexport default auth0Auth;\n"],"names":["Auth0AuthenticationProvider","OpenIDAuthenticationProvider","__publicField","url","isSignUp","useAuthState","as","redirectUrl","logoutUrl","auth0Auth","domain","options"],"mappings":";;;;;AAKA,MAAMA,UAAoCC,EAA6B;AAAA,EAAvE;AAAA;AACE,IAAAC,EAAA,4BAAqB,OACnBC,GACA,EAAE,UAAAC,QACC;AACH,MAAIA,KACED,EAAA,aAAa,IAAI,eAAe,QAAQ;AAAA,IAC9C;AAEF,IAAAD,EAAA,iBAAU,YAA2B;AACnC,MAAAG,EAAa,SAAS;AAAA,QACpB,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,SAAS;AAAA,MAAA,CACV,GACD,eAAe,MAAM;AACf,YAAAC,IAAK,MAAM,KAAK,iBAEhBC,IAAc,IAAI;AAAA,QACtB,OAAO,SAAS,SAAS,KAAK;AAAA,MAAA;AAEhC,MAAAA,EAAY,WAAW,KAAK;AAOxB,UAAAC;AAGJ,MAAIF,EAAG,wBACOE,IAAA,IAAI,IAAIF,EAAG,oBAAoB,GAM3CE,EAAU,aAAa;AAAA,QACrB;AAAA,QACAD,EAAY,SAAS;AAAA,MAAA,KAGvBC,IAAY,IAAI,IAAI,GAAG,KAAK,MAAM,aAAa;AAAA,IACjD;AAAA;AAEJ;AAEM,MAAAC,IAEF,CAAC,EAAE,QAAAC,GAAQ,GAAGC,EAAQ,MACxB,IAAIX,EAA4B;AAAA,EAC9B,GAAGW;AAAA,EACH,MAAM;AAAA,EACN,QAAQ,WAAWD,CAAM;AAC3B,CAAC;"}
1
+ {"version":3,"file":"zudoku.auth-auth0.js","sources":["../src/lib/authentication/providers/auth0.tsx"],"sourcesContent":["import {\n Auth0AuthenticationConfig,\n OpenIDAuthenticationConfig,\n} from \"../../../config/config.js\";\nimport { AuthenticationProviderInitializer } from \"../authentication.js\";\nimport { useAuthState } from \"../state.js\";\nimport { OpenIDAuthenticationProvider } from \"./openid.js\";\n\nclass Auth0AuthenticationProvider extends OpenIDAuthenticationProvider {\n constructor(config: OpenIDAuthenticationConfig) {\n super(config);\n\n // Prefill the authorization server since we know what Auth0's config is\n this.authorizationServer = {\n issuer: config.issuer,\n authorization_endpoint: `${config.issuer}/authorize`,\n token_endpoint: `${config.issuer}/oauth/token`,\n code_challenge_methods_supported: [\"S256\", \"plain\"],\n };\n }\n\n onAuthorizationUrl = async (\n url: URL,\n { isSignUp }: { isSignUp: boolean },\n ) => {\n if (isSignUp) {\n url.searchParams.set(\"screen_hint\", \"signup\");\n }\n };\n\n override async getAuthServer() {\n this.authorizationServer = {\n issuer: new URL(this.authorizationEndpoint!).origin,\n authorization_endpoint: this.authorizationEndpoint,\n token_endpoint: this.tokenEndpoint,\n code_challenge_methods_supported: [],\n };\n return this.authorizationServer;\n }\n\n signOut = async (): Promise<void> => {\n useAuthState.setState({\n isAuthenticated: false,\n isPending: false,\n profile: undefined,\n });\n sessionStorage.clear();\n const as = await this.getAuthServer();\n\n const redirectUrl = new URL(\n window.location.origin + this.logoutRedirectUrlPath,\n );\n redirectUrl.pathname = this.logoutRedirectUrlPath;\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 let logoutUrl: URL;\n // The endSessionEndpoint is set, the IdP supports some form of logout,\n // so we use the IdP logout. Otherwise, just redirect the user to home\n if (as.end_session_endpoint) {\n logoutUrl = new URL(as.end_session_endpoint);\n // TODO: get id_token and set hint\n // const { id_token } = session;\n // if (id_token) {\n // logoutUrl.searchParams.set(\"id_token_hint\", id_token);\n // }\n logoutUrl.searchParams.set(\n \"post_logout_redirect_uri\",\n redirectUrl.toString(),\n );\n } else {\n logoutUrl = new URL(`${this.issuer}oidc/logout`);\n }\n };\n}\n\nconst auth0Auth: AuthenticationProviderInitializer<\n Auth0AuthenticationConfig\n> = ({ domain, ...options }) =>\n new Auth0AuthenticationProvider({\n ...options,\n type: \"openid\",\n issuer: `https://${domain}`,\n });\n\nexport default auth0Auth;\n"],"names":["Auth0AuthenticationProvider","OpenIDAuthenticationProvider","config","__publicField","url","isSignUp","useAuthState","as","redirectUrl","logoutUrl","auth0Auth","domain","options"],"mappings":";;;;;AAQA,MAAMA,UAAoCC,EAA6B;AAAA,EACrE,YAAYC,GAAoC;AAC9C,UAAMA,CAAM;AAWd,IAAAC,EAAA,4BAAqB,OACnBC,GACA,EAAE,UAAAC,QACC;AACH,MAAIA,KACED,EAAA,aAAa,IAAI,eAAe,QAAQ;AAAA,IAC9C;AAaF,IAAAD,EAAA,iBAAU,YAA2B;AACnC,MAAAG,EAAa,SAAS;AAAA,QACpB,iBAAiB;AAAA,QACjB,WAAW;AAAA,QACX,SAAS;AAAA,MAAA,CACV,GACD,eAAe,MAAM;AACf,YAAAC,IAAK,MAAM,KAAK,iBAEhBC,IAAc,IAAI;AAAA,QACtB,OAAO,SAAS,SAAS,KAAK;AAAA,MAAA;AAEhC,MAAAA,EAAY,WAAW,KAAK;AAOxB,UAAAC;AAGJ,MAAIF,EAAG,wBACOE,IAAA,IAAI,IAAIF,EAAG,oBAAoB,GAM3CE,EAAU,aAAa;AAAA,QACrB;AAAA,QACAD,EAAY,SAAS;AAAA,MAAA,KAGvBC,IAAY,IAAI,IAAI,GAAG,KAAK,MAAM,aAAa;AAAA,IACjD;AA9DA,SAAK,sBAAsB;AAAA,MACzB,QAAQP,EAAO;AAAA,MACf,wBAAwB,GAAGA,EAAO,MAAM;AAAA,MACxC,gBAAgB,GAAGA,EAAO,MAAM;AAAA,MAChC,kCAAkC,CAAC,QAAQ,OAAO;AAAA,IAAA;AAAA,EAEtD;AAAA,EAWA,MAAe,gBAAgB;AAC7B,gBAAK,sBAAsB;AAAA,MACzB,QAAQ,IAAI,IAAI,KAAK,qBAAsB,EAAE;AAAA,MAC7C,wBAAwB,KAAK;AAAA,MAC7B,gBAAgB,KAAK;AAAA,MACrB,kCAAkC,CAAC;AAAA,IAAA,GAE9B,KAAK;AAAA,EACd;AAuCF;AAEM,MAAAQ,IAEF,CAAC,EAAE,QAAAC,GAAQ,GAAGC,EAAQ,MACxB,IAAIZ,EAA4B;AAAA,EAC9B,GAAGY;AAAA,EACH,MAAM;AAAA,EACN,QAAQ,WAAWD,CAAM;AAC3B,CAAC;"}