@depup/supabase__auth-js 2.99.2-depup.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 (195) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +25 -0
  3. package/changes.json +5 -0
  4. package/dist/main/AuthAdminApi.d.ts +4 -0
  5. package/dist/main/AuthAdminApi.d.ts.map +1 -0
  6. package/dist/main/AuthAdminApi.js +7 -0
  7. package/dist/main/AuthAdminApi.js.map +1 -0
  8. package/dist/main/AuthClient.d.ts +4 -0
  9. package/dist/main/AuthClient.d.ts.map +1 -0
  10. package/dist/main/AuthClient.js +7 -0
  11. package/dist/main/AuthClient.js.map +1 -0
  12. package/dist/main/GoTrueAdminApi.d.ts +227 -0
  13. package/dist/main/GoTrueAdminApi.d.ts.map +1 -0
  14. package/dist/main/GoTrueAdminApi.js +596 -0
  15. package/dist/main/GoTrueAdminApi.js.map +1 -0
  16. package/dist/main/GoTrueClient.d.ts +783 -0
  17. package/dist/main/GoTrueClient.d.ts.map +1 -0
  18. package/dist/main/GoTrueClient.js +3029 -0
  19. package/dist/main/GoTrueClient.js.map +1 -0
  20. package/dist/main/index.d.ts +9 -0
  21. package/dist/main/index.d.ts.map +1 -0
  22. package/dist/main/index.js +20 -0
  23. package/dist/main/index.js.map +1 -0
  24. package/dist/main/lib/base64url.d.ts +76 -0
  25. package/dist/main/lib/base64url.d.ts.map +1 -0
  26. package/dist/main/lib/base64url.js +269 -0
  27. package/dist/main/lib/base64url.js.map +1 -0
  28. package/dist/main/lib/constants.d.ts +26 -0
  29. package/dist/main/lib/constants.d.ts.map +1 -0
  30. package/dist/main/lib/constants.js +31 -0
  31. package/dist/main/lib/constants.js.map +1 -0
  32. package/dist/main/lib/error-codes.d.ts +7 -0
  33. package/dist/main/lib/error-codes.d.ts.map +1 -0
  34. package/dist/main/lib/error-codes.js +3 -0
  35. package/dist/main/lib/error-codes.js.map +1 -0
  36. package/dist/main/lib/errors.d.ts +243 -0
  37. package/dist/main/lib/errors.d.ts.map +1 -0
  38. package/dist/main/lib/errors.js +289 -0
  39. package/dist/main/lib/errors.js.map +1 -0
  40. package/dist/main/lib/fetch.d.ts +34 -0
  41. package/dist/main/lib/fetch.d.ts.map +1 -0
  42. package/dist/main/lib/fetch.js +184 -0
  43. package/dist/main/lib/fetch.js.map +1 -0
  44. package/dist/main/lib/helpers.d.ts +91 -0
  45. package/dist/main/lib/helpers.d.ts.map +1 -0
  46. package/dist/main/lib/helpers.js +395 -0
  47. package/dist/main/lib/helpers.js.map +1 -0
  48. package/dist/main/lib/local-storage.d.ts +9 -0
  49. package/dist/main/lib/local-storage.d.ts.map +1 -0
  50. package/dist/main/lib/local-storage.js +21 -0
  51. package/dist/main/lib/local-storage.js.map +1 -0
  52. package/dist/main/lib/locks.d.ts +107 -0
  53. package/dist/main/lib/locks.d.ts.map +1 -0
  54. package/dist/main/lib/locks.js +314 -0
  55. package/dist/main/lib/locks.js.map +1 -0
  56. package/dist/main/lib/polyfills.d.ts +5 -0
  57. package/dist/main/lib/polyfills.d.ts.map +1 -0
  58. package/dist/main/lib/polyfills.js +29 -0
  59. package/dist/main/lib/polyfills.js.map +1 -0
  60. package/dist/main/lib/types.d.ts +1861 -0
  61. package/dist/main/lib/types.d.ts.map +1 -0
  62. package/dist/main/lib/types.js +23 -0
  63. package/dist/main/lib/types.js.map +1 -0
  64. package/dist/main/lib/version.d.ts +2 -0
  65. package/dist/main/lib/version.d.ts.map +1 -0
  66. package/dist/main/lib/version.js +11 -0
  67. package/dist/main/lib/version.js.map +1 -0
  68. package/dist/main/lib/web3/ethereum.d.ts +96 -0
  69. package/dist/main/lib/web3/ethereum.d.ts.map +1 -0
  70. package/dist/main/lib/web3/ethereum.js +66 -0
  71. package/dist/main/lib/web3/ethereum.js.map +1 -0
  72. package/dist/main/lib/web3/solana.d.ts +160 -0
  73. package/dist/main/lib/web3/solana.d.ts.map +1 -0
  74. package/dist/main/lib/web3/solana.js +4 -0
  75. package/dist/main/lib/web3/solana.js.map +1 -0
  76. package/dist/main/lib/webauthn.d.ts +276 -0
  77. package/dist/main/lib/webauthn.d.ts.map +1 -0
  78. package/dist/main/lib/webauthn.dom.d.ts +583 -0
  79. package/dist/main/lib/webauthn.dom.d.ts.map +1 -0
  80. package/dist/main/lib/webauthn.dom.js +4 -0
  81. package/dist/main/lib/webauthn.dom.js.map +1 -0
  82. package/dist/main/lib/webauthn.errors.d.ts +80 -0
  83. package/dist/main/lib/webauthn.errors.d.ts.map +1 -0
  84. package/dist/main/lib/webauthn.errors.js +265 -0
  85. package/dist/main/lib/webauthn.errors.js.map +1 -0
  86. package/dist/main/lib/webauthn.js +706 -0
  87. package/dist/main/lib/webauthn.js.map +1 -0
  88. package/dist/module/AuthAdminApi.d.ts +4 -0
  89. package/dist/module/AuthAdminApi.d.ts.map +1 -0
  90. package/dist/module/AuthAdminApi.js +4 -0
  91. package/dist/module/AuthAdminApi.js.map +1 -0
  92. package/dist/module/AuthClient.d.ts +4 -0
  93. package/dist/module/AuthClient.d.ts.map +1 -0
  94. package/dist/module/AuthClient.js +4 -0
  95. package/dist/module/AuthClient.js.map +1 -0
  96. package/dist/module/GoTrueAdminApi.d.ts +227 -0
  97. package/dist/module/GoTrueAdminApi.d.ts.map +1 -0
  98. package/dist/module/GoTrueAdminApi.js +593 -0
  99. package/dist/module/GoTrueAdminApi.js.map +1 -0
  100. package/dist/module/GoTrueClient.d.ts +783 -0
  101. package/dist/module/GoTrueClient.d.ts.map +1 -0
  102. package/dist/module/GoTrueClient.js +3026 -0
  103. package/dist/module/GoTrueClient.js.map +1 -0
  104. package/dist/module/index.d.ts +9 -0
  105. package/dist/module/index.d.ts.map +1 -0
  106. package/dist/module/index.js +9 -0
  107. package/dist/module/index.js.map +1 -0
  108. package/dist/module/lib/base64url.d.ts +76 -0
  109. package/dist/module/lib/base64url.d.ts.map +1 -0
  110. package/dist/module/lib/base64url.js +257 -0
  111. package/dist/module/lib/base64url.js.map +1 -0
  112. package/dist/module/lib/constants.d.ts +26 -0
  113. package/dist/module/lib/constants.d.ts.map +1 -0
  114. package/dist/module/lib/constants.js +28 -0
  115. package/dist/module/lib/constants.js.map +1 -0
  116. package/dist/module/lib/error-codes.d.ts +7 -0
  117. package/dist/module/lib/error-codes.d.ts.map +1 -0
  118. package/dist/module/lib/error-codes.js +2 -0
  119. package/dist/module/lib/error-codes.js.map +1 -0
  120. package/dist/module/lib/errors.d.ts +243 -0
  121. package/dist/module/lib/errors.d.ts.map +1 -0
  122. package/dist/module/lib/errors.js +266 -0
  123. package/dist/module/lib/errors.js.map +1 -0
  124. package/dist/module/lib/fetch.d.ts +34 -0
  125. package/dist/module/lib/fetch.d.ts.map +1 -0
  126. package/dist/module/lib/fetch.js +174 -0
  127. package/dist/module/lib/fetch.js.map +1 -0
  128. package/dist/module/lib/helpers.d.ts +91 -0
  129. package/dist/module/lib/helpers.d.ts.map +1 -0
  130. package/dist/module/lib/helpers.js +368 -0
  131. package/dist/module/lib/helpers.js.map +1 -0
  132. package/dist/module/lib/local-storage.d.ts +9 -0
  133. package/dist/module/lib/local-storage.d.ts.map +1 -0
  134. package/dist/module/lib/local-storage.js +18 -0
  135. package/dist/module/lib/local-storage.js.map +1 -0
  136. package/dist/module/lib/locks.d.ts +107 -0
  137. package/dist/module/lib/locks.d.ts.map +1 -0
  138. package/dist/module/lib/locks.js +306 -0
  139. package/dist/module/lib/locks.js.map +1 -0
  140. package/dist/module/lib/polyfills.d.ts +5 -0
  141. package/dist/module/lib/polyfills.d.ts.map +1 -0
  142. package/dist/module/lib/polyfills.js +26 -0
  143. package/dist/module/lib/polyfills.js.map +1 -0
  144. package/dist/module/lib/types.d.ts +1861 -0
  145. package/dist/module/lib/types.d.ts.map +1 -0
  146. package/dist/module/lib/types.js +20 -0
  147. package/dist/module/lib/types.js.map +1 -0
  148. package/dist/module/lib/version.d.ts +2 -0
  149. package/dist/module/lib/version.d.ts.map +1 -0
  150. package/dist/module/lib/version.js +8 -0
  151. package/dist/module/lib/version.js.map +1 -0
  152. package/dist/module/lib/web3/ethereum.d.ts +96 -0
  153. package/dist/module/lib/web3/ethereum.d.ts.map +1 -0
  154. package/dist/module/lib/web3/ethereum.js +60 -0
  155. package/dist/module/lib/web3/ethereum.js.map +1 -0
  156. package/dist/module/lib/web3/solana.d.ts +160 -0
  157. package/dist/module/lib/web3/solana.d.ts.map +1 -0
  158. package/dist/module/lib/web3/solana.js +3 -0
  159. package/dist/module/lib/web3/solana.js.map +1 -0
  160. package/dist/module/lib/webauthn.d.ts +276 -0
  161. package/dist/module/lib/webauthn.d.ts.map +1 -0
  162. package/dist/module/lib/webauthn.dom.d.ts +583 -0
  163. package/dist/module/lib/webauthn.dom.d.ts.map +1 -0
  164. package/dist/module/lib/webauthn.dom.js +3 -0
  165. package/dist/module/lib/webauthn.dom.js.map +1 -0
  166. package/dist/module/lib/webauthn.errors.d.ts +80 -0
  167. package/dist/module/lib/webauthn.errors.d.ts.map +1 -0
  168. package/dist/module/lib/webauthn.errors.js +257 -0
  169. package/dist/module/lib/webauthn.errors.js.map +1 -0
  170. package/dist/module/lib/webauthn.js +689 -0
  171. package/dist/module/lib/webauthn.js.map +1 -0
  172. package/dist/tsconfig.module.tsbuildinfo +1 -0
  173. package/dist/tsconfig.tsbuildinfo +1 -0
  174. package/package.json +56 -0
  175. package/src/AuthAdminApi.ts +5 -0
  176. package/src/AuthClient.ts +5 -0
  177. package/src/GoTrueAdminApi.ts +723 -0
  178. package/src/GoTrueClient.ts +4078 -0
  179. package/src/index.ts +13 -0
  180. package/src/lib/base64url.ts +308 -0
  181. package/src/lib/constants.ts +34 -0
  182. package/src/lib/error-codes.ts +90 -0
  183. package/src/lib/errors.ts +324 -0
  184. package/src/lib/fetch.ts +283 -0
  185. package/src/lib/helpers.ts +463 -0
  186. package/src/lib/local-storage.ts +21 -0
  187. package/src/lib/locks.ts +375 -0
  188. package/src/lib/polyfills.ts +23 -0
  189. package/src/lib/types.ts +2229 -0
  190. package/src/lib/version.ts +7 -0
  191. package/src/lib/web3/ethereum.ts +184 -0
  192. package/src/lib/web3/solana.ts +186 -0
  193. package/src/lib/webauthn.dom.ts +636 -0
  194. package/src/lib/webauthn.errors.ts +317 -0
  195. package/src/lib/webauthn.ts +946 -0
