@thunderid/react 0.3.0 → 0.3.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/dist/ThunderIDReactClient.d.ts +4 -4
- package/dist/ThunderIDReactClient.d.ts.map +1 -1
- package/dist/ThunderIDReactClient.js +6 -6
- package/dist/ThunderIDReactClient.js.map +1 -1
- package/dist/cjs/ThunderIDReactClient.cjs +5 -5
- package/dist/cjs/ThunderIDReactClient.cjs.map +1 -1
- package/dist/cjs/components/actions/SignInButton/SignInButton.cjs.map +1 -1
- package/dist/cjs/components/adapters/Consent.cjs.map +1 -1
- package/dist/cjs/components/adapters/ConsentCheckboxList.cjs +1 -1
- package/dist/cjs/components/adapters/ConsentCheckboxList.cjs.map +1 -1
- package/dist/cjs/components/auth/Callback/Callback.cjs +1 -1
- package/dist/cjs/components/auth/Callback/Callback.cjs.map +1 -1
- package/dist/cjs/components/auth/Callback/TokenCallback.cjs +3 -3
- package/dist/cjs/components/auth/Callback/TokenCallback.cjs.map +1 -1
- package/dist/cjs/components/factories/FieldFactory.cjs +2 -2
- package/dist/cjs/components/factories/FieldFactory.cjs.map +1 -1
- package/dist/cjs/components/presentation/CreateOrganization/BaseCreateOrganization.cjs +1 -1
- package/dist/cjs/components/presentation/OrganizationProfile/BaseOrganizationProfile.cjs +1 -1
- package/dist/cjs/components/presentation/UserProfile/BaseUserProfile.cjs +3 -3
- package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.cjs → AcceptInvite.cjs} +2 -2
- package/dist/cjs/components/presentation/auth/AcceptInvite/AcceptInvite.cjs.map +1 -0
- package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.cjs → BaseAcceptInvite.cjs} +47 -18
- package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.cjs.map +1 -0
- package/dist/cjs/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.cjs → BaseAcceptInvite.styles.cjs} +2 -2
- package/dist/cjs/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.cjs.map +1 -0
- package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs +50 -32
- package/dist/cjs/components/presentation/auth/AuthOptionFactory.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/InviteUser/{v2/BaseInviteUser.cjs → BaseInviteUser.cjs} +44 -15
- package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.cjs.map +1 -0
- package/dist/cjs/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.cjs → BaseInviteUser.styles.cjs} +2 -2
- package/dist/cjs/components/presentation/auth/InviteUser/BaseInviteUser.styles.cjs.map +1 -0
- package/dist/cjs/components/presentation/auth/InviteUser/{v2/InviteUser.cjs → InviteUser.cjs} +3 -3
- package/dist/cjs/components/presentation/auth/InviteUser/InviteUser.cjs.map +1 -0
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.cjs → OrganizationUnitPicker.cjs} +3 -3
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.cjs.map +1 -0
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.styles.cjs → OrganizationUnitPicker.styles.cjs} +2 -2
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.cjs.map +1 -0
- package/dist/cjs/components/presentation/auth/Recovery/BaseRecovery.cjs +389 -8
- package/dist/cjs/components/presentation/auth/Recovery/BaseRecovery.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/Recovery/Recovery.cjs +51 -22
- package/dist/cjs/components/presentation/auth/Recovery/Recovery.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/SignIn/BaseSignIn.cjs +346 -8
- package/dist/cjs/components/presentation/auth/SignIn/BaseSignIn.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/SignIn/SignIn.cjs +547 -36
- package/dist/cjs/components/presentation/auth/SignIn/SignIn.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/SignUp/BaseSignUp.cjs +691 -8
- package/dist/cjs/components/presentation/auth/SignUp/BaseSignUp.cjs.map +1 -1
- package/dist/cjs/components/presentation/auth/SignUp/SignUp.cjs +66 -76
- package/dist/cjs/components/presentation/auth/SignUp/SignUp.cjs.map +1 -1
- package/dist/cjs/components/primitives/Alert/Alert.cjs +1 -1
- package/dist/cjs/components/primitives/Checkbox/Checkbox.cjs +1 -1
- package/dist/cjs/components/primitives/FormControl/FormControl.cjs +1 -1
- package/dist/cjs/components/primitives/Toggle/Toggle.cjs +1 -1
- package/dist/cjs/contexts/ComponentRenderer/ComponentRendererContext.cjs.map +1 -1
- package/dist/cjs/contexts/FlowMeta/FlowMetaProvider.cjs +5 -7
- package/dist/cjs/contexts/FlowMeta/FlowMetaProvider.cjs.map +1 -1
- package/dist/cjs/contexts/Theme/ThemeProvider.cjs +76 -37
- package/dist/cjs/contexts/Theme/ThemeProvider.cjs.map +1 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs +0 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDContext.cjs.map +1 -1
- package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs +0 -3
- package/dist/cjs/contexts/ThunderID/ThunderIDProvider.cjs.map +1 -1
- package/dist/cjs/hooks/{v2/useOAuthCallback.cjs → useOAuthCallback.cjs} +2 -2
- package/dist/cjs/hooks/useOAuthCallback.cjs.map +1 -0
- package/dist/cjs/index.cjs +47 -50
- package/dist/cjs/utils/{v2/buildThemeConfigFromFlowMeta.cjs → buildThemeConfigFromFlowMeta.cjs} +1 -1
- package/dist/cjs/utils/buildThemeConfigFromFlowMeta.cjs.map +1 -0
- package/dist/cjs/utils/{v2/flowTransformer.cjs → flowTransformer.cjs} +1 -1
- package/dist/cjs/utils/flowTransformer.cjs.map +1 -0
- package/dist/cjs/utils/{v2/getAuthComponentHeadings.cjs → getAuthComponentHeadings.cjs} +1 -1
- package/dist/cjs/utils/getAuthComponentHeadings.cjs.map +1 -0
- package/dist/cjs/utils/{v2/passkey.cjs → passkey.cjs} +2 -2
- package/dist/cjs/utils/passkey.cjs.map +1 -0
- package/dist/cjs/utils/{v2/resolveTranslationsInArray.cjs → resolveTranslationsInArray.cjs} +1 -1
- package/dist/cjs/utils/resolveTranslationsInArray.cjs.map +1 -0
- package/dist/cjs/utils/{v2/resolveTranslationsInObject.cjs → resolveTranslationsInObject.cjs} +2 -2
- package/dist/cjs/utils/resolveTranslationsInObject.cjs.map +1 -0
- package/dist/components/actions/SignInButton/SignInButton.d.ts.map +1 -1
- package/dist/components/actions/SignInButton/SignInButton.js.map +1 -1
- package/dist/components/adapters/Consent.d.ts +1 -1
- package/dist/components/adapters/Consent.d.ts.map +1 -1
- package/dist/components/adapters/Consent.js.map +1 -1
- package/dist/components/adapters/ConsentCheckboxList.d.ts +1 -1
- package/dist/components/adapters/ConsentCheckboxList.d.ts.map +1 -1
- package/dist/components/adapters/ConsentCheckboxList.js +1 -1
- package/dist/components/adapters/ConsentCheckboxList.js.map +1 -1
- package/dist/components/auth/Callback/Callback.d.ts +1 -1
- package/dist/components/auth/Callback/Callback.js +1 -1
- package/dist/components/auth/Callback/Callback.js.map +1 -1
- package/dist/components/auth/Callback/TokenCallback.js +4 -4
- package/dist/components/auth/Callback/TokenCallback.js.map +1 -1
- package/dist/components/factories/FieldFactory.d.ts +2 -2
- package/dist/components/factories/FieldFactory.js +2 -2
- package/dist/components/factories/FieldFactory.js.map +1 -1
- package/dist/components/presentation/CreateOrganization/BaseCreateOrganization.js +1 -1
- package/dist/components/presentation/OrganizationProfile/BaseOrganizationProfile.js +1 -1
- package/dist/components/presentation/UserProfile/BaseUserProfile.js +3 -3
- package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.d.ts.map +1 -0
- package/dist/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.js → AcceptInvite.js} +1 -1
- package/dist/components/presentation/auth/AcceptInvite/AcceptInvite.js.map +1 -0
- package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.d.ts → BaseAcceptInvite.d.ts} +3 -2
- package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.d.ts.map +1 -0
- package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.js → BaseAcceptInvite.js} +45 -17
- package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.js.map +1 -0
- package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.d.ts.map +1 -0
- package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.js → BaseAcceptInvite.styles.js} +1 -1
- package/dist/components/presentation/auth/AcceptInvite/BaseAcceptInvite.styles.js.map +1 -0
- package/dist/components/presentation/auth/AcceptInvite/index.d.ts +4 -4
- package/dist/components/presentation/auth/AcceptInvite/index.d.ts.map +1 -1
- package/dist/components/presentation/auth/AuthOptionFactory.d.ts +1 -1
- package/dist/components/presentation/auth/AuthOptionFactory.d.ts.map +1 -1
- package/dist/components/presentation/auth/AuthOptionFactory.js +51 -33
- package/dist/components/presentation/auth/AuthOptionFactory.js.map +1 -1
- package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.d.ts → BaseInviteUser.d.ts} +3 -2
- package/dist/components/presentation/auth/InviteUser/BaseInviteUser.d.ts.map +1 -0
- package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.js → BaseInviteUser.js} +44 -15
- package/dist/components/presentation/auth/InviteUser/BaseInviteUser.js.map +1 -0
- package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.d.ts.map +1 -0
- package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.js → BaseInviteUser.styles.js} +1 -1
- package/dist/components/presentation/auth/InviteUser/BaseInviteUser.styles.js.map +1 -0
- package/dist/components/presentation/auth/InviteUser/InviteUser.d.ts.map +1 -0
- package/dist/components/presentation/auth/InviteUser/{v2/InviteUser.js → InviteUser.js} +2 -2
- package/dist/components/presentation/auth/InviteUser/InviteUser.js.map +1 -0
- package/dist/components/presentation/auth/InviteUser/index.d.ts +4 -4
- package/dist/components/presentation/auth/InviteUser/index.d.ts.map +1 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.d.ts.map +1 -0
- package/dist/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.js → OrganizationUnitPicker.js} +2 -2
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.js.map +1 -0
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.d.ts.map +1 -0
- package/dist/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.styles.js → OrganizationUnitPicker.styles.js} +1 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/OrganizationUnitPicker.styles.js.map +1 -0
- package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts +2 -2
- package/dist/components/presentation/auth/OrganizationUnitPicker/index.d.ts.map +1 -1
- package/dist/components/presentation/auth/Recovery/BaseRecovery.d.ts +63 -4
- package/dist/components/presentation/auth/Recovery/BaseRecovery.d.ts.map +1 -1
- package/dist/components/presentation/auth/Recovery/BaseRecovery.js +389 -10
- package/dist/components/presentation/auth/Recovery/BaseRecovery.js.map +1 -1
- package/dist/components/presentation/auth/Recovery/Recovery.d.ts +21 -22
- package/dist/components/presentation/auth/Recovery/Recovery.d.ts.map +1 -1
- package/dist/components/presentation/auth/Recovery/Recovery.js +51 -23
- package/dist/components/presentation/auth/Recovery/Recovery.js.map +1 -1
- package/dist/components/presentation/auth/SignIn/BaseSignIn.d.ts +213 -6
- package/dist/components/presentation/auth/SignIn/BaseSignIn.d.ts.map +1 -1
- package/dist/components/presentation/auth/SignIn/BaseSignIn.js +346 -10
- package/dist/components/presentation/auth/SignIn/BaseSignIn.js.map +1 -1
- package/dist/components/presentation/auth/SignIn/SignIn.d.ts +122 -13
- package/dist/components/presentation/auth/SignIn/SignIn.d.ts.map +1 -1
- package/dist/components/presentation/auth/SignIn/SignIn.js +548 -38
- package/dist/components/presentation/auth/SignIn/SignIn.js.map +1 -1
- package/dist/components/presentation/auth/SignUp/BaseSignUp.d.ts +164 -6
- package/dist/components/presentation/auth/SignUp/BaseSignUp.d.ts.map +1 -1
- package/dist/components/presentation/auth/SignUp/BaseSignUp.js +691 -10
- package/dist/components/presentation/auth/SignUp/BaseSignUp.js.map +1 -1
- package/dist/components/presentation/auth/SignUp/SignUp.d.ts +15 -74
- package/dist/components/presentation/auth/SignUp/SignUp.d.ts.map +1 -1
- package/dist/components/presentation/auth/SignUp/SignUp.js +67 -77
- package/dist/components/presentation/auth/SignUp/SignUp.js.map +1 -1
- package/dist/components/primitives/Alert/Alert.js +1 -1
- package/dist/components/primitives/Checkbox/Checkbox.js +1 -1
- package/dist/components/primitives/FormControl/FormControl.js +1 -1
- package/dist/components/primitives/Toggle/Toggle.js +1 -1
- package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts +1 -1
- package/dist/contexts/ComponentRenderer/ComponentRendererContext.d.ts.map +1 -1
- package/dist/contexts/ComponentRenderer/ComponentRendererContext.js.map +1 -1
- package/dist/contexts/FlowMeta/FlowMetaProvider.d.ts.map +1 -1
- package/dist/contexts/FlowMeta/FlowMetaProvider.js +6 -8
- package/dist/contexts/FlowMeta/FlowMetaProvider.js.map +1 -1
- package/dist/contexts/Theme/ThemeProvider.d.ts +19 -39
- package/dist/contexts/Theme/ThemeProvider.d.ts.map +1 -1
- package/dist/contexts/Theme/ThemeProvider.js +76 -38
- package/dist/contexts/Theme/ThemeProvider.js.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDContext.d.ts +1 -2
- package/dist/contexts/ThunderID/ThunderIDContext.d.ts.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDContext.js +0 -1
- package/dist/contexts/ThunderID/ThunderIDContext.js.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDProvider.d.ts.map +1 -1
- package/dist/contexts/ThunderID/ThunderIDProvider.js +1 -4
- package/dist/contexts/ThunderID/ThunderIDProvider.js.map +1 -1
- package/dist/hooks/useOAuthCallback.d.ts.map +1 -0
- package/dist/hooks/{v2/useOAuthCallback.js → useOAuthCallback.js} +1 -1
- package/dist/hooks/useOAuthCallback.js.map +1 -0
- package/dist/index.d.ts +3 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -35
- package/dist/utils/buildThemeConfigFromFlowMeta.d.ts.map +1 -0
- package/dist/utils/{v2/buildThemeConfigFromFlowMeta.js → buildThemeConfigFromFlowMeta.js} +1 -1
- package/dist/utils/buildThemeConfigFromFlowMeta.js.map +1 -0
- package/dist/utils/{v2/flowTransformer.d.ts → flowTransformer.d.ts} +3 -3
- package/dist/utils/flowTransformer.d.ts.map +1 -0
- package/dist/utils/{v2/flowTransformer.js → flowTransformer.js} +1 -1
- package/dist/utils/flowTransformer.js.map +1 -0
- package/dist/utils/{v2/getAuthComponentHeadings.d.ts → getAuthComponentHeadings.d.ts} +1 -1
- package/dist/utils/getAuthComponentHeadings.d.ts.map +1 -0
- package/dist/utils/{v2/getAuthComponentHeadings.js → getAuthComponentHeadings.js} +1 -1
- package/dist/utils/getAuthComponentHeadings.js.map +1 -0
- package/dist/utils/passkey.d.ts.map +1 -0
- package/dist/utils/{v2/passkey.js → passkey.js} +1 -1
- package/dist/utils/passkey.js.map +1 -0
- package/dist/utils/{v2/resolveTranslationsInArray.d.ts → resolveTranslationsInArray.d.ts} +1 -1
- package/dist/utils/resolveTranslationsInArray.d.ts.map +1 -0
- package/dist/utils/{v2/resolveTranslationsInArray.js → resolveTranslationsInArray.js} +1 -1
- package/dist/utils/resolveTranslationsInArray.js.map +1 -0
- package/dist/utils/{v2/resolveTranslationsInObject.d.ts → resolveTranslationsInObject.d.ts} +1 -1
- package/dist/utils/resolveTranslationsInObject.d.ts.map +1 -0
- package/dist/utils/{v2/resolveTranslationsInObject.js → resolveTranslationsInObject.js} +1 -1
- package/dist/utils/resolveTranslationsInObject.js.map +1 -0
- package/package.json +10 -10
- package/dist/cjs/components/adapters/CheckboxInput.cjs +0 -30
- package/dist/cjs/components/adapters/CheckboxInput.cjs.map +0 -1
- package/dist/cjs/components/adapters/DateInput.cjs +0 -30
- package/dist/cjs/components/adapters/DateInput.cjs.map +0 -1
- package/dist/cjs/components/adapters/DividerComponent.cjs +0 -24
- package/dist/cjs/components/adapters/DividerComponent.cjs.map +0 -1
- package/dist/cjs/components/adapters/EmailInput.cjs +0 -30
- package/dist/cjs/components/adapters/EmailInput.cjs.map +0 -1
- package/dist/cjs/components/adapters/FormContainer.cjs +0 -36
- package/dist/cjs/components/adapters/FormContainer.cjs.map +0 -1
- package/dist/cjs/components/adapters/NumberInput.cjs +0 -30
- package/dist/cjs/components/adapters/NumberInput.cjs.map +0 -1
- package/dist/cjs/components/adapters/PasswordInput.cjs +0 -52
- package/dist/cjs/components/adapters/PasswordInput.cjs.map +0 -1
- package/dist/cjs/components/adapters/SelectInput.cjs +0 -36
- package/dist/cjs/components/adapters/SelectInput.cjs.map +0 -1
- package/dist/cjs/components/adapters/SubmitButton.cjs +0 -61
- package/dist/cjs/components/adapters/SubmitButton.cjs.map +0 -1
- package/dist/cjs/components/adapters/TelephoneInput.cjs +0 -32
- package/dist/cjs/components/adapters/TelephoneInput.cjs.map +0 -1
- package/dist/cjs/components/adapters/TextInput.cjs +0 -30
- package/dist/cjs/components/adapters/TextInput.cjs.map +0 -1
- package/dist/cjs/components/adapters/Typography.cjs +0 -60
- package/dist/cjs/components/adapters/Typography.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/AcceptInvite/v2/AcceptInvite.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/InviteUser/v2/BaseInviteUser.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/InviteUser/v2/InviteUser.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/Recovery/v1/BaseRecovery.cjs +0 -293
- package/dist/cjs/components/presentation/auth/Recovery/v1/BaseRecovery.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/Recovery/v1/Recovery.cjs +0 -43
- package/dist/cjs/components/presentation/auth/Recovery/v1/Recovery.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.cjs +0 -163
- package/dist/cjs/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/Recovery/v2/BaseRecovery.cjs +0 -378
- package/dist/cjs/components/presentation/auth/Recovery/v2/BaseRecovery.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/Recovery/v2/Recovery.cjs +0 -78
- package/dist/cjs/components/presentation/auth/Recovery/v2/Recovery.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/BaseSignIn.cjs +0 -734
- package/dist/cjs/components/presentation/auth/SignIn/v1/BaseSignIn.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/EmailOtp.cjs +0 -68
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/EmailOtp.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/IdentifierFirst.cjs +0 -59
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/IdentifierFirst.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/MultiOptionButton.cjs +0 -139
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/MultiOptionButton.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.cjs +0 -147
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/SmsOtp.cjs +0 -68
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/SmsOtp.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/SocialButton.cjs +0 -38
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/SocialButton.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/Totp.cjs +0 -68
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/Totp.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/UsernamePassword.cjs +0 -60
- package/dist/cjs/components/presentation/auth/SignIn/v1/options/UsernamePassword.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v2/BaseSignIn.cjs +0 -330
- package/dist/cjs/components/presentation/auth/SignIn/v2/BaseSignIn.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignIn/v2/SignIn.cjs +0 -560
- package/dist/cjs/components/presentation/auth/SignIn/v2/SignIn.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignUp/v1/BaseSignUp.cjs +0 -451
- package/dist/cjs/components/presentation/auth/SignUp/v1/BaseSignUp.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignUp/v1/SignUp.cjs +0 -54
- package/dist/cjs/components/presentation/auth/SignUp/v1/SignUp.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignUp/v1/SignUpOptionFactory.cjs +0 -164
- package/dist/cjs/components/presentation/auth/SignUp/v1/SignUpOptionFactory.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignUp/v2/BaseSignUp.cjs +0 -679
- package/dist/cjs/components/presentation/auth/SignUp/v2/BaseSignUp.cjs.map +0 -1
- package/dist/cjs/components/presentation/auth/SignUp/v2/SignUp.cjs +0 -80
- package/dist/cjs/components/presentation/auth/SignUp/v2/SignUp.cjs.map +0 -1
- package/dist/cjs/contexts/Theme/v1/ThemeProvider.cjs +0 -190
- package/dist/cjs/contexts/Theme/v1/ThemeProvider.cjs.map +0 -1
- package/dist/cjs/contexts/Theme/v2/ThemeProvider.cjs +0 -108
- package/dist/cjs/contexts/Theme/v2/ThemeProvider.cjs.map +0 -1
- package/dist/cjs/hooks/v2/useOAuthCallback.cjs.map +0 -1
- package/dist/cjs/utils/v2/buildThemeConfigFromFlowMeta.cjs.map +0 -1
- package/dist/cjs/utils/v2/flowTransformer.cjs.map +0 -1
- package/dist/cjs/utils/v2/getAuthComponentHeadings.cjs.map +0 -1
- package/dist/cjs/utils/v2/passkey.cjs.map +0 -1
- package/dist/cjs/utils/v2/resolveTranslationsInArray.cjs.map +0 -1
- package/dist/cjs/utils/v2/resolveTranslationsInObject.cjs.map +0 -1
- package/dist/components/adapters/CheckboxInput.d.ts +0 -25
- package/dist/components/adapters/CheckboxInput.d.ts.map +0 -1
- package/dist/components/adapters/CheckboxInput.js +0 -28
- package/dist/components/adapters/CheckboxInput.js.map +0 -1
- package/dist/components/adapters/DateInput.d.ts +0 -25
- package/dist/components/adapters/DateInput.d.ts.map +0 -1
- package/dist/components/adapters/DateInput.js +0 -28
- package/dist/components/adapters/DateInput.js.map +0 -1
- package/dist/components/adapters/DividerComponent.d.ts +0 -25
- package/dist/components/adapters/DividerComponent.d.ts.map +0 -1
- package/dist/components/adapters/DividerComponent.js +0 -22
- package/dist/components/adapters/DividerComponent.js.map +0 -1
- package/dist/components/adapters/EmailInput.d.ts +0 -25
- package/dist/components/adapters/EmailInput.d.ts.map +0 -1
- package/dist/components/adapters/EmailInput.js +0 -28
- package/dist/components/adapters/EmailInput.js.map +0 -1
- package/dist/components/adapters/FormContainer.d.ts +0 -25
- package/dist/components/adapters/FormContainer.d.ts.map +0 -1
- package/dist/components/adapters/FormContainer.js +0 -34
- package/dist/components/adapters/FormContainer.js.map +0 -1
- package/dist/components/adapters/NumberInput.d.ts +0 -25
- package/dist/components/adapters/NumberInput.d.ts.map +0 -1
- package/dist/components/adapters/NumberInput.js +0 -28
- package/dist/components/adapters/NumberInput.js.map +0 -1
- package/dist/components/adapters/PasswordInput.d.ts +0 -25
- package/dist/components/adapters/PasswordInput.d.ts.map +0 -1
- package/dist/components/adapters/PasswordInput.js +0 -50
- package/dist/components/adapters/PasswordInput.js.map +0 -1
- package/dist/components/adapters/SelectInput.d.ts +0 -25
- package/dist/components/adapters/SelectInput.d.ts.map +0 -1
- package/dist/components/adapters/SelectInput.js +0 -34
- package/dist/components/adapters/SelectInput.js.map +0 -1
- package/dist/components/adapters/SocialButton.d.ts +0 -25
- package/dist/components/adapters/SocialButton.d.ts.map +0 -1
- package/dist/components/adapters/SubmitButton.d.ts +0 -25
- package/dist/components/adapters/SubmitButton.d.ts.map +0 -1
- package/dist/components/adapters/SubmitButton.js +0 -59
- package/dist/components/adapters/SubmitButton.js.map +0 -1
- package/dist/components/adapters/TelephoneInput.d.ts +0 -25
- package/dist/components/adapters/TelephoneInput.d.ts.map +0 -1
- package/dist/components/adapters/TelephoneInput.js +0 -30
- package/dist/components/adapters/TelephoneInput.js.map +0 -1
- package/dist/components/adapters/TextInput.d.ts +0 -25
- package/dist/components/adapters/TextInput.d.ts.map +0 -1
- package/dist/components/adapters/TextInput.js +0 -28
- package/dist/components/adapters/TextInput.js.map +0 -1
- package/dist/components/adapters/Typography.d.ts +0 -25
- package/dist/components/adapters/Typography.d.ts.map +0 -1
- package/dist/components/adapters/Typography.js +0 -58
- package/dist/components/adapters/Typography.js.map +0 -1
- package/dist/components/presentation/auth/AcceptInvite/v2/AcceptInvite.d.ts.map +0 -1
- package/dist/components/presentation/auth/AcceptInvite/v2/AcceptInvite.js.map +0 -1
- package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.d.ts.map +0 -1
- package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.js.map +0 -1
- package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.d.ts.map +0 -1
- package/dist/components/presentation/auth/AcceptInvite/v2/BaseAcceptInvite.styles.js.map +0 -1
- package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.d.ts.map +0 -1
- package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.js.map +0 -1
- package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.d.ts.map +0 -1
- package/dist/components/presentation/auth/InviteUser/v2/BaseInviteUser.styles.js.map +0 -1
- package/dist/components/presentation/auth/InviteUser/v2/InviteUser.d.ts.map +0 -1
- package/dist/components/presentation/auth/InviteUser/v2/InviteUser.js.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.d.ts.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.js.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.d.ts.map +0 -1
- package/dist/components/presentation/auth/OrganizationUnitPicker/v2/OrganizationUnitPicker.styles.js.map +0 -1
- package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.d.ts +0 -74
- package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.d.ts.map +0 -1
- package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.js +0 -288
- package/dist/components/presentation/auth/Recovery/v1/BaseRecovery.js.map +0 -1
- package/dist/components/presentation/auth/Recovery/v1/Recovery.d.ts +0 -26
- package/dist/components/presentation/auth/Recovery/v1/Recovery.d.ts.map +0 -1
- package/dist/components/presentation/auth/Recovery/v1/Recovery.js +0 -40
- package/dist/components/presentation/auth/Recovery/v1/Recovery.js.map +0 -1
- package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.d.ts +0 -46
- package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.d.ts.map +0 -1
- package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.js +0 -160
- package/dist/components/presentation/auth/Recovery/v1/RecoveryOptionFactory.js.map +0 -1
- package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.d.ts +0 -83
- package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.d.ts.map +0 -1
- package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.js +0 -373
- package/dist/components/presentation/auth/Recovery/v2/BaseRecovery.js.map +0 -1
- package/dist/components/presentation/auth/Recovery/v2/Recovery.d.ts +0 -56
- package/dist/components/presentation/auth/Recovery/v2/Recovery.d.ts.map +0 -1
- package/dist/components/presentation/auth/Recovery/v2/Recovery.js +0 -74
- package/dist/components/presentation/auth/Recovery/v2/Recovery.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.d.ts +0 -131
- package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.js +0 -729
- package/dist/components/presentation/auth/SignIn/v1/BaseSignIn.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.d.ts +0 -26
- package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.js +0 -64
- package/dist/components/presentation/auth/SignIn/v1/options/EmailOtp.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.d.ts +0 -26
- package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.js +0 -55
- package/dist/components/presentation/auth/SignIn/v1/options/IdentifierFirst.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.d.ts +0 -27
- package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.js +0 -136
- package/dist/components/presentation/auth/SignIn/v1/options/MultiOptionButton.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.d.ts +0 -77
- package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.js +0 -143
- package/dist/components/presentation/auth/SignIn/v1/options/SignInOptionFactory.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.d.ts +0 -26
- package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.js +0 -64
- package/dist/components/presentation/auth/SignIn/v1/options/SmsOtp.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.d.ts +0 -26
- package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.js +0 -36
- package/dist/components/presentation/auth/SignIn/v1/options/SocialButton.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/Totp.d.ts +0 -26
- package/dist/components/presentation/auth/SignIn/v1/options/Totp.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/Totp.js +0 -64
- package/dist/components/presentation/auth/SignIn/v1/options/Totp.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.d.ts +0 -26
- package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.js +0 -56
- package/dist/components/presentation/auth/SignIn/v1/options/UsernamePassword.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v1/types.d.ts +0 -125
- package/dist/components/presentation/auth/SignIn/v1/types.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.d.ts +0 -222
- package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.js +0 -325
- package/dist/components/presentation/auth/SignIn/v2/BaseSignIn.js.map +0 -1
- package/dist/components/presentation/auth/SignIn/v2/SignIn.d.ts +0 -165
- package/dist/components/presentation/auth/SignIn/v2/SignIn.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignIn/v2/SignIn.js +0 -556
- package/dist/components/presentation/auth/SignIn/v2/SignIn.js.map +0 -1
- package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.d.ts +0 -174
- package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.js +0 -446
- package/dist/components/presentation/auth/SignUp/v1/BaseSignUp.js.map +0 -1
- package/dist/components/presentation/auth/SignUp/v1/SignUp.d.ts +0 -39
- package/dist/components/presentation/auth/SignUp/v1/SignUp.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignUp/v1/SignUp.js +0 -51
- package/dist/components/presentation/auth/SignUp/v1/SignUp.js.map +0 -1
- package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.d.ts +0 -46
- package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.js +0 -160
- package/dist/components/presentation/auth/SignUp/v1/SignUpOptionFactory.js.map +0 -1
- package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.d.ts +0 -186
- package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.js +0 -674
- package/dist/components/presentation/auth/SignUp/v2/BaseSignUp.js.map +0 -1
- package/dist/components/presentation/auth/SignUp/v2/SignUp.d.ts +0 -39
- package/dist/components/presentation/auth/SignUp/v2/SignUp.d.ts.map +0 -1
- package/dist/components/presentation/auth/SignUp/v2/SignUp.js +0 -77
- package/dist/components/presentation/auth/SignUp/v2/SignUp.js.map +0 -1
- package/dist/contexts/Theme/v1/ThemeProvider.d.ts +0 -89
- package/dist/contexts/Theme/v1/ThemeProvider.d.ts.map +0 -1
- package/dist/contexts/Theme/v1/ThemeProvider.js +0 -186
- package/dist/contexts/Theme/v1/ThemeProvider.js.map +0 -1
- package/dist/contexts/Theme/v2/ThemeProvider.d.ts +0 -58
- package/dist/contexts/Theme/v2/ThemeProvider.d.ts.map +0 -1
- package/dist/contexts/Theme/v2/ThemeProvider.js +0 -104
- package/dist/contexts/Theme/v2/ThemeProvider.js.map +0 -1
- package/dist/hooks/v2/useOAuthCallback.d.ts.map +0 -1
- package/dist/hooks/v2/useOAuthCallback.js.map +0 -1
- package/dist/utils/v2/buildThemeConfigFromFlowMeta.d.ts.map +0 -1
- package/dist/utils/v2/buildThemeConfigFromFlowMeta.js.map +0 -1
- package/dist/utils/v2/flowTransformer.d.ts.map +0 -1
- package/dist/utils/v2/flowTransformer.js.map +0 -1
- package/dist/utils/v2/getAuthComponentHeadings.d.ts.map +0 -1
- package/dist/utils/v2/getAuthComponentHeadings.js.map +0 -1
- package/dist/utils/v2/passkey.d.ts.map +0 -1
- package/dist/utils/v2/passkey.js.map +0 -1
- package/dist/utils/v2/resolveTranslationsInArray.d.ts.map +0 -1
- package/dist/utils/v2/resolveTranslationsInArray.js.map +0 -1
- package/dist/utils/v2/resolveTranslationsInObject.d.ts.map +0 -1
- package/dist/utils/v2/resolveTranslationsInObject.js.map +0 -1
- /package/dist/components/presentation/auth/AcceptInvite/{v2/AcceptInvite.d.ts → AcceptInvite.d.ts} +0 -0
- /package/dist/components/presentation/auth/AcceptInvite/{v2/BaseAcceptInvite.styles.d.ts → BaseAcceptInvite.styles.d.ts} +0 -0
- /package/dist/components/presentation/auth/InviteUser/{v2/BaseInviteUser.styles.d.ts → BaseInviteUser.styles.d.ts} +0 -0
- /package/dist/components/presentation/auth/InviteUser/{v2/InviteUser.d.ts → InviteUser.d.ts} +0 -0
- /package/dist/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.d.ts → OrganizationUnitPicker.d.ts} +0 -0
- /package/dist/components/presentation/auth/OrganizationUnitPicker/{v2/OrganizationUnitPicker.styles.d.ts → OrganizationUnitPicker.styles.d.ts} +0 -0
- /package/dist/hooks/{v2/useOAuthCallback.d.ts → useOAuthCallback.d.ts} +0 -0
- /package/dist/utils/{v2/buildThemeConfigFromFlowMeta.d.ts → buildThemeConfigFromFlowMeta.d.ts} +0 -0
- /package/dist/utils/{v2/passkey.d.ts → passkey.d.ts} +0 -0
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
* specific language governing permissions and limitations
|
|
16
16
|
* under the License.
|
|
17
17
|
*/
|
|
18
|
-
import { ThunderIDBrowserClient, UserProfile, SignInOptions, User,
|
|
18
|
+
import { ThunderIDBrowserClient, UserProfile, SignInOptions, User, SignUpOptions, Organization, IdToken, AllOrganizationsApiResponse, TokenResponse, HttpRequestConfig, HttpResponse, TokenExchangeRequestConfig, EmbeddedSignInFlowResponse } from '@thunderid/browser';
|
|
19
19
|
import { ThunderIDReactConfig } from './models/config';
|
|
20
20
|
declare class ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {
|
|
21
21
|
private loadingState;
|
|
@@ -37,11 +37,11 @@ declare class ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDRea
|
|
|
37
37
|
isLoading(): boolean;
|
|
38
38
|
isSignedIn(): Promise<boolean>;
|
|
39
39
|
exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response>;
|
|
40
|
-
signIn(...args: any[]): Promise<User |
|
|
40
|
+
signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse>;
|
|
41
41
|
signInSilently(options?: SignInOptions): Promise<User | boolean>;
|
|
42
42
|
signUp(options?: SignUpOptions): Promise<void>;
|
|
43
|
-
signUp(payload:
|
|
44
|
-
recover(payload
|
|
43
|
+
signUp(payload: any): Promise<any>;
|
|
44
|
+
recover(payload?: any): Promise<any>;
|
|
45
45
|
getStorageManager(): any;
|
|
46
46
|
request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>>;
|
|
47
47
|
requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDReactClient.d.ts","sourceRoot":"","sources":["../src/ThunderIDReactClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,IAAI,EACJ,
|
|
1
|
+
{"version":3,"file":"ThunderIDReactClient.d.ts","sourceRoot":"","sources":["../src/ThunderIDReactClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EACL,sBAAsB,EACtB,WAAW,EACX,aAAa,EACb,IAAI,EACJ,aAAa,EAGb,YAAY,EACZ,OAAO,EAEP,2BAA2B,EAE3B,aAAa,EACb,iBAAiB,EACjB,YAAY,EACZ,0BAA0B,EAE1B,0BAA0B,EAK3B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAC,oBAAoB,EAAC,MAAM,iBAAiB,CAAC;AAErD,cAAM,oBAAoB,CAAC,CAAC,SAAS,oBAAoB,GAAG,oBAAoB,CAAE,SAAQ,sBAAsB,CAAC,CAAC,CAAC;IACjH,OAAO,CAAC,YAAY,CAAS;IAE7B,OAAO,CAAC,iBAAiB,CAAmC;gBAEhD,UAAU,SAAI;IAI1B,OAAO,CAAC,UAAU;YAIJ,WAAW;IAUhB,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC;IAmB1D,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,oBAAoB,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB/D,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAIxB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIvD,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAI7B,cAAc,IAAI,OAAO,CAAC,WAAW,CAAC;IAWtC,kBAAkB,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAsB1D,mBAAmB,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAoBxE,sBAAsB,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAoBtD,kBAAkB,CAAC,YAAY,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;IAyCvF,SAAS,IAAI,OAAO;IAId,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC;IAI9B,aAAa,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,aAAa,GAAG,QAAQ,CAAC;IAIpF,MAAM,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,GAAG,0BAA0B,CAAC;IAgFlE,cAAc,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;IAIhE,MAAM,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAC9C,MAAM,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA0DlC,OAAO,CAAC,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IASnC,iBAAiB,IAAI,GAAG;IAIlC,OAAO,CAAC,aAAa,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAItE,UAAU,CAAC,cAAc,CAAC,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;CAGrF;AAED,eAAe,oBAAoB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import getAllOrganizations_default from "./api/getAllOrganizations.js";
|
|
2
2
|
import getMeOrganizations_default from "./api/getMeOrganizations.js";
|
|
3
|
-
import {
|
|
3
|
+
import { EmbeddedSignInFlowStatus, EmbeddedSignUpFlowStatus, ThunderIDBrowserClient, ThunderIDRuntimeError, deriveOrganizationHandleFromBaseUrl, executeEmbeddedRecoveryFlow, executeEmbeddedSignInFlow, executeEmbeddedSignUpFlow, extractUserClaimsFromIdToken, isEmpty } from "@thunderid/browser";
|
|
4
4
|
|
|
5
5
|
//#region src/ThunderIDReactClient.ts
|
|
6
6
|
var ThunderIDReactClient = class extends ThunderIDBrowserClient {
|
|
@@ -147,13 +147,13 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
|
|
|
147
147
|
if (typeof arg1 === "object" && arg1 !== null && !isEmpty(arg1) && ("executionId" in arg1 || "applicationId" in arg1)) {
|
|
148
148
|
const authIdFromUrl = new URL(window.location.href).searchParams.get("authId") ?? "";
|
|
149
149
|
const authIdFromStorage = await this.getStorageManager().getHybridDataParameter("authId") ?? "";
|
|
150
|
-
const response = await
|
|
150
|
+
const response = await executeEmbeddedSignInFlow({
|
|
151
151
|
authId: authIdFromUrl || authIdFromStorage,
|
|
152
152
|
baseUrl: config?.baseUrl ?? "",
|
|
153
153
|
payload: arg1,
|
|
154
154
|
url: arg2?.url
|
|
155
155
|
});
|
|
156
|
-
if (response && typeof response === "object" && response.flowStatus ===
|
|
156
|
+
if (response && typeof response === "object" && response.flowStatus === EmbeddedSignInFlowStatus.Complete && response.assertion) {
|
|
157
157
|
const decodedAssertion = await this.decodeJwtToken(response.assertion);
|
|
158
158
|
const createdAt = decodedAssertion.iat ? decodedAssertion.iat * 1e3 : Date.now();
|
|
159
159
|
const expiresIn = decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;
|
|
@@ -183,7 +183,7 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
|
|
|
183
183
|
const authIdFromStorage = await this.getStorageManager().getHybridDataParameter("authId") ?? "";
|
|
184
184
|
const authId = authIdFromUrl || authIdFromStorage;
|
|
185
185
|
if (authIdFromUrl && !authIdFromStorage) await this.getStorageManager().setHybridDataParameter("authId", authIdFromUrl);
|
|
186
|
-
const response = await
|
|
186
|
+
const response = await executeEmbeddedSignUpFlow({
|
|
187
187
|
authId,
|
|
188
188
|
baseUrl,
|
|
189
189
|
payload: typeof firstArg === "object" && "flowType" in firstArg ? {
|
|
@@ -191,7 +191,7 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
|
|
|
191
191
|
verbose: true
|
|
192
192
|
} : firstArg
|
|
193
193
|
});
|
|
194
|
-
if (response && typeof response === "object" && response.flowStatus ===
|
|
194
|
+
if (response && typeof response === "object" && response.flowStatus === EmbeddedSignUpFlowStatus.Complete && response.assertion) {
|
|
195
195
|
const decodedAssertion = await this.decodeJwtToken(response.assertion);
|
|
196
196
|
const createdAt = decodedAssertion.iat ? decodedAssertion.iat * 1e3 : Date.now();
|
|
197
197
|
const expiresIn = decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;
|
|
@@ -208,7 +208,7 @@ var ThunderIDReactClient = class extends ThunderIDBrowserClient {
|
|
|
208
208
|
return response;
|
|
209
209
|
}
|
|
210
210
|
async recover(payload) {
|
|
211
|
-
return
|
|
211
|
+
return executeEmbeddedRecoveryFlow({
|
|
212
212
|
baseUrl: (await this.getStorageManager().getConfigData())?.baseUrl,
|
|
213
213
|
payload: {
|
|
214
214
|
...payload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDReactClient.js","names":["resolvedOrganizationHandle: string | undefined","isInitialized: boolean","claims: User","baseUrl: string","getMeOrganizations","getAllOrganizations","idToken: IdToken","sourceInstanceId: number | undefined","exchangeConfig: TokenExchangeRequestConfig","arg1: any","arg2: any","config: ThunderIDReactConfig | undefined","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponseV2","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","authId: string","response: any","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../src/ThunderIDReactClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n EmbeddedFlowExecuteResponse,\n SignUpOptions,\n EmbeddedFlowExecuteRequestPayload,\n ThunderIDRuntimeError,\n EmbeddedSignInFlowHandleRequestPayload,\n executeEmbeddedSignInFlowV2,\n Organization,\n IdToken,\n deriveOrganizationHandleFromBaseUrl,\n AllOrganizationsApiResponse,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponseV2,\n executeEmbeddedSignUpFlowV2,\n executeEmbeddedRecoveryFlowV2,\n EmbeddedSignInFlowStatusV2,\n EmbeddedSignUpFlowStatusV2,\n} from '@thunderid/browser';\nimport getAllOrganizations from './api/getAllOrganizations';\nimport getMeOrganizations from './api/getMeOrganizations';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n let resolvedOrganizationHandle: string | undefined = config?.organizationHandle;\n\n if (!resolvedOrganizationHandle) {\n resolvedOrganizationHandle = deriveOrganizationHandleFromBaseUrl(config?.baseUrl);\n }\n\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n organizationHandle: resolvedOrganizationHandle,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override async getMyOrganizations(options?: any): Promise<Organization[]> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getMeOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the user's associated organizations: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 'ThunderIDReactClient-getMyOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching associated organizations of the signed-in user.',\n );\n }\n }\n\n override async getAllOrganizations(options?: any): Promise<AllOrganizationsApiResponse> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getAllOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch all organizations: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getAllOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching all the organizations associated with the user.',\n );\n }\n }\n\n override async getCurrentOrganization(): Promise<Organization | null> {\n try {\n return await this.withLoading(async () => {\n const idToken: IdToken = await this.getDecodedIdToken();\n return {\n id: idToken?.org_id ?? '',\n name: idToken?.org_name ?? '',\n orgHandle: idToken?.org_handle ?? '',\n };\n });\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the current organization: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getCurrentOrganization-RuntimeError-001',\n 'react',\n 'An error occurred while fetching the current organization of the signed-in user.',\n );\n }\n }\n\n override async switchOrganization(organization: Organization): Promise<TokenResponse | Response> {\n return this.withLoading(async () => {\n try {\n const configData: any = await this.getStorageManager().getConfigData();\n const sourceInstanceId: number | undefined = configData?.organizationChain?.sourceInstanceId;\n\n if (!organization.id) {\n throw new ThunderIDRuntimeError(\n 'Organization ID is required for switching organizations',\n 'react-ThunderIDReactClient-SwitchOrganizationError-001',\n 'react',\n 'The organization object must contain a valid ID to perform the organization switch.',\n );\n }\n\n const exchangeConfig: TokenExchangeRequestConfig = {\n attachToken: false,\n data: {\n client_id: '{{clientId}}',\n grant_type: 'organization_switch',\n scope: '{{scopes}}',\n switching_organization: organization.id,\n token: '{{accessToken}}',\n },\n id: 'organization-switch',\n returnsSession: true,\n signInRequired: sourceInstanceId === undefined,\n };\n\n return (await super.exchangeToken(exchangeConfig)) as TokenResponse | Response;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to switch organization: ${error.message || error}`,\n 'react-ThunderIDReactClient-SwitchOrganizationError-003',\n 'react',\n 'An error occurred while switching to the specified organization. Please try again.',\n );\n }\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState;\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponseV2> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n\n // NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n // issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n // Hence, we need to check if the client is initialized but the config object is empty, and reinitialize.\n if (!config || Object.keys(config).length === 0) {\n await this.initialize(this._initializeConfig!);\n }\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponseV2 = await executeEmbeddedSignInFlowV2({\n authId,\n baseUrl,\n payload: arg1 as EmbeddedSignInFlowHandleRequestPayload,\n url: arg2?.url,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatusV2.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: EmbeddedFlowExecuteRequestPayload): Promise<EmbeddedFlowExecuteResponse>;\n override async signUp(...args: any[]): Promise<void | EmbeddedFlowExecuteResponse> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n\n if (authIdFromUrl && !authIdFromStorage) {\n await this.getStorageManager().setHybridDataParameter('authId', authIdFromUrl);\n }\n\n const response: any = await executeEmbeddedSignUpFlowV2({\n authId,\n baseUrl,\n payload:\n typeof firstArg === 'object' && 'flowType' in firstArg\n ? {...(firstArg as EmbeddedFlowExecuteRequestPayload), verbose: true}\n : (firstArg as EmbeddedFlowExecuteRequestPayload),\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatusV2.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload: EmbeddedFlowExecuteRequestPayload): Promise<EmbeddedFlowExecuteResponse> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlowV2({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n }) as any;\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":";;;;;AAiDA,IAAM,uBAAN,cAA0F,uBAA0B;CAClH,AAAQ,eAAe;CAEvB,AAAQ;CAER,YAAY,aAAa,GAAG;AAC1B,QAAM,WAAW;;CAGnB,AAAQ,WAAW,SAAwB;AACzC,OAAK,eAAe;;CAGtB,MAAc,YAAqB,WAAqD;AACtF,OAAK,WAAW,KAAK;AACrB,MAAI;AAEF,UADwB,MAAM,WAAW;YAEjC;AACR,QAAK,WAAW,MAAM;;;CAI1B,AAAS,WAAW,QAAgD;EAClE,IAAIA,6BAAiD,QAAQ;AAE7D,MAAI,CAAC,2BACH,8BAA6B,oCAAoC,QAAQ,QAAQ;AAGnF,SAAO,KAAK,YAAY,YAAY;AAClC,QAAK,oBAAoB;IACvB,GAAG;IACH,oBAAoB;IACpB,sBACE,QAAQ,gBAAgB,cAAc,eAAgB,QAAgB;IACzE;AAED,UAAO,MAAM,WAAW,KAAK,kBAAkC;IAC/D;;CAGJ,AAAS,aAAa,QAAyD;AAC7E,SAAO,KAAK,YAAY,YAAY;GAClC,IAAIC;AAEJ,OAAI;AACF,UAAM,MAAM,aAAa,OAAqB;AAC9C,oBAAgB;YACT,OAAO;AACd,UAAM,IAAI,sBACR,iDAAiD,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IACvG,sDACA,SACA,4EACD;;AAGH,UAAO;IACP;;CAGJ,MAAe,oBAAmC;AAChD,QAAM,IAAI,MAAM,kBAAkB;;CAGpC,MAAe,UAAyB;AACtC,SAAO,6BAA6B,MAAM,KAAK,mBAAmB,CAAC;;CAGrE,MAAe,kBAAkB,WAAsC;AACrE,SAAO,MAAM,kBAAkB,UAAU;;CAG3C,MAAe,aAA8B;AAC3C,SAAO,KAAK,YAAY,YAAY,MAAM,YAAY,CAAC;;CAGzD,MAAe,iBAAuC;AACpD,SAAO,KAAK,YAAY,YAAY;GAClC,MAAMC,SAAe,6BAA6B,MAAM,KAAK,mBAAmB,CAAC;AACjF,UAAO;IACL,kBAAkB;IAClB,SAAS;IACT,SAAS,EAAE;IACZ;IACD;;CAGJ,MAAe,mBAAmB,SAAwC;AACxE,MAAI;GACF,IAAIC,UAAkB,SAAS;AAE/B,OAAI,CAAC,QAEH,YADwB,MAAM,KAAK,mBAAmB,CAAC,eAAe,GAChD;AAGxB,UAAO,MAAMC,2BAAmB;IAAC;IAAS,YAAY,KAAK,eAAe;IAAC,CAAC;WACrE,OAAO;AACd,SAAM,IAAI,sBACR,wDACE,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IAExD,4DACA,SACA,mFACD;;;CAIL,MAAe,oBAAoB,SAAqD;AACtF,MAAI;GACF,IAAID,UAAkB,SAAS;AAE/B,OAAI,CAAC,QAEH,YADwB,MAAM,KAAK,mBAAmB,CAAC,eAAe,GAChD;AAGxB,UAAO,MAAME,4BAAoB;IAAC;IAAS,YAAY,KAAK,eAAe;IAAC,CAAC;WACtE,OAAO;AACd,SAAM,IAAI,sBACR,sCAAsC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IAC5F,6DACA,SACA,mFACD;;;CAIL,MAAe,yBAAuD;AACpE,MAAI;AACF,UAAO,MAAM,KAAK,YAAY,YAAY;IACxC,MAAMC,UAAmB,MAAM,KAAK,mBAAmB;AACvD,WAAO;KACL,IAAI,SAAS,UAAU;KACvB,MAAM,SAAS,YAAY;KAC3B,WAAW,SAAS,cAAc;KACnC;KACD;WACK,OAAO;AACd,SAAM,IAAI,sBACR,6CAA6C,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,IACnG,gEACA,SACA,mFACD;;;CAIL,MAAe,mBAAmB,cAA+D;AAC/F,SAAO,KAAK,YAAY,YAAY;AAClC,OAAI;IAEF,MAAMC,oBADkB,MAAM,KAAK,mBAAmB,CAAC,eAAe,GACb,mBAAmB;AAE5E,QAAI,CAAC,aAAa,GAChB,OAAM,IAAI,sBACR,2DACA,0DACA,SACA,sFACD;IAGH,MAAMC,iBAA6C;KACjD,aAAa;KACb,MAAM;MACJ,WAAW;MACX,YAAY;MACZ,OAAO;MACP,wBAAwB,aAAa;MACrC,OAAO;MACR;KACD,IAAI;KACJ,gBAAgB;KAChB,gBAAgB,qBAAqB;KACtC;AAED,WAAQ,MAAM,MAAM,cAAc,eAAe;YAC1C,OAAO;AACd,UAAM,IAAI,sBACR,kCAAkC,MAAM,WAAW,SACnD,0DACA,SACA,qFACD;;IAEH;;CAGJ,AAAS,YAAqB;AAC5B,SAAO,KAAK;;CAGd,MAAe,aAA+B;AAC5C,SAAO,MAAM,YAAY;;CAG3B,MAAe,cAAc,QAAuE;AAClG,SAAO,KAAK,YAAY,YAAY,MAAM,cAAc,OAAO,CAAwC;;CAGzG,MAAe,OAAO,GAAG,MAA2D;AAClF,SAAO,KAAK,YAAY,YAAY;GAClC,MAAMC,OAAY,KAAK;GACvB,MAAMC,OAAY,KAAK;GAEvB,MAAMC,SAA4C,MAAM,KAAK,mBAAmB,CAAC,eAAe;AAOhG,OAAI,CAAC,UAAU,OAAO,KAAK,OAAO,CAAC,WAAW,EAC5C,OAAM,KAAK,WAAW,KAAK,kBAAmB;AAGhD,OAAI,OAAO,SAAS,YAAY,SAAS,QAAQ,KAAK,uBAAuB,KAC3E;AAGF,OACE,OAAO,SAAS,YAChB,SAAS,QACT,CAAC,QAAQ,KAAK,KACb,iBAAiB,QAAQ,mBAAmB,OAC7C;IACA,MAAMC,gBAAwB,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC,aAAa,IAAI,SAAS,IAAI;IAC1F,MAAMC,oBACF,MAAM,KAAK,mBAAmB,CAAC,uBAAuB,SAAS,IAAgB;IAInF,MAAMC,WAAyC,MAAM,4BAA4B;KAC/E,QAJqB,iBAAiB;KAKtC,SAJsB,QAAQ,WAAW;KAKzC,SAAS;KACT,KAAK,MAAM;KACZ,CAAC;AAEF,QACE,YACA,OAAO,aAAa,YACpB,SAAS,eAAe,2BAA2B,YACnD,SAAS,WACT;KACA,MAAMC,mBAKF,MAAM,KAAK,eAKZ,SAAS,UAAU;KAEtB,MAAMC,YAAoB,iBAAiB,MAAM,iBAAiB,MAAM,MAAO,KAAK,KAAK;KACzF,MAAMC,YACJ,iBAAiB,OAAO,iBAAiB,MAAM,iBAAiB,MAAM,iBAAiB,MAAM;AAE/F,WAAM,KAAK,WAAW;MACpB,cAAc,SAAS;MACvB,YAAY;MACZ,YAAY;MACZ,UAAU,SAAS;MACnB,OAAO,iBAAiB;MACxB,YAAY;MACb,CAAC;AAEF,UAAK,aAAa,6BAA6B,iBAA4B,CAAS;;AAGtF,WAAO;;AAGT,UAAQ,MAAM,MAAM,OAAO,GAAG,KAAK;IACnC;;CAGJ,MAAe,eAAe,SAAkD;AAC9E,SAAO,MAAM,eAAe,QAA4C;;CAK1E,MAAe,OAAO,GAAG,MAA0D;EACjF,MAAMC,SAAgC,MAAM,KAAK,mBAAmB,CAAC,eAAe;EACpF,MAAMC,WAAgB,KAAK;EAC3B,MAAMhB,UAAkB,QAAQ,WAAW;EAE3C,MAAMS,gBAAwB,IAAI,IAAI,OAAO,SAAS,KAAK,CAAC,aAAa,IAAI,SAAS,IAAI;EAC1F,MAAMC,oBACF,MAAM,KAAK,mBAAmB,CAAC,uBAAuB,SAAS,IAAgB;EACnF,MAAMO,SAAiB,iBAAiB;AAExC,MAAI,iBAAiB,CAAC,kBACpB,OAAM,KAAK,mBAAmB,CAAC,uBAAuB,UAAU,cAAc;EAGhF,MAAMC,WAAgB,MAAM,4BAA4B;GACtD;GACA;GACA,SACE,OAAO,aAAa,YAAY,cAAc,WAC1C;IAAC,GAAI;IAAgD,SAAS;IAAK,GAClE;GACR,CAAC;AAEF,MACE,YACA,OAAO,aAAa,YACpB,SAAS,eAAe,2BAA2B,YACnD,SAAS,WACT;GACA,MAAMC,mBAKF,MAAM,KAAK,eAKZ,SAAS,UAAU;GAEtB,MAAMN,YAAoB,iBAAiB,MAAM,iBAAiB,MAAM,MAAO,KAAK,KAAK;GACzF,MAAMC,YACJ,iBAAiB,OAAO,iBAAiB,MAAM,iBAAiB,MAAM,iBAAiB,MAAM;AAE/F,SAAM,KAAK,WAAW;IACpB,cAAc,SAAS;IACvB,YAAY;IACZ,YAAY;IACZ,UAAU,SAAS;IACnB,OAAO,iBAAiB;IACxB,YAAY;IACb,CAAC;AAEF,QAAK,aAAa,6BAA6B,iBAA4B,CAAS;;AAGtF,SAAO;;CAGT,MAAe,QAAQ,SAAkF;AAGvG,SAAO,8BAA8B;GACnC,UAHoC,MAAM,KAAK,mBAAmB,CAAC,eAAe,GAGjE;GACjB,SAAS;IAAC,GAAG;IAAS,SAAS;IAAK;GACrC,CAAC;;CAGJ,AAAgB,oBAAyB;AACvC,SAAO,MAAM,mBAAmB;;CAGlC,MAAM,QAAQ,eAA+D;AAC3E,SAAO,MAAM,YAAY,cAAe;;CAG1C,MAAM,WAAW,gBAAoE;AACnF,SAAO,MAAM,eAAe,eAAgB;;;AAIhD,mCAAe"}
|
|
1
|
+
{"version":3,"file":"ThunderIDReactClient.js","names":["resolvedOrganizationHandle: string | undefined","isInitialized: boolean","claims: User","baseUrl: string","getMeOrganizations","getAllOrganizations","idToken: IdToken","sourceInstanceId: number | undefined","exchangeConfig: TokenExchangeRequestConfig","arg1: any","arg2: any","config: ThunderIDReactConfig | undefined","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponse","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","authId: string","response: any","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../src/ThunderIDReactClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n Organization,\n IdToken,\n deriveOrganizationHandleFromBaseUrl,\n AllOrganizationsApiResponse,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowStatus,\n} from '@thunderid/browser';\nimport getAllOrganizations from './api/getAllOrganizations';\nimport getMeOrganizations from './api/getMeOrganizations';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n let resolvedOrganizationHandle: string | undefined = config?.organizationHandle;\n\n if (!resolvedOrganizationHandle) {\n resolvedOrganizationHandle = deriveOrganizationHandleFromBaseUrl(config?.baseUrl);\n }\n\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n organizationHandle: resolvedOrganizationHandle,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override async getMyOrganizations(options?: any): Promise<Organization[]> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getMeOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the user's associated organizations: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 'ThunderIDReactClient-getMyOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching associated organizations of the signed-in user.',\n );\n }\n }\n\n override async getAllOrganizations(options?: any): Promise<AllOrganizationsApiResponse> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getAllOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch all organizations: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getAllOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching all the organizations associated with the user.',\n );\n }\n }\n\n override async getCurrentOrganization(): Promise<Organization | null> {\n try {\n return await this.withLoading(async () => {\n const idToken: IdToken = await this.getDecodedIdToken();\n return {\n id: idToken?.org_id ?? '',\n name: idToken?.org_name ?? '',\n orgHandle: idToken?.org_handle ?? '',\n };\n });\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the current organization: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getCurrentOrganization-RuntimeError-001',\n 'react',\n 'An error occurred while fetching the current organization of the signed-in user.',\n );\n }\n }\n\n override async switchOrganization(organization: Organization): Promise<TokenResponse | Response> {\n return this.withLoading(async () => {\n try {\n const configData: any = await this.getStorageManager().getConfigData();\n const sourceInstanceId: number | undefined = configData?.organizationChain?.sourceInstanceId;\n\n if (!organization.id) {\n throw new ThunderIDRuntimeError(\n 'Organization ID is required for switching organizations',\n 'react-ThunderIDReactClient-SwitchOrganizationError-001',\n 'react',\n 'The organization object must contain a valid ID to perform the organization switch.',\n );\n }\n\n const exchangeConfig: TokenExchangeRequestConfig = {\n attachToken: false,\n data: {\n client_id: '{{clientId}}',\n grant_type: 'organization_switch',\n scope: '{{scopes}}',\n switching_organization: organization.id,\n token: '{{accessToken}}',\n },\n id: 'organization-switch',\n returnsSession: true,\n signInRequired: sourceInstanceId === undefined,\n };\n\n return (await super.exchangeToken(exchangeConfig)) as TokenResponse | Response;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to switch organization: ${error.message || error}`,\n 'react-ThunderIDReactClient-SwitchOrganizationError-003',\n 'react',\n 'An error occurred while switching to the specified organization. Please try again.',\n );\n }\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState;\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n\n // NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n // issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n // Hence, we need to check if the client is initialized but the config object is empty, and reinitialize.\n if (!config || Object.keys(config).length === 0) {\n await this.initialize(this._initializeConfig!);\n }\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: arg2?.url,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n\n if (authIdFromUrl && !authIdFromStorage) {\n await this.getStorageManager().setHybridDataParameter('authId', authIdFromUrl);\n }\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n }) as any;\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
|
|
@@ -149,13 +149,13 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
|
|
|
149
149
|
if (typeof arg1 === "object" && arg1 !== null && !(0, __thunderid_browser.isEmpty)(arg1) && ("executionId" in arg1 || "applicationId" in arg1)) {
|
|
150
150
|
const authIdFromUrl = new URL(window.location.href).searchParams.get("authId") ?? "";
|
|
151
151
|
const authIdFromStorage = await this.getStorageManager().getHybridDataParameter("authId") ?? "";
|
|
152
|
-
const response = await (0, __thunderid_browser.
|
|
152
|
+
const response = await (0, __thunderid_browser.executeEmbeddedSignInFlow)({
|
|
153
153
|
authId: authIdFromUrl || authIdFromStorage,
|
|
154
154
|
baseUrl: config?.baseUrl ?? "",
|
|
155
155
|
payload: arg1,
|
|
156
156
|
url: arg2?.url
|
|
157
157
|
});
|
|
158
|
-
if (response && typeof response === "object" && response.flowStatus === __thunderid_browser.
|
|
158
|
+
if (response && typeof response === "object" && response.flowStatus === __thunderid_browser.EmbeddedSignInFlowStatus.Complete && response.assertion) {
|
|
159
159
|
const decodedAssertion = await this.decodeJwtToken(response.assertion);
|
|
160
160
|
const createdAt = decodedAssertion.iat ? decodedAssertion.iat * 1e3 : Date.now();
|
|
161
161
|
const expiresIn = decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;
|
|
@@ -185,7 +185,7 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
|
|
|
185
185
|
const authIdFromStorage = await this.getStorageManager().getHybridDataParameter("authId") ?? "";
|
|
186
186
|
const authId = authIdFromUrl || authIdFromStorage;
|
|
187
187
|
if (authIdFromUrl && !authIdFromStorage) await this.getStorageManager().setHybridDataParameter("authId", authIdFromUrl);
|
|
188
|
-
const response = await (0, __thunderid_browser.
|
|
188
|
+
const response = await (0, __thunderid_browser.executeEmbeddedSignUpFlow)({
|
|
189
189
|
authId,
|
|
190
190
|
baseUrl,
|
|
191
191
|
payload: typeof firstArg === "object" && "flowType" in firstArg ? {
|
|
@@ -193,7 +193,7 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
|
|
|
193
193
|
verbose: true
|
|
194
194
|
} : firstArg
|
|
195
195
|
});
|
|
196
|
-
if (response && typeof response === "object" && response.flowStatus === __thunderid_browser.
|
|
196
|
+
if (response && typeof response === "object" && response.flowStatus === __thunderid_browser.EmbeddedSignUpFlowStatus.Complete && response.assertion) {
|
|
197
197
|
const decodedAssertion = await this.decodeJwtToken(response.assertion);
|
|
198
198
|
const createdAt = decodedAssertion.iat ? decodedAssertion.iat * 1e3 : Date.now();
|
|
199
199
|
const expiresIn = decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;
|
|
@@ -210,7 +210,7 @@ var ThunderIDReactClient = class extends __thunderid_browser.ThunderIDBrowserCli
|
|
|
210
210
|
return response;
|
|
211
211
|
}
|
|
212
212
|
async recover(payload) {
|
|
213
|
-
return (0, __thunderid_browser.
|
|
213
|
+
return (0, __thunderid_browser.executeEmbeddedRecoveryFlow)({
|
|
214
214
|
baseUrl: (await this.getStorageManager().getConfigData())?.baseUrl,
|
|
215
215
|
payload: {
|
|
216
216
|
...payload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThunderIDReactClient.cjs","names":["ThunderIDBrowserClient","resolvedOrganizationHandle: string | undefined","isInitialized: boolean","ThunderIDRuntimeError","claims: User","baseUrl: string","getMeOrganizations","getAllOrganizations","idToken: IdToken","sourceInstanceId: number | undefined","exchangeConfig: TokenExchangeRequestConfig","arg1: any","arg2: any","config: ThunderIDReactConfig | undefined","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponseV2","EmbeddedSignInFlowStatusV2","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","authId: string","response: any","EmbeddedSignUpFlowStatusV2","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../../src/ThunderIDReactClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n EmbeddedFlowExecuteResponse,\n SignUpOptions,\n EmbeddedFlowExecuteRequestPayload,\n ThunderIDRuntimeError,\n EmbeddedSignInFlowHandleRequestPayload,\n executeEmbeddedSignInFlowV2,\n Organization,\n IdToken,\n deriveOrganizationHandleFromBaseUrl,\n AllOrganizationsApiResponse,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponseV2,\n executeEmbeddedSignUpFlowV2,\n executeEmbeddedRecoveryFlowV2,\n EmbeddedSignInFlowStatusV2,\n EmbeddedSignUpFlowStatusV2,\n} from '@thunderid/browser';\nimport getAllOrganizations from './api/getAllOrganizations';\nimport getMeOrganizations from './api/getMeOrganizations';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n let resolvedOrganizationHandle: string | undefined = config?.organizationHandle;\n\n if (!resolvedOrganizationHandle) {\n resolvedOrganizationHandle = deriveOrganizationHandleFromBaseUrl(config?.baseUrl);\n }\n\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n organizationHandle: resolvedOrganizationHandle,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override async getMyOrganizations(options?: any): Promise<Organization[]> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getMeOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the user's associated organizations: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 'ThunderIDReactClient-getMyOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching associated organizations of the signed-in user.',\n );\n }\n }\n\n override async getAllOrganizations(options?: any): Promise<AllOrganizationsApiResponse> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getAllOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch all organizations: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getAllOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching all the organizations associated with the user.',\n );\n }\n }\n\n override async getCurrentOrganization(): Promise<Organization | null> {\n try {\n return await this.withLoading(async () => {\n const idToken: IdToken = await this.getDecodedIdToken();\n return {\n id: idToken?.org_id ?? '',\n name: idToken?.org_name ?? '',\n orgHandle: idToken?.org_handle ?? '',\n };\n });\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the current organization: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getCurrentOrganization-RuntimeError-001',\n 'react',\n 'An error occurred while fetching the current organization of the signed-in user.',\n );\n }\n }\n\n override async switchOrganization(organization: Organization): Promise<TokenResponse | Response> {\n return this.withLoading(async () => {\n try {\n const configData: any = await this.getStorageManager().getConfigData();\n const sourceInstanceId: number | undefined = configData?.organizationChain?.sourceInstanceId;\n\n if (!organization.id) {\n throw new ThunderIDRuntimeError(\n 'Organization ID is required for switching organizations',\n 'react-ThunderIDReactClient-SwitchOrganizationError-001',\n 'react',\n 'The organization object must contain a valid ID to perform the organization switch.',\n );\n }\n\n const exchangeConfig: TokenExchangeRequestConfig = {\n attachToken: false,\n data: {\n client_id: '{{clientId}}',\n grant_type: 'organization_switch',\n scope: '{{scopes}}',\n switching_organization: organization.id,\n token: '{{accessToken}}',\n },\n id: 'organization-switch',\n returnsSession: true,\n signInRequired: sourceInstanceId === undefined,\n };\n\n return (await super.exchangeToken(exchangeConfig)) as TokenResponse | Response;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to switch organization: ${error.message || error}`,\n 'react-ThunderIDReactClient-SwitchOrganizationError-003',\n 'react',\n 'An error occurred while switching to the specified organization. Please try again.',\n );\n }\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState;\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponseV2> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n\n // NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n // issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n // Hence, we need to check if the client is initialized but the config object is empty, and reinitialize.\n if (!config || Object.keys(config).length === 0) {\n await this.initialize(this._initializeConfig!);\n }\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponseV2 = await executeEmbeddedSignInFlowV2({\n authId,\n baseUrl,\n payload: arg1 as EmbeddedSignInFlowHandleRequestPayload,\n url: arg2?.url,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatusV2.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: EmbeddedFlowExecuteRequestPayload): Promise<EmbeddedFlowExecuteResponse>;\n override async signUp(...args: any[]): Promise<void | EmbeddedFlowExecuteResponse> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n\n if (authIdFromUrl && !authIdFromStorage) {\n await this.getStorageManager().setHybridDataParameter('authId', authIdFromUrl);\n }\n\n const response: any = await executeEmbeddedSignUpFlowV2({\n authId,\n baseUrl,\n payload:\n typeof firstArg === 'object' && 'flowType' in firstArg\n ? {...(firstArg as EmbeddedFlowExecuteRequestPayload), verbose: true}\n : (firstArg as EmbeddedFlowExecuteRequestPayload),\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatusV2.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload: EmbeddedFlowExecuteRequestPayload): Promise<EmbeddedFlowExecuteResponse> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlowV2({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n }) as any;\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ThunderIDReactClient.cjs","names":["ThunderIDBrowserClient","resolvedOrganizationHandle: string | undefined","isInitialized: boolean","ThunderIDRuntimeError","claims: User","baseUrl: string","getMeOrganizations","getAllOrganizations","idToken: IdToken","sourceInstanceId: number | undefined","exchangeConfig: TokenExchangeRequestConfig","arg1: any","arg2: any","config: ThunderIDReactConfig | undefined","authIdFromUrl: string","authIdFromStorage: string","response: EmbeddedSignInFlowResponse","EmbeddedSignInFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }","createdAt: number","expiresIn: number","config: ThunderIDReactConfig","firstArg: any","authId: string","response: any","EmbeddedSignUpFlowStatus","decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }"],"sources":["../../src/ThunderIDReactClient.ts"],"sourcesContent":["/**\n * Copyright (c) 2025-2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {\n ThunderIDBrowserClient,\n UserProfile,\n SignInOptions,\n User,\n SignUpOptions,\n ThunderIDRuntimeError,\n executeEmbeddedSignInFlow,\n Organization,\n IdToken,\n deriveOrganizationHandleFromBaseUrl,\n AllOrganizationsApiResponse,\n extractUserClaimsFromIdToken,\n TokenResponse,\n HttpRequestConfig,\n HttpResponse,\n TokenExchangeRequestConfig,\n isEmpty,\n EmbeddedSignInFlowResponse,\n executeEmbeddedSignUpFlow,\n executeEmbeddedRecoveryFlow,\n EmbeddedSignInFlowStatus,\n EmbeddedSignUpFlowStatus,\n} from '@thunderid/browser';\nimport getAllOrganizations from './api/getAllOrganizations';\nimport getMeOrganizations from './api/getMeOrganizations';\nimport {ThunderIDReactConfig} from './models/config';\n\nclass ThunderIDReactClient<T extends ThunderIDReactConfig = ThunderIDReactConfig> extends ThunderIDBrowserClient<T> {\n private loadingState = false;\n\n private _initializeConfig: ThunderIDReactConfig | undefined;\n\n constructor(instanceId = 0) {\n super(instanceId);\n }\n\n private setLoading(loading: boolean): void {\n this.loadingState = loading;\n }\n\n private async withLoading<TResult>(operation: () => Promise<TResult>): Promise<TResult> {\n this.setLoading(true);\n try {\n const result: TResult = await operation();\n return result;\n } finally {\n this.setLoading(false);\n }\n }\n\n override initialize(config: ThunderIDReactConfig): Promise<boolean> {\n let resolvedOrganizationHandle: string | undefined = config?.organizationHandle;\n\n if (!resolvedOrganizationHandle) {\n resolvedOrganizationHandle = deriveOrganizationHandleFromBaseUrl(config?.baseUrl);\n }\n\n return this.withLoading(async () => {\n this._initializeConfig = {\n ...config,\n organizationHandle: resolvedOrganizationHandle,\n periodicTokenRefresh:\n config?.tokenLifecycle?.refreshToken?.autoRefresh ?? (config as any)?.periodicTokenRefresh,\n } as any;\n\n return super.initialize(this._initializeConfig as unknown as T);\n });\n }\n\n override reInitialize(config: Partial<ThunderIDReactConfig>): Promise<boolean> {\n return this.withLoading(async () => {\n let isInitialized: boolean;\n\n try {\n await super.reInitialize(config as Partial<T>);\n isInitialized = true;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to check if the client is initialized: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-reInitialize-RuntimeError-001',\n 'react',\n 'An error occurred while checking the initialization status of the client.',\n );\n }\n\n return isInitialized;\n });\n }\n\n override async updateUserProfile(): Promise<User> {\n throw new Error('Not implemented');\n }\n\n override async getUser(): Promise<User> {\n return extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n }\n\n override async getDecodedIdToken(sessionId?: string): Promise<IdToken> {\n return super.getDecodedIdToken(sessionId);\n }\n\n override async getIdToken(): Promise<string> {\n return this.withLoading(async () => super.getIdToken());\n }\n\n override async getUserProfile(): Promise<UserProfile> {\n return this.withLoading(async () => {\n const claims: User = extractUserClaimsFromIdToken(await this.getDecodedIdToken());\n return {\n flattenedProfile: claims,\n profile: claims,\n schemas: [],\n };\n });\n }\n\n override async getMyOrganizations(options?: any): Promise<Organization[]> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getMeOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the user's associated organizations: ${\n error instanceof Error ? error.message : String(error)\n }`,\n 'ThunderIDReactClient-getMyOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching associated organizations of the signed-in user.',\n );\n }\n }\n\n override async getAllOrganizations(options?: any): Promise<AllOrganizationsApiResponse> {\n try {\n let baseUrl: string = options?.baseUrl;\n\n if (!baseUrl) {\n const configData: any = await this.getStorageManager().getConfigData();\n baseUrl = configData?.baseUrl;\n }\n\n return await getAllOrganizations({baseUrl, instanceId: this.getInstanceId()});\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch all organizations: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getAllOrganizations-RuntimeError-001',\n 'react',\n 'An error occurred while fetching all the organizations associated with the user.',\n );\n }\n }\n\n override async getCurrentOrganization(): Promise<Organization | null> {\n try {\n return await this.withLoading(async () => {\n const idToken: IdToken = await this.getDecodedIdToken();\n return {\n id: idToken?.org_id ?? '',\n name: idToken?.org_name ?? '',\n orgHandle: idToken?.org_handle ?? '',\n };\n });\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to fetch the current organization: ${error instanceof Error ? error.message : String(error)}`,\n 'ThunderIDReactClient-getCurrentOrganization-RuntimeError-001',\n 'react',\n 'An error occurred while fetching the current organization of the signed-in user.',\n );\n }\n }\n\n override async switchOrganization(organization: Organization): Promise<TokenResponse | Response> {\n return this.withLoading(async () => {\n try {\n const configData: any = await this.getStorageManager().getConfigData();\n const sourceInstanceId: number | undefined = configData?.organizationChain?.sourceInstanceId;\n\n if (!organization.id) {\n throw new ThunderIDRuntimeError(\n 'Organization ID is required for switching organizations',\n 'react-ThunderIDReactClient-SwitchOrganizationError-001',\n 'react',\n 'The organization object must contain a valid ID to perform the organization switch.',\n );\n }\n\n const exchangeConfig: TokenExchangeRequestConfig = {\n attachToken: false,\n data: {\n client_id: '{{clientId}}',\n grant_type: 'organization_switch',\n scope: '{{scopes}}',\n switching_organization: organization.id,\n token: '{{accessToken}}',\n },\n id: 'organization-switch',\n returnsSession: true,\n signInRequired: sourceInstanceId === undefined,\n };\n\n return (await super.exchangeToken(exchangeConfig)) as TokenResponse | Response;\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Failed to switch organization: ${error.message || error}`,\n 'react-ThunderIDReactClient-SwitchOrganizationError-003',\n 'react',\n 'An error occurred while switching to the specified organization. Please try again.',\n );\n }\n });\n }\n\n override isLoading(): boolean {\n return this.loadingState;\n }\n\n override async isSignedIn(): Promise<boolean> {\n return super.isSignedIn();\n }\n\n override async exchangeToken(config: TokenExchangeRequestConfig): Promise<TokenResponse | Response> {\n return this.withLoading(async () => super.exchangeToken(config) as unknown as TokenResponse | Response);\n }\n\n override async signIn(...args: any[]): Promise<User | EmbeddedSignInFlowResponse> {\n return this.withLoading(async () => {\n const arg1: any = args[0];\n const arg2: any = args[1];\n\n const config: ThunderIDReactConfig | undefined = (await this.getStorageManager().getConfigData()) as\n | ThunderIDReactConfig\n | undefined;\n\n // NOTE: With React 19 strict mode, the initialization logic runs twice, and there's an intermittent\n // issue where the config object is not getting stored in the storage layer with Vite scaffolding.\n // Hence, we need to check if the client is initialized but the config object is empty, and reinitialize.\n if (!config || Object.keys(config).length === 0) {\n await this.initialize(this._initializeConfig!);\n }\n\n if (typeof arg1 === 'object' && arg1 !== null && arg1.callOnlyOnRedirect === true) {\n return undefined as any;\n }\n\n if (\n typeof arg1 === 'object' &&\n arg1 !== null &&\n !isEmpty(arg1) &&\n ('executionId' in arg1 || 'applicationId' in arg1)\n ) {\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n const baseUrl: string = config?.baseUrl ?? '';\n\n const response: EmbeddedSignInFlowResponse = await executeEmbeddedSignInFlow({\n authId,\n baseUrl,\n payload: arg1,\n url: arg2?.url,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignInFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n return (await super.signIn(...args)) as unknown as User;\n });\n }\n\n override async signInSilently(options?: SignInOptions): Promise<User | boolean> {\n return super.signInSilently(options as Record<string, string | boolean>) as Promise<User | boolean>;\n }\n\n override async signUp(options?: SignUpOptions): Promise<void>;\n override async signUp(payload: any): Promise<any>;\n override async signUp(...args: any[]): Promise<void | any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n const firstArg: any = args[0];\n const baseUrl: string = config?.baseUrl ?? '';\n\n const authIdFromUrl: string = new URL(window.location.href).searchParams.get('authId') ?? '';\n const authIdFromStorage: string =\n ((await this.getStorageManager().getHybridDataParameter('authId')) as string) ?? '';\n const authId: string = authIdFromUrl || authIdFromStorage;\n\n if (authIdFromUrl && !authIdFromStorage) {\n await this.getStorageManager().setHybridDataParameter('authId', authIdFromUrl);\n }\n\n const response: any = await executeEmbeddedSignUpFlow({\n authId,\n baseUrl,\n payload: typeof firstArg === 'object' && 'flowType' in firstArg ? {...firstArg, verbose: true} : firstArg,\n });\n\n if (\n response &&\n typeof response === 'object' &&\n response.flowStatus === EmbeddedSignUpFlowStatus.Complete &&\n response.assertion\n ) {\n const decodedAssertion: {\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n } = await this.decodeJwtToken<{\n [key: string]: unknown;\n exp?: number;\n iat?: number;\n scope?: string;\n }>(response.assertion);\n\n const createdAt: number = decodedAssertion.iat ? decodedAssertion.iat * 1000 : Date.now();\n const expiresIn: number =\n decodedAssertion.exp && decodedAssertion.iat ? decodedAssertion.exp - decodedAssertion.iat : 3600;\n\n await this.setSession({\n access_token: response.assertion,\n created_at: createdAt,\n expires_in: expiresIn,\n id_token: response.assertion,\n scope: decodedAssertion.scope,\n token_type: 'Bearer',\n });\n\n this.notifySignIn(extractUserClaimsFromIdToken(decodedAssertion as IdToken) as User);\n }\n\n return response;\n }\n\n override async recover(payload?: any): Promise<any> {\n const config: ThunderIDReactConfig = (await this.getStorageManager().getConfigData()) as ThunderIDReactConfig;\n\n return executeEmbeddedRecoveryFlow({\n baseUrl: config?.baseUrl,\n payload: {...payload, verbose: true},\n }) as any;\n }\n\n public override getStorageManager(): any {\n return super.getStorageManager();\n }\n\n async request(requestConfig?: HttpRequestConfig): Promise<HttpResponse<any>> {\n return super.httpRequest(requestConfig!) as Promise<HttpResponse<any>>;\n }\n\n async requestAll(requestConfigs?: HttpRequestConfig[]): Promise<HttpResponse<any>[]> {\n return super.httpRequestAll(requestConfigs!) as Promise<HttpResponse<any>[]>;\n }\n}\n\nexport default ThunderIDReactClient;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SignInButton.cjs","names":["SignInButton: ForwardRefExoticComponent<SignInButtonProps & RefAttributes<HTMLButtonElement>>","useThunderID","useTranslation","ThunderIDRuntimeError","BaseSignInButton"],"sources":["../../../../../src/components/actions/SignInButton/SignInButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {ThunderIDRuntimeError, navigate} from '@thunderid/browser';\nimport {forwardRef, ForwardRefExoticComponent, MouseEvent, ReactElement, Ref, RefAttributes, useState} from 'react';\nimport BaseSignInButton, {BaseSignInButtonProps} from './BaseSignInButton';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\nimport useTranslation from '../../../hooks/useTranslation';\n\n/**\n * Props interface of {@link SignInButton}\n */\nexport type SignInButtonProps = BaseSignInButtonProps & {\n /**\n * Additional parameters to pass to the `authorize` request.\n */\n signInOptions?: Record<string, any>;\n /**\n * Additional parameters to pass to the token request body.\n */\n tokenRequest?: {params?: Record<string, unknown>};\n};\n\n/**\n * SignInButton component that supports both render props and traditional props patterns.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example Using render props\n * ```tsx\n * <SignInButton>\n * {({signIn, isLoading}) => (\n * <button onClick={signIn} disabled={isLoading}>\n * {isLoading ? 'Signing in...' : 'Sign In'}\n * </button>\n * )}\n * </SignInButton>\n * ```\n *\n * @example Using traditional props\n * ```tsx\n * <SignInButton className=\"custom-button\">Sign In</SignInButton>\n * ```\n *\n * @example Using component-level preferences\n * ```tsx\n * <SignInButton\n * preferences={{\n * i18n: {\n * bundles: {\n * 'en-US': {\n * translations: {\n * 'buttons.signIn': 'Custom Sign In Text'\n * }\n * }\n * }\n * }\n * }}\n * >\n * Custom Sign In\n * </SignInButton>\n * ```\n */\nconst SignInButton: ForwardRefExoticComponent<SignInButtonProps & RefAttributes<HTMLButtonElement>> = forwardRef<\n HTMLButtonElement,\n SignInButtonProps\n>(\n (\n {children
|
|
1
|
+
{"version":3,"file":"SignInButton.cjs","names":["SignInButton: ForwardRefExoticComponent<SignInButtonProps & RefAttributes<HTMLButtonElement>>","useThunderID","useTranslation","ThunderIDRuntimeError","BaseSignInButton"],"sources":["../../../../../src/components/actions/SignInButton/SignInButton.tsx"],"sourcesContent":["/**\n * Copyright (c) 2025, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {ThunderIDRuntimeError, navigate} from '@thunderid/browser';\nimport {forwardRef, ForwardRefExoticComponent, MouseEvent, ReactElement, Ref, RefAttributes, useState} from 'react';\nimport BaseSignInButton, {BaseSignInButtonProps} from './BaseSignInButton';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\nimport useTranslation from '../../../hooks/useTranslation';\n\n/**\n * Props interface of {@link SignInButton}\n */\nexport type SignInButtonProps = BaseSignInButtonProps & {\n /**\n * Additional parameters to pass to the `authorize` request.\n */\n signInOptions?: Record<string, any>;\n /**\n * Additional parameters to pass to the token request body.\n */\n tokenRequest?: {params?: Record<string, unknown>};\n};\n\n/**\n * SignInButton component that supports both render props and traditional props patterns.\n *\n * @remarks This component is only supported in browser based React applications (CSR).\n *\n * @example Using render props\n * ```tsx\n * <SignInButton>\n * {({signIn, isLoading}) => (\n * <button onClick={signIn} disabled={isLoading}>\n * {isLoading ? 'Signing in...' : 'Sign In'}\n * </button>\n * )}\n * </SignInButton>\n * ```\n *\n * @example Using traditional props\n * ```tsx\n * <SignInButton className=\"custom-button\">Sign In</SignInButton>\n * ```\n *\n * @example Using component-level preferences\n * ```tsx\n * <SignInButton\n * preferences={{\n * i18n: {\n * bundles: {\n * 'en-US': {\n * translations: {\n * 'buttons.signIn': 'Custom Sign In Text'\n * }\n * }\n * }\n * }\n * }}\n * >\n * Custom Sign In\n * </SignInButton>\n * ```\n */\nconst SignInButton: ForwardRefExoticComponent<SignInButtonProps & RefAttributes<HTMLButtonElement>> = forwardRef<\n HTMLButtonElement,\n SignInButtonProps\n>(\n (\n {\n children,\n onClick,\n preferences,\n signInOptions: overriddenSignInOptions,\n tokenRequest: overriddenTokenRequest,\n ...rest\n }: SignInButtonProps,\n ref: Ref<HTMLButtonElement>,\n ): ReactElement => {\n const {signIn, signInUrl, signInOptions, tokenRequest, meta} = useThunderID();\n const {t} = useTranslation(preferences?.i18n);\n\n const [isLoading, setIsLoading] = useState(false);\n\n const handleSignIn = async (e?: MouseEvent<HTMLButtonElement>): Promise<void> => {\n try {\n setIsLoading(true);\n\n // If a custom `signInUrl` is provided, use it for navigation.\n if (signInUrl) {\n navigate(signInUrl);\n } else {\n const mergedParams = (overriddenTokenRequest ?? tokenRequest)?.params;\n await signIn(\n overriddenSignInOptions ?? signInOptions,\n undefined,\n undefined,\n undefined,\n mergedParams && Object.keys(mergedParams).length > 0 ? {params: mergedParams} : undefined,\n );\n }\n\n if (onClick) {\n onClick(e!);\n }\n } catch (error) {\n throw new ThunderIDRuntimeError(\n `Sign in failed: ${error instanceof Error ? error.message : String(JSON.stringify(error))}`,\n 'SignInButton-handleSignIn-RuntimeError-001',\n 'react',\n 'Something went wrong while trying to sign in. Please try again later.',\n );\n } finally {\n setIsLoading(false);\n }\n };\n\n return (\n <BaseSignInButton\n ref={ref}\n onClick={handleSignIn}\n isLoading={isLoading}\n meta={meta}\n signIn={handleSignIn}\n preferences={preferences}\n {...rest}\n >\n {children ?? t('elements.buttons.signin.text')}\n </BaseSignInButton>\n );\n },\n);\n\nSignInButton.displayName = 'SignInButton';\n\nexport default SignInButton;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8EA,MAAMA,sCAKF,EACE,UACA,SACA,aACA,eAAe,yBACf,cAAc,uBACd,GAAG,QAEL,QACiB;CACjB,MAAM,EAAC,QAAQ,WAAW,eAAe,cAAc,SAAQC,8BAAc;CAC7E,MAAM,EAAC,MAAKC,+BAAe,aAAa,KAAK;CAE7C,MAAM,CAAC,WAAW,oCAAyB,MAAM;CAEjD,MAAM,eAAe,OAAO,MAAqD;AAC/E,MAAI;AACF,gBAAa,KAAK;AAGlB,OAAI,UACF,mCAAS,UAAU;QACd;IACL,MAAM,gBAAgB,0BAA0B,eAAe;AAC/D,UAAM,OACJ,2BAA2B,eAC3B,QACA,QACA,QACA,gBAAgB,OAAO,KAAK,aAAa,CAAC,SAAS,IAAI,EAAC,QAAQ,cAAa,GAAG,OACjF;;AAGH,OAAI,QACF,SAAQ,EAAG;WAEN,OAAO;AACd,SAAM,IAAIC,0CACR,mBAAmB,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,UAAU,MAAM,CAAC,IACzF,8CACA,SACA,wEACD;YACO;AACR,gBAAa,MAAM;;;AAIvB,QACE,2CAACC;EACM;EACL,SAAS;EACE;EACL;EACN,QAAQ;EACK;EACb,GAAI;YAEH,YAAY,EAAE,+BAA+B;GAC7B;EAGxB;AAED,aAAa,cAAc;AAE3B,2BAAe"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Consent.cjs","names":["Consent: FC<ConsentProps>","purposes: ConsentPurposeData[]","parsed: ConsentPurposeData[] | {purposes: ConsentPurposeData[]}","Typography","ConsentCheckboxList"],"sources":["../../../../src/components/adapters/Consent.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {type
|
|
1
|
+
{"version":3,"file":"Consent.cjs","names":["Consent: FC<ConsentProps>","purposes: ConsentPurposeData[]","parsed: ConsentPurposeData[] | {purposes: ConsentPurposeData[]}","Typography","ConsentCheckboxList"],"sources":["../../../../src/components/adapters/Consent.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {type ConsentPurposeData} from '@thunderid/browser';\nimport {FC, ReactNode} from 'react';\nimport ConsentCheckboxList from './ConsentCheckboxList';\nimport Typography from '../primitives/Typography/Typography';\n\n/**\n * Backward-compatible consent purpose type exported by @thunderid/react.\n *\n * Some consumers import this name directly; keep it as an alias to the v2 model.\n */\nexport type ConsentPurpose = ConsentPurposeData;\n\n/**\n * Render props exposed by Consent when using the render-prop pattern.\n */\nexport interface ConsentRenderProps {\n /** Current form values - used to read optional checkbox state. */\n formValues: Record<string, string>;\n /** Callback invoked when a user toggles an optional attribute. */\n onInputChange: (name: string, value: string) => void;\n /** The resolved list of consent purposes parsed from `consentData`. */\n purposes: ConsentPurposeData[];\n}\n\n/**\n * Props for the Consent component.\n */\nexport interface ConsentProps {\n /**\n * Render-props callback. When provided, the default consent UI is replaced with\n * whatever JSX the callback returns. The parsed `purposes` list is injected so\n * consumers do not need to re-parse `consentData` themselves.\n *\n * @example\n * ```tsx\n * <Consent consentData={raw} formValues={formInputs} onInputChange={onChange} t={t}>\n * {({ purposes, formValues, onInputChange, t }) => (\n * <div>\n * {purposes.map(p => <MyConsentSection key={p.purposeId} purpose={p} />)}\n * </div>\n * )}\n * </Consent>\n * ```\n */\n children?: (props: ConsentRenderProps) => ReactNode;\n /**\n * The raw JSON string returned by the backend in `additionalData.consentPrompt`.\n */\n consentData?: string | ConsentPurposeData[] | {purposes: ConsentPurposeData[]};\n /**\n * Current form values - used to read optional checkbox state.\n */\n formValues: Record<string, string>;\n /**\n * Callback invoked when a user toggles an optional attribute.\n */\n onInputChange: (name: string, value: string) => void;\n}\n\n/**\n * Consent component renders the list of purposes and their associated attributes (essential and optional)\n * based on the data provided by the backend. It allows users to toggle optional attributes while essential\n * attributes are displayed as read-only.\n */\nconst Consent: FC<ConsentProps> = ({consentData, formValues, onInputChange, children}: ConsentProps) => {\n if (!consentData) return null;\n\n let purposes: ConsentPurposeData[] = [];\n\n try {\n const parsed: ConsentPurposeData[] | {purposes: ConsentPurposeData[]} =\n typeof consentData === 'string' ? JSON.parse(consentData) : consentData;\n\n purposes = Array.isArray(parsed) ? parsed : parsed.purposes || [];\n } catch (e) {\n // Failed to parse consent prompt data\n return null;\n }\n\n if (purposes.length === 0) return null;\n\n if (children) {\n return <>{children({formValues, onInputChange, purposes: purposes})}</>;\n }\n\n return (\n <div style={{display: 'flex', flexDirection: 'column', gap: '1rem', marginTop: '0.25rem'}}>\n {purposes.map((purpose: ConsentPurposeData, purposeIndex: number) => (\n <div key={purpose.purposeId || purposeIndex} style={{paddingBottom: '1rem'}}>\n {/* TODO: Uncomment when the backend supports multiple purposes for a application */}\n {/* <Typography variant=\"h6\" fontWeight={600} gutterBottom color=\"inherit\">\n {purpose.purposeName}\n </Typography>\n <Typography variant=\"body2\" color=\"inherit\" style={{marginBottom: '1rem', opacity: 0.85}}>\n {purpose.description}\n </Typography> */}\n\n {purpose.essential && purpose.essential.length > 0 && (\n <div style={{marginTop: '0.5rem'}}>\n <Typography variant=\"subtitle2\" fontWeight=\"bold\">\n Essential Attributes\n </Typography>\n <ConsentCheckboxList\n variant=\"ESSENTIAL\"\n purpose={purpose}\n formValues={formValues}\n onInputChange={onInputChange}\n />\n </div>\n )}\n\n {purpose.optional && purpose.optional.length > 0 && (\n <div style={{marginTop: '0.5rem'}}>\n <Typography variant=\"subtitle2\" fontWeight=\"bold\">\n {purpose.type === 'permissions' ? 'Permissions' : 'Optional Attributes'}\n </Typography>\n <ConsentCheckboxList\n variant=\"OPTIONAL\"\n purpose={purpose}\n formValues={formValues}\n onInputChange={onInputChange}\n />\n </div>\n )}\n </div>\n ))}\n </div>\n );\n};\n\nexport default Consent;\n"],"mappings":";;;;;;;;;;;;AAkFA,MAAMA,WAA6B,EAAC,aAAa,YAAY,eAAe,eAA4B;AACtG,KAAI,CAAC,YAAa,QAAO;CAEzB,IAAIC,WAAiC,EAAE;AAEvC,KAAI;EACF,MAAMC,SACJ,OAAO,gBAAgB,WAAW,KAAK,MAAM,YAAY,GAAG;AAE9D,aAAW,MAAM,QAAQ,OAAO,GAAG,SAAS,OAAO,YAAY,EAAE;UAC1D,GAAG;AAEV,SAAO;;AAGT,KAAI,SAAS,WAAW,EAAG,QAAO;AAElC,KAAI,SACF,QAAO,mFAAG,SAAS;EAAC;EAAY;EAAyB;EAAS,CAAC,GAAI;AAGzE,QACE,2CAAC;EAAI,OAAO;GAAC,SAAS;GAAQ,eAAe;GAAU,KAAK;GAAQ,WAAW;GAAU;YACtF,SAAS,KAAK,SAA6B,iBAC1C,4CAAC;GAA4C,OAAO,EAAC,eAAe,QAAO;cASxE,QAAQ,aAAa,QAAQ,UAAU,SAAS,KAC/C,4CAAC;IAAI,OAAO,EAAC,WAAW,UAAS;eAC/B,2CAACC;KAAW,SAAQ;KAAY,YAAW;eAAO;MAErC,EACb,2CAACC;KACC,SAAQ;KACC;KACG;KACG;MACf;KACE,EAGP,QAAQ,YAAY,QAAQ,SAAS,SAAS,KAC7C,4CAAC;IAAI,OAAO,EAAC,WAAW,UAAS;eAC/B,2CAACD;KAAW,SAAQ;KAAY,YAAW;eACxC,QAAQ,SAAS,gBAAgB,gBAAgB;MACvC,EACb,2CAACC;KACC,SAAQ;KACC;KACG;KACG;MACf;KACE;KAlCA,QAAQ,aAAa,aAoCzB,CACN;GACE;;AAIV,sBAAe"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_useTheme = require('../../contexts/Theme/useTheme.cjs');
|
|
3
3
|
const require_Typography = require('../primitives/Typography/Typography.cjs');
|
|
4
|
-
const require_Divider = require('../primitives/Divider/Divider.cjs');
|
|
5
4
|
const require_ConsentCheckboxList_styles = require('./ConsentCheckboxList.styles.cjs');
|
|
5
|
+
const require_Divider = require('../primitives/Divider/Divider.cjs');
|
|
6
6
|
const require_Toggle = require('../primitives/Toggle/Toggle.cjs');
|
|
7
7
|
let __thunderid_browser = require("@thunderid/browser");
|
|
8
8
|
__thunderid_browser = require_rolldown_runtime.__toESM(__thunderid_browser);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConsentCheckboxList.cjs","names":["ConsentCheckboxList: FC<ConsentCheckboxListProps>","useTheme","styles: Record<string, string>","useStyles","attributes: string[]","isEssential: boolean","checked: boolean","Typography","Toggle","Divider"],"sources":["../../../../src/components/adapters/ConsentCheckboxList.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {cx} from '@emotion/css';\nimport {type
|
|
1
|
+
{"version":3,"file":"ConsentCheckboxList.cjs","names":["ConsentCheckboxList: FC<ConsentCheckboxListProps>","useTheme","styles: Record<string, string>","useStyles","attributes: string[]","isEssential: boolean","checked: boolean","Typography","Toggle","Divider"],"sources":["../../../../src/components/adapters/ConsentCheckboxList.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {cx} from '@emotion/css';\nimport {type ConsentPurposeData, withVendorCSSClassPrefix, bem} from '@thunderid/browser';\nimport {type ChangeEvent, FC, ReactNode} from 'react';\nimport useStyles from './ConsentCheckboxList.styles';\nimport useTheme from '../../contexts/Theme/useTheme';\nimport Divider from '../primitives/Divider/Divider';\nimport Toggle from '../primitives/Toggle/Toggle';\nimport Typography from '../primitives/Typography/Typography';\n\n/**\n * Computes the form value key for tracking an optional attribute's consent state.\n *\n * @param purposeId - The ID of the consent purpose.\n * @param attrName - The name of the attribute.\n * @returns A stable form key string.\n */\nexport const getConsentOptionalKey = (purposeId: string, attrName: string): string =>\n `__consent_opt__${purposeId}__${attrName}`;\n\n/**\n * ConsentInputVariant defines whether the ConsentCheckboxList is rendering essential (read-only) or\n * optional (toggleable) attributes.\n */\nexport type ConsentInputVariant = 'ESSENTIAL' | 'OPTIONAL';\n\n/**\n * Render props exposed by ConsentCheckboxList when using the render-prop pattern.\n */\nexport interface ConsentCheckboxListRenderProps {\n /** The list of attribute names to render. */\n attributes: string[];\n /**\n * Call this when an optional attribute checkbox is toggled.\n * No-op for ESSENTIAL attributes (they cannot be changed).\n */\n handleChange: (attrName: string, checked: boolean) => void;\n /**\n * Returns the current checked state for the given attribute name.\n * Always returns true for ESSENTIAL attributes.\n */\n isChecked: (attrName: string) => boolean;\n /** Whether the list is rendering essential or optional attributes. */\n variant: ConsentInputVariant;\n}\n\n/**\n * Props for the ConsentCheckboxList component.\n */\nexport interface ConsentCheckboxListProps {\n /**\n * Render-props callback. When provided, the default checkbox list UI is replaced\n * with whatever JSX the callback returns.\n *\n * @example\n * ```tsx\n * <ConsentCheckboxList variant=\"OPTIONAL\" purpose={purpose} formValues={formValues} onInputChange={onChange}>\n * {({ attributes, isChecked, handleChange }) => (\n * <ul>\n * {attributes.map(attr => (\n * <li key={attr}>\n * <Checkbox checked={isChecked(attr)} onChange={e => handleChange(attr, e.target.checked)} />\n * {attr}\n * </li>\n * ))}\n * </ul>\n * )}\n * </ConsentCheckboxList>\n * ```\n */\n children?: (props: ConsentCheckboxListRenderProps) => ReactNode;\n /** Current form values - used to read optional checkbox state */\n formValues: Record<string, string>;\n /** Callback invoked when an optional attribute checkbox is toggled */\n onInputChange: (name: string, value: string) => void;\n /** The consent purpose data containing attribute lists */\n purpose: ConsentPurposeData;\n /** Whether to render essential (disabled) or optional (toggleable) attributes */\n variant: ConsentInputVariant;\n}\n\n/**\n * Renders a list of consent attribute checkboxes.\n *\n * - ESSENTIAL variant: renders read-only checked checkboxes for required attributes.\n * - OPTIONAL variant: renders toggleable checkboxes for optional attributes.\n * Opt-in is the default when no prior form value exists.\n */\nconst ConsentCheckboxList: FC<ConsentCheckboxListProps> = ({\n variant,\n purpose,\n formValues,\n onInputChange,\n children,\n}: ConsentCheckboxListProps) => {\n const {theme, colorScheme}: ReturnType<typeof useTheme> = useTheme();\n const styles: Record<string, string> = useStyles(theme, colorScheme);\n\n const attributes: string[] = (variant === 'ESSENTIAL' ? purpose.essential : purpose.optional).map(\n (e): string => e.name,\n );\n\n if (!attributes || attributes.length === 0) {\n return null;\n }\n\n const isEssential: boolean = variant === 'ESSENTIAL';\n\n const isChecked = (attrName: string): boolean => {\n if (isEssential) {\n return true;\n }\n const key: string = getConsentOptionalKey(purpose.purposeId, attrName);\n // Default to opted-in (true) when there's no explicit form value\n return formValues[key] !== 'false';\n };\n\n const handleChange = (attrName: string, checked: boolean): void => {\n const key: string = getConsentOptionalKey(purpose.purposeId, attrName);\n onInputChange(key, checked ? 'true' : 'false');\n };\n\n if (children) {\n return <>{children({attributes, handleChange, isChecked, variant})}</>;\n }\n\n return (\n <div className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list')), styles['listContainer'])}>\n {attributes.map((attr: string) => {\n const inputId = `consent_${isEssential ? 'ess' : 'opt'}_${purpose.purposeId}_${attr}`;\n const checked: boolean = isChecked(attr);\n\n return (\n <div\n key={attr}\n className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'item')), styles['listItem'])}\n >\n <div className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'row')), styles['listRow'])}>\n <div\n className={cx(\n withVendorCSSClassPrefix(bem('consent-checkbox-list', 'label-container')),\n styles['labelContainer'],\n )}\n >\n <div\n className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'bullet')), styles['bullet'])}\n />\n <Typography\n variant=\"body2\"\n className={cx(\n withVendorCSSClassPrefix(bem('consent-checkbox-list', 'typography')),\n styles['typography'],\n )}\n >\n {attr}\n </Typography>\n </div>\n <Toggle\n id={inputId}\n checked={checked}\n disabled={isEssential}\n onChange={\n isEssential\n ? undefined\n : (e: ChangeEvent<HTMLInputElement>): void => handleChange(attr, e.target.checked)\n }\n />\n </div>\n <Divider\n className={cx(withVendorCSSClassPrefix(bem('consent-checkbox-list', 'divider')), styles['divider'])}\n />\n </div>\n );\n })}\n </div>\n );\n};\n\nexport default ConsentCheckboxList;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAkCA,MAAa,yBAAyB,WAAmB,aACvD,kBAAkB,UAAU,IAAI;;;;;;;;AAsElC,MAAMA,uBAAqD,EACzD,SACA,SACA,YACA,eACA,eAC8B;CAC9B,MAAM,EAAC,OAAO,gBAA4CC,0BAAU;CACpE,MAAMC,SAAiCC,2CAAU,OAAO,YAAY;CAEpE,MAAMC,cAAwB,YAAY,cAAc,QAAQ,YAAY,QAAQ,UAAU,KAC3F,MAAc,EAAE,KAClB;AAED,KAAI,CAAC,cAAc,WAAW,WAAW,EACvC,QAAO;CAGT,MAAMC,cAAuB,YAAY;CAEzC,MAAM,aAAa,aAA8B;AAC/C,MAAI,YACF,QAAO;AAIT,SAAO,WAFa,sBAAsB,QAAQ,WAAW,SAAS,MAE3C;;CAG7B,MAAM,gBAAgB,UAAkB,YAA2B;AAEjE,gBADoB,sBAAsB,QAAQ,WAAW,SAAS,EACnD,UAAU,SAAS,QAAQ;;AAGhD,KAAI,SACF,QAAO,mFAAG,SAAS;EAAC;EAAY;EAAc;EAAW;EAAQ,CAAC,GAAI;AAGxE,QACE,2CAAC;EAAI,gHAA2C,wBAAwB,CAAC,EAAE,OAAO,iBAAiB;YAChG,WAAW,KAAK,SAAiB;GAChC,MAAM,UAAU,WAAW,cAAc,QAAQ,MAAM,GAAG,QAAQ,UAAU,GAAG;GAC/E,MAAMC,UAAmB,UAAU,KAAK;AAExC,UACE,4CAAC;IAEC,gHAA2C,yBAAyB,OAAO,CAAC,EAAE,OAAO,YAAY;eAEjG,4CAAC;KAAI,gHAA2C,yBAAyB,MAAM,CAAC,EAAE,OAAO,WAAW;gBAClG,4CAAC;MACC,gHAC+B,yBAAyB,kBAAkB,CAAC,EACzE,OAAO,kBACR;iBAED,2CAAC,SACC,gHAA2C,yBAAyB,SAAS,CAAC,EAAE,OAAO,UAAU,GACjG,EACF,2CAACC;OACC,SAAQ;OACR,gHAC+B,yBAAyB,aAAa,CAAC,EACpE,OAAO,cACR;iBAEA;QACU;OACT,EACN,2CAACC;MACC,IAAI;MACK;MACT,UAAU;MACV,UACE,cACI,UACC,MAA2C,aAAa,MAAM,EAAE,OAAO,QAAQ;OAEtF;MACE,EACN,2CAACC,2BACC,gHAA2C,yBAAyB,UAAU,CAAC,EAAE,OAAO,WAAW,GACnG;MApCG,KAqCD;IAER;GACE;;AAIV,kCAAe"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../../_virtual/rolldown_runtime.cjs');
|
|
2
|
-
const require_TokenCallback = require('./TokenCallback.cjs');
|
|
3
2
|
const require_OAuthCallback = require('./OAuthCallback.cjs');
|
|
3
|
+
const require_TokenCallback = require('./TokenCallback.cjs');
|
|
4
4
|
let react = require("react");
|
|
5
5
|
react = require_rolldown_runtime.__toESM(react);
|
|
6
6
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Callback.cjs","names":["Callback: FC<CallbackProps>","TokenCallback","OAuthCallback"],"sources":["../../../../../src/components/auth/Callback/Callback.tsx"],"sourcesContent":["/*\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FC, useState} from 'react';\nimport {
|
|
1
|
+
{"version":3,"file":"Callback.cjs","names":["Callback: FC<CallbackProps>","TokenCallback","OAuthCallback"],"sources":["../../../../../src/components/auth/Callback/Callback.tsx"],"sourcesContent":["/*\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport {FC, useState} from 'react';\nimport {OAuthCallback, OAuthCallbackProps} from './OAuthCallback';\nimport {TokenCallback, TokenCallbackProps} from './TokenCallback';\n\n/**\n * Props for the unified Callback component, combining properties for both Token and OAuth callbacks.\n */\nexport type CallbackProps = OAuthCallbackProps & TokenCallbackProps;\n\n/**\n * A unified Callback component that automatically routes to either OAuthCallback or TokenCallback\n * based on the presence of URL parameters ('code' for OAuth, 'token' for token-based flows).\n */\nexport const Callback: FC<CallbackProps> = (props: CallbackProps) => {\n // Use state to lock the flow type on initial mount.\n // This prevents the component from swapping to OAuthCallback if TokenCallback\n // removes the '?token=' query parameter from the URL using window.history.\n const [flowType] = useState<'token' | 'oauth'>(() => {\n if (typeof window === 'undefined') {\n return 'oauth';\n }\n const urlParams = new URLSearchParams(window.location.search);\n return urlParams.get('token') ? 'token' : 'oauth';\n });\n\n if (typeof window === 'undefined') {\n return null;\n }\n\n if (flowType === 'token') {\n return <TokenCallback {...props} />;\n }\n\n return <OAuthCallback {...props} />;\n};\n\nexport default Callback;\n"],"mappings":";;;;;;;;;;;;;AA+BA,MAAaA,YAA+B,UAAyB;CAInE,MAAM,CAAC,sCAA8C;AACnD,MAAI,OAAO,WAAW,YACpB,QAAO;AAGT,SADkB,IAAI,gBAAgB,OAAO,SAAS,OAAO,CAC5C,IAAI,QAAQ,GAAG,UAAU;GAC1C;AAEF,KAAI,OAAO,WAAW,YACpB,QAAO;AAGT,KAAI,aAAa,QACf,QAAO,2CAACC,uCAAc,GAAI,QAAS;AAGrC,QAAO,2CAACC,uCAAc,GAAI,QAAS"}
|
|
@@ -70,7 +70,7 @@ const TokenCallback = ({ onNavigate, onError, onSuccess, signInPath = "/signin",
|
|
|
70
70
|
executionId,
|
|
71
71
|
inputs: { token }
|
|
72
72
|
});
|
|
73
|
-
if (response.type === __thunderid_browser.
|
|
73
|
+
if (response.type === __thunderid_browser.EmbeddedSignInFlowType.Redirection) {
|
|
74
74
|
const redirectURL = response.data?.redirectURL || response?.redirectURL;
|
|
75
75
|
const nextExecutionId$1 = response.executionId || executionId;
|
|
76
76
|
sessionStorage.setItem("thunderid_execution_id", nextExecutionId$1);
|
|
@@ -79,7 +79,7 @@ const TokenCallback = ({ onNavigate, onError, onSuccess, signInPath = "/signin",
|
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
if (response.flowStatus === __thunderid_browser.
|
|
82
|
+
if (response.flowStatus === __thunderid_browser.EmbeddedSignInFlowStatus.Complete) {
|
|
83
83
|
const redirectUrl = response?.redirectUrl || response?.redirect_uri;
|
|
84
84
|
sessionStorage.removeItem("thunderid_execution_id");
|
|
85
85
|
await storageManager.removeHybridDataParameter("authId");
|
|
@@ -94,7 +94,7 @@ const TokenCallback = ({ onNavigate, onError, onSuccess, signInPath = "/signin",
|
|
|
94
94
|
navigate(isRegistrationFlow ? signUpPath : signInPath);
|
|
95
95
|
return;
|
|
96
96
|
}
|
|
97
|
-
if (response.flowStatus === __thunderid_browser.
|
|
97
|
+
if (response.flowStatus === __thunderid_browser.EmbeddedSignInFlowStatus.Error) {
|
|
98
98
|
const failureReason = response?.failureReason;
|
|
99
99
|
const error = new Error(failureReason || "Token validation failed. Please try again.");
|
|
100
100
|
await storageManager.removeHybridDataParameter("authId");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenCallback.cjs","names":["TokenCallback: FC<TokenCallbackProps>","processingRef: any","useThunderID","url: URL","redirectUrlObj: URL","state: string","params: URLSearchParams","searchParams: URLSearchParams","executionId: string | null","token: string | null","applicationId: string | null","isRegistrationFlow: boolean","storageManager: any","response: any","EmbeddedSignInFlowTypeV2","redirectURL: string | undefined","nextExecutionId: string","nextExecutionId","EmbeddedSignInFlowStatusV2","redirectUrl: string | undefined","failureReason: string | undefined","error: Error"],"sources":["../../../../../src/components/auth/Callback/TokenCallback.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\n\nimport {EmbeddedSignInFlowStatusV2, EmbeddedSignInFlowTypeV2, navigate as browserNavigate} from '@thunderid/browser';\nimport {FC, useEffect, useRef} from 'react';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\n\nexport interface TokenCallbackProps {\n /**\n * Callback function called when an error occurs\n */\n onError?: (error: Error) => void;\n\n /**\n * Function to navigate to a different path.\n * If not provided, falls back to the browser navigate utility (SPA navigation via History API for same-origin paths).\n * Provide this prop to enable framework-specific navigation (e.g., from React Router).\n */\n onNavigate?: (path: string) => void;\n\n /**\n * Callback function called when authentication is successful\n */\n onSuccess?: (authData: Record<string, any>) => void;\n\n /**\n * Custom path for the sign-in page. Defaults to '/signin'\n */\n signInPath?: string;\n\n /**\n * Custom path for the sign-up page. Defaults to '/signup'\n */\n signUpPath?: string;\n}\n\nexport const TokenCallback: FC<TokenCallbackProps> = ({\n onNavigate,\n onError,\n onSuccess,\n signInPath = '/signin',\n signUpPath = '/signup',\n}: TokenCallbackProps) => {\n const processingRef: any = useRef(false);\n const {isInitialized, isLoading, signIn, signUp, getStorageManager} = useThunderID();\n\n const navigate = (path: string): void => {\n if (onNavigate) {\n onNavigate(path);\n } else {\n browserNavigate(path);\n }\n };\n\n const clearTokenFromUrl = (): void => {\n if (!window?.location?.href) {\n return;\n }\n\n const url: URL = new URL(window.location.href);\n url.searchParams.delete('token');\n url.searchParams.delete('type');\n window.history.replaceState({}, '', url.toString());\n };\n\n const initiateOAuthRedirect = (redirectURL: string, isRegistrationFlow?: boolean): void => {\n const redirectUrlObj: URL = new URL(redirectURL);\n const state: string = redirectUrlObj.searchParams.get('state') || crypto.randomUUID();\n\n sessionStorage.setItem(\n `thunderid_oauth_${state}`,\n JSON.stringify({\n path: isRegistrationFlow ? signUpPath : signInPath,\n timestamp: Date.now(),\n }),\n );\n\n browserNavigate(redirectUrlObj.toString());\n };\n\n const buildSignInPath = (\n executionId?: string | null,\n applicationId?: string | null,\n isRegistrationFlow?: boolean,\n ): string => {\n const params: URLSearchParams = new URLSearchParams();\n if (executionId) {\n params.set('executionId', executionId);\n }\n if (applicationId) {\n params.set('applicationId', applicationId);\n }\n\n const basePath = isRegistrationFlow ? signUpPath : signInPath;\n return params.toString() ? `${basePath}?${params.toString()}` : basePath;\n };\n\n const redirectWithError = (error: Error, isRegistrationFlow?: boolean): void => {\n sessionStorage.removeItem('thunderid_execution_id');\n\n onError?.(error);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', 'token_verification_failed');\n params.set('error_description', error.message);\n const basePath = isRegistrationFlow ? signUpPath : signInPath;\n navigate(`${basePath}?${params.toString()}`);\n };\n\n useEffect(() => {\n if (!isInitialized || isLoading) {\n return;\n }\n\n const processTokenCallback = async (): Promise<void> => {\n if (processingRef.current) {\n return;\n }\n processingRef.current = true;\n\n // Read URL params before clearing them so they're accessible in both try and catch.\n const searchParams: URLSearchParams = new URLSearchParams(window.location.search);\n const executionId: string | null = searchParams.get('id') || searchParams.get('executionId');\n const token: string | null = searchParams.get('token');\n const applicationId: string | null = searchParams.get('applicationId');\n const isRegistrationFlow: boolean = searchParams.get('type') === 'REGISTRATION';\n\n clearTokenFromUrl();\n\n try {\n const storageManager: any = await getStorageManager();\n\n if (!executionId || !token) {\n const error: Error = new Error('Missing executionId or token in callback URL');\n redirectWithError(error, isRegistrationFlow);\n return;\n }\n\n let response: any;\n\n if (isRegistrationFlow) {\n response = await signUp({executionId, inputs: {token}});\n } else {\n response = await signIn({executionId, inputs: {token}});\n }\n\n if (response.type === EmbeddedSignInFlowTypeV2.Redirection) {\n const redirectURL: string | undefined = (response.data as any)?.redirectURL || (response as any)?.redirectURL;\n const nextExecutionId: string = response.executionId || executionId;\n sessionStorage.setItem('thunderid_execution_id', nextExecutionId);\n\n if (redirectURL) {\n initiateOAuthRedirect(redirectURL, isRegistrationFlow);\n return;\n }\n }\n\n if (response.flowStatus === EmbeddedSignInFlowStatusV2.Complete) {\n const redirectUrl: string | undefined = (response as any)?.redirectUrl || (response as any)?.redirect_uri;\n\n sessionStorage.removeItem('thunderid_execution_id');\n await storageManager.removeHybridDataParameter('authId');\n\n onSuccess?.({\n redirectUrl,\n ...((response.data as Record<string, any>) || {}),\n });\n\n if (redirectUrl) {\n window.location.href = redirectUrl;\n return;\n }\n\n navigate(isRegistrationFlow ? signUpPath : signInPath);\n return;\n }\n\n if (response.flowStatus === EmbeddedSignInFlowStatusV2.Error) {\n const failureReason: string | undefined = (response as any)?.failureReason;\n const error: Error = new Error(failureReason || 'Token validation failed. Please try again.');\n await storageManager.removeHybridDataParameter('authId');\n redirectWithError(error, isRegistrationFlow);\n return;\n }\n\n const nextExecutionId: string = response.executionId || executionId;\n sessionStorage.setItem('thunderid_execution_id', nextExecutionId);\n\n if (response.challengeToken) {\n await storageManager.setTemporaryDataParameter('challengeToken', response.challengeToken);\n }\n\n navigate(buildSignInPath(nextExecutionId, applicationId, isRegistrationFlow));\n } catch (err) {\n const error: Error = err instanceof Error ? err : new Error('Token callback processing failed');\n // eslint-disable-next-line no-console\n console.error('Token callback error:', err);\n const storageManager: any = await getStorageManager();\n if (storageManager) {\n await storageManager.removeHybridDataParameter('authId');\n }\n redirectWithError(error, isRegistrationFlow);\n }\n };\n\n processTokenCallback();\n }, [\n getStorageManager,\n isInitialized,\n isLoading,\n onError,\n onNavigate,\n onSuccess,\n signIn,\n signUp,\n signInPath,\n signUpPath,\n ]);\n\n return null;\n};\n\nexport default TokenCallback;\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TokenCallback.cjs","names":["TokenCallback: FC<TokenCallbackProps>","processingRef: any","useThunderID","url: URL","redirectUrlObj: URL","state: string","params: URLSearchParams","searchParams: URLSearchParams","executionId: string | null","token: string | null","applicationId: string | null","isRegistrationFlow: boolean","storageManager: any","response: any","EmbeddedSignInFlowType","redirectURL: string | undefined","nextExecutionId: string","nextExecutionId","EmbeddedSignInFlowStatus","redirectUrl: string | undefined","failureReason: string | undefined","error: Error"],"sources":["../../../../../src/components/auth/Callback/TokenCallback.tsx"],"sourcesContent":["/**\n * Copyright (c) 2026, WSO2 LLC. (https://www.wso2.com).\n *\n * WSO2 LLC. licenses this file to you under the Apache License,\n * Version 2.0 (the \"License\"); you may not use this file except\n * in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations\n * under the License.\n */\n\nimport {EmbeddedSignInFlowStatus, EmbeddedSignInFlowType, navigate as browserNavigate} from '@thunderid/browser';\nimport {FC, useEffect, useRef} from 'react';\nimport useThunderID from '../../../contexts/ThunderID/useThunderID';\n\nexport interface TokenCallbackProps {\n /**\n * Callback function called when an error occurs\n */\n onError?: (error: Error) => void;\n\n /**\n * Function to navigate to a different path.\n * If not provided, falls back to the browser navigate utility (SPA navigation via History API for same-origin paths).\n * Provide this prop to enable framework-specific navigation (e.g., from React Router).\n */\n onNavigate?: (path: string) => void;\n\n /**\n * Callback function called when authentication is successful\n */\n onSuccess?: (authData: Record<string, any>) => void;\n\n /**\n * Custom path for the sign-in page. Defaults to '/signin'\n */\n signInPath?: string;\n\n /**\n * Custom path for the sign-up page. Defaults to '/signup'\n */\n signUpPath?: string;\n}\n\nexport const TokenCallback: FC<TokenCallbackProps> = ({\n onNavigate,\n onError,\n onSuccess,\n signInPath = '/signin',\n signUpPath = '/signup',\n}: TokenCallbackProps) => {\n const processingRef: any = useRef(false);\n const {isInitialized, isLoading, signIn, signUp, getStorageManager} = useThunderID();\n\n const navigate = (path: string): void => {\n if (onNavigate) {\n onNavigate(path);\n } else {\n browserNavigate(path);\n }\n };\n\n const clearTokenFromUrl = (): void => {\n if (!window?.location?.href) {\n return;\n }\n\n const url: URL = new URL(window.location.href);\n url.searchParams.delete('token');\n url.searchParams.delete('type');\n window.history.replaceState({}, '', url.toString());\n };\n\n const initiateOAuthRedirect = (redirectURL: string, isRegistrationFlow?: boolean): void => {\n const redirectUrlObj: URL = new URL(redirectURL);\n const state: string = redirectUrlObj.searchParams.get('state') || crypto.randomUUID();\n\n sessionStorage.setItem(\n `thunderid_oauth_${state}`,\n JSON.stringify({\n path: isRegistrationFlow ? signUpPath : signInPath,\n timestamp: Date.now(),\n }),\n );\n\n browserNavigate(redirectUrlObj.toString());\n };\n\n const buildSignInPath = (\n executionId?: string | null,\n applicationId?: string | null,\n isRegistrationFlow?: boolean,\n ): string => {\n const params: URLSearchParams = new URLSearchParams();\n if (executionId) {\n params.set('executionId', executionId);\n }\n if (applicationId) {\n params.set('applicationId', applicationId);\n }\n\n const basePath = isRegistrationFlow ? signUpPath : signInPath;\n return params.toString() ? `${basePath}?${params.toString()}` : basePath;\n };\n\n const redirectWithError = (error: Error, isRegistrationFlow?: boolean): void => {\n sessionStorage.removeItem('thunderid_execution_id');\n\n onError?.(error);\n\n const params: URLSearchParams = new URLSearchParams();\n params.set('error', 'token_verification_failed');\n params.set('error_description', error.message);\n const basePath = isRegistrationFlow ? signUpPath : signInPath;\n navigate(`${basePath}?${params.toString()}`);\n };\n\n useEffect(() => {\n if (!isInitialized || isLoading) {\n return;\n }\n\n const processTokenCallback = async (): Promise<void> => {\n if (processingRef.current) {\n return;\n }\n processingRef.current = true;\n\n // Read URL params before clearing them so they're accessible in both try and catch.\n const searchParams: URLSearchParams = new URLSearchParams(window.location.search);\n const executionId: string | null = searchParams.get('id') || searchParams.get('executionId');\n const token: string | null = searchParams.get('token');\n const applicationId: string | null = searchParams.get('applicationId');\n const isRegistrationFlow: boolean = searchParams.get('type') === 'REGISTRATION';\n\n clearTokenFromUrl();\n\n try {\n const storageManager: any = await getStorageManager();\n\n if (!executionId || !token) {\n const error: Error = new Error('Missing executionId or token in callback URL');\n redirectWithError(error, isRegistrationFlow);\n return;\n }\n\n let response: any;\n\n if (isRegistrationFlow) {\n response = await signUp({executionId, inputs: {token}});\n } else {\n response = await signIn({executionId, inputs: {token}});\n }\n\n if (response.type === EmbeddedSignInFlowType.Redirection) {\n const redirectURL: string | undefined = response.data?.redirectURL || response?.redirectURL;\n const nextExecutionId: string = response.executionId || executionId;\n sessionStorage.setItem('thunderid_execution_id', nextExecutionId);\n\n if (redirectURL) {\n initiateOAuthRedirect(redirectURL, isRegistrationFlow);\n return;\n }\n }\n\n if (response.flowStatus === EmbeddedSignInFlowStatus.Complete) {\n const redirectUrl: string | undefined = response?.redirectUrl || response?.redirect_uri;\n\n sessionStorage.removeItem('thunderid_execution_id');\n await storageManager.removeHybridDataParameter('authId');\n\n onSuccess?.({\n redirectUrl,\n ...((response.data as Record<string, any>) || {}),\n });\n\n if (redirectUrl) {\n window.location.href = redirectUrl;\n return;\n }\n\n navigate(isRegistrationFlow ? signUpPath : signInPath);\n return;\n }\n\n if (response.flowStatus === EmbeddedSignInFlowStatus.Error) {\n const failureReason: string | undefined = response?.failureReason;\n const error: Error = new Error(failureReason || 'Token validation failed. Please try again.');\n await storageManager.removeHybridDataParameter('authId');\n redirectWithError(error, isRegistrationFlow);\n return;\n }\n\n const nextExecutionId: string = response.executionId || executionId;\n sessionStorage.setItem('thunderid_execution_id', nextExecutionId);\n\n if (response.challengeToken) {\n await storageManager.setTemporaryDataParameter('challengeToken', response.challengeToken);\n }\n\n navigate(buildSignInPath(nextExecutionId, applicationId, isRegistrationFlow));\n } catch (err) {\n const error: Error = err instanceof Error ? err : new Error('Token callback processing failed');\n // eslint-disable-next-line no-console\n console.error('Token callback error:', err);\n const storageManager: any = await getStorageManager();\n if (storageManager) {\n await storageManager.removeHybridDataParameter('authId');\n }\n redirectWithError(error, isRegistrationFlow);\n }\n };\n\n processTokenCallback();\n }, [\n getStorageManager,\n isInitialized,\n isLoading,\n onError,\n onNavigate,\n onSuccess,\n signIn,\n signUp,\n signInPath,\n signUpPath,\n ]);\n\n return null;\n};\n\nexport default TokenCallback;\n"],"mappings":"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"}
|