@faable/auth-js 1.2.2 → 1.3.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.
Files changed (58) hide show
  1. package/README.md +26 -1
  2. package/dist/Base.d.ts +0 -1
  3. package/dist/BaseLog.d.ts +0 -1
  4. package/dist/FaableAuthApi.d.ts +0 -1
  5. package/dist/FaableAuthClient.d.ts +5 -1
  6. package/dist/entrypoints/faableauth.d.ts +6 -0
  7. package/dist/faableauth.js +7 -0
  8. package/dist/faableauth.js.map +1 -0
  9. package/dist/lib/constants.d.ts +0 -1
  10. package/dist/lib/errors.d.ts +0 -1
  11. package/dist/lib/fetch.d.ts +8 -5
  12. package/dist/lib/globals.d.ts +4 -0
  13. package/dist/lib/helpers.d.ts +18 -8
  14. package/dist/lib/jwt.d.ts +0 -1
  15. package/dist/lib/local-storage.d.ts +0 -1
  16. package/dist/lib/storage_helpers.d.ts +0 -1
  17. package/dist/lib/types.d.ts +0 -1
  18. package/dist/lib/url_helpers.d.ts +7 -0
  19. package/dist/lib/version.d.ts +0 -1
  20. package/dist/lock/Lock.d.ts +0 -1
  21. package/dist/lock/locks.d.ts +0 -1
  22. package/dist/utils.d.ts +0 -1
  23. package/package.json +5 -24
  24. package/dist/Base.d.ts.map +0 -1
  25. package/dist/Base.js +0 -16
  26. package/dist/BaseLog.d.ts.map +0 -1
  27. package/dist/BaseLog.js +0 -21
  28. package/dist/FaableAuthApi.d.ts.map +0 -1
  29. package/dist/FaableAuthApi.js +0 -37
  30. package/dist/FaableAuthClient.d.ts.map +0 -1
  31. package/dist/FaableAuthClient.js +0 -1073
  32. package/dist/index.d.ts +0 -7
  33. package/dist/index.d.ts.map +0 -1
  34. package/dist/index.js +0 -13
  35. package/dist/lib/constants.d.ts.map +0 -1
  36. package/dist/lib/constants.js +0 -13
  37. package/dist/lib/errors.d.ts.map +0 -1
  38. package/dist/lib/errors.js +0 -100
  39. package/dist/lib/fetch.d.ts.map +0 -1
  40. package/dist/lib/fetch.js +0 -53
  41. package/dist/lib/helpers.d.ts.map +0 -1
  42. package/dist/lib/helpers.js +0 -257
  43. package/dist/lib/jwt.d.ts.map +0 -1
  44. package/dist/lib/jwt.js +0 -139
  45. package/dist/lib/local-storage.d.ts.map +0 -1
  46. package/dist/lib/local-storage.js +0 -45
  47. package/dist/lib/storage_helpers.d.ts.map +0 -1
  48. package/dist/lib/storage_helpers.js +0 -34
  49. package/dist/lib/types.d.ts.map +0 -1
  50. package/dist/lib/types.js +0 -6
  51. package/dist/lib/version.d.ts.map +0 -1
  52. package/dist/lib/version.js +0 -5
  53. package/dist/lock/Lock.d.ts.map +0 -1
  54. package/dist/lock/Lock.js +0 -82
  55. package/dist/lock/locks.d.ts.map +0 -1
  56. package/dist/lock/locks.js +0 -137
  57. package/dist/utils.d.ts.map +0 -1
  58. package/dist/utils.js +0 -88
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <a href="https://faable.com">
3
- <img src="https://www.faable.com/logo/Emblem.png" height="96">
3
+ <img src="https://www.faable.com/assets/logo/Emblem.png" height="96">
4
4
  <h3 align="center">Faable</h3>
5
5
  </a>
6
6
  </p>
@@ -23,3 +23,28 @@
23
23
  ```bash
24
24
  npm install @faable/auth-js
25
25
  ```
26
+
27
+ ## Configure
28
+
29
+ ```js
30
+ import { createClient } from "@faable/auth-js";
31
+
32
+ export const auth = createClient({
33
+ domain: "<faableauth_domain>",
34
+ clientId: "<client_id>",
35
+ });
36
+ ```
37
+
38
+ ## Login
39
+
40
+ To login with a specific connection (Google, Facebook, etc.), you can set it once on your client instance.
41
+
42
+ ```js
43
+ // Sign in using default connection
44
+ auth.signInWithOauthConnection();
45
+
46
+ // Or use specific connection
47
+ auth.signInWithOauthConnection({
48
+ connection: "<connection_id>",
49
+ });
50
+ ```
package/dist/Base.d.ts CHANGED
@@ -5,4 +5,3 @@ export declare abstract class Base extends BaseLog {
5
5
  constructor(config?: BaseLogOptions);
6
6
  extraPrint(): string;
7
7
  }
