@fuul/sdk 4.11.6 → 4.12.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.
@@ -10,7 +10,7 @@ export declare class EventService {
10
10
  private readonly debug;
11
11
  private readonly httpClient;
12
12
  constructor(settings: EventServiceSettings);
13
- sendEvent(event: FuulEvent): Promise<void>;
13
+ sendEvent(event: FuulEvent, projectIds?: string[]): Promise<void>;
14
14
  isDuplicate(thisEvent: FuulEvent): boolean;
15
15
  private getCurrentTimestamp;
16
16
  private saveSentEvent;
@@ -1 +1 @@
1
- {"version":3,"file":"EventService.d.ts","sourceRoot":"","sources":["../src/EventService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,QAAQ,EAAE,oBAAoB;IAK7B,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAYhD,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAyCjD,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;CAQtB"}
1
+ {"version":3,"file":"EventService.d.ts","sourceRoot":"","sources":["../src/EventService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,eAAO,MAAM,iBAAiB,cAAc,CAAC;AAC7C,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,MAAM,MAAM,oBAAoB,GAAG;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAa;gBAE5B,QAAQ,EAAE,oBAAoB;IAK7B,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBvE,WAAW,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;IAyCjD,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,aAAa;CAQtB"}
package/dist/core.d.ts CHANGED
@@ -22,7 +22,7 @@ export declare function sendEvent(name: string, args?: EventArgs): Promise<void>
22
22
  * sendPageview({ page: '/product/123' })
23
23
  * ```
24
24
  */
25
- export declare function sendPageview(pageName?: string): Promise<void>;
25
+ export declare function sendPageview(pageName?: string, projectIds?: string[]): Promise<void>;
26
26
  /**
27
27
  * @param {UserMetadata} userMetadata Metadata from the user that connected the wallet
28
28
  * @see https://docs.fuul.xyz/technical-guide-for-projects/sending-events-through-the-fuul-sdk#connect-wallet-event
@@ -45,7 +45,7 @@ export declare function sendPageview(pageName?: string): Promise<void>;
45
45
  * })
46
46
  * ```
47
47
  */
48
- export declare function sendConnectWallet(userMetadata: UserMetadata): Promise<void>;
48
+ export declare function sendConnectWallet(userMetadata: UserMetadata, projectIds?: string[]): Promise<void>;
49
49
  /**
50
50
  * Creates a code registered to an affiliate address
51
51
  * @param {object} params Create affiliate code parameters
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -27,7 +27,7 @@ const Pt = ne("string"), _ = ne("function"), Ye = ne("number"), re = (e) => e !=
27
27
  let t;
28
28
  return e && (typeof FormData == "function" && e instanceof FormData || _(e.append) && ((t = te(e)) === "formdata" || // detect form-data instance
29
29
  t === "object" && _(e.toString) && e.toString() === "[object FormData]"));
30
- }, vt = P("URLSearchParams"), [It, kt, qt, jt] = ["ReadableStream", "Request", "Response", "Headers"].map(P), $t = (e) => e.trim ? e.trim() : e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
30
+ }, vt = P("URLSearchParams"), [kt, It, qt, jt] = ["ReadableStream", "Request", "Response", "Headers"].map(P), $t = (e) => e.trim ? e.trim() : e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
31
31
  function M(e, t, { allOwnKeys: n = !1 } = {}) {
32
32
  if (e === null || typeof e > "u")
33
33
  return;
@@ -186,8 +186,8 @@ const an = (e) => {
186
186
  isBoolean: xt,
187
187
  isObject: re,
188
188
  isPlainObject: Y,
189
- isReadableStream: It,
190
- isRequest: kt,
189
+ isReadableStream: kt,
190
+ isRequest: It,
191
191
  isResponse: qt,
192
192
  isHeaders: jt,
193
193
  isUndefined: J,
@@ -906,7 +906,7 @@ const Z = (e, t, n = 3) => {
906
906
  return !0;
907
907
  };
908
908
  }()
909
- ), In = T.hasStandardBrowserEnv ? (
909
+ ), kn = T.hasStandardBrowserEnv ? (
910
910
  // Standard browser envs support document.cookie
911
911
  {
912
912
  write(e, t, n, r, s, o) {
@@ -933,17 +933,17 @@ const Z = (e, t, n = 3) => {
933
933
  }
934
934
  }
935
935
  );
936
- function kn(e) {
936
+ function In(e) {
937
937
  return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(e);
938
938
  }
939
939
  function qn(e, t) {
940
940
  return t ? e.replace(/\/?\/$/, "") + "/" + t.replace(/^\/+/, "") : e;
941
941
  }
942
942
  function dt(e, t) {
943
- return e && !kn(t) ? qn(e, t) : t;
943
+ return e && !In(t) ? qn(e, t) : t;
944
944
  }
945
- const Ie = (e) => e instanceof O ? { ...e } : e;
946
- function k(e, t) {
945
+ const ke = (e) => e instanceof O ? { ...e } : e;
946
+ function I(e, t) {
947
947
  t = t || {};
948
948
  const n = {};
949
949
  function r(u, l, d) {
@@ -1000,7 +1000,7 @@ function k(e, t) {
1000
1000
  socketPath: i,
1001
1001
  responseEncoding: i,
1002
1002
  validateStatus: c,
1003
- headers: (u, l) => s(Ie(u), Ie(l), !0)
1003
+ headers: (u, l) => s(ke(u), ke(l), !0)
1004
1004
  };
1005
1005
  return a.forEach(Object.keys(Object.assign({}, e, t)), function(l) {
1006
1006
  const d = f[l] || s, y = d(e[l], t[l], l);
@@ -1008,7 +1008,7 @@ function k(e, t) {
1008
1008
  }), n;
1009
1009
  }
1010
1010
  const ht = (e) => {
1011
- const t = k({}, e);
1011
+ const t = I({}, e);
1012
1012
  let { data: n, withXSRFToken: r, xsrfHeaderName: s, xsrfCookieName: o, headers: i, auth: c } = t;
1013
1013
  t.headers = i = O.from(i), t.url = at(dt(t.baseURL, t.url), e.params, e.paramsSerializer), c && i.set(
1014
1014
  "Authorization",
@@ -1024,7 +1024,7 @@ const ht = (e) => {
1024
1024
  }
1025
1025
  }
1026
1026
  if (T.hasStandardBrowserEnv && (r && a.isFunction(r) && (r = r(t)), r || r !== !1 && vn(t.url))) {
1027
- const u = s && o && In.read(o);
1027
+ const u = s && o && kn.read(o);
1028
1028
  u && i.set(s, u);
1029
1029
  }
1030
1030
  return t;
@@ -1136,7 +1136,7 @@ const ht = (e) => {
1136
1136
  } finally {
1137
1137
  await t.cancel();
1138
1138
  }
1139
- }, ke = (e, t, n, r) => {
1139
+ }, Ie = (e, t, n, r) => {
1140
1140
  const s = Vn(e, t);
1141
1141
  let o = 0, i, c = (f) => {
1142
1142
  i || (i = !0, r && r(f));
@@ -1241,7 +1241,7 @@ const Wn = async (e) => {
1241
1241
  p,
1242
1242
  Z(ve(f))
1243
1243
  );
1244
- r = ke(A.body, qe, D, G);
1244
+ r = Ie(A.body, qe, D, G);
1245
1245
  }
1246
1246
  }
1247
1247
  a.isString(d) || (d = d ? "include" : "omit");
@@ -1267,7 +1267,7 @@ const Wn = async (e) => {
1267
1267
  Z(ve(c), !0)
1268
1268
  ) || [];
1269
1269
  S = new Response(
1270
- ke(S.body, qe, D, () => {
1270
+ Ie(S.body, qe, D, () => {
1271
1271
  G && G(), g && g();
1272
1272
  }),
1273
1273
  A
@@ -1406,7 +1406,7 @@ const ye = {
1406
1406
  assertOptions: Qn,
1407
1407
  validators: Re
1408
1408
  }, L = ye.validators;
1409
- let I = class {
1409
+ let k = class {
1410
1410
  constructor(t) {
1411
1411
  this.defaults = t, this.interceptors = {
1412
1412
  request: new Fe(),
@@ -1439,7 +1439,7 @@ let I = class {
1439
1439
  }
1440
1440
  }
1441
1441
  _request(t, n) {
1442
- typeof t == "string" ? (n = n || {}, n.url = t) : n = t || {}, n = k(this.defaults, n);
1442
+ typeof t == "string" ? (n = n || {}, n.url = t) : n = t || {}, n = I(this.defaults, n);
1443
1443
  const { transitional: r, paramsSerializer: s, headers: o } = n;
1444
1444
  r !== void 0 && ye.assertOptions(r, {
1445
1445
  silentJSONParsing: L.transitional(L.boolean),
@@ -1498,14 +1498,14 @@ let I = class {
1498
1498
  return l;
1499
1499
  }
1500
1500
  getUri(t) {
1501
- t = k(this.defaults, t);
1501
+ t = I(this.defaults, t);
1502
1502
  const n = dt(t.baseURL, t.url);
1503
1503
  return at(n, t.params, t.paramsSerializer);
1504
1504
  }
1505
1505
  };
1506
1506
  a.forEach(["delete", "get", "head", "options"], function(t) {
1507
- I.prototype[t] = function(n, r) {
1508
- return this.request(k(r || {}, {
1507
+ k.prototype[t] = function(n, r) {
1508
+ return this.request(I(r || {}, {
1509
1509
  method: t,
1510
1510
  url: n,
1511
1511
  data: (r || {}).data
@@ -1515,7 +1515,7 @@ a.forEach(["delete", "get", "head", "options"], function(t) {
1515
1515
  a.forEach(["post", "put", "patch"], function(t) {
1516
1516
  function n(r) {
1517
1517
  return function(o, i, c) {
1518
- return this.request(k(c || {}, {
1518
+ return this.request(I(c || {}, {
1519
1519
  method: t,
1520
1520
  headers: r ? {
1521
1521
  "Content-Type": "multipart/form-data"
@@ -1525,7 +1525,7 @@ a.forEach(["post", "put", "patch"], function(t) {
1525
1525
  }));
1526
1526
  };
1527
1527
  }
1528
- I.prototype[t] = n(), I.prototype[t + "Form"] = n(!0);
1528
+ k.prototype[t] = n(), k.prototype[t + "Form"] = n(!0);
1529
1529
  });
1530
1530
  let Zn = class wt {
1531
1531
  constructor(t) {
@@ -1677,13 +1677,13 @@ Object.entries(we).forEach(([e, t]) => {
1677
1677
  we[t] = e;
1678
1678
  });
1679
1679
  function bt(e) {
1680
- const t = new I(e), n = Ge(I.prototype.request, t);
1681
- return a.extend(n, I.prototype, t, { allOwnKeys: !0 }), a.extend(n, t, null, { allOwnKeys: !0 }), n.create = function(s) {
1682
- return bt(k(e, s));
1680
+ const t = new k(e), n = Ge(k.prototype.request, t);
1681
+ return a.extend(n, k.prototype, t, { allOwnKeys: !0 }), a.extend(n, t, null, { allOwnKeys: !0 }), n.create = function(s) {
1682
+ return bt(I(e, s));
1683
1683
  }, n;
1684
1684
  }
1685
1685
  const b = bt(W);
1686
- b.Axios = I;
1686
+ b.Axios = k;
1687
1687
  b.CanceledError = $;
1688
1688
  b.CancelToken = Zn;
1689
1689
  b.isCancel = lt;
@@ -1696,7 +1696,7 @@ b.all = function(t) {
1696
1696
  };
1697
1697
  b.spread = er;
1698
1698
  b.isAxiosError = tr;
1699
- b.mergeConfig = k;
1699
+ b.mergeConfig = I;
1700
1700
  b.AxiosHeaders = O;
1701
1701
  b.formToJSON = (e) => ut(a.isHTMLForm(e) ? new FormData(e) : e);
1702
1702
  b.getAdapter = gt.getAdapter;
@@ -1844,12 +1844,19 @@ class ar {
1844
1844
  R(this, "httpClient");
1845
1845
  this.httpClient = t.httpClient, this.debug = !!t.debug;
1846
1846
  }
1847
- async sendEvent(t) {
1847
+ async sendEvent(t, n) {
1848
1848
  if (this.isDuplicate(t)) {
1849
1849
  this.debug && console.debug("Fuul SDK: Event is considered duplicate and will not be sent");
1850
1850
  return;
1851
1851
  }
1852
- await this.httpClient.post("events", t), this.debug && console.debug(`Fuul SDK: Sent '${t.name}' event`), this.saveSentEvent(t);
1852
+ if (!n || !Array.isArray(n) || n.length === 0)
1853
+ await this.httpClient.post("events", t);
1854
+ else
1855
+ for (const r of n) {
1856
+ const s = structuredClone({ ...t, project_id: r });
1857
+ s.metadata.project_id = r, await this.httpClient.post("events", s);
1858
+ }
1859
+ this.debug && console.debug(`Fuul SDK: Sent '${t.name}' event`), this.saveSentEvent(t);
1853
1860
  }
1854
1861
  isDuplicate(t) {
1855
1862
  const n = `${Me}_${t.name}`, r = localStorage.getItem(n);
@@ -1871,7 +1878,7 @@ class ar {
1871
1878
  localStorage.setItem(n, JSON.stringify(s));
1872
1879
  }
1873
1880
  }
1874
- const cr = "4.11.6", ur = {
1881
+ const cr = "4.12.1", ur = {
1875
1882
  version: cr
1876
1883
  };
1877
1884
  class lr {
@@ -1986,9 +1993,9 @@ async function Or(e, t) {
1986
1993
  };
1987
1994
  await ie.sendEvent(n);
1988
1995
  }
1989
- async function _r(e) {
1996
+ async function _r(e, t) {
1990
1997
  x(), Oe(), _e();
1991
- const t = {
1998
+ const n = {
1992
1999
  name: "pageview",
1993
2000
  args: {
1994
2001
  page: e ?? document.location.pathname,
@@ -2005,11 +2012,11 @@ async function _r(e) {
2005
2012
  tag: br() ?? void 0
2006
2013
  }
2007
2014
  };
2008
- await ie.sendEvent(t);
2015
+ await ie.sendEvent(n, t);
2009
2016
  }
2010
- async function Pr(e) {
2017
+ async function Pr(e, t) {
2011
2018
  x(), Oe(), _e();
2012
- const t = {
2019
+ const n = {
2013
2020
  name: "connect_wallet",
2014
2021
  args: {
2015
2022
  page: document.location.pathname,
@@ -2019,7 +2026,7 @@ async function Pr(e) {
2019
2026
  tracking_id: Ae()
2020
2027
  }
2021
2028
  };
2022
- e != null && e.address && (t.user_address = e.address), e != null && e.signature && (t.signature = e == null ? void 0 : e.signature, t.signature_message = e == null ? void 0 : e.message), e != null && e.accountChainId && (t.account_chain_id = e.accountChainId), await ie.sendEvent(t);
2029
+ e != null && e.address && (n.user_address = e.address), e != null && e.signature && (n.signature = e == null ? void 0 : e.signature, n.signature_message = e == null ? void 0 : e.message), e != null && e.accountChainId && (n.account_chain_id = e.accountChainId), await ie.sendEvent(n, t);
2023
2030
  }
2024
2031
  async function xr(e) {
2025
2032
  x(), await H.create(e.address, e.code, e.signature, e.accountChainId);
@@ -2049,10 +2056,10 @@ function Br(e) {
2049
2056
  function vr(e) {
2050
2057
  return ae.getReferredUsersLeaderboard(e);
2051
2058
  }
2052
- function Ir(e) {
2059
+ function kr(e) {
2053
2060
  return z.getVolumeLeaderboard(e);
2054
2061
  }
2055
- function kr(e) {
2062
+ function Ir(e) {
2056
2063
  return z.getUserPayoutsByConversion(e);
2057
2064
  }
2058
2065
  function qr(e) {
@@ -2088,7 +2095,7 @@ function Kr() {
2088
2095
  function Jr(e, t) {
2089
2096
  return new lr({
2090
2097
  baseURL: e,
2091
- timeout: 1e4,
2098
+ timeout: 3e4,
2092
2099
  apiKey: Te,
2093
2100
  queryParams: t
2094
2101
  });
@@ -2108,12 +2115,12 @@ const fs = {
2108
2115
  getPointsLeaderboard: Br,
2109
2116
  getReferredUsersLeaderboard: vr,
2110
2117
  getUserAudiences: Vr,
2111
- getUserPayoutsByConversion: kr,
2118
+ getUserPayoutsByConversion: Ir,
2112
2119
  getUserPointsByConversion: qr,
2113
2120
  getUserPointsMovements: $r,
2114
2121
  getUserPayoutMovements: jr,
2115
2122
  getUserAffiliates: zr,
2116
- getVolumeLeaderboard: Ir
2123
+ getVolumeLeaderboard: kr
2117
2124
  };
2118
2125
  export {
2119
2126
  Ve as AddressInUseError,
package/dist/index.umd.js CHANGED
@@ -3,4 +3,4 @@
3
3
  `)}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(t){return t instanceof this?t:new this(t)}static concat(t,...n){const r=new this(t);return n.forEach(s=>r.set(s)),r}static accessor(t){const r=(this[et]=this[et]={accessors:{}}).accessors,s=this.prototype;function o(i){const c=G(i);r[c]||(_n(s,i),r[c]=!0)}return a.isArray(t)?t.forEach(o):o(t),this}};_.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),a.reduceDescriptors(_.prototype,({value:e},t)=>{let n=t[0].toUpperCase()+t.slice(1);return{get:()=>e,set(r){this[n]=r}}}),a.freezeMethods(_);function be(e,t){const n=this||X,r=t||n,s=_.from(r.headers);let o=r.data;return a.forEach(e,function(c){o=c.call(n,o,s.normalize(),t?t.status:void 0)}),s.normalize(),o}function tt(e){return!!(e&&e.__CANCEL__)}function V(e,t,n){m.call(this,e??"canceled",m.ERR_CANCELED,t,n),this.name="CanceledError"}a.inherits(V,m,{__CANCEL__:!0});function nt(e,t,n){const r=n.config.validateStatus;!n.status||!r||r(n.status)?e(n):t(new m("Request failed with status code "+n.status,[m.ERR_BAD_REQUEST,m.ERR_BAD_RESPONSE][Math.floor(n.status/100)-4],n.config,n.request,n))}function Pn(e){const t=/^([-+\w]{1,25})(:?\/\/|:)/.exec(e);return t&&t[1]||""}function xn(e,t){e=e||10;const n=new Array(e),r=new Array(e);let s=0,o=0,i;return t=t!==void 0?t:1e3,function(f){const u=Date.now(),l=r[o];i||(i=u),n[s]=f,r[s]=u;let d=o,w=0;for(;d!==s;)w+=n[d++],d=d%e;if(s=(s+1)%e,s===o&&(o=(o+1)%e),u-i<t)return;const E=l&&u-l;return E?Math.round(w*1e3/E):void 0}}function Nn(e,t){let n=0,r=1e3/t,s,o;const i=(u,l=Date.now())=>{n=l,s=null,o&&(clearTimeout(o),o=null),e.apply(null,u)};return[(...u)=>{const l=Date.now(),d=l-n;d>=r?i(u,l):(s=u,o||(o=setTimeout(()=>{o=null,i(s)},r-d)))},()=>s&&i(s)]}const se=(e,t,n=3)=>{let r=0;const s=xn(50,250);return Nn(o=>{const i=o.loaded,c=o.lengthComputable?o.total:void 0,f=i-r,u=s(f),l=i<=c;r=i;const d={loaded:i,total:c,progress:c?i/c:void 0,bytes:f,rate:u||void 0,estimated:u&&c&&l?(c-i)/u:void 0,event:o,lengthComputable:c!=null,[t?"download":"upload"]:!0};e(d)},n)},rt=(e,t)=>{const n=e!=null;return[r=>t[0]({lengthComputable:n,total:e,loaded:r}),t[1]]},st=e=>(...t)=>a.asap(()=>e(...t)),Un=O.hasStandardBrowserEnv?function(){const t=O.navigator&&/(msie|trident)/i.test(O.navigator.userAgent),n=document.createElement("a");let r;function s(o){let i=o;return t&&(n.setAttribute("href",i),i=n.href),n.setAttribute("href",i),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:n.pathname.charAt(0)==="/"?n.pathname:"/"+n.pathname}}return r=s(window.location.href),function(i){const c=a.isString(i)?s(i):i;return c.protocol===r.protocol&&c.host===r.host}}():function(){return function(){return!0}}(),Ln=O.hasStandardBrowserEnv?{write(e,t,n,r,s,o){const i=[e+"="+encodeURIComponent(t)];a.isNumber(n)&&i.push("expires="+new Date(n).toGMTString()),a.isString(r)&&i.push("path="+r),a.isString(s)&&i.push("domain="+s),o===!0&&i.push("secure"),document.cookie=i.join("; ")},read(e){const t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove(e){this.write(e,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Fn(e){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(e)}function Dn(e,t){return t?e.replace(/\/?\/$/,"")+"/"+t.replace(/^\/+/,""):e}function ot(e,t){return e&&!Fn(t)?Dn(e,t):t}const it=e=>e instanceof _?{...e}:e;function I(e,t){t=t||{};const n={};function r(u,l,d){return a.isPlainObject(u)&&a.isPlainObject(l)?a.merge.call({caseless:d},u,l):a.isPlainObject(l)?a.merge({},l):a.isArray(l)?l.slice():l}function s(u,l,d){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u,d)}else return r(u,l,d)}function o(u,l){if(!a.isUndefined(l))return r(void 0,l)}function i(u,l){if(a.isUndefined(l)){if(!a.isUndefined(u))return r(void 0,u)}else return r(void 0,l)}function c(u,l,d){if(d in t)return r(u,l);if(d in e)return r(void 0,u)}const f={url:o,method:o,data:o,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:c,headers:(u,l)=>s(it(u),it(l),!0)};return a.forEach(Object.keys(Object.assign({},e,t)),function(l){const d=f[l]||s,w=d(e[l],t[l],l);a.isUndefined(w)&&d!==c||(n[l]=w)}),n}const at=e=>{const t=I({},e);let{data:n,withXSRFToken:r,xsrfHeaderName:s,xsrfCookieName:o,headers:i,auth:c}=t;t.headers=i=_.from(i),t.url=Ge(ot(t.baseURL,t.url),e.params,e.paramsSerializer),c&&i.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):"")));let f;if(a.isFormData(n)){if(O.hasStandardBrowserEnv||O.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((f=i.getContentType())!==!1){const[u,...l]=f?f.split(";").map(d=>d.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(O.hasStandardBrowserEnv&&(r&&a.isFunction(r)&&(r=r(t)),r||r!==!1&&Un(t.url))){const u=s&&o&&Ln.read(o);u&&i.set(s,u)}return t},Bn=typeof XMLHttpRequest<"u"&&function(e){return new Promise(function(n,r){const s=at(e);let o=s.data;const i=_.from(s.headers).normalize();let{responseType:c,onUploadProgress:f,onDownloadProgress:u}=s,l,d,w,E,h;function g(){E&&E(),h&&h(),s.cancelToken&&s.cancelToken.unsubscribe(l),s.signal&&s.signal.removeEventListener("abort",l)}let p=new XMLHttpRequest;p.open(s.method.toUpperCase(),s.url,!0),p.timeout=s.timeout;function b(){if(!p)return;const C=_.from("getAllResponseHeaders"in p&&p.getAllResponseHeaders()),P={data:!c||c==="text"||c==="json"?p.responseText:p.response,status:p.status,statusText:p.statusText,headers:C,config:e,request:p};nt(function(j){n(j),g()},function(j){r(j),g()},P),p=null}"onloadend"in p?p.onloadend=b:p.onreadystatechange=function(){!p||p.readyState!==4||p.status===0&&!(p.responseURL&&p.responseURL.indexOf("file:")===0)||setTimeout(b)},p.onabort=function(){p&&(r(new m("Request aborted",m.ECONNABORTED,e,p)),p=null)},p.onerror=function(){r(new m("Network Error",m.ERR_NETWORK,e,p)),p=null},p.ontimeout=function(){let L=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const P=s.transitional||Qe;s.timeoutErrorMessage&&(L=s.timeoutErrorMessage),r(new m(L,P.clarifyTimeoutError?m.ETIMEDOUT:m.ECONNABORTED,e,p)),p=null},o===void 0&&i.setContentType(null),"setRequestHeader"in p&&a.forEach(i.toJSON(),function(L,P){p.setRequestHeader(P,L)}),a.isUndefined(s.withCredentials)||(p.withCredentials=!!s.withCredentials),c&&c!=="json"&&(p.responseType=s.responseType),u&&([w,h]=se(u,!0),p.addEventListener("progress",w)),f&&p.upload&&([d,E]=se(f),p.upload.addEventListener("progress",d),p.upload.addEventListener("loadend",E)),(s.cancelToken||s.signal)&&(l=C=>{p&&(r(!C||C.type?new V(null,e,p):C),p.abort(),p=null)},s.cancelToken&&s.cancelToken.subscribe(l),s.signal&&(s.signal.aborted?l():s.signal.addEventListener("abort",l)));const S=Pn(s.url);if(S&&O.protocols.indexOf(S)===-1){r(new m("Unsupported protocol "+S+":",m.ERR_BAD_REQUEST,e));return}p.send(o||null)})},vn=(e,t)=>{const{length:n}=e=e?e.filter(Boolean):[];if(t||n){let r=new AbortController,s;const o=function(u){if(!s){s=!0,c();const l=u instanceof Error?u:this.reason;r.abort(l instanceof m?l:new V(l instanceof Error?l.message:l))}};let i=t&&setTimeout(()=>{i=null,o(new m(`timeout ${t} of ms exceeded`,m.ETIMEDOUT))},t);const c=()=>{e&&(i&&clearTimeout(i),i=null,e.forEach(u=>{u.unsubscribe?u.unsubscribe(o):u.removeEventListener("abort",o)}),e=null)};e.forEach(u=>u.addEventListener("abort",o));const{signal:f}=r;return f.unsubscribe=()=>a.asap(c),f}},In=function*(e,t){let n=e.byteLength;if(n<t){yield e;return}let r=0,s;for(;r<n;)s=r+t,yield e.slice(r,s),r=s},kn=async function*(e,t){for await(const n of qn(e))yield*In(n,t)},qn=async function*(e){if(e[Symbol.asyncIterator]){yield*e;return}const t=e.getReader();try{for(;;){const{done:n,value:r}=await t.read();if(n)break;yield r}}finally{await t.cancel()}},ct=(e,t,n,r)=>{const s=kn(e,t);let o=0,i,c=f=>{i||(i=!0,r&&r(f))};return new ReadableStream({async pull(f){try{const{done:u,value:l}=await s.next();if(u){c(),f.close();return}let d=l.byteLength;if(n){let w=o+=d;n(w)}f.enqueue(new Uint8Array(l))}catch(u){throw c(u),u}},cancel(f){return c(f),s.return()}},{highWaterMark:2})},oe=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",ut=oe&&typeof ReadableStream=="function",jn=oe&&(typeof TextEncoder=="function"?(e=>t=>e.encode(t))(new TextEncoder):async e=>new Uint8Array(await new Response(e).arrayBuffer())),lt=(e,...t)=>{try{return!!e(...t)}catch{return!1}},$n=ut&&lt(()=>{let e=!1;const t=new Request(O.origin,{body:new ReadableStream,method:"POST",get duplex(){return e=!0,"half"}}).headers.has("Content-Type");return e&&!t}),ft=64*1024,Ee=ut&&lt(()=>a.isReadableStream(new Response("").body)),ie={stream:Ee&&(e=>e.body)};oe&&(e=>{["text","arrayBuffer","blob","formData","stream"].forEach(t=>{!ie[t]&&(ie[t]=a.isFunction(e[t])?n=>n[t]():(n,r)=>{throw new m(`Response type '${t}' is not supported`,m.ERR_NOT_SUPPORT,r)})})})(new Response);const Hn=async e=>{if(e==null)return 0;if(a.isBlob(e))return e.size;if(a.isSpecCompliantForm(e))return(await new Request(O.origin,{method:"POST",body:e}).arrayBuffer()).byteLength;if(a.isArrayBufferView(e)||a.isArrayBuffer(e))return e.byteLength;if(a.isURLSearchParams(e)&&(e=e+""),a.isString(e))return(await jn(e)).byteLength},Vn=async(e,t)=>{const n=a.toFiniteNumber(e.getContentLength());return n??Hn(t)},Se={http:ln,xhr:Bn,fetch:oe&&(async e=>{let{url:t,method:n,data:r,signal:s,cancelToken:o,timeout:i,onDownloadProgress:c,onUploadProgress:f,responseType:u,headers:l,withCredentials:d="same-origin",fetchOptions:w}=at(e);u=u?(u+"").toLowerCase():"text";let E=vn([s,o&&o.toAbortSignal()],i),h;const g=E&&E.unsubscribe&&(()=>{E.unsubscribe()});let p;try{if(f&&$n&&n!=="get"&&n!=="head"&&(p=await Vn(l,r))!==0){let P=new Request(t,{method:"POST",body:r,duplex:"half"}),B;if(a.isFormData(r)&&(B=P.headers.get("content-type"))&&l.setContentType(B),P.body){const[j,le]=rt(p,se(st(f)));r=ct(P.body,ft,j,le)}}a.isString(d)||(d=d?"include":"omit");const b="credentials"in Request.prototype;h=new Request(t,{...w,signal:E,method:n.toUpperCase(),headers:l.normalize().toJSON(),body:r,duplex:"half",credentials:b?d:void 0});let S=await fetch(h);const C=Ee&&(u==="stream"||u==="response");if(Ee&&(c||C&&g)){const P={};["status","statusText","headers"].forEach(Rt=>{P[Rt]=S[Rt]});const B=a.toFiniteNumber(S.headers.get("content-length")),[j,le]=c&&rt(B,se(st(c),!0))||[];S=new Response(ct(S.body,ft,j,()=>{le&&le(),g&&g()}),P)}u=u||"text";let L=await ie[a.findKey(ie,u)||"text"](S,e);return!C&&g&&g(),await new Promise((P,B)=>{nt(P,B,{data:L,headers:_.from(S.headers),status:S.status,statusText:S.statusText,config:e,request:h})})}catch(b){throw g&&g(),b&&b.name==="TypeError"&&/fetch/i.test(b.message)?Object.assign(new m("Network Error",m.ERR_NETWORK,e,h),{cause:b.cause||b}):m.from(b,b&&b.code,e,h)}})};a.forEach(Se,(e,t)=>{if(e){try{Object.defineProperty(e,"name",{value:t})}catch{}Object.defineProperty(e,"adapterName",{value:t})}});const dt=e=>`- ${e}`,zn=e=>a.isFunction(e)||e===null||e===!1,ht={getAdapter:e=>{e=a.isArray(e)?e:[e];const{length:t}=e;let n,r;const s={};for(let o=0;o<t;o++){n=e[o];let i;if(r=n,!zn(n)&&(r=Se[(i=String(n)).toLowerCase()],r===void 0))throw new m(`Unknown adapter '${i}'`);if(r)break;s[i||"#"+o]=r}if(!r){const o=Object.entries(s).map(([c,f])=>`adapter ${c} `+(f===!1?"is not supported by the environment":"is not available in the build"));let i=t?o.length>1?`since :
4
4
  `+o.map(dt).join(`
5
5
  `):" "+dt(o[0]):"as no adapter specified";throw new m("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return r},adapters:Se};function Ce(e){if(e.cancelToken&&e.cancelToken.throwIfRequested(),e.signal&&e.signal.aborted)throw new V(null,e)}function pt(e){return Ce(e),e.headers=_.from(e.headers),e.data=be.call(e,e.transformRequest),["post","put","patch"].indexOf(e.method)!==-1&&e.headers.setContentType("application/x-www-form-urlencoded",!1),ht.getAdapter(e.adapter||X.adapter)(e).then(function(r){return Ce(e),r.data=be.call(e,e.transformResponse,r),r.headers=_.from(r.headers),r},function(r){return tt(r)||(Ce(e),r&&r.response&&(r.response.data=be.call(e,e.transformResponse,r.response),r.response.headers=_.from(r.response.headers))),Promise.reject(r)})}const mt="1.7.7",Re={};["object","boolean","number","function","string","symbol"].forEach((e,t)=>{Re[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}});const gt={};Re.transitional=function(t,n,r){function s(o,i){return"[Axios v"+mt+"] Transitional option '"+o+"'"+i+(r?". "+r:"")}return(o,i,c)=>{if(t===!1)throw new m(s(i," has been removed"+(n?" in "+n:"")),m.ERR_DEPRECATED);return n&&!gt[i]&&(gt[i]=!0,console.warn(s(i," has been deprecated since v"+n+" and will be removed in the near future"))),t?t(o,i,c):!0}};function Kn(e,t,n){if(typeof e!="object")throw new m("options must be an object",m.ERR_BAD_OPTION_VALUE);const r=Object.keys(e);let s=r.length;for(;s-- >0;){const o=r[s],i=t[o];if(i){const c=e[o],f=c===void 0||i(c,o,e);if(f!==!0)throw new m("option "+o+" must be "+f,m.ERR_BAD_OPTION_VALUE);continue}if(n!==!0)throw new m("Unknown option "+o,m.ERR_BAD_OPTION)}}const Ae={assertOptions:Kn,validators:Re},F=Ae.validators;let k=class{constructor(t){this.defaults=t,this.interceptors={request:new Ye,response:new Ye}}async request(t,n){try{return await this._request(t,n)}catch(r){if(r instanceof Error){let s;Error.captureStackTrace?Error.captureStackTrace(s={}):s=new Error;const o=s.stack?s.stack.replace(/^.+\n/,""):"";try{r.stack?o&&!String(r.stack).endsWith(o.replace(/^.+\n.+\n/,""))&&(r.stack+=`
6
- `+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=I(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&Ae.assertOptions(r,{silentJSONParsing:F.transitional(F.boolean),forcedJSONParsing:F.transitional(F.boolean),clarifyTimeoutError:F.transitional(F.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:Ae.assertOptions(s,{encode:F.function,serialize:F.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","common"],h=>{delete o[h]}),n.headers=_.concat(i,o);const c=[];let f=!0;this.interceptors.request.forEach(function(g){typeof g.runWhen=="function"&&g.runWhen(n)===!1||(f=f&&g.synchronous,c.unshift(g.fulfilled,g.rejected))});const u=[];this.interceptors.response.forEach(function(g){u.push(g.fulfilled,g.rejected)});let l,d=0,w;if(!f){const h=[pt.bind(this),void 0];for(h.unshift.apply(h,c),h.push.apply(h,u),w=h.length,l=Promise.resolve(n);d<w;)l=l.then(h[d++],h[d++]);return l}w=c.length;let E=n;for(d=0;d<w;){const h=c[d++],g=c[d++];try{E=h(E)}catch(p){g.call(this,p);break}}try{l=pt.call(this,E)}catch(h){return Promise.reject(h)}for(d=0,w=u.length;d<w;)l=l.then(u[d++],u[d++]);return l}getUri(t){t=I(this.defaults,t);const n=ot(t.baseURL,t.url);return Ge(n,t.params,t.paramsSerializer)}};a.forEach(["delete","get","head","options"],function(t){k.prototype[t]=function(n,r){return this.request(I(r||{},{method:t,url:n,data:(r||{}).data}))}}),a.forEach(["post","put","patch"],function(t){function n(r){return function(o,i,c){return this.request(I(c||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:o,data:i}))}}k.prototype[t]=n(),k.prototype[t+"Form"]=n(!0)});let Jn=class At{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(o){n=o});const r=this;this.promise.then(s=>{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new V(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new At(function(s){t=s}),cancel:t}}};function Mn(e){return function(n){return e.apply(null,n)}}function Wn(e){return a.isObject(e)&&e.isAxiosError===!0}const Te={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Te).forEach(([e,t])=>{Te[t]=e});function yt(e){const t=new k(e),n=T(k.prototype.request,t);return a.extend(n,k.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return yt(I(e,s))},n}const y=yt(X);y.Axios=k,y.CanceledError=V,y.CancelToken=Jn,y.isCancel=tt,y.VERSION=mt,y.toFormData=ne,y.AxiosError=m,y.Cancel=y.CanceledError,y.all=function(t){return Promise.all(t)},y.spread=Mn,y.isAxiosError=Wn,y.mergeConfig=I,y.AxiosHeaders=_,y.formToJSON=e=>Ze(a.isHTMLForm(e)?new FormData(e):e),y.getAdapter=ht.getAdapter,y.HttpStatusCode=Te,y.default=y;const{Axios:Wr,AxiosError:ae,CanceledError:Xr,isCancel:Gr,CancelToken:Yr,VERSION:Qr,all:Zr,Cancel:es,isAxiosError:ts,spread:ns,toFormData:rs,AxiosHeaders:ss,HttpStatusCode:os,formToJSON:is,getAdapter:as,mergeConfig:cs}=y;class Oe extends Error{constructor(n){super(n.join(", "));R(this,"errors");this.name="ValidationError",this.errors=n}}class _e extends Error{constructor(n){super("Address already registered.");R(this,"address");this.name="AddressInUseError",this.address=n}}class Pe extends Error{constructor(n){super("Code already registered.");R(this,"code");this.name="CodeInUseError",this.code=n}}class xe extends Error{constructor(){super("Invalid signature provided"),this.name="InvalidSignatureError"}}class Xn{constructor(t){R(this,"httpClient");R(this,"_debug");this.httpClient=t.httpClient,this._debug=t.debug}async create(t,n,r,s){var o;try{await this.httpClient.post("/affiliates",{address:t,name:n,code:n,signature:r,account_chain_id:s})}catch(i){if(i instanceof ae){const c=(o=i.response)==null?void 0:o.data;if(typeof(c==null?void 0:c.message)=="string"){const f=c.message.toLowerCase();throw f=="invalid signature"?new xe:f=="address in use"?new _e(t):f=="code in use"?new Pe(n):new Error(f)}else if((c==null?void 0:c.message)instanceof Array)throw new Oe(c.message)}throw i}}async update(t,n,r,s){var o;try{await this.httpClient.post(`/affiliates/${t}`,{code:n,address:t,signature:r,account_chain_id:s})}catch(i){if(i instanceof ae){const c=(o=i.response)==null?void 0:o.data;if(typeof(c==null?void 0:c.message)=="string"){const f=c.message.toLowerCase();throw f=="invalid signature"?new xe:f=="address in use"?new _e(t):f=="code in use"?new Pe(n):new Error(f)}else if((c==null?void 0:c.message)instanceof Array)throw new Oe(c.message)}throw i}}async isCodeFree(t){var n;try{return await this.httpClient.get(`/affiliates/codes/${t}`),!1}catch(r){if(r instanceof ae&&((n=r.response)==null?void 0:n.status)===404)return!0;throw console.error("Fuul SDK: Could not check affiliate code",r),r}}async getCode(t){var n;try{return(await this.httpClient.get(`/affiliates/${t}`)).data.code}catch(r){if(r instanceof ae&&((n=r.response)==null?void 0:n.status)===404)return null;throw console.error("Fuul SDK: Could not get affiliate code",r),r}}}const Gn="/audiences";class Yn{constructor(t){R(this,"httpClient");R(this,"_debug");this.httpClient=t.httpClient,this._debug=t.debug}async getUserAudiences(t){return(await this.httpClient.get(`${Gn}/user`,t)).data}}class Qn{constructor(t){R(this,"httpClient");this.httpClient=t.httpClient}async getAll(t){const{data:n}=await this.httpClient.get("conversions",t);return n}}const wt="fuul.sent",Zn=60;class er{constructor(t){R(this,"debug");R(this,"httpClient");this.httpClient=t.httpClient,this.debug=!!t.debug}async sendEvent(t){if(this.isDuplicate(t)){this.debug&&console.debug("Fuul SDK: Event is considered duplicate and will not be sent");return}await this.httpClient.post("events",t),this.debug&&console.debug(`Fuul SDK: Sent '${t.name}' event`),this.saveSentEvent(t)}isDuplicate(t){const n=`${wt}_${t.name}`,r=localStorage.getItem(n);if(!r)return!1;const s=JSON.parse(r);if(this.getCurrentTimestamp()-s.timestamp>Zn)return!1;let f=!1;t.metadata&&(f=s.metadata.tracking_id===t.metadata.tracking_id&&s.metadata.project_id===t.metadata.project_id&&s.metadata.referrer===t.metadata.referrer&&s.metadata.source===t.metadata.source&&s.metadata.category===t.metadata.category&&s.metadata.title===t.metadata.title&&s.metadata.tag===t.metadata.tag&&s.user_address===t.user_address&&s.signature===t.signature&&s.signature_message===t.signature_message);let u=!1;return t.args&&s.args&&(u=s.args.page===t.args.page),u&&f}getCurrentTimestamp(){return Date.now()/1e3}saveSentEvent(t){const n=`${wt}_${t.name}`,r=this.getCurrentTimestamp(),s={...t,timestamp:r};localStorage.setItem(n,JSON.stringify(s))}}const tr={version:"4.11.6"};class nr{constructor(t){R(this,"client");R(this,"queryParams");this.client=y.create({...t,headers:{Authorization:`Bearer ${t.apiKey}`,"X-Fuul-Sdk-Version":tr.version}}),this.queryParams=t.queryParams?this.buildQueryParams(t.queryParams):""}buildQueryParams(t){let n="";return Object.keys(t).forEach(r=>{n=n===""?n+`?${r}=${t[r]}`:n+`&${r}=${t[r]}`}),n}async get(t,n){return this.client.get(t+this.queryParams,{params:n})}async post(t,n){return this.client.post(t+this.queryParams,n)}async put(t,n){return this.client.put(t+this.queryParams,n)}async delete(t){return this.client.delete(t+this.queryParams)}}class rr{constructor(t){R(this,"httpClient");this.httpClient=t.httpClient}async getPayoutsLeaderboard(t){return(await this.httpClient.get("/payouts/leaderboard/payouts",t)).data}async getPointsLeaderboard(t){return(await this.httpClient.get("/payouts/leaderboard/points",t)).data}async getReferredUsersLeaderboard(t){return(await this.httpClient.get("/leaderboard/referred",t)).data}}const Y="/payouts";class sr{constructor(t){R(this,"httpClient");R(this,"_debug");this.httpClient=t.httpClient,this._debug=t.debug}async getUserPayoutsByConversion(t){return(await this.httpClient.get(Y,{...t,type:"onchain-currency"})).data}async getUserPointsByConversion(t){return(await this.httpClient.get(Y,{...t,type:"point"})).data}async getUserPayoutMovements(t){return(await this.httpClient.get(`${Y}/movements`,{...t,type:"onchain-currency"})).data}async getUserPointsMovements(t){return(await this.httpClient.get(`${Y}/movements`,{...t,type:"point"})).data}async getVolumeLeaderboard(t){return(await this.httpClient.get(`${Y}/leaderboard/volume`,t)).data}}let or=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,n)=>(n&=63,n<36?t+=n.toString(36):n<62?t+=(n-26).toString(36).toUpperCase():n>62?t+="-":t+="_",t),"");const ir="fuul.tracking_id",Ne=()=>dr(ir,()=>or()),bt=()=>z("af")||z("referrer"),ar=()=>document.referrer,cr=()=>hr(),ur=()=>z("category"),lr=()=>z("title"),fr=()=>z("tag"),dr=(e,t)=>{const n=localStorage.getItem(e);if(n)return n;{const r=t();return r?localStorage.setItem(e,r):localStorage.removeItem(e),r}},z=e=>new URLSearchParams(window.location.search).get(e),hr=()=>{const e=z("source");if(e)return e},pr="/user";class mr{constructor(t){R(this,"httpClient");this.httpClient=t.httpClient}async getUserAffiliates(t){return(await this.httpClient.get(pr,t)).data.affiliates}}const gr="https://api.fuul.xyz/api/v1/";let q=!1,Ue=!1,Le,D,Et,St,K,ce,J,Ct,ue;function yr(e){q=!!e.debug,!Ue&&(Le=e.apiKey,Ir(),D=kr(e.baseApiUrl??gr,e.defaultQueryParams??{}),Et=new Qn({httpClient:D,debug:q}),ce=new er({httpClient:D,debug:q}),K=new Xn({httpClient:D,debug:q}),J=new sr({httpClient:D,debug:q}),St=new mr({httpClient:D}),Ct=new Yn({httpClient:D,debug:q}),ue=new rr({httpClient:D}),Ue=!0,q&&console.debug("Fuul SDK: init() complete"))}function U(){if(!Ue)throw new Error("Fuul SDK: You need to call init() to initialize the library before using any methods")}async function wr(e,t){U(),Fe(),De();const n={name:e,args:t??{},metadata:{tracking_id:Ne()}};await ce.sendEvent(n)}async function br(e){U(),Fe(),De();const t={name:"pageview",args:{page:e??document.location.pathname,locationOrigin:document.location.origin},metadata:{tracking_id:Ne(),referrer_url:ar(),source:cr(),affiliate_id:bt()??void 0,referrer:bt()??void 0,category:ur()??void 0,title:lr()??void 0,tag:fr()??void 0}};await ce.sendEvent(t)}async function Er(e){U(),Fe(),De();const t={name:"connect_wallet",args:{page:document.location.pathname,locationOrigin:document.location.origin},metadata:{tracking_id:Ne()}};e!=null&&e.address&&(t.user_address=e.address),e!=null&&e.signature&&(t.signature=e==null?void 0:e.signature,t.signature_message=e==null?void 0:e.message),e!=null&&e.accountChainId&&(t.account_chain_id=e.accountChainId),await ce.sendEvent(t)}async function Sr(e){U(),await K.create(e.address,e.code,e.signature,e.accountChainId)}async function Cr(e){U(),await K.update(e.address,e.code,e.signature,e.accountChainId)}async function Rr(e){return U(),await K.getCode(e)}async function Ar(e){return U(),await K.isCodeFree(e)}async function Tr(e,t,n){U();const r=await K.getCode(t),s=new URLSearchParams({af:r??t});return n!=null&&n.title&&s.append("af_title",n.title),n!=null&&n.format&&s.append("af_format",n.format),n!=null&&n.place&&s.append("af_place",n.place),`${e}?${s.toString()}`}function Or(e){return ue.getPayoutsLeaderboard(e)}function _r(e){return ue.getPointsLeaderboard(e)}function Pr(e){return ue.getReferredUsersLeaderboard(e)}function xr(e){return J.getVolumeLeaderboard(e)}function Nr(e){return J.getUserPayoutsByConversion(e)}function Ur(e){return J.getUserPointsByConversion(e)}function Lr(e){return J.getUserPayoutMovements(e)}function Fr(e){return J.getUserPointsMovements(e)}async function Dr(e){return U(),Et.getAll(e)}async function Br(e){return U(),St.getUserAffiliates(e)}async function vr(e){return U(),Ct.getUserAudiences(e)}function Fe(){if(typeof window>"u"||typeof document>"u")throw new Error("Fuul SDK: Browser context required")}function De(){if(navigator.webdriver)throw new Error("Fuul SDK: You are using a browser automation tool")}function Ir(){if(!Le)throw new Error("Fuul SDK: Invalid API key")}function kr(e,t){return new nr({baseURL:e,timeout:1e4,apiKey:Le,queryParams:t})}const qr={init:yr,sendEvent:wr,sendPageview:br,sendConnectWallet:Er,generateTrackingLink:Tr,getConversions:Dr,createAffiliateCode:Sr,updateAffiliateCode:Cr,getAffiliateCode:Rr,isAffiliateCodeFree:Ar,getPayoutsLeaderboard:Or,getPointsLeaderboard:_r,getReferredUsersLeaderboard:Pr,getUserAudiences:vr,getUserPayoutsByConversion:Nr,getUserPointsByConversion:Ur,getUserPointsMovements:Fr,getUserPayoutMovements:Lr,getUserAffiliates:Br,getVolumeLeaderboard:xr};A.AddressInUseError=_e,A.CodeInUseError=Pe,A.Fuul=qr,A.InvalidSignatureError=xe,A.ValidationError=Oe,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
6
+ `+o):r.stack=o}catch{}}throw r}}_request(t,n){typeof t=="string"?(n=n||{},n.url=t):n=t||{},n=I(this.defaults,n);const{transitional:r,paramsSerializer:s,headers:o}=n;r!==void 0&&Ae.assertOptions(r,{silentJSONParsing:F.transitional(F.boolean),forcedJSONParsing:F.transitional(F.boolean),clarifyTimeoutError:F.transitional(F.boolean)},!1),s!=null&&(a.isFunction(s)?n.paramsSerializer={serialize:s}:Ae.assertOptions(s,{encode:F.function,serialize:F.function},!0)),n.method=(n.method||this.defaults.method||"get").toLowerCase();let i=o&&a.merge(o.common,o[n.method]);o&&a.forEach(["delete","get","head","post","put","patch","common"],h=>{delete o[h]}),n.headers=_.concat(i,o);const c=[];let f=!0;this.interceptors.request.forEach(function(g){typeof g.runWhen=="function"&&g.runWhen(n)===!1||(f=f&&g.synchronous,c.unshift(g.fulfilled,g.rejected))});const u=[];this.interceptors.response.forEach(function(g){u.push(g.fulfilled,g.rejected)});let l,d=0,w;if(!f){const h=[pt.bind(this),void 0];for(h.unshift.apply(h,c),h.push.apply(h,u),w=h.length,l=Promise.resolve(n);d<w;)l=l.then(h[d++],h[d++]);return l}w=c.length;let E=n;for(d=0;d<w;){const h=c[d++],g=c[d++];try{E=h(E)}catch(p){g.call(this,p);break}}try{l=pt.call(this,E)}catch(h){return Promise.reject(h)}for(d=0,w=u.length;d<w;)l=l.then(u[d++],u[d++]);return l}getUri(t){t=I(this.defaults,t);const n=ot(t.baseURL,t.url);return Ge(n,t.params,t.paramsSerializer)}};a.forEach(["delete","get","head","options"],function(t){k.prototype[t]=function(n,r){return this.request(I(r||{},{method:t,url:n,data:(r||{}).data}))}}),a.forEach(["post","put","patch"],function(t){function n(r){return function(o,i,c){return this.request(I(c||{},{method:t,headers:r?{"Content-Type":"multipart/form-data"}:{},url:o,data:i}))}}k.prototype[t]=n(),k.prototype[t+"Form"]=n(!0)});let Jn=class At{constructor(t){if(typeof t!="function")throw new TypeError("executor must be a function.");let n;this.promise=new Promise(function(o){n=o});const r=this;this.promise.then(s=>{if(!r._listeners)return;let o=r._listeners.length;for(;o-- >0;)r._listeners[o](s);r._listeners=null}),this.promise.then=s=>{let o;const i=new Promise(c=>{r.subscribe(c),o=c}).then(s);return i.cancel=function(){r.unsubscribe(o)},i},t(function(o,i,c){r.reason||(r.reason=new V(o,i,c),n(r.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(t){if(this.reason){t(this.reason);return}this._listeners?this._listeners.push(t):this._listeners=[t]}unsubscribe(t){if(!this._listeners)return;const n=this._listeners.indexOf(t);n!==-1&&this._listeners.splice(n,1)}toAbortSignal(){const t=new AbortController,n=r=>{t.abort(r)};return this.subscribe(n),t.signal.unsubscribe=()=>this.unsubscribe(n),t.signal}static source(){let t;return{token:new At(function(s){t=s}),cancel:t}}};function Mn(e){return function(n){return e.apply(null,n)}}function Wn(e){return a.isObject(e)&&e.isAxiosError===!0}const Te={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(Te).forEach(([e,t])=>{Te[t]=e});function yt(e){const t=new k(e),n=T(k.prototype.request,t);return a.extend(n,k.prototype,t,{allOwnKeys:!0}),a.extend(n,t,null,{allOwnKeys:!0}),n.create=function(s){return yt(I(e,s))},n}const y=yt(X);y.Axios=k,y.CanceledError=V,y.CancelToken=Jn,y.isCancel=tt,y.VERSION=mt,y.toFormData=ne,y.AxiosError=m,y.Cancel=y.CanceledError,y.all=function(t){return Promise.all(t)},y.spread=Mn,y.isAxiosError=Wn,y.mergeConfig=I,y.AxiosHeaders=_,y.formToJSON=e=>Ze(a.isHTMLForm(e)?new FormData(e):e),y.getAdapter=ht.getAdapter,y.HttpStatusCode=Te,y.default=y;const{Axios:Wr,AxiosError:ae,CanceledError:Xr,isCancel:Gr,CancelToken:Yr,VERSION:Qr,all:Zr,Cancel:es,isAxiosError:ts,spread:ns,toFormData:rs,AxiosHeaders:ss,HttpStatusCode:os,formToJSON:is,getAdapter:as,mergeConfig:cs}=y;class Oe extends Error{constructor(n){super(n.join(", "));R(this,"errors");this.name="ValidationError",this.errors=n}}class _e extends Error{constructor(n){super("Address already registered.");R(this,"address");this.name="AddressInUseError",this.address=n}}class Pe extends Error{constructor(n){super("Code already registered.");R(this,"code");this.name="CodeInUseError",this.code=n}}class xe extends Error{constructor(){super("Invalid signature provided"),this.name="InvalidSignatureError"}}class Xn{constructor(t){R(this,"httpClient");R(this,"_debug");this.httpClient=t.httpClient,this._debug=t.debug}async create(t,n,r,s){var o;try{await this.httpClient.post("/affiliates",{address:t,name:n,code:n,signature:r,account_chain_id:s})}catch(i){if(i instanceof ae){const c=(o=i.response)==null?void 0:o.data;if(typeof(c==null?void 0:c.message)=="string"){const f=c.message.toLowerCase();throw f=="invalid signature"?new xe:f=="address in use"?new _e(t):f=="code in use"?new Pe(n):new Error(f)}else if((c==null?void 0:c.message)instanceof Array)throw new Oe(c.message)}throw i}}async update(t,n,r,s){var o;try{await this.httpClient.post(`/affiliates/${t}`,{code:n,address:t,signature:r,account_chain_id:s})}catch(i){if(i instanceof ae){const c=(o=i.response)==null?void 0:o.data;if(typeof(c==null?void 0:c.message)=="string"){const f=c.message.toLowerCase();throw f=="invalid signature"?new xe:f=="address in use"?new _e(t):f=="code in use"?new Pe(n):new Error(f)}else if((c==null?void 0:c.message)instanceof Array)throw new Oe(c.message)}throw i}}async isCodeFree(t){var n;try{return await this.httpClient.get(`/affiliates/codes/${t}`),!1}catch(r){if(r instanceof ae&&((n=r.response)==null?void 0:n.status)===404)return!0;throw console.error("Fuul SDK: Could not check affiliate code",r),r}}async getCode(t){var n;try{return(await this.httpClient.get(`/affiliates/${t}`)).data.code}catch(r){if(r instanceof ae&&((n=r.response)==null?void 0:n.status)===404)return null;throw console.error("Fuul SDK: Could not get affiliate code",r),r}}}const Gn="/audiences";class Yn{constructor(t){R(this,"httpClient");R(this,"_debug");this.httpClient=t.httpClient,this._debug=t.debug}async getUserAudiences(t){return(await this.httpClient.get(`${Gn}/user`,t)).data}}class Qn{constructor(t){R(this,"httpClient");this.httpClient=t.httpClient}async getAll(t){const{data:n}=await this.httpClient.get("conversions",t);return n}}const wt="fuul.sent",Zn=60;class er{constructor(t){R(this,"debug");R(this,"httpClient");this.httpClient=t.httpClient,this.debug=!!t.debug}async sendEvent(t,n){if(this.isDuplicate(t)){this.debug&&console.debug("Fuul SDK: Event is considered duplicate and will not be sent");return}if(!n||!Array.isArray(n)||n.length===0)await this.httpClient.post("events",t);else for(const r of n){const s=structuredClone({...t,project_id:r});s.metadata.project_id=r,await this.httpClient.post("events",s)}this.debug&&console.debug(`Fuul SDK: Sent '${t.name}' event`),this.saveSentEvent(t)}isDuplicate(t){const n=`${wt}_${t.name}`,r=localStorage.getItem(n);if(!r)return!1;const s=JSON.parse(r);if(this.getCurrentTimestamp()-s.timestamp>Zn)return!1;let f=!1;t.metadata&&(f=s.metadata.tracking_id===t.metadata.tracking_id&&s.metadata.project_id===t.metadata.project_id&&s.metadata.referrer===t.metadata.referrer&&s.metadata.source===t.metadata.source&&s.metadata.category===t.metadata.category&&s.metadata.title===t.metadata.title&&s.metadata.tag===t.metadata.tag&&s.user_address===t.user_address&&s.signature===t.signature&&s.signature_message===t.signature_message);let u=!1;return t.args&&s.args&&(u=s.args.page===t.args.page),u&&f}getCurrentTimestamp(){return Date.now()/1e3}saveSentEvent(t){const n=`${wt}_${t.name}`,r=this.getCurrentTimestamp(),s={...t,timestamp:r};localStorage.setItem(n,JSON.stringify(s))}}const tr={version:"4.12.1"};class nr{constructor(t){R(this,"client");R(this,"queryParams");this.client=y.create({...t,headers:{Authorization:`Bearer ${t.apiKey}`,"X-Fuul-Sdk-Version":tr.version}}),this.queryParams=t.queryParams?this.buildQueryParams(t.queryParams):""}buildQueryParams(t){let n="";return Object.keys(t).forEach(r=>{n=n===""?n+`?${r}=${t[r]}`:n+`&${r}=${t[r]}`}),n}async get(t,n){return this.client.get(t+this.queryParams,{params:n})}async post(t,n){return this.client.post(t+this.queryParams,n)}async put(t,n){return this.client.put(t+this.queryParams,n)}async delete(t){return this.client.delete(t+this.queryParams)}}class rr{constructor(t){R(this,"httpClient");this.httpClient=t.httpClient}async getPayoutsLeaderboard(t){return(await this.httpClient.get("/payouts/leaderboard/payouts",t)).data}async getPointsLeaderboard(t){return(await this.httpClient.get("/payouts/leaderboard/points",t)).data}async getReferredUsersLeaderboard(t){return(await this.httpClient.get("/leaderboard/referred",t)).data}}const Y="/payouts";class sr{constructor(t){R(this,"httpClient");R(this,"_debug");this.httpClient=t.httpClient,this._debug=t.debug}async getUserPayoutsByConversion(t){return(await this.httpClient.get(Y,{...t,type:"onchain-currency"})).data}async getUserPointsByConversion(t){return(await this.httpClient.get(Y,{...t,type:"point"})).data}async getUserPayoutMovements(t){return(await this.httpClient.get(`${Y}/movements`,{...t,type:"onchain-currency"})).data}async getUserPointsMovements(t){return(await this.httpClient.get(`${Y}/movements`,{...t,type:"point"})).data}async getVolumeLeaderboard(t){return(await this.httpClient.get(`${Y}/leaderboard/volume`,t)).data}}let or=(e=21)=>crypto.getRandomValues(new Uint8Array(e)).reduce((t,n)=>(n&=63,n<36?t+=n.toString(36):n<62?t+=(n-26).toString(36).toUpperCase():n>62?t+="-":t+="_",t),"");const ir="fuul.tracking_id",Ne=()=>dr(ir,()=>or()),bt=()=>z("af")||z("referrer"),ar=()=>document.referrer,cr=()=>hr(),ur=()=>z("category"),lr=()=>z("title"),fr=()=>z("tag"),dr=(e,t)=>{const n=localStorage.getItem(e);if(n)return n;{const r=t();return r?localStorage.setItem(e,r):localStorage.removeItem(e),r}},z=e=>new URLSearchParams(window.location.search).get(e),hr=()=>{const e=z("source");if(e)return e},pr="/user";class mr{constructor(t){R(this,"httpClient");this.httpClient=t.httpClient}async getUserAffiliates(t){return(await this.httpClient.get(pr,t)).data.affiliates}}const gr="https://api.fuul.xyz/api/v1/";let q=!1,Ue=!1,Le,D,Et,St,K,ce,J,Ct,ue;function yr(e){q=!!e.debug,!Ue&&(Le=e.apiKey,Ir(),D=kr(e.baseApiUrl??gr,e.defaultQueryParams??{}),Et=new Qn({httpClient:D,debug:q}),ce=new er({httpClient:D,debug:q}),K=new Xn({httpClient:D,debug:q}),J=new sr({httpClient:D,debug:q}),St=new mr({httpClient:D}),Ct=new Yn({httpClient:D,debug:q}),ue=new rr({httpClient:D}),Ue=!0,q&&console.debug("Fuul SDK: init() complete"))}function U(){if(!Ue)throw new Error("Fuul SDK: You need to call init() to initialize the library before using any methods")}async function wr(e,t){U(),Fe(),De();const n={name:e,args:t??{},metadata:{tracking_id:Ne()}};await ce.sendEvent(n)}async function br(e,t){U(),Fe(),De();const n={name:"pageview",args:{page:e??document.location.pathname,locationOrigin:document.location.origin},metadata:{tracking_id:Ne(),referrer_url:ar(),source:cr(),affiliate_id:bt()??void 0,referrer:bt()??void 0,category:ur()??void 0,title:lr()??void 0,tag:fr()??void 0}};await ce.sendEvent(n,t)}async function Er(e,t){U(),Fe(),De();const n={name:"connect_wallet",args:{page:document.location.pathname,locationOrigin:document.location.origin},metadata:{tracking_id:Ne()}};e!=null&&e.address&&(n.user_address=e.address),e!=null&&e.signature&&(n.signature=e==null?void 0:e.signature,n.signature_message=e==null?void 0:e.message),e!=null&&e.accountChainId&&(n.account_chain_id=e.accountChainId),await ce.sendEvent(n,t)}async function Sr(e){U(),await K.create(e.address,e.code,e.signature,e.accountChainId)}async function Cr(e){U(),await K.update(e.address,e.code,e.signature,e.accountChainId)}async function Rr(e){return U(),await K.getCode(e)}async function Ar(e){return U(),await K.isCodeFree(e)}async function Tr(e,t,n){U();const r=await K.getCode(t),s=new URLSearchParams({af:r??t});return n!=null&&n.title&&s.append("af_title",n.title),n!=null&&n.format&&s.append("af_format",n.format),n!=null&&n.place&&s.append("af_place",n.place),`${e}?${s.toString()}`}function Or(e){return ue.getPayoutsLeaderboard(e)}function _r(e){return ue.getPointsLeaderboard(e)}function Pr(e){return ue.getReferredUsersLeaderboard(e)}function xr(e){return J.getVolumeLeaderboard(e)}function Nr(e){return J.getUserPayoutsByConversion(e)}function Ur(e){return J.getUserPointsByConversion(e)}function Lr(e){return J.getUserPayoutMovements(e)}function Fr(e){return J.getUserPointsMovements(e)}async function Dr(e){return U(),Et.getAll(e)}async function Br(e){return U(),St.getUserAffiliates(e)}async function vr(e){return U(),Ct.getUserAudiences(e)}function Fe(){if(typeof window>"u"||typeof document>"u")throw new Error("Fuul SDK: Browser context required")}function De(){if(navigator.webdriver)throw new Error("Fuul SDK: You are using a browser automation tool")}function Ir(){if(!Le)throw new Error("Fuul SDK: Invalid API key")}function kr(e,t){return new nr({baseURL:e,timeout:3e4,apiKey:Le,queryParams:t})}const qr={init:yr,sendEvent:wr,sendPageview:br,sendConnectWallet:Er,generateTrackingLink:Tr,getConversions:Dr,createAffiliateCode:Sr,updateAffiliateCode:Cr,getAffiliateCode:Rr,isAffiliateCodeFree:Ar,getPayoutsLeaderboard:Or,getPointsLeaderboard:_r,getReferredUsersLeaderboard:Pr,getUserAudiences:vr,getUserPayoutsByConversion:Nr,getUserPointsByConversion:Ur,getUserPointsMovements:Fr,getUserPayoutMovements:Lr,getUserAffiliates:Br,getVolumeLeaderboard:xr};A.AddressInUseError=_e,A.CodeInUseError=Pe,A.Fuul=qr,A.InvalidSignatureError=xe,A.ValidationError=Oe,Object.defineProperty(A,Symbol.toStringTag,{value:"Module"})});
@@ -1,4 +1,4 @@
1
- declare const _default: { "version": "4.11.6" }
1
+ declare const _default: { "version": "4.12.1" }
2
2
  ;
3
3
 
4
4
  export default _default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fuul/sdk",
3
- "version": "4.11.6",
3
+ "version": "4.12.1",
4
4
  "description": "Fuul SDK",
5
5
  "keywords": [
6
6
  "Fuul",
@@ -34,7 +34,7 @@
34
34
  "nanoid": "^4.0.0"
35
35
  },
36
36
  "devDependencies": {
37
- "@golevelup/ts-jest": "^0.4.0",
37
+ "@golevelup/ts-jest": "^0.6.2",
38
38
  "@semantic-release/exec": "^6.0.3",
39
39
  "@semantic-release/git": "^10.0.1",
40
40
  "@semantic-release/npm": "^12.0.1",