oidc-spa 7.2.0-rc.1 → 7.2.0-rc.3
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/README.md +2 -2
- package/backend.js.map +1 -1
- package/core/AuthResponse.js.map +1 -1
- package/core/Oidc.js.map +1 -1
- package/core/OidcInitializationError.d.ts +0 -13
- package/core/OidcInitializationError.js +0 -243
- package/core/OidcInitializationError.js.map +1 -1
- package/core/OidcMetadata.js.map +1 -1
- package/core/StateData.js.map +1 -1
- package/core/configId.js.map +1 -1
- package/core/createOidc.js +38 -5
- package/core/createOidc.js.map +1 -1
- package/core/diagnostic.d.ts +14 -0
- package/core/diagnostic.js +214 -0
- package/core/diagnostic.js.map +1 -0
- package/core/evtIsUserActive.js.map +1 -1
- package/core/handleOidcCallback.js.map +1 -1
- package/core/iframeMessageProtection.js.map +1 -1
- package/core/index.js.map +1 -1
- package/core/initialLocationHref.js.map +1 -1
- package/core/isNewBrowserSession.js.map +1 -1
- package/core/loginOrGoToAuthServer.js.map +1 -1
- package/core/loginPropagationToOtherTabs.js.map +1 -1
- package/core/loginSilent.js.map +1 -1
- package/core/logoutPropagationToOtherTabs.js.map +1 -1
- package/core/oidcClientTsUserToTokens.js.map +1 -1
- package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
- package/core/persistedAuthState.js.map +1 -1
- package/entrypoint.js.map +1 -1
- package/esm/core/AuthResponse.d.ts +5 -0
- package/{src/core/AuthResponse.ts → esm/core/AuthResponse.js} +2 -10
- package/esm/core/AuthResponse.js.map +1 -0
- package/esm/core/Oidc.d.ts +126 -0
- package/esm/core/Oidc.js +2 -0
- package/esm/core/Oidc.js.map +1 -0
- package/esm/core/OidcInitializationError.d.ts +7 -0
- package/esm/core/OidcInitializationError.js +17 -0
- package/esm/core/OidcInitializationError.js.map +1 -0
- package/{src/core/OidcMetadata.ts → esm/core/OidcMetadata.d.ts} +0 -5
- package/esm/core/OidcMetadata.js +3 -0
- package/esm/core/OidcMetadata.js.map +1 -0
- package/esm/core/StateData.d.ts +42 -0
- package/esm/core/StateData.js +55 -0
- package/esm/core/StateData.js.map +1 -0
- package/esm/core/configId.d.ts +4 -0
- package/esm/core/configId.js +4 -0
- package/esm/core/configId.js.map +1 -0
- package/esm/core/createOidc.d.ts +132 -0
- package/{src/core/createOidc.ts → esm/core/createOidc.js} +269 -806
- package/esm/core/createOidc.js.map +1 -0
- package/esm/core/diagnostic.d.ts +14 -0
- package/{src/core/OidcInitializationError.ts → esm/core/diagnostic.js} +32 -109
- package/esm/core/diagnostic.js.map +1 -0
- package/esm/core/evtIsUserActive.d.ts +5 -0
- package/{src/core/evtIsUserActive.ts → esm/core/evtIsUserActive.js} +14 -46
- package/esm/core/evtIsUserActive.js.map +1 -0
- package/esm/core/handleOidcCallback.d.ts +13 -0
- package/{src/core/handleOidcCallback.ts → esm/core/handleOidcCallback.js} +25 -121
- package/esm/core/handleOidcCallback.js.map +1 -0
- package/esm/core/iframeMessageProtection.d.ts +20 -0
- package/{src/core/iframeMessageProtection.ts → esm/core/iframeMessageProtection.js} +10 -45
- package/esm/core/iframeMessageProtection.js.map +1 -0
- package/esm/core/index.js +4 -0
- package/esm/core/index.js.map +1 -0
- package/esm/core/initialLocationHref.d.ts +1 -0
- package/{src/core/initialLocationHref.ts → esm/core/initialLocationHref.js} +1 -1
- package/esm/core/initialLocationHref.js.map +1 -0
- package/esm/core/isNewBrowserSession.d.ts +9 -0
- package/{src/core/isNewBrowserSession.ts → esm/core/isNewBrowserSession.js} +3 -15
- package/esm/core/isNewBrowserSession.js.map +1 -0
- package/esm/core/loginOrGoToAuthServer.d.ts +40 -0
- package/{src/core/loginOrGoToAuthServer.ts → esm/core/loginOrGoToAuthServer.js} +60 -168
- package/esm/core/loginOrGoToAuthServer.js.map +1 -0
- package/esm/core/loginPropagationToOtherTabs.d.ts +8 -0
- package/{src/core/loginPropagationToOtherTabs.ts → esm/core/loginPropagationToOtherTabs.js} +7 -25
- package/esm/core/loginPropagationToOtherTabs.js.map +1 -0
- package/esm/core/loginSilent.d.ts +28 -0
- package/esm/core/loginSilent.js +125 -0
- package/esm/core/loginSilent.js.map +1 -0
- package/esm/core/logoutPropagationToOtherTabs.d.ts +10 -0
- package/{src/core/logoutPropagationToOtherTabs.ts → esm/core/logoutPropagationToOtherTabs.js} +8 -28
- package/esm/core/logoutPropagationToOtherTabs.js.map +1 -0
- package/esm/core/oidcClientTsUserToTokens.d.ts +11 -0
- package/esm/core/oidcClientTsUserToTokens.js +155 -0
- package/esm/core/oidcClientTsUserToTokens.js.map +1 -0
- package/esm/core/ongoingLoginOrRefreshProcesses.d.ts +6 -0
- package/{src/core/ongoingLoginOrRefreshProcesses.ts → esm/core/ongoingLoginOrRefreshProcesses.js} +6 -24
- package/esm/core/ongoingLoginOrRefreshProcesses.js.map +1 -0
- package/esm/core/persistedAuthState.d.ts +28 -0
- package/esm/core/persistedAuthState.js +64 -0
- package/esm/core/persistedAuthState.js.map +1 -0
- package/esm/entrypoint.d.ts +7 -0
- package/{src/entrypoint.ts → esm/entrypoint.js} +3 -26
- package/esm/entrypoint.js.map +1 -0
- package/esm/index.js +2 -0
- package/esm/index.js.map +1 -0
- package/esm/keycloak/index.d.ts +3 -0
- package/esm/keycloak/index.js +3 -0
- package/esm/keycloak/index.js.map +1 -0
- package/esm/keycloak/isKeycloak.d.ts +3 -0
- package/{src/keycloak/isKeycloak.ts → esm/keycloak/isKeycloak.js} +2 -8
- package/esm/keycloak/isKeycloak.js.map +1 -0
- package/esm/keycloak/keycloak-js/Keycloak.d.ts +284 -0
- package/{src/keycloak/keycloak-js/Keycloak.ts → esm/keycloak/keycloak-js/Keycloak.js} +116 -439
- package/esm/keycloak/keycloak-js/Keycloak.js.map +1 -0
- package/esm/keycloak/keycloak-js/index.js +2 -0
- package/esm/keycloak/keycloak-js/index.js.map +1 -0
- package/{src/keycloak/keycloak-js/types.ts → esm/keycloak/keycloak-js/types.d.ts} +3 -84
- package/esm/keycloak/keycloak-js/types.js +2 -0
- package/esm/keycloak/keycloak-js/types.js.map +1 -0
- package/esm/keycloak/keycloakIssuerUriParsed.d.ts +9 -0
- package/{src/keycloak/keycloakIssuerUriParsed.ts → esm/keycloak/keycloakIssuerUriParsed.js} +2 -15
- package/esm/keycloak/keycloakIssuerUriParsed.js.map +1 -0
- package/esm/keycloak/keycloakUtils.d.ts +37 -0
- package/esm/keycloak/keycloakUtils.js +44 -0
- package/esm/keycloak/keycloakUtils.js.map +1 -0
- package/esm/keycloak-js.js +2 -0
- package/esm/keycloak-js.js.map +1 -0
- package/esm/mock/index.js +2 -0
- package/esm/mock/index.js.map +1 -0
- package/esm/mock/oidc.d.ts +19 -0
- package/{src/mock/oidc.ts → esm/mock/oidc.js} +28 -88
- package/esm/mock/oidc.js.map +1 -0
- package/esm/mock/react.d.ts +58 -0
- package/esm/mock/react.js +7 -0
- package/esm/mock/react.js.map +1 -0
- package/esm/react/index.js +2 -0
- package/esm/react/index.js.map +1 -0
- package/esm/react/react.d.ts +102 -0
- package/esm/react/react.js +221 -0
- package/esm/react/react.js.map +1 -0
- package/esm/tools/Deferred.d.ts +13 -0
- package/esm/tools/Deferred.js +19 -0
- package/esm/tools/Deferred.js.map +1 -0
- package/esm/tools/EphemeralSessionStorage.d.ts +12 -0
- package/{src/tools/EphemeralSessionStorage.ts → esm/tools/EphemeralSessionStorage.js} +30 -112
- package/esm/tools/EphemeralSessionStorage.js.map +1 -0
- package/esm/tools/Evt.d.ts +11 -0
- package/{src/tools/Evt.ts → esm/tools/Evt.js} +7 -25
- package/esm/tools/Evt.js.map +1 -0
- package/esm/tools/StatefulEvt.d.ts +12 -0
- package/esm/tools/StatefulEvt.js +21 -0
- package/esm/tools/StatefulEvt.js.map +1 -0
- package/esm/tools/ValueOrAsyncGetter.js +2 -0
- package/esm/tools/ValueOrAsyncGetter.js.map +1 -0
- package/esm/tools/asymmetricEncryption.d.ts +18 -0
- package/esm/tools/asymmetricEncryption.js +85 -0
- package/esm/tools/asymmetricEncryption.js.map +1 -0
- package/esm/tools/base64.d.ts +2 -0
- package/{src/tools/base64.ts → esm/tools/base64.js} +3 -3
- package/esm/tools/base64.js.map +1 -0
- package/esm/tools/createObjectThatThrowsIfAccessed.d.ts +8 -0
- package/{src/tools/createObjectThatThrowsIfAccessed.ts → esm/tools/createObjectThatThrowsIfAccessed.js} +7 -18
- package/esm/tools/createObjectThatThrowsIfAccessed.js.map +1 -0
- package/esm/tools/decodeJwt.d.ts +25 -0
- package/esm/tools/decodeJwt.js +60 -0
- package/esm/tools/decodeJwt.js.map +1 -0
- package/esm/tools/generateUrlSafeRandom.d.ts +3 -0
- package/{src/tools/generateUrlSafeRandom.ts → esm/tools/generateUrlSafeRandom.js} +5 -8
- package/esm/tools/generateUrlSafeRandom.js.map +1 -0
- package/esm/tools/getDownlinkAndRtt.d.ts +4 -0
- package/{src/tools/getDownlinkAndRtt.ts → esm/tools/getDownlinkAndRtt.js} +6 -10
- package/esm/tools/getDownlinkAndRtt.js.map +1 -0
- package/esm/tools/getIsOnline.d.ts +7 -0
- package/{src/tools/getIsOnline.ts → esm/tools/getIsOnline.js} +3 -9
- package/esm/tools/getIsOnline.js.map +1 -0
- package/esm/tools/getIsValidRemoteJson.d.ts +1 -0
- package/esm/tools/getIsValidRemoteJson.js +15 -0
- package/esm/tools/getIsValidRemoteJson.js.map +1 -0
- package/esm/tools/getPrUserInteraction.d.ts +4 -0
- package/{src/tools/getPrUserInteraction.ts → esm/tools/getPrUserInteraction.js} +2 -6
- package/esm/tools/getPrUserInteraction.js.map +1 -0
- package/esm/tools/getUserEnvironmentInfo.d.ts +1 -0
- package/esm/tools/getUserEnvironmentInfo.js +50 -0
- package/esm/tools/getUserEnvironmentInfo.js.map +1 -0
- package/esm/tools/haveSharedParentDomain.d.ts +4 -0
- package/{src/tools/haveSharedParentDomain.ts → esm/tools/haveSharedParentDomain.js} +3 -5
- package/esm/tools/haveSharedParentDomain.js.map +1 -0
- package/esm/tools/isDev.d.ts +1 -0
- package/{src/tools/isDev.ts → esm/tools/isDev.js} +5 -12
- package/esm/tools/isDev.js.map +1 -0
- package/esm/tools/parseKeycloakIssuerUri.d.ts +30 -0
- package/{src/tools/parseKeycloakIssuerUri.ts → esm/tools/parseKeycloakIssuerUri.js} +2 -18
- package/esm/tools/parseKeycloakIssuerUri.js.map +1 -0
- package/esm/tools/readExpirationTimeInJwt.d.ts +1 -0
- package/{src/tools/readExpirationTimeInJwt.ts → esm/tools/readExpirationTimeInJwt.js} +6 -7
- package/esm/tools/readExpirationTimeInJwt.js.map +1 -0
- package/esm/tools/startCountdown.d.ts +11 -0
- package/{src/tools/startCountdown.ts → esm/tools/startCountdown.js} +6 -17
- package/esm/tools/startCountdown.js.map +1 -0
- package/esm/tools/subscribeToUserInteraction.d.ts +6 -0
- package/{src/tools/subscribeToUserInteraction.ts → esm/tools/subscribeToUserInteraction.js} +4 -13
- package/esm/tools/subscribeToUserInteraction.js.map +1 -0
- package/esm/tools/toFullyQualifiedUrl.d.ts +10 -0
- package/{src/tools/toFullyQualifiedUrl.ts → esm/tools/toFullyQualifiedUrl.js} +7 -25
- package/esm/tools/toFullyQualifiedUrl.js.map +1 -0
- package/esm/tools/toHumanReadableDuration.d.ts +1 -0
- package/{src/tools/toHumanReadableDuration.ts → esm/tools/toHumanReadableDuration.js} +8 -5
- package/esm/tools/toHumanReadableDuration.js.map +1 -0
- package/esm/tools/urlSearchParams.d.ts +19 -0
- package/{src/tools/urlSearchParams.ts → esm/tools/urlSearchParams.js} +24 -70
- package/esm/tools/urlSearchParams.js.map +1 -0
- package/esm/tools/workerTimers.d.ts +5 -0
- package/{src/tools/workerTimers.ts → esm/tools/workerTimers.js} +7 -27
- package/esm/tools/workerTimers.js.map +1 -0
- package/esm/vendor/frontend/oidc-client-ts.js +3636 -0
- package/{src/vendor/frontend/tsafe.ts → esm/vendor/frontend/tsafe.d.ts} +0 -1
- package/esm/vendor/frontend/tsafe.js +1 -0
- package/esm/vendor/frontend/worker-timers.js +1 -0
- package/index.js.map +1 -1
- package/keycloak/index.js.map +1 -1
- package/keycloak/isKeycloak.js.map +1 -1
- package/keycloak/keycloak-js/Keycloak.js.map +1 -1
- package/keycloak/keycloak-js/index.js.map +1 -1
- package/keycloak/keycloak-js/types.js.map +1 -1
- package/keycloak/keycloakIssuerUriParsed.js.map +1 -1
- package/keycloak/keycloakUtils.js.map +1 -1
- package/keycloak-js.js.map +1 -1
- package/mock/index.js.map +1 -1
- package/mock/oidc.js.map +1 -1
- package/mock/react.js.map +1 -1
- package/package.json +75 -328
- package/react/index.js.map +1 -1
- package/react/react.js.map +1 -1
- package/tools/Deferred.d.ts +0 -1
- package/tools/Deferred.js +0 -4
- package/tools/Deferred.js.map +1 -1
- package/tools/EphemeralSessionStorage.js.map +1 -1
- package/tools/Evt.js.map +1 -1
- package/tools/StatefulEvt.js.map +1 -1
- package/tools/ValueOrAsyncGetter.js.map +1 -1
- package/tools/asymmetricEncryption.js.map +1 -1
- package/tools/base64.js.map +1 -1
- package/tools/createObjectThatThrowsIfAccessed.js.map +1 -1
- package/tools/decodeJwt.js.map +1 -1
- package/tools/generateUrlSafeRandom.js.map +1 -1
- package/tools/getDownlinkAndRtt.js.map +1 -1
- package/tools/getIsOnline.js.map +1 -1
- package/tools/getIsValidRemoteJson.js.map +1 -1
- package/tools/getPrUserInteraction.js.map +1 -1
- package/tools/getUserEnvironmentInfo.js.map +1 -1
- package/tools/haveSharedParentDomain.js.map +1 -1
- package/tools/isDev.js.map +1 -1
- package/tools/parseKeycloakIssuerUri.js.map +1 -1
- package/tools/readExpirationTimeInJwt.js.map +1 -1
- package/tools/startCountdown.js.map +1 -1
- package/tools/subscribeToUserInteraction.js.map +1 -1
- package/tools/toFullyQualifiedUrl.js.map +1 -1
- package/tools/toHumanReadableDuration.js.map +1 -1
- package/tools/urlSearchParams.js.map +1 -1
- package/tools/workerTimers.js.map +1 -1
- package/vendor/frontend/tsafe.d.ts +0 -1
- package/vendor/frontend/tsafe.js +1 -1
- package/src/backend.ts +0 -391
- package/src/core/Oidc.ts +0 -140
- package/src/core/StateData.ts +0 -118
- package/src/core/configId.ts +0 -3
- package/src/core/loginSilent.ts +0 -209
- package/src/core/oidcClientTsUserToTokens.ts +0 -229
- package/src/core/persistedAuthState.ts +0 -122
- package/src/keycloak/index.ts +0 -8
- package/src/keycloak/keycloakUtils.ts +0 -90
- package/src/mock/react.tsx +0 -11
- package/src/react/react.tsx +0 -476
- package/src/tools/Deferred.ts +0 -39
- package/src/tools/StatefulEvt.ts +0 -38
- package/src/tools/asymmetricEncryption.ts +0 -184
- package/src/tools/decodeJwt.ts +0 -95
- package/src/tools/getIsValidRemoteJson.ts +0 -18
- package/src/tools/getUserEnvironmentInfo.ts +0 -42
- package/src/vendor/backend/evt.ts +0 -2
- package/src/vendor/backend/jsonwebtoken.ts +0 -1
- package/src/vendor/backend/node-fetch.ts +0 -2
- package/src/vendor/backend/node-jose.ts +0 -1
- package/src/vendor/backend/tsafe.ts +0 -5
- package/src/vendor/backend/zod.ts +0 -1
- /package/{src/core/index.ts → esm/core/index.d.ts} +0 -0
- /package/{src/index.ts → esm/index.d.ts} +0 -0
- /package/{src/keycloak/keycloak-js/index.ts → esm/keycloak/keycloak-js/index.d.ts} +0 -0
- /package/{src/keycloak-js.ts → esm/keycloak-js.d.ts} +0 -0
- /package/{src/mock/index.ts → esm/mock/index.d.ts} +0 -0
- /package/{src/react/index.ts → esm/react/index.d.ts} +0 -0
- /package/{src/tools/ValueOrAsyncGetter.ts → esm/tools/ValueOrAsyncGetter.d.ts} +0 -0
- /package/{src/vendor/frontend/oidc-client-ts.ts → esm/vendor/frontend/oidc-client-ts.d.ts} +0 -0
- /package/{src/vendor/frontend/worker-timers.ts → esm/vendor/frontend/worker-timers.d.ts} +0 -0
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import { typeGuard, id } from "../vendor/frontend/tsafe";
|
|
2
|
-
|
|
3
|
-
function getKey(params: { configId: string }) {
|
|
4
|
-
const { configId } = params;
|
|
5
|
-
|
|
6
|
-
return `oidc-spa:auth-state:${configId}`;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
type PersistedAuthState = PersistedAuthState.LoggedIn | PersistedAuthState.ExplicitlyLoggedOut;
|
|
10
|
-
namespace PersistedAuthState {
|
|
11
|
-
type Common = {
|
|
12
|
-
__brand: "PersistedAuthState-v1";
|
|
13
|
-
};
|
|
14
|
-
|
|
15
|
-
export type LoggedIn = Common & {
|
|
16
|
-
stateDescription: "logged in";
|
|
17
|
-
untilTime: number | undefined;
|
|
18
|
-
};
|
|
19
|
-
|
|
20
|
-
export type ExplicitlyLoggedOut = Common & {
|
|
21
|
-
stateDescription: "explicitly logged out";
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function persistAuthState(params: {
|
|
26
|
-
configId: string;
|
|
27
|
-
state:
|
|
28
|
-
| {
|
|
29
|
-
stateDescription: "logged in";
|
|
30
|
-
idleSessionLifetimeInSeconds: number | undefined;
|
|
31
|
-
refreshTokenExpirationTime: number | undefined;
|
|
32
|
-
}
|
|
33
|
-
| {
|
|
34
|
-
stateDescription: "explicitly logged out";
|
|
35
|
-
}
|
|
36
|
-
| undefined;
|
|
37
|
-
}) {
|
|
38
|
-
const { configId, state } = params;
|
|
39
|
-
|
|
40
|
-
const key = getKey({ configId });
|
|
41
|
-
|
|
42
|
-
if (state === undefined) {
|
|
43
|
-
localStorage.removeItem(key);
|
|
44
|
-
return;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
localStorage.setItem(
|
|
48
|
-
key,
|
|
49
|
-
JSON.stringify(
|
|
50
|
-
id<PersistedAuthState>(
|
|
51
|
-
(() => {
|
|
52
|
-
switch (state.stateDescription) {
|
|
53
|
-
case "logged in":
|
|
54
|
-
return id<PersistedAuthState.LoggedIn>({
|
|
55
|
-
__brand: "PersistedAuthState-v1",
|
|
56
|
-
stateDescription: "logged in",
|
|
57
|
-
untilTime: (() => {
|
|
58
|
-
const { idleSessionLifetimeInSeconds, refreshTokenExpirationTime } =
|
|
59
|
-
state;
|
|
60
|
-
|
|
61
|
-
if (idleSessionLifetimeInSeconds !== undefined) {
|
|
62
|
-
return Date.now() + idleSessionLifetimeInSeconds * 1000;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
return refreshTokenExpirationTime;
|
|
66
|
-
})()
|
|
67
|
-
});
|
|
68
|
-
case "explicitly logged out":
|
|
69
|
-
return id<PersistedAuthState.ExplicitlyLoggedOut>({
|
|
70
|
-
__brand: "PersistedAuthState-v1",
|
|
71
|
-
stateDescription: "explicitly logged out"
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
})()
|
|
75
|
-
)
|
|
76
|
-
)
|
|
77
|
-
);
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export function getPersistedAuthState(params: {
|
|
81
|
-
configId: string;
|
|
82
|
-
}): PersistedAuthState["stateDescription"] | undefined {
|
|
83
|
-
const { configId } = params;
|
|
84
|
-
|
|
85
|
-
const key = getKey({ configId });
|
|
86
|
-
|
|
87
|
-
const value = localStorage.getItem(key);
|
|
88
|
-
|
|
89
|
-
if (value === null) {
|
|
90
|
-
return undefined;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
let state: unknown;
|
|
94
|
-
|
|
95
|
-
try {
|
|
96
|
-
state = JSON.parse(value);
|
|
97
|
-
} catch {
|
|
98
|
-
localStorage.removeItem(key);
|
|
99
|
-
return undefined;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
if (
|
|
103
|
-
!typeGuard<PersistedAuthState>(
|
|
104
|
-
state,
|
|
105
|
-
state instanceof Object &&
|
|
106
|
-
"__brand" in state &&
|
|
107
|
-
state.__brand === id<PersistedAuthState["__brand"]>("PersistedAuthState-v1")
|
|
108
|
-
)
|
|
109
|
-
) {
|
|
110
|
-
localStorage.removeItem(key);
|
|
111
|
-
return undefined;
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
if (state.stateDescription === "logged in") {
|
|
115
|
-
if (state.untilTime !== undefined && state.untilTime <= Date.now()) {
|
|
116
|
-
localStorage.removeItem(key);
|
|
117
|
-
return undefined;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
return state.stateDescription;
|
|
122
|
-
}
|
package/src/keycloak/index.ts
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
|
|
2
|
-
|
|
3
|
-
import { type KeycloakIssuerUriParsed, parseKeycloakIssuerUri } from "./keycloakIssuerUriParsed";
|
|
4
|
-
|
|
5
|
-
export type KeycloakUtils = {
|
|
6
|
-
issuerUriParsed: KeycloakIssuerUriParsed;
|
|
7
|
-
adminConsoleUrl: string;
|
|
8
|
-
adminConsoleUrl_master: string;
|
|
9
|
-
getAccountUrl: (params: {
|
|
10
|
-
clientId: string;
|
|
11
|
-
backToAppFromAccountUrl: string;
|
|
12
|
-
locale?: string;
|
|
13
|
-
}) => string;
|
|
14
|
-
fetchUserProfile: (params: { accessToken: string }) => Promise<KeycloakProfile>;
|
|
15
|
-
fetchUserInfo: (params: { accessToken: string }) => Promise<KeycloakUserInfo>;
|
|
16
|
-
transformUrlBeforeRedirectForRegister: (authorizationUrl: string) => string;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export type KeycloakProfile = {
|
|
20
|
-
id?: string;
|
|
21
|
-
username?: string;
|
|
22
|
-
email?: string;
|
|
23
|
-
firstName?: string;
|
|
24
|
-
lastName?: string;
|
|
25
|
-
enabled?: boolean;
|
|
26
|
-
emailVerified?: boolean;
|
|
27
|
-
totp?: boolean;
|
|
28
|
-
createdTimestamp?: number;
|
|
29
|
-
attributes?: Record<string, unknown>;
|
|
30
|
-
};
|
|
31
|
-
|
|
32
|
-
export type KeycloakUserInfo = {
|
|
33
|
-
sub: string;
|
|
34
|
-
[key: string]: any;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export function createKeycloakUtils(params: { issuerUri: string }): KeycloakUtils {
|
|
38
|
-
const { issuerUri } = params;
|
|
39
|
-
|
|
40
|
-
const issuerUriParsed = parseKeycloakIssuerUri({ issuerUri });
|
|
41
|
-
|
|
42
|
-
const keycloakServerUrl = `${issuerUriParsed.origin}${issuerUriParsed.kcHttpRelativePath ?? ""}`;
|
|
43
|
-
|
|
44
|
-
const getAdminConsoleUrl = (realm: string) =>
|
|
45
|
-
`${keycloakServerUrl}/admin/${encodeURIComponent(realm)}/console`;
|
|
46
|
-
|
|
47
|
-
const realmUrl = `${keycloakServerUrl}/realms/${encodeURIComponent(issuerUriParsed.realm)}`;
|
|
48
|
-
|
|
49
|
-
return {
|
|
50
|
-
issuerUriParsed,
|
|
51
|
-
adminConsoleUrl: getAdminConsoleUrl(issuerUriParsed.realm),
|
|
52
|
-
adminConsoleUrl_master: getAdminConsoleUrl("master"),
|
|
53
|
-
getAccountUrl: ({ clientId, backToAppFromAccountUrl, locale }) => {
|
|
54
|
-
const accountUrlObj = new URL(
|
|
55
|
-
`${keycloakServerUrl}/realms/${issuerUriParsed.realm}/account`
|
|
56
|
-
);
|
|
57
|
-
accountUrlObj.searchParams.set("referrer", clientId);
|
|
58
|
-
accountUrlObj.searchParams.set(
|
|
59
|
-
"referrer_uri",
|
|
60
|
-
toFullyQualifiedUrl({
|
|
61
|
-
urlish: backToAppFromAccountUrl,
|
|
62
|
-
doAssertNoQueryParams: false
|
|
63
|
-
})
|
|
64
|
-
);
|
|
65
|
-
if (locale !== undefined) {
|
|
66
|
-
accountUrlObj.searchParams.set("kc_locale", locale);
|
|
67
|
-
}
|
|
68
|
-
return accountUrlObj.href;
|
|
69
|
-
},
|
|
70
|
-
fetchUserProfile: ({ accessToken }) =>
|
|
71
|
-
fetch(`${realmUrl}/account`, {
|
|
72
|
-
headers: {
|
|
73
|
-
Accept: "application/json",
|
|
74
|
-
Authorization: `Bearer ${accessToken}`
|
|
75
|
-
}
|
|
76
|
-
}).then(r => r.json()),
|
|
77
|
-
fetchUserInfo: ({ accessToken }) =>
|
|
78
|
-
fetch(`${realmUrl}/protocol/openid-connect/userinfo`, {
|
|
79
|
-
headers: {
|
|
80
|
-
Accept: "application/json",
|
|
81
|
-
Authorization: `Bearer ${accessToken}`
|
|
82
|
-
}
|
|
83
|
-
}).then(r => r.json()),
|
|
84
|
-
transformUrlBeforeRedirectForRegister: authorizationUrl => {
|
|
85
|
-
const urlObj = new URL(authorizationUrl);
|
|
86
|
-
urlObj.pathname = urlObj.pathname.replace(/\/auth$/, "/registrations");
|
|
87
|
-
return urlObj.href;
|
|
88
|
-
}
|
|
89
|
-
};
|
|
90
|
-
}
|
package/src/mock/react.tsx
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { createOidcReactApi_dependencyInjection } from "../react/react";
|
|
2
|
-
import { createMockOidc, type ParamsOfCreateMockOidc } from "./oidc";
|
|
3
|
-
import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
|
|
4
|
-
|
|
5
|
-
/** @see: https://docs.oidc-spa.dev/v/v7/mock */
|
|
6
|
-
export function createMockReactOidc<
|
|
7
|
-
DecodedIdToken extends Record<string, unknown> = Record<string, unknown>,
|
|
8
|
-
AutoLogin extends boolean = false
|
|
9
|
-
>(params: ValueOrAsyncGetter<ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin>>) {
|
|
10
|
-
return createOidcReactApi_dependencyInjection(params, createMockOidc);
|
|
11
|
-
}
|