@neuctra/authix 3.0.1 → 3.0.2

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.
package/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Neuctra Authix JavaScript SDK
2
2
 
3
3
  **Neuctra Authix** is a framework-agnostic JavaScript/TypeScript SDK for authentication.
4
- It provides ready-to-use APIs, authentication flows, and user management utilities with **JWT**, **API Key**, **OTP verification**, and **extra user data management**.
4
+ It provides ready-to-use APIs, authentication flows, and user management utilities with **JWT**, **publishable and secret API keys**, **OTP verification**, and **extra user data management**.
5
5
 
6
6
  ---
7
7
 
@@ -25,7 +25,7 @@ pnpm add @neuctra/authix
25
25
  * 🔑 **Authentication SDK** (Signup, Login, Profile, Password Reset, OTP)
26
26
  * 👤 **User Management** (Update, Delete, Change Password, Extra Data)
27
27
  * 📂 **User Data Store** (Flexible key/value objects per user)
28
- * 🛡 **Secure API Requests** (JWT & API Key)
28
+ * 🛡 **Secure API Requests** (session cookie + publishable or secret key)
29
29
  * ⚛️ **React UI Components** available separately in `@neuctra/authix-react`
30
30
 
31
31
  ---
@@ -34,17 +34,32 @@ pnpm add @neuctra/authix
34
34
 
35
35
  Before using the SDK, set up the **global configuration**.
36
36
 
37
- The `apiKey` has full account authority. Initialize the SDK only in trusted
38
- server-side code; never put the key in browser bundles, mobile apps, or
39
- client-exposed environment variables. Frontends should call a backend you
40
- control.
37
+ `apiKey` takes one of two kinds of key, both created on the API Keys page of
38
+ the Authix dashboard:
39
+
40
+ * **Publishable key** (`pk_live_…`) — for browser and mobile code. It can sign
41
+ users up and in, verify email, reset passwords, read app data, and read or
42
+ change the **signed-in user's own** profile and data (the user comes from the
43
+ session cookie; any `userId` you pass is ignored). It cannot list or read
44
+ other users, write app data, or set role / `isActive` / `packageInfo`. From a
45
+ browser it needs the app's **allowed origins** set on the dashboard's Access
46
+ tab (otherwise `403 ORIGINS_NOT_CONFIGURED`).
47
+ * **Secret key** (`sk_live_…`; older `ak_live_…` keys are secret) — for your
48
+ server only, loaded from an environment variable such as
49
+ `AUTHIX_SECRET_KEY`. It has full account authority and may act on any user by
50
+ id. Authix refuses it from a browser (`403 SECRET_KEY_IN_BROWSER`). Never put
51
+ it in a browser bundle, mobile app, or a `NEXT_PUBLIC_` / `VITE_` variable.
52
+
53
+ A publishable key calling a secret-only method gets `403 INSUFFICIENT_SCOPE`;
54
+ on the signed-in user's own routes with no live session it gets
55
+ `401 NO_USER_SESSION`.
41
56
 
42
57
  ```ts
43
58
  import { setSdkConfig, getSdkConfig } from "@neuctra/authix";
44
59
 
45
60
  setSdkConfig({
46
61
  baseUrl: "https://server.authix.neuctra.com/api",
47
- apiKey: "your-api-key",
62
+ apiKey: "pk_live_xxxxxxxx_xxxxxxxxxxxxxxxx", // publishable key — client code
48
63
  appId: "your-app-id",
49
64
  });
50
65
 
@@ -57,9 +72,17 @@ Alternatively, you can use the class-based client:
57
72
  ```ts
58
73
  import { NeuctraAuthix } from "@neuctra/authix";
59
74
 
75
+ // Browser or mobile code
60
76
  const client = new NeuctraAuthix({
61
77
  baseUrl: "https://server.authix.neuctra.com/api",
62
- apiKey: "your-api-key",
78
+ apiKey: "pk_live_xxxxxxxx_xxxxxxxxxxxxxxxx",
79
+ appId: "your-app-id",
80
+ });
81
+
82
+ // Server code only
83
+ const admin = new NeuctraAuthix({
84
+ baseUrl: "https://server.authix.neuctra.com/api",
85
+ apiKey: process.env.AUTHIX_SECRET_KEY,
63
86
  appId: "your-app-id",
64
87
  });
65
88
  ```
@@ -1758,9 +1758,11 @@ class an {
1758
1758
  /**
1759
1759
  * Initialize the SDK client.
1760
1760
  *
1761
- * Provide an account API key. It has full authority and must remain server-side.
1761
+ * Use a publishable key (pk_live_…) in browser and mobile code: it can sign
1762
+ * users in and reach only the signed-in user's own data. Use a secret key
1763
+ * (sk_live_…) only on a server; Authix refuses secret keys sent from a browser.
1762
1764
  *
1763
- * @param config configuration object with baseUrl, one key, and appId
1765
+ * @param config configuration object with baseUrl, apiKey, and appId
1764
1766
  */
1765
1767
  constructor(e) {
1766
1768
  if (!e || !e.baseUrl)
@@ -1803,7 +1805,7 @@ class an {
1803
1805
  if (E.isAxiosError(o)) {
1804
1806
  const c = o.response?.status ?? 0, l = o.response?.data;
1805
1807
  let u = l?.message || o.message || "Request failed";
1806
- throw c === 403 && l?.code === "INSUFFICIENT_SCOPE" && (u = `${u} (called "${r}" with an API key). This endpoint needs an API key — call it from your server, not from client code.`), c === 401 && l?.code === "NO_USER_SESSION" && (u = `${u} Sign the user in with loginUser() first — this endpoint acts on the signed-in user's own data.`), c === 409 && l?.code === "VERSION_CONFLICT" ? {
1808
+ throw c === 403 && l?.code === "INSUFFICIENT_SCOPE" && (u = `${u} (called "${r}"). This endpoint needs a secret key — call it from your server, not from client code with a publishable key.`), c === 403 && l?.code === "SECRET_KEY_IN_BROWSER" && (u = `${u} Create a publishable key in the dashboard (API Keys) and use it here instead.`), c === 401 && l?.code === "NO_USER_SESSION" && (u = `${u} Sign the user in with loginUser() first — this endpoint acts on the signed-in user's own data.`), c === 409 && l?.code === "VERSION_CONFLICT" ? {
1807
1809
  message: `${u} Re-read the record to get its current version, then retry the update.`,
1808
1810
  status: c,
1809
1811
  code: "VERSION_CONFLICT",
@@ -2100,8 +2102,8 @@ class an {
2100
2102
  ...s
2101
2103
  },
2102
2104
  {},
2103
- !1
2104
- // 👈 no credentials
2105
+ !0
2106
+ // session cookie: a publishable key acts on the signed-in user
2105
2107
  );
2106
2108
  }
2107
2109
  async getUserData(e) {
@@ -2116,7 +2118,7 @@ class an {
2116
2118
  u ? `${c}?${u}` : c,
2117
2119
  void 0,
2118
2120
  {},
2119
- !1
2121
+ !0
2120
2122
  );
2121
2123
  }
2122
2124
  async getSingleUserData(e) {
@@ -2128,8 +2130,8 @@ class an {
2128
2130
  `/users/${r}/data/${n}`,
2129
2131
  void 0,
2130
2132
  {},
2131
- !1
2132
- // 👈 no credentials
2133
+ !0
2134
+ // session cookie: a publishable key acts on the signed-in user
2133
2135
  );
2134
2136
  }
2135
2137
  /**
@@ -2154,7 +2156,7 @@ class an {
2154
2156
  ...c ? { cursor: c } : {}
2155
2157
  },
2156
2158
  {},
2157
- !1
2159
+ !0
2158
2160
  );
2159
2161
  }
2160
2162
  /**
@@ -2191,8 +2193,8 @@ class an {
2191
2193
  `/users/${r}/data/${n}`,
2192
2194
  { ...s, ...i !== void 0 ? { version: i } : {} },
2193
2195
  {},
2194
- !1
2195
- // 👈 no credentials
2196
+ !0
2197
+ // session cookie: a publishable key acts on the signed-in user
2196
2198
  );
2197
2199
  }
2198
2200
  async deleteUserData(e) {
@@ -2204,8 +2206,8 @@ class an {
2204
2206
  `/users/${r}/data/${n}`,
2205
2207
  void 0,
2206
2208
  {},
2207
- !1
2208
- // 👈 no credentials
2209
+ !0
2210
+ // session cookie: a publishable key acts on the signed-in user
2209
2211
  );
2210
2212
  }
2211
2213
  /**
@@ -2222,7 +2224,7 @@ class an {
2222
2224
  `/users/${encodeURIComponent(r)}/data-bulk-delete`,
2223
2225
  { dataIds: n },
2224
2226
  {},
2225
- !1
2227
+ !0
2226
2228
  );
2227
2229
  }
2228
2230
  /**
@@ -2260,7 +2262,7 @@ class an {
2260
2262
  `/users/${encodeURIComponent(r)}/data-batch`,
2261
2263
  { operations: n },
2262
2264
  {},
2263
- !1
2265
+ !0
2264
2266
  );
2265
2267
  }
2266
2268
  /*------------------------------------------------*/
