@supabase/gotrue-js 2.78.0 → 2.78.1-canary.1

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 (36) hide show
  1. package/README.md +9 -0
  2. package/dist/main/GoTrueClient.d.ts +11 -0
  3. package/dist/main/GoTrueClient.d.ts.map +1 -1
  4. package/dist/main/GoTrueClient.js +145 -112
  5. package/dist/main/GoTrueClient.js.map +1 -1
  6. package/dist/main/lib/helpers.d.ts.map +1 -1
  7. package/dist/main/lib/helpers.js +2 -42
  8. package/dist/main/lib/helpers.js.map +1 -1
  9. package/dist/main/lib/types.d.ts +5 -0
  10. package/dist/main/lib/types.d.ts.map +1 -1
  11. package/dist/main/lib/types.js.map +1 -1
  12. package/dist/main/lib/version.d.ts +1 -1
  13. package/dist/main/lib/version.d.ts.map +1 -1
  14. package/dist/main/lib/version.js +1 -1
  15. package/dist/main/lib/version.js.map +1 -1
  16. package/dist/module/GoTrueClient.d.ts +11 -0
  17. package/dist/module/GoTrueClient.d.ts.map +1 -1
  18. package/dist/module/GoTrueClient.js +145 -112
  19. package/dist/module/GoTrueClient.js.map +1 -1
  20. package/dist/module/lib/helpers.d.ts.map +1 -1
  21. package/dist/module/lib/helpers.js +2 -9
  22. package/dist/module/lib/helpers.js.map +1 -1
  23. package/dist/module/lib/types.d.ts +5 -0
  24. package/dist/module/lib/types.d.ts.map +1 -1
  25. package/dist/module/lib/types.js.map +1 -1
  26. package/dist/module/lib/version.d.ts +1 -1
  27. package/dist/module/lib/version.d.ts.map +1 -1
  28. package/dist/module/lib/version.js +1 -1
  29. package/dist/module/lib/version.js.map +1 -1
  30. package/dist/tsconfig.module.tsbuildinfo +1 -1
  31. package/dist/tsconfig.tsbuildinfo +1 -1
  32. package/package.json +4 -3
  33. package/src/GoTrueClient.ts +149 -112
  34. package/src/lib/helpers.ts +2 -8
  35. package/src/lib/types.ts +5 -0
  36. package/src/lib/version.ts +1 -1
@@ -24,6 +24,7 @@ const DEFAULT_OPTIONS = {
24
24
  flowType: 'implicit',
25
25
  debug: false,
26
26
  hasCustomAuthorizationHeader: false,
27
+ throwOnError: false,
27
28
  };
