@supabase/auth-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.
- package/README.md +9 -0
- package/dist/main/GoTrueClient.d.ts +11 -0
- package/dist/main/GoTrueClient.d.ts.map +1 -1
- package/dist/main/GoTrueClient.js +145 -112
- package/dist/main/GoTrueClient.js.map +1 -1
- package/dist/main/lib/helpers.d.ts.map +1 -1
- package/dist/main/lib/helpers.js +2 -42
- package/dist/main/lib/helpers.js.map +1 -1
- package/dist/main/lib/types.d.ts +5 -0
- package/dist/main/lib/types.d.ts.map +1 -1
- package/dist/main/lib/types.js.map +1 -1
- package/dist/main/lib/version.d.ts +1 -1
- package/dist/main/lib/version.d.ts.map +1 -1
- package/dist/main/lib/version.js +1 -1
- package/dist/main/lib/version.js.map +1 -1
- package/dist/module/GoTrueClient.d.ts +11 -0
- package/dist/module/GoTrueClient.d.ts.map +1 -1
- package/dist/module/GoTrueClient.js +145 -112
- package/dist/module/GoTrueClient.js.map +1 -1
- package/dist/module/lib/helpers.d.ts.map +1 -1
- package/dist/module/lib/helpers.js +2 -9
- package/dist/module/lib/helpers.js.map +1 -1
- package/dist/module/lib/types.d.ts +5 -0
- package/dist/module/lib/types.d.ts.map +1 -1
- package/dist/module/lib/types.js.map +1 -1
- package/dist/module/lib/version.d.ts +1 -1
- package/dist/module/lib/version.d.ts.map +1 -1
- package/dist/module/lib/version.js +1 -1
- package/dist/module/lib/version.js.map +1 -1
- package/dist/tsconfig.module.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -3
- package/src/GoTrueClient.ts +149 -112
- package/src/lib/helpers.ts +2 -8
- package/src/lib/types.ts +5 -0
- package/src/lib/version.ts +1 -1
package/src/GoTrueClient.ts
CHANGED
|
@@ -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
|
-
|
|
441
|
+
let params: { [parameter: string]: string } = {}
|
|
420
442
|
let callbackUrlType = 'none'
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
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
|
-
|
|
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
|
-
|
|
850
|
-
|
|
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
|
-
|
|
1038
|
-
|
|
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
|
-
|
|
1108
|
+
const invalidTokenError = new AuthInvalidTokenResponseError()
|
|
1109
|
+
return this._returnResult({
|
|
1086
1110
|
data: { user: null, session: null, redirectType: null },
|
|
1087
|
-
error:
|
|
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 {
|
|
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
|
-
|
|
1129
|
-
|
|
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 {
|
|
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
|
-
|
|
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
|
-
|
|
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 {
|
|
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)
|
|
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 {
|
|
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
|
}
|