zudoku 0.1.1-dev.50 → 0.1.1-dev.52

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 (68) hide show
  1. package/dist/config/config.d.ts +19 -2
  2. package/dist/config/validators/auth.d.ts +2 -0
  3. package/dist/config/validators/auth.js +2 -0
  4. package/dist/config/validators/auth.js.map +1 -0
  5. package/dist/config/validators/validate.d.ts +2 -0
  6. package/dist/config/validators/validate.js +4 -0
  7. package/dist/config/validators/validate.js.map +1 -0
  8. package/dist/lib/authentication/Callback.d.ts +4 -0
  9. package/dist/lib/authentication/Callback.js +20 -0
  10. package/dist/lib/authentication/Callback.js.map +1 -0
  11. package/dist/lib/authentication/auth0.d.ts +5 -0
  12. package/dist/lib/authentication/auth0.js +9 -0
  13. package/dist/lib/authentication/auth0.js.map +1 -0
  14. package/dist/lib/authentication/authentication.d.ts +7 -10
  15. package/dist/lib/authentication/clerk.d.ts +3 -4
  16. package/dist/lib/authentication/clerk.js +13 -6
  17. package/dist/lib/authentication/clerk.js.map +1 -1
  18. package/dist/lib/authentication/openid.d.ts +5 -11
  19. package/dist/lib/authentication/openid.js +90 -73
  20. package/dist/lib/authentication/openid.js.map +1 -1
  21. package/dist/lib/components/DevPortal.d.ts +2 -2
  22. package/dist/lib/components/DevPortal.js +5 -1
  23. package/dist/lib/components/DevPortal.js.map +1 -1
  24. package/dist/lib/components/Layout.js +1 -4
  25. package/dist/lib/components/Layout.js.map +1 -1
  26. package/dist/lib/core/DevPortalContext.d.ts +4 -7
  27. package/dist/lib/core/DevPortalContext.js +6 -6
  28. package/dist/lib/core/DevPortalContext.js.map +1 -1
  29. package/dist/lib/core/plugins.d.ts +1 -6
  30. package/dist/lib/plugins/api-key/index.js +6 -3
  31. package/dist/lib/plugins/api-key/index.js.map +1 -1
  32. package/dist/lib/plugins/openapi/MakeRequest.js +9 -4
  33. package/dist/lib/plugins/openapi/MakeRequest.js.map +1 -1
  34. package/dist/lib/plugins/openapi/playground/Playground.d.ts +2 -1
  35. package/dist/lib/plugins/openapi/playground/Playground.js +1 -3
  36. package/dist/lib/plugins/openapi/playground/Playground.js.map +1 -1
  37. package/dist/lib/plugins/openapi/playground/QueryParams.js +7 -19
  38. package/dist/lib/plugins/openapi/playground/QueryParams.js.map +1 -1
  39. package/dist/vite/config.js +2 -0
  40. package/dist/vite/config.js.map +1 -1
  41. package/dist/vite/plugin-auth.js +1 -1
  42. package/dist/vite/plugin-auth.js.map +1 -1
  43. package/lib/DevPortalProvider-Dn9HNUG9.js +4559 -0
  44. package/lib/Spinner-D8DBhJkj.js +7329 -0
  45. package/lib/zudoku.auth-auth0.js +976 -0
  46. package/lib/zudoku.auth-clerk.js +21 -12
  47. package/lib/zudoku.components.js +180 -174
  48. package/lib/zudoku.plugins.js +6823 -6971
  49. package/package.json +4 -1
  50. package/src/lib/authentication/Callback.tsx +31 -0
  51. package/src/lib/authentication/auth0.tsx +18 -0
  52. package/src/lib/authentication/authentication.ts +7 -14
  53. package/src/lib/authentication/{clerk.ts → clerk.tsx} +17 -9
  54. package/src/lib/authentication/openid.tsx +206 -0
  55. package/src/lib/components/DevPortal.tsx +10 -3
  56. package/src/lib/components/Layout.tsx +1 -5
  57. package/src/lib/core/DevPortalContext.ts +10 -13
  58. package/src/lib/core/plugins.ts +4 -4
  59. package/src/lib/plugins/api-key/index.tsx +9 -3
  60. package/src/lib/plugins/openapi/MakeRequest.tsx +9 -4
  61. package/src/lib/plugins/openapi/playground/Playground.tsx +3 -4
  62. package/src/lib/plugins/openapi/playground/QueryParams.tsx +19 -39
  63. package/dist/lib/core/types/combine.d.ts +0 -4
  64. package/dist/lib/core/types/combine.js +0 -2
  65. package/dist/lib/core/types/combine.js.map +0 -1
  66. package/lib/Spinner-9_-7nYgL.js +0 -11855
  67. package/src/lib/authentication/openid.ts +0 -194
  68. package/src/lib/core/types/combine.ts +0 -16
@@ -4,6 +4,7 @@ import type { ApiKeyPluginOptions } from "../lib/plugins/api-key/index.js";
4
4
  import { OasPluginConfig } from "../lib/plugins/openapi/index.js";
5
5
  import type { Redirect } from "../lib/plugins/redirect/index.js";
6
6
  import { type MdxComponentsType } from "../lib/util/MdxComponents.js";