28
29
  async function lockNoOp(name, acquireTimeout, fn) {
29
30
  return await fn();
@@ -111,6 +112,7 @@ class GoTrueClient {
111
112
  this.detectSessionInUrl = settings.detectSessionInUrl;
112
113
  this.flowType = settings.flowType;
113
114
  this.hasCustomAuthorizationHeader = settings.hasCustomAuthorizationHeader;
115
+ this.throwOnError = settings.throwOnError;
114
116
  if (settings.lock) {
115
117
  this.lock = settings.lock;
116
118
  }
@@ -174,6 +176,23 @@ class GoTrueClient {
174
176
  }
175
177
  this.initialize();
176
178
  }
179
+ /**
180
+ * Returns whether error throwing mode is enabled for this client.
181
+ */
182
+ isThrowOnErrorEnabled() {
183
+ return this.throwOnError;
184
+ }
185
+ /**
186
+ * Centralizes return handling with optional error throwing. When `throwOnError` is enabled
187
+ * and the provided result contains a non-nullish error, the error is thrown instead of
188
+ * being returned. This ensures consistent behavior across all public API methods.
189
+ */
190
+ _returnResult(result) {
191
+ if (this.throwOnError && result && result.error) {
192
+ throw result.error;
193
+ }
194
+ return result;
195
+ }
177
196
  _debug(...args) {
178
197
  if (this.logDebugMessages) {
179
198
  this.logger(`GoTrueClient@${this.instanceID} (${version_1.version}) ${new Date().toISOString()}`, ...args);
@@ -205,13 +224,16 @@ class GoTrueClient {
205
224
  async _initialize() {
206
225
  var _a;
207
226
  try {
208
- const params = (0, helpers_1.parseParametersFromURL)(window.location.href);
227
+ let params = {};
209
228
  let callbackUrlType = 'none';
210
- if (this._isImplicitGrantCallback(params)) {
211
- callbackUrlType = 'implicit';
212
- }
213
- else if (await this._isPKCECallback(params)) {
214
- callbackUrlType = 'pkce';
229
+ if ((0, helpers_1.isBrowser)()) {
230
+ params = (0, helpers_1.parseParametersFromURL)(window.location.href);
231
+ if (this._isImplicitGrantCallback(params)) {
232
+ callbackUrlType = 'implicit';
233
+ }
234
+ else if (await this._isPKCECallback(params)) {
235
+ callbackUrlType = 'pkce';
236
+ }
215
237
  }
216
238
  /**
217
239
  * Attempt to get the session from the URL only if these conditions are fulfilled
@@ -255,11 +277,11 @@ class GoTrueClient {
255
277
  }
256
278
  catch (error) {
257
279
  if ((0, errors_1.isAuthError)(error)) {
258
- return { error };
280
+ return this._returnResult({ error });
259
281
  }
260
- return {
282
+ return this._returnResult({
261
283
  error: new errors_1.AuthUnknownError('Unexpected error during initialization', error),
262
- };
284
+ });
263
285
  }
264
286
  finally {
265
287
  await this._handleVisibilityChange();
@@ -284,7 +306,7 @@ class GoTrueClient {
284
306
  });
285
307
  const { data, error } = res;
286
308
  if (error || !data) {
287
- return { data: { user: null, session: null }, error: error };
309
+ return this._returnResult({ data: { user: null, session: null }, error: error });
288
310
  }
289
311
  const session = data.session;
290
312
  const user = data.user;
@@ -292,11 +314,11 @@ class GoTrueClient {
292
314
  await this._saveSession(data.session);
293
315
  await this._notifyAllSubscribers('SIGNED_IN', session);
294
316
  }
295
- return { data: { user, session }, error: null };
317
+ return this._returnResult({ data: { user, session }, error: null });
296
318
  }
297
319
  catch (error) {
298
320
  if ((0, errors_1.isAuthError)(error)) {
299
- return { data: { user: null, session: null }, error };
321
+ return this._returnResult({ data: { user: null, session: null }, error });
300
322
  }
301
323
  throw error;
302
324
  }
@@ -356,7 +378,7 @@ class GoTrueClient {
356
378
  }
357
379
  const { data, error } = res;
358
380
  if (error || !data) {
359
- return { data: { user: null, session: null }, error: error };
381
+ return this._returnResult({ data: { user: null, session: null }, error: error });
360
382
  }
361
383
  const session = data.session;
362
384
  const user = data.user;
@@ -364,11 +386,11 @@ class GoTrueClient {
364
386
  await this._saveSession(data.session);
365
387
  await this._notifyAllSubscribers('SIGNED_IN', session);
366
388
  }
367
- return { data: { user, session }, error: null };
389
+ return this._returnResult({ data: { user, session }, error: null });
368
390
  }
369
391
  catch (error) {
370
392
  if ((0, errors_1.isAuthError)(error)) {
371
- return { data: { user: null, session: null }, error };
393
+ return this._returnResult({ data: { user: null, session: null }, error });
372
394
  }
373
395
  throw error;
374
396
  }
@@ -413,23 +435,24 @@ class GoTrueClient {
413
435
  }
414
436
  const { data, error } = res;
415
437
  if (error) {
416
- return { data: { user: null, session: null }, error };
438
+ return this._returnResult({ data: { user: null, session: null }, error });
417
439
  }
418
440
  else if (!data || !data.session || !data.user) {
419
- return { data: { user: null, session: null }, error: new errors_1.AuthInvalidTokenResponseError() };
441
+ const invalidTokenError = new errors_1.AuthInvalidTokenResponseError();
442
+ return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });
420
443
  }
421
444
  if (data.session) {
422
445
  await this._saveSession(data.session);
423
446
  await this._notifyAllSubscribers('SIGNED_IN', data.session);
424
447
  }
425
- return {
448
+ return this._returnResult({
426
449
  data: Object.assign({ user: data.user, session: data.session }, (data.weak_password ? { weakPassword: data.weak_password } : null)),
427
450
  error,
428
- };
451
+ });
429
452
  }
430
453
  catch (error) {
431
454
  if ((0, errors_1.isAuthError)(error)) {
432
- return { data: { user: null, session: null }, error };
455
+ return this._returnResult({ data: { user: null, session: null }, error });
433
456
  }
434
457
  throw error;
435
458
  }
@@ -561,20 +584,18 @@ class GoTrueClient {
561
584
  throw error;
562
585
  }
563
586
  if (!data || !data.session || !data.user) {
564
- return {
565
- data: { user: null, session: null },
566
- error: new errors_1.AuthInvalidTokenResponseError(),
567
- };
587
+ const invalidTokenError = new errors_1.AuthInvalidTokenResponseError();
588
+ return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });
568
589
  }
569
590
  if (data.session) {
570
591
  await this._saveSession(data.session);
571
592
  await this._notifyAllSubscribers('SIGNED_IN', data.session);
572
593
  }
573
- return { data: Object.assign({}, data), error };
594
+ return this._returnResult({ data: Object.assign({}, data), error });
574
595
  }
575
596
  catch (error) {
576
597
  if ((0, errors_1.isAuthError)(error)) {
577
- return { data: { user: null, session: null }, error };
598
+ return this._returnResult({ data: { user: null, session: null }, error });
578
599
  }
579
600
  throw error;
580
601
  }
@@ -701,20 +722,18 @@ class GoTrueClient {
701
722
  throw error;
702
723
  }
703
724
  if (!data || !data.session || !data.user) {
704
- return {
705
- data: { user: null, session: null },
706
- error: new errors_1.AuthInvalidTokenResponseError(),
707
- };
725
+ const invalidTokenError = new errors_1.AuthInvalidTokenResponseError();
726
+ return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });
708
727
  }
709
728
  if (data.session) {
710
729
  await this._saveSession(data.session);
711
730
  await this._notifyAllSubscribers('SIGNED_IN', data.session);
712
731
  }
713
- return { data: Object.assign({}, data), error };
732
+ return this._returnResult({ data: Object.assign({}, data), error });
714
733
  }
715
734
  catch (error) {
716
735
  if ((0, errors_1.isAuthError)(error)) {
717
- return { data: { user: null, session: null }, error };
736
+ return this._returnResult({ data: { user: null, session: null }, error });
718
737
  }
719
738
  throw error;
720
739
  }
@@ -736,20 +755,24 @@ class GoTrueClient {
736
755
  throw error;
737
756
  }
738
757
  if (!data || !data.session || !data.user) {
739
- return {
758
+ const invalidTokenError = new errors_1.AuthInvalidTokenResponseError();
759
+ return this._returnResult({
740
760
  data: { user: null, session: null, redirectType: null },
741
- error: new errors_1.AuthInvalidTokenResponseError(),
742
- };
761
+ error: invalidTokenError,
762
+ });
743
763
  }
744
764
  if (data.session) {
745
765
  await this._saveSession(data.session);
746
766
  await this._notifyAllSubscribers('SIGNED_IN', data.session);
747
767
  }
748
- return { data: Object.assign(Object.assign({}, data), { redirectType: redirectType !== null && redirectType !== void 0 ? redirectType : null }), error };
768
+ return this._returnResult({ data: Object.assign(Object.assign({}, data), { redirectType: redirectType !== null && redirectType !== void 0 ? redirectType : null }), error });
749
769
  }
750
770
  catch (error) {
751
771
  if ((0, errors_1.isAuthError)(error)) {
752
- return { data: { user: null, session: null, redirectType: null }, error };
772
+ return this._returnResult({
773
+ data: { user: null, session: null, redirectType: null },
774
+ error,
775
+ });
753
776
  }
754
777
  throw error;
755
778
  }
@@ -774,23 +797,21 @@ class GoTrueClient {
774
797
  });
775
798
  const { data, error } = res;
776
799
  if (error) {
777
- return { data: { user: null, session: null }, error };
800
+ return this._returnResult({ data: { user: null, session: null }, error });
778
801
  }
779
802
  else if (!data || !data.session || !data.user) {
780
- return {
781
- data: { user: null, session: null },
782
- error: new errors_1.AuthInvalidTokenResponseError(),
783
- };
803
+ const invalidTokenError = new errors_1.AuthInvalidTokenResponseError();
804
+ return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });
784
805
  }
785
806
  if (data.session) {
786
807
  await this._saveSession(data.session);
787
808
  await this._notifyAllSubscribers('SIGNED_IN', data.session);
788
809
  }
789
- return { data, error };
810
+ return this._returnResult({ data, error });
790
811
  }
791
812
  catch (error) {
792
813
  if ((0, errors_1.isAuthError)(error)) {
793
- return { data: { user: null, session: null }, error };
814
+ return this._returnResult({ data: { user: null, session: null }, error });
794
815
  }
795
816
  throw error;
796
817
  }
@@ -835,7 +856,7 @@ class GoTrueClient {
835
856
  },
836
857
  redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,
837
858
  });
838
- return { data: { user: null, session: null }, error };
859
+ return this._returnResult({ data: { user: null, session: null }, error });
839
860
  }
840
861
  if ('phone' in credentials) {
841
862
  const { phone, options } = credentials;
@@ -849,13 +870,16 @@ class GoTrueClient {
849
870
  channel: (_e = options === null || options === void 0 ? void 0 : options.channel) !== null && _e !== void 0 ? _e : 'sms',
850
871
  },
851
872
  });
852
- return { data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id }, error };
873
+ return this._returnResult({
874
+ data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id },
875
+ error,
876
+ });
853
877
  }
854
878
  throw new errors_1.AuthInvalidCredentialsError('You must provide either an email or phone number.');
855
879
  }
856
880
  catch (error) {
857
881
  if ((0, errors_1.isAuthError)(error)) {
858
- return { data: { user: null, session: null }, error };
882
+ return this._returnResult({ data: { user: null, session: null }, error });
859
883
  }
860
884
  throw error;
861
885
  }
@@ -882,7 +906,8 @@ class GoTrueClient {
882
906
  throw error;
883
907
  }
884
908
  if (!data) {
885
- throw new Error('An error occurred on token verification.');
909
+ const tokenVerificationError = new Error('An error occurred on token verification.');
910
+ throw tokenVerificationError;
886
911
  }
887
912
  const session = data.session;
888
913
  const user = data.user;
@@ -890,11 +915,11 @@ class GoTrueClient {
890
915
  await this._saveSession(session);
891
916
  await this._notifyAllSubscribers(params.type == 'recovery' ? 'PASSWORD_RECOVERY' : 'SIGNED_IN', session);
892
917
  }
893
- return { data: { user, session }, error: null };
918
+ return this._returnResult({ data: { user, session }, error: null });
894
919
  }
895
920
  catch (error) {
896
921
  if ((0, errors_1.isAuthError)(error)) {
897
- return { data: { user: null, session: null }, error };
922
+ return this._returnResult({ data: { user: null, session: null }, error });
898
923
  }
899
924
  throw error;
900
925
  }
@@ -922,17 +947,18 @@ class GoTrueClient {
922
947
  ;
923
948
  [codeChallenge, codeChallengeMethod] = await (0, helpers_1.getCodeChallengeAndMethod)(this.storage, this.storageKey);
924
949
  }
925
- return await (0, fetch_1._request)(this.fetch, 'POST', `${this.url}/sso`, {
950
+ const result = await (0, fetch_1._request)(this.fetch, 'POST', `${this.url}/sso`, {
926
951
  body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, ('providerId' in params ? { provider_id: params.providerId } : null)), ('domain' in params ? { domain: params.domain } : null)), { redirect_to: (_b = (_a = params.options) === null || _a === void 0 ? void 0 : _a.redirectTo) !== null && _b !== void 0 ? _b : undefined }), (((_c = params === null || params === void 0 ? void 0 : params.options) === null || _c === void 0 ? void 0 : _c.captchaToken)
927
952
  ? { gotrue_meta_security: { captcha_token: params.options.captchaToken } }
928
953
  : null)), { skip_http_redirect: true, code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod }),
929
954
  headers: this.headers,
930
955
  xform: fetch_1._ssoResponse,
931
956
  });
957
+ return this._returnResult(result);
932
958
  }
933
959
  catch (error) {
934
960
  if ((0, errors_1.isAuthError)(error)) {
935
- return { data: null, error };
961
+ return this._returnResult({ data: null, error });
936
962
  }
937
963
  throw error;
938
964
  }
@@ -959,12 +985,12 @@ class GoTrueClient {
959
985
  headers: this.headers,
960
986
  jwt: session.access_token,
961
987
  });
962
- return { data: { user: null, session: null }, error };
988
+ return this._returnResult({ data: { user: null, session: null }, error });
963
989
  });
964
990
  }
965
991
  catch (error) {
966
992
  if ((0, errors_1.isAuthError)(error)) {
967
- return { data: { user: null, session: null }, error };
993
+ return this._returnResult({ data: { user: null, session: null }, error });
968
994
  }
969
995
  throw error;
970
996
  }
@@ -986,7 +1012,7 @@ class GoTrueClient {
986
1012
  },
987
1013
  redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,
988
1014
  });
989
- return { data: { user: null, session: null }, error };
1015
+ return this._returnResult({ data: { user: null, session: null }, error });
990
1016
  }
991
1017
  else if ('phone' in credentials) {
992
1018
  const { phone, type, options } = credentials;
@@ -998,13 +1024,16 @@ class GoTrueClient {
998
1024
  gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken },
999
1025
  },
1000
1026
  });
1001
- return { data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id }, error };
1027
+ return this._returnResult({
1028
+ data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id },
1029
+ error,
1030
+ });
1002
1031
  }
1003
1032
  throw new errors_1.AuthInvalidCredentialsError('You must provide either an email or phone number and a type');
1004
1033
  }
1005
1034
  catch (error) {
1006
1035
  if ((0, errors_1.isAuthError)(error)) {
1007
- return { data: { user: null, session: null }, error };
1036
+ return this._returnResult({ data: { user: null, session: null }, error });
1008
1037
  }
1009
1038
  throw error;
1010
1039
  }
@@ -1163,9 +1192,9 @@ class GoTrueClient {
1163
1192
  }
1164
1193
  const { data: session, error } = await this._callRefreshToken(currentSession.refresh_token);
1165
1194
  if (error) {
1166
- return { data: { session: null }, error };
1195
+ return this._returnResult({ data: { session: null }, error });
1167
1196
  }
1168
- return { data: { session }, error: null };
1197
+ return this._returnResult({ data: { session }, error: null });
1169
1198
  }
1170
1199
  finally {
1171
1200
  this._debug('#__loadSession()', 'end');
@@ -1222,7 +1251,7 @@ class GoTrueClient {
1222
1251
  await this._removeSession();
1223
1252
  await (0, helpers_1.removeItemAsync)(this.storage, `${this.storageKey}-code-verifier`);
1224
1253
  }
1225
- return { data: { user: null }, error };
1254
+ return this._returnResult({ data: { user: null }, error });
1226
1255
  }
1227
1256
  throw error;
1228
1257
  }
@@ -1260,17 +1289,18 @@ class GoTrueClient {
1260
1289
  jwt: session.access_token,
1261
1290
  xform: fetch_1._userResponse,
1262
1291
  });
1263
- if (userError)
1292
+ if (userError) {
1264
1293
  throw userError;
1294
+ }
1265
1295
  session.user = data.user;
1266
1296
  await this._saveSession(session);
1267
1297
  await this._notifyAllSubscribers('USER_UPDATED', session);
1268
- return { data: { user: session.user }, error: null };
1298
+ return this._returnResult({ data: { user: session.user }, error: null });
1269
1299
  });
1270
1300
  }
1271
1301
  catch (error) {
1272
1302
  if ((0, errors_1.isAuthError)(error)) {
1273
- return { data: { user: null }, error };
1303
+ return this._returnResult({ data: { user: null }, error });
1274
1304
  }
1275
1305
  throw error;
1276
1306
  }
@@ -1303,7 +1333,7 @@ class GoTrueClient {
1303
1333
  if (hasExpired) {
1304
1334
  const { data: refreshedSession, error } = await this._callRefreshToken(currentSession.refresh_token);
1305
1335
  if (error) {
1306
- return { data: { user: null, session: null }, error: error };
1336
+ return this._returnResult({ data: { user: null, session: null }, error: error });
1307
1337
  }
1308
1338
  if (!refreshedSession) {
1309
1339
  return { data: { user: null, session: null }, error: null };
@@ -1326,11 +1356,11 @@ class GoTrueClient {
1326
1356
  await this._saveSession(session);
1327
1357
  await this._notifyAllSubscribers('SIGNED_IN', session);
1328
1358
  }
1329
- return { data: { user: session.user, session }, error: null };
1359
+ return this._returnResult({ data: { user: session.user, session }, error: null });
1330
1360
  }
1331
1361
  catch (error) {
1332
1362
  if ((0, errors_1.isAuthError)(error)) {
1333
- return { data: { session: null, user: null }, error };
1363
+ return this._returnResult({ data: { session: null, user: null }, error });
1334
1364
  }
1335
1365
  throw error;
1336
1366
  }
@@ -1363,17 +1393,17 @@ class GoTrueClient {
1363
1393
  }
1364
1394
  const { data: session, error } = await this._callRefreshToken(currentSession.refresh_token);
1365
1395
  if (error) {
1366
- return { data: { user: null, session: null }, error: error };
1396
+ return this._returnResult({ data: { user: null, session: null }, error: error });
1367
1397
  }
1368
1398
  if (!session) {
1369
- return { data: { user: null, session: null }, error: null };
1399
+ return this._returnResult({ data: { user: null, session: null }, error: null });
1370
1400
  }
1371
- return { data: { user: session.user, session }, error: null };
1401
+ return this._returnResult({ data: { user: session.user, session }, error: null });
1372
1402
  });
1373
1403
  }
1374
1404
  catch (error) {
1375
1405
  if ((0, errors_1.isAuthError)(error)) {
1376
- return { data: { user: null, session: null }, error };
1406
+ return this._returnResult({ data: { user: null, session: null }, error });
1377
1407
  }
1378
1408
  throw error;
1379
1409
  }
@@ -1459,11 +1489,11 @@ class GoTrueClient {
1459
1489
  // Remove tokens from URL
1460
1490
  window.location.hash = '';
1461
1491
  this._debug('#_getSessionFromURL()', 'clearing window.location.hash');
1462
- return { data: { session, redirectType: params.type }, error: null };
1492
+ return this._returnResult({ data: { session, redirectType: params.type }, error: null });
1463
1493
  }
1464
1494
  catch (error) {
1465
1495
  if ((0, errors_1.isAuthError)(error)) {
1466
- return { data: { session: null, redirectType: null }, error };
1496
+ return this._returnResult({ data: { session: null, redirectType: null }, error });
1467
1497
  }
1468
1498
  throw error;
1469
1499
  }
@@ -1500,7 +1530,7 @@ class GoTrueClient {
1500
1530
  var _a;
1501
1531
  const { data, error: sessionError } = result;
1502
1532
  if (sessionError) {
1503
- return { error: sessionError };
1533
+ return this._returnResult({ error: sessionError });
1504
1534
  }
1505
1535
  const accessToken = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token;
1506
1536
  if (accessToken) {
@@ -1510,7 +1540,7 @@ class GoTrueClient {
1510
1540
  // ignore 401s since an invalid or expired JWT should sign out the current session
1511
1541
  if (!((0, errors_1.isAuthApiError)(error) &&
1512
1542
  (error.status === 404 || error.status === 401 || error.status === 403))) {
1513
- return { error };
1543
+ return this._returnResult({ error });
1514
1544
  }
1515
1545
  }
1516
1546
  }
@@ -1518,7 +1548,7 @@ class GoTrueClient {
1518
1548
  await this._removeSession();
1519
1549
  await (0, helpers_1.removeItemAsync)(this.storage, `${this.storageKey}-code-verifier`);
1520
1550
  }
1521
- return { error: null };
1551
+ return this._returnResult({ error: null });
1522
1552
  });
1523
1553
  }
1524
1554
  onAuthStateChange(callback) {
@@ -1587,7 +1617,7 @@ class GoTrueClient {
1587
1617
  }
1588
1618
  catch (error) {
1589
1619
  if ((0, errors_1.isAuthError)(error)) {
1590
- return { data: null, error };
1620
+ return this._returnResult({ data: null, error });
1591
1621
  }
1592
1622
  throw error;
1593
1623
  }
@@ -1601,11 +1631,11 @@ class GoTrueClient {
1601
1631
  const { data, error } = await this.getUser();
1602
1632
  if (error)
1603
1633
  throw error;
1604
- return { data: { identities: (_a = data.user.identities) !== null && _a !== void 0 ? _a : [] }, error: null };
1634
+ return this._returnResult({ data: { identities: (_a = data.user.identities) !== null && _a !== void 0 ? _a : [] }, error: null });
1605
1635
  }
1606
1636
  catch (error) {
1607
1637
  if ((0, errors_1.isAuthError)(error)) {
1608
- return { data: null, error };
1638
+ return this._returnResult({ data: null, error });
1609
1639
  }
1610
1640
  throw error;
1611
1641
  }
@@ -1640,11 +1670,14 @@ class GoTrueClient {
1640
1670
  if ((0, helpers_1.isBrowser)() && !((_a = credentials.options) === null || _a === void 0 ? void 0 : _a.skipBrowserRedirect)) {
1641
1671
  window.location.assign(data === null || data === void 0 ? void 0 : data.url);
1642
1672
  }
1643
- return { data: { provider: credentials.provider, url: data === null || data === void 0 ? void 0 : data.url }, error: null };
1673
+ return this._returnResult({
1674
+ data: { provider: credentials.provider, url: data === null || data === void 0 ? void 0 : data.url },
1675
+ error: null,
1676
+ });
1644
1677
  }
1645
1678
  catch (error) {
1646
1679
  if ((0, errors_1.isAuthError)(error)) {
1647
- return { data: { provider: credentials.provider, url: null }, error };
1680
+ return this._returnResult({ data: { provider: credentials.provider, url: null }, error });
1648
1681
  }
1649
1682
  throw error;
1650
1683
  }
@@ -1672,23 +1705,23 @@ class GoTrueClient {
1672
1705
  });
1673
1706
  const { data, error } = res;
1674
1707
  if (error) {
1675
- return { data: { user: null, session: null }, error };
1708
+ return this._returnResult({ data: { user: null, session: null }, error });
1676
1709
  }
1677
1710
  else if (!data || !data.session || !data.user) {
1678
- return {
1711
+ return this._returnResult({
1679
1712
  data: { user: null, session: null },
1680
1713
  error: new errors_1.AuthInvalidTokenResponseError(),
1681
- };
1714
+ });
1682
1715
  }
1683
1716
  if (data.session) {
1684
1717
  await this._saveSession(data.session);
1685
1718
  await this._notifyAllSubscribers('USER_UPDATED', data.session);
1686
1719
  }
1687
- return { data, error };
1720
+ return this._returnResult({ data, error });
1688
1721
  }
1689
1722
  catch (error) {
1690
1723
  if ((0, errors_1.isAuthError)(error)) {
1691
- return { data: { user: null, session: null }, error };
1724
+ return this._returnResult({ data: { user: null, session: null }, error });
1692
1725
  }
1693
1726
  throw error;
1694
1727
  }
@@ -1713,7 +1746,7 @@ class GoTrueClient {
1713
1746
  }
1714
1747
  catch (error) {
1715
1748
  if ((0, errors_1.isAuthError)(error)) {
1716
- return { data: null, error };
1749
+ return this._returnResult({ data: null, error });
1717
1750
  }
1718
1751
  throw error;
1719
1752
  }
@@ -1749,7 +1782,7 @@ class GoTrueClient {
1749
1782
  catch (error) {
1750
1783
  this._debug(debugName, 'error', error);
1751
1784
  if ((0, errors_1.isAuthError)(error)) {
1752
- return { data: { session: null, user: null }, error };
1785
+ return this._returnResult({ data: { session: null, user: null }, error });
1753
1786
  }
1754
1787
  throw error;
1755
1788
  }
@@ -2234,7 +2267,7 @@ class GoTrueClient {
2234
2267
  var _a;
2235
2268
  const { data: sessionData, error: sessionError } = result;
2236
2269
  if (sessionError) {
2237
- return { data: null, error: sessionError };
2270
+ return this._returnResult({ data: null, error: sessionError });
2238
2271
  }
2239
2272
  return await (0, fetch_1._request)(this.fetch, 'DELETE', `${this.url}/factors/${params.factorId}`, {
2240
2273
  headers: this.headers,
@@ -2244,7 +2277,7 @@ class GoTrueClient {
2244
2277
  }
2245
2278
  catch (error) {
2246
2279
  if ((0, errors_1.isAuthError)(error)) {
2247
- return { data: null, error };
2280
+ return this._returnResult({ data: null, error });
2248
2281
  }
2249
2282
  throw error;
2250
2283
  }
@@ -2255,7 +2288,7 @@ class GoTrueClient {
2255
2288
  var _a, _b;
2256
2289
  const { data: sessionData, error: sessionError } = result;
2257
2290
  if (sessionError) {
2258
- return { data: null, error: sessionError };
2291
+ return this._returnResult({ data: null, error: sessionError });
2259
2292
  }
2260
2293
  const body = Object.assign({ friendly_name: params.friendlyName, factor_type: params.factorType }, (params.factorType === 'phone'
2261
2294
  ? { phone: params.phone }
@@ -2268,17 +2301,17 @@ class GoTrueClient {
2268
2301
  jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token,
2269
2302
  }));
2270
2303
  if (error) {
2271
- return { data: null, error };
2304
+ return this._returnResult({ data: null, error });
2272
2305
  }
2273
2306
  if (params.factorType === 'totp' && data.type === 'totp' && ((_b = data === null || data === void 0 ? void 0 : data.totp) === null || _b === void 0 ? void 0 : _b.qr_code)) {
2274
2307
  data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`;
2275
2308
  }
2276
- return { data, error: null };
2309
+ return this._returnResult({ data, error: null });
2277
2310
  });
2278
2311
  }
2279
2312
  catch (error) {
2280
2313
  if ((0, errors_1.isAuthError)(error)) {
2281
- return { data: null, error };
2314
+ return this._returnResult({ data: null, error });
2282
2315
  }
2283
2316
  throw error;
2284
2317
  }
@@ -2290,7 +2323,7 @@ class GoTrueClient {
2290
2323
  var _a;
2291
2324
  const { data: sessionData, error: sessionError } = result;
2292
2325
  if (sessionError) {
2293
- return { data: null, error: sessionError };
2326
+ return this._returnResult({ data: null, error: sessionError });
2294
2327
  }
2295
2328
  const body = Object.assign({ challenge_id: params.challengeId }, ('webauthn' in params
2296
2329
  ? {
@@ -2305,16 +2338,16 @@ class GoTrueClient {
2305
2338
  jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token,
2306
2339
  });
2307
2340
  if (error) {
2308
- return { data: null, error };
2341
+ return this._returnResult({ data: null, error });
2309
2342
  }
2310
2343
  await this._saveSession(Object.assign({ expires_at: Math.round(Date.now() / 1000) + data.expires_in }, data));
2311
2344
  await this._notifyAllSubscribers('MFA_CHALLENGE_VERIFIED', data);
2312
- return { data, error };
2345
+ return this._returnResult({ data, error });
2313
2346
  });
2314
2347
  }
2315
2348
  catch (error) {
2316
2349
  if ((0, errors_1.isAuthError)(error)) {
2317
- return { data: null, error };
2350
+ return this._returnResult({ data: null, error });
2318
2351
  }
2319
2352
  throw error;
2320
2353
  }
@@ -2327,7 +2360,7 @@ class GoTrueClient {
2327
2360
  var _a;
2328
2361
  const { data: sessionData, error: sessionError } = result;
2329
2362
  if (sessionError) {
2330
- return { data: null, error: sessionError };
2363
+ return this._returnResult({ data: null, error: sessionError });
2331
2364
  }
2332
2365
  const response = (await (0, fetch_1._request)(this.fetch, 'POST', `${this.url}/factors/${params.factorId}/challenge`, {
2333
2366
  body: params,
@@ -2357,7 +2390,7 @@ class GoTrueClient {
2357
2390
  }
2358
2391
  catch (error) {
2359
2392
  if ((0, errors_1.isAuthError)(error)) {
2360
- return { data: null, error };
2393
+ return this._returnResult({ data: null, error });
2361
2394
  }
2362
2395
  throw error;
2363
2396
  }
@@ -2373,7 +2406,7 @@ class GoTrueClient {
2373
2406
  factorId: params.factorId,
2374
2407
  });
2375
2408
  if (challengeError) {
2376
- return { data: null, error: challengeError };
2409
+ return this._returnResult({ data: null, error: challengeError });
2377
2410
  }
2378
2411
  return await this._verify({
2379
2412
  factorId: params.factorId,
@@ -2417,7 +2450,7 @@ class GoTrueClient {
2417
2450
  var _a, _b;
2418
2451
  const { data: { session }, error: sessionError, } = await this.getSession();
2419
2452
  if (sessionError) {
2420
- return { data: null, error: sessionError };
2453
+ return this._returnResult({ data: null, error: sessionError });
2421
2454
  }
2422
2455
  if (!session) {
2423
2456
  return {
@@ -2451,10 +2484,10 @@ class GoTrueClient {
2451
2484
  return await this._useSession(async (result) => {
2452
2485
  const { data: { session }, error: sessionError, } = result;
2453
2486
  if (sessionError) {
2454
- return { data: null, error: sessionError };
2487
+ return this._returnResult({ data: null, error: sessionError });
2455
2488
  }
2456
2489
  if (!session) {
2457
- return { data: null, error: new errors_1.AuthSessionMissingError() };
2490
+ return this._returnResult({ data: null, error: new errors_1.AuthSessionMissingError() });
2458
2491
  }
2459
2492
  return await (0, fetch_1._request)(this.fetch, 'GET', `${this.url}/oauth/authorizations/${authorizationId}`, {
2460
2493
  headers: this.headers,
@@ -2465,7 +2498,7 @@ class GoTrueClient {
2465
2498
  }
2466
2499
  catch (error) {
2467
2500
  if ((0, errors_1.isAuthError)(error)) {
2468
- return { data: null, error };
2501
+ return this._returnResult({ data: null, error });
2469
2502
  }
2470
2503
  throw error;
2471
2504
  }
@@ -2479,10 +2512,10 @@ class GoTrueClient {
2479
2512
  return await this._useSession(async (result) => {
2480
2513
  const { data: { session }, error: sessionError, } = result;
2481
2514
  if (sessionError) {
2482
- return { data: null, error: sessionError };
2515
+ return this._returnResult({ data: null, error: sessionError });
2483
2516
  }
2484
2517
  if (!session) {
2485
- return { data: null, error: new errors_1.AuthSessionMissingError() };
2518
+ return this._returnResult({ data: null, error: new errors_1.AuthSessionMissingError() });
2486
2519
  }
2487
2520
  const response = await (0, fetch_1._request)(this.fetch, 'POST', `${this.url}/oauth/authorizations/${authorizationId}/consent`, {
2488
2521
  headers: this.headers,
@@ -2501,7 +2534,7 @@ class GoTrueClient {
2501
2534
  }
2502
2535
  catch (error) {
2503
2536
  if ((0, errors_1.isAuthError)(error)) {
2504
- return { data: null, error };
2537
+ return this._returnResult({ data: null, error });
2505
2538
  }
2506
2539
  throw error;
2507
2540
  }
@@ -2515,10 +2548,10 @@ class GoTrueClient {
2515
2548
  return await this._useSession(async (result) => {
2516
2549
  const { data: { session }, error: sessionError, } = result;
2517
2550
  if (sessionError) {
2518
- return { data: null, error: sessionError };
2551
+ return this._returnResult({ data: null, error: sessionError });
2519
2552
  }
2520
2553
  if (!session) {
2521
- return { data: null, error: new errors_1.AuthSessionMissingError() };
2554
+ return this._returnResult({ data: null, error: new errors_1.AuthSessionMissingError() });
2522
2555
  }
2523
2556
  const response = await (0, fetch_1._request)(this.fetch, 'POST', `${this.url}/oauth/authorizations/${authorizationId}/consent`, {
2524
2557
  headers: this.headers,
@@ -2537,7 +2570,7 @@ class GoTrueClient {
2537
2570
  }
2538
2571
  catch (error) {
2539
2572
  if ((0, errors_1.isAuthError)(error)) {
2540
- return { data: null, error };
2573
+ return this._returnResult({ data: null, error });
2541
2574
  }
2542
2575
  throw error;
2543
2576
  }
@@ -2596,7 +2629,7 @@ class GoTrueClient {
2596
2629
  if (!token) {
2597
2630
  const { data, error } = await this.getSession();
2598
2631
  if (error || !data.session) {
2599
- return { data: null, error };
2632
+ return this._returnResult({ data: null, error });
2600
2633
  }
2601
2634
  token = data.session.access_token;
2602
2635
  }
@@ -2649,7 +2682,7 @@ class GoTrueClient {
2649
2682
  }
2650
2683
  catch (error) {
2651
2684
  if ((0, errors_1.isAuthError)(error)) {
2652
- return { data: null, error };
2685
+ return this._returnResult({ data: null, error });
2653
2686
  }
2654
2687
  throw error;
2655
2688
  }