@freehour/supabase-core 2.0.4 → 2.0.5

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 (2) hide show
  1. package/dist/index.js +3532 -75
  2. package/package.json +11 -8
package/dist/index.js CHANGED
@@ -1,74 +1,3531 @@
1
1
  import { assert as e } from "@freehour/assert";
2
2
  import t from "zod";
3
- import { PostgrestError as n } from "@supabase/supabase-js";
4
- import * as r from "@supabase/postgrest-js";
3
+ import * as n from "@supabase/postgrest-js";
4
+ import { PostgrestError as r } from "@supabase/postgrest-js";
5
5
  import "@supabase/storage-js";
6
+ //#region node_modules/tslib/tslib.es6.mjs
7
+ function i(e, t) {
8
+ var n = {};
9
+ for (var r in e) Object.prototype.hasOwnProperty.call(e, r) && t.indexOf(r) < 0 && (n[r] = e[r]);
10
+ if (e != null && typeof Object.getOwnPropertySymbols == "function") for (var i = 0, r = Object.getOwnPropertySymbols(e); i < r.length; i++) t.indexOf(r[i]) < 0 && Object.prototype.propertyIsEnumerable.call(e, r[i]) && (n[r[i]] = e[r[i]]);
11
+ return n;
12
+ }
13
+ //#endregion
14
+ //#region node_modules/@supabase/realtime-js/dist/module/lib/transformers.js
15
+ var a;
16
+ (function(e) {
17
+ e.abstime = "abstime", e.bool = "bool", e.date = "date", e.daterange = "daterange", e.float4 = "float4", e.float8 = "float8", e.int2 = "int2", e.int4 = "int4", e.int4range = "int4range", e.int8 = "int8", e.int8range = "int8range", e.json = "json", e.jsonb = "jsonb", e.money = "money", e.numeric = "numeric", e.oid = "oid", e.reltime = "reltime", e.text = "text", e.time = "time", e.timestamp = "timestamp", e.timestamptz = "timestamptz", e.timetz = "timetz", e.tsrange = "tsrange", e.tstzrange = "tstzrange";
18
+ })(a ||= {});
19
+ //#endregion
20
+ //#region node_modules/@supabase/realtime-js/dist/module/RealtimePresence.js
21
+ var o;
22
+ (function(e) {
23
+ e.SYNC = "sync", e.JOIN = "join", e.LEAVE = "leave";
24
+ })(o ||= {});
25
+ //#endregion
26
+ //#region node_modules/@supabase/realtime-js/dist/module/RealtimeChannel.js
27
+ var s;
28
+ (function(e) {
29
+ e.ALL = "*", e.INSERT = "INSERT", e.UPDATE = "UPDATE", e.DELETE = "DELETE";
30
+ })(s ||= {});
31
+ var c;
32
+ (function(e) {
33
+ e.BROADCAST = "broadcast", e.PRESENCE = "presence", e.POSTGRES_CHANGES = "postgres_changes", e.SYSTEM = "system";
34
+ })(c ||= {});
35
+ var l;
36
+ (function(e) {
37
+ e.SUBSCRIBED = "SUBSCRIBED", e.TIMED_OUT = "TIMED_OUT", e.CLOSED = "CLOSED", e.CHANNEL_ERROR = "CHANNEL_ERROR";
38
+ })(l ||= {});
39
+ //#endregion
40
+ //#region node_modules/@supabase/auth-js/dist/module/lib/version.js
41
+ var u = "2.104.0", d = 30 * 1e3, f = 3 * d, p = "http://localhost:9999", m = "supabase.auth.token", h = { "X-Client-Info": `gotrue-js/${u}` }, g = "X-Supabase-Api-Version", ee = { "2024-01-01": {
42
+ timestamp: Date.parse("2024-01-01T00:00:00.0Z"),
43
+ name: "2024-01-01"
44
+ } }, te = /^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}$|[a-z0-9_-]{2}$)$/i, _ = class extends Error {
45
+ constructor(e, t, n) {
46
+ super(e), this.__isAuthError = !0, this.name = "AuthError", this.status = t, this.code = n;
47
+ }
48
+ toJSON() {
49
+ return {
50
+ name: this.name,
51
+ message: this.message,
52
+ status: this.status,
53
+ code: this.code
54
+ };
55
+ }
56
+ };
57
+ function v(e) {
58
+ return typeof e == "object" && !!e && "__isAuthError" in e;
59
+ }
60
+ var ne = class extends _ {
61
+ constructor(e, t, n) {
62
+ super(e, t, n), this.name = "AuthApiError", this.status = t, this.code = n;
63
+ }
64
+ };
65
+ function re(e) {
66
+ return v(e) && e.name === "AuthApiError";
67
+ }
68
+ var y = class extends _ {
69
+ constructor(e, t) {
70
+ super(e), this.name = "AuthUnknownError", this.originalError = t;
71
+ }
72
+ }, b = class extends _ {
73
+ constructor(e, t, n, r) {
74
+ super(e, n, r), this.name = t, this.status = n;
75
+ }
76
+ }, x = class extends b {
77
+ constructor() {
78
+ super("Auth session missing!", "AuthSessionMissingError", 400, void 0);
79
+ }
80
+ };
81
+ function S(e) {
82
+ return v(e) && e.name === "AuthSessionMissingError";
83
+ }
84
+ var C = class extends b {
85
+ constructor() {
86
+ super("Auth session or user missing", "AuthInvalidTokenResponseError", 500, void 0);
87
+ }
88
+ }, w = class extends b {
89
+ constructor(e) {
90
+ super(e, "AuthInvalidCredentialsError", 400, void 0);
91
+ }
92
+ }, T = class extends b {
93
+ constructor(e, t = null) {
94
+ super(e, "AuthImplicitGrantRedirectError", 500, void 0), this.details = null, this.details = t;
95
+ }
96
+ toJSON() {
97
+ return Object.assign(Object.assign({}, super.toJSON()), { details: this.details });
98
+ }
99
+ };
100
+ function ie(e) {
101
+ return v(e) && e.name === "AuthImplicitGrantRedirectError";
102
+ }
103
+ var ae = class extends b {
104
+ constructor(e, t = null) {
105
+ super(e, "AuthPKCEGrantCodeExchangeError", 500, void 0), this.details = null, this.details = t;
106
+ }
107
+ toJSON() {
108
+ return Object.assign(Object.assign({}, super.toJSON()), { details: this.details });
109
+ }
110
+ }, oe = class extends b {
111
+ constructor() {
112
+ super("PKCE code verifier not found in storage. This can happen if the auth flow was initiated in a different browser or device, or if the storage was cleared. For SSR frameworks (Next.js, SvelteKit, etc.), use @supabase/ssr on both the server and client to store the code verifier in cookies.", "AuthPKCECodeVerifierMissingError", 400, "pkce_code_verifier_not_found");
113
+ }
114
+ }, se = class extends b {
115
+ constructor(e, t) {
116
+ super(e, "AuthRetryableFetchError", t, void 0);
117
+ }
118
+ };
119
+ function ce(e) {
120
+ return v(e) && e.name === "AuthRetryableFetchError";
121
+ }
122
+ var le = class extends b {
123
+ constructor(e, t, n) {
124
+ super(e, "AuthWeakPasswordError", t, "weak_password"), this.reasons = n;
125
+ }
126
+ toJSON() {
127
+ return Object.assign(Object.assign({}, super.toJSON()), { reasons: this.reasons });
128
+ }
129
+ }, ue = class extends b {
130
+ constructor(e) {
131
+ super(e, "AuthInvalidJwtError", 400, "invalid_jwt");
132
+ }
133
+ }, E = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".split(""), de = " \n\r=".split(""), fe = (() => {
134
+ let e = Array(128);
135
+ for (let t = 0; t < e.length; t += 1) e[t] = -1;
136
+ for (let t = 0; t < de.length; t += 1) e[de[t].charCodeAt(0)] = -2;
137
+ for (let t = 0; t < E.length; t += 1) e[E[t].charCodeAt(0)] = t;
138
+ return e;
139
+ })();
140
+ function pe(e, t, n) {
141
+ if (e !== null) for (t.queue = t.queue << 8 | e, t.queuedBits += 8; t.queuedBits >= 6;) n(E[t.queue >> t.queuedBits - 6 & 63]), t.queuedBits -= 6;
142
+ else if (t.queuedBits > 0) for (t.queue <<= 6 - t.queuedBits, t.queuedBits = 6; t.queuedBits >= 6;) n(E[t.queue >> t.queuedBits - 6 & 63]), t.queuedBits -= 6;
143
+ }
144
+ function me(e, t, n) {
145
+ let r = fe[e];
146
+ if (r > -1) for (t.queue = t.queue << 6 | r, t.queuedBits += 6; t.queuedBits >= 8;) n(t.queue >> t.queuedBits - 8 & 255), t.queuedBits -= 8;
147
+ else if (r === -2) return;
148
+ else throw Error(`Invalid Base64-URL character "${String.fromCharCode(e)}"`);
149
+ }
150
+ function he(e) {
151
+ let t = [], n = (e) => {
152
+ t.push(String.fromCodePoint(e));
153
+ }, r = {
154
+ utf8seq: 0,
155
+ codepoint: 0
156
+ }, i = {
157
+ queue: 0,
158
+ queuedBits: 0
159
+ }, a = (e) => {
160
+ ve(e, r, n);
161
+ };
162
+ for (let t = 0; t < e.length; t += 1) me(e.charCodeAt(t), i, a);
163
+ return t.join("");
164
+ }
165
+ function ge(e, t) {
166
+ if (e <= 127) {
167
+ t(e);
168
+ return;
169
+ } else if (e <= 2047) {
170
+ t(192 | e >> 6), t(128 | e & 63);
171
+ return;
172
+ } else if (e <= 65535) {
173
+ t(224 | e >> 12), t(128 | e >> 6 & 63), t(128 | e & 63);
174
+ return;
175
+ } else if (e <= 1114111) {
176
+ t(240 | e >> 18), t(128 | e >> 12 & 63), t(128 | e >> 6 & 63), t(128 | e & 63);
177
+ return;
178
+ }
179
+ throw Error(`Unrecognized Unicode codepoint: ${e.toString(16)}`);
180
+ }
181
+ function _e(e, t) {
182
+ for (let n = 0; n < e.length; n += 1) {
183
+ let r = e.charCodeAt(n);
184
+ if (r > 55295 && r <= 56319) {
185
+ let t = (r - 55296) * 1024 & 65535;
186
+ r = (e.charCodeAt(n + 1) - 56320 & 65535 | t) + 65536, n += 1;
187
+ }
188
+ ge(r, t);
189
+ }
190
+ }
191
+ function ve(e, t, n) {
192
+ if (t.utf8seq === 0) {
193
+ if (e <= 127) {
194
+ n(e);
195
+ return;
196
+ }
197
+ for (let n = 1; n < 6; n += 1) if (!(e >> 7 - n & 1)) {
198
+ t.utf8seq = n;
199
+ break;
200
+ }
201
+ if (t.utf8seq === 2) t.codepoint = e & 31;
202
+ else if (t.utf8seq === 3) t.codepoint = e & 15;
203
+ else if (t.utf8seq === 4) t.codepoint = e & 7;
204
+ else throw Error("Invalid UTF-8 sequence");
205
+ --t.utf8seq;
206
+ } else if (t.utf8seq > 0) {
207
+ if (e <= 127) throw Error("Invalid UTF-8 sequence");
208
+ t.codepoint = t.codepoint << 6 | e & 63, --t.utf8seq, t.utf8seq === 0 && n(t.codepoint);
209
+ }
210
+ }
211
+ function D(e) {
212
+ let t = [], n = {
213
+ queue: 0,
214
+ queuedBits: 0
215
+ }, r = (e) => {
216
+ t.push(e);
217
+ };
218
+ for (let t = 0; t < e.length; t += 1) me(e.charCodeAt(t), n, r);
219
+ return new Uint8Array(t);
220
+ }
221
+ function ye(e) {
222
+ let t = [];
223
+ return _e(e, (e) => t.push(e)), new Uint8Array(t);
224
+ }
225
+ function O(e) {
226
+ let t = [], n = {
227
+ queue: 0,
228
+ queuedBits: 0
229
+ }, r = (e) => {
230
+ t.push(e);
231
+ };
232
+ return e.forEach((e) => pe(e, n, r)), pe(null, n, r), t.join("");
233
+ }
234
+ //#endregion
235
+ //#region node_modules/@supabase/auth-js/dist/module/lib/helpers.js
236
+ function be(e) {
237
+ return Math.round(Date.now() / 1e3) + e;
238
+ }
239
+ function xe() {
240
+ return Symbol("auth-callback");
241
+ }
242
+ var k = () => typeof window < "u" && typeof document < "u", A = {
243
+ tested: !1,
244
+ writable: !1
245
+ }, Se = () => {
246
+ if (!k()) return !1;
247
+ try {
248
+ if (typeof globalThis.localStorage != "object") return !1;
249
+ } catch {
250
+ return !1;
251
+ }
252
+ if (A.tested) return A.writable;
253
+ let e = `lswt-${Math.random()}${Math.random()}`;
254
+ try {
255
+ globalThis.localStorage.setItem(e, e), globalThis.localStorage.removeItem(e), A.tested = !0, A.writable = !0;
256
+ } catch {
257
+ A.tested = !0, A.writable = !1;
258
+ }
259
+ return A.writable;
260
+ };
261
+ function Ce(e) {
262
+ let t = {}, n = new URL(e);
263
+ if (n.hash && n.hash[0] === "#") try {
264
+ new URLSearchParams(n.hash.substring(1)).forEach((e, n) => {
265
+ t[n] = e;
266
+ });
267
+ } catch {}
268
+ return n.searchParams.forEach((e, n) => {
269
+ t[n] = e;
270
+ }), t;
271
+ }
272
+ var we = (e) => e ? (...t) => e(...t) : (...e) => fetch(...e), Te = (e) => typeof e == "object" && !!e && "status" in e && "ok" in e && "json" in e && typeof e.json == "function", j = async (e, t, n) => {
273
+ await e.setItem(t, JSON.stringify(n));
274
+ }, M = async (e, t) => {
275
+ let n = await e.getItem(t);
276
+ if (!n) return null;
277
+ try {
278
+ return JSON.parse(n);
279
+ } catch {
280
+ return n;
281
+ }
282
+ }, N = async (e, t) => {
283
+ await e.removeItem(t);
284
+ }, Ee = class e {
285
+ constructor() {
286
+ this.promise = new e.promiseConstructor((e, t) => {
287
+ this.resolve = e, this.reject = t;
288
+ });
289
+ }
290
+ };
291
+ Ee.promiseConstructor = Promise;
292
+ function P(e) {
293
+ let t = e.split(".");
294
+ if (t.length !== 3) throw new ue("Invalid JWT structure");
295
+ for (let e = 0; e < t.length; e++) if (!te.test(t[e])) throw new ue("JWT not in base64url format");
296
+ return {
297
+ header: JSON.parse(he(t[0])),
298
+ payload: JSON.parse(he(t[1])),
299
+ signature: D(t[2]),
300
+ raw: {
301
+ header: t[0],
302
+ payload: t[1]
303
+ }
304
+ };
305
+ }
306
+ async function De(e) {
307
+ return await new Promise((t) => {
308
+ setTimeout(() => t(null), e);
309
+ });
310
+ }
311
+ function Oe(e, t) {
312
+ return new Promise((n, r) => {
313
+ (async () => {
314
+ for (let i = 0; i < Infinity; i++) try {
315
+ let r = await e(i);
316
+ if (!t(i, null, r)) {
317
+ n(r);
318
+ return;
319
+ }
320
+ } catch (e) {
321
+ if (!t(i, e)) {
322
+ r(e);
323
+ return;
324
+ }
325
+ }
326
+ })();
327
+ });
328
+ }
329
+ function ke(e) {
330
+ return ("0" + e.toString(16)).substr(-2);
331
+ }
332
+ function Ae() {
333
+ let e = new Uint32Array(56);
334
+ if (typeof crypto > "u") {
335
+ let e = "";
336
+ for (let t = 0; t < 56; t++) e += "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~".charAt(Math.floor(Math.random() * 66));
337
+ return e;
338
+ }
339
+ return crypto.getRandomValues(e), Array.from(e, ke).join("");
340
+ }
341
+ async function je(e) {
342
+ let t = new TextEncoder().encode(e), n = await crypto.subtle.digest("SHA-256", t), r = new Uint8Array(n);
343
+ return Array.from(r).map((e) => String.fromCharCode(e)).join("");
344
+ }
345
+ async function Me(e) {
346
+ if (!(typeof crypto < "u" && crypto.subtle !== void 0 && typeof TextEncoder < "u")) return console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."), e;
347
+ let t = await je(e);
348
+ return btoa(t).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
349
+ }
350
+ async function F(e, t, n = !1) {
351
+ let r = Ae(), i = r;
352
+ n && (i += "/PASSWORD_RECOVERY"), await j(e, `${t}-code-verifier`, i);
353
+ let a = await Me(r);
354
+ return [a, r === a ? "plain" : "s256"];
355
+ }
356
+ var Ne = /^2[0-9]{3}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$/i;
357
+ function Pe(e) {
358
+ let t = e.headers.get(g);
359
+ if (!t || !t.match(Ne)) return null;
360
+ try {
361
+ return /* @__PURE__ */ new Date(`${t}T00:00:00.0Z`);
362
+ } catch {
363
+ return null;
364
+ }
365
+ }
366
+ function Fe(e) {
367
+ if (!e) throw Error("Missing exp claim");
368
+ if (e <= Math.floor(Date.now() / 1e3)) throw Error("JWT has expired");
369
+ }
370
+ function Ie(e) {
371
+ switch (e) {
372
+ case "RS256": return {
373
+ name: "RSASSA-PKCS1-v1_5",
374
+ hash: { name: "SHA-256" }
375
+ };
376
+ case "ES256": return {
377
+ name: "ECDSA",
378
+ namedCurve: "P-256",
379
+ hash: { name: "SHA-256" }
380
+ };
381
+ default: throw Error("Invalid alg claim");
382
+ }
383
+ }
384
+ var Le = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/;
385
+ function I(e) {
386
+ if (!Le.test(e)) throw Error("@supabase/auth-js: Expected parameter to be UUID but is not");
387
+ }
388
+ function L() {
389
+ return new Proxy({}, {
390
+ get: (e, t) => {
391
+ if (t === "__isUserNotAvailableProxy") return !0;
392
+ if (typeof t == "symbol") {
393
+ let e = t.toString();
394
+ if (e === "Symbol(Symbol.toPrimitive)" || e === "Symbol(Symbol.toStringTag)" || e === "Symbol(util.inspect.custom)") return;
395
+ }
396
+ throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Accessing the "${t}" property of the session object is not supported. Please use getUser() instead.`);
397
+ },
398
+ set: (e, t) => {
399
+ throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Setting the "${t}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`);
400
+ },
401
+ deleteProperty: (e, t) => {
402
+ throw Error(`@supabase/auth-js: client was created with userStorage option and there was no user stored in the user storage. Deleting the "${t}" property of the session object is not supported. Please use getUser() to fetch a user object you can manipulate.`);
403
+ }
404
+ });
405
+ }
406
+ function Re(e, t) {
407
+ return new Proxy(e, { get: (e, n, r) => {
408
+ if (n === "__isInsecureUserWarningProxy") return !0;
409
+ if (typeof n == "symbol") {
410
+ let t = n.toString();
411
+ if (t === "Symbol(Symbol.toPrimitive)" || t === "Symbol(Symbol.toStringTag)" || t === "Symbol(util.inspect.custom)" || t === "Symbol(nodejs.util.inspect.custom)") return Reflect.get(e, n, r);
412
+ }
413
+ return !t.value && typeof n == "string" && (console.warn("Using the user object as returned from supabase.auth.getSession() or from some supabase.auth.onAuthStateChange() events could be insecure! This value comes directly from the storage medium (usually cookies on the server) and may not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."), t.value = !0), Reflect.get(e, n, r);
414
+ } });
415
+ }
416
+ function ze(e) {
417
+ return JSON.parse(JSON.stringify(e));
418
+ }
419
+ //#endregion
420
+ //#region node_modules/@supabase/auth-js/dist/module/lib/fetch.js
421
+ var R = (e) => e.msg || e.message || e.error_description || e.error || JSON.stringify(e), Be = [
422
+ 502,
423
+ 503,
424
+ 504,
425
+ 520,
426
+ 521,
427
+ 522,
428
+ 523,
429
+ 524,
430
+ 530
431
+ ];
432
+ async function Ve(e) {
433
+ if (!Te(e)) throw new se(R(e), 0);
434
+ if (Be.includes(e.status)) throw new se(R(e), e.status);
435
+ let t;
436
+ try {
437
+ t = await e.json();
438
+ } catch (e) {
439
+ throw new y(R(e), e);
440
+ }
441
+ let n, r = Pe(e);
442
+ if (r && r.getTime() >= ee["2024-01-01"].timestamp && typeof t == "object" && t && typeof t.code == "string" ? n = t.code : typeof t == "object" && t && typeof t.error_code == "string" && (n = t.error_code), !n) {
443
+ if (typeof t == "object" && t && typeof t.weak_password == "object" && t.weak_password && Array.isArray(t.weak_password.reasons) && t.weak_password.reasons.length && t.weak_password.reasons.reduce((e, t) => e && typeof t == "string", !0)) throw new le(R(t), e.status, t.weak_password.reasons);
444
+ } else if (n === "weak_password") throw new le(R(t), e.status, t.weak_password?.reasons || []);
445
+ else if (n === "session_not_found") throw new x();
446
+ throw new ne(R(t), e.status || 500, n);
447
+ }
448
+ var He = (e, t, n, r) => {
449
+ let i = {
450
+ method: e,
451
+ headers: t?.headers || {}
452
+ };
453
+ return e === "GET" ? i : (i.headers = Object.assign({ "Content-Type": "application/json;charset=UTF-8" }, t?.headers), i.body = JSON.stringify(r), Object.assign(Object.assign({}, i), n));
454
+ };
455
+ async function z(e, t, n, r) {
456
+ let i = Object.assign({}, r?.headers);
457
+ i["X-Supabase-Api-Version"] || (i[g] = ee["2024-01-01"].name), r?.jwt && (i.Authorization = `Bearer ${r.jwt}`);
458
+ let a = r?.query ?? {};
459
+ r?.redirectTo && (a.redirect_to = r.redirectTo);
460
+ let o = await Ue(e, t, n + (Object.keys(a).length ? "?" + new URLSearchParams(a).toString() : ""), {
461
+ headers: i,
462
+ noResolveJson: r?.noResolveJson
463
+ }, {}, r?.body);
464
+ return r?.xform ? r?.xform(o) : {
465
+ data: Object.assign({}, o),
466
+ error: null
467
+ };
468
+ }
469
+ async function Ue(e, t, n, r, i, a) {
470
+ let o = He(t, r, i, a), s;
471
+ try {
472
+ s = await e(n, Object.assign({}, o));
473
+ } catch (e) {
474
+ throw console.error(e), new se(R(e), 0);
475
+ }
476
+ if (s.ok || await Ve(s), r?.noResolveJson) return s;
477
+ try {
478
+ return await s.json();
479
+ } catch (e) {
480
+ await Ve(e);
481
+ }
482
+ }
483
+ function B(e) {
484
+ let t = null;
485
+ Je(e) && (t = Object.assign({}, e), e.expires_at || (t.expires_at = be(e.expires_in)));
486
+ let n = e.user ?? e;
487
+ return {
488
+ data: {
489
+ session: t,
490
+ user: n
491
+ },
492
+ error: null
493
+ };
494
+ }
495
+ function We(e) {
496
+ let t = B(e);
497
+ return !t.error && e.weak_password && typeof e.weak_password == "object" && Array.isArray(e.weak_password.reasons) && e.weak_password.reasons.length && e.weak_password.message && typeof e.weak_password.message == "string" && e.weak_password.reasons.reduce((e, t) => e && typeof t == "string", !0) && (t.data.weak_password = e.weak_password), t;
498
+ }
499
+ function V(e) {
500
+ return {
501
+ data: { user: e.user ?? e },
502
+ error: null
503
+ };
504
+ }
505
+ function Ge(e) {
506
+ return {
507
+ data: e,
508
+ error: null
509
+ };
510
+ }
511
+ function Ke(e) {
512
+ let { action_link: t, email_otp: n, hashed_token: r, redirect_to: a, verification_type: o } = e, s = i(e, [
513
+ "action_link",
514
+ "email_otp",
515
+ "hashed_token",
516
+ "redirect_to",
517
+ "verification_type"
518
+ ]);
519
+ return {
520
+ data: {
521
+ properties: {
522
+ action_link: t,
523
+ email_otp: n,
524
+ hashed_token: r,
525
+ redirect_to: a,
526
+ verification_type: o
527
+ },
528
+ user: Object.assign({}, s)
529
+ },
530
+ error: null
531
+ };
532
+ }
533
+ function qe(e) {
534
+ return e;
535
+ }
536
+ function Je(e) {
537
+ return e.access_token && e.refresh_token && e.expires_in;
538
+ }
539
+ //#endregion
540
+ //#region node_modules/@supabase/auth-js/dist/module/lib/types.js
541
+ var H = [
542
+ "global",
543
+ "local",
544
+ "others"
545
+ ], Ye = class {
546
+ constructor({ url: e = "", headers: t = {}, fetch: n }) {
547
+ this.url = e, this.headers = t, this.fetch = we(n), this.mfa = {
548
+ listFactors: this._listFactors.bind(this),
549
+ deleteFactor: this._deleteFactor.bind(this)
550
+ }, this.oauth = {
551
+ listClients: this._listOAuthClients.bind(this),
552
+ createClient: this._createOAuthClient.bind(this),
553
+ getClient: this._getOAuthClient.bind(this),
554
+ updateClient: this._updateOAuthClient.bind(this),
555
+ deleteClient: this._deleteOAuthClient.bind(this),
556
+ regenerateClientSecret: this._regenerateOAuthClientSecret.bind(this)
557
+ }, this.customProviders = {
558
+ listProviders: this._listCustomProviders.bind(this),
559
+ createProvider: this._createCustomProvider.bind(this),
560
+ getProvider: this._getCustomProvider.bind(this),
561
+ updateProvider: this._updateCustomProvider.bind(this),
562
+ deleteProvider: this._deleteCustomProvider.bind(this)
563
+ };
564
+ }
565
+ async signOut(e, t = H[0]) {
566
+ if (H.indexOf(t) < 0) throw Error(`@supabase/auth-js: Parameter scope must be one of ${H.join(", ")}`);
567
+ try {
568
+ return await z(this.fetch, "POST", `${this.url}/logout?scope=${t}`, {
569
+ headers: this.headers,
570
+ jwt: e,
571
+ noResolveJson: !0
572
+ }), {
573
+ data: null,
574
+ error: null
575
+ };
576
+ } catch (e) {
577
+ if (v(e)) return {
578
+ data: null,
579
+ error: e
580
+ };
581
+ throw e;
582
+ }
583
+ }
584
+ async inviteUserByEmail(e, t = {}) {
585
+ try {
586
+ return await z(this.fetch, "POST", `${this.url}/invite`, {
587
+ body: {
588
+ email: e,
589
+ data: t.data
590
+ },
591
+ headers: this.headers,
592
+ redirectTo: t.redirectTo,
593
+ xform: V
594
+ });
595
+ } catch (e) {
596
+ if (v(e)) return {
597
+ data: { user: null },
598
+ error: e
599
+ };
600
+ throw e;
601
+ }
602
+ }
603
+ async generateLink(e) {
604
+ try {
605
+ let { options: t } = e, n = i(e, ["options"]), r = Object.assign(Object.assign({}, n), t);
606
+ return "newEmail" in n && (r.new_email = n?.newEmail, delete r.newEmail), await z(this.fetch, "POST", `${this.url}/admin/generate_link`, {
607
+ body: r,
608
+ headers: this.headers,
609
+ xform: Ke,
610
+ redirectTo: t?.redirectTo
611
+ });
612
+ } catch (e) {
613
+ if (v(e)) return {
614
+ data: {
615
+ properties: null,
616
+ user: null
617
+ },
618
+ error: e
619
+ };
620
+ throw e;
621
+ }
622
+ }
623
+ async createUser(e) {
624
+ try {
625
+ return await z(this.fetch, "POST", `${this.url}/admin/users`, {
626
+ body: e,
627
+ headers: this.headers,
628
+ xform: V
629
+ });
630
+ } catch (e) {
631
+ if (v(e)) return {
632
+ data: { user: null },
633
+ error: e
634
+ };
635
+ throw e;
636
+ }
637
+ }
638
+ async listUsers(e) {
639
+ try {
640
+ let t = {
641
+ nextPage: null,
642
+ lastPage: 0,
643
+ total: 0
644
+ }, n = await z(this.fetch, "GET", `${this.url}/admin/users`, {
645
+ headers: this.headers,
646
+ noResolveJson: !0,
647
+ query: {
648
+ page: (e?.page)?.toString() ?? "",
649
+ per_page: (e?.perPage)?.toString() ?? ""
650
+ },
651
+ xform: qe
652
+ });
653
+ if (n.error) throw n.error;
654
+ let r = await n.json(), i = n.headers.get("x-total-count") ?? 0, a = n.headers.get("link")?.split(",") ?? [];
655
+ return a.length > 0 && (a.forEach((e) => {
656
+ let n = parseInt(e.split(";")[0].split("=")[1].substring(0, 1)), r = JSON.parse(e.split(";")[1].split("=")[1]);
657
+ t[`${r}Page`] = n;
658
+ }), t.total = parseInt(i)), {
659
+ data: Object.assign(Object.assign({}, r), t),
660
+ error: null
661
+ };
662
+ } catch (e) {
663
+ if (v(e)) return {
664
+ data: { users: [] },
665
+ error: e
666
+ };
667
+ throw e;
668
+ }
669
+ }
670
+ async getUserById(e) {
671
+ I(e);
672
+ try {
673
+ return await z(this.fetch, "GET", `${this.url}/admin/users/${e}`, {
674
+ headers: this.headers,
675
+ xform: V
676
+ });
677
+ } catch (e) {
678
+ if (v(e)) return {
679
+ data: { user: null },
680
+ error: e
681
+ };
682
+ throw e;
683
+ }
684
+ }
685
+ async updateUserById(e, t) {
686
+ I(e);
687
+ try {
688
+ return await z(this.fetch, "PUT", `${this.url}/admin/users/${e}`, {
689
+ body: t,
690
+ headers: this.headers,
691
+ xform: V
692
+ });
693
+ } catch (e) {
694
+ if (v(e)) return {
695
+ data: { user: null },
696
+ error: e
697
+ };
698
+ throw e;
699
+ }
700
+ }
701
+ async deleteUser(e, t = !1) {
702
+ I(e);
703
+ try {
704
+ return await z(this.fetch, "DELETE", `${this.url}/admin/users/${e}`, {
705
+ headers: this.headers,
706
+ body: { should_soft_delete: t },
707
+ xform: V
708
+ });
709
+ } catch (e) {
710
+ if (v(e)) return {
711
+ data: { user: null },
712
+ error: e
713
+ };
714
+ throw e;
715
+ }
716
+ }
717
+ async _listFactors(e) {
718
+ I(e.userId);
719
+ try {
720
+ let { data: t, error: n } = await z(this.fetch, "GET", `${this.url}/admin/users/${e.userId}/factors`, {
721
+ headers: this.headers,
722
+ xform: (e) => ({
723
+ data: { factors: e },
724
+ error: null
725
+ })
726
+ });
727
+ return {
728
+ data: t,
729
+ error: n
730
+ };
731
+ } catch (e) {
732
+ if (v(e)) return {
733
+ data: null,
734
+ error: e
735
+ };
736
+ throw e;
737
+ }
738
+ }
739
+ async _deleteFactor(e) {
740
+ I(e.userId), I(e.id);
741
+ try {
742
+ return {
743
+ data: await z(this.fetch, "DELETE", `${this.url}/admin/users/${e.userId}/factors/${e.id}`, { headers: this.headers }),
744
+ error: null
745
+ };
746
+ } catch (e) {
747
+ if (v(e)) return {
748
+ data: null,
749
+ error: e
750
+ };
751
+ throw e;
752
+ }
753
+ }
754
+ async _listOAuthClients(e) {
755
+ try {
756
+ let t = {
757
+ nextPage: null,
758
+ lastPage: 0,
759
+ total: 0
760
+ }, n = await z(this.fetch, "GET", `${this.url}/admin/oauth/clients`, {
761
+ headers: this.headers,
762
+ noResolveJson: !0,
763
+ query: {
764
+ page: (e?.page)?.toString() ?? "",
765
+ per_page: (e?.perPage)?.toString() ?? ""
766
+ },
767
+ xform: qe
768
+ });
769
+ if (n.error) throw n.error;
770
+ let r = await n.json(), i = n.headers.get("x-total-count") ?? 0, a = n.headers.get("link")?.split(",") ?? [];
771
+ return a.length > 0 && (a.forEach((e) => {
772
+ let n = parseInt(e.split(";")[0].split("=")[1].substring(0, 1)), r = JSON.parse(e.split(";")[1].split("=")[1]);
773
+ t[`${r}Page`] = n;
774
+ }), t.total = parseInt(i)), {
775
+ data: Object.assign(Object.assign({}, r), t),
776
+ error: null
777
+ };
778
+ } catch (e) {
779
+ if (v(e)) return {
780
+ data: { clients: [] },
781
+ error: e
782
+ };
783
+ throw e;
784
+ }
785
+ }
786
+ async _createOAuthClient(e) {
787
+ try {
788
+ return await z(this.fetch, "POST", `${this.url}/admin/oauth/clients`, {
789
+ body: e,
790
+ headers: this.headers,
791
+ xform: (e) => ({
792
+ data: e,
793
+ error: null
794
+ })
795
+ });
796
+ } catch (e) {
797
+ if (v(e)) return {
798
+ data: null,
799
+ error: e
800
+ };
801
+ throw e;
802
+ }
803
+ }
804
+ async _getOAuthClient(e) {
805
+ try {
806
+ return await z(this.fetch, "GET", `${this.url}/admin/oauth/clients/${e}`, {
807
+ headers: this.headers,
808
+ xform: (e) => ({
809
+ data: e,
810
+ error: null
811
+ })
812
+ });
813
+ } catch (e) {
814
+ if (v(e)) return {
815
+ data: null,
816
+ error: e
817
+ };
818
+ throw e;
819
+ }
820
+ }
821
+ async _updateOAuthClient(e, t) {
822
+ try {
823
+ return await z(this.fetch, "PUT", `${this.url}/admin/oauth/clients/${e}`, {
824
+ body: t,
825
+ headers: this.headers,
826
+ xform: (e) => ({
827
+ data: e,
828
+ error: null
829
+ })
830
+ });
831
+ } catch (e) {
832
+ if (v(e)) return {
833
+ data: null,
834
+ error: e
835
+ };
836
+ throw e;
837
+ }
838
+ }
839
+ async _deleteOAuthClient(e) {
840
+ try {
841
+ return await z(this.fetch, "DELETE", `${this.url}/admin/oauth/clients/${e}`, {
842
+ headers: this.headers,
843
+ noResolveJson: !0
844
+ }), {
845
+ data: null,
846
+ error: null
847
+ };
848
+ } catch (e) {
849
+ if (v(e)) return {
850
+ data: null,
851
+ error: e
852
+ };
853
+ throw e;
854
+ }
855
+ }
856
+ async _regenerateOAuthClientSecret(e) {
857
+ try {
858
+ return await z(this.fetch, "POST", `${this.url}/admin/oauth/clients/${e}/regenerate_secret`, {
859
+ headers: this.headers,
860
+ xform: (e) => ({
861
+ data: e,
862
+ error: null
863
+ })
864
+ });
865
+ } catch (e) {
866
+ if (v(e)) return {
867
+ data: null,
868
+ error: e
869
+ };
870
+ throw e;
871
+ }
872
+ }
873
+ async _listCustomProviders(e) {
874
+ try {
875
+ let t = {};
876
+ return e?.type && (t.type = e.type), await z(this.fetch, "GET", `${this.url}/admin/custom-providers`, {
877
+ headers: this.headers,
878
+ query: t,
879
+ xform: (e) => ({
880
+ data: { providers: e?.providers ?? [] },
881
+ error: null
882
+ })
883
+ });
884
+ } catch (e) {
885
+ if (v(e)) return {
886
+ data: { providers: [] },
887
+ error: e
888
+ };
889
+ throw e;
890
+ }
891
+ }
892
+ async _createCustomProvider(e) {
893
+ try {
894
+ return await z(this.fetch, "POST", `${this.url}/admin/custom-providers`, {
895
+ body: e,
896
+ headers: this.headers,
897
+ xform: (e) => ({
898
+ data: e,
899
+ error: null
900
+ })
901
+ });
902
+ } catch (e) {
903
+ if (v(e)) return {
904
+ data: null,
905
+ error: e
906
+ };
907
+ throw e;
908
+ }
909
+ }
910
+ async _getCustomProvider(e) {
911
+ try {
912
+ return await z(this.fetch, "GET", `${this.url}/admin/custom-providers/${e}`, {
913
+ headers: this.headers,
914
+ xform: (e) => ({
915
+ data: e,
916
+ error: null
917
+ })
918
+ });
919
+ } catch (e) {
920
+ if (v(e)) return {
921
+ data: null,
922
+ error: e
923
+ };
924
+ throw e;
925
+ }
926
+ }
927
+ async _updateCustomProvider(e, t) {
928
+ try {
929
+ return await z(this.fetch, "PUT", `${this.url}/admin/custom-providers/${e}`, {
930
+ body: t,
931
+ headers: this.headers,
932
+ xform: (e) => ({
933
+ data: e,
934
+ error: null
935
+ })
936
+ });
937
+ } catch (e) {
938
+ if (v(e)) return {
939
+ data: null,
940
+ error: e
941
+ };
942
+ throw e;
943
+ }
944
+ }
945
+ async _deleteCustomProvider(e) {
946
+ try {
947
+ return await z(this.fetch, "DELETE", `${this.url}/admin/custom-providers/${e}`, {
948
+ headers: this.headers,
949
+ noResolveJson: !0
950
+ }), {
951
+ data: null,
952
+ error: null
953
+ };
954
+ } catch (e) {
955
+ if (v(e)) return {
956
+ data: null,
957
+ error: e
958
+ };
959
+ throw e;
960
+ }
961
+ }
962
+ };
963
+ //#endregion
964
+ //#region node_modules/@supabase/auth-js/dist/module/lib/local-storage.js
965
+ function Xe(e = {}) {
966
+ return {
967
+ getItem: (t) => e[t] || null,
968
+ setItem: (t, n) => {
969
+ e[t] = n;
970
+ },
971
+ removeItem: (t) => {
972
+ delete e[t];
973
+ }
974
+ };
975
+ }
976
+ //#endregion
977
+ //#region node_modules/@supabase/auth-js/dist/module/lib/locks.js
978
+ var U = { debug: !!(globalThis && Se() && globalThis.localStorage && globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug") === "true") }, Ze = class extends Error {
979
+ constructor(e) {
980
+ super(e), this.isAcquireTimeout = !0;
981
+ }
982
+ }, Qe = class extends Ze {};
983
+ async function $e(e, t, n) {
984
+ U.debug && console.log("@supabase/gotrue-js: navigatorLock: acquire lock", e, t);
985
+ let r = new globalThis.AbortController(), i;
986
+ t > 0 && (i = setTimeout(() => {
987
+ r.abort(), U.debug && console.log("@supabase/gotrue-js: navigatorLock acquire timed out", e);
988
+ }, t)), await Promise.resolve();
989
+ try {
990
+ return await globalThis.navigator.locks.request(e, t === 0 ? {
991
+ mode: "exclusive",
992
+ ifAvailable: !0
993
+ } : {
994
+ mode: "exclusive",
995
+ signal: r.signal
996
+ }, async (r) => {
997
+ if (r) {
998
+ clearTimeout(i), U.debug && console.log("@supabase/gotrue-js: navigatorLock: acquired", e, r.name);
999
+ try {
1000
+ return await n();
1001
+ } finally {
1002
+ U.debug && console.log("@supabase/gotrue-js: navigatorLock: released", e, r.name);
1003
+ }
1004
+ } else if (t === 0) throw U.debug && console.log("@supabase/gotrue-js: navigatorLock: not immediately available", e), new Qe(`Acquiring an exclusive Navigator LockManager lock "${e}" immediately failed`);
1005
+ else {
1006
+ if (U.debug) try {
1007
+ let e = await globalThis.navigator.locks.query();
1008
+ console.log("@supabase/gotrue-js: Navigator LockManager state", JSON.stringify(e, null, " "));
1009
+ } catch (e) {
1010
+ console.warn("@supabase/gotrue-js: Error when querying Navigator LockManager state", e);
1011
+ }
1012
+ return 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"), clearTimeout(i), await n();
1013
+ }
1014
+ });
1015
+ } catch (a) {
1016
+ if (t > 0 && clearTimeout(i), a?.name === "AbortError" && t > 0) {
1017
+ if (r.signal.aborted) return U.debug && console.log("@supabase/gotrue-js: navigatorLock: acquire timeout, recovering by stealing lock", e), console.warn(`@supabase/gotrue-js: Lock "${e}" was not released within ${t}ms. This may indicate an orphaned lock from a component unmount (e.g., React Strict Mode). Forcefully acquiring the lock to recover.`), await Promise.resolve().then(() => globalThis.navigator.locks.request(e, {
1018
+ mode: "exclusive",
1019
+ steal: !0
1020
+ }, async (t) => {
1021
+ if (t) {
1022
+ U.debug && console.log("@supabase/gotrue-js: navigatorLock: recovered (stolen)", e, t.name);
1023
+ try {
1024
+ return await n();
1025
+ } finally {
1026
+ U.debug && console.log("@supabase/gotrue-js: navigatorLock: released (stolen)", e, t.name);
1027
+ }
1028
+ } else return console.warn("@supabase/gotrue-js: Navigator LockManager returned null lock even with steal: true"), await n();
1029
+ }));
1030
+ throw U.debug && console.log("@supabase/gotrue-js: navigatorLock: lock was stolen by another request", e), new Qe(`Lock "${e}" was released because another request stole it`);
1031
+ }
1032
+ throw a;
1033
+ }
1034
+ }
1035
+ //#endregion
1036
+ //#region node_modules/@supabase/auth-js/dist/module/lib/polyfills.js
1037
+ function et() {
1038
+ if (typeof globalThis != "object") try {
1039
+ Object.defineProperty(Object.prototype, "__magic__", {
1040
+ get: function() {
1041
+ return this;
1042
+ },
1043
+ configurable: !0
1044
+ }), __magic__.globalThis = __magic__, delete Object.prototype.__magic__;
1045
+ } catch {
1046
+ typeof self < "u" && (self.globalThis = self);
1047
+ }
1048
+ }
1049
+ //#endregion
1050
+ //#region node_modules/@supabase/auth-js/dist/module/lib/web3/ethereum.js
1051
+ function tt(e) {
1052
+ if (!/^0x[a-fA-F0-9]{40}$/.test(e)) throw Error(`@supabase/auth-js: Address "${e}" is invalid.`);
1053
+ return e.toLowerCase();
1054
+ }
1055
+ function nt(e) {
1056
+ return parseInt(e, 16);
1057
+ }
1058
+ function rt(e) {
1059
+ let t = new TextEncoder().encode(e);
1060
+ return "0x" + Array.from(t, (e) => e.toString(16).padStart(2, "0")).join("");
1061
+ }
1062
+ function it(e) {
1063
+ let { chainId: t, domain: n, expirationTime: r, issuedAt: i = /* @__PURE__ */ new Date(), nonce: a, notBefore: o, requestId: s, resources: c, scheme: l, uri: u, version: d } = e;
1064
+ if (!Number.isInteger(t)) throw Error(`@supabase/auth-js: Invalid SIWE message field "chainId". Chain ID must be a EIP-155 chain ID. Provided value: ${t}`);
1065
+ if (!n) throw Error("@supabase/auth-js: Invalid SIWE message field \"domain\". Domain must be provided.");
1066
+ if (a && a.length < 8) throw Error(`@supabase/auth-js: Invalid SIWE message field "nonce". Nonce must be at least 8 characters. Provided value: ${a}`);
1067
+ if (!u) throw Error("@supabase/auth-js: Invalid SIWE message field \"uri\". URI must be provided.");
1068
+ if (d !== "1") throw Error(`@supabase/auth-js: Invalid SIWE message field "version". Version must be '1'. Provided value: ${d}`);
1069
+ if (e.statement?.includes("\n")) throw Error(`@supabase/auth-js: Invalid SIWE message field "statement". Statement must not include '\\n'. Provided value: ${e.statement}`);
1070
+ let f = tt(e.address), p = `${l ? `${l}://${n}` : n} wants you to sign in with your Ethereum account:\n${f}\n\n${e.statement ? `${e.statement}\n` : ""}`, m = `URI: ${u}\nVersion: ${d}\nChain ID: ${t}${a ? `\nNonce: ${a}` : ""}\nIssued At: ${i.toISOString()}`;
1071
+ if (r && (m += `\nExpiration Time: ${r.toISOString()}`), o && (m += `\nNot Before: ${o.toISOString()}`), s && (m += `\nRequest ID: ${s}`), c) {
1072
+ let e = "\nResources:";
1073
+ for (let t of c) {
1074
+ if (!t || typeof t != "string") throw Error(`@supabase/auth-js: Invalid SIWE message field "resources". Every resource must be a valid string. Provided value: ${t}`);
1075
+ e += `\n- ${t}`;
1076
+ }
1077
+ m += e;
1078
+ }
1079
+ return `${p}\n${m}`;
1080
+ }
1081
+ //#endregion
1082
+ //#region node_modules/@supabase/auth-js/dist/module/lib/webauthn.errors.js
1083
+ var W = class extends Error {
1084
+ constructor({ message: e, code: t, cause: n, name: r }) {
1085
+ super(e, { cause: n }), this.__isWebAuthnError = !0, this.name = r ?? (n instanceof Error ? n.name : void 0) ?? "Unknown Error", this.code = t;
1086
+ }
1087
+ }, G = class extends W {
1088
+ constructor(e, t) {
1089
+ super({
1090
+ code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
1091
+ cause: t,
1092
+ message: e
1093
+ }), this.name = "WebAuthnUnknownError", this.originalError = t;
1094
+ }
1095
+ };
1096
+ function at({ error: e, options: t }) {
1097
+ let { publicKey: n } = t;
1098
+ if (!n) throw Error("options was missing required publicKey property");
1099
+ if (e.name === "AbortError") {
1100
+ if (t.signal instanceof AbortSignal) return new W({
1101
+ message: "Registration ceremony was sent an abort signal",
1102
+ code: "ERROR_CEREMONY_ABORTED",
1103
+ cause: e
1104
+ });
1105
+ } else if (e.name === "ConstraintError") {
1106
+ if (n.authenticatorSelection?.requireResidentKey === !0) return new W({
1107
+ message: "Discoverable credentials were required but no available authenticator supported it",
1108
+ code: "ERROR_AUTHENTICATOR_MISSING_DISCOVERABLE_CREDENTIAL_SUPPORT",
1109
+ cause: e
1110
+ });
1111
+ if (t.mediation === "conditional" && n.authenticatorSelection?.userVerification === "required") return new W({
1112
+ message: "User verification was required during automatic registration but it could not be performed",
1113
+ code: "ERROR_AUTO_REGISTER_USER_VERIFICATION_FAILURE",
1114
+ cause: e
1115
+ });
1116
+ if (n.authenticatorSelection?.userVerification === "required") return new W({
1117
+ message: "User verification was required but no available authenticator supported it",
1118
+ code: "ERROR_AUTHENTICATOR_MISSING_USER_VERIFICATION_SUPPORT",
1119
+ cause: e
1120
+ });
1121
+ } else if (e.name === "InvalidStateError") return new W({
1122
+ message: "The authenticator was previously registered",
1123
+ code: "ERROR_AUTHENTICATOR_PREVIOUSLY_REGISTERED",
1124
+ cause: e
1125
+ });
1126
+ else if (e.name === "NotAllowedError") return new W({
1127
+ message: e.message,
1128
+ code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
1129
+ cause: e
1130
+ });
1131
+ else if (e.name === "NotSupportedError") return n.pubKeyCredParams.filter((e) => e.type === "public-key").length === 0 ? new W({
1132
+ message: "No entry in pubKeyCredParams was of type \"public-key\"",
1133
+ code: "ERROR_MALFORMED_PUBKEYCREDPARAMS",
1134
+ cause: e
1135
+ }) : new W({
1136
+ message: "No available authenticator supported any of the specified pubKeyCredParams algorithms",
1137
+ code: "ERROR_AUTHENTICATOR_NO_SUPPORTED_PUBKEYCREDPARAMS_ALG",
1138
+ cause: e
1139
+ });
1140
+ else if (e.name === "SecurityError") {
1141
+ let t = window.location.hostname;
1142
+ if (!ft(t)) return new W({
1143
+ message: `${window.location.hostname} is an invalid domain`,
1144
+ code: "ERROR_INVALID_DOMAIN",
1145
+ cause: e
1146
+ });
1147
+ if (n.rp.id !== t) return new W({
1148
+ message: `The RP ID "${n.rp.id}" is invalid for this domain`,
1149
+ code: "ERROR_INVALID_RP_ID",
1150
+ cause: e
1151
+ });
1152
+ } else if (e.name === "TypeError") {
1153
+ if (n.user.id.byteLength < 1 || n.user.id.byteLength > 64) return new W({
1154
+ message: "User ID was not between 1 and 64 characters",
1155
+ code: "ERROR_INVALID_USER_ID_LENGTH",
1156
+ cause: e
1157
+ });
1158
+ } else if (e.name === "UnknownError") return new W({
1159
+ message: "The authenticator was unable to process the specified options, or could not create a new credential",
1160
+ code: "ERROR_AUTHENTICATOR_GENERAL_ERROR",
1161
+ cause: e
1162
+ });
1163
+ return new W({
1164
+ message: "a Non-Webauthn related error has occurred",
1165
+ code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
1166
+ cause: e
1167
+ });
1168
+ }
1169
+ function ot({ error: e, options: t }) {
1170
+ let { publicKey: n } = t;
1171
+ if (!n) throw Error("options was missing required publicKey property");
1172
+ if (e.name === "AbortError") {
1173
+ if (t.signal instanceof AbortSignal) return new W({
1174
+ message: "Authentication ceremony was sent an abort signal",
1175
+ code: "ERROR_CEREMONY_ABORTED",
1176
+ cause: e
1177
+ });
1178
+ } else if (e.name === "NotAllowedError") return new W({
1179
+ message: e.message,
1180
+ code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
1181
+ cause: e
1182
+ });
1183
+ else if (e.name === "SecurityError") {
1184
+ let t = window.location.hostname;
1185
+ if (!ft(t)) return new W({
1186
+ message: `${window.location.hostname} is an invalid domain`,
1187
+ code: "ERROR_INVALID_DOMAIN",
1188
+ cause: e
1189
+ });
1190
+ if (n.rpId !== t) return new W({
1191
+ message: `The RP ID "${n.rpId}" is invalid for this domain`,
1192
+ code: "ERROR_INVALID_RP_ID",
1193
+ cause: e
1194
+ });
1195
+ } else if (e.name === "UnknownError") return new W({
1196
+ message: "The authenticator was unable to process the specified options, or could not create a new assertion signature",
1197
+ code: "ERROR_AUTHENTICATOR_GENERAL_ERROR",
1198
+ cause: e
1199
+ });
1200
+ return new W({
1201
+ message: "a Non-Webauthn related error has occurred",
1202
+ code: "ERROR_PASSTHROUGH_SEE_CAUSE_PROPERTY",
1203
+ cause: e
1204
+ });
1205
+ }
1206
+ var st = new class {
1207
+ createNewAbortSignal() {
1208
+ if (this.controller) {
1209
+ let e = /* @__PURE__ */ Error("Cancelling existing WebAuthn API call for new one");
1210
+ e.name = "AbortError", this.controller.abort(e);
1211
+ }
1212
+ let e = new AbortController();
1213
+ return this.controller = e, e.signal;
1214
+ }
1215
+ cancelCeremony() {
1216
+ if (this.controller) {
1217
+ let e = /* @__PURE__ */ Error("Manually cancelling existing WebAuthn API call");
1218
+ e.name = "AbortError", this.controller.abort(e), this.controller = void 0;
1219
+ }
1220
+ }
1221
+ }();
1222
+ function ct(e) {
1223
+ if (!e) throw Error("Credential creation options are required");
1224
+ if (typeof PublicKeyCredential < "u" && "parseCreationOptionsFromJSON" in PublicKeyCredential && typeof PublicKeyCredential.parseCreationOptionsFromJSON == "function") return PublicKeyCredential.parseCreationOptionsFromJSON(e);
1225
+ let { challenge: t, user: n, excludeCredentials: r } = e, a = i(e, [
1226
+ "challenge",
1227
+ "user",
1228
+ "excludeCredentials"
1229
+ ]), o = D(t).buffer, s = Object.assign(Object.assign({}, n), { id: D(n.id).buffer }), c = Object.assign(Object.assign({}, a), {
1230
+ challenge: o,
1231
+ user: s
1232
+ });
1233
+ if (r && r.length > 0) {
1234
+ c.excludeCredentials = Array(r.length);
1235
+ for (let e = 0; e < r.length; e++) {
1236
+ let t = r[e];
1237
+ c.excludeCredentials[e] = Object.assign(Object.assign({}, t), {
1238
+ id: D(t.id).buffer,
1239
+ type: t.type || "public-key",
1240
+ transports: t.transports
1241
+ });
1242
+ }
1243
+ }
1244
+ return c;
1245
+ }
1246
+ function lt(e) {
1247
+ if (!e) throw Error("Credential request options are required");
1248
+ if (typeof PublicKeyCredential < "u" && "parseRequestOptionsFromJSON" in PublicKeyCredential && typeof PublicKeyCredential.parseRequestOptionsFromJSON == "function") return PublicKeyCredential.parseRequestOptionsFromJSON(e);
1249
+ let { challenge: t, allowCredentials: n } = e, r = i(e, ["challenge", "allowCredentials"]), a = D(t).buffer, o = Object.assign(Object.assign({}, r), { challenge: a });
1250
+ if (n && n.length > 0) {
1251
+ o.allowCredentials = Array(n.length);
1252
+ for (let e = 0; e < n.length; e++) {
1253
+ let t = n[e];
1254
+ o.allowCredentials[e] = Object.assign(Object.assign({}, t), {
1255
+ id: D(t.id).buffer,
1256
+ type: t.type || "public-key",
1257
+ transports: t.transports
1258
+ });
1259
+ }
1260
+ }
1261
+ return o;
1262
+ }
1263
+ function ut(e) {
1264
+ if ("toJSON" in e && typeof e.toJSON == "function") return e.toJSON();
1265
+ let t = e;
1266
+ return {
1267
+ id: e.id,
1268
+ rawId: e.id,
1269
+ response: {
1270
+ attestationObject: O(new Uint8Array(e.response.attestationObject)),
1271
+ clientDataJSON: O(new Uint8Array(e.response.clientDataJSON))
1272
+ },
1273
+ type: "public-key",
1274
+ clientExtensionResults: e.getClientExtensionResults(),
1275
+ authenticatorAttachment: t.authenticatorAttachment ?? void 0
1276
+ };
1277
+ }
1278
+ function dt(e) {
1279
+ if ("toJSON" in e && typeof e.toJSON == "function") return e.toJSON();
1280
+ let t = e, n = e.getClientExtensionResults(), r = e.response;
1281
+ return {
1282
+ id: e.id,
1283
+ rawId: e.id,
1284
+ response: {
1285
+ authenticatorData: O(new Uint8Array(r.authenticatorData)),
1286
+ clientDataJSON: O(new Uint8Array(r.clientDataJSON)),
1287
+ signature: O(new Uint8Array(r.signature)),
1288
+ userHandle: r.userHandle ? O(new Uint8Array(r.userHandle)) : void 0
1289
+ },
1290
+ type: "public-key",
1291
+ clientExtensionResults: n,
1292
+ authenticatorAttachment: t.authenticatorAttachment ?? void 0
1293
+ };
1294
+ }
1295
+ function ft(e) {
1296
+ return e === "localhost" || /^([a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,}$/i.test(e);
1297
+ }
1298
+ function pt() {
1299
+ return !!(k() && "PublicKeyCredential" in window && window.PublicKeyCredential && "credentials" in navigator && typeof (navigator == null ? void 0 : navigator.credentials)?.create == "function" && typeof (navigator == null ? void 0 : navigator.credentials)?.get == "function");
1300
+ }
1301
+ async function mt(e) {
1302
+ try {
1303
+ let t = await navigator.credentials.create(e);
1304
+ return t ? t instanceof PublicKeyCredential ? {
1305
+ data: t,
1306
+ error: null
1307
+ } : {
1308
+ data: null,
1309
+ error: new G("Browser returned unexpected credential type", t)
1310
+ } : {
1311
+ data: null,
1312
+ error: new G("Empty credential response", t)
1313
+ };
1314
+ } catch (t) {
1315
+ return {
1316
+ data: null,
1317
+ error: at({
1318
+ error: t,
1319
+ options: e
1320
+ })
1321
+ };
1322
+ }
1323
+ }
1324
+ async function ht(e) {
1325
+ try {
1326
+ let t = await navigator.credentials.get(e);
1327
+ return t ? t instanceof PublicKeyCredential ? {
1328
+ data: t,
1329
+ error: null
1330
+ } : {
1331
+ data: null,
1332
+ error: new G("Browser returned unexpected credential type", t)
1333
+ } : {
1334
+ data: null,
1335
+ error: new G("Empty credential response", t)
1336
+ };
1337
+ } catch (t) {
1338
+ return {
1339
+ data: null,
1340
+ error: ot({
1341
+ error: t,
1342
+ options: e
1343
+ })
1344
+ };
1345
+ }
1346
+ }
1347
+ var gt = {
1348
+ hints: ["security-key"],
1349
+ authenticatorSelection: {
1350
+ authenticatorAttachment: "cross-platform",
1351
+ requireResidentKey: !1,
1352
+ userVerification: "preferred",
1353
+ residentKey: "discouraged"
1354
+ },
1355
+ attestation: "direct"
1356
+ }, _t = {
1357
+ userVerification: "preferred",
1358
+ hints: ["security-key"],
1359
+ attestation: "direct"
1360
+ };
1361
+ function K(...e) {
1362
+ let t = (e) => typeof e == "object" && !!e && !Array.isArray(e), n = (e) => e instanceof ArrayBuffer || ArrayBuffer.isView(e), r = {};
1363
+ for (let i of e) if (i) for (let e in i) {
1364
+ let a = i[e];
1365
+ if (a !== void 0) if (Array.isArray(a)) r[e] = a;
1366
+ else if (n(a)) r[e] = a;
1367
+ else if (t(a)) {
1368
+ let n = r[e];
1369
+ t(n) ? r[e] = K(n, a) : r[e] = K(a);
1370
+ } else r[e] = a;
1371
+ }
1372
+ return r;
1373
+ }
1374
+ function vt(e, t) {
1375
+ return K(gt, e, t || {});
1376
+ }
1377
+ function yt(e, t) {
1378
+ return K(_t, e, t || {});
1379
+ }
1380
+ var bt = class {
1381
+ constructor(e) {
1382
+ this.client = e, this.enroll = this._enroll.bind(this), this.challenge = this._challenge.bind(this), this.verify = this._verify.bind(this), this.authenticate = this._authenticate.bind(this), this.register = this._register.bind(this);
1383
+ }
1384
+ async _enroll(e) {
1385
+ return this.client.mfa.enroll(Object.assign(Object.assign({}, e), { factorType: "webauthn" }));
1386
+ }
1387
+ async _challenge({ factorId: e, webauthn: t, friendlyName: n, signal: r }, i) {
1388
+ try {
1389
+ let { data: a, error: o } = await this.client.mfa.challenge({
1390
+ factorId: e,
1391
+ webauthn: t
1392
+ });
1393
+ if (!a) return {
1394
+ data: null,
1395
+ error: o
1396
+ };
1397
+ let s = r ?? st.createNewAbortSignal();
1398
+ if (a.webauthn.type === "create") {
1399
+ let { user: e } = a.webauthn.credential_options.publicKey;
1400
+ if (!e.name) {
1401
+ let t = n;
1402
+ if (t) e.name = `${e.id}:${t}`;
1403
+ else {
1404
+ let t = (await this.client.getUser()).data.user, n = t?.user_metadata?.name || t?.email || t?.id || "User";
1405
+ e.name = `${e.id}:${n}`;
1406
+ }
1407
+ }
1408
+ e.displayName ||= e.name;
1409
+ }
1410
+ switch (a.webauthn.type) {
1411
+ case "create": {
1412
+ let { data: t, error: n } = await mt({
1413
+ publicKey: vt(a.webauthn.credential_options.publicKey, i?.create),
1414
+ signal: s
1415
+ });
1416
+ return t ? {
1417
+ data: {
1418
+ factorId: e,
1419
+ challengeId: a.id,
1420
+ webauthn: {
1421
+ type: a.webauthn.type,
1422
+ credential_response: t
1423
+ }
1424
+ },
1425
+ error: null
1426
+ } : {
1427
+ data: null,
1428
+ error: n
1429
+ };
1430
+ }
1431
+ case "request": {
1432
+ let t = yt(a.webauthn.credential_options.publicKey, i?.request), { data: n, error: r } = await ht(Object.assign(Object.assign({}, a.webauthn.credential_options), {
1433
+ publicKey: t,
1434
+ signal: s
1435
+ }));
1436
+ return n ? {
1437
+ data: {
1438
+ factorId: e,
1439
+ challengeId: a.id,
1440
+ webauthn: {
1441
+ type: a.webauthn.type,
1442
+ credential_response: n
1443
+ }
1444
+ },
1445
+ error: null
1446
+ } : {
1447
+ data: null,
1448
+ error: r
1449
+ };
1450
+ }
1451
+ }
1452
+ } catch (e) {
1453
+ return v(e) ? {
1454
+ data: null,
1455
+ error: e
1456
+ } : {
1457
+ data: null,
1458
+ error: new y("Unexpected error in challenge", e)
1459
+ };
1460
+ }
1461
+ }
1462
+ async _verify({ challengeId: e, factorId: t, webauthn: n }) {
1463
+ return this.client.mfa.verify({
1464
+ factorId: t,
1465
+ challengeId: e,
1466
+ webauthn: n
1467
+ });
1468
+ }
1469
+ async _authenticate({ factorId: e, webauthn: { rpId: t = typeof window < "u" ? window.location.hostname : void 0, rpOrigins: n = typeof window < "u" ? [window.location.origin] : void 0, signal: r } = {} }, i) {
1470
+ if (!t) return {
1471
+ data: null,
1472
+ error: new _("rpId is required for WebAuthn authentication")
1473
+ };
1474
+ try {
1475
+ if (!pt()) return {
1476
+ data: null,
1477
+ error: new y("Browser does not support WebAuthn", null)
1478
+ };
1479
+ let { data: a, error: o } = await this.challenge({
1480
+ factorId: e,
1481
+ webauthn: {
1482
+ rpId: t,
1483
+ rpOrigins: n
1484
+ },
1485
+ signal: r
1486
+ }, { request: i });
1487
+ if (!a) return {
1488
+ data: null,
1489
+ error: o
1490
+ };
1491
+ let { webauthn: s } = a;
1492
+ return this._verify({
1493
+ factorId: e,
1494
+ challengeId: a.challengeId,
1495
+ webauthn: {
1496
+ type: s.type,
1497
+ rpId: t,
1498
+ rpOrigins: n,
1499
+ credential_response: s.credential_response
1500
+ }
1501
+ });
1502
+ } catch (e) {
1503
+ return v(e) ? {
1504
+ data: null,
1505
+ error: e
1506
+ } : {
1507
+ data: null,
1508
+ error: new y("Unexpected error in authenticate", e)
1509
+ };
1510
+ }
1511
+ }
1512
+ async _register({ friendlyName: e, webauthn: { rpId: t = typeof window < "u" ? window.location.hostname : void 0, rpOrigins: n = typeof window < "u" ? [window.location.origin] : void 0, signal: r } = {} }, i) {
1513
+ if (!t) return {
1514
+ data: null,
1515
+ error: new _("rpId is required for WebAuthn registration")
1516
+ };
1517
+ try {
1518
+ if (!pt()) return {
1519
+ data: null,
1520
+ error: new y("Browser does not support WebAuthn", null)
1521
+ };
1522
+ let { data: a, error: o } = await this._enroll({ friendlyName: e });
1523
+ if (!a) return await this.client.mfa.listFactors().then((t) => t.data?.all.find((t) => t.factor_type === "webauthn" && t.friendly_name === e && t.status !== "unverified")).then((e) => e ? this.client.mfa.unenroll({ factorId: e?.id }) : void 0), {
1524
+ data: null,
1525
+ error: o
1526
+ };
1527
+ let { data: s, error: c } = await this._challenge({
1528
+ factorId: a.id,
1529
+ friendlyName: a.friendly_name,
1530
+ webauthn: {
1531
+ rpId: t,
1532
+ rpOrigins: n
1533
+ },
1534
+ signal: r
1535
+ }, { create: i });
1536
+ return s ? this._verify({
1537
+ factorId: a.id,
1538
+ challengeId: s.challengeId,
1539
+ webauthn: {
1540
+ rpId: t,
1541
+ rpOrigins: n,
1542
+ type: s.webauthn.type,
1543
+ credential_response: s.webauthn.credential_response
1544
+ }
1545
+ }) : {
1546
+ data: null,
1547
+ error: c
1548
+ };
1549
+ } catch (e) {
1550
+ return v(e) ? {
1551
+ data: null,
1552
+ error: e
1553
+ } : {
1554
+ data: null,
1555
+ error: new y("Unexpected error in register", e)
1556
+ };
1557
+ }
1558
+ }
1559
+ };
1560
+ //#endregion
1561
+ //#region node_modules/@supabase/auth-js/dist/module/GoTrueClient.js
1562
+ et();
1563
+ var xt = {
1564
+ url: p,
1565
+ storageKey: m,
1566
+ autoRefreshToken: !0,
1567
+ persistSession: !0,
1568
+ detectSessionInUrl: !0,
1569
+ headers: h,
1570
+ flowType: "implicit",
1571
+ debug: !1,
1572
+ hasCustomAuthorizationHeader: !1,
1573
+ throwOnError: !1,
1574
+ lockAcquireTimeout: 5e3,
1575
+ skipAutoInitialize: !1
1576
+ };
1577
+ async function St(e, t, n) {
1578
+ return await n();
1579
+ }
1580
+ var q = {}, Ct = class e {
1581
+ get jwks() {
1582
+ return q[this.storageKey]?.jwks ?? { keys: [] };
1583
+ }
1584
+ set jwks(e) {
1585
+ q[this.storageKey] = Object.assign(Object.assign({}, q[this.storageKey]), { jwks: e });
1586
+ }
1587
+ get jwks_cached_at() {
1588
+ return q[this.storageKey]?.cachedAt ?? -(2 ** 53 - 1);
1589
+ }
1590
+ set jwks_cached_at(e) {
1591
+ q[this.storageKey] = Object.assign(Object.assign({}, q[this.storageKey]), { cachedAt: e });
1592
+ }
1593
+ constructor(t) {
1594
+ var n;
1595
+ this.userStorage = null, this.memoryStorage = null, this.stateChangeEmitters = /* @__PURE__ */ new Map(), this.autoRefreshTicker = null, this.autoRefreshTickTimeout = null, this.visibilityChangedCallback = null, this.refreshingDeferred = null, this.initializePromise = null, this.detectSessionInUrl = !0, this.hasCustomAuthorizationHeader = !1, this.suppressGetSessionWarning = !1, this.lockAcquired = !1, this.pendingInLock = [], this.broadcastChannel = null, this.logger = console.log;
1596
+ let r = Object.assign(Object.assign({}, xt), t);
1597
+ if (this.storageKey = r.storageKey, this.instanceID = e.nextInstanceID[this.storageKey] ?? 0, e.nextInstanceID[this.storageKey] = this.instanceID + 1, this.logDebugMessages = !!r.debug, typeof r.debug == "function" && (this.logger = r.debug), this.instanceID > 0 && k()) {
1598
+ let e = `${this._logPrefix()} Multiple GoTrueClient instances detected in the same browser context. It is not an error, but this should be avoided as it may produce undefined behavior when used concurrently under the same storage key.`;
1599
+ console.warn(e), this.logDebugMessages && console.trace(e);
1600
+ }
1601
+ if (this.persistSession = r.persistSession, this.autoRefreshToken = r.autoRefreshToken, this.admin = new Ye({
1602
+ url: r.url,
1603
+ headers: r.headers,
1604
+ fetch: r.fetch
1605
+ }), this.url = r.url, this.headers = r.headers, this.fetch = we(r.fetch), this.lock = r.lock || St, this.detectSessionInUrl = r.detectSessionInUrl, this.flowType = r.flowType, this.hasCustomAuthorizationHeader = r.hasCustomAuthorizationHeader, this.throwOnError = r.throwOnError, this.lockAcquireTimeout = r.lockAcquireTimeout, r.lock ? this.lock = r.lock : this.persistSession && k() && (globalThis == null ? void 0 : globalThis.navigator)?.locks ? this.lock = $e : this.lock = St, this.jwks || (this.jwks = { keys: [] }, this.jwks_cached_at = -(2 ** 53 - 1)), this.mfa = {
1606
+ verify: this._verify.bind(this),
1607
+ enroll: this._enroll.bind(this),
1608
+ unenroll: this._unenroll.bind(this),
1609
+ challenge: this._challenge.bind(this),
1610
+ listFactors: this._listFactors.bind(this),
1611
+ challengeAndVerify: this._challengeAndVerify.bind(this),
1612
+ getAuthenticatorAssuranceLevel: this._getAuthenticatorAssuranceLevel.bind(this),
1613
+ webauthn: new bt(this)
1614
+ }, this.oauth = {
1615
+ getAuthorizationDetails: this._getAuthorizationDetails.bind(this),
1616
+ approveAuthorization: this._approveAuthorization.bind(this),
1617
+ denyAuthorization: this._denyAuthorization.bind(this),
1618
+ listGrants: this._listOAuthGrants.bind(this),
1619
+ revokeGrant: this._revokeOAuthGrant.bind(this)
1620
+ }, this.persistSession ? (r.storage ? this.storage = r.storage : Se() ? this.storage = globalThis.localStorage : (this.memoryStorage = {}, this.storage = Xe(this.memoryStorage)), r.userStorage && (this.userStorage = r.userStorage)) : (this.memoryStorage = {}, this.storage = Xe(this.memoryStorage)), k() && globalThis.BroadcastChannel && this.persistSession && this.storageKey) {
1621
+ try {
1622
+ this.broadcastChannel = new globalThis.BroadcastChannel(this.storageKey);
1623
+ } catch (e) {
1624
+ console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available", e);
1625
+ }
1626
+ (n = this.broadcastChannel) == null || n.addEventListener("message", async (e) => {
1627
+ this._debug("received broadcast notification from other tab or client", e);
1628
+ try {
1629
+ await this._notifyAllSubscribers(e.data.event, e.data.session, !1);
1630
+ } catch (e) {
1631
+ this._debug("#broadcastChannel", "error", e);
1632
+ }
1633
+ });
1634
+ }
1635
+ r.skipAutoInitialize || this.initialize().catch((e) => {
1636
+ this._debug("#initialize()", "error", e);
1637
+ });
1638
+ }
1639
+ isThrowOnErrorEnabled() {
1640
+ return this.throwOnError;
1641
+ }
1642
+ _returnResult(e) {
1643
+ if (this.throwOnError && e && e.error) throw e.error;
1644
+ return e;
1645
+ }
1646
+ _logPrefix() {
1647
+ return `GoTrueClient@${this.storageKey}:${this.instanceID} (${u}) ${(/* @__PURE__ */ new Date()).toISOString()}`;
1648
+ }
1649
+ _debug(...e) {
1650
+ return this.logDebugMessages && this.logger(this._logPrefix(), ...e), this;
1651
+ }
1652
+ async initialize() {
1653
+ return this.initializePromise ||= (async () => await this._acquireLock(this.lockAcquireTimeout, async () => await this._initialize()))(), await this.initializePromise;
1654
+ }
1655
+ async _initialize() {
1656
+ try {
1657
+ let e = {}, t = "none";
1658
+ if (k() && (e = Ce(window.location.href), this._isImplicitGrantCallback(e) ? t = "implicit" : await this._isPKCECallback(e) && (t = "pkce")), k() && this.detectSessionInUrl && t !== "none") {
1659
+ let { data: n, error: r } = await this._getSessionFromURL(e, t);
1660
+ if (r) {
1661
+ if (this._debug("#_initialize()", "error detecting session from URL", r), ie(r)) {
1662
+ let e = r.details?.code;
1663
+ if (e === "identity_already_exists" || e === "identity_not_found" || e === "single_identity_not_deletable") return { error: r };
1664
+ }
1665
+ return { error: r };
1666
+ }
1667
+ let { session: i, redirectType: a } = n;
1668
+ return this._debug("#_initialize()", "detected session in URL", i, "redirect type", a), await this._saveSession(i), setTimeout(async () => {
1669
+ a === "recovery" ? await this._notifyAllSubscribers("PASSWORD_RECOVERY", i) : await this._notifyAllSubscribers("SIGNED_IN", i);
1670
+ }, 0), { error: null };
1671
+ }
1672
+ return await this._recoverAndRefresh(), { error: null };
1673
+ } catch (e) {
1674
+ return v(e) ? this._returnResult({ error: e }) : this._returnResult({ error: new y("Unexpected error during initialization", e) });
1675
+ } finally {
1676
+ await this._handleVisibilityChange(), this._debug("#_initialize()", "end");
1677
+ }
1678
+ }
1679
+ async signInAnonymously(e) {
1680
+ try {
1681
+ let { data: t, error: n } = await z(this.fetch, "POST", `${this.url}/signup`, {
1682
+ headers: this.headers,
1683
+ body: {
1684
+ data: e?.options?.data ?? {},
1685
+ gotrue_meta_security: { captcha_token: e?.options?.captchaToken }
1686
+ },
1687
+ xform: B
1688
+ });
1689
+ if (n || !t) return this._returnResult({
1690
+ data: {
1691
+ user: null,
1692
+ session: null
1693
+ },
1694
+ error: n
1695
+ });
1696
+ let r = t.session, i = t.user;
1697
+ return t.session && (await this._saveSession(t.session), await this._notifyAllSubscribers("SIGNED_IN", r)), this._returnResult({
1698
+ data: {
1699
+ user: i,
1700
+ session: r
1701
+ },
1702
+ error: null
1703
+ });
1704
+ } catch (e) {
1705
+ if (v(e)) return this._returnResult({
1706
+ data: {
1707
+ user: null,
1708
+ session: null
1709
+ },
1710
+ error: e
1711
+ });
1712
+ throw e;
1713
+ }
1714
+ }
1715
+ async signUp(e) {
1716
+ try {
1717
+ let t;
1718
+ if ("email" in e) {
1719
+ let { email: n, password: r, options: i } = e, a = null, o = null;
1720
+ this.flowType === "pkce" && ([a, o] = await F(this.storage, this.storageKey)), t = await z(this.fetch, "POST", `${this.url}/signup`, {
1721
+ headers: this.headers,
1722
+ redirectTo: i?.emailRedirectTo,
1723
+ body: {
1724
+ email: n,
1725
+ password: r,
1726
+ data: i?.data ?? {},
1727
+ gotrue_meta_security: { captcha_token: i?.captchaToken },
1728
+ code_challenge: a,
1729
+ code_challenge_method: o
1730
+ },
1731
+ xform: B
1732
+ });
1733
+ } else if ("phone" in e) {
1734
+ let { phone: n, password: r, options: i } = e;
1735
+ t = await z(this.fetch, "POST", `${this.url}/signup`, {
1736
+ headers: this.headers,
1737
+ body: {
1738
+ phone: n,
1739
+ password: r,
1740
+ data: i?.data ?? {},
1741
+ channel: i?.channel ?? "sms",
1742
+ gotrue_meta_security: { captcha_token: i?.captchaToken }
1743
+ },
1744
+ xform: B
1745
+ });
1746
+ } else throw new w("You must provide either an email or phone number and a password");
1747
+ let { data: n, error: r } = t;
1748
+ if (r || !n) return await N(this.storage, `${this.storageKey}-code-verifier`), this._returnResult({
1749
+ data: {
1750
+ user: null,
1751
+ session: null
1752
+ },
1753
+ error: r
1754
+ });
1755
+ let i = n.session, a = n.user;
1756
+ return n.session && (await this._saveSession(n.session), await this._notifyAllSubscribers("SIGNED_IN", i)), this._returnResult({
1757
+ data: {
1758
+ user: a,
1759
+ session: i
1760
+ },
1761
+ error: null
1762
+ });
1763
+ } catch (e) {
1764
+ if (await N(this.storage, `${this.storageKey}-code-verifier`), v(e)) return this._returnResult({
1765
+ data: {
1766
+ user: null,
1767
+ session: null
1768
+ },
1769
+ error: e
1770
+ });
1771
+ throw e;
1772
+ }
1773
+ }
1774
+ async signInWithPassword(e) {
1775
+ try {
1776
+ let t;
1777
+ if ("email" in e) {
1778
+ let { email: n, password: r, options: i } = e;
1779
+ t = await z(this.fetch, "POST", `${this.url}/token?grant_type=password`, {
1780
+ headers: this.headers,
1781
+ body: {
1782
+ email: n,
1783
+ password: r,
1784
+ gotrue_meta_security: { captcha_token: i?.captchaToken }
1785
+ },
1786
+ xform: We
1787
+ });
1788
+ } else if ("phone" in e) {
1789
+ let { phone: n, password: r, options: i } = e;
1790
+ t = await z(this.fetch, "POST", `${this.url}/token?grant_type=password`, {
1791
+ headers: this.headers,
1792
+ body: {
1793
+ phone: n,
1794
+ password: r,
1795
+ gotrue_meta_security: { captcha_token: i?.captchaToken }
1796
+ },
1797
+ xform: We
1798
+ });
1799
+ } else throw new w("You must provide either an email or phone number and a password");
1800
+ let { data: n, error: r } = t;
1801
+ if (r) return this._returnResult({
1802
+ data: {
1803
+ user: null,
1804
+ session: null
1805
+ },
1806
+ error: r
1807
+ });
1808
+ if (!n || !n.session || !n.user) {
1809
+ let e = new C();
1810
+ return this._returnResult({
1811
+ data: {
1812
+ user: null,
1813
+ session: null
1814
+ },
1815
+ error: e
1816
+ });
1817
+ }
1818
+ return n.session && (await this._saveSession(n.session), await this._notifyAllSubscribers("SIGNED_IN", n.session)), this._returnResult({
1819
+ data: Object.assign({
1820
+ user: n.user,
1821
+ session: n.session
1822
+ }, n.weak_password ? { weakPassword: n.weak_password } : null),
1823
+ error: r
1824
+ });
1825
+ } catch (e) {
1826
+ if (v(e)) return this._returnResult({
1827
+ data: {
1828
+ user: null,
1829
+ session: null
1830
+ },
1831
+ error: e
1832
+ });
1833
+ throw e;
1834
+ }
1835
+ }
1836
+ async signInWithOAuth(e) {
1837
+ return await this._handleProviderSignIn(e.provider, {
1838
+ redirectTo: e.options?.redirectTo,
1839
+ scopes: e.options?.scopes,
1840
+ queryParams: e.options?.queryParams,
1841
+ skipBrowserRedirect: e.options?.skipBrowserRedirect
1842
+ });
1843
+ }
1844
+ async exchangeCodeForSession(e) {
1845
+ return await this.initializePromise, this._acquireLock(this.lockAcquireTimeout, async () => this._exchangeCodeForSession(e));
1846
+ }
1847
+ async signInWithWeb3(e) {
1848
+ let { chain: t } = e;
1849
+ switch (t) {
1850
+ case "ethereum": return await this.signInWithEthereum(e);
1851
+ case "solana": return await this.signInWithSolana(e);
1852
+ default: throw Error(`@supabase/auth-js: Unsupported chain "${t}"`);
1853
+ }
1854
+ }
1855
+ async signInWithEthereum(e) {
1856
+ let t, n;
1857
+ if ("message" in e) t = e.message, n = e.signature;
1858
+ else {
1859
+ let { chain: r, wallet: i, statement: a, options: o } = e, s;
1860
+ if (!k()) {
1861
+ if (typeof i != "object" || !o?.url) throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");
1862
+ s = i;
1863
+ } else if (typeof i == "object") s = i;
1864
+ else {
1865
+ let e = window;
1866
+ if ("ethereum" in e && typeof e.ethereum == "object" && "request" in e.ethereum && typeof e.ethereum.request == "function") s = e.ethereum;
1867
+ else throw Error("@supabase/auth-js: No compatible Ethereum wallet interface on the window object (window.ethereum) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'ethereum', wallet: resolvedUserWallet }) instead.");
1868
+ }
1869
+ let c = new URL(o?.url ?? window.location.href), l = await s.request({ method: "eth_requestAccounts" }).then((e) => e).catch(() => {
1870
+ throw Error("@supabase/auth-js: Wallet method eth_requestAccounts is missing or invalid");
1871
+ });
1872
+ if (!l || l.length === 0) throw Error("@supabase/auth-js: No accounts available. Please ensure the wallet is connected.");
1873
+ let u = tt(l[0]), d = o?.signInWithEthereum?.chainId;
1874
+ d ||= nt(await s.request({ method: "eth_chainId" })), t = it({
1875
+ domain: c.host,
1876
+ address: u,
1877
+ statement: a,
1878
+ uri: c.href,
1879
+ version: "1",
1880
+ chainId: d,
1881
+ nonce: o?.signInWithEthereum?.nonce,
1882
+ issuedAt: o?.signInWithEthereum?.issuedAt ?? /* @__PURE__ */ new Date(),
1883
+ expirationTime: o?.signInWithEthereum?.expirationTime,
1884
+ notBefore: o?.signInWithEthereum?.notBefore,
1885
+ requestId: o?.signInWithEthereum?.requestId,
1886
+ resources: o?.signInWithEthereum?.resources
1887
+ }), n = await s.request({
1888
+ method: "personal_sign",
1889
+ params: [rt(t), u]
1890
+ });
1891
+ }
1892
+ try {
1893
+ let { data: r, error: i } = await z(this.fetch, "POST", `${this.url}/token?grant_type=web3`, {
1894
+ headers: this.headers,
1895
+ body: Object.assign({
1896
+ chain: "ethereum",
1897
+ message: t,
1898
+ signature: n
1899
+ }, e.options?.captchaToken ? { gotrue_meta_security: { captcha_token: e.options?.captchaToken } } : null),
1900
+ xform: B
1901
+ });
1902
+ if (i) throw i;
1903
+ if (!r || !r.session || !r.user) {
1904
+ let e = new C();
1905
+ return this._returnResult({
1906
+ data: {
1907
+ user: null,
1908
+ session: null
1909
+ },
1910
+ error: e
1911
+ });
1912
+ }
1913
+ return r.session && (await this._saveSession(r.session), await this._notifyAllSubscribers("SIGNED_IN", r.session)), this._returnResult({
1914
+ data: Object.assign({}, r),
1915
+ error: i
1916
+ });
1917
+ } catch (e) {
1918
+ if (v(e)) return this._returnResult({
1919
+ data: {
1920
+ user: null,
1921
+ session: null
1922
+ },
1923
+ error: e
1924
+ });
1925
+ throw e;
1926
+ }
1927
+ }
1928
+ async signInWithSolana(e) {
1929
+ let t, n;
1930
+ if ("message" in e) t = e.message, n = e.signature;
1931
+ else {
1932
+ let { chain: r, wallet: i, statement: a, options: o } = e, s;
1933
+ if (!k()) {
1934
+ if (typeof i != "object" || !o?.url) throw Error("@supabase/auth-js: Both wallet and url must be specified in non-browser environments.");
1935
+ s = i;
1936
+ } else if (typeof i == "object") s = i;
1937
+ else {
1938
+ let e = window;
1939
+ if ("solana" in e && typeof e.solana == "object" && ("signIn" in e.solana && typeof e.solana.signIn == "function" || "signMessage" in e.solana && typeof e.solana.signMessage == "function")) s = e.solana;
1940
+ else throw Error("@supabase/auth-js: No compatible Solana wallet interface on the window object (window.solana) detected. Make sure the user already has a wallet installed and connected for this app. Prefer passing the wallet interface object directly to signInWithWeb3({ chain: 'solana', wallet: resolvedUserWallet }) instead.");
1941
+ }
1942
+ let c = new URL(o?.url ?? window.location.href);
1943
+ if ("signIn" in s && s.signIn) {
1944
+ let e = await s.signIn(Object.assign(Object.assign(Object.assign({ issuedAt: (/* @__PURE__ */ new Date()).toISOString() }, o?.signInWithSolana), {
1945
+ version: "1",
1946
+ domain: c.host,
1947
+ uri: c.href
1948
+ }), a ? { statement: a } : null)), r;
1949
+ if (Array.isArray(e) && e[0] && typeof e[0] == "object") r = e[0];
1950
+ else if (e && typeof e == "object" && "signedMessage" in e && "signature" in e) r = e;
1951
+ else throw Error("@supabase/auth-js: Wallet method signIn() returned unrecognized value");
1952
+ if ("signedMessage" in r && "signature" in r && (typeof r.signedMessage == "string" || r.signedMessage instanceof Uint8Array) && r.signature instanceof Uint8Array) t = typeof r.signedMessage == "string" ? r.signedMessage : new TextDecoder().decode(r.signedMessage), n = r.signature;
1953
+ else throw Error("@supabase/auth-js: Wallet method signIn() API returned object without signedMessage and signature fields");
1954
+ } else {
1955
+ if (!("signMessage" in s) || typeof s.signMessage != "function" || !("publicKey" in s) || typeof s != "object" || !s.publicKey || !("toBase58" in s.publicKey) || typeof s.publicKey.toBase58 != "function") throw Error("@supabase/auth-js: Wallet does not have a compatible signMessage() and publicKey.toBase58() API");
1956
+ t = [
1957
+ `${c.host} wants you to sign in with your Solana account:`,
1958
+ s.publicKey.toBase58(),
1959
+ ...a ? [
1960
+ "",
1961
+ a,
1962
+ ""
1963
+ ] : [""],
1964
+ "Version: 1",
1965
+ `URI: ${c.href}`,
1966
+ `Issued At: ${o?.signInWithSolana?.issuedAt ?? (/* @__PURE__ */ new Date()).toISOString()}`,
1967
+ ...o?.signInWithSolana?.notBefore ? [`Not Before: ${o.signInWithSolana.notBefore}`] : [],
1968
+ ...o?.signInWithSolana?.expirationTime ? [`Expiration Time: ${o.signInWithSolana.expirationTime}`] : [],
1969
+ ...o?.signInWithSolana?.chainId ? [`Chain ID: ${o.signInWithSolana.chainId}`] : [],
1970
+ ...o?.signInWithSolana?.nonce ? [`Nonce: ${o.signInWithSolana.nonce}`] : [],
1971
+ ...o?.signInWithSolana?.requestId ? [`Request ID: ${o.signInWithSolana.requestId}`] : [],
1972
+ ...o?.signInWithSolana?.resources?.length ? ["Resources", ...o.signInWithSolana.resources.map((e) => `- ${e}`)] : []
1973
+ ].join("\n");
1974
+ let e = await s.signMessage(new TextEncoder().encode(t), "utf8");
1975
+ if (!e || !(e instanceof Uint8Array)) throw Error("@supabase/auth-js: Wallet signMessage() API returned an recognized value");
1976
+ n = e;
1977
+ }
1978
+ }
1979
+ try {
1980
+ let { data: r, error: i } = await z(this.fetch, "POST", `${this.url}/token?grant_type=web3`, {
1981
+ headers: this.headers,
1982
+ body: Object.assign({
1983
+ chain: "solana",
1984
+ message: t,
1985
+ signature: O(n)
1986
+ }, e.options?.captchaToken ? { gotrue_meta_security: { captcha_token: e.options?.captchaToken } } : null),
1987
+ xform: B
1988
+ });
1989
+ if (i) throw i;
1990
+ if (!r || !r.session || !r.user) {
1991
+ let e = new C();
1992
+ return this._returnResult({
1993
+ data: {
1994
+ user: null,
1995
+ session: null
1996
+ },
1997
+ error: e
1998
+ });
1999
+ }
2000
+ return r.session && (await this._saveSession(r.session), await this._notifyAllSubscribers("SIGNED_IN", r.session)), this._returnResult({
2001
+ data: Object.assign({}, r),
2002
+ error: i
2003
+ });
2004
+ } catch (e) {
2005
+ if (v(e)) return this._returnResult({
2006
+ data: {
2007
+ user: null,
2008
+ session: null
2009
+ },
2010
+ error: e
2011
+ });
2012
+ throw e;
2013
+ }
2014
+ }
2015
+ async _exchangeCodeForSession(e) {
2016
+ let [t, n] = (await M(this.storage, `${this.storageKey}-code-verifier`) ?? "").split("/");
2017
+ try {
2018
+ if (!t && this.flowType === "pkce") throw new oe();
2019
+ let { data: r, error: i } = await z(this.fetch, "POST", `${this.url}/token?grant_type=pkce`, {
2020
+ headers: this.headers,
2021
+ body: {
2022
+ auth_code: e,
2023
+ code_verifier: t
2024
+ },
2025
+ xform: B
2026
+ });
2027
+ if (await N(this.storage, `${this.storageKey}-code-verifier`), i) throw i;
2028
+ if (!r || !r.session || !r.user) {
2029
+ let e = new C();
2030
+ return this._returnResult({
2031
+ data: {
2032
+ user: null,
2033
+ session: null,
2034
+ redirectType: null
2035
+ },
2036
+ error: e
2037
+ });
2038
+ }
2039
+ return r.session && (await this._saveSession(r.session), await this._notifyAllSubscribers("SIGNED_IN", r.session)), this._returnResult({
2040
+ data: Object.assign(Object.assign({}, r), { redirectType: n ?? null }),
2041
+ error: i
2042
+ });
2043
+ } catch (e) {
2044
+ if (await N(this.storage, `${this.storageKey}-code-verifier`), v(e)) return this._returnResult({
2045
+ data: {
2046
+ user: null,
2047
+ session: null,
2048
+ redirectType: null
2049
+ },
2050
+ error: e
2051
+ });
2052
+ throw e;
2053
+ }
2054
+ }
2055
+ async signInWithIdToken(e) {
2056
+ try {
2057
+ let { options: t, provider: n, token: r, access_token: i, nonce: a } = e, { data: o, error: s } = await z(this.fetch, "POST", `${this.url}/token?grant_type=id_token`, {
2058
+ headers: this.headers,
2059
+ body: {
2060
+ provider: n,
2061
+ id_token: r,
2062
+ access_token: i,
2063
+ nonce: a,
2064
+ gotrue_meta_security: { captcha_token: t?.captchaToken }
2065
+ },
2066
+ xform: B
2067
+ });
2068
+ if (s) return this._returnResult({
2069
+ data: {
2070
+ user: null,
2071
+ session: null
2072
+ },
2073
+ error: s
2074
+ });
2075
+ if (!o || !o.session || !o.user) {
2076
+ let e = new C();
2077
+ return this._returnResult({
2078
+ data: {
2079
+ user: null,
2080
+ session: null
2081
+ },
2082
+ error: e
2083
+ });
2084
+ }
2085
+ return o.session && (await this._saveSession(o.session), await this._notifyAllSubscribers("SIGNED_IN", o.session)), this._returnResult({
2086
+ data: o,
2087
+ error: s
2088
+ });
2089
+ } catch (e) {
2090
+ if (v(e)) return this._returnResult({
2091
+ data: {
2092
+ user: null,
2093
+ session: null
2094
+ },
2095
+ error: e
2096
+ });
2097
+ throw e;
2098
+ }
2099
+ }
2100
+ async signInWithOtp(e) {
2101
+ try {
2102
+ if ("email" in e) {
2103
+ let { email: t, options: n } = e, r = null, i = null;
2104
+ this.flowType === "pkce" && ([r, i] = await F(this.storage, this.storageKey));
2105
+ let { error: a } = await z(this.fetch, "POST", `${this.url}/otp`, {
2106
+ headers: this.headers,
2107
+ body: {
2108
+ email: t,
2109
+ data: n?.data ?? {},
2110
+ create_user: n?.shouldCreateUser ?? !0,
2111
+ gotrue_meta_security: { captcha_token: n?.captchaToken },
2112
+ code_challenge: r,
2113
+ code_challenge_method: i
2114
+ },
2115
+ redirectTo: n?.emailRedirectTo
2116
+ });
2117
+ return this._returnResult({
2118
+ data: {
2119
+ user: null,
2120
+ session: null
2121
+ },
2122
+ error: a
2123
+ });
2124
+ }
2125
+ if ("phone" in e) {
2126
+ let { phone: t, options: n } = e, { data: r, error: i } = await z(this.fetch, "POST", `${this.url}/otp`, {
2127
+ headers: this.headers,
2128
+ body: {
2129
+ phone: t,
2130
+ data: n?.data ?? {},
2131
+ create_user: n?.shouldCreateUser ?? !0,
2132
+ gotrue_meta_security: { captcha_token: n?.captchaToken },
2133
+ channel: n?.channel ?? "sms"
2134
+ }
2135
+ });
2136
+ return this._returnResult({
2137
+ data: {
2138
+ user: null,
2139
+ session: null,
2140
+ messageId: r?.message_id
2141
+ },
2142
+ error: i
2143
+ });
2144
+ }
2145
+ throw new w("You must provide either an email or phone number.");
2146
+ } catch (e) {
2147
+ if (await N(this.storage, `${this.storageKey}-code-verifier`), v(e)) return this._returnResult({
2148
+ data: {
2149
+ user: null,
2150
+ session: null
2151
+ },
2152
+ error: e
2153
+ });
2154
+ throw e;
2155
+ }
2156
+ }
2157
+ async verifyOtp(e) {
2158
+ try {
2159
+ let t, n;
2160
+ "options" in e && (t = e.options?.redirectTo, n = e.options?.captchaToken);
2161
+ let { data: r, error: i } = await z(this.fetch, "POST", `${this.url}/verify`, {
2162
+ headers: this.headers,
2163
+ body: Object.assign(Object.assign({}, e), { gotrue_meta_security: { captcha_token: n } }),
2164
+ redirectTo: t,
2165
+ xform: B
2166
+ });
2167
+ if (i) throw i;
2168
+ if (!r) throw /* @__PURE__ */ Error("An error occurred on token verification.");
2169
+ let a = r.session, o = r.user;
2170
+ return a?.access_token && (await this._saveSession(a), await this._notifyAllSubscribers(e.type == "recovery" ? "PASSWORD_RECOVERY" : "SIGNED_IN", a)), this._returnResult({
2171
+ data: {
2172
+ user: o,
2173
+ session: a
2174
+ },
2175
+ error: null
2176
+ });
2177
+ } catch (e) {
2178
+ if (v(e)) return this._returnResult({
2179
+ data: {
2180
+ user: null,
2181
+ session: null
2182
+ },
2183
+ error: e
2184
+ });
2185
+ throw e;
2186
+ }
2187
+ }
2188
+ async signInWithSSO(e) {
2189
+ try {
2190
+ let t = null, n = null;
2191
+ this.flowType === "pkce" && ([t, n] = await F(this.storage, this.storageKey));
2192
+ let r = await z(this.fetch, "POST", `${this.url}/sso`, {
2193
+ body: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, "providerId" in e ? { provider_id: e.providerId } : null), "domain" in e ? { domain: e.domain } : null), { redirect_to: e.options?.redirectTo ?? void 0 }), e?.options?.captchaToken ? { gotrue_meta_security: { captcha_token: e.options.captchaToken } } : null), {
2194
+ skip_http_redirect: !0,
2195
+ code_challenge: t,
2196
+ code_challenge_method: n
2197
+ }),
2198
+ headers: this.headers,
2199
+ xform: Ge
2200
+ });
2201
+ return r.data?.url && k() && !e.options?.skipBrowserRedirect && window.location.assign(r.data.url), this._returnResult(r);
2202
+ } catch (e) {
2203
+ if (await N(this.storage, `${this.storageKey}-code-verifier`), v(e)) return this._returnResult({
2204
+ data: null,
2205
+ error: e
2206
+ });
2207
+ throw e;
2208
+ }
2209
+ }
2210
+ async reauthenticate() {
2211
+ return await this.initializePromise, await this._acquireLock(this.lockAcquireTimeout, async () => await this._reauthenticate());
2212
+ }
2213
+ async _reauthenticate() {
2214
+ try {
2215
+ return await this._useSession(async (e) => {
2216
+ let { data: { session: t }, error: n } = e;
2217
+ if (n) throw n;
2218
+ if (!t) throw new x();
2219
+ let { error: r } = await z(this.fetch, "GET", `${this.url}/reauthenticate`, {
2220
+ headers: this.headers,
2221
+ jwt: t.access_token
2222
+ });
2223
+ return this._returnResult({
2224
+ data: {
2225
+ user: null,
2226
+ session: null
2227
+ },
2228
+ error: r
2229
+ });
2230
+ });
2231
+ } catch (e) {
2232
+ if (v(e)) return this._returnResult({
2233
+ data: {
2234
+ user: null,
2235
+ session: null
2236
+ },
2237
+ error: e
2238
+ });
2239
+ throw e;
2240
+ }
2241
+ }
2242
+ async resend(e) {
2243
+ try {
2244
+ let t = `${this.url}/resend`;
2245
+ if ("email" in e) {
2246
+ let { email: n, type: r, options: i } = e, { error: a } = await z(this.fetch, "POST", t, {
2247
+ headers: this.headers,
2248
+ body: {
2249
+ email: n,
2250
+ type: r,
2251
+ gotrue_meta_security: { captcha_token: i?.captchaToken }
2252
+ },
2253
+ redirectTo: i?.emailRedirectTo
2254
+ });
2255
+ return this._returnResult({
2256
+ data: {
2257
+ user: null,
2258
+ session: null
2259
+ },
2260
+ error: a
2261
+ });
2262
+ } else if ("phone" in e) {
2263
+ let { phone: n, type: r, options: i } = e, { data: a, error: o } = await z(this.fetch, "POST", t, {
2264
+ headers: this.headers,
2265
+ body: {
2266
+ phone: n,
2267
+ type: r,
2268
+ gotrue_meta_security: { captcha_token: i?.captchaToken }
2269
+ }
2270
+ });
2271
+ return this._returnResult({
2272
+ data: {
2273
+ user: null,
2274
+ session: null,
2275
+ messageId: a?.message_id
2276
+ },
2277
+ error: o
2278
+ });
2279
+ }
2280
+ throw new w("You must provide either an email or phone number and a type");
2281
+ } catch (e) {
2282
+ if (v(e)) return this._returnResult({
2283
+ data: {
2284
+ user: null,
2285
+ session: null
2286
+ },
2287
+ error: e
2288
+ });
2289
+ throw e;
2290
+ }
2291
+ }
2292
+ async getSession() {
2293
+ return await this.initializePromise, await this._acquireLock(this.lockAcquireTimeout, async () => this._useSession(async (e) => e));
2294
+ }
2295
+ async _acquireLock(e, t) {
2296
+ this._debug("#_acquireLock", "begin", e);
2297
+ try {
2298
+ if (this.lockAcquired) {
2299
+ let e = this.pendingInLock.length ? this.pendingInLock[this.pendingInLock.length - 1] : Promise.resolve(), n = (async () => (await e, await t()))();
2300
+ return this.pendingInLock.push((async () => {
2301
+ try {
2302
+ await n;
2303
+ } catch {}
2304
+ })()), n;
2305
+ }
2306
+ return await this.lock(`lock:${this.storageKey}`, e, async () => {
2307
+ this._debug("#_acquireLock", "lock acquired for storage key", this.storageKey);
2308
+ try {
2309
+ this.lockAcquired = !0;
2310
+ let e = t();
2311
+ for (this.pendingInLock.push((async () => {
2312
+ try {
2313
+ await e;
2314
+ } catch {}
2315
+ })()), await e; this.pendingInLock.length;) {
2316
+ let e = [...this.pendingInLock];
2317
+ await Promise.all(e), this.pendingInLock.splice(0, e.length);
2318
+ }
2319
+ return await e;
2320
+ } finally {
2321
+ this._debug("#_acquireLock", "lock released for storage key", this.storageKey), this.lockAcquired = !1;
2322
+ }
2323
+ });
2324
+ } finally {
2325
+ this._debug("#_acquireLock", "end");
2326
+ }
2327
+ }
2328
+ async _useSession(e) {
2329
+ this._debug("#_useSession", "begin");
2330
+ try {
2331
+ return await e(await this.__loadSession());
2332
+ } finally {
2333
+ this._debug("#_useSession", "end");
2334
+ }
2335
+ }
2336
+ async __loadSession() {
2337
+ this._debug("#__loadSession()", "begin"), this.lockAcquired || this._debug("#__loadSession()", "used outside of an acquired lock!", (/* @__PURE__ */ Error()).stack);
2338
+ try {
2339
+ let e = null, t = await M(this.storage, this.storageKey);
2340
+ if (this._debug("#getSession()", "session from storage", t), t !== null && (this._isValidSession(t) ? e = t : (this._debug("#getSession()", "session from storage is not valid"), await this._removeSession())), !e) return {
2341
+ data: { session: null },
2342
+ error: null
2343
+ };
2344
+ let n = e.expires_at ? e.expires_at * 1e3 - Date.now() < f : !1;
2345
+ if (this._debug("#__loadSession()", `session has${n ? "" : " not"} expired`, "expires_at", e.expires_at), !n) {
2346
+ if (this.userStorage) {
2347
+ let t = await M(this.userStorage, this.storageKey + "-user");
2348
+ t?.user ? e.user = t.user : e.user = L();
2349
+ }
2350
+ if (this.storage.isServer && e.user && !e.user.__isUserNotAvailableProxy) {
2351
+ let t = { value: this.suppressGetSessionWarning };
2352
+ e.user = Re(e.user, t), t.value && (this.suppressGetSessionWarning = !0);
2353
+ }
2354
+ return {
2355
+ data: { session: e },
2356
+ error: null
2357
+ };
2358
+ }
2359
+ let { data: r, error: i } = await this._callRefreshToken(e.refresh_token);
2360
+ return i ? this._returnResult({
2361
+ data: { session: null },
2362
+ error: i
2363
+ }) : this._returnResult({
2364
+ data: { session: r },
2365
+ error: null
2366
+ });
2367
+ } finally {
2368
+ this._debug("#__loadSession()", "end");
2369
+ }
2370
+ }
2371
+ async getUser(e) {
2372
+ if (e) return await this._getUser(e);
2373
+ await this.initializePromise;
2374
+ let t = await this._acquireLock(this.lockAcquireTimeout, async () => await this._getUser());
2375
+ return t.data.user && (this.suppressGetSessionWarning = !0), t;
2376
+ }
2377
+ async _getUser(e) {
2378
+ try {
2379
+ return e ? await z(this.fetch, "GET", `${this.url}/user`, {
2380
+ headers: this.headers,
2381
+ jwt: e,
2382
+ xform: V
2383
+ }) : await this._useSession(async (e) => {
2384
+ let { data: t, error: n } = e;
2385
+ if (n) throw n;
2386
+ return !t.session?.access_token && !this.hasCustomAuthorizationHeader ? {
2387
+ data: { user: null },
2388
+ error: new x()
2389
+ } : await z(this.fetch, "GET", `${this.url}/user`, {
2390
+ headers: this.headers,
2391
+ jwt: t.session?.access_token ?? void 0,
2392
+ xform: V
2393
+ });
2394
+ });
2395
+ } catch (e) {
2396
+ if (v(e)) return S(e) && (await this._removeSession(), await N(this.storage, `${this.storageKey}-code-verifier`)), this._returnResult({
2397
+ data: { user: null },
2398
+ error: e
2399
+ });
2400
+ throw e;
2401
+ }
2402
+ }
2403
+ async updateUser(e, t = {}) {
2404
+ return await this.initializePromise, await this._acquireLock(this.lockAcquireTimeout, async () => await this._updateUser(e, t));
2405
+ }
2406
+ async _updateUser(e, t = {}) {
2407
+ try {
2408
+ return await this._useSession(async (n) => {
2409
+ let { data: r, error: i } = n;
2410
+ if (i) throw i;
2411
+ if (!r.session) throw new x();
2412
+ let a = r.session, o = null, s = null;
2413
+ this.flowType === "pkce" && e.email != null && ([o, s] = await F(this.storage, this.storageKey));
2414
+ let { data: c, error: l } = await z(this.fetch, "PUT", `${this.url}/user`, {
2415
+ headers: this.headers,
2416
+ redirectTo: t?.emailRedirectTo,
2417
+ body: Object.assign(Object.assign({}, e), {
2418
+ code_challenge: o,
2419
+ code_challenge_method: s
2420
+ }),
2421
+ jwt: a.access_token,
2422
+ xform: V
2423
+ });
2424
+ if (l) throw l;
2425
+ return a.user = c.user, await this._saveSession(a), await this._notifyAllSubscribers("USER_UPDATED", a), this._returnResult({
2426
+ data: { user: a.user },
2427
+ error: null
2428
+ });
2429
+ });
2430
+ } catch (e) {
2431
+ if (await N(this.storage, `${this.storageKey}-code-verifier`), v(e)) return this._returnResult({
2432
+ data: { user: null },
2433
+ error: e
2434
+ });
2435
+ throw e;
2436
+ }
2437
+ }
2438
+ async setSession(e) {
2439
+ return await this.initializePromise, await this._acquireLock(this.lockAcquireTimeout, async () => await this._setSession(e));
2440
+ }
2441
+ async _setSession(e) {
2442
+ try {
2443
+ if (!e.access_token || !e.refresh_token) throw new x();
2444
+ let t = Date.now() / 1e3, n = t, r = !0, i = null, { payload: a } = P(e.access_token);
2445
+ if (a.exp && (n = a.exp, r = n <= t), r) {
2446
+ let { data: t, error: n } = await this._callRefreshToken(e.refresh_token);
2447
+ if (n) return this._returnResult({
2448
+ data: {
2449
+ user: null,
2450
+ session: null
2451
+ },
2452
+ error: n
2453
+ });
2454
+ if (!t) return {
2455
+ data: {
2456
+ user: null,
2457
+ session: null
2458
+ },
2459
+ error: null
2460
+ };
2461
+ i = t;
2462
+ } else {
2463
+ let { data: r, error: a } = await this._getUser(e.access_token);
2464
+ if (a) return this._returnResult({
2465
+ data: {
2466
+ user: null,
2467
+ session: null
2468
+ },
2469
+ error: a
2470
+ });
2471
+ i = {
2472
+ access_token: e.access_token,
2473
+ refresh_token: e.refresh_token,
2474
+ user: r.user,
2475
+ token_type: "bearer",
2476
+ expires_in: n - t,
2477
+ expires_at: n
2478
+ }, await this._saveSession(i), await this._notifyAllSubscribers("SIGNED_IN", i);
2479
+ }
2480
+ return this._returnResult({
2481
+ data: {
2482
+ user: i.user,
2483
+ session: i
2484
+ },
2485
+ error: null
2486
+ });
2487
+ } catch (e) {
2488
+ if (v(e)) return this._returnResult({
2489
+ data: {
2490
+ session: null,
2491
+ user: null
2492
+ },
2493
+ error: e
2494
+ });
2495
+ throw e;
2496
+ }
2497
+ }
2498
+ async refreshSession(e) {
2499
+ return await this.initializePromise, await this._acquireLock(this.lockAcquireTimeout, async () => await this._refreshSession(e));
2500
+ }
2501
+ async _refreshSession(e) {
2502
+ try {
2503
+ return await this._useSession(async (t) => {
2504
+ if (!e) {
2505
+ let { data: n, error: r } = t;
2506
+ if (r) throw r;
2507
+ e = n.session ?? void 0;
2508
+ }
2509
+ if (!e?.refresh_token) throw new x();
2510
+ let { data: n, error: r } = await this._callRefreshToken(e.refresh_token);
2511
+ return r ? this._returnResult({
2512
+ data: {
2513
+ user: null,
2514
+ session: null
2515
+ },
2516
+ error: r
2517
+ }) : n ? this._returnResult({
2518
+ data: {
2519
+ user: n.user,
2520
+ session: n
2521
+ },
2522
+ error: null
2523
+ }) : this._returnResult({
2524
+ data: {
2525
+ user: null,
2526
+ session: null
2527
+ },
2528
+ error: null
2529
+ });
2530
+ });
2531
+ } catch (e) {
2532
+ if (v(e)) return this._returnResult({
2533
+ data: {
2534
+ user: null,
2535
+ session: null
2536
+ },
2537
+ error: e
2538
+ });
2539
+ throw e;
2540
+ }
2541
+ }
2542
+ async _getSessionFromURL(e, t) {
2543
+ try {
2544
+ if (!k()) throw new T("No browser detected.");
2545
+ if (e.error || e.error_description || e.error_code) throw new T(e.error_description || "Error in URL with unspecified error_description", {
2546
+ error: e.error || "unspecified_error",
2547
+ code: e.error_code || "unspecified_code"
2548
+ });
2549
+ switch (t) {
2550
+ case "implicit":
2551
+ if (this.flowType === "pkce") throw new ae("Not a valid PKCE flow url.");
2552
+ break;
2553
+ case "pkce":
2554
+ if (this.flowType === "implicit") throw new T("Not a valid implicit grant flow url.");
2555
+ break;
2556
+ default:
2557
+ }
2558
+ if (t === "pkce") {
2559
+ if (this._debug("#_initialize()", "begin", "is PKCE flow", !0), !e.code) throw new ae("No code detected.");
2560
+ let { data: t, error: n } = await this._exchangeCodeForSession(e.code);
2561
+ if (n) throw n;
2562
+ let r = new URL(window.location.href);
2563
+ return r.searchParams.delete("code"), window.history.replaceState(window.history.state, "", r.toString()), {
2564
+ data: {
2565
+ session: t.session,
2566
+ redirectType: null
2567
+ },
2568
+ error: null
2569
+ };
2570
+ }
2571
+ let { provider_token: n, provider_refresh_token: r, access_token: i, refresh_token: a, expires_in: o, expires_at: s, token_type: c } = e;
2572
+ if (!i || !o || !a || !c) throw new T("No session defined in URL");
2573
+ let l = Math.round(Date.now() / 1e3), u = parseInt(o), d = l + u;
2574
+ s && (d = parseInt(s));
2575
+ let f = d - l;
2576
+ f * 1e3 <= 3e4 && console.warn(`@supabase/gotrue-js: Session as retrieved from URL expires in ${f}s, should have been closer to ${u}s`);
2577
+ let p = d - u;
2578
+ l - p >= 120 ? console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale", p, d, l) : l - p < 0 && console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clock for skew", p, d, l);
2579
+ let { data: m, error: h } = await this._getUser(i);
2580
+ if (h) throw h;
2581
+ let g = {
2582
+ provider_token: n,
2583
+ provider_refresh_token: r,
2584
+ access_token: i,
2585
+ expires_in: u,
2586
+ expires_at: d,
2587
+ refresh_token: a,
2588
+ token_type: c,
2589
+ user: m.user
2590
+ };
2591
+ return window.location.hash = "", this._debug("#_getSessionFromURL()", "clearing window.location.hash"), this._returnResult({
2592
+ data: {
2593
+ session: g,
2594
+ redirectType: e.type
2595
+ },
2596
+ error: null
2597
+ });
2598
+ } catch (e) {
2599
+ if (v(e)) return this._returnResult({
2600
+ data: {
2601
+ session: null,
2602
+ redirectType: null
2603
+ },
2604
+ error: e
2605
+ });
2606
+ throw e;
2607
+ }
2608
+ }
2609
+ _isImplicitGrantCallback(e) {
2610
+ return typeof this.detectSessionInUrl == "function" ? this.detectSessionInUrl(new URL(window.location.href), e) : !!(e.access_token || e.error_description);
2611
+ }
2612
+ async _isPKCECallback(e) {
2613
+ let t = await M(this.storage, `${this.storageKey}-code-verifier`);
2614
+ return !!(e.code && t);
2615
+ }
2616
+ async signOut(e = { scope: "global" }) {
2617
+ return await this.initializePromise, await this._acquireLock(this.lockAcquireTimeout, async () => await this._signOut(e));
2618
+ }
2619
+ async _signOut({ scope: e } = { scope: "global" }) {
2620
+ return await this._useSession(async (t) => {
2621
+ let { data: n, error: r } = t;
2622
+ if (r && !S(r)) return this._returnResult({ error: r });
2623
+ let i = n.session?.access_token;
2624
+ if (i) {
2625
+ let { error: t } = await this.admin.signOut(i, e);
2626
+ if (t && !(re(t) && (t.status === 404 || t.status === 401 || t.status === 403) || S(t))) return this._returnResult({ error: t });
2627
+ }
2628
+ return e !== "others" && (await this._removeSession(), await N(this.storage, `${this.storageKey}-code-verifier`)), this._returnResult({ error: null });
2629
+ });
2630
+ }
2631
+ onAuthStateChange(e) {
2632
+ let t = xe(), n = {
2633
+ id: t,
2634
+ callback: e,
2635
+ unsubscribe: () => {
2636
+ this._debug("#unsubscribe()", "state change callback with id removed", t), this.stateChangeEmitters.delete(t);
2637
+ }
2638
+ };
2639
+ return this._debug("#onAuthStateChange()", "registered callback with id", t), this.stateChangeEmitters.set(t, n), (async () => {
2640
+ await this.initializePromise, await this._acquireLock(this.lockAcquireTimeout, async () => {
2641
+ this._emitInitialSession(t);
2642
+ });
2643
+ })(), { data: { subscription: n } };
2644
+ }
2645
+ async _emitInitialSession(e) {
2646
+ return await this._useSession(async (t) => {
2647
+ try {
2648
+ let { data: { session: n }, error: r } = t;
2649
+ if (r) throw r;
2650
+ await this.stateChangeEmitters.get(e)?.callback("INITIAL_SESSION", n), this._debug("INITIAL_SESSION", "callback id", e, "session", n);
2651
+ } catch (t) {
2652
+ await this.stateChangeEmitters.get(e)?.callback("INITIAL_SESSION", null), this._debug("INITIAL_SESSION", "callback id", e, "error", t), S(t) ? console.warn(t) : console.error(t);
2653
+ }
2654
+ });
2655
+ }
2656
+ async resetPasswordForEmail(e, t = {}) {
2657
+ let n = null, r = null;
2658
+ this.flowType === "pkce" && ([n, r] = await F(this.storage, this.storageKey, !0));
2659
+ try {
2660
+ return await z(this.fetch, "POST", `${this.url}/recover`, {
2661
+ body: {
2662
+ email: e,
2663
+ code_challenge: n,
2664
+ code_challenge_method: r,
2665
+ gotrue_meta_security: { captcha_token: t.captchaToken }
2666
+ },
2667
+ headers: this.headers,
2668
+ redirectTo: t.redirectTo
2669
+ });
2670
+ } catch (e) {
2671
+ if (await N(this.storage, `${this.storageKey}-code-verifier`), v(e)) return this._returnResult({
2672
+ data: null,
2673
+ error: e
2674
+ });
2675
+ throw e;
2676
+ }
2677
+ }
2678
+ async getUserIdentities() {
2679
+ try {
2680
+ let { data: e, error: t } = await this.getUser();
2681
+ if (t) throw t;
2682
+ return this._returnResult({
2683
+ data: { identities: e.user.identities ?? [] },
2684
+ error: null
2685
+ });
2686
+ } catch (e) {
2687
+ if (v(e)) return this._returnResult({
2688
+ data: null,
2689
+ error: e
2690
+ });
2691
+ throw e;
2692
+ }
2693
+ }
2694
+ async linkIdentity(e) {
2695
+ return "token" in e ? this.linkIdentityIdToken(e) : this.linkIdentityOAuth(e);
2696
+ }
2697
+ async linkIdentityOAuth(e) {
2698
+ try {
2699
+ let { data: t, error: n } = await this._useSession(async (t) => {
2700
+ let { data: n, error: r } = t;
2701
+ if (r) throw r;
2702
+ let i = await this._getUrlForProvider(`${this.url}/user/identities/authorize`, e.provider, {
2703
+ redirectTo: e.options?.redirectTo,
2704
+ scopes: e.options?.scopes,
2705
+ queryParams: e.options?.queryParams,
2706
+ skipBrowserRedirect: !0
2707
+ });
2708
+ return await z(this.fetch, "GET", i, {
2709
+ headers: this.headers,
2710
+ jwt: n.session?.access_token ?? void 0
2711
+ });
2712
+ });
2713
+ if (n) throw n;
2714
+ return k() && !e.options?.skipBrowserRedirect && window.location.assign(t?.url), this._returnResult({
2715
+ data: {
2716
+ provider: e.provider,
2717
+ url: t?.url
2718
+ },
2719
+ error: null
2720
+ });
2721
+ } catch (t) {
2722
+ if (v(t)) return this._returnResult({
2723
+ data: {
2724
+ provider: e.provider,
2725
+ url: null
2726
+ },
2727
+ error: t
2728
+ });
2729
+ throw t;
2730
+ }
2731
+ }
2732
+ async linkIdentityIdToken(e) {
2733
+ return await this._useSession(async (t) => {
2734
+ try {
2735
+ let { error: n, data: { session: r } } = t;
2736
+ if (n) throw n;
2737
+ let { options: i, provider: a, token: o, access_token: s, nonce: c } = e, { data: l, error: u } = await z(this.fetch, "POST", `${this.url}/token?grant_type=id_token`, {
2738
+ headers: this.headers,
2739
+ jwt: r?.access_token ?? void 0,
2740
+ body: {
2741
+ provider: a,
2742
+ id_token: o,
2743
+ access_token: s,
2744
+ nonce: c,
2745
+ link_identity: !0,
2746
+ gotrue_meta_security: { captcha_token: i?.captchaToken }
2747
+ },
2748
+ xform: B
2749
+ });
2750
+ return u ? this._returnResult({
2751
+ data: {
2752
+ user: null,
2753
+ session: null
2754
+ },
2755
+ error: u
2756
+ }) : !l || !l.session || !l.user ? this._returnResult({
2757
+ data: {
2758
+ user: null,
2759
+ session: null
2760
+ },
2761
+ error: new C()
2762
+ }) : (l.session && (await this._saveSession(l.session), await this._notifyAllSubscribers("USER_UPDATED", l.session)), this._returnResult({
2763
+ data: l,
2764
+ error: u
2765
+ }));
2766
+ } catch (e) {
2767
+ if (await N(this.storage, `${this.storageKey}-code-verifier`), v(e)) return this._returnResult({
2768
+ data: {
2769
+ user: null,
2770
+ session: null
2771
+ },
2772
+ error: e
2773
+ });
2774
+ throw e;
2775
+ }
2776
+ });
2777
+ }
2778
+ async unlinkIdentity(e) {
2779
+ try {
2780
+ return await this._useSession(async (t) => {
2781
+ let { data: n, error: r } = t;
2782
+ if (r) throw r;
2783
+ return await z(this.fetch, "DELETE", `${this.url}/user/identities/${e.identity_id}`, {
2784
+ headers: this.headers,
2785
+ jwt: n.session?.access_token ?? void 0
2786
+ });
2787
+ });
2788
+ } catch (e) {
2789
+ if (v(e)) return this._returnResult({
2790
+ data: null,
2791
+ error: e
2792
+ });
2793
+ throw e;
2794
+ }
2795
+ }
2796
+ async _refreshAccessToken(e) {
2797
+ let t = `#_refreshAccessToken(${e.substring(0, 5)}...)`;
2798
+ this._debug(t, "begin");
2799
+ try {
2800
+ let n = Date.now();
2801
+ return await Oe(async (n) => (n > 0 && await De(200 * 2 ** (n - 1)), this._debug(t, "refreshing attempt", n), await z(this.fetch, "POST", `${this.url}/token?grant_type=refresh_token`, {
2802
+ body: { refresh_token: e },
2803
+ headers: this.headers,
2804
+ xform: B
2805
+ })), (e, t) => {
2806
+ let r = 200 * 2 ** e;
2807
+ return t && ce(t) && Date.now() + r - n < 3e4;
2808
+ });
2809
+ } catch (e) {
2810
+ if (this._debug(t, "error", e), v(e)) return this._returnResult({
2811
+ data: {
2812
+ session: null,
2813
+ user: null
2814
+ },
2815
+ error: e
2816
+ });
2817
+ throw e;
2818
+ } finally {
2819
+ this._debug(t, "end");
2820
+ }
2821
+ }
2822
+ _isValidSession(e) {
2823
+ return typeof e == "object" && !!e && "access_token" in e && "refresh_token" in e && "expires_at" in e;
2824
+ }
2825
+ async _handleProviderSignIn(e, t) {
2826
+ let n = await this._getUrlForProvider(`${this.url}/authorize`, e, {
2827
+ redirectTo: t.redirectTo,
2828
+ scopes: t.scopes,
2829
+ queryParams: t.queryParams
2830
+ });
2831
+ return this._debug("#_handleProviderSignIn()", "provider", e, "options", t, "url", n), k() && !t.skipBrowserRedirect && window.location.assign(n), {
2832
+ data: {
2833
+ provider: e,
2834
+ url: n
2835
+ },
2836
+ error: null
2837
+ };
2838
+ }
2839
+ async _recoverAndRefresh() {
2840
+ let e = "#_recoverAndRefresh()";
2841
+ this._debug(e, "begin");
2842
+ try {
2843
+ let t = await M(this.storage, this.storageKey);
2844
+ if (t && this.userStorage) {
2845
+ let e = await M(this.userStorage, this.storageKey + "-user");
2846
+ !this.storage.isServer && Object.is(this.storage, this.userStorage) && !e && (e = { user: t.user }, await j(this.userStorage, this.storageKey + "-user", e)), t.user = e?.user ?? L();
2847
+ } else if (t && !t.user && !t.user) {
2848
+ let e = await M(this.storage, this.storageKey + "-user");
2849
+ e && e?.user ? (t.user = e.user, await N(this.storage, this.storageKey + "-user"), await j(this.storage, this.storageKey, t)) : t.user = L();
2850
+ }
2851
+ if (this._debug(e, "session from storage", t), !this._isValidSession(t)) {
2852
+ this._debug(e, "session is not valid"), t !== null && await this._removeSession();
2853
+ return;
2854
+ }
2855
+ let n = (t.expires_at ?? Infinity) * 1e3 - Date.now() < f;
2856
+ if (this._debug(e, `session has${n ? "" : " not"} expired with margin of ${f}s`), n) {
2857
+ if (this.autoRefreshToken && t.refresh_token) {
2858
+ let { error: n } = await this._callRefreshToken(t.refresh_token);
2859
+ n && (console.error(n), ce(n) || (this._debug(e, "refresh failed with a non-retryable error, removing the session", n), await this._removeSession()));
2860
+ }
2861
+ } else if (t.user && t.user.__isUserNotAvailableProxy === !0) try {
2862
+ let { data: n, error: r } = await this._getUser(t.access_token);
2863
+ !r && n?.user ? (t.user = n.user, await this._saveSession(t), await this._notifyAllSubscribers("SIGNED_IN", t)) : this._debug(e, "could not get user data, skipping SIGNED_IN notification");
2864
+ } catch (t) {
2865
+ console.error("Error getting user data:", t), this._debug(e, "error getting user data, skipping SIGNED_IN notification", t);
2866
+ }
2867
+ else await this._notifyAllSubscribers("SIGNED_IN", t);
2868
+ } catch (t) {
2869
+ this._debug(e, "error", t), console.error(t);
2870
+ return;
2871
+ } finally {
2872
+ this._debug(e, "end");
2873
+ }
2874
+ }
2875
+ async _callRefreshToken(e) {
2876
+ var t, n;
2877
+ if (!e) throw new x();
2878
+ if (this.refreshingDeferred) return this.refreshingDeferred.promise;
2879
+ let r = `#_callRefreshToken(${e.substring(0, 5)}...)`;
2880
+ this._debug(r, "begin");
2881
+ try {
2882
+ this.refreshingDeferred = new Ee();
2883
+ let { data: t, error: n } = await this._refreshAccessToken(e);
2884
+ if (n) throw n;
2885
+ if (!t.session) throw new x();
2886
+ await this._saveSession(t.session), await this._notifyAllSubscribers("TOKEN_REFRESHED", t.session);
2887
+ let r = {
2888
+ data: t.session,
2889
+ error: null
2890
+ };
2891
+ return this.refreshingDeferred.resolve(r), r;
2892
+ } catch (e) {
2893
+ if (this._debug(r, "error", e), v(e)) {
2894
+ let n = {
2895
+ data: null,
2896
+ error: e
2897
+ };
2898
+ return ce(e) || await this._removeSession(), (t = this.refreshingDeferred) == null || t.resolve(n), n;
2899
+ }
2900
+ throw (n = this.refreshingDeferred) == null || n.reject(e), e;
2901
+ } finally {
2902
+ this.refreshingDeferred = null, this._debug(r, "end");
2903
+ }
2904
+ }
2905
+ async _notifyAllSubscribers(e, t, n = !0) {
2906
+ let r = `#_notifyAllSubscribers(${e})`;
2907
+ this._debug(r, "begin", t, `broadcast = ${n}`);
2908
+ try {
2909
+ this.broadcastChannel && n && this.broadcastChannel.postMessage({
2910
+ event: e,
2911
+ session: t
2912
+ });
2913
+ let r = [], i = Array.from(this.stateChangeEmitters.values()).map(async (n) => {
2914
+ try {
2915
+ await n.callback(e, t);
2916
+ } catch (e) {
2917
+ r.push(e);
2918
+ }
2919
+ });
2920
+ if (await Promise.all(i), r.length > 0) {
2921
+ for (let e = 0; e < r.length; e += 1) console.error(r[e]);
2922
+ throw r[0];
2923
+ }
2924
+ } finally {
2925
+ this._debug(r, "end");
2926
+ }
2927
+ }
2928
+ async _saveSession(e) {
2929
+ this._debug("#_saveSession()", e), this.suppressGetSessionWarning = !0, await N(this.storage, `${this.storageKey}-code-verifier`);
2930
+ let t = Object.assign({}, e), n = t.user && t.user.__isUserNotAvailableProxy === !0;
2931
+ if (this.userStorage) {
2932
+ !n && t.user && await j(this.userStorage, this.storageKey + "-user", { user: t.user });
2933
+ let e = Object.assign({}, t);
2934
+ delete e.user;
2935
+ let r = ze(e);
2936
+ await j(this.storage, this.storageKey, r);
2937
+ } else {
2938
+ let e = ze(t);
2939
+ await j(this.storage, this.storageKey, e);
2940
+ }
2941
+ }
2942
+ async _removeSession() {
2943
+ this._debug("#_removeSession()"), this.suppressGetSessionWarning = !1, await N(this.storage, this.storageKey), await N(this.storage, this.storageKey + "-code-verifier"), await N(this.storage, this.storageKey + "-user"), this.userStorage && await N(this.userStorage, this.storageKey + "-user"), await this._notifyAllSubscribers("SIGNED_OUT", null);
2944
+ }
2945
+ _removeVisibilityChangedCallback() {
2946
+ this._debug("#_removeVisibilityChangedCallback()");
2947
+ let e = this.visibilityChangedCallback;
2948
+ this.visibilityChangedCallback = null;
2949
+ try {
2950
+ e && k() && window != null && window.removeEventListener && window.removeEventListener("visibilitychange", e);
2951
+ } catch (e) {
2952
+ console.error("removing visibilitychange callback failed", e);
2953
+ }
2954
+ }
2955
+ async _startAutoRefresh() {
2956
+ await this._stopAutoRefresh(), this._debug("#_startAutoRefresh()");
2957
+ let e = setInterval(() => this._autoRefreshTokenTick(), d);
2958
+ this.autoRefreshTicker = e, e && typeof e == "object" && typeof e.unref == "function" ? e.unref() : typeof Deno < "u" && typeof Deno.unrefTimer == "function" && Deno.unrefTimer(e);
2959
+ let t = setTimeout(async () => {
2960
+ await this.initializePromise, await this._autoRefreshTokenTick();
2961
+ }, 0);
2962
+ this.autoRefreshTickTimeout = t, t && typeof t == "object" && typeof t.unref == "function" ? t.unref() : typeof Deno < "u" && typeof Deno.unrefTimer == "function" && Deno.unrefTimer(t);
2963
+ }
2964
+ async _stopAutoRefresh() {
2965
+ this._debug("#_stopAutoRefresh()");
2966
+ let e = this.autoRefreshTicker;
2967
+ this.autoRefreshTicker = null, e && clearInterval(e);
2968
+ let t = this.autoRefreshTickTimeout;
2969
+ this.autoRefreshTickTimeout = null, t && clearTimeout(t);
2970
+ }
2971
+ async startAutoRefresh() {
2972
+ this._removeVisibilityChangedCallback(), await this._startAutoRefresh();
2973
+ }
2974
+ async stopAutoRefresh() {
2975
+ this._removeVisibilityChangedCallback(), await this._stopAutoRefresh();
2976
+ }
2977
+ async _autoRefreshTokenTick() {
2978
+ this._debug("#_autoRefreshTokenTick()", "begin");
2979
+ try {
2980
+ await this._acquireLock(0, async () => {
2981
+ try {
2982
+ let e = Date.now();
2983
+ try {
2984
+ return await this._useSession(async (t) => {
2985
+ let { data: { session: n } } = t;
2986
+ if (!n || !n.refresh_token || !n.expires_at) {
2987
+ this._debug("#_autoRefreshTokenTick()", "no session");
2988
+ return;
2989
+ }
2990
+ let r = Math.floor((n.expires_at * 1e3 - e) / d);
2991
+ this._debug("#_autoRefreshTokenTick()", `access token expires in ${r} ticks, a tick lasts ${d}ms, refresh threshold is 3 ticks`), r <= 3 && await this._callRefreshToken(n.refresh_token);
2992
+ });
2993
+ } catch (e) {
2994
+ console.error("Auto refresh tick failed with error. This is likely a transient error.", e);
2995
+ }
2996
+ } finally {
2997
+ this._debug("#_autoRefreshTokenTick()", "end");
2998
+ }
2999
+ });
3000
+ } catch (e) {
3001
+ if (e.isAcquireTimeout || e instanceof Ze) this._debug("auto refresh token tick lock not available");
3002
+ else throw e;
3003
+ }
3004
+ }
3005
+ async _handleVisibilityChange() {
3006
+ if (this._debug("#_handleVisibilityChange()"), !k() || !(window != null && window.addEventListener)) return this.autoRefreshToken && this.startAutoRefresh(), !1;
3007
+ try {
3008
+ this.visibilityChangedCallback = async () => {
3009
+ try {
3010
+ await this._onVisibilityChanged(!1);
3011
+ } catch (e) {
3012
+ this._debug("#visibilityChangedCallback", "error", e);
3013
+ }
3014
+ }, window == null || window.addEventListener("visibilitychange", this.visibilityChangedCallback), await this._onVisibilityChanged(!0);
3015
+ } catch (e) {
3016
+ console.error("_handleVisibilityChange", e);
3017
+ }
3018
+ }
3019
+ async _onVisibilityChanged(e) {
3020
+ let t = `#_onVisibilityChanged(${e})`;
3021
+ this._debug(t, "visibilityState", document.visibilityState), document.visibilityState === "visible" ? (this.autoRefreshToken && this._startAutoRefresh(), e || (await this.initializePromise, await this._acquireLock(this.lockAcquireTimeout, async () => {
3022
+ if (document.visibilityState !== "visible") {
3023
+ this._debug(t, "acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting");
3024
+ return;
3025
+ }
3026
+ await this._recoverAndRefresh();
3027
+ }))) : document.visibilityState === "hidden" && this.autoRefreshToken && this._stopAutoRefresh();
3028
+ }
3029
+ async _getUrlForProvider(e, t, n) {
3030
+ let r = [`provider=${encodeURIComponent(t)}`];
3031
+ if (n?.redirectTo && r.push(`redirect_to=${encodeURIComponent(n.redirectTo)}`), n?.scopes && r.push(`scopes=${encodeURIComponent(n.scopes)}`), this.flowType === "pkce") {
3032
+ let [e, t] = await F(this.storage, this.storageKey), n = new URLSearchParams({
3033
+ code_challenge: `${encodeURIComponent(e)}`,
3034
+ code_challenge_method: `${encodeURIComponent(t)}`
3035
+ });
3036
+ r.push(n.toString());
3037
+ }
3038
+ if (n?.queryParams) {
3039
+ let e = new URLSearchParams(n.queryParams);
3040
+ r.push(e.toString());
3041
+ }
3042
+ return n?.skipBrowserRedirect && r.push(`skip_http_redirect=${n.skipBrowserRedirect}`), `${e}?${r.join("&")}`;
3043
+ }
3044
+ async _unenroll(e) {
3045
+ try {
3046
+ return await this._useSession(async (t) => {
3047
+ let { data: n, error: r } = t;
3048
+ return r ? this._returnResult({
3049
+ data: null,
3050
+ error: r
3051
+ }) : await z(this.fetch, "DELETE", `${this.url}/factors/${e.factorId}`, {
3052
+ headers: this.headers,
3053
+ jwt: n?.session?.access_token
3054
+ });
3055
+ });
3056
+ } catch (e) {
3057
+ if (v(e)) return this._returnResult({
3058
+ data: null,
3059
+ error: e
3060
+ });
3061
+ throw e;
3062
+ }
3063
+ }
3064
+ async _enroll(e) {
3065
+ try {
3066
+ return await this._useSession(async (t) => {
3067
+ let { data: n, error: r } = t;
3068
+ if (r) return this._returnResult({
3069
+ data: null,
3070
+ error: r
3071
+ });
3072
+ let i = Object.assign({
3073
+ friendly_name: e.friendlyName,
3074
+ factor_type: e.factorType
3075
+ }, e.factorType === "phone" ? { phone: e.phone } : e.factorType === "totp" ? { issuer: e.issuer } : {}), { data: a, error: o } = await z(this.fetch, "POST", `${this.url}/factors`, {
3076
+ body: i,
3077
+ headers: this.headers,
3078
+ jwt: n?.session?.access_token
3079
+ });
3080
+ return o ? this._returnResult({
3081
+ data: null,
3082
+ error: o
3083
+ }) : (e.factorType === "totp" && a.type === "totp" && a?.totp?.qr_code && (a.totp.qr_code = `data:image/svg+xml;utf-8,${a.totp.qr_code}`), this._returnResult({
3084
+ data: a,
3085
+ error: null
3086
+ }));
3087
+ });
3088
+ } catch (e) {
3089
+ if (v(e)) return this._returnResult({
3090
+ data: null,
3091
+ error: e
3092
+ });
3093
+ throw e;
3094
+ }
3095
+ }
3096
+ async _verify(e) {
3097
+ return this._acquireLock(this.lockAcquireTimeout, async () => {
3098
+ try {
3099
+ return await this._useSession(async (t) => {
3100
+ let { data: n, error: r } = t;
3101
+ if (r) return this._returnResult({
3102
+ data: null,
3103
+ error: r
3104
+ });
3105
+ let i = Object.assign({ challenge_id: e.challengeId }, "webauthn" in e ? { webauthn: Object.assign(Object.assign({}, e.webauthn), { credential_response: e.webauthn.type === "create" ? ut(e.webauthn.credential_response) : dt(e.webauthn.credential_response) }) } : { code: e.code }), { data: a, error: o } = await z(this.fetch, "POST", `${this.url}/factors/${e.factorId}/verify`, {
3106
+ body: i,
3107
+ headers: this.headers,
3108
+ jwt: n?.session?.access_token
3109
+ });
3110
+ return o ? this._returnResult({
3111
+ data: null,
3112
+ error: o
3113
+ }) : (await this._saveSession(Object.assign({ expires_at: Math.round(Date.now() / 1e3) + a.expires_in }, a)), await this._notifyAllSubscribers("MFA_CHALLENGE_VERIFIED", a), this._returnResult({
3114
+ data: a,
3115
+ error: o
3116
+ }));
3117
+ });
3118
+ } catch (e) {
3119
+ if (v(e)) return this._returnResult({
3120
+ data: null,
3121
+ error: e
3122
+ });
3123
+ throw e;
3124
+ }
3125
+ });
3126
+ }
3127
+ async _challenge(e) {
3128
+ return this._acquireLock(this.lockAcquireTimeout, async () => {
3129
+ try {
3130
+ return await this._useSession(async (t) => {
3131
+ let { data: n, error: r } = t;
3132
+ if (r) return this._returnResult({
3133
+ data: null,
3134
+ error: r
3135
+ });
3136
+ let i = await z(this.fetch, "POST", `${this.url}/factors/${e.factorId}/challenge`, {
3137
+ body: e,
3138
+ headers: this.headers,
3139
+ jwt: n?.session?.access_token
3140
+ });
3141
+ if (i.error) return i;
3142
+ let { data: a } = i;
3143
+ if (a.type !== "webauthn") return {
3144
+ data: a,
3145
+ error: null
3146
+ };
3147
+ switch (a.webauthn.type) {
3148
+ case "create": return {
3149
+ data: Object.assign(Object.assign({}, a), { webauthn: Object.assign(Object.assign({}, a.webauthn), { credential_options: Object.assign(Object.assign({}, a.webauthn.credential_options), { publicKey: ct(a.webauthn.credential_options.publicKey) }) }) }),
3150
+ error: null
3151
+ };
3152
+ case "request": return {
3153
+ data: Object.assign(Object.assign({}, a), { webauthn: Object.assign(Object.assign({}, a.webauthn), { credential_options: Object.assign(Object.assign({}, a.webauthn.credential_options), { publicKey: lt(a.webauthn.credential_options.publicKey) }) }) }),
3154
+ error: null
3155
+ };
3156
+ }
3157
+ });
3158
+ } catch (e) {
3159
+ if (v(e)) return this._returnResult({
3160
+ data: null,
3161
+ error: e
3162
+ });
3163
+ throw e;
3164
+ }
3165
+ });
3166
+ }
3167
+ async _challengeAndVerify(e) {
3168
+ let { data: t, error: n } = await this._challenge({ factorId: e.factorId });
3169
+ return n ? this._returnResult({
3170
+ data: null,
3171
+ error: n
3172
+ }) : await this._verify({
3173
+ factorId: e.factorId,
3174
+ challengeId: t.id,
3175
+ code: e.code
3176
+ });
3177
+ }
3178
+ async _listFactors() {
3179
+ let { data: { user: e }, error: t } = await this.getUser();
3180
+ if (t) return {
3181
+ data: null,
3182
+ error: t
3183
+ };
3184
+ let n = {
3185
+ all: [],
3186
+ phone: [],
3187
+ totp: [],
3188
+ webauthn: []
3189
+ };
3190
+ for (let t of e?.factors ?? []) n.all.push(t), t.status === "verified" && n[t.factor_type].push(t);
3191
+ return {
3192
+ data: n,
3193
+ error: null
3194
+ };
3195
+ }
3196
+ async _getAuthenticatorAssuranceLevel(e) {
3197
+ if (e) try {
3198
+ let { payload: t } = P(e), n = null;
3199
+ t.aal && (n = t.aal);
3200
+ let r = n, { data: { user: i }, error: a } = await this.getUser(e);
3201
+ if (a) return this._returnResult({
3202
+ data: null,
3203
+ error: a
3204
+ });
3205
+ ((i?.factors)?.filter((e) => e.status === "verified") ?? []).length > 0 && (r = "aal2");
3206
+ let o = t.amr || [];
3207
+ return {
3208
+ data: {
3209
+ currentLevel: n,
3210
+ nextLevel: r,
3211
+ currentAuthenticationMethods: o
3212
+ },
3213
+ error: null
3214
+ };
3215
+ } catch (e) {
3216
+ if (v(e)) return this._returnResult({
3217
+ data: null,
3218
+ error: e
3219
+ });
3220
+ throw e;
3221
+ }
3222
+ let { data: { session: t }, error: n } = await this.getSession();
3223
+ if (n) return this._returnResult({
3224
+ data: null,
3225
+ error: n
3226
+ });
3227
+ if (!t) return {
3228
+ data: {
3229
+ currentLevel: null,
3230
+ nextLevel: null,
3231
+ currentAuthenticationMethods: []
3232
+ },
3233
+ error: null
3234
+ };
3235
+ let { payload: r } = P(t.access_token), i = null;
3236
+ r.aal && (i = r.aal);
3237
+ let a = i;
3238
+ (t.user.factors?.filter((e) => e.status === "verified") ?? []).length > 0 && (a = "aal2");
3239
+ let o = r.amr || [];
3240
+ return {
3241
+ data: {
3242
+ currentLevel: i,
3243
+ nextLevel: a,
3244
+ currentAuthenticationMethods: o
3245
+ },
3246
+ error: null
3247
+ };
3248
+ }
3249
+ async _getAuthorizationDetails(e) {
3250
+ try {
3251
+ return await this._useSession(async (t) => {
3252
+ let { data: { session: n }, error: r } = t;
3253
+ return r ? this._returnResult({
3254
+ data: null,
3255
+ error: r
3256
+ }) : n ? await z(this.fetch, "GET", `${this.url}/oauth/authorizations/${e}`, {
3257
+ headers: this.headers,
3258
+ jwt: n.access_token,
3259
+ xform: (e) => ({
3260
+ data: e,
3261
+ error: null
3262
+ })
3263
+ }) : this._returnResult({
3264
+ data: null,
3265
+ error: new x()
3266
+ });
3267
+ });
3268
+ } catch (e) {
3269
+ if (v(e)) return this._returnResult({
3270
+ data: null,
3271
+ error: e
3272
+ });
3273
+ throw e;
3274
+ }
3275
+ }
3276
+ async _approveAuthorization(e, t) {
3277
+ try {
3278
+ return await this._useSession(async (n) => {
3279
+ let { data: { session: r }, error: i } = n;
3280
+ if (i) return this._returnResult({
3281
+ data: null,
3282
+ error: i
3283
+ });
3284
+ if (!r) return this._returnResult({
3285
+ data: null,
3286
+ error: new x()
3287
+ });
3288
+ let a = await z(this.fetch, "POST", `${this.url}/oauth/authorizations/${e}/consent`, {
3289
+ headers: this.headers,
3290
+ jwt: r.access_token,
3291
+ body: { action: "approve" },
3292
+ xform: (e) => ({
3293
+ data: e,
3294
+ error: null
3295
+ })
3296
+ });
3297
+ return a.data && a.data.redirect_url && k() && !t?.skipBrowserRedirect && window.location.assign(a.data.redirect_url), a;
3298
+ });
3299
+ } catch (e) {
3300
+ if (v(e)) return this._returnResult({
3301
+ data: null,
3302
+ error: e
3303
+ });
3304
+ throw e;
3305
+ }
3306
+ }
3307
+ async _denyAuthorization(e, t) {
3308
+ try {
3309
+ return await this._useSession(async (n) => {
3310
+ let { data: { session: r }, error: i } = n;
3311
+ if (i) return this._returnResult({
3312
+ data: null,
3313
+ error: i
3314
+ });
3315
+ if (!r) return this._returnResult({
3316
+ data: null,
3317
+ error: new x()
3318
+ });
3319
+ let a = await z(this.fetch, "POST", `${this.url}/oauth/authorizations/${e}/consent`, {
3320
+ headers: this.headers,
3321
+ jwt: r.access_token,
3322
+ body: { action: "deny" },
3323
+ xform: (e) => ({
3324
+ data: e,
3325
+ error: null
3326
+ })
3327
+ });
3328
+ return a.data && a.data.redirect_url && k() && !t?.skipBrowserRedirect && window.location.assign(a.data.redirect_url), a;
3329
+ });
3330
+ } catch (e) {
3331
+ if (v(e)) return this._returnResult({
3332
+ data: null,
3333
+ error: e
3334
+ });
3335
+ throw e;
3336
+ }
3337
+ }
3338
+ async _listOAuthGrants() {
3339
+ try {
3340
+ return await this._useSession(async (e) => {
3341
+ let { data: { session: t }, error: n } = e;
3342
+ return n ? this._returnResult({
3343
+ data: null,
3344
+ error: n
3345
+ }) : t ? await z(this.fetch, "GET", `${this.url}/user/oauth/grants`, {
3346
+ headers: this.headers,
3347
+ jwt: t.access_token,
3348
+ xform: (e) => ({
3349
+ data: e,
3350
+ error: null
3351
+ })
3352
+ }) : this._returnResult({
3353
+ data: null,
3354
+ error: new x()
3355
+ });
3356
+ });
3357
+ } catch (e) {
3358
+ if (v(e)) return this._returnResult({
3359
+ data: null,
3360
+ error: e
3361
+ });
3362
+ throw e;
3363
+ }
3364
+ }
3365
+ async _revokeOAuthGrant(e) {
3366
+ try {
3367
+ return await this._useSession(async (t) => {
3368
+ let { data: { session: n }, error: r } = t;
3369
+ return r ? this._returnResult({
3370
+ data: null,
3371
+ error: r
3372
+ }) : n ? (await z(this.fetch, "DELETE", `${this.url}/user/oauth/grants`, {
3373
+ headers: this.headers,
3374
+ jwt: n.access_token,
3375
+ query: { client_id: e.clientId },
3376
+ noResolveJson: !0
3377
+ }), {
3378
+ data: {},
3379
+ error: null
3380
+ }) : this._returnResult({
3381
+ data: null,
3382
+ error: new x()
3383
+ });
3384
+ });
3385
+ } catch (e) {
3386
+ if (v(e)) return this._returnResult({
3387
+ data: null,
3388
+ error: e
3389
+ });
3390
+ throw e;
3391
+ }
3392
+ }
3393
+ async fetchJwk(e, t = { keys: [] }) {
3394
+ let n = t.keys.find((t) => t.kid === e);
3395
+ if (n) return n;
3396
+ let r = Date.now();
3397
+ if (n = this.jwks.keys.find((t) => t.kid === e), n && this.jwks_cached_at + 6e5 > r) return n;
3398
+ let { data: i, error: a } = await z(this.fetch, "GET", `${this.url}/.well-known/jwks.json`, { headers: this.headers });
3399
+ if (a) throw a;
3400
+ return !i.keys || i.keys.length === 0 || (this.jwks = i, this.jwks_cached_at = r, n = i.keys.find((t) => t.kid === e), !n) ? null : n;
3401
+ }
3402
+ async getClaims(e, t = {}) {
3403
+ try {
3404
+ let n = e;
3405
+ if (!n) {
3406
+ let { data: e, error: t } = await this.getSession();
3407
+ if (t || !e.session) return this._returnResult({
3408
+ data: null,
3409
+ error: t
3410
+ });
3411
+ n = e.session.access_token;
3412
+ }
3413
+ let { header: r, payload: i, signature: a, raw: { header: o, payload: s } } = P(n);
3414
+ t?.allowExpired || Fe(i.exp);
3415
+ let c = !r.alg || r.alg.startsWith("HS") || !r.kid || !("crypto" in globalThis && "subtle" in globalThis.crypto) ? null : await this.fetchJwk(r.kid, t?.keys ? { keys: t.keys } : t?.jwks);
3416
+ if (!c) {
3417
+ let { error: e } = await this.getUser(n);
3418
+ if (e) throw e;
3419
+ return {
3420
+ data: {
3421
+ claims: i,
3422
+ header: r,
3423
+ signature: a
3424
+ },
3425
+ error: null
3426
+ };
3427
+ }
3428
+ let l = Ie(r.alg), u = await crypto.subtle.importKey("jwk", c, l, !0, ["verify"]);
3429
+ if (!await crypto.subtle.verify(l, u, a, ye(`${o}.${s}`))) throw new ue("Invalid JWT signature");
3430
+ return {
3431
+ data: {
3432
+ claims: i,
3433
+ header: r,
3434
+ signature: a
3435
+ },
3436
+ error: null
3437
+ };
3438
+ } catch (e) {
3439
+ if (v(e)) return this._returnResult({
3440
+ data: null,
3441
+ error: e
3442
+ });
3443
+ throw e;
3444
+ }
3445
+ }
3446
+ };
3447
+ Ct.nextInstanceID = {};
3448
+ //#endregion
3449
+ //#region node_modules/@supabase/supabase-js/dist/index.mjs
3450
+ var wt = "2.104.0", Tt = "";
3451
+ Tt = typeof Deno < "u" ? "deno" : typeof document < "u" ? "web" : typeof navigator < "u" && navigator.product === "ReactNative" ? "react-native" : "node", `${Tt}${wt}`;
3452
+ function Et() {
3453
+ if (typeof window < "u") return !1;
3454
+ let e = globalThis.process;
3455
+ if (!e) return !1;
3456
+ let t = e.version;
3457
+ if (t == null) return !1;
3458
+ let n = t.match(/^v(\d+)\./);
3459
+ return n ? parseInt(n[1], 10) <= 18 : !1;
3460
+ }
3461
+ Et() && console.warn("⚠️ Node.js 18 and below are deprecated and will no longer be supported in future versions of @supabase/supabase-js. Please upgrade to Node.js 20 or later. For more information, visit: https://github.com/orgs/supabase/discussions/37217");
3462
+ //#endregion
6
3463
  //#region lib/errors.ts