8
- //# sourceMappingURL=Base.d.ts.map
package/dist/BaseLog.d.ts CHANGED
@@ -8,4 +8,3 @@ export declare abstract class BaseLog {
8
8
  protected extraPrint?(): string;
9
9
  protected _debug(...args: any[]): this;
10
10
  }
11
- //# sourceMappingURL=BaseLog.d.ts.map
@@ -11,4 +11,3 @@ export default class FaableAuthApi extends BaseLog {
11
11
  error: AuthError | null;
12
12
  }>;
13
13
  }
14
- //# sourceMappingURL=FaableAuthApi.d.ts.map
@@ -118,6 +118,11 @@ export declare class FaableAuthClient extends Base {
118
118
  private _scope;
119
119
  private _getUrlForConnection;
120
120
  signInWithOauthConnection(credentials: SignInWithOAuthConnection): Promise<OAuthResponse>;
121
+ signInWithUsernamePassword(data: {
122
+ username: string;
123
+ password: string;
124
+ redirect_uri?: string;
125
+ }): Promise<void>;
121
126
  private _handleConnectionSignIn;
122
127
  /**
123
128
  * Sets the session data from the current session. If the current session is expired, setSession will take care of refreshing it to obtain a new session.
@@ -224,4 +229,3 @@ export declare class FaableAuthClient extends Base {
224
229
  refresh_token: string;
225
230
  }): Promise<AuthResponse>;
226
231
  }
227
- //# sourceMappingURL=FaableAuthClient.d.ts.map
@@ -0,0 +1,6 @@
1
+ import { FaableAuthClient } from "../FaableAuthClient";
2
+ import { FaableAuthClientConfig } from "../lib/types";
3
+ import { Session, User } from "../lib/types";
4
+ import { AuthError } from "../lib/errors";
5
+ export declare const createClient: (config: FaableAuthClientConfig) => FaableAuthClient;
6
+ export { Session, User, FaableAuthClient, AuthError };
@@ -0,0 +1,7 @@
1
+ /*!
2
+ * @faable/auth-js v1.3.1
3
+ * (c) 2025
4
+ * @license SEE LICENSE.md
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]}}))}))},c=function(e,t){return s(void 0,void 0,void 0,(function(){return i(this,(function(r){switch(r.label){case 0:return[4,e.removeItem(t)];case 1:return r.sent(),[2]}}))}))};function l(e){return("0"+e.toString(16)).substr(-2)}function h(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 d(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,h(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 f(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,l).join("")}(),s=n,r&&(s+="/PASSWORD_RECOVERY"),[4,a(e,"".concat(t,"-code-verifier"),s)];case 1:return i.sent(),[4,d(n)];case 2:return[2,[o=i.sent(),n===o?"plain":"S256"]]}}))}))}var v=function(){return"undefined"!=typeof document},p={tested:!1,writable:!1},b=function(){if(!v())return!1;try{if("object"!=typeof globalThis.localStorage)return!1}catch(e){return!1}if(p.tested)return p.writable;var e="lswt-".concat(Math.random()).concat(Math.random());try{globalThis.localStorage.setItem(e,e),globalThis.localStorage.removeItem(e),p.tested=!0,p.writable=!0}catch(e){p.tested=!0,p.writable=!1}return p.writable};function _(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 w(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 k(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 b()?globalThis.localStorage.getItem(e):null},setItem:function(e,t){b()&&globalThis.localStorage.setItem(e,t)},removeItem:function(e){b()&&globalThis.localStorage.removeItem(e)}},S=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),T=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}(S),x=function(e){function t(){return e.call(this,"Auth session missing!","AuthSessionMissingError",400,void 0)||this}return r(t,e),t}(T);function I(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)}(S);var A=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}(T),C=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}(T),E=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}(S),R=function(e){function t(){return e.call(this,"Auth session or user missing","AuthInvalidTokenResponseError",500,void 0)||this}return r(t,e),t}(T);function L(e){return I(e)&&"AuthRetryableFetchError"===e.name}!function(e){function t(t,r){return e.call(this,t,"AuthRetryableFetchError",r,void 0)||this}r(t,e)}(T);var P=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}(),U="undefined"!=typeof window?window:void 0,O="undefined"!=typeof globalThis?globalThis:U,D=null==O?void 0:O.document,N=window.fetch,q=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)},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,o;return void 0===r&&(r={}),i(this,(function(i){switch(i.label){case 0:return i.trys.push([0,6,,7]),[4,N(e,{method:"POST",body:JSON.stringify(t),headers:n(n({},q(r)),{"Content-Type":"application/json"})})];case 1:return s=i.sent(),r.raw?[4,s.text()]:[3,3];case 2:return o=i.sent(),[3,5];case 3:return[4,s.json()];case 4:o=i.sent(),i.label=5;case 5:return[2,{data:o,error:null}];case 6:return[2,{data:null,error:i.sent()}];case 7:return[2]}}))}))},K=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){return void 0===t&&(t={}),i(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),[4,N(e,n(n({},t),{method:"GET",headers:q(t)}))];case 1:return[4,r.sent().json()];case 2:return[2,{data:r.sent(),error:null}];case 3:return[2,{data:null,error:r.sent()}];case 4:return[2]}}))}))},j=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,K(t)];case 1:return r=n.sent(),this._debug(r),r.error?[2,{error:r.error,data:null}]:[2,{error:null,data:null}]}}))}))},t}(P);globalThis&&b()&&globalThis.localStorage&&globalThis.localStorage.getItem("supabase.gotrue-js.locks.debug");var M=function(e){function t(t){var r=e.call(this,t)||this;return r.isAcquireTimeout=!0,r}return r(t,e),t}(Error);function F(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)}(M);var V=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}(P),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||F,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}(V);function B(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())},W=3e4,H=function(e){function t(t){var r,n,o=this,a=(null==t?void 0:t.debug)||!1;if((o=e.call(this,{debug:a})||this).initializePromise=null,o.detectSessionInUrl=!0,o.autoRefreshTicker=null,o.visibilityChangedCallback=null,o.refreshingDeferred=null,o.broadcastChannel=null,o.stateChangeEmitters=new Map,o.sessionCheckExpiryDays=1,o.redirect_uri=(null==t?void 0:t.redirect_uri)||"",!(null==t?void 0:t.domain))throw new Error("Missing domain");if(o.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),o.tokenIssuer=(n=o.domainUrl,"".concat(n)),!t.clientId)throw new Error("Missing clientId");if(o.clientId=t.clientId,o.api=new j(o.domainUrl,{debug:a}),o.storageKey=(null==t?void 0:t.storageKey)||"faable.auth.token",o.flowType=(null==t?void 0:t.flowType)||"implicit",o.storage=(null==t?void 0:t.storage)||m,o.lock=new G({lock:t.lock,storageKey:o.storageKey,debug:t.debug}),v()&&globalThis.BroadcastChannel&&o.storageKey){try{o.broadcastChannel=new globalThis.BroadcastChannel(o.storageKey)}catch(e){console.error("Failed to create a new BroadcastChannel, multi-tab state changes will not be available",e)}null===(r=o.broadcastChannel)||void 0===r||r.addEventListener("message",(function(e){return s(o,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 o.autoRefreshToken=!0,o.initialize(),o}return r(t,e),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,l=this;return i(this,(function(h){switch(h.label){case 0:return h.trys.push([0,10,11,13]),v()?[4,this._isPKCEFlow()]:[3,2];case 1:return t=h.sent(),[3,3];case 2:t=!1,h.label=3;case 3:return e=t,this._debug("#_initialize()","begin","is PKCE flow",e),e||this.detectSessionInUrl&&this._isImplicitGrantFlow()?[4,this._getSessionFromURL(e)]:[3,8];case 4:return r=h.sent(),n=r.data,(o=r.error)?(this._debug("#_initialize()","error detecting session from URL",o),"Identity is already linked"===(null==o?void 0:o.message)||"Identity is already linked to another user"===(null==o?void 0:o.message)?[2,{error:o}]:[4,this._removeSession()]):[3,6];case 5:return h.sent(),[2,{error:o}];case 6:return a=n.session,u=n.redirectType,this._debug("#_initialize()","detected session in URL",a,"redirect type",u),[4,this._saveSession(a)];case 7:return h.sent(),setTimeout((function(){return s(l,void 0,void 0,(function(){return i(this,(function(e){switch(e.label){case 0:return"recovery"!==u?[3,2]:[4,this._notifyAllSubscribers("PASSWORD_RECOVERY",a)];case 1:return e.sent(),[3,4];case 2:return[4,this._notifyAllSubscribers("SIGNED_IN",a)];case 3:e.sent(),e.label=4;case 4:return[2]}}))}))}),0),[2,{error:null}];case 8:return[4,this._recoverAndRefresh()];case 9:return h.sent(),[2,{error:null}];case 10:return I(c=h.sent())?[2,{error:c}]:[2,{error:new E("Unexpected error during initialization",c)}];case 11:return[4,this._handleVisibilityChange()];case 12:return h.sent(),this._debug("#_initialize()","end"),[7];case 13: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,p,b,_,g,w,y,k;return i(this,(function(i){switch(i.label){case 0:if(i.trys.push([0,4,,5]),!v())throw new A("No browser detected.");if("implicit"===this.flowType&&!this._isImplicitGrantFlow())throw new A("Not a valid implicit grant flow url.");if("pkce"==this.flowType&&!e)throw new C("Not a valid PKCE flow url.");if(t=B(window.location.href),!e)return[3,2];if(!t.code)throw new C("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 A(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 A("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:W}),p=f.expiresAt,b=f.expiresIn,[4,this._getUser(u)];case 3:if(_=i.sent(),g=_.data,(w=_.error)||!g.user)throw w;return y={provider_token:o,provider_refresh_token:a,access_token:u,expires_in:b,expires_at:p,refresh_token:c,token_type:d,user:g.user},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(k=i.sent(),this._debug(k),I(k))return[2,{data:{session:null,redirectType:null},error:k}];throw k;case 5:return[2]}}))}))},t.prototype._exchangeCodeForSession=function(e){return s(this,void 0,void 0,(function(){var t,r,s,o,a,l,h,d,f,v,p,b;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(),l=_(a),h=l.data,d=l.error,!h)throw new Error("Missing data");return[4,c(this.storage,"".concat(this.storageKey,"-code-verifier"))];case 3:return i.sent(),d?[2,{data:{user:null,session:null,redirectType:null},error:d}]:h&&h.session&&h.user?(f=h.session)?[4,this._getUser(f.access_token)]:[3,7]:[2,{data:{user:null,session:null,redirectType:null},error:new R}];case 4:if(v=i.sent(),p=v.data,(b=v.error)||!p.user)throw b;return f=n(n({},f),{user:p.user}),h.session=f,[4,this._saveSession(f)];case 5:return i.sent(),[4,this._notifyAllSubscribers("SIGNED_IN",f)];case 6:i.sent(),i.label=7;case 7:return[2,{data:n(n({},h),{redirectType:null!=o?o:null}),error:d}]}}))}))},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()"),!v()||!(null===window||void 0===window?void 0:window.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===window||void 0===window||window.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",D.visibilityState),"visible"!==D.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"!==D.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"===D.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),L(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[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&&v()&&(null===window||void 0===window?void 0:window.removeEventListener)&&window.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()}),W),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)/W),this._debug("#_autoRefreshTokenTick()","access token expires in ".concat(n," ticks, a tick lasts ").concat(W,"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 M))throw e;return this._debug("auto refresh token tick lock not available"),[3,4];case 4:return[2]}}))}))},t.prototype._isPKCEFlow=function(){return s(this,void 0,void 0,(function(){var e,t;return i(this,(function(r){switch(r.label){case 0:return e=B(window.location.href),[4,u(this.storage,"".concat(this.storageKey,"-code-verifier"))];case 1:return t=r.sent(),[2,!(!e.code||!t)]}}))}))},t.prototype._isImplicitGrantFlow=function(){var e=B(window.location.href);return!(!v()||!e.access_token&&!e.error_description)},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||window.location.origin,scope:t.scopes||this._scope()},"pkce"!==this.flowType?[3,2]:[4,f(this.storage,this.storageKey)];case 1:o=i.sent(),a=o[0],u=o[1],r=n(n({},r),{code_challenge:a,code_challenge_method:u}),i.label=2;case 2: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=D.createElement("div")).innerHTML=e,D.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||window.location.origin,client_id:this.clientId},{raw:!0})];case 1:if(!(r=o.sent()).data)throw new Error("bad server response");return t(r.data),[2]}}))}))},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:v()?"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),v()&&!e.skipBrowserRedirect&&window.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()"),[4,c(this.storage,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 x;return t=Date.now()/1e3,r=t,n=!0,s=null,(o=k(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.user)throw h;return s={access_token:e.access_token,refresh_token:e.refresh_token,user:l.user,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(I(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),[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,K("".concat(this.domainUrl,"/me"),{token:e})];case 1:return t=r.sent(),this._debug("#_getUser() end"),[2,{data:{user: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 x;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 x;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),I(o)?(a={session:null,error:o},L(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,w((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=_(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.user))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&&L(t)&&Date.now()+n-r<W}))];case 2:return[2,u.sent()];case 3:if(o=u.sent(),this._debug(t,"error",o),I(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).scope;return 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,n,s,o;return i(this,(function(i){switch(i.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((s=i.sent().error)&&(!function(e){return I(e)&&"AuthApiError"===e.name}(s)||404!==s.status&&401!==s.status))return[2,{error:s}];i.label=2;case 2:return"others"===r?[3,6]:[4,this._removeSession()];case 3:return i.sent(),[4,c(this.storage,"".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 x;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(I(t=n.sent()))return[2,{data:{user:null,session:null},error:t}];throw t;case 3:return[2]}}))}))},t}(V),$=function(){};e.AuthError=S,e.FaableAuthClient=H,e.User=$,e.createClient=function(e){return new H(e)}}({});
7
+ //# sourceMappingURL=faableauth.js.map