@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
@@ -170,6 +170,7 @@ const DEFAULT_OPTIONS: Omit<
170
170
  flowType: 'implicit',
171
171
  debug: false,
172
172
  hasCustomAuthorizationHeader: false,
173
+ throwOnError: false,
173
174
  }
174
175
 
175
176
  async function lockNoOp<R>(name: string, acquireTimeout: number, fn: () => Promise<R>): Promise<R> {
@@ -262,6 +263,7 @@ export default class GoTrueClient {
262
263
  protected lock: LockFunc
263
264
  protected lockAcquired = false
264
265
  protected pendingInLock: Promise<any>[] = []
266
+ protected throwOnError: boolean
265
267
 
266
268
  /**
267
269
  * Used to broadcast state change events to other tabs listening.
@@ -307,6 +309,7 @@ export default class GoTrueClient {
307
309
  this.detectSessionInUrl = settings.detectSessionInUrl
308
310
  this.flowType = settings.flowType
309
311
  this.hasCustomAuthorizationHeader = settings.hasCustomAuthorizationHeader
312
+ this.throwOnError = settings.throwOnError
310
313
 
311
314
  if (settings.lock) {
312
315
  this.lock = settings.lock
@@ -378,6 +381,25 @@ export default class GoTrueClient {
378
381
  this.initialize()
379
382
  }
380
383
 
384
+ /**
385
+ * Returns whether error throwing mode is enabled for this client.
386
+ */
387
+ public isThrowOnErrorEnabled(): boolean {
388
+ return this.throwOnError
389
+ }
390
+
391
+ /**
392
+ * Centralizes return handling with optional error throwing. When `throwOnError` is enabled
393
+ * and the provided result contains a non-nullish error, the error is thrown instead of
394
+ * being returned. This ensures consistent behavior across all public API methods.
395
+ */
396
+ private _returnResult<T extends { error: any }>(result: T): T {
397
+ if (this.throwOnError && result && result.error) {
398
+ throw result.error
399
+ }
400
+ return result
401
+ }
402
+
381
403
  private _debug(...args: any[]): GoTrueClient {
382
404
  if (this.logDebugMessages) {
383
405
  this.logger(
@@ -416,12 +438,16 @@ export default class GoTrueClient {
416
438
  */
417
439
  private async _initialize(): Promise<InitializeResult> {
418
440
  try {
419
- const params = parseParametersFromURL(window.location.href)
441
+ let params: { [parameter: string]: string } = {}
420
442
  let callbackUrlType = 'none'
421
- if (this._isImplicitGrantCallback(params)) {
422
- callbackUrlType = 'implicit'
423
- } else if (await this._isPKCECallback(params)) {
424
- callbackUrlType = 'pkce'
443
+
444
+ if (isBrowser()) {
445
+ params = parseParametersFromURL(window.location.href)
446
+ if (this._isImplicitGrantCallback(params)) {
447
+ callbackUrlType = 'implicit'
448
+ } else if (await this._isPKCECallback(params)) {
449
+ callbackUrlType = 'pkce'
450
+ }
425
451
  }
426
452
 
427
453
  /**
@@ -480,12 +506,12 @@ export default class GoTrueClient {
480
506
  return { error: null }
481
507
  } catch (error) {
482
508
  if (isAuthError(error)) {
483
- return { error }
509
+ return this._returnResult({ error })
484
510
  }
485
511
 
486
- return {
512
+ return this._returnResult({
487
513
  error: new AuthUnknownError('Unexpected error during initialization', error),
488
- }
514
+ })
489
515
  } finally {
490
516
  await this._handleVisibilityChange()
491
517
  this._debug('#_initialize()', 'end')
@@ -510,7 +536,7 @@ export default class GoTrueClient {
510
536
  const { data, error } = res
511
537
 
512
538
  if (error || !data) {
513
- return { data: { user: null, session: null }, error: error }
539
+ return this._returnResult({ data: { user: null, session: null }, error: error })
514
540
  }
515
541
  const session: Session | null = data.session
516
542
  const user: User | null = data.user
@@ -520,10 +546,10 @@ export default class GoTrueClient {
520
546
  await this._notifyAllSubscribers('SIGNED_IN', session)
521
547
  }
522
548
 
523
- return { data: { user, session }, error: null }
549
+ return this._returnResult({ data: { user, session }, error: null })
524
550
  } catch (error) {
525
551
  if (isAuthError(error)) {
526
- return { data: { user: null, session: null }, error }
552
+ return this._returnResult({ data: { user: null, session: null }, error })
527
553
  }
528
554
 
529
555
  throw error
@@ -588,7 +614,7 @@ export default class GoTrueClient {
588
614
  const { data, error } = res
589
615
 
590
616
  if (error || !data) {
591
- return { data: { user: null, session: null }, error: error }
617
+ return this._returnResult({ data: { user: null, session: null }, error: error })
592
618
  }
593
619
 
594
620
  const session: Session | null = data.session
@@ -599,10 +625,10 @@ export default class GoTrueClient {
599
625
  await this._notifyAllSubscribers('SIGNED_IN', session)
600
626
  }
601
627
 
602
- return { data: { user, session }, error: null }
628
+ return this._returnResult({ data: { user, session }, error: null })
603
629
  } catch (error) {
604
630
  if (isAuthError(error)) {
605
- return { data: { user: null, session: null }, error }
631
+ return this._returnResult({ data: { user: null, session: null }, error })
606
632
  }
607
633
 
608
634
  throw error
@@ -652,25 +678,26 @@ export default class GoTrueClient {
652
678
  const { data, error } = res
653
679
 
654
680
  if (error) {
655
- return { data: { user: null, session: null }, error }
681
+ return this._returnResult({ data: { user: null, session: null }, error })
656
682
  } else if (!data || !data.session || !data.user) {
657
- return { data: { user: null, session: null }, error: new AuthInvalidTokenResponseError() }
683
+ const invalidTokenError = new AuthInvalidTokenResponseError()
684
+ return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError })
658
685
  }
659
686
  if (data.session) {
660
687
  await this._saveSession(data.session)
661
688
  await this._notifyAllSubscribers('SIGNED_IN', data.session)
662
689
  }
663
- return {
690
+ return this._returnResult({
664
691
  data: {
665
692
  user: data.user,
666
693
  session: data.session,
667
694
  ...(data.weak_password ? { weakPassword: data.weak_password } : null),
668
695
  },
669
696
  error,
670
- }
697
+ })
671
698
  } catch (error) {
672
699
  if (isAuthError(error)) {
673
- return { data: { user: null, session: null }, error }
700
+ return this._returnResult({ data: { user: null, session: null }, error })
674
701
  }
675
702
  throw error
676
703
  }
@@ -846,19 +873,17 @@ export default class GoTrueClient {
846
873
  throw error
847
874
  }
848
875
  if (!data || !data.session || !data.user) {
849
- return {
850
- data: { user: null, session: null },
851
- error: new AuthInvalidTokenResponseError(),
852
- }
876
+ const invalidTokenError = new AuthInvalidTokenResponseError()
877
+ return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError })
853
878
  }
854
879
  if (data.session) {
855
880
  await this._saveSession(data.session)
856
881
  await this._notifyAllSubscribers('SIGNED_IN', data.session)
857
882
  }
858
- return { data: { ...data }, error }
883
+ return this._returnResult({ data: { ...data }, error })
859
884
  } catch (error) {
860
885
  if (isAuthError(error)) {
861
- return { data: { user: null, session: null }, error }
886
+ return this._returnResult({ data: { user: null, session: null }, error })
862
887
  }
863
888
 
864
889
  throw error
@@ -1034,19 +1059,17 @@ export default class GoTrueClient {
1034
1059
  throw error
1035
1060
  }
1036
1061
  if (!data || !data.session || !data.user) {
1037
- return {
1038
- data: { user: null, session: null },
1039
- error: new AuthInvalidTokenResponseError(),
1040
- }
1062
+ const invalidTokenError = new AuthInvalidTokenResponseError()
1063
+ return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError })
1041
1064
  }
1042
1065
  if (data.session) {
1043
1066
  await this._saveSession(data.session)
1044
1067
  await this._notifyAllSubscribers('SIGNED_IN', data.session)
1045
1068
  }
1046
- return { data: { ...data }, error }
1069
+ return this._returnResult({ data: { ...data }, error })
1047
1070
  } catch (error) {
1048
1071
  if (isAuthError(error)) {
1049
- return { data: { user: null, session: null }, error }
1072
+ return this._returnResult({ data: { user: null, session: null }, error })
1050
1073
  }
1051
1074
 
1052
1075
  throw error
@@ -1082,19 +1105,23 @@ export default class GoTrueClient {
1082
1105
  throw error
1083
1106
  }
1084
1107
  if (!data || !data.session || !data.user) {
1085
- return {
1108
+ const invalidTokenError = new AuthInvalidTokenResponseError()
1109
+ return this._returnResult({
1086
1110
  data: { user: null, session: null, redirectType: null },
1087
- error: new AuthInvalidTokenResponseError(),
1088
- }
1111
+ error: invalidTokenError,
1112
+ })
1089
1113
  }
1090
1114
  if (data.session) {
1091
1115
  await this._saveSession(data.session)
1092
1116
  await this._notifyAllSubscribers('SIGNED_IN', data.session)
1093
1117
  }
1094
- return { data: { ...data, redirectType: redirectType ?? null }, error }
1118
+ return this._returnResult({ data: { ...data, redirectType: redirectType ?? null }, error })
1095
1119
  } catch (error) {
1096
1120
  if (isAuthError(error)) {
1097
- return { data: { user: null, session: null, redirectType: null }, error }
1121
+ return this._returnResult({
1122
+ data: { user: null, session: null, redirectType: null },
1123
+ error,
1124
+ })
1098
1125
  }
1099
1126
 
1100
1127
  throw error
@@ -1123,21 +1150,19 @@ export default class GoTrueClient {
1123
1150
 
1124
1151
  const { data, error } = res
1125
1152
  if (error) {
1126
- return { data: { user: null, session: null }, error }
1153
+ return this._returnResult({ data: { user: null, session: null }, error })
1127
1154
  } else if (!data || !data.session || !data.user) {
1128
- return {
1129
- data: { user: null, session: null },
1130
- error: new AuthInvalidTokenResponseError(),
1131
- }
1155
+ const invalidTokenError = new AuthInvalidTokenResponseError()
1156
+ return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError })
1132
1157
  }
1133
1158
  if (data.session) {
1134
1159
  await this._saveSession(data.session)
1135
1160
  await this._notifyAllSubscribers('SIGNED_IN', data.session)
1136
1161
  }
1137
- return { data, error }
1162
+ return this._returnResult({ data, error })
1138
1163
  } catch (error) {
1139
1164
  if (isAuthError(error)) {
1140
- return { data: { user: null, session: null }, error }
1165
+ return this._returnResult({ data: { user: null, session: null }, error })
1141
1166
  }
1142
1167
  throw error
1143
1168
  }
@@ -1184,7 +1209,7 @@ export default class GoTrueClient {
1184
1209
  },
1185
1210
  redirectTo: options?.emailRedirectTo,
1186
1211
  })
1187
- return { data: { user: null, session: null }, error }
1212
+ return this._returnResult({ data: { user: null, session: null }, error })
1188
1213
  }
1189
1214
  if ('phone' in credentials) {
1190
1215
  const { phone, options } = credentials
@@ -1198,12 +1223,15 @@ export default class GoTrueClient {
1198
1223
  channel: options?.channel ?? 'sms',
1199
1224
  },
1200
1225
  })
1201
- return { data: { user: null, session: null, messageId: data?.message_id }, error }
1226
+ return this._returnResult({
1227
+ data: { user: null, session: null, messageId: data?.message_id },
1228
+ error,
1229
+ })
1202
1230
  }
1203
1231
  throw new AuthInvalidCredentialsError('You must provide either an email or phone number.')
1204
1232
  } catch (error) {
1205
1233
  if (isAuthError(error)) {
1206
- return { data: { user: null, session: null }, error }
1234
+ return this._returnResult({ data: { user: null, session: null }, error })
1207
1235
  }
1208
1236
 
1209
1237
  throw error
@@ -1234,9 +1262,9 @@ export default class GoTrueClient {
1234
1262
  if (error) {
1235
1263
  throw error
1236
1264
  }
1237
-
1238
1265
  if (!data) {
1239
- throw new Error('An error occurred on token verification.')
1266
+ const tokenVerificationError = new Error('An error occurred on token verification.')
1267
+ throw tokenVerificationError
1240
1268
  }
1241
1269
 
1242
1270
  const session: Session | null = data.session
@@ -1250,10 +1278,10 @@ export default class GoTrueClient {
1250
1278
  )
1251
1279
  }
1252
1280
 
1253
- return { data: { user, session }, error: null }
1281
+ return this._returnResult({ data: { user, session }, error: null })
1254
1282
  } catch (error) {
1255
1283
  if (isAuthError(error)) {
1256
- return { data: { user: null, session: null }, error }
1284
+ return this._returnResult({ data: { user: null, session: null }, error })
1257
1285
  }
1258
1286
 
1259
1287
  throw error
@@ -1285,7 +1313,7 @@ export default class GoTrueClient {
1285
1313
  )
1286
1314
  }
1287
1315
 
1288
- return await _request(this.fetch, 'POST', `${this.url}/sso`, {
1316
+ const result = await _request(this.fetch, 'POST', `${this.url}/sso`, {
1289
1317
  body: {
1290
1318
  ...('providerId' in params ? { provider_id: params.providerId } : null),
1291
1319
  ...('domain' in params ? { domain: params.domain } : null),
@@ -1300,9 +1328,10 @@ export default class GoTrueClient {
1300
1328
  headers: this.headers,
1301
1329
  xform: _ssoResponse,
1302
1330
  })
1331
+ return this._returnResult(result)
1303
1332
  } catch (error) {
1304
1333
  if (isAuthError(error)) {
1305
- return { data: null, error }
1334
+ return this._returnResult({ data: null, error })
1306
1335
  }
1307
1336
  throw error
1308
1337
  }
@@ -1334,11 +1363,11 @@ export default class GoTrueClient {
1334
1363
  headers: this.headers,
1335
1364
  jwt: session.access_token,
1336
1365
  })
1337
- return { data: { user: null, session: null }, error }
1366
+ return this._returnResult({ data: { user: null, session: null }, error })
1338
1367
  })
1339
1368
  } catch (error) {
1340
1369
  if (isAuthError(error)) {
1341
- return { data: { user: null, session: null }, error }
1370
+ return this._returnResult({ data: { user: null, session: null }, error })
1342
1371
  }
1343
1372
  throw error
1344
1373
  }
@@ -1361,7 +1390,7 @@ export default class GoTrueClient {
1361
1390
  },
1362
1391
  redirectTo: options?.emailRedirectTo,
1363
1392
  })
1364
- return { data: { user: null, session: null }, error }
1393
+ return this._returnResult({ data: { user: null, session: null }, error })
1365
1394
  } else if ('phone' in credentials) {
1366
1395
  const { phone, type, options } = credentials
1367
1396
  const { data, error } = await _request(this.fetch, 'POST', endpoint, {
@@ -1372,14 +1401,17 @@ export default class GoTrueClient {
1372
1401
  gotrue_meta_security: { captcha_token: options?.captchaToken },
1373
1402
  },
1374
1403
  })
1375
- return { data: { user: null, session: null, messageId: data?.message_id }, error }
1404
+ return this._returnResult({
1405
+ data: { user: null, session: null, messageId: data?.message_id },
1406
+ error,
1407
+ })
1376
1408
  }
1377
1409
  throw new AuthInvalidCredentialsError(
1378
1410
  'You must provide either an email or phone number and a type'
1379
1411
  )
1380
1412
  } catch (error) {
1381
1413
  if (isAuthError(error)) {
1382
- return { data: { user: null, session: null }, error }
1414
+ return this._returnResult({ data: { user: null, session: null }, error })
1383
1415
  }
1384
1416
  throw error
1385
1417
  }
@@ -1622,10 +1654,10 @@ export default class GoTrueClient {
1622
1654
 
1623
1655
  const { data: session, error } = await this._callRefreshToken(currentSession.refresh_token)
1624
1656
  if (error) {
1625
- return { data: { session: null }, error }
1657
+ return this._returnResult({ data: { session: null }, error })
1626
1658
  }
1627
1659
 
1628
- return { data: { session }, error: null }
1660
+ return this._returnResult({ data: { session }, error: null })
1629
1661
  } finally {
1630
1662
  this._debug('#__loadSession()', 'end')
1631
1663
  }
@@ -1689,7 +1721,7 @@ export default class GoTrueClient {
1689
1721
  await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`)
1690
1722
  }
1691
1723
 
1692
- return { data: { user: null }, error }
1724
+ return this._returnResult({ data: { user: null }, error })
1693
1725
  }
1694
1726
 
1695
1727
  throw error
@@ -1748,15 +1780,17 @@ export default class GoTrueClient {
1748
1780
  jwt: session.access_token,
1749
1781
  xform: _userResponse,
1750
1782
  })
1751
- if (userError) throw userError
1783
+ if (userError) {
1784
+ throw userError
1785
+ }
1752
1786
  session.user = data.user as User
1753
1787
  await this._saveSession(session)
1754
1788
  await this._notifyAllSubscribers('USER_UPDATED', session)
1755
- return { data: { user: session.user }, error: null }
1789
+ return this._returnResult({ data: { user: session.user }, error: null })
1756
1790
  })
1757
1791
  } catch (error) {
1758
1792
  if (isAuthError(error)) {
1759
- return { data: { user: null }, error }
1793
+ return this._returnResult({ data: { user: null }, error })
1760
1794
  }
1761
1795
 
1762
1796
  throw error
@@ -1803,7 +1837,7 @@ export default class GoTrueClient {
1803
1837
  currentSession.refresh_token
1804
1838
  )
1805
1839
  if (error) {
1806
- return { data: { user: null, session: null }, error: error }
1840
+ return this._returnResult({ data: { user: null, session: null }, error: error })
1807
1841
  }
1808
1842
 
1809
1843
  if (!refreshedSession) {
@@ -1827,10 +1861,10 @@ export default class GoTrueClient {
1827
1861
  await this._notifyAllSubscribers('SIGNED_IN', session)
1828
1862
  }
1829
1863
 
1830
- return { data: { user: session.user, session }, error: null }
1864
+ return this._returnResult({ data: { user: session.user, session }, error: null })
1831
1865
  } catch (error) {
1832
1866
  if (isAuthError(error)) {
1833
- return { data: { session: null, user: null }, error }
1867
+ return this._returnResult({ data: { session: null, user: null }, error })
1834
1868
  }
1835
1869
 
1836
1870
  throw error
@@ -1871,18 +1905,18 @@ export default class GoTrueClient {
1871
1905
 
1872
1906
  const { data: session, error } = await this._callRefreshToken(currentSession.refresh_token)
1873
1907
  if (error) {
1874
- return { data: { user: null, session: null }, error: error }
1908
+ return this._returnResult({ data: { user: null, session: null }, error: error })
1875
1909
  }
1876
1910
 
1877
1911
  if (!session) {
1878
- return { data: { user: null, session: null }, error: null }
1912
+ return this._returnResult({ data: { user: null, session: null }, error: null })
1879
1913
  }
1880
1914
 
1881
- return { data: { user: session.user, session }, error: null }
1915
+ return this._returnResult({ data: { user: session.user, session }, error: null })
1882
1916
  })
1883
1917
  } catch (error) {
1884
1918
  if (isAuthError(error)) {
1885
- return { data: { user: null, session: null }, error }
1919
+ return this._returnResult({ data: { user: null, session: null }, error })
1886
1920
  }
1887
1921
 
1888
1922
  throw error
@@ -2013,10 +2047,10 @@ export default class GoTrueClient {
2013
2047
  window.location.hash = ''
2014
2048
  this._debug('#_getSessionFromURL()', 'clearing window.location.hash')
2015
2049
 
2016
- return { data: { session, redirectType: params.type }, error: null }
2050
+ return this._returnResult({ data: { session, redirectType: params.type }, error: null })
2017
2051
  } catch (error) {
2018
2052
  if (isAuthError(error)) {
2019
- return { data: { session: null, redirectType: null }, error }
2053
+ return this._returnResult({ data: { session: null, redirectType: null }, error })
2020
2054
  }
2021
2055
 
2022
2056
  throw error
@@ -2064,7 +2098,7 @@ export default class GoTrueClient {
2064
2098
  return await this._useSession(async (result) => {
2065
2099
  const { data, error: sessionError } = result
2066
2100
  if (sessionError) {
2067
- return { error: sessionError }
2101
+ return this._returnResult({ error: sessionError })
2068
2102
  }
2069
2103
  const accessToken = data.session?.access_token
2070
2104
  if (accessToken) {
@@ -2078,7 +2112,7 @@ export default class GoTrueClient {
2078
2112
  (error.status === 404 || error.status === 401 || error.status === 403)
2079
2113
  )
2080
2114
  ) {
2081
- return { error }
2115
+ return this._returnResult({ error })
2082
2116
  }
2083
2117
  }
2084
2118
  }
@@ -2086,7 +2120,7 @@ export default class GoTrueClient {
2086
2120
  await this._removeSession()
2087
2121
  await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`)
2088
2122
  }
2089
- return { error: null }
2123
+ return this._returnResult({ error: null })
2090
2124
  })
2091
2125
  }
2092
2126
 
@@ -2208,7 +2242,7 @@ export default class GoTrueClient {
2208
2242
  })
2209
2243
  } catch (error) {
2210
2244
  if (isAuthError(error)) {
2211
- return { data: null, error }
2245
+ return this._returnResult({ data: null, error })
2212
2246
  }
2213
2247
 
2214
2248
  throw error
@@ -2230,10 +2264,10 @@ export default class GoTrueClient {
2230
2264
  try {
2231
2265
  const { data, error } = await this.getUser()
2232
2266
  if (error) throw error
2233
- return { data: { identities: data.user.identities ?? [] }, error: null }
2267
+ return this._returnResult({ data: { identities: data.user.identities ?? [] }, error: null })
2234
2268
  } catch (error) {
2235
2269
  if (isAuthError(error)) {
2236
- return { data: null, error }
2270
+ return this._returnResult({ data: null, error })
2237
2271
  }
2238
2272
  throw error
2239
2273
  }
@@ -2282,10 +2316,13 @@ export default class GoTrueClient {
2282
2316
  if (isBrowser() && !credentials.options?.skipBrowserRedirect) {
2283
2317
  window.location.assign(data?.url)
2284
2318
  }
2285
- return { data: { provider: credentials.provider, url: data?.url }, error: null }
2319
+ return this._returnResult({
2320
+ data: { provider: credentials.provider, url: data?.url },
2321
+ error: null,
2322
+ })
2286
2323
  } catch (error) {
2287
2324
  if (isAuthError(error)) {
2288
- return { data: { provider: credentials.provider, url: null }, error }
2325
+ return this._returnResult({ data: { provider: credentials.provider, url: null }, error })
2289
2326
  }
2290
2327
  throw error
2291
2328
  }
@@ -2320,21 +2357,21 @@ export default class GoTrueClient {
2320
2357
 
2321
2358
  const { data, error } = res
2322
2359
  if (error) {
2323
- return { data: { user: null, session: null }, error }
2360
+ return this._returnResult({ data: { user: null, session: null }, error })
2324
2361
  } else if (!data || !data.session || !data.user) {
2325
- return {
2362
+ return this._returnResult({
2326
2363
  data: { user: null, session: null },
2327
2364
  error: new AuthInvalidTokenResponseError(),
2328
- }
2365
+ })
2329
2366
  }
2330
2367
  if (data.session) {
2331
2368
  await this._saveSession(data.session)
2332
2369
  await this._notifyAllSubscribers('USER_UPDATED', data.session)
2333
2370
  }
2334
- return { data, error }
2371
+ return this._returnResult({ data, error })
2335
2372
  } catch (error) {
2336
2373
  if (isAuthError(error)) {
2337
- return { data: { user: null, session: null }, error }
2374
+ return this._returnResult({ data: { user: null, session: null }, error })
2338
2375
  }
2339
2376
  throw error
2340
2377
  }
@@ -2369,7 +2406,7 @@ export default class GoTrueClient {
2369
2406
  })
2370
2407
  } catch (error) {
2371
2408
  if (isAuthError(error)) {
2372
- return { data: null, error }
2409
+ return this._returnResult({ data: null, error })
2373
2410
  }
2374
2411
  throw error
2375
2412
  }
@@ -2415,7 +2452,7 @@ export default class GoTrueClient {
2415
2452
  this._debug(debugName, 'error', error)
2416
2453
 
2417
2454
  if (isAuthError(error)) {
2418
- return { data: { session: null, user: null }, error }
2455
+ return this._returnResult({ data: { session: null, user: null }, error })
2419
2456
  }
2420
2457
  throw error
2421
2458
  } finally {
@@ -3022,7 +3059,7 @@ export default class GoTrueClient {
3022
3059
  return await this._useSession(async (result) => {
3023
3060
  const { data: sessionData, error: sessionError } = result
3024
3061
  if (sessionError) {
3025
- return { data: null, error: sessionError }
3062
+ return this._returnResult({ data: null, error: sessionError })
3026
3063
  }
3027
3064
 
3028
3065
  return await _request(this.fetch, 'DELETE', `${this.url}/factors/${params.factorId}`, {
@@ -3032,7 +3069,7 @@ export default class GoTrueClient {
3032
3069
  })
3033
3070
  } catch (error) {
3034
3071
  if (isAuthError(error)) {
3035
- return { data: null, error }
3072
+ return this._returnResult({ data: null, error })
3036
3073
  }
3037
3074
  throw error
3038
3075
  }
@@ -3049,7 +3086,7 @@ export default class GoTrueClient {
3049
3086
  return await this._useSession(async (result) => {
3050
3087
  const { data: sessionData, error: sessionError } = result
3051
3088
  if (sessionError) {
3052
- return { data: null, error: sessionError }
3089
+ return this._returnResult({ data: null, error: sessionError })
3053
3090
  }
3054
3091
 
3055
3092
  const body = {
@@ -3068,18 +3105,18 @@ export default class GoTrueClient {
3068
3105
  jwt: sessionData?.session?.access_token,
3069
3106
  })) as AuthMFAEnrollResponse
3070
3107
  if (error) {
3071
- return { data: null, error }
3108
+ return this._returnResult({ data: null, error })
3072
3109
  }
3073
3110
 
3074
3111
  if (params.factorType === 'totp' && data.type === 'totp' && data?.totp?.qr_code) {
3075
3112
  data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`
3076
3113
  }
3077
3114
 
3078
- return { data, error: null }
3115
+ return this._returnResult({ data, error: null })
3079
3116
  })
3080
3117
  } catch (error) {
3081
3118
  if (isAuthError(error)) {
3082
- return { data: null, error }
3119
+ return this._returnResult({ data: null, error })
3083
3120
  }
3084
3121
  throw error
3085
3122
  }
@@ -3099,7 +3136,7 @@ export default class GoTrueClient {
3099
3136
  return await this._useSession(async (result) => {
3100
3137
  const { data: sessionData, error: sessionError } = result
3101
3138
  if (sessionError) {
3102
- return { data: null, error: sessionError }
3139
+ return this._returnResult({ data: null, error: sessionError })
3103
3140
  }
3104
3141
 
3105
3142
  const body: StrictOmit<
@@ -3148,7 +3185,7 @@ export default class GoTrueClient {
3148
3185
  }
3149
3186
  )
3150
3187
  if (error) {
3151
- return { data: null, error }
3188
+ return this._returnResult({ data: null, error })
3152
3189
  }
3153
3190
 
3154
3191
  await this._saveSession({
@@ -3157,11 +3194,11 @@ export default class GoTrueClient {
3157
3194
  })
3158
3195
  await this._notifyAllSubscribers('MFA_CHALLENGE_VERIFIED', data)
3159
3196
 
3160
- return { data, error }
3197
+ return this._returnResult({ data, error })
3161
3198
  })
3162
3199
  } catch (error) {
3163
3200
  if (isAuthError(error)) {
3164
- return { data: null, error }
3201
+ return this._returnResult({ data: null, error })
3165
3202
  }
3166
3203
  throw error
3167
3204
  }
@@ -3186,7 +3223,7 @@ export default class GoTrueClient {
3186
3223
  return await this._useSession(async (result) => {
3187
3224
  const { data: sessionData, error: sessionError } = result
3188
3225
  if (sessionError) {
3189
- return { data: null, error: sessionError }
3226
+ return this._returnResult({ data: null, error: sessionError })
3190
3227
  }
3191
3228
 
3192
3229
  const response = (await _request(
@@ -3250,7 +3287,7 @@ export default class GoTrueClient {
3250
3287
  })
3251
3288
  } catch (error) {
3252
3289
  if (isAuthError(error)) {
3253
- return { data: null, error }
3290
+ return this._returnResult({ data: null, error })
3254
3291
  }
3255
3292
  throw error
3256
3293
  }
@@ -3270,7 +3307,7 @@ export default class GoTrueClient {
3270
3307
  factorId: params.factorId,
3271
3308
  })
3272
3309
  if (challengeError) {
3273
- return { data: null, error: challengeError }
3310
+ return this._returnResult({ data: null, error: challengeError })
3274
3311
  }
3275
3312
 
3276
3313
  return await this._verify({
@@ -3324,7 +3361,7 @@ export default class GoTrueClient {
3324
3361
  } = await this.getSession()
3325
3362
 
3326
3363
  if (sessionError) {
3327
- return { data: null, error: sessionError }
3364
+ return this._returnResult({ data: null, error: sessionError })
3328
3365
  }
3329
3366
  if (!session) {
3330
3367
  return {
@@ -3374,11 +3411,11 @@ export default class GoTrueClient {
3374
3411
  } = result
3375
3412
 
3376
3413
  if (sessionError) {
3377
- return { data: null, error: sessionError }
3414
+ return this._returnResult({ data: null, error: sessionError })
3378
3415
  }
3379
3416
 
3380
3417
  if (!session) {
3381
- return { data: null, error: new AuthSessionMissingError() }
3418
+ return this._returnResult({ data: null, error: new AuthSessionMissingError() })
3382
3419
  }
3383
3420
 
3384
3421
  return await _request(
@@ -3394,7 +3431,7 @@ export default class GoTrueClient {
3394
3431
  })
3395
3432
  } catch (error) {
3396
3433
  if (isAuthError(error)) {
3397
- return { data: null, error }
3434
+ return this._returnResult({ data: null, error })
3398
3435
  }
3399
3436
 
3400
3437
  throw error
@@ -3417,11 +3454,11 @@ export default class GoTrueClient {
3417
3454
  } = result
3418
3455
 
3419
3456
  if (sessionError) {
3420
- return { data: null, error: sessionError }
3457
+ return this._returnResult({ data: null, error: sessionError })
3421
3458
  }
3422
3459
 
3423
3460
  if (!session) {
3424
- return { data: null, error: new AuthSessionMissingError() }
3461
+ return this._returnResult({ data: null, error: new AuthSessionMissingError() })
3425
3462
  }
3426
3463
 
3427
3464
  const response = await _request(
@@ -3447,7 +3484,7 @@ export default class GoTrueClient {
3447
3484
  })
3448
3485
  } catch (error) {
3449
3486
  if (isAuthError(error)) {
3450
- return { data: null, error }
3487
+ return this._returnResult({ data: null, error })
3451
3488
  }
3452
3489
 
3453
3490
  throw error
@@ -3470,11 +3507,11 @@ export default class GoTrueClient {
3470
3507
  } = result
3471
3508
 
3472
3509
  if (sessionError) {
3473
- return { data: null, error: sessionError }
3510
+ return this._returnResult({ data: null, error: sessionError })
3474
3511
  }
3475
3512
 
3476
3513
  if (!session) {
3477
- return { data: null, error: new AuthSessionMissingError() }
3514
+ return this._returnResult({ data: null, error: new AuthSessionMissingError() })
3478
3515
  }
3479
3516
 
3480
3517
  const response = await _request(
@@ -3500,7 +3537,7 @@ export default class GoTrueClient {
3500
3537
  })
3501
3538
  } catch (error) {
3502
3539
  if (isAuthError(error)) {
3503
- return { data: null, error }
3540
+ return this._returnResult({ data: null, error })
3504
3541
  }
3505
3542
 
3506
3543
  throw error
@@ -3588,7 +3625,7 @@ export default class GoTrueClient {
3588
3625
  if (!token) {
3589
3626
  const { data, error } = await this.getSession()
3590
3627
  if (error || !data.session) {
3591
- return { data: null, error }
3628
+ return this._returnResult({ data: null, error })
3592
3629
  }
3593
3630
  token = data.session.access_token
3594
3631
  }
@@ -3660,7 +3697,7 @@ export default class GoTrueClient {
3660
3697
  }
3661
3698
  } catch (error) {
3662
3699
  if (isAuthError(error)) {
3663
- return { data: null, error }
3700
+ return this._returnResult({ data: null, error })
3664
3701
  }
3665
3702
  throw error
3666
3703
  }