@supabase/auth-js 2.58.1-canary.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.
Files changed (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +148 -0
  3. package/dist/main/AuthAdminApi.d.ts +4 -0
  4. package/dist/main/AuthAdminApi.d.ts.map +1 -0
  5. package/dist/main/AuthAdminApi.js +9 -0
  6. package/dist/main/AuthAdminApi.js.map +1 -0
  7. package/dist/main/AuthClient.d.ts +4 -0
  8. package/dist/main/AuthClient.d.ts.map +1 -0
  9. package/dist/main/AuthClient.js +9 -0
  10. package/dist/main/AuthClient.js.map +1 -0
  11. package/dist/main/GoTrueAdminApi.d.ts +99 -0
  12. package/dist/main/GoTrueAdminApi.d.ts.map +1 -0
  13. package/dist/main/GoTrueAdminApi.js +278 -0
  14. package/dist/main/GoTrueAdminApi.js.map +1 -0
  15. package/dist/main/GoTrueClient.d.ts +531 -0
  16. package/dist/main/GoTrueClient.d.ts.map +1 -0
  17. package/dist/main/GoTrueClient.js +2564 -0
  18. package/dist/main/GoTrueClient.js.map +1 -0
  19. package/dist/main/index.d.ts +9 -0
  20. package/dist/main/index.d.ts.map +1 -0
  21. package/dist/main/index.js +36 -0
  22. package/dist/main/index.js.map +1 -0
  23. package/dist/main/lib/base64url.d.ts +76 -0
  24. package/dist/main/lib/base64url.d.ts.map +1 -0
  25. package/dist/main/lib/base64url.js +269 -0
  26. package/dist/main/lib/base64url.js.map +1 -0
  27. package/dist/main/lib/constants.d.ts +26 -0
  28. package/dist/main/lib/constants.d.ts.map +1 -0
  29. package/dist/main/lib/constants.js +31 -0
  30. package/dist/main/lib/constants.js.map +1 -0
  31. package/dist/main/lib/error-codes.d.ts +7 -0
  32. package/dist/main/lib/error-codes.d.ts.map +1 -0
  33. package/dist/main/lib/error-codes.js +3 -0
  34. package/dist/main/lib/error-codes.js.map +1 -0
  35. package/dist/main/lib/errors.d.ts +100 -0
  36. package/dist/main/lib/errors.d.ts.map +1 -0
  37. package/dist/main/lib/errors.js +137 -0
  38. package/dist/main/lib/errors.js.map +1 -0
  39. package/dist/main/lib/fetch.d.ts +34 -0
  40. package/dist/main/lib/fetch.d.ts.map +1 -0
  41. package/dist/main/lib/fetch.js +194 -0
  42. package/dist/main/lib/fetch.js.map +1 -0
  43. package/dist/main/lib/helpers.d.ts +67 -0
  44. package/dist/main/lib/helpers.d.ts.map +1 -0
  45. package/dist/main/lib/helpers.js +388 -0
  46. package/dist/main/lib/helpers.js.map +1 -0
  47. package/dist/main/lib/local-storage.d.ts +9 -0
  48. package/dist/main/lib/local-storage.d.ts.map +1 -0
  49. package/dist/main/lib/local-storage.js +21 -0
  50. package/dist/main/lib/local-storage.js.map +1 -0
  51. package/dist/main/lib/locks.d.ts +64 -0
  52. package/dist/main/lib/locks.d.ts.map +1 -0
  53. package/dist/main/lib/locks.js +187 -0
  54. package/dist/main/lib/locks.js.map +1 -0
  55. package/dist/main/lib/polyfills.d.ts +5 -0
  56. package/dist/main/lib/polyfills.d.ts.map +1 -0
  57. package/dist/main/lib/polyfills.js +29 -0
  58. package/dist/main/lib/polyfills.js.map +1 -0
  59. package/dist/main/lib/types.d.ts +1130 -0
  60. package/dist/main/lib/types.d.ts.map +1 -0
  61. package/dist/main/lib/types.js +22 -0
  62. package/dist/main/lib/types.js.map +1 -0
  63. package/dist/main/lib/version.d.ts +2 -0
  64. package/dist/main/lib/version.d.ts.map +1 -0
  65. package/dist/main/lib/version.js +11 -0
  66. package/dist/main/lib/version.js.map +1 -0
  67. package/dist/main/lib/web3/ethereum.d.ts +96 -0
  68. package/dist/main/lib/web3/ethereum.d.ts.map +1 -0
  69. package/dist/main/lib/web3/ethereum.js +66 -0
  70. package/dist/main/lib/web3/ethereum.js.map +1 -0
  71. package/dist/main/lib/web3/solana.d.ts +160 -0
  72. package/dist/main/lib/web3/solana.d.ts.map +1 -0
  73. package/dist/main/lib/web3/solana.js +4 -0
  74. package/dist/main/lib/web3/solana.js.map +1 -0
  75. package/dist/main/lib/webauthn.d.ts +274 -0
  76. package/dist/main/lib/webauthn.d.ts.map +1 -0
  77. package/dist/main/lib/webauthn.dom.d.ts +583 -0
  78. package/dist/main/lib/webauthn.dom.d.ts.map +1 -0
  79. package/dist/main/lib/webauthn.dom.js +4 -0
  80. package/dist/main/lib/webauthn.dom.js.map +1 -0
  81. package/dist/main/lib/webauthn.errors.d.ts +80 -0
  82. package/dist/main/lib/webauthn.errors.d.ts.map +1 -0
  83. package/dist/main/lib/webauthn.errors.js +265 -0
  84. package/dist/main/lib/webauthn.errors.js.map +1 -0
  85. package/dist/main/lib/webauthn.js +702 -0
  86. package/dist/main/lib/webauthn.js.map +1 -0
  87. package/dist/module/AuthAdminApi.d.ts +4 -0
  88. package/dist/module/AuthAdminApi.d.ts.map +1 -0
  89. package/dist/module/AuthAdminApi.js +4 -0
  90. package/dist/module/AuthAdminApi.js.map +1 -0
  91. package/dist/module/AuthClient.d.ts +4 -0
  92. package/dist/module/AuthClient.d.ts.map +1 -0
  93. package/dist/module/AuthClient.js +4 -0
  94. package/dist/module/AuthClient.js.map +1 -0
  95. package/dist/module/GoTrueAdminApi.d.ts +99 -0
  96. package/dist/module/GoTrueAdminApi.d.ts.map +1 -0
  97. package/dist/module/GoTrueAdminApi.js +275 -0
  98. package/dist/module/GoTrueAdminApi.js.map +1 -0
  99. package/dist/module/GoTrueClient.d.ts +531 -0
  100. package/dist/module/GoTrueClient.d.ts.map +1 -0
  101. package/dist/module/GoTrueClient.js +2559 -0
  102. package/dist/module/GoTrueClient.js.map +1 -0
  103. package/dist/module/index.d.ts +9 -0
  104. package/dist/module/index.d.ts.map +1 -0
  105. package/dist/module/index.js +9 -0
  106. package/dist/module/index.js.map +1 -0
  107. package/dist/module/lib/base64url.d.ts +76 -0
  108. package/dist/module/lib/base64url.d.ts.map +1 -0
  109. package/dist/module/lib/base64url.js +257 -0
  110. package/dist/module/lib/base64url.js.map +1 -0
  111. package/dist/module/lib/constants.d.ts +26 -0
  112. package/dist/module/lib/constants.d.ts.map +1 -0
  113. package/dist/module/lib/constants.js +28 -0
  114. package/dist/module/lib/constants.js.map +1 -0
  115. package/dist/module/lib/error-codes.d.ts +7 -0
  116. package/dist/module/lib/error-codes.d.ts.map +1 -0
  117. package/dist/module/lib/error-codes.js +2 -0
  118. package/dist/module/lib/error-codes.js.map +1 -0
  119. package/dist/module/lib/errors.d.ts +100 -0
  120. package/dist/module/lib/errors.d.ts.map +1 -0
  121. package/dist/module/lib/errors.js +116 -0
  122. package/dist/module/lib/errors.js.map +1 -0
  123. package/dist/module/lib/fetch.d.ts +34 -0
  124. package/dist/module/lib/fetch.d.ts.map +1 -0
  125. package/dist/module/lib/fetch.js +184 -0
  126. package/dist/module/lib/fetch.js.map +1 -0
  127. package/dist/module/lib/helpers.d.ts +67 -0
  128. package/dist/module/lib/helpers.d.ts.map +1 -0
  129. package/dist/module/lib/helpers.js +329 -0
  130. package/dist/module/lib/helpers.js.map +1 -0
  131. package/dist/module/lib/local-storage.d.ts +9 -0
  132. package/dist/module/lib/local-storage.d.ts.map +1 -0
  133. package/dist/module/lib/local-storage.js +18 -0
  134. package/dist/module/lib/local-storage.js.map +1 -0
  135. package/dist/module/lib/locks.d.ts +64 -0
  136. package/dist/module/lib/locks.d.ts.map +1 -0
  137. package/dist/module/lib/locks.js +179 -0
  138. package/dist/module/lib/locks.js.map +1 -0
  139. package/dist/module/lib/polyfills.d.ts +5 -0
  140. package/dist/module/lib/polyfills.d.ts.map +1 -0
  141. package/dist/module/lib/polyfills.js +26 -0
  142. package/dist/module/lib/polyfills.js.map +1 -0
  143. package/dist/module/lib/types.d.ts +1130 -0
  144. package/dist/module/lib/types.d.ts.map +1 -0
  145. package/dist/module/lib/types.js +19 -0
  146. package/dist/module/lib/types.js.map +1 -0
  147. package/dist/module/lib/version.d.ts +2 -0
  148. package/dist/module/lib/version.d.ts.map +1 -0
  149. package/dist/module/lib/version.js +8 -0
  150. package/dist/module/lib/version.js.map +1 -0
  151. package/dist/module/lib/web3/ethereum.d.ts +96 -0
  152. package/dist/module/lib/web3/ethereum.d.ts.map +1 -0
  153. package/dist/module/lib/web3/ethereum.js +60 -0
  154. package/dist/module/lib/web3/ethereum.js.map +1 -0
  155. package/dist/module/lib/web3/solana.d.ts +160 -0
  156. package/dist/module/lib/web3/solana.d.ts.map +1 -0
  157. package/dist/module/lib/web3/solana.js +3 -0
  158. package/dist/module/lib/web3/solana.js.map +1 -0
  159. package/dist/module/lib/webauthn.d.ts +274 -0
  160. package/dist/module/lib/webauthn.d.ts.map +1 -0
  161. package/dist/module/lib/webauthn.dom.d.ts +583 -0
  162. package/dist/module/lib/webauthn.dom.d.ts.map +1 -0
  163. package/dist/module/lib/webauthn.dom.js +3 -0
  164. package/dist/module/lib/webauthn.dom.js.map +1 -0
  165. package/dist/module/lib/webauthn.errors.d.ts +80 -0
  166. package/dist/module/lib/webauthn.errors.d.ts.map +1 -0
  167. package/dist/module/lib/webauthn.errors.js +257 -0
  168. package/dist/module/lib/webauthn.errors.js.map +1 -0
  169. package/dist/module/lib/webauthn.js +685 -0
  170. package/dist/module/lib/webauthn.js.map +1 -0
  171. package/package.json +49 -0
  172. package/src/AuthAdminApi.ts +5 -0
  173. package/src/AuthClient.ts +5 -0
  174. package/src/GoTrueAdminApi.ts +352 -0
  175. package/src/GoTrueClient.ts +3483 -0
  176. package/src/index.ts +13 -0
  177. package/src/lib/base64url.ts +308 -0
  178. package/src/lib/constants.ts +34 -0
  179. package/src/lib/error-codes.ts +90 -0
  180. package/src/lib/errors.ts +165 -0
  181. package/src/lib/fetch.ts +283 -0
  182. package/src/lib/helpers.ts +416 -0
  183. package/src/lib/local-storage.ts +21 -0
  184. package/src/lib/locks.ts +225 -0
  185. package/src/lib/polyfills.ts +23 -0
  186. package/src/lib/types.ts +1450 -0
  187. package/src/lib/version.ts +7 -0
  188. package/src/lib/web3/ethereum.ts +184 -0
  189. package/src/lib/web3/solana.ts +186 -0
  190. package/src/lib/webauthn.dom.ts +636 -0
  191. package/src/lib/webauthn.errors.ts +317 -0
  192. package/src/lib/webauthn.ts +929 -0
@@ -0,0 +1,329 @@
1
+ import { API_VERSION_HEADER_NAME, BASE64URL_REGEX } from './constants';
2
+ import { AuthInvalidJwtError } from './errors';
3
+ import { base64UrlToUint8Array, stringFromBase64URL } from './base64url';
4
+ export function expiresAt(expiresIn) {
5
+ const timeNow = Math.round(Date.now() / 1000);
6
+ return timeNow + expiresIn;
7
+ }
8
+ export function uuid() {
9
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
10
+ const r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
11
+ return v.toString(16);
12
+ });
13
+ }
14
+ export const isBrowser = () => typeof window !== 'undefined' && typeof document !== 'undefined';
15
+ const localStorageWriteTests = {
16
+ tested: false,
17
+ writable: false,
18
+ };
19
+ /**
20
+ * Checks whether localStorage is supported on this browser.
21
+ */
22
+ export const supportsLocalStorage = () => {
23
+ if (!isBrowser()) {
24
+ return false;
25
+ }
26
+ try {
27
+ if (typeof globalThis.localStorage !== 'object') {
28
+ return false;
29
+ }
30
+ }
31
+ catch (e) {
32
+ // DOM exception when accessing `localStorage`
33
+ return false;
34
+ }
35
+ if (localStorageWriteTests.tested) {
36
+ return localStorageWriteTests.writable;
37
+ }
38
+ const randomKey = `lswt-${Math.random()}${Math.random()}`;
39
+ try {
40
+ globalThis.localStorage.setItem(randomKey, randomKey);
41
+ globalThis.localStorage.removeItem(randomKey);
42
+ localStorageWriteTests.tested = true;
43
+ localStorageWriteTests.writable = true;
44
+ }
45
+ catch (e) {
46
+ // localStorage can't be written to
47
+ // https://www.chromium.org/for-testers/bug-reporting-guidelines/uncaught-securityerror-failed-to-read-the-localstorage-property-from-window-access-is-denied-for-this-document
48
+ localStorageWriteTests.tested = true;
49
+ localStorageWriteTests.writable = false;
50
+ }
51
+ return localStorageWriteTests.writable;
52
+ };
53
+ /**
54
+ * Extracts parameters encoded in the URL both in the query and fragment.
55
+ */
56
+ export function parseParametersFromURL(href) {
57
+ const result = {};
58
+ const url = new URL(href);
59
+ if (url.hash && url.hash[0] === '#') {
60
+ try {
61
+ const hashSearchParams = new URLSearchParams(url.hash.substring(1));
62
+ hashSearchParams.forEach((value, key) => {
63
+ result[key] = value;
64
+ });
65
+ }
66
+ catch (e) {
67
+ // hash is not a query string
68
+ }
69
+ }
70
+ // search parameters take precedence over hash parameters
71
+ url.searchParams.forEach((value, key) => {
72
+ result[key] = value;
73
+ });
74
+ return result;
75
+ }
76
+ export const resolveFetch = (customFetch) => {
77
+ let _fetch;
78
+ if (customFetch) {
79
+ _fetch = customFetch;
80
+ }
81
+ else if (typeof fetch === 'undefined') {
82
+ _fetch = (...args) => import('@supabase/node-fetch').then(({ default: fetch }) => fetch(...args));
83
+ }
84
+ else {
85
+ _fetch = fetch;
86
+ }
87
+ return (...args) => _fetch(...args);
88
+ };
89
+ export const looksLikeFetchResponse = (maybeResponse) => {
90
+ return (typeof maybeResponse === 'object' &&
91
+ maybeResponse !== null &&
92
+ 'status' in maybeResponse &&
93
+ 'ok' in maybeResponse &&
94
+ 'json' in maybeResponse &&
95
+ typeof maybeResponse.json === 'function');
96
+ };
97
+ // Storage helpers
98
+ export const setItemAsync = async (storage, key, data) => {
99
+ await storage.setItem(key, JSON.stringify(data));
100
+ };
101
+ export const getItemAsync = async (storage, key) => {
102
+ const value = await storage.getItem(key);
103
+ if (!value) {
104
+ return null;
105
+ }
106
+ try {
107
+ return JSON.parse(value);
108
+ }
109
+ catch (_a) {
110
+ return value;
111
+ }
112
+ };
113
+ export const removeItemAsync = async (storage, key) => {
114
+ await storage.removeItem(key);
115
+ };
116
+ /**
117
+ * A deferred represents some asynchronous work that is not yet finished, which
118
+ * may or may not culminate in a value.
119
+ * Taken from: https://github.com/mike-north/types/blob/master/src/async.ts
120
+ */
121
+ export class Deferred {
122
+ constructor() {
123
+ // eslint-disable-next-line @typescript-eslint/no-extra-semi
124
+ ;
125
+ this.promise = new Deferred.promiseConstructor((res, rej) => {
126
+ // eslint-disable-next-line @typescript-eslint/no-extra-semi
127
+ ;
128
+ this.resolve = res;
129
+ this.reject = rej;
130
+ });
131
+ }
132
+ }
133
+ Deferred.promiseConstructor = Promise;
134
+ export function decodeJWT(token) {
135
+ const parts = token.split('.');
136
+ if (parts.length !== 3) {
137
+ throw new AuthInvalidJwtError('Invalid JWT structure');
138
+ }
139
+ // Regex checks for base64url format
140
+ for (let i = 0; i < parts.length; i++) {
141
+ if (!BASE64URL_REGEX.test(parts[i])) {
142
+ throw new AuthInvalidJwtError('JWT not in base64url format');
143
+ }
144
+ }
145
+ const data = {
146
+ // using base64url lib
147
+ header: JSON.parse(stringFromBase64URL(parts[0])),
148
+ payload: JSON.parse(stringFromBase64URL(parts[1])),
149
+ signature: base64UrlToUint8Array(parts[2]),
150
+ raw: {
151
+ header: parts[0],
152
+ payload: parts[1],
153
+ },
154
+ };
155
+ return data;
156
+ }
157
+ /**
158
+ * Creates a promise that resolves to null after some time.
159
+ */
160
+ export async function sleep(time) {
161
+ return await new Promise((accept) => {
162
+ setTimeout(() => accept(null), time);
163
+ });
164
+ }
165
+ /**
166
+ * Converts the provided async function into a retryable function. Each result
167
+ * or thrown error is sent to the isRetryable function which should return true
168
+ * if the function should run again.
169
+ */
170
+ export function retryable(fn, isRetryable) {
171
+ const promise = new Promise((accept, reject) => {
172
+ // eslint-disable-next-line @typescript-eslint/no-extra-semi
173
+ ;
174
+ (async () => {
175
+ for (let attempt = 0; attempt < Infinity; attempt++) {
176
+ try {
177
+ const result = await fn(attempt);
178
+ if (!isRetryable(attempt, null, result)) {
179
+ accept(result);
180
+ return;
181
+ }
182
+ }
183
+ catch (e) {
184
+ if (!isRetryable(attempt, e)) {
185
+ reject(e);
186
+ return;
187
+ }
188
+ }
189
+ }
190
+ })();
191
+ });
192
+ return promise;
193
+ }
194
+ function dec2hex(dec) {
195
+ return ('0' + dec.toString(16)).substr(-2);
196
+ }
197
+ // Functions below taken from: https://stackoverflow.com/questions/63309409/creating-a-code-verifier-and-challenge-for-pkce-auth-on-spotify-api-in-reactjs
198
+ export function generatePKCEVerifier() {
199
+ const verifierLength = 56;
200
+ const array = new Uint32Array(verifierLength);
201
+ if (typeof crypto === 'undefined') {
202
+ const charSet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~';
203
+ const charSetLen = charSet.length;
204
+ let verifier = '';
205
+ for (let i = 0; i < verifierLength; i++) {
206
+ verifier += charSet.charAt(Math.floor(Math.random() * charSetLen));
207
+ }
208
+ return verifier;
209
+ }
210
+ crypto.getRandomValues(array);
211
+ return Array.from(array, dec2hex).join('');
212
+ }
213
+ async function sha256(randomString) {
214
+ const encoder = new TextEncoder();
215
+ const encodedData = encoder.encode(randomString);
216
+ const hash = await crypto.subtle.digest('SHA-256', encodedData);
217
+ const bytes = new Uint8Array(hash);
218
+ return Array.from(bytes)
219
+ .map((c) => String.fromCharCode(c))
220
+ .join('');
221
+ }
222
+ export async function generatePKCEChallenge(verifier) {
223
+ const hasCryptoSupport = typeof crypto !== 'undefined' &&
224
+ typeof crypto.subtle !== 'undefined' &&
225
+ typeof TextEncoder !== 'undefined';
226
+ if (!hasCryptoSupport) {
227
+ console.warn('WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256.');
228
+ return verifier;
229
+ }
230
+ const hashed = await sha256(verifier);
231
+ return btoa(hashed).replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
232
+ }
233
+ export async function getCodeChallengeAndMethod(storage, storageKey, isPasswordRecovery = false) {
234
+ const codeVerifier = generatePKCEVerifier();
235
+ let storedCodeVerifier = codeVerifier;
236
+ if (isPasswordRecovery) {
237
+ storedCodeVerifier += '/PASSWORD_RECOVERY';
238
+ }
239
+ await setItemAsync(storage, `${storageKey}-code-verifier`, storedCodeVerifier);
240
+ const codeChallenge = await generatePKCEChallenge(codeVerifier);
241
+ const codeChallengeMethod = codeVerifier === codeChallenge ? 'plain' : 's256';
242
+ return [codeChallenge, codeChallengeMethod];
243
+ }
244
+ /** Parses the API version which is 2YYY-MM-DD. */
245
+ const API_VERSION_REGEX = /^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;
246
+ export function parseResponseAPIVersion(response) {
247
+ const apiVersion = response.headers.get(API_VERSION_HEADER_NAME);
248
+ if (!apiVersion) {
249
+ return null;
250
+ }
251
+ if (!apiVersion.match(API_VERSION_REGEX)) {
252
+ return null;
253
+ }
254
+ try {
255
+ const date = new Date(`${apiVersion}T00:00:00.0Z`);
256
+ return date;
257
+ }
258
+ catch (e) {
259
+ return null;
260
+ }
261
+ }
262
+ export function validateExp(exp) {
263
+ if (!exp) {
264
+ throw new Error('Missing exp claim');
265
+ }
266
+ const timeNow = Math.floor(Date.now() / 1000);
267
+ if (exp <= timeNow) {
268
+ throw new Error('JWT has expired');
269
+ }
270
+ }
271
+ export function getAlgorithm(alg) {
272
+ switch (alg) {
273
+ case 'RS256':
274
+ return {
275
+ name: 'RSASSA-PKCS1-v1_5',
276
+ hash: { name: 'SHA-256' },
277
+ };
278
+ case 'ES256':
279
+ return {
280
+ name: 'ECDSA',
281
+ namedCurve: 'P-256',
282
+ hash: { name: 'SHA-256' },
283
+ };
284
+ default:
285
+ throw new Error('Invalid alg claim');
286
+ }
287
+ }
288
+ const UUID_REGEX = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
289
+ export function validateUUID(str) {
290
+ if (!UUID_REGEX.test(str)) {
291
+ throw new Error('@supabase/auth-js: Expected parameter to be UUID but is not');
292
+ }
293
+ }
294
+ export function userNotAvailableProxy() {
295
+ const proxyTarget = {};
296
+ return new Proxy(proxyTarget, {
297
+ get: (target, prop) => {
298
+ if (prop === '__isUserNotAvailableProxy') {
299
+ return true;
300
+ }
301
+ // Preventative check for common problematic symbols during cloning/inspection
302
+ // These symbols might be accessed by structuredClone or other internal mechanisms.
303
+ if (typeof prop === 'symbol') {
304
+ const sProp = prop.toString();
305
+ if (sProp === 'Symbol(Symbol.toPrimitive)' ||
306
+ sProp === 'Symbol(Symbol.toStringTag)' ||
307
+ sProp === 'Symbol(util.inspect.custom)') {
308
+ // Node.js util.inspect
309
+ return undefined;
310
+ }
311
+ }
312
+ throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${prop}" property of the session object is not supported. Please use getUser() instead.`);
313
+ },
314
+ set: (_target, prop) => {
315
+ throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${prop}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`);
316
+ },
317
+ deleteProperty: (_target, prop) => {
318
+ throw new Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${prop}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`);
319
+ },
320
+ });
321
+ }
322
+ /**
323
+ * Deep clones a JSON-serializable object using JSON.parse(JSON.stringify(obj)).
324
+ * Note: Only works for JSON-safe data.
325
+ */
326
+ export function deepClone(obj) {
327
+ return JSON.parse(JSON.stringify(obj));
328
+ }
329
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { SupportedStorage } from './types';
2
+ /**
3
+ * Returns a localStorage-like object that stores the key-value pairs in
4
+ * memory.
5
+ */
6
+ export declare function memoryLocalStorageAdapter(store?: {
7
+ [key: string]: string;
8
+ }): SupportedStorage;
9
+ //# sourceMappingURL=local-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-storage.d.ts","sourceRoot":"","sources":["../../../src/lib/local-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE1C;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,GAAE;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CAAO,GAAG,gBAAgB,CAcjG"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Returns a localStorage-like object that stores the key-value pairs in
3
+ * memory.
4
+ */
5
+ export function memoryLocalStorageAdapter(store = {}) {
6
+ return {
7
+ getItem: (key) => {
8
+ return store[key] || null;
9
+ },
10
+ setItem: (key, value) => {
11
+ store[key] = value;
12
+ },
13
+ removeItem: (key) => {
14
+ delete store[key];
15
+ },
16
+ };
17
+ }
18
+ //# sourceMappingURL=local-storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-storage.js","sourceRoot":"","sources":["../../../src/lib/local-storage.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,QAAmC,EAAE;IAC7E,OAAO;QACL,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACf,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,IAAI,CAAA;QAC3B,CAAC;QAED,OAAO,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;YACtB,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACpB,CAAC;QAED,UAAU,EAAE,CAAC,GAAG,EAAE,EAAE;YAClB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * @experimental
3
+ */
4
+ export declare const internals: {
5
+ /**
6
+ * @experimental
7
+ */
8
+ debug: boolean;
9
+ };
10
+ /**
11
+ * An error thrown when a lock cannot be acquired after some amount of time.
12
+ *
13
+ * Use the {@link #isAcquireTimeout} property instead of checking with `instanceof`.
14
+ */
15
+ export declare abstract class LockAcquireTimeoutError extends Error {
16
+ readonly isAcquireTimeout = true;
17
+ constructor(message: string);
18
+ }
19
+ export declare class NavigatorLockAcquireTimeoutError extends LockAcquireTimeoutError {
20
+ }
21
+ export declare class ProcessLockAcquireTimeoutError extends LockAcquireTimeoutError {
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
+ * @param name Name of the lock to be acquired.
42
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
43
+ * the lock can't be acquired without waiting. If positive, the lock acquire
44
+ * will time out after so many milliseconds. An error is
45
+ * a timeout if it has `isAcquireTimeout` set to true.
46
+ * @param fn The operation to run once the lock is acquired.
47
+ */
48
+ export declare function navigatorLock<R>(name: string, acquireTimeout: number, fn: () => Promise<R>): Promise<R>;
49
+ /**
50
+ * Implements a global exclusive lock that works only in the current process.
51
+ * Useful for environments like React Native or other non-browser
52
+ * single-process (i.e. no concept of "tabs") environments.
53
+ *
54
+ * Use {@link #navigatorLock} in browser environments.
55
+ *
56
+ * @param name Name of the lock to be acquired.
57
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
58
+ * the lock can't be acquired without waiting. If positive, the lock acquire
59
+ * will time out after so many milliseconds. An error is
60
+ * a timeout if it has `isAcquireTimeout` set to true.
61
+ * @param fn The operation to run once the lock is acquired.
62
+ */
63
+ export declare function processLock<R>(name: string, acquireTimeout: number, fn: () => Promise<R>): Promise<R>;
64
+ //# sourceMappingURL=locks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"locks.d.ts","sourceRoot":"","sources":["../../../src/lib/locks.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,eAAO,MAAM,SAAS;IACpB;;OAEG;;CAOJ,CAAA;AAED;;;;GAIG;AACH,8BAAsB,uBAAwB,SAAQ,KAAK;IACzD,SAAgB,gBAAgB,QAAO;gBAE3B,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,gCAAiC,SAAQ,uBAAuB;CAAG;AAChF,qBAAa,8BAA+B,SAAQ,uBAAuB;CAAG;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CA0FZ;AAID;;;;;;;;;;;;;GAaG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,MAAM,EACtB,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAkDZ"}
@@ -0,0 +1,179 @@
1
+ import { supportsLocalStorage } from './helpers';
2
+ /**
3
+ * @experimental
4
+ */
5
+ export const internals = {
6
+ /**
7
+ * @experimental
8
+ */
9
+ debug: !!(globalThis &&
10
+ supportsLocalStorage() &&
11
+ globalThis.localStorage &&
12
+ globalThis.localStorage.getItem('supabase.gotrue-js.locks.debug') === 'true'),
13
+ };
14
+ /**
15
+ * An error thrown when a lock cannot be acquired after some amount of time.
16
+ *
17
+ * Use the {@link #isAcquireTimeout} property instead of checking with `instanceof`.
18
+ */
19
+ export class LockAcquireTimeoutError extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.isAcquireTimeout = true;
23
+ }
24
+ }
25
+ export class NavigatorLockAcquireTimeoutError extends LockAcquireTimeoutError {
26
+ }
27
+ export class ProcessLockAcquireTimeoutError extends LockAcquireTimeoutError {
28
+ }
29
+ /**
30
+ * Implements a global exclusive lock using the Navigator LockManager API. It
31
+ * is available on all browsers released after 2022-03-15 with Safari being the
32
+ * last one to release support. If the API is not available, this function will
33
+ * throw. Make sure you check availablility before configuring {@link
34
+ * GoTrueClient}.
35
+ *
36
+ * You can turn on debugging by setting the `supabase.gotrue-js.locks.debug`
37
+ * local storage item to `true`.
38
+ *
39
+ * Internals:
40
+ *
41
+ * Since the LockManager API does not preserve stack traces for the async
42
+ * function passed in the `request` method, a trick is used where acquiring the
43
+ * lock releases a previously started promise to run the operation in the `fn`
44
+ * function. The lock waits for that promise to finish (with or without error),
45
+ * while the function will finally wait for the result anyway.
46
+ *
47
+ * @param name Name of the lock to be acquired.
48
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
49
+ * the lock can't be acquired without waiting. If positive, the lock acquire
50
+ * will time out after so many milliseconds. An error is
51
+ * a timeout if it has `isAcquireTimeout` set to true.
52
+ * @param fn The operation to run once the lock is acquired.
53
+ */
54
+ export async function navigatorLock(name, acquireTimeout, fn) {
55
+ if (internals.debug) {
56
+ console.log('@supabase/gotrue-js: navigatorLock: acquire lock', name, acquireTimeout);
57
+ }
58
+ const abortController = new globalThis.AbortController();
59
+ if (acquireTimeout > 0) {
60
+ setTimeout(() => {
61
+ abortController.abort();
62
+ if (internals.debug) {
63
+ console.log('@supabase/gotrue-js: navigatorLock acquire timed out', name);
64
+ }
65
+ }, acquireTimeout);
66
+ }
67
+ // MDN article: https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request
68
+ // Wrapping navigator.locks.request() with a plain Promise is done as some
69
+ // libraries like zone.js patch the Promise object to track the execution
70
+ // context. However, it appears that most browsers use an internal promise
71
+ // implementation when using the navigator.locks.request() API causing them
72
+ // to lose context and emit confusing log messages or break certain features.
73
+ // This wrapping is believed to help zone.js track the execution context
74
+ // better.
75
+ return await Promise.resolve().then(() => globalThis.navigator.locks.request(name, acquireTimeout === 0
76
+ ? {
77
+ mode: 'exclusive',
78
+ ifAvailable: true,
79
+ }
80
+ : {
81
+ mode: 'exclusive',
82
+ signal: abortController.signal,
83
+ }, async (lock) => {
84
+ if (lock) {
85
+ if (internals.debug) {
86
+ console.log('@supabase/gotrue-js: navigatorLock: acquired', name, lock.name);
87
+ }
88
+ try {
89
+ return await fn();
90
+ }
91
+ finally {
92
+ if (internals.debug) {
93
+ console.log('@supabase/gotrue-js: navigatorLock: released', name, lock.name);
94
+ }
95
+ }
96
+ }
97
+ else {
98
+ if (acquireTimeout === 0) {
99
+ if (internals.debug) {
100
+ console.log('@supabase/gotrue-js: navigatorLock: not immediately available', name);
101
+ }
102
+ throw new NavigatorLockAcquireTimeoutError(`Acquiring an exclusive Navigator LockManager lock "${name}" immediately failed`);
103
+ }
104
+ else {
105
+ if (internals.debug) {
106
+ try {
107
+ const result = await globalThis.navigator.locks.query();
108
+ console.log('@supabase/gotrue-js: Navigator LockManager state', JSON.stringify(result, null, ' '));
109
+ }
110
+ catch (e) {
111
+ console.warn('@supabase/gotrue-js: Error when querying Navigator LockManager state', e);
112
+ }
113
+ }
114
+ // Browser is not following the Navigator LockManager spec, it
115
+ // returned a null lock when we didn't use ifAvailable. So we can
116
+ // pretend the lock is acquired in the name of backward compatibility
117
+ // and user experience and just run the function.
118
+ console.warn('@supabase/gotrue-js: Navigator LockManager returned a null lock when using #request without ifAvailable set to true, it appears this browser is not following the LockManager spec https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request');
119
+ return await fn();
120
+ }
121
+ }
122
+ }));
123
+ }
124
+ const PROCESS_LOCKS = {};
125
+ /**
126
+ * Implements a global exclusive lock that works only in the current process.
127
+ * Useful for environments like React Native or other non-browser
128
+ * single-process (i.e. no concept of "tabs") environments.
129
+ *
130
+ * Use {@link #navigatorLock} in browser environments.
131
+ *
132
+ * @param name Name of the lock to be acquired.
133
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
134
+ * the lock can't be acquired without waiting. If positive, the lock acquire
135
+ * will time out after so many milliseconds. An error is
136
+ * a timeout if it has `isAcquireTimeout` set to true.
137
+ * @param fn The operation to run once the lock is acquired.
138
+ */
139
+ export async function processLock(name, acquireTimeout, fn) {
140
+ var _a;
141
+ const previousOperation = (_a = PROCESS_LOCKS[name]) !== null && _a !== void 0 ? _a : Promise.resolve();
142
+ const currentOperation = Promise.race([
143
+ previousOperation.catch(() => {
144
+ // ignore error of previous operation that we're waiting to finish
145
+ return null;
146
+ }),
147
+ acquireTimeout >= 0
148
+ ? new Promise((_, reject) => {
149
+ setTimeout(() => {
150
+ reject(new ProcessLockAcquireTimeoutError(`Acquring process lock with name "${name}" timed out`));
151
+ }, acquireTimeout);
152
+ })
153
+ : null,
154
+ ].filter((x) => x))
155
+ .catch((e) => {
156
+ if (e && e.isAcquireTimeout) {
157
+ throw e;
158
+ }
159
+ return null;
160
+ })
161
+ .then(async () => {
162
+ // previous operations finished and we didn't get a race on the acquire
163
+ // timeout, so the current operation can finally start
164
+ return await fn();
165
+ });
166
+ PROCESS_LOCKS[name] = currentOperation.catch(async (e) => {
167
+ if (e && e.isAcquireTimeout) {
168
+ // if the current operation timed out, it doesn't mean that the previous
169
+ // operation finished, so we need contnue waiting for it to finish
170
+ await previousOperation;
171
+ return null;
172
+ }
173
+ throw e;
174
+ });
175
+ // finally wait for the current operation to finish successfully, with an
176
+ // error or with an acquire timeout error
177
+ return await currentOperation;
178
+ }
179
+ //# 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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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * https://mathiasbynens.be/notes/globalthis
3
+ */
4
+ export declare function polyfillGlobalThis(): void;
5
+ //# sourceMappingURL=polyfills.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyfills.d.ts","sourceRoot":"","sources":["../../../src/lib/polyfills.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,kBAAkB,SAmBjC"}