@faable/auth-js 1.6.1 → 1.6.2-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
- import { AuthError } from "./errors";
2
- import { LockFunc } from "../lock/locks";
3
- import { BaseLogOptions } from "../BaseLog";
1
+ import { BaseLogOptions } from '../BaseLog';
2
+ import { LockFunc } from '../lock/locks';
3
+ import { AuthError } from './errors';
4
4
  /**
5
5
  * @ignore
6
6
  */
@@ -35,14 +35,14 @@ export interface AuthorizationParams {
35
35
  * - `'touch'`: displays the UI in a way that leverages a touch interface
36
36
  * - `'wap'`: displays the UI with a "feature phone" type interface
37
37
  */
38
- display?: "page" | "popup" | "touch" | "wap";
38
+ display?: 'page' | 'popup' | 'touch' | 'wap';
39
39
  /**
40
40
  * - `'none'`: do not prompt user for login or consent on reauthentication
41
41
  * - `'login'`: prompt user for reauthentication
42
42
  * - `'consent'`: prompt user for consent before processing request
43
43
  * - `'select_account'`: prompt user to select an account
44
44
  */
45
- prompt?: "none" | "login" | "consent" | "select_account";
45
+ prompt?: 'none' | 'login' | 'consent' | 'select_account';
46
46
  /**
47
47
  * Maximum allowable elapsed time (in seconds) since authentication.
48
48
  * If the last time the user authenticated is greater than this value,
@@ -65,7 +65,7 @@ export interface AuthorizationParams {
65
65
  *
66
66
  * This only affects the New Universal Login Experience.
67
67
  */
68
- screen_hint?: "signup" | "login" | string;
68
+ screen_hint?: 'signup' | 'login' | string;
69
69
  /**
70
70
  * The user's email address or other identifier. When your app knows
71
71
  * which user is trying to authenticate, you can provide this parameter
@@ -179,7 +179,7 @@ export interface GetTokenSilentlyOptions {
179
179
  * When `cache-only`, only reads from the cache and never sends a request to Auth0.
180
180
  * Defaults to `on`, where it both reads from the cache and sends a request to Auth0 as needed.
181
181
  */
182
- cacheMode?: "on" | "off" | "cache-only";
182
+ cacheMode?: 'on' | 'off' | 'cache-only';
183
183
  /**
184
184
  * Parameters that will be sent back to Auth0 as part of a request.
185
185
  */
@@ -219,7 +219,7 @@ export interface GetTokenSilentlyOptions {
219
219
  */
220
220
  detailedResponse?: boolean;
221
221
  }
222
- export type GetTokenSilentlyVerboseResponse = Omit<TokenEndpointResponse, "refresh_token">;
222
+ export type GetTokenSilentlyVerboseResponse = Omit<TokenEndpointResponse, 'refresh_token'>;
223
223
  export type TokenEndpointResponse = {
224
224
  id_token: string;
225
225
  access_token: string;
@@ -239,7 +239,7 @@ export interface CookieOptions {
239
239
  /**
240
240
  * (Optional) The same-site attribute of the cookie.
241
241
  */
242
- sameSite?: "Lax" | "Strict" | "None";
242
+ sameSite?: 'Lax' | 'Strict' | 'None';
243
243
  /**
244
244
  * (Optional) Whether the cookie should only be sent over HTTPS.
245
245
  */
@@ -254,7 +254,7 @@ export type FaableAuthClientConfig = {
254
254
  clientId: string;
255
255
  scope?: string;
256
256
  audience?: string;
257
- redirect_uri?: string;
257
+ redirectUri?: string;
258
258
  authorizationParams?: AuthorizationParams;
259
259
  cookieDomain?: string;
260
260
  useRefreshTokens?: boolean;
@@ -277,7 +277,7 @@ type MaybePromisify<T> = T | Promise<T>;
277
277
  type PromisifyMethods<T> = {
278
278
  [K in keyof T]: T[K] extends AnyFunction ? (...args: Parameters<T[K]>) => MaybePromisify<ReturnType<T[K]>> : T[K];
279
279
  };
280
- export type SupportedStorage = PromisifyMethods<Pick<Storage, "getItem" | "setItem" | "removeItem">> & {
280
+ export type SupportedStorage = PromisifyMethods<Pick<Storage, 'getItem' | 'setItem' | 'removeItem'>> & {
281
281
  /**
282
282
  * If set to `true` signals to the library that the storage medium is used
283
283
  * on a server and the values may not be authentic, such as reading from
@@ -287,10 +287,16 @@ export type SupportedStorage = PromisifyMethods<Pick<Storage, "getItem" | "setIt
287
287
  */
288
288
  isServer?: boolean;
289
289
  };
290
- export type Provider = "google" | "github";
291
- export type AuthFlowType = "implicit" | "pkce";
290
+ export type Provider = 'google' | 'github';
291
+ export type AuthFlowType = 'implicit' | 'pkce';
292
292
  export type SignInWithOAuthConnection = {
293
- /** Default connection is used if not setted. */
293
+ /**
294
+ * Identifier of the connection to use. Preferred over `connection` when
295
+ * known, as the backend resolves it without additional lookups. If both
296
+ * are provided, `connection_id` wins.
297
+ */
298
+ connection_id?: string;
299
+ /** Default connection is used if not setted. Kept for compatibility with tenants using connection names. */
294
300
  connection?: string;
295
301
  /** A URL to send the user to after they are confirmed. */
296
302
  redirectTo?: string;
@@ -356,8 +362,8 @@ export type AuthResponse = {
356
362
  };
357
363
  error: AuthError;
358
364
  };
359
- export type AuthChangeEventMFA = "MFA_CHALLENGE_VERIFIED";
360
- export type AuthChangeEvent = "INITIAL_SESSION" | "PASSWORD_RECOVERY" | "SIGNED_IN" | "SIGNED_OUT" | "TOKEN_REFRESHED" | "USER_UPDATED" | AuthChangeEventMFA;
365
+ export type AuthChangeEventMFA = 'MFA_CHALLENGE_VERIFIED';
366
+ export type AuthChangeEvent = 'INITIAL_SESSION' | 'PASSWORD_RECOVERY' | 'SIGNED_IN' | 'SIGNED_OUT' | 'TOKEN_REFRESHED' | 'USER_UPDATED' | AuthChangeEventMFA;
361
367
  export interface Subscription {
362
368
  /**
363
369
  * The subscriber UUID. This will be set by the client.
@@ -383,7 +389,7 @@ export type SignOut = {
383
389
  * there is no sign-out event fired on
384
390
  * the current session!
385
391
  */
386
- scope?: "global" | "local" | "others";
392
+ scope?: 'global' | 'local' | 'others';
387
393
  };
388
394
  export type InitializeResult = {
389
395
  error: AuthError | null;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Races a promise against a deadline. If `promise` settles first the result
3
+ * passes through; if the deadline elapses first the returned promise rejects
4
+ * with an Error whose message is `timeoutMessage`. The internal timer is
5
+ * cleared once `promise` settles, regardless of outcome.
6
+ */
7
+ export declare const withTimeout: <T>(promise: Promise<T>, timeoutMs: number, timeoutMessage: string) => Promise<T>;
@@ -1,6 +1,6 @@
1
- import { Base } from "../Base";
2
- import { BaseLogOptions } from "../BaseLog";
3
- import { LockFunc } from "./locks";
1
+ import { Base } from '../Base';
2
+ import { BaseLogOptions } from '../BaseLog';
3
+ import { LockFunc } from './locks';
4
4
  type LockOptions = {
5
5
  storageKey: string;
6
6
  lock?: LockFunc;
@@ -38,10 +38,10 @@ export declare class NavigatorLockAcquireTimeoutError extends LockAcquireTimeout
38
38
  * Implements a global exclusive lock using the Navigator LockManager API. It
39
39
  * is available on all browsers released after 2022-03-15 with Safari being the
40
40
  * last one to release support. If the API is not available, this function will
41
- * throw. Make sure you check availablility before configuring {@link
42
- * GoTrueClient}.
41
+ * throw. Make sure you check availability before passing this lock to the
42
+ * client.
43
43
  *
44
- * You can turn on debugging by setting the `supabase.gotrue-js.locks.debug`
44
+ * You can turn on debugging by setting the `faable.auth.locks.debug`
45
45
  * local storage item to `true`.
46
46
  *
47
47
  * Internals:
@@ -1,4 +1,4 @@
1
- import { AuthenticationResult } from "./lib/types";
1
+ import { AuthenticationResult } from './lib/types';
2
2
  export declare const parseAuthenticationResult: (queryString: string) => AuthenticationResult;
3
3
  export declare const createQueryParams: ({ clientId: client_id, ...params }: any) => string;
4
4
  /**
@@ -1,7 +1,7 @@
1
1
  /*!
2
- * @faable/auth-js v1.6.1
2
+ * @faable/auth-js v1.6.2-next.1
3
3
  * (c) 2026
4
4
  * @license SEE LICENSE.md
5
5
  */
6
- !function(e){"use strict";var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},t(e,r)};function r(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}var n=function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var s in t=arguments[r])Object.prototype.hasOwnProperty.call(t,s)&&(e[s]=t[s]);return e},n.apply(this,arguments)};function s(e,t,r,n){return new(r||(r=Promise))((function(s,i){function o(e){try{u(n.next(e))}catch(e){i(e)}}function a(e){try{u(n.throw(e))}catch(e){i(e)}}function u(e){var t;e.done?s(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}u((n=n.apply(e,t||[])).next())}))}function i(e,t){var r,n,s,i={label:0,sent:function(){if(1&s[0])throw s[1];return s[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(u){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(i=0)),i;)try{if(r=1,n&&(s=2&a[0]?n.return:a[0]?n.throw||((s=n.return)&&s.call(n),0):n.next)&&!(s=s.call(n,a[1])).done)return s;switch(n=0,s&&(a=[2&a[0],s.value]),a[0]){case 0:case 1:s=a;break;case 4:return i.label++,{value:a[1],done:!1};case 5:i.label++,n=a[1],a=[0];continue;case 7:a=i.ops.pop(),i.trys.pop();continue;default:if(!(s=i.trys,(s=s.length>0&&s[s.length-1])||6!==a[0]&&2!==a[0])){i=0;continue}if(3===a[0]&&(!s||a[1]>s[0]&&a[1]<s[3])){i.label=a[1];break}if(6===a[0]&&i.label<s[1]){i.label=s[1],s=a;break}if(s&&i.label<s[2]){i.label=s[2],i.ops.push(a);break}s[2]&&i.ops.pop(),i.trys.pop();continue}a=t.call(e,i)}catch(e){a=[6,e],n=0}finally{r=s=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,u])}}}function o(e,t,r){if(r||2===arguments.length)for(var n,s=0,i=t.length;s<i;s++)!n&&s in t||(n||(n=Array.prototype.slice.call(t,0,s)),n[s]=t[s]);return e.concat(n||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var a=function(e,t,r){return s(void 0,void 0,void 0,(function(){return i(this,(function(n){switch(n.label){case 0:return[4,e.setItem(t,JSON.stringify(r))];case 1:return n.sent(),[2]}}))}))},u=function(e,t){return s(void 0,void 0,void 0,(function(){var r;return i(this,(function(n){switch(n.label){case 0:return[4,e.getItem(t)];case 1:if(!(r=n.sent()))return[2,null];try{return[2,JSON.parse(r)]}catch(e){return[2,r]}return[2]}}))}))};function c(e){return("0"+e.toString(16)).substr(-2)}function l(e){return s(this,void 0,void 0,(function(){var t,r,n,s;return i(this,(function(i){switch(i.label){case 0:return t=new TextEncoder,r=t.encode(e),[4,crypto.subtle.digest("SHA-256",r)];case 1:return n=i.sent(),s=new Uint8Array(n),[2,Array.from(s).map((function(e){return String.fromCharCode(e)})).join("")]}}))}))}function h(e){return s(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:return"undefined"!=typeof crypto&&void 0!==crypto.subtle&&"undefined"!=typeof TextEncoder?[4,l(e)]:(console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),[2,e]);case 1:return t=r.sent(),[2,(n=t,btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""))]}var n}))}))}function d(e,t){return s(this,arguments,void 0,(function(e,t,r){var n,s,o;return void 0===r&&(r=!1),i(this,(function(i){switch(i.label){case 0:return n=function(){var e=new Uint32Array(56);if("undefined"==typeof crypto){for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~",r="",n=0;n<56;n++)r+=t.charAt(Math.floor(66*Math.random()));return r}return crypto.getRandomValues(e),Array.from(e,c).join("")}(),s=n,r&&(s+="/PASSWORD_RECOVERY"),[4,a(e,"".concat(t,"-code-verifier"),s)];case 1:return i.sent(),[4,h(n)];case 2:return[2,[o=i.sent(),n===o?"plain":"S256"]]}}))}))}var f=function(){return"undefined"!=typeof document},v={tested:!1,writable:!1},p=function(){if(!f())return!1;try{if("object"!=typeof globalThis.localStorage)return!1}catch(e){return!1}if(v.tested)return v.writable;var e="lswt-".concat(Math.random()).concat(Math.random());try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),v.tested=!0,v.writable=!0}catch(e){v.tested=!0,v.writable=!1}return v.writable};function b(e){var t,r,s=e.data,i=null;if(!s)throw new Error("Bad session response");return function(e){return!!e.access_token&&!!e.refresh_token&&!!e.expires_in}(s)&&(i=n({},s),!s.expires_at&&s.expires_in&&(i.expires_at=(r=s.expires_in,Math.round(Date.now()/1e3)+r))),{data:{session:i,user:null!==(t=s.user)&&void 0!==t?t:s},error:null}}var g=function(){function e(){var t=this;this.promise=new e.promiseConstructor((function(e,r){t.resolve=e,t.reject=r}))}return e.promiseConstructor=Promise,e}();function _(e,t){var r=this;return new Promise((function(n,o){s(r,void 0,void 0,(function(){var r,s,a;return i(this,(function(i){switch(i.label){case 0:r=0,i.label=1;case 1:if(!(r<1/0))return[3,6];i.label=2;case 2:return i.trys.push([2,4,,5]),[4,e(r)];case 3:return s=i.sent(),t(r,null,s)?[3,5]:(n(s),[2]);case 4:return a=i.sent(),t(r,a)?[3,5]:(o(a),[2]);case 5:return r++,[3,1];case 6:return[2]}}))}))}))}function y(e){return s(this,void 0,void 0,(function(){return i(this,(function(t){return[2,new Promise((function(t){setTimeout((function(){return t(null)}),e)}))]}))}))}function w(e){var t=e.split(".");if(3!==t.length)throw new Error("JWT is not valid: not a JWT structure");if(!/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}=?$|[a-z0-9_-]{2}(==)?$)$/i.test(t[1]))throw new Error("JWT is not valid: payload is not in base64url format");var r=t[1];return JSON.parse(function(e){var t,r,n,s,i,o,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",u="",c=0;for(e=e.replace("-","+").replace("_","/");c<e.length;)t=a.indexOf(e.charAt(c++))<<2|(s=a.indexOf(e.charAt(c++)))>>4,r=(15&s)<<4|(i=a.indexOf(e.charAt(c++)))>>2,n=(3&i)<<6|(o=a.indexOf(e.charAt(c++))),u+=String.fromCharCode(t),64!=i&&0!=r&&(u+=String.fromCharCode(r)),64!=o&&0!=n&&(u+=String.fromCharCode(n));return u}(r))}var m={getItem:function(e){return p()?globalThis.localStorage.getItem(e):null},setItem:function(e,t){p()&&globalThis.localStorage.setItem(e,t)},removeItem:function(e){p()&&globalThis.localStorage.removeItem(e)}},k=function(e){function t(t,r,n){var s=e.call(this,t)||this;return s.__isAuthError=!0,s.name="AuthError",s.status=r,s.code=n,s}return r(t,e),t}(Error),S=function(e){function t(t,r,n,s){var i=e.call(this,t,n,s)||this;return i.name=r,i.status=n,i}return r(t,e),t}(k),I=function(e){function t(){return e.call(this,"Auth session missing!","AuthSessionMissingError",400,void 0)||this}return r(t,e),t}(S);function x(e){return"object"==typeof e&&null!==e&&"__isAuthError"in e}!function(e){function t(t,r,n){var s=e.call(this,t,r,n)||this;return s.name="AuthApiError",s.status=r,s.code=n,s}r(t,e)}(k);var T=function(e){function t(t,r){void 0===r&&(r=null);var n=e.call(this,t,"AuthImplicitGrantRedirectError",500,void 0)||this;return n.details=null,n.details=r,n}return r(t,e),t.prototype.toJSON=function(){return{name:this.name,message:this.message,status:this.status,details:this.details}},t}(S),A=function(e){function t(t,r){void 0===r&&(r=null);var n=e.call(this,t,"AuthPKCEGrantCodeExchangeError",500,void 0)||this;return n.details=null,n.details=r,n}return r(t,e),t.prototype.toJSON=function(){return{name:this.name,message:this.message,status:this.status,details:this.details}},t}(S),C=function(e){function t(t,r){var n=e.call(this,t)||this;return n.name="AuthUnknownError",n.originalError=r,n}return r(t,e),t}(k),E=function(e){function t(){return e.call(this,"Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)||this}return r(t,e),t}(S);function R(e){return x(e)&&"AuthRetryableFetchError"===e.name}!function(e){function t(t,r){return e.call(this,t,"AuthRetryableFetchError",r,void 0)||this}r(t,e)}(S);var U=function(){function e(e){void 0===e&&(e={}),this.logger=console.log,this.logDebugMessages=!!e.debug,"function"==typeof e.debug&&(this.logger=e.debug)}return e.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(this.logDebugMessages){var r=this.extraPrint?this.extraPrint():"";this.logger.apply(this,o(["FaableAuth@".concat(r," (").concat("0.0.0",") ").concat((new Date).toISOString())],e,!1))}return this},e}(),L="undefined"!=typeof window?window:void 0,P="undefined"!=typeof globalThis?globalThis:L,O=null==P?void 0:P.document,D=P.fetch,N=function(e){void 0===e&&(e={});var t={};return(null==e?void 0:e.token)&&(t=n(n({},t),{Authorization:"Bearer ".concat(null==e?void 0:e.token)})),n(n({},null==e?void 0:e.headers),t)},q=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return s(void 0,o([e],t,!0),void 0,(function(e,t){var r,n,s;return void 0===t&&(t={}),i(this,(function(i){switch(i.label){case 0:return t.raw?[4,e.text()]:[3,2];case 1:return n=i.sent(),[3,4];case 2:return[4,e.json()];case 3:n=i.sent(),i.label=4;case 4:return r=n,e.status>=300?[2,{data:r,error:t.raw?null===(s=JSON.parse(r))||void 0===s?void 0:s.message:null==r?void 0:r.message}]:[2,{data:r,error:null}]}}))}))},z=function(e,t){for(var r=[],a=2;a<arguments.length;a++)r[a-2]=arguments[a];return s(void 0,o([e,t],r,!0),void 0,(function(e,t,r){var s;return void 0===r&&(r={}),i(this,(function(i){switch(i.label){case 0:return i.trys.push([0,2,,3]),[4,D(e,{method:"POST",body:JSON.stringify(t),headers:n(n({},N(r)),{"Content-Type":"application/json"})})];case 1:return s=i.sent(),[2,q(s,r)];case 2:return[2,{data:null,error:i.sent()}];case 3:return[2]}}))}))},j=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return s(void 0,o([e],t,!0),void 0,(function(e,t){var r;return void 0===t&&(t={}),i(this,(function(s){switch(s.label){case 0:return s.trys.push([0,2,,3]),[4,D(e,n(n({},t),{method:"GET",headers:N(t)}))];case 1:return r=s.sent(),[2,q(r,t)];case 2:return[2,{data:null,error:s.sent()}];case 3:return[2]}}))}))},M=function(e){function t(t,r){var n=e.call(this,r)||this;return n.base_url=t,n}return r(t,e),t.prototype.extraPrint=function(){return"api"},t.prototype.signOut=function(e){return s(this,void 0,void 0,(function(){var t,r;return i(this,(function(n){switch(n.label){case 0:return t="".concat(this.base_url,"/logout?").concat(new URLSearchParams(e)),this._debug("requesting ".concat(t)),[4,j(t)];case 1:return r=n.sent(),this._debug(r),r.error?[2,{error:r.error,data:null}]:[2,{error:null,data:null}]}}))}))},t}(U);globalThis&&p()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug");var K=function(e){function t(t){var r=e.call(this,t)||this;return r.isAcquireTimeout=!0,r}return r(t,e),t}(Error);function V(e,t,r){return s(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,r()];case 1:return[2,e.sent()]}}))}))}!function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e)}(K);var F=function(e){function t(r){void 0===r&&(r={});var n=e.call(this,r)||this;return n.instanceID=t.nextInstanceID,t.nextInstanceID+=1,n}return r(t,e),t.prototype.extraPrint=function(){return this.instanceID.toString()},t.nextInstanceID=0,t}(U),G=function(e){function t(t){var r=e.call(this,{debug:t.debug})||this;return r.lockAcquired=!1,r.pendingInLock=[],r.lock=t.lock||V,r.storageKey=t.storageKey,r}return r(t,e),t.prototype._acquireLock=function(e,t){return s(this,void 0,void 0,(function(){var r,n,a=this;return i(this,(function(u){switch(u.label){case 0:this._debug("#_acquireLock","begin",e),u.label=1;case 1:return u.trys.push([1,,3,4]),this.lockAcquired?(r=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),n=s(a,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,r];case 1:return e.sent(),[4,t()];case 2:return[2,e.sent()]}}))})),this.pendingInLock.push(s(a,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,n];case 1:case 2:return e.sent(),[3,3];case 3:return[2]}}))}))),[2,n]):[4,this.lock("lock:".concat(this.storageKey),e,(function(){return s(a,void 0,void 0,(function(){var e,r,n=this;return i(this,(function(a){switch(a.label){case 0:this._debug("#_acquireLock","lock acquired for storage key",this.storageKey),a.label=1;case 1:return a.trys.push([1,,7,8]),this.lockAcquired=!0,e=t(),this.pendingInLock.push(s(n,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,e];case 1:case 2:return t.sent(),[3,3];case 3:return[2]}}))}))),[4,e];case 2:a.sent(),a.label=3;case 3:return this.pendingInLock.length?(r=o([],this.pendingInLock,!0),[4,Promise.all(r)]):[3,5];case 4:return a.sent(),this.pendingInLock.splice(0,r.length),[3,3];case 5:return[4,e];case 6:return[2,a.sent()];case 7:return this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1,[7];case 8:return[2]}}))}))}))];case 2:return[2,u.sent()];case 3:return this._debug("#_acquireLock","end"),[7];case 4:return[2]}}))}))},t}(F);function W(e){void 0===e&&(e="");var t={},r=new URL(e);if(r.hash&&"#"===r.hash[0])try{new URLSearchParams(r.hash.substring(1)).forEach((function(e,r){t[r]=e}))}catch(e){}return r.searchParams.forEach((function(e,r){t[r]=e})),t}var J=function(e){void 0===e&&(e=[]);var t=new URL(window.location.href);e.forEach((function(e){t.searchParams.delete(e)})),t.hash="",window.history.replaceState(window.history.state,"",t.toString())};function B(){if(!L)throw new Error("No window in environment");return L}var H={redirect:function(e){B().location=e},getDocument:function(){return B().document},getWindow:B},$=3e4,Y=function(e){function t(t){var r,o,a=this,u=(null==t?void 0:t.debug)||!1;if((a=e.call(this,{debug:u})||this).initializePromise=null,a.detectSessionInUrl=!0,a.autoRefreshTicker=null,a.visibilityChangedCallback=null,a.refreshingDeferred=null,a.broadcastChannel=null,a.stateChangeEmitters=new Map,a._session=null,a.sessionCheckExpiryDays=1,a.redirect_uri=(null==t?void 0:t.redirect_uri)||"",!(null==t?void 0:t.domain))throw new Error("Missing domain");if(a.domainUrl=function(e){if(!/^(https|http)?:\/\//.test(e)){var t=(null===location||void 0===location?void 0:location.protocol)||"https";return"".concat(t,"//").concat(e)}return e}(t.domain),a.tokenIssuer=(o=a.domainUrl,"".concat(o)),!t.clientId)throw new Error("Missing clientId");a.clientId=t.clientId,a.api=new M(a.domainUrl,{debug:u});var c=(null==t?void 0:t.storageKey)||"faableauth";if(a.storageKey="".concat(c,"-").concat(a.clientId),(null==t?void 0:t.cookieOptions)?a.storage=function(e){void 0===e&&(e={});var t=n({path:"/",sameSite:"Lax",secure:f()&&"https:"===window.location.protocol},e);return{getItem:function(e){if(!f())return null;for(var t=encodeURIComponent(e)+"=",r=decodeURIComponent(document.cookie).split(";"),n=0;n<r.length;n++){for(var s=r[n];" "===s.charAt(0);)s=s.substring(1);if(0===s.indexOf(t))return s.substring(t.length,s.length)}return null},setItem:function(e,r){if(f()){var n="".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(r));t.maxAge&&(n+="; Max-Age=".concat(t.maxAge)),t.domain&&(n+="; Domain=".concat(t.domain)),t.path&&(n+="; Path=".concat(t.path)),t.sameSite&&(n+="; SameSite=".concat(t.sameSite)),t.secure&&(n+="; Secure"),document.cookie=n}},removeItem:function(e){if(f()){var r="".concat(encodeURIComponent(e),"=; Max-Age=-99999999;");t.domain&&(r+=" Domain=".concat(t.domain,";")),t.path&&(r+=" Path=".concat(t.path,";")),document.cookie=r}}}}(t.cookieOptions):a.storage=(null==t?void 0:t.storage)||m,a.lock=new G({lock:t.lock,storageKey:a.storageKey,debug:t.debug}),f()&&globalThis.BroadcastChannel&&a.storageKey){try{a.broadcastChannel=new globalThis.BroadcastChannel(a.storageKey)}catch(e){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",e)}null===(r=a.broadcastChannel)||void 0===r||r.addEventListener("message",(function(e){return s(a,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return this._debug("received broadcast notification from other tab or client",e),[4,this._notifyAllSubscribers(e.data.event,e.data.session,!1)];case 1:return t.sent(),[2]}}))}))}))}return a.autoRefreshToken=!0,a.initialize(),a}return r(t,e),Object.defineProperty(t.prototype,"session",{get:function(){return this._session},enumerable:!1,configurable:!0}),t.prototype.initialize=function(){return s(this,void 0,void 0,(function(){var e=this;return i(this,(function(t){switch(t.label){case 0:return this.initializePromise?[4,this.initializePromise]:[3,2];case 1:case 3:return[2,t.sent()];case 2:return this.initializePromise=s(e,void 0,void 0,(function(){var e=this;return i(this,(function(t){switch(t.label){case 0:return[4,this.lock._acquireLock(-1,(function(){return s(e,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,this._initialize()];case 1:return[2,e.sent()]}}))}))}))];case 1:return[2,t.sent()]}}))})),[4,this.initializePromise]}}))}))},t.prototype._initialize=function(){return s(this,void 0,void 0,(function(){var e,t,r,n,o,a,u,c=this;return i(this,(function(l){switch(l.label){case 0:return l.trys.push([0,8,9,11]),[4,this._detectFlowType()];case 1:return e=l.sent(),this._debug("#_initialize()","begin","flow_type",e),e?[4,this._getSessionFromURL(e)]:[3,6];case 2:return t=l.sent(),r=t.data,(n=t.error)?(this._debug("#_initialize()","error detecting session from URL",n),"Identity is already linked"===(null==n?void 0:n.message)||"Identity is already linked to another user"===(null==n?void 0:n.message)?[2,{error:n}]:[4,this._removeSession()]):[3,4];case 3:return l.sent(),[2,{error:n}];case 4:return o=r.session,a=r.redirectType,this._debug("#_initialize()","detected session in URL",o,"redirect type",a),[4,this._saveSession(o)];case 5:return l.sent(),setTimeout((function(){return s(c,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return"recovery"!==a?[3,2]:[4,this._notifyAllSubscribers("PASSWORD_RECOVERY",o)];case 1:return e.sent(),[3,4];case 2:return[4,this._notifyAllSubscribers("SIGNED_IN",o)];case 3:e.sent(),e.label=4;case 4:return[2]}}))}))}),0),[2,{error:null}];case 6:return[4,this._recoverAndRefresh()];case 7:return l.sent(),[2,{error:null}];case 8:return x(u=l.sent())?[2,{error:u}]:[2,{error:new C("Unexpected error during initialization",u)}];case 9:return[4,this._handleVisibilityChange()];case 10:return l.sent(),this._debug("#_initialize()","end"),[7];case 11:return[2]}}))}))},t.prototype._getSessionFromURL=function(e){return s(this,void 0,void 0,(function(){var t,r,n,s,o,a,u,c,l,h,d,f,v,p,b,g,_,y,w;return i(this,(function(i){switch(i.label){case 0:if(i.trys.push([0,4,,5]),t=W(null==L?void 0:L.location.href),"pkce"!=e)return[3,2];if(!t.code)throw new A("No code detected.");return[4,this._exchangeCodeForSession(t.code)];case 1:if(r=i.sent(),n=r.data,s=r.error)throw s;return J(["code"]),[2,{data:{session:n.session,redirectType:null},error:null}];case 2:if(t.error||t.error_description||t.error_code)throw new T(t.error_description||"Error in URL with unspecified error_description",{error:t.error||"unspecified_error",code:t.error_code||"unspecified_code"});if(o=t.provider_token,a=t.provider_refresh_token,u=t.access_token,c=t.refresh_token,l=t.expires_in,h=t.expires_at,d=t.token_type,!(u&&l&&c&&d))throw new T("No session defined in URL");return f=function(e){var t=e.expires_in,r=e.expires_at,n=e.refreshTick,s=Math.round(Date.now()/1e3),i=parseInt(t),o=s+i;r&&(o=parseInt(r));var a=o-s;1e3*a<=n&&console.warn("@supabase/gotrue-js: Session as retrieved from URL expires in ".concat(a,"s, should have been closer to ").concat(i,"s"));var u=o-i;return s-u>=120?console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",u,o,s):s-u<0&&console.warn("@supabase/gotrue-js: Session as retrieved from URL was issued in the future? Check the device clok for skew",u,o,s),{expiresIn:i,expiresAt:o}}({expires_in:l,expires_at:h,refreshTick:$}),v=f.expiresAt,p=f.expiresIn,[4,this._getUser(u)];case 3:if(b=i.sent(),g=b.data,(_=b.error)||!g)throw _;return y={provider_token:o,provider_refresh_token:a,access_token:u,expires_in:p,expires_at:v,refresh_token:c,token_type:d,user:g},J(["access_token","expires_in","refresh_token","token_type","scope"]),this._debug("#_getSessionFromURL()","clearing window.location.hash"),[2,{data:{session:y,redirectType:t.type},error:null}];case 4:if(w=i.sent(),this._debug(w),x(w))return[2,{data:{session:null,redirectType:null},error:w}];throw w;case 5:return[2]}}))}))},t.prototype._exchangeCodeForSession=function(e){return s(this,void 0,void 0,(function(){var t,r,s,o,a,c,l,h,d,f,v,p;return i(this,(function(i){switch(i.label){case 0:return[4,u(this.storage,"".concat(this.storageKey,"-code-verifier"))];case 1:return t=i.sent(),r=(null!=t?t:"").split("/"),s=r[0],o=r[1],[4,z("".concat(this.domainUrl,"/oauth/token"),{client_id:this.clientId,grant_type:"authorization_code",code:e,code_verifier:s})];case 2:if(a=i.sent(),c=b(a),l=c.data,h=c.error,!l)throw new Error("Missing data");return[4,this.storage.removeItem("".concat(this.storageKey,"-code-verifier"))];case 3:return i.sent(),h?[2,{data:{user:null,session:null,redirectType:null},error:h}]:l&&l.session&&l.user?(d=l.session)?[4,this._getUser(d.access_token)]:[3,7]:[2,{data:{user:null,session:null,redirectType:null},error:new E}];case 4:if(f=i.sent(),v=f.data,(p=f.error)||!v)throw p;return d=n(n({},d),{user:v}),l.session=d,[4,this._saveSession(d)];case 5:return i.sent(),[4,this._notifyAllSubscribers("SIGNED_IN",d)];case 6:i.sent(),i.label=7;case 7:return[2,{data:n(n({},l),{redirectType:null!=o?o:null}),error:h}]}}))}))},t.prototype._handleVisibilityChange=function(){return s(this,void 0,void 0,(function(){var e,t=this;return i(this,(function(r){switch(r.label){case 0:if(this._debug("#_handleVisibilityChange()"),!f()||!(null==L?void 0:L.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),[2,!1];r.label=1;case 1:return r.trys.push([1,3,,4]),this.visibilityChangedCallback=function(){return s(t,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,this._onVisibilityChanged(!1)];case 1:return[2,e.sent()]}}))}))},null==L||L.addEventListener("visibilitychange",this.visibilityChangedCallback),[4,this._onVisibilityChanged(!0)];case 2:return r.sent(),[3,4];case 3:return e=r.sent(),console.error("_handleVisibilityChange",e),[3,4];case 4:return[2]}}))}))},t.prototype._onVisibilityChanged=function(e){return s(this,void 0,void 0,(function(){var t,r=this;return i(this,(function(n){switch(n.label){case 0:return t="#_onVisibilityChanged(".concat(e,")"),this._debug(t,"visibilityState",O.visibilityState),"visible"!==O.visibilityState?[3,4]:(this.autoRefreshToken&&this._startAutoRefresh(),e?[3,3]:[4,this.initializePromise]);case 1:return n.sent(),[4,this.lock._acquireLock(-1,(function(){return s(r,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return"visible"!==O.visibilityState?(this._debug(t,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting"),[2]):[4,this._recoverAndRefresh()];case 1:return e.sent(),[2]}}))}))}))];case 2:n.sent(),n.label=3;case 3:return[3,5];case 4:"hidden"===O.visibilityState&&this.autoRefreshToken&&this._stopAutoRefresh(),n.label=5;case 5:return[2]}}))}))},t.prototype._recoverAndRefresh=function(){return s(this,void 0,void 0,(function(){var e,t,r,n,s,o,a;return i(this,(function(i){switch(i.label){case 0:e="#_recoverAndRefresh()",this._debug(e,"begin"),i.label=1;case 1:return i.trys.push([1,12,13,14]),[4,u(this.storage,this.storageKey)];case 2:return t=i.sent(),this._debug(e,"session from storage",t),this._isValidSession(t)?[3,5]:(this._debug(e,"session is not valid"),null===t?[3,4]:[4,this._removeSession()]);case 3:i.sent(),i.label=4;case 4:return[2];case 5:return r=Math.round(Date.now()/1e3),n=(null!==(a=t.expires_at)&&void 0!==a?a:1/0)<r+10,this._debug(e,"session has".concat(n?"":" not"," expired with margin of ").concat(10,"s")),n?this.autoRefreshToken&&t.refresh_token?[4,this._callRefreshToken(t.refresh_token)]:[3,8]:[3,9];case 6:return(s=i.sent().error)?(console.error(s),R(s)?[3,8]:(this._debug(e,"refresh failed with a non-retryable error, removing the session",s),[4,this._removeSession()])):[3,8];case 7:i.sent(),i.label=8;case 8:return[3,11];case 9:return this._session=t,[4,this._notifyAllSubscribers("SIGNED_IN",t)];case 10:i.sent(),i.label=11;case 11:return[3,14];case 12:return o=i.sent(),this._debug(e,"error",o),console.error(o),[2];case 13:return this._debug(e,"end"),[7];case 14:return[2]}}))}))},t.prototype._removeVisibilityChangedCallback=function(){this._debug("#_removeVisibilityChangedCallback()");var e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{e&&f()&&(null==L?void 0:L.removeEventListener)&&L.removeEventListener("visibilitychange",e)}catch(e){console.error("removing visibilitychange callback failed",e)}},t.prototype.startAutoRefresh=function(){return s(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return this._removeVisibilityChangedCallback(),[4,this._startAutoRefresh()];case 1:return e.sent(),[2]}}))}))},t.prototype._startAutoRefresh=function(){return s(this,void 0,void 0,(function(){var e,t=this;return i(this,(function(r){switch(r.label){case 0:return[4,this._stopAutoRefresh()];case 1:return r.sent(),this._debug("#_startAutoRefresh()"),e=setInterval((function(){return t._autoRefreshTokenTick()}),$),this.autoRefreshTicker=e,e&&"object"==typeof e&&"function"==typeof e.unref?e.unref():void 0!==globalThis.Deno&&"function"==typeof globalThis.Deno.unrefTimer&&Deno.unrefTimer(e),setTimeout((function(){return s(t,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return[4,this.initializePromise];case 1:return e.sent(),[4,this._autoRefreshTokenTick()];case 2:return e.sent(),[2]}}))}))}),0),[2]}}))}))},t.prototype._stopAutoRefresh=function(){return s(this,void 0,void 0,(function(){var e;return i(this,(function(t){return this._debug("#_stopAutoRefresh()"),e=this.autoRefreshTicker,this.autoRefreshTicker=null,e&&clearInterval(e),[2]}))}))},t.prototype._autoRefreshTokenTick=function(){return s(this,void 0,void 0,(function(){var e,t=this;return i(this,(function(r){switch(r.label){case 0:this._debug("#_autoRefreshTokenTick()","begin"),r.label=1;case 1:return r.trys.push([1,3,,4]),[4,this.lock._acquireLock(0,(function(){return s(t,void 0,void 0,(function(){var e,t,r=this;return i(this,(function(n){switch(n.label){case 0:n.trys.push([0,,5,6]),e=Date.now(),n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this._useSession((function(t){return s(r,void 0,void 0,(function(){var r,n;return i(this,(function(s){switch(s.label){case 0:return(r=t.data.session)&&r.refresh_token&&r.expires_at?(n=Math.floor((1e3*r.expires_at-e)/$),this._debug("#_autoRefreshTokenTick()","access token expires in ".concat(n," ticks, a tick lasts ").concat($,"ms, refresh threshold is ").concat(3," ticks")),n<=3?[4,this._callRefreshToken(r.refresh_token)]:[3,2]):(this._debug("#_autoRefreshTokenTick()","no session"),[2]);case 1:s.sent(),s.label=2;case 2:return[2]}}))}))}))];case 2:return[2,n.sent()];case 3:return t=n.sent(),console.error("Auto refresh tick failed with error. This is likely a transient error.",t),[3,4];case 4:return[3,6];case 5:return this._debug("#_autoRefreshTokenTick()","end"),[7];case 6:return[2]}}))}))}))];case 2:return r.sent(),[3,4];case 3:if(!((e=r.sent()).isAcquireTimeout||e instanceof K))throw e;return this._debug("auto refresh token tick lock not available"),[3,4];case 4:return[2]}}))}))},t.prototype._detectFlowType=function(){return s(this,void 0,void 0,(function(){var e,t;return i(this,(function(r){return e=W(null==L?void 0:L.location.href),(t=f())&&e.code?[2,"pkce"]:t&&(e.access_token||e.error_description)?[2,"implicit"]:[2,null]}))}))},t.prototype._scope=function(){return this.scope||"openid profile email"},t.prototype._getUrlForConnection=function(e,t){return s(this,void 0,void 0,(function(){var r,s,o,a,u;return i(this,(function(i){switch(i.label){case 0:return r=t.queryParams||{},s={client_id:this.clientId,response_type:t.response_type,redirect_uri:t.redirectTo||this.redirect_uri||(null==L?void 0:L.location.origin),scope:t.scopes||this._scope()},[4,this._detectFlowType()];case 1:return"pkce"!==i.sent()?[3,3]:[4,d(this.storage,this.storageKey)];case 2:o=i.sent(),a=o[0],u=o[1],r=n(n({},r),{code_challenge:a,code_challenge_method:u}),i.label=3;case 3:return t.connection&&(s.connection=t.connection),[2,"".concat(e,"?").concat(new URLSearchParams(n(n({},r),s)))]}}))}))},t.prototype.signInWithOauthConnection=function(e){return s(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,this._handleConnectionSignIn({connection:e.connection,redirectTo:null==e?void 0:e.redirectTo,scopes:null==e?void 0:e.scopes,queryParams:e.queryParams,skipBrowserRedirect:e.skipBrowserRedirect})];case 1:return[2,t.sent()]}}))}))},t.prototype.signInWithUsernamePassword=function(e){return s(this,void 0,void 0,(function(){var t,r,n=this;return i(this,(function(o){switch(o.label){case 0:return t=function(e){return s(n,void 0,void 0,(function(){var t;return i(this,(function(n){return console.log("rawres"),console.log(r),(t=O.createElement("div")).innerHTML=e,O.body.appendChild(t).children[0].submit(),[2]}))}))},[4,z("".concat(this.domainUrl,"/usernamepassword/login"),{username:e.username,password:e.password,redirect_uri:e.redirect_uri||this.redirect_uri||(null==L?void 0:L.location.origin),client_id:this.clientId,state:e.state},{raw:!0})];case 1:if(!(r=o.sent()).data||r.error)throw new Error(r.error||"Error in username password login");return t(r.data),[2]}}))}))},t.prototype.signInWithOtp=function(e){return s(this,void 0,void 0,(function(){var t,r,n,s,o,a,u,c;return i(this,(function(i){switch(i.label){case 0:return[4,z("".concat(this.domainUrl,"/oauth/token"),{client_id:this.clientId,grant_type:"http://auth0.com/oauth/grant-type/passwordless/otp",username:e.username,otp:e.otp})];case 1:return t=i.sent(),r=b(t),n=r.data,(s=r.error)?[2,{data:{user:null,session:null},error:s}]:n&&n.session?(o=n.session,[4,this._getUser(o.access_token)]):[2,{data:{user:null,session:null},error:new E}];case 2:return a=i.sent(),u=a.data,(c=a.error)||!u?[2,{data:{user:null,session:null},error:c||new C("Could not fetch user info",null)}]:(o.user=u,[4,this._saveSession(o)]);case 3:return i.sent(),[4,this._notifyAllSubscribers("SIGNED_IN",o)];case 4:return i.sent(),[2,{data:{user:o.user,session:o},error:null}]}}))}))},t.prototype.signInWithPasswordless=function(e){return s(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:return[4,z("".concat(this.domainUrl,"/passwordless/start"),{client_id:this.clientId,email:e.email,send:e.type})];case 1:return[2,{data:(t=r.sent()).data,error:t.error}]}}))}))},t.prototype.changePassword=function(e){return s(this,void 0,void 0,(function(){var t,r;return i(this,(function(n){switch(n.label){case 0:if(!(null==e?void 0:e.email))throw new Error("email is required");return[4,z("".concat(this.domainUrl,"/dbconnections/change_password"),{email:e.email})];case 1:return t=n.sent(),r=t.data,t.error,[2,r]}}))}))},t.prototype.buildAuthorizeUrl=function(e){void 0===e&&(e={});var t={client_id:this.clientId,redirect_uri:e.redirectTo||this.redirect_uri||(null==L?void 0:L.location.origin),response_type:e.response_type||f()?"code":"token",audience:e.audience,scope:e.scope,connection:e.connection},r=Object.fromEntries(Object.entries(t).filter((function(e){return e[0],!!e[1]})));return"".concat(this.domainUrl,"/authorize?").concat(new URLSearchParams(r).toString())},t.prototype.authorize=function(e){var t=this.buildAuthorizeUrl(e);H.redirect(t)},t.prototype._handleConnectionSignIn=function(e){return s(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:return[4,this._getUrlForConnection("".concat(this.domainUrl,"/authorize"),{response_type:f()?"code":"token",connection:e.connection,redirectTo:e.redirectTo,scopes:e.scopes,queryParams:e.queryParams})];case 1:return t=r.sent(),this._debug("#_handleProviderSignIn()","options",e,"url",t),f()&&!e.skipBrowserRedirect&&(null==L||L.location.assign(t)),[2,{data:{url:t},error:null}]}}))}))},t.prototype.setSession=function(e){return s(this,void 0,void 0,(function(){var t=this;return i(this,(function(r){switch(r.label){case 0:return[4,this.initializePromise];case 1:return r.sent(),[4,this.lock._acquireLock(-1,(function(){return s(t,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,this._setSession(e)];case 1:return[2,t.sent()]}}))}))}))];case 2:return[2,r.sent()]}}))}))},t.prototype.getSession=function(){return s(this,void 0,void 0,(function(){var e=this;return i(this,(function(t){switch(t.label){case 0:return[4,this.initializePromise];case 1:return t.sent(),[4,this.lock._acquireLock(-1,(function(){return s(e,void 0,void 0,(function(){var e=this;return i(this,(function(t){return[2,this._useSession((function(t){return s(e,void 0,void 0,(function(){return i(this,(function(e){return[2,t]}))}))}))]}))}))}))];case 2:return[2,t.sent()]}}))}))},t.prototype._useSession=function(e){return s(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:this._debug("#_useSession","begin"),r.label=1;case 1:return r.trys.push([1,,4,5]),[4,this.__loadSession()];case 2:return t=r.sent(),[4,e(t)];case 3:return[2,r.sent()];case 4:return this._debug("#_useSession","end"),[7];case 5:return[2]}}))}))},t.prototype.__loadSession=function(){return s(this,void 0,void 0,(function(){var e,t,r,n,s,o,a;return i(this,(function(i){switch(i.label){case 0:this._debug("#__loadSession()","begin"),this.lock.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",(new Error).stack),i.label=1;case 1:return i.trys.push([1,,7,8]),e=null,[4,u(this.storage,this.storageKey)];case 2:return t=i.sent(),this._debug("#getSession()","session from storage",t),null===t?[3,5]:this._isValidSession(t)?(e=t,[3,5]):[3,3];case 3:return this._debug("#getSession()","session from storage is not valid"),[4,this._removeSession()];case 4:i.sent(),i.label=5;case 5:return e?(r=!!e.expires_at&&e.expires_at<=Date.now()/1e3,this._debug("#__loadSession()","session has".concat(r?"":" not"," expired"),"expires_at",e.expires_at),r?[4,this._callRefreshToken(e.refresh_token)]:(this.storage.isServer&&(n=new Proxy(e,{get:function(e,t,r){return"user"===t&&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 many not be authentic. Use supabase.auth.getUser() instead which authenticates the data by contacting the Supabase Auth server."),Reflect.get(e,t,r)}}),e=n),[2,{data:{session:e},error:null}])):[2,{data:{session:null},error:null}];case 6:return s=i.sent(),o=s.session,(a=s.error)?[2,{data:{session:null},error:a}]:[2,{data:{session:o},error:null}];case 7:return this._debug("#__loadSession()","end"),[7];case 8:return[2]}}))}))},t.prototype._removeSession=function(){return s(this,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return this._debug("#_removeSession()"),this._session=null,[4,this.storage.removeItem(this.storageKey)];case 1:return e.sent(),[2]}}))}))},t.prototype._isValidSession=function(e){return"object"==typeof e&&null!==e&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e},t.prototype._setSession=function(e){return s(this,void 0,void 0,(function(){var t,r,n,s,o,a,u,c,l,h,d;return i(this,(function(i){switch(i.label){case 0:if(i.trys.push([0,7,,8]),!e.access_token||!e.refresh_token)throw new I;return t=Date.now()/1e3,r=t,n=!0,s=null,(o=w(e.access_token)).exp&&(r=o.exp,n=r<=t),n?[4,this._callRefreshToken(e.refresh_token)]:[3,2];case 1:return a=i.sent(),u=a.session,(h=a.error)?[2,{data:{user:null,session:null},error:h}]:u?(s=u,[3,6]):[2,{data:{user:null,session:null},error:null}];case 2:return[4,this._getUser(e.access_token)];case 3:if(c=i.sent(),l=c.data,(h=c.error)||!l)throw h;return s={access_token:e.access_token,refresh_token:e.refresh_token,user:l,token_type:"bearer",expires_in:r-t,expires_at:r},[4,this._saveSession(s)];case 4:return i.sent(),[4,this._notifyAllSubscribers("SIGNED_IN",s)];case 5:i.sent(),i.label=6;case 6:return[2,{data:{user:s.user,session:s},error:null}];case 7:if(x(d=i.sent()))return[2,{data:{session:null,user:null},error:d}];throw d;case 8:return[2]}}))}))},t.prototype._saveSession=function(e){return s(this,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return this._debug("#_saveSession()",e),this._session=e,[4,a(this.storage,this.storageKey,e)];case 1:return t.sent(),[2]}}))}))},t.prototype._getUser=function(e){return s(this,void 0,void 0,(function(){var t;return i(this,(function(r){switch(r.label){case 0:if(!e)throw new Error("Cannot fetch user without token");return this._debug("#_getUser() begin"),[4,j("".concat(this.domainUrl,"/me"),{token:e})];case 1:return t=r.sent(),this._debug("#_getUser() end"),[2,{data:t.data,error:t.error}]}}))}))},t.prototype._callRefreshToken=function(e){return s(this,void 0,void 0,(function(){var t,r,n,s,o,a,u,c;return i(this,(function(i){switch(i.label){case 0:if(!e)throw new I;if(this.refreshingDeferred)return[2,this.refreshingDeferred.promise];t="#_callRefreshToken(".concat(e.substring(0,5),"...)"),this._debug(t,"begin"),i.label=1;case 1:return i.trys.push([1,5,10,11]),this.refreshingDeferred=new g,[4,this._refreshAccessToken(e)];case 2:if(r=i.sent(),n=r.data,s=r.error)throw s;if(!n.session)throw new I;return[4,this._saveSession(n.session)];case 3:return i.sent(),[4,this._notifyAllSubscribers("TOKEN_REFRESHED",n.session)];case 4:return i.sent(),a={session:n.session,error:null},this.refreshingDeferred.resolve(a),[2,a];case 5:return o=i.sent(),this._debug(t,"error",o),x(o)?(a={session:null,error:o},R(o)?[3,8]:[4,this._removeSession()]):[3,9];case 6:return i.sent(),[4,this._notifyAllSubscribers("SIGNED_OUT",null)];case 7:i.sent(),i.label=8;case 8:return null===(u=this.refreshingDeferred)||void 0===u||u.resolve(a),[2,a];case 9:throw null===(c=this.refreshingDeferred)||void 0===c||c.reject(o),o;case 10:return this.refreshingDeferred=null,this._debug(t,"end"),[7];case 11:return[2]}}))}))},t.prototype._refreshAccessToken=function(e){return s(this,void 0,void 0,(function(){var t,r,o,a=this;return i(this,(function(u){switch(u.label){case 0:t="#_refreshAccessToken(".concat(e.substring(0,5),"...)"),this._debug(t,"begin"),u.label=1;case 1:return u.trys.push([1,3,4,5]),r=Date.now(),[4,_((function(r){return s(a,void 0,void 0,(function(){var s,o,a,u,c,l;return i(this,(function(i){switch(i.label){case 0:return r>0?[4,y(200*Math.pow(2,r-1))]:[3,2];case 1:i.sent(),i.label=2;case 2:return this._debug(t,"refreshing attempt",r),[4,z("".concat(this.domainUrl,"/oauth/token"),{client_id:this.clientId,grant_type:"refresh_token",refresh_token:e})];case 3:if(s=i.sent(),o=b(s),!(null===(c=o.data.session)||void 0===c?void 0:c.access_token))throw new Error("Bad user");return[4,this._getUser(null===(l=o.data.session)||void 0===l?void 0:l.access_token)];case 4:if(a=i.sent(),u=a.data,a.error)throw new Error("Error requesting user");if(!u)throw new Error("No user found");return[2,{data:{session:n(n({},o.data.session),{user:u}),user:u},error:null}]}}))}))}),(function(e,t){var n=200*Math.pow(2,e);return t&&R(t)&&Date.now()+n-r<$}))];case 2:return[2,u.sent()];case 3:if(o=u.sent(),this._debug(t,"error",o),x(o))return[2,{data:{session:null,user:null},error:o}];throw o;case 4:return this._debug(t,"end"),[7];case 5:return[2]}}))}))},t.prototype._notifyAllSubscribers=function(e,t){return s(this,arguments,void 0,(function(e,t,r){var n,o,a,u,c=this;return void 0===r&&(r=!0),i(this,(function(l){switch(l.label){case 0:n="#_notifyAllSubscribers(".concat(e,")"),this._debug(n,"begin",t,"broadcast = ".concat(r)),l.label=1;case 1:return l.trys.push([1,,3,4]),this.broadcastChannel&&r&&this.broadcastChannel.postMessage({event:e,session:t}),o=[],a=Array.from(this.stateChangeEmitters.values()).map((function(r){return s(c,void 0,void 0,(function(){var n;return i(this,(function(s){switch(s.label){case 0:return s.trys.push([0,2,,3]),[4,r.callback(e,t)];case 1:return s.sent(),[3,3];case 2:return n=s.sent(),o.push(n),[3,3];case 3:return[2]}}))}))})),[4,Promise.all(a)];case 2:if(l.sent(),o.length>0){for(u=0;u<o.length;u+=1)console.error(o[u]);throw o[0]}return[3,4];case 3:return this._debug(n,"end"),[7];case 4:return[2]}}))}))},t.prototype.signOut=function(){return s(this,arguments,void 0,(function(e){var t=this;return void 0===e&&(e={scope:"global"}),i(this,(function(r){switch(r.label){case 0:return[4,this.initializePromise];case 1:return r.sent(),[4,this.lock._acquireLock(-1,(function(){return s(t,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,this._signOut(e)];case 1:return[2,t.sent()]}}))}))}))];case 2:return[2,r.sent()]}}))}))},t.prototype._signOut=function(){return s(this,arguments,void 0,(function(e){var t=this,r=void 0===e?{scope:"global"}:e,n=r.scope;return r.returnTo,i(this,(function(e){switch(e.label){case 0:return[4,this._useSession((function(e){return s(t,void 0,void 0,(function(){var t,r,s,o;return i(this,(function(i){switch(i.label){case 0:return t=e.data,(r=e.error)?[2,{error:r}]:(null===(o=t.session)||void 0===o?void 0:o.access_token)?[4,this.api.signOut({client_id:this.clientId})]:[3,2];case 1:if((s=i.sent().error)&&(!function(e){return x(e)&&"AuthApiError"===e.name}(s)||404!==s.status&&401!==s.status))return[2,{error:s}];i.label=2;case 2:return"others"===n?[3,6]:[4,this._removeSession()];case 3:return i.sent(),[4,this.storage.removeItem("".concat(this.storageKey,"-code-verifier"))];case 4:return i.sent(),[4,this._notifyAllSubscribers("SIGNED_OUT",null)];case 5:i.sent(),i.label=6;case 6:return[2,{error:null}]}}))}))}))];case 1:return[2,e.sent()]}}))}))},t.prototype.onAuthStateChange=function(e){var t=this,r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),n={id:r,callback:e,unsubscribe:function(){t._debug("#unsubscribe()","state change callback with id removed",r),t.stateChangeEmitters.delete(r)}};return this._debug("#onAuthStateChange()","registered callback with id",r),this.stateChangeEmitters.set(r,n),s(t,void 0,void 0,(function(){var e=this;return i(this,(function(t){switch(t.label){case 0:return[4,this.initializePromise];case 1:return t.sent(),[4,this.lock._acquireLock(-1,(function(){return s(e,void 0,void 0,(function(){return i(this,(function(e){return this._emitInitialSession(r),[2]}))}))}))];case 2:return t.sent(),[2]}}))})),{data:{subscription:n}}},t.prototype._emitInitialSession=function(e){return s(this,void 0,void 0,(function(){var t=this;return i(this,(function(r){switch(r.label){case 0:return[4,this._useSession((function(r){return s(t,void 0,void 0,(function(){var t,n,s,o,a;return i(this,(function(i){switch(i.label){case 0:if(i.trys.push([0,2,,4]),t=r.data.session,n=r.error)throw n;return[4,null===(o=this.stateChangeEmitters.get(e))||void 0===o?void 0:o.callback("INITIAL_SESSION",t)];case 1:return i.sent(),this._debug("INITIAL_SESSION","callback id",e,"session",t),[3,4];case 2:return s=i.sent(),[4,null===(a=this.stateChangeEmitters.get(e))||void 0===a?void 0:a.callback("INITIAL_SESSION",null)];case 3:return i.sent(),this._debug("INITIAL_SESSION","callback id",e,"error",s),console.error(s),[3,4];case 4:return[2]}}))}))}))];case 1:return[2,r.sent()]}}))}))},t.prototype.refreshSession=function(e){return s(this,void 0,void 0,(function(){var t=this;return i(this,(function(r){switch(r.label){case 0:return[4,this.initializePromise];case 1:return r.sent(),[4,this.lock._acquireLock(-1,(function(){return s(t,void 0,void 0,(function(){return i(this,(function(t){switch(t.label){case 0:return[4,this._refreshSession(e)];case 1:return[2,t.sent()]}}))}))}))];case 2:return[2,r.sent()]}}))}))},t.prototype._refreshSession=function(e){return s(this,void 0,void 0,(function(){var t,r=this;return i(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this._useSession((function(t){return s(r,void 0,void 0,(function(){var r,n,s,o,a,u;return i(this,(function(i){switch(i.label){case 0:if(!e){if(r=t.data,n=t.error)throw n;e=null!==(u=r.session)&&void 0!==u?u:void 0}if(!(null==e?void 0:e.refresh_token))throw new I;return[4,this._callRefreshToken(e.refresh_token)];case 1:return s=i.sent(),o=s.session,(a=s.error)?[2,{data:{user:null,session:null},error:a}]:o?[2,{data:{user:o.user,session:o},error:null}]:[2,{data:{user:null,session:null},error:null}]}}))}))}))];case 1:return[2,n.sent()];case 2:if(x(t=n.sent()))return[2,{data:{user:null,session:null},error:t}];throw t;case 3:return[2]}}))}))},t}(F),Q=function(){};e.AuthError=k,e.FaableAuthClient=Y,e.User=Q,e.createClient=function(e){return new Y(e)}}({});
6
+ !function(e){"use strict";var t=function(e,r){return t=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},t(e,r)};function r(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");function n(){this.constructor=e}t(e,r),e.prototype=null===r?Object.create(r):(n.prototype=r.prototype,new n)}var n=function(){return n=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var i in t=arguments[r])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},n.apply(this,arguments)};function i(e,t,r,n){return new(r||(r=Promise))((function(i,s){function o(e){try{c(n.next(e))}catch(e){s(e)}}function a(e){try{c(n.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?i(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}c((n=n.apply(e,t||[])).next())}))}function s(e,t){var r,n,i,s={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]},o=Object.create(("function"==typeof Iterator?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(r=1,n&&(i=2&a[0]?n.return:a[0]?n.throw||((i=n.return)&&i.call(n),0):n.next)&&!(i=i.call(n,a[1])).done)return i;switch(n=0,i&&(a=[2&a[0],i.value]),a[0]){case 0:case 1:i=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,n=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(i=s.trys,(i=i.length>0&&i[i.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!i||a[1]>i[0]&&a[1]<i[3])){s.label=a[1];break}if(6===a[0]&&s.label<i[1]){s.label=i[1],i=a;break}if(i&&s.label<i[2]){s.label=i[2],s.ops.push(a);break}i[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],n=0}finally{r=i=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function o(e,t,r){if(r||2===arguments.length)for(var n,i=0,s=t.length;i<s;i++)!n&&i in t||(n||(n=Array.prototype.slice.call(t,0,i)),n[i]=t[i]);return e.concat(n||Array.prototype.slice.call(t))}"function"==typeof SuppressedError&&SuppressedError;var a=function(){function e(e){void 0===e&&(e={}),this.logger=console.log,this.logDebugMessages=!!e.debug,"function"==typeof e.debug&&(this.logger=e.debug)}return e.prototype._debug=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];if(this.logDebugMessages){var r=this.extraPrint?this.extraPrint():"";this.logger.apply(this,o(["FaableAuth@".concat(r," (").concat("0.0.0",") ").concat((new Date).toISOString())],e,!1))}return this},e}(),c=function(e){function t(r){void 0===r&&(r={});var n=e.call(this,r)||this;return n.instanceID=t.nextInstanceID,t.nextInstanceID+=1,n}return r(t,e),t.prototype.extraPrint=function(){return this.instanceID.toString()},t.nextInstanceID=0,t}(a),u="undefined"!=typeof window?window:void 0,l="undefined"!=typeof globalThis?globalThis:u,h=null==l?void 0:l.document,d=l.fetch,f=function(e){void 0===e&&(e={});var t={};return(null==e?void 0:e.token)&&(t=n(n({},t),{Authorization:"Bearer ".concat(null==e?void 0:e.token)})),n(n({},null==e?void 0:e.headers),t)},v=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(void 0,o([e],t,!0),void 0,(function(e,t){var r,n,i;return void 0===t&&(t={}),s(this,(function(s){switch(s.label){case 0:return t.raw?[4,e.text()]:[3,2];case 1:return n=s.sent(),[3,4];case 2:return[4,e.json()];case 3:n=s.sent(),s.label=4;case 4:return r=n,e.status>=300?[2,{data:r,error:t.raw?null===(i=JSON.parse(r))||void 0===i?void 0:i.message:null==r?void 0:r.message}]:[2,{data:r,error:null}]}}))}))},p=function(e,t){for(var r=[],a=2;a<arguments.length;a++)r[a-2]=arguments[a];return i(void 0,o([e,t],r,!0),void 0,(function(e,t,r){var i;return void 0===r&&(r={}),s(this,(function(s){switch(s.label){case 0:return s.trys.push([0,3,,4]),[4,d(e,{method:"POST",body:JSON.stringify(t),headers:n(n({},f(r)),{"Content-Type":"application/json"})})];case 1:return i=s.sent(),[4,v(i,r)];case 2:return[2,s.sent()];case 3:return[2,{data:null,error:s.sent()}];case 4:return[2]}}))}))},b=function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i(void 0,o([e],t,!0),void 0,(function(e,t){var r;return void 0===t&&(t={}),s(this,(function(i){switch(i.label){case 0:return i.trys.push([0,3,,4]),[4,d(e,n(n({},t),{method:"GET",headers:f(t)}))];case 1:return r=i.sent(),[4,v(r,t)];case 2:return[2,i.sent()];case 3:return[2,{data:null,error:i.sent()}];case 4:return[2]}}))}))},g=function(e){function t(t,r){var n=e.call(this,r)||this;return n.base_url=t,n}return r(t,e),t.prototype.extraPrint=function(){return"api"},t.prototype.signOut=function(e){return i(this,void 0,void 0,(function(){var t,r;return s(this,(function(n){switch(n.label){case 0:return t="".concat(this.base_url,"/logout?").concat(new URLSearchParams(e)),this._debug("requesting ".concat(t)),[4,b(t)];case 1:return r=n.sent(),this._debug(r),r.error?[2,{error:r.error,data:null}]:[2,{error:null,data:null}]}}))}))},t}(a),_=function(e,t){return e.response_type||(t?"code":"token")},y=function(e,t,r){return i(void 0,void 0,void 0,(function(){return s(this,(function(n){switch(n.label){case 0:return[4,e.setItem(t,JSON.stringify(r))];case 1:return n.sent(),[2]}}))}))},w=function(e,t){return i(void 0,void 0,void 0,(function(){var r;return s(this,(function(n){switch(n.label){case 0:return[4,e.getItem(t)];case 1:if(!(r=n.sent()))return[2,null];try{return[2,JSON.parse(r)]}catch(e){return[2,r]}return[2]}}))}))},m=function(e,t,r){return i(void 0,[e,t,r],void 0,(function(e,t,r){var n,i=r.verifier,o=r.redirectType,a=r.now,c=void 0===a?Date.now():a;return s(this,(function(r){switch(r.label){case 0:return n={verifier:i,createdAt:c},o&&(n.redirectType=o),[4,y(e,t,n)];case 1:return r.sent(),[2]}}))}))},k=function(e,t){for(var r=[],n=2;n<arguments.length;n++)r[n-2]=arguments[n];return i(void 0,o([e,t],r,!0),void 0,(function(e,t,r){var n,i=(void 0===r?{}:r).now,o=void 0===i?Date.now():i;return s(this,(function(r){switch(r.label){case 0:return[4,w(e,t)];case 1:return n=r.sent(),"object"!=typeof(i=n)||null===i||"string"!=typeof i.verifier||"number"!=typeof i.createdAt?[2,null]:o-n.createdAt>6e5?[4,e.removeItem(t)]:[3,3];case 2:return r.sent(),[2,null];case 3:return[2,n.redirectType?{verifier:n.verifier,redirectType:n.redirectType}:{verifier:n.verifier}]}var i}))}))};function S(e){return("0"+e.toString(16)).substr(-2)}function T(e){return i(this,void 0,void 0,(function(){var t,r,n,i;return s(this,(function(s){switch(s.label){case 0:return t=new TextEncoder,r=t.encode(e),[4,crypto.subtle.digest("SHA-256",r)];case 1:return n=s.sent(),i=new Uint8Array(n),[2,Array.from(i).map((function(e){return String.fromCharCode(e)})).join("")]}}))}))}function I(e){return i(this,void 0,void 0,(function(){var t;return s(this,(function(r){switch(r.label){case 0:return"undefined"!=typeof crypto&&void 0!==crypto.subtle&&"undefined"!=typeof TextEncoder?[4,T(e)]:(console.warn("WebCrypto API is not supported. Code challenge method will default to use plain instead of sha256."),[2,e]);case 1:return t=r.sent(),[2,(n=t,btoa(n).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,""))]}var n}))}))}function x(e,t){return i(this,arguments,void 0,(function(e,t,r){var n,i;return void 0===r&&(r=!1),s(this,(function(s){switch(s.label){case 0:return n=function(){if("undefined"==typeof crypto||"function"!=typeof crypto.getRandomValues)throw new Error("Web Crypto API is required to generate a PKCE code verifier");var e=new Uint32Array(56);return crypto.getRandomValues(e),Array.from(e,S).join("")}(),[4,m(e,"".concat(t,"-code-verifier"),{verifier:n,redirectType:r?"PASSWORD_RECOVERY":void 0})];case 1:return s.sent(),[4,I(n)];case 2:return[2,[i=s.sent(),n===i?"plain":"S256"]]}}))}))}var A=function(){return"undefined"!=typeof document},R={tested:!1,writable:!1},C=function(){if(!A())return!1;try{if("object"!=typeof globalThis.localStorage)return!1}catch(e){return!1}if(R.tested)return R.writable;var e="lswt-".concat(Math.random()).concat(Math.random());try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),R.tested=!0,R.writable=!0}catch(e){R.tested=!0,R.writable=!1}return R.writable};function E(e){var t,r,i=e.data,s=null;if(!i)throw new Error("Bad session response");return function(e){return!!e.access_token&&!!e.refresh_token&&!!e.expires_in}(i)&&(s=n({},i),!i.expires_at&&i.expires_in&&(s.expires_at=(r=i.expires_in,Math.round(Date.now()/1e3)+r))),{data:{session:s,user:null!==(t=i.user)&&void 0!==t?t:i},error:null}}var U=function(){function e(){var t=this;this.promise=new e.promiseConstructor((function(e,r){t.resolve=e,t.reject=r}))}return e.promiseConstructor=Promise,e}();function P(e,t){var r=this;return new Promise((function(n,o){i(r,void 0,void 0,(function(){var r,i,a;return s(this,(function(s){switch(s.label){case 0:r=0,s.label=1;case 1:if(!(r<1/0))return[3,6];s.label=2;case 2:return s.trys.push([2,4,,5]),[4,e(r)];case 3:return i=s.sent(),t(r,null,i)?[3,5]:(n(i),[2]);case 4:return a=s.sent(),t(r,a)?[3,5]:(o(a),[2]);case 5:return r++,[3,1];case 6:return[2]}}))}))}))}function L(e){return i(this,void 0,void 0,(function(){return s(this,(function(t){return[2,new Promise((function(t){setTimeout((function(){return t(null)}),e)}))]}))}))}var O=function(){function e(e,t){var r=this;if(this.debug=t,this.channel=null,this.subscribers=new Map,"undefined"!=typeof globalThis&&"function"==typeof globalThis.BroadcastChannel&&e)try{this.channel=new globalThis.BroadcastChannel(e),this.channel.addEventListener("message",(function(e){return i(r,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return this.debug("broadcast_sync: received notification from another tab",e),[4,this.dispatch(e.data.event,e.data.session,!1)];case 1:return t.sent(),[2]}}))}))}))}catch(e){console.error("Failed to create BroadcastChannel; cross-tab sync disabled",e)}}return e.prototype.subscribe=function(e){var t=this,r="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"==e?t:3&t|8).toString(16)})),n={id:r,callback:e,unsubscribe:function(){t.subscribers.delete(r)}};return this.subscribers.set(r,n),{subscription:n}},e.prototype.notify=function(e,t){return i(this,arguments,void 0,(function(e,t,r){return void 0===r&&(r=!0),s(this,(function(n){switch(n.label){case 0:return r&&this.channel&&this.channel.postMessage({event:e,session:t}),[4,this.dispatch(e,t,r)];case 1:return n.sent(),[2]}}))}))},e.prototype.dispatch=function(e,t,r){return i(this,void 0,void 0,(function(){var r,n,o,a=this;return s(this,(function(c){switch(c.label){case 0:return r=[],n=Array.from(this.subscribers.values()).map((function(n){return i(a,void 0,void 0,(function(){var i;return s(this,(function(s){switch(s.label){case 0:return s.trys.push([0,2,,3]),[4,n.callback(e,t)];case 1:return s.sent(),[3,3];case 2:return i=s.sent(),r.push(i),[3,3];case 3:return[2]}}))}))})),[4,Promise.all(n)];case 1:if(c.sent(),r.length>0){for(o=0;o<r.length;o+=1)console.error(r[o]);throw r[0]}return[2]}}))}))},e.prototype.close=function(){var e;this.subscribers.clear();try{null===(e=this.channel)||void 0===e||e.close()}catch(e){}this.channel=null},e}(),D=function(e){function t(t,r,n){var i=e.call(this,t)||this;return i.__isAuthError=!0,i.name="AuthError",i.status=r,i.code=n,i}return r(t,e),t}(Error),N=function(e){function t(t,r,n,i){var s=e.call(this,t,n,i)||this;return s.name=r,s.status=n,s}return r(t,e),t}(D),q=function(e){function t(){return e.call(this,"Auth session missing!","AuthSessionMissingError",400,void 0)||this}return r(t,e),t}(N);function z(e){return"object"==typeof e&&null!==e&&"__isAuthError"in e}!function(e){function t(t,r,n){var i=e.call(this,t,r,n)||this;return i.name="AuthApiError",i.status=r,i.code=n,i}r(t,e)}(D);var j=function(e){function t(t,r){void 0===r&&(r=null);var n=e.call(this,t,"AuthImplicitGrantRedirectError",500,void 0)||this;return n.details=null,n.details=r,n}return r(t,e),t.prototype.toJSON=function(){return{name:this.name,message:this.message,status:this.status,details:this.details}},t}(N),K=function(e){function t(t,r){void 0===r&&(r=null);var n=e.call(this,t,"AuthPKCEGrantCodeExchangeError",500,void 0)||this;return n.details=null,n.details=r,n}return r(t,e),t.prototype.toJSON=function(){return{name:this.name,message:this.message,status:this.status,details:this.details}},t}(N),M=function(e){function t(t,r){var n=e.call(this,t)||this;return n.name="AuthUnknownError",n.originalError=r,n}return r(t,e),t}(D),F=function(e){function t(){return e.call(this,"Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)||this}return r(t,e),t}(N);function V(e){return z(e)&&"AuthRetryableFetchError"===e.name}function W(){if(!u)throw new Error("No window in environment");return u}!function(e){function t(t,r){return e.call(this,t,"AuthRetryableFetchError",r,void 0)||this}r(t,e)}(N);var G={redirect:function(e){W().location=e},getDocument:function(){return W().document},getWindow:W};function J(e){var t=e.split(".");if(3!==t.length)throw new Error("JWT is not valid: not a JWT structure");if(!/^([a-z0-9_-]{4})*($|[a-z0-9_-]{3}=?$|[a-z0-9_-]{2}(==)?$)$/i.test(t[1]))throw new Error("JWT is not valid: payload is not in base64url format");var r=t[1];return JSON.parse(function(e){var t,r,n,i,s,o,a="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c="",u=0;for(e=e.replace("-","+").replace("_","/");u<e.length;)t=a.indexOf(e.charAt(u++))<<2|(i=a.indexOf(e.charAt(u++)))>>4,r=(15&i)<<4|(s=a.indexOf(e.charAt(u++)))>>2,n=(3&s)<<6|(o=a.indexOf(e.charAt(u++))),c+=String.fromCharCode(t),64!=s&&0!=r&&(c+=String.fromCharCode(r)),64!=o&&0!=n&&(c+=String.fromCharCode(n));return c}(r))}var B=function(e){return"object"==typeof e&&null!==e&&"access_token"in e&&"refresh_token"in e&&"expires_at"in e},$=function(e){try{return decodeURIComponent(e)}catch(t){return e}},H=function(e,t,r){var n="".concat(encodeURIComponent(e),"=").concat(encodeURIComponent(t));return void 0!==r.maxAge&&(n+="; Max-Age=".concat(r.maxAge)),r.domain&&(n+="; Domain=".concat(r.domain)),r.path&&(n+="; Path=".concat(r.path)),r.sameSite&&(n+="; SameSite=".concat(r.sameSite)),(!0===r.secure||"None"===r.sameSite)&&(n+="; Secure"),n},Y=function(e,t){void 0===e&&(e={}),void 0===t&&(t=A()?document:null);var r=n({path:"/",sameSite:"Lax",secure:A()&&"https:"===window.location.protocol},e);return{getItem:function(e){if(!t)return null;var r=function(e){var t=new Map;if(!e)return t;for(var r=0,n=e.split(";");r<n.length;r++){var i=n[r].trim();if(i){var s=i.indexOf("=");if(!(s<0)){var o=$(i.slice(0,s).trim()),a=$(i.slice(s+1).trim());o&&t.set(o,a)}}}return t}(t.cookie);return r.has(e)?r.get(e):null},setItem:function(e,n){t&&(t.cookie=H(e,n,r))},removeItem:function(e){t&&(t.cookie=function(e,t){return H(e,"",{domain:t.domain,path:t.path,sameSite:t.sameSite,secure:t.secure,maxAge:0})}(e,r))}}},Q={getItem:function(e){return C()?globalThis.localStorage.getItem(e):null},setItem:function(e,t){C()&&globalThis.localStorage.setItem(e,t)},removeItem:function(e){C()&&globalThis.localStorage.removeItem(e)}};function X(e){void 0===e&&(e="");var t={},r=new URL(e);if(r.hash&&"#"===r.hash[0])try{new URLSearchParams(r.hash.substring(1)).forEach((function(e,r){t[r]=e}))}catch(e){}return r.searchParams.forEach((function(e,r){t[r]=e})),t}var Z=function(e){void 0===e&&(e=[]);var t=new URL(window.location.href);e.forEach((function(e){t.searchParams.delete(e)})),t.hash="",window.history.replaceState(window.history.state,"",t.toString())};globalThis&&C()&&globalThis.localStorage&&globalThis.localStorage.getItem("faable.auth.locks.debug");var ee=function(e){function t(t){var r=e.call(this,t)||this;return r.isAcquireTimeout=!0,r}return r(t,e),t}(Error);function te(e,t,r){return i(this,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,r()];case 1:return[2,e.sent()]}}))}))}!function(e){function t(){return null!==e&&e.apply(this,arguments)||this}r(t,e)}(ee);var re=function(e){function t(t){var r=e.call(this,{debug:t.debug})||this;return r.lockAcquired=!1,r.pendingInLock=[],r.lock=t.lock||te,r.storageKey=t.storageKey,r}return r(t,e),t.prototype._acquireLock=function(e,t){return i(this,void 0,void 0,(function(){var r,n,a=this;return s(this,(function(c){switch(c.label){case 0:this._debug("#_acquireLock","begin",e),c.label=1;case 1:return c.trys.push([1,,3,4]),this.lockAcquired?(r=this.pendingInLock.length?this.pendingInLock[this.pendingInLock.length-1]:Promise.resolve(),n=i(a,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,r];case 1:return e.sent(),[4,t()];case 2:return[2,e.sent()]}}))})),this.pendingInLock.push(i(a,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return e.trys.push([0,2,,3]),[4,n];case 1:case 2:return e.sent(),[3,3];case 3:return[2]}}))}))),[2,n]):[4,this.lock("lock:".concat(this.storageKey),e,(function(){return i(a,void 0,void 0,(function(){var e,r,n=this;return s(this,(function(a){switch(a.label){case 0:this._debug("#_acquireLock","lock acquired for storage key",this.storageKey),a.label=1;case 1:return a.trys.push([1,,7,8]),this.lockAcquired=!0,e=t(),this.pendingInLock.push(i(n,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,e];case 1:case 2:return t.sent(),[3,3];case 3:return[2]}}))}))),[4,e];case 2:a.sent(),a.label=3;case 3:return this.pendingInLock.length?(r=o([],this.pendingInLock,!0),[4,Promise.all(r)]):[3,5];case 4:return a.sent(),this.pendingInLock.splice(0,r.length),[3,3];case 5:return[4,e];case 6:return[2,a.sent()];case 7:return this._debug("#_acquireLock","lock released for storage key",this.storageKey),this.lockAcquired=!1,[7];case 8:return[2]}}))}))}))];case 2:return[2,c.sent()];case 3:return this._debug("#_acquireLock","end"),[7];case 4:return[2]}}))}))},t}(c),ne=3e4,ie=function(e){function t(t){var r,n,i=this,s=(null==t?void 0:t.debug)||!1;if((i=e.call(this,{debug:s})||this).initializePromise=null,i.detectSessionInUrl=!0,i.autoRefreshTicker=null,i.visibilityChangedCallback=null,i.refreshingDeferred=null,i._session=null,i.sessionCheckExpiryDays=1,i.redirectUri=(null==t?void 0:t.redirectUri)||"",!(null==t?void 0:t.domain))throw new Error("Missing domain");if(i.domainUrl=function(e){if(!/^(https|http)?:\/\//.test(e)){var t=(null===location||void 0===location?void 0:location.protocol)||"https";return"".concat(t,"//").concat(e)}return e}(t.domain),i.tokenIssuer=(n=i.domainUrl,"".concat(n)),!t.clientId)throw new Error("Missing clientId");i.clientId=t.clientId,i.api=new g(i.domainUrl,{debug:s});var a=(null==t?void 0:t.storageKey)||"faableauth";return i.storageKey="".concat(a,"-").concat(i.clientId),(null==t?void 0:t.cookieOptions)?i.storage=Y(t.cookieOptions):i.storage=(null==t?void 0:t.storage)||Q,i.lock=new re({lock:t.lock,storageKey:i.storageKey,debug:t.debug}),i.broadcastSync=new O(A()?i.storageKey:"",(function(e){for(var t=[],r=1;r<arguments.length;r++)t[r-1]=arguments[r];return i._debug.apply(i,o([e],t,!1))})),i.flowType=null!==(r=t.flowType)&&void 0!==r?r:A()?"pkce":"implicit",i.autoRefreshToken=!0,i.initialize(),i}return r(t,e),Object.defineProperty(t.prototype,"session",{get:function(){return this._session},enumerable:!1,configurable:!0}),t.prototype.initialize=function(){return i(this,void 0,void 0,(function(){var e=this;return s(this,(function(t){switch(t.label){case 0:return this.initializePromise?[4,this.initializePromise]:[3,2];case 1:case 3:return[2,t.sent()];case 2:return this.initializePromise=i(e,void 0,void 0,(function(){var e=this;return s(this,(function(t){switch(t.label){case 0:return[4,this.lock._acquireLock(-1,(function(){return i(e,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this._initialize()];case 1:return[2,e.sent()]}}))}))}))];case 1:return[2,t.sent()]}}))})),[4,this.initializePromise]}}))}))},t.prototype._initialize=function(){return i(this,void 0,void 0,(function(){var e,t,r,n,o,a,c,u=this;return s(this,(function(l){switch(l.label){case 0:return l.trys.push([0,8,9,11]),[4,this._detectFlowType()];case 1:return e=l.sent(),this._debug("#_initialize()","begin","flow_type",e),e?[4,this._getSessionFromURL(e)]:[3,6];case 2:return t=l.sent(),r=t.data,(n=t.error)?(this._debug("#_initialize()","error detecting session from URL",n),"Identity is already linked"===(null==n?void 0:n.message)||"Identity is already linked to another user"===(null==n?void 0:n.message)?[2,{error:n}]:[4,this._removeSession()]):[3,4];case 3:return l.sent(),[2,{error:n}];case 4:return o=r.session,a=r.redirectType,this._debug("#_initialize()","detected session in URL",o,"redirect type",a),[4,this._saveSession(o)];case 5:return l.sent(),setTimeout((function(){return i(u,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return"recovery"!==a?[3,2]:[4,this._notifyAllSubscribers("PASSWORD_RECOVERY",o)];case 1:return e.sent(),[3,4];case 2:return[4,this._notifyAllSubscribers("SIGNED_IN",o)];case 3:e.sent(),e.label=4;case 4:return[2]}}))}))}),0),[2,{error:null}];case 6:return[4,this._recoverAndRefresh()];case 7:return l.sent(),[2,{error:null}];case 8:return z(c=l.sent())?[2,{error:c}]:[2,{error:new M("Unexpected error during initialization",c)}];case 9:return[4,this._handleVisibilityChange()];case 10:return l.sent(),this._debug("#_initialize()","end"),[7];case 11:return[2]}}))}))},t.prototype._getSessionFromURL=function(e){return i(this,void 0,void 0,(function(){var t,r,n,i,o,a,c,l,h,d,f,v,p,b,g,_,y,w,m;return s(this,(function(s){switch(s.label){case 0:if(s.trys.push([0,4,,5]),t=X(null==u?void 0:u.location.href),"pkce"!=e)return[3,2];if(!t.code)throw new K("No code detected.");return[4,this._exchangeCodeForSession(t.code)];case 1:if(r=s.sent(),n=r.data,i=r.error)throw i;return Z(["code"]),[2,{data:{session:n.session,redirectType:null},error:null}];case 2:if(t.error||t.error_description||t.error_code)throw new j(t.error_description||"Error in URL with unspecified error_description",{error:t.error||"unspecified_error",code:t.error_code||"unspecified_code"});if(o=t.provider_token,a=t.provider_refresh_token,c=t.access_token,l=t.refresh_token,h=t.expires_in,d=t.expires_at,f=t.token_type,!(c&&h&&l&&f))throw new j("No session defined in URL");return v=function(e){var t=e.expires_in,r=e.expires_at,n=e.refreshTick,i=Math.round(Date.now()/1e3),s=parseInt(t),o=i+s;r&&(o=parseInt(r));var a=o-i;1e3*a<=n&&console.warn("@faable/auth-js: Session as retrieved from URL expires in ".concat(a,"s, should have been closer to ").concat(s,"s"));var c=o-s;return i-c>=120?console.warn("@faable/auth-js: Session as retrieved from URL was issued over 120s ago, URL could be stale",c,o,i):i-c<0&&console.warn("@faable/auth-js: Session as retrieved from URL was issued in the future? Check the device clok for skew",c,o,i),{expiresIn:s,expiresAt:o}}({expires_in:h,expires_at:d,refreshTick:ne}),p=v.expiresAt,b=v.expiresIn,[4,this._getUser(c)];case 3:if(g=s.sent(),_=g.data,(y=g.error)||!_)throw y;return w={provider_token:o,provider_refresh_token:a,access_token:c,expires_in:b,expires_at:p,refresh_token:l,token_type:f,user:_},Z(["access_token","expires_in","refresh_token","token_type","scope"]),this._debug("#_getSessionFromURL()","clearing window.location.hash"),[2,{data:{session:w,redirectType:t.type},error:null}];case 4:if(m=s.sent(),this._debug(m),z(m))return[2,{data:{session:null,redirectType:null},error:m}];throw m;case 5:return[2]}}))}))},t.prototype._exchangeCodeForSession=function(e){return i(this,void 0,void 0,(function(){var t,r,i,o,a,c,u,l,h,d,f,v;return s(this,(function(s){switch(s.label){case 0:return[4,k(this.storage,"".concat(this.storageKey,"-code-verifier"))];case 1:return(t=s.sent())?(r=t.verifier,i=t.redirectType,o=void 0===i?null:i,[4,p("".concat(this.domainUrl,"/oauth/token"),{client_id:this.clientId,grant_type:"authorization_code",code:e,code_verifier:r})]):[2,{data:{user:null,session:null,redirectType:null},error:new K("No active PKCE code verifier — the authorization flow has expired or was not started")}];case 2:if(a=s.sent(),c=E(a),u=c.data,l=c.error,!u)throw new Error("Missing data");return[4,this.storage.removeItem("".concat(this.storageKey,"-code-verifier"))];case 3:return s.sent(),l?[2,{data:{user:null,session:null,redirectType:null},error:l}]:u&&u.session&&u.user?(h=u.session)?[4,this._getUser(h.access_token)]:[3,7]:[2,{data:{user:null,session:null,redirectType:null},error:new F}];case 4:if(d=s.sent(),f=d.data,(v=d.error)||!f)throw v;return h=n(n({},h),{user:f}),u.session=h,[4,this._saveSession(h)];case 5:return s.sent(),[4,this._notifyAllSubscribers("SIGNED_IN",h)];case 6:s.sent(),s.label=7;case 7:return[2,{data:n(n({},u),{redirectType:null!=o?o:null}),error:l}]}}))}))},t.prototype._handleVisibilityChange=function(){return i(this,void 0,void 0,(function(){var e,t=this;return s(this,(function(r){switch(r.label){case 0:if(this._debug("#_handleVisibilityChange()"),!A()||!(null==u?void 0:u.addEventListener))return this.autoRefreshToken&&this.startAutoRefresh(),[2,!1];r.label=1;case 1:return r.trys.push([1,3,,4]),this.visibilityChangedCallback=function(){return i(t,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this._onVisibilityChanged(!1)];case 1:return[2,e.sent()]}}))}))},null==u||u.addEventListener("visibilitychange",this.visibilityChangedCallback),[4,this._onVisibilityChanged(!0)];case 2:return r.sent(),[3,4];case 3:return e=r.sent(),console.error("_handleVisibilityChange",e),[3,4];case 4:return[2]}}))}))},t.prototype._onVisibilityChanged=function(e){return i(this,void 0,void 0,(function(){var t,r=this;return s(this,(function(n){switch(n.label){case 0:return t="#_onVisibilityChanged(".concat(e,")"),this._debug(t,"visibilityState",h.visibilityState),"visible"!==h.visibilityState?[3,4]:(this.autoRefreshToken&&this._startAutoRefresh(),e?[3,3]:[4,this.initializePromise]);case 1:return n.sent(),[4,this.lock._acquireLock(-1,(function(){return i(r,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return"visible"!==h.visibilityState?(this._debug(t,"acquired the lock to recover the session, but the browser visibilityState is no longer visible, aborting"),[2]):[4,this._recoverAndRefresh()];case 1:return e.sent(),[2]}}))}))}))];case 2:n.sent(),n.label=3;case 3:return[3,5];case 4:"hidden"===h.visibilityState&&this.autoRefreshToken&&this._stopAutoRefresh(),n.label=5;case 5:return[2]}}))}))},t.prototype._recoverAndRefresh=function(){return i(this,void 0,void 0,(function(){var e,t,r,n,i,o,a;return s(this,(function(s){switch(s.label){case 0:e="#_recoverAndRefresh()",this._debug(e,"begin"),s.label=1;case 1:return s.trys.push([1,12,13,14]),[4,w(this.storage,this.storageKey)];case 2:return t=s.sent(),this._debug(e,"session from storage",t),B(t)?[3,5]:(this._debug(e,"session is not valid"),null===t?[3,4]:[4,this._removeSession()]);case 3:s.sent(),s.label=4;case 4:return[2];case 5:return r=Math.round(Date.now()/1e3),n=(null!==(a=t.expires_at)&&void 0!==a?a:1/0)<r+10,this._debug(e,"session has".concat(n?"":" not"," expired with margin of ").concat(10,"s")),n?this.autoRefreshToken&&t.refresh_token?[4,this._callRefreshToken(t.refresh_token)]:[3,8]:[3,9];case 6:return(i=s.sent().error)?(console.error(i),V(i)?[3,8]:(this._debug(e,"refresh failed with a non-retryable error, removing the session",i),[4,this._removeSession()])):[3,8];case 7:s.sent(),s.label=8;case 8:return[3,11];case 9:return this._session=t,[4,this._notifyAllSubscribers("SIGNED_IN",t)];case 10:s.sent(),s.label=11;case 11:return[3,14];case 12:return o=s.sent(),this._debug(e,"error",o),console.error(o),[2];case 13:return this._debug(e,"end"),[7];case 14:return[2]}}))}))},t.prototype._removeVisibilityChangedCallback=function(){this._debug("#_removeVisibilityChangedCallback()");var e=this.visibilityChangedCallback;this.visibilityChangedCallback=null;try{e&&A()&&(null==u?void 0:u.removeEventListener)&&u.removeEventListener("visibilitychange",e)}catch(e){console.error("removing visibilitychange callback failed",e)}},t.prototype.startAutoRefresh=function(){return i(this,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return this._removeVisibilityChangedCallback(),[4,this._startAutoRefresh()];case 1:return e.sent(),[2]}}))}))},t.prototype._startAutoRefresh=function(){return i(this,void 0,void 0,(function(){var e,t=this;return s(this,(function(r){switch(r.label){case 0:return[4,this._stopAutoRefresh()];case 1:return r.sent(),this._debug("#_startAutoRefresh()"),e=setInterval((function(){return t._autoRefreshTokenTick()}),ne),this.autoRefreshTicker=e,e&&"object"==typeof e&&"function"==typeof e.unref?e.unref():void 0!==globalThis.Deno&&"function"==typeof globalThis.Deno.unrefTimer&&globalThis.Deno.unrefTimer(e),setTimeout((function(){return i(t,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return[4,this.initializePromise];case 1:return e.sent(),[4,this._autoRefreshTokenTick()];case 2:return e.sent(),[2]}}))}))}),0),[2]}}))}))},t.prototype._stopAutoRefresh=function(){return i(this,void 0,void 0,(function(){var e;return s(this,(function(t){return this._debug("#_stopAutoRefresh()"),e=this.autoRefreshTicker,this.autoRefreshTicker=null,e&&clearInterval(e),[2]}))}))},t.prototype._autoRefreshTokenTick=function(){return i(this,void 0,void 0,(function(){var e,t=this;return s(this,(function(r){switch(r.label){case 0:this._debug("#_autoRefreshTokenTick()","begin"),r.label=1;case 1:return r.trys.push([1,3,,4]),[4,this.lock._acquireLock(0,(function(){return i(t,void 0,void 0,(function(){var e,t,r=this;return s(this,(function(n){switch(n.label){case 0:n.trys.push([0,,5,6]),e=Date.now(),n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this._useSession((function(t){return i(r,void 0,void 0,(function(){var r,n;return s(this,(function(i){switch(i.label){case 0:return(r=t.data.session)&&r.refresh_token&&r.expires_at?(n=Math.floor((1e3*r.expires_at-e)/ne),this._debug("#_autoRefreshTokenTick()","access token expires in ".concat(n," ticks, a tick lasts ").concat(ne,"ms, refresh threshold is ").concat(3," ticks")),n<=3?[4,this._callRefreshToken(r.refresh_token)]:[3,2]):(this._debug("#_autoRefreshTokenTick()","no session"),[2]);case 1:i.sent(),i.label=2;case 2:return[2]}}))}))}))];case 2:return[2,n.sent()];case 3:return t=n.sent(),console.error("Auto refresh tick failed with error. This is likely a transient error.",t),[3,4];case 4:return[3,6];case 5:return this._debug("#_autoRefreshTokenTick()","end"),[7];case 6:return[2]}}))}))}))];case 2:return r.sent(),[3,4];case 3:if(!((e=r.sent()).isAcquireTimeout||e instanceof ee))throw e;return this._debug("auto refresh token tick lock not available"),[3,4];case 4:return[2]}}))}))},t.prototype._detectFlowType=function(){return i(this,void 0,void 0,(function(){var e,t;return s(this,(function(r){return e=X(null==u?void 0:u.location.href),(t=A())&&e.code?[2,"pkce"]:t&&(e.access_token||e.error_description)?[2,"implicit"]:[2,null]}))}))},t.prototype._scope=function(){return this.scope||"openid profile email"},t.prototype._getUrlForConnection=function(e,t){return i(this,void 0,void 0,(function(){var r,i,o,a,c;return s(this,(function(s){switch(s.label){case 0:return r=t.queryParams||{},i={client_id:this.clientId,response_type:t.response_type,redirect_uri:t.redirectTo||this.redirectUri||(null==u?void 0:u.location.origin),scope:t.scopes||this._scope()},"pkce"!==this.flowType?[3,2]:[4,x(this.storage,this.storageKey)];case 1:o=s.sent(),a=o[0],c=o[1],r=n(n({},r),{code_challenge:a,code_challenge_method:c}),s.label=2;case 2:return t.connection_id?i.connection_id=t.connection_id:t.connection&&(i.connection=t.connection),[2,"".concat(e,"?").concat(new URLSearchParams(n(n({},r),i)))]}}))}))},t.prototype.signInWithOauthConnection=function(e){return i(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this._handleConnectionSignIn({connection:e.connection,connection_id:e.connection_id,redirectTo:null==e?void 0:e.redirectTo,scopes:null==e?void 0:e.scopes,queryParams:e.queryParams,skipBrowserRedirect:e.skipBrowserRedirect})];case 1:return[2,t.sent()]}}))}))},t.prototype.signInWithUsernamePassword=function(e){return i(this,void 0,void 0,(function(){var t;return s(this,(function(r){switch(r.label){case 0:return[4,p("".concat(this.domainUrl,"/usernamepassword/login"),{username:e.username,password:e.password,redirect_uri:e.redirectTo||this.redirectUri||(null==u?void 0:u.location.origin),client_id:this.clientId,state:e.state},{raw:!0})];case 1:return!(t=r.sent()).data||t.error?[2,{data:null,error:new M(t.error||"Error in username password login",t.error)}]:(function(e,t){var r=t.createElement("div");r.innerHTML=e;var n=t.body.appendChild(r).children[0];if(!n)throw new Error("Auth response did not contain a submittable form");n.submit()}(t.data,h),[2,{data:null,error:null}])}}))}))},t.prototype.signInWithOtp=function(e){return i(this,void 0,void 0,(function(){var t,r,n,i,o,a,c,u;return s(this,(function(s){switch(s.label){case 0:return[4,p("".concat(this.domainUrl,"/oauth/token"),{client_id:this.clientId,grant_type:"http://auth0.com/oauth/grant-type/passwordless/otp",username:e.username,otp:e.otp})];case 1:return t=s.sent(),r=E(t),n=r.data,(i=r.error)?[2,{data:{user:null,session:null},error:i}]:n&&n.session?(o=n.session,[4,this._getUser(o.access_token)]):[2,{data:{user:null,session:null},error:new F}];case 2:return a=s.sent(),c=a.data,(u=a.error)||!c?[2,{data:{user:null,session:null},error:u||new M("Could not fetch user info",null)}]:(o.user=c,[4,this._saveSession(o)]);case 3:return s.sent(),[4,this._notifyAllSubscribers("SIGNED_IN",o)];case 4:return s.sent(),[2,{data:{user:o.user,session:o},error:null}]}}))}))},t.prototype.signInWithPasswordless=function(e){return i(this,void 0,void 0,(function(){var t;return s(this,(function(r){switch(r.label){case 0:return[4,p("".concat(this.domainUrl,"/passwordless/start"),{client_id:this.clientId,email:e.email,send:e.type})];case 1:return[2,{data:(t=r.sent()).data,error:t.error}]}}))}))},t.prototype.changePassword=function(e){return i(this,void 0,void 0,(function(){var t,r,n;return s(this,(function(i){switch(i.label){case 0:return(null==e?void 0:e.email)?[4,p("".concat(this.domainUrl,"/dbconnections/change_password"),{email:e.email})]:[2,{data:null,error:new M("email is required",null)}];case 1:return t=i.sent(),r=t.data,n=t.error,[2,{data:null!=r?r:null,error:n?new M(String(n),n):null}]}}))}))},t.prototype.buildAuthorizeUrl=function(e){void 0===e&&(e={});var t={client_id:this.clientId,redirect_uri:e.redirectTo||this.redirectUri||(null==u?void 0:u.location.origin),response_type:_(e,A()),audience:e.audience,scope:e.scope,connection:e.connection},r=Object.fromEntries(Object.entries(t).filter((function(e){return!!e[1]})));return"".concat(this.domainUrl,"/authorize?").concat(new URLSearchParams(r).toString())},t.prototype.authorize=function(e){var t=this.buildAuthorizeUrl(e);G.redirect(t)},t.prototype._handleConnectionSignIn=function(e){return i(this,void 0,void 0,(function(){var t;return s(this,(function(r){switch(r.label){case 0:return[4,this._getUrlForConnection("".concat(this.domainUrl,"/authorize"),{response_type:A()?"code":"token",connection:e.connection,connection_id:e.connection_id,redirectTo:e.redirectTo,scopes:e.scopes,queryParams:e.queryParams})];case 1:return t=r.sent(),this._debug("#_handleConnectionSignIn()","options",e,"url",t),A()&&!e.skipBrowserRedirect&&(null==u||u.location.assign(t)),[2,{data:{url:t},error:null}]}}))}))},t.prototype.setSession=function(e){return i(this,void 0,void 0,(function(){var t=this;return s(this,(function(r){switch(r.label){case 0:return[4,this.initializePromise];case 1:return r.sent(),[4,this.lock._acquireLock(-1,(function(){return i(t,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this._setSession(e)];case 1:return[2,t.sent()]}}))}))}))];case 2:return[2,r.sent()]}}))}))},t.prototype.getSession=function(){return i(this,void 0,void 0,(function(){var e=this;return s(this,(function(t){switch(t.label){case 0:return[4,this.initializePromise];case 1:return t.sent(),[4,this.lock._acquireLock(-1,(function(){return i(e,void 0,void 0,(function(){var e=this;return s(this,(function(t){return[2,this._useSession((function(t){return i(e,void 0,void 0,(function(){return s(this,(function(e){return[2,t]}))}))}))]}))}))}))];case 2:return[2,t.sent()]}}))}))},t.prototype._useSession=function(e){return i(this,void 0,void 0,(function(){var t;return s(this,(function(r){switch(r.label){case 0:this._debug("#_useSession","begin"),r.label=1;case 1:return r.trys.push([1,,4,5]),[4,this.__loadSession()];case 2:return t=r.sent(),[4,e(t)];case 3:return[2,r.sent()];case 4:return this._debug("#_useSession","end"),[7];case 5:return[2]}}))}))},t.prototype.__loadSession=function(){return i(this,void 0,void 0,(function(){var e,t,r,n,i,o,a;return s(this,(function(s){switch(s.label){case 0:this._debug("#__loadSession()","begin"),this.lock.lockAcquired||this._debug("#__loadSession()","used outside of an acquired lock!",(new Error).stack),s.label=1;case 1:return s.trys.push([1,,7,8]),e=null,[4,w(this.storage,this.storageKey)];case 2:return t=s.sent(),this._debug("#getSession()","session from storage",t),null===t?[3,5]:B(t)?(e=t,[3,5]):[3,3];case 3:return this._debug("#getSession()","session from storage is not valid"),[4,this._removeSession()];case 4:s.sent(),s.label=5;case 5:return e?(r=!!e.expires_at&&e.expires_at<=Date.now()/1e3,this._debug("#__loadSession()","session has".concat(r?"":" not"," expired"),"expires_at",e.expires_at),r?[4,this._callRefreshToken(e.refresh_token)]:(this.storage.isServer&&(n=new Proxy(e,{get:function(e,t,r){return"user"===t&&console.warn("Reading `session.user` from a server-side cookie store can be insecure: the value is whatever the cookie contains and has not been verified against Faable Auth. Re-fetch the user with `auth.getUser()` (or verify the access token yourself) before trusting it on the server."),Reflect.get(e,t,r)}}),e=n),[2,{data:{session:e},error:null}])):[2,{data:{session:null},error:null}];case 6:return i=s.sent(),o=i.session,(a=i.error)?[2,{data:{session:null},error:a}]:[2,{data:{session:o},error:null}];case 7:return this._debug("#__loadSession()","end"),[7];case 8:return[2]}}))}))},t.prototype._removeSession=function(){return i(this,void 0,void 0,(function(){return s(this,(function(e){switch(e.label){case 0:return this._debug("#_removeSession()"),this._session=null,[4,this.storage.removeItem(this.storageKey)];case 1:return e.sent(),[2]}}))}))},t.prototype._setSession=function(e){return i(this,void 0,void 0,(function(){var t,r,n,i,o,a,c,u,l,h,d;return s(this,(function(s){switch(s.label){case 0:if(s.trys.push([0,7,,8]),!e.access_token||!e.refresh_token)throw new q;return t=Date.now()/1e3,r=t,n=!0,i=null,(o=J(e.access_token)).exp&&(r=o.exp,n=r<=t),n?[4,this._callRefreshToken(e.refresh_token)]:[3,2];case 1:return a=s.sent(),c=a.session,(h=a.error)?[2,{data:{user:null,session:null},error:h}]:c?(i=c,[3,6]):[2,{data:{user:null,session:null},error:null}];case 2:return[4,this._getUser(e.access_token)];case 3:if(u=s.sent(),l=u.data,(h=u.error)||!l)throw h;return i={access_token:e.access_token,refresh_token:e.refresh_token,user:l,token_type:"bearer",expires_in:r-t,expires_at:r},[4,this._saveSession(i)];case 4:return s.sent(),[4,this._notifyAllSubscribers("SIGNED_IN",i)];case 5:s.sent(),s.label=6;case 6:return[2,{data:{user:i.user,session:i},error:null}];case 7:if(z(d=s.sent()))return[2,{data:{session:null,user:null},error:d}];throw d;case 8:return[2]}}))}))},t.prototype._saveSession=function(e){return i(this,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return this._debug("#_saveSession()",e),this._session=e,[4,y(this.storage,this.storageKey,e)];case 1:return t.sent(),[2]}}))}))},t.prototype._getUser=function(e){return i(this,void 0,void 0,(function(){var t;return s(this,(function(r){switch(r.label){case 0:if(!e)throw new Error("Cannot fetch user without token");return this._debug("#_getUser() begin"),[4,b("".concat(this.domainUrl,"/me"),{token:e})];case 1:return t=r.sent(),this._debug("#_getUser() end"),[2,{data:t.data,error:t.error}]}}))}))},t.prototype._callRefreshToken=function(e){return i(this,void 0,void 0,(function(){var t,r,n,i,o,a,c,u;return s(this,(function(s){switch(s.label){case 0:if(!e)throw new q;if(this.refreshingDeferred)return[2,this.refreshingDeferred.promise];t="#_callRefreshToken(".concat(e.substring(0,5),"...)"),this._debug(t,"begin"),s.label=1;case 1:return s.trys.push([1,5,10,11]),this.refreshingDeferred=new U,[4,(l=this._refreshAccessToken(e),h=3e4,d="Token refresh timed out",v=new Promise((function(e,t){f=setTimeout((function(){return t(new Error(d))}),h)})),Promise.race([l.finally((function(){void 0!==f&&clearTimeout(f)})),v]))];case 2:if(r=s.sent(),n=r.data,i=r.error)throw i;if(!n.session)throw new q;return[4,this._saveSession(n.session)];case 3:return s.sent(),[4,this._notifyAllSubscribers("TOKEN_REFRESHED",n.session)];case 4:return s.sent(),a={session:n.session,error:null},this.refreshingDeferred.resolve(a),[2,a];case 5:return o=s.sent(),this._debug(t,"error",o),z(o)?(a={session:null,error:o},V(o)?[3,8]:[4,this._removeSession()]):[3,9];case 6:return s.sent(),[4,this._notifyAllSubscribers("SIGNED_OUT",null)];case 7:s.sent(),s.label=8;case 8:return null===(c=this.refreshingDeferred)||void 0===c||c.resolve(a),[2,a];case 9:throw null===(u=this.refreshingDeferred)||void 0===u||u.reject(o),o;case 10:return this.refreshingDeferred=null,this._debug(t,"end"),[7];case 11:return[2]}var l,h,d,f,v}))}))},t.prototype._refreshAccessToken=function(e){return i(this,void 0,void 0,(function(){var t,r,o,a=this;return s(this,(function(c){switch(c.label){case 0:t="#_refreshAccessToken(".concat(e.substring(0,5),"...)"),this._debug(t,"begin"),c.label=1;case 1:return c.trys.push([1,3,4,5]),r=Date.now(),[4,P((function(r){return i(a,void 0,void 0,(function(){var i,o,a,c,u,l,h;return s(this,(function(s){switch(s.label){case 0:return r>0?[4,L(200*Math.pow(2,r-1))]:[3,2];case 1:s.sent(),s.label=2;case 2:return this._debug(t,"refreshing attempt",r),[4,p("".concat(this.domainUrl,"/oauth/token"),{client_id:this.clientId,grant_type:"refresh_token",refresh_token:e})];case 3:if((i=s.sent()).error)throw new M("Refresh token request failed: ".concat(i.error),i.error);if(o=E(i),!(null===(l=o.data.session)||void 0===l?void 0:l.access_token))throw new F;return[4,this._getUser(null===(h=o.data.session)||void 0===h?void 0:h.access_token)];case 4:if(a=s.sent(),c=a.data,u=a.error)throw new M("Could not fetch user info",u);if(!c)throw new M("Refresh response missing user",null);return[2,{data:{session:n(n({},o.data.session),{user:c}),user:c},error:null}]}}))}))}),(function(e,t){var n=200*Math.pow(2,e);return t&&V(t)&&Date.now()+n-r<ne}))];case 2:return[2,c.sent()];case 3:if(o=c.sent(),this._debug(t,"error",o),z(o))return[2,{data:{session:null,user:null},error:o}];throw o;case 4:return this._debug(t,"end"),[7];case 5:return[2]}}))}))},t.prototype._notifyAllSubscribers=function(e,t){return i(this,arguments,void 0,(function(e,t,r){var n;return void 0===r&&(r=!0),s(this,(function(i){switch(i.label){case 0:n="#_notifyAllSubscribers(".concat(e,")"),this._debug(n,"begin",t,"broadcast = ".concat(r)),i.label=1;case 1:return i.trys.push([1,,3,4]),[4,this.broadcastSync.notify(e,t,r)];case 2:return i.sent(),[3,4];case 3:return this._debug(n,"end"),[7];case 4:return[2]}}))}))},t.prototype.signOut=function(){return i(this,arguments,void 0,(function(e){var t=this;return void 0===e&&(e={scope:"global"}),s(this,(function(r){switch(r.label){case 0:return[4,this.initializePromise];case 1:return r.sent(),[4,this.lock._acquireLock(-1,(function(){return i(t,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this._signOut(e)];case 1:return[2,t.sent()]}}))}))}))];case 2:return[2,r.sent()]}}))}))},t.prototype._signOut=function(){return i(this,arguments,void 0,(function(e){var t=this,r=(void 0===e?{scope:"global"}:e).scope;return s(this,(function(e){switch(e.label){case 0:return[4,this._useSession((function(e){return i(t,void 0,void 0,(function(){var t,n,i,o;return s(this,(function(s){switch(s.label){case 0:return t=e.data,(n=e.error)?[2,{error:n}]:(null===(o=t.session)||void 0===o?void 0:o.access_token)?[4,this.api.signOut({client_id:this.clientId})]:[3,2];case 1:if((i=s.sent().error)&&(!function(e){return z(e)&&"AuthApiError"===e.name}(i)||404!==i.status&&401!==i.status))return[2,{error:i}];s.label=2;case 2:return"others"===r?[3,6]:[4,this._removeSession()];case 3:return s.sent(),[4,this.storage.removeItem("".concat(this.storageKey,"-code-verifier"))];case 4:return s.sent(),[4,this._notifyAllSubscribers("SIGNED_OUT",null)];case 5:s.sent(),s.label=6;case 6:return[2,{error:null}]}}))}))}))];case 1:return[2,e.sent()]}}))}))},t.prototype.onAuthStateChange=function(e){var t=this,r=this.broadcastSync.subscribe(e).subscription;return this._debug("#onAuthStateChange()","registered callback with id",r.id),i(t,void 0,void 0,(function(){var e=this;return s(this,(function(t){switch(t.label){case 0:return[4,this.initializePromise];case 1:return t.sent(),[4,this.lock._acquireLock(-1,(function(){return i(e,void 0,void 0,(function(){return s(this,(function(e){return this._emitInitialSession(r),[2]}))}))}))];case 2:return t.sent(),[2]}}))})),{data:{subscription:r}}},t.prototype._emitInitialSession=function(e){return i(this,void 0,void 0,(function(){var t=this;return s(this,(function(r){switch(r.label){case 0:return[4,this._useSession((function(r){return i(t,void 0,void 0,(function(){var t,n,i;return s(this,(function(s){switch(s.label){case 0:if(s.trys.push([0,2,,4]),t=r.data.session,n=r.error)throw n;return[4,e.callback("INITIAL_SESSION",t)];case 1:return s.sent(),this._debug("INITIAL_SESSION","callback id",e.id,"session",t),[3,4];case 2:return i=s.sent(),[4,e.callback("INITIAL_SESSION",null)];case 3:return s.sent(),this._debug("INITIAL_SESSION","callback id",e.id,"error",i),console.error(i),[3,4];case 4:return[2]}}))}))}))];case 1:return[2,r.sent()]}}))}))},t.prototype.refreshSession=function(e){return i(this,void 0,void 0,(function(){var t=this;return s(this,(function(r){switch(r.label){case 0:return[4,this.initializePromise];case 1:return r.sent(),[4,this.lock._acquireLock(-1,(function(){return i(t,void 0,void 0,(function(){return s(this,(function(t){switch(t.label){case 0:return[4,this._refreshSession(e)];case 1:return[2,t.sent()]}}))}))}))];case 2:return[2,r.sent()]}}))}))},t.prototype._refreshSession=function(e){return i(this,void 0,void 0,(function(){var t,r=this;return s(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this._useSession((function(t){return i(r,void 0,void 0,(function(){var r,n,i,o,a,c;return s(this,(function(s){switch(s.label){case 0:if(!e){if(r=t.data,n=t.error)throw n;e=null!==(c=r.session)&&void 0!==c?c:void 0}if(!(null==e?void 0:e.refresh_token))throw new q;return[4,this._callRefreshToken(e.refresh_token)];case 1:return i=s.sent(),o=i.session,(a=i.error)?[2,{data:{user:null,session:null},error:a}]:o?[2,{data:{user:o.user,session:o},error:null}]:[2,{data:{user:null,session:null},error:null}]}}))}))}))];case 1:return[2,n.sent()];case 2:if(z(t=n.sent()))return[2,{data:{user:null,session:null},error:t}];throw t;case 3:return[2]}}))}))},t}(c),se=function(){};e.AuthError=D,e.FaableAuthClient=ie,e.User=se,e.cookieStorageAdapter=Y,e.createClient=function(e){return new ie(e)},e.getSessionFromCookies=function(e,t){var r,n;if(!(n="function"==typeof e.get?null===(r=e.get(t))||void 0===r?void 0:r.value:e[t]))return null;try{return JSON.parse(decodeURIComponent(n))}catch(e){return console.error("Failed to parse session from cookie",e),null}}}({});
7
7
  //# sourceMappingURL=faableauth.js.map