zudoku 0.3.1-dev.9 → 0.4.1-dev.0
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.
- package/LICENSE.md +21 -0
- package/dist/config/config.d.ts +0 -3
- package/dist/lib/authentication/authentication.d.ts +1 -0
- package/dist/lib/authentication/components/CallbackHandler.d.ts +3 -0
- package/dist/lib/authentication/components/CallbackHandler.js +34 -0
- package/dist/lib/authentication/components/CallbackHandler.js.map +1 -0
- package/dist/lib/authentication/providers/auth0.js +11 -6
- package/dist/lib/authentication/providers/auth0.js.map +1 -1
- package/dist/lib/authentication/providers/openid.d.ts +4 -13
- package/dist/lib/authentication/providers/openid.js +50 -49
- package/dist/lib/authentication/providers/openid.js.map +1 -1
- package/dist/lib/components/Header.js +2 -4
- package/dist/lib/components/Header.js.map +1 -1
- package/dist/lib/components/Layout.js +5 -1
- package/dist/lib/components/Layout.js.map +1 -1
- package/dist/lib/components/context/ZudokuProvider.js +1 -3
- package/dist/lib/components/context/ZudokuProvider.js.map +1 -1
- package/dist/lib/core/DevPortalContext.d.ts +1 -4
- package/dist/lib/core/DevPortalContext.js +2 -2
- package/dist/lib/core/DevPortalContext.js.map +1 -1
- package/dist/lib/core/plugins.d.ts +2 -4
- package/dist/lib/core/plugins.js.map +1 -1
- package/lib/{AuthenticationPlugin-CH5NSVOu.js → AuthenticationPlugin-owbEUimP.js} +3 -3
- package/lib/{AuthenticationPlugin-CH5NSVOu.js.map → AuthenticationPlugin-owbEUimP.js.map} +1 -1
- package/lib/{CategoryHeading-z15xh7Jb.js → CategoryHeading-DnPprxtD.js} +2 -2
- package/lib/{CategoryHeading-z15xh7Jb.js.map → CategoryHeading-DnPprxtD.js.map} +1 -1
- package/lib/{Combination-DTfV-c98.js → Combination-DruV0zX_.js} +3 -3
- package/lib/{Combination-DTfV-c98.js.map → Combination-DruV0zX_.js.map} +1 -1
- package/lib/ErrorPage-PUg985n_.js +18 -0
- package/lib/ErrorPage-PUg985n_.js.map +1 -0
- package/lib/{Input-CzXNm7xb.js → Input-CBfi9Yjc.js} +4 -4
- package/lib/{Input-CzXNm7xb.js.map → Input-CBfi9Yjc.js.map} +1 -1
- package/lib/{Markdown-CEccPMI_.js → Markdown-Chb9VIBv.js} +2 -2
- package/lib/{Markdown-CEccPMI_.js.map → Markdown-Chb9VIBv.js.map} +1 -1
- package/lib/{MdxPage-CnqOoqvp.js → MdxPage-CIBHMwTd.js} +5 -5
- package/lib/{MdxPage-CnqOoqvp.js.map → MdxPage-CIBHMwTd.js.map} +1 -1
- package/lib/{OperationList-CYyaboNz.js → OperationList-CZiSz5JH.js} +24 -23
- package/lib/{OperationList-CYyaboNz.js.map → OperationList-CZiSz5JH.js.map} +1 -1
- package/lib/{Route-C3Jb0axy.js → Route-Cle-r-bq.js} +4 -4
- package/lib/{Route-C3Jb0axy.js.map → Route-Cle-r-bq.js.map} +1 -1
- package/lib/{Spinner-BT_AYFrA.js → SidebarBadge-Ba0PhibA.js} +66 -76
- package/lib/SidebarBadge-Ba0PhibA.js.map +1 -0
- package/lib/{SlotletProvider-ByLSCZQa.js → SlotletProvider-Dq80og6-.js} +4 -4
- package/lib/{SlotletProvider-ByLSCZQa.js.map → SlotletProvider-Dq80og6-.js.map} +1 -1
- package/lib/Spinner-CvXZ7QK4.js +15 -0
- package/lib/Spinner-CvXZ7QK4.js.map +1 -0
- package/lib/{ZudokuContext-BIZ8zHbZ.js → ZudokuContext-BQ45UjcB.js} +2 -2
- package/lib/{ZudokuContext-BIZ8zHbZ.js.map → ZudokuContext-BQ45UjcB.js.map} +1 -1
- package/lib/{index-B1he6g8N.js → index-Br1MQPxy.js} +455 -465
- package/lib/index-Br1MQPxy.js.map +1 -0
- package/lib/{index-Dz4LyXZI.js → index-DCJ9wEIV.js} +3 -3
- package/lib/{index-Dz4LyXZI.js.map → index-DCJ9wEIV.js.map} +1 -1
- package/lib/{index-7kcHaXD6.js → index-Yjb2PyPF.js} +4 -4
- package/lib/{index-7kcHaXD6.js.map → index-Yjb2PyPF.js.map} +1 -1
- package/lib/{urql-DrBfkb92.js → urql-YhcsXYy8.js} +2 -2
- package/lib/urql-YhcsXYy8.js.map +1 -0
- package/lib/{utils-Bh4upQ0e.js → utils-pDHePxa0.js} +3 -3
- package/lib/{utils-Bh4upQ0e.js.map → utils-pDHePxa0.js.map} +1 -1
- package/lib/zudoku.auth-auth0.js +24 -22
- package/lib/zudoku.auth-auth0.js.map +1 -1
- package/lib/zudoku.auth-clerk.js +1 -1
- package/lib/zudoku.auth-openid.js +527 -469
- package/lib/zudoku.auth-openid.js.map +1 -1
- package/lib/zudoku.components.js +434 -443
- package/lib/zudoku.components.js.map +1 -1
- package/lib/zudoku.openapi-worker.js +1 -1
- package/lib/zudoku.plugin-api-keys.js +6 -6
- package/lib/zudoku.plugin-custom-page.js +1 -1
- package/lib/zudoku.plugin-markdown.js +1 -1
- package/lib/zudoku.plugin-openapi.js +8 -7
- package/lib/zudoku.plugin-openapi.js.map +1 -1
- package/package.json +80 -100
- package/src/lib/authentication/authentication.ts +1 -0
- package/src/lib/authentication/components/CallbackHandler.tsx +59 -0
- package/src/lib/authentication/providers/auth0.tsx +13 -7
- package/src/lib/authentication/providers/openid.tsx +56 -58
- package/src/lib/components/Header.tsx +3 -10
- package/src/lib/components/Layout.tsx +6 -1
- package/src/lib/components/context/ZudokuProvider.tsx +1 -4
- package/src/lib/core/DevPortalContext.ts +2 -7
- package/src/lib/core/plugins.ts +1 -2
- package/lib/Spinner-BT_AYFrA.js.map +0 -1
- package/lib/index-B1he6g8N.js.map +0 -1
- package/lib/urql-DrBfkb92.js.map +0 -1
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The MIT License (MIT)
|
|
2
|
+
|
|
3
|
+
Copyright (c) Zuplo, Inc.
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/config/config.d.ts
CHANGED
|
@@ -21,9 +21,6 @@ export type OpenIDAuthenticationConfig = {
|
|
|
21
21
|
issuer: string;
|
|
22
22
|
scopes?: string[];
|
|
23
23
|
audience?: string;
|
|
24
|
-
jwksEndpoint?: URL | URLString;
|
|
25
|
-
authorizationEndpoint?: string;
|
|
26
|
-
tokenEndpoint?: string;
|
|
27
24
|
} & RedirectOptions;
|
|
28
25
|
export type Auth0AuthenticationConfig = {
|
|
29
26
|
type: "auth0";
|
|
@@ -8,6 +8,7 @@ export interface AuthenticationProvider {
|
|
|
8
8
|
}): Promise<void>;
|
|
9
9
|
signOut(): Promise<void>;
|
|
10
10
|
getAccessToken(): Promise<string>;
|
|
11
|
+
pageLoad?(): void;
|
|
11
12
|
getAuthenticationPlugin?(): DevPortalPlugin;
|
|
12
13
|
}
|
|
13
14
|
export interface AuthenticationProviderInitializer<TConfig> {
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import logger from "loglevel";
|
|
3
|
+
import { useEffect, useRef, useState } from "react";
|
|
4
|
+
import { useNavigate } from "react-router-dom";
|
|
5
|
+
import { DeveloperHint } from "../../components/DeveloperHint.js";
|
|
6
|
+
import { ErrorPage } from "../../components/ErrorPage.js";
|
|
7
|
+
import { Spinner } from "../../components/Spinner.js";
|
|
8
|
+
import { SyntaxHighlight } from "../../components/SyntaxHighlight.js";
|
|
9
|
+
export function CallbackHandler({ handleCallback, }) {
|
|
10
|
+
const [error, setError] = useState(null);
|
|
11
|
+
const navigate = useNavigate();
|
|
12
|
+
// Deal with double mount in dev mode which will break
|
|
13
|
+
// the OAuth flow because you can only use the code once
|
|
14
|
+
const didInitialize = useRef(false);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
if (didInitialize.current) {
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
didInitialize.current = true;
|
|
20
|
+
handleCallback()
|
|
21
|
+
.then((redirect) => {
|
|
22
|
+
navigate(redirect);
|
|
23
|
+
})
|
|
24
|
+
.catch((err) => {
|
|
25
|
+
logger.error(err);
|
|
26
|
+
setError(err);
|
|
27
|
+
});
|
|
28
|
+
}, [navigate, handleCallback]);
|
|
29
|
+
if (error) {
|
|
30
|
+
return (_jsx(ErrorPage, { category: "Error", title: "Authentication Error", message: _jsxs(_Fragment, { children: [_jsx(DeveloperHint, { className: "mb-4", children: "Check the configuration of your authorization provider and ensure all settings such as the callback URL are configured correctly." }), "An error occurred while authorizing the user.", _jsx(SyntaxHighlight, { code: error.toString(), language: "plain" })] }) }));
|
|
31
|
+
}
|
|
32
|
+
return (_jsx("div", { className: "grid h-full place-items-center", children: _jsx(Spinner, {}) }));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=CallbackHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CallbackHandler.js","sourceRoot":"","sources":["../../../../src/lib/authentication/components/CallbackHandler.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,mCAAmC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAC;AAEtE,MAAM,UAAU,eAAe,CAAC,EAC9B,cAAc,GAGf;IACC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,QAAQ,GAAG,WAAW,EAAE,CAAC;IAC/B,sDAAsD;IACtD,wDAAwD;IACxD,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,CAAC,OAAO,EAAE,CAAC;YAC1B,OAAO;QACT,CAAC;QACD,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC;QAC7B,cAAc,EAAE;aACb,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACjB,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAClB,QAAQ,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,CAAC;IAE/B,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,KAAC,SAAS,IACR,QAAQ,EAAC,OAAO,EAChB,KAAK,EAAC,sBAAsB,EAC5B,OAAO,EACL,8BACE,KAAC,aAAa,IAAC,SAAS,EAAC,MAAM,kJAGf,mDAEhB,KAAC,eAAe,IAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,QAAQ,EAAC,OAAO,GAAG,IAC3D,GAEL,CACH,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,SAAS,EAAC,gCAAgC,YAC7C,KAAC,OAAO,KAAG,GACP,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import { useAuthState } from "../state.js";
|
|
2
2
|
import { OpenIDAuthenticationProvider } from "./openid.js";
|
|
3
3
|
class Auth0AuthenticationProvider extends OpenIDAuthenticationProvider {
|
|
4
|
+
constructor(config) {
|
|
5
|
+
super({
|
|
6
|
+
...config,
|
|
7
|
+
type: "openid",
|
|
8
|
+
issuer: `https://${config.domain}`,
|
|
9
|
+
clientId: config.clientId,
|
|
10
|
+
audience: config.audience,
|
|
11
|
+
});
|
|
12
|
+
}
|
|
4
13
|
onAuthorizationUrl = async (url, { isSignUp }) => {
|
|
5
14
|
if (isSignUp) {
|
|
6
15
|
url.searchParams.set("screen_hint", "signup");
|
|
@@ -12,7 +21,7 @@ class Auth0AuthenticationProvider extends OpenIDAuthenticationProvider {
|
|
|
12
21
|
isPending: false,
|
|
13
22
|
profile: undefined,
|
|
14
23
|
});
|
|
15
|
-
|
|
24
|
+
sessionStorage.clear();
|
|
16
25
|
const as = await this.getAuthServer();
|
|
17
26
|
const redirectUrl = new URL(window.location.origin + this.logoutRedirectUrlPath);
|
|
18
27
|
redirectUrl.pathname = this.logoutRedirectUrlPath;
|
|
@@ -37,10 +46,6 @@ class Auth0AuthenticationProvider extends OpenIDAuthenticationProvider {
|
|
|
37
46
|
}
|
|
38
47
|
};
|
|
39
48
|
}
|
|
40
|
-
const auth0Auth = (
|
|
41
|
-
...options,
|
|
42
|
-
type: "openid",
|
|
43
|
-
issuer: `https://${domain}`,
|
|
44
|
-
});
|
|
49
|
+
const auth0Auth = (options) => new Auth0AuthenticationProvider(options);
|
|
45
50
|
export default auth0Auth;
|
|
46
51
|
//# sourceMappingURL=auth0.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth0.js","sourceRoot":"","sources":["../../../../src/lib/authentication/providers/auth0.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,2BAA4B,SAAQ,4BAA4B;IACpE,kBAAkB,GAAG,KAAK,EACxB,GAAQ,EACR,EAAE,QAAQ,EAAyB,EACnC,EAAE;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth0.js","sourceRoot":"","sources":["../../../../src/lib/authentication/providers/auth0.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,4BAA4B,EAAE,MAAM,aAAa,CAAC;AAE3D,MAAM,2BAA4B,SAAQ,4BAA4B;IACpE,YAAY,MAAiC;QAC3C,KAAK,CAAC;YACJ,GAAG,MAAM;YACT,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,WAAW,MAAM,CAAC,MAAM,EAAE;YAClC,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB,GAAG,KAAK,EACxB,GAAQ,EACR,EAAE,QAAQ,EAAyB,EACnC,EAAE;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,GAAG,KAAK,IAAmB,EAAE;QAClC,YAAY,CAAC,QAAQ,CAAC;YACpB,eAAe,EAAE,KAAK;YACtB,SAAS,EAAE,KAAK;YAChB,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC;QACH,cAAc,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;QAEtC,MAAM,WAAW,GAAG,IAAI,GAAG,CACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CACpD,CAAC;QACF,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC;QAElD,+EAA+E;QAC/E,uEAAuE;QACvE,+DAA+D;QAC/D,wDAAwD;QAExD,IAAI,SAAc,CAAC;QACnB,uEAAuE;QACvE,sEAAsE;QACtE,IAAI,EAAE,CAAC,oBAAoB,EAAE,CAAC;YAC5B,SAAS,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC;YAC7C,kCAAkC;YAClC,gCAAgC;YAChC,kBAAkB;YAClB,2DAA2D;YAC3D,IAAI;YACJ,SAAS,CAAC,YAAY,CAAC,GAAG,CACxB,0BAA0B,EAC1B,WAAW,CAAC,QAAQ,EAAE,CACvB,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,aAAa,CAAC,CAAC;QACnD,CAAC;IACH,CAAC,CAAC;CACH;AAED,MAAM,SAAS,GAEX,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;AAE1D,eAAe,SAAS,CAAC"}
|
|
@@ -1,18 +1,11 @@
|
|
|
1
1
|
import * as oauth from "oauth4webapi";
|
|
2
2
|
import { OpenIDAuthenticationConfig } from "../../../config/config.js";
|
|
3
|
-
import { CommonPlugin } from "../../core/plugins.js";
|
|
4
3
|
import { AuthenticationProvider, AuthenticationProviderInitializer } from "../authentication.js";
|
|
5
4
|
import { AuthenticationPlugin } from "../AuthenticationPlugin.js";
|
|
6
|
-
interface TokenState {
|
|
7
|
-
accessToken: string;
|
|
8
|
-
refreshToken?: string;
|
|
9
|
-
expiresOn: Date;
|
|
10
|
-
tokenType: string;
|
|
11
|
-
}
|
|
12
5
|
declare class OpenIdAuthPlugin extends AuthenticationPlugin {
|
|
13
6
|
private callbackUrlPath;
|
|
14
|
-
|
|
15
|
-
constructor(callbackUrlPath: string,
|
|
7
|
+
private handleCallback;
|
|
8
|
+
constructor(callbackUrlPath: string, handleCallback: () => Promise<string>);
|
|
16
9
|
getRoutes(): {
|
|
17
10
|
path: string;
|
|
18
11
|
element: import("react/jsx-runtime").JSX.Element;
|
|
@@ -21,10 +14,7 @@ declare class OpenIdAuthPlugin extends AuthenticationPlugin {
|
|
|
21
14
|
export declare class OpenIDAuthenticationProvider implements AuthenticationProvider {
|
|
22
15
|
protected client: oauth.Client;
|
|
23
16
|
protected issuer: string;
|
|
24
|
-
protected authorizationEndpoint: string | undefined;
|
|
25
|
-
protected tokenEndpoint: string | undefined;
|
|
26
17
|
protected authorizationServer: oauth.AuthorizationServer | undefined;
|
|
27
|
-
protected tokens: TokenState | undefined;
|
|
28
18
|
protected callbackUrlPath: string;
|
|
29
19
|
protected logoutRedirectUrlPath: string;
|
|
30
20
|
protected onAuthorizationUrl?: (authorizationUrl: URL, options: {
|
|
@@ -35,7 +25,7 @@ export declare class OpenIDAuthenticationProvider implements AuthenticationProvi
|
|
|
35
25
|
private readonly redirectToAfterSignIn;
|
|
36
26
|
private readonly redirectToAfterSignOut;
|
|
37
27
|
private readonly audience?;
|
|
38
|
-
constructor({ issuer, audience,
|
|
28
|
+
constructor({ issuer, audience, clientId, redirectToAfterSignUp, redirectToAfterSignIn, redirectToAfterSignOut, }: OpenIDAuthenticationConfig);
|
|
39
29
|
protected getAuthServer(): Promise<oauth.AuthorizationServer>;
|
|
40
30
|
/**
|
|
41
31
|
* Sets the tokens from various OAuth responses
|
|
@@ -52,6 +42,7 @@ export declare class OpenIDAuthenticationProvider implements AuthenticationProvi
|
|
|
52
42
|
getAccessToken(): Promise<string>;
|
|
53
43
|
signOut: () => Promise<void>;
|
|
54
44
|
handleCallback: () => Promise<string>;
|
|
45
|
+
pageLoad(): void;
|
|
55
46
|
getAuthenticationPlugin(): OpenIdAuthPlugin;
|
|
56
47
|
}
|
|
57
48
|
declare const openIDAuth: AuthenticationProviderInitializer<OpenIDAuthenticationConfig>;
|
|
@@ -2,23 +2,24 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import logger from "loglevel";
|
|
3
3
|
import * as oauth from "oauth4webapi";
|
|
4
4
|
import { AuthenticationPlugin } from "../AuthenticationPlugin.js";
|
|
5
|
+
import { CallbackHandler } from "../components/CallbackHandler.js";
|
|
5
6
|
import { AuthorizationError, OAuthAuthorizationError } from "../errors.js";
|
|
6
7
|
import { useAuthState } from "../state.js";
|
|
7
8
|
const CODE_VERIFIER_KEY = "code-verifier";
|
|
8
9
|
class OpenIdAuthPlugin extends AuthenticationPlugin {
|
|
9
10
|
callbackUrlPath;
|
|
10
|
-
|
|
11
|
-
constructor(callbackUrlPath,
|
|
11
|
+
handleCallback;
|
|
12
|
+
constructor(callbackUrlPath, handleCallback) {
|
|
12
13
|
super();
|
|
13
14
|
this.callbackUrlPath = callbackUrlPath;
|
|
14
|
-
this.
|
|
15
|
+
this.handleCallback = handleCallback;
|
|
15
16
|
}
|
|
16
17
|
getRoutes() {
|
|
17
18
|
return [
|
|
18
19
|
...super.getRoutes(),
|
|
19
20
|
{
|
|
20
21
|
path: this.callbackUrlPath,
|
|
21
|
-
element: _jsx(
|
|
22
|
+
element: _jsx(CallbackHandler, { handleCallback: this.handleCallback }),
|
|
22
23
|
},
|
|
23
24
|
];
|
|
24
25
|
}
|
|
@@ -26,10 +27,7 @@ class OpenIdAuthPlugin extends AuthenticationPlugin {
|
|
|
26
27
|
export class OpenIDAuthenticationProvider {
|
|
27
28
|
client;
|
|
28
29
|
issuer;
|
|
29
|
-
authorizationEndpoint;
|
|
30
|
-
tokenEndpoint;
|
|
31
30
|
authorizationServer;
|
|
32
|
-
tokens;
|
|
33
31
|
callbackUrlPath = "/oauth/callback";
|
|
34
32
|
logoutRedirectUrlPath = "/";
|
|
35
33
|
onAuthorizationUrl;
|
|
@@ -37,34 +35,22 @@ export class OpenIDAuthenticationProvider {
|
|
|
37
35
|
redirectToAfterSignIn;
|
|
38
36
|
redirectToAfterSignOut;
|
|
39
37
|
audience;
|
|
40
|
-
constructor({ issuer, audience,
|
|
38
|
+
constructor({ issuer, audience, clientId, redirectToAfterSignUp, redirectToAfterSignIn, redirectToAfterSignOut, }) {
|
|
41
39
|
this.client = {
|
|
42
40
|
client_id: clientId,
|
|
43
41
|
token_endpoint_auth_method: "none",
|
|
44
42
|
};
|
|
45
43
|
this.audience = audience;
|
|
46
44
|
this.issuer = issuer;
|
|
47
|
-
this.authorizationEndpoint = authorizationEndpoint;
|
|
48
|
-
this.tokenEndpoint = tokenEndpoint;
|
|
49
45
|
this.redirectToAfterSignUp = redirectToAfterSignUp ?? "/";
|
|
50
46
|
this.redirectToAfterSignIn = redirectToAfterSignIn ?? "/";
|
|
51
47
|
this.redirectToAfterSignOut = redirectToAfterSignOut ?? "/";
|
|
52
48
|
}
|
|
53
49
|
async getAuthServer() {
|
|
54
50
|
if (!this.authorizationServer) {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
authorization_endpoint: this.authorizationEndpoint,
|
|
59
|
-
token_endpoint: this.tokenEndpoint,
|
|
60
|
-
code_challenge_methods_supported: [],
|
|
61
|
-
};
|
|
62
|
-
}
|
|
63
|
-
else {
|
|
64
|
-
const issuerUrl = new URL(this.issuer);
|
|
65
|
-
const response = await oauth.discoveryRequest(issuerUrl);
|
|
66
|
-
this.authorizationServer = await oauth.processDiscoveryResponse(issuerUrl, response);
|
|
67
|
-
}
|
|
51
|
+
const issuerUrl = new URL(this.issuer);
|
|
52
|
+
const response = await oauth.discoveryRequest(issuerUrl);
|
|
53
|
+
this.authorizationServer = await oauth.processDiscoveryResponse(issuerUrl, response);
|
|
68
54
|
}
|
|
69
55
|
return this.authorizationServer;
|
|
70
56
|
}
|
|
@@ -80,13 +66,13 @@ export class OpenIDAuthenticationProvider {
|
|
|
80
66
|
if (!response.expires_in) {
|
|
81
67
|
throw new AuthorizationError("No expires_in in response");
|
|
82
68
|
}
|
|
83
|
-
|
|
69
|
+
const tokens = {
|
|
84
70
|
accessToken: response.access_token,
|
|
85
71
|
refreshToken: response.refresh_token,
|
|
86
72
|
expiresOn: new Date(Date.now() + response.expires_in * 1000),
|
|
87
73
|
tokenType: response.token_type,
|
|
88
74
|
};
|
|
89
|
-
sessionStorage.setItem("
|
|
75
|
+
sessionStorage.setItem("token-state", JSON.stringify(tokens));
|
|
90
76
|
}
|
|
91
77
|
async signUp({ redirectTo } = {}) {
|
|
92
78
|
return this.authorize({
|
|
@@ -122,7 +108,7 @@ export class OpenIDAuthenticationProvider {
|
|
|
122
108
|
authorizationUrl.searchParams.set("client_id", this.client.client_id);
|
|
123
109
|
authorizationUrl.searchParams.set("redirect_uri", redirectUrl.toString());
|
|
124
110
|
authorizationUrl.searchParams.set("response_type", "code");
|
|
125
|
-
authorizationUrl.searchParams.set("scope", "openid
|
|
111
|
+
authorizationUrl.searchParams.set("scope", "openid profile email");
|
|
126
112
|
authorizationUrl.searchParams.set("code_challenge", codeChallenge);
|
|
127
113
|
authorizationUrl.searchParams.set("code_challenge_method", code_challenge_method);
|
|
128
114
|
if (this.audience) {
|
|
@@ -146,19 +132,27 @@ export class OpenIDAuthenticationProvider {
|
|
|
146
132
|
}
|
|
147
133
|
async getAccessToken() {
|
|
148
134
|
const as = await this.getAuthServer();
|
|
149
|
-
|
|
135
|
+
const tokenState = sessionStorage.getItem("token-state");
|
|
136
|
+
if (!tokenState) {
|
|
150
137
|
throw new AuthorizationError("User is not authenticated");
|
|
151
138
|
}
|
|
152
|
-
|
|
153
|
-
|
|
139
|
+
const state = JSON.parse(tokenState);
|
|
140
|
+
if (state.expiresOn < new Date()) {
|
|
141
|
+
if (!state.refreshToken) {
|
|
154
142
|
await this.signIn();
|
|
155
143
|
return "";
|
|
156
144
|
}
|
|
157
|
-
const request = await oauth.refreshTokenGrantRequest(as, this.client,
|
|
145
|
+
const request = await oauth.refreshTokenGrantRequest(as, this.client, state.refreshToken);
|
|
158
146
|
const response = await oauth.processRefreshTokenResponse(as, this.client, request);
|
|
147
|
+
if (!response.access_token) {
|
|
148
|
+
throw new AuthorizationError("No access token in response");
|
|
149
|
+
}
|
|
159
150
|
this.setTokensFromResponse(response);
|
|
151
|
+
return response.access_token.toString();
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
return state.accessToken;
|
|
160
155
|
}
|
|
161
|
-
return this.tokens.accessToken;
|
|
162
156
|
}
|
|
163
157
|
signOut = async () => {
|
|
164
158
|
useAuthState.setState({
|
|
@@ -166,7 +160,7 @@ export class OpenIDAuthenticationProvider {
|
|
|
166
160
|
isPending: false,
|
|
167
161
|
profile: undefined,
|
|
168
162
|
});
|
|
169
|
-
|
|
163
|
+
sessionStorage.clear();
|
|
170
164
|
const as = await this.getAuthServer();
|
|
171
165
|
const redirectUrl = new URL(window.location.origin + this.redirectToAfterSignOut);
|
|
172
166
|
redirectUrl.pathname = this.logoutRedirectUrlPath;
|
|
@@ -194,7 +188,7 @@ export class OpenIDAuthenticationProvider {
|
|
|
194
188
|
const codeVerifier = sessionStorage.getItem(CODE_VERIFIER_KEY);
|
|
195
189
|
sessionStorage.removeItem(CODE_VERIFIER_KEY);
|
|
196
190
|
if (!codeVerifier) {
|
|
197
|
-
|
|
191
|
+
throw new AuthorizationError("No code verifier found in state.");
|
|
198
192
|
}
|
|
199
193
|
const authServer = await this.getAuthServer();
|
|
200
194
|
const params = oauth.validateAuthResponse(authServer, this.client, url.searchParams, state ?? undefined);
|
|
@@ -214,7 +208,7 @@ export class OpenIDAuthenticationProvider {
|
|
|
214
208
|
// }
|
|
215
209
|
// throw new Error(); // Handle WWW-Authenticate Challenges as needed
|
|
216
210
|
// }
|
|
217
|
-
const oauthResult = await oauth.
|
|
211
|
+
const oauthResult = await oauth.processAuthorizationCodeOpenIDResponse(authServer, this.client, response);
|
|
218
212
|
this.setTokensFromResponse(oauthResult);
|
|
219
213
|
const accessToken = await this.getAccessToken();
|
|
220
214
|
const userInfoResponse = await oauth.userInfoRequest(authServer, this.client, accessToken);
|
|
@@ -231,24 +225,31 @@ export class OpenIDAuthenticationProvider {
|
|
|
231
225
|
isPending: false,
|
|
232
226
|
profile,
|
|
233
227
|
});
|
|
234
|
-
|
|
235
|
-
|
|
228
|
+
sessionStorage.setItem("profile-state", JSON.stringify(useAuthState.getState().profile));
|
|
229
|
+
const redirectTo = sessionStorage.getItem("redirect-to") ?? "/";
|
|
230
|
+
sessionStorage.removeItem("redirect-to");
|
|
231
|
+
return redirectTo;
|
|
236
232
|
};
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
233
|
+
pageLoad() {
|
|
234
|
+
const profileState = sessionStorage.getItem("profile-state");
|
|
235
|
+
if (profileState) {
|
|
236
|
+
try {
|
|
237
|
+
const profile = JSON.parse(profileState);
|
|
238
|
+
useAuthState.setState({
|
|
239
|
+
isAuthenticated: true,
|
|
240
|
+
isPending: false,
|
|
241
|
+
profile,
|
|
242
|
+
});
|
|
244
243
|
}
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
if (redirect) {
|
|
248
|
-
options.navigate(redirect);
|
|
249
|
-
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
logger.error("Error parsing auth state", err);
|
|
250
246
|
}
|
|
251
|
-
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
getAuthenticationPlugin() {
|
|
250
|
+
// TODO: This API is a bit messy, we need to refactor auth plugins/providers
|
|
251
|
+
// to remove the extra layers of abstraction.
|
|
252
|
+
return new OpenIdAuthPlugin(this.callbackUrlPath, this.handleCallback);
|
|
252
253
|
}
|
|
253
254
|
}
|
|
254
255
|
const openIDAuth = (options) => new OpenIDAuthenticationProvider(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openid.js","sourceRoot":"","sources":["../../../../src/lib/authentication/providers/openid.tsx"],"names":[],"mappings":";AAAA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"openid.js","sourceRoot":"","sources":["../../../../src/lib/authentication/providers/openid.tsx"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ const RecursiveMenu = ({ item }) => {
|
|
|
18
18
|
_jsx(RecursiveMenu, { item: item }, i))) }) })] }, item.label)) : (_jsx(Link, { to: item.path ?? "", children: _jsx(DropdownMenuItem, { children: item.label }, item.label) }));
|
|
19
19
|
};
|
|
20
20
|
export const Header = memo(function HeaderInner() {
|
|
21
|
+
const auth = useAuth();
|
|
21
22
|
const [isDark, toggleTheme] = useTheme();
|
|
22
23
|
const { isAuthenticated, profile, isAuthEnabled } = useAuth();
|
|
23
24
|
const { pathname } = useLocation();
|
|
@@ -28,9 +29,6 @@ export const Header = memo(function HeaderInner() {
|
|
|
28
29
|
.flatMap((p) => p.getProfileMenuItems(context))
|
|
29
30
|
.map((i) => _jsx(RecursiveMenu, { item: i }, i.label));
|
|
30
31
|
const ThemeIcon = isDark ? MoonStarIcon : SunIcon;
|
|
31
|
-
return (_jsx("header", { className: "fixed top-0 w-full z-10 bg-background/80 backdrop-blur", children: _jsxs("div", { className: "max-w-screen-2xl mx-auto", children: [_jsxs("div", { className: "grid grid-cols-[calc(var(--side-nav-width))_1fr] lg:gap-12 items-center border-b px-12 h-[--top-header-height]", children: [_jsx("div", { className: "flex", children: _jsx(Link, { to: "/", children: _jsxs("div", { className: "flex items-center gap-3.5", children: [page?.logo && (_jsxs(_Fragment, { children: [_jsx("img", { src: page.logo.src.light, alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", isDark && "hidden"), loading: "lazy" }), _jsx("img", { src: page.logo.src.dark, alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", !isDark && "hidden"), loading: "lazy" })] })), _jsx("span", { className: "font-bold text-2xl text-foreground/85 tracking-wide", children: page?.pageTitle })] }) }) }), _jsxs("div", { className: "grid grid-cols-[--sidecar-grid-cols] items-center gap-8", children: [_jsx("div", { className: "w-full justify-center flex", children: _jsx(Search, {}) }), _jsxs("div", { className: "items-center justify-self-end text-sm hidden lg:flex gap-2", children: [_jsx(Slotlet, { name: "head-navigation-start" }), isAuthEnabled && !isAuthenticated ? (_jsx(Button, { variant: "ghost", asChild: true, children: _jsx(
|
|
32
|
-
pathname: "/signin",
|
|
33
|
-
search: `?redirect=${encodeURIComponent(pathname)}`,
|
|
34
|
-
}, children: "Login" }) })) : (accountItems.length > 0 && (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", children: profile?.email ? `${profile.email}` : "My Account" }) }), _jsxs(DropdownMenuContent, { className: "w-56", children: [_jsx(DropdownMenuLabel, { children: "My Account" }), _jsx(DropdownMenuSeparator, {}), accountItems] })] }))), _jsx("button", { type: "button", "aria-label": isDark ? "Switch to light mode" : "Switch to dark mode", className: "cursor-pointer hover:bg-secondary p-2.5 -m-2.5 rounded-full", onClick: toggleTheme, children: _jsx(ThemeIcon, { size: 18 }) }), _jsx(Slotlet, { name: "head-navigation-end" })] })] })] }), _jsx(TopNavigation, {})] }) }));
|
|
32
|
+
return (_jsx("header", { className: "fixed top-0 w-full z-10 bg-background/80 backdrop-blur", children: _jsxs("div", { className: "max-w-screen-2xl mx-auto", children: [_jsxs("div", { className: "grid grid-cols-[calc(var(--side-nav-width))_1fr] lg:gap-12 items-center border-b px-12 h-[--top-header-height]", children: [_jsx("div", { className: "flex", children: _jsx(Link, { to: "/", children: _jsxs("div", { className: "flex items-center gap-3.5", children: [page?.logo && (_jsxs(_Fragment, { children: [_jsx("img", { src: page.logo.src.light, alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", isDark && "hidden"), loading: "lazy" }), _jsx("img", { src: page.logo.src.dark, alt: page.logo.alt ?? page.pageTitle, style: { width: page.logo.width }, className: cn("h-10", !isDark && "hidden"), loading: "lazy" })] })), _jsx("span", { className: "font-bold text-2xl text-foreground/85 tracking-wide", children: page?.pageTitle })] }) }) }), _jsxs("div", { className: "grid grid-cols-[--sidecar-grid-cols] items-center gap-8", children: [_jsx("div", { className: "w-full justify-center flex", children: _jsx(Search, {}) }), _jsxs("div", { className: "items-center justify-self-end text-sm hidden lg:flex gap-2", children: [_jsx(Slotlet, { name: "head-navigation-start" }), isAuthEnabled && !isAuthenticated ? (_jsx(Button, { variant: "ghost", onClick: () => auth.login(), children: "Login" })) : (accountItems.length > 0 && (_jsxs(DropdownMenu, { children: [_jsx(DropdownMenuTrigger, { asChild: true, children: _jsx(Button, { variant: "ghost", children: profile?.email ? `${profile.email}` : "My Account" }) }), _jsxs(DropdownMenuContent, { className: "w-56", children: [_jsx(DropdownMenuLabel, { children: "My Account" }), _jsx(DropdownMenuSeparator, {}), accountItems] })] }))), _jsx("button", { type: "button", "aria-label": isDark ? "Switch to light mode" : "Switch to dark mode", className: "cursor-pointer hover:bg-secondary p-2.5 -m-2.5 rounded-full", onClick: toggleTheme, children: _jsx(ThemeIcon, { size: 18 }) }), _jsx(Slotlet, { name: "head-navigation-end" })] })] })] }), _jsx(TopNavigation, {})] }) }));
|
|
35
33
|
});
|
|
36
34
|
//# sourceMappingURL=Header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Header.js","sourceRoot":"","sources":["../../../src/lib/components/Header.tsx"],"names":[],"mappings":"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"}
|
|
@@ -14,10 +14,14 @@ import { Spinner } from "./Spinner.js";
|
|
|
14
14
|
export const Layout = ({ children }) => {
|
|
15
15
|
const location = useLocation();
|
|
16
16
|
const { setActiveAnchor } = useViewportAnchor();
|
|
17
|
-
const { meta } = useZudoku();
|
|
17
|
+
const { meta, authentication } = useZudoku();
|
|
18
18
|
useScrollToAnchor();
|
|
19
19
|
useScrollToTop();
|
|
20
20
|
const previousLocationPath = useRef(location.pathname);
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
// Initialize the authentication plugin
|
|
23
|
+
authentication?.pageLoad ? authentication.pageLoad() : null;
|
|
24
|
+
}, [authentication]);
|
|
21
25
|
useEffect(() => {
|
|
22
26
|
// always reset on location change
|
|
23
27
|
if (location.pathname !== previousLocationPath.current) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/lib/components/Layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,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,SAAS,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"Layout.js","sourceRoot":"","sources":["../../../src/lib/components/Layout.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAkB,MAAM,OAAO,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,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,cAAc,EAAE,GAAG,SAAS,EAAE,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,uCAAuC;QACvC,cAAc,EAAE,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9D,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,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,8BACG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,YAAY,IAAI,CACxC,0BAAQ,kCAAkC,GAAS,CACpD,EACD,MAAC,MAAM,IAAC,aAAa,EAAE,IAAI,EAAE,KAAK,aAC/B,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,OAAO,KAAG,EACX,gBACE,SAAS,EAAE,EAAE,CACX,2CAA2C,EAC3C,qBAAqB,EACrB,qEAAqE,EACrE,oGAAoG,CACrG,aAED,KAAC,OAAO,IAAC,IAAI,EAAC,uBAAuB,GAAG,EACvC,QAAQ,IAAI,KAAC,MAAM,KAAG,EACvB,KAAC,OAAO,IAAC,IAAI,EAAC,sBAAsB,GAAG,IAClC,IACE,GACP,IACL,CACJ,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useSuspenseQuery } from "@tanstack/react-query";
|
|
3
|
-
import { useNavigate } from "react-router-dom";
|
|
4
3
|
import { ZudokuReactContext } from "./ZudokuContext.js";
|
|
5
4
|
export const ZudokuProvider = ({ children, context, }) => {
|
|
6
|
-
const navigate = useNavigate();
|
|
7
5
|
useSuspenseQuery({
|
|
8
6
|
queryFn: async () => {
|
|
9
|
-
await context.initialize(
|
|
7
|
+
await context.initialize();
|
|
10
8
|
return true;
|
|
11
9
|
},
|
|
12
10
|
queryKey: ["zudoku-initialize"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ZudokuProvider.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"ZudokuProvider.js","sourceRoot":"","sources":["../../../../src/lib/components/context/ZudokuProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,EAC7B,QAAQ,EACR,OAAO,GAC0C,EAAE,EAAE;IACrD,gBAAgB,CAAC;QACf,OAAO,EAAE,KAAK,IAAI,EAAE;YAClB,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;KAChC,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,kBAAkB,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YACxC,QAAQ,GACmB,CAC/B,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { QueryClient } from "@tanstack/react-query";
|
|
2
|
-
import { NavigateFunction } from "react-router-dom";
|
|
3
2
|
import type { SidebarConfig } from "../../config/validators/SidebarSchema.js";
|
|
4
3
|
import { type AuthenticationProvider } from "../authentication/authentication.js";
|
|
5
4
|
import type { ComponentsContextType } from "../components/context/ComponentsContext.js";
|
|
@@ -63,9 +62,7 @@ export declare class DevPortalContext {
|
|
|
63
62
|
authentication?: ZudokuContextOptions["authentication"];
|
|
64
63
|
private navigationPlugins;
|
|
65
64
|
constructor(config: ZudokuContextOptions);
|
|
66
|
-
initialize: (
|
|
67
|
-
navigate: NavigateFunction;
|
|
68
|
-
}) => Promise<void>;
|
|
65
|
+
initialize: () => Promise<void>;
|
|
69
66
|
invalidateCache: (key: DevPortalCacheKey[]) => Promise<void>;
|
|
70
67
|
getApiIdentities: () => Promise<ApiIdentity[]>;
|
|
71
68
|
getPluginSidebar: (path: string) => Promise<import("../../config/validators/SidebarSchema.js").SidebarItem[]>;
|
|
@@ -19,10 +19,10 @@ export class DevPortalContext {
|
|
|
19
19
|
this.meta = config.metadata;
|
|
20
20
|
this.page = config.page;
|
|
21
21
|
}
|
|
22
|
-
initialize = async (
|
|
22
|
+
initialize = async () => {
|
|
23
23
|
await Promise.all(this.plugins
|
|
24
24
|
.filter(needsInitialization)
|
|
25
|
-
.map((plugin) => plugin.initialize?.(this
|
|
25
|
+
.map((plugin) => plugin.initialize?.(this)));
|
|
26
26
|
};
|
|
27
27
|
invalidateCache = async (key) => {
|
|
28
28
|
await queryClient.invalidateQueries({ queryKey: key });
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"DevPortalContext.js","sourceRoot":"","sources":["../../../src/lib/core/DevPortalContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAKpD,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,OAAO,EAEL,mBAAmB,EACnB,kBAAkB,EAElB,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAQtB,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;AA6C7C,MAAM,OAAO,gBAAgB;IACpB,OAAO,CAA+C;IACtD,QAAQ,CAAgD;IACxD,aAAa,CAAqD;IAClE,IAAI,CAAmC;IACvC,IAAI,CAA+B;IACnC,cAAc,CAA0C;IACvD,iBAAiB,CAAqB;IAE9C,YAAY,MAA4B;QACtC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;QACpC,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;QACtC,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,QAAQ,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;IAC1B,CAAC;IAED,UAAU,GAAG,KAAK,IAAmB,EAAE;QACrC,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,OAAO;aACT,MAAM,CAAC,mBAAmB,CAAC;aAC3B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC,CAC9C,CAAC;IACJ,CAAC,CAAC;IAEF,eAAe,GAAG,KAAK,EAAE,GAAwB,EAAE,EAAE;QACnD,MAAM,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC;IACzD,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,gBAAgB,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACxC,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,GAAG,CACnC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACpC,MAAM,CAAC,UAAU,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACpC,CACF,CAAC;QAEF,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC;IAEF,WAAW,GAAG,KAAK,EAAE,OAAgB,EAAE,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;QAE/D,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,WAAW,EAAE,CAAC,CAAC;QAE9D,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;CACH"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type ReactElement } from "react";
|
|
2
|
-
import {
|
|
2
|
+
import { type RouteObject } from "react-router-dom";
|
|
3
3
|
import type { Sidebar } from "../../config/validators/SidebarSchema.js";
|
|
4
4
|
import { MdxComponentsType } from "../util/MdxComponents.js";
|
|
5
5
|
import { DevPortalContext, type ApiIdentity } from "./DevPortalContext.js";
|
|
@@ -26,9 +26,7 @@ export type ProfileNavigationItem = {
|
|
|
26
26
|
children?: ProfileNavigationItem[];
|
|
27
27
|
};
|
|
28
28
|
export interface CommonPlugin {
|
|
29
|
-
initialize?: (context: DevPortalContext
|
|
30
|
-
navigate: NavigateFunction;
|
|
31
|
-
}) => Promise<void | boolean> | void | boolean;
|
|
29
|
+
initialize?: (context: DevPortalContext) => Promise<void | boolean> | void | boolean;
|
|
32
30
|
getHead?: () => ReactElement | undefined;
|
|
33
31
|
getMdxComponents?: () => MdxComponentsType;
|
|
34
32
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/lib/core/plugins.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/lib/core/plugins.ts"],"names":[],"mappings":"AA+CA,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAoB,EACM,EAAE,CAC5B,qBAAqB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,mBAAmB,KAAK,UAAU,CAAC;AAEhF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,GAAoB,EACK,EAAE,CAC3B,WAAW,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,UAAU,CAAC;AAE5D,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,GAAoB,EACS,EAAE,CAC/B,cAAc,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,YAAY,KAAK,UAAU,CAAC;AAElE,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAoB,EACC,EAAE,CACvB,YAAY,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,UAAU,CAAC;AAE9D,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,GAAoB,EAAuB,EAAE,CACnE,SAAS,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,CAAC;AAExD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAoB,EACC,EAAE,CACvB,kBAAkB,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,gBAAgB,KAAK,UAAU,CAAC;AAE1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,GAAoB,EACM,EAAE,CAC5B,eAAe,IAAI,GAAG,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,UAAU,CAAC"}
|