@@ -1,6 +1,6 @@
1
- (function(B,j){typeof exports=="object"&&typeof module<"u"?j(exports):typeof define=="function"&&define.amd?define(["exports"],j):(B=typeof globalThis<"u"?globalThis:B||self,j(B.NeuctraAuthix={}))})(this,(function(B){"use strict";function j(t,e){return function(){return t.apply(e,arguments)}}const{toString:ht}=Object.prototype,{getPrototypeOf:le}=Object,{iterator:Q,toStringTag:Ae}=Symbol,Z=(t=>e=>{const r=ht.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),C=t=>(t=t.toLowerCase(),e=>Z(e)===t),Y=t=>e=>typeof e===t,{isArray:M}=Array,H=Y("undefined");function V(t){return t!==null&&!H(t)&&t.constructor!==null&&!H(t.constructor)&&A(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const Te=C("ArrayBuffer");function mt(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&Te(t.buffer),e}const wt=Y("string"),A=Y("function"),Oe=Y("number"),J=t=>t!==null&&typeof t=="object",yt=t=>t===!0||t===!1,ee=t=>{if(Z(t)!=="object")return!1;const e=le(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Ae in t)&&!(Q in t)},Et=t=>{if(!J(t)||V(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},gt=C("Date"),bt=C("File"),St=C("Blob"),Rt=C("FileList"),At=t=>J(t)&&A(t.pipe),Tt=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||A(t.append)&&((e=Z(t))==="formdata"||e==="object"&&A(t.toString)&&t.toString()==="[object FormData]"))},Ot=C("URLSearchParams"),[It,Ut,Ct,qt]=["ReadableStream","Request","Response","Headers"].map(C),Pt=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function K(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let n,s;if(typeof t!="object"&&(t=[t]),M(t))for(n=0,s=t.length;n<s;n++)e.call(null,t[n],n,t);else{if(V(t))return;const i=r?Object.getOwnPropertyNames(t):Object.keys(t),o=i.length;let c;for(n=0;n<o;n++)c=i[n],e.call(null,t[c],c,t)}}function Ie(t,e){if(V(t))return null;e=e.toLowerCase();const r=Object.keys(t);let n=r.length,s;for(;n-- >0;)if(s=r[n],e===s.toLowerCase())return s;return null}const F=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Ue=t=>!H(t)&&t!==F;function de(){const{caseless:t,skipUndefined:e}=Ue(this)&&this||{},r={},n=(s,i)=>{const o=t&&Ie(r,i)||i;ee(r[o])&&ee(s)?r[o]=de(r[o],s):ee(s)?r[o]=de({},s):M(s)?r[o]=s.slice():(!e||!H(s))&&(r[o]=s)};for(let s=0,i=arguments.length;s<i;s++)arguments[s]&&K(arguments[s],n);return r}const xt=(t,e,r,{allOwnKeys:n}={})=>(K(e,(s,i)=>{r&&A(s)?t[i]=j(s,r):t[i]=s},{allOwnKeys:n}),t),Dt=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Nt=(t,e,r,n)=>{t.prototype=Object.create(e.prototype,n),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),r&&Object.assign(t.prototype,r)},Ft=(t,e,r,n)=>{let s,i,o;const c={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)o=s[i],(!n||n(o,t,e))&&!c[o]&&(e[o]=t[o],c[o]=!0);t=r!==!1&&le(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},_t=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;const n=t.indexOf(e,r);return n!==-1&&n===r},kt=t=>{if(!t)return null;if(M(t))return t;let e=t.length;if(!Oe(e))return null;const r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},Lt=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&le(Uint8Array)),$t=(t,e)=>{const n=(t&&t[Q]).call(t);let s;for(;(s=n.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},Bt=(t,e)=>{let r;const n=[];for(;(r=t.exec(e))!==null;)n.push(r);return n},jt=C("HTMLFormElement"),Mt=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,s){return n.toUpperCase()+s}),Ce=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),Ht=C("RegExp"),qe=(t,e)=>{const r=Object.getOwnPropertyDescriptors(t),n={};K(r,(s,i)=>{let o;(o=e(s,i,t))!==!1&&(n[i]=o||s)}),Object.defineProperties(t,n)},vt=t=>{qe(t,(e,r)=>{if(A(t)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=t[r];if(A(n)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},zt=(t,e)=>{const r={},n=s=>{s.forEach(i=>{r[i]=!0})};return M(t)?n(t):n(String(t).split(e)),r},Vt=()=>{},Jt=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Kt(t){return!!(t&&A(t.append)&&t[Ae]==="FormData"&&t[Q])}const Wt=t=>{const e=new Array(10),r=(n,s)=>{if(J(n)){if(e.indexOf(n)>=0)return;if(V(n))return n;if(!("toJSON"in n)){e[s]=n;const i=M(n)?[]:{};return K(n,(o,c)=>{const l=r(o,s+1);!H(l)&&(i[c]=l)}),e[s]=void 0,i}}return n};return r(t,0)},Gt=C("AsyncFunction"),Xt=t=>t&&(J(t)||A(t))&&A(t.then)&&A(t.catch),Pe=((t,e)=>t?setImmediate:e?((r,n)=>(F.addEventListener("message",({source:s,data:i})=>{s===F&&i===r&&n.length&&n.shift()()},!1),s=>{n.push(s),F.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",A(F.postMessage)),Qt=typeof queueMicrotask<"u"?queueMicrotask.bind(F):typeof process<"u"&&process.nextTick||Pe,a={isArray:M,isArrayBuffer:Te,isBuffer:V,isFormData:Tt,isArrayBufferView:mt,isString:wt,isNumber:Oe,isBoolean:yt,isObject:J,isPlainObject:ee,isEmptyObject:Et,isReadableStream:It,isRequest:Ut,isResponse:Ct,isHeaders:qt,isUndefined:H,isDate:gt,isFile:bt,isBlob:St,isRegExp:Ht,isFunction:A,isStream:At,isURLSearchParams:Ot,isTypedArray:Lt,isFileList:Rt,forEach:K,merge:de,extend:xt,trim:Pt,stripBOM:Dt,inherits:Nt,toFlatObject:Ft,kindOf:Z,kindOfTest:C,endsWith:_t,toArray:kt,forEachEntry:$t,matchAll:Bt,isHTMLForm:jt,hasOwnProperty:Ce,hasOwnProp:Ce,reduceDescriptors:qe,freezeMethods:vt,toObjectSet:zt,toCamelCase:Mt,noop:Vt,toFiniteNumber:Jt,findKey:Ie,global:F,isContextDefined:Ue,isSpecCompliantForm:Kt,toJSONObject:Wt,isAsyncFn:Gt,isThenable:Xt,setImmediate:Pe,asap:Qt,isIterable:t=>t!=null&&A(t[Q])};function w(t,e,r,n,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),r&&(this.config=r),n&&(this.request=n),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(w,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const xe=w.prototype,De={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{De[t]={value:t}}),Object.defineProperties(w,De),Object.defineProperty(xe,"isAxiosError",{value:!0}),w.from=(t,e,r,n,s,i)=>{const o=Object.create(xe);a.toFlatObject(t,o,function(d){return d!==Error.prototype},u=>u!=="isAxiosError");const c=t&&t.message?t.message:"Error",l=e==null&&t?t.code:e;return w.call(o,c,l,r,n,s),t&&o.cause==null&&Object.defineProperty(o,"cause",{value:t,configurable:!0}),o.name=t&&t.name||"Error",i&&Object.assign(o,i),o};const Zt=null;function fe(t){return a.isPlainObject(t)||a.isArray(t)}function Ne(t){return a.endsWith(t,"[]")?t.slice(0,-2):t}function Fe(t,e,r){return t?t.concat(e).map(function(s,i){return s=Ne(s),!r&&i?"["+s+"]":s}).join(r?".":""):e}function Yt(t){return a.isArray(t)&&!t.some(fe)}const er=a.toFlatObject(a,{},null,function(e){return/^is[A-Z]/.test(e)});function te(t,e,r){if(!a.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,r=a.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(m,p){return!a.isUndefined(p[m])});const n=r.metaTokens,s=r.visitor||d,i=r.dots,o=r.indexes,l=(r.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(e);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function u(f){if(f===null)return"";if(a.isDate(f))return f.toISOString();if(a.isBoolean(f))return f.toString();if(!l&&a.isBlob(f))throw new w("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(f)||a.isTypedArray(f)?l&&typeof Blob=="function"?new Blob([f]):Buffer.from(f):f}function d(f,m,p){let g=f;if(f&&!p&&typeof f=="object"){if(a.endsWith(m,"{}"))m=n?m:m.slice(0,-2),f=JSON.stringify(f);else if(a.isArray(f)&&Yt(f)||(a.isFileList(f)||a.endsWith(m,"[]"))&&(g=a.toArray(f)))return m=Ne(m),g.forEach(function(b,O){!(a.isUndefined(b)||b===null)&&e.append(o===!0?Fe([m],O,i):o===null?m:m+"[]",u(b))}),!1}return fe(f)?!0:(e.append(Fe(p,m,i),u(f)),!1)}const h=[],y=Object.assign(er,{defaultVisitor:d,convertValue:u,isVisitable:fe});function R(f,m){if(!a.isUndefined(f)){if(h.indexOf(f)!==-1)throw Error("Circular reference detected in "+m.join("."));h.push(f),a.forEach(f,function(g,I){(!(a.isUndefined(g)||g===null)&&s.call(e,g,a.isString(I)?I.trim():I,m,y))===!0&&R(g,m?m.concat(I):[I])}),h.pop()}}if(!a.isObject(t))throw new TypeError("data must be an object");return R(t),e}function _e(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(n){return e[n]})}function pe(t,e){this._pairs=[],t&&te(t,this,e)}const ke=pe.prototype;ke.append=function(e,r){this._pairs.push([e,r])},ke.toString=function(e){const r=e?function(n){return e.call(this,n,_e)}:_e;return this._pairs.map(function(s){return r(s[0])+"="+r(s[1])},"").join("&")};function tr(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Le(t,e,r){if(!e)return t;const n=r&&r.encode||tr;a.isFunction(r)&&(r={serialize:r});const s=r&&r.serialize;let i;if(s?i=s(e,r):i=a.isURLSearchParams(e)?e.toString():new pe(e,r).toString(n),i){const o=t.indexOf("#");o!==-1&&(t=t.slice(0,o)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class $e{constructor(){this.handlers=[]}use(e,r,n){return this.handlers.push({fulfilled:e,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){a.forEach(this.handlers,function(n){n!==null&&e(n)})}}const Be={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},rr={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<"u"?URLSearchParams:pe,FormData:typeof FormData<"u"?FormData:null,Blob:typeof Blob<"u"?Blob:null},protocols:["http","https","file","blob","url","data"]},he=typeof window<"u"&&typeof document<"u",me=typeof navigator=="object"&&navigator||void 0,nr=he&&(!me||["ReactNative","NativeScript","NS"].indexOf(me.product)<0),sr=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",or=he&&window.location.href||"http://localhost",S={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:he,hasStandardBrowserEnv:nr,hasStandardBrowserWebWorkerEnv:sr,navigator:me,origin:or},Symbol.toStringTag,{value:"Module"})),...rr};function ir(t,e){return te(t,new S.classes.URLSearchParams,{visitor:function(r,n,s,i){return S.isNode&&a.isBuffer(r)?(this.append(n,r.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function ar(t){return a.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function cr(t){const e={},r=Object.keys(t);let n;const s=r.length;let i;for(n=0;n<s;n++)i=r[n],e[i]=t[i];return e}function je(t){function e(r,n,s,i){let o=r[i++];if(o==="__proto__")return!0;const c=Number.isFinite(+o),l=i>=r.length;return o=!o&&a.isArray(s)?s.length:o,l?(a.hasOwnProp(s,o)?s[o]=[s[o],n]:s[o]=n,!c):((!s[o]||!a.isObject(s[o]))&&(s[o]=[]),e(r,n,s[o],i)&&a.isArray(s[o])&&(s[o]=cr(s[o])),!c)}if(a.isFormData(t)&&a.isFunction(t.entries)){const r={};return a.forEachEntry(t,(n,s)=>{e(ar(n),s,r,0)}),r}return null}function ur(t,e,r){if(a.isString(t))try{return(e||JSON.parse)(t),a.trim(t)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(t)}const W={transitional:Be,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){const n=r.getContentType()||"",s=n.indexOf("application/json")>-1,i=a.isObject(e);if(i&&a.isHTMLForm(e)&&(e=new FormData(e)),a.isFormData(e))return s?JSON.stringify(je(e)):e;if(a.isArrayBuffer(e)||a.isBuffer(e)||a.isStream(e)||a.isFile(e)||a.isBlob(e)||a.isReadableStream(e))return e;if(a.isArrayBufferView(e))return e.buffer;if(a.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let c;if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return ir(e,this.formSerializer).toString();if((c=a.isFileList(e))||n.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return te(c?{"files[]":e}:e,l&&new l,this.formSerializer)}}return i||s?(r.setContentType("application/json",!1),ur(e)):e}],transformResponse:[function(e){const r=this.transitional||W.transitional,n=r&&r.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(e)||a.isReadableStream(e))return e;if(e&&a.isString(e)&&(n&&!this.responseType||s)){const o=!(r&&r.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(c){if(o)throw c.name==="SyntaxError"?w.from(c,w.ERR_BAD_RESPONSE,this,null,this.response):c}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:S.classes.FormData,Blob:S.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],t=>{W.headers[t]={}});const lr=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),dr=t=>{const e={};let r,n,s;return t&&t.split(`
1
+ (function(B,j){typeof exports=="object"&&typeof module<"u"?j(exports):typeof define=="function"&&define.amd?define(["exports"],j):(B=typeof globalThis<"u"?globalThis:B||self,j(B.NeuctraAuthix={}))})(this,(function(B){"use strict";function j(t,e){return function(){return t.apply(e,arguments)}}const{toString:ht}=Object.prototype,{getPrototypeOf:le}=Object,{iterator:Q,toStringTag:Ae}=Symbol,Z=(t=>e=>{const r=ht.call(e);return t[r]||(t[r]=r.slice(8,-1).toLowerCase())})(Object.create(null)),C=t=>(t=t.toLowerCase(),e=>Z(e)===t),Y=t=>e=>typeof e===t,{isArray:M}=Array,H=Y("undefined");function V(t){return t!==null&&!H(t)&&t.constructor!==null&&!H(t.constructor)&&A(t.constructor.isBuffer)&&t.constructor.isBuffer(t)}const Te=C("ArrayBuffer");function mt(t){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(t):e=t&&t.buffer&&Te(t.buffer),e}const wt=Y("string"),A=Y("function"),Oe=Y("number"),J=t=>t!==null&&typeof t=="object",yt=t=>t===!0||t===!1,ee=t=>{if(Z(t)!=="object")return!1;const e=le(t);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Ae in t)&&!(Q in t)},Et=t=>{if(!J(t)||V(t))return!1;try{return Object.keys(t).length===0&&Object.getPrototypeOf(t)===Object.prototype}catch{return!1}},bt=C("Date"),gt=C("File"),St=C("Blob"),Rt=C("FileList"),At=t=>J(t)&&A(t.pipe),Tt=t=>{let e;return t&&(typeof FormData=="function"&&t instanceof FormData||A(t.append)&&((e=Z(t))==="formdata"||e==="object"&&A(t.toString)&&t.toString()==="[object FormData]"))},Ot=C("URLSearchParams"),[It,Ut,Ct,qt]=["ReadableStream","Request","Response","Headers"].map(C),Pt=t=>t.trim?t.trim():t.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function K(t,e,{allOwnKeys:r=!1}={}){if(t===null||typeof t>"u")return;let n,s;if(typeof t!="object"&&(t=[t]),M(t))for(n=0,s=t.length;n<s;n++)e.call(null,t[n],n,t);else{if(V(t))return;const i=r?Object.getOwnPropertyNames(t):Object.keys(t),o=i.length;let c;for(n=0;n<o;n++)c=i[n],e.call(null,t[c],c,t)}}function Ie(t,e){if(V(t))return null;e=e.toLowerCase();const r=Object.keys(t);let n=r.length,s;for(;n-- >0;)if(s=r[n],e===s.toLowerCase())return s;return null}const F=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Ue=t=>!H(t)&&t!==F;function de(){const{caseless:t,skipUndefined:e}=Ue(this)&&this||{},r={},n=(s,i)=>{const o=t&&Ie(r,i)||i;ee(r[o])&&ee(s)?r[o]=de(r[o],s):ee(s)?r[o]=de({},s):M(s)?r[o]=s.slice():(!e||!H(s))&&(r[o]=s)};for(let s=0,i=arguments.length;s<i;s++)arguments[s]&&K(arguments[s],n);return r}const xt=(t,e,r,{allOwnKeys:n}={})=>(K(e,(s,i)=>{r&&A(s)?t[i]=j(s,r):t[i]=s},{allOwnKeys:n}),t),Dt=t=>(t.charCodeAt(0)===65279&&(t=t.slice(1)),t),Nt=(t,e,r,n)=>{t.prototype=Object.create(e.prototype,n),t.prototype.constructor=t,Object.defineProperty(t,"super",{value:e.prototype}),r&&Object.assign(t.prototype,r)},Ft=(t,e,r,n)=>{let s,i,o;const c={};if(e=e||{},t==null)return e;do{for(s=Object.getOwnPropertyNames(t),i=s.length;i-- >0;)o=s[i],(!n||n(o,t,e))&&!c[o]&&(e[o]=t[o],c[o]=!0);t=r!==!1&&le(t)}while(t&&(!r||r(t,e))&&t!==Object.prototype);return e},_t=(t,e,r)=>{t=String(t),(r===void 0||r>t.length)&&(r=t.length),r-=e.length;const n=t.indexOf(e,r);return n!==-1&&n===r},kt=t=>{if(!t)return null;if(M(t))return t;let e=t.length;if(!Oe(e))return null;const r=new Array(e);for(;e-- >0;)r[e]=t[e];return r},Lt=(t=>e=>t&&e instanceof t)(typeof Uint8Array<"u"&&le(Uint8Array)),$t=(t,e)=>{const n=(t&&t[Q]).call(t);let s;for(;(s=n.next())&&!s.done;){const i=s.value;e.call(t,i[0],i[1])}},Bt=(t,e)=>{let r;const n=[];for(;(r=t.exec(e))!==null;)n.push(r);return n},jt=C("HTMLFormElement"),Mt=t=>t.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(r,n,s){return n.toUpperCase()+s}),Ce=(({hasOwnProperty:t})=>(e,r)=>t.call(e,r))(Object.prototype),Ht=C("RegExp"),qe=(t,e)=>{const r=Object.getOwnPropertyDescriptors(t),n={};K(r,(s,i)=>{let o;(o=e(s,i,t))!==!1&&(n[i]=o||s)}),Object.defineProperties(t,n)},vt=t=>{qe(t,(e,r)=>{if(A(t)&&["arguments","caller","callee"].indexOf(r)!==-1)return!1;const n=t[r];if(A(n)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+r+"'")})}})},zt=(t,e)=>{const r={},n=s=>{s.forEach(i=>{r[i]=!0})};return M(t)?n(t):n(String(t).split(e)),r},Vt=()=>{},Jt=(t,e)=>t!=null&&Number.isFinite(t=+t)?t:e;function Kt(t){return!!(t&&A(t.append)&&t[Ae]==="FormData"&&t[Q])}const Wt=t=>{const e=new Array(10),r=(n,s)=>{if(J(n)){if(e.indexOf(n)>=0)return;if(V(n))return n;if(!("toJSON"in n)){e[s]=n;const i=M(n)?[]:{};return K(n,(o,c)=>{const l=r(o,s+1);!H(l)&&(i[c]=l)}),e[s]=void 0,i}}return n};return r(t,0)},Gt=C("AsyncFunction"),Xt=t=>t&&(J(t)||A(t))&&A(t.then)&&A(t.catch),Pe=((t,e)=>t?setImmediate:e?((r,n)=>(F.addEventListener("message",({source:s,data:i})=>{s===F&&i===r&&n.length&&n.shift()()},!1),s=>{n.push(s),F.postMessage(r,"*")}))(`axios@${Math.random()}`,[]):r=>setTimeout(r))(typeof setImmediate=="function",A(F.postMessage)),Qt=typeof queueMicrotask<"u"?queueMicrotask.bind(F):typeof process<"u"&&process.nextTick||Pe,a={isArray:M,isArrayBuffer:Te,isBuffer:V,isFormData:Tt,isArrayBufferView:mt,isString:wt,isNumber:Oe,isBoolean:yt,isObject:J,isPlainObject:ee,isEmptyObject:Et,isReadableStream:It,isRequest:Ut,isResponse:Ct,isHeaders:qt,isUndefined:H,isDate:bt,isFile:gt,isBlob:St,isRegExp:Ht,isFunction:A,isStream:At,isURLSearchParams:Ot,isTypedArray:Lt,isFileList:Rt,forEach:K,merge:de,extend:xt,trim:Pt,stripBOM:Dt,inherits:Nt,toFlatObject:Ft,kindOf:Z,kindOfTest:C,endsWith:_t,toArray:kt,forEachEntry:$t,matchAll:Bt,isHTMLForm:jt,hasOwnProperty:Ce,hasOwnProp:Ce,reduceDescriptors:qe,freezeMethods:vt,toObjectSet:zt,toCamelCase:Mt,noop:Vt,toFiniteNumber:Jt,findKey:Ie,global:F,isContextDefined:Ue,isSpecCompliantForm:Kt,toJSONObject:Wt,isAsyncFn:Gt,isThenable:Xt,setImmediate:Pe,asap:Qt,isIterable:t=>t!=null&&A(t[Q])};function w(t,e,r,n,s){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=t,this.name="AxiosError",e&&(this.code=e),r&&(this.config=r),n&&(this.request=n),s&&(this.response=s,this.status=s.status?s.status:null)}a.inherits(w,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:a.toJSONObject(this.config),code:this.code,status:this.status}}});const xe=w.prototype,De={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(t=>{De[t]={value:t}}),Object.defineProperties(w,De),Object.defineProperty(xe,"isAxiosError",{value:!0}),w.from=(t,e,r,n,s,i)=>{const o=Object.create(xe);a.toFlatObject(t,o,function(d){return d!==Error.prototype},u=>u!=="isAxiosError");const c=t&&t.message?t.message:"Error",l=e==null&&t?t.code:e;return w.call(o,c,l,r,n,s),t&&o.cause==null&&Object.defineProperty(o,"cause",{value:t,configurable:!0}),o.name=t&&t.name||"Error",i&&Object.assign(o,i),o};const Zt=null;function fe(t){return a.isPlainObject(t)||a.isArray(t)}function Ne(t){return a.endsWith(t,"[]")?t.slice(0,-2):t}function Fe(t,e,r){return t?t.concat(e).map(function(s,i){return s=Ne(s),!r&&i?"["+s+"]":s}).join(r?".":""):e}function Yt(t){return a.isArray(t)&&!t.some(fe)}const er=a.toFlatObject(a,{},null,function(e){return/^is[A-Z]/.test(e)});function te(t,e,r){if(!a.isObject(t))throw new TypeError("target must be an object");e=e||new FormData,r=a.toFlatObject(r,{metaTokens:!0,dots:!1,indexes:!1},!1,function(m,p){return!a.isUndefined(p[m])});const n=r.metaTokens,s=r.visitor||d,i=r.dots,o=r.indexes,l=(r.Blob||typeof Blob<"u"&&Blob)&&a.isSpecCompliantForm(e);if(!a.isFunction(s))throw new TypeError("visitor must be a function");function u(f){if(f===null)return"";if(a.isDate(f))return f.toISOString();if(a.isBoolean(f))return f.toString();if(!l&&a.isBlob(f))throw new w("Blob is not supported. Use a Buffer instead.");return a.isArrayBuffer(f)||a.isTypedArray(f)?l&&typeof Blob=="function"?new Blob([f]):Buffer.from(f):f}function d(f,m,p){let b=f;if(f&&!p&&typeof f=="object"){if(a.endsWith(m,"{}"))m=n?m:m.slice(0,-2),f=JSON.stringify(f);else if(a.isArray(f)&&Yt(f)||(a.isFileList(f)||a.endsWith(m,"[]"))&&(b=a.toArray(f)))return m=Ne(m),b.forEach(function(g,O){!(a.isUndefined(g)||g===null)&&e.append(o===!0?Fe([m],O,i):o===null?m:m+"[]",u(g))}),!1}return fe(f)?!0:(e.append(Fe(p,m,i),u(f)),!1)}const h=[],y=Object.assign(er,{defaultVisitor:d,convertValue:u,isVisitable:fe});function R(f,m){if(!a.isUndefined(f)){if(h.indexOf(f)!==-1)throw Error("Circular reference detected in "+m.join("."));h.push(f),a.forEach(f,function(b,I){(!(a.isUndefined(b)||b===null)&&s.call(e,b,a.isString(I)?I.trim():I,m,y))===!0&&R(b,m?m.concat(I):[I])}),h.pop()}}if(!a.isObject(t))throw new TypeError("data must be an object");return R(t),e}function _e(t){const e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(t).replace(/[!'()~]|%20|%00/g,function(n){return e[n]})}function pe(t,e){this._pairs=[],t&&te(t,this,e)}const ke=pe.prototype;ke.append=function(e,r){this._pairs.push([e,r])},ke.toString=function(e){const r=e?function(n){return e.call(this,n,_e)}:_e;return this._pairs.map(function(s){return r(s[0])+"="+r(s[1])},"").join("&")};function tr(t){return encodeURIComponent(t).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Le(t,e,r){if(!e)return t;const n=r&&r.encode||tr;a.isFunction(r)&&(r={serialize:r});const s=r&&r.serialize;let i;if(s?i=s(e,r):i=a.isURLSearchParams(e)?e.toString():new pe(e,r).toString(n),i){const o=t.indexOf("#");o!==-1&&(t=t.slice(0,o)),t+=(t.indexOf("?")===-1?"?":"&")+i}return t}class $e{constructor(){this.handlers=[]}use(e,r,n){return this.handlers.push({fulfilled:e,rejected:r,synchronous:n?n.synchronous:!1,runWhen:n?n.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){a.forEach(this.handlers,function(n){n!==null&&e(n)})}}const Be={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},rr={isBrowser:!0,classes:{URLSearchParams:typeof URLSearchParams<"u"?URLSearchParams:pe,FormData:typeof FormData<"u"?FormData:null,Blob:typeof Blob<"u"?Blob:null},protocols:["http","https","file","blob","url","data"]},he=typeof window<"u"&&typeof document<"u",me=typeof navigator=="object"&&navigator||void 0,nr=he&&(!me||["ReactNative","NativeScript","NS"].indexOf(me.product)<0),sr=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",or=he&&window.location.href||"http://localhost",S={...Object.freeze(Object.defineProperty({__proto__:null,hasBrowserEnv:he,hasStandardBrowserEnv:nr,hasStandardBrowserWebWorkerEnv:sr,navigator:me,origin:or},Symbol.toStringTag,{value:"Module"})),...rr};function ir(t,e){return te(t,new S.classes.URLSearchParams,{visitor:function(r,n,s,i){return S.isNode&&a.isBuffer(r)?(this.append(n,r.toString("base64")),!1):i.defaultVisitor.apply(this,arguments)},...e})}function ar(t){return a.matchAll(/\w+|\[(\w*)]/g,t).map(e=>e[0]==="[]"?"":e[1]||e[0])}function cr(t){const e={},r=Object.keys(t);let n;const s=r.length;let i;for(n=0;n<s;n++)i=r[n],e[i]=t[i];return e}function je(t){function e(r,n,s,i){let o=r[i++];if(o==="__proto__")return!0;const c=Number.isFinite(+o),l=i>=r.length;return o=!o&&a.isArray(s)?s.length:o,l?(a.hasOwnProp(s,o)?s[o]=[s[o],n]:s[o]=n,!c):((!s[o]||!a.isObject(s[o]))&&(s[o]=[]),e(r,n,s[o],i)&&a.isArray(s[o])&&(s[o]=cr(s[o])),!c)}if(a.isFormData(t)&&a.isFunction(t.entries)){const r={};return a.forEachEntry(t,(n,s)=>{e(ar(n),s,r,0)}),r}return null}function ur(t,e,r){if(a.isString(t))try{return(e||JSON.parse)(t),a.trim(t)}catch(n){if(n.name!=="SyntaxError")throw n}return(r||JSON.stringify)(t)}const W={transitional:Be,adapter:["xhr","http","fetch"],transformRequest:[function(e,r){const n=r.getContentType()||"",s=n.indexOf("application/json")>-1,i=a.isObject(e);if(i&&a.isHTMLForm(e)&&(e=new FormData(e)),a.isFormData(e))return s?JSON.stringify(je(e)):e;if(a.isArrayBuffer(e)||a.isBuffer(e)||a.isStream(e)||a.isFile(e)||a.isBlob(e)||a.isReadableStream(e))return e;if(a.isArrayBufferView(e))return e.buffer;if(a.isURLSearchParams(e))return r.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let c;if(i){if(n.indexOf("application/x-www-form-urlencoded")>-1)return ir(e,this.formSerializer).toString();if((c=a.isFileList(e))||n.indexOf("multipart/form-data")>-1){const l=this.env&&this.env.FormData;return te(c?{"files[]":e}:e,l&&new l,this.formSerializer)}}return i||s?(r.setContentType("application/json",!1),ur(e)):e}],transformResponse:[function(e){const r=this.transitional||W.transitional,n=r&&r.forcedJSONParsing,s=this.responseType==="json";if(a.isResponse(e)||a.isReadableStream(e))return e;if(e&&a.isString(e)&&(n&&!this.responseType||s)){const o=!(r&&r.silentJSONParsing)&&s;try{return JSON.parse(e,this.parseReviver)}catch(c){if(o)throw c.name==="SyntaxError"?w.from(c,w.ERR_BAD_RESPONSE,this,null,this.response):c}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:S.classes.FormData,Blob:S.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};a.forEach(["delete","get","head","post","put","patch"],t=>{W.headers[t]={}});const lr=a.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),dr=t=>{const e={};let r,n,s;return t&&t.split(`
2
2
  `).forEach(function(o){s=o.indexOf(":"),r=o.substring(0,s).trim().toLowerCase(),n=o.substring(s+1).trim(),!(!r||e[r]&&lr[r])&&(r==="set-cookie"?e[r]?e[r].push(n):e[r]=[n]:e[r]=e[r]?e[r]+", "+n:n)}),e},Me=Symbol("internals");function G(t){return t&&String(t).trim().toLowerCase()}function re(t){return t===!1||t==null?t:a.isArray(t)?t.map(re):String(t)}function fr(t){const e=Object.create(null),r=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;let n;for(;n=r.exec(t);)e[n[1]]=n[2];return e}const pr=t=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(t.trim());function we(t,e,r,n,s){if(a.isFunction(n))return n.call(this,e,r);if(s&&(e=r),!!a.isString(e)){if(a.isString(n))return e.indexOf(n)!==-1;if(a.isRegExp(n))return n.test(e)}}function hr(t){return t.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,r,n)=>r.toUpperCase()+n)}function mr(t,e){const r=a.toCamelCase(" "+e);["get","set","has"].forEach(n=>{Object.defineProperty(t,n+r,{value:function(s,i,o){return this[n].call(this,e,s,i,o)},configurable:!0})})}let T=class{constructor(e){e&&this.set(e)}set(e,r,n){const s=this;function i(c,l,u){const d=G(l);if(!d)throw new Error("header name must be a non-empty string");const h=a.findKey(s,d);(!h||s[h]===void 0||u===!0||u===void 0&&s[h]!==!1)&&(s[h||l]=re(c))}const o=(c,l)=>a.forEach(c,(u,d)=>i(u,d,l));if(a.isPlainObject(e)||e instanceof this.constructor)o(e,r);else if(a.isString(e)&&(e=e.trim())&&!pr(e))o(dr(e),r);else if(a.isObject(e)&&a.isIterable(e)){let c={},l,u;for(const d of e){if(!a.isArray(d))throw TypeError("Object iterator must return a key-value pair");c[u=d[0]]=(l=c[u])?a.isArray(l)?[...l,d[1]]:[l,d[1]]:d[1]}o(c,r)}else e!=null&&i(r,e,n);return this}get(e,r){if(e=G(e),e){const n=a.findKey(this,e);if(n){const s=this[n];if(!r)return s;if(r===!0)return fr(s);if(a.isFunction(r))return r.call(this,s,n);if(a.isRegExp(r))return r.exec(s);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,r){if(e=G(e),e){const n=a.findKey(this,e);return!!(n&&this[n]!==void 0&&(!r||we(this,this[n],n,r)))}return!1}delete(e,r){const n=this;let s=!1;function i(o){if(o=G(o),o){const c=a.findKey(n,o);c&&(!r||we(n,n[c],c,r))&&(delete n[c],s=!0)}}return a.isArray(e)?e.forEach(i):i(e),s}clear(e){const r=Object.keys(this);let n=r.length,s=!1;for(;n--;){const i=r[n];(!e||we(this,this[i],i,e,!0))&&(delete this[i],s=!0)}return s}normalize(e){const r=this,n={};return a.forEach(this,(s,i)=>{const o=a.findKey(n,i);if(o){r[o]=re(s),delete r[i];return}const c=e?hr(i):String(i).trim();c!==i&&delete r[i],r[c]=re(s),n[c]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){const r=Object.create(null);return a.forEach(this,(n,s)=>{n!=null&&n!==!1&&(r[s]=e&&a.isArray(n)?n.join(", "):n)}),r}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,r])=>e+": "+r).join(`
3
- `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){const n=new this(e);return r.forEach(s=>n.set(s)),n}static accessor(e){const n=(this[Me]=this[Me]={accessors:{}}).accessors,s=this.prototype;function i(o){const c=G(o);n[c]||(mr(s,o),n[c]=!0)}return a.isArray(e)?e.forEach(i):i(e),this}};T.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),a.reduceDescriptors(T.prototype,({value:t},e)=>{let r=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(n){this[r]=n}}}),a.freezeMethods(T);function ye(t,e){const r=this||W,n=e||r,s=T.from(n.headers);let i=n.data;return a.forEach(t,function(c){i=c.call(r,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function He(t){return!!(t&&t.__CANCEL__)}function v(t,e,r){w.call(this,t??"canceled",w.ERR_CANCELED,e,r),this.name="CanceledError"}a.inherits(v,w,{__CANCEL__:!0});function ve(t,e,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?t(r):e(new w("Request failed with status code "+r.status,[w.ERR_BAD_REQUEST,w.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function wr(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function yr(t,e){t=t||10;const r=new Array(t),n=new Array(t);let s=0,i=0,o;return e=e!==void 0?e:1e3,function(l){const u=Date.now(),d=n[i];o||(o=u),r[s]=l,n[s]=u;let h=i,y=0;for(;h!==s;)y+=r[h++],h=h%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),u-o<e)return;const R=d&&u-d;return R?Math.round(y*1e3/R):void 0}}function Er(t,e){let r=0,n=1e3/e,s,i;const o=(u,d=Date.now())=>{r=d,s=null,i&&(clearTimeout(i),i=null),t(...u)};return[(...u)=>{const d=Date.now(),h=d-r;h>=n?o(u,d):(s=u,i||(i=setTimeout(()=>{i=null,o(s)},n-h)))},()=>s&&o(s)]}const ne=(t,e,r=3)=>{let n=0;const s=yr(50,250);return Er(i=>{const o=i.loaded,c=i.lengthComputable?i.total:void 0,l=o-n,u=s(l),d=o<=c;n=o;const h={loaded:o,total:c,progress:c?o/c:void 0,bytes:l,rate:u||void 0,estimated:u&&c&&d?(c-o)/u:void 0,event:i,lengthComputable:c!=null,[e?"download":"upload"]:!0};t(h)},r)},ze=(t,e)=>{const r=t!=null;return[n=>e[0]({lengthComputable:r,total:t,loaded:n}),e[1]]},Ve=t=>(...e)=>a.asap(()=>t(...e)),gr=S.hasStandardBrowserEnv?((t,e)=>r=>(r=new URL(r,S.origin),t.protocol===r.protocol&&t.host===r.host&&(e||t.port===r.port)))(new URL(S.origin),S.navigator&&/(msie|trident)/i.test(S.navigator.userAgent)):()=>!0,br=S.hasStandardBrowserEnv?{write(t,e,r,n,s,i){const o=[t+"="+encodeURIComponent(e)];a.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),a.isString(n)&&o.push("path="+n),a.isString(s)&&o.push("domain="+s),i===!0&&o.push("secure"),document.cookie=o.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Sr(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Rr(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function Je(t,e,r){let n=!Sr(e);return t&&(n||r==!1)?Rr(t,e):e}const Ke=t=>t instanceof T?{...t}:t;function _(t,e){e=e||{};const r={};function n(u,d,h,y){return a.isPlainObject(u)&&a.isPlainObject(d)?a.merge.call({caseless:y},u,d):a.isPlainObject(d)?a.merge({},d):a.isArray(d)?d.slice():d}function s(u,d,h,y){if(a.isUndefined(d)){if(!a.isUndefined(u))return n(void 0,u,h,y)}else return n(u,d,h,y)}function i(u,d){if(!a.isUndefined(d))return n(void 0,d)}function o(u,d){if(a.isUndefined(d)){if(!a.isUndefined(u))return n(void 0,u)}else return n(void 0,d)}function c(u,d,h){if(h in e)return n(u,d);if(h in t)return n(void 0,u)}const l={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:c,headers:(u,d,h)=>s(Ke(u),Ke(d),h,!0)};return a.forEach(Object.keys({...t,...e}),function(d){const h=l[d]||s,y=h(t[d],e[d],d);a.isUndefined(y)&&h!==c||(r[d]=y)}),r}const We=t=>{const e=_({},t);let{data:r,withXSRFToken:n,xsrfHeaderName:s,xsrfCookieName:i,headers:o,auth:c}=e;if(e.headers=o=T.from(o),e.url=Le(Je(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),c&&o.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),a.isFormData(r)){if(S.hasStandardBrowserEnv||S.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if(a.isFunction(r.getHeaders)){const l=r.getHeaders(),u=["content-type","content-length"];Object.entries(l).forEach(([d,h])=>{u.includes(d.toLowerCase())&&o.set(d,h)})}}if(S.hasStandardBrowserEnv&&(n&&a.isFunction(n)&&(n=n(e)),n||n!==!1&&gr(e.url))){const l=s&&i&&br.read(i);l&&o.set(s,l)}return e},Ar=typeof XMLHttpRequest<"u"&&function(t){return new Promise(function(r,n){const s=We(t);let i=s.data;const o=T.from(s.headers).normalize();let{responseType:c,onUploadProgress:l,onDownloadProgress:u}=s,d,h,y,R,f;function m(){R&&R(),f&&f(),s.cancelToken&&s.cancelToken.unsubscribe(d),s.signal&&s.signal.removeEventListener("abort",d)}let p=new XMLHttpRequest;p.open(s.method.toUpperCase(),s.url,!0),p.timeout=s.timeout;function g(){if(!p)return;const b=T.from("getAllResponseHeaders"in p&&p.getAllResponseHeaders()),q={data:!c||c==="text"||c==="json"?p.responseText:p.response,status:p.status,statusText:p.statusText,headers:b,config:t,request:p};ve(function(U){r(U),m()},function(U){n(U),m()},q),p=null}"onloadend"in p?p.onloadend=g:p.onreadystatechange=function(){!p||p.readyState!==4||p.status===0&&!(p.responseURL&&p.responseURL.indexOf("file:")===0)||setTimeout(g)},p.onabort=function(){p&&(n(new w("Request aborted",w.ECONNABORTED,t,p)),p=null)},p.onerror=function(O){const q=O&&O.message?O.message:"Network Error",L=new w(q,w.ERR_NETWORK,t,p);L.event=O||null,n(L),p=null},p.ontimeout=function(){let O=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const q=s.transitional||Be;s.timeoutErrorMessage&&(O=s.timeoutErrorMessage),n(new w(O,q.clarifyTimeoutError?w.ETIMEDOUT:w.ECONNABORTED,t,p)),p=null},i===void 0&&o.setContentType(null),"setRequestHeader"in p&&a.forEach(o.toJSON(),function(O,q){p.setRequestHeader(q,O)}),a.isUndefined(s.withCredentials)||(p.withCredentials=!!s.withCredentials),c&&c!=="json"&&(p.responseType=s.responseType),u&&([y,f]=ne(u,!0),p.addEventListener("progress",y)),l&&p.upload&&([h,R]=ne(l),p.upload.addEventListener("progress",h),p.upload.addEventListener("loadend",R)),(s.cancelToken||s.signal)&&(d=b=>{p&&(n(!b||b.type?new v(null,t,p):b),p.abort(),p=null)},s.cancelToken&&s.cancelToken.subscribe(d),s.signal&&(s.signal.aborted?d():s.signal.addEventListener("abort",d)));const I=wr(s.url);if(I&&S.protocols.indexOf(I)===-1){n(new w("Unsupported protocol "+I+":",w.ERR_BAD_REQUEST,t));return}p.send(i||null)})},Tr=(t,e)=>{const{length:r}=t=t?t.filter(Boolean):[];if(e||r){let n=new AbortController,s;const i=function(u){if(!s){s=!0,c();const d=u instanceof Error?u:this.reason;n.abort(d instanceof w?d:new v(d instanceof Error?d.message:d))}};let o=e&&setTimeout(()=>{o=null,i(new w(`timeout ${e} of ms exceeded`,w.ETIMEDOUT))},e);const c=()=>{t&&(o&&clearTimeout(o),o=null,t.forEach(u=>{u.unsubscribe?u.unsubscribe(i):u.removeEventListener("abort",i)}),t=null)};t.forEach(u=>u.addEventListener("abort",i));const{signal:l}=n;return l.unsubscribe=()=>a.asap(c),l}},Or=function*(t,e){let r=t.byteLength;if(r<e){yield t;return}let n=0,s;for(;n<r;)s=n+e,yield t.slice(n,s),n=s},Ir=async function*(t,e){for await(const r of Ur(t))yield*Or(r,e)},Ur=async function*(t){if(t[Symbol.asyncIterator]){yield*t;return}const e=t.getReader();try{for(;;){const{done:r,value:n}=await e.read();if(r)break;yield n}}finally{await e.cancel()}},Ge=(t,e,r,n)=>{const s=Ir(t,e);let i=0,o,c=l=>{o||(o=!0,n&&n(l))};return new ReadableStream({async pull(l){try{const{done:u,value:d}=await s.next();if(u){c(),l.close();return}let h=d.byteLength;if(r){let y=i+=h;r(y)}l.enqueue(new Uint8Array(d))}catch(u){throw c(u),u}},cancel(l){return c(l),s.return()}},{highWaterMark:2})},Xe=64*1024,{isFunction:se}=a,Cr=(({Request:t,Response:e})=>({Request:t,Response:e}))(a.global),{ReadableStream:Qe,TextEncoder:Ze}=a.global,Ye=(t,...e)=>{try{return!!t(...e)}catch{return!1}},qr=t=>{t=a.merge.call({skipUndefined:!0},Cr,t);const{fetch:e,Request:r,Response:n}=t,s=e?se(e):typeof fetch=="function",i=se(r),o=se(n);if(!s)return!1;const c=s&&se(Qe),l=s&&(typeof Ze=="function"?(f=>m=>f.encode(m))(new Ze):async f=>new Uint8Array(await new r(f).arrayBuffer())),u=i&&c&&Ye(()=>{let f=!1;const m=new r(S.origin,{body:new Qe,method:"POST",get duplex(){return f=!0,"half"}}).headers.has("Content-Type");return f&&!m}),d=o&&c&&Ye(()=>a.isReadableStream(new n("").body)),h={stream:d&&(f=>f.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(f=>{!h[f]&&(h[f]=(m,p)=>{let g=m&&m[f];if(g)return g.call(m);throw new w(`Response type '${f}' is not supported`,w.ERR_NOT_SUPPORT,p)})});const y=async f=>{if(f==null)return 0;if(a.isBlob(f))return f.size;if(a.isSpecCompliantForm(f))return(await new r(S.origin,{method:"POST",body:f}).arrayBuffer()).byteLength;if(a.isArrayBufferView(f)||a.isArrayBuffer(f))return f.byteLength;if(a.isURLSearchParams(f)&&(f=f+""),a.isString(f))return(await l(f)).byteLength},R=async(f,m)=>{const p=a.toFiniteNumber(f.getContentLength());return p??y(m)};return async f=>{let{url:m,method:p,data:g,signal:I,cancelToken:b,timeout:O,onDownloadProgress:q,onUploadProgress:L,responseType:U,headers:Se,withCredentials:ae="same-origin",fetchOptions:at}=We(f),ct=e||fetch;U=U?(U+"").toLowerCase():"text";let ce=Tr([I,b&&b.toAbortSignal()],O),X=null;const $=ce&&ce.unsubscribe&&(()=>{ce.unsubscribe()});let ut;try{if(L&&u&&p!=="get"&&p!=="head"&&(ut=await R(Se,g))!==0){let N=new r(m,{method:"POST",body:g,duplex:"half"}),z;if(a.isFormData(g)&&(z=N.headers.get("content-type"))&&Se.setContentType(z),N.body){const[Re,ue]=ze(ut,ne(Ve(L)));g=Ge(N.body,Xe,Re,ue)}}a.isString(ae)||(ae=ae?"include":"omit");const x=i&&"credentials"in r.prototype,lt={...at,signal:ce,method:p.toUpperCase(),headers:Se.normalize().toJSON(),body:g,duplex:"half",credentials:x?ae:void 0};X=i&&new r(m,lt);let D=await(i?ct(X,at):ct(m,lt));const dt=d&&(U==="stream"||U==="response");if(d&&(q||dt&&$)){const N={};["status","statusText","headers"].forEach(ft=>{N[ft]=D[ft]});const z=a.toFiniteNumber(D.headers.get("content-length")),[Re,ue]=q&&ze(z,ne(Ve(q),!0))||[];D=new n(Ge(D.body,Xe,Re,()=>{ue&&ue(),$&&$()}),N)}U=U||"text";let Lr=await h[a.findKey(h,U)||"text"](D,f);return!dt&&$&&$(),await new Promise((N,z)=>{ve(N,z,{data:Lr,headers:T.from(D.headers),status:D.status,statusText:D.statusText,config:f,request:X})})}catch(x){throw $&&$(),x&&x.name==="TypeError"&&/Load failed|fetch/i.test(x.message)?Object.assign(new w("Network Error",w.ERR_NETWORK,f,X),{cause:x.cause||x}):w.from(x,x&&x.code,f,X)}}},Pr=new Map,et=t=>{let e=t?t.env:{};const{fetch:r,Request:n,Response:s}=e,i=[n,s,r];let o=i.length,c=o,l,u,d=Pr;for(;c--;)l=i[c],u=d.get(l),u===void 0&&d.set(l,u=c?new Map:qr(e)),d=u;return u};et();const Ee={http:Zt,xhr:Ar,fetch:{get:et}};a.forEach(Ee,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const tt=t=>`- ${t}`,xr=t=>a.isFunction(t)||t===null||t===!1,rt={getAdapter:(t,e)=>{t=a.isArray(t)?t:[t];const{length:r}=t;let n,s;const i={};for(let o=0;o<r;o++){n=t[o];let c;if(s=n,!xr(n)&&(s=Ee[(c=String(n)).toLowerCase()],s===void 0))throw new w(`Unknown adapter '${c}'`);if(s&&(a.isFunction(s)||(s=s.get(e))))break;i[c||"#"+o]=s}if(!s){const o=Object.entries(i).map(([l,u])=>`adapter ${l} `+(u===!1?"is not supported by the environment":"is not available in the build"));let c=r?o.length>1?`since :
3
+ `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...r){const n=new this(e);return r.forEach(s=>n.set(s)),n}static accessor(e){const n=(this[Me]=this[Me]={accessors:{}}).accessors,s=this.prototype;function i(o){const c=G(o);n[c]||(mr(s,o),n[c]=!0)}return a.isArray(e)?e.forEach(i):i(e),this}};T.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]),a.reduceDescriptors(T.prototype,({value:t},e)=>{let r=e[0].toUpperCase()+e.slice(1);return{get:()=>t,set(n){this[r]=n}}}),a.freezeMethods(T);function ye(t,e){const r=this||W,n=e||r,s=T.from(n.headers);let i=n.data;return a.forEach(t,function(c){i=c.call(r,i,s.normalize(),e?e.status:void 0)}),s.normalize(),i}function He(t){return!!(t&&t.__CANCEL__)}function v(t,e,r){w.call(this,t??"canceled",w.ERR_CANCELED,e,r),this.name="CanceledError"}a.inherits(v,w,{__CANCEL__:!0});function ve(t,e,r){const n=r.config.validateStatus;!r.status||!n||n(r.status)?t(r):e(new w("Request failed with status code "+r.status,[w.ERR_BAD_REQUEST,w.ERR_BAD_RESPONSE][Math.floor(r.status/100)-4],r.config,r.request,r))}function wr(t){const e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(t);return e&&e[1]||""}function yr(t,e){t=t||10;const r=new Array(t),n=new Array(t);let s=0,i=0,o;return e=e!==void 0?e:1e3,function(l){const u=Date.now(),d=n[i];o||(o=u),r[s]=l,n[s]=u;let h=i,y=0;for(;h!==s;)y+=r[h++],h=h%t;if(s=(s+1)%t,s===i&&(i=(i+1)%t),u-o<e)return;const R=d&&u-d;return R?Math.round(y*1e3/R):void 0}}function Er(t,e){let r=0,n=1e3/e,s,i;const o=(u,d=Date.now())=>{r=d,s=null,i&&(clearTimeout(i),i=null),t(...u)};return[(...u)=>{const d=Date.now(),h=d-r;h>=n?o(u,d):(s=u,i||(i=setTimeout(()=>{i=null,o(s)},n-h)))},()=>s&&o(s)]}const ne=(t,e,r=3)=>{let n=0;const s=yr(50,250);return Er(i=>{const o=i.loaded,c=i.lengthComputable?i.total:void 0,l=o-n,u=s(l),d=o<=c;n=o;const h={loaded:o,total:c,progress:c?o/c:void 0,bytes:l,rate:u||void 0,estimated:u&&c&&d?(c-o)/u:void 0,event:i,lengthComputable:c!=null,[e?"download":"upload"]:!0};t(h)},r)},ze=(t,e)=>{const r=t!=null;return[n=>e[0]({lengthComputable:r,total:t,loaded:n}),e[1]]},Ve=t=>(...e)=>a.asap(()=>t(...e)),br=S.hasStandardBrowserEnv?((t,e)=>r=>(r=new URL(r,S.origin),t.protocol===r.protocol&&t.host===r.host&&(e||t.port===r.port)))(new URL(S.origin),S.navigator&&/(msie|trident)/i.test(S.navigator.userAgent)):()=>!0,gr=S.hasStandardBrowserEnv?{write(t,e,r,n,s,i){const o=[t+"="+encodeURIComponent(e)];a.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),a.isString(n)&&o.push("path="+n),a.isString(s)&&o.push("domain="+s),i===!0&&o.push("secure"),document.cookie=o.join("; ")},read(t){const e=document.cookie.match(new RegExp("(^|;\\s*)("+t+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(t){this.write(t,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Sr(t){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(t)}function Rr(t,e){return e?t.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):t}function Je(t,e,r){let n=!Sr(e);return t&&(n||r==!1)?Rr(t,e):e}const Ke=t=>t instanceof T?{...t}:t;function _(t,e){e=e||{};const r={};function n(u,d,h,y){return a.isPlainObject(u)&&a.isPlainObject(d)?a.merge.call({caseless:y},u,d):a.isPlainObject(d)?a.merge({},d):a.isArray(d)?d.slice():d}function s(u,d,h,y){if(a.isUndefined(d)){if(!a.isUndefined(u))return n(void 0,u,h,y)}else return n(u,d,h,y)}function i(u,d){if(!a.isUndefined(d))return n(void 0,d)}function o(u,d){if(a.isUndefined(d)){if(!a.isUndefined(u))return n(void 0,u)}else return n(void 0,d)}function c(u,d,h){if(h in e)return n(u,d);if(h in t)return n(void 0,u)}const l={url:i,method:i,data:i,baseURL:o,transformRequest:o,transformResponse:o,paramsSerializer:o,timeout:o,timeoutMessage:o,withCredentials:o,withXSRFToken:o,adapter:o,responseType:o,xsrfCookieName:o,xsrfHeaderName:o,onUploadProgress:o,onDownloadProgress:o,decompress:o,maxContentLength:o,maxBodyLength:o,beforeRedirect:o,transport:o,httpAgent:o,httpsAgent:o,cancelToken:o,socketPath:o,responseEncoding:o,validateStatus:c,headers:(u,d,h)=>s(Ke(u),Ke(d),h,!0)};return a.forEach(Object.keys({...t,...e}),function(d){const h=l[d]||s,y=h(t[d],e[d],d);a.isUndefined(y)&&h!==c||(r[d]=y)}),r}const We=t=>{const e=_({},t);let{data:r,withXSRFToken:n,xsrfHeaderName:s,xsrfCookieName:i,headers:o,auth:c}=e;if(e.headers=o=T.from(o),e.url=Le(Je(e.baseURL,e.url,e.allowAbsoluteUrls),t.params,t.paramsSerializer),c&&o.set("Authorization","Basic "+btoa((c.username||"")+":"+(c.password?unescape(encodeURIComponent(c.password)):""))),a.isFormData(r)){if(S.hasStandardBrowserEnv||S.hasStandardBrowserWebWorkerEnv)o.setContentType(void 0);else if(a.isFunction(r.getHeaders)){const l=r.getHeaders(),u=["content-type","content-length"];Object.entries(l).forEach(([d,h])=>{u.includes(d.toLowerCase())&&o.set(d,h)})}}if(S.hasStandardBrowserEnv&&(n&&a.isFunction(n)&&(n=n(e)),n||n!==!1&&br(e.url))){const l=s&&i&&gr.read(i);l&&o.set(s,l)}return e},Ar=typeof XMLHttpRequest<"u"&&function(t){return new Promise(function(r,n){const s=We(t);let i=s.data;const o=T.from(s.headers).normalize();let{responseType:c,onUploadProgress:l,onDownloadProgress:u}=s,d,h,y,R,f;function m(){R&&R(),f&&f(),s.cancelToken&&s.cancelToken.unsubscribe(d),s.signal&&s.signal.removeEventListener("abort",d)}let p=new XMLHttpRequest;p.open(s.method.toUpperCase(),s.url,!0),p.timeout=s.timeout;function b(){if(!p)return;const g=T.from("getAllResponseHeaders"in p&&p.getAllResponseHeaders()),q={data:!c||c==="text"||c==="json"?p.responseText:p.response,status:p.status,statusText:p.statusText,headers:g,config:t,request:p};ve(function(U){r(U),m()},function(U){n(U),m()},q),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&&(n(new w("Request aborted",w.ECONNABORTED,t,p)),p=null)},p.onerror=function(O){const q=O&&O.message?O.message:"Network Error",L=new w(q,w.ERR_NETWORK,t,p);L.event=O||null,n(L),p=null},p.ontimeout=function(){let O=s.timeout?"timeout of "+s.timeout+"ms exceeded":"timeout exceeded";const q=s.transitional||Be;s.timeoutErrorMessage&&(O=s.timeoutErrorMessage),n(new w(O,q.clarifyTimeoutError?w.ETIMEDOUT:w.ECONNABORTED,t,p)),p=null},i===void 0&&o.setContentType(null),"setRequestHeader"in p&&a.forEach(o.toJSON(),function(O,q){p.setRequestHeader(q,O)}),a.isUndefined(s.withCredentials)||(p.withCredentials=!!s.withCredentials),c&&c!=="json"&&(p.responseType=s.responseType),u&&([y,f]=ne(u,!0),p.addEventListener("progress",y)),l&&p.upload&&([h,R]=ne(l),p.upload.addEventListener("progress",h),p.upload.addEventListener("loadend",R)),(s.cancelToken||s.signal)&&(d=g=>{p&&(n(!g||g.type?new v(null,t,p):g),p.abort(),p=null)},s.cancelToken&&s.cancelToken.subscribe(d),s.signal&&(s.signal.aborted?d():s.signal.addEventListener("abort",d)));const I=wr(s.url);if(I&&S.protocols.indexOf(I)===-1){n(new w("Unsupported protocol "+I+":",w.ERR_BAD_REQUEST,t));return}p.send(i||null)})},Tr=(t,e)=>{const{length:r}=t=t?t.filter(Boolean):[];if(e||r){let n=new AbortController,s;const i=function(u){if(!s){s=!0,c();const d=u instanceof Error?u:this.reason;n.abort(d instanceof w?d:new v(d instanceof Error?d.message:d))}};let o=e&&setTimeout(()=>{o=null,i(new w(`timeout ${e} of ms exceeded`,w.ETIMEDOUT))},e);const c=()=>{t&&(o&&clearTimeout(o),o=null,t.forEach(u=>{u.unsubscribe?u.unsubscribe(i):u.removeEventListener("abort",i)}),t=null)};t.forEach(u=>u.addEventListener("abort",i));const{signal:l}=n;return l.unsubscribe=()=>a.asap(c),l}},Or=function*(t,e){let r=t.byteLength;if(r<e){yield t;return}let n=0,s;for(;n<r;)s=n+e,yield t.slice(n,s),n=s},Ir=async function*(t,e){for await(const r of Ur(t))yield*Or(r,e)},Ur=async function*(t){if(t[Symbol.asyncIterator]){yield*t;return}const e=t.getReader();try{for(;;){const{done:r,value:n}=await e.read();if(r)break;yield n}}finally{await e.cancel()}},Ge=(t,e,r,n)=>{const s=Ir(t,e);let i=0,o,c=l=>{o||(o=!0,n&&n(l))};return new ReadableStream({async pull(l){try{const{done:u,value:d}=await s.next();if(u){c(),l.close();return}let h=d.byteLength;if(r){let y=i+=h;r(y)}l.enqueue(new Uint8Array(d))}catch(u){throw c(u),u}},cancel(l){return c(l),s.return()}},{highWaterMark:2})},Xe=64*1024,{isFunction:se}=a,Cr=(({Request:t,Response:e})=>({Request:t,Response:e}))(a.global),{ReadableStream:Qe,TextEncoder:Ze}=a.global,Ye=(t,...e)=>{try{return!!t(...e)}catch{return!1}},qr=t=>{t=a.merge.call({skipUndefined:!0},Cr,t);const{fetch:e,Request:r,Response:n}=t,s=e?se(e):typeof fetch=="function",i=se(r),o=se(n);if(!s)return!1;const c=s&&se(Qe),l=s&&(typeof Ze=="function"?(f=>m=>f.encode(m))(new Ze):async f=>new Uint8Array(await new r(f).arrayBuffer())),u=i&&c&&Ye(()=>{let f=!1;const m=new r(S.origin,{body:new Qe,method:"POST",get duplex(){return f=!0,"half"}}).headers.has("Content-Type");return f&&!m}),d=o&&c&&Ye(()=>a.isReadableStream(new n("").body)),h={stream:d&&(f=>f.body)};s&&["text","arrayBuffer","blob","formData","stream"].forEach(f=>{!h[f]&&(h[f]=(m,p)=>{let b=m&&m[f];if(b)return b.call(m);throw new w(`Response type '${f}' is not supported`,w.ERR_NOT_SUPPORT,p)})});const y=async f=>{if(f==null)return 0;if(a.isBlob(f))return f.size;if(a.isSpecCompliantForm(f))return(await new r(S.origin,{method:"POST",body:f}).arrayBuffer()).byteLength;if(a.isArrayBufferView(f)||a.isArrayBuffer(f))return f.byteLength;if(a.isURLSearchParams(f)&&(f=f+""),a.isString(f))return(await l(f)).byteLength},R=async(f,m)=>{const p=a.toFiniteNumber(f.getContentLength());return p??y(m)};return async f=>{let{url:m,method:p,data:b,signal:I,cancelToken:g,timeout:O,onDownloadProgress:q,onUploadProgress:L,responseType:U,headers:Se,withCredentials:ae="same-origin",fetchOptions:at}=We(f),ct=e||fetch;U=U?(U+"").toLowerCase():"text";let ce=Tr([I,g&&g.toAbortSignal()],O),X=null;const $=ce&&ce.unsubscribe&&(()=>{ce.unsubscribe()});let ut;try{if(L&&u&&p!=="get"&&p!=="head"&&(ut=await R(Se,b))!==0){let N=new r(m,{method:"POST",body:b,duplex:"half"}),z;if(a.isFormData(b)&&(z=N.headers.get("content-type"))&&Se.setContentType(z),N.body){const[Re,ue]=ze(ut,ne(Ve(L)));b=Ge(N.body,Xe,Re,ue)}}a.isString(ae)||(ae=ae?"include":"omit");const x=i&&"credentials"in r.prototype,lt={...at,signal:ce,method:p.toUpperCase(),headers:Se.normalize().toJSON(),body:b,duplex:"half",credentials:x?ae:void 0};X=i&&new r(m,lt);let D=await(i?ct(X,at):ct(m,lt));const dt=d&&(U==="stream"||U==="response");if(d&&(q||dt&&$)){const N={};["status","statusText","headers"].forEach(ft=>{N[ft]=D[ft]});const z=a.toFiniteNumber(D.headers.get("content-length")),[Re,ue]=q&&ze(z,ne(Ve(q),!0))||[];D=new n(Ge(D.body,Xe,Re,()=>{ue&&ue(),$&&$()}),N)}U=U||"text";let Lr=await h[a.findKey(h,U)||"text"](D,f);return!dt&&$&&$(),await new Promise((N,z)=>{ve(N,z,{data:Lr,headers:T.from(D.headers),status:D.status,statusText:D.statusText,config:f,request:X})})}catch(x){throw $&&$(),x&&x.name==="TypeError"&&/Load failed|fetch/i.test(x.message)?Object.assign(new w("Network Error",w.ERR_NETWORK,f,X),{cause:x.cause||x}):w.from(x,x&&x.code,f,X)}}},Pr=new Map,et=t=>{let e=t?t.env:{};const{fetch:r,Request:n,Response:s}=e,i=[n,s,r];let o=i.length,c=o,l,u,d=Pr;for(;c--;)l=i[c],u=d.get(l),u===void 0&&d.set(l,u=c?new Map:qr(e)),d=u;return u};et();const Ee={http:Zt,xhr:Ar,fetch:{get:et}};a.forEach(Ee,(t,e)=>{if(t){try{Object.defineProperty(t,"name",{value:e})}catch{}Object.defineProperty(t,"adapterName",{value:e})}});const tt=t=>`- ${t}`,xr=t=>a.isFunction(t)||t===null||t===!1,rt={getAdapter:(t,e)=>{t=a.isArray(t)?t:[t];const{length:r}=t;let n,s;const i={};for(let o=0;o<r;o++){n=t[o];let c;if(s=n,!xr(n)&&(s=Ee[(c=String(n)).toLowerCase()],s===void 0))throw new w(`Unknown adapter '${c}'`);if(s&&(a.isFunction(s)||(s=s.get(e))))break;i[c||"#"+o]=s}if(!s){const o=Object.entries(i).map(([l,u])=>`adapter ${l} `+(u===!1?"is not supported by the environment":"is not available in the build"));let c=r?o.length>1?`since :
4
4
  `+o.map(tt).join(`
5
- `):" "+tt(o[0]):"as no adapter specified";throw new w("There is no suitable adapter to dispatch the request "+c,"ERR_NOT_SUPPORT")}return s},adapters:Ee};function ge(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new v(null,t)}function nt(t){return ge(t),t.headers=T.from(t.headers),t.data=ye.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),rt.getAdapter(t.adapter||W.adapter,t)(t).then(function(n){return ge(t),n.data=ye.call(t,t.transformResponse,n),n.headers=T.from(n.headers),n},function(n){return He(n)||(ge(t),n&&n.response&&(n.response.data=ye.call(t,t.transformResponse,n.response),n.response.headers=T.from(n.response.headers))),Promise.reject(n)})}const st="1.12.2",oe={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{oe[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}});const ot={};oe.transitional=function(e,r,n){function s(i,o){return"[Axios v"+st+"] Transitional option '"+i+"'"+o+(n?". "+n:"")}return(i,o,c)=>{if(e===!1)throw new w(s(o," has been removed"+(r?" in "+r:"")),w.ERR_DEPRECATED);return r&&!ot[o]&&(ot[o]=!0,console.warn(s(o," has been deprecated since v"+r+" and will be removed in the near future"))),e?e(i,o,c):!0}},oe.spelling=function(e){return(r,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};function Dr(t,e,r){if(typeof t!="object")throw new w("options must be an object",w.ERR_BAD_OPTION_VALUE);const n=Object.keys(t);let s=n.length;for(;s-- >0;){const i=n[s],o=e[i];if(o){const c=t[i],l=c===void 0||o(c,i,t);if(l!==!0)throw new w("option "+i+" must be "+l,w.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new w("Unknown option "+i,w.ERR_BAD_OPTION)}}const ie={assertOptions:Dr,validators:oe},P=ie.validators;let k=class{constructor(e){this.defaults=e||{},this.interceptors={request:new $e,response:new $e}}async request(e,r){try{return await this._request(e,r)}catch(n){if(n instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.stack.replace(/^.+\n/,""):"";try{n.stack?i&&!String(n.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(n.stack+=`
6
- `+i):n.stack=i}catch{}}throw n}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=_(this.defaults,r);const{transitional:n,paramsSerializer:s,headers:i}=r;n!==void 0&&ie.assertOptions(n,{silentJSONParsing:P.transitional(P.boolean),forcedJSONParsing:P.transitional(P.boolean),clarifyTimeoutError:P.transitional(P.boolean)},!1),s!=null&&(a.isFunction(s)?r.paramsSerializer={serialize:s}:ie.assertOptions(s,{encode:P.function,serialize:P.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),ie.assertOptions(r,{baseUrl:P.spelling("baseURL"),withXsrfToken:P.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let o=i&&a.merge(i.common,i[r.method]);i&&a.forEach(["delete","get","head","post","put","patch","common"],f=>{delete i[f]}),r.headers=T.concat(o,i);const c=[];let l=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(r)===!1||(l=l&&m.synchronous,c.unshift(m.fulfilled,m.rejected))});const u=[];this.interceptors.response.forEach(function(m){u.push(m.fulfilled,m.rejected)});let d,h=0,y;if(!l){const f=[nt.bind(this),void 0];for(f.unshift(...c),f.push(...u),y=f.length,d=Promise.resolve(r);h<y;)d=d.then(f[h++],f[h++]);return d}y=c.length;let R=r;for(;h<y;){const f=c[h++],m=c[h++];try{R=f(R)}catch(p){m.call(this,p);break}}try{d=nt.call(this,R)}catch(f){return Promise.reject(f)}for(h=0,y=u.length;h<y;)d=d.then(u[h++],u[h++]);return d}getUri(e){e=_(this.defaults,e);const r=Je(e.baseURL,e.url,e.allowAbsoluteUrls);return Le(r,e.params,e.paramsSerializer)}};a.forEach(["delete","get","head","options"],function(e){k.prototype[e]=function(r,n){return this.request(_(n||{},{method:e,url:r,data:(n||{}).data}))}}),a.forEach(["post","put","patch"],function(e){function r(n){return function(i,o,c){return this.request(_(c||{},{method:e,headers:n?{"Content-Type":"multipart/form-data"}:{},url:i,data:o}))}}k.prototype[e]=r(),k.prototype[e+"Form"]=r(!0)});let Nr=class pt{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(i){r=i});const n=this;this.promise.then(s=>{if(!n._listeners)return;let i=n._listeners.length;for(;i-- >0;)n._listeners[i](s);n._listeners=null}),this.promise.then=s=>{let i;const o=new Promise(c=>{n.subscribe(c),i=c}).then(s);return o.cancel=function(){n.unsubscribe(i)},o},e(function(i,o,c){n.reason||(n.reason=new v(i,o,c),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const e=new AbortController,r=n=>{e.abort(n)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new pt(function(s){e=s}),cancel:e}}};function Fr(t){return function(r){return t.apply(null,r)}}function _r(t){return a.isObject(t)&&t.isAxiosError===!0}const be={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(be).forEach(([t,e])=>{be[e]=t});function it(t){const e=new k(t),r=j(k.prototype.request,e);return a.extend(r,k.prototype,e,{allOwnKeys:!0}),a.extend(r,e,null,{allOwnKeys:!0}),r.create=function(s){return it(_(t,s))},r}const E=it(W);E.Axios=k,E.CanceledError=v,E.CancelToken=Nr,E.isCancel=He,E.VERSION=st,E.toFormData=te,E.AxiosError=w,E.Cancel=E.CanceledError,E.all=function(e){return Promise.all(e)},E.spread=Fr,E.isAxiosError=_r,E.mergeConfig=_,E.AxiosHeaders=T,E.formToJSON=t=>je(a.isHTMLForm(t)?new FormData(t):t),E.getAdapter=rt.getAdapter,E.HttpStatusCode=be,E.default=E;const{Axios:zr,AxiosError:Vr,CanceledError:Jr,isCancel:Kr,CancelToken:Wr,VERSION:Gr,all:Xr,Cancel:Qr,isAxiosError:Zr,spread:Yr,toFormData:en,AxiosHeaders:tn,HttpStatusCode:rn,formToJSON:nn,getAdapter:sn,mergeConfig:on}=E;class kr{appName;baseUrl;apiKey;appId;client;constructor(e){if(!e||!e.baseUrl)throw new Error("NeuctraAuthix: 'baseUrl' is required in config");const r=e.apiKey;if(!r)throw new Error("NeuctraAuthix: 'apiKey' is required in config");this.appName=e.appName,this.baseUrl=e.baseUrl.replace(/\/$/,""),this.apiKey=r,this.appId=e.appId||null,this.client=E.create({baseURL:this.baseUrl,headers:{"Content-Type":"application/json","x-api-key":r},timeout:3e4,withCredentials:!0})}async request(e,r,n,s={},i=!1){try{const o=e.toUpperCase(),c=o==="GET"||o==="HEAD"?void 0:{...this.appId?{appId:this.appId}:{},...n||{}};return(await this.client.request({url:r,method:e,data:c,headers:s,withCredentials:i})).data}catch(o){if(E.isAxiosError(o)){const c=o.response?.status??0,l=o.response?.data;let u=l?.message||o.message||"Request failed";throw c===403&&l?.code==="INSUFFICIENT_SCOPE"&&(u=`${u} (called "${r}" with an API key). This endpoint needs an API key — call it from your server, not from client code.`),c===401&&l?.code==="NO_USER_SESSION"&&(u=`${u} Sign the user in with loginUser() first — this endpoint acts on the signed-in user's own data.`),c===409&&l?.code==="VERSION_CONFLICT"?{message:`${u} Re-read the record to get its current version, then retry the update.`,status:c,code:"VERSION_CONFLICT",isConflict:!0,currentVersion:l?.currentVersion,expectedVersion:l?.expectedVersion}:c===429?{message:u,status:c,code:l?.code||"RATE_LIMITED",isRateLimited:!0,resetDate:l?.resetDate}:{message:u,status:c,code:l?.code}}throw{message:o.message||"Unexpected error occurred"}}}async signupUser(e){const{name:r,email:n,password:s}=e;if(!r||!n||!s)throw new Error("signup: 'name', 'email', and 'password' are required");return await this.request("POST","/users/signup",e,{},!0)}async loginUser(e){const{email:r,password:n}=e;if(!r||!n)throw new Error("login: 'email' and 'password' are required");try{return await this.request("POST","/users/login",{email:r,password:n},{},!0)}catch(s){throw new Error(s.message||"Login failed due to an unknown error")}}async logoutUser(){try{return(await this.request("POST","/users/logout",{},{},!0))?.success?(typeof window<"u"&&(document.cookie="a_s_b=; path=/; Max-Age=0; SameSite=Lax",window.location.protocol==="https:"&&(document.cookie="a_s_b=; path=/; Max-Age=0; SameSite=Lax; Secure"),window.location.reload()),{success:!0}):{success:!1}}catch(e){throw new Error(e?.message||"Logout failed due to an unknown error")}}async changePassword(e){const{userId:r,currentPassword:n,newPassword:s}=e;if(!r)throw new Error("changePassword: 'userId' is required");if(!n||!s)throw new Error("changePassword: both 'currentPassword' and 'newPassword' are required");return await this.request("PUT",`/users/change-password/${r}`,{currentPassword:n,newPassword:s},{},!0)}async requestEmailVerificationOTP(e){const{userId:r,email:n}=e;if(!r)throw{message:"requestEmailVerificationOTP: 'userId' is required",status:400};if(!n)throw{message:"requestEmailVerificationOTP: 'email' is required",status:400};try{return await this.request("POST",`/users/send-verify-otp/${encodeURIComponent(r)}`,{email:n},{},!0)}catch(s){throw console.error("requestEmailVerificationOTP Error:",s),{message:s?.message||"Failed to send verification OTP",status:s?.status||500}}}async verifyEmail(e){const{email:r,otp:n}=e;if(!r)throw new Error("verifyEmail: 'email' is required");if(!n)throw new Error("verifyEmail: 'otp' is required");try{return await this.request("POST","/users/verify-email",{email:r,otp:n},{},!0)}catch(s){throw{message:s.message||"Failed to verify email",status:s.status||500}}}async checkUserSession(){if(typeof window>"u")return{authenticated:!1};const e=()=>{document.cookie="a_s_b=; path=/; Max-Age=0; SameSite=Lax",window.location.protocol==="https:"&&(document.cookie="a_s_b=; path=/; Max-Age=0; SameSite=Lax; Secure")};try{const r=await this.request("GET","/users/session",void 0,{},!0);return r?.authenticated||e(),r??{authenticated:!1}}catch{return e(),{authenticated:!1}}}async getUser(e){const r=this.appId;if(!r)throw new Error("getUser: 'appId' is required in SDK config");if(!e?.id&&!e?.username)throw new Error("getUser: either 'id' or 'username' is required");const n=new URLSearchParams;return e.id&&n.append("id",e.id),e.username&&n.append("username",e.username),await this.request("GET",`/users/${encodeURIComponent(r)}/user?${n.toString()}`,void 0,{},!0)}async updateUser(e){const{userId:r,...n}=e;if(!r)throw new Error("updateUser: 'userId' is required");if(!n.appId)throw new Error("updateUser: 'appId' is required");return await this.request("PUT",`/users/update/${r}`,n,{},!0)}async deleteUser(e){const{userId:r}=e;if(!r)throw new Error("deleteUser: 'userId' is required");return await this.request("DELETE",`/users/delete/${r}`,{},{},!0)}async getUserProfile(e){const{userId:r}=e;if(!r)throw new Error("getProfile: 'userId' and 'appId' are required");try{return await this.request("POST","/users/profile",{userId:r},{},!0)}catch(n){throw{message:n.message||"Failed to fetch profile",status:n.status||500}}}async requestResetUserPasswordOTP(e){const{email:r}=e;if(!r)throw new Error("forgotPassword: 'email' is required");return await this.request("POST","/users/forgot-password",{email:r})}async resetUserPassword(e){const{email:r,otp:n,newPassword:s}=e;if(!r||!n||!s)throw new Error("resetPassword: 'email', 'otp' and 'newPassword' are required");return await this.request("POST","/users/reset-password",{email:r,otp:n,newPassword:s})}async checkIfUserExists(e){if(!e)throw new Error("checkUser: 'userId' is required");return await this.request("GET",`/users/check-user/${e}?appId=${this.appId}`)}async addUserData(e){const{userId:r,dataCategory:n,data:s}=e;if(!r)throw new Error("addUserData: 'userId' is required");if(!n)throw new Error("addUserData: 'dataCategory' is required");if(!s)throw new Error("addUserData: 'data' is required");return await this.request("POST",`/users/${r}/data`,{dataCategory:n,...s},{},!1)}async getUserData(e){const{userId:r,limit:n=20,cursor:s,category:i,parentId:o}=e;if(!r)throw new Error("getUserData: 'userId' is required");const c=`/users/${encodeURIComponent(r)}/data`,l=new URLSearchParams;l.set("limit",String(n)),s&&l.set("cursor",s),i&&l.set("category",i),o&&l.set("parentId",o);const u=l.toString();return this.request("GET",u?`${c}?${u}`:c,void 0,{},!1)}async getSingleUserData(e){const{userId:r,dataId:n}=e;if(!r||!n)throw new Error("getSingleUserData: 'userId' and 'dataId' are required");return await this.request("GET",`/users/${r}/data/${n}`,void 0,{},!1)}async searchInUserData(e){const{userId:r,category:n,q:s,keys:i,limit:o,cursor:c}=e||{};if(!r)throw new Error("searchUserData: 'userId' is required");return await this.request("POST",`/users/${encodeURIComponent(r)}/data/search`,{category:n,q:s,keys:i&&Object.keys(i).length>0?i:{},...o!==void 0?{limit:o}:{},...c?{cursor:c}:{}},{},!1)}async*iterateUserData(e){let r;do{const n=await this.getUserData({...e,cursor:r});yield n,r=n?.nextCursor||void 0}while(r)}async updateUserData(e){const{userId:r,dataId:n,data:s,version:i}=e;if(!r||!n)throw new Error("updateUserData: 'userId' and 'dataId' are required");if(!s)throw new Error("updateUserData: 'data' is required");return await this.request("PUT",`/users/${r}/data/${n}`,{...s,...i!==void 0?{version:i}:{}},{},!1)}async deleteUserData(e){const{userId:r,dataId:n}=e;if(!r||!n)throw new Error("deleteUserData: 'userId' and 'dataId' are required");return await this.request("DELETE",`/users/${r}/data/${n}`,void 0,{},!1)}async deleteManyUserData(e){const{userId:r,dataIds:n}=e||{};if(!r)throw new Error("deleteManyUserData: 'userId' is required");if(!Array.isArray(n)||n.length===0)throw new Error("deleteManyUserData: 'dataIds' must be a non-empty array");return await this.request("POST",`/users/${encodeURIComponent(r)}/data-bulk-delete`,{dataIds:n},{},!1)}async batch(e){const{userId:r,operations:n}=e||{};if(!r)throw new Error("batch: 'userId' is required");if(!Array.isArray(n)||n.length===0)throw new Error("batch: 'operations' must be a non-empty array");const s=n.findIndex(i=>!i||!["create","update","delete"].includes(i.type));if(s!==-1)throw new Error(`batch: operations[${s}].type must be "create", "update", or "delete"`);return await this.request("POST",`/users/${encodeURIComponent(r)}/data-batch`,{operations:n},{},!1)}async addAppData(e){const r=this.appId;if(!r)throw new Error("addAppData: 'appId' is required");const{dataCategory:n,data:s}=e;if(!n)throw new Error("addAppData: 'dataCategory' is required");if(!s||typeof s!="object")throw new Error("addAppData: 'data' is required");return await this.request("POST",`/app/${encodeURIComponent(r)}/data/${encodeURIComponent(n)}`,s,{},!1)}async getAppData(e){const r=this.appId;if(!r)throw new Error("getAppData: 'appId' is required");const n=typeof e=="string"?{category:e}:e||{},{category:s,limit:i,cursor:o}=n,c=s?`/app/${encodeURIComponent(r)}/app-data/${encodeURIComponent(s)}`:`/app/${encodeURIComponent(r)}/app-data`,l=new URLSearchParams;i!==void 0&&l.set("limit",String(i)),o&&l.set("cursor",o);const u=l.toString();return await this.request("GET",u?`${c}?${u}`:c,void 0,{},!1)}async getSingleAppData(e){const r=this.appId;if(!r)throw new Error("getSingleAppData: 'appId' is required");if(!e?.dataId)throw new Error("getSingleAppData: 'dataId' is required");return await this.request("GET",`/app/${encodeURIComponent(r)}/data/${encodeURIComponent(e.dataId)}`,void 0,{},!1)}async searchInAppData(e){const r=this.appId;if(!r)throw new Error("searchInAppData: 'appId' is required");const{category:n,q:s,keys:i,limit:o,cursor:c}=e||{};return await this.request("POST",`/app/${encodeURIComponent(r)}/app-data/search`,{category:n,q:s,keys:i&&Object.keys(i).length>0?i:{},...o!==void 0?{limit:o}:{},...c?{cursor:c}:{}},{},!1)}async updateAppData(e){const r=this.appId;if(!r)throw new Error("updateAppData: 'appId' is required");if(!e?.dataId)throw new Error("updateAppData: 'dataId' is required");if(!e?.data||typeof e.data!="object")throw new Error("updateAppData: 'data' is required");return await this.request("PATCH",`/app/${encodeURIComponent(r)}/data/${encodeURIComponent(e.dataId)}`,e.data,{},!1)}async deleteAppData(e){const r=this.appId;if(!r)throw new Error("deleteAppData: 'appId' is required");if(!e?.dataId)throw new Error("deleteAppData: 'dataId' is required");return await this.request("DELETE",`/app/${encodeURIComponent(r)}/data/${encodeURIComponent(e.dataId)}`,void 0,{},!1)}async getAllUsersFromApp(e={}){const r=this.appId;if(!r)throw new Error("getAllUsersFromApp: 'appId' is required");const{cursor:n,limit:s}=e,i={};return n&&(i.cursor=n),s!==void 0&&(i.limit=s),await this.request("POST",`/app/global/${encodeURIComponent(r)}/all-app-users`,i,{},!1)}async searchInAllAppUsers(e={}){const r=this.appId;if(!r)throw new Error("searchInAllAppUsers: 'appId' is required");const{q:n,keys:s={},limit:i,cursor:o}=e,c={};return n&&(c.q=n),s&&Object.keys(s).length>0&&(c.keys=s),i!==void 0&&(c.limit=i),o&&(c.cursor=o),await this.request("POST",`/app/global/${encodeURIComponent(r)}/all-app-users/search`,c,{},!1)}async getAllUsersDataFromApp(e={}){const r=this.appId;if(!r)throw new Error("getAllUsersDataFromApp: 'appId' is required");const{category:n,cursor:s,limit:i}=e,o={};return n&&(o.category=n),s&&(o.cursor=s),i!==void 0&&(o.limit=i),await this.request("POST",`/app/global/${encodeURIComponent(r)}/all-app-users-data`,o,{},!1)}async searchInAllAppUsersData(e={}){const r=this.appId;if(!r)throw new Error("searchInAllAppUsersData: 'appId' is required");const{category:n,q:s,keys:i={},limit:o,cursor:c}=e,l={};return n&&(l.category=n),s&&(l.q=s),i&&Object.keys(i).length>0&&(l.keys=i),o!==void 0&&(l.limit=o),c&&(l.cursor=c),await this.request("POST",`/app/global/${encodeURIComponent(r)}/all-app-users-data/search`,l,{},!1)}}B.NeuctraAuthix=kr,Object.defineProperty(B,Symbol.toStringTag,{value:"Module"})}));
5
+ `):" "+tt(o[0]):"as no adapter specified";throw new w("There is no suitable adapter to dispatch the request "+c,"ERR_NOT_SUPPORT")}return s},adapters:Ee};function be(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new v(null,t)}function nt(t){return be(t),t.headers=T.from(t.headers),t.data=ye.call(t,t.transformRequest),["post","put","patch"].indexOf(t.method)!==-1&&t.headers.setContentType("application/x-www-form-urlencoded",!1),rt.getAdapter(t.adapter||W.adapter,t)(t).then(function(n){return be(t),n.data=ye.call(t,t.transformResponse,n),n.headers=T.from(n.headers),n},function(n){return He(n)||(be(t),n&&n.response&&(n.response.data=ye.call(t,t.transformResponse,n.response),n.response.headers=T.from(n.response.headers))),Promise.reject(n)})}const st="1.12.2",oe={};["object","boolean","number","function","string","symbol"].forEach((t,e)=>{oe[t]=function(n){return typeof n===t||"a"+(e<1?"n ":" ")+t}});const ot={};oe.transitional=function(e,r,n){function s(i,o){return"[Axios v"+st+"] Transitional option '"+i+"'"+o+(n?". "+n:"")}return(i,o,c)=>{if(e===!1)throw new w(s(o," has been removed"+(r?" in "+r:"")),w.ERR_DEPRECATED);return r&&!ot[o]&&(ot[o]=!0,console.warn(s(o," has been deprecated since v"+r+" and will be removed in the near future"))),e?e(i,o,c):!0}},oe.spelling=function(e){return(r,n)=>(console.warn(`${n} is likely a misspelling of ${e}`),!0)};function Dr(t,e,r){if(typeof t!="object")throw new w("options must be an object",w.ERR_BAD_OPTION_VALUE);const n=Object.keys(t);let s=n.length;for(;s-- >0;){const i=n[s],o=e[i];if(o){const c=t[i],l=c===void 0||o(c,i,t);if(l!==!0)throw new w("option "+i+" must be "+l,w.ERR_BAD_OPTION_VALUE);continue}if(r!==!0)throw new w("Unknown option "+i,w.ERR_BAD_OPTION)}}const ie={assertOptions:Dr,validators:oe},P=ie.validators;let k=class{constructor(e){this.defaults=e||{},this.interceptors={request:new $e,response:new $e}}async request(e,r){try{return await this._request(e,r)}catch(n){if(n instanceof Error){let s={};Error.captureStackTrace?Error.captureStackTrace(s):s=new Error;const i=s.stack?s.stack.replace(/^.+\n/,""):"";try{n.stack?i&&!String(n.stack).endsWith(i.replace(/^.+\n.+\n/,""))&&(n.stack+=`
6
+ `+i):n.stack=i}catch{}}throw n}}_request(e,r){typeof e=="string"?(r=r||{},r.url=e):r=e||{},r=_(this.defaults,r);const{transitional:n,paramsSerializer:s,headers:i}=r;n!==void 0&&ie.assertOptions(n,{silentJSONParsing:P.transitional(P.boolean),forcedJSONParsing:P.transitional(P.boolean),clarifyTimeoutError:P.transitional(P.boolean)},!1),s!=null&&(a.isFunction(s)?r.paramsSerializer={serialize:s}:ie.assertOptions(s,{encode:P.function,serialize:P.function},!0)),r.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?r.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:r.allowAbsoluteUrls=!0),ie.assertOptions(r,{baseUrl:P.spelling("baseURL"),withXsrfToken:P.spelling("withXSRFToken")},!0),r.method=(r.method||this.defaults.method||"get").toLowerCase();let o=i&&a.merge(i.common,i[r.method]);i&&a.forEach(["delete","get","head","post","put","patch","common"],f=>{delete i[f]}),r.headers=T.concat(o,i);const c=[];let l=!0;this.interceptors.request.forEach(function(m){typeof m.runWhen=="function"&&m.runWhen(r)===!1||(l=l&&m.synchronous,c.unshift(m.fulfilled,m.rejected))});const u=[];this.interceptors.response.forEach(function(m){u.push(m.fulfilled,m.rejected)});let d,h=0,y;if(!l){const f=[nt.bind(this),void 0];for(f.unshift(...c),f.push(...u),y=f.length,d=Promise.resolve(r);h<y;)d=d.then(f[h++],f[h++]);return d}y=c.length;let R=r;for(;h<y;){const f=c[h++],m=c[h++];try{R=f(R)}catch(p){m.call(this,p);break}}try{d=nt.call(this,R)}catch(f){return Promise.reject(f)}for(h=0,y=u.length;h<y;)d=d.then(u[h++],u[h++]);return d}getUri(e){e=_(this.defaults,e);const r=Je(e.baseURL,e.url,e.allowAbsoluteUrls);return Le(r,e.params,e.paramsSerializer)}};a.forEach(["delete","get","head","options"],function(e){k.prototype[e]=function(r,n){return this.request(_(n||{},{method:e,url:r,data:(n||{}).data}))}}),a.forEach(["post","put","patch"],function(e){function r(n){return function(i,o,c){return this.request(_(c||{},{method:e,headers:n?{"Content-Type":"multipart/form-data"}:{},url:i,data:o}))}}k.prototype[e]=r(),k.prototype[e+"Form"]=r(!0)});let Nr=class pt{constructor(e){if(typeof e!="function")throw new TypeError("executor must be a function.");let r;this.promise=new Promise(function(i){r=i});const n=this;this.promise.then(s=>{if(!n._listeners)return;let i=n._listeners.length;for(;i-- >0;)n._listeners[i](s);n._listeners=null}),this.promise.then=s=>{let i;const o=new Promise(c=>{n.subscribe(c),i=c}).then(s);return o.cancel=function(){n.unsubscribe(i)},o},e(function(i,o,c){n.reason||(n.reason=new v(i,o,c),r(n.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;const r=this._listeners.indexOf(e);r!==-1&&this._listeners.splice(r,1)}toAbortSignal(){const e=new AbortController,r=n=>{e.abort(n)};return this.subscribe(r),e.signal.unsubscribe=()=>this.unsubscribe(r),e.signal}static source(){let e;return{token:new pt(function(s){e=s}),cancel:e}}};function Fr(t){return function(r){return t.apply(null,r)}}function _r(t){return a.isObject(t)&&t.isAxiosError===!0}const ge={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(ge).forEach(([t,e])=>{ge[e]=t});function it(t){const e=new k(t),r=j(k.prototype.request,e);return a.extend(r,k.prototype,e,{allOwnKeys:!0}),a.extend(r,e,null,{allOwnKeys:!0}),r.create=function(s){return it(_(t,s))},r}const E=it(W);E.Axios=k,E.CanceledError=v,E.CancelToken=Nr,E.isCancel=He,E.VERSION=st,E.toFormData=te,E.AxiosError=w,E.Cancel=E.CanceledError,E.all=function(e){return Promise.all(e)},E.spread=Fr,E.isAxiosError=_r,E.mergeConfig=_,E.AxiosHeaders=T,E.formToJSON=t=>je(a.isHTMLForm(t)?new FormData(t):t),E.getAdapter=rt.getAdapter,E.HttpStatusCode=ge,E.default=E;const{Axios:zr,AxiosError:Vr,CanceledError:Jr,isCancel:Kr,CancelToken:Wr,VERSION:Gr,all:Xr,Cancel:Qr,isAxiosError:Zr,spread:Yr,toFormData:en,AxiosHeaders:tn,HttpStatusCode:rn,formToJSON:nn,getAdapter:sn,mergeConfig:on}=E;class kr{appName;baseUrl;apiKey;appId;client;constructor(e){if(!e||!e.baseUrl)throw new Error("NeuctraAuthix: 'baseUrl' is required in config");const r=e.apiKey;if(!r)throw new Error("NeuctraAuthix: 'apiKey' is required in config");this.appName=e.appName,this.baseUrl=e.baseUrl.replace(/\/$/,""),this.apiKey=r,this.appId=e.appId||null,this.client=E.create({baseURL:this.baseUrl,headers:{"Content-Type":"application/json","x-api-key":r},timeout:3e4,withCredentials:!0})}async request(e,r,n,s={},i=!1){try{const o=e.toUpperCase(),c=o==="GET"||o==="HEAD"?void 0:{...this.appId?{appId:this.appId}:{},...n||{}};return(await this.client.request({url:r,method:e,data:c,headers:s,withCredentials:i})).data}catch(o){if(E.isAxiosError(o)){const c=o.response?.status??0,l=o.response?.data;let u=l?.message||o.message||"Request failed";throw c===403&&l?.code==="INSUFFICIENT_SCOPE"&&(u=`${u} (called "${r}"). This endpoint needs a secret key — call it from your server, not from client code with a publishable key.`),c===403&&l?.code==="SECRET_KEY_IN_BROWSER"&&(u=`${u} Create a publishable key in the dashboard (API Keys) and use it here instead.`),c===401&&l?.code==="NO_USER_SESSION"&&(u=`${u} Sign the user in with loginUser() first — this endpoint acts on the signed-in user's own data.`),c===409&&l?.code==="VERSION_CONFLICT"?{message:`${u} Re-read the record to get its current version, then retry the update.`,status:c,code:"VERSION_CONFLICT",isConflict:!0,currentVersion:l?.currentVersion,expectedVersion:l?.expectedVersion}:c===429?{message:u,status:c,code:l?.code||"RATE_LIMITED",isRateLimited:!0,resetDate:l?.resetDate}:{message:u,status:c,code:l?.code}}throw{message:o.message||"Unexpected error occurred"}}}async signupUser(e){const{name:r,email:n,password:s}=e;if(!r||!n||!s)throw new Error("signup: 'name', 'email', and 'password' are required");return await this.request("POST","/users/signup",e,{},!0)}async loginUser(e){const{email:r,password:n}=e;if(!r||!n)throw new Error("login: 'email' and 'password' are required");try{return await this.request("POST","/users/login",{email:r,password:n},{},!0)}catch(s){throw new Error(s.message||"Login failed due to an unknown error")}}async logoutUser(){try{return(await this.request("POST","/users/logout",{},{},!0))?.success?(typeof window<"u"&&(document.cookie="a_s_b=; path=/; Max-Age=0; SameSite=Lax",window.location.protocol==="https:"&&(document.cookie="a_s_b=; path=/; Max-Age=0; SameSite=Lax; Secure"),window.location.reload()),{success:!0}):{success:!1}}catch(e){throw new Error(e?.message||"Logout failed due to an unknown error")}}async changePassword(e){const{userId:r,currentPassword:n,newPassword:s}=e;if(!r)throw new Error("changePassword: 'userId' is required");if(!n||!s)throw new Error("changePassword: both 'currentPassword' and 'newPassword' are required");return await this.request("PUT",`/users/change-password/${r}`,{currentPassword:n,newPassword:s},{},!0)}async requestEmailVerificationOTP(e){const{userId:r,email:n}=e;if(!r)throw{message:"requestEmailVerificationOTP: 'userId' is required",status:400};if(!n)throw{message:"requestEmailVerificationOTP: 'email' is required",status:400};try{return await this.request("POST",`/users/send-verify-otp/${encodeURIComponent(r)}`,{email:n},{},!0)}catch(s){throw console.error("requestEmailVerificationOTP Error:",s),{message:s?.message||"Failed to send verification OTP",status:s?.status||500}}}async verifyEmail(e){const{email:r,otp:n}=e;if(!r)throw new Error("verifyEmail: 'email' is required");if(!n)throw new Error("verifyEmail: 'otp' is required");try{return await this.request("POST","/users/verify-email",{email:r,otp:n},{},!0)}catch(s){throw{message:s.message||"Failed to verify email",status:s.status||500}}}async checkUserSession(){if(typeof window>"u")return{authenticated:!1};const e=()=>{document.cookie="a_s_b=; path=/; Max-Age=0; SameSite=Lax",window.location.protocol==="https:"&&(document.cookie="a_s_b=; path=/; Max-Age=0; SameSite=Lax; Secure")};try{const r=await this.request("GET","/users/session",void 0,{},!0);return r?.authenticated||e(),r??{authenticated:!1}}catch{return e(),{authenticated:!1}}}async getUser(e){const r=this.appId;if(!r)throw new Error("getUser: 'appId' is required in SDK config");if(!e?.id&&!e?.username)throw new Error("getUser: either 'id' or 'username' is required");const n=new URLSearchParams;return e.id&&n.append("id",e.id),e.username&&n.append("username",e.username),await this.request("GET",`/users/${encodeURIComponent(r)}/user?${n.toString()}`,void 0,{},!0)}async updateUser(e){const{userId:r,...n}=e;if(!r)throw new Error("updateUser: 'userId' is required");if(!n.appId)throw new Error("updateUser: 'appId' is required");return await this.request("PUT",`/users/update/${r}`,n,{},!0)}async deleteUser(e){const{userId:r}=e;if(!r)throw new Error("deleteUser: 'userId' is required");return await this.request("DELETE",`/users/delete/${r}`,{},{},!0)}async getUserProfile(e){const{userId:r}=e;if(!r)throw new Error("getProfile: 'userId' and 'appId' are required");try{return await this.request("POST","/users/profile",{userId:r},{},!0)}catch(n){throw{message:n.message||"Failed to fetch profile",status:n.status||500}}}async requestResetUserPasswordOTP(e){const{email:r}=e;if(!r)throw new Error("forgotPassword: 'email' is required");return await this.request("POST","/users/forgot-password",{email:r})}async resetUserPassword(e){const{email:r,otp:n,newPassword:s}=e;if(!r||!n||!s)throw new Error("resetPassword: 'email', 'otp' and 'newPassword' are required");return await this.request("POST","/users/reset-password",{email:r,otp:n,newPassword:s})}async checkIfUserExists(e){if(!e)throw new Error("checkUser: 'userId' is required");return await this.request("GET",`/users/check-user/${e}?appId=${this.appId}`)}async addUserData(e){const{userId:r,dataCategory:n,data:s}=e;if(!r)throw new Error("addUserData: 'userId' is required");if(!n)throw new Error("addUserData: 'dataCategory' is required");if(!s)throw new Error("addUserData: 'data' is required");return await this.request("POST",`/users/${r}/data`,{dataCategory:n,...s},{},!0)}async getUserData(e){const{userId:r,limit:n=20,cursor:s,category:i,parentId:o}=e;if(!r)throw new Error("getUserData: 'userId' is required");const c=`/users/${encodeURIComponent(r)}/data`,l=new URLSearchParams;l.set("limit",String(n)),s&&l.set("cursor",s),i&&l.set("category",i),o&&l.set("parentId",o);const u=l.toString();return this.request("GET",u?`${c}?${u}`:c,void 0,{},!0)}async getSingleUserData(e){const{userId:r,dataId:n}=e;if(!r||!n)throw new Error("getSingleUserData: 'userId' and 'dataId' are required");return await this.request("GET",`/users/${r}/data/${n}`,void 0,{},!0)}async searchInUserData(e){const{userId:r,category:n,q:s,keys:i,limit:o,cursor:c}=e||{};if(!r)throw new Error("searchUserData: 'userId' is required");return await this.request("POST",`/users/${encodeURIComponent(r)}/data/search`,{category:n,q:s,keys:i&&Object.keys(i).length>0?i:{},...o!==void 0?{limit:o}:{},...c?{cursor:c}:{}},{},!0)}async*iterateUserData(e){let r;do{const n=await this.getUserData({...e,cursor:r});yield n,r=n?.nextCursor||void 0}while(r)}async updateUserData(e){const{userId:r,dataId:n,data:s,version:i}=e;if(!r||!n)throw new Error("updateUserData: 'userId' and 'dataId' are required");if(!s)throw new Error("updateUserData: 'data' is required");return await this.request("PUT",`/users/${r}/data/${n}`,{...s,...i!==void 0?{version:i}:{}},{},!0)}async deleteUserData(e){const{userId:r,dataId:n}=e;if(!r||!n)throw new Error("deleteUserData: 'userId' and 'dataId' are required");return await this.request("DELETE",`/users/${r}/data/${n}`,void 0,{},!0)}async deleteManyUserData(e){const{userId:r,dataIds:n}=e||{};if(!r)throw new Error("deleteManyUserData: 'userId' is required");if(!Array.isArray(n)||n.length===0)throw new Error("deleteManyUserData: 'dataIds' must be a non-empty array");return await this.request("POST",`/users/${encodeURIComponent(r)}/data-bulk-delete`,{dataIds:n},{},!0)}async batch(e){const{userId:r,operations:n}=e||{};if(!r)throw new Error("batch: 'userId' is required");if(!Array.isArray(n)||n.length===0)throw new Error("batch: 'operations' must be a non-empty array");const s=n.findIndex(i=>!i||!["create","update","delete"].includes(i.type));if(s!==-1)throw new Error(`batch: operations[${s}].type must be "create", "update", or "delete"`);return await this.request("POST",`/users/${encodeURIComponent(r)}/data-batch`,{operations:n},{},!0)}async addAppData(e){const r=this.appId;if(!r)throw new Error("addAppData: 'appId' is required");const{dataCategory:n,data:s}=e;if(!n)throw new Error("addAppData: 'dataCategory' is required");if(!s||typeof s!="object")throw new Error("addAppData: 'data' is required");return await this.request("POST",`/app/${encodeURIComponent(r)}/data/${encodeURIComponent(n)}`,s,{},!1)}async getAppData(e){const r=this.appId;if(!r)throw new Error("getAppData: 'appId' is required");const n=typeof e=="string"?{category:e}:e||{},{category:s,limit:i,cursor:o}=n,c=s?`/app/${encodeURIComponent(r)}/app-data/${encodeURIComponent(s)}`:`/app/${encodeURIComponent(r)}/app-data`,l=new URLSearchParams;i!==void 0&&l.set("limit",String(i)),o&&l.set("cursor",o);const u=l.toString();return await this.request("GET",u?`${c}?${u}`:c,void 0,{},!1)}async getSingleAppData(e){const r=this.appId;if(!r)throw new Error("getSingleAppData: 'appId' is required");if(!e?.dataId)throw new Error("getSingleAppData: 'dataId' is required");return await this.request("GET",`/app/${encodeURIComponent(r)}/data/${encodeURIComponent(e.dataId)}`,void 0,{},!1)}async searchInAppData(e){const r=this.appId;if(!r)throw new Error("searchInAppData: 'appId' is required");const{category:n,q:s,keys:i,limit:o,cursor:c}=e||{};return await this.request("POST",`/app/${encodeURIComponent(r)}/app-data/search`,{category:n,q:s,keys:i&&Object.keys(i).length>0?i:{},...o!==void 0?{limit:o}:{},...c?{cursor:c}:{}},{},!1)}async updateAppData(e){const r=this.appId;if(!r)throw new Error("updateAppData: 'appId' is required");if(!e?.dataId)throw new Error("updateAppData: 'dataId' is required");if(!e?.data||typeof e.data!="object")throw new Error("updateAppData: 'data' is required");return await this.request("PATCH",`/app/${encodeURIComponent(r)}/data/${encodeURIComponent(e.dataId)}`,e.data,{},!1)}async deleteAppData(e){const r=this.appId;if(!r)throw new Error("deleteAppData: 'appId' is required");if(!e?.dataId)throw new Error("deleteAppData: 'dataId' is required");return await this.request("DELETE",`/app/${encodeURIComponent(r)}/data/${encodeURIComponent(e.dataId)}`,void 0,{},!1)}async getAllUsersFromApp(e={}){const r=this.appId;if(!r)throw new Error("getAllUsersFromApp: 'appId' is required");const{cursor:n,limit:s}=e,i={};return n&&(i.cursor=n),s!==void 0&&(i.limit=s),await this.request("POST",`/app/global/${encodeURIComponent(r)}/all-app-users`,i,{},!1)}async searchInAllAppUsers(e={}){const r=this.appId;if(!r)throw new Error("searchInAllAppUsers: 'appId' is required");const{q:n,keys:s={},limit:i,cursor:o}=e,c={};return n&&(c.q=n),s&&Object.keys(s).length>0&&(c.keys=s),i!==void 0&&(c.limit=i),o&&(c.cursor=o),await this.request("POST",`/app/global/${encodeURIComponent(r)}/all-app-users/search`,c,{},!1)}async getAllUsersDataFromApp(e={}){const r=this.appId;if(!r)throw new Error("getAllUsersDataFromApp: 'appId' is required");const{category:n,cursor:s,limit:i}=e,o={};return n&&(o.category=n),s&&(o.cursor=s),i!==void 0&&(o.limit=i),await this.request("POST",`/app/global/${encodeURIComponent(r)}/all-app-users-data`,o,{},!1)}async searchInAllAppUsersData(e={}){const r=this.appId;if(!r)throw new Error("searchInAllAppUsersData: 'appId' is required");const{category:n,q:s,keys:i={},limit:o,cursor:c}=e,l={};return n&&(l.category=n),s&&(l.q=s),i&&Object.keys(i).length>0&&(l.keys=i),o!==void 0&&(l.limit=o),c&&(l.cursor=c),await this.request("POST",`/app/global/${encodeURIComponent(r)}/all-app-users-data/search`,l,{},!1)}}B.NeuctraAuthix=kr,Object.defineProperty(B,Symbol.toStringTag,{value:"Module"})}));
@@ -11,9 +11,11 @@ export declare class NeuctraAuthix {
11
11
  /**
12
12
  * Initialize the SDK client.
13
13
  *
14
- * Provide an account API key. It has full authority and must remain server-side.
14
+ * Use a publishable key (pk_live_…) in browser and mobile code: it can sign
15
+ * users in and reach only the signed-in user's own data. Use a secret key
16
+ * (sk_live_…) only on a server; Authix refuses secret keys sent from a browser.
15
17
  *
16
- * @param config configuration object with baseUrl, one key, and appId
18
+ * @param config configuration object with baseUrl, apiKey, and appId
17
19
  */
18
20
  constructor(config: NeuctraAuthixConfig);
19
21
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/sdk/index.ts"],"names":[],"mappings":"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"}
@@ -40,6 +40,11 @@ export interface UpdateUserParams {
40
40
  name?: string;
41
41
  username?: string | null;
42
42
  email?: string;
43
+ /**
44
+ * The user's current password. Required with a publishable key when
45
+ * `email` changes, so a stolen session cannot take over the account.
46
+ */
47
+ currentPassword?: string;
43
48
  password?: string;
44
49
  phone?: string | null;
45
50
  address?: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/sdk/interfaces.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/sdk/interfaces.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuctra/authix",
3
- "version": "3.0.1",
3
+ "version": "3.0.2",
4
4
  "description": "Universal JavaScript/TypeScript SDK for Neuctra Authix authentication and user data. For React UI components use @neuctra/authix-react.",
5
5
  "author": "Taha Asif",
6
6
  "license": "MIT",