@supabase/gotrue-js 2.43.0 → 2.44.0
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/dist/main/GoTrueClient.d.ts +6 -1
- package/dist/main/GoTrueClient.d.ts.map +1 -1
- package/dist/main/GoTrueClient.js +51 -7
- package/dist/main/GoTrueClient.js.map +1 -1
- package/dist/main/index.d.ts +1 -0
- package/dist/main/index.d.ts.map +1 -1
- package/dist/main/index.js +5 -1
- package/dist/main/index.js.map +1 -1
- package/dist/main/lib/locks.d.ts +42 -0
- package/dist/main/lib/locks.d.ts.map +1 -0
- package/dist/main/lib/locks.js +135 -0
- package/dist/main/lib/locks.js.map +1 -0
- package/dist/main/lib/types.d.ts +23 -1
- package/dist/main/lib/types.d.ts.map +1 -1
- package/dist/main/lib/version.d.ts +1 -1
- package/dist/main/lib/version.js +1 -1
- package/dist/module/GoTrueClient.d.ts +6 -1
- package/dist/module/GoTrueClient.d.ts.map +1 -1
- package/dist/module/GoTrueClient.js +51 -7
- package/dist/module/GoTrueClient.js.map +1 -1
- package/dist/module/index.d.ts +1 -0
- package/dist/module/index.d.ts.map +1 -1
- package/dist/module/index.js +1 -0
- package/dist/module/index.js.map +1 -1
- package/dist/module/lib/locks.d.ts +42 -0
- package/dist/module/lib/locks.d.ts.map +1 -0
- package/dist/module/lib/locks.js +130 -0
- package/dist/module/lib/locks.js.map +1 -0
- package/dist/module/lib/types.d.ts +23 -1
- package/dist/module/lib/types.d.ts.map +1 -1
- package/dist/module/lib/version.d.ts +1 -1
- package/dist/module/lib/version.js +1 -1
- package/package.json +1 -1
- package/src/GoTrueClient.ts +108 -52
- package/src/index.ts +5 -0
- package/src/lib/locks.ts +161 -0
- package/src/lib/types.ts +24 -0
- package/src/lib/version.ts +1 -1
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @experimental
|
|
3
|
+
*/
|
|
4
|
+
export const internals = {
|
|
5
|
+
/**
|
|
6
|
+
* @experimental
|
|
7
|
+
*/
|
|
8
|
+
debug: !!(globalThis &&
|
|
9
|
+
globalThis.localStorage &&
|
|
10
|
+
globalThis.localStorage.getItem('supabase.gotrue-js.locks.debug') === 'true'),
|
|
11
|
+
};
|
|
12
|
+
export class NavigatorLockAcquireTimeoutError extends Error {
|
|
13
|
+
constructor(message) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.isAcquireTimeout = true;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Implements a global exclusive lock using the Navigator LockManager API. It
|
|
20
|
+
* is available on all browsers released after 2022-03-15 with Safari being the
|
|
21
|
+
* last one to release support. If the API is not available, this function will
|
|
22
|
+
* throw. Make sure you check availablility before configuring {@link
|
|
23
|
+
* GoTrueClient}.
|
|
24
|
+
*
|
|
25
|
+
* You can turn on debugging by setting the `supabase.gotrue-js.locks.debug`
|
|
26
|
+
* local storage item to `true`.
|
|
27
|
+
*
|
|
28
|
+
* Internals:
|
|
29
|
+
*
|
|
30
|
+
* Since the LockManager API does not preserve stack traces for the async
|
|
31
|
+
* function passed in the `request` method, a trick is used where acquiring the
|
|
32
|
+
* lock releases a previously started promise to run the operation in the `fn`
|
|
33
|
+
* function. The lock waits for that promise to finish (with or without error),
|
|
34
|
+
* while the function will finally wait for the result anyway.
|
|
35
|
+
*
|
|
36
|
+
* @experimental
|
|
37
|
+
*
|
|
38
|
+
* @param name Name of the lock to be acquired.
|
|
39
|
+
* @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
|
|
40
|
+
* the lock can't be acquired without waiting. If positive, the lock acquire
|
|
41
|
+
* will time out after so many milliseconds. An error is
|
|
42
|
+
* a timeout if it has `isAcquireTimeout` set to true.
|
|
43
|
+
* @param fn The operation to run once the lock is acquired.
|
|
44
|
+
*/
|
|
45
|
+
export async function navigatorLock(name, acquireTimeout, fn) {
|
|
46
|
+
if (internals.debug) {
|
|
47
|
+
console.log('@supabase/gotrue-js: navigatorLock: acquire lock', name, acquireTimeout);
|
|
48
|
+
}
|
|
49
|
+
let beginOperation = null;
|
|
50
|
+
let rejectOperation = null;
|
|
51
|
+
const beginOperationPromise = new Promise((accept, reject) => {
|
|
52
|
+
beginOperation = accept;
|
|
53
|
+
rejectOperation = reject;
|
|
54
|
+
});
|
|
55
|
+
// this lets us preserve stack traces over the operation, which the
|
|
56
|
+
// navigator.locks.request function does not preserve well still
|
|
57
|
+
const result = (async () => {
|
|
58
|
+
await beginOperationPromise;
|
|
59
|
+
if (internals.debug) {
|
|
60
|
+
console.log('@supabase/gotrue-js: navigatorLock: operation start');
|
|
61
|
+
}
|
|
62
|
+
try {
|
|
63
|
+
return await fn();
|
|
64
|
+
}
|
|
65
|
+
finally {
|
|
66
|
+
if (internals.debug) {
|
|
67
|
+
console.log('@supabase/gotrue-js: navigatorLock: operation end');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
})();
|
|
71
|
+
const abortController = new globalThis.AbortController();
|
|
72
|
+
if (acquireTimeout > 0) {
|
|
73
|
+
setTimeout(() => {
|
|
74
|
+
beginOperation = null;
|
|
75
|
+
abortController.abort();
|
|
76
|
+
if (rejectOperation) {
|
|
77
|
+
if (internals.debug) {
|
|
78
|
+
console.log('@supabase/gotrue-js: navigatorLock acquire timed out', name);
|
|
79
|
+
}
|
|
80
|
+
if (rejectOperation) {
|
|
81
|
+
rejectOperation(new NavigatorLockAcquireTimeoutError(`Acquiring an exclusive Navigator LockManager lock "${name}" timed out after ${acquireTimeout}ms`));
|
|
82
|
+
}
|
|
83
|
+
beginOperation = null;
|
|
84
|
+
rejectOperation = null;
|
|
85
|
+
}
|
|
86
|
+
}, acquireTimeout);
|
|
87
|
+
}
|
|
88
|
+
await globalThis.navigator.locks.request(name, {
|
|
89
|
+
mode: 'exclusive',
|
|
90
|
+
ifAvailable: acquireTimeout === 0,
|
|
91
|
+
signal: abortController.signal,
|
|
92
|
+
}, async (lock) => {
|
|
93
|
+
if (lock) {
|
|
94
|
+
if (internals.debug) {
|
|
95
|
+
console.log('@supabase/gotrue-js: navigatorLock acquired', name);
|
|
96
|
+
}
|
|
97
|
+
try {
|
|
98
|
+
if (beginOperation) {
|
|
99
|
+
beginOperation();
|
|
100
|
+
beginOperation = null;
|
|
101
|
+
rejectOperation = null;
|
|
102
|
+
await result;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch (e) {
|
|
106
|
+
// not important to handle the error here
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
if (internals.debug) {
|
|
110
|
+
console.log('@supabase/gotrue-js: navigatorLock released', name);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
if (internals.debug) {
|
|
116
|
+
console.log('@supabase/gotrue-js: navigatorLock not immediately available', name);
|
|
117
|
+
}
|
|
118
|
+
// no lock was available because acquireTimeout === 0
|
|
119
|
+
const timeout = new Error(`Acquiring an exclusive Navigator LockManager lock "${name}" immediately failed`);
|
|
120
|
+
timeout.isAcquireTimeout = true;
|
|
121
|
+
if (rejectOperation) {
|
|
122
|
+
rejectOperation(new NavigatorLockAcquireTimeoutError(`Acquiring an exclusive Navigator LockManager lock "${name}" immediately failed`));
|
|
123
|
+
}
|
|
124
|
+
beginOperation = null;
|
|
125
|
+
rejectOperation = null;
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
return await result;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=locks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.js","sourceRoot":"","sources":["../../../src/lib/locks.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
import { AuthError } from './errors';
|
|
2
2
|
import { Fetch } from './fetch';
|
|
3
3
|
/** One of the providers supported by GoTrue. */
|
|
4
|
-
export declare type Provider = 'apple' | 'azure' | 'bitbucket' | 'discord' | 'facebook' | 'github' | 'gitlab' | 'google' | 'kakao' | 'keycloak' | 'linkedin' | 'notion' | 'slack' | 'spotify' | 'twitch' | 'twitter' | 'workos' | 'zoom';
|
|
4
|
+
export declare type Provider = 'apple' | 'azure' | 'bitbucket' | 'discord' | 'facebook' | 'figma' | 'github' | 'gitlab' | 'google' | 'kakao' | 'keycloak' | 'linkedin' | 'notion' | 'slack' | 'spotify' | 'twitch' | 'twitter' | 'workos' | 'zoom';
|
|
5
5
|
export declare type AuthChangeEventMFA = 'MFA_CHALLENGE_VERIFIED';
|
|
6
6
|
export declare type AuthChangeEvent = 'INITIAL_SESSION' | 'PASSWORD_RECOVERY' | 'SIGNED_IN' | 'SIGNED_OUT' | 'TOKEN_REFRESHED' | 'USER_UPDATED' | AuthChangeEventMFA;
|
|
7
|
+
/**
|
|
8
|
+
* Provide your own global lock implementation instead of the default
|
|
9
|
+
* implementation. The function should acquire a lock for the duration of the
|
|
10
|
+
* `fn` async function, such that no other client instances will be able to
|
|
11
|
+
* hold it at the same time.
|
|
12
|
+
*
|
|
13
|
+
* @experimental
|
|
14
|
+
*
|
|
15
|
+
* @param name Name of the lock to be acquired.
|
|
16
|
+
* @param acquireTimeout If negative, no timeout should occur. If positive it
|
|
17
|
+
* should throw an Error with an `isAcquireTimeout`
|
|
18
|
+
* property set to true if the operation fails to be
|
|
19
|
+
* acquired after this much time (ms).
|
|
20
|
+
* @param fn The operation to execute when the lock is acquired.
|
|
21
|
+
*/
|
|
22
|
+
export declare type LockFunc = <R>(name: string, acquireTimeout: number, fn: () => Promise<R>) => Promise<R>;
|
|
7
23
|
export declare type GoTrueClientOptions = {
|
|
8
24
|
url?: string;
|
|
9
25
|
headers?: {
|
|
@@ -17,6 +33,12 @@ export declare type GoTrueClientOptions = {
|
|
|
17
33
|
fetch?: Fetch;
|
|
18
34
|
flowType?: AuthFlowType;
|
|
19
35
|
debug?: boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Provide your own locking mechanism based on the environment. By default no locking is done at this time.
|
|
38
|
+
*
|
|
39
|
+
* @experimental
|
|
40
|
+
*/
|
|
41
|
+
lock?: LockFunc;
|
|
20
42
|
};
|
|
21
43
|
export declare type AuthResponse = {
|
|
22
44
|
data: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACpC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,gDAAgD;AAChD,oBAAY,QAAQ,GAChB,OAAO,GACP,OAAO,GACP,WAAW,GACX,SAAS,GACT,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,QAAQ,GACR,OAAO,GACP,UAAU,GACV,UAAU,GACV,QAAQ,GACR,OAAO,GACP,SAAS,GACT,QAAQ,GACR,SAAS,GACT,QAAQ,GACR,MAAM,CAAA;AAEV,oBAAY,kBAAkB,GAAG,wBAAwB,CAAA;AAEzD,oBAAY,eAAe,GACvB,iBAAiB,GACjB,mBAAmB,GACnB,WAAW,GACX,YAAY,GACZ,iBAAiB,GACjB,cAAc,GACd,kBAAkB,CAAA;AAEtB,oBAAY,mBAAmB,GAAG;IAEhC,GAAG,CAAC,EAAE,MAAM,CAAA;IAEZ,OAAO,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAEnC,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAE5B,gBAAgB,CAAC,EAAE,OAAO,CAAA;IAE1B,cAAc,CAAC,EAAE,OAAO,CAAA;IAExB,OAAO,CAAC,EAAE,gBAAgB,CAAA;IAE1B,KAAK,CAAC,EAAE,KAAK,CAAA;IAEb,QAAQ,CAAC,EAAE,YAAY,CAAA;IAEvB,KAAK,CAAC,EAAE,OAAO,CAAA;CAChB,CAAA;AAED,oBAAY,YAAY,GACpB;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,GAAG,IAAI,CAAA;QACjB,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;KACxB,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAA;QACV,OAAO,EAAE,IAAI,CAAA;KACd,CAAA;IACD,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL;;;;GAIG;AACH,oBAAY,eAAe,GACvB;IACE,IAAI,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC9D,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,OAAO,EAAE,IAAI,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;IAC9D,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,oBAAY,iBAAiB,GACzB;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAA;QACV,OAAO,EAAE,OAAO,CAAA;KACjB,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAA;QACV,OAAO,EAAE,IAAI,CAAA;KACd,CAAA;IACD,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,oBAAY,aAAa,GACrB;IACE,IAAI,EAAE;QACJ,QAAQ,EAAE,QAAQ,CAAA;QAClB,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE;QACJ,QAAQ,EAAE,QAAQ,CAAA;QAClB,GAAG,EAAE,IAAI,CAAA;KACV,CAAA;IACD,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,oBAAY,WAAW,GACnB;IACE,IAAI,EAAE;QACJ;;;;;;WAMG;QACH,GAAG,EAAE,MAAM,CAAA;KACZ,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,oBAAY,YAAY,GACpB;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAA;KACX,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE;QACJ,IAAI,EAAE,IAAI,CAAA;KACX,CAAA;IACD,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,MAAM,WAAW,OAAO;IACtB;;OAEG;IACH,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B;;;OAGG;IACH,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtC;;OAEG;IACH,YAAY,EAAE,MAAM,CAAA;IACpB;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAA;IAClB;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,IAAI,CAAA;CACX;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,QAAQ;IACvB,kCAAkC;IAClC,MAAM,EAAE,UAAU,GAAG,KAAK,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;IAE1D;;;OAGG;IACH,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,OAAO,EAAE,MAAM,CAAA;IACf,aAAa,CAAC,EAAE;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KACnB,CAAA;IACD,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,MAAM;IACrB,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAA;IAEV,oFAAoF;IACpF,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;OAGG;IACH,WAAW,EAAE,MAAM,GAAG,MAAM,CAAA;IAE5B,uBAAuB;IACvB,MAAM,EAAE,UAAU,GAAG,YAAY,CAAA;IAEjC,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CACnB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAA;IACV,YAAY,EAAE,eAAe,CAAA;IAC7B,aAAa,EAAE,YAAY,CAAA;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,YAAY,EAAE,CAAA;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,cAAc;IAC7B;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAA;IAEjB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAoB,SAAQ,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC;IACvE;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;IAEtB;;;;;;;OAOG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;;;;;;;;OASG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B;;OAEG;IACH,EAAE,EAAE,MAAM,CAAA;IACV;;OAEG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,KAAK,IAAI,CAAA;IACnE;;OAEG;IACH,WAAW,EAAE,MAAM,IAAI,CAAA;CACxB;AAED,MAAM,WAAW,yBAAyB;IACxC,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,oBAAY,6BAA6B,GACrC;IACE,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE;QACR,kDAAkD;QAClD,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,GACD;IACE,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE;QACR;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,mIAAmI;QACnI,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,sDAAsD;QACtD,OAAO,CAAC,EAAE,KAAK,GAAG,UAAU,CAAA;KAC7B,CAAA;CACF,CAAA;AACL,oBAAY,6BAA6B,GACrC;IACE,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE;QACR,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,GACD;IACE,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,2BAA2B;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE;QACR;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,CAAA;AAEL,oBAAY,iCAAiC,GACzC;IACE,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE;QACR,kDAAkD;QAClD,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,iFAAiF;QACjF,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,GACD;IACE,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE;QACR,iFAAiF;QACjF,gBAAgB,CAAC,EAAE,OAAO,CAAA;QAC1B;;;;WAIG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,sDAAsD;QACtD,OAAO,CAAC,EAAE,KAAK,GAAG,UAAU,CAAA;KAC7B,CAAA;CACF,CAAA;AAEL,oBAAY,YAAY,GAAG,UAAU,GAAG,MAAM,CAAA;AAC9C,oBAAY,0BAA0B,GAAG;IACvC,gDAAgD;IAChD,QAAQ,EAAE,QAAQ,CAAA;IAClB,OAAO,CAAC,EAAE;QACR,0DAA0D;QAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,yEAAyE;QACzE,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,gCAAgC;QAChC,WAAW,CAAC,EAAE;YAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;SAAE,CAAA;QACvC,uIAAuI;QACvI,mBAAmB,CAAC,EAAE,OAAO,CAAA;KAC9B,CAAA;CACF,CAAA;AAED,oBAAY,4BAA4B,GAAG;IACzC,kMAAkM;IAClM,QAAQ,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,CAAA;IAC5D,yUAAyU;IACzU,KAAK,EAAE,MAAM,CAAA;IACb,yHAAyH;IACzH,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sHAAsH;IACtH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE;QACR,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,CAAA;AAED,oBAAY,eAAe,GAAG,qBAAqB,GAAG,oBAAoB,CAAA;AAC1E,MAAM,WAAW,qBAAqB;IACpC,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAA;IACb,+CAA+C;IAC/C,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,IAAI,EAAE,aAAa,CAAA;IACnB,OAAO,CAAC,EAAE;QACR,0DAA0D;QAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;QAEnB;;;;WAIG;QACH,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AACD,MAAM,WAAW,oBAAoB;IACnC,gCAAgC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAA;IACb,oCAAoC;IACpC,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,CAAC,EAAE;QACR,0DAA0D;QAC1D,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF;AAED,oBAAY,aAAa,GAAG,KAAK,GAAG,cAAc,CAAA;AAClD,oBAAY,YAAY,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,cAAc,GAAG,OAAO,CAAA;AAEpG,oBAAY,YAAY,GACpB;IACE,IAAI,EAAE,OAAO,CAAC,YAAY,EAAE,QAAQ,GAAG,cAAc,CAAC,CAAA;IACtD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE;QACR,2DAA2D;QAC3D,eAAe,CAAC,EAAE,MAAM,CAAA;QACxB,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,GACD;IACE,IAAI,EAAE,OAAO,CAAC,aAAa,EAAE,KAAK,GAAG,cAAc,CAAC,CAAA;IACpD,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE;QACR,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,CAAA;AAEL,oBAAY,aAAa,GACrB;IACE,4DAA4D;IAC5D,UAAU,EAAE,MAAM,CAAA;IAElB,OAAO,CAAC,EAAE;QACR,2DAA2D;QAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,GACD;IACE,0EAA0E;IAC1E,MAAM,EAAE,MAAM,CAAA;IAEd,OAAO,CAAC,EAAE;QACR,2DAA2D;QAC3D,UAAU,CAAC,EAAE,MAAM,CAAA;QACnB,mFAAmF;QACnF,YAAY,CAAC,EAAE,MAAM,CAAA;KACtB,CAAA;CACF,CAAA;AAEL,oBAAY,wBAAwB,GAAG;IACrC,IAAI,EAAE,QAAQ,CAAA;IACd,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,YAAY,CAAC,CAAA;CAC3D,CAAA;AAED,oBAAY,+BAA+B,GAAG;IAC5C,IAAI,EAAE,QAAQ,GAAG,WAAW,CAAA;IAC5B,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,MAAM,GAAG,YAAY,CAAC,CAAA;CAC3D,CAAA;AAED,oBAAY,0BAA0B,GAAG;IACvC,IAAI,EAAE,UAAU,CAAA;IAChB,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;CAClD,CAAA;AAED,oBAAY,6BAA6B,GAAG;IAC1C,IAAI,EAAE,sBAAsB,GAAG,kBAAkB,CAAA;IACjD,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAA;IACb;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,EAAE,YAAY,CAAC,CAAA;CAClD,CAAA;AAED,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,oBAAY,kBAAkB,GAC1B,wBAAwB,GACxB,+BAA+B,GAC/B,0BAA0B,GAC1B,6BAA6B,CAAA;AAEjC,oBAAY,oBAAoB,GAC5B;IACE,IAAI,EAAE;QACJ,UAAU,EAAE,sBAAsB,CAAA;QAClC,IAAI,EAAE,IAAI,CAAA;KACX,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE;QACJ,UAAU,EAAE,IAAI,CAAA;QAChB,IAAI,EAAE,IAAI,CAAA;KACX,CAAA;IACD,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,0DAA0D;AAC1D,oBAAY,sBAAsB,GAAG;IACnC;;;SAGK;IACL,WAAW,EAAE,MAAM,CAAA;IACnB;;;SAGK;IACL,SAAS,EAAE,MAAM,CAAA;IACjB;;SAEK;IACL,YAAY,EAAE,MAAM,CAAA;IACpB,2CAA2C;IAC3C,WAAW,EAAE,MAAM,CAAA;IACnB,kEAAkE;IAClE,iBAAiB,EAAE,gBAAgB,CAAA;CACpC,CAAA;AAED,oBAAY,gBAAgB,GACxB,QAAQ,GACR,QAAQ,GACR,WAAW,GACX,UAAU,GACV,sBAAsB,GACtB,kBAAkB,CAAA;AAEtB,oBAAY,eAAe,GAAG;IAC5B,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAA;IAClB,8CAA8C;IAC9C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,kDAAkD;IAClD,YAAY,CAAC,EAAE,MAAM,CAAA;CACtB,CAAA;AAED,oBAAY,iBAAiB,GAAG;IAC9B,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,oBAAY,eAAe,GAAG;IAC5B,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAEhB,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;IAEnB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,oBAAY,kBAAkB,GAAG;IAC/B,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,oBAAY,2BAA2B,GAAG;IACxC,6DAA6D;IAC7D,QAAQ,EAAE,MAAM,CAAA;IAChB,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAA;CACb,CAAA;AAED,oBAAY,qBAAqB,GAC7B;IACE,IAAI,EAAE;QACJ,4DAA4D;QAC5D,YAAY,EAAE,MAAM,CAAA;QAEpB,yCAAyC;QACzC,UAAU,EAAE,MAAM,CAAA;QAElB,+DAA+D;QAC/D,UAAU,EAAE,MAAM,CAAA;QAElB,0EAA0E;QAC1E,aAAa,EAAE,MAAM,CAAA;QAErB,4BAA4B;QAC5B,IAAI,EAAE,IAAI,CAAA;KACX,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,oBAAY,qBAAqB,GAC7B;IACE,IAAI,EAAE;QACJ,wEAAwE;QACxE,EAAE,EAAE,MAAM,CAAA;QAEV,yDAAyD;QACzD,IAAI,EAAE,MAAM,CAAA;QAEZ,mCAAmC;QACnC,IAAI,EAAE;YACJ;;qEAEyD;YACzD,OAAO,EAAE,MAAM,CAAA;YAEf;;4EAEgE;YAChE,MAAM,EAAE,MAAM,CAAA;YAEd;oEACwD;YACxD,GAAG,EAAE,MAAM,CAAA;SACZ,CAAA;KACF,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,IAAI,EAAE,IAAI,CAAA;IACV,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,oBAAY,uBAAuB,GAC/B;IACE,IAAI,EAAE;QACJ,yDAAyD;QACzD,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAA;AAEpC,oBAAY,wBAAwB,GAChC;IACE,IAAI,EAAE;QACJ,yCAAyC;QACzC,EAAE,EAAE,MAAM,CAAA;QAEV,8EAA8E;QAC9E,UAAU,EAAE,MAAM,CAAA;KACnB,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAA;AAEpC,oBAAY,0BAA0B,GAClC;IACE,IAAI,EAAE;QACJ,uDAAuD;QACvD,GAAG,EAAE,MAAM,EAAE,CAAA;QAEb,uDAAuD;QACvD,IAAI,EAAE,MAAM,EAAE,CAAA;KACf,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAA;AAEpC,oBAAY,4BAA4B,GAAG,MAAM,GAAG,MAAM,CAAA;AAE1D,oBAAY,6CAA6C,GACrD;IACE,IAAI,EAAE;QACJ,wCAAwC;QACxC,YAAY,EAAE,4BAA4B,GAAG,IAAI,CAAA;QAEjD;;;;;WAKG;QACH,SAAS,EAAE,4BAA4B,GAAG,IAAI,CAAA;QAE9C;;;;WAIG;QACH,4BAA4B,EAAE,QAAQ,EAAE,CAAA;KACzC,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAA;AAEpC;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAE/D;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAA;IAExE;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAE/D;;;OAGG;IACH,QAAQ,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;IAErE;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAA;IAEvF;;;;;;;OAOG;IACH,WAAW,IAAI,OAAO,CAAC,0BAA0B,CAAC,CAAA;IAElD;;;;;;;;;;;;OAYG;IACH,8BAA8B,IAAI,OAAO,CAAC,6CAA6C,CAAC,CAAA;CACzF;AAED;;GAEG;AACH,oBAAY,gCAAgC,GACxC;IACE,IAAI,EAAE;QACJ,sDAAsD;QACtD,EAAE,EAAE,MAAM,CAAA;KACX,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAA;AAEpC;;GAEG;AACH,oBAAY,8BAA8B,GAAG;IAC3C,sCAAsC;IACtC,EAAE,EAAE,MAAM,CAAA;IAEV,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;GAEG;AACH,oBAAY,+BAA+B,GACvC;IACE,IAAI,EAAE;QACJ,wCAAwC;QACxC,OAAO,EAAE,MAAM,EAAE,CAAA;KAClB,CAAA;IACD,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,CAAA;AAEpC;;GAEG;AACH,oBAAY,6BAA6B,GAAG;IAC1C,sBAAsB;IACtB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,WAAW,CAAC,MAAM,EAAE,6BAA6B,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAA;IAE5F;;;;;;;OAOG;IACH,YAAY,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAA;CAChG;AAED,aAAK,WAAW,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAA;AAC1C,aAAK,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;AAEvC,aAAK,gBAAgB,CAAC,CAAC,IAAI;KACxB,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,WAAW,GACpC,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAC/D,CAAC,CAAC,CAAC,CAAC;CACT,CAAA;AAED,oBAAY,gBAAgB,GAAG,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,YAAY,CAAC,CAAC,CAAA;AAEpG,oBAAY,gBAAgB,GAAG;IAAE,KAAK,EAAE,SAAS,GAAG,IAAI,CAAA;CAAE,CAAA;AAE1D,oBAAY,sBAAsB,GAC9B;IACE,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,IAAI,CAAA;CACZ,GACD;IACE,OAAO,EAAE,IAAI,CAAA;IACb,KAAK,EAAE,SAAS,CAAA;CACjB,CAAA;AAEL,oBAAY,UAAU,GAAG;IACvB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;CACd,CAAA;AAED,oBAAY,UAAU,GAAG;IACvB,sBAAsB;IACtB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB,CAAA;AAED,oBAAY,OAAO,GAAG;IACpB;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAA;CACtC,CAAA"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "2.
|
|
1
|
+
export declare const version = "2.44.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
package/src/GoTrueClient.ts
CHANGED
|
@@ -77,11 +77,12 @@ import type {
|
|
|
77
77
|
MFAChallengeAndVerifyParams,
|
|
78
78
|
ResendParams,
|
|
79
79
|
AuthFlowType,
|
|
80
|
+
LockFunc,
|
|
80
81
|
} from './lib/types'
|
|
81
82
|
|
|
82
83
|
polyfillGlobalThis() // Make "globalThis" available
|
|
83
84
|
|
|
84
|
-
const DEFAULT_OPTIONS: Omit<Required<GoTrueClientOptions>, 'fetch' | 'storage'> = {
|
|
85
|
+
const DEFAULT_OPTIONS: Omit<Required<GoTrueClientOptions>, 'fetch' | 'storage' | 'lock'> = {
|
|
85
86
|
url: GOTRUE_URL,
|
|
86
87
|
storageKey: STORAGE_KEY,
|
|
87
88
|
autoRefreshToken: true,
|
|
@@ -99,6 +100,10 @@ const AUTO_REFRESH_TICK_DURATION = 30 * 1000
|
|
|
99
100
|
* A token refresh will be attempted this many ticks before the current session expires. */
|
|
100
101
|
const AUTO_REFRESH_TICK_THRESHOLD = 3
|
|
101
102
|
|
|
103
|
+
async function lockNoOp<R>(name: string, acquireTimeout: number, fn: () => Promise<R>): Promise<R> {
|
|
104
|
+
return await fn()
|
|
105
|
+
}
|
|
106
|
+
|
|
102
107
|
export default class GoTrueClient {
|
|
103
108
|
private static nextInstanceID = 0
|
|
104
109
|
|
|
@@ -146,6 +151,7 @@ export default class GoTrueClient {
|
|
|
146
151
|
[key: string]: string
|
|
147
152
|
}
|
|
148
153
|
protected fetch: Fetch
|
|
154
|
+
protected lock: LockFunc
|
|
149
155
|
|
|
150
156
|
/**
|
|
151
157
|
* Used to broadcast state change events to other tabs listening.
|
|
@@ -183,6 +189,7 @@ export default class GoTrueClient {
|
|
|
183
189
|
this.url = settings.url
|
|
184
190
|
this.headers = settings.headers
|
|
185
191
|
this.fetch = resolveFetch(settings.fetch)
|
|
192
|
+
this.lock = settings.lock || lockNoOp
|
|
186
193
|
this.detectSessionInUrl = settings.detectSessionInUrl
|
|
187
194
|
this.flowType = settings.flowType
|
|
188
195
|
|
|
@@ -255,61 +262,65 @@ export default class GoTrueClient {
|
|
|
255
262
|
throw new Error('Double call of #_initialize()')
|
|
256
263
|
}
|
|
257
264
|
|
|
258
|
-
this.initializePromise =
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
265
|
+
this.initializePromise = this._acquireLock(
|
|
266
|
+
-1,
|
|
267
|
+
async () =>
|
|
268
|
+
await stackGuard('_initialize', async () => {
|
|
269
|
+
try {
|
|
270
|
+
const isPKCEFlow = isBrowser() ? await this._isPKCEFlow() : false
|
|
271
|
+
this._debug('#_initialize()', 'begin', 'is PKCE flow', isPKCEFlow)
|
|
262
272
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
273
|
+
if (isPKCEFlow || (this.detectSessionInUrl && this._isImplicitGrantFlow())) {
|
|
274
|
+
const { data, error } = await this._getSessionFromUrl(isPKCEFlow)
|
|
275
|
+
if (error) {
|
|
276
|
+
this._debug('#_initialize()', 'error detecting session from URL', error)
|
|
267
277
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
278
|
+
// failed login attempt via url,
|
|
279
|
+
// remove old session as in verifyOtp, signUp and signInWith*
|
|
280
|
+
await this._removeSession()
|
|
271
281
|
|
|
272
|
-
|
|
273
|
-
|
|
282
|
+
return { error }
|
|
283
|
+
}
|
|
274
284
|
|
|
275
|
-
|
|
285
|
+
const { session, redirectType } = data
|
|
276
286
|
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
287
|
+
this._debug(
|
|
288
|
+
'#_initialize()',
|
|
289
|
+
'detected session in URL',
|
|
290
|
+
session,
|
|
291
|
+
'redirect type',
|
|
292
|
+
redirectType
|
|
293
|
+
)
|
|
284
294
|
|
|
285
|
-
|
|
295
|
+
await this._saveSession(session)
|
|
286
296
|
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
297
|
+
setTimeout(async () => {
|
|
298
|
+
if (redirectType === 'recovery') {
|
|
299
|
+
await this._notifyAllSubscribers('PASSWORD_RECOVERY', session)
|
|
300
|
+
} else {
|
|
301
|
+
await this._notifyAllSubscribers('SIGNED_IN', session)
|
|
302
|
+
}
|
|
303
|
+
}, 0)
|
|
294
304
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
305
|
+
return { error: null }
|
|
306
|
+
}
|
|
307
|
+
// no login attempt via callback url try to recover session from storage
|
|
308
|
+
await this._recoverAndRefresh()
|
|
309
|
+
return { error: null }
|
|
310
|
+
} catch (error) {
|
|
311
|
+
if (isAuthError(error)) {
|
|
312
|
+
return { error }
|
|
313
|
+
}
|
|
304
314
|
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
315
|
+
return {
|
|
316
|
+
error: new AuthUnknownError('Unexpected error during initialization', error),
|
|
317
|
+
}
|
|
318
|
+
} finally {
|
|
319
|
+
await this._handleVisibilityChange()
|
|
320
|
+
this._debug('#_initialize()', 'end')
|
|
321
|
+
}
|
|
322
|
+
})
|
|
323
|
+
)
|
|
313
324
|
|
|
314
325
|
return await this.initializePromise
|
|
315
326
|
}
|
|
@@ -781,6 +792,34 @@ export default class GoTrueClient {
|
|
|
781
792
|
})
|
|
782
793
|
}
|
|
783
794
|
|
|
795
|
+
/**
|
|
796
|
+
* Acquires a global lock based on the storage key.
|
|
797
|
+
*/
|
|
798
|
+
private async _acquireLock<R>(acquireTimeout: number, fn: () => Promise<R>): Promise<R> {
|
|
799
|
+
this._debug('#_acquireLock', 'begin', acquireTimeout)
|
|
800
|
+
|
|
801
|
+
try {
|
|
802
|
+
if (isInStackGuard('_acquireLock')) {
|
|
803
|
+
this._debug('#_acquireLock', 'recursive call')
|
|
804
|
+
return await fn()
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
return await this.lock(`lock:${this.storageKey}`, acquireTimeout, async () => {
|
|
808
|
+
this._debug('#_acquireLock', 'lock acquired for storage key', this.storageKey)
|
|
809
|
+
|
|
810
|
+
try {
|
|
811
|
+
return await stackGuard('_acquireLock', async () => {
|
|
812
|
+
return await fn()
|
|
813
|
+
})
|
|
814
|
+
} finally {
|
|
815
|
+
this._debug('#_acquireLock', 'lock released for storage key', this.storageKey)
|
|
816
|
+
}
|
|
817
|
+
})
|
|
818
|
+
} finally {
|
|
819
|
+
this._debug('#_acquireLock', 'end')
|
|
820
|
+
}
|
|
821
|
+
}
|
|
822
|
+
|
|
784
823
|
/**
|
|
785
824
|
* Use instead of {@link #getSession} inside the library. It is
|
|
786
825
|
* semantically usually what you want, as getting a session involves some
|
|
@@ -810,12 +849,29 @@ export default class GoTrueClient {
|
|
|
810
849
|
}
|
|
811
850
|
) => Promise<R>
|
|
812
851
|
): Promise<R> {
|
|
813
|
-
|
|
814
|
-
// the use of __loadSession here is the only correct use of the function!
|
|
815
|
-
const result = await this.__loadSession()
|
|
852
|
+
this._debug('#_useSession', 'begin')
|
|
816
853
|
|
|
817
|
-
|
|
818
|
-
|
|
854
|
+
try {
|
|
855
|
+
if (isInStackGuard('_useSession')) {
|
|
856
|
+
this._debug('#_useSession', 'recursive call')
|
|
857
|
+
|
|
858
|
+
// the use of __loadSession here is the only correct use of the function!
|
|
859
|
+
const result = await this.__loadSession()
|
|
860
|
+
|
|
861
|
+
return await fn(result)
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
return await this._acquireLock(-1, async () => {
|
|
865
|
+
return await stackGuard('_useSession', async () => {
|
|
866
|
+
// the use of __loadSession here is the only correct use of the function!
|
|
867
|
+
const result = await this.__loadSession()
|
|
868
|
+
|
|
869
|
+
return await fn(result)
|
|
870
|
+
})
|
|
871
|
+
})
|
|
872
|
+
} finally {
|
|
873
|
+
this._debug('#_useSession', 'end')
|
|
874
|
+
}
|
|
819
875
|
}
|
|
820
876
|
|
|
821
877
|
/**
|
package/src/index.ts
CHANGED
package/src/lib/locks.ts
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @experimental
|
|
3
|
+
*/
|
|
4
|
+
export const internals = {
|
|
5
|
+
/**
|
|
6
|
+
* @experimental
|
|
7
|
+
*/
|
|
8
|
+
debug: !!(
|
|
9
|
+
globalThis &&
|
|
10
|
+
globalThis.localStorage &&
|
|
11
|
+
globalThis.localStorage.getItem('supabase.gotrue-js.locks.debug') === 'true'
|
|
12
|
+
),
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export class NavigatorLockAcquireTimeoutError extends Error {
|
|
16
|
+
public readonly isAcquireTimeout = true
|
|
17
|
+
|
|
18
|
+
constructor(message: string) {
|
|
19
|
+
super(message)
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Implements a global exclusive lock using the Navigator LockManager API. It
|
|
25
|
+
* is available on all browsers released after 2022-03-15 with Safari being the
|
|
26
|
+
* last one to release support. If the API is not available, this function will
|
|
27
|
+
* throw. Make sure you check availablility before configuring {@link
|
|
28
|
+
* GoTrueClient}.
|
|
29
|
+
*
|
|
30
|
+
* You can turn on debugging by setting the `supabase.gotrue-js.locks.debug`
|
|
31
|
+
* local storage item to `true`.
|
|
32
|
+
*
|
|
33
|
+
* Internals:
|
|
34
|
+
*
|
|
35
|
+
* Since the LockManager API does not preserve stack traces for the async
|
|
36
|
+
* function passed in the `request` method, a trick is used where acquiring the
|
|
37
|
+
* lock releases a previously started promise to run the operation in the `fn`
|
|
38
|
+
* function. The lock waits for that promise to finish (with or without error),
|
|
39
|
+
* while the function will finally wait for the result anyway.
|
|
40
|
+
*
|
|
41
|
+
* @experimental
|
|
42
|
+
*
|
|
43
|
+
* @param name Name of the lock to be acquired.
|
|
44
|
+
* @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
|
|
45
|
+
* the lock can't be acquired without waiting. If positive, the lock acquire
|
|
46
|
+
* will time out after so many milliseconds. An error is
|
|
47
|
+
* a timeout if it has `isAcquireTimeout` set to true.
|
|
48
|
+
* @param fn The operation to run once the lock is acquired.
|
|
49
|
+
*/
|
|
50
|
+
export async function navigatorLock<R>(
|
|
51
|
+
name: string,
|
|
52
|
+
acquireTimeout: number,
|
|
53
|
+
fn: () => Promise<R>
|
|
54
|
+
): Promise<R> {
|
|
55
|
+
if (internals.debug) {
|
|
56
|
+
console.log('@supabase/gotrue-js: navigatorLock: acquire lock', name, acquireTimeout)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
let beginOperation: (() => void) | null = null
|
|
60
|
+
let rejectOperation: ((error: any) => void) | null = null
|
|
61
|
+
const beginOperationPromise = new Promise<void>((accept, reject) => {
|
|
62
|
+
beginOperation = accept
|
|
63
|
+
rejectOperation = reject
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
// this lets us preserve stack traces over the operation, which the
|
|
67
|
+
// navigator.locks.request function does not preserve well still
|
|
68
|
+
const result = (async () => {
|
|
69
|
+
await beginOperationPromise
|
|
70
|
+
|
|
71
|
+
if (internals.debug) {
|
|
72
|
+
console.log('@supabase/gotrue-js: navigatorLock: operation start')
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
try {
|
|
76
|
+
return await fn()
|
|
77
|
+
} finally {
|
|
78
|
+
if (internals.debug) {
|
|
79
|
+
console.log('@supabase/gotrue-js: navigatorLock: operation end')
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
})()
|
|
83
|
+
|
|
84
|
+
const abortController = new globalThis.AbortController()
|
|
85
|
+
|
|
86
|
+
if (acquireTimeout > 0) {
|
|
87
|
+
setTimeout(() => {
|
|
88
|
+
beginOperation = null
|
|
89
|
+
abortController.abort()
|
|
90
|
+
|
|
91
|
+
if (rejectOperation) {
|
|
92
|
+
if (internals.debug) {
|
|
93
|
+
console.log('@supabase/gotrue-js: navigatorLock acquire timed out', name)
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
if (rejectOperation) {
|
|
97
|
+
rejectOperation(
|
|
98
|
+
new NavigatorLockAcquireTimeoutError(
|
|
99
|
+
`Acquiring an exclusive Navigator LockManager lock "${name}" timed out after ${acquireTimeout}ms`
|
|
100
|
+
)
|
|
101
|
+
)
|
|
102
|
+
}
|
|
103
|
+
beginOperation = null
|
|
104
|
+
rejectOperation = null
|
|
105
|
+
}
|
|
106
|
+
}, acquireTimeout)
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
await globalThis.navigator.locks.request(
|
|
110
|
+
name,
|
|
111
|
+
{
|
|
112
|
+
mode: 'exclusive',
|
|
113
|
+
ifAvailable: acquireTimeout === 0,
|
|
114
|
+
signal: abortController.signal,
|
|
115
|
+
},
|
|
116
|
+
async (lock) => {
|
|
117
|
+
if (lock) {
|
|
118
|
+
if (internals.debug) {
|
|
119
|
+
console.log('@supabase/gotrue-js: navigatorLock acquired', name)
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
try {
|
|
123
|
+
if (beginOperation) {
|
|
124
|
+
beginOperation()
|
|
125
|
+
beginOperation = null
|
|
126
|
+
rejectOperation = null
|
|
127
|
+
await result
|
|
128
|
+
}
|
|
129
|
+
} catch (e: any) {
|
|
130
|
+
// not important to handle the error here
|
|
131
|
+
} finally {
|
|
132
|
+
if (internals.debug) {
|
|
133
|
+
console.log('@supabase/gotrue-js: navigatorLock released', name)
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
} else {
|
|
137
|
+
if (internals.debug) {
|
|
138
|
+
console.log('@supabase/gotrue-js: navigatorLock not immediately available', name)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// no lock was available because acquireTimeout === 0
|
|
142
|
+
const timeout: any = new Error(
|
|
143
|
+
`Acquiring an exclusive Navigator LockManager lock "${name}" immediately failed`
|
|
144
|
+
)
|
|
145
|
+
timeout.isAcquireTimeout = true
|
|
146
|
+
|
|
147
|
+
if (rejectOperation) {
|
|
148
|
+
rejectOperation(
|
|
149
|
+
new NavigatorLockAcquireTimeoutError(
|
|
150
|
+
`Acquiring an exclusive Navigator LockManager lock "${name}" immediately failed`
|
|
151
|
+
)
|
|
152
|
+
)
|
|
153
|
+
}
|
|
154
|
+
beginOperation = null
|
|
155
|
+
rejectOperation = null
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
return await result
|
|
161
|
+
}
|