@supabase/gotrue-js 2.45.0 → 2.46.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/dist/main/GoTrueClient.d.ts +1 -1
- package/dist/main/GoTrueClient.d.ts.map +1 -1
- package/dist/main/GoTrueClient.js +66 -73
- package/dist/main/GoTrueClient.js.map +1 -1
- package/dist/main/lib/helpers.d.ts +6 -1
- package/dist/main/lib/helpers.d.ts.map +1 -1
- package/dist/main/lib/helpers.js +24 -14
- 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 +67 -74
- package/dist/module/GoTrueClient.js.map +1 -1
- package/dist/module/lib/helpers.d.ts +6 -1
- package/dist/module/lib/helpers.d.ts.map +1 -1
- package/dist/module/lib/helpers.js +22 -12
- 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 +94 -73
- package/src/lib/helpers.ts +25 -9
- 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;
|
|
@@ -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.1";
|
|
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,
|
|
@@ -32,9 +31,11 @@ import {
|
|
|
32
31
|
stackGuard,
|
|
33
32
|
isInStackGuard,
|
|
34
33
|
stackGuardsSupported,
|
|
34
|
+
parseParametersFromURL,
|
|
35
35
|
} from './lib/helpers'
|
|
36
36
|
import localStorageAdapter from './lib/local-storage'
|
|
37
37
|
import { polyfillGlobalThis } from './lib/polyfills'
|
|
38
|
+
import { version } from './lib/version'
|
|
38
39
|
|
|
39
40
|
import type {
|
|
40
41
|
AuthChangeEvent,
|
|
@@ -233,7 +234,10 @@ export default class GoTrueClient {
|
|
|
233
234
|
|
|
234
235
|
private _debug(...args: any[]): GoTrueClient {
|
|
235
236
|
if (this.logDebugMessages) {
|
|
236
|
-
console.log(
|
|
237
|
+
console.log(
|
|
238
|
+
`GoTrueClient@${this.instanceID} (${version}) ${new Date().toISOString()}`,
|
|
239
|
+
...args
|
|
240
|
+
)
|
|
237
241
|
}
|
|
238
242
|
|
|
239
243
|
return this
|
|
@@ -272,7 +276,7 @@ export default class GoTrueClient {
|
|
|
272
276
|
this._debug('#_initialize()', 'begin', 'is PKCE flow', isPKCEFlow)
|
|
273
277
|
|
|
274
278
|
if (isPKCEFlow || (this.detectSessionInUrl && this._isImplicitGrantFlow())) {
|
|
275
|
-
const { data, error } = await this.
|
|
279
|
+
const { data, error } = await this._getSessionFromURL(isPKCEFlow)
|
|
276
280
|
if (error) {
|
|
277
281
|
this._debug('#_initialize()', 'error detecting session from URL', error)
|
|
278
282
|
|
|
@@ -922,16 +926,14 @@ export default class GoTrueClient {
|
|
|
922
926
|
throw new Error('Please use #_useSession()')
|
|
923
927
|
}
|
|
924
928
|
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
if (!isInStackGuard('_initialize') && (await stackGuardsSupported())) {
|
|
928
|
-
// only wait when not called from within #_initialize() since it's
|
|
929
|
-
// waiting for itself. one such pathway is #_initialize() ->
|
|
930
|
-
// #_handleVisibilityChange() -> #_onVisbilityChanged() ->
|
|
931
|
-
// #_loadSession().
|
|
932
|
-
await this.initializePromise
|
|
929
|
+
if (isInStackGuard('_initialize')) {
|
|
930
|
+
this._debug('#__loadSession', '#_initialize recursion detected', new Error().stack)
|
|
933
931
|
}
|
|
934
932
|
|
|
933
|
+
// always wait for #_initialize() to finish before loading anything from
|
|
934
|
+
// storage
|
|
935
|
+
await this.initializePromise
|
|
936
|
+
|
|
935
937
|
try {
|
|
936
938
|
let currentSession: Session | null = null
|
|
937
939
|
|
|
@@ -989,20 +991,23 @@ export default class GoTrueClient {
|
|
|
989
991
|
*/
|
|
990
992
|
async getUser(jwt?: string): Promise<UserResponse> {
|
|
991
993
|
try {
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
994
|
+
if (jwt) {
|
|
995
|
+
return await _request(this.fetch, 'GET', `${this.url}/user`, {
|
|
996
|
+
headers: this.headers,
|
|
997
|
+
jwt: jwt,
|
|
998
|
+
xform: _userResponse,
|
|
999
|
+
})
|
|
1000
|
+
}
|
|
998
1001
|
|
|
999
|
-
|
|
1000
|
-
|
|
1002
|
+
return await this._useSession(async (result) => {
|
|
1003
|
+
const { data, error } = result
|
|
1004
|
+
if (error) {
|
|
1005
|
+
throw error
|
|
1001
1006
|
}
|
|
1002
1007
|
|
|
1003
1008
|
return await _request(this.fetch, 'GET', `${this.url}/user`, {
|
|
1004
1009
|
headers: this.headers,
|
|
1005
|
-
jwt:
|
|
1010
|
+
jwt: data.session?.access_token ?? undefined,
|
|
1006
1011
|
xform: _userResponse,
|
|
1007
1012
|
})
|
|
1008
1013
|
})
|
|
@@ -1176,7 +1181,7 @@ export default class GoTrueClient {
|
|
|
1176
1181
|
/**
|
|
1177
1182
|
* Gets the session data from a URL string
|
|
1178
1183
|
*/
|
|
1179
|
-
private async
|
|
1184
|
+
private async _getSessionFromURL(isPKCEFlow: boolean): Promise<
|
|
1180
1185
|
| {
|
|
1181
1186
|
data: { session: Session; redirectType: string | null }
|
|
1182
1187
|
error: null
|
|
@@ -1190,62 +1195,68 @@ export default class GoTrueClient {
|
|
|
1190
1195
|
} else if (this.flowType == 'pkce' && !isPKCEFlow) {
|
|
1191
1196
|
throw new AuthPKCEGrantCodeExchangeError('Not a valid PKCE flow url.')
|
|
1192
1197
|
}
|
|
1198
|
+
|
|
1199
|
+
const params = parseParametersFromURL(window.location.href)
|
|
1200
|
+
|
|
1193
1201
|
if (isPKCEFlow) {
|
|
1194
|
-
|
|
1195
|
-
|
|
1196
|
-
const { data, error } = await this.exchangeCodeForSession(authCode)
|
|
1202
|
+
if (!params.code) throw new AuthPKCEGrantCodeExchangeError('No code detected.')
|
|
1203
|
+
const { data, error } = await this.exchangeCodeForSession(params.code)
|
|
1197
1204
|
if (error) throw error
|
|
1198
|
-
|
|
1199
|
-
|
|
1205
|
+
|
|
1206
|
+
const url = new URL(window.location.href)
|
|
1200
1207
|
url.searchParams.delete('code')
|
|
1208
|
+
|
|
1201
1209
|
window.history.replaceState(window.history.state, '', url.toString())
|
|
1210
|
+
|
|
1202
1211
|
return { data: { session: data.session, redirectType: null }, error: null }
|
|
1203
1212
|
}
|
|
1204
1213
|
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
|
|
1211
|
-
|
|
1212
|
-
|
|
1214
|
+
if (params.error || params.error_description || params.error_code) {
|
|
1215
|
+
throw new AuthImplicitGrantRedirectError(
|
|
1216
|
+
params.error_description || 'Error in URL with unspecified error_description',
|
|
1217
|
+
{
|
|
1218
|
+
error: params.error || 'unspecified_error',
|
|
1219
|
+
code: params.error_code || 'unspecified_code',
|
|
1220
|
+
}
|
|
1221
|
+
)
|
|
1213
1222
|
}
|
|
1214
1223
|
|
|
1215
|
-
const
|
|
1216
|
-
|
|
1217
|
-
|
|
1218
|
-
|
|
1219
|
-
|
|
1220
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
if (!
|
|
1224
|
+
const {
|
|
1225
|
+
provider_token,
|
|
1226
|
+
provider_refresh_token,
|
|
1227
|
+
access_token,
|
|
1228
|
+
refresh_token,
|
|
1229
|
+
expires_in,
|
|
1230
|
+
token_type,
|
|
1231
|
+
} = params
|
|
1232
|
+
|
|
1233
|
+
if (!access_token || !expires_in || !refresh_token || !token_type) {
|
|
1234
|
+
throw new AuthImplicitGrantRedirectError('No session defined in URL')
|
|
1235
|
+
}
|
|
1225
1236
|
|
|
1226
1237
|
const timeNow = Math.round(Date.now() / 1000)
|
|
1227
|
-
const
|
|
1238
|
+
const expiresIn = parseInt(expires_in)
|
|
1239
|
+
const expires_at = timeNow + expiresIn
|
|
1228
1240
|
|
|
1229
1241
|
const { data, error } = await this.getUser(access_token)
|
|
1230
1242
|
if (error) throw error
|
|
1231
|
-
|
|
1243
|
+
|
|
1232
1244
|
const session: Session = {
|
|
1233
1245
|
provider_token,
|
|
1234
1246
|
provider_refresh_token,
|
|
1235
1247
|
access_token,
|
|
1236
|
-
expires_in:
|
|
1248
|
+
expires_in: expiresIn,
|
|
1237
1249
|
expires_at,
|
|
1238
1250
|
refresh_token,
|
|
1239
1251
|
token_type,
|
|
1240
|
-
user
|
|
1252
|
+
user: data.user!!,
|
|
1241
1253
|
}
|
|
1242
|
-
const redirectType = getParameterByName('type')
|
|
1243
1254
|
|
|
1244
1255
|
// Remove tokens from URL
|
|
1245
1256
|
window.location.hash = ''
|
|
1246
|
-
this._debug('#
|
|
1257
|
+
this._debug('#_getSessionFromURL()', 'clearing window.location.hash')
|
|
1247
1258
|
|
|
1248
|
-
return { data: { session, redirectType }, error: null }
|
|
1259
|
+
return { data: { session, redirectType: params.type }, error: null }
|
|
1249
1260
|
} catch (error) {
|
|
1250
1261
|
if (isAuthError(error)) {
|
|
1251
1262
|
return { data: { session: null, redirectType: null }, error }
|
|
@@ -1259,21 +1270,22 @@ export default class GoTrueClient {
|
|
|
1259
1270
|
* 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)
|
|
1260
1271
|
*/
|
|
1261
1272
|
private _isImplicitGrantFlow(): boolean {
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
Boolean(getParameterByName('error_description')))
|
|
1266
|
-
)
|
|
1273
|
+
const params = parseParametersFromURL(window.location.href)
|
|
1274
|
+
|
|
1275
|
+
return !!(isBrowser() && (params.access_token || params.error_description))
|
|
1267
1276
|
}
|
|
1268
1277
|
/**
|
|
1269
1278
|
* Checks if the current URL and backing storage contain parameters given by a PKCE flow
|
|
1270
1279
|
*/
|
|
1271
1280
|
private async _isPKCEFlow(): Promise<boolean> {
|
|
1281
|
+
const params = parseParametersFromURL(window.location.href)
|
|
1282
|
+
|
|
1272
1283
|
const currentStorageContent = await getItemAsync(
|
|
1273
1284
|
this.storage,
|
|
1274
1285
|
`${this.storageKey}-code-verifier`
|
|
1275
1286
|
)
|
|
1276
|
-
|
|
1287
|
+
|
|
1288
|
+
return !!(params.code && currentStorageContent)
|
|
1277
1289
|
}
|
|
1278
1290
|
|
|
1279
1291
|
/**
|
|
@@ -1713,8 +1725,13 @@ export default class GoTrueClient {
|
|
|
1713
1725
|
Deno.unrefTimer(ticker)
|
|
1714
1726
|
}
|
|
1715
1727
|
|
|
1716
|
-
// run the tick immediately
|
|
1717
|
-
|
|
1728
|
+
// run the tick immediately, but in the next pass of the event loop so that
|
|
1729
|
+
// #_initialize can be allowed to complete without recursively waiting on
|
|
1730
|
+
// itself
|
|
1731
|
+
setTimeout(async () => {
|
|
1732
|
+
await this.initializePromise
|
|
1733
|
+
await this._autoRefreshTokenTick()
|
|
1734
|
+
}, 0)
|
|
1718
1735
|
}
|
|
1719
1736
|
|
|
1720
1737
|
/**
|
|
@@ -1851,22 +1868,26 @@ export default class GoTrueClient {
|
|
|
1851
1868
|
this._debug(`#_onVisibilityChanged(${isInitial})`, 'visibilityState', document.visibilityState)
|
|
1852
1869
|
|
|
1853
1870
|
if (document.visibilityState === 'visible') {
|
|
1854
|
-
|
|
1855
|
-
|
|
1856
|
-
|
|
1857
|
-
|
|
1871
|
+
// to avoid recursively depending on #_initialize(), run the visibility
|
|
1872
|
+
// changed callback in the next event loop tick
|
|
1873
|
+
setTimeout(async () => {
|
|
1874
|
+
if (!isInitial) {
|
|
1875
|
+
// initial visibility change setup is handled in another flow under #initialize()
|
|
1876
|
+
await this.initializePromise
|
|
1877
|
+
await this._recoverAndRefresh()
|
|
1858
1878
|
|
|
1859
|
-
|
|
1860
|
-
|
|
1861
|
-
|
|
1862
|
-
|
|
1863
|
-
|
|
1879
|
+
this._debug(
|
|
1880
|
+
'#_onVisibilityChanged()',
|
|
1881
|
+
'finished waiting for initialize, _recoverAndRefresh'
|
|
1882
|
+
)
|
|
1883
|
+
}
|
|
1864
1884
|
|
|
1865
|
-
|
|
1866
|
-
|
|
1867
|
-
|
|
1868
|
-
|
|
1869
|
-
|
|
1885
|
+
if (this.autoRefreshToken) {
|
|
1886
|
+
// in browser environments the refresh token ticker runs only on focused tabs
|
|
1887
|
+
// which prevents race conditions
|
|
1888
|
+
this._startAutoRefresh()
|
|
1889
|
+
}
|
|
1890
|
+
}, 0)
|
|
1870
1891
|
} else if (document.visibilityState === 'hidden') {
|
|
1871
1892
|
if (this.autoRefreshToken) {
|
|
1872
1893
|
this._stopAutoRefresh()
|
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
|
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.1'
|