@@ -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,107 @@
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
+ * @example
16
+ * ```ts
17
+ * import { LockAcquireTimeoutError } from '@supabase/auth-js'
18
+ *
19
+ * class CustomLockError extends LockAcquireTimeoutError {
20
+ * constructor() {
21
+ * super('Lock timed out')
22
+ * }
23
+ * }
24
+ * ```
25
+ */
26
+ export declare abstract class LockAcquireTimeoutError extends Error {
27
+ readonly isAcquireTimeout = true;
28
+ constructor(message: string);
29
+ }
30
+ /**
31
+ * Error thrown when the browser Navigator Lock API fails to acquire a lock.
32
+ *
33
+ * @example
34
+ * ```ts
35
+ * import { NavigatorLockAcquireTimeoutError } from '@supabase/auth-js'
36
+ *
37
+ * throw new NavigatorLockAcquireTimeoutError('Lock timed out')
38
+ * ```
39
+ */
40
+ export declare class NavigatorLockAcquireTimeoutError extends LockAcquireTimeoutError {
41
+ }
42
+ /**
43
+ * Error thrown when the process-level lock helper cannot acquire a lock.
44
+ *
45
+ * @example
46
+ * ```ts
47
+ * import { ProcessLockAcquireTimeoutError } from '@supabase/auth-js'
48
+ *
49
+ * throw new ProcessLockAcquireTimeoutError('Lock timed out')
50
+ * ```
51
+ */
52
+ export declare class ProcessLockAcquireTimeoutError extends LockAcquireTimeoutError {
53
+ }
54
+ /**
55
+ * Implements a global exclusive lock using the Navigator LockManager API. It
56
+ * is available on all browsers released after 2022-03-15 with Safari being the
57
+ * last one to release support. If the API is not available, this function will
58
+ * throw. Make sure you check availablility before configuring {@link
59
+ * GoTrueClient}.
60
+ *
61
+ * You can turn on debugging by setting the `supabase.gotrue-js.locks.debug`
62
+ * local storage item to `true`.
63
+ *
64
+ * Internals:
65
+ *
66
+ * Since the LockManager API does not preserve stack traces for the async
67
+ * function passed in the `request` method, a trick is used where acquiring the
68
+ * lock releases a previously started promise to run the operation in the `fn`
69
+ * function. The lock waits for that promise to finish (with or without error),
70
+ * while the function will finally wait for the result anyway.
71
+ *
72
+ * @param name Name of the lock to be acquired.
73
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
74
+ * the lock can't be acquired without waiting. If positive, the lock acquire
75
+ * will time out after so many milliseconds. An error is
76
+ * a timeout if it has `isAcquireTimeout` set to true.
77
+ * @param fn The operation to run once the lock is acquired.
78
+ * @example
79
+ * ```ts
80
+ * await navigatorLock('sync-user', 1000, async () => {
81
+ * await refreshSession()
82
+ * })
83
+ * ```
84
+ */
85
+ export declare function navigatorLock<R>(name: string, acquireTimeout: number, fn: () => Promise<R>): Promise<R>;
86
+ /**
87
+ * Implements a global exclusive lock that works only in the current process.
88
+ * Useful for environments like React Native or other non-browser
89
+ * single-process (i.e. no concept of "tabs") environments.
90
+ *
91
+ * Use {@link #navigatorLock} in browser environments.
92
+ *
93
+ * @param name Name of the lock to be acquired.
94
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
95
+ * the lock can't be acquired without waiting. If positive, the lock acquire
96
+ * will time out after so many milliseconds. An error is
97
+ * a timeout if it has `isAcquireTimeout` set to true.
98
+ * @param fn The operation to run once the lock is acquired.
99
+ * @example
100
+ * ```ts
101
+ * await processLock('migrate', 5000, async () => {
102
+ * await runMigration()
103
+ * })
104
+ * ```
105
+ */
106
+ export declare function processLock<R>(name: string, acquireTimeout: number, fn: () => Promise<R>): Promise<R>;
107
+ //# 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;;;;;;;;;;;;;;;GAeG;AACH,8BAAsB,uBAAwB,SAAQ,KAAK;IACzD,SAAgB,gBAAgB,QAAO;gBAE3B,OAAO,EAAE,MAAM;CAG5B;AAED;;;;;;;;;GASG;AACH,qBAAa,gCAAiC,SAAQ,uBAAuB;CAAG;AAChF;;;;;;;;;GASG;AACH,qBAAa,8BAA+B,SAAQ,uBAAuB;CAAG;AAE9E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;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,CAiKZ;AAID;;;;;;;;;;;;;;;;;;;GAmBG;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,CAsFZ"}
@@ -0,0 +1,306 @@
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
+ * @example
20
+ * ```ts
21
+ * import { LockAcquireTimeoutError } from '@supabase/auth-js'
22
+ *
23
+ * class CustomLockError extends LockAcquireTimeoutError {
24
+ * constructor() {
25
+ * super('Lock timed out')
26
+ * }
27
+ * }
28
+ * ```
29
+ */
30
+ export class LockAcquireTimeoutError extends Error {
31
+ constructor(message) {
32
+ super(message);
33
+ this.isAcquireTimeout = true;
34
+ }
35
+ }
36
+ /**
37
+ * Error thrown when the browser Navigator Lock API fails to acquire a lock.
38
+ *
39
+ * @example
40
+ * ```ts
41
+ * import { NavigatorLockAcquireTimeoutError } from '@supabase/auth-js'
42
+ *
43
+ * throw new NavigatorLockAcquireTimeoutError('Lock timed out')
44
+ * ```
45
+ */
46
+ export class NavigatorLockAcquireTimeoutError extends LockAcquireTimeoutError {
47
+ }
48
+ /**
49
+ * Error thrown when the process-level lock helper cannot acquire a lock.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * import { ProcessLockAcquireTimeoutError } from '@supabase/auth-js'
54
+ *
55
+ * throw new ProcessLockAcquireTimeoutError('Lock timed out')
56
+ * ```
57
+ */
58
+ export class ProcessLockAcquireTimeoutError extends LockAcquireTimeoutError {
59
+ }
60
+ /**
61
+ * Implements a global exclusive lock using the Navigator LockManager API. It
62
+ * is available on all browsers released after 2022-03-15 with Safari being the
63
+ * last one to release support. If the API is not available, this function will
64
+ * throw. Make sure you check availablility before configuring {@link
65
+ * GoTrueClient}.
66
+ *
67
+ * You can turn on debugging by setting the `supabase.gotrue-js.locks.debug`
68
+ * local storage item to `true`.
69
+ *
70
+ * Internals:
71
+ *
72
+ * Since the LockManager API does not preserve stack traces for the async
73
+ * function passed in the `request` method, a trick is used where acquiring the
74
+ * lock releases a previously started promise to run the operation in the `fn`
75
+ * function. The lock waits for that promise to finish (with or without error),
76
+ * while the function will finally wait for the result anyway.
77
+ *
78
+ * @param name Name of the lock to be acquired.
79
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
80
+ * the lock can't be acquired without waiting. If positive, the lock acquire
81
+ * will time out after so many milliseconds. An error is
82
+ * a timeout if it has `isAcquireTimeout` set to true.
83
+ * @param fn The operation to run once the lock is acquired.
84
+ * @example
85
+ * ```ts
86
+ * await navigatorLock('sync-user', 1000, async () => {
87
+ * await refreshSession()
88
+ * })
89
+ * ```
90
+ */
91
+ export async function navigatorLock(name, acquireTimeout, fn) {
92
+ if (internals.debug) {
93
+ console.log('@supabase/gotrue-js: navigatorLock: acquire lock', name, acquireTimeout);
94
+ }
95
+ const abortController = new globalThis.AbortController();
96
+ if (acquireTimeout > 0) {
97
+ setTimeout(() => {
98
+ abortController.abort();
99
+ if (internals.debug) {
100
+ console.log('@supabase/gotrue-js: navigatorLock acquire timed out', name);
101
+ }
102
+ }, acquireTimeout);
103
+ }
104
+ // MDN article: https://developer.mozilla.org/en-US/docs/Web/API/LockManager/request
105
+ // Wrapping navigator.locks.request() with a plain Promise is done as some
106
+ // libraries like zone.js patch the Promise object to track the execution
107
+ // context. However, it appears that most browsers use an internal promise
108
+ // implementation when using the navigator.locks.request() API causing them
109
+ // to lose context and emit confusing log messages or break certain features.
110
+ // This wrapping is believed to help zone.js track the execution context
111
+ // better.
112
+ await Promise.resolve();
113
+ try {
114
+ return await globalThis.navigator.locks.request(name, acquireTimeout === 0
115
+ ? {
116
+ mode: 'exclusive',
117
+ ifAvailable: true,
118
+ }
119
+ : {
120
+ mode: 'exclusive',
121
+ signal: abortController.signal,
122
+ }, async (lock) => {
123
+ if (lock) {
124
+ if (internals.debug) {
125
+ console.log('@supabase/gotrue-js: navigatorLock: acquired', name, lock.name);
126
+ }
127
+ try {
128
+ return await fn();
129
+ }
130
+ finally {
131
+ if (internals.debug) {
132
+ console.log('@supabase/gotrue-js: navigatorLock: released', name, lock.name);
133
+ }
134
+ }
135
+ }
136
+ else {
137
+ if (acquireTimeout === 0) {
138
+ if (internals.debug) {
139
+ console.log('@supabase/gotrue-js: navigatorLock: not immediately available', name);
140
+ }
141
+ throw new NavigatorLockAcquireTimeoutError(`Acquiring an exclusive Navigator LockManager lock "${name}" immediately failed`);
142
+ }
143
+ else {
144
+ if (internals.debug) {
145
+ try {
146
+ const result = await globalThis.navigator.locks.query();
147
+ console.log('@supabase/gotrue-js: Navigator LockManager state', JSON.stringify(result, null, ' '));
148
+ }
149
+ catch (e) {
150
+ console.warn('@supabase/gotrue-js: Error when querying Navigator LockManager state', e);
151
+ }
152
+ }
153
+ // Browser is not following the Navigator LockManager spec, it
154
+ // returned a null lock when we didn't use ifAvailable. So we can
155
+ // pretend the lock is acquired in the name of backward compatibility
156
+ // and user experience and just run the function.
157
+ 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');
158
+ return await fn();
159
+ }
160
+ }
161
+ });
162
+ }
163
+ catch (e) {
164
+ if ((e === null || e === void 0 ? void 0 : e.name) === 'AbortError' && acquireTimeout > 0) {
165
+ // The lock acquisition was aborted because the timeout fired while the
166
+ // request was still pending. This typically means another lock holder is
167
+ // not releasing the lock, possibly due to React Strict Mode's
168
+ // double-mount/unmount behavior or a component unmounting mid-operation,
169
+ // leaving an orphaned lock.
170
+ //
171
+ // Recovery: use { steal: true } to forcefully acquire the lock. Per the
172
+ // Web Locks API spec, this releases any currently held lock with the same
173
+ // name and grants the request immediately, preempting any queued requests.
174
+ // The previous holder's callback continues running to completion but no
175
+ // longer holds the lock for exclusion purposes.
176
+ //
177
+ // See: https://github.com/supabase/supabase/issues/42505
178
+ if (internals.debug) {
179
+ console.log('@supabase/gotrue-js: navigatorLock: acquire timeout, recovering by stealing lock', name);
180
+ }
181
+ console.warn(`@supabase/gotrue-js: Lock "${name}" was not released within ${acquireTimeout}ms. ` +
182
+ 'This may indicate an orphaned lock from a component unmount (e.g., React Strict Mode). ' +
183
+ 'Forcefully acquiring the lock to recover.');
184
+ return await Promise.resolve().then(() => globalThis.navigator.locks.request(name, {
185
+ mode: 'exclusive',
186
+ steal: true,
187
+ }, async (lock) => {
188
+ if (lock) {
189
+ if (internals.debug) {
190
+ console.log('@supabase/gotrue-js: navigatorLock: recovered (stolen)', name, lock.name);
191
+ }
192
+ try {
193
+ return await fn();
194
+ }
195
+ finally {
196
+ if (internals.debug) {
197
+ console.log('@supabase/gotrue-js: navigatorLock: released (stolen)', name, lock.name);
198
+ }
199
+ }
200
+ }
201
+ else {
202
+ // This should not happen with steal: true, but handle gracefully.
203
+ console.warn('@supabase/gotrue-js: Navigator LockManager returned null lock even with steal: true');
204
+ return await fn();
205
+ }
206
+ }));
207
+ }
208
+ throw e;
209
+ }
210
+ }
211
+ const PROCESS_LOCKS = {};
212
+ /**
213
+ * Implements a global exclusive lock that works only in the current process.
214
+ * Useful for environments like React Native or other non-browser
215
+ * single-process (i.e. no concept of "tabs") environments.
216
+ *
217
+ * Use {@link #navigatorLock} in browser environments.
218
+ *
219
+ * @param name Name of the lock to be acquired.
220
+ * @param acquireTimeout If negative, no timeout. If 0 an error is thrown if
221
+ * the lock can't be acquired without waiting. If positive, the lock acquire
222
+ * will time out after so many milliseconds. An error is
223
+ * a timeout if it has `isAcquireTimeout` set to true.
224
+ * @param fn The operation to run once the lock is acquired.
225
+ * @example
226
+ * ```ts
227
+ * await processLock('migrate', 5000, async () => {
228
+ * await runMigration()
229
+ * })
230
+ * ```
231
+ */
232
+ export async function processLock(name, acquireTimeout, fn) {
233
+ var _a;
234
+ const previousOperation = (_a = PROCESS_LOCKS[name]) !== null && _a !== void 0 ? _a : Promise.resolve();
235
+ // Wrap previousOperation to handle errors without using .catch()
236
+ // This avoids Firefox content script security errors
237
+ const previousOperationHandled = (async () => {
238
+ try {
239
+ await previousOperation;
240
+ return null;
241
+ }
242
+ catch (e) {
243
+ // ignore error of previous operation that we're waiting to finish
244
+ return null;
245
+ }
246
+ })();
247
+ const currentOperation = (async () => {
248
+ let timeoutId = null;
249
+ try {
250
+ // Wait for either previous operation or timeout
251
+ const timeoutPromise = acquireTimeout >= 0
252
+ ? new Promise((_, reject) => {
253
+ timeoutId = setTimeout(() => {
254
+ console.warn(`@supabase/gotrue-js: Lock "${name}" acquisition timed out after ${acquireTimeout}ms. ` +
255
+ 'This may be caused by another operation holding the lock. ' +
256
+ 'Consider increasing lockAcquireTimeout or checking for stuck operations.');
257
+ reject(new ProcessLockAcquireTimeoutError(`Acquiring process lock with name "${name}" timed out`));
258
+ }, acquireTimeout);
259
+ })
260
+ : null;
261
+ await Promise.race([previousOperationHandled, timeoutPromise].filter((x) => x));
262
+ // If we reach here, previousOperationHandled won the race
263
+ // Clear the timeout to prevent false warnings
264
+ if (timeoutId !== null) {
265
+ clearTimeout(timeoutId);
266
+ }
267
+ }
268
+ catch (e) {
269
+ // Clear the timeout on error path as well
270
+ if (timeoutId !== null) {
271
+ clearTimeout(timeoutId);
272
+ }
273
+ // Re-throw timeout errors, ignore others
274
+ if (e && e.isAcquireTimeout) {
275
+ throw e;
276
+ }
277
+ // Fall through to run fn() - previous operation finished with error
278
+ }
279
+ // Previous operations finished and we didn't get a race on the acquire
280
+ // timeout, so the current operation can finally start
281
+ return await fn();
282
+ })();
283
+ PROCESS_LOCKS[name] = (async () => {
284
+ try {
285
+ return await currentOperation;
286
+ }
287
+ catch (e) {
288
+ if (e && e.isAcquireTimeout) {
289
+ // if the current operation timed out, it doesn't mean that the previous
290
+ // operation finished, so we need continue waiting for it to finish
291
+ try {
292
+ await previousOperation;
293
+ }
294
+ catch (prevError) {
295
+ // Ignore previous operation errors
296
+ }
297
+ return null;
298
+ }
299
+ throw e;
300
+ }
301
+ })();
302
+ // finally wait for the current operation to finish successfully, with an
303
+ // error or with an acquire timeout error
304
+ return await currentOperation;
305
+ }
306
+ //# 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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * https://mathiasbynens.be/notes/globalthis
3
+ */
4
+ export function polyfillGlobalThis() {
5
+ if (typeof globalThis === 'object')
6
+ return;
7
+ try {
8
+ Object.defineProperty(Object.prototype, '__magic__', {
9
+ get: function () {
10
+ return this;
11
+ },
12
+ configurable: true,
13
+ });
14
+ // @ts-expect-error 'Allow access to magic'
15
+ __magic__.globalThis = __magic__;
16
+ // @ts-expect-error 'Allow access to magic'
17
+ delete Object.prototype.__magic__;
18
+ }
19
+ catch (e) {
20
+ if (typeof self !== 'undefined') {
21
+ // @ts-expect-error 'Allow access to globals'
22
+ self.globalThis = self;
23
+ }
24
+ }
25
+ }
26
+ //# sourceMappingURL=polyfills.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyfills.js","sourceRoot":"","sources":["../../../src/lib/polyfills.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAM;IAC1C,IAAI,CAAC;QACH,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE;YACnD,GAAG,EAAE;gBACH,OAAO,IAAI,CAAA;YACb,CAAC;YACD,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;QACF,2CAA2C;QAC3C,SAAS,CAAC,UAAU,GAAG,SAAS,CAAA;QAChC,2CAA2C;QAC3C,OAAO,MAAM,CAAC,SAAS,CAAC,SAAS,CAAA;IACnC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,6CAA6C;YAC7C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QACxB,CAAC;IACH,CAAC;AACH,CAAC"}