oidc-spa 7.1.10 → 7.2.0-rc.2
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/backend.js +235 -352
- package/backend.js.map +1 -1
- package/core/AuthResponse.js +12 -49
- package/core/AuthResponse.js.map +1 -1
- package/core/Oidc.d.ts +1 -2
- package/core/Oidc.js.map +1 -1
- package/core/OidcInitializationError.d.ts +0 -13
- package/core/OidcInitializationError.js +8 -318
- package/core/OidcInitializationError.js.map +1 -1
- package/core/OidcMetadata.js +1 -1
- package/core/OidcMetadata.js.map +1 -1
- package/core/StateData.d.ts +5 -5
- package/core/StateData.js +25 -25
- package/core/StateData.js.map +1 -1
- package/core/configId.js +1 -1
- package/core/configId.js.map +1 -1
- package/core/createOidc.d.ts +8 -0
- package/core/createOidc.js +1030 -1292
- 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 +26 -27
- package/core/evtIsUserActive.js.map +1 -1
- package/core/handleOidcCallback.js +99 -154
- package/core/handleOidcCallback.js.map +1 -1
- package/core/iframeMessageProtection.d.ts +1 -1
- package/core/iframeMessageProtection.js +40 -106
- package/core/iframeMessageProtection.js.map +1 -1
- package/core/index.d.ts +1 -1
- package/core/index.js +3 -3
- package/core/index.js.map +1 -1
- package/core/initialLocationHref.js +1 -1
- package/core/initialLocationHref.js.map +1 -1
- package/core/isNewBrowserSession.js +8 -8
- package/core/isNewBrowserSession.js.map +1 -1
- package/core/loginOrGoToAuthServer.d.ts +1 -1
- package/core/loginOrGoToAuthServer.js +188 -310
- package/core/loginOrGoToAuthServer.js.map +1 -1
- package/core/loginPropagationToOtherTabs.js +15 -16
- package/core/loginPropagationToOtherTabs.js.map +1 -1
- package/core/loginSilent.d.ts +2 -3
- package/core/loginSilent.js +118 -214
- package/core/loginSilent.js.map +1 -1
- package/core/logoutPropagationToOtherTabs.js +15 -16
- package/core/logoutPropagationToOtherTabs.js.map +1 -1
- package/core/oidcClientTsUserToTokens.d.ts +1 -1
- package/core/oidcClientTsUserToTokens.js +75 -72
- package/core/oidcClientTsUserToTokens.js.map +1 -1
- package/core/ongoingLoginOrRefreshProcesses.js +23 -89
- package/core/ongoingLoginOrRefreshProcesses.js.map +1 -1
- package/core/persistedAuthState.js +13 -13
- package/core/persistedAuthState.js.map +1 -1
- package/entrypoint.js +9 -9
- package/entrypoint.js.map +1 -1
- package/esm/core/AuthResponse.d.ts +5 -0
- package/{src/core/AuthResponse.ts → esm/core/AuthResponse.js} +3 -9
- 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} +282 -826
- 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} +40 -117
- 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} +56 -131
- 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} +14 -49
- package/esm/core/iframeMessageProtection.js.map +1 -0
- package/{src/core/index.ts → esm/core/index.d.ts} +1 -1
- 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.d.ts +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/esm/keycloak/isKeycloak.js +17 -0
- package/esm/keycloak/isKeycloak.js.map +1 -0
- package/esm/keycloak/keycloak-js/Keycloak.d.ts +284 -0
- package/esm/keycloak/keycloak-js/Keycloak.js +774 -0
- package/esm/keycloak/keycloak-js/Keycloak.js.map +1 -0
- package/esm/keycloak/keycloak-js/index.d.ts +2 -0
- package/esm/keycloak/keycloak-js/index.js +2 -0
- package/esm/keycloak/keycloak-js/index.js.map +1 -0
- package/esm/keycloak/keycloak-js/types.d.ts +361 -0
- 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/esm/keycloak/keycloakIssuerUriParsed.js +16 -0
- 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.d.ts +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 +14 -0
- package/esm/tools/Deferred.js +23 -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/esm/tools/parseKeycloakIssuerUri.js +33 -0
- 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.d.ts +1 -0
- package/esm/vendor/frontend/oidc-client-ts.js +3636 -0
- package/{src/vendor/frontend/tsafe.ts → esm/vendor/frontend/tsafe.d.ts} +1 -0
- package/esm/vendor/frontend/tsafe.js +1 -0
- package/esm/vendor/frontend/worker-timers.js +1 -0
- package/index.d.ts +1 -1
- package/index.js +1 -2
- package/index.js.map +1 -1
- package/keycloak/index.d.ts +3 -0
- package/keycloak/index.js +8 -0
- package/keycloak/index.js.map +1 -0
- package/keycloak/isKeycloak.d.ts +3 -0
- package/keycloak/isKeycloak.js +20 -0
- package/keycloak/isKeycloak.js.map +1 -0
- package/keycloak/keycloak-js/Keycloak.d.ts +284 -0
- package/keycloak/keycloak-js/Keycloak.js +778 -0
- package/keycloak/keycloak-js/Keycloak.js.map +1 -0
- package/keycloak/keycloak-js/index.d.ts +2 -0
- package/keycloak/keycloak-js/index.js +6 -0
- package/keycloak/keycloak-js/index.js.map +1 -0
- package/keycloak/keycloak-js/types.d.ts +361 -0
- package/keycloak/keycloak-js/types.js +3 -0
- package/keycloak/keycloak-js/types.js.map +1 -0
- package/keycloak/keycloakIssuerUriParsed.d.ts +9 -0
- package/keycloak/keycloakIssuerUriParsed.js +19 -0
- package/keycloak/keycloakIssuerUriParsed.js.map +1 -0
- package/keycloak/keycloakUtils.d.ts +37 -0
- package/keycloak/keycloakUtils.js +47 -0
- package/keycloak/keycloakUtils.js.map +1 -0
- package/keycloak-js.d.ts +1 -0
- package/keycloak-js.js +18 -0
- package/keycloak-js.js.map +1 -0
- package/mock/index.js.map +1 -1
- package/mock/oidc.js +147 -194
- package/mock/oidc.js.map +1 -1
- package/mock/react.js +2 -2
- package/mock/react.js.map +1 -1
- package/package.json +74 -299
- package/react/index.js.map +1 -1
- package/react/react.js +133 -244
- package/react/react.js.map +1 -1
- package/tools/Deferred.js +13 -35
- package/tools/Deferred.js.map +1 -1
- package/tools/EphemeralSessionStorage.js +46 -48
- package/tools/EphemeralSessionStorage.js.map +1 -1
- package/tools/Evt.js +14 -14
- package/tools/Evt.js.map +1 -1
- package/tools/StatefulEvt.js +5 -5
- package/tools/StatefulEvt.js.map +1 -1
- package/tools/ValueOrAsyncGetter.js.map +1 -1
- package/tools/asymmetricEncryption.js +81 -172
- package/tools/asymmetricEncryption.js.map +1 -1
- package/tools/base64.js +2 -2
- package/tools/base64.js.map +1 -1
- package/tools/createObjectThatThrowsIfAccessed.js +13 -61
- package/tools/createObjectThatThrowsIfAccessed.js.map +1 -1
- package/tools/decodeJwt.d.ts +25 -2
- package/tools/decodeJwt.js +61 -3
- package/tools/decodeJwt.js.map +1 -1
- package/tools/generateUrlSafeRandom.js +5 -30
- package/tools/generateUrlSafeRandom.js.map +1 -1
- package/tools/getDownlinkAndRtt.js +8 -30
- package/tools/getDownlinkAndRtt.js.map +1 -1
- package/tools/getIsOnline.js +3 -3
- package/tools/getIsOnline.js.map +1 -1
- package/tools/getIsValidRemoteJson.js +12 -59
- package/tools/getIsValidRemoteJson.js.map +1 -1
- package/tools/getPrUserInteraction.js +4 -4
- package/tools/getPrUserInteraction.js.map +1 -1
- package/tools/getUserEnvironmentInfo.js +17 -12
- package/tools/getUserEnvironmentInfo.js.map +1 -1
- package/tools/haveSharedParentDomain.js +5 -5
- package/tools/haveSharedParentDomain.js.map +1 -1
- package/tools/isDev.js +2 -2
- package/tools/isDev.js.map +1 -1
- package/tools/parseKeycloakIssuerUri.d.ts +2 -0
- package/tools/parseKeycloakIssuerUri.js +11 -42
- package/tools/parseKeycloakIssuerUri.js.map +1 -1
- package/tools/readExpirationTimeInJwt.js +4 -4
- package/tools/readExpirationTimeInJwt.js.map +1 -1
- package/tools/startCountdown.js +17 -65
- package/tools/startCountdown.js.map +1 -1
- package/tools/subscribeToUserInteraction.js +17 -66
- package/tools/subscribeToUserInteraction.js.map +1 -1
- package/tools/toFullyQualifiedUrl.js +7 -7
- package/tools/toFullyQualifiedUrl.js.map +1 -1
- package/tools/toHumanReadableDuration.js +13 -13
- package/tools/toHumanReadableDuration.js.map +1 -1
- package/tools/urlSearchParams.js +28 -50
- package/tools/urlSearchParams.js.map +1 -1
- package/tools/workerTimers.js +10 -10
- package/tools/workerTimers.js.map +1 -1
- package/vendor/frontend/oidc-client-ts.d.ts +1 -0
- package/vendor/frontend/oidc-client-ts.js +3686 -0
- package/vendor/frontend/tsafe.d.ts +1 -0
- package/vendor/frontend/tsafe.js +1 -1
- package/LICENSE +0 -21
- package/README.md +0 -185
- package/core/trustedFetch.d.ts +0 -2
- package/core/trustedFetch.js +0 -12
- package/core/trustedFetch.js.map +0 -1
- package/src/backend.ts +0 -391
- package/src/core/Oidc.ts +0 -141
- package/src/core/StateData.ts +0 -118
- package/src/core/configId.ts +0 -3
- package/src/core/loginSilent.ts +0 -206
- package/src/core/oidcClientTsUserToTokens.ts +0 -229
- package/src/core/persistedAuthState.ts +0 -122
- package/src/core/trustedFetch.ts +0 -9
- package/src/index.ts +0 -7
- package/src/mock/react.tsx +0 -11
- package/src/react/react.tsx +0 -460
- 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 -2
- package/src/tools/getIsValidRemoteJson.ts +0 -18
- package/src/tools/getUserEnvironmentInfo.ts +0 -42
- package/src/tools/parseKeycloakIssuerUri.ts +0 -68
- 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/vendor/frontend/oidc-client-ts-and-jwt-decode.ts +0 -4
- package/vendor/frontend/oidc-client-ts-and-jwt-decode.d.ts +0 -3
- package/vendor/frontend/oidc-client-ts-and-jwt-decode.js +0 -3
- /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/worker-timers.ts → esm/vendor/frontend/worker-timers.d.ts} +0 -0
|
@@ -1,98 +1,49 @@
|
|
|
1
|
-
import type { Oidc } from "../core";
|
|
2
1
|
import { createObjectThatThrowsIfAccessed } from "../tools/createObjectThatThrowsIfAccessed";
|
|
3
2
|
import { id } from "../vendor/frontend/tsafe";
|
|
4
3
|
import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
|
|
5
4
|
import { getSearchParam, addOrUpdateSearchParam } from "../tools/urlSearchParams";
|
|
6
5
|
import { initialLocationHref } from "../core/initialLocationHref";
|
|
7
|
-
|
|
8
|
-
export type ParamsOfCreateMockOidc<
|
|
9
|
-
DecodedIdToken extends Record<string, unknown> = Record<string, unknown>,
|
|
10
|
-
AutoLogin extends boolean = false
|
|
11
|
-
> = {
|
|
12
|
-
mockedParams?: Partial<Oidc["params"]>;
|
|
13
|
-
mockedTokens?: Partial<Oidc.Tokens<DecodedIdToken>>;
|
|
14
|
-
/**
|
|
15
|
-
* The URL of the home page of your app.
|
|
16
|
-
* We need to know this so we know where to redirect when you call `logout({ redirectTo: "home"})`.
|
|
17
|
-
* In the majority of cases it should be `homeUrl: "/"` but it could aso be something like `homeUrl: "/dashboard"`
|
|
18
|
-
* if your web app isn't hosted at the root of the domain.
|
|
19
|
-
*/
|
|
20
|
-
homeUrl: string;
|
|
21
|
-
autoLogin?: AutoLogin;
|
|
22
|
-
postLoginRedirectUrl?: string;
|
|
23
|
-
} & (AutoLogin extends true
|
|
24
|
-
? { isUserInitiallyLoggedIn?: true }
|
|
25
|
-
: {
|
|
26
|
-
isUserInitiallyLoggedIn: boolean;
|
|
27
|
-
});
|
|
28
|
-
|
|
29
6
|
const URL_SEARCH_PARAM_NAME = "isUserLoggedIn";
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_base,
|
|
33
|
-
AutoLogin extends boolean = false
|
|
34
|
-
>(
|
|
35
|
-
params: ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin>
|
|
36
|
-
): Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken> : Oidc<DecodedIdToken>> {
|
|
37
|
-
const {
|
|
38
|
-
isUserInitiallyLoggedIn = true,
|
|
39
|
-
mockedParams = {},
|
|
40
|
-
mockedTokens = {},
|
|
41
|
-
homeUrl: homeUrl_params,
|
|
42
|
-
autoLogin = false,
|
|
43
|
-
postLoginRedirectUrl
|
|
44
|
-
} = params;
|
|
45
|
-
|
|
7
|
+
export async function createMockOidc(params) {
|
|
8
|
+
const { isUserInitiallyLoggedIn = true, mockedParams = {}, mockedTokens = {}, homeUrl: homeUrl_params, autoLogin = false, postLoginRedirectUrl } = params;
|
|
46
9
|
const isUserLoggedIn = (() => {
|
|
47
10
|
const { wasPresent, value } = getSearchParam({
|
|
48
11
|
url: initialLocationHref,
|
|
49
12
|
name: URL_SEARCH_PARAM_NAME
|
|
50
13
|
});
|
|
51
|
-
|
|
52
14
|
if (!wasPresent) {
|
|
53
15
|
return isUserInitiallyLoggedIn;
|
|
54
16
|
}
|
|
55
|
-
|
|
56
17
|
remove_from_url: {
|
|
57
18
|
const { wasPresent, url_withoutTheParam } = getSearchParam({
|
|
58
19
|
url: window.location.href,
|
|
59
20
|
name: URL_SEARCH_PARAM_NAME
|
|
60
21
|
});
|
|
61
|
-
|
|
62
22
|
if (!wasPresent) {
|
|
63
23
|
break remove_from_url;
|
|
64
24
|
}
|
|
65
|
-
|
|
66
25
|
window.history.replaceState({}, "", url_withoutTheParam);
|
|
67
26
|
}
|
|
68
|
-
|
|
69
27
|
return value === "true";
|
|
70
28
|
})();
|
|
71
|
-
|
|
72
29
|
const homeUrl = toFullyQualifiedUrl({
|
|
73
30
|
urlish: homeUrl_params,
|
|
74
31
|
doAssertNoQueryParams: true,
|
|
75
32
|
doOutputWithTrailingSlash: true
|
|
76
33
|
});
|
|
77
|
-
|
|
78
|
-
const common: Oidc.Common = {
|
|
34
|
+
const common = {
|
|
79
35
|
params: {
|
|
80
36
|
clientId: mockedParams.clientId ?? "mymockclient",
|
|
81
37
|
issuerUri: mockedParams.issuerUri ?? "https://my-mock-oidc-server.net/realms/mymockrealm"
|
|
82
38
|
}
|
|
83
39
|
};
|
|
84
|
-
|
|
85
|
-
const loginOrGoToAuthServer = async (params: {
|
|
86
|
-
redirectUrl: string | undefined;
|
|
87
|
-
}): Promise<never> => {
|
|
40
|
+
const loginOrGoToAuthServer = async (params) => {
|
|
88
41
|
const { redirectUrl: redirectUrl_params } = params;
|
|
89
|
-
|
|
90
42
|
const redirectUrl = addOrUpdateSearchParam({
|
|
91
43
|
url: (() => {
|
|
92
44
|
if (redirectUrl_params === undefined) {
|
|
93
45
|
return window.location.href;
|
|
94
46
|
}
|
|
95
|
-
|
|
96
47
|
return toFullyQualifiedUrl({
|
|
97
48
|
urlish: redirectUrl_params,
|
|
98
49
|
doAssertNoQueryParams: false
|
|
@@ -102,14 +53,11 @@ export async function createMockOidc<
|
|
|
102
53
|
value: "true",
|
|
103
54
|
encodeMethod: "www-form"
|
|
104
55
|
});
|
|
105
|
-
|
|
106
56
|
window.location.href = redirectUrl;
|
|
107
|
-
|
|
108
|
-
return new Promise<never>(() => {});
|
|
57
|
+
return new Promise(() => { });
|
|
109
58
|
};
|
|
110
|
-
|
|
111
59
|
if (!isUserLoggedIn) {
|
|
112
|
-
const oidc = id
|
|
60
|
+
const oidc = id({
|
|
113
61
|
...common,
|
|
114
62
|
isUserLoggedIn: false,
|
|
115
63
|
login: ({ redirectUrl }) => loginOrGoToAuthServer({ redirectUrl }),
|
|
@@ -125,27 +73,24 @@ export async function createMockOidc<
|
|
|
125
73
|
// @ts-expect-error: We know what we are doing
|
|
126
74
|
return oidc;
|
|
127
75
|
}
|
|
128
|
-
|
|
129
|
-
const oidc: Oidc.LoggedIn<DecodedIdToken> = {
|
|
76
|
+
const oidc = {
|
|
130
77
|
...common,
|
|
131
78
|
isUserLoggedIn: true,
|
|
132
|
-
renewTokens: async () => {},
|
|
79
|
+
renewTokens: async () => { },
|
|
133
80
|
...(() => {
|
|
134
|
-
const tokens_common
|
|
81
|
+
const tokens_common = {
|
|
135
82
|
accessToken: mockedTokens.accessToken ?? "mocked-access-token",
|
|
136
83
|
accessTokenExpirationTime: mockedTokens.accessTokenExpirationTime ?? Infinity,
|
|
137
84
|
idToken: mockedTokens.idToken ?? "mocked-id-token",
|
|
138
|
-
decodedIdToken:
|
|
139
|
-
|
|
140
|
-
createObjectThatThrowsIfAccessed<DecodedIdToken>({
|
|
85
|
+
decodedIdToken: mockedTokens.decodedIdToken ??
|
|
86
|
+
createObjectThatThrowsIfAccessed({
|
|
141
87
|
debugMessage: [
|
|
142
88
|
"You haven't provided a mocked decodedIdToken",
|
|
143
89
|
"See https://docs.oidc-spa.dev/v/v7/mock"
|
|
144
90
|
].join("\n")
|
|
145
91
|
}),
|
|
146
|
-
decodedIdToken_original:
|
|
147
|
-
|
|
148
|
-
createObjectThatThrowsIfAccessed<Oidc.Tokens.DecodedIdToken_base>({
|
|
92
|
+
decodedIdToken_original: mockedTokens.decodedIdToken_original ??
|
|
93
|
+
createObjectThatThrowsIfAccessed({
|
|
149
94
|
debugMessage: [
|
|
150
95
|
"You haven't provided a mocked decodedIdToken_original",
|
|
151
96
|
"See https://docs.oidc-spa.dev/v/v7/mock"
|
|
@@ -153,27 +98,24 @@ export async function createMockOidc<
|
|
|
153
98
|
}),
|
|
154
99
|
issuedAtTime: Date.now()
|
|
155
100
|
};
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
:
|
|
166
|
-
|
|
167
|
-
hasRefreshToken: false
|
|
168
|
-
});
|
|
169
|
-
|
|
101
|
+
const tokens = mockedTokens.refreshToken !== undefined || mockedTokens.hasRefreshToken === true
|
|
102
|
+
? id({
|
|
103
|
+
...tokens_common,
|
|
104
|
+
hasRefreshToken: true,
|
|
105
|
+
refreshToken: mockedTokens.refreshToken ?? "mocked-refresh-token",
|
|
106
|
+
refreshTokenExpirationTime: mockedTokens.refreshTokenExpirationTime
|
|
107
|
+
})
|
|
108
|
+
: id({
|
|
109
|
+
...tokens_common,
|
|
110
|
+
hasRefreshToken: false
|
|
111
|
+
});
|
|
170
112
|
return {
|
|
171
113
|
getTokens: () => Promise.resolve(tokens),
|
|
172
114
|
getDecodedIdToken: () => tokens_common.decodedIdToken
|
|
173
115
|
};
|
|
174
116
|
})(),
|
|
175
117
|
subscribeToTokensChange: () => ({
|
|
176
|
-
unsubscribe: () => {}
|
|
118
|
+
unsubscribe: () => { }
|
|
177
119
|
}),
|
|
178
120
|
logout: params => {
|
|
179
121
|
const redirectUrl = addOrUpdateSearchParam({
|
|
@@ -194,18 +136,16 @@ export async function createMockOidc<
|
|
|
194
136
|
value: "false",
|
|
195
137
|
encodeMethod: "www-form"
|
|
196
138
|
});
|
|
197
|
-
|
|
198
139
|
window.location.href = redirectUrl;
|
|
199
|
-
|
|
200
|
-
return new Promise<never>(() => {});
|
|
140
|
+
return new Promise(() => { });
|
|
201
141
|
},
|
|
202
142
|
subscribeToAutoLogoutCountdown: () => ({
|
|
203
|
-
unsubscribeFromAutoLogoutCountdown: () => {}
|
|
143
|
+
unsubscribeFromAutoLogoutCountdown: () => { }
|
|
204
144
|
}),
|
|
205
145
|
goToAuthServer: async ({ redirectUrl }) => loginOrGoToAuthServer({ redirectUrl }),
|
|
206
146
|
isNewBrowserSession: false,
|
|
207
147
|
backFromAuthServer: undefined
|
|
208
148
|
};
|
|
209
|
-
|
|
210
149
|
return oidc;
|
|
211
150
|
}
|
|
151
|
+
//# sourceMappingURL=oidc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oidc.js","sourceRoot":"","sources":["../../../src/mock/oidc.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type ParamsOfCreateMockOidc } from "./oidc";
|
|
2
|
+
import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
|
|
3
|
+
/** @see: https://docs.oidc-spa.dev/v/v7/mock */
|
|
4
|
+
export declare function createMockReactOidc<DecodedIdToken extends Record<string, unknown> = Record<string, unknown>, AutoLogin extends boolean = false>(params: ValueOrAsyncGetter<ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin>>): {
|
|
5
|
+
OidcProvider: (ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T ? T extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T extends {
|
|
6
|
+
autoLogin?: true | undefined;
|
|
7
|
+
} ? true : false : never : never) extends infer T_1 ? T_1 extends (ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_2 ? T_2 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_2 extends {
|
|
8
|
+
autoLogin?: true | undefined;
|
|
9
|
+
} ? true : false : never : never) ? T_1 extends true ? (props: {
|
|
10
|
+
fallback?: import("react").ReactNode;
|
|
11
|
+
ErrorFallback?: (props: {
|
|
12
|
+
initializationError: import("..").OidcInitializationError;
|
|
13
|
+
}) => import("react").ReactNode;
|
|
14
|
+
children: import("react").ReactNode;
|
|
15
|
+
}) => import("react").JSX.Element : (props: {
|
|
16
|
+
fallback?: import("react").ReactNode;
|
|
17
|
+
children: import("react").ReactNode;
|
|
18
|
+
}) => import("react").JSX.Element : never : never;
|
|
19
|
+
useOidc: (ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_3 ? T_3 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_3 extends {
|
|
20
|
+
autoLogin?: true | undefined;
|
|
21
|
+
} ? true : false : never : never) extends infer T_4 ? T_4 extends (ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_5 ? T_5 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_5 extends {
|
|
22
|
+
autoLogin?: true | undefined;
|
|
23
|
+
} ? true : false : never : never) ? T_4 extends true ? (params?: {
|
|
24
|
+
assert: "user logged in";
|
|
25
|
+
}) => import("../react/react").OidcReact.LoggedIn<DecodedIdToken> : {
|
|
26
|
+
(params?: {
|
|
27
|
+
assert?: undefined;
|
|
28
|
+
}): import("../react/react").OidcReact<DecodedIdToken>;
|
|
29
|
+
(params: {
|
|
30
|
+
assert: "user logged in";
|
|
31
|
+
}): import("../react/react").OidcReact.LoggedIn<DecodedIdToken>;
|
|
32
|
+
(params: {
|
|
33
|
+
assert: "user not logged in";
|
|
34
|
+
}): import("../react/react").OidcReact.NotLoggedIn;
|
|
35
|
+
} : never : never;
|
|
36
|
+
getOidc: () => Promise<(ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_6 ? T_6 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_6 extends {
|
|
37
|
+
autoLogin?: true | undefined;
|
|
38
|
+
} ? true : false : never : never) extends infer T_7 ? T_7 extends (ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_8 ? T_8 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_8 extends {
|
|
39
|
+
autoLogin?: true | undefined;
|
|
40
|
+
} ? true : false : never : never) ? T_7 extends true ? import("..").Oidc.LoggedIn<DecodedIdToken> : import("..").Oidc<DecodedIdToken> : never : never>;
|
|
41
|
+
} & ((ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_6 ? T_6 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_6 extends {
|
|
42
|
+
autoLogin?: true | undefined;
|
|
43
|
+
} ? true : false : never : never) extends infer T_7 ? T_7 extends (ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> extends infer T_8 ? T_8 extends ParamsOfCreateMockOidc<DecodedIdToken, AutoLogin> ? T_8 extends {
|
|
44
|
+
autoLogin?: true | undefined;
|
|
45
|
+
} ? true : false : never : never) ? T_7 extends true ? {} : {
|
|
46
|
+
withLoginEnforced: <Props extends Record<string, unknown>>(Component: import("react").ComponentType<Props>, params?: {
|
|
47
|
+
onRedirecting: () => import("react").JSX.Element | null;
|
|
48
|
+
}) => import("react").FC<Props>;
|
|
49
|
+
enforceLogin: (loaderParams: {
|
|
50
|
+
request?: {
|
|
51
|
+
url?: string;
|
|
52
|
+
};
|
|
53
|
+
cause?: "preload" | string;
|
|
54
|
+
location?: {
|
|
55
|
+
href?: string;
|
|
56
|
+
};
|
|
57
|
+
}) => Promise<void | never>;
|
|
58
|
+
} : never : never);
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { createOidcReactApi_dependencyInjection } from "../react/react";
|
|
2
|
+
import { createMockOidc } from "./oidc";
|
|
3
|
+
/** @see: https://docs.oidc-spa.dev/v/v7/mock */
|
|
4
|
+
export function createMockReactOidc(params) {
|
|
5
|
+
return createOidcReactApi_dependencyInjection(params, createMockOidc);
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/mock/react.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,sCAAsC,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,cAAc,EAA+B,MAAM,QAAQ,CAAC;AAGrE,gDAAgD;AAChD,MAAM,UAAU,mBAAmB,CAGjC,MAA6E;IAC3E,OAAO,sCAAsC,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAC1E,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { type ReactNode, type ComponentType, type FC, type JSX } from "react";
|
|
2
|
+
import { type Oidc, type ParamsOfCreateOidc, OidcInitializationError } from "../core";
|
|
3
|
+
import type { ValueOrAsyncGetter } from "../tools/ValueOrAsyncGetter";
|
|
4
|
+
export type OidcReact<DecodedIdToken extends Record<string, unknown>> = OidcReact.NotLoggedIn | OidcReact.LoggedIn<DecodedIdToken>;
|
|
5
|
+
export declare namespace OidcReact {
|
|
6
|
+
type Common = Oidc.Common & {
|
|
7
|
+
useAutoLogoutWarningCountdown: (params: {
|
|
8
|
+
warningDurationSeconds: number;
|
|
9
|
+
}) => {
|
|
10
|
+
secondsLeft: number | undefined;
|
|
11
|
+
};
|
|
12
|
+
};
|
|
13
|
+
type NotLoggedIn = Common & {
|
|
14
|
+
isUserLoggedIn: false;
|
|
15
|
+
login: (params?: {
|
|
16
|
+
extraQueryParams?: Record<string, string | undefined>;
|
|
17
|
+
redirectUrl?: string;
|
|
18
|
+
transformUrlBeforeRedirect?: (url: string) => string;
|
|
19
|
+
doesCurrentHrefRequiresAuth?: boolean;
|
|
20
|
+
}) => Promise<never>;
|
|
21
|
+
initializationError: OidcInitializationError | undefined;
|
|
22
|
+
decodedIdToken?: never;
|
|
23
|
+
logout?: never;
|
|
24
|
+
renewTokens?: never;
|
|
25
|
+
goToAuthServer?: never;
|
|
26
|
+
backFromAuthServer?: never;
|
|
27
|
+
isNewBrowserSession?: never;
|
|
28
|
+
};
|
|
29
|
+
type LoggedIn<DecodedIdToken extends Record<string, unknown>> = Common & {
|
|
30
|
+
isUserLoggedIn: true;
|
|
31
|
+
decodedIdToken: DecodedIdToken;
|
|
32
|
+
logout: Oidc.LoggedIn["logout"];
|
|
33
|
+
renewTokens: Oidc.LoggedIn["renewTokens"];
|
|
34
|
+
login?: never;
|
|
35
|
+
initializationError?: never;
|
|
36
|
+
goToAuthServer: (params: {
|
|
37
|
+
extraQueryParams?: Record<string, string>;
|
|
38
|
+
redirectUrl?: string;
|
|
39
|
+
transformUrlBeforeRedirect?: (url: string) => string;
|
|
40
|
+
}) => Promise<never>;
|
|
41
|
+
backFromAuthServer: {
|
|
42
|
+
extraQueryParams: Record<string, string>;
|
|
43
|
+
result: Record<string, string>;
|
|
44
|
+
} | undefined;
|
|
45
|
+
isNewBrowserSession: boolean;
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
type OidcReactApi<DecodedIdToken extends Record<string, unknown>, AutoLogin extends boolean> = {
|
|
49
|
+
OidcProvider: AutoLogin extends true ? (props: {
|
|
50
|
+
fallback?: ReactNode;
|
|
51
|
+
ErrorFallback?: (props: {
|
|
52
|
+
initializationError: OidcInitializationError;
|
|
53
|
+
}) => ReactNode;
|
|
54
|
+
children: ReactNode;
|
|
55
|
+
}) => JSX.Element : (props: {
|
|
56
|
+
fallback?: ReactNode;
|
|
57
|
+
children: ReactNode;
|
|
58
|
+
}) => JSX.Element;
|
|
59
|
+
useOidc: AutoLogin extends true ? {
|
|
60
|
+
(params?: {
|
|
61
|
+
assert: "user logged in";
|
|
62
|
+
}): OidcReact.LoggedIn<DecodedIdToken>;
|
|
63
|
+
} : {
|
|
64
|
+
(params?: {
|
|
65
|
+
assert?: undefined;
|
|
66
|
+
}): OidcReact<DecodedIdToken>;
|
|
67
|
+
(params: {
|
|
68
|
+
assert: "user logged in";
|
|
69
|
+
}): OidcReact.LoggedIn<DecodedIdToken>;
|
|
70
|
+
(params: {
|
|
71
|
+
assert: "user not logged in";
|
|
72
|
+
}): OidcReact.NotLoggedIn;
|
|
73
|
+
};
|
|
74
|
+
getOidc: () => Promise<AutoLogin extends true ? Oidc.LoggedIn<DecodedIdToken> : Oidc<DecodedIdToken>>;
|
|
75
|
+
} & (AutoLogin extends true ? {} : {
|
|
76
|
+
withLoginEnforced: <Props extends Record<string, unknown>>(Component: ComponentType<Props>, params?: {
|
|
77
|
+
onRedirecting: () => JSX.Element | null;
|
|
78
|
+
}) => FC<Props>;
|
|
79
|
+
enforceLogin: (loaderParams: {
|
|
80
|
+
request?: {
|
|
81
|
+
url?: string;
|
|
82
|
+
};
|
|
83
|
+
cause?: "preload" | string;
|
|
84
|
+
location?: {
|
|
85
|
+
href?: string;
|
|
86
|
+
};
|
|
87
|
+
}) => Promise<void | never>;
|
|
88
|
+
});
|
|
89
|
+
export declare function createOidcReactApi_dependencyInjection<DecodedIdToken extends Record<string, unknown>, ParamsOfCreateOidc extends {
|
|
90
|
+
autoLogin?: boolean;
|
|
91
|
+
} & ({
|
|
92
|
+
decodedIdTokenSchema: {
|
|
93
|
+
parse: (data: unknown) => DecodedIdToken;
|
|
94
|
+
} | undefined;
|
|
95
|
+
} | {})>(paramsOrGetParams: ValueOrAsyncGetter<ParamsOfCreateOidc>, createOidc: (params: ParamsOfCreateOidc) => Promise<Oidc<DecodedIdToken>>): OidcReactApi<DecodedIdToken, ParamsOfCreateOidc extends {
|
|
96
|
+
autoLogin?: true | undefined;
|
|
97
|
+
} ? true : false>;
|
|
98
|
+
/** @see: https://docs.oidc-spa.dev/v/v7/usage#react-api */
|
|
99
|
+
export declare function createReactOidc<DecodedIdToken extends Record<string, unknown> = Oidc.Tokens.DecodedIdToken_base, AutoLogin extends boolean = false>(params: ValueOrAsyncGetter<ParamsOfCreateOidc<DecodedIdToken, AutoLogin>>): OidcReactApi<DecodedIdToken, ParamsOfCreateOidc<DecodedIdToken, AutoLogin> extends infer T ? T extends ParamsOfCreateOidc<DecodedIdToken, AutoLogin> ? T extends {
|
|
100
|
+
autoLogin?: true | undefined;
|
|
101
|
+
} ? true : false : never : never>;
|
|
102
|
+
export {};
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState, createContext, useContext } from "react";
|
|
3
|
+
import { createOidc, OidcInitializationError, handleOidcCallback } from "../core";
|
|
4
|
+
import { assert } from "../vendor/frontend/tsafe";
|
|
5
|
+
import { id } from "../vendor/frontend/tsafe";
|
|
6
|
+
import { Deferred } from "../tools/Deferred";
|
|
7
|
+
import { toFullyQualifiedUrl } from "../tools/toFullyQualifiedUrl";
|
|
8
|
+
{
|
|
9
|
+
assert();
|
|
10
|
+
}
|
|
11
|
+
export function createOidcReactApi_dependencyInjection(paramsOrGetParams, createOidc) {
|
|
12
|
+
const dReadyToCreate = new Deferred();
|
|
13
|
+
const oidcContext = createContext(undefined);
|
|
14
|
+
// NOTE: It can be InitializationError only if autoLogin is true
|
|
15
|
+
const prOidcOrInitializationError = (async () => {
|
|
16
|
+
// We're doing this here just for people that wouldn't have
|
|
17
|
+
// configured the early init in entrypoint.
|
|
18
|
+
{
|
|
19
|
+
const { isHandled } = handleOidcCallback();
|
|
20
|
+
if (isHandled) {
|
|
21
|
+
return new Promise(() => { });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const params = await (async () => {
|
|
25
|
+
if (typeof paramsOrGetParams === "function") {
|
|
26
|
+
const getParams = paramsOrGetParams;
|
|
27
|
+
await dReadyToCreate.pr;
|
|
28
|
+
const params = await getParams();
|
|
29
|
+
return params;
|
|
30
|
+
}
|
|
31
|
+
const params = paramsOrGetParams;
|
|
32
|
+
return params;
|
|
33
|
+
})();
|
|
34
|
+
let oidc;
|
|
35
|
+
try {
|
|
36
|
+
oidc = await createOidc(params);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
if (!(error instanceof OidcInitializationError)) {
|
|
40
|
+
throw error;
|
|
41
|
+
}
|
|
42
|
+
return error;
|
|
43
|
+
}
|
|
44
|
+
return oidc;
|
|
45
|
+
})();
|
|
46
|
+
let prOidcOrInitializationError_resolvedValue = undefined;
|
|
47
|
+
prOidcOrInitializationError.then(value => (prOidcOrInitializationError_resolvedValue = value));
|
|
48
|
+
function OidcProvider(props) {
|
|
49
|
+
const { fallback, ErrorFallback, children } = props;
|
|
50
|
+
const [oidcOrInitializationError, setOidcOrInitializationError] = useState(prOidcOrInitializationError_resolvedValue);
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
if (oidcOrInitializationError !== undefined) {
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
dReadyToCreate.resolve();
|
|
56
|
+
prOidcOrInitializationError.then(setOidcOrInitializationError);
|
|
57
|
+
}, []);
|
|
58
|
+
if (oidcOrInitializationError === undefined) {
|
|
59
|
+
return _jsx(_Fragment, { children: fallback === undefined ? null : fallback });
|
|
60
|
+
}
|
|
61
|
+
if (oidcOrInitializationError instanceof OidcInitializationError) {
|
|
62
|
+
const initializationError = oidcOrInitializationError;
|
|
63
|
+
return (_jsx(_Fragment, { children: ErrorFallback === undefined ? (_jsxs("h1", { style: { color: "red" }, children: ["An error occurred while initializing the OIDC client:\u00A0", initializationError.message] })) : (_jsx(ErrorFallback, { initializationError: initializationError })) }));
|
|
64
|
+
}
|
|
65
|
+
const oidc = oidcOrInitializationError;
|
|
66
|
+
return (_jsx(oidcContext.Provider, { value: { oidc, fallback: fallback ?? null }, children: children }));
|
|
67
|
+
}
|
|
68
|
+
const useAutoLogoutWarningCountdown = ({ warningDurationSeconds }) => {
|
|
69
|
+
const contextValue = useContext(oidcContext);
|
|
70
|
+
assert(contextValue !== undefined);
|
|
71
|
+
const { oidc } = contextValue;
|
|
72
|
+
const [secondsLeft, setSecondsLeft] = useState(undefined);
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
if (!oidc.isUserLoggedIn) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const { unsubscribeFromAutoLogoutCountdown } = oidc.subscribeToAutoLogoutCountdown(({ secondsLeft }) => setSecondsLeft(secondsLeft === undefined || secondsLeft > warningDurationSeconds
|
|
78
|
+
? undefined
|
|
79
|
+
: secondsLeft));
|
|
80
|
+
return () => {
|
|
81
|
+
unsubscribeFromAutoLogoutCountdown();
|
|
82
|
+
};
|
|
83
|
+
}, [warningDurationSeconds]);
|
|
84
|
+
return { secondsLeft };
|
|
85
|
+
};
|
|
86
|
+
function useOidc(params) {
|
|
87
|
+
const { assert: assert_params } = params ?? {};
|
|
88
|
+
const contextValue = useContext(oidcContext);
|
|
89
|
+
assert(contextValue !== undefined, "You must use useOidc inside the corresponding OidcProvider");
|
|
90
|
+
const { oidc } = contextValue;
|
|
91
|
+
check_assertion: {
|
|
92
|
+
if (assert_params === undefined) {
|
|
93
|
+
break check_assertion;
|
|
94
|
+
}
|
|
95
|
+
const getMessage = (v) => [
|
|
96
|
+
"There is a logic error in the application.",
|
|
97
|
+
`If this component is mounted the user is supposed ${v}.`,
|
|
98
|
+
"An explicit assertion was made in this sense."
|
|
99
|
+
].join(" ");
|
|
100
|
+
switch (assert_params) {
|
|
101
|
+
case "user logged in":
|
|
102
|
+
if (!oidc.isUserLoggedIn) {
|
|
103
|
+
throw new Error(getMessage("to be logged in but currently they arn't"));
|
|
104
|
+
}
|
|
105
|
+
break;
|
|
106
|
+
case "user not logged in":
|
|
107
|
+
if (oidc.isUserLoggedIn) {
|
|
108
|
+
throw new Error(getMessage("not to be logged in but currently they are"));
|
|
109
|
+
}
|
|
110
|
+
break;
|
|
111
|
+
default:
|
|
112
|
+
assert(false);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const [, reRenderIfDecodedIdTokenChanged] = useState(!oidc.isUserLoggedIn ? undefined : oidc.getDecodedIdToken());
|
|
116
|
+
useEffect(() => {
|
|
117
|
+
if (!oidc.isUserLoggedIn) {
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const { unsubscribe } = oidc.subscribeToTokensChange(() => reRenderIfDecodedIdTokenChanged(oidc.getDecodedIdToken()));
|
|
121
|
+
reRenderIfDecodedIdTokenChanged(oidc.getDecodedIdToken());
|
|
122
|
+
return unsubscribe;
|
|
123
|
+
}, []);
|
|
124
|
+
const common = {
|
|
125
|
+
params: oidc.params,
|
|
126
|
+
useAutoLogoutWarningCountdown
|
|
127
|
+
};
|
|
128
|
+
if (!oidc.isUserLoggedIn) {
|
|
129
|
+
return id({
|
|
130
|
+
...common,
|
|
131
|
+
isUserLoggedIn: false,
|
|
132
|
+
login: ({ doesCurrentHrefRequiresAuth = false, ...rest } = {}) => oidc.login({ doesCurrentHrefRequiresAuth, ...rest }),
|
|
133
|
+
initializationError: oidc.initializationError
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
const oidcReact = {
|
|
137
|
+
...common,
|
|
138
|
+
isUserLoggedIn: true,
|
|
139
|
+
decodedIdToken: oidc.getDecodedIdToken(),
|
|
140
|
+
logout: oidc.logout,
|
|
141
|
+
renewTokens: oidc.renewTokens,
|
|
142
|
+
goToAuthServer: oidc.goToAuthServer,
|
|
143
|
+
isNewBrowserSession: oidc.isNewBrowserSession,
|
|
144
|
+
backFromAuthServer: oidc.backFromAuthServer
|
|
145
|
+
};
|
|
146
|
+
return oidcReact;
|
|
147
|
+
}
|
|
148
|
+
function withLoginEnforced(Component, params) {
|
|
149
|
+
const { onRedirecting } = params ?? {};
|
|
150
|
+
function ComponentWithLoginEnforced(props) {
|
|
151
|
+
const contextValue = useContext(oidcContext);
|
|
152
|
+
assert(contextValue !== undefined, "094283");
|
|
153
|
+
const { oidc, fallback } = contextValue;
|
|
154
|
+
useEffect(() => {
|
|
155
|
+
if (oidc.isUserLoggedIn) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
oidc.login({ doesCurrentHrefRequiresAuth: true });
|
|
159
|
+
}, []);
|
|
160
|
+
if (!oidc.isUserLoggedIn) {
|
|
161
|
+
return onRedirecting === undefined ? fallback : onRedirecting();
|
|
162
|
+
}
|
|
163
|
+
return _jsx(Component, { ...props });
|
|
164
|
+
}
|
|
165
|
+
ComponentWithLoginEnforced.displayName = `${Component.displayName ?? Component.name ?? "Component"}WithLoginEnforced`;
|
|
166
|
+
return ComponentWithLoginEnforced;
|
|
167
|
+
}
|
|
168
|
+
async function enforceLogin(loaderParams) {
|
|
169
|
+
const { cause } = loaderParams;
|
|
170
|
+
const redirectUrl = (() => {
|
|
171
|
+
if (loaderParams.request?.url !== undefined) {
|
|
172
|
+
return toFullyQualifiedUrl({
|
|
173
|
+
urlish: loaderParams.request.url,
|
|
174
|
+
doAssertNoQueryParams: false
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
if (loaderParams.location?.href !== undefined) {
|
|
178
|
+
return toFullyQualifiedUrl({
|
|
179
|
+
urlish: loaderParams.location.href,
|
|
180
|
+
doAssertNoQueryParams: false
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
return location.href;
|
|
184
|
+
})();
|
|
185
|
+
const oidc = await getOidc();
|
|
186
|
+
if (!oidc.isUserLoggedIn) {
|
|
187
|
+
if (cause === "preload") {
|
|
188
|
+
throw new Error("oidc-spa: User is not yet logged in. This is an expected error, nothing to be addressed.");
|
|
189
|
+
}
|
|
190
|
+
const doesCurrentHrefRequiresAuth = location.href.replace(/\/$/, "") === redirectUrl.replace(/\/$/, "");
|
|
191
|
+
await oidc.login({
|
|
192
|
+
redirectUrl,
|
|
193
|
+
doesCurrentHrefRequiresAuth
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
async function getOidc() {
|
|
198
|
+
dReadyToCreate.resolve();
|
|
199
|
+
const oidcOrInitializationError = await prOidcOrInitializationError;
|
|
200
|
+
if (oidcOrInitializationError instanceof OidcInitializationError) {
|
|
201
|
+
const error = oidcOrInitializationError;
|
|
202
|
+
throw error;
|
|
203
|
+
}
|
|
204
|
+
const oidc = oidcOrInitializationError;
|
|
205
|
+
return oidc;
|
|
206
|
+
}
|
|
207
|
+
const oidcReact = {
|
|
208
|
+
OidcProvider,
|
|
209
|
+
useOidc: useOidc,
|
|
210
|
+
getOidc,
|
|
211
|
+
withLoginEnforced,
|
|
212
|
+
enforceLogin
|
|
213
|
+
};
|
|
214
|
+
// @ts-expect-error: We know what we are doing
|
|
215
|
+
return oidcReact;
|
|
216
|
+
}
|
|
217
|
+
/** @see: https://docs.oidc-spa.dev/v/v7/usage#react-api */
|
|
218
|
+
export function createReactOidc(params) {
|
|
219
|
+
return createOidcReactApi_dependencyInjection(params, createOidc);
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=react.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react.js","sourceRoot":"","sources":["../../../src/react/react.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare class Deferred<T> {
|
|
2
|
+
readonly pr: Promise<T>;
|
|
3
|
+
/** NOTE: Does not need to be called bound to instance*/
|
|
4
|
+
readonly resolve: (value: T) => void;
|
|
5
|
+
readonly reject: (error: any) => void;
|
|
6
|
+
constructor();
|
|
7
|
+
readonly isPending: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare namespace Deferred {
|
|
10
|
+
type Unpack<T extends Deferred<any>> = T extends Deferred<infer U> ? U : never;
|
|
11
|
+
}
|
|
12
|
+
export declare class VoidDeferred extends Deferred<undefined> {
|
|
13
|
+
readonly resolve: () => void;
|
|
14
|
+
}
|