@unidy.io/sdk 1.1.4 → 1.1.6

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.
Files changed (210) hide show
  1. package/dist/cjs/{auth-NU3DBc-6.js → auth-B83pzi0f.js} +126 -125
  2. package/dist/cjs/auth-B83pzi0f.js.map +1 -0
  3. package/dist/cjs/{auth-store-BaxuIp4z.js → auth-store-DPHWWmXf.js} +2 -4
  4. package/dist/cjs/auth-store-DPHWWmXf.js.map +1 -0
  5. package/dist/cjs/index.cjs.js +2 -2
  6. package/dist/cjs/{newsletter-helpers-DR0vsegt.js → newsletter-helpers-D-V_8kiN.js} +3 -3
  7. package/dist/cjs/{newsletter-helpers-DR0vsegt.js.map → newsletter-helpers-D-V_8kiN.js.map} +1 -1
  8. package/dist/cjs/u-conditional-render.cjs.entry.js +3 -3
  9. package/dist/cjs/u-config.cjs.entry.js +7 -7
  10. package/dist/cjs/u-config.entry.cjs.js.map +1 -1
  11. package/dist/cjs/u-email-field.cjs.entry.js +1 -1
  12. package/dist/cjs/u-error-message.cjs.entry.js +1 -1
  13. package/dist/cjs/u-logout-button.cjs.entry.js +4 -4
  14. package/dist/cjs/u-magic-code-field.cjs.entry.js +3 -3
  15. package/dist/cjs/u-missing-field.cjs.entry.js +1 -1
  16. package/dist/cjs/u-missing-fields-submit-button.cjs.entry.js +1 -1
  17. package/dist/cjs/u-newsletter-checkbox.cjs.entry.js +3 -3
  18. package/dist/cjs/u-newsletter-logout-button.cjs.entry.js +3 -3
  19. package/dist/cjs/u-newsletter-preference-checkbox.cjs.entry.js +3 -3
  20. package/dist/cjs/u-newsletter-resend-doi-button.cjs.entry.js +3 -3
  21. package/dist/cjs/u-newsletter-root.cjs.entry.js +5 -5
  22. package/dist/cjs/u-newsletter-toggle-subscription-button.cjs.entry.js +3 -3
  23. package/dist/cjs/u-passkey.cjs.entry.js +3 -3
  24. package/dist/cjs/u-password-field.cjs.entry.js +1 -1
  25. package/dist/cjs/u-password-field.entry.cjs.js.map +1 -1
  26. package/dist/cjs/u-profile.u-submit-button.entry.cjs.js.map +1 -1
  27. package/dist/cjs/u-profile_2.cjs.entry.js +3 -3
  28. package/dist/cjs/u-registration-button.cjs.entry.js +1 -1
  29. package/dist/cjs/u-reset-password-button.cjs.entry.js +3 -3
  30. package/dist/cjs/u-send-magic-code-button.cjs.entry.js +3 -3
  31. package/dist/cjs/u-signed-in.cjs.entry.js +1 -1
  32. package/dist/cjs/u-signin-root.cjs.entry.js +1 -1
  33. package/dist/cjs/u-signin-step.cjs.entry.js +3 -3
  34. package/dist/cjs/u-signin-strategy.cjs.entry.js +1 -1
  35. package/dist/cjs/u-social-login-button.cjs.entry.js +1 -1
  36. package/dist/cjs/u-spinner.cjs.entry.js +1 -1
  37. package/dist/cjs/u-spinner.entry.cjs.js.map +1 -1
  38. package/dist/collection/auth/auth-helpers.js +115 -117
  39. package/dist/collection/auth/auth-helpers.js.map +1 -1
  40. package/dist/collection/auth/auth.js +9 -6
  41. package/dist/collection/auth/auth.js.map +1 -1
  42. package/dist/collection/auth/components/password-field/password-field.js.map +1 -1
  43. package/dist/collection/auth/store/auth-store.js +0 -2
  44. package/dist/collection/auth/store/auth-store.js.map +1 -1
  45. package/dist/collection/shared/components/config/config.js +6 -6
  46. package/dist/collection/shared/components/config/config.js.map +1 -1
  47. package/dist/collection/shared/components/spinner/spinner.css +1 -1
  48. package/dist/collection/shared/components/submit-button/submit-button.css +1 -1
  49. package/dist/components/auth-store.js +0 -2
  50. package/dist/components/auth-store.js.map +1 -1
  51. package/dist/components/auth.js +124 -123
  52. package/dist/components/auth.js.map +1 -1
  53. package/dist/components/spinner.js +1 -1
  54. package/dist/components/spinner.js.map +1 -1
  55. package/dist/components/submit-button.js +1 -1
  56. package/dist/components/submit-button.js.map +1 -1
  57. package/dist/components/u-config.js +6 -6
  58. package/dist/components/u-config.js.map +1 -1
  59. package/dist/components/u-password-field.js.map +1 -1
  60. package/dist/esm/{auth-nsjRdpvS.js → auth-B0RIcDM-.js} +126 -125
  61. package/dist/esm/auth-B0RIcDM-.js.map +1 -0
  62. package/dist/esm/{auth-store-CVvBlKGv.js → auth-store-BGMYm_jK.js} +2 -4
  63. package/dist/esm/auth-store-BGMYm_jK.js.map +1 -0
  64. package/dist/esm/index.js +2 -2
  65. package/dist/esm/{newsletter-helpers-Dc_24im3.js → newsletter-helpers-CONtbKYi.js} +3 -3
  66. package/dist/esm/{newsletter-helpers-Dc_24im3.js.map → newsletter-helpers-CONtbKYi.js.map} +1 -1
  67. package/dist/esm/u-conditional-render.entry.js +3 -3
  68. package/dist/esm/u-config.entry.js +7 -7
  69. package/dist/esm/u-config.entry.js.map +1 -1
  70. package/dist/esm/u-email-field.entry.js +1 -1
  71. package/dist/esm/u-error-message.entry.js +1 -1
  72. package/dist/esm/u-logout-button.entry.js +4 -4
  73. package/dist/esm/u-magic-code-field.entry.js +3 -3
  74. package/dist/esm/u-missing-field.entry.js +1 -1
  75. package/dist/esm/u-missing-fields-submit-button.entry.js +1 -1
  76. package/dist/esm/u-newsletter-checkbox.entry.js +3 -3
  77. package/dist/esm/u-newsletter-logout-button.entry.js +3 -3
  78. package/dist/esm/u-newsletter-preference-checkbox.entry.js +3 -3
  79. package/dist/esm/u-newsletter-resend-doi-button.entry.js +3 -3
  80. package/dist/esm/u-newsletter-root.entry.js +5 -5
  81. package/dist/esm/u-newsletter-toggle-subscription-button.entry.js +3 -3
  82. package/dist/esm/u-passkey.entry.js +3 -3
  83. package/dist/esm/u-password-field.entry.js +1 -1
  84. package/dist/esm/u-password-field.entry.js.map +1 -1
  85. package/dist/esm/u-profile.u-submit-button.entry.js.map +1 -1
  86. package/dist/esm/u-profile_2.entry.js +3 -3
  87. package/dist/esm/u-registration-button.entry.js +1 -1
  88. package/dist/esm/u-reset-password-button.entry.js +3 -3
  89. package/dist/esm/u-send-magic-code-button.entry.js +3 -3
  90. package/dist/esm/u-signed-in.entry.js +1 -1
  91. package/dist/esm/u-signin-root.entry.js +1 -1
  92. package/dist/esm/u-signin-step.entry.js +3 -3
  93. package/dist/esm/u-signin-strategy.entry.js +1 -1
  94. package/dist/esm/u-social-login-button.entry.js +1 -1
  95. package/dist/esm/u-spinner.entry.js +1 -1
  96. package/dist/esm/u-spinner.entry.js.map +1 -1
  97. package/dist/sdk/auth-BopPjv7G.js.map +1 -0
  98. package/dist/sdk/auth-C0vldOq6.js.map +1 -0
  99. package/dist/sdk/auth-store-DQaam_Qh.js.map +1 -0
  100. package/dist/sdk/auth-store-sOmplc4z.js.map +1 -0
  101. package/dist/sdk/component-utils-D1lzXl_Z.js.map +1 -0
  102. package/dist/sdk/flash-store-Cgu7WoSN.js.map +1 -0
  103. package/dist/sdk/flash-store-DNcSEn2p.js.map +1 -0
  104. package/dist/sdk/helpers-BqFCd65h.js.map +1 -0
  105. package/dist/sdk/helpers-DUHc_Cx7.js.map +1 -0
  106. package/dist/sdk/i18n-B6rRU-m3.js.map +1 -0
  107. package/dist/sdk/i18n-CZii1E-s.js.map +1 -0
  108. package/dist/sdk/index-B1aDcaWd.js.map +1 -0
  109. package/dist/sdk/index-BnBstyfp.js.map +1 -0
  110. package/dist/sdk/index-BqL27K_R.js.map +1 -0
  111. package/dist/sdk/index-C5jZjlU8.js.map +1 -0
  112. package/dist/sdk/index-Df-7P3r0.js.map +1 -0
  113. package/dist/sdk/index-Eu7hg2ii.js.map +1 -0
  114. package/dist/sdk/index-Iulyfmzq.js.map +1 -0
  115. package/dist/sdk/index-O6h7SI7-.js.map +1 -0
  116. package/dist/sdk/index.esm.js +1 -1
  117. package/dist/sdk/newsletter-helpers-8ByV38YW.js.map +1 -0
  118. package/dist/sdk/newsletter-helpers-B-Md6T9k.js.map +1 -0
  119. package/dist/sdk/newsletter-store-CqD-GcDC.js.map +1 -0
  120. package/dist/sdk/newsletter-store-CvULKmsu.js.map +1 -0
  121. package/dist/sdk/{p-c6816542.entry.js → p-08ff2de2.entry.js} +2 -2
  122. package/dist/sdk/{p-39b61f33.entry.js → p-1ea49938.entry.js} +2 -2
  123. package/dist/sdk/{p-bfb04b17.entry.js → p-2a65bcbb.entry.js} +2 -2
  124. package/dist/sdk/{p-80034205.entry.js → p-2af8b45f.entry.js} +2 -2
  125. package/dist/sdk/{p-0d324822.entry.js → p-3411c743.entry.js} +2 -2
  126. package/dist/sdk/{p-4ec3302d.entry.js → p-467c7304.entry.js} +2 -2
  127. package/dist/sdk/{p-e54d5d38.entry.js → p-56abb377.entry.js} +2 -2
  128. package/dist/sdk/p-5703102b.entry.js +2 -0
  129. package/dist/sdk/{p-319c5d3b.entry.js → p-593c6dde.entry.js} +2 -2
  130. package/dist/sdk/{p-a4f5940f.entry.js → p-5b627aea.entry.js} +2 -2
  131. package/dist/sdk/{p-9e71a36c.entry.js → p-5cc20a8b.entry.js} +2 -2
  132. package/dist/sdk/p-628ccd68.entry.js +2 -0
  133. package/dist/sdk/{p-66587fdd.entry.js → p-675eb13d.entry.js} +2 -2
  134. package/dist/sdk/{p-312b919e.entry.js → p-6a642433.entry.js} +2 -2
  135. package/dist/sdk/p-7a0cefff.entry.js +2 -0
  136. package/dist/sdk/{p-e81bbd62.entry.js.map → p-7a0cefff.entry.js.map} +1 -1
  137. package/dist/sdk/{p-e2e7061b.entry.js → p-91bb8b59.entry.js} +2 -2
  138. package/dist/sdk/{p-90e2253e.entry.js → p-9f59909b.entry.js} +2 -2
  139. package/dist/sdk/p-BlAULXyw.js +2 -0
  140. package/dist/sdk/p-BlAULXyw.js.map +1 -0
  141. package/dist/sdk/p-C3fhudPT.js +2 -0
  142. package/dist/sdk/p-C3fhudPT.js.map +1 -0
  143. package/dist/sdk/{p-BiILQPdb.js → p-S3-2d2Qd.js} +2 -2
  144. package/dist/sdk/{p-BiILQPdb.js.map → p-S3-2d2Qd.js.map} +1 -1
  145. package/dist/sdk/{p-568eabbc.entry.js → p-a4b7ffd8.entry.js} +2 -2
  146. package/dist/sdk/{p-0fb37ee9.entry.js → p-a5db968f.entry.js} +2 -2
  147. package/dist/sdk/{p-0ab98e7a.entry.js → p-a6393d19.entry.js} +2 -2
  148. package/dist/sdk/{p-2cb6a2d0.entry.js → p-c31dbbb4.entry.js} +2 -2
  149. package/dist/sdk/{p-f232929b.entry.js → p-c5bffd90.entry.js} +2 -2
  150. package/dist/sdk/{p-f961fbea.entry.js → p-e3611b71.entry.js} +2 -2
  151. package/dist/sdk/{p-f961fbea.entry.js.map → p-e3611b71.entry.js.map} +1 -1
  152. package/dist/sdk/p-f0598e42.entry.js +2 -0
  153. package/dist/sdk/{p-34b98f55.entry.js.map → p-f0598e42.entry.js.map} +1 -1
  154. package/dist/sdk/{p-a69b83ec.entry.js → p-f369a996.entry.js} +2 -2
  155. package/dist/sdk/{p-3049e73f.entry.js → p-ffac964c.entry.js} +2 -2
  156. package/dist/sdk/profile-helpers-BDjk573F.js.map +1 -0
  157. package/dist/sdk/profile-helpers-b8Koj20a.js.map +1 -0
  158. package/dist/sdk/profile-store-BZKApsQm.js.map +1 -0
  159. package/dist/sdk/profile-store-DD6sq42i.js.map +1 -0
  160. package/dist/sdk/sdk.esm.js +1 -1
  161. package/dist/sdk/u-config.entry.esm.js.map +1 -1
  162. package/dist/sdk/u-password-field.entry.esm.js.map +1 -1
  163. package/dist/sdk/u-password-field.entry.js +104 -0
  164. package/dist/sdk/u-profile.u-submit-button.entry.esm.js.map +1 -1
  165. package/dist/sdk/u-reset-password-button.entry.esm.js.map +1 -1
  166. package/dist/sdk/u-reset-password-button.entry.js +54 -0
  167. package/dist/sdk/u-spinner.entry.esm.js.map +1 -1
  168. package/dist/sdk/unidy-store-BwZym11Y.js.map +1 -0
  169. package/dist/sdk/unidy-store-CtifvCkV.js.map +1 -0
  170. package/dist/types/auth/auth-helpers.d.ts +5 -7
  171. package/dist/types/auth/auth.d.ts +1 -1
  172. package/dist/types/auth/components/reset-pass-button/reset-pass-button.d.ts +1 -0
  173. package/dist/types/auth/store/auth-store.d.ts +3 -3
  174. package/dist/types/shared/components/config/config.d.ts +1 -1
  175. package/package.json +1 -1
  176. package/dist/cjs/auth-NU3DBc-6.js.map +0 -1
  177. package/dist/cjs/auth-store-BaxuIp4z.js.map +0 -1
  178. package/dist/esm/auth-nsjRdpvS.js.map +0 -1
  179. package/dist/esm/auth-store-CVvBlKGv.js.map +0 -1
  180. package/dist/sdk/p-34b98f55.entry.js +0 -2
  181. package/dist/sdk/p-5b40a68b.entry.js +0 -2
  182. package/dist/sdk/p-88d93d64.entry.js +0 -2
  183. package/dist/sdk/p-PKvQIsOt.js +0 -2
  184. package/dist/sdk/p-PKvQIsOt.js.map +0 -1
  185. package/dist/sdk/p-aMrLKr2m.js +0 -2
  186. package/dist/sdk/p-aMrLKr2m.js.map +0 -1
  187. package/dist/sdk/p-e81bbd62.entry.js +0 -2
  188. /package/dist/sdk/{p-c6816542.entry.js.map → p-08ff2de2.entry.js.map} +0 -0
  189. /package/dist/sdk/{p-39b61f33.entry.js.map → p-1ea49938.entry.js.map} +0 -0
  190. /package/dist/sdk/{p-bfb04b17.entry.js.map → p-2a65bcbb.entry.js.map} +0 -0
  191. /package/dist/sdk/{p-80034205.entry.js.map → p-2af8b45f.entry.js.map} +0 -0
  192. /package/dist/sdk/{p-0d324822.entry.js.map → p-3411c743.entry.js.map} +0 -0
  193. /package/dist/sdk/{p-4ec3302d.entry.js.map → p-467c7304.entry.js.map} +0 -0
  194. /package/dist/sdk/{p-e54d5d38.entry.js.map → p-56abb377.entry.js.map} +0 -0
  195. /package/dist/sdk/{p-5b40a68b.entry.js.map → p-5703102b.entry.js.map} +0 -0
  196. /package/dist/sdk/{p-319c5d3b.entry.js.map → p-593c6dde.entry.js.map} +0 -0
  197. /package/dist/sdk/{p-a4f5940f.entry.js.map → p-5b627aea.entry.js.map} +0 -0
  198. /package/dist/sdk/{p-9e71a36c.entry.js.map → p-5cc20a8b.entry.js.map} +0 -0
  199. /package/dist/sdk/{p-88d93d64.entry.js.map → p-628ccd68.entry.js.map} +0 -0
  200. /package/dist/sdk/{p-66587fdd.entry.js.map → p-675eb13d.entry.js.map} +0 -0
  201. /package/dist/sdk/{p-312b919e.entry.js.map → p-6a642433.entry.js.map} +0 -0
  202. /package/dist/sdk/{p-e2e7061b.entry.js.map → p-91bb8b59.entry.js.map} +0 -0
  203. /package/dist/sdk/{p-90e2253e.entry.js.map → p-9f59909b.entry.js.map} +0 -0
  204. /package/dist/sdk/{p-568eabbc.entry.js.map → p-a4b7ffd8.entry.js.map} +0 -0
  205. /package/dist/sdk/{p-0fb37ee9.entry.js.map → p-a5db968f.entry.js.map} +0 -0
  206. /package/dist/sdk/{p-0ab98e7a.entry.js.map → p-a6393d19.entry.js.map} +0 -0
  207. /package/dist/sdk/{p-2cb6a2d0.entry.js.map → p-c31dbbb4.entry.js.map} +0 -0
  208. /package/dist/sdk/{p-f232929b.entry.js.map → p-c5bffd90.entry.js.map} +0 -0
  209. /package/dist/sdk/{p-a69b83ec.entry.js.map → p-f369a996.entry.js.map} +0 -0
  210. /package/dist/sdk/{p-3049e73f.entry.js.map → p-ffac964c.entry.js.map} +0 -0
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var authStore = require('./auth-store-BaxuIp4z.js');
3
+ var index$1 = require('./index-R2MKLaem.js');
4
4
  var i18n = require('./i18n-BoDZ8kd2.js');
