@supabase/gotrue-js 2.44.1 → 2.46.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 +1 -1
- package/dist/main/GoTrueClient.d.ts.map +1 -1
- package/dist/main/GoTrueClient.js +32 -45
- package/dist/main/GoTrueClient.js.map +1 -1
- package/dist/main/lib/helpers.d.ts +12 -1
- package/dist/main/lib/helpers.d.ts.map +1 -1
- package/dist/main/lib/helpers.js +51 -18
- package/dist/main/lib/helpers.js.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 +1 -1
- package/dist/module/GoTrueClient.d.ts.map +1 -1
- package/dist/module/GoTrueClient.js +33 -46
- package/dist/module/GoTrueClient.js.map +1 -1
- package/dist/module/lib/helpers.d.ts +12 -1
- package/dist/module/lib/helpers.d.ts.map +1 -1
- package/dist/module/lib/helpers.js +48 -16
- package/dist/module/lib/helpers.js.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 +58 -41
- package/src/lib/helpers.ts +58 -13
- package/src/lib/version.ts +1 -1
|
@@ -47,18 +47,28 @@ export const supportsLocalStorage = () => {
|
|
|
47
47
|
}
|
|
48
48
|
return localStorageWriteTests.writable;
|
|
49
49
|
};
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Extracts parameters encoded in the URL both in the query and fragment.
|
|
52
|
+
*/
|
|
53
|
+
export function parseParametersFromURL(href) {
|
|
54
|
+
const result = {};
|
|
55
|
+
const url = new URL(href);
|
|
56
|
+
if (url.hash && url.hash[0] === '#') {
|
|
57
|
+
try {
|
|
58
|
+
const hashSearchParams = new URLSearchParams(url.hash.substring(1));
|
|
59
|
+
hashSearchParams.forEach((value, key) => {
|
|
60
|
+
result[key] = value;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
catch (e) {
|
|
64
|
+
// hash is not a query string
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
// search parameters take precedence over hash parameters
|
|
68
|
+
url.searchParams.forEach((value, key) => {
|
|
69
|
+
result[key] = value;
|
|
70
|
+
});
|
|
71
|
+
return result;
|
|
62
72
|
}
|
|
63
73
|
export const resolveFetch = (customFetch) => {
|
|
64
74
|
let _fetch;
|
|
@@ -160,8 +170,8 @@ export function decodeJWTPayload(token) {
|
|
|
160
170
|
/**
|
|
161
171
|
* Creates a promise that resolves to null after some time.
|
|
162
172
|
*/
|
|
163
|
-
export function sleep(time) {
|
|
164
|
-
return new Promise((accept) => {
|
|
173
|
+
export async function sleep(time) {
|
|
174
|
+
return await new Promise((accept) => {
|
|
165
175
|
setTimeout(() => accept(null), time);
|
|
166
176
|
});
|
|
167
177
|
}
|
|
@@ -256,6 +266,7 @@ const STACK_GUARD_SUFFIX = `__`;
|
|
|
256
266
|
const STACK_ENTRY_REGEX = /__stack_guard__([a-zA-Z0-9_-]+)__/;
|
|
257
267
|
let STACK_GUARD_CHECKED = false;
|
|
258
268
|
let STACK_GUARD_CHECK_FN; // eslint-disable-line prefer-const
|
|
269
|
+
let STACK_GUARDS_SUPPORTED = false;
|
|
259
270
|
/**
|
|
260
271
|
* Checks if the current caller of the function is in a {@link
|
|
261
272
|
* #stackGuard} of the provided `name`. Works by looking through
|
|
@@ -307,8 +318,24 @@ export async function stackGuard(name, fn) {
|
|
|
307
318
|
// from minification processes as it is determined at runtime
|
|
308
319
|
[guardName]: async () => await fn(),
|
|
309
320
|
};
|
|
321
|
+
// Safari does not log the name of a dynamically named function unless you
|
|
322
|
+
// explicitly set the displayName
|
|
323
|
+
Object.assign(guardFunc[guardName], { displayName: guardName });
|
|
310
324
|
return await guardFunc[guardName]();
|
|
311
325
|
}
|
|
326
|
+
/**
|
|
327
|
+
* Returns if the JavaScript engine supports stack guards. If it doesn't
|
|
328
|
+
* certain features that depend on detecting recursive calls should be disabled
|
|
329
|
+
* to prevent deadlocks.
|
|
330
|
+
*/
|
|
331
|
+
export async function stackGuardsSupported() {
|
|
332
|
+
if (STACK_GUARD_CHECKED) {
|
|
333
|
+
return STACK_GUARDS_SUPPORTED;
|
|
334
|
+
}
|
|
335
|
+
await STACK_GUARD_CHECK_FN();
|
|
336
|
+
return STACK_GUARDS_SUPPORTED;
|
|
337
|
+
}
|
|
338
|
+
let STACK_GUARD_WARNING_LOGGED = false;
|
|
312
339
|
// In certain cases, if this file is transpiled using an ES2015 target, or is
|
|
313
340
|
// running in a JS engine that does not support async/await stack traces, this
|
|
314
341
|
// function will log a single warning message.
|
|
@@ -316,9 +343,14 @@ STACK_GUARD_CHECK_FN = async () => {
|
|
|
316
343
|
if (!STACK_GUARD_CHECKED) {
|
|
317
344
|
STACK_GUARD_CHECKED = true;
|
|
318
345
|
await stackGuard('ENV_CHECK', async () => {
|
|
346
|
+
// sleeping for the next tick as Safari loses track of the async/await
|
|
347
|
+
// trace beyond this point
|
|
348
|
+
await sleep(0);
|
|
319
349
|
const result = isInStackGuard('ENV_CHECK');
|
|
320
|
-
|
|
321
|
-
|
|
350
|
+
STACK_GUARDS_SUPPORTED = result;
|
|
351
|
+
if (!result && !STACK_GUARD_WARNING_LOGGED) {
|
|
352
|
+
STACK_GUARD_WARNING_LOGGED = true;
|
|
353
|
+
console.warn('@supabase/gotrue-js: Stack guards not supported in this environment. Generally not an issue but may point to a very conservative transpilation environment (use ES2017 or above) that implements async/await with generators, or this is a JavaScript engine that does not support async/await stack traces. Safari is known to not support stack guards.');
|
|
322
354
|
}
|
|
323
355
|
return result;
|
|
324
356
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AACA,MAAM,UAAU,SAAS,CAAC,SAAiB;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IAC7C,OAAO,OAAO,GAAG,SAAS,CAAA;AAC5B,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;QACxE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAChC,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QACpC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;IACvB,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,OAAO,QAAQ,KAAK,WAAW,CAAA;AAE9D,MAAM,sBAAsB,GAAG;IAC7B,MAAM,EAAE,KAAK;IACb,QAAQ,EAAE,KAAK;CAChB,CAAA;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,EAAE;IACvC,IAAI,CAAC,SAAS,EAAE,EAAE;QAChB,OAAO,KAAK,CAAA;KACb;IAED,IAAI;QACF,IAAI,OAAO,UAAU,CAAC,YAAY,KAAK,QAAQ,EAAE;YAC/C,OAAO,KAAK,CAAA;SACb;KACF;IAAC,OAAO,CAAC,EAAE;QACV,8CAA8C;QAC9C,OAAO,KAAK,CAAA;KACb;IAED,IAAI,sBAAsB,CAAC,MAAM,EAAE;QACjC,OAAO,sBAAsB,CAAC,QAAQ,CAAA;KACvC;IAED,MAAM,SAAS,GAAG,QAAQ,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,CAAA;IAEzD,IAAI;QACF,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;QACrD,UAAU,CAAC,YAAY,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;QAE7C,sBAAsB,CAAC,MAAM,GAAG,IAAI,CAAA;QACpC,sBAAsB,CAAC,QAAQ,GAAG,IAAI,CAAA;KACvC;IAAC,OAAO,CAAC,EAAE;QACV,mCAAmC;QACnC,+KAA+K;QAE/K,sBAAsB,CAAC,MAAM,GAAG,IAAI,CAAA;QACpC,sBAAsB,CAAC,QAAQ,GAAG,KAAK,CAAA;KACxC;IAED,OAAO,sBAAsB,CAAC,QAAQ,CAAA;AACxC,CAAC,CAAA;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "2.
|
|
1
|
+
export declare const version = "2.46.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/package.json
CHANGED
package/src/GoTrueClient.ts
CHANGED
|
@@ -18,7 +18,6 @@ import {
|
|
|
18
18
|
decodeJWTPayload,
|
|
19
19
|
Deferred,
|
|
20
20
|
getItemAsync,
|
|
21
|
-
getParameterByName,
|
|
22
21
|
isBrowser,
|
|
23
22
|
removeItemAsync,
|
|
24
23
|
resolveFetch,
|
|
@@ -31,6 +30,8 @@ import {
|
|
|
31
30
|
supportsLocalStorage,
|
|
32
31
|
stackGuard,
|
|
33
32
|
isInStackGuard,
|
|
33
|
+
stackGuardsSupported,
|
|
34
|
+
parseParametersFromURL,
|
|
34
35
|
} from './lib/helpers'
|
|
35
36
|
import localStorageAdapter from './lib/local-storage'
|
|
36
37
|
import { polyfillGlobalThis } from './lib/polyfills'
|
|
@@ -271,7 +272,7 @@ export default class GoTrueClient {
|
|
|
271
272
|
this._debug('#_initialize()', 'begin', 'is PKCE flow', isPKCEFlow)
|
|
272
273
|
|
|
273
274
|
if (isPKCEFlow || (this.detectSessionInUrl && this._isImplicitGrantFlow())) {
|
|
274
|
-
const { data, error } = await this.
|
|
275
|
+
const { data, error } = await this._getSessionFromURL(isPKCEFlow)
|
|
275
276
|
if (error) {
|
|
276
277
|
this._debug('#_initialize()', 'error detecting session from URL', error)
|
|
277
278
|
|
|
@@ -806,6 +807,15 @@ export default class GoTrueClient {
|
|
|
806
807
|
this._debug('#_acquireLock', 'begin', acquireTimeout)
|
|
807
808
|
|
|
808
809
|
try {
|
|
810
|
+
if (!(await stackGuardsSupported())) {
|
|
811
|
+
this._debug(
|
|
812
|
+
'#_acquireLock',
|
|
813
|
+
'Stack guards not supported, so exclusive locking is not performed as it can lead to deadlocks if the lock is attempted to be recursively acquired (as the recursion cannot be detected).'
|
|
814
|
+
)
|
|
815
|
+
|
|
816
|
+
return await fn()
|
|
817
|
+
}
|
|
818
|
+
|
|
809
819
|
if (isInStackGuard('_acquireLock')) {
|
|
810
820
|
this._debug('#_acquireLock', 'recursive call')
|
|
811
821
|
return await fn()
|
|
@@ -908,13 +918,13 @@ export default class GoTrueClient {
|
|
|
908
918
|
> {
|
|
909
919
|
this._debug('#__loadSession()', 'begin')
|
|
910
920
|
|
|
911
|
-
if (this.logDebugMessages && !isInStackGuard('_useSession')) {
|
|
921
|
+
if (this.logDebugMessages && !isInStackGuard('_useSession') && (await stackGuardsSupported())) {
|
|
912
922
|
throw new Error('Please use #_useSession()')
|
|
913
923
|
}
|
|
914
924
|
|
|
915
925
|
// make sure we've read the session from the url if there is one
|
|
916
926
|
// save to just await, as long we make sure _initialize() never throws
|
|
917
|
-
if (!isInStackGuard('_initialize')) {
|
|
927
|
+
if (!isInStackGuard('_initialize') && (await stackGuardsSupported())) {
|
|
918
928
|
// only wait when not called from within #_initialize() since it's
|
|
919
929
|
// waiting for itself. one such pathway is #_initialize() ->
|
|
920
930
|
// #_handleVisibilityChange() -> #_onVisbilityChanged() ->
|
|
@@ -1166,7 +1176,7 @@ export default class GoTrueClient {
|
|
|
1166
1176
|
/**
|
|
1167
1177
|
* Gets the session data from a URL string
|
|
1168
1178
|
*/
|
|
1169
|
-
private async
|
|
1179
|
+
private async _getSessionFromURL(isPKCEFlow: boolean): Promise<
|
|
1170
1180
|
| {
|
|
1171
1181
|
data: { session: Session; redirectType: string | null }
|
|
1172
1182
|
error: null
|
|
@@ -1180,62 +1190,68 @@ export default class GoTrueClient {
|
|
|
1180
1190
|
} else if (this.flowType == 'pkce' && !isPKCEFlow) {
|
|
1181
1191
|
throw new AuthPKCEGrantCodeExchangeError('Not a valid PKCE flow url.')
|
|
1182
1192
|
}
|
|
1193
|
+
|
|
1194
|
+
const params = parseParametersFromURL(window.location.href)
|
|
1195
|
+
|
|
1183
1196
|
if (isPKCEFlow) {
|
|
1184
|
-
|
|
1185
|
-
|
|
1186
|
-
const { data, error } = await this.exchangeCodeForSession(authCode)
|
|
1197
|
+
if (!params.code) throw new AuthPKCEGrantCodeExchangeError('No code detected.')
|
|
1198
|
+
const { data, error } = await this.exchangeCodeForSession(params.code)
|
|
1187
1199
|
if (error) throw error
|
|
1188
|
-
|
|
1189
|
-
|
|
1200
|
+
|
|
1201
|
+
const url = new URL(window.location.href)
|
|
1190
1202
|
url.searchParams.delete('code')
|
|
1203
|
+
|
|
1191
1204
|
window.history.replaceState(window.history.state, '', url.toString())
|
|
1205
|
+
|
|
1192
1206
|
return { data: { session: data.session, redirectType: null }, error: null }
|
|
1193
1207
|
}
|
|
1194
1208
|
|
|
1195
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
1200
|
-
|
|
1201
|
-
|
|
1202
|
-
|
|
1209
|
+
if (params.error || params.error_description || params.error_code) {
|
|
1210
|
+
throw new AuthImplicitGrantRedirectError(
|
|
1211
|
+
params.error_description || 'Error in URL with unspecified error_description',
|
|
1212
|
+
{
|
|
1213
|
+
error: params.error || 'unspecified_error',
|
|
1214
|
+
code: params.error_code || 'unspecified_code',
|
|
1215
|
+
}
|
|
1216
|
+
)
|
|
1203
1217
|
}
|
|
1204
1218
|
|
|
1205
|
-
const
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
if (!
|
|
1219
|
+
const {
|
|
1220
|
+
provider_token,
|
|
1221
|
+
provider_refresh_token,
|
|
1222
|
+
access_token,
|
|
1223
|
+
refresh_token,
|
|
1224
|
+
expires_in,
|
|
1225
|
+
token_type,
|
|
1226
|
+
} = params
|
|
1227
|
+
|
|
1228
|
+
if (!access_token || !expires_in || !refresh_token || !token_type) {
|
|
1229
|
+
throw new AuthImplicitGrantRedirectError('No session defined in URL')
|
|
1230
|
+
}
|
|
1215
1231
|
|
|
1216
1232
|
const timeNow = Math.round(Date.now() / 1000)
|
|
1217
|
-
const
|
|
1233
|
+
const expiresIn = parseInt(expires_in)
|
|
1234
|
+
const expires_at = timeNow + expiresIn
|
|
1218
1235
|
|
|
1219
1236
|
const { data, error } = await this.getUser(access_token)
|
|
1220
1237
|
if (error) throw error
|
|
1221
|
-
|
|
1238
|
+
|
|
1222
1239
|
const session: Session = {
|
|
1223
1240
|
provider_token,
|
|
1224
1241
|
provider_refresh_token,
|
|
1225
1242
|
access_token,
|
|
1226
|
-
expires_in:
|
|
1243
|
+
expires_in: expiresIn,
|
|
1227
1244
|
expires_at,
|
|
1228
1245
|
refresh_token,
|
|
1229
1246
|
token_type,
|
|
1230
|
-
user
|
|
1247
|
+
user: data.user!!,
|
|
1231
1248
|
}
|
|
1232
|
-
const redirectType = getParameterByName('type')
|
|
1233
1249
|
|
|
1234
1250
|
// Remove tokens from URL
|
|
1235
1251
|
window.location.hash = ''
|
|
1236
|
-
this._debug('#
|
|
1252
|
+
this._debug('#_getSessionFromURL()', 'clearing window.location.hash')
|
|
1237
1253
|
|
|
1238
|
-
return { data: { session, redirectType }, error: null }
|
|
1254
|
+
return { data: { session, redirectType: params.type }, error: null }
|
|
1239
1255
|
} catch (error) {
|
|
1240
1256
|
if (isAuthError(error)) {
|
|
1241
1257
|
return { data: { session: null, redirectType: null }, error }
|
|
@@ -1249,21 +1265,22 @@ export default class GoTrueClient {
|
|
|
1249
1265
|
* Checks if the current URL contains parameters given by an implicit oauth grant flow (https://www.rfc-editor.org/rfc/rfc6749.html#section-4.2)
|
|
1250
1266
|
*/
|
|
1251
1267
|
private _isImplicitGrantFlow(): boolean {
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
Boolean(getParameterByName('error_description')))
|
|
1256
|
-
)
|
|
1268
|
+
const params = parseParametersFromURL(window.location.href)
|
|
1269
|
+
|
|
1270
|
+
return !!(isBrowser() && (params.access_token || params.error_description))
|
|
1257
1271
|
}
|
|
1258
1272
|
/**
|
|
1259
1273
|
* Checks if the current URL and backing storage contain parameters given by a PKCE flow
|
|
1260
1274
|
*/
|
|
1261
1275
|
private async _isPKCEFlow(): Promise<boolean> {
|
|
1276
|
+
const params = parseParametersFromURL(window.location.href)
|
|
1277
|
+
|
|
1262
1278
|
const currentStorageContent = await getItemAsync(
|
|
1263
1279
|
this.storage,
|
|
1264
1280
|
`${this.storageKey}-code-verifier`
|
|
1265
1281
|
)
|
|
1266
|
-
|
|
1282
|
+
|
|
1283
|
+
return !!(params.code && currentStorageContent)
|
|
1267
1284
|
}
|
|
1268
1285
|
|
|
1269
1286
|
/**
|
package/src/lib/helpers.ts
CHANGED
|
@@ -59,15 +59,31 @@ export const supportsLocalStorage = () => {
|
|
|
59
59
|
return localStorageWriteTests.writable
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Extracts parameters encoded in the URL both in the query and fragment.
|
|
64
|
+
*/
|
|
65
|
+
export function parseParametersFromURL(href: string) {
|
|
66
|
+
const result: { [parameter: string]: string } = {}
|
|
67
|
+
|
|
68
|
+
const url = new URL(href)
|
|
69
|
+
|
|
70
|
+
if (url.hash && url.hash[0] === '#') {
|
|
71
|
+
try {
|
|
72
|
+
const hashSearchParams = new URLSearchParams(url.hash.substring(1))
|
|
73
|
+
hashSearchParams.forEach((value, key) => {
|
|
74
|
+
result[key] = value
|
|
75
|
+
})
|
|
76
|
+
} catch (e: any) {
|
|
77
|
+
// hash is not a query string
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// search parameters take precedence over hash parameters
|
|
82
|
+
url.searchParams.forEach((value, key) => {
|
|
83
|
+
result[key] = value
|
|
84
|
+
})
|
|
85
|
+
|
|
86
|
+
return result
|
|
71
87
|
}
|
|
72
88
|
|
|
73
89
|
type Fetch = typeof fetch
|
|
@@ -197,8 +213,8 @@ export function decodeJWTPayload(token: string) {
|
|
|
197
213
|
/**
|
|
198
214
|
* Creates a promise that resolves to null after some time.
|
|
199
215
|
*/
|
|
200
|
-
export function sleep(time: number): Promise<null> {
|
|
201
|
-
return new Promise((accept) => {
|
|
216
|
+
export async function sleep(time: number): Promise<null> {
|
|
217
|
+
return await new Promise((accept) => {
|
|
202
218
|
setTimeout(() => accept(null), time)
|
|
203
219
|
})
|
|
204
220
|
}
|
|
@@ -309,6 +325,8 @@ const STACK_ENTRY_REGEX = /__stack_guard__([a-zA-Z0-9_-]+)__/
|
|
|
309
325
|
let STACK_GUARD_CHECKED = false
|
|
310
326
|
let STACK_GUARD_CHECK_FN: () => Promise<void> // eslint-disable-line prefer-const
|
|
311
327
|
|
|
328
|
+
let STACK_GUARDS_SUPPORTED = false
|
|
329
|
+
|
|
312
330
|
/**
|
|
313
331
|
* Checks if the current caller of the function is in a {@link
|
|
314
332
|
* #stackGuard} of the provided `name`. Works by looking through
|
|
@@ -370,9 +388,30 @@ export async function stackGuard<R>(name: string, fn: () => Promise<R>): Promise
|
|
|
370
388
|
[guardName]: async () => await fn(),
|
|
371
389
|
}
|
|
372
390
|
|
|
391
|
+
// Safari does not log the name of a dynamically named function unless you
|
|
392
|
+
// explicitly set the displayName
|
|
393
|
+
Object.assign(guardFunc[guardName], { displayName: guardName })
|
|
394
|
+
|
|
373
395
|
return await guardFunc[guardName]()
|
|
374
396
|
}
|
|
375
397
|
|
|
398
|
+
/**
|
|
399
|
+
* Returns if the JavaScript engine supports stack guards. If it doesn't
|
|
400
|
+
* certain features that depend on detecting recursive calls should be disabled
|
|
401
|
+
* to prevent deadlocks.
|
|
402
|
+
*/
|
|
403
|
+
export async function stackGuardsSupported(): Promise<boolean> {
|
|
404
|
+
if (STACK_GUARD_CHECKED) {
|
|
405
|
+
return STACK_GUARDS_SUPPORTED
|
|
406
|
+
}
|
|
407
|
+
|
|
408
|
+
await STACK_GUARD_CHECK_FN()
|
|
409
|
+
|
|
410
|
+
return STACK_GUARDS_SUPPORTED
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
let STACK_GUARD_WARNING_LOGGED = false
|
|
414
|
+
|
|
376
415
|
// In certain cases, if this file is transpiled using an ES2015 target, or is
|
|
377
416
|
// running in a JS engine that does not support async/await stack traces, this
|
|
378
417
|
// function will log a single warning message.
|
|
@@ -381,11 +420,17 @@ STACK_GUARD_CHECK_FN = async () => {
|
|
|
381
420
|
STACK_GUARD_CHECKED = true
|
|
382
421
|
|
|
383
422
|
await stackGuard('ENV_CHECK', async () => {
|
|
423
|
+
// sleeping for the next tick as Safari loses track of the async/await
|
|
424
|
+
// trace beyond this point
|
|
425
|
+
await sleep(0)
|
|
426
|
+
|
|
384
427
|
const result = isInStackGuard('ENV_CHECK')
|
|
428
|
+
STACK_GUARDS_SUPPORTED = result
|
|
385
429
|
|
|
386
|
-
if (!result) {
|
|
430
|
+
if (!result && !STACK_GUARD_WARNING_LOGGED) {
|
|
431
|
+
STACK_GUARD_WARNING_LOGGED = true
|
|
387
432
|
console.warn(
|
|
388
|
-
'@supabase/gotrue-js: Stack guards not supported in this environment. Generally not an issue but may point to a very conservative transpilation environment (use ES2017 or above) that implements async/await with generators, or this is a JavaScript engine that does not support async/await stack traces.'
|
|
433
|
+
'@supabase/gotrue-js: Stack guards not supported in this environment. Generally not an issue but may point to a very conservative transpilation environment (use ES2017 or above) that implements async/await with generators, or this is a JavaScript engine that does not support async/await stack traces. Safari is known to not support stack guards.'
|
|
389
434
|
)
|
|
390
435
|
}
|
|
391
436
|
|
package/src/lib/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '2.
|
|
2
|
+
export const version = '2.46.0'
|