7
- var i = class extends Error {
3464
+ var J = class extends Error {
8
3465
  constructor(e, t = {}) {
9
3466
  super(e, t), this.name = this.constructor.name, Error.captureStackTrace(this, this.constructor);
10
3467
  }
11
- }, a = class extends i {
3468
+ }, Dt = class extends J {
12
3469
  fileId;
13
3470
  bucket;
14
3471
  path;
15
3472
  constructor(e, { fileId: t, bucket: n, path: r } = {}) {
16
3473
  super(e), this.fileId = t, this.bucket = n, this.path = r;
17
3474
  }
18
- }, o = class extends Error {
3475
+ }, Ot = class extends Error {
19
3476
  fileName;
20
3477
  fileType;
21
3478
  constructor(e, { fileName: t, fileType: n, ...r } = {}) {
22
3479
  super(e, r), this.fileName = t, this.fileType = n;
23
3480
  }
24
- }, s = class extends i {
3481
+ }, kt = class extends J {
25
3482
  expression;
26
3483
  format;
27
3484
  constructor(e, { expression: t, format: n, ...r } = {}) {
28
3485
  super(e, r), this.expression = t, this.format = n;
29
3486
  }
30
- }, c = class extends i {
3487
+ }, At = class extends J {
31
3488
  schema;
32
3489
  relation;
33
3490
  id;
34
3491
  constructor(e, { schema: t, relation: n, id: r } = {}) {
35
3492
  super(e), this.schema = t, this.relation = n, this.id = r;
36
3493
  }
37
- }, l = t.object({
3494
+ }, jt = t.object({
38
3495
  code: t.string(),
39
3496
  details: t.string().nullable(),
40
3497
  hint: t.string().nullable(),
41
3498
  name: t.string().optional(),
42
3499
  message: t.string().optional()
43
3500
  });
44
- function u(e) {
45
- return e instanceof n || l.safeParse(e).success;
3501
+ function Mt(e) {
3502
+ return e instanceof r || jt.safeParse(e).success;
46
3503
  }
47
3504
  //#endregion
48
3505
  //#region lib/utils.ts
49
- function d(e, t = "/") {
3506
+ function Nt(e, t = "/") {
50
3507
  let n = e.lastIndexOf(t);
51
3508
  return n === -1 ? ["", e] : [e.substring(0, n), e.substring(n + 1)];
52
3509
  }
53
- function f(e) {
3510
+ function Y(e) {
54
3511
  return Array.isArray(e) ? e : [e];
55
3512
  }
56
- function p(e, t) {
3513
+ function Pt(e, t) {
57
3514
  return e.reduce((e, n) => {
58
3515
  let r = t(n);
59
3516
  return (e[r] ??= []).push(n), e;
60
3517
  }, {});
61
3518
  }
62
- function m(e, t) {
3519
+ function Ft(e, t) {
63
3520
  let n = e.findIndex(t);
64
3521
  return n !== -1 && e.splice(n, 1), e;
65
3522
  }
66
- function h(e) {
3523
+ function It(e) {
67
3524
  return Object.entries(e);
68
3525
  }
69
3526
  //#endregion
70
3527
  //#region lib/data-service.ts
71
- var g = class {
3528
+ var X = class {
72
3529
  database;
73
3530
  schema;
74
3531
  relation;
@@ -76,7 +3533,7 @@ var g = class {
76
3533
  this.database = e, this.schema = t, this.relation = n;
77
3534
  }
78
3535
  recordNotFoundError(e) {
79
- return new c(`Record with id ${e} not found in ${this.schema}.${this.relation}`, {
3536
+ return new At(`Record with id ${e} not found in ${this.schema}.${this.relation}`, {
80
3537
  schema: this.schema,
81
3538
  relation: this.relation,
82
3539
  id: e
@@ -124,7 +3581,7 @@ var g = class {
124
3581
  }
125
3582
  async upsert(e, { onConflict: t, ...n } = {}) {
126
3583
  let { data: r } = await this.query.upsert(e, {
127
- onConflict: t === void 0 ? void 0 : f(t).join(","),
3584
+ onConflict: t === void 0 ? void 0 : Y(t).join(","),
128
3585
  ...n
129
3586
  }).select().single().throwOnError();
130
3587
  return r;
@@ -133,7 +3590,7 @@ var g = class {
133
3590
  let { data: n } = await this.query.update(t).eq("id", e).select().single().throwOnError();
134
3591
  return n;
135
3592
  }
136
- }, _ = class extends g {
3593
+ }, Lt = class extends X {
137
3594
  constructor({ database: e, schema: t, table: n }) {
138
3595
  super({
139
3596
  database: e,
@@ -141,7 +3598,7 @@ var g = class {
141
3598
  relation: n
142
3599
  });
143
3600
  }
144
- }, v = class extends g {
3601
+ }, Rt = class extends X {
145
3602
  constructor({ database: e, schema: t, view: n }) {
146
3603
  super({
147
3604
  database: e,
@@ -150,13 +3607,13 @@ var g = class {
150
3607
  });
151
3608
  }
152
3609
  };
153
- function y(t) {
3610
+ function zt(t) {
154
3611
  if (t.error) throw t.error;
155
3612
  return e(t.count !== null, "Response does not contain a count. Make sure to set the `count` option in the request."), t;
156
3613
  }
157
3614
  //#endregion
158
3615
  //#region lib/filter.ts
159
- var b = [
3616
+ var Bt = [
160
3617
  "eq",
161
3618
  "neq",
162
3619
  "gt",
@@ -182,17 +3639,17 @@ var b = [
182
3639
  "nxr",
183
3640
  "nxl",
184
3641
  "adj"
185
- ], x = ["and", "or"], S = ",", C = "~", w = (e) => (n = {}) => {
3642
+ ], Vt = ["and", "or"], Ht = ",", Ut = "~", Wt = (e) => (n = {}) => {
186
3643
  let r = (e) => n[e] ?? e, i = Object.keys(e.shape);
187
3644
  return t.string().transform((e, t) => {
188
3645
  try {
189
- return A(e, i, r);
3646
+ return Jt(e, i, r);
190
3647
  } catch (n) {
191
3648
  return t.addIssue({
192
3649
  code: "custom",
193
3650
  input: e,
194
3651
  message: n instanceof Error ? n.message : void 0,
195
- params: n instanceof s ? {
3652
+ params: n instanceof kt ? {
196
3653
  expression: n.expression,
197
3654
  format: n.format
198
3655
  } : void 0
@@ -200,26 +3657,26 @@ var b = [
200
3657
  }
201
3658
  });
202
3659
  };
203
- function T(e) {
3660
+ function Gt(e) {
204
3661
  return e.startsWith("not.") ? e.slice(4) : `not.${e}`;
205
3662
  }
206
- function E(e) {
3663
+ function Kt(e) {
207
3664
  return {
208
3665
  ...e,
209
- op: T(e.op)
3666
+ op: Gt(e.op)
210
3667
  };
211
3668
  }
212
- function D(e, t = (e) => e) {
3669
+ function Z(e, t = (e) => e) {
213
3670
  if (e.type === "logical") {
214
- let n = e.args.map((e) => D(e, t));
3671
+ let n = e.args.map((e) => Z(e, t));
215
3672
  return `${e.op}(${n})`;
216
3673
  }
217
3674
  return `${t(e.key)}.${e.op}.${e.value}`;
218
3675
  }
219
- function O(e, t = (e) => e, n = "~") {
220
- return e.map((e) => D(e, t)).join(n);
3676
+ function qt(e, t = (e) => e, n = "~") {
3677
+ return e.map((e) => Z(e, t)).join(n);
221
3678
  }
222
- function k(t, n = [], r = (e) => e) {
3679
+ function Q(t, n = [], r = (e) => e) {
223
3680
  function i(e) {
224
3681
  let t = [], n = 0, r = "", i = !1;
225
3682
  for (let a of e) a === "\"" ? (i = !i, r += a) : a === "(" && !i ? (n++, r += a) : a === ")" && !i ? (n--, r += a) : a === "," && n === 0 && !i ? (t.push(r.trim()), r = "") : r += a;
@@ -229,57 +3686,57 @@ function k(t, n = [], r = (e) => e) {
229
3686
  if (t.startsWith("and(")) return {
230
3687
  type: "logical",
231
3688
  op: "and",
232
- args: i(t.slice(4, -1)).map((e) => k(e, n, r))
3689
+ args: i(t.slice(4, -1)).map((e) => Q(e, n, r))
233
3690
  };
234
3691
  if (t.startsWith("or(")) return {
235
3692
  type: "logical",
236
3693
  op: "or",
237
- args: i(t.slice(3, -1)).map((e) => k(e, n, r))
3694
+ args: i(t.slice(3, -1)).map((e) => Q(e, n, r))
238
3695
  };
239
3696
  if (t.startsWith("not.and(")) return {
240
3697
  type: "logical",
241
3698
  op: "not.and",
242
- args: i(t.slice(8, -1)).map((e) => k(e, n, r))
3699
+ args: i(t.slice(8, -1)).map((e) => Q(e, n, r))
243
3700
  };
244
3701
  if (t.startsWith("not.or(")) return {
245
3702
  type: "logical",
246
3703
  op: "not.or",
247
- args: i(t.slice(7, -1)).map((e) => k(e, n, r))
3704
+ args: i(t.slice(7, -1)).map((e) => Q(e, n, r))
248
3705
  };
249
3706
  }
250
- let a = `^(${n.length === 0 ? "[a-zA-Z_][a-zA-Z0-9_]*" : n.join("|")})\\.((?:not\\.)?(?:${b.join("|")}))\\.(.+)$`, o = new RegExp(a).exec(t);
251
- if (!o) throw new s(`Invalid filter expression '${t}'`, {
3707
+ let a = `^(${n.length === 0 ? "[a-zA-Z_][a-zA-Z0-9_]*" : n.join("|")})\\.((?:not\\.)?(?:${Bt.join("|")}))\\.(.+)$`, o = new RegExp(a).exec(t);
3708
+ if (!o) throw new kt(`Invalid filter expression '${t}'`, {
252
3709
  expression: t,
253
3710
  format: {
254
3711
  syntax: "key.(not.)op.value",
255
3712
  keys: n.length === 0 ? "*" : n,
256
- operators: b
3713
+ operators: Bt
257
3714
  }
258
3715
  });
259
- let [, c, l, u] = o;
3716
+ let [, s, c, l] = o;
260
3717
  return {
261
3718
  type: "condition",
262
- key: r(c),
263
- op: l,
264
- value: e.defined(u)
3719
+ key: r(s),
3720
+ op: c,
3721
+ value: e.defined(l)
265
3722
  };
266
3723
  }
267
- function A(e, t = [], n = (e) => e, r = "~") {
268
- return e.length === 0 ? [] : e.split(r).map((e) => k(e, t, n));
3724
+ function Jt(e, t = [], n = (e) => e, r = "~") {
3725
+ return e.length === 0 ? [] : e.split(r).map((e) => Q(e, t, n));
269
3726
  }
270
3727
  //#endregion
271
3728
  //#region lib/postgrest.ts
272
- var j = class t extends r.PostgrestFilterBuilder {
3729
+ var $ = class t extends n.PostgrestFilterBuilder {
273
3730
  pagination;
274
3731
  constructor(e) {
275
3732
  super(e);
276
3733
  }
277
3734
  select(e = "*") {
278
- return new t(super.select(f(e).join(",")));
3735
+ return new t(super.select(Y(e).join(",")));
279
3736
  }
280
3737
  where(e) {
281
3738
  if (e.type === "logical") {
282
- let t = e.args.map((e) => D(e)).join(",");
3739
+ let t = e.args.map((e) => Z(e)).join(",");
283
3740
  this.url.searchParams.append(e.op, `(${t})`);
284
3741
  } else this.url.searchParams.append(e.key, `${e.op}.${e.value}`);
285
3742
  return this;
@@ -317,70 +3774,70 @@ var j = class t extends r.PostgrestFilterBuilder {
317
3774
  return t;
318
3775
  });
319
3776
  }
320
- }, M = class {
3777
+ }, Yt = class {
321
3778
  builder;
322
3779
  constructor(e) {
323
3780
  this.builder = e;
324
3781
  }
325
3782
  select(e = "*", t) {
326
- return new j(this.builder.select(f(e).join(","), t));
3783
+ return new $(this.builder.select(Y(e).join(","), t));
327
3784
  }
328
3785
  count(e = "exact") {
329
- return new j(this.select("*", {
3786
+ return new $(this.select("*", {
330
3787
  count: e,
331
3788
  head: !0
332
3789
  }));
333
3790
  }
334
3791
  insert(e, t) {
335
- return new j(this.builder.insert(e, t));
3792
+ return new $(this.builder.insert(e, t));
336
3793
  }
337
3794
  upsert(e, { onConflict: t, ...n } = {}) {
338
- return new j(this.builder.upsert(e, {
339
- onConflict: f(t).join(","),
3795
+ return new $(this.builder.upsert(e, {
3796
+ onConflict: Y(t).join(","),
340
3797
  ...n
341
3798
  }));
342
3799
  }
343
3800
  update(e, t) {
344
- return new j(this.builder.update(e, t));
3801
+ return new $(this.builder.update(e, t));
345
3802
  }
346
3803
  delete() {
347
- return new j(this.builder.delete());
3804
+ return new $(this.builder.delete());
348
3805
  }
349
- }, N = class {
3806
+ }, Xt = class {
350
3807
  client;
351
3808
  constructor(e) {
352
3809
  this.client = e;
353
3810
  }
354
3811
  from(e) {
355
- return new M(this.client.from(e));
3812
+ return new Yt(this.client.from(e));
356
3813
  }
357
3814
  rpc(e, t, n) {
358
- return new j(this.client.rpc(e, t, n));
3815
+ return new $(this.client.rpc(e, t, n));
359
3816
  }
360
- }, P = class {
3817
+ }, Zt = class {
361
3818
  supabase;
362
3819
  constructor({ supabase: e }) {
363
3820
  this.supabase = e;
364
3821
  }
365
3822
  schema(e) {
366
- return new N(this.supabase.schema(e));
3823
+ return new Xt(this.supabase.schema(e));
367
3824
  }
368
3825
  relation(e, t) {
369
- return new g({
3826
+ return new X({
370
3827
  database: this,
371
3828
  schema: e,
372
3829
  relation: t
373
3830
  });
374
3831
  }
375
3832
  table(e, t) {
376
- return new _({
3833
+ return new Lt({
377
3834
  database: this,
378
3835
  schema: e,
379
3836
  table: t
380
3837
  });
381
3838
  }
382
3839
  view(e, t) {
383
- return new v({
3840
+ return new Rt({
384
3841
  database: this,
385
3842
  schema: e,
386
3843
  view: t
@@ -389,15 +3846,15 @@ var j = class t extends r.PostgrestFilterBuilder {
389
3846
  };
390
3847
  //#endregion
391
3848
  //#region lib/storage.ts
392
- function F(e) {
3849
+ function Qt(e) {
393
3850
  return e.bucket !== void 0 && e.path !== void 0;
394
3851
  }
395
- function I(e) {
3852
+ function $t(e) {
396
3853
  return e.fileId !== void 0 && e.bucket !== void 0;
397
3854
  }
398
3855
  //#endregion
399
3856
  //#region lib/storage-service.ts
400
- var L = class {
3857
+ var en = class {
401
3858
  client;
402
3859
  database;
403
3860
  constructor({ client: e, database: t }) {
@@ -417,8 +3874,8 @@ var L = class {
417
3874
  return n;
418
3875
  }
419
3876
  async getFileStorageLocation(t) {
420
- if (I(t)) return t;
421
- if (F(t)) {
3877
+ if ($t(t)) return t;
3878
+ if (Qt(t)) {
422
3879
  let { id: e } = await this.getFileObject(t);
423
3880
  return {
424
3881
  fileId: e,
@@ -426,7 +3883,7 @@ var L = class {
426
3883
  };
427
3884
  }
428
3885
  let { fileId: n } = t, r = await this.files.get(n, ["bucket_id", "path_tokens"]);
429
- if (!r) throw new a(`File with ID ${n} not found`, { fileId: n });
3886
+ if (!r) throw new Dt(`File with ID ${n} not found`, { fileId: n });
430
3887
  return {
431
3888
  fileId: n,
432
3889
  bucket: e.notNull(r.bucket_id, "bucket_id must not be null"),
@@ -457,7 +3914,7 @@ var L = class {
457
3914
  async assertExistsFile(e) {
458
3915
  let { bucket: t, path: n } = await this.getFileStorageLocation(e), { data: r, error: i } = await this.client.from(t).exists(n);
459
3916
  if (i) throw i;
460
- if (!r) throw new a(`File not found in bucket '${t}' at path '${n}'`, {
3917
+ if (!r) throw new Dt(`File not found in bucket '${t}' at path '${n}'`, {
461
3918
  bucket: t,
462
3919
  path: n
463
3920
  });
@@ -474,7 +3931,7 @@ var L = class {
474
3931
  async downloadFile(e) {
475
3932
  let { fileId: t, bucket: n, path: r, properties: i } = await this.getFileInfo(e), { data: a, error: o } = await this.client.from(n).download(r);
476
3933
  if (o) throw o;
477
- let [, s] = d(r);
3934
+ let [, s] = Nt(r);
478
3935
  return {
479
3936
  fileId: t,
480
3937
  bucket: n,
@@ -486,7 +3943,7 @@ var L = class {
486
3943
  let n = t.filter((e) => "fileId" in e).map((e) => e.fileId), r = (await this.files.query.select(["bucket_id", "path_tokens"]).containedBy("id", n).throwOnError()).data.map(({ bucket_id: t, path_tokens: n }) => ({
487
3944
  bucket: e.notNull(t, "bucket_id must not be null"),
488
3945
  path: e.notNull(n, "path_tokens must not be null").join("/")
489
- })), i = h(p(t.filter((e) => F(e)).concat(r), (e) => e.bucket)).map(([e, t]) => ({
3946
+ })), i = It(Pt(t.filter((e) => Qt(e)).concat(r), (e) => e.bucket)).map(([e, t]) => ({
490
3947
  bucket: e,
491
3948
  paths: t.map((e) => e.path)
492
3949
  }));
@@ -501,4 +3958,4 @@ var L = class {
501
3958
  }
502
3959
  };
503
3960
  //#endregion
504
- export { g as DataService, P as DatabaseService, a as FileNotFoundError, o as FileNotSupportedError, w as Filter, C as FilterChainSeparator, b as FilterOp, x as LogicalOp, S as LogicalOpSeparator, s as ParseError, N as PostgrestClient, l as PostgrestErrorInterface, j as PostgrestFilterBuilder, M as PostgrestQueryBuilder, c as RecordNotFoundError, L as StorageService, _ as TableDataService, i as TracedError, v as ViewDataService, y as assertCounted, f as coerceArray, O as encodeFilter, D as encodeFilterNode, h as entries, p as groupBy, u as isDatabaseApiError, E as negateFilterNode, T as negateOp, k as parseFilterExpression, A as parseFilterExpressionChain, m as removeElement, d as splitPath };
3961
+ export { X as DataService, Zt as DatabaseService, Dt as FileNotFoundError, Ot as FileNotSupportedError, Wt as Filter, Ut as FilterChainSeparator, Bt as FilterOp, Vt as LogicalOp, Ht as LogicalOpSeparator, kt as ParseError, Xt as PostgrestClient, jt as PostgrestErrorInterface, $ as PostgrestFilterBuilder, Yt as PostgrestQueryBuilder, At as RecordNotFoundError, en as StorageService, Lt as TableDataService, J as TracedError, Rt as ViewDataService, zt as assertCounted, Y as coerceArray, qt as encodeFilter, Z as encodeFilterNode, It as entries, Pt as groupBy, Mt as isDatabaseApiError, Kt as negateFilterNode, Gt as negateOp, Q as parseFilterExpression, Jt as parseFilterExpressionChain, Ft as removeElement, Nt as splitPath };