5
+ var unidyStore = require('./unidy-store-7AbWnZ6g.js');
6
+ var authStore = require('./auth-store-DPHWWmXf.js');
5
7
  var index = require('./index-B_N5xKgH.js');
6
8
  var profileStore = require('./profile-store-P_BcYkef.js');
7
9
  var componentUtils = require('./component-utils-BpMyeVQo.js');
8
10
  var flashStore = require('./flash-store-BuIBuQDx.js');
9
- var unidyStore = require('./unidy-store-7AbWnZ6g.js');
10
- var index$1 = require('./index-R2MKLaem.js');
11
11
 
12
12
  class InvalidTokenError extends Error {
13
13
  }
@@ -173,12 +173,6 @@ async function authenticateWithPasskey(client, onSuccess) {
173
173
  class AuthHelpers {
174
174
  client;
175
175
  logger = index.createLogger("AuthHelpers");
176
- static PASSWORD_ERROR_IDENTIFIERS = [
177
- "invalid_password",
178
- "password_required",
179
- "password_not_set",
180
- "passwords_do_not_match",
181
- ];
182
176
  constructor(client) {
183
177
  this.client = client;
184
178
  }
@@ -190,7 +184,7 @@ class AuthHelpers {
190
184
  authStore.authStore.clearErrors();
191
185
  const [error, response] = await this.client.auth.createSignIn(email, password, sendMagicCode);
192
186
  if (error) {
193
- this.handleAuthError(error, response);
187
+ this.handleAuthError(error, response, password ? "password" : "email");
194
188
  return;
195
189
  }
196
190
  if (password) {
@@ -226,7 +220,7 @@ class AuthHelpers {
226
220
  authStore.authStore.clearErrors();
227
221
  const [error, response] = await this.client.auth.authenticateWithPassword(authStore.state.sid, password);
228
222
  if (error) {
229
- this.handleAuthError(error, response);
223
+ this.handleAuthError(error, response, "password");
230
224
  }
231
225
  else {
232
226
  authStore.authStore.setLoading(false);
@@ -234,31 +228,24 @@ class AuthHelpers {
234
228
  return;
235
229
  }
236
230
  }
237
- handleAuthError(error, response) {
238
- switch (error) {
239
- case "account_not_found":
240
- authStore.authStore.setFieldError("email", error);
241
- break;
242
- case "missing_required_fields": {
243
- authStore.authStore.setMissingFields(response.fields);
244
- profileStore.state.data = response.fields;
245
- if (response.sid) {
246
- authStore.authStore.setSignInId(response.sid);
247
- }
248
- authStore.authStore.setStep("missing-fields");
249
- break;
250
- }
251
- default:
252
- if (AuthHelpers.PASSWORD_ERROR_IDENTIFIERS.includes(error)) {
253
- authStore.authStore.setFieldError("password", error);
254
- }
255
- else {
256
- // e.g. "account_locked", "internal_server_error"
257
- authStore.authStore.setGlobalError("auth", error);
258
- }
259
- break;
231
+ async authenticateWithMagicCode(code) {
232
+ if (!authStore.state.sid) {
233
+ throw new Error(i18n.t("errors.no_sign_in_id"));
260
234
  }
261
- authStore.authStore.setLoading(false);
235
+ if (!code) {
236
+ throw new Error(i18n.t("errors.magic_code_is_missing"));
237
+ }
238
+ authStore.authStore.setLoading(true);
239
+ authStore.authStore.clearErrors();
240
+ const [error, response] = await this.client.auth.authenticateWithMagicCode(authStore.state.sid, code);
241
+ if (error) {
242
+ this.handleAuthError(error, response, "magicCode");
243
+ return;
244
+ }
245
+ this.handleAuthSuccess(response);
246
+ }
247
+ authenticateWithPasskey() {
248
+ return authenticateWithPasskey(this.client, (response) => this.handleAuthSuccess(response));
262
249
  }
263
250
  async logout() {
264
251
  const [error, _] = await this.client.auth.signOut(authStore.state.sid);
@@ -271,7 +258,10 @@ class AuthHelpers {
271
258
  if (authStore.state.step === "missing-fields") {
272
259
  return;
273
260
  }
274
- this.extractSignInIdFromQuery();
261
+ const sid = componentUtils.clearUrlParam("sid");
262
+ if (sid) {
263
+ authStore.authStore.setSignInId(sid);
264
+ }
275
265
  if (!authStore.state.sid) {
276
266
  this.logger.warn("No sign-in ID in the session");
277
267
  return;
@@ -285,40 +275,6 @@ class AuthHelpers {
285
275
  authStore.authStore.setToken(response.jwt);
286
276
  }
287
277
  }
288
- handleSocialAuthRedirect() {
289
- // missing required fields flow
290
- const url = new URL(window.location.href);
291
- const params = url.searchParams;
292
- const error = params.get("error");
293
- if (error !== "missing_required_fields") {
294
- return;
295
- }
296
- const fieldsFromUrl = params.get("fields");
297
- if (!fieldsFromUrl) {
298
- return;
299
- }
300
- const signInId = params.get("sid");
301
- if (signInId) {
302
- authStore.authStore.setSignInId(signInId);
303
- }
304
- else {
305
- return;
306
- }
307
- try {
308
- const fields = JSON.parse(fieldsFromUrl);
309
- authStore.authStore.setMissingFields(fields);
310
- profileStore.state.data = fields;
311
- authStore.authStore.setStep("missing-fields");
312
- params.delete("error");
313
- params.delete("fields");
314
- const cleanUrl = `${url.origin}${url.pathname}${url.hash}`;
315
- window.history.replaceState(null, "", cleanUrl);
316
- }
317
- catch (e) {
318
- this.logger.error("Failed to parse missing fields payload:", e);
319
- authStore.authStore.setGlobalError("auth", "invalid_required_fields_payload");
320
- }
321
- }
322
278
  async sendMagicCode() {
323
279
  if (!authStore.state.sid && authStore.state.step !== "single-login") {
324
280
  throw new Error(i18n.t("errors.no_sign_in_id"));
@@ -344,27 +300,6 @@ class AuthHelpers {
344
300
  }
345
301
  return [error, response];
346
302
  }
347
- async authenticateWithMagicCode(code) {
348
- if (!authStore.state.sid) {
349
- throw new Error(i18n.t("errors.no_sign_in_id"));
350
- }
351
- if (!code) {
352
- throw new Error(i18n.t("errors.magic_code_is_missing"));
353
- }
354
- authStore.authStore.setLoading(true);
355
- authStore.authStore.clearErrors();
356
- const [error, response] = await this.client.auth.authenticateWithMagicCode(authStore.state.sid, code);
357
- if (!error) {
358
- this.handleAuthSuccess(response);
359
- return;
360
- }
361
- if (error === "missing_required_fields") {
362
- this.handleMissingFields(response);
363
- return;
364
- }
365
- authStore.authStore.setLoading(false);
366
- authStore.authStore.setFieldError("magicCode", error);
367
- }
368
303
  async sendResetPasswordEmail() {
369
304
  if (!authStore.state.sid) {
370
305
  throw new Error(i18n.t("errors.no_sign_in_id"));
@@ -381,28 +316,6 @@ class AuthHelpers {
381
316
  }
382
317
  authStore.authStore.setLoading(false);
383
318
  }
384
- async handleResetPasswordRedirect() {
385
- const url = new URL(window.location.href);
386
- const params = url.searchParams;
387
- const resetToken = params.get("reset_password_token");
388
- if (!resetToken) {
389
- return false;
390
- }
391
- if (authStore.state.sid) {
392
- authStore.authStore.setLoading(true);
393
- const [error] = await this.client.auth.validateResetPasswordToken(authStore.state.sid, resetToken);
394
- if (error) {
395
- authStore.authStore.setFieldError("resetPassword", error);
396
- authStore.authStore.setStep("reset-password");
397
- authStore.authStore.setLoading(false);
398
- return false;
399
- }
400
- }
401
- authStore.authStore.setResetToken(resetToken);
402
- authStore.authStore.setStep("reset-password");
403
- authStore.authStore.setLoading(false);
404
- return true;
405
- }
406
319
  async resetPassword() {
407
320
  if (!authStore.state.resetPassword.token) {
408
321
  throw new Error("No reset token available");
@@ -439,18 +352,103 @@ class AuthHelpers {
439
352
  }
440
353
  authStore.authStore.setLoading(false);
441
354
  }
442
- authenticateWithPasskey() {
443
- return authenticateWithPasskey(this.client, (response) => this.handleAuthSuccess(response));
355
+ async handleResetPasswordRedirect() {
356
+ const url = new URL(window.location.href);
357
+ const params = url.searchParams;
358
+ const resetToken = params.get("reset_password_token");
359
+ if (!resetToken) {
360
+ return;
361
+ }
362
+ if (authStore.state.sid) {
363
+ authStore.authStore.setLoading(true);
364
+ const [error] = await this.client.auth.validateResetPasswordToken(authStore.state.sid, resetToken);
365
+ if (error) {
366
+ authStore.authStore.setFieldError("resetPassword", error);
367
+ authStore.authStore.setStep("reset-password");
368
+ authStore.authStore.setLoading(false);
369
+ return;
370
+ }
371
+ }
372
+ authStore.authStore.setResetToken(resetToken);
373
+ authStore.authStore.setStep("reset-password");
374
+ authStore.authStore.setLoading(false);
444
375
  }
445
- extractSignInIdFromQuery() {
376
+ handleSocialAuthRedirect() {
377
+ const url = new URL(window.location.href);
378
+ const params = url.searchParams;
379
+ const error = params.get("error");
380
+ // Not a social auth redirect (normal page load)
381
+ if (!error && !params.has("sid")) {
382
+ return;
383
+ }
384
+ // Handle successful social auth redirect
385
+ if (!error && params.has("sid") && params.has("id_token")) {
386
+ authStore.authStore.setSignInId(componentUtils.clearUrlParam("sid"));
387
+ const idToken = componentUtils.clearUrlParam("id_token");
388
+ if (idToken) {
389
+ authStore.authStore.setToken(idToken);
390
+ this.handleAuthSuccess({ jwt: idToken });
391
+ }
392
+ else {
393
+ this.logger.error("No ID token found in the URL on social auth redirect");
394
+ }
395
+ return;
396
+ }
397
+ // Handle missing required fields
398
+ if (error !== "missing_required_fields") {
399
+ this.logger.error("Social auth redirect error:", error);
400
+ return;
401
+ }
402
+ const fieldsFromUrl = componentUtils.clearUrlParam("fields");
446
403
  const sid = componentUtils.clearUrlParam("sid");
447
- if (sid) {
404
+ componentUtils.clearUrlParam("error");
405
+ if (!fieldsFromUrl || !sid) {
406
+ return;
407
+ }
408
+ try {
409
+ const fields = JSON.parse(fieldsFromUrl);
448
410
  authStore.authStore.setSignInId(sid);
411
+ this.handleMissingFields(fields);
412
+ }
413
+ catch (e) {
414
+ this.logger.error("Failed to parse missing fields payload:", e);
415
+ authStore.authStore.setGlobalError("auth", "invalid_required_fields_payload");
416
+ }
417
+ }
418
+ handleAuthError(error, response, fallbackField) {
419
+ switch (error) {
420
+ case "account_not_found":
421
+ authStore.authStore.setFieldError("email", error);
422
+ break;
423
+ case "missing_required_fields": {
424
+ const { fields, sid } = response;
425
+ this.handleMissingFields(fields);
426
+ if (sid) {
427
+ authStore.authStore.setSignInId(sid);
428
+ }
429
+ break;
430
+ }
431
+ default:
432
+ if (fallbackField === "password") {
433
+ authStore.authStore.setFieldError("password", error);
434
+ }
435
+ else if (fallbackField === "magicCode") {
436
+ authStore.authStore.setFieldError("magicCode", error);
437
+ }
438
+ else if (fallbackField === "email") {
439
+ authStore.authStore.setFieldError("email", error);
440
+ }
441
+ else {
442
+ // e.g. "account_locked", "internal_server_error"
443
+ authStore.authStore.setGlobalError("auth", error);
444
+ }
445
+ break;
449
446
  }
447
+ authStore.authStore.setLoading(false);
450
448
  }
451
- handleMissingFields(response) {
452
- authStore.authStore.setMissingFields(response.fields);
453
- profileStore.state.data = response.fields;
449
+ handleMissingFields(fields) {
450
+ authStore.authStore.setMissingFields(fields);
451
+ profileStore.state.data = fields;
454
452
  authStore.authStore.setStep("missing-fields");
455
453
  authStore.authStore.setLoading(false);
456
454
  }
@@ -466,8 +464,6 @@ class Auth {
466
464
  helpers;
467
465
  constructor(client) {
468
466
  this.helpers = new AuthHelpers(client);
469
- this.helpers.handleSocialAuthRedirect();
470
- this.helpers.handleResetPasswordRedirect();
471
467
  }
472
468
  static Errors = {
473
469
  email: {
@@ -496,8 +492,13 @@ class Auth {
496
492
  }
497
493
  return Auth.instance;
498
494
  }
499
- static initialize(client) {
495
+ static async initialize(client) {
496
+ if (Auth.instance) {
497
+ return Auth.instance;
498
+ }
500
499
  Auth.instance = new Auth(client);
500
+ Auth.instance.helpers.handleSocialAuthRedirect();
501
+ await Auth.instance.helpers.handleResetPasswordRedirect();
501
502
  if (Auth.instance.isTokenValid(authStore.state.token)) {
502
503
  authStore.authStore.setAuthenticated(true);
503
504
  }
@@ -576,6 +577,6 @@ class Auth {
576
577
  }
577
578
 
578
579
  exports.Auth = Auth;
579
- //# sourceMappingURL=auth-NU3DBc-6.js.map
580
+ //# sourceMappingURL=auth-B83pzi0f.js.map
580
581
 
581
- //# sourceMappingURL=auth-NU3DBc-6.js.map
582
+ //# sourceMappingURL=auth-B83pzi0f.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-B83pzi0f.js","sources":["../../node_modules/jwt-decode/build/esm/index.js","src/auth/passkey-auth.ts","src/auth/auth-helpers.ts","src/auth/auth.ts"],"sourcesContent":["export class InvalidTokenError extends Error {\n}\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(atob(str).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n }));\n}\nfunction base64UrlDecode(str) {\n let output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"base64 string is not of the correct length\");\n }\n try {\n return b64DecodeUnicode(output);\n }\n catch (err) {\n return atob(output);\n }\n}\nexport function jwtDecode(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified: must be a string\");\n }\n options || (options = {});\n const pos = options.header === true ? 0 : 1;\n const part = token.split(\".\")[pos];\n if (typeof part !== \"string\") {\n throw new InvalidTokenError(`Invalid token specified: missing part #${pos + 1}`);\n }\n let decoded;\n try {\n decoded = base64UrlDecode(part);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid base64 for part #${pos + 1} (${e.message})`);\n }\n try {\n return JSON.parse(decoded);\n }\n catch (e) {\n throw new InvalidTokenError(`Invalid token specified: invalid json for part #${pos + 1} (${e.message})`);\n }\n}\n","import { jwtDecode } from \"jwt-decode\";\nimport type { PasskeyOptionsResponse, TokenResponse, UnidyClient } from \"../api\";\nimport { createLogger } from \"../logger\";\nimport type { TokenPayload } from \"./auth\";\nimport { authState, authStore } from \"./store/auth-store\";\n\nconst logger = createLogger(\"PasskeyAuth\");\n\nconst PASSKEY_ERRORS: Record<string, string> = {\n NotSupportedError: \"passkey_not_supported\",\n NotAllowedError: \"passkey_cancelled\",\n SecurityError: \"passkey_security_error\",\n InvalidStateError: \"passkey_invalid_state\",\n};\n\nfunction decodeBase64Url(base64url: string): Uint8Array {\n const base64 = base64url.replace(/-/g, \"+\").replace(/_/g, \"/\");\n const padded = base64 + \"=\".repeat((4 - (base64.length % 4)) % 4);\n return Uint8Array.from(atob(padded), (c) => c.charCodeAt(0));\n}\n\nfunction buildPublicKeyOptions(options: PasskeyOptionsResponse): PublicKeyCredentialRequestOptions {\n return {\n challenge: Uint8Array.from(atob(options.challenge), (c) => c.charCodeAt(0)),\n timeout: options.timeout || 60000,\n rpId: options.rpId,\n userVerification: (options.userVerification as UserVerificationRequirement) || \"required\",\n allowCredentials: options.allowCredentials?.map((cred) => ({\n ...cred,\n id: decodeBase64Url(cred.id),\n })),\n };\n}\n\nfunction formatCredentialForServer(credential: PublicKeyCredential) {\n const response = credential.response as AuthenticatorAssertionResponse;\n return {\n id: credential.id,\n rawId: btoa(String.fromCharCode(...new Uint8Array(credential.rawId))),\n response: {\n authenticatorData: btoa(String.fromCharCode(...new Uint8Array(response.authenticatorData))),\n clientDataJSON: btoa(String.fromCharCode(...new Uint8Array(response.clientDataJSON))),\n signature: btoa(String.fromCharCode(...new Uint8Array(response.signature))),\n },\n type: credential.type,\n };\n}\n\nfunction extractAndSetSignInId(tokenResponse: TokenResponse) {\n if (tokenResponse.sid) {\n authStore.setSignInId(tokenResponse.sid);\n return;\n }\n\n // Fallback: extract sid from JWT token payload\n try {\n const decoded = jwtDecode<TokenPayload>(tokenResponse.jwt);\n if (decoded.sid) {\n authStore.setSignInId(decoded.sid);\n }\n } catch {\n // Failed to decode JWT token to extract sid, continue without it\n }\n}\n\nfunction handlePasskeyError(error: unknown) {\n logger.error(\"Passkey error:\", error);\n\n let errorMessage = \"passkey_error\";\n if (error instanceof DOMException) {\n errorMessage = PASSKEY_ERRORS[error.name] || \"passkey_error\";\n }\n\n authStore.setFieldError(\"passkey\", errorMessage);\n authStore.setLoading(false);\n}\n\nexport async function authenticateWithPasskey(client: UnidyClient, onSuccess: (response: TokenResponse) => void) {\n authStore.setLoading(true);\n authStore.clearErrors();\n\n if (!window.PublicKeyCredential) {\n authStore.setFieldError(\"passkey\", \"passkey_not_supported\");\n authStore.setLoading(false);\n return;\n }\n\n try {\n const [optionsError, options] = await client.auth.getPasskeyOptions(authState.sid || undefined);\n\n if (optionsError || !options) {\n authStore.setFieldError(\"passkey\", optionsError || \"bad_request\");\n authStore.setLoading(false);\n return;\n }\n\n const publicKeyOptions = buildPublicKeyOptions(options as PasskeyOptionsResponse);\n\n const credential = (await navigator.credentials.get({\n publicKey: publicKeyOptions,\n })) as PublicKeyCredential | null;\n\n if (!credential) {\n authStore.setFieldError(\"passkey\", \"passkey_cancelled\");\n authStore.setLoading(false);\n return;\n }\n\n const formattedCredential = formatCredentialForServer(credential);\n\n const [verifyError, tkResponse] = await client.auth.authenticateWithPasskey(formattedCredential);\n\n const tokenResponse = tkResponse as TokenResponse;\n if (verifyError || !tokenResponse) {\n authStore.setGlobalError(\"auth\", verifyError || \"authentication_failed\");\n authStore.setLoading(false);\n return;\n }\n\n authStore.setToken(tokenResponse.jwt);\n extractAndSetSignInId(tokenResponse);\n onSuccess(tokenResponse);\n } catch (error) {\n handlePasskeyError(error);\n }\n}\n","import { jwtDecode } from \"jwt-decode\";\nimport type { CreateSignInResponse, RequiredFieldsResponse, TokenResponse, UnidyClient } from \"../api\";\nimport { authState, authStore } from \"../auth/store/auth-store\";\nimport { t } from \"../i18n\";\nimport { createLogger } from \"../logger\";\nimport type { ProfileRaw } from \"../profile\";\nimport { state as profileState } from \"../profile/store/profile-store\";\nimport { clearUrlParam } from \"../shared/component-utils\";\nimport { Flash } from \"../shared/store/flash-store\";\nimport type { TokenPayload } from \"./auth\";\nimport { authenticateWithPasskey } from \"./passkey-auth\";\n\nexport class AuthHelpers {\n private client: UnidyClient;\n private logger = createLogger(\"AuthHelpers\");\n\n constructor(client: UnidyClient) {\n this.client = client;\n }\n\n async createSignIn(email: string, password?: string, sendMagicCode?: boolean) {\n if (!email) {\n throw new Error(t(\"errors.required_field\", { field: \"Email\" }));\n }\n\n authStore.setLoading(true);\n authStore.clearErrors();\n\n const [error, response] = await this.client.auth.createSignIn(email, password, sendMagicCode);\n\n if (error) {\n this.handleAuthError(error, response, password ? \"password\" : \"email\");\n return;\n }\n\n if (password) {\n const token = jwtDecode<TokenPayload>((response as TokenResponse).jwt);\n authStore.setSignInId(token.sid);\n authStore.setToken((response as TokenResponse).jwt);\n authStore.setLoading(false);\n authStore.getRootComponentRef()?.onAuth(response as TokenResponse);\n return;\n }\n\n if (sendMagicCode) {\n authStore.setSignInId((response as CreateSignInResponse).sid);\n authStore.setMagicCodeStep(\"sent\");\n authStore.setStep(\"magic-code\");\n authStore.setLoading(false);\n return [error, response] as const;\n }\n const signInResponse = response as CreateSignInResponse;\n authStore.setStep(\"verification\");\n authStore.setEmail(email);\n authStore.setSignInId(signInResponse.sid);\n authStore.setLoginOptions(signInResponse.login_options);\n authStore.setLoading(false);\n }\n\n async authenticateWithPassword(password: string) {\n if (!authState.sid) {\n throw new Error(t(\"errors.no_sign_in_id\"));\n }\n\n if (!password) {\n throw new Error(t(\"errors.required_field\", { field: \"Password\" }));\n }\n\n authStore.setLoading(true);\n authStore.clearErrors();\n\n const [error, response] = await this.client.auth.authenticateWithPassword(authState.sid, password);\n\n if (error) {\n this.handleAuthError(error, response, \"password\");\n } else {\n authStore.setLoading(false);\n this.handleAuthSuccess(response as TokenResponse);\n return;\n }\n }\n\n async authenticateWithMagicCode(code: string) {\n if (!authState.sid) {\n throw new Error(t(\"errors.no_sign_in_id\"));\n }\n\n if (!code) {\n throw new Error(t(\"errors.magic_code_is_missing\"));\n }\n\n authStore.setLoading(true);\n authStore.clearErrors();\n\n const [error, response] = await this.client.auth.authenticateWithMagicCode(authState.sid, code);\n\n if (error) {\n this.handleAuthError(error, response, \"magicCode\");\n return;\n }\n\n this.handleAuthSuccess(response as TokenResponse);\n }\n\n authenticateWithPasskey() {\n return authenticateWithPasskey(this.client, (response) => this.handleAuthSuccess(response));\n }\n\n async logout() {\n const [error, _] = await this.client.auth.signOut(authState.sid as string);\n\n if (error) {\n authStore.setGlobalError(\"auth\", error);\n }\n\n return [error, _] as const;\n }\n\n async refreshToken() {\n if (authState.step === \"missing-fields\") {\n return;\n }\n\n const sid = clearUrlParam(\"sid\");\n if (sid) {\n authStore.setSignInId(sid);\n }\n\n if (!authState.sid) {\n this.logger.warn(\"No sign-in ID in the session\");\n return;\n }\n\n const [error, response] = await this.client.auth.refreshToken(authState.sid);\n\n if (error) {\n authStore.reset();\n authStore.setGlobalError(\"auth\", error);\n } else {\n authStore.setToken((response as TokenResponse).jwt);\n }\n }\n\n async sendMagicCode() {\n if (!authState.sid && authState.step !== \"single-login\") {\n throw new Error(t(\"errors.no_sign_in_id\"));\n }\n\n authStore.setMagicCodeStep(\"requested\");\n authStore.setLoading(true);\n authStore.clearErrors();\n\n if (authState.step === \"single-login\") {\n const [error, response] = await this.createSignIn(authState.email, undefined, true);\n authStore.setLoading(false);\n return [error, response] as const;\n }\n\n const [error, response] = await this.client.auth.sendMagicCode(authState.sid);\n\n authStore.setLoading(false);\n\n authStore.setStep(\"magic-code\");\n\n if (!error) {\n authStore.setMagicCodeStep(\"sent\");\n\n return [null, response] as const;\n }\n\n authStore.setFieldError(\"magicCode\", error);\n\n if (error === \"magic_code_recently_created\") {\n authStore.setMagicCodeStep(\"sent\");\n }\n\n return [error, response] as const;\n }\n\n async sendResetPasswordEmail() {\n if (!authState.sid) {\n throw new Error(t(\"errors.no_sign_in_id\"));\n }\n\n authStore.setLoading(true);\n authStore.setResetPasswordStep(\"requested\");\n\n const [error, _] = await this.client.auth.sendResetPasswordEmail(authState.sid, window.location.href);\n\n if (error) {\n authStore.setFieldError(\"resetPassword\", error);\n } else {\n authStore.setResetPasswordStep(\"sent\");\n authStore.clearErrors();\n }\n\n authStore.setLoading(false);\n }\n\n async resetPassword() {\n if (!authState.resetPassword.token) {\n throw new Error(\"No reset token available\");\n }\n\n if (!authState.resetPassword.newPassword) {\n authStore.setFieldError(\"resetPassword\", \"password_required\");\n return;\n }\n\n if (\n authState.resetPassword.passwordConfirmation &&\n authState.resetPassword.newPassword !== authState.resetPassword.passwordConfirmation\n ) {\n authStore.setFieldError(\"resetPassword\", \"passwords_do_not_match\");\n return;\n }\n\n authStore.setLoading(true);\n authStore.clearErrors();\n\n const [error, response] = await this.client.auth.resetPassword(\n authState.sid as string,\n authState.resetPassword.token,\n authState.resetPassword.newPassword,\n authState.resetPassword.passwordConfirmation,\n );\n\n if (error) {\n authStore.setFieldError(\"resetPassword\", error);\n\n // TODO: add proper password requirements handling --> for now this is fine\n if (error === \"invalid_password\") {\n authStore.setFieldError(\"password\", response.error_details?.password.map((p) => t(`errors.password_requirements.${p}`)).join(\"\\n\"));\n }\n } else {\n authStore.setStep(\"email\");\n authStore.updateResetPassword({\n step: \"completed\",\n token: null,\n newPassword: \"\",\n passwordConfirmation: \"\",\n });\n\n clearUrlParam(\"reset_password_token\");\n Flash.success.addMessage(\"Password reset successfully\");\n }\n\n authStore.setLoading(false);\n }\n\n async handleResetPasswordRedirect() {\n const url = new URL(window.location.href);\n const params = url.searchParams;\n const resetToken = params.get(\"reset_password_token\");\n\n if (!resetToken) {\n return;\n }\n\n if (authState.sid) {\n authStore.setLoading(true);\n\n const [error] = await this.client.auth.validateResetPasswordToken(authState.sid, resetToken);\n\n if (error) {\n authStore.setFieldError(\"resetPassword\", error);\n authStore.setStep(\"reset-password\");\n authStore.setLoading(false);\n return;\n }\n }\n\n authStore.setResetToken(resetToken);\n authStore.setStep(\"reset-password\");\n authStore.setLoading(false);\n }\n\n handleSocialAuthRedirect(): void {\n const url = new URL(window.location.href);\n const params = url.searchParams;\n const error = params.get(\"error\");\n\n // Not a social auth redirect (normal page load)\n if (!error && !params.has(\"sid\")) {\n return;\n }\n\n // Handle successful social auth redirect\n if (!error && params.has(\"sid\") && params.has(\"id_token\")) {\n authStore.setSignInId(clearUrlParam(\"sid\"));\n\n const idToken = clearUrlParam(\"id_token\");\n\n if (idToken) {\n authStore.setToken(idToken);\n this.handleAuthSuccess({ jwt: idToken } as TokenResponse);\n } else {\n this.logger.error(\"No ID token found in the URL on social auth redirect\");\n }\n\n return;\n }\n\n // Handle missing required fields\n if (error !== \"missing_required_fields\") {\n this.logger.error(\"Social auth redirect error:\", error);\n return;\n }\n\n const fieldsFromUrl = clearUrlParam(\"fields\");\n const sid = clearUrlParam(\"sid\");\n clearUrlParam(\"error\");\n\n if (!fieldsFromUrl || !sid) {\n return;\n }\n\n try {\n const fields = JSON.parse(fieldsFromUrl);\n authStore.setSignInId(sid);\n\n this.handleMissingFields(fields);\n } catch (e) {\n this.logger.error(\"Failed to parse missing fields payload:\", e);\n authStore.setGlobalError(\"auth\", \"invalid_required_fields_payload\");\n }\n }\n\n private handleAuthError(error: string, response: unknown, fallbackField?: \"email\" | \"password\" | \"magicCode\") {\n switch (error) {\n case \"account_not_found\":\n authStore.setFieldError(\"email\", error);\n break;\n\n case \"missing_required_fields\": {\n const { fields, sid } = response as RequiredFieldsResponse;\n this.handleMissingFields(fields);\n if (sid) {\n authStore.setSignInId(sid);\n }\n break;\n }\n\n default:\n if (fallbackField === \"password\") {\n authStore.setFieldError(\"password\", error);\n } else if (fallbackField === \"magicCode\") {\n authStore.setFieldError(\"magicCode\", error);\n } else if (fallbackField === \"email\") {\n authStore.setFieldError(\"email\", error);\n } else {\n // e.g. \"account_locked\", \"internal_server_error\"\n authStore.setGlobalError(\"auth\", error);\n }\n break;\n }\n\n authStore.setLoading(false);\n }\n\n private handleMissingFields(fields: RequiredFieldsResponse[\"fields\"]) {\n authStore.setMissingFields(fields);\n profileState.data = fields as ProfileRaw;\n authStore.setStep(\"missing-fields\");\n authStore.setLoading(false);\n }\n\n private handleAuthSuccess(response: TokenResponse) {\n authStore.setToken(response.jwt);\n authStore.setLoading(false);\n authStore.getRootComponentRef()?.onAuth(response);\n }\n}\n","import * as Sentry from \"@sentry/browser\";\nimport { jwtDecode } from \"jwt-decode\";\nimport type { UnidyClient } from \"../api\";\nimport { getUnidyClient } from \"../api\";\nimport { t } from \"../i18n\";\nimport { waitForConfig } from \"../shared/store/unidy-store\";\nimport { AuthHelpers } from \"./auth-helpers\";\nimport { authState, authStore } from \"./store/auth-store\";\n\nexport interface TokenPayload {\n sub: string; // unidy id\n sid: string; // sign-in id\n exp: number;\n iat: number;\n iss: string;\n aud: string;\n nonce: string;\n auth_time: number;\n email: string;\n email_verified: boolean;\n [key: string]: unknown;\n}\n\nexport type AuthError = Error & {\n code: \"TOKEN_EXPIRED\" | \"REFRESH_FAILED\" | \"NO_TOKEN\" | \"INVALID_TOKEN\" | \"SIGN_IN_NOT_FOUND\" | \"SIGN_OUT_FAILED\";\n requiresReauth: boolean;\n};\n\nexport class Auth {\n private static instance: Auth;\n\n readonly helpers: AuthHelpers;\n\n private constructor(client: UnidyClient) {\n this.helpers = new AuthHelpers(client);\n }\n\n static Errors = {\n email: {\n NOT_FOUND: \"account_not_found\",\n },\n magicCode: {\n RECENTLY_CREATED: \"magic_code_recently_created\",\n NOT_VALID: \"magic_code_not_valid\",\n EXPIRED: \"magic_code_expired\",\n USED: \"magic_code_used\",\n },\n password: {\n INVALID: \"invalid_password\",\n NOT_SET: \"password_not_set\",\n RESET_PASSWORD_ALREADY_SENT: \"reset_password_already_sent\",\n },\n general: {\n ACCOUNT_LOCKED: \"account_locked\",\n SIGN_IN_EXPIRED: \"sign_in_expired\",\n },\n } as const;\n\n static async getInstance(): Promise<Auth> {\n if (!Auth.isInitialized()) {\n await waitForConfig();\n\n return Auth.initialize(getUnidyClient());\n }\n\n return Auth.instance;\n }\n\n static async initialize(client: UnidyClient): Promise<Auth> {\n if (Auth.instance) {\n return Auth.instance;\n }\n\n Auth.instance = new Auth(client);\n\n Auth.instance.helpers.handleSocialAuthRedirect();\n await Auth.instance.helpers.handleResetPasswordRedirect();\n\n if (Auth.instance.isTokenValid(authState.token)) {\n authStore.setAuthenticated(true);\n }\n\n return Auth.instance;\n }\n\n static isInitialized(): boolean {\n return !!Auth.instance;\n }\n\n isTokenValid(token: string | TokenPayload | null): boolean {\n try {\n let decoded: TokenPayload | null;\n\n if (typeof token === \"string\") {\n decoded = jwtDecode<TokenPayload>(token);\n } else {\n decoded = token;\n }\n\n if (!decoded) return false;\n\n const currentTime = Date.now() / 1000;\n return decoded.exp > currentTime;\n } catch (error) {\n Sentry.captureException(error);\n return false;\n }\n }\n\n async isAuthenticated(): Promise<boolean> {\n const token = await this.getToken();\n return typeof token === \"string\";\n }\n\n async getToken(): Promise<string | AuthError> {\n const currentToken = authState.token;\n\n if (currentToken && this.isTokenValid(currentToken)) {\n return currentToken;\n }\n\n await this.helpers.refreshToken();\n\n if (authState.globalErrors.auth || !authState.token) {\n return this.createAuthError(t(\"errors.refresh_failed\"), \"REFRESH_FAILED\", true);\n }\n\n return authState.token as string;\n }\n\n async userData(): Promise<TokenPayload | null> {\n const token = await this.getToken();\n\n if (typeof token !== \"string\") {\n return null;\n }\n\n if (!token) {\n return null;\n }\n\n try {\n return jwtDecode<TokenPayload>(token);\n } catch (error) {\n Sentry.captureException(error);\n return null;\n }\n }\n\n async logout(): Promise<boolean | AuthError> {\n const [error, _] = await this.helpers.logout();\n\n if (error) {\n return this.createAuthError(t(\"errors.sign_out_failed\", { reason: error }), \"SIGN_OUT_FAILED\", false);\n }\n\n authStore.reset();\n\n return true;\n }\n\n getEmail(): string | null {\n return authState.email;\n }\n\n private createAuthError(message: string, code: AuthError[\"code\"], requiresReauth = false): AuthError {\n const error = new Error(message) as AuthError;\n error.code = code;\n error.requiresReauth = requiresReauth;\n\n return error;\n }\n}\n"],"names":["createLogger","authStore","authState","t","clearUrlParam","Flash","profileState","waitForConfig","getUnidyClient","Sentry.captureException"],"mappings":"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","x_google_ignoreList":[0]}
@@ -48,8 +48,6 @@ const initialState = {
48
48
  password: null,
49
49
  magicCode: null,
50
50
  resetPassword: null,
51
- general: null,
52
- connection: null,
53
51
  passkey: null,
54
52
  },
55
53
  globalErrors: {},
@@ -180,6 +178,6 @@ exports.authStore = authStore;
180
178
  exports.authStoreOnChange = authStoreOnChange;
181
179
  exports.missingFieldNames = missingFieldNames;
182
180
  exports.state = state;
183
- //# sourceMappingURL=auth-store-BaxuIp4z.js.map
181
+ //# sourceMappingURL=auth-store-DPHWWmXf.js.map
184
182
 
185
- //# sourceMappingURL=auth-store-BaxuIp4z.js.map
183
+ //# sourceMappingURL=auth-store-DPHWWmXf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-store-DPHWWmXf.js","sources":["src/auth/store/auth-store.ts"],"sourcesContent":["import { createStore } from \"@stencil/store\";\nimport type { ProfileNode } from \"../../profile\";\nimport { unidyState } from \"../../shared/store/unidy-store\";\nimport type { LoginOptions, RequiredFieldsResponse } from \"../api/auth\";\nimport type { SigninRoot } from \"../components/signin-root/signin-root\";\n\nexport type AuthStep = \"email\" | \"verification\" | \"magic-code\" | \"missing-fields\" | \"reset-password\" | \"registration\" | \"single-login\";\n\nexport interface AuthState {\n step: AuthStep;\n sid: string | null;\n email: string;\n password: string;\n\n magicCodeStep: null | \"requested\" | \"sent\";\n resetPassword: {\n step: null | \"requested\" | \"sent\" | \"completed\";\n token: string | null;\n newPassword: string;\n passwordConfirmation: string;\n };\n missingRequiredFields?: RequiredFieldsResponse[\"fields\"];\n availableLoginOptions: LoginOptions | null;\n\n loading: boolean;\n errors: Record<\"email\" | \"password\" | \"magicCode\" | \"resetPassword\" | \"passkey\", string | null>;\n globalErrors: Record<string, string | null>;\n\n authenticated: boolean;\n token: string | null;\n}\n\nconst missingRequiredUserDefaultFields = () => {\n const fields = store.state.missingRequiredFields ?? ({} as RequiredFieldsResponse[\"fields\"]);\n const { custom_attributes, ...missingRequiredUserDefaultFields } = fields;\n return missingRequiredUserDefaultFields as Record<string, ProfileNode>;\n};\n\nconst missingRequiredCustomAttributeFields = () => {\n const fields = store.state.missingRequiredFields ?? ({} as RequiredFieldsResponse[\"fields\"]);\n return (fields?.custom_attributes ?? {}) as Record<string, ProfileNode>;\n};\n\nexport const missingFieldNames = () => {\n const userDefaultFields = Object.keys(missingRequiredUserDefaultFields());\n const ca = Object.keys(missingRequiredCustomAttributeFields()).map((k) => `custom_attributes.${k}`);\n return [...userDefaultFields, ...ca];\n};\n\nconst SESSION_KEYS = {\n SID: \"unidy_signin_id\",\n TOKEN: \"unidy_token\",\n EMAIL: \"unidy_email\",\n} as const;\n\nconst saveToStorage = (storage: Storage, key: string, value: string | null) => {\n if (value) {\n storage.setItem(key, value);\n } else {\n storage.removeItem(key);\n }\n};\n\nconst initialState: AuthState = {\n step: undefined,\n email: localStorage.getItem(SESSION_KEYS.EMAIL) ?? \"\",\n password: \"\",\n magicCodeStep: null,\n resetPassword: {\n step: null,\n token: null,\n newPassword: \"\",\n passwordConfirmation: \"\",\n },\n sid: localStorage.getItem(SESSION_KEYS.SID),\n loading: false,\n errors: {\n email: null,\n password: null,\n magicCode: null,\n resetPassword: null,\n passkey: null,\n },\n globalErrors: {},\n authenticated: false,\n missingRequiredFields: undefined,\n availableLoginOptions: {\n magic_link: false,\n password: false,\n social_logins: [],\n passkey: true,\n },\n token: sessionStorage.getItem(SESSION_KEYS.TOKEN),\n};\n\nconst store = createStore<AuthState>(initialState);\nconst { state, reset } = store;\n\nconst authStoreOnChange: <K extends keyof AuthState>(prop: K, cb: (value: AuthState[K]) => void) => () => void = store.onChange;\n\nclass AuthStore {\n private rootComponentRef: SigninRoot | null = null;\n\n setRootComponentRef(ref: SigninRoot) {\n this.rootComponentRef = ref;\n }\n\n getRootComponentRef() {\n return this.rootComponentRef;\n }\n\n get state() {\n return state;\n }\n\n setInitialStep(step: AuthStep) {\n if (state.step === undefined) state.step = step;\n }\n\n setEmail(email: string) {\n state.email = email;\n state.errors.email = null;\n saveToStorage(localStorage, SESSION_KEYS.EMAIL, email);\n }\n\n setPassword(password: string) {\n state.password = password;\n state.errors.password = null;\n }\n\n setMissingFields(fields: RequiredFieldsResponse[\"fields\"]) {\n state.missingRequiredFields = fields;\n }\n\n setLoginOptions(availableLoginOptions: LoginOptions) {\n state.availableLoginOptions = availableLoginOptions;\n }\n\n setLoading(loading: boolean) {\n state.loading = loading;\n }\n\n setFieldError(field: \"email\" | \"password\" | \"magicCode\" | \"resetPassword\" | \"passkey\", error: string | null) {\n if (!this.handleError(error)) return;\n\n state.errors = { ...state.errors, [field]: error };\n }\n\n setGlobalError(key: string, error: string | null) {\n if (!this.handleError(error)) return;\n state.globalErrors = { ...state.globalErrors, [key]: error };\n }\n\n private handleError(error: string | null): boolean {\n if (!error) return true;\n\n if (error === \"connection_failed\") {\n unidyState.backendConnected = false;\n return false;\n }\n\n if (error === \"sign_in_not_found\") {\n this.reset();\n return false;\n }\n\n this.rootComponentRef?.onError(error);\n return true;\n }\n\n clearFieldError(field: \"email\" | \"password\" | \"magicCode\" | \"resetPassword\" | \"passkey\") {\n state.errors = { ...state.errors, [field]: null } as Record<\n \"email\" | \"password\" | \"magicCode\" | \"resetPassword\" | \"passkey\",\n string | null\n >;\n }\n\n clearErrors() {\n state.errors = initialState.errors;\n state.globalErrors = {};\n }\n\n setStep(step: AuthStep) {\n state.step = step;\n }\n\n setSignInId(signInId: string) {\n state.sid = signInId;\n saveToStorage(localStorage, SESSION_KEYS.SID, signInId);\n }\n\n setToken(token: string) {\n state.token = token;\n saveToStorage(sessionStorage, SESSION_KEYS.TOKEN, token);\n this.setAuthenticated(!!token);\n }\n\n setMagicCodeStep(step: null | \"requested\" | \"sent\") {\n state.magicCodeStep = step;\n }\n\n setResetPasswordStep(step: null | \"requested\" | \"sent\" | \"completed\") {\n state.resetPassword = { ...state.resetPassword, step };\n }\n\n setResetToken(token: string | null) {\n state.resetPassword = { ...state.resetPassword, token };\n }\n\n setNewPassword(password: string) {\n state.resetPassword = { ...state.resetPassword, newPassword: password };\n }\n\n setConfirmPassword(password: string) {\n state.resetPassword = { ...state.resetPassword, passwordConfirmation: password };\n }\n\n updateResetPassword(updates: Partial<AuthState[\"resetPassword\"]>) {\n state.resetPassword = { ...state.resetPassword, ...updates };\n }\n\n setAuthenticated(authenticated: boolean) {\n state.authenticated = authenticated;\n\n if (!authenticated) {\n state.token = null;\n state.sid = null;\n }\n }\n\n reset() {\n reset();\n saveToStorage(localStorage, SESSION_KEYS.SID, null);\n saveToStorage(localStorage, SESSION_KEYS.EMAIL, null);\n saveToStorage(sessionStorage, SESSION_KEYS.TOKEN, null);\n }\n}\n\nexport const authStore = new AuthStore();\nexport { state as authState, authStoreOnChange as onChange };\n"],"names":["createStore","unidyState"],"mappings":"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"}
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var index = require('./index-R2MKLaem.js');
4
- var authStore = require('./auth-store-BaxuIp4z.js');
5
- var auth = require('./auth-NU3DBc-6.js');
4
+ var authStore = require('./auth-store-DPHWWmXf.js');
5
+ var auth = require('./auth-B83pzi0f.js');
6
6
  var profileStore = require('./profile-store-P_BcYkef.js');
7
7
  var paginationStore = require('./pagination-store-BEiW3MQd.js');
8
8
  var flashStore = require('./flash-store-BuIBuQDx.js');
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  var index$1 = require('./index-R2MKLaem.js');
4
- var auth = require('./auth-NU3DBc-6.js');
4
+ var auth = require('./auth-B83pzi0f.js');
5
5
  var i18n = require('./i18n-BoDZ8kd2.js');
6
6
  var index = require('./index-B_N5xKgH.js');
7
7
  var flashStore = require('./flash-store-BuIBuQDx.js');
@@ -284,6 +284,6 @@ exports.resendDoi = resendDoi;
284
284
  exports.sendLoginEmail = sendLoginEmail;
285
285
  exports.subscribeToNewsletter = subscribeToNewsletter;
286
286
  exports.updateSubscriptionPreferences = updateSubscriptionPreferences;
287
- //# sourceMappingURL=newsletter-helpers-DR0vsegt.js.map
287
+ //# sourceMappingURL=newsletter-helpers-D-V_8kiN.js.map
288
288
 
289
- //# sourceMappingURL=newsletter-helpers-DR0vsegt.js.map
289
+ //# sourceMappingURL=newsletter-helpers-D-V_8kiN.js.map
@@ -1 +1 @@
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
+ {"version":3,"file":"newsletter-helpers-D-V_8kiN.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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"}