@unidy.io/sdk 1.1.4 → 1.2.0-alpha2
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/cjs/app-globals-DSKjcXX_.js.map +1 -1
- package/dist/cjs/{auth-store-BaxuIp4z.js → auth-store-DC9EVec8.js} +2 -3
- package/dist/cjs/auth-store-DC9EVec8.js.map +1 -0
- package/dist/cjs/{i18n-BoDZ8kd2.js → i18n-BAZB-eHh.js} +2 -8
- package/dist/cjs/{i18n-BoDZ8kd2.js.map → i18n-BAZB-eHh.js.map} +1 -1
- package/dist/cjs/{index-R2MKLaem.js → index-CvFbf5-D.js} +1477 -1105
- package/dist/cjs/index-CvFbf5-D.js.map +1 -0
- package/dist/cjs/index.cjs.js +6 -5
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/{newsletter-helpers-DR0vsegt.js → newsletter-helpers-Dj0yYHZf.js} +61 -74
- package/dist/cjs/newsletter-helpers-Dj0yYHZf.js.map +1 -0
- package/dist/cjs/{profile-helpers-B2h2III_.js → profile-helpers-D66Ycaft.js} +3 -3
- package/dist/cjs/{profile-helpers-B2h2III_.js.map → profile-helpers-D66Ycaft.js.map} +1 -1
- package/dist/cjs/u-conditional-render.cjs.entry.js +5 -6
- package/dist/cjs/u-conditional-render.entry.cjs.js.map +1 -1
- package/dist/cjs/u-config.cjs.entry.js +5 -6
- package/dist/cjs/u-config.entry.cjs.js.map +1 -1
- package/dist/cjs/u-email-field.cjs.entry.js +2 -2
- package/dist/cjs/u-error-message.cjs.entry.js +3 -3
- package/dist/cjs/u-error-message.entry.cjs.js.map +1 -1
- package/dist/cjs/u-field.u-raw-field.entry.cjs.js.map +1 -1
- package/dist/cjs/u-field_2.cjs.entry.js +2 -2
- package/dist/cjs/u-full-profile.cjs.entry.js +1 -1
- package/dist/cjs/u-logout-button.cjs.entry.js +6 -7
- package/dist/cjs/u-logout-button.entry.cjs.js.map +1 -1
- package/dist/cjs/u-magic-code-field.cjs.entry.js +5 -6
- package/dist/cjs/u-magic-code-field.entry.cjs.js.map +1 -1
- package/dist/cjs/u-missing-field.cjs.entry.js +1 -1
- package/dist/cjs/u-missing-fields-submit-button.cjs.entry.js +9 -5
- package/dist/cjs/u-missing-fields-submit-button.entry.cjs.js.map +1 -1
- package/dist/cjs/u-newsletter-checkbox.cjs.entry.js +5 -6
- package/dist/cjs/u-newsletter-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/u-newsletter-logout-button.cjs.entry.js +6 -7
- package/dist/cjs/u-newsletter-logout-button.entry.cjs.js.map +1 -1
- package/dist/cjs/u-newsletter-preference-checkbox.cjs.entry.js +5 -6
- package/dist/cjs/u-newsletter-preference-checkbox.entry.cjs.js.map +1 -1
- package/dist/cjs/u-newsletter-resend-doi-button.cjs.entry.js +4 -5
- package/dist/cjs/u-newsletter-resend-doi-button.entry.cjs.js.map +1 -1
- package/dist/cjs/u-newsletter-root.cjs.entry.js +5 -6
- package/dist/cjs/u-newsletter-root.entry.cjs.js.map +1 -1
- package/dist/cjs/u-newsletter-toggle-subscription-button.cjs.entry.js +4 -5
- package/dist/cjs/u-newsletter-toggle-subscription-button.entry.cjs.js.map +1 -1
- package/dist/cjs/u-passkey.cjs.entry.js +5 -6
- package/dist/cjs/u-passkey.entry.cjs.js.map +1 -1
- package/dist/cjs/u-password-field.cjs.entry.js +2 -2
- package/dist/cjs/u-profile.u-submit-button.entry.cjs.js.map +1 -1
- package/dist/cjs/u-profile_2.cjs.entry.js +35 -55
- package/dist/cjs/u-registration-button.cjs.entry.js +2 -2
- package/dist/cjs/u-reset-password-button.cjs.entry.js +4 -5
- package/dist/cjs/u-reset-password-button.entry.cjs.js.map +1 -1
- package/dist/cjs/u-send-magic-code-button.cjs.entry.js +5 -6
- package/dist/cjs/u-send-magic-code-button.entry.cjs.js.map +1 -1
- package/dist/cjs/u-signed-in.cjs.entry.js +1 -1
- package/dist/cjs/u-signin-root.cjs.entry.js +1 -1
- package/dist/cjs/u-signin-step.cjs.entry.js +5 -6
- package/dist/cjs/u-signin-step.entry.cjs.js.map +1 -1
- package/dist/cjs/u-signin-strategy.cjs.entry.js +1 -1
- package/dist/cjs/u-social-login-button.cjs.entry.js +2 -2
- package/dist/cjs/u-spinner.cjs.entry.js +1 -1
- package/dist/cjs/u-spinner.entry.cjs.js.map +1 -1
- package/dist/cjs/u-ticketable-list.cjs.entry.js +39 -29
- package/dist/cjs/u-ticketable-list.entry.cjs.js.map +1 -1
- package/dist/collection/api/base-client.js +129 -0
- package/dist/collection/api/base-client.js.map +1 -0
- package/dist/collection/api/base-service.js +72 -0
- package/dist/collection/api/base-service.js.map +1 -0
- package/dist/collection/api/client.js +18 -139
- package/dist/collection/api/client.js.map +1 -1
- package/dist/collection/api/index.js +25 -5
- package/dist/collection/api/index.js.map +1 -1
- package/dist/collection/api/shared.js +11 -2
- package/dist/collection/api/shared.js.map +1 -1
- package/dist/collection/api/standalone.js +88 -0
- package/dist/collection/api/standalone.js.map +1 -0
- package/dist/collection/auth/api/auth.js +66 -124
- package/dist/collection/auth/api/auth.js.map +1 -1
- package/dist/collection/auth/api/schemas.js +78 -0
- package/dist/collection/auth/api/schemas.js.map +1 -0
- package/dist/collection/auth/auth-helpers.js +47 -36
- package/dist/collection/auth/auth-helpers.js.map +1 -1
- package/dist/collection/auth/components/missing-fields-submit-button/missing-fields-submit-button.js +4 -1
- package/dist/collection/auth/components/missing-fields-submit-button/missing-fields-submit-button.js.map +1 -1
- package/dist/collection/auth/components/password-field/password-field.js +1 -1
- package/dist/collection/auth/passkey-auth.js +8 -6
- package/dist/collection/auth/passkey-auth.js.map +1 -1
- package/dist/collection/auth/store/auth-store.js +0 -1
- package/dist/collection/auth/store/auth-store.js.map +1 -1
- package/dist/collection/locales/de.json +0 -1
- package/dist/collection/locales/en.json +0 -1
- package/dist/collection/locales/fr.json +0 -1
- package/dist/collection/locales/it.json +0 -1
- package/dist/collection/locales/nl_be.json +0 -1
- package/dist/collection/locales/ro.json +0 -1
- package/dist/collection/newsletter/api/newsletters.js +192 -167
- package/dist/collection/newsletter/api/newsletters.js.map +1 -1
- package/dist/collection/newsletter/api/schemas.js +112 -0
- package/dist/collection/newsletter/api/schemas.js.map +1 -0
- package/dist/collection/newsletter/newsletter-helpers.js +57 -70
- package/dist/collection/newsletter/newsletter-helpers.js.map +1 -1
- package/dist/collection/profile/api/profile.js +56 -155
- package/dist/collection/profile/api/profile.js.map +1 -1
- package/dist/collection/profile/api/schemas.js +120 -0
- package/dist/collection/profile/api/schemas.js.map +1 -0
- package/dist/collection/profile/components/field/field.css +1 -1
- package/dist/collection/profile/components/profile/profile.js +35 -101
- package/dist/collection/profile/components/profile/profile.js.map +1 -1
- package/dist/collection/shared/components/config/config.js +2 -2
- package/dist/collection/shared/components/error-message/error-message.js +3 -3
- package/dist/collection/shared/components/error-message/error-message.js.map +1 -1
- package/dist/collection/shared/components/spinner/spinner.css +1 -1
- package/dist/collection/shared/components/submit-button/submit-button.css +1 -1
- package/dist/collection/ticketable/api/schemas.js +58 -9
- package/dist/collection/ticketable/api/schemas.js.map +1 -1
- package/dist/collection/ticketable/api/subscriptions.js +13 -44
- package/dist/collection/ticketable/api/subscriptions.js.map +1 -1
- package/dist/collection/ticketable/api/ticketable-service.js +74 -0
- package/dist/collection/ticketable/api/ticketable-service.js.map +1 -0
- package/dist/collection/ticketable/api/tickets.js +13 -45
- package/dist/collection/ticketable/api/tickets.js.map +1 -1
- package/dist/collection/ticketable/components/ticketable-list/ticketable-list.js +37 -77
- package/dist/collection/ticketable/components/ticketable-list/ticketable-list.js.map +1 -1
- package/dist/components/auth-store.js +0 -1
- package/dist/components/auth-store.js.map +1 -1
- package/dist/components/field.js +1 -1
- package/dist/components/field.js.map +1 -1
- package/dist/components/i18n.js +0 -6
- package/dist/components/i18n.js.map +1 -1
- package/dist/components/index.js +1 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/index2.js +1475 -1106
- package/dist/components/index2.js.map +1 -1
- package/dist/components/newsletter-helpers.js +57 -70
- package/dist/components/newsletter-helpers.js.map +1 -1
- package/dist/components/profile.js +34 -54
- package/dist/components/profile.js.map +1 -1
- package/dist/components/spinner.js +1 -1
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/submit-button.js +1 -1
- package/dist/components/submit-button.js.map +1 -1
- package/dist/components/u-config.js +1 -2
- package/dist/components/u-config.js.map +1 -1
- package/dist/components/u-error-message.js +2 -2
- package/dist/components/u-error-message.js.map +1 -1
- package/dist/components/u-logout-button.js +1 -1
- package/dist/components/u-magic-code-field.js +1 -1
- package/dist/components/u-missing-fields-submit-button.js +4 -1
- package/dist/components/u-missing-fields-submit-button.js.map +1 -1
- package/dist/components/u-newsletter-root.js +1 -1
- package/dist/components/u-passkey.js +1 -1
- package/dist/components/u-reset-password-button.js +1 -1
- package/dist/components/u-send-magic-code-button.js +1 -1
- package/dist/components/u-signin-step.js +1 -1
- package/dist/components/u-ticketable-list.js +36 -29
- package/dist/components/u-ticketable-list.js.map +1 -1
- package/dist/esm/app-globals-CPU9ZcqZ.js.map +1 -1
- package/dist/esm/{auth-store-CVvBlKGv.js → auth-store-BMqUdTpC.js} +2 -3
- package/dist/esm/auth-store-BMqUdTpC.js.map +1 -0
- package/dist/esm/{i18n-CLdWzy5J.js → i18n-BANodpxG.js} +2 -8
- package/dist/esm/{i18n-CLdWzy5J.js.map → i18n-BANodpxG.js.map} +1 -1
- package/dist/esm/{index-DSDkaHWI.js → index-2p1QEJrx.js} +1477 -1108
- package/dist/esm/index-2p1QEJrx.js.map +1 -0
- package/dist/esm/index.js +3 -4
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/{newsletter-helpers-Dc_24im3.js → newsletter-helpers-D64LTcSM.js} +61 -74
- package/dist/esm/newsletter-helpers-D64LTcSM.js.map +1 -0
- package/dist/esm/{profile-helpers-CglNd6Nw.js → profile-helpers-DAvXZ9Uj.js} +3 -3
- package/dist/esm/{profile-helpers-CglNd6Nw.js.map → profile-helpers-DAvXZ9Uj.js.map} +1 -1
- package/dist/esm/u-conditional-render.entry.js +5 -6
- package/dist/esm/u-conditional-render.entry.js.map +1 -1
- package/dist/esm/u-config.entry.js +4 -5
- package/dist/esm/u-config.entry.js.map +1 -1
- package/dist/esm/u-email-field.entry.js +2 -2
- package/dist/esm/u-error-message.entry.js +3 -3
- package/dist/esm/u-error-message.entry.js.map +1 -1
- package/dist/esm/u-field.u-raw-field.entry.js.map +1 -1
- package/dist/esm/u-field_2.entry.js +2 -2
- package/dist/esm/u-full-profile.entry.js +1 -1
- package/dist/esm/u-logout-button.entry.js +5 -6
- package/dist/esm/u-logout-button.entry.js.map +1 -1
- package/dist/esm/u-magic-code-field.entry.js +4 -5
- package/dist/esm/u-magic-code-field.entry.js.map +1 -1
- package/dist/esm/u-missing-field.entry.js +1 -1
- package/dist/esm/u-missing-fields-submit-button.entry.js +9 -5
- package/dist/esm/u-missing-fields-submit-button.entry.js.map +1 -1
- package/dist/esm/u-newsletter-checkbox.entry.js +5 -6
- package/dist/esm/u-newsletter-checkbox.entry.js.map +1 -1
- package/dist/esm/u-newsletter-logout-button.entry.js +6 -7
- package/dist/esm/u-newsletter-logout-button.entry.js.map +1 -1
- package/dist/esm/u-newsletter-preference-checkbox.entry.js +5 -6
- package/dist/esm/u-newsletter-preference-checkbox.entry.js.map +1 -1
- package/dist/esm/u-newsletter-resend-doi-button.entry.js +4 -5
- package/dist/esm/u-newsletter-resend-doi-button.entry.js.map +1 -1
- package/dist/esm/u-newsletter-root.entry.js +4 -5
- package/dist/esm/u-newsletter-root.entry.js.map +1 -1
- package/dist/esm/u-newsletter-toggle-subscription-button.entry.js +4 -5
- package/dist/esm/u-newsletter-toggle-subscription-button.entry.js.map +1 -1
- package/dist/esm/u-passkey.entry.js +4 -5
- package/dist/esm/u-passkey.entry.js.map +1 -1
- package/dist/esm/u-password-field.entry.js +2 -2
- package/dist/esm/u-profile.u-submit-button.entry.js.map +1 -1
- package/dist/esm/u-profile_2.entry.js +36 -56
- package/dist/esm/u-registration-button.entry.js +2 -2
- package/dist/esm/u-reset-password-button.entry.js +3 -4
- package/dist/esm/u-reset-password-button.entry.js.map +1 -1
- package/dist/esm/u-send-magic-code-button.entry.js +4 -5
- package/dist/esm/u-send-magic-code-button.entry.js.map +1 -1
- package/dist/esm/u-signed-in.entry.js +1 -1
- package/dist/esm/u-signin-root.entry.js +1 -1
- package/dist/esm/u-signin-step.entry.js +4 -5
- package/dist/esm/u-signin-step.entry.js.map +1 -1
- package/dist/esm/u-signin-strategy.entry.js +1 -1
- package/dist/esm/u-social-login-button.entry.js +2 -2
- package/dist/esm/u-spinner.entry.js +1 -1
- package/dist/esm/u-spinner.entry.js.map +1 -1
- package/dist/esm/u-ticketable-list.entry.js +40 -30
- package/dist/esm/u-ticketable-list.entry.js.map +1 -1
- package/dist/sdk/index.esm.js +1 -1
- package/dist/sdk/index.esm.js.map +1 -1
- package/dist/sdk/locales/de.json +0 -1
- package/dist/sdk/locales/en.json +0 -1
- package/dist/sdk/locales/fr.json +0 -1
- package/dist/sdk/locales/it.json +0 -1
- package/dist/sdk/locales/nl_be.json +0 -1
- package/dist/sdk/locales/ro.json +0 -1
- package/dist/sdk/{p-5babee6b.entry.js → p-098eef67.entry.js} +2 -2
- package/dist/sdk/p-0e74de96.entry.js +2 -0
- package/dist/sdk/p-0e74de96.entry.js.map +1 -0
- package/dist/sdk/p-0ed36cbb.entry.js +2 -0
- package/dist/sdk/p-0ed36cbb.entry.js.map +1 -0
- package/dist/sdk/p-1149e044.entry.js +2 -0
- package/dist/sdk/p-1149e044.entry.js.map +1 -0
- package/dist/sdk/p-16d763fd.entry.js +2 -0
- package/dist/sdk/p-16d763fd.entry.js.map +1 -0
- package/dist/sdk/p-1d404c36.entry.js +2 -0
- package/dist/sdk/p-1d404c36.entry.js.map +1 -0
- package/dist/sdk/p-32da9922.entry.js +2 -0
- package/dist/sdk/p-32da9922.entry.js.map +1 -0
- package/dist/sdk/p-3d3a9c90.entry.js +2 -0
- package/dist/sdk/p-3d3a9c90.entry.js.map +1 -0
- package/dist/sdk/p-43024bd6.entry.js +2 -0
- package/dist/sdk/p-43024bd6.entry.js.map +1 -0
- package/dist/sdk/{p-e2e7061b.entry.js → p-5da49d00.entry.js} +2 -2
- package/dist/sdk/{p-f961fbea.entry.js → p-67af762e.entry.js} +2 -2
- package/dist/sdk/{p-f961fbea.entry.js.map → p-67af762e.entry.js.map} +1 -1
- package/dist/sdk/p-7099bd56.entry.js +2 -0
- package/dist/sdk/p-7099bd56.entry.js.map +1 -0
- package/dist/sdk/p-745742f1.entry.js +2 -0
- package/dist/sdk/{p-9e71a36c.entry.js → p-74e6523f.entry.js} +2 -2
- package/dist/sdk/p-86d16818.entry.js +2 -0
- package/dist/sdk/{p-effaf86b.entry.js.map → p-86d16818.entry.js.map} +1 -1
- package/dist/sdk/{p-DA84OuuU.js → p-BasehRhW.js} +2 -2
- package/dist/sdk/{p-DA84OuuU.js.map → p-BasehRhW.js.map} +1 -1
- package/dist/sdk/p-C4aHo4nN.js +2 -0
- package/dist/sdk/p-C4aHo4nN.js.map +1 -0
- package/dist/sdk/p-CFiZLMAA.js.map +1 -1
- package/dist/sdk/p-DGDhaqCd.js +2 -0
- package/dist/sdk/p-DGDhaqCd.js.map +1 -0
- package/dist/sdk/{p-CbRhHGU5.js → p-DSq94RWc.js} +2 -2
- package/dist/sdk/{p-CbRhHGU5.js.map → p-DSq94RWc.js.map} +1 -1
- package/dist/sdk/p-DSwwVdp1.js +2 -0
- package/dist/sdk/p-DSwwVdp1.js.map +1 -0
- package/dist/sdk/p-a037bbe3.entry.js +2 -0
- package/dist/sdk/p-a037bbe3.entry.js.map +1 -0
- package/dist/sdk/p-adcb7911.entry.js +2 -0
- package/dist/sdk/p-adcb7911.entry.js.map +1 -0
- package/dist/sdk/{p-39b61f33.entry.js → p-bbbec3d4.entry.js} +2 -2
- package/dist/sdk/{p-f232929b.entry.js → p-c2fba7c8.entry.js} +2 -2
- package/dist/sdk/p-c4618822.entry.js +2 -0
- package/dist/sdk/p-c4618822.entry.js.map +1 -0
- package/dist/sdk/p-ca4e57f2.entry.js +2 -0
- package/dist/sdk/p-ca4e57f2.entry.js.map +1 -0
- package/dist/sdk/p-ce4ab77c.entry.js +2 -0
- package/dist/sdk/p-ce4ab77c.entry.js.map +1 -0
- package/dist/sdk/p-d143e097.entry.js +2 -0
- package/dist/sdk/p-d143e097.entry.js.map +1 -0
- package/dist/sdk/{p-a69b83ec.entry.js → p-e0d2397c.entry.js} +2 -2
- package/dist/sdk/{p-80034205.entry.js → p-e6beb9d7.entry.js} +2 -2
- package/dist/sdk/p-ecc7fcff.entry.js +2 -0
- package/dist/sdk/p-ecc7fcff.entry.js.map +1 -0
- package/dist/sdk/{p-2cb6a2d0.entry.js → p-f1788e52.entry.js} +2 -2
- package/dist/sdk/p-fb665a5c.entry.js +2 -0
- package/dist/sdk/p-fb665a5c.entry.js.map +1 -0
- package/dist/sdk/p-fc67cf07.entry.js +2 -0
- package/dist/sdk/p-fc67cf07.entry.js.map +1 -0
- package/dist/sdk/sdk.esm.js +1 -1
- package/dist/sdk/u-conditional-render.entry.esm.js.map +1 -1
- package/dist/sdk/u-config.entry.esm.js.map +1 -1
- package/dist/sdk/u-error-message.entry.esm.js.map +1 -1
- package/dist/sdk/u-field.u-raw-field.entry.esm.js.map +1 -1
- package/dist/sdk/u-logout-button.entry.esm.js.map +1 -1
- package/dist/sdk/u-magic-code-field.entry.esm.js.map +1 -1
- package/dist/sdk/u-missing-fields-submit-button.entry.esm.js.map +1 -1
- package/dist/sdk/u-newsletter-checkbox.entry.esm.js.map +1 -1
- package/dist/sdk/u-newsletter-logout-button.entry.esm.js.map +1 -1
- package/dist/sdk/u-newsletter-preference-checkbox.entry.esm.js.map +1 -1
- package/dist/sdk/u-newsletter-resend-doi-button.entry.esm.js.map +1 -1
- package/dist/sdk/u-newsletter-root.entry.esm.js.map +1 -1
- package/dist/sdk/u-newsletter-toggle-subscription-button.entry.esm.js.map +1 -1
- package/dist/sdk/u-passkey.entry.esm.js.map +1 -1
- package/dist/sdk/u-profile.u-submit-button.entry.esm.js.map +1 -1
- package/dist/sdk/u-reset-password-button.entry.esm.js.map +1 -1
- package/dist/sdk/u-send-magic-code-button.entry.esm.js.map +1 -1
- package/dist/sdk/u-signin-step.entry.esm.js.map +1 -1
- package/dist/sdk/u-spinner.entry.esm.js.map +1 -1
- package/dist/sdk/u-ticketable-list.entry.esm.js.map +1 -1
- package/dist/types/api/base-client.d.ts +54 -0
- package/dist/types/api/base-service.d.ts +62 -0
- package/dist/types/api/client.d.ts +9 -31
- package/dist/types/api/index.d.ts +1 -0
- package/dist/types/api/shared.d.ts +11 -0
- package/dist/types/api/standalone.d.ts +105 -0
- package/dist/types/auth/api/auth.d.ts +71 -287
- package/dist/types/auth/api/schemas.d.ts +572 -0
- package/dist/types/auth/auth-helpers.d.ts +65 -66
- package/dist/types/auth/store/auth-store.d.ts +3 -3
- package/dist/types/components.d.ts +0 -72
- package/dist/types/newsletter/api/newsletters.d.ts +73 -196
- package/dist/types/newsletter/api/schemas.d.ts +192 -0
- package/dist/types/profile/api/profile.d.ts +12 -237
- package/dist/types/profile/api/schemas.d.ts +336 -0
- package/dist/types/profile/components/profile/profile.d.ts +1 -17
- package/dist/types/shared/components/error-message/error-message.d.ts +1 -1
- package/dist/types/ticketable/api/schemas.d.ts +108 -15
- package/dist/types/ticketable/api/subscriptions.d.ts +16 -83
- package/dist/types/ticketable/api/ticketable-service.d.ts +39 -0
- package/dist/types/ticketable/api/tickets.d.ts +16 -85
- package/dist/types/ticketable/components/ticketable-list/ticketable-list.d.ts +2 -12
- package/package.json +5 -1
- package/dist/cjs/auth-NU3DBc-6.js +0 -581
- package/dist/cjs/auth-NU3DBc-6.js.map +0 -1
- package/dist/cjs/auth-store-BaxuIp4z.js.map +0 -1
- package/dist/cjs/index-R2MKLaem.js.map +0 -1
- package/dist/cjs/newsletter-helpers-DR0vsegt.js.map +0 -1
- package/dist/collection/ticketable/api/get-with-schema.js +0 -35
- package/dist/collection/ticketable/api/get-with-schema.js.map +0 -1
- package/dist/components/auth.js +0 -580
- package/dist/components/auth.js.map +0 -1
- package/dist/esm/auth-nsjRdpvS.js +0 -579
- package/dist/esm/auth-nsjRdpvS.js.map +0 -1
- package/dist/esm/auth-store-CVvBlKGv.js.map +0 -1
- package/dist/esm/index-DSDkaHWI.js.map +0 -1
- package/dist/esm/newsletter-helpers-Dc_24im3.js.map +0 -1
- package/dist/sdk/p-0ab98e7a.entry.js +0 -2
- package/dist/sdk/p-0ab98e7a.entry.js.map +0 -1
- package/dist/sdk/p-0d324822.entry.js +0 -2
- package/dist/sdk/p-0d324822.entry.js.map +0 -1
- package/dist/sdk/p-0fb37ee9.entry.js +0 -2
- package/dist/sdk/p-0fb37ee9.entry.js.map +0 -1
- package/dist/sdk/p-3049e73f.entry.js +0 -2
- package/dist/sdk/p-3049e73f.entry.js.map +0 -1
- package/dist/sdk/p-312b919e.entry.js +0 -2
- package/dist/sdk/p-312b919e.entry.js.map +0 -1
- package/dist/sdk/p-319c5d3b.entry.js +0 -2
- package/dist/sdk/p-319c5d3b.entry.js.map +0 -1
- package/dist/sdk/p-34b98f55.entry.js +0 -2
- package/dist/sdk/p-34b98f55.entry.js.map +0 -1
- package/dist/sdk/p-4ec3302d.entry.js +0 -2
- package/dist/sdk/p-4ec3302d.entry.js.map +0 -1
- package/dist/sdk/p-568eabbc.entry.js +0 -2
- package/dist/sdk/p-568eabbc.entry.js.map +0 -1
- package/dist/sdk/p-5b40a68b.entry.js +0 -2
- package/dist/sdk/p-5b40a68b.entry.js.map +0 -1
- package/dist/sdk/p-66587fdd.entry.js +0 -2
- package/dist/sdk/p-66587fdd.entry.js.map +0 -1
- package/dist/sdk/p-88d93d64.entry.js +0 -2
- package/dist/sdk/p-90e2253e.entry.js +0 -2
- package/dist/sdk/p-90e2253e.entry.js.map +0 -1
- package/dist/sdk/p-BiILQPdb.js +0 -2
- package/dist/sdk/p-BiILQPdb.js.map +0 -1
- package/dist/sdk/p-DdUvQelg.js +0 -2
- package/dist/sdk/p-DdUvQelg.js.map +0 -1
- package/dist/sdk/p-PKvQIsOt.js +0 -2
- package/dist/sdk/p-PKvQIsOt.js.map +0 -1
- package/dist/sdk/p-a4f5940f.entry.js +0 -2
- package/dist/sdk/p-a4f5940f.entry.js.map +0 -1
- package/dist/sdk/p-aMrLKr2m.js +0 -2
- package/dist/sdk/p-aMrLKr2m.js.map +0 -1
- package/dist/sdk/p-bfb04b17.entry.js +0 -2
- package/dist/sdk/p-bfb04b17.entry.js.map +0 -1
- package/dist/sdk/p-c6816542.entry.js +0 -2
- package/dist/sdk/p-c6816542.entry.js.map +0 -1
- package/dist/sdk/p-da363474.entry.js +0 -2
- package/dist/sdk/p-da363474.entry.js.map +0 -1
- package/dist/sdk/p-e54d5d38.entry.js +0 -2
- package/dist/sdk/p-e54d5d38.entry.js.map +0 -1
- package/dist/sdk/p-e81bbd62.entry.js +0 -2
- package/dist/sdk/p-e81bbd62.entry.js.map +0 -1
- package/dist/sdk/p-effaf86b.entry.js +0 -2
- package/dist/types/ticketable/api/get-with-schema.d.ts +0 -3
- /package/dist/sdk/{p-5babee6b.entry.js.map → p-098eef67.entry.js.map} +0 -0
- /package/dist/sdk/{p-e2e7061b.entry.js.map → p-5da49d00.entry.js.map} +0 -0
- /package/dist/sdk/{p-88d93d64.entry.js.map → p-745742f1.entry.js.map} +0 -0
- /package/dist/sdk/{p-9e71a36c.entry.js.map → p-74e6523f.entry.js.map} +0 -0
- /package/dist/sdk/{p-39b61f33.entry.js.map → p-bbbec3d4.entry.js.map} +0 -0
- /package/dist/sdk/{p-f232929b.entry.js.map → p-c2fba7c8.entry.js.map} +0 -0
- /package/dist/sdk/{p-a69b83ec.entry.js.map → p-e0d2397c.entry.js.map} +0 -0
- /package/dist/sdk/{p-80034205.entry.js.map → p-e6beb9d7.entry.js.map} +0 -0
- /package/dist/sdk/{p-2cb6a2d0.entry.js.map → p-f1788e52.entry.js.map} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"newsletter-helpers-DR0vsegt.js","sources":["src/newsletter/newsletter-helpers.ts"],"sourcesContent":["import { getUnidyClient } from \"../api\";\nimport { Auth } from \"../auth/auth\";\nimport { t } from \"../i18n\";\nimport { createLogger } from \"../logger\";\nimport { Flash } from \"../shared/store/flash-store\";\nimport {\n type CheckedNewsletters,\n type ExistingSubscription,\n type NewsletterErrorIdentifier,\n newsletterStore,\n persist,\n} from \"./store/newsletter-store\";\n\nconst logger = createLogger(\"NewsletterHelpers\");\n\nconst PERSIST_KEY_PREFIX = \"unidy_newsletter_\";\n\nexport function newsletterLogout(): void {\n newsletterStore.state.preferenceToken = \"\";\n newsletterStore.state.existingSubscriptions = [];\n sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}preferenceToken`);\n sessionStorage.removeItem(`${PERSIST_KEY_PREFIX}email`);\n}\n\nexport async function resendDoi(internalName: string): Promise<boolean> {\n const { preferenceToken } = newsletterStore.state;\n\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n\n const response = await getUnidyClient().newsletters.resendDoi(\n internalName,\n { redirect_to_after_confirmation: redirectToAfterConfirmationUrl() },\n {\n preferenceToken: typeof preferenceToken === \"string\" ? preferenceToken : \"\",\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n },\n );\n\n if (response.status === 204) {\n return true;\n }\n\n if (response.status === 401) {\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n newsletterLogout();\n return false;\n }\n\n return false;\n}\n\nexport async function sendLoginEmail(email: string): Promise<void> {\n const response = await getUnidyClient().newsletters.sendLoginEmail({\n email,\n redirect_uri: redirectToAfterConfirmationUrl(),\n });\n\n if (response.status === 204) {\n Flash.info.addMessage(t(\"newsletter.success.login_email_sent\"));\n } else if (response.status === 404) {\n Flash.error.addMessage(t(\"newsletter.errors.login_email_not_found\"));\n } else {\n Flash.error.addMessage(t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" }));\n }\n}\n\nexport async function fetchSubscriptions(): Promise<void> {\n const { preferenceToken } = newsletterStore.state;\n\n // either preference token is needed or the user must be authenticated\n if (!preferenceToken && !newsletterStore.state.isAuthenticated) {\n logger.error(\"Preference token or authentication is required to fetch subscriptions\");\n return;\n }\n\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n\n newsletterStore.state.fetchingSubscriptions = true;\n\n const response = await getUnidyClient().newsletters.listSubscriptions({\n preferenceToken,\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n });\n\n newsletterStore.state.fetchingSubscriptions = false;\n\n if (response.status === 401) {\n newsletterLogout();\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n return;\n }\n\n if (response.success && response.data) {\n newsletterStore.state.existingSubscriptions = response.data.map(\n (sub): ExistingSubscription => ({\n newsletter_internal_name: sub.newsletter_internal_name,\n confirmed: sub.confirmed_at !== null,\n preference_identifiers: sub.preference_identifiers || [],\n }),\n );\n\n // init checked newsletters and preferences\n const checkedNewsletters: CheckedNewsletters = { ...newsletterStore.state.checkedNewsletters };\n for (const sub of response.data) {\n checkedNewsletters[sub.newsletter_internal_name] = [...(sub.preference_identifiers || [])];\n }\n newsletterStore.state.checkedNewsletters = checkedNewsletters;\n }\n}\n\nasync function handleAlreadySubscribedError(\n email: string,\n errors: Array<{ error_identifier: string; meta: { newsletter_internal_name: string } }>,\n): Promise<void> {\n if (newsletterStore.state.isAuthenticated || newsletterStore.state.preferenceToken) {\n const existingNames = new Set(newsletterStore.state.existingSubscriptions.map((s) => s.newsletter_internal_name));\n\n const newSubscriptions: ExistingSubscription[] = errors\n .filter((err) => err.error_identifier === \"already_subscribed\" && !existingNames.has(err.meta.newsletter_internal_name))\n .map((err) => ({\n newsletter_internal_name: err.meta.newsletter_internal_name,\n confirmed: null,\n preference_identifiers: [],\n }));\n\n if (newSubscriptions.length > 0) {\n newsletterStore.state.existingSubscriptions = [...newsletterStore.state.existingSubscriptions, ...newSubscriptions];\n }\n } else {\n await sendLoginEmail(email);\n }\n}\n\nasync function handleCreateSubscriptionRequest(email: string, internalNames: string[], showSuccessMessage = true): Promise<boolean> {\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n const { checkedNewsletters } = newsletterStore.state;\n\n const [error, response] = await getUnidyClient().newsletters.createSubscriptions(\n {\n email,\n newsletter_subscriptions: internalNames.map((newsletter) => ({\n newsletter_internal_name: newsletter,\n preference_identifiers: checkedNewsletters[newsletter] || [],\n })),\n redirect_to_after_confirmation: redirectToAfterConfirmationUrl(),\n },\n {\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n },\n );\n\n if (error === null) {\n if (response.data?.results && response.data.results.length > 0) {\n const newSubscriptions: ExistingSubscription[] = response.data.results.map((result) => ({\n newsletter_internal_name: result.newsletter_internal_name,\n confirmed: result.confirmed_at !== null,\n preference_identifiers: result.preference_identifiers || [],\n }));\n\n newsletterStore.state.existingSubscriptions = [...newsletterStore.state.existingSubscriptions, ...newSubscriptions];\n }\n\n if (showSuccessMessage) {\n Flash.success.addMessage(t(\"newsletter.success.subscribe\"));\n }\n\n return true;\n }\n\n if (error === \"unauthorized\") {\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n newsletterLogout();\n return false;\n }\n\n if (error === \"newsletter_error\") {\n const errors = response.data?.errors || [];\n const errorMap: Record<string, NewsletterErrorIdentifier> = {};\n\n // special error case which is handled differently: if user is not authenticated, we send a login email, otherwise we add the\n // already_subscribed subscriptions to the existing subscriptions\n const hasAlreadySubscribedError = errors.some((err) => err.error_identifier === \"already_subscribed\");\n if (hasAlreadySubscribedError) {\n await handleAlreadySubscribedError(email, errors);\n }\n\n const newsletterNotFoundError = errors.some((err) => err.error_identifier === \"newsletter_not_found\");\n if (newsletterNotFoundError) {\n errorMap.general = \"newsletter_not_found\";\n }\n\n const hasInvalidEmailError = errors.some(\n (err) => err.error_identifier === \"validation_error\" && err.error_details && \"email\" in err.error_details,\n );\n\n if (hasInvalidEmailError) {\n errorMap.email = \"invalid_email\";\n } else {\n for (const err of errors) {\n errorMap[err.meta.newsletter_internal_name] = err.error_identifier as NewsletterErrorIdentifier;\n }\n }\n\n newsletterStore.state.errors = errorMap;\n } else {\n Flash.error.addMessage(t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" }));\n }\n\n return false;\n}\n\nexport async function subscribeToNewsletter(internalName: string, email: string): Promise<boolean> {\n return handleCreateSubscriptionRequest(email, [internalName], false);\n}\n\nexport async function createSubscriptions({ email }: { email: string }): Promise<void> {\n const internalNames = Object.keys(newsletterStore.state.checkedNewsletters);\n await handleCreateSubscriptionRequest(email, internalNames, true);\n}\n\nexport async function deleteSubscription(internalName: string): Promise<boolean> {\n const { preferenceToken } = newsletterStore.state;\n\n // either preference token is needed or the user must be authenticated to delete a subscription\n if (!preferenceToken && !newsletterStore.state.isAuthenticated) {\n logger.error(\"Preference token or authentication is required to delete a subscription\");\n return false;\n }\n\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n\n const response = await getUnidyClient().newsletters.deleteSubscription(internalName, {\n preferenceToken,\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n });\n\n if (response.status === 200 && response.data?.new_preference_token) {\n // if user is not authenticated, we need to store the new preference token which is used for the next request\n if (!newsletterStore.state.isAuthenticated) {\n newsletterStore.state.preferenceToken = response.data.new_preference_token;\n persist(\"preferenceToken\");\n }\n\n newsletterStore.state.existingSubscriptions = newsletterStore.state.existingSubscriptions.filter(\n (sub) => sub.newsletter_internal_name !== internalName,\n );\n\n // Reset checked preferences to defaults (preferences marked with checked='true')\n const defaultPrefs = newsletterStore.state.defaultPreferences[internalName];\n newsletterStore.state.checkedNewsletters = {\n ...newsletterStore.state.checkedNewsletters,\n [internalName]: defaultPrefs ? [...defaultPrefs] : [],\n };\n\n return true;\n }\n\n if (response.status === 204) {\n newsletterLogout();\n\n newsletterStore.state.checkedNewsletters = {};\n return true;\n }\n\n if (response.status === 401) {\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n newsletterLogout();\n return false;\n }\n\n if (response.status === 422) {\n return false;\n }\n\n Flash.error.addMessage(t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" }));\n return false;\n}\n\nexport function getSubscription(internalName: string): ExistingSubscription | undefined {\n return newsletterStore.state.existingSubscriptions.find((sub) => sub.newsletter_internal_name === internalName);\n}\n\nexport function isSubscribed(internalName: string): boolean {\n return newsletterStore.state.existingSubscriptions.some((sub) => sub.newsletter_internal_name === internalName);\n}\n\nexport function isConfirmed(internalName: string): boolean {\n const sub = getSubscription(internalName);\n return sub?.confirmed ?? false;\n}\n\nfunction redirectToAfterConfirmationUrl(): string {\n const baseUrl = `${location.origin}${location.pathname}`;\n const params = new URLSearchParams(location.search);\n for (const key of [\"email\", \"newsletter_error\"]) {\n params.delete(key);\n }\n const queryString = params.toString();\n return queryString ? `${baseUrl}?${queryString}` : baseUrl;\n}\n\nexport function getSubscriptionPreferences(internalName: string): string[] {\n const subscription = getSubscription(internalName);\n return subscription?.preference_identifiers || [];\n}\n\nexport async function updateSubscriptionPreferences(internalName: string): Promise<boolean> {\n const { preferenceToken } = newsletterStore.state;\n\n // Either preference token is needed or the user must be authenticated\n if (!preferenceToken && !newsletterStore.state.isAuthenticated) {\n logger.error(\"Preference token or authentication is required to update subscription preferences\");\n return false;\n }\n\n // Check if the subscription exists\n if (!isSubscribed(internalName)) {\n logger.error(`Cannot update preferences: not subscribed to newsletter '${internalName}'`);\n return false;\n }\n\n const authInstance = await Auth.getInstance();\n const idToken = await authInstance.getToken();\n\n const preferenceIdentifiers = newsletterStore.state.checkedNewsletters[internalName] || [];\n\n const response = await getUnidyClient().newsletters.updateSubscription(\n internalName,\n { preference_identifiers: preferenceIdentifiers },\n {\n preferenceToken,\n idToken: typeof idToken === \"string\" ? idToken : \"\",\n },\n );\n\n if (response.status === 401) {\n Flash.error.addMessage(t(\"newsletter.errors.unauthorized\"));\n newsletterLogout();\n return false;\n }\n\n if (response.success && response.data) {\n // Update the local subscription with the new preferences\n const subscriptionIndex = newsletterStore.state.existingSubscriptions.findIndex((sub) => sub.newsletter_internal_name === internalName);\n\n if (subscriptionIndex !== -1) {\n const updatedSubscriptions = [...newsletterStore.state.existingSubscriptions];\n updatedSubscriptions[subscriptionIndex] = {\n ...updatedSubscriptions[subscriptionIndex],\n preference_identifiers: response.data.preference_identifiers || [],\n };\n newsletterStore.state.existingSubscriptions = updatedSubscriptions;\n }\n\n Flash.success.addMessage(t(\"newsletter.success.preferences_updated\"));\n return true;\n }\n\n Flash.error.addMessage(t(\"errors.unknown\", { defaultValue: \"An unknown error occurred\" }));\n return false;\n}\n"],"names":["createLogger","newsletterStore","Auth","getUnidyClient","Flash","t","persist"],"mappings":"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"}
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import * as Sentry from "@sentry/browser";
|
|
2
|
-
export function getWithSchema(client, returnSchema, urlBuilder, paramSchema) {
|
|
3
|
-
const fn = async (args, params) => {
|
|
4
|
-
// Build URL
|
|
5
|
-
const baseUrl = urlBuilder(args);
|
|
6
|
-
// Validate and parse params with Zod if provided
|
|
7
|
-
let queryString = "";
|
|
8
|
-
if (paramSchema && params) {
|
|
9
|
-
const validatedParams = paramSchema.parse(params);
|
|
10
|
-
queryString = `?${new URLSearchParams(validatedParams).toString()}`;
|
|
11
|
-
}
|
|
12
|
-
const fullUrl = `${baseUrl}${queryString}`;
|
|
13
|
-
const response = await client.get(fullUrl);
|
|
14
|
-
if (!response.success || !response.data) {
|
|
15
|
-
return response;
|
|
16
|
-
}
|
|
17
|
-
const parsed = returnSchema.safeParse(response.data);
|
|
18
|
-
if (!parsed.success) {
|
|
19
|
-
Sentry.captureException(parsed.error);
|
|
20
|
-
return {
|
|
21
|
-
...response,
|
|
22
|
-
success: false,
|
|
23
|
-
error: "Invalid response format",
|
|
24
|
-
data: undefined,
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
return {
|
|
28
|
-
...response,
|
|
29
|
-
data: parsed.data,
|
|
30
|
-
};
|
|
31
|
-
};
|
|
32
|
-
// biome-ignore lint/suspicious/noExplicitAny: fn can literally be any function
|
|
33
|
-
return fn;
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=get-with-schema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"get-with-schema.js","sourceRoot":"","sources":["../../../src/ticketable/api/get-with-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAC;AAI1C,MAAM,UAAU,aAAa,CAC3B,MAAiB,EACjB,YAAkC,EAClC,UAAmC,EACnC,WAAkC;IAIlC,MAAM,EAAE,GAAG,KAAK,EAAE,IAAW,EAAE,MAAgB,EAAE,EAAE;QACjD,YAAY;QACZ,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;QAEjC,iDAAiD;QACjD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,WAAW,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,eAAe,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClD,WAAW,GAAG,IAAI,IAAI,eAAe,CAAC,eAAyC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;QAChG,CAAC;QAED,MAAM,OAAO,GAAG,GAAG,OAAO,GAAG,WAAW,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAU,OAAO,CAAC,CAAC;QAEpD,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,OAAO,QAAgC,CAAC;QAC1C,CAAC;QAED,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAErD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACtC,OAAO;gBACL,GAAG,QAAQ;gBACX,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,yBAAyB;gBAChC,IAAI,EAAE,SAAS;aAChB,CAAC;QACJ,CAAC;QAED,OAAO;YACL,GAAG,QAAQ;YACX,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAC;IACJ,CAAC,CAAC;IACF,+EAA+E;IAC/E,OAAO,EAAS,CAAC;AACnB,CAAC","sourcesContent":["import * as Sentry from \"@sentry/browser\";\nimport type { ApiClient, ApiResponse } from \"../../api\";\nimport type * as z from \"zod\";\n\nexport function getWithSchema<TReturn, TArgs extends object, TParams = undefined>(\n client: ApiClient,\n returnSchema: z.ZodSchema<TReturn>,\n urlBuilder: (args: TArgs) => string,\n paramSchema?: z.ZodSchema<TParams>,\n): TParams extends undefined\n ? (args: TArgs) => Promise<ApiResponse<TReturn>>\n : (args: TArgs, params?: TParams) => Promise<ApiResponse<TReturn>> {\n const fn = async (args: TArgs, params?: TParams) => {\n // Build URL\n const baseUrl = urlBuilder(args);\n\n // Validate and parse params with Zod if provided\n let queryString = \"\";\n if (paramSchema && params) {\n const validatedParams = paramSchema.parse(params);\n queryString = `?${new URLSearchParams(validatedParams as Record<string, string>).toString()}`;\n }\n\n const fullUrl = `${baseUrl}${queryString}`;\n const response = await client.get<unknown>(fullUrl);\n\n if (!response.success || !response.data) {\n return response as ApiResponse<TReturn>;\n }\n\n const parsed = returnSchema.safeParse(response.data);\n\n if (!parsed.success) {\n Sentry.captureException(parsed.error);\n return {\n ...response,\n success: false,\n error: \"Invalid response format\",\n data: undefined,\n };\n }\n\n return {\n ...response,\n data: parsed.data,\n };\n };\n // biome-ignore lint/suspicious/noExplicitAny: fn can literally be any function\n return fn as any;\n}\n"]}
|
package/dist/components/auth.js
DELETED
|
@@ -1,580 +0,0 @@
|
|
|
1
|
-
import { a as authStore, s as state } from './auth-store.js';
|
|
2
|
-
import { t } from './i18n.js';
|
|
3
|
-
import { c as createLogger } from './logger.js';
|
|
4
|
-
import { s as state$1 } from './profile-store.js';
|
|
5
|
-
import { c as clearUrlParam } from './component-utils.js';
|
|
6
|
-
import { F as Flash } from './flash-store.js';
|
|
7
|
-
import { w as waitForConfig } from './unidy-store.js';
|
|
8
|
-
import { g as getUnidyClient } from './index2.js';
|
|
9
|
-
import { Y as captureException } from './exports.js';
|
|
10
|
-
|
|
11
|
-
class InvalidTokenError extends Error {
|
|
12
|
-
}
|
|
13
|
-
InvalidTokenError.prototype.name = "InvalidTokenError";
|
|
14
|
-
function b64DecodeUnicode(str) {
|
|
15
|
-
return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {
|
|
16
|
-
let code = p.charCodeAt(0).toString(16).toUpperCase();
|
|
17
|
-
if (code.length < 2) {
|
|
18
|
-
code = "0" + code;
|
|
19
|
-
}
|
|
20
|
-
return "%" + code;
|
|
21
|
-
}));
|
|
22
|
-
}
|
|
23
|
-
function base64UrlDecode(str) {
|
|
24
|
-
let output = str.replace(/-/g, "+").replace(/_/g, "/");
|
|
25
|
-
switch (output.length % 4) {
|
|
26
|
-
case 0:
|
|
27
|
-
break;
|
|
28
|
-
case 2:
|
|
29
|
-
output += "==";
|
|
30
|
-
break;
|
|
31
|
-
case 3:
|
|
32
|
-
output += "=";
|
|
33
|
-
break;
|
|
34
|
-
default:
|
|
35
|
-
throw new Error("base64 string is not of the correct length");
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
return b64DecodeUnicode(output);
|
|
39
|
-
}
|
|
40
|
-
catch (err) {
|
|
41
|
-
return atob(output);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
function jwtDecode(token, options) {
|
|
45
|
-
if (typeof token !== "string") {
|
|
46
|
-
throw new InvalidTokenError("Invalid token specified: must be a string");
|
|
47
|
-
}
|
|
48
|
-
options || (options = {});
|
|
49
|
-
const pos = options.header === true ? 0 : 1;
|
|
50
|
-
const part = token.split(".")[pos];
|
|
51
|
-
if (typeof part !== "string") {
|
|
52
|
-
throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);
|
|
53
|
-
}
|
|
54
|
-
let decoded;
|
|
55
|
-
try {
|
|
56
|
-
decoded = base64UrlDecode(part);
|
|
57
|
-
}
|
|
58
|
-
catch (e) {
|
|
59
|
-
throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);
|
|
60
|
-
}
|
|
61
|
-
try {
|
|
62
|
-
return JSON.parse(decoded);
|
|
63
|
-
}
|
|
64
|
-
catch (e) {
|
|
65
|
-
throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
const logger = createLogger("PasskeyAuth");
|
|
70
|
-
const PASSKEY_ERRORS = {
|
|
71
|
-
NotSupportedError: "passkey_not_supported",
|
|
72
|
-
NotAllowedError: "passkey_cancelled",
|
|
73
|
-
SecurityError: "passkey_security_error",
|
|
74
|
-
InvalidStateError: "passkey_invalid_state",
|
|
75
|
-
};
|
|
76
|
-
function decodeBase64Url(base64url) {
|
|
77
|
-
const base64 = base64url.replace(/-/g, "+").replace(/_/g, "/");
|
|
78
|
-
const padded = base64 + "=".repeat((4 - (base64.length % 4)) % 4);
|
|
79
|
-
return Uint8Array.from(atob(padded), (c) => c.charCodeAt(0));
|
|
80
|
-
}
|
|
81
|
-
function buildPublicKeyOptions(options) {
|
|
82
|
-
return {
|
|
83
|
-
challenge: Uint8Array.from(atob(options.challenge), (c) => c.charCodeAt(0)),
|
|
84
|
-
timeout: options.timeout || 60000,
|
|
85
|
-
rpId: options.rpId,
|
|
86
|
-
userVerification: options.userVerification || "required",
|
|
87
|
-
allowCredentials: options.allowCredentials?.map((cred) => ({
|
|
88
|
-
...cred,
|
|
89
|
-
id: decodeBase64Url(cred.id),
|
|
90
|
-
})),
|
|
91
|
-
};
|
|
92
|
-
}
|
|
93
|
-
function formatCredentialForServer(credential) {
|
|
94
|
-
const response = credential.response;
|
|
95
|
-
return {
|
|
96
|
-
id: credential.id,
|
|
97
|
-
rawId: btoa(String.fromCharCode(...new Uint8Array(credential.rawId))),
|
|
98
|
-
response: {
|
|
99
|
-
authenticatorData: btoa(String.fromCharCode(...new Uint8Array(response.authenticatorData))),
|
|
100
|
-
clientDataJSON: btoa(String.fromCharCode(...new Uint8Array(response.clientDataJSON))),
|
|
101
|
-
signature: btoa(String.fromCharCode(...new Uint8Array(response.signature))),
|
|
102
|
-
},
|
|
103
|
-
type: credential.type,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
106
|
-
function extractAndSetSignInId(tokenResponse) {
|
|
107
|
-
if (tokenResponse.sid) {
|
|
108
|
-
authStore.setSignInId(tokenResponse.sid);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
// Fallback: extract sid from JWT token payload
|
|
112
|
-
try {
|
|
113
|
-
const decoded = jwtDecode(tokenResponse.jwt);
|
|
114
|
-
if (decoded.sid) {
|
|
115
|
-
authStore.setSignInId(decoded.sid);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
// Failed to decode JWT token to extract sid, continue without it
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
function handlePasskeyError(error) {
|
|
123
|
-
logger.error("Passkey error:", error);
|
|
124
|
-
let errorMessage = "passkey_error";
|
|
125
|
-
if (error instanceof DOMException) {
|
|
126
|
-
errorMessage = PASSKEY_ERRORS[error.name] || "passkey_error";
|
|
127
|
-
}
|
|
128
|
-
authStore.setFieldError("passkey", errorMessage);
|
|
129
|
-
authStore.setLoading(false);
|
|
130
|
-
}
|
|
131
|
-
async function authenticateWithPasskey(client, onSuccess) {
|
|
132
|
-
authStore.setLoading(true);
|
|
133
|
-
authStore.clearErrors();
|
|
134
|
-
if (!window.PublicKeyCredential) {
|
|
135
|
-
authStore.setFieldError("passkey", "passkey_not_supported");
|
|
136
|
-
authStore.setLoading(false);
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
139
|
-
try {
|
|
140
|
-
const [optionsError, options] = await client.auth.getPasskeyOptions(state.sid || undefined);
|
|
141
|
-
if (optionsError || !options) {
|
|
142
|
-
authStore.setFieldError("passkey", optionsError || "bad_request");
|
|
143
|
-
authStore.setLoading(false);
|
|
144
|
-
return;
|
|
145
|
-
}
|
|
146
|
-
const publicKeyOptions = buildPublicKeyOptions(options);
|
|
147
|
-
const credential = (await navigator.credentials.get({
|
|
148
|
-
publicKey: publicKeyOptions,
|
|
149
|
-
}));
|
|
150
|
-
if (!credential) {
|
|
151
|
-
authStore.setFieldError("passkey", "passkey_cancelled");
|
|
152
|
-
authStore.setLoading(false);
|
|
153
|
-
return;
|
|
154
|
-
}
|
|
155
|
-
const formattedCredential = formatCredentialForServer(credential);
|
|
156
|
-
const [verifyError, tkResponse] = await client.auth.authenticateWithPasskey(formattedCredential);
|
|
157
|
-
const tokenResponse = tkResponse;
|
|
158
|
-
if (verifyError || !tokenResponse) {
|
|
159
|
-
authStore.setGlobalError("auth", verifyError || "authentication_failed");
|
|
160
|
-
authStore.setLoading(false);
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
authStore.setToken(tokenResponse.jwt);
|
|
164
|
-
extractAndSetSignInId(tokenResponse);
|
|
165
|
-
onSuccess(tokenResponse);
|
|
166
|
-
}
|
|
167
|
-
catch (error) {
|
|
168
|
-
handlePasskeyError(error);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
class AuthHelpers {
|
|
173
|
-
client;
|
|
174
|
-
logger = createLogger("AuthHelpers");
|
|
175
|
-
static PASSWORD_ERROR_IDENTIFIERS = [
|
|
176
|
-
"invalid_password",
|
|
177
|
-
"password_required",
|
|
178
|
-
"password_not_set",
|
|
179
|
-
"passwords_do_not_match",
|
|
180
|
-
];
|
|
181
|
-
constructor(client) {
|
|
182
|
-
this.client = client;
|
|
183
|
-
}
|
|
184
|
-
async createSignIn(email, password, sendMagicCode) {
|
|
185
|
-
if (!email) {
|
|
186
|
-
throw new Error(t("errors.required_field", { field: "Email" }));
|
|
187
|
-
}
|
|
188
|
-
authStore.setLoading(true);
|
|
189
|
-
authStore.clearErrors();
|
|
190
|
-
const [error, response] = await this.client.auth.createSignIn(email, password, sendMagicCode);
|
|
191
|
-
if (error) {
|
|
192
|
-
this.handleAuthError(error, response);
|
|
193
|
-
return;
|
|
194
|
-
}
|
|
195
|
-
if (password) {
|
|
196
|
-
const token = jwtDecode(response.jwt);
|
|
197
|
-
authStore.setSignInId(token.sid);
|
|
198
|
-
authStore.setToken(response.jwt);
|
|
199
|
-
authStore.setLoading(false);
|
|
200
|
-
authStore.getRootComponentRef()?.onAuth(response);
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
if (sendMagicCode) {
|
|
204
|
-
authStore.setSignInId(response.sid);
|
|
205
|
-
authStore.setMagicCodeStep("sent");
|
|
206
|
-
authStore.setStep("magic-code");
|
|
207
|
-
authStore.setLoading(false);
|
|
208
|
-
return [error, response];
|
|
209
|
-
}
|
|
210
|
-
const signInResponse = response;
|
|
211
|
-
authStore.setStep("verification");
|
|
212
|
-
authStore.setEmail(email);
|
|
213
|
-
authStore.setSignInId(signInResponse.sid);
|
|
214
|
-
authStore.setLoginOptions(signInResponse.login_options);
|
|
215
|
-
authStore.setLoading(false);
|
|
216
|
-
}
|
|
217
|
-
async authenticateWithPassword(password) {
|
|
218
|
-
if (!state.sid) {
|
|
219
|
-
throw new Error(t("errors.no_sign_in_id"));
|
|
220
|
-
}
|
|
221
|
-
if (!password) {
|
|
222
|
-
throw new Error(t("errors.required_field", { field: "Password" }));
|
|
223
|
-
}
|
|
224
|
-
authStore.setLoading(true);
|
|
225
|
-
authStore.clearErrors();
|
|
226
|
-
const [error, response] = await this.client.auth.authenticateWithPassword(state.sid, password);
|
|
227
|
-
if (error) {
|
|
228
|
-
this.handleAuthError(error, response);
|
|
229
|
-
}
|
|
230
|
-
else {
|
|
231
|
-
authStore.setLoading(false);
|
|
232
|
-
this.handleAuthSuccess(response);
|
|
233
|
-
return;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
handleAuthError(error, response) {
|
|
237
|
-
switch (error) {
|
|
238
|
-
case "account_not_found":
|
|
239
|
-
authStore.setFieldError("email", error);
|
|
240
|
-
break;
|
|
241
|
-
case "missing_required_fields": {
|
|
242
|
-
authStore.setMissingFields(response.fields);
|
|
243
|
-
state$1.data = response.fields;
|
|
244
|
-
if (response.sid) {
|
|
245
|
-
authStore.setSignInId(response.sid);
|
|
246
|
-
}
|
|
247
|
-
authStore.setStep("missing-fields");
|
|
248
|
-
break;
|
|
249
|
-
}
|
|
250
|
-
default:
|
|
251
|
-
if (AuthHelpers.PASSWORD_ERROR_IDENTIFIERS.includes(error)) {
|
|
252
|
-
authStore.setFieldError("password", error);
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
// e.g. "account_locked", "internal_server_error"
|
|
256
|
-
authStore.setGlobalError("auth", error);
|
|
257
|
-
}
|
|
258
|
-
break;
|
|
259
|
-
}
|
|
260
|
-
authStore.setLoading(false);
|
|
261
|
-
}
|
|
262
|
-
async logout() {
|
|
263
|
-
const [error, _] = await this.client.auth.signOut(state.sid);
|
|
264
|
-
if (error) {
|
|
265
|
-
authStore.setGlobalError("auth", error);
|
|
266
|
-
}
|
|
267
|
-
return [error, _];
|
|
268
|
-
}
|
|
269
|
-
async refreshToken() {
|
|
270
|
-
if (state.step === "missing-fields") {
|
|
271
|
-
return;
|
|
272
|
-
}
|
|
273
|
-
this.extractSignInIdFromQuery();
|
|
274
|
-
if (!state.sid) {
|
|
275
|
-
this.logger.warn("No sign-in ID in the session");
|
|
276
|
-
return;
|
|
277
|
-
}
|
|
278
|
-
const [error, response] = await this.client.auth.refreshToken(state.sid);
|
|
279
|
-
if (error) {
|
|
280
|
-
authStore.reset();
|
|
281
|
-
authStore.setGlobalError("auth", error);
|
|
282
|
-
}
|
|
283
|
-
else {
|
|
284
|
-
authStore.setToken(response.jwt);
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
handleSocialAuthRedirect() {
|
|
288
|
-
// missing required fields flow
|
|
289
|
-
const url = new URL(window.location.href);
|
|
290
|
-
const params = url.searchParams;
|
|
291
|
-
const error = params.get("error");
|
|
292
|
-
if (error !== "missing_required_fields") {
|
|
293
|
-
return;
|
|
294
|
-
}
|
|
295
|
-
const fieldsFromUrl = params.get("fields");
|
|
296
|
-
if (!fieldsFromUrl) {
|
|
297
|
-
return;
|
|
298
|
-
}
|
|
299
|
-
const signInId = params.get("sid");
|
|
300
|
-
if (signInId) {
|
|
301
|
-
authStore.setSignInId(signInId);
|
|
302
|
-
}
|
|
303
|
-
else {
|
|
304
|
-
return;
|
|
305
|
-
}
|
|
306
|
-
try {
|
|
307
|
-
const fields = JSON.parse(fieldsFromUrl);
|
|
308
|
-
authStore.setMissingFields(fields);
|
|
309
|
-
state$1.data = fields;
|
|
310
|
-
authStore.setStep("missing-fields");
|
|
311
|
-
params.delete("error");
|
|
312
|
-
params.delete("fields");
|
|
313
|
-
const cleanUrl = `${url.origin}${url.pathname}${url.hash}`;
|
|
314
|
-
window.history.replaceState(null, "", cleanUrl);
|
|
315
|
-
}
|
|
316
|
-
catch (e) {
|
|
317
|
-
this.logger.error("Failed to parse missing fields payload:", e);
|
|
318
|
-
authStore.setGlobalError("auth", "invalid_required_fields_payload");
|
|
319
|
-
}
|
|
320
|
-
}
|
|
321
|
-
async sendMagicCode() {
|
|
322
|
-
if (!state.sid && state.step !== "single-login") {
|
|
323
|
-
throw new Error(t("errors.no_sign_in_id"));
|
|
324
|
-
}
|
|
325
|
-
authStore.setMagicCodeStep("requested");
|
|
326
|
-
authStore.setLoading(true);
|
|
327
|
-
authStore.clearErrors();
|
|
328
|
-
if (state.step === "single-login") {
|
|
329
|
-
const [error, response] = await this.createSignIn(state.email, undefined, true);
|
|
330
|
-
authStore.setLoading(false);
|
|
331
|
-
return [error, response];
|
|
332
|
-
}
|
|
333
|
-
const [error, response] = await this.client.auth.sendMagicCode(state.sid);
|
|
334
|
-
authStore.setLoading(false);
|
|
335
|
-
authStore.setStep("magic-code");
|
|
336
|
-
if (!error) {
|
|
337
|
-
authStore.setMagicCodeStep("sent");
|
|
338
|
-
return [null, response];
|
|
339
|
-
}
|
|
340
|
-
authStore.setFieldError("magicCode", error);
|
|
341
|
-
if (error === "magic_code_recently_created") {
|
|
342
|
-
authStore.setMagicCodeStep("sent");
|
|
343
|
-
}
|
|
344
|
-
return [error, response];
|
|
345
|
-
}
|
|
346
|
-
async authenticateWithMagicCode(code) {
|
|
347
|
-
if (!state.sid) {
|
|
348
|
-
throw new Error(t("errors.no_sign_in_id"));
|
|
349
|
-
}
|
|
350
|
-
if (!code) {
|
|
351
|
-
throw new Error(t("errors.magic_code_is_missing"));
|
|
352
|
-
}
|
|
353
|
-
authStore.setLoading(true);
|
|
354
|
-
authStore.clearErrors();
|
|
355
|
-
const [error, response] = await this.client.auth.authenticateWithMagicCode(state.sid, code);
|
|
356
|
-
if (!error) {
|
|
357
|
-
this.handleAuthSuccess(response);
|
|
358
|
-
return;
|
|
359
|
-
}
|
|
360
|
-
if (error === "missing_required_fields") {
|
|
361
|
-
this.handleMissingFields(response);
|
|
362
|
-
return;
|
|
363
|
-
}
|
|
364
|
-
authStore.setLoading(false);
|
|
365
|
-
authStore.setFieldError("magicCode", error);
|
|
366
|
-
}
|
|
367
|
-
async sendResetPasswordEmail() {
|
|
368
|
-
if (!state.sid) {
|
|
369
|
-
throw new Error(t("errors.no_sign_in_id"));
|
|
370
|
-
}
|
|
371
|
-
authStore.setLoading(true);
|
|
372
|
-
authStore.setResetPasswordStep("requested");
|
|
373
|
-
const [error, _] = await this.client.auth.sendResetPasswordEmail(state.sid, window.location.href);
|
|
374
|
-
if (error) {
|
|
375
|
-
authStore.setFieldError("resetPassword", error);
|
|
376
|
-
}
|
|
377
|
-
else {
|
|
378
|
-
authStore.setResetPasswordStep("sent");
|
|
379
|
-
authStore.clearErrors();
|
|
380
|
-
}
|
|
381
|
-
authStore.setLoading(false);
|
|
382
|
-
}
|
|
383
|
-
async handleResetPasswordRedirect() {
|
|
384
|
-
const url = new URL(window.location.href);
|
|
385
|
-
const params = url.searchParams;
|
|
386
|
-
const resetToken = params.get("reset_password_token");
|
|
387
|
-
if (!resetToken) {
|
|
388
|
-
return false;
|
|
389
|
-
}
|
|
390
|
-
if (state.sid) {
|
|
391
|
-
authStore.setLoading(true);
|
|
392
|
-
const [error] = await this.client.auth.validateResetPasswordToken(state.sid, resetToken);
|
|
393
|
-
if (error) {
|
|
394
|
-
authStore.setFieldError("resetPassword", error);
|
|
395
|
-
authStore.setStep("reset-password");
|
|
396
|
-
authStore.setLoading(false);
|
|
397
|
-
return false;
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
authStore.setResetToken(resetToken);
|
|
401
|
-
authStore.setStep("reset-password");
|
|
402
|
-
authStore.setLoading(false);
|
|
403
|
-
return true;
|
|
404
|
-
}
|
|
405
|
-
async resetPassword() {
|
|
406
|
-
if (!state.resetPassword.token) {
|
|
407
|
-
throw new Error("No reset token available");
|
|
408
|
-
}
|
|
409
|
-
if (!state.resetPassword.newPassword) {
|
|
410
|
-
authStore.setFieldError("resetPassword", "password_required");
|
|
411
|
-
return;
|
|
412
|
-
}
|
|
413
|
-
if (state.resetPassword.passwordConfirmation &&
|
|
414
|
-
state.resetPassword.newPassword !== state.resetPassword.passwordConfirmation) {
|
|
415
|
-
authStore.setFieldError("resetPassword", "passwords_do_not_match");
|
|
416
|
-
return;
|
|
417
|
-
}
|
|
418
|
-
authStore.setLoading(true);
|
|
419
|
-
authStore.clearErrors();
|
|
420
|
-
const [error, response] = await this.client.auth.resetPassword(state.sid, state.resetPassword.token, state.resetPassword.newPassword, state.resetPassword.passwordConfirmation);
|
|
421
|
-
if (error) {
|
|
422
|
-
authStore.setFieldError("resetPassword", error);
|
|
423
|
-
// TODO: add proper password requirements handling --> for now this is fine
|
|
424
|
-
if (error === "invalid_password") {
|
|
425
|
-
authStore.setFieldError("password", response.error_details?.password.map((p) => t(`errors.password_requirements.${p}`)).join("\n"));
|
|
426
|
-
}
|
|
427
|
-
}
|
|
428
|
-
else {
|
|
429
|
-
authStore.setStep("email");
|
|
430
|
-
authStore.updateResetPassword({
|
|
431
|
-
step: "completed",
|
|
432
|
-
token: null,
|
|
433
|
-
newPassword: "",
|
|
434
|
-
passwordConfirmation: "",
|
|
435
|
-
});
|
|
436
|
-
clearUrlParam("reset_password_token");
|
|
437
|
-
Flash.success.addMessage("Password reset successfully");
|
|
438
|
-
}
|
|
439
|
-
authStore.setLoading(false);
|
|
440
|
-
}
|
|
441
|
-
authenticateWithPasskey() {
|
|
442
|
-
return authenticateWithPasskey(this.client, (response) => this.handleAuthSuccess(response));
|
|
443
|
-
}
|
|
444
|
-
extractSignInIdFromQuery() {
|
|
445
|
-
const sid = clearUrlParam("sid");
|
|
446
|
-
if (sid) {
|
|
447
|
-
authStore.setSignInId(sid);
|
|
448
|
-
}
|
|
449
|
-
}
|
|
450
|
-
handleMissingFields(response) {
|
|
451
|
-
authStore.setMissingFields(response.fields);
|
|
452
|
-
state$1.data = response.fields;
|
|
453
|
-
authStore.setStep("missing-fields");
|
|
454
|
-
authStore.setLoading(false);
|
|
455
|
-
}
|
|
456
|
-
handleAuthSuccess(response) {
|
|
457
|
-
authStore.setToken(response.jwt);
|
|
458
|
-
authStore.setLoading(false);
|
|
459
|
-
authStore.getRootComponentRef()?.onAuth(response);
|
|
460
|
-
}
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
class Auth {
|
|
464
|
-
static instance;
|
|
465
|
-
helpers;
|
|
466
|
-
constructor(client) {
|
|
467
|
-
this.helpers = new AuthHelpers(client);
|
|
468
|
-
this.helpers.handleSocialAuthRedirect();
|
|
469
|
-
this.helpers.handleResetPasswordRedirect();
|
|
470
|
-
}
|
|
471
|
-
static Errors = {
|
|
472
|
-
email: {
|
|
473
|
-
NOT_FOUND: "account_not_found",
|
|
474
|
-
},
|
|
475
|
-
magicCode: {
|
|
476
|
-
RECENTLY_CREATED: "magic_code_recently_created",
|
|
477
|
-
NOT_VALID: "magic_code_not_valid",
|
|
478
|
-
EXPIRED: "magic_code_expired",
|
|
479
|
-
USED: "magic_code_used",
|
|
480
|
-
},
|
|
481
|
-
password: {
|
|
482
|
-
INVALID: "invalid_password",
|
|
483
|
-
NOT_SET: "password_not_set",
|
|
484
|
-
RESET_PASSWORD_ALREADY_SENT: "reset_password_already_sent",
|
|
485
|
-
},
|
|
486
|
-
general: {
|
|
487
|
-
ACCOUNT_LOCKED: "account_locked",
|
|
488
|
-
SIGN_IN_EXPIRED: "sign_in_expired",
|
|
489
|
-
},
|
|
490
|
-
};
|
|
491
|
-
static async getInstance() {
|
|
492
|
-
if (!Auth.isInitialized()) {
|
|
493
|
-
await waitForConfig();
|
|
494
|
-
return Auth.initialize(getUnidyClient());
|
|
495
|
-
}
|
|
496
|
-
return Auth.instance;
|
|
497
|
-
}
|
|
498
|
-
static initialize(client) {
|
|
499
|
-
Auth.instance = new Auth(client);
|
|
500
|
-
if (Auth.instance.isTokenValid(state.token)) {
|
|
501
|
-
authStore.setAuthenticated(true);
|
|
502
|
-
}
|
|
503
|
-
return Auth.instance;
|
|
504
|
-
}
|
|
505
|
-
static isInitialized() {
|
|
506
|
-
return !!Auth.instance;
|
|
507
|
-
}
|
|
508
|
-
isTokenValid(token) {
|
|
509
|
-
try {
|
|
510
|
-
let decoded;
|
|
511
|
-
if (typeof token === "string") {
|
|
512
|
-
decoded = jwtDecode(token);
|
|
513
|
-
}
|
|
514
|
-
else {
|
|
515
|
-
decoded = token;
|
|
516
|
-
}
|
|
517
|
-
if (!decoded)
|
|
518
|
-
return false;
|
|
519
|
-
const currentTime = Date.now() / 1000;
|
|
520
|
-
return decoded.exp > currentTime;
|
|
521
|
-
}
|
|
522
|
-
catch (error) {
|
|
523
|
-
captureException(error);
|
|
524
|
-
return false;
|
|
525
|
-
}
|
|
526
|
-
}
|
|
527
|
-
async isAuthenticated() {
|
|
528
|
-
const token = await this.getToken();
|
|
529
|
-
return typeof token === "string";
|
|
530
|
-
}
|
|
531
|
-
async getToken() {
|
|
532
|
-
const currentToken = state.token;
|
|
533
|
-
if (currentToken && this.isTokenValid(currentToken)) {
|
|
534
|
-
return currentToken;
|
|
535
|
-
}
|
|
536
|
-
await this.helpers.refreshToken();
|
|
537
|
-
if (state.globalErrors.auth || !state.token) {
|
|
538
|
-
return this.createAuthError(t("errors.refresh_failed"), "REFRESH_FAILED", true);
|
|
539
|
-
}
|
|
540
|
-
return state.token;
|
|
541
|
-
}
|
|
542
|
-
async userData() {
|
|
543
|
-
const token = await this.getToken();
|
|
544
|
-
if (typeof token !== "string") {
|
|
545
|
-
return null;
|
|
546
|
-
}
|
|
547
|
-
if (!token) {
|
|
548
|
-
return null;
|
|
549
|
-
}
|
|
550
|
-
try {
|
|
551
|
-
return jwtDecode(token);
|
|
552
|
-
}
|
|
553
|
-
catch (error) {
|
|
554
|
-
captureException(error);
|
|
555
|
-
return null;
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
async logout() {
|
|
559
|
-
const [error, _] = await this.helpers.logout();
|
|
560
|
-
if (error) {
|
|
561
|
-
return this.createAuthError(t("errors.sign_out_failed", { reason: error }), "SIGN_OUT_FAILED", false);
|
|
562
|
-
}
|
|
563
|
-
authStore.reset();
|
|
564
|
-
return true;
|
|
565
|
-
}
|
|
566
|
-
getEmail() {
|
|
567
|
-
return state.email;
|
|
568
|
-
}
|
|
569
|
-
createAuthError(message, code, requiresReauth = false) {
|
|
570
|
-
const error = new Error(message);
|
|
571
|
-
error.code = code;
|
|
572
|
-
error.requiresReauth = requiresReauth;
|
|
573
|
-
return error;
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
|
|
577
|
-
export { Auth as A };
|
|
578
|
-
//# sourceMappingURL=auth.js.map
|
|
579
|
-
|
|
580
|
-
//# sourceMappingURL=auth.js.map
|