@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
|
@@ -21,6 +21,7 @@ const DEFAULT_OPTIONS = {
|
|
|
21
21
|
flowType: 'implicit',
|
|
22
22
|
debug: false,
|
|
23
23
|
hasCustomAuthorizationHeader: false,
|
|
24
|
+
throwOnError: false,
|
|
24
25
|
};
|
|
25
26
|
async function lockNoOp(name, acquireTimeout, fn) {
|
|
26
27
|
return await fn();
|
|
@@ -108,6 +109,7 @@ class GoTrueClient {
|
|
|
108
109
|
this.detectSessionInUrl = settings.detectSessionInUrl;
|
|
109
110
|
this.flowType = settings.flowType;
|
|
110
111
|
this.hasCustomAuthorizationHeader = settings.hasCustomAuthorizationHeader;
|
|
112
|
+
this.throwOnError = settings.throwOnError;
|
|
111
113
|
if (settings.lock) {
|
|
112
114
|
this.lock = settings.lock;
|
|
113
115
|
}
|
|
@@ -171,6 +173,23 @@ class GoTrueClient {
|
|
|
171
173
|
}
|
|
172
174
|
this.initialize();
|
|
173
175
|
}
|
|
176
|
+
/**
|
|
177
|
+
* Returns whether error throwing mode is enabled for this client.
|
|
178
|
+
*/
|
|
179
|
+
isThrowOnErrorEnabled() {
|
|
180
|
+
return this.throwOnError;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Centralizes return handling with optional error throwing. When `throwOnError` is enabled
|
|
184
|
+
* and the provided result contains a non-nullish error, the error is thrown instead of
|
|
185
|
+
* being returned. This ensures consistent behavior across all public API methods.
|
|
186
|
+
*/
|
|
187
|
+
_returnResult(result) {
|
|
188
|
+
if (this.throwOnError && result && result.error) {
|
|
189
|
+
throw result.error;
|
|
190
|
+
}
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
174
193
|
_debug(...args) {
|
|
175
194
|
if (this.logDebugMessages) {
|
|
176
195
|
this.logger(`GoTrueClient@${this.instanceID} (${version}) ${new Date().toISOString()}`, ...args);
|
|
@@ -202,13 +221,16 @@ class GoTrueClient {
|
|
|
202
221
|
async _initialize() {
|
|
203
222
|
var _a;
|
|
204
223
|
try {
|
|
205
|
-
|
|
224
|
+
let params = {};
|
|
206
225
|
let callbackUrlType = 'none';
|
|
207
|
-
if (
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
226
|
+
if (isBrowser()) {
|
|
227
|
+
params = parseParametersFromURL(window.location.href);
|
|
228
|
+
if (this._isImplicitGrantCallback(params)) {
|
|
229
|
+
callbackUrlType = 'implicit';
|
|
230
|
+
}
|
|
231
|
+
else if (await this._isPKCECallback(params)) {
|
|
232
|
+
callbackUrlType = 'pkce';
|
|
233
|
+
}
|
|
212
234
|
}
|
|
213
235
|
/**
|
|
214
236
|
* Attempt to get the session from the URL only if these conditions are fulfilled
|
|
@@ -252,11 +274,11 @@ class GoTrueClient {
|
|
|
252
274
|
}
|
|
253
275
|
catch (error) {
|
|
254
276
|
if (isAuthError(error)) {
|
|
255
|
-
return { error };
|
|
277
|
+
return this._returnResult({ error });
|
|
256
278
|
}
|
|
257
|
-
return {
|
|
279
|
+
return this._returnResult({
|
|
258
280
|
error: new AuthUnknownError('Unexpected error during initialization', error),
|
|
259
|
-
};
|
|
281
|
+
});
|
|
260
282
|
}
|
|
261
283
|
finally {
|
|
262
284
|
await this._handleVisibilityChange();
|
|
@@ -281,7 +303,7 @@ class GoTrueClient {
|
|
|
281
303
|
});
|
|
282
304
|
const { data, error } = res;
|
|
283
305
|
if (error || !data) {
|
|
284
|
-
return { data: { user: null, session: null }, error: error };
|
|
306
|
+
return this._returnResult({ data: { user: null, session: null }, error: error });
|
|
285
307
|
}
|
|
286
308
|
const session = data.session;
|
|
287
309
|
const user = data.user;
|
|
@@ -289,11 +311,11 @@ class GoTrueClient {
|
|
|
289
311
|
await this._saveSession(data.session);
|
|
290
312
|
await this._notifyAllSubscribers('SIGNED_IN', session);
|
|
291
313
|
}
|
|
292
|
-
return { data: { user, session }, error: null };
|
|
314
|
+
return this._returnResult({ data: { user, session }, error: null });
|
|
293
315
|
}
|
|
294
316
|
catch (error) {
|
|
295
317
|
if (isAuthError(error)) {
|
|
296
|
-
return { data: { user: null, session: null }, error };
|
|
318
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
297
319
|
}
|
|
298
320
|
throw error;
|
|
299
321
|
}
|
|
@@ -353,7 +375,7 @@ class GoTrueClient {
|
|
|
353
375
|
}
|
|
354
376
|
const { data, error } = res;
|
|
355
377
|
if (error || !data) {
|
|
356
|
-
return { data: { user: null, session: null }, error: error };
|
|
378
|
+
return this._returnResult({ data: { user: null, session: null }, error: error });
|
|
357
379
|
}
|
|
358
380
|
const session = data.session;
|
|
359
381
|
const user = data.user;
|
|
@@ -361,11 +383,11 @@ class GoTrueClient {
|
|
|
361
383
|
await this._saveSession(data.session);
|
|
362
384
|
await this._notifyAllSubscribers('SIGNED_IN', session);
|
|
363
385
|
}
|
|
364
|
-
return { data: { user, session }, error: null };
|
|
386
|
+
return this._returnResult({ data: { user, session }, error: null });
|
|
365
387
|
}
|
|
366
388
|
catch (error) {
|
|
367
389
|
if (isAuthError(error)) {
|
|
368
|
-
return { data: { user: null, session: null }, error };
|
|
390
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
369
391
|
}
|
|
370
392
|
throw error;
|
|
371
393
|
}
|
|
@@ -410,23 +432,24 @@ class GoTrueClient {
|
|
|
410
432
|
}
|
|
411
433
|
const { data, error } = res;
|
|
412
434
|
if (error) {
|
|
413
|
-
return { data: { user: null, session: null }, error };
|
|
435
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
414
436
|
}
|
|
415
437
|
else if (!data || !data.session || !data.user) {
|
|
416
|
-
|
|
438
|
+
const invalidTokenError = new AuthInvalidTokenResponseError();
|
|
439
|
+
return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });
|
|
417
440
|
}
|
|
418
441
|
if (data.session) {
|
|
419
442
|
await this._saveSession(data.session);
|
|
420
443
|
await this._notifyAllSubscribers('SIGNED_IN', data.session);
|
|
421
444
|
}
|
|
422
|
-
return {
|
|
445
|
+
return this._returnResult({
|
|
423
446
|
data: Object.assign({ user: data.user, session: data.session }, (data.weak_password ? { weakPassword: data.weak_password } : null)),
|
|
424
447
|
error,
|
|
425
|
-
};
|
|
448
|
+
});
|
|
426
449
|
}
|
|
427
450
|
catch (error) {
|
|
428
451
|
if (isAuthError(error)) {
|
|
429
|
-
return { data: { user: null, session: null }, error };
|
|
452
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
430
453
|
}
|
|
431
454
|
throw error;
|
|
432
455
|
}
|
|
@@ -558,20 +581,18 @@ class GoTrueClient {
|
|
|
558
581
|
throw error;
|
|
559
582
|
}
|
|
560
583
|
if (!data || !data.session || !data.user) {
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
error: new AuthInvalidTokenResponseError(),
|
|
564
|
-
};
|
|
584
|
+
const invalidTokenError = new AuthInvalidTokenResponseError();
|
|
585
|
+
return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });
|
|
565
586
|
}
|
|
566
587
|
if (data.session) {
|
|
567
588
|
await this._saveSession(data.session);
|
|
568
589
|
await this._notifyAllSubscribers('SIGNED_IN', data.session);
|
|
569
590
|
}
|
|
570
|
-
return { data: Object.assign({}, data), error };
|
|
591
|
+
return this._returnResult({ data: Object.assign({}, data), error });
|
|
571
592
|
}
|
|
572
593
|
catch (error) {
|
|
573
594
|
if (isAuthError(error)) {
|
|
574
|
-
return { data: { user: null, session: null }, error };
|
|
595
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
575
596
|
}
|
|
576
597
|
throw error;
|
|
577
598
|
}
|
|
@@ -698,20 +719,18 @@ class GoTrueClient {
|
|
|
698
719
|
throw error;
|
|
699
720
|
}
|
|
700
721
|
if (!data || !data.session || !data.user) {
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
error: new AuthInvalidTokenResponseError(),
|
|
704
|
-
};
|
|
722
|
+
const invalidTokenError = new AuthInvalidTokenResponseError();
|
|
723
|
+
return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });
|
|
705
724
|
}
|
|
706
725
|
if (data.session) {
|
|
707
726
|
await this._saveSession(data.session);
|
|
708
727
|
await this._notifyAllSubscribers('SIGNED_IN', data.session);
|
|
709
728
|
}
|
|
710
|
-
return { data: Object.assign({}, data), error };
|
|
729
|
+
return this._returnResult({ data: Object.assign({}, data), error });
|
|
711
730
|
}
|
|
712
731
|
catch (error) {
|
|
713
732
|
if (isAuthError(error)) {
|
|
714
|
-
return { data: { user: null, session: null }, error };
|
|
733
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
715
734
|
}
|
|
716
735
|
throw error;
|
|
717
736
|
}
|
|
@@ -733,20 +752,24 @@ class GoTrueClient {
|
|
|
733
752
|
throw error;
|
|
734
753
|
}
|
|
735
754
|
if (!data || !data.session || !data.user) {
|
|
736
|
-
|
|
755
|
+
const invalidTokenError = new AuthInvalidTokenResponseError();
|
|
756
|
+
return this._returnResult({
|
|
737
757
|
data: { user: null, session: null, redirectType: null },
|
|
738
|
-
error:
|
|
739
|
-
};
|
|
758
|
+
error: invalidTokenError,
|
|
759
|
+
});
|
|
740
760
|
}
|
|
741
761
|
if (data.session) {
|
|
742
762
|
await this._saveSession(data.session);
|
|
743
763
|
await this._notifyAllSubscribers('SIGNED_IN', data.session);
|
|
744
764
|
}
|
|
745
|
-
return { data: Object.assign(Object.assign({}, data), { redirectType: redirectType !== null && redirectType !== void 0 ? redirectType : null }), error };
|
|
765
|
+
return this._returnResult({ data: Object.assign(Object.assign({}, data), { redirectType: redirectType !== null && redirectType !== void 0 ? redirectType : null }), error });
|
|
746
766
|
}
|
|
747
767
|
catch (error) {
|
|
748
768
|
if (isAuthError(error)) {
|
|
749
|
-
return {
|
|
769
|
+
return this._returnResult({
|
|
770
|
+
data: { user: null, session: null, redirectType: null },
|
|
771
|
+
error,
|
|
772
|
+
});
|
|
750
773
|
}
|
|
751
774
|
throw error;
|
|
752
775
|
}
|
|
@@ -771,23 +794,21 @@ class GoTrueClient {
|
|
|
771
794
|
});
|
|
772
795
|
const { data, error } = res;
|
|
773
796
|
if (error) {
|
|
774
|
-
return { data: { user: null, session: null }, error };
|
|
797
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
775
798
|
}
|
|
776
799
|
else if (!data || !data.session || !data.user) {
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
error: new AuthInvalidTokenResponseError(),
|
|
780
|
-
};
|
|
800
|
+
const invalidTokenError = new AuthInvalidTokenResponseError();
|
|
801
|
+
return this._returnResult({ data: { user: null, session: null }, error: invalidTokenError });
|
|
781
802
|
}
|
|
782
803
|
if (data.session) {
|
|
783
804
|
await this._saveSession(data.session);
|
|
784
805
|
await this._notifyAllSubscribers('SIGNED_IN', data.session);
|
|
785
806
|
}
|
|
786
|
-
return { data, error };
|
|
807
|
+
return this._returnResult({ data, error });
|
|
787
808
|
}
|
|
788
809
|
catch (error) {
|
|
789
810
|
if (isAuthError(error)) {
|
|
790
|
-
return { data: { user: null, session: null }, error };
|
|
811
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
791
812
|
}
|
|
792
813
|
throw error;
|
|
793
814
|
}
|
|
@@ -832,7 +853,7 @@ class GoTrueClient {
|
|
|
832
853
|
},
|
|
833
854
|
redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,
|
|
834
855
|
});
|
|
835
|
-
return { data: { user: null, session: null }, error };
|
|
856
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
836
857
|
}
|
|
837
858
|
if ('phone' in credentials) {
|
|
838
859
|
const { phone, options } = credentials;
|
|
@@ -846,13 +867,16 @@ class GoTrueClient {
|
|
|
846
867
|
channel: (_e = options === null || options === void 0 ? void 0 : options.channel) !== null && _e !== void 0 ? _e : 'sms',
|
|
847
868
|
},
|
|
848
869
|
});
|
|
849
|
-
return {
|
|
870
|
+
return this._returnResult({
|
|
871
|
+
data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id },
|
|
872
|
+
error,
|
|
873
|
+
});
|
|
850
874
|
}
|
|
851
875
|
throw new AuthInvalidCredentialsError('You must provide either an email or phone number.');
|
|
852
876
|
}
|
|
853
877
|
catch (error) {
|
|
854
878
|
if (isAuthError(error)) {
|
|
855
|
-
return { data: { user: null, session: null }, error };
|
|
879
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
856
880
|
}
|
|
857
881
|
throw error;
|
|
858
882
|
}
|
|
@@ -879,7 +903,8 @@ class GoTrueClient {
|
|
|
879
903
|
throw error;
|
|
880
904
|
}
|
|
881
905
|
if (!data) {
|
|
882
|
-
|
|
906
|
+
const tokenVerificationError = new Error('An error occurred on token verification.');
|
|
907
|
+
throw tokenVerificationError;
|
|
883
908
|
}
|
|
884
909
|
const session = data.session;
|
|
885
910
|
const user = data.user;
|
|
@@ -887,11 +912,11 @@ class GoTrueClient {
|
|
|
887
912
|
await this._saveSession(session);
|
|
888
913
|
await this._notifyAllSubscribers(params.type == 'recovery' ? 'PASSWORD_RECOVERY' : 'SIGNED_IN', session);
|
|
889
914
|
}
|
|
890
|
-
return { data: { user, session }, error: null };
|
|
915
|
+
return this._returnResult({ data: { user, session }, error: null });
|
|
891
916
|
}
|
|
892
917
|
catch (error) {
|
|
893
918
|
if (isAuthError(error)) {
|
|
894
|
-
return { data: { user: null, session: null }, error };
|
|
919
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
895
920
|
}
|
|
896
921
|
throw error;
|
|
897
922
|
}
|
|
@@ -919,17 +944,18 @@ class GoTrueClient {
|
|
|
919
944
|
;
|
|
920
945
|
[codeChallenge, codeChallengeMethod] = await getCodeChallengeAndMethod(this.storage, this.storageKey);
|
|
921
946
|
}
|
|
922
|
-
|
|
947
|
+
const result = await _request(this.fetch, 'POST', `${this.url}/sso`, {
|
|
923
948
|
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)
|
|
924
949
|
? { gotrue_meta_security: { captcha_token: params.options.captchaToken } }
|
|
925
950
|
: null)), { skip_http_redirect: true, code_challenge: codeChallenge, code_challenge_method: codeChallengeMethod }),
|
|
926
951
|
headers: this.headers,
|
|
927
952
|
xform: _ssoResponse,
|
|
928
953
|
});
|
|
954
|
+
return this._returnResult(result);
|
|
929
955
|
}
|
|
930
956
|
catch (error) {
|
|
931
957
|
if (isAuthError(error)) {
|
|
932
|
-
return { data: null, error };
|
|
958
|
+
return this._returnResult({ data: null, error });
|
|
933
959
|
}
|
|
934
960
|
throw error;
|
|
935
961
|
}
|
|
@@ -956,12 +982,12 @@ class GoTrueClient {
|
|
|
956
982
|
headers: this.headers,
|
|
957
983
|
jwt: session.access_token,
|
|
958
984
|
});
|
|
959
|
-
return { data: { user: null, session: null }, error };
|
|
985
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
960
986
|
});
|
|
961
987
|
}
|
|
962
988
|
catch (error) {
|
|
963
989
|
if (isAuthError(error)) {
|
|
964
|
-
return { data: { user: null, session: null }, error };
|
|
990
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
965
991
|
}
|
|
966
992
|
throw error;
|
|
967
993
|
}
|
|
@@ -983,7 +1009,7 @@ class GoTrueClient {
|
|
|
983
1009
|
},
|
|
984
1010
|
redirectTo: options === null || options === void 0 ? void 0 : options.emailRedirectTo,
|
|
985
1011
|
});
|
|
986
|
-
return { data: { user: null, session: null }, error };
|
|
1012
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
987
1013
|
}
|
|
988
1014
|
else if ('phone' in credentials) {
|
|
989
1015
|
const { phone, type, options } = credentials;
|
|
@@ -995,13 +1021,16 @@ class GoTrueClient {
|
|
|
995
1021
|
gotrue_meta_security: { captcha_token: options === null || options === void 0 ? void 0 : options.captchaToken },
|
|
996
1022
|
},
|
|
997
1023
|
});
|
|
998
|
-
return {
|
|
1024
|
+
return this._returnResult({
|
|
1025
|
+
data: { user: null, session: null, messageId: data === null || data === void 0 ? void 0 : data.message_id },
|
|
1026
|
+
error,
|
|
1027
|
+
});
|
|
999
1028
|
}
|
|
1000
1029
|
throw new AuthInvalidCredentialsError('You must provide either an email or phone number and a type');
|
|
1001
1030
|
}
|
|
1002
1031
|
catch (error) {
|
|
1003
1032
|
if (isAuthError(error)) {
|
|
1004
|
-
return { data: { user: null, session: null }, error };
|
|
1033
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
1005
1034
|
}
|
|
1006
1035
|
throw error;
|
|
1007
1036
|
}
|
|
@@ -1160,9 +1189,9 @@ class GoTrueClient {
|
|
|
1160
1189
|
}
|
|
1161
1190
|
const { data: session, error } = await this._callRefreshToken(currentSession.refresh_token);
|
|
1162
1191
|
if (error) {
|
|
1163
|
-
return { data: { session: null }, error };
|
|
1192
|
+
return this._returnResult({ data: { session: null }, error });
|
|
1164
1193
|
}
|
|
1165
|
-
return { data: { session }, error: null };
|
|
1194
|
+
return this._returnResult({ data: { session }, error: null });
|
|
1166
1195
|
}
|
|
1167
1196
|
finally {
|
|
1168
1197
|
this._debug('#__loadSession()', 'end');
|
|
@@ -1219,7 +1248,7 @@ class GoTrueClient {
|
|
|
1219
1248
|
await this._removeSession();
|
|
1220
1249
|
await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
|
|
1221
1250
|
}
|
|
1222
|
-
return { data: { user: null }, error };
|
|
1251
|
+
return this._returnResult({ data: { user: null }, error });
|
|
1223
1252
|
}
|
|
1224
1253
|
throw error;
|
|
1225
1254
|
}
|
|
@@ -1257,17 +1286,18 @@ class GoTrueClient {
|
|
|
1257
1286
|
jwt: session.access_token,
|
|
1258
1287
|
xform: _userResponse,
|
|
1259
1288
|
});
|
|
1260
|
-
if (userError)
|
|
1289
|
+
if (userError) {
|
|
1261
1290
|
throw userError;
|
|
1291
|
+
}
|
|
1262
1292
|
session.user = data.user;
|
|
1263
1293
|
await this._saveSession(session);
|
|
1264
1294
|
await this._notifyAllSubscribers('USER_UPDATED', session);
|
|
1265
|
-
return { data: { user: session.user }, error: null };
|
|
1295
|
+
return this._returnResult({ data: { user: session.user }, error: null });
|
|
1266
1296
|
});
|
|
1267
1297
|
}
|
|
1268
1298
|
catch (error) {
|
|
1269
1299
|
if (isAuthError(error)) {
|
|
1270
|
-
return { data: { user: null }, error };
|
|
1300
|
+
return this._returnResult({ data: { user: null }, error });
|
|
1271
1301
|
}
|
|
1272
1302
|
throw error;
|
|
1273
1303
|
}
|
|
@@ -1300,7 +1330,7 @@ class GoTrueClient {
|
|
|
1300
1330
|
if (hasExpired) {
|
|
1301
1331
|
const { data: refreshedSession, error } = await this._callRefreshToken(currentSession.refresh_token);
|
|
1302
1332
|
if (error) {
|
|
1303
|
-
return { data: { user: null, session: null }, error: error };
|
|
1333
|
+
return this._returnResult({ data: { user: null, session: null }, error: error });
|
|
1304
1334
|
}
|
|
1305
1335
|
if (!refreshedSession) {
|
|
1306
1336
|
return { data: { user: null, session: null }, error: null };
|
|
@@ -1323,11 +1353,11 @@ class GoTrueClient {
|
|
|
1323
1353
|
await this._saveSession(session);
|
|
1324
1354
|
await this._notifyAllSubscribers('SIGNED_IN', session);
|
|
1325
1355
|
}
|
|
1326
|
-
return { data: { user: session.user, session }, error: null };
|
|
1356
|
+
return this._returnResult({ data: { user: session.user, session }, error: null });
|
|
1327
1357
|
}
|
|
1328
1358
|
catch (error) {
|
|
1329
1359
|
if (isAuthError(error)) {
|
|
1330
|
-
return { data: { session: null, user: null }, error };
|
|
1360
|
+
return this._returnResult({ data: { session: null, user: null }, error });
|
|
1331
1361
|
}
|
|
1332
1362
|
throw error;
|
|
1333
1363
|
}
|
|
@@ -1360,17 +1390,17 @@ class GoTrueClient {
|
|
|
1360
1390
|
}
|
|
1361
1391
|
const { data: session, error } = await this._callRefreshToken(currentSession.refresh_token);
|
|
1362
1392
|
if (error) {
|
|
1363
|
-
return { data: { user: null, session: null }, error: error };
|
|
1393
|
+
return this._returnResult({ data: { user: null, session: null }, error: error });
|
|
1364
1394
|
}
|
|
1365
1395
|
if (!session) {
|
|
1366
|
-
return { data: { user: null, session: null }, error: null };
|
|
1396
|
+
return this._returnResult({ data: { user: null, session: null }, error: null });
|
|
1367
1397
|
}
|
|
1368
|
-
return { data: { user: session.user, session }, error: null };
|
|
1398
|
+
return this._returnResult({ data: { user: session.user, session }, error: null });
|
|
1369
1399
|
});
|
|
1370
1400
|
}
|
|
1371
1401
|
catch (error) {
|
|
1372
1402
|
if (isAuthError(error)) {
|
|
1373
|
-
return { data: { user: null, session: null }, error };
|
|
1403
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
1374
1404
|
}
|
|
1375
1405
|
throw error;
|
|
1376
1406
|
}
|
|
@@ -1456,11 +1486,11 @@ class GoTrueClient {
|
|
|
1456
1486
|
// Remove tokens from URL
|
|
1457
1487
|
window.location.hash = '';
|
|
1458
1488
|
this._debug('#_getSessionFromURL()', 'clearing window.location.hash');
|
|
1459
|
-
return { data: { session, redirectType: params.type }, error: null };
|
|
1489
|
+
return this._returnResult({ data: { session, redirectType: params.type }, error: null });
|
|
1460
1490
|
}
|
|
1461
1491
|
catch (error) {
|
|
1462
1492
|
if (isAuthError(error)) {
|
|
1463
|
-
return { data: { session: null, redirectType: null }, error };
|
|
1493
|
+
return this._returnResult({ data: { session: null, redirectType: null }, error });
|
|
1464
1494
|
}
|
|
1465
1495
|
throw error;
|
|
1466
1496
|
}
|
|
@@ -1497,7 +1527,7 @@ class GoTrueClient {
|
|
|
1497
1527
|
var _a;
|
|
1498
1528
|
const { data, error: sessionError } = result;
|
|
1499
1529
|
if (sessionError) {
|
|
1500
|
-
return { error: sessionError };
|
|
1530
|
+
return this._returnResult({ error: sessionError });
|
|
1501
1531
|
}
|
|
1502
1532
|
const accessToken = (_a = data.session) === null || _a === void 0 ? void 0 : _a.access_token;
|
|
1503
1533
|
if (accessToken) {
|
|
@@ -1507,7 +1537,7 @@ class GoTrueClient {
|
|
|
1507
1537
|
// ignore 401s since an invalid or expired JWT should sign out the current session
|
|
1508
1538
|
if (!(isAuthApiError(error) &&
|
|
1509
1539
|
(error.status === 404 || error.status === 401 || error.status === 403))) {
|
|
1510
|
-
return { error };
|
|
1540
|
+
return this._returnResult({ error });
|
|
1511
1541
|
}
|
|
1512
1542
|
}
|
|
1513
1543
|
}
|
|
@@ -1515,7 +1545,7 @@ class GoTrueClient {
|
|
|
1515
1545
|
await this._removeSession();
|
|
1516
1546
|
await removeItemAsync(this.storage, `${this.storageKey}-code-verifier`);
|
|
1517
1547
|
}
|
|
1518
|
-
return { error: null };
|
|
1548
|
+
return this._returnResult({ error: null });
|
|
1519
1549
|
});
|
|
1520
1550
|
}
|
|
1521
1551
|
onAuthStateChange(callback) {
|
|
@@ -1584,7 +1614,7 @@ class GoTrueClient {
|
|
|
1584
1614
|
}
|
|
1585
1615
|
catch (error) {
|
|
1586
1616
|
if (isAuthError(error)) {
|
|
1587
|
-
return { data: null, error };
|
|
1617
|
+
return this._returnResult({ data: null, error });
|
|
1588
1618
|
}
|
|
1589
1619
|
throw error;
|
|
1590
1620
|
}
|
|
@@ -1598,11 +1628,11 @@ class GoTrueClient {
|
|
|
1598
1628
|
const { data, error } = await this.getUser();
|
|
1599
1629
|
if (error)
|
|
1600
1630
|
throw error;
|
|
1601
|
-
return { data: { identities: (_a = data.user.identities) !== null && _a !== void 0 ? _a : [] }, error: null };
|
|
1631
|
+
return this._returnResult({ data: { identities: (_a = data.user.identities) !== null && _a !== void 0 ? _a : [] }, error: null });
|
|
1602
1632
|
}
|
|
1603
1633
|
catch (error) {
|
|
1604
1634
|
if (isAuthError(error)) {
|
|
1605
|
-
return { data: null, error };
|
|
1635
|
+
return this._returnResult({ data: null, error });
|
|
1606
1636
|
}
|
|
1607
1637
|
throw error;
|
|
1608
1638
|
}
|
|
@@ -1637,11 +1667,14 @@ class GoTrueClient {
|
|
|
1637
1667
|
if (isBrowser() && !((_a = credentials.options) === null || _a === void 0 ? void 0 : _a.skipBrowserRedirect)) {
|
|
1638
1668
|
window.location.assign(data === null || data === void 0 ? void 0 : data.url);
|
|
1639
1669
|
}
|
|
1640
|
-
return {
|
|
1670
|
+
return this._returnResult({
|
|
1671
|
+
data: { provider: credentials.provider, url: data === null || data === void 0 ? void 0 : data.url },
|
|
1672
|
+
error: null,
|
|
1673
|
+
});
|
|
1641
1674
|
}
|
|
1642
1675
|
catch (error) {
|
|
1643
1676
|
if (isAuthError(error)) {
|
|
1644
|
-
return { data: { provider: credentials.provider, url: null }, error };
|
|
1677
|
+
return this._returnResult({ data: { provider: credentials.provider, url: null }, error });
|
|
1645
1678
|
}
|
|
1646
1679
|
throw error;
|
|
1647
1680
|
}
|
|
@@ -1669,23 +1702,23 @@ class GoTrueClient {
|
|
|
1669
1702
|
});
|
|
1670
1703
|
const { data, error } = res;
|
|
1671
1704
|
if (error) {
|
|
1672
|
-
return { data: { user: null, session: null }, error };
|
|
1705
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
1673
1706
|
}
|
|
1674
1707
|
else if (!data || !data.session || !data.user) {
|
|
1675
|
-
return {
|
|
1708
|
+
return this._returnResult({
|
|
1676
1709
|
data: { user: null, session: null },
|
|
1677
1710
|
error: new AuthInvalidTokenResponseError(),
|
|
1678
|
-
};
|
|
1711
|
+
});
|
|
1679
1712
|
}
|
|
1680
1713
|
if (data.session) {
|
|
1681
1714
|
await this._saveSession(data.session);
|
|
1682
1715
|
await this._notifyAllSubscribers('USER_UPDATED', data.session);
|
|
1683
1716
|
}
|
|
1684
|
-
return { data, error };
|
|
1717
|
+
return this._returnResult({ data, error });
|
|
1685
1718
|
}
|
|
1686
1719
|
catch (error) {
|
|
1687
1720
|
if (isAuthError(error)) {
|
|
1688
|
-
return { data: { user: null, session: null }, error };
|
|
1721
|
+
return this._returnResult({ data: { user: null, session: null }, error });
|
|
1689
1722
|
}
|
|
1690
1723
|
throw error;
|
|
1691
1724
|
}
|
|
@@ -1710,7 +1743,7 @@ class GoTrueClient {
|
|
|
1710
1743
|
}
|
|
1711
1744
|
catch (error) {
|
|
1712
1745
|
if (isAuthError(error)) {
|
|
1713
|
-
return { data: null, error };
|
|
1746
|
+
return this._returnResult({ data: null, error });
|
|
1714
1747
|
}
|
|
1715
1748
|
throw error;
|
|
1716
1749
|
}
|
|
@@ -1746,7 +1779,7 @@ class GoTrueClient {
|
|
|
1746
1779
|
catch (error) {
|
|
1747
1780
|
this._debug(debugName, 'error', error);
|
|
1748
1781
|
if (isAuthError(error)) {
|
|
1749
|
-
return { data: { session: null, user: null }, error };
|
|
1782
|
+
return this._returnResult({ data: { session: null, user: null }, error });
|
|
1750
1783
|
}
|
|
1751
1784
|
throw error;
|
|
1752
1785
|
}
|
|
@@ -2231,7 +2264,7 @@ class GoTrueClient {
|
|
|
2231
2264
|
var _a;
|
|
2232
2265
|
const { data: sessionData, error: sessionError } = result;
|
|
2233
2266
|
if (sessionError) {
|
|
2234
|
-
return { data: null, error: sessionError };
|
|
2267
|
+
return this._returnResult({ data: null, error: sessionError });
|
|
2235
2268
|
}
|
|
2236
2269
|
return await _request(this.fetch, 'DELETE', `${this.url}/factors/${params.factorId}`, {
|
|
2237
2270
|
headers: this.headers,
|
|
@@ -2241,7 +2274,7 @@ class GoTrueClient {
|
|
|
2241
2274
|
}
|
|
2242
2275
|
catch (error) {
|
|
2243
2276
|
if (isAuthError(error)) {
|
|
2244
|
-
return { data: null, error };
|
|
2277
|
+
return this._returnResult({ data: null, error });
|
|
2245
2278
|
}
|
|
2246
2279
|
throw error;
|
|
2247
2280
|
}
|
|
@@ -2252,7 +2285,7 @@ class GoTrueClient {
|
|
|
2252
2285
|
var _a, _b;
|
|
2253
2286
|
const { data: sessionData, error: sessionError } = result;
|
|
2254
2287
|
if (sessionError) {
|
|
2255
|
-
return { data: null, error: sessionError };
|
|
2288
|
+
return this._returnResult({ data: null, error: sessionError });
|
|
2256
2289
|
}
|
|
2257
2290
|
const body = Object.assign({ friendly_name: params.friendlyName, factor_type: params.factorType }, (params.factorType === 'phone'
|
|
2258
2291
|
? { phone: params.phone }
|
|
@@ -2265,17 +2298,17 @@ class GoTrueClient {
|
|
|
2265
2298
|
jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token,
|
|
2266
2299
|
}));
|
|
2267
2300
|
if (error) {
|
|
2268
|
-
return { data: null, error };
|
|
2301
|
+
return this._returnResult({ data: null, error });
|
|
2269
2302
|
}
|
|
2270
2303
|
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)) {
|
|
2271
2304
|
data.totp.qr_code = `data:image/svg+xml;utf-8,${data.totp.qr_code}`;
|
|
2272
2305
|
}
|
|
2273
|
-
return { data, error: null };
|
|
2306
|
+
return this._returnResult({ data, error: null });
|
|
2274
2307
|
});
|
|
2275
2308
|
}
|
|
2276
2309
|
catch (error) {
|
|
2277
2310
|
if (isAuthError(error)) {
|
|
2278
|
-
return { data: null, error };
|
|
2311
|
+
return this._returnResult({ data: null, error });
|
|
2279
2312
|
}
|
|
2280
2313
|
throw error;
|
|
2281
2314
|
}
|
|
@@ -2287,7 +2320,7 @@ class GoTrueClient {
|
|
|
2287
2320
|
var _a;
|
|
2288
2321
|
const { data: sessionData, error: sessionError } = result;
|
|
2289
2322
|
if (sessionError) {
|
|
2290
|
-
return { data: null, error: sessionError };
|
|
2323
|
+
return this._returnResult({ data: null, error: sessionError });
|
|
2291
2324
|
}
|
|
2292
2325
|
const body = Object.assign({ challenge_id: params.challengeId }, ('webauthn' in params
|
|
2293
2326
|
? {
|
|
@@ -2302,16 +2335,16 @@ class GoTrueClient {
|
|
|
2302
2335
|
jwt: (_a = sessionData === null || sessionData === void 0 ? void 0 : sessionData.session) === null || _a === void 0 ? void 0 : _a.access_token,
|
|
2303
2336
|
});
|
|
2304
2337
|
if (error) {
|
|
2305
|
-
return { data: null, error };
|
|
2338
|
+
return this._returnResult({ data: null, error });
|
|
2306
2339
|
}
|
|
2307
2340
|
await this._saveSession(Object.assign({ expires_at: Math.round(Date.now() / 1000) + data.expires_in }, data));
|
|
2308
2341
|
await this._notifyAllSubscribers('MFA_CHALLENGE_VERIFIED', data);
|
|
2309
|
-
return { data, error };
|
|
2342
|
+
return this._returnResult({ data, error });
|
|
2310
2343
|
});
|
|
2311
2344
|
}
|
|
2312
2345
|
catch (error) {
|
|
2313
2346
|
if (isAuthError(error)) {
|
|
2314
|
-
return { data: null, error };
|
|
2347
|
+
return this._returnResult({ data: null, error });
|
|
2315
2348
|
}
|
|
2316
2349
|
throw error;
|
|
2317
2350
|
}
|
|
@@ -2324,7 +2357,7 @@ class GoTrueClient {
|
|
|
2324
2357
|
var _a;
|
|
2325
2358
|
const { data: sessionData, error: sessionError } = result;
|
|
2326
2359
|
if (sessionError) {
|
|
2327
|
-
return { data: null, error: sessionError };
|
|
2360
|
+
return this._returnResult({ data: null, error: sessionError });
|
|
2328
2361
|
}
|
|
2329
2362
|
const response = (await _request(this.fetch, 'POST', `${this.url}/factors/${params.factorId}/challenge`, {
|
|
2330
2363
|
body: params,
|
|
@@ -2354,7 +2387,7 @@ class GoTrueClient {
|
|
|
2354
2387
|
}
|
|
2355
2388
|
catch (error) {
|
|
2356
2389
|
if (isAuthError(error)) {
|
|
2357
|
-
return { data: null, error };
|
|
2390
|
+
return this._returnResult({ data: null, error });
|
|
2358
2391
|
}
|
|
2359
2392
|
throw error;
|
|
2360
2393
|
}
|
|
@@ -2370,7 +2403,7 @@ class GoTrueClient {
|
|
|
2370
2403
|
factorId: params.factorId,
|
|
2371
2404
|
});
|
|
2372
2405
|
if (challengeError) {
|
|
2373
|
-
return { data: null, error: challengeError };
|
|
2406
|
+
return this._returnResult({ data: null, error: challengeError });
|
|
2374
2407
|
}
|
|
2375
2408
|
return await this._verify({
|
|
2376
2409
|
factorId: params.factorId,
|
|
@@ -2414,7 +2447,7 @@ class GoTrueClient {
|
|
|
2414
2447
|
var _a, _b;
|
|
2415
2448
|
const { data: { session }, error: sessionError, } = await this.getSession();
|
|
2416
2449
|
if (sessionError) {
|
|
2417
|
-
return { data: null, error: sessionError };
|
|
2450
|
+
return this._returnResult({ data: null, error: sessionError });
|
|
2418
2451
|
}
|
|
2419
2452
|
if (!session) {
|
|
2420
2453
|
return {
|
|
@@ -2448,10 +2481,10 @@ class GoTrueClient {
|
|
|
2448
2481
|
return await this._useSession(async (result) => {
|
|
2449
2482
|
const { data: { session }, error: sessionError, } = result;
|
|
2450
2483
|
if (sessionError) {
|
|
2451
|
-
return { data: null, error: sessionError };
|
|
2484
|
+
return this._returnResult({ data: null, error: sessionError });
|
|
2452
2485
|
}
|
|
2453
2486
|
if (!session) {
|
|
2454
|
-
return { data: null, error: new AuthSessionMissingError() };
|
|
2487
|
+
return this._returnResult({ data: null, error: new AuthSessionMissingError() });
|
|
2455
2488
|
}
|
|
2456
2489
|
return await _request(this.fetch, 'GET', `${this.url}/oauth/authorizations/${authorizationId}`, {
|
|
2457
2490
|
headers: this.headers,
|
|
@@ -2462,7 +2495,7 @@ class GoTrueClient {
|
|
|
2462
2495
|
}
|
|
2463
2496
|
catch (error) {
|
|
2464
2497
|
if (isAuthError(error)) {
|
|
2465
|
-
return { data: null, error };
|
|
2498
|
+
return this._returnResult({ data: null, error });
|
|
2466
2499
|
}
|
|
2467
2500
|
throw error;
|
|
2468
2501
|
}
|
|
@@ -2476,10 +2509,10 @@ class GoTrueClient {
|
|
|
2476
2509
|
return await this._useSession(async (result) => {
|
|
2477
2510
|
const { data: { session }, error: sessionError, } = result;
|
|
2478
2511
|
if (sessionError) {
|
|
2479
|
-
return { data: null, error: sessionError };
|
|
2512
|
+
return this._returnResult({ data: null, error: sessionError });
|
|
2480
2513
|
}
|
|
2481
2514
|
if (!session) {
|
|
2482
|
-
return { data: null, error: new AuthSessionMissingError() };
|
|
2515
|
+
return this._returnResult({ data: null, error: new AuthSessionMissingError() });
|
|
2483
2516
|
}
|
|
2484
2517
|
const response = await _request(this.fetch, 'POST', `${this.url}/oauth/authorizations/${authorizationId}/consent`, {
|
|
2485
2518
|
headers: this.headers,
|
|
@@ -2498,7 +2531,7 @@ class GoTrueClient {
|
|
|
2498
2531
|
}
|
|
2499
2532
|
catch (error) {
|
|
2500
2533
|
if (isAuthError(error)) {
|
|
2501
|
-
return { data: null, error };
|
|
2534
|
+
return this._returnResult({ data: null, error });
|
|
2502
2535
|
}
|
|
2503
2536
|
throw error;
|
|
2504
2537
|
}
|
|
@@ -2512,10 +2545,10 @@ class GoTrueClient {
|
|
|
2512
2545
|
return await this._useSession(async (result) => {
|
|
2513
2546
|
const { data: { session }, error: sessionError, } = result;
|
|
2514
2547
|
if (sessionError) {
|
|
2515
|
-
return { data: null, error: sessionError };
|
|
2548
|
+
return this._returnResult({ data: null, error: sessionError });
|
|
2516
2549
|
}
|
|
2517
2550
|
if (!session) {
|
|
2518
|
-
return { data: null, error: new AuthSessionMissingError() };
|
|
2551
|
+
return this._returnResult({ data: null, error: new AuthSessionMissingError() });
|
|
2519
2552
|
}
|
|
2520
2553
|
const response = await _request(this.fetch, 'POST', `${this.url}/oauth/authorizations/${authorizationId}/consent`, {
|
|
2521
2554
|
headers: this.headers,
|
|
@@ -2534,7 +2567,7 @@ class GoTrueClient {
|
|
|
2534
2567
|
}
|
|
2535
2568
|
catch (error) {
|
|
2536
2569
|
if (isAuthError(error)) {
|
|
2537
|
-
return { data: null, error };
|
|
2570
|
+
return this._returnResult({ data: null, error });
|
|
2538
2571
|
}
|
|
2539
2572
|
throw error;
|
|
2540
2573
|
}
|
|
@@ -2593,7 +2626,7 @@ class GoTrueClient {
|
|
|
2593
2626
|
if (!token) {
|
|
2594
2627
|
const { data, error } = await this.getSession();
|
|
2595
2628
|
if (error || !data.session) {
|
|
2596
|
-
return { data: null, error };
|
|
2629
|
+
return this._returnResult({ data: null, error });
|
|
2597
2630
|
}
|
|
2598
2631
|
token = data.session.access_token;
|
|
2599
2632
|
}
|
|
@@ -2646,7 +2679,7 @@ class GoTrueClient {
|
|
|
2646
2679
|
}
|
|
2647
2680
|
catch (error) {
|
|
2648
2681
|
if (isAuthError(error)) {
|
|
2649
|
-
return { data: null, error };
|
|
2682
|
+
return this._returnResult({ data: null, error });
|
|
2650
2683
|
}
|
|
2651
2684
|
throw error;
|
|
2652
2685
|
}
|