7
+ export type URLString = `https://${string}` | `http://${string}`;
7
8
  export interface ZudokuConfig {
8
9
  ui?: UIConfig;
9
10
  mdx?: {
@@ -45,6 +46,22 @@ export interface DocsConfig {
45
46
  export type ApiConfig = OasPluginConfig;
46
47
  export interface ClerkAuthenticationConfig {
47
48
  type: "clerk";
48
- clerkPubKey: string;
49
+ clerkPubKey: `pk_test_${string}` | `pk_live_${string}`;
49
50
  }
50
- export type AuthenticationConfig = ClerkAuthenticationConfig;
51
+ export interface OpenIDAuthenticationConfig {
52
+ type: "openid";
53
+ clientId: string;
54
+ issuer: string;
55
+ scopes?: string[];
56
+ audience?: string;
57
+ jwksEndpoint?: URL | URLString;
58
+ authorizationEndpoint?: string;
59
+ tokenEndpoint?: string;
60
+ }
61
+ export interface Auth0AuthenticationConfig {
62
+ type: "auth0";
63
+ clientId: string;
64
+ domain: string;
65
+ audience?: string;
66
+ }
67
+ export type AuthenticationConfig = ClerkAuthenticationConfig | Auth0AuthenticationConfig;
@@ -0,0 +1,2 @@
1
+ import { Auth0AuthenticationConfig } from "../config.js";
2
+ export declare function auth0Validator(config: Auth0AuthenticationConfig): void;
@@ -0,0 +1,2 @@
1
+ export function auth0Validator(config) { }
2
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/config/validators/auth.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,MAAiC,IAAS,CAAC"}
@@ -0,0 +1,2 @@
1
+ import { ZudokuConfig } from "../config.js";
2
+ export declare function validateConfig(config: ZudokuConfig): void;
@@ -0,0 +1,4 @@
1
+ export function validateConfig(config) {
2
+ // TODO
3
+ }
4
+ //# sourceMappingURL=validate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/config/validators/validate.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,cAAc,CAAC,MAAoB;IACjD,OAAO;AACT,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { DevPortalContext, SessionProfileState } from "../core/DevPortalContext.js";
2
+ export declare function Callback({ handleCallback, }: {
3
+ handleCallback: (url: URL, context: DevPortalContext) => Promise<SessionProfileState>;
4
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { Navigate } from "react-router-dom";
4
+ import { useDevPortal } from "../components/context/DevPortalProvider.js";
5
+ export function Callback({ handleCallback, }) {
6
+ const context = useDevPortal();
7
+ const callback = useQuery({
8
+ queryFn: () => handleCallback(new URL(window.location.href), context),
9
+ retry: 0,
10
+ queryKey: ["auth-callback"],
11
+ });
12
+ if (callback.isPending) {
13
+ return _jsx("div", { children: "Loading..." });
14
+ }
15
+ else if (callback.error) {
16
+ return _jsxs("div", { children: ["Error: ", JSON.stringify(callback.error)] });
17
+ }
18
+ return _jsx(Navigate, { to: "/", replace: true });
19
+ }
20
+ //# sourceMappingURL=Callback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Callback.js","sourceRoot":"","sources":["../../../src/lib/authentication/Callback.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAM1E,MAAM,UAAU,QAAQ,CAAC,EACvB,cAAc,GAMf;IACC,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,QAAQ,GAAG,QAAQ,CAAC;QACxB,OAAO,EAAE,GAAG,EAAE,CAAC,cAAc,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;QACrE,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE,CAAC,eAAe,CAAC;KAC5B,CAAC,CAAC;IAEH,IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC;QACvB,OAAO,uCAAqB,CAAC;IAC/B,CAAC;SAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAC1B,OAAO,qCAAa,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAO,CAAC;IAC5D,CAAC;IAED,OAAO,KAAC,QAAQ,IAAC,EAAE,EAAC,GAAG,EAAC,OAAO,EAAE,IAAI,GAAI,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { Auth0AuthenticationConfig } from "../../config/config.js";
2
+ import { NavigationPlugin } from "../core/plugins.js";
3
+ import { AuthenticationProvider } from "./authentication.js";
4
+ declare const auth0Provider: ({ domain, clientId, audience, }: Auth0AuthenticationConfig) => AuthenticationProvider & NavigationPlugin;
5
+ export default auth0Provider;
@@ -0,0 +1,9 @@
1
+ import openIdAuth from "./openid.js";
2
+ const auth0Provider = ({ domain, clientId, audience, }) => openIdAuth({
3
+ type: "openid",
4
+ issuer: `https://${domain}`,
5
+ clientId: clientId,
6
+ audience: audience,
7
+ });
8
+ export default auth0Provider;
9
+ //# sourceMappingURL=auth0.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth0.js","sourceRoot":"","sources":["../../../src/lib/authentication/auth0.tsx"],"names":[],"mappings":"AAGA,OAAO,UAAU,MAAM,aAAa,CAAC;AAErC,MAAM,aAAa,GAAG,CAAC,EACrB,MAAM,EACN,QAAQ,EACR,QAAQ,GACkB,EAA6C,EAAE,CACzE,UAAU,CAAC;IACT,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE,WAAW,MAAM,EAAE;IAC3B,QAAQ,EAAE,QAAQ;IAClB,QAAQ,EAAE,QAAQ;CACnB,CAAC,CAAC;AAEL,eAAe,aAAa,CAAC"}
@@ -1,13 +1,10 @@
1
- import { DevPortalContext } from "../core/DevPortalContext.js";
2
- export interface AuthProvider {
3
- initialize(context: DevPortalContext): Promise<unknown>;
1
+ import { DevPortalContext } from "../../lib/core/DevPortalContext.js";
2
+ import { NavigationPlugin } from "../../lib/core/plugins.js";
3
+ export interface AuthenticationProvider extends NavigationPlugin {
4
+ initialize?(context: DevPortalContext): Promise<unknown>;
4
5
  login(context: DevPortalContext): Promise<unknown>;
6
+ signRequest(request: Request, context: DevPortalContext): Promise<Request>;
7
+ /** @deprecated **/
5
8
  getToken?: (context: DevPortalContext) => Promise<string | undefined>;
6
- handleAuthenticationResponse?: (path: Path, context: DevPortalContext) => Promise<unknown>;
7
- signOut(context: DevPortalContext): void;
9
+ logout(context: DevPortalContext): void;
8
10
  }
9
- export type Path = {
10
- pathname: string;
11
- search: string;
12
- hash: string;
13
- };
@@ -1,5 +1,4 @@
1
- import { type AuthProvider } from "./authentication.js";
2
- declare const clerkAuth: ({ clerkPubKey }: {
3
- clerkPubKey: string;
4
- }) => AuthProvider;
1
+ import { ClerkAuthenticationConfig } from "../../config/config.js";
2
+ import { AuthenticationProvider } from "./authentication.js";
3
+ declare const clerkAuth: ({ clerkPubKey, }: ClerkAuthenticationConfig) => AuthenticationProvider;
5
4
  export default clerkAuth;
@@ -1,13 +1,13 @@
1
- const clerkAuth = ({ clerkPubKey }) => {
1
+ const clerkAuth = ({ clerkPubKey, }) => {
2
2
  let clerkApi;
3
- const clerkIsLoaded = (async () => {
3
+ const ensureLoaded = (async () => {
4
4
  const { Clerk } = await import("@clerk/clerk-js");
5
5
  clerkApi = new Clerk(clerkPubKey);
6
6
  await clerkApi.load({});
7
7
  })();
8
8
  return {
9
9
  initialize: async (context) => {
10
- await clerkIsLoaded;
10
+ await ensureLoaded;
11
11
  if (clerkApi.session) {
12
12
  await context.setUserProfile({
13
13
  isLoggedIn: true,
@@ -22,17 +22,24 @@ const clerkAuth = ({ clerkPubKey }) => {
22
22
  });
23
23
  }
24
24
  },
25
+ async signRequest(request) {
26
+ await ensureLoaded;
27
+ const token = await clerkApi.session?.getToken();
28
+ request.headers.set("Authorization", `Bearer ${token}`);
29
+ return request;
30
+ },
25
31
  getToken: async () => {
26
- await clerkIsLoaded;
32
+ await ensureLoaded;
27
33
  const token = await clerkApi.session?.getToken();
28
34
  return token ?? undefined;
29
35
  },
30
- signOut() {
31
- clerkApi.signOut();
36
+ logout: async () => {
37
+ await clerkApi.signOut();
32
38
  },
33
39
  login: async () => {
34
40
  await clerkApi.redirectToSignIn();
35
41
  },
42
+ getRoutes: () => [],
36
43
  };
37
44
  };
38
45
  export default clerkAuth;
@@ -1 +1 @@
1
- {"version":3,"file":"clerk.js","sourceRoot":"","sources":["../../../src/lib/authentication/clerk.ts"],"names":[],"mappings":"AAGA,MAAM,SAAS,GAAG,CAAC,EAAE,WAAW,EAA2B,EAAgB,EAAE;IAC3E,IAAI,QAAe,CAAC;IAEpB,MAAM,aAAa,GAAG,CAAC,KAAK,IAAI,EAAE;QAChC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClD,QAAQ,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAElC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5B,MAAM,aAAa,CAAC;YAEpB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,cAAc,CAAC;oBAC3B,UAAU,EAAE,IAAI;oBAChB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS;oBACjD,KAAK,EACH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY;wBACxD,SAAS;iBACZ,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,cAAc,CAAC;oBAC3B,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,aAAa,CAAC;YACpB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACjD,OAAO,KAAK,IAAI,SAAS,CAAC;QAC5B,CAAC;QAED,OAAO;YACL,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACpC,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"clerk.js","sourceRoot":"","sources":["../../../src/lib/authentication/clerk.tsx"],"names":[],"mappings":"AAIA,MAAM,SAAS,GAAG,CAAC,EACjB,WAAW,GACe,EAA0B,EAAE;IACtD,IAAI,QAAe,CAAC;IAEpB,MAAM,YAAY,GAAG,CAAC,KAAK,IAAI,EAAE;QAC/B,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClD,QAAQ,GAAG,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC;QAElC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC;IAEL,OAAO;QACL,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAC5B,MAAM,YAAY,CAAC;YAEnB,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACrB,MAAM,OAAO,CAAC,cAAc,CAAC;oBAC3B,UAAU,EAAE,IAAI;oBAChB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS;oBACjD,KAAK,EACH,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY;wBACxD,SAAS;iBACZ,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,CAAC,cAAc,CAAC;oBAC3B,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,OAAgB;YAChC,MAAM,YAAY,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACjD,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,KAAK,EAAE,CAAC,CAAC;YACxD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,QAAQ,EAAE,KAAK,IAAI,EAAE;YACnB,MAAM,YAAY,CAAC;YACnB,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC;YACjD,OAAO,KAAK,IAAI,SAAS,CAAC;QAC5B,CAAC;QACD,MAAM,EAAE,KAAK,IAAI,EAAE;YACjB,MAAM,QAAQ,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,MAAM,QAAQ,CAAC,gBAAgB,EAAE,CAAC;QACpC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,EAAE;KACpB,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,11 +1,5 @@
1
- import { type AuthProvider } from "./authentication.js";
2
- export type AuthServerOption = {
3
- issuer?: string;
4
- authorizationEndpoint?: string;
5
- tokenEndpoint?: string;
6
- };
7
- export declare const openIdAuth: ({ clientId, clientSecret, issuer, authorizationEndpoint, tokenEndpoint, }: {
8
- clientId: string;
9
- clientSecret?: string;
10
- audience?: string;
11
- } & AuthServerOption) => AuthProvider;
1
+ import { OpenIDAuthenticationConfig } from "../../config/config.js";
2
+ import { NavigationPlugin } from "../core/plugins.js";
3
+ import { AuthenticationProvider } from "./authentication.js";
4
+ declare const openIdAuth: ({ issuer, authorizationEndpoint, tokenEndpoint, clientId, }: OpenIDAuthenticationConfig) => AuthenticationProvider & NavigationPlugin;
5
+ export default openIdAuth;
@@ -1,38 +1,87 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
1
2
  import logger from "loglevel";
2
3
  import * as oauth from "oauth4webapi";
3
- const algorithm = "oauth2";
4
- const getAuthServerByIssuer = async (issuer) => {
5
- const authorizationServer = await oauth
6
- .discoveryRequest(new URL(issuer), { algorithm })
7
- .then((response) => oauth.processDiscoveryResponse(new URL(issuer), response));
8
- return authorizationServer;
9
- };
10
- const getAuthServer = async ({ issuer, authorizationEndpoint, tokenEndpoint, }) => {
11
- return issuer
12
- ? await getAuthServerByIssuer(issuer)
13
- : {
14
- issuer: new URL(authorizationEndpoint).origin,
15
- authorization_endpoint: authorizationEndpoint,
16
- token_endpoint: tokenEndpoint,
17
- code_challenge_methods_supported: [],
18
- };
19
- };
20
- export const openIdAuth = ({ clientId, clientSecret, issuer, authorizationEndpoint, tokenEndpoint, }) => {
4
+ import { Callback } from "./Callback.js";
5
+ const CALLBACK_URL_PATH = "/oauth/callback";
6
+ async function getAuthServerByIssuer(issuer) {
7
+ const issuerUrl = typeof issuer === "string" ? new URL(issuer) : issuer;
8
+ const response = await oauth.discoveryRequest(issuerUrl);
9
+ const server = await oauth.processDiscoveryResponse(issuerUrl, response);
10
+ return server;
11
+ }
12
+ async function getAuthServer({ issuer, authorizationEndpoint, tokenEndpoint, }) {
13
+ return await getAuthServerByIssuer(issuer);
14
+ // : ({
15
+ // issuer: new URL(authorizationEndpoint!).origin,
16
+ // authorization_endpoint: authorizationEndpoint,
17
+ // token_endpoint: tokenEndpoint,
18
+ // code_challenge_methods_supported: [],
19
+ // } satisfies oauth.AuthorizationServer);
20
+ }
21
+ const openIdAuth = ({ issuer, authorizationEndpoint, tokenEndpoint, clientId, }) => {
21
22
  const client = {
22
23
  client_id: clientId,
23
- client_secret: clientSecret,
24
24
  token_endpoint_auth_method: "none",
25
25
  };
26
- const redirect_uri = "http://localhost:5173/oauth/callback";
26
+ async function handleCallback(url, context) {
27
+ const searchParams = url.searchParams;
28
+ const state = searchParams.get("state");
29
+ // one eternity later, the user lands back on the redirect_uri
30
+ // Authorization Code Grant Request & Response
31
+ const codeVerifier = await context.sessionStorage.get("codeVerifier");
32
+ if (!codeVerifier) {
33
+ return {
34
+ isLoggedIn: false,
35
+ };
36
+ }
37
+ const authServer = await getAuthServer({
38
+ issuer: issuer,
39
+ authorizationEndpoint: authorizationEndpoint,
40
+ tokenEndpoint: tokenEndpoint,
41
+ });
42
+ const params = oauth.validateAuthResponse(authServer, client, searchParams, state ?? undefined);
43
+ if (oauth.isOAuth2Error(params)) {
44
+ logger.error("Error Response", params);
45
+ throw new Error(); // Handle OAuth 2.0 redirect error
46
+ }
47
+ const redirectUrl = new URL(url);
48
+ redirectUrl.pathname = CALLBACK_URL_PATH;
49
+ redirectUrl.search = "";
50
+ const response = await oauth.authorizationCodeGrantRequest(authServer, client, params, redirectUrl.toString(), codeVerifier);
51
+ // @todo do we need to do these
52
+ // const challenges = oauth.parseWwwAuthenticateChallenges(response);
53
+ // if (challenges) {
54
+ // for (const challenge of challenges) {
55
+ // console.error("WWW-Authenticate Challenge", challenge);
56
+ // }
57
+ // throw new Error(); // Handle WWW-Authenticate Challenges as needed
58
+ // }
59
+ const oauthResult = await oauth.processAuthorizationCodeOAuth2Response(authServer, client, response);
60
+ if (oauth.isOAuth2Error(oauthResult)) {
61
+ logger.error("Error Response", oauthResult);
62
+ throw new Error(oauthResult.error);
63
+ }
64
+ const userInfoResponse = await oauth.userInfoRequest(authServer, client, oauthResult.access_token);
65
+ const userInfo = await userInfoResponse.json();
66
+ const profile = {
67
+ sub: userInfo.sub,
68
+ email: userInfo.email,
69
+ name: userInfo.name,
70
+ email_verified: userInfo.email_verified ?? false,
71
+ picture: userInfo.picture,
72
+ isLoggedIn: true,
73
+ };
74
+ void context.setUserProfile(profile);
75
+ return profile;
76
+ }
27
77
  return {
28
- initialize() {
29
- return Promise.resolve();
78
+ logout: async (context) => {
79
+ await context.setUserProfile({ isLoggedIn: false });
30
80
  },
31
- signOut() { },
32
81
  login: async (context) => {
33
82
  const code_challenge_method = "S256";
34
83
  const authorizationServer = await getAuthServer({
35
- issuer,
84
+ issuer: issuer,
36
85
  authorizationEndpoint,
37
86
  tokenEndpoint,
38
87
  });
@@ -49,10 +98,13 @@ export const openIdAuth = ({ clientId, clientSecret, issuer, authorizationEndpoi
49
98
  await context.sessionStorage.set("codeVerifier", codeVerifier);
50
99
  // redirect user to as.authorization_endpoint
51
100
  const authorizationUrl = new URL(authorizationServer.authorization_endpoint);
101
+ const redirectUrl = new URL(context.url);
102
+ redirectUrl.pathname = CALLBACK_URL_PATH;
103
+ redirectUrl.search = "";
52
104
  authorizationUrl.searchParams.set("client_id", client.client_id);
53
- authorizationUrl.searchParams.set("redirect_uri", redirect_uri);
105
+ authorizationUrl.searchParams.set("redirect_uri", redirectUrl.toString());
54
106
  authorizationUrl.searchParams.set("response_type", "code");
55
- // authorizationUrl.searchParams.set("scope", "api:read");
107
+ authorizationUrl.searchParams.set("scope", "openid+profile+email");
56
108
  authorizationUrl.searchParams.set("code_challenge", codeChallenge);
57
109
  authorizationUrl.searchParams.set("code_challenge_method", code_challenge_method);
58
110
  /**
@@ -66,54 +118,19 @@ export const openIdAuth = ({ clientId, clientSecret, issuer, authorizationEndpoi
66
118
  // now redirect the user to authorizationUrl.href
67
119
  location.href = authorizationUrl.href;
68
120
  },
69
- handleAuthenticationResponse: async ({ search }, { sessionStorage }) => {
70
- const searchParams = new URLSearchParams(search);
71
- const state = searchParams.get("state");
72
- if (!state) {
73
- return;
74
- }
75
- // one eternity later, the user lands back on the redirect_uri
76
- // Authorization Code Grant Request & Response
77
- const codeVerifier = await sessionStorage.get("codeVerifier");
78
- if (!codeVerifier) {
79
- return;
80
- }
81
- const as = await getAuthServer({
82
- issuer,
83
- authorizationEndpoint,
84
- tokenEndpoint,
85
- });
86
- const params = oauth.validateAuthResponse(as, client, searchParams, state);
87
- if (oauth.isOAuth2Error(params)) {
88
- logger.error("Error Response", params);
89
- throw new Error(); // Handle OAuth 2.0 redirect error
90
- }
91
- const response = await oauth.authorizationCodeGrantRequest(as, client, params, redirect_uri, codeVerifier);
92
- // @todo do we need to do these
93
- // const challenges = oauth.parseWwwAuthenticateChallenges(response);
94
- // if (challenges) {
95
- // for (const challenge of challenges) {
96
- // console.error("WWW-Authenticate Challenge", challenge);
97
- // }
98
- // throw new Error(); // Handle WWW-Authenticate Challenges as needed
99
- // }
100
- const oauthResult = await oauth.processAuthorizationCodeOpenIDResponse(as, client, response);
101
- if (oauth.isOAuth2Error(oauthResult)) {
102
- logger.error("Error Response", oauthResult);
103
- throw new Error(oauthResult.error);
104
- }
105
- const userInfoResponse = await oauth.userInfoRequest(as, client, oauthResult.access_token);
106
- const userInfo = await userInfoResponse.json();
107
- // void storage.setProfile({
108
- // sub: userInfo.sub,
109
- // email: userInfo.email,
110
- // name: userInfo.name,
111
- // email_verified: userInfo.email_verified ?? false,
112
- // picture: userInfo.picture,
113
- // id_token: oauthResult.id_token,
114
- // access_token: oauthResult.access_token,
115
- // });
121
+ signRequest(request, context) {
122
+ // check if token is expired
123
+ return Promise.resolve(request);
124
+ },
125
+ getRoutes: () => {
126
+ return [
127
+ {
128
+ path: CALLBACK_URL_PATH,
129
+ element: _jsx(Callback, { handleCallback: handleCallback }),
130
+ },
131
+ ];
116
132
  },
117
133
  };
118
134
  };
135
+ export default openIdAuth;
119
136
  //# sourceMappingURL=openid.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openid.js","sourceRoot":"","sources":["../../../src/lib/authentication/openid.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openid.js","sourceRoot":"","sources":["../../../src/lib/authentication/openid.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAKtC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,iBAAiB,GAAG,iBAAiB,CAAC;AAE5C,KAAK,UAAU,qBAAqB,CAAC,MAAoB;IACvD,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,wBAAwB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACzE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,EAC3B,MAAM,EACN,qBAAqB,EACrB,aAAa,GAId;IACC,OAAO,MAAM,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAC3C,OAAO;IACP,sDAAsD;IACtD,qDAAqD;IACrD,qCAAqC;IACrC,4CAA4C;IAC5C,4CAA4C;AAC9C,CAAC;AAED,MAAM,UAAU,GAAG,CAAC,EAClB,MAAM,EACN,qBAAqB,EACrB,aAAa,EACb,QAAQ,GACmB,EAA6C,EAAE;IAC1E,MAAM,MAAM,GAAiB;QAC3B,SAAS,EAAE,QAAQ;QACnB,0BAA0B,EAAE,MAAM;KACnC,CAAC;IAEF,KAAK,UAAU,cAAc,CAAC,GAAQ,EAAE,OAAyB;QAC/D,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;QACtC,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAExC,8DAA8D;QAC9D,8CAA8C;QAC9C,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEtE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,UAAU,EAAE,KAAK;aAClB,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC;YACrC,MAAM,EAAE,MAAM;YACd,qBAAqB,EAAE,qBAAqB;YAC5C,aAAa,EAAE,aAAa;SAC7B,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,KAAK,CAAC,oBAAoB,CACvC,UAAU,EACV,MAAM,EACN,YAAY,EACZ,KAAK,IAAI,SAAS,CACnB,CAAC;QACF,IAAI,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;YACvC,MAAM,IAAI,KAAK,EAAE,CAAC,CAAC,kCAAkC;QACvD,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,WAAW,CAAC,QAAQ,GAAG,iBAAiB,CAAC;QACzC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;QAExB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,6BAA6B,CACxD,UAAU,EACV,MAAM,EACN,MAAM,EACN,WAAW,CAAC,QAAQ,EAAE,EACtB,YAAY,CACb,CAAC;QAEF,+BAA+B;QAC/B,qEAAqE;QACrE,oBAAoB;QACpB,0CAA0C;QAC1C,8DAA8D;QAC9D,MAAM;QACN,uEAAuE;QACvE,IAAI;QACJ,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,sCAAsC,CACpE,UAAU,EACV,MAAM,EACN,QAAQ,CACT,CAAC;QAEF,IAAI,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,KAAK,CAAC,eAAe,CAClD,UAAU,EACV,MAAM,EACN,WAAW,CAAC,YAAY,CACzB,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,IAAI,EAAE,CAAC;QAE/C,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,QAAQ,CAAC,GAAG;YACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,IAAI,EAAE,QAAQ,CAAC,IAAI;YACnB,cAAc,EAAE,QAAQ,CAAC,cAAc,IAAI,KAAK;YAChD,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,IAAI;SACjB,CAAC;QACF,KAAK,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAErC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACxB,MAAM,OAAO,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACvB,MAAM,qBAAqB,GAAG,MAAM,CAAC;YACrC,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC;gBAC9C,MAAM,EAAE,MAAM;gBACd,qBAAqB;gBACrB,aAAa;aACd,CAAC,CAAC;YAEH,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED;;;;eAIG;YACH,MAAM,YAAY,GAAG,KAAK,CAAC,0BAA0B,EAAE,CAAC;YACxD,MAAM,aAAa,GACjB,MAAM,KAAK,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;YAEvD,MAAM,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAE/D,6CAA6C;YAC7C,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,mBAAmB,CAAC,sBAAsB,CAC3C,CAAC;YAEF,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACzC,WAAW,CAAC,QAAQ,GAAG,iBAAiB,CAAC;YACzC,WAAW,CAAC,MAAM,GAAG,EAAE,CAAC;YAExB,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACjE,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1E,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAC3D,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,sBAAsB,CAAC,CAAC;YACnE,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,EAAE,aAAa,CAAC,CAAC;YACnE,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAC/B,uBAAuB,EACvB,qBAAqB,CACtB,CAAC;YAEF;;;eAGG;YACH,IACE,mBAAmB,CAAC,gCAAgC,EAAE,QAAQ,CAC5D,MAAM,CACP,KAAK,IAAI,EACV,CAAC;gBACD,MAAM,KAAK,GAAG,KAAK,CAAC,mBAAmB,EAAE,CAAC;gBAC1C,gBAAgB,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACpD,CAAC;YAED,iDAAiD;YACjD,QAAQ,CAAC,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC;QACxC,CAAC;QACD,WAAW,CAAC,OAAgB,EAAE,OAAyB;YACrD,4BAA4B;YAE5B,OAAO,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,OAAO;gBACL;oBACE,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,KAAC,QAAQ,IAAC,cAAc,EAAE,cAAc,GAAI;iBACtD;aACF,CAAC;QACJ,CAAC;KACkD,CAAC;AACxD,CAAC,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -1,6 +1,6 @@
1
- import { type AuthProvider } from "../authentication/authentication.js";
2
1
  import { type NavigationItem } from "../core/DevPortalContext.js";
3
2
  import { type DevPortalPlugin } from "../core/plugins.js";
3
+ import { AuthenticationProvider } from "../authentication/authentication.js";
4
4
  import { type MdxComponentsType } from "../util/MdxComponents.js";
5
5
  import { type ComponentsContextType } from "./context/ComponentsContext.js";
6
6
  export declare const DevPortalSystemPaths: {
@@ -15,7 +15,7 @@ export type DevPortalProps = {
15
15
  logo: string;
16
16
  favicon: string;
17
17
  }>;
18
- authentication?: AuthProvider;
18
+ authentication?: AuthenticationProvider;
19
19
  navigation: NavigationItem[];
20
20
  plugins?: DevPortalPlugin[];
21
21
  mdxComponents?: MdxComponentsType;
@@ -1,4 +1,5 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
+ /* eslint-disable react/destructuring-assignment */
2
3
  import { MDXProvider } from "@mdx-js/react";
3
4
  import { QueryClientProvider } from "@tanstack/react-query";
4
5
  import { memo, Suspense, useEffect, useMemo } from "react";
@@ -20,7 +21,10 @@ const DevPortalInner = (props) => {
20
21
  useEffect(() => {
21
22
  void devPortalContext.initialize();
22
23
  }, [devPortalContext]);
23
- return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(HelmetProvider, { children: _jsx(DevPortalProvider, { value: devPortalContext, children: _jsx(MDXProvider, { components: mdxComponents, children: _jsx(ThemeProvider, { children: _jsx(ComponentsProvider, { value: components, children: _jsx(ViewportAnchorProvider, { children: _jsx(Suspense, { fallback: _jsx("div", { className: "grid place-items-center h-full", children: "Loading..." }), children: _jsx(Router, { plugins: props.plugins }) }) }) }) }) }) }) }) }));
24
+ return (_jsx(QueryClientProvider, { client: queryClient, children: _jsx(HelmetProvider, { children: _jsx(DevPortalProvider, { value: devPortalContext, children: _jsx(MDXProvider, { components: mdxComponents, children: _jsx(ThemeProvider, { children: _jsx(ComponentsProvider, { value: components, children: _jsx(ViewportAnchorProvider, { children: _jsx(Suspense, { fallback: _jsx("div", { className: "grid place-items-center h-full", children: "Loading..." }), children: _jsx(Router, { plugins: [
25
+ ...(props.plugins ?? []),
26
+ ...(props.authentication ? [props.authentication] : []),
27
+ ] }) }) }) }) }) }) }) }) }));
24
28
  };
25
29
  const DevPortal = memo(DevPortalInner);
26
30
  DevPortal.displayName = "DevPortal";
@@ -1 +1 @@
1
- {"version":3,"file":"DevPortal.js","sourceRoot":"","sources":["../../../src/lib/components/DevPortal.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAE3D,OAAO,EACL,gBAAgB,EAChB,WAAW,GAEZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,OAAO,EACL,aAAa,GAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,WAAW;CACb,CAAC;AAqBX,MAAM,cAAc,GAAG,CAAC,KAAqB,EAAE,EAAE;IAC/C,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,EACrD,CAAC,KAAK,CAAC,SAAS,CAAC,CAClB,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,EACpD,CAAC,KAAK,CAAC,aAAa,CAAC,CACtB,CAAC;IAEF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7E,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,CACL,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YACtC,KAAC,cAAc,cACb,KAAC,iBAAiB,IAAC,KAAK,EAAE,gBAAgB,YACxC,KAAC,WAAW,IAAC,UAAU,EAAE,aAAa,YACpC,KAAC,aAAa,cACZ,KAAC,kBAAkB,IAAC,KAAK,EAAE,UAAU,YACnC,KAAC,sBAAsB,cACrB,KAAC,QAAQ,IACP,QAAQ,EACN,cAAK,SAAS,EAAC,gCAAgC,2BAEzC,YAGR,KAAC,MAAM,IAAC,OAAO,EAAE,KAAK,CAAC,OAAO,GAAI,GACzB,GACY,GACN,GACP,GACJ,GACI,GACL,GACG,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACvC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"DevPortal.js","sourceRoot":"","sources":["../../../src/lib/components/DevPortal.tsx"],"names":[],"mappings":";AAAA,mDAAmD;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAC3D,OAAO,EACL,gBAAgB,EAChB,WAAW,GAEZ,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAInD,OAAO,EACL,aAAa,GAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,GAEnB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oCAAoC,CAAC;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,QAAQ,EAAE,WAAW;CACb,CAAC;AAqBX,MAAM,cAAc,GAAG,CAAC,KAAqB,EAAE,EAAE;IAC/C,MAAM,UAAU,GAAG,OAAO,CACxB,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,kBAAkB,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC,EACrD,CAAC,KAAK,CAAC,SAAS,CAAC,CAClB,CAAC;IAEF,MAAM,aAAa,GAAG,OAAO,CAC3B,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,aAAa,EAAE,GAAG,KAAK,CAAC,aAAa,EAAE,CAAC,EACpD,CAAC,KAAK,CAAC,aAAa,CAAC,CACtB,CAAC;IAEF,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE7E,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,gBAAgB,CAAC,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEvB,OAAO,CACL,KAAC,mBAAmB,IAAC,MAAM,EAAE,WAAW,YACtC,KAAC,cAAc,cACb,KAAC,iBAAiB,IAAC,KAAK,EAAE,gBAAgB,YACxC,KAAC,WAAW,IAAC,UAAU,EAAE,aAAa,YACpC,KAAC,aAAa,cACZ,KAAC,kBAAkB,IAAC,KAAK,EAAE,UAAU,YACnC,KAAC,sBAAsB,cACrB,KAAC,QAAQ,IACP,QAAQ,EACN,cAAK,SAAS,EAAC,gCAAgC,2BAEzC,YAGR,KAAC,MAAM,IACL,OAAO,EAAE;4CACP,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;4CACxB,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;yCACxD,GACD,GACO,GACY,GACN,GACP,GACJ,GACI,GACL,GACG,CACvB,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;AACvC,SAAS,CAAC,WAAW,GAAG,WAAW,CAAC;AAEpC,OAAO,EAAE,SAAS,EAAE,CAAC"}
@@ -12,10 +12,7 @@ import { Spinner } from "./Spinner.js";
12
12
  export const Layout = ({ children }) => {
13
13
  const location = useLocation();
14
14
  const { setActiveAnchor } = useViewportAnchor();
15
- const { meta, handleAuthenticationResponse } = useDevPortal();
16
- useEffect(() => {
17
- void handleAuthenticationResponse(location);
18
- }, [handleAuthenticationResponse, location]);
15
+ const { meta } = useDevPortal();
19
16
  useScrollToAnchor();
20
17
  useScrollToTop();
21
18
  const previousLocationPath = useRef(location.pathname);
@@ -1 +1 @@
1
- {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/lib/components/Layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAA4B,EAAE,EAAE;IAC/D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,4BAA4B,EAAE,GAAG,YAAY,EAAE,CAAC;IAE9D,SAAS,CAAC,GAAG,EAAE;QACb,KAAK,4BAA4B,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,4BAA4B,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE7C,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,CAAC;IAEjB,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,kCAAkC;QAClC,IAAI,QAAQ,CAAC,QAAQ,KAAK,oBAAoB,CAAC,OAAO,EAAE,CAAC;YACvD,eAAe,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,oBAAoB,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnD,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAEzC,OAAO,CACL,8BACE,MAAC,MAAM,IAAC,aAAa,EAAE,IAAI,EAAE,SAAS,aACpC,mCAAmB,EAClB,IAAI,EAAE,WAAW,IAAI,CACpB,eAAM,IAAI,EAAC,aAAa,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,GAAI,CACvD,EACA,IAAI,EAAE,OAAO,IAAI,eAAM,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,GAAI,IAClD,EACT,KAAC,MAAM,KAAG,EAEV,cAAK,SAAS,EAAC,qEAAqE,YAClF,MAAC,QAAQ,IACP,QAAQ,EACN,cAAK,SAAS,EAAC,gCAAgC,YAC7C,KAAC,OAAO,KAAG,GACP,aAGR,KAAC,cAAc,KAAG,EAClB,eACE,SAAS,EAAC,6PAGoF,YAE7F,QAAQ,IAAI,KAAC,MAAM,KAAG,GAClB,IACE,GACP,IACL,CACJ,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/lib/components/Layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,CAAC,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAA4B,EAAE,EAAE;IAC/D,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,MAAM,EAAE,eAAe,EAAE,GAAG,iBAAiB,EAAE,CAAC;IAChD,MAAM,EAAE,IAAI,EAAE,GAAG,YAAY,EAAE,CAAC;IAEhC,iBAAiB,EAAE,CAAC;IACpB,cAAc,EAAE,CAAC;IAEjB,MAAM,oBAAoB,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,kCAAkC;QAClC,IAAI,QAAQ,CAAC,QAAQ,KAAK,oBAAoB,CAAC,OAAO,EAAE,CAAC;YACvD,eAAe,CAAC,EAAE,CAAC,CAAC;QACtB,CAAC;QACD,oBAAoB,CAAC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;IACnD,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC;IAEzC,OAAO,CACL,8BACE,MAAC,MAAM,IAAC,aAAa,EAAE,IAAI,EAAE,SAAS,aACpC,mCAAmB,EAClB,IAAI,EAAE,WAAW,IAAI,CACpB,eAAM,IAAI,EAAC,aAAa,EAAC,OAAO,EAAE,IAAI,CAAC,WAAW,GAAI,CACvD,EACA,IAAI,EAAE,OAAO,IAAI,eAAM,GAAG,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,CAAC,OAAO,GAAI,IAClD,EACT,KAAC,MAAM,KAAG,EAEV,cAAK,SAAS,EAAC,qEAAqE,YAClF,MAAC,QAAQ,IACP,QAAQ,EACN,cAAK,SAAS,EAAC,gCAAgC,YAC7C,KAAC,OAAO,KAAG,GACP,aAGR,KAAC,cAAc,KAAG,EAClB,eACE,SAAS,EAAC,6PAGoF,YAE7F,QAAQ,IAAI,KAAC,MAAM,KAAG,GAClB,IACE,GACP,IACL,CACJ,CAAC;AACJ,CAAC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import { QueryClient } from "@tanstack/react-query";
2
2
  import { type ReactNode } from "react";
3
- import { type AuthProvider } from "../authentication/authentication.js";
3
+ import { type AuthenticationProvider } from "../authentication/authentication.js";
4
4
  import { type DevPortalPath, type DevPortalProps } from "../components/DevPortal.js";
5
5
  export interface ApiIdentity {
6
6
  authorizeRequest: (request: Request) => Request;
@@ -41,6 +41,7 @@ export type SessionProfileState = {
41
41
  name?: string;
42
42
  email_verified?: string;
43
43
  picture?: string;
44
+ [key: string]: string | boolean | undefined;
44
45
  };
45
46
  export type RoutingState = {
46
47
  path?: string;
@@ -55,8 +56,9 @@ export declare class DevPortalContext {
55
56
  private navigationPlugins;
56
57
  navigation: NavigationItem[];
57
58
  meta: DevPortalProps["meta"];
58
- authentication?: AuthProvider;
59
+ authentication?: AuthenticationProvider;
59
60
  state: typeof useDevPortalState;
61
+ get url(): URL;
60
62
  constructor(config: DevPortalProps);
61
63
  initialize: () => Promise<void>;
62
64
  setUserProfile: (profile: Partial<SessionProfileState>) => Promise<void>;
@@ -64,11 +66,6 @@ export declare class DevPortalContext {
64
66
  getApiIdentities: () => Promise<ApiIdentity[]>;
65
67
  login: () => Promise<unknown>;
66
68
  logout: () => Promise<void>;
67
- handleAuthenticationResponse: (path: {
68
- pathname: string;
69
- search: string;
70
- hash: string;
71
- }) => Promise<void>;
72
69
  getNavigation: (path: string) => Promise<import("./plugins.js").PluginNavigationCategory[]>;
73
70
  sessionStorage: {
74
71
  get: (key: string) => Promise<string>;
@@ -13,6 +13,9 @@ export class DevPortalContext {
13
13
  meta;
14
14
  authentication;
15
15
  state;
16
+ get url() {
17
+ return new URL(window.location.href);
18
+ }
16
19
  constructor(config) {
17
20
  this.config = config;
18
21
  this.plugins = config.plugins ?? [];
@@ -26,13 +29,13 @@ export class DevPortalContext {
26
29
  this.plugins
27
30
  .filter(needsInitialization)
28
31
  .forEach((plugin) => plugin.initialize(this));
29
- this.authentication?.initialize(this);
32
+ await this.authentication?.initialize?.(this);
30
33
  };
31
34
  setUserProfile = async (profile) => {
32
35
  return useDevPortalState.setState(profile);
33
36
  };
34
37
  invalidateCache = async (key) => {
35
- queryClient.invalidateQueries({ queryKey: key });
38
+ await queryClient.invalidateQueries({ queryKey: key });
36
39
  };
37
40
  getApiIdentities = async () => {
38
41
  const keys = await Promise.all(this.plugins
@@ -50,10 +53,7 @@ export class DevPortalContext {
50
53
  if (!this.authentication) {
51
54
  throw new Error("No authentication configured");
52
55
  }
53
- return this.authentication.signOut(this);
54
- };
55
- handleAuthenticationResponse = async (path) => {
56
- this.config.authentication?.handleAuthenticationResponse?.(path, this);
56
+ return this.authentication.logout(this);
57
57
  };
58
58
  getNavigation = async (path) => {
59
59
  const navigations = await Promise.all(this.navigationPlugins.map(async (plugin) => plugin.getNavigation?.(path)));
@@ -1 +1 @@
1
- {"version":3,"file":"DevPortalContext.js","sourceRoot":"","sources":["../../../src/lib/core/DevPortalContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAMjC,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GAGpB,MAAM,cAAc,CAAC;AAwDtB,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AAE7C,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CACrC,GAAG,EAAE,CAAC,CAAC;IACL,UAAU,EAAE,KAAK;CAClB,CAAC,CACH,CAAC;AAKF,MAAM,OAAO,gBAAgB;IASP;IARZ,OAAO,GAAsB,EAAE,CAAC;IAChC,iBAAiB,CAAqB;IAEvC,UAAU,CAAmB;IAC7B,IAAI,CAAyB;IAC7B,cAAc,CAAgB;IAC9B,KAAK,CAA2B;IAEvC,YAAoB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QACxC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,KAAK,GAAG,iBAAiB,CAAC;IACjC,CAAC;IAED,UAAU,GAAG,KAAK,IAAI,EAAE;QACtB,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC;IAEF,cAAc,GAAG,KAAK,EAAE,OAAqC,EAAE,EAAE;QAC/D,OAAO,iBAAiB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,eAAe,GAAG,KAAK,EAAE,GAAwB,EAAE,EAAE;QACnD,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC,CAAC;IAEF,gBAAgB,GAAG,KAAK,IAAI,EAAE;QAC5B,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,GAAG,CAC5B,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAC/C,CAAC;QAEF,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;IACrB,CAAC,CAAC;IAEF,KAAK,GAAG,KAAK,IAAI,EAAE;QACjB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC,CAAC;IAEF,MAAM,GAAG,KAAK,IAAI,EAAE;QAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,CAAC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC;IAEF,4BAA4B,GAAG,KAAK,EAAE,IAIrC,EAAE,EAAE;QACH,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,4BAA4B,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC,CAAC;IAEF,aAAa,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACrC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAC1C,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAC7B,CACF,CAAC;QAEF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,cAAc,GAAG;QACf,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,CAAC,IAAI,EAAE;QACxE,UAAU,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;QAC1B,GAAG,EAAE,KAAK,EAAE,GAAW,EAAE,KAAa,EAAE,EAAE,CACxC,YAAY,CAAC,OAAO,CAAC,WAAW,GAAG,EAAE,EAAE,KAAK,CAAC;KAChD,CAAC;CACH"}
1
+ {"version":3,"file":"DevPortalContext.js","sourceRoot":"","sources":["../../../src/lib/core/DevPortalContext.ts"],"names":[],"mappings":"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"}