@nurama/sdk 0.0.0-stage → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (220) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +5 -0
  3. package/README.md +1080 -2
  4. package/dist/BotClient.d.ts +66 -0
  5. package/dist/BotClient.d.ts.map +1 -0
  6. package/dist/BotClient.js +68 -0
  7. package/dist/BotClient.js.map +1 -0
  8. package/dist/NuramaClient.d.ts +448 -0
  9. package/dist/NuramaClient.d.ts.map +1 -0
  10. package/dist/NuramaClient.js +864 -0
  11. package/dist/NuramaClient.js.map +1 -0
  12. package/dist/browser/nurama-bot-sdk.js +11780 -0
  13. package/dist/browser/nurama-bot-sdk.min.js +1 -0
  14. package/dist/browser/nurama-sdk.js +11732 -0
  15. package/dist/browser/nurama-sdk.min.js +1 -0
  16. package/dist/routes/ai.d.ts +280 -0
  17. package/dist/routes/ai.d.ts.map +1 -0
  18. package/dist/routes/ai.js +173 -0
  19. package/dist/routes/ai.js.map +1 -0
  20. package/dist/routes/asset.d.ts +493 -0
  21. package/dist/routes/asset.d.ts.map +1 -0
  22. package/dist/routes/asset.js +848 -0
  23. package/dist/routes/asset.js.map +1 -0
  24. package/dist/routes/auth.d.ts +218 -0
  25. package/dist/routes/auth.d.ts.map +1 -0
  26. package/dist/routes/auth.js +454 -0
  27. package/dist/routes/auth.js.map +1 -0
  28. package/dist/routes/blogPosts.d.ts +17 -0
  29. package/dist/routes/blogPosts.d.ts.map +1 -0
  30. package/dist/routes/blogPosts.js +29 -0
  31. package/dist/routes/blogPosts.js.map +1 -0
  32. package/dist/routes/board.d.ts +187 -0
  33. package/dist/routes/board.d.ts.map +1 -0
  34. package/dist/routes/board.js +270 -0
  35. package/dist/routes/board.js.map +1 -0
  36. package/dist/routes/bot.d.ts +147 -0
  37. package/dist/routes/bot.d.ts.map +1 -0
  38. package/dist/routes/bot.js +157 -0
  39. package/dist/routes/bot.js.map +1 -0
  40. package/dist/routes/chat.d.ts +842 -0
  41. package/dist/routes/chat.d.ts.map +1 -0
  42. package/dist/routes/chat.js +863 -0
  43. package/dist/routes/chat.js.map +1 -0
  44. package/dist/routes/chatAi.d.ts +51 -0
  45. package/dist/routes/chatAi.d.ts.map +1 -0
  46. package/dist/routes/chatAi.js +109 -0
  47. package/dist/routes/chatAi.js.map +1 -0
  48. package/dist/routes/config.d.ts +11 -0
  49. package/dist/routes/config.d.ts.map +1 -0
  50. package/dist/routes/config.js +24 -0
  51. package/dist/routes/config.js.map +1 -0
  52. package/dist/routes/convo.d.ts +169 -0
  53. package/dist/routes/convo.d.ts.map +1 -0
  54. package/dist/routes/convo.js +284 -0
  55. package/dist/routes/convo.js.map +1 -0
  56. package/dist/routes/credits.d.ts +82 -0
  57. package/dist/routes/credits.d.ts.map +1 -0
  58. package/dist/routes/credits.js +49 -0
  59. package/dist/routes/credits.js.map +1 -0
  60. package/dist/routes/device.d.ts +74 -0
  61. package/dist/routes/device.d.ts.map +1 -0
  62. package/dist/routes/device.js +122 -0
  63. package/dist/routes/device.js.map +1 -0
  64. package/dist/routes/folder.d.ts +75 -0
  65. package/dist/routes/folder.d.ts.map +1 -0
  66. package/dist/routes/folder.js +99 -0
  67. package/dist/routes/folder.js.map +1 -0
  68. package/dist/routes/invite.d.ts +61 -0
  69. package/dist/routes/invite.d.ts.map +1 -0
  70. package/dist/routes/invite.js +86 -0
  71. package/dist/routes/invite.js.map +1 -0
  72. package/dist/routes/joinLink.d.ts +38 -0
  73. package/dist/routes/joinLink.d.ts.map +1 -0
  74. package/dist/routes/joinLink.js +81 -0
  75. package/dist/routes/joinLink.js.map +1 -0
  76. package/dist/routes/membership.d.ts +116 -0
  77. package/dist/routes/membership.d.ts.map +1 -0
  78. package/dist/routes/membership.js +183 -0
  79. package/dist/routes/membership.js.map +1 -0
  80. package/dist/routes/notification.d.ts +103 -0
  81. package/dist/routes/notification.d.ts.map +1 -0
  82. package/dist/routes/notification.js +89 -0
  83. package/dist/routes/notification.js.map +1 -0
  84. package/dist/routes/payment.d.ts +56 -0
  85. package/dist/routes/payment.d.ts.map +1 -0
  86. package/dist/routes/payment.js +78 -0
  87. package/dist/routes/payment.js.map +1 -0
  88. package/dist/routes/product.d.ts +43 -0
  89. package/dist/routes/product.d.ts.map +1 -0
  90. package/dist/routes/product.js +53 -0
  91. package/dist/routes/product.js.map +1 -0
  92. package/dist/routes/project.d.ts +821 -0
  93. package/dist/routes/project.d.ts.map +1 -0
  94. package/dist/routes/project.js +1153 -0
  95. package/dist/routes/project.js.map +1 -0
  96. package/dist/routes/public.d.ts +269 -0
  97. package/dist/routes/public.d.ts.map +1 -0
  98. package/dist/routes/public.js +412 -0
  99. package/dist/routes/public.js.map +1 -0
  100. package/dist/routes/scratch.d.ts +70 -0
  101. package/dist/routes/scratch.d.ts.map +1 -0
  102. package/dist/routes/scratch.js +67 -0
  103. package/dist/routes/scratch.js.map +1 -0
  104. package/dist/routes/settings.d.ts +102 -0
  105. package/dist/routes/settings.d.ts.map +1 -0
  106. package/dist/routes/settings.js +94 -0
  107. package/dist/routes/settings.js.map +1 -0
  108. package/dist/routes/shortlink.d.ts +79 -0
  109. package/dist/routes/shortlink.d.ts.map +1 -0
  110. package/dist/routes/shortlink.js +25 -0
  111. package/dist/routes/shortlink.js.map +1 -0
  112. package/dist/routes/socket.d.ts +108 -0
  113. package/dist/routes/socket.d.ts.map +1 -0
  114. package/dist/routes/socket.js +555 -0
  115. package/dist/routes/socket.js.map +1 -0
  116. package/dist/routes/storage.d.ts +44 -0
  117. package/dist/routes/storage.d.ts.map +1 -0
  118. package/dist/routes/storage.js +49 -0
  119. package/dist/routes/storage.js.map +1 -0
  120. package/dist/routes/subscription.d.ts +184 -0
  121. package/dist/routes/subscription.d.ts.map +1 -0
  122. package/dist/routes/subscription.js +219 -0
  123. package/dist/routes/subscription.js.map +1 -0
  124. package/dist/routes/supportChat.d.ts +40 -0
  125. package/dist/routes/supportChat.d.ts.map +1 -0
  126. package/dist/routes/supportChat.js +53 -0
  127. package/dist/routes/supportChat.js.map +1 -0
  128. package/dist/routes/supportTicket.d.ts +89 -0
  129. package/dist/routes/supportTicket.d.ts.map +1 -0
  130. package/dist/routes/supportTicket.js +54 -0
  131. package/dist/routes/supportTicket.js.map +1 -0
  132. package/dist/routes/tag.d.ts +72 -0
  133. package/dist/routes/tag.d.ts.map +1 -0
  134. package/dist/routes/tag.js +81 -0
  135. package/dist/routes/tag.js.map +1 -0
  136. package/dist/routes/task.d.ts +252 -0
  137. package/dist/routes/task.d.ts.map +1 -0
  138. package/dist/routes/task.js +284 -0
  139. package/dist/routes/task.js.map +1 -0
  140. package/dist/routes/taskRelation.d.ts +80 -0
  141. package/dist/routes/taskRelation.d.ts.map +1 -0
  142. package/dist/routes/taskRelation.js +71 -0
  143. package/dist/routes/taskRelation.js.map +1 -0
  144. package/dist/routes/token.d.ts +75 -0
  145. package/dist/routes/token.d.ts.map +1 -0
  146. package/dist/routes/token.js +51 -0
  147. package/dist/routes/token.js.map +1 -0
  148. package/dist/routes/user.d.ts +112 -0
  149. package/dist/routes/user.d.ts.map +1 -0
  150. package/dist/routes/user.js +151 -0
  151. package/dist/routes/user.js.map +1 -0
  152. package/dist/routes/version.d.ts +42 -0
  153. package/dist/routes/version.d.ts.map +1 -0
  154. package/dist/routes/version.js +38 -0
  155. package/dist/routes/version.js.map +1 -0
  156. package/dist/routes/webhook.d.ts +170 -0
  157. package/dist/routes/webhook.d.ts.map +1 -0
  158. package/dist/routes/webhook.js +173 -0
  159. package/dist/routes/webhook.js.map +1 -0
  160. package/dist/routes/workspace.d.ts +120 -0
  161. package/dist/routes/workspace.d.ts.map +1 -0
  162. package/dist/routes/workspace.js +199 -0
  163. package/dist/routes/workspace.js.map +1 -0
  164. package/dist/utils/uploadSessionManager.d.ts +133 -0
  165. package/dist/utils/uploadSessionManager.d.ts.map +1 -0
  166. package/dist/utils/uploadSessionManager.js +321 -0
  167. package/dist/utils/uploadSessionManager.js.map +1 -0
  168. package/dist/utils/urlParams.d.ts +35 -0
  169. package/dist/utils/urlParams.d.ts.map +1 -0
  170. package/dist/utils/urlParams.js +146 -0
  171. package/dist/utils/urlParams.js.map +1 -0
  172. package/dist/version.d.ts +15 -0
  173. package/dist/version.d.ts.map +1 -0
  174. package/dist/version.js +12 -0
  175. package/dist/version.js.map +1 -0
  176. package/package.json +87 -3
  177. package/src/BotClient.ts +113 -0
  178. package/src/NuramaClient.ts +1193 -0
  179. package/src/bot-browser-entry.js +15 -0
  180. package/src/browser-entry.js +20 -0
  181. package/src/routes/ai.ts +378 -0
  182. package/src/routes/asset.ts +1104 -0
  183. package/src/routes/auth.ts +587 -0
  184. package/src/routes/blogPosts.ts +29 -0
  185. package/src/routes/board.ts +403 -0
  186. package/src/routes/bot.ts +257 -0
  187. package/src/routes/chat.ts +1292 -0
  188. package/src/routes/chatAi.ts +125 -0
  189. package/src/routes/config.ts +31 -0
  190. package/src/routes/convo.ts +321 -0
  191. package/src/routes/credits.ts +112 -0
  192. package/src/routes/device.ts +133 -0
  193. package/src/routes/folder.ts +154 -0
  194. package/src/routes/invite.ts +133 -0
  195. package/src/routes/joinLink.ts +100 -0
  196. package/src/routes/membership.ts +237 -0
  197. package/src/routes/notification.ts +166 -0
  198. package/src/routes/payment.ts +104 -0
  199. package/src/routes/product.ts +67 -0
  200. package/src/routes/project.ts +1528 -0
  201. package/src/routes/public.ts +496 -0
  202. package/src/routes/scratch.ts +94 -0
  203. package/src/routes/settings.ts +152 -0
  204. package/src/routes/shortlink.ts +90 -0
  205. package/src/routes/socket.ts +739 -0
  206. package/src/routes/storage.ts +83 -0
  207. package/src/routes/subscription.ts +307 -0
  208. package/src/routes/supportChat.ts +62 -0
  209. package/src/routes/supportTicket.ts +114 -0
  210. package/src/routes/tag.ts +131 -0
  211. package/src/routes/task.ts +431 -0
  212. package/src/routes/taskRelation.ts +125 -0
  213. package/src/routes/token.ts +113 -0
  214. package/src/routes/user.ts +214 -0
  215. package/src/routes/version.ts +62 -0
  216. package/src/routes/webhook.ts +295 -0
  217. package/src/routes/workspace.ts +223 -0
  218. package/src/utils/uploadSessionManager.ts +407 -0
  219. package/src/utils/urlParams.ts +181 -0
  220. package/src/version.ts +22 -0
@@ -0,0 +1 @@
1
+ "use strict";(()=>{var Dr=Object.create;var Me=Object.defineProperty;var Ur=Object.getOwnPropertyDescriptor;var Br=Object.getOwnPropertyNames;var Jr=Object.getPrototypeOf,Lr=Object.prototype.hasOwnProperty;var Ie=(s=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(s,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):s)(function(s){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+s+'" is not supported')});var w=(s,e)=>()=>(s&&(e=s(s=0)),e);var jt=(s,e)=>{for(var t in e)Me(s,t,{get:e[t],enumerable:!0})},Or=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of Br(e))!Lr.call(s,n)&&n!==t&&Me(s,n,{get:()=>e[n],enumerable:!(r=Ur(e,n))||r.enumerable});return s};var Nr=(s,e,t)=>(t=s!=null?Dr(Jr(s)):{},Or(e||!s||!s.__esModule?Me(t,"default",{value:s,enumerable:!0}):t,s));var W,ae,ue,ye=w(()=>{W=Object.create(null);W.open="0";W.close="1";W.ping="2";W.pong="3";W.message="4";W.upgrade="5";W.noop="6";ae=Object.create(null);Object.keys(W).forEach(s=>{ae[W[s]]=s});ue={type:"error",data:"parser error"}});function Yt(s){return s instanceof Uint8Array?s:s instanceof ArrayBuffer?new Uint8Array(s):new Uint8Array(s.buffer,s.byteOffset,s.byteLength)}function er(s,e){if(Xt&&s.data instanceof Blob)return s.data.arrayBuffer().then(Yt).then(e);if(Qt&&(s.data instanceof ArrayBuffer||Zt(s.data)))return e(Yt(s.data));de(s,!1,t=>{Ye||(Ye=new TextEncoder),e(Ye.encode(t))})}var Xt,Qt,Zt,de,Ht,Ye,tr=w(()=>{ye();Xt=typeof Blob=="function"||typeof Blob<"u"&&Object.prototype.toString.call(Blob)==="[object BlobConstructor]",Qt=typeof ArrayBuffer=="function",Zt=s=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer,de=({type:s,data:e},t,r)=>Xt&&e instanceof Blob?t?r(e):Ht(e,r):Qt&&(e instanceof ArrayBuffer||Zt(e))?t?r(e):Ht(new Blob([e]),r):r(W[s]+(e||"")),Ht=(s,e)=>{let t=new FileReader;return t.onload=function(){let r=t.result.split(",")[1];e("b"+(r||""))},t.readAsDataURL(s)}});var rr,ce,sr,nr=w(()=>{rr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ce=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(let s=0;s<rr.length;s++)ce[rr.charCodeAt(s)]=s;sr=s=>{let e=s.length*.75,t=s.length,r,n=0,o,i,c,u;s[s.length-1]==="="&&(e--,s[s.length-2]==="="&&e--);let l=new ArrayBuffer(e),g=new Uint8Array(l);for(r=0;r<t;r+=4)o=ce[s.charCodeAt(r)],i=ce[s.charCodeAt(r+1)],c=ce[s.charCodeAt(r+2)],u=ce[s.charCodeAt(r+3)],g[n++]=o<<2|i>>4,g[n++]=(i&15)<<4|c>>2,g[n++]=(c&3)<<6|u&63;return l}});var Vr,pe,zr,or,ir=w(()=>{ye();nr();Vr=typeof ArrayBuffer=="function",pe=(s,e)=>{if(typeof s!="string")return{type:"message",data:or(s,e)};let t=s.charAt(0);return t==="b"?{type:"message",data:zr(s.substring(1),e)}:ae[t]?s.length>1?{type:ae[t],data:s.substring(1)}:{type:ae[t]}:ue},zr=(s,e)=>{if(Vr){let t=sr(s);return or(t,e)}else return{base64:!0,data:s}},or=(s,e)=>{switch(e){case"blob":return s instanceof Blob?s:new Blob([s]);case"arraybuffer":default:return s instanceof ArrayBuffer?s:s.buffer}}});function cr(){return new TransformStream({transform(s,e){er(s,t=>{let r=t.length,n;if(r<126)n=new Uint8Array(1),new DataView(n.buffer).setUint8(0,r);else if(r<65536){n=new Uint8Array(3);let o=new DataView(n.buffer);o.setUint8(0,126),o.setUint16(1,r)}else{n=new Uint8Array(9);let o=new DataView(n.buffer);o.setUint8(0,127),o.setBigUint64(1,BigInt(r))}s.data&&typeof s.data!="string"&&(n[0]|=128),e.enqueue(n),e.enqueue(t)})}})}function be(s){return s.reduce((e,t)=>e+t.length,0)}function we(s,e){if(s[0].length===e)return s.shift();let t=new Uint8Array(e),r=0;for(let n=0;n<e;n++)t[n]=s[0][r++],r===s[0].length&&(s.shift(),r=0);return s.length&&r<s[0].length&&(s[0]=s[0].slice(r)),t}function pr(s,e){Xe||(Xe=new TextDecoder);let t=[],r=0,n=-1,o=!1;return new TransformStream({transform(i,c){for(t.push(i);;){if(r===0){if(be(t)<1)break;let u=we(t,1);o=(u[0]&128)===128,n=u[0]&127,n<126?r=3:n===126?r=1:r=2}else if(r===1){if(be(t)<2)break;let u=we(t,2);n=new DataView(u.buffer,u.byteOffset,u.length).getUint16(0),r=3}else if(r===2){if(be(t)<8)break;let u=we(t,8),l=new DataView(u.buffer,u.byteOffset,u.length),g=l.getUint32(0);if(g>Math.pow(2,21)-1){c.enqueue(ue);break}n=g*Math.pow(2,32)+l.getUint32(4),r=3}else{if(be(t)<n)break;let u=we(t,n);c.enqueue(pe(o?u:Xe.decode(u),e)),r=0}if(n===0||n>s){c.enqueue(ue);break}}}})}var ar,ur,dr,Xe,Qe,se=w(()=>{tr();ir();ye();ar="",ur=(s,e)=>{let t=s.length,r=new Array(t),n=0;s.forEach((o,i)=>{de(o,!1,c=>{r[i]=c,++n===t&&e(r.join(ar))})})},dr=(s,e)=>{let t=s.split(ar),r=[];for(let n=0;n<t.length;n++){let o=pe(t[n],e);if(r.push(o),o.type==="error")break}return r};Qe=4});function k(s){if(s)return Hr(s)}function Hr(s){for(var e in k.prototype)s[e]=k.prototype[e];return s}var K=w(()=>{k.prototype.on=k.prototype.addEventListener=function(s,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+s]=this._callbacks["$"+s]||[]).push(e),this};k.prototype.once=function(s,e){function t(){this.off(s,t),e.apply(this,arguments)}return t.fn=e,this.on(s,t),this};k.prototype.off=k.prototype.removeListener=k.prototype.removeAllListeners=k.prototype.removeEventListener=function(s,e){if(this._callbacks=this._callbacks||{},arguments.length==0)return this._callbacks={},this;var t=this._callbacks["$"+s];if(!t)return this;if(arguments.length==1)return delete this._callbacks["$"+s],this;for(var r,n=0;n<t.length;n++)if(r=t[n],r===e||r.fn===e){t.splice(n,1);break}return t.length===0&&delete this._callbacks["$"+s],this};k.prototype.emit=function(s){this._callbacks=this._callbacks||{};for(var e=new Array(arguments.length-1),t=this._callbacks["$"+s],r=1;r<arguments.length;r++)e[r-1]=arguments[r];if(t){t=t.slice(0);for(var r=0,n=t.length;r<n;++r)t[r].apply(this,e)}return this};k.prototype.emitReserved=k.prototype.emit;k.prototype.listeners=function(s){return this._callbacks=this._callbacks||{},this._callbacks["$"+s]||[]};k.prototype.hasListeners=function(s){return!!this.listeners(s).length}});var B,C,hr,V=w(()=>{B=typeof Promise=="function"&&typeof Promise.resolve=="function"?e=>Promise.resolve().then(e):(e,t)=>t(e,0),C=typeof self<"u"?self:typeof window<"u"?window:Function("return this")(),hr="arraybuffer"});function Te(s,...e){return e.reduce((t,r)=>(s.hasOwnProperty(r)&&(t[r]=s[r]),t),{})}function J(s,e){e.useNativeTimers?(s.setTimeoutFn=Yr.bind(C),s.clearTimeoutFn=Xr.bind(C)):(s.setTimeoutFn=C.setTimeout.bind(C),s.clearTimeoutFn=C.clearTimeout.bind(C))}function lr(s){return typeof s=="string"?Zr(s):Math.ceil((s.byteLength||s.size)*Qr)}function Zr(s){let e=0,t=0;for(let r=0,n=s.length;r<n;r++)e=s.charCodeAt(r),e<128?t+=1:e<2048?t+=2:e<55296||e>=57344?t+=3:(r++,t+=4);return t}function Pe(){return Date.now().toString(36).substring(3)+Math.random().toString(36).substring(2,5)}var Yr,Xr,Qr,z=w(()=>{V();Yr=C.setTimeout,Xr=C.clearTimeout;Qr=1.33});function mr(s){let e="";for(let t in s)s.hasOwnProperty(t)&&(e.length&&(e+="&"),e+=encodeURIComponent(t)+"="+encodeURIComponent(s[t]));return e}function fr(s){let e={},t=s.split("&");for(let r=0,n=t.length;r<n;r++){let o=t[r].split("=");e[decodeURIComponent(o[0])]=decodeURIComponent(o[1])}return e}var Ze=w(()=>{});var ke,L,he=w(()=>{se();K();z();Ze();ke=class extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}},L=class extends k{constructor(e){super(),this.writable=!1,J(this,e),this.opts=e,this.query=e.query,this.socket=e.socket,this.supportsBinary=!e.forceBase64}onError(e,t,r){return super.emitReserved("error",new ke(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return(this.readyState==="opening"||this.readyState==="open")&&(this.doClose(),this.onClose()),this}send(e){this.readyState==="open"&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){let t=pe(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){let e=this.opts.hostname;return e.indexOf(":")===-1?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&+(this.opts.port!==443)||!this.opts.secure&&Number(this.opts.port)!==80)?":"+this.opts.port:""}_query(e){let t=mr(e);return t.length?"?"+t:""}}});var ne,et=w(()=>{he();z();se();ne=class extends L{constructor(){super(...arguments),this._polling=!1}get name(){return"polling"}doOpen(){this._poll()}pause(e){this.readyState="pausing";let t=()=>{this.readyState="paused",e()};if(this._polling||!this.writable){let r=0;this._polling&&(r++,this.once("pollComplete",function(){--r||t()})),this.writable||(r++,this.once("drain",function(){--r||t()}))}else t()}_poll(){this._polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){let t=r=>{if(this.readyState==="opening"&&r.type==="open"&&this.onOpen(),r.type==="close")return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(r)};dr(e,this.socket.binaryType).forEach(t),this.readyState!=="closed"&&(this._polling=!1,this.emitReserved("pollComplete"),this.readyState==="open"&&this._poll())}doClose(){let e=()=>{this.write([{type:"close"}])};this.readyState==="open"?e():this.once("open",e)}write(e){this.writable=!1,ur(e,t=>{this.doWrite(t,()=>{this.writable=!0,this.emitReserved("drain")})})}uri(){let e=this.opts.secure?"https":"http",t=this.query||{};return this.opts.timestampRequests!==!1&&(t[this.opts.timestampParam]=Pe()),!this.supportsBinary&&!t.sid&&(t.b64=1),this.createUri(e,t)}}});var gr,yr,br=w(()=>{gr=!1;try{gr=typeof XMLHttpRequest<"u"&&"withCredentials"in new XMLHttpRequest}catch{}yr=gr});function es(){}function wr(){for(let s in G.requests)G.requests.hasOwnProperty(s)&&G.requests[s].abort()}function Tr(s){let e=s.xdomain;try{if(typeof XMLHttpRequest<"u"&&(!e||yr))return new XMLHttpRequest}catch{}if(!e)try{return new C[["Active"].concat("Object").join("X")]("Microsoft.XMLHTTP")}catch{}}var tt,G,ts,O,ve=w(()=>{et();K();z();V();br();tt=class extends ne{constructor(e){if(super(e),typeof location<"u"){let t=location.protocol==="https:",r=location.port;r||(r=t?"443":"80"),this.xd=typeof location<"u"&&e.hostname!==location.hostname||r!==e.port}}doWrite(e,t){let r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(n,o)=>{this.onError("xhr post error",n,o)})}doPoll(){let e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(t,r)=>{this.onError("xhr poll error",t,r)}),this.pollXhr=e}},G=class s extends k{constructor(e,t,r){super(),this.createRequest=e,J(this,r),this._opts=r,this._method=r.method||"GET",this._uri=t,this._data=r.data!==void 0?r.data:null,this._create()}_create(){var e;let t=Te(this._opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this._opts.xd;let r=this._xhr=this.createRequest(t);try{r.open(this._method,this._uri,!0);try{if(this._opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let n in this._opts.extraHeaders)this._opts.extraHeaders.hasOwnProperty(n)&&r.setRequestHeader(n,this._opts.extraHeaders[n])}}catch{}if(this._method==="POST")try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch{}try{r.setRequestHeader("Accept","*/*")}catch{}(e=this._opts.cookieJar)===null||e===void 0||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this._opts.withCredentials),this._opts.requestTimeout&&(r.timeout=this._opts.requestTimeout),r.onreadystatechange=()=>{var n;r.readyState===3&&((n=this._opts.cookieJar)===null||n===void 0||n.parseCookies(r.getResponseHeader("set-cookie"))),r.readyState===4&&(r.status===200||r.status===1223?this._onLoad():this.setTimeoutFn(()=>{this._onError(typeof r.status=="number"?r.status:0)},0))},r.send(this._data)}catch(n){this.setTimeoutFn(()=>{this._onError(n)},0);return}typeof document<"u"&&(this._index=s.requestsCount++,s.requests[this._index]=this)}_onError(e){this.emitReserved("error",e,this._xhr),this._cleanup(!0)}_cleanup(e){if(!(typeof this._xhr>"u"||this._xhr===null)){if(this._xhr.onreadystatechange=es,e)try{this._xhr.abort()}catch{}typeof document<"u"&&delete s.requests[this._index],this._xhr=null}}_onLoad(){let e=this._xhr.responseText;e!==null&&(this.emitReserved("data",e),this.emitReserved("success"),this._cleanup())}abort(){this._cleanup()}};G.requestsCount=0;G.requests={};if(typeof document<"u"){if(typeof attachEvent=="function")attachEvent("onunload",wr);else if(typeof addEventListener=="function"){let s="onpagehide"in C?"pagehide":"unload";addEventListener(s,wr,!1)}}ts=(function(){let s=Tr({xdomain:!1});return s&&s.responseType!==null})(),O=class extends tt{constructor(e){super(e);let t=e&&e.forceBase64;this.supportsBinary=ts&&!t}request(e={}){return Object.assign(e,{xd:this.xd},this.opts),new G(Tr,this.uri(),e)}}});var Pr,st,rt,N,Re=w(()=>{he();z();se();V();Pr=typeof navigator<"u"&&typeof navigator.product=="string"&&navigator.product.toLowerCase()==="reactnative",st=class extends L{get name(){return"websocket"}doOpen(){let e=this.uri(),t=this.opts.protocols,r=Pr?{}:Te(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=this.createSocket(e,t,r)}catch(n){return this.emitReserved("error",n)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){let r=e[t],n=t===e.length-1;de(r,this.supportsBinary,o=>{try{this.doWrite(r,o)}catch{}n&&B(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){typeof this.ws<"u"&&(this.ws.onerror=()=>{},this.ws.close(),this.ws=null)}uri(){let e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=Pe()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}},rt=C.WebSocket||C.MozWebSocket,N=class extends st{createSocket(e,t,r){return Pr?new rt(e,t,r):t?new rt(e,t):new rt(e)}doWrite(e,t){this.ws.send(t)}}});var H,nt=w(()=>{he();V();se();H=class extends L{get name(){return"webtransport"}doOpen(){try{this._transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name])}catch(e){return this.emitReserved("error",e)}this._transport.closed.then(()=>{this.onClose()}).catch(e=>{this.onError("webtransport error",e)}),this._transport.ready.then(()=>{this._transport.createBidirectionalStream().then(e=>{let t=pr(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),n=cr();n.readable.pipeTo(e.writable),this._writer=n.writable.getWriter();let o=()=>{r.read().then(({done:c,value:u})=>{c||(this.onPacket(u),o())}).catch(c=>{})};o();let i={type:"open"};this.query.sid&&(i.data=`{"sid":"${this.query.sid}"}`),this._writer.write(i).then(()=>this.onOpen())})})}write(e){this.writable=!1;for(let t=0;t<e.length;t++){let r=e[t],n=t===e.length-1;this._writer.write(r).then(()=>{n&&B(()=>{this.writable=!0,this.emitReserved("drain")},this.setTimeoutFn)})}}doClose(){var e;(e=this._transport)===null||e===void 0||e.close()}}});var ot,it=w(()=>{ve();Re();nt();ot={websocket:N,webtransport:H,polling:O}});function oe(s){if(s.length>8e3)throw"URI too long";let e=s,t=s.indexOf("["),r=s.indexOf("]");t!=-1&&r!=-1&&(s=s.substring(0,t)+s.substring(t,r).replace(/:/g,";")+s.substring(r,s.length));let n=rs.exec(s||""),o={},i=14;for(;i--;)o[ss[i]]=n[i]||"";return t!=-1&&r!=-1&&(o.source=e,o.host=o.host.substring(1,o.host.length-1).replace(/;/g,":"),o.authority=o.authority.replace("[","").replace("]","").replace(/;/g,":"),o.ipv6uri=!0),o.pathNames=ns(o,o.path),o.queryKey=os(o,o.query),o}function ns(s,e){let t=/\/{2,9}/g,r=e.replace(t,"/").split("/");return(e.slice(0,1)=="/"||e.length===0)&&r.splice(0,1),e.slice(-1)=="/"&&r.splice(r.length-1,1),r}function os(s,e){let t={};return e.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,function(r,n,o){n&&(t[n]=o)}),t}var rs,ss,at=w(()=>{rs=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,ss=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"]});var ut,Ee,Y,Se,ie,dt=w(()=>{it();z();Ze();at();K();se();V();ut=typeof addEventListener=="function"&&typeof removeEventListener=="function",Ee=[];ut&&addEventListener("offline",()=>{Ee.forEach(s=>s())},!1);Y=class s extends k{constructor(e,t){if(super(),this.binaryType=hr,this.writeBuffer=[],this._prevBufferLen=0,this._pingInterval=-1,this._pingTimeout=-1,this._maxPayload=-1,this._pingTimeoutTime=1/0,e&&typeof e=="object"&&(t=e,e=null),e){let r=oe(e);t.hostname=r.host,t.secure=r.protocol==="https"||r.protocol==="wss",t.port=r.port,r.query&&(t.query=r.query)}else t.host&&(t.hostname=oe(t.host).host);J(this,t),this.secure=t.secure!=null?t.secure:typeof location<"u"&&location.protocol==="https:",t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||(typeof location<"u"?location.hostname:"localhost"),this.port=t.port||(typeof location<"u"&&location.port?location.port:this.secure?"443":"80"),this.transports=[],this._transportsByName={},t.transports.forEach(r=>{let n=r.prototype.name;this.transports.push(n),this._transportsByName[n]=r}),this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),typeof this.opts.query=="string"&&(this.opts.query=fr(this.opts.query)),ut&&(this.opts.closeOnBeforeunload&&(this._beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this._beforeunloadEventListener,!1)),this.hostname!=="localhost"&&(this._offlineEventListener=()=>{this._onClose("transport close",{description:"network connection lost"})},Ee.push(this._offlineEventListener))),this.opts.withCredentials&&(this._cookieJar=void 0),this._open()}createTransport(e){let t=Object.assign({},this.opts.query);t.EIO=Qe,t.transport=e,this.id&&(t.sid=this.id);let r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new this._transportsByName[e](r)}_open(){if(this.transports.length===0){this.setTimeoutFn(()=>{this.emitReserved("error","No transports available")},0);return}let e=this.opts.rememberUpgrade&&s.priorWebsocketSuccess&&this.transports.indexOf("websocket")!==-1?"websocket":this.transports[0];this.readyState="opening";let t=this.createTransport(e);t.open(),this.setTransport(t)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this._onDrain.bind(this)).on("packet",this._onPacket.bind(this)).on("error",this._onError.bind(this)).on("close",t=>this._onClose("transport close",t))}onOpen(){this.readyState="open",s.priorWebsocketSuccess=this.transport.name==="websocket",this.emitReserved("open"),this.flush()}_onPacket(e){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing")switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this._sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong"),this._resetPingTimeout();break;case"error":let t=new Error("server error");t.code=e.data,this._onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data);break}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this._pingInterval=e.pingInterval,this._pingTimeout=e.pingTimeout,this._maxPayload=e.maxPayload,this.onOpen(),this.readyState!=="closed"&&this._resetPingTimeout()}_resetPingTimeout(){this.clearTimeoutFn(this._pingTimeoutTimer);let e=this._pingInterval+this._pingTimeout;this._pingTimeoutTime=Date.now()+e,this._pingTimeoutTimer=this.setTimeoutFn(()=>{this._onClose("ping timeout")},e),this.opts.autoUnref&&this._pingTimeoutTimer.unref()}_onDrain(){this.writeBuffer.splice(0,this._prevBufferLen),this._prevBufferLen=0,this.writeBuffer.length===0?this.emitReserved("drain"):this.flush()}flush(){if(this.readyState!=="closed"&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){let e=this._getWritablePackets();this.transport.send(e),this._prevBufferLen=e.length,this.emitReserved("flush")}}_getWritablePackets(){if(!(this._maxPayload&&this.transport.name==="polling"&&this.writeBuffer.length>1))return this.writeBuffer;let t=1;for(let r=0;r<this.writeBuffer.length;r++){let n=this.writeBuffer[r].data;if(n&&(t+=lr(n)),r>0&&t>this._maxPayload)return this.writeBuffer.slice(0,r);t+=2}return this.writeBuffer}_hasPingExpired(){if(!this._pingTimeoutTime)return!0;let e=Date.now()>this._pingTimeoutTime;return e&&(this._pingTimeoutTime=0,B(()=>{this._onClose("ping timeout")},this.setTimeoutFn)),e}write(e,t,r){return this._sendPacket("message",e,t,r),this}send(e,t,r){return this._sendPacket("message",e,t,r),this}_sendPacket(e,t,r,n){if(typeof t=="function"&&(n=t,t=void 0),typeof r=="function"&&(n=r,r=null),this.readyState==="closing"||this.readyState==="closed")return;r=r||{},r.compress=r.compress!==!1;let o={type:e,data:t,options:r};this.emitReserved("packetCreate",o),this.writeBuffer.push(o),n&&this.once("flush",n),this.flush()}close(){let e=()=>{this._onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return(this.readyState==="opening"||this.readyState==="open")&&(this.readyState="closing",this.writeBuffer.length?this.once("drain",()=>{this.upgrading?r():e()}):this.upgrading?r():e()),this}_onError(e){if(s.priorWebsocketSuccess=!1,this.opts.tryAllTransports&&this.transports.length>1&&this.readyState==="opening")return this.transports.shift(),this._open();this.emitReserved("error",e),this._onClose("transport error",e)}_onClose(e,t){if(this.readyState==="opening"||this.readyState==="open"||this.readyState==="closing"){if(this.clearTimeoutFn(this._pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),ut&&(this._beforeunloadEventListener&&removeEventListener("beforeunload",this._beforeunloadEventListener,!1),this._offlineEventListener)){let r=Ee.indexOf(this._offlineEventListener);r!==-1&&Ee.splice(r,1)}this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this._prevBufferLen=0}}};Y.protocol=Qe;Se=class extends Y{constructor(){super(...arguments),this._upgrades=[]}onOpen(){if(super.onOpen(),this.readyState==="open"&&this.opts.upgrade)for(let e=0;e<this._upgrades.length;e++)this._probe(this._upgrades[e])}_probe(e){let t=this.createTransport(e),r=!1;Y.priorWebsocketSuccess=!1;let n=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",v=>{if(!r)if(v.type==="pong"&&v.data==="probe"){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Y.priorWebsocketSuccess=t.name==="websocket",this.transport.pause(()=>{r||this.readyState!=="closed"&&(g(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())})}else{let R=new Error("probe error");R.transport=t.name,this.emitReserved("upgradeError",R)}}))};function o(){r||(r=!0,g(),t.close(),t=null)}let i=v=>{let R=new Error("probe error: "+v);R.transport=t.name,o(),this.emitReserved("upgradeError",R)};function c(){i("transport closed")}function u(){i("socket closed")}function l(v){t&&v.name!==t.name&&o()}let g=()=>{t.removeListener("open",n),t.removeListener("error",i),t.removeListener("close",c),this.off("close",u),this.off("upgrading",l)};t.once("open",n),t.once("error",i),t.once("close",c),this.once("close",u),this.once("upgrading",l),this._upgrades.indexOf("webtransport")!==-1&&e!=="webtransport"?this.setTimeoutFn(()=>{r||t.open()},200):t.open()}onHandshake(e){this._upgrades=this._filterUpgrades(e.upgrades),super.onHandshake(e)}_filterUpgrades(e){let t=[];for(let r=0;r<e.length;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}},ie=class extends Se{constructor(e,t={}){let r=typeof e=="object"?e:t;(!r.transports||r.transports&&typeof r.transports[0]=="string")&&(r.transports=(r.transports||["polling","websocket","webtransport"]).map(n=>ot[n]).filter(n=>!!n)),super(e,r)}}});var le,kr=w(()=>{et();le=class extends ne{doPoll(){this._fetch().then(e=>{if(!e.ok)return this.onError("fetch read error",e.status,e);e.text().then(t=>this.onData(t))}).catch(e=>{this.onError("fetch read error",e)})}doWrite(e,t){this._fetch(e).then(r=>{if(!r.ok)return this.onError("fetch write error",r.status,r);t()}).catch(r=>{this.onError("fetch write error",r)})}_fetch(e){var t;let r=e!==void 0,n=new Headers(this.opts.extraHeaders);return r&&n.set("content-type","text/plain;charset=UTF-8"),(t=this.socket._cookieJar)===null||t===void 0||t.appendCookies(n),fetch(this.uri(),{method:r?"POST":"GET",body:r?e:null,headers:n,credentials:this.opts.withCredentials?"include":"omit"}).then(o=>{var i;return(i=this.socket._cookieJar)===null||i===void 0||i.parseCookies(o.headers.getSetCookie()),o})}}});var Jn,qe=w(()=>{dt();dt();he();it();z();at();V();kr();ve();ve();Re();Re();nt();Jn=ie.protocol});function vr(s,e="",t){let r=s;t=t||typeof location<"u"&&location,s==null&&(s=t.protocol+"//"+t.host),typeof s=="string"&&(s.charAt(0)==="/"&&(s.charAt(1)==="/"?s=t.protocol+s:s=t.host+s),/^(https?|wss?):\/\//.test(s)||(typeof t<"u"?s=t.protocol+"//"+s:s="https://"+s),r=oe(s)),r.port||(/^(http|ws)$/.test(r.protocol)?r.port="80":/^(http|ws)s$/.test(r.protocol)&&(r.port="443")),r.path=r.path||"/";let o=r.host.indexOf(":")!==-1?"["+r.host+"]":r.host;return r.id=r.protocol+"://"+o+":"+r.port+e,r.href=r.protocol+"://"+o+(t&&t.port===r.port?"":":"+r.port),r}var Rr=w(()=>{qe()});function fe(s){return is&&(s instanceof ArrayBuffer||as(s))||us&&s instanceof Blob||ds&&s instanceof File}function me(s,e){if(!s||typeof s!="object")return!1;if(Array.isArray(s)){for(let t=0,r=s.length;t<r;t++)if(me(s[t]))return!0;return!1}if(fe(s))return!0;if(s.toJSON&&typeof s.toJSON=="function"&&arguments.length===1)return me(s.toJSON(),!0);for(let t in s)if(Object.prototype.hasOwnProperty.call(s,t)&&me(s[t]))return!0;return!1}var is,as,Er,us,ds,ct=w(()=>{is=typeof ArrayBuffer=="function",as=s=>typeof ArrayBuffer.isView=="function"?ArrayBuffer.isView(s):s.buffer instanceof ArrayBuffer,Er=Object.prototype.toString,us=typeof Blob=="function"||typeof Blob<"u"&&Er.call(Blob)==="[object BlobConstructor]",ds=typeof File=="function"||typeof File<"u"&&Er.call(File)==="[object FileConstructor]"});function Sr(s){let e=[],t=s.data,r=s;return r.data=pt(t,e),r.attachments=e.length,{packet:r,buffers:e}}function pt(s,e){if(!s)return s;if(fe(s)){let t={_placeholder:!0,num:e.length};return e.push(s),t}else if(Array.isArray(s)){let t=new Array(s.length);for(let r=0;r<s.length;r++)t[r]=pt(s[r],e);return t}else if(typeof s=="object"&&!(s instanceof Date)){let t={};for(let r in s)Object.prototype.hasOwnProperty.call(s,r)&&(t[r]=pt(s[r],e));return t}return s}function qr(s,e){return s.data=ht(s.data,e),delete s.attachments,s}function ht(s,e){if(!s)return s;if(s&&s._placeholder===!0){if(typeof s.num=="number"&&s.num>=0&&s.num<e.length)return e[s.num];throw new Error("illegal attachments")}else if(Array.isArray(s))for(let t=0;t<s.length;t++)s[t]=ht(s[t],e);else if(typeof s=="object")for(let t in s)Object.prototype.hasOwnProperty.call(s,t)&&(s[t]=ht(s[t],e));return s}var _r=w(()=>{ct()});var yt={};jt(yt,{Decoder:()=>mt,Encoder:()=>lt,PacketType:()=>f,protocol:()=>gt});function Cr(s){return Object.prototype.toString.call(s)==="[object Object]"}var cs,gt,f,lt,mt,ft,_e=w(()=>{K();_r();ct();cs=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"],gt=5;(function(s){s[s.CONNECT=0]="CONNECT",s[s.DISCONNECT=1]="DISCONNECT",s[s.EVENT=2]="EVENT",s[s.ACK=3]="ACK",s[s.CONNECT_ERROR=4]="CONNECT_ERROR",s[s.BINARY_EVENT=5]="BINARY_EVENT",s[s.BINARY_ACK=6]="BINARY_ACK"})(f||(f={}));lt=class{constructor(e){this.replacer=e}encode(e){return(e.type===f.EVENT||e.type===f.ACK)&&me(e)?this.encodeAsBinary({type:e.type===f.EVENT?f.BINARY_EVENT:f.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id}):[this.encodeAsString(e)]}encodeAsString(e){let t=""+e.type;return(e.type===f.BINARY_EVENT||e.type===f.BINARY_ACK)&&(t+=e.attachments+"-"),e.nsp&&e.nsp!=="/"&&(t+=e.nsp+","),e.id!=null&&(t+=e.id),e.data!=null&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){let t=Sr(e),r=this.encodeAsString(t.packet),n=t.buffers;return n.unshift(r),n}};mt=class s extends k{constructor(e){super(),this.reviver=e}add(e){let t;if(typeof e=="string"){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);let r=t.type===f.BINARY_EVENT;r||t.type===f.BINARY_ACK?(t.type=r?f.EVENT:f.ACK,this.reconstructor=new ft(t),t.attachments===0&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else if(fe(e)||e.base64)if(this.reconstructor)t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t));else throw new Error("got binary data when not reconstructing a packet");else throw new Error("Unknown type: "+e)}decodeString(e){let t=0,r={type:Number(e.charAt(0))};if(f[r.type]===void 0)throw new Error("unknown packet type "+r.type);if(r.type===f.BINARY_EVENT||r.type===f.BINARY_ACK){let o=t+1;for(;e.charAt(++t)!=="-"&&t!=e.length;);let i=e.substring(o,t);if(i!=Number(i)||e.charAt(t)!=="-")throw new Error("Illegal attachments");r.attachments=Number(i)}if(e.charAt(t+1)==="/"){let o=t+1;for(;++t&&!(e.charAt(t)===","||t===e.length););r.nsp=e.substring(o,t)}else r.nsp="/";let n=e.charAt(t+1);if(n!==""&&Number(n)==n){let o=t+1;for(;++t;){let i=e.charAt(t);if(i==null||Number(i)!=i){--t;break}if(t===e.length)break}r.id=Number(e.substring(o,t+1))}if(e.charAt(++t)){let o=this.tryParse(e.substr(t));if(s.isPayloadValid(r.type,o))r.data=o;else throw new Error("invalid payload")}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch{return!1}}static isPayloadValid(e,t){switch(e){case f.CONNECT:return Cr(t);case f.DISCONNECT:return t===void 0;case f.CONNECT_ERROR:return typeof t=="string"||Cr(t);case f.EVENT:case f.BINARY_EVENT:return Array.isArray(t)&&(typeof t[0]=="number"||typeof t[0]=="string"&&cs.indexOf(t[0])===-1);case f.ACK:case f.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}},ft=class{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){let t=qr(this.reconPack,this.buffers);return this.finishedReconstruction(),t}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}});function I(s,e,t){return s.on(e,t),function(){s.off(e,t)}}var bt=w(()=>{});var ps,X,wt=w(()=>{_e();bt();K();ps=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1}),X=class extends k{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;let e=this.io;this.subs=[I(e,"open",this.onopen.bind(this)),I(e,"packet",this.onpacket.bind(this)),I(e,"error",this.onerror.bind(this)),I(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected?this:(this.subEvents(),this.io._reconnecting||this.io.open(),this.io._readyState==="open"&&this.onopen(),this)}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){var r,n,o;if(ps.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;let i={type:f.EVENT,data:t};if(i.options={},i.options.compress=this.flags.compress!==!1,typeof t[t.length-1]=="function"){let g=this.ids++,v=t.pop();this._registerAckCallback(g,v),i.id=g}let c=(n=(r=this.io.engine)===null||r===void 0?void 0:r.transport)===null||n===void 0?void 0:n.writable,u=this.connected&&!(!((o=this.io.engine)===null||o===void 0)&&o._hasPingExpired());return this.flags.volatile&&!c||(u?(this.notifyOutgoingListeners(i),this.packet(i)):this.sendBuffer.push(i)),this.flags={},this}_registerAckCallback(e,t){var r;let n=(r=this.flags.timeout)!==null&&r!==void 0?r:this._opts.ackTimeout;if(n===void 0){this.acks[e]=t;return}let o=this.io.setTimeoutFn(()=>{delete this.acks[e];for(let c=0;c<this.sendBuffer.length;c++)this.sendBuffer[c].id===e&&this.sendBuffer.splice(c,1);t.call(this,new Error("operation has timed out"))},n),i=(...c)=>{this.io.clearTimeoutFn(o),t.apply(this,c)};i.withError=!0,this.acks[e]=i}emitWithAck(e,...t){return new Promise((r,n)=>{let o=(i,c)=>i?n(i):r(c);o.withError=!0,t.push(o),this.emit(e,...t)})}_addToQueue(e){let t;typeof e[e.length-1]=="function"&&(t=e.pop());let r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push((n,...o)=>r!==this._queue[0]?void 0:(n!==null?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(n)):(this._queue.shift(),t&&t(null,...o)),r.pending=!1,this._drainQueue())),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||this._queue.length===0)return;let t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){typeof this.auth=="function"?this.auth(e=>{this._sendConnectPacket(e)}):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:f.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t),this._clearAcks()}_clearAcks(){Object.keys(this.acks).forEach(e=>{if(!this.sendBuffer.some(r=>String(r.id)===e)){let r=this.acks[e];delete this.acks[e],r.withError&&r.call(this,new Error("socket has been disconnected"))}})}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case f.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case f.EVENT:case f.BINARY_EVENT:this.onevent(e);break;case f.ACK:case f.BINARY_ACK:this.onack(e);break;case f.DISCONNECT:this.ondisconnect();break;case f.CONNECT_ERROR:this.destroy();let r=new Error(e.data.message);r.data=e.data.data,this.emitReserved("connect_error",r);break}}onevent(e){let t=e.data||[];e.id!=null&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){let t=this._anyListeners.slice();for(let r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&typeof e[e.length-1]=="string"&&(this._lastOffset=e[e.length-1])}ack(e){let t=this,r=!1;return function(...n){r||(r=!0,t.packet({type:f.ACK,id:e,data:n}))}}onack(e){let t=this.acks[e.id];typeof t=="function"&&(delete this.acks[e.id],t.withError&&e.data.unshift(null),t.apply(this,e.data))}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach(e=>this.emitEvent(e)),this.receiveBuffer=[],this.sendBuffer.forEach(e=>{this.notifyOutgoingListeners(e),this.packet(e)}),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach(e=>e()),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:f.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){let t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){let t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){let t=this._anyOutgoingListeners.slice();for(let r of t)r.apply(this,e.data)}}}});function Q(s){s=s||{},this.ms=s.min||100,this.max=s.max||1e4,this.factor=s.factor||2,this.jitter=s.jitter>0&&s.jitter<=1?s.jitter:0,this.attempts=0}var xr=w(()=>{Q.prototype.duration=function(){var s=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var e=Math.random(),t=Math.floor(e*this.jitter*s);s=(Math.floor(e*10)&1)==0?s-t:s+t}return Math.min(s,this.max)|0};Q.prototype.reset=function(){this.attempts=0};Q.prototype.setMin=function(s){this.ms=s};Q.prototype.setMax=function(s){this.max=s};Q.prototype.setJitter=function(s){this.jitter=s}});var Z,Ar=w(()=>{qe();wt();_e();bt();xr();K();Z=class extends k{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&typeof e=="object"&&(t=e,e=void 0),t=t||{},t.path=t.path||"/socket.io",this.opts=t,J(this,t),this.reconnection(t.reconnection!==!1),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor((r=t.randomizationFactor)!==null&&r!==void 0?r:.5),this.backoff=new Q({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(t.timeout==null?2e4:t.timeout),this._readyState="closed",this.uri=e;let n=t.parser||yt;this.encoder=new n.Encoder,this.decoder=new n.Decoder,this._autoConnect=t.autoConnect!==!1,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,e||(this.skipReconnect=!0),this):this._reconnection}reconnectionAttempts(e){return e===void 0?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return e===void 0?this._reconnectionDelay:(this._reconnectionDelay=e,(t=this.backoff)===null||t===void 0||t.setMin(e),this)}randomizationFactor(e){var t;return e===void 0?this._randomizationFactor:(this._randomizationFactor=e,(t=this.backoff)===null||t===void 0||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return e===void 0?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,(t=this.backoff)===null||t===void 0||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&this.backoff.attempts===0&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new ie(this.uri,this.opts);let t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;let n=I(t,"open",function(){r.onopen(),e&&e()}),o=c=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",c),e?e(c):this.maybeReconnectOnOpen()},i=I(t,"error",o);if(this._timeout!==!1){let c=this._timeout,u=this.setTimeoutFn(()=>{n(),o(new Error("timeout")),t.close()},c);this.opts.autoUnref&&u.unref(),this.subs.push(()=>{this.clearTimeoutFn(u)})}return this.subs.push(n),this.subs.push(i),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");let e=this.engine;this.subs.push(I(e,"ping",this.onping.bind(this)),I(e,"data",this.ondata.bind(this)),I(e,"error",this.onerror.bind(this)),I(e,"close",this.onclose.bind(this)),I(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(t){this.onclose("parse error",t)}}ondecoded(e){B(()=>{this.emitReserved("packet",e)},this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new X(this,e,t),this.nsps[e]=r),r}_destroy(e){let t=Object.keys(this.nsps);for(let r of t)if(this.nsps[r].active)return;this._close()}_packet(e){let t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach(e=>e()),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close")}disconnect(){return this._close()}onclose(e,t){var r;this.cleanup(),(r=this.engine)===null||r===void 0||r.close(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;let e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{let t=this.backoff.duration();this._reconnecting=!0;let r=this.setTimeoutFn(()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),!e.skipReconnect&&e.open(n=>{n?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",n)):e.onreconnect()}))},t);this.opts.autoUnref&&r.unref(),this.subs.push(()=>{this.clearTimeoutFn(r)})}}onreconnect(){let e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}});var Mr={};jt(Mr,{Fetch:()=>le,Manager:()=>Z,NodeWebSocket:()=>N,NodeXHR:()=>O,Socket:()=>X,WebSocket:()=>N,WebTransport:()=>H,XHR:()=>O,connect:()=>Ce,default:()=>Ce,io:()=>Ce,protocol:()=>gt});function Ce(s,e){typeof s=="object"&&(e=s,s=void 0),e=e||{};let t=vr(s,e.path||"/socket.io"),r=t.source,n=t.id,o=t.path,i=ge[n]&&o in ge[n].nsps,c=e.forceNew||e["force new connection"]||e.multiplex===!1||i,u;return c?u=new Z(r,e):(ge[n]||(ge[n]=new Z(r,e)),u=ge[n]),t.query&&!e.query&&(e.query=t.queryKey),u.socket(t.path,e)}var ge,Ir=w(()=>{Rr();Ar();wt();_e();qe();ge={};Object.assign(Ce,{Manager:Z,Socket:X,io:Ce,connect:Ce})});var j=class extends Error{};j.prototype.name="InvalidTokenError";function Gr(s){return decodeURIComponent(atob(s).replace(/(.)/g,(e,t)=>{let r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}function Fr(s){let e=s.replace(/-/g,"+").replace(/_/g,"/");switch(e.length%4){case 0:break;case 2:e+="==";break;case 3:e+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return Gr(e)}catch{return atob(e)}}function $e(s,e){if(typeof s!="string")throw new j("Invalid token specified: must be a string");e||(e={});let t=e.header===!0?0:1,r=s.split(".")[t];if(typeof r!="string")throw new j(`Invalid token specified: missing part #${t+1}`);let n;try{n=Fr(r)}catch(o){throw new j(`Invalid token specified: invalid base64 for part #${t+1} (${o.message})`)}try{return JSON.parse(n)}catch(o){throw new j(`Invalid token specified: invalid json for part #${t+1} (${o.message})`)}}function jr(s,e={}){let{arrayFormat:t="repeat",objectFormat:r="bracket",encode:n=!0}=e,o=[],i=u=>n?encodeURIComponent(u):u,c=(u,l)=>{if(l!=null)if(Array.isArray(l))if(t==="comma")o.push([u,i(l.join(","))]);else if(t==="brackets"){let g=`${u}[]`;l.forEach(v=>{o.push([g,i(String(v))])})}else t==="repeat"&&l.forEach(g=>{o.push([u,i(String(g))])});else l instanceof Date?o.push([u,i(l.toString())]):typeof l=="object"?r==="json"?o.push([u,i(JSON.stringify(l))]):r==="dot"?Kt(l,u,o,i):r==="bracket"&&Vt(l,u,o,i):typeof l=="boolean"?o.push([u,i(l.toString())]):typeof l=="number"?o.push([u,i(l.toString())]):typeof l=="string"?o.push([u,i(l)]):o.push([u,i(String(l))])};return Object.entries(s).forEach(([u,l])=>{c(u,l)}),o}function Kt(s,e,t,r){Object.entries(s).forEach(([n,o])=>{let i=`${e}.${n}`;o!=null&&(typeof o=="object"&&!Array.isArray(o)?Kt(o,i,t,r):Array.isArray(o)?t.push([i,r(o.join(","))]):t.push([i,r(String(o))]))})}function Vt(s,e,t,r){Object.entries(s).forEach(([n,o])=>{let i=`${e}[${n}]`;o!=null&&(typeof o=="object"&&!Array.isArray(o)?Vt(o,i,t,r):Array.isArray(o)?t.push([i,r(o.join(","))]):t.push([i,r(String(o))]))})}function Kr(s){let e=new URLSearchParams;return s.forEach(([t,r])=>{e.append(t,r)}),e}function zt(s,e){let t=jr(s,{...e,encode:!1});return Kr(t)}function We(s){return{async register(e){let t=await s._request({endpoint:"/v1/auth/register",method:"POST",body:e,sendJWT:!1});return t&&t.tokens&&t.tokens.access&&t.tokens.refresh?s._setTokens(t.tokens.access.token,t.tokens.refresh.token,t.tokens.access.expires,t.tokens.refresh.expires):console.warn("Register response did not contain expected tokens."),t},async login(e){let t=await s._request({endpoint:"/v1/auth/login",method:"POST",body:e,sendJWT:!1});return t&&"tokens"in t&&t.tokens&&t.tokens.access&&t.tokens.refresh?s._setTokens(t.tokens.access.token,t.tokens.refresh.token,t.tokens.access.expires,t.tokens.refresh.expires):t&&"tokens"in t&&t.tokens&&t.tokens.verifyMfa?(s._setTokens(null,null),s._setVerifyMfaToken(t.tokens.verifyMfa.token)):(console.warn("Login response did not contain expected tokens or MFA challenge."),s._setTokens(null,null)),t},async logout(e){let t=e||s._getRefreshToken();if(t)try{await s._request({endpoint:"/v1/auth/logout",method:"POST",body:{refreshToken:t},sendJWT:!1})}catch(r){console.warn("Logout API call failed, but clearing local tokens:",r)}s._setTokens(null,null)},async refreshTokens(e){let t=e||s._getRefreshToken();if(!t)throw new Error("No refresh token provided or found in client storage.");let r=await s._request({endpoint:"/v1/auth/refresh-tokens",method:"POST",body:{refreshToken:t},sendJWT:!1,_isInternalRefresh:!0});return r&&r.access&&r.refresh?s._setTokens(r.access.token,r.refresh.token,r.access.expires,r.refresh.expires):(console.warn("Refresh response did not contain expected tokens."),s._setTokens(null,null)),r},async forgotPassword(e){await s._request({endpoint:"/v1/auth/forgot-password",method:"POST",body:{email:e},sendJWT:!1})},async resetPassword({token:e,password:t}){await s._request({endpoint:"/v1/auth/reset-password",method:"POST",body:{token:e,password:t},sendJWT:!1})},async sendVerificationEmail(){await s._request({endpoint:"/v1/auth/send-verification-email",method:"POST",sendJWT:!0})},async resendVerification(e){await s._request({endpoint:"/v1/auth/resend-verification",method:"POST",body:{email:e},sendJWT:!1})},async verifyEmail(e){await s._request({endpoint:`/v1/auth/verify-email?token=${encodeURIComponent(e)}`,method:"POST",sendJWT:!1})},async enableMfa(){return s._request({endpoint:"/v1/auth/enable-mfa",method:"POST",sendJWT:!0})},async verifyMfa(e){let t=s._getVerifyMfaToken(),r={endpoint:"/v1/auth/verify-mfa",method:"POST",body:{mfaToken:e}};t?(r.sendJWT=!1,r.customHeaders={Authorization:`Bearer ${t}`}):r.sendJWT=!0;let n=await s._request(r);return n&&n.tokens?.access&&(s._setTokens(n.tokens.access.token,n.tokens.refresh.token,n.tokens.access.expires,n.tokens.refresh.expires),s._setVerifyMfaToken(null)),n},async verifyBackupCode(e){let t=s._getVerifyMfaToken(),r={endpoint:"/v1/auth/verify-backup-code",method:"POST",body:{backupCode:e}};t?(r.sendJWT=!1,r.customHeaders={Authorization:`Bearer ${t}`}):r.sendJWT=!0;let n=await s._request(r);return n&&n.tokens?.access&&(s._setTokens(n.tokens.access.token,n.tokens.refresh.token,n.tokens.access.expires,n.tokens.refresh.expires),s._setVerifyMfaToken(null)),n},async disableMfa(e){await s._request({endpoint:"/v1/auth/disable-mfa",method:"POST",body:{mfaToken:e},sendJWT:!0})},async changePassword(e,t,r){await s._request({endpoint:"/v1/auth/change-password",method:"POST",body:{currentPassword:e,newPassword:t,mfaToken:r},sendJWT:!0}),s._setTokens(null,null)},async lockAccount(e){await s._request({endpoint:"/v1/auth/lock-account",method:"POST",body:{token:e},sendJWT:!1}),s._setTokens(null,null)},async setPassword(e,t){await s._request({endpoint:"/v1/auth/set-password",method:"POST",body:{password:e,mfaToken:t},sendJWT:!0})},async linkOAuthProvider(e){return await s._request({endpoint:`/v1/auth/${e}/link`,method:"POST",sendJWT:!0})},async unlinkOAuthProvider(e){await s._request({endpoint:`/v1/auth/oauth/${e}/unlink`,method:"DELETE",sendJWT:!0})},async getLinkedOAuthProviders(){return s._request({endpoint:"/v1/auth/oauth/providers",method:"GET",sendJWT:!0})},async registerGuest(e){await s._request({endpoint:"/v1/auth/register-guest",method:"POST",body:e,sendJWT:!1})},async verifyGuest(e){let t=await s._request({endpoint:`/v1/auth/verify-guest?token=${encodeURIComponent(e)}`,method:"POST",sendJWT:!1});return t?.tokens?.access&&t?.tokens?.refresh&&s._setTokens(t.tokens.access.token,t.tokens.refresh.token,t.tokens.access.expires,t.tokens.refresh.expires),t},async upgradeGuest(e){return s._request({endpoint:"/v1/auth/upgrade-guest",method:"POST",body:e,sendJWT:!0})},async exchangeOAuthCode(e){let t=await s._request({endpoint:"/v1/auth/oauth/exchange",method:"POST",body:{code:e},sendJWT:!1});return t&&t.tokens&&(t.tokens.access&&t.tokens.refresh?s._setTokens(t.tokens.access.token,t.tokens.refresh.token,t.tokens.access.expires,t.tokens.refresh.expires):t.tokens.verifyMfa?console.log("[SDK] OAuth login requires MFA verification"):console.warn("OAuth exchange response did not contain expected tokens.")),t}}}function De(s){return{async getWorkspaceSubscription(e){if(!e)throw new Error("workspaceId is required.");return s._request({method:"GET",endpoint:`/v1/subscriptions/workspace/${e}`,sendJWT:!0})},async cancelWorkspaceSubscription(e){if(!e)throw new Error("workspaceId is required.");return s._request({method:"DELETE",endpoint:`/v1/subscriptions/workspace/${e}`,sendJWT:!0})},async resumeWorkspaceSubscription(e){if(!e)throw new Error("workspaceId is required.");return s._request({method:"POST",endpoint:`/v1/subscriptions/workspace/${e}/resume`,sendJWT:!0})},async swapWorkspacePlan(e,t){if(!e)throw new Error("workspaceId is required.");if(!t.newProductId)throw new Error("newProductId is required.");if(!t.currency)throw new Error("currency is required.");if(!t.billingPeriod)throw new Error("billingPeriod is required.");return s._request({method:"PUT",endpoint:`/v1/subscriptions/workspace/${e}/plan`,body:t,sendJWT:!0})},async getWorkspaceOrders(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({method:"GET",endpoint:`/v1/subscriptions/workspace/${e}/orders`,params:t,sendJWT:!0})},async createWorkspaceOrder(e,t){if(!e)throw new Error("workspaceId is required.");if(!t.productId)throw new Error("productId is required.");if(typeof t.quantity!="number")throw new Error("quantity is required and must be a number.");return s._request({method:"POST",endpoint:`/v1/subscriptions/workspace/${e}/order`,body:t,sendJWT:!0})},async getUserSubscriptions(e){return s._request({method:"GET",endpoint:"/v1/subscriptions/",params:e,sendJWT:!0})},async getResourceLimits(e){if(!e)throw new Error("resourceId is required.");return s._request({method:"GET",endpoint:`/v1/subscriptions/limits/${e}`,sendJWT:!0})},async getSeatUsage(e){if(!e)throw new Error("resourceId is required.");return s._request({method:"GET",endpoint:`/v1/subscriptions/usage/seats/${e}`,sendJWT:!0})},async getRoleUsage(e){if(!e)throw new Error("resourceId is required.");return s._request({method:"GET",endpoint:`/v1/subscriptions/usage/roles/${e}`,sendJWT:!0})},async getStorageUsage(e){if(!e)throw new Error("resourceId is required.");return s._request({method:"GET",endpoint:`/v1/subscriptions/usage/storage/${e}`,sendJWT:!0})},async getWorkspaceUsageSummary(e){if(!e)throw new Error("workspaceId is required.");return s._request({method:"GET",endpoint:`/v1/subscriptions/workspace/${e}/usage-summary`,sendJWT:!0})}}}function Ue(s){return{async getUser(e){if(!e)throw new Error("userId is required.");return s._request({method:"GET",endpoint:`/v1/users/${e}`,sendJWT:!0})},async getSelf(){return s._request({method:"GET",endpoint:"/v1/users",sendJWT:!0})},async deleteCurrentUser(){return s._request({method:"DELETE",endpoint:"/v1/users",sendJWT:!0})},async updateAvatar(e){return s._request({method:"PUT",endpoint:"/v1/users/avatar",body:e,sendJWT:!0})},async createAvatar(e){return s._request({method:"POST",endpoint:"/v1/users/avatar",body:e,sendJWT:!0})},async updatePreferences(e){return s._request({method:"PATCH",endpoint:"/v1/users/preferences",body:e,sendJWT:!0})},async markSeen(e){return s._request({method:"POST",endpoint:"/v1/users/has-seen",body:{element:e},sendJWT:!0})},async unmarkSeen(e){return s._request({method:"DELETE",endpoint:"/v1/users/has-seen",body:e?{elements:e}:{},sendJWT:!0})},async updateSelf(e){if(Object.keys(e).length===0)throw new Error("At least one field must be provided to update the user.");return s._request({method:"PATCH",endpoint:"/v1/users",body:e,sendJWT:!0})},async getTodos(){return s._request({method:"GET",endpoint:"/v1/users/todos",sendJWT:!0})}}}function Be(s){return{async createWorkspace(e){return s._request({endpoint:"/v1/workspaces",method:"POST",body:e,sendJWT:!0})},async getWorkspace(e){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/workspaces/${e}`,method:"GET",sendJWT:!0})},async listWorkspaces(e={}){return s._request({endpoint:"/v1/workspaces",method:"GET",params:Object.keys(e).length>0?{sort:e}:void 0,sendJWT:!0})},async createLogo(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/workspaces/${e}/logo`,method:"POST",body:t,sendJWT:!0})},async updateLogo(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/workspaces/${e}/logo`,method:"PUT",body:t,sendJWT:!0})},async createIcon(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/workspaces/${e}/icon`,method:"POST",body:t,sendJWT:!0})},async updateIcon(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/workspaces/${e}/icon`,method:"PUT",body:t,sendJWT:!0})},async listProjects(e){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/workspaces/${e}/projects`,method:"GET",sendJWT:!0})},async updateWorkspace(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/workspaces/${e}`,method:"PUT",body:t,sendJWT:!0})},async deleteWorkspace(e){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/workspaces/${e}`,method:"DELETE",sendJWT:!0})},async updateSetting(e,t,r){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("settingName is required.");return s._request({endpoint:`/v1/workspaces/${e}/settings/${t}`,method:"PUT",body:{value:r},sendJWT:!0})}}}function Je(s){return{async createProject(e){return s._request({method:"POST",endpoint:"/v1/projects",body:e,sendJWT:!0})},async getProjects(){return s._request({method:"GET",endpoint:"/v1/projects",sendJWT:!0})},async getProject(e){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}`,sendJWT:!0})},async updateProject(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}`,body:t,sendJWT:!0})},async updateSetting(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("name is required.");return s._request({method:"PATCH",endpoint:`/v1/projects/${e}/settings/${encodeURIComponent(t)}`,body:{value:r},sendJWT:!0})},async searchProject(e,t){if(!e)throw new Error("projectId is required.");if(!t||!t.q)throw new Error("params.q is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/search`,params:t,sendJWT:!0})},async deleteProject(e){if(!e)throw new Error("projectId is required.");return s._request({method:"DELETE",endpoint:`/v1/projects/${e}`,sendJWT:!0})},async createLogo(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/logo`,body:t,sendJWT:!0})},async updateLogo(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/logo`,body:t,sendJWT:!0})},async createAssets(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}`,body:t,sendJWT:!0})},async getHomeFeed(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");return s._request({method:"GET",endpoint:`/v1/projects/${e}/feed/${t}`,params:r,sendJWT:!0})},async getFeedEvents(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");return s._request({method:"GET",endpoint:`/v1/projects/${e}/feed-events/${t}`,params:r,sendJWT:!0})},async setFeedEventReaction(e,t,r,n){if(!e||!t||!r)throw new Error("projectId, visibility and eventId are required.");if(!n)throw new Error("emoji is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/feed-events/${t}/${r}/reaction`,body:{emoji:n},sendJWT:!0})},async removeFeedEventReaction(e,t,r){if(!e||!t||!r)throw new Error("projectId, visibility and eventId are required.");return s._request({method:"DELETE",endpoint:`/v1/projects/${e}/feed-events/${t}/${r}/reaction`,sendJWT:!0})},async getFolders(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");let n={...r,resourceType:"folder",mediaTypes:["folder"]};return this.getItemsAtPath(e,t,"",n)},async getProjectChat(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");return s._request({method:"GET",endpoint:`/v1/projects/${e}/chat/${t}`,params:r,sendJWT:!0})},async createSubmission(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/submission`,body:t,sendJWT:!0})},async addItemsToSubmission(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/submission/${t}/add`,body:r,sendJWT:!0})},async getSubmissions(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/submission`,params:t,sendJWT:!0})},async getSubmission(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/submission/${t}`,params:r,sendJWT:!0})},async updateSubmission(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/submission/${t}`,body:r,sendJWT:!0})},async releaseSubmission(e,t){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/submission/${t}/release`,sendJWT:!0})},async releaseSubmissionUpdate(e,t){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/submission/${t}/release-update`,sendJWT:!0})},async getSubmissionItems(e,t,r,n){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");let o=`/v1/projects/${e}/submission/${t}/files`;return r&&typeof r=="string"&&r.trim()!==""&&(o+=`/${encodeURIComponent(r)}`),s._request({method:"GET",endpoint:o,params:n,sendJWT:!0})},async createSubmissionFolder(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/submission/${t}/files/create-folder`,body:r,sendJWT:!0})},async moveSubmissionItems(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/submission/${t}/files/move`,body:r,sendJWT:!0})},async copySubmissionItems(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/submission/${t}/files/copy`,body:r,sendJWT:!0})},async deleteSubmissionItems(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/submission/${t}/files/delete`,body:r,sendJWT:!0})},async tagSubmission(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/submission/${t}/tag`,body:r,sendJWT:!0})},async untagSubmission(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("submissionId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/submission/${t}/untag`,body:r,sendJWT:!0})},async publishItems(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/publish`,body:t,sendJWT:!0})},async unpublishItems(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/unpublish`,body:t,sendJWT:!0})},async createFolder(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");return s._request({method:"POST",endpoint:`/v1/projects/${e}/files/${t}/create-folder`,body:r,sendJWT:!0})},async getItemsAtPath(e,t,r,n,o=!1){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");let i=`/v1/projects/${e}/files/${t}`;r&&r.trim()!==""&&(i+=`/${encodeURIComponent(r)}`);let c=o?"POST":"GET";return s._request({method:c,endpoint:i,params:c==="GET"?n:void 0,body:c==="POST"?n:void 0,sendJWT:!0})},async moveItemsToPath(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/files/${t}/move`,body:r,sendJWT:!0})},async copyItemsToPath(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/files/${t}/copy`,body:r,sendJWT:!0})},async deleteItemsAtPath(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/files/${t}/delete`,body:r,sendJWT:!0})},async previewDeleteItemsAtPath(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required (creator or reviewer).");return s._request({method:"POST",endpoint:`/v1/projects/${e}/files/${t}/delete-preview`,body:r,sendJWT:!0})},async getPublicFileSystems(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/public`,params:t,sendJWT:!0})},async getPublicAudit(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/public-audit`,params:t,sendJWT:!0})},async createPublicFileSystem(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/public`,body:t,sendJWT:!0})},async updatePublicFileSystem(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("publicId is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/public/${t}`,body:r,sendJWT:!0})},async releasePublicFileSystem(e,t){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("publicId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/public/${t}/release`,sendJWT:!0})},async getPublicFileSystem(e,t){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("publicId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/public/${t}`,sendJWT:!0})},async deletePublicFileSystem(e,t){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("publicId is required.");return s._request({method:"DELETE",endpoint:`/v1/projects/${e}/public/${t}`,sendJWT:!0})},async addItemsToPublicFileSystem(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("publicId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/public/${t}/add`,body:r,sendJWT:!0})},async getPublicItemsAtPath(e,t,r,n){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");let o=`/v1/projects/${e}/public/${t}/files`;return r&&r.trim()!==""&&(o+=`/${encodeURIComponent(r)}`),s._request({method:"GET",endpoint:o,params:n,sendJWT:!0})},async movePublicItemsAtPath(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/public/${t}/files/move`,body:r,sendJWT:!0})},async copyPublicItemsAtPath(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/public/${t}/files/copy`,body:r,sendJWT:!0})},async deletePublicItemsAtPath(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");return s._request({method:"PUT",endpoint:`/v1/projects/${e}/public/${t}/files/delete`,body:r,sendJWT:!0})},async createPublicFolder(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/public/${t}/files/create-folder`,body:r,sendJWT:!0})},async getProjectPublicChat(e,t){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/public/${t}/chat`,sendJWT:!0})},async getProjectPublicAsset(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");if(!r)throw new Error("assetId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/public/${t}/assets/${r}`,sendJWT:!0})},async getProjectPublicChatMessages(e,t,r,n){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");if(!r)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/public/${t}/chat/${r}/messages`,params:n,sendJWT:!0})},async createProjectPublicChatMessage(e,t,r,n){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");if(!r)throw new Error("chatId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/public/${t}/chat/${r}/messages`,body:n,sendJWT:!0})},async createProjectPublicTopicChatMessage(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/public/${t}/chat/messages`,body:r,sendJWT:!0})},async createProjectPublicAssetChatMessage(e,t,r,n){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("token is required.");if(!r)throw new Error("assetId is required.");return s._request({method:"POST",endpoint:`/v1/projects/${e}/public/${t}/assets/${r}/messages`,body:n,sendJWT:!0})},async getAssets(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/assets/${t}`,params:r,sendJWT:!0})},async getHighlightedMessages(e,t,r){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/${t}/highlighted-messages`,params:r,sendJWT:!0})},async getTopAccessActivity(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/access-activity/top-assets`,params:t,sendJWT:!0})}}}var Le=class s{constructor(){this.messageListeners=new Map;this.STORAGE_PREFIX="nurama_upload_session_";this.MESSAGE_CHANNEL="nurama_upload_sync";this.initializeCrossTabSync()}static getInstance(){return s.instance||(s.instance=new s),s.instance}initializeCrossTabSync(){if(typeof window<"u"&&"BroadcastChannel"in window)try{this.broadcastChannel=new BroadcastChannel(this.MESSAGE_CHANNEL),this.broadcastChannel.addEventListener("message",this.handleCrossTabMessage.bind(this))}catch(e){console.warn("[UploadSessionManager] BroadcastChannel not available:",e)}}handleCrossTabMessage(e){let t=e.data;t&&t.type&&t.projectId&&t.sessionId&&this.messageListeners.forEach(r=>{try{r(t)}catch(n){console.error("[UploadSessionManager] Error in message listener:",n)}})}getStorageKey(e,t){return`${this.STORAGE_PREFIX}${e}_${t}`}createSession(e,t,r){let n={sessionId:t,projectId:e,uploadId:r.uploadId,key:r.key,assetId:r.assetId,progress:0,partNumber:1,totalParts:r.totalParts,completedParts:[],fileName:r.fileName,fileSize:r.fileSize,timestamp:Date.now(),status:"uploading"};return this.saveSession(n),this.broadcastMessage("upload_status_change",e,t,n),n}updateProgress(e,t,r){let n=this.getSession(e,t);if(!n){console.warn(`[UploadSessionManager] Session not found: ${t}`);return}let o={...n,progress:r.progress,partNumber:r.partNumber,completedParts:r.completedParts||n.completedParts,timestamp:Date.now()};this.saveSession(o),this.broadcastMessage("upload_progress_update",e,t,{progress:r.progress,partNumber:r.partNumber,completedParts:r.completedParts,timestamp:o.timestamp})}updateStatus(e,t,r,n){let o=this.getSession(e,t);if(!o){console.warn(`[UploadSessionManager] Session not found: ${t}`);return}let i={...o,status:r,error:n,timestamp:Date.now()};this.saveSession(i),this.broadcastMessage("upload_status_change",e,t,{status:r,error:n,timestamp:i.timestamp})}getSession(e,t){if(typeof window>"u")return null;try{let r=this.getStorageKey(e,t),n=localStorage.getItem(r);if(n){let o=JSON.parse(n);if(o.projectId===e&&o.sessionId===t)return o}}catch(r){console.warn(`[UploadSessionManager] Failed to get session ${t}:`,r)}return null}getProjectSessions(e){if(typeof window>"u")return[];let t=[],r=`${this.STORAGE_PREFIX}${e}_`;try{for(let n=0;n<localStorage.length;n++){let o=localStorage.key(n);if(o&&o.startsWith(r)){let i=localStorage.getItem(o);if(i)try{let c=JSON.parse(i);c.projectId===e&&t.push(c)}catch(c){console.warn(`[UploadSessionManager] Invalid session data in ${o}:`,c)}}}}catch(n){console.warn("[UploadSessionManager] Failed to get project sessions:",n)}return t.sort((n,o)=>o.timestamp-n.timestamp)}getAllSessions(){if(typeof window>"u")return[];let e=[];try{for(let t=0;t<localStorage.length;t++){let r=localStorage.key(t);if(r&&r.startsWith(this.STORAGE_PREFIX)){let n=localStorage.getItem(r);if(n)try{e.push(JSON.parse(n))}catch(o){console.warn(`[UploadSessionManager] Invalid session data in ${r}:`,o)}}}}catch(t){console.warn("[UploadSessionManager] Failed to enumerate sessions:",t)}return e.sort((t,r)=>r.timestamp-t.timestamp)}hasActiveUploads(e=120*1e3){let t=Date.now()-e;return this.getAllSessions().some(r=>(r.status==="uploading"||r.status==="completing")&&r.timestamp>=t)}saveSession(e){if(!(typeof window>"u"))try{let t=this.getStorageKey(e.projectId,e.sessionId);localStorage.setItem(t,JSON.stringify(e))}catch(t){console.warn(`[UploadSessionManager] Failed to save session ${e.sessionId}:`,t)}}removeSession(e,t){if(!(typeof window>"u"))try{let r=this.getStorageKey(e,t);localStorage.removeItem(r),this.broadcastMessage("upload_cleanup",e,t)}catch(r){console.warn(`[UploadSessionManager] Failed to remove session ${t}:`,r)}}cleanupSessions(e,t=1440*60*1e3){let r=this.getProjectSessions(e),n=Date.now()-t;r.forEach(o=>{(o.timestamp<n||["completed","failed","cancelled"].includes(o.status)&&o.timestamp<Date.now()-36e5)&&this.removeSession(e,o.sessionId)})}onMessage(e,t){this.messageListeners.set(e,t)}offMessage(e){this.messageListeners.delete(e)}broadcastMessage(e,t,r,n){if(this.broadcastChannel)try{let o={type:e,projectId:t,sessionId:r,data:n};this.broadcastChannel.postMessage(o)}catch(o){console.warn("[UploadSessionManager] Failed to broadcast message:",o)}}destroy(){this.broadcastChannel&&(this.broadcastChannel.close(),this.broadcastChannel=void 0),this.messageListeners.clear()}},M=Le.getInstance();function Oe(s){async function e(t,r,n,o,i={},c=1){let{onPartProgress:u,maxRetries:l=3,abortSignal:g}=i;try{if(u&&u({partNumber:r,totalParts:n,partPercent:0}),g?.aborted)throw new Error("Upload aborted by user");let v={"Content-Type":"application/octet-stream"};typeof Buffer<"u"&&o instanceof Buffer&&(v["Content-Length"]=o.length.toString());let R=await fetch(t,{method:"PUT",headers:v,body:o,signal:g});if(!R.ok)throw new Error(`Upload failed: ${R.status} ${R.statusText}`);let q=R.headers.get("ETag")?.replace(/['"]/g,"")||"";if(!q)throw new Error("Server did not return an ETag");return u&&u({partNumber:r,totalParts:n,partPercent:100}),{ETag:q,PartNumber:r}}catch(v){if(c<l){console.warn(`Part ${r} upload failed (attempt ${c}/${l}). Retrying...`);let R=Math.min(1e3*Math.pow(2,c-1)*(.9+Math.random()*.2),1e4);return await new Promise(q=>setTimeout(q,R)),e(t,r,n,o,i,c+1)}throw v}}return{async getAsset(t,r){if(!t)throw new Error("assetId is required.");return s._request({method:"GET",endpoint:`/v1/assets/${t}`,params:r,sendJWT:!0})},async getAssetReferences(t){if(!t)throw new Error("assetId is required.");return s._request({method:"GET",endpoint:`/v1/assets/${t}/references`,sendJWT:!0})},async updateAsset(t,r){if(!t)throw new Error("assetId is required.");return s._request({method:"PUT",endpoint:`/v1/assets/${t}`,body:r,sendJWT:!0})},async deleteAsset(t){if(!t)throw new Error("assetId is required.");return s._request({method:"DELETE",endpoint:`/v1/assets/${t}`,sendJWT:!0})},async getFile(t,r){if(!t)throw new Error("assetId is required.");if(!r)throw new Error("fileId is required.");return s._request({method:"GET",endpoint:`/v1/assets/${t}/file/${r}`,sendJWT:!0})},async getFilesByFunctionType(t,r){if(!t)throw new Error("assetId is required.");if(!r)throw new Error("functionType is required.");return s._request({method:"GET",endpoint:`/v1/assets/${t}/function-type/${r}`,sendJWT:!0})},async completeUpload(t){if(!t||!t.key||!t.uploadId||!t.parts||!t.assetId)throw new Error("key, uploadId, parts, and assetId are required for completeUpload.");return s._request({method:"POST",endpoint:"/v1/assets/complete-upload",body:t,sendJWT:!0})},async multipartUpload(t,r,n,o,i={}){if(!t)throw new Error("file is required");if(!r||!r.length)throw new Error("signedUrls array is required and cannot be empty");if(!n)throw new Error("key is required");if(!o)throw new Error("uploadId is required");let{onProgress:c,abortSignal:u,enableProgressPersistence:l,projectId:g,sessionId:v,fileName:R,fileSize:q,assetId:F}=i,$=r.length,ee=[],te=new Array($).fill(0),re=()=>{let a=te.reduce((p,d)=>p+d,0)/$;return Math.floor(a)},x=null;if(l&&g){let a=v||`upload_${o}_${Date.now()}`,p=R||typeof t=="string"&&t.split("/").pop()||"unknown",d=q;d||(typeof File<"u"&&t instanceof File||typeof Blob<"u"&&t instanceof Blob?d=t.size:typeof Buffer<"u"&&t instanceof Buffer&&(d=t.length));try{x=M.createSession(g,a,{uploadId:o,key:n,fileName:p,fileSize:d||0,totalParts:$,assetId:F})}catch(h){console.warn("[SDK] Failed to create upload session:",h)}}try{let a,p;if(typeof File<"u"&&t instanceof File||typeof Blob<"u"&&t instanceof Blob){let h=t;a=h.size,p=async(m,E)=>{let y=h.slice(m,E),b;if(typeof y.arrayBuffer=="function"?b=await y.arrayBuffer():b=await new Promise((D,U)=>{let T=new FileReader;T.onload=()=>D(T.result),T.onerror=()=>U(new Error("Failed to read blob chunk")),T.readAsArrayBuffer(y)}),b.byteLength===0&&E>m)throw new Error(`Failed to read file bytes ${m}-${E}: got 0 bytes (file may have been modified or removed)`);return b}}else if(typeof Buffer<"u"&&t instanceof Buffer){let h=t;a=h.length,p=async(m,E)=>h.slice(m,E)}else if(typeof t=="string"){if(typeof process>"u"||typeof Ie!="function")throw new Error("File path provided but environment does not support Node.js file system");try{let h=await import("fs/promises"),{stat:m,open:E}=h;a=(await m(t)).size,p=async(b,D)=>{let U=await E(t,"r");try{let T=D-b,P=Buffer.alloc(T);return await U.read(P,0,T,b),P}finally{await U.close()}}}catch(h){let m=h instanceof Error?h.message:String(h);throw new Error(`Failed to read file: ${m}`)}}else throw new Error("Unsupported file type. Must be File, Blob, Buffer, or string path in Node.js");let d=Math.ceil(a/$);for(let h=0;h<$;h++){if(u?.aborted)throw new Error("Upload aborted by user");let m=h+1,E=h*d,y=Math.min((h+1)*d,a),b=re();s._log(`[DEBUG] Uploading part ${m}/${$}, bytes ${E}-${y-1} of ${a}, totalPercentComplete: ${b}%`);let D=await p(E,y),U={maxRetries:i.maxRetries,abortSignal:u,onPartProgress:c?P=>{te[h]=P.partPercent;let _=re();if(x)try{let S=te.map((A,Ae)=>A===100?Ae+1:null).filter(A=>A!==null);M.updateProgress(x.projectId,x.sessionId,{progress:_,partNumber:P.partNumber,completedParts:S})}catch(S){console.warn("[SDK] Failed to update upload session progress:",S)}c({partNumber:P.partNumber,totalParts:P.totalParts,percentComplete:P.partPercent,totalPercentComplete:_})}:void 0},T=await e(r[h],m,$,D,U);ee.push(T)}if(ee.sort((h,m)=>h.PartNumber-m.PartNumber),x)try{M.updateStatus(x.projectId,x.sessionId,"completing")}catch(h){console.warn("[SDK] Failed to update upload session status to completing:",h)}return{key:n,uploadId:o,parts:ee}}catch(a){if(x)try{let p=a instanceof Error?a.message:String(a);M.updateStatus(x.projectId,x.sessionId,"failed",p)}catch(p){console.warn("[SDK] Failed to update upload session status to failed:",p)}throw a}},async getAssetPage(t,r){if(!t)throw new Error("assetId is required.");return s._request({method:"GET",endpoint:`/v1/assets/page/${t}`,params:r,sendJWT:!0})},async repairAssets(t){if(!t||t.length===0)throw new Error("assetIds array is required and cannot be empty.");return s._request({method:"POST",endpoint:"/v1/assets/repair",body:{assetIds:t},sendJWT:!0})},async downloadAssets(t){if(!t||t.length===0)throw new Error("assetIds array is required and cannot be empty.");return s._request({method:"POST",endpoint:"/v1/assets/download",body:{assetIds:t},sendJWT:!0})},async getDocumentViewUrl(t){if(!t)throw new Error("assetId is required.");return s._request({method:"GET",endpoint:`/v1/assets/${t}/document-url`,sendJWT:!0})},async tagAsset(t,r){if(!t)throw new Error("assetId is required.");if(!r.tagId)throw new Error("tagId is required.");return s._request({method:"PUT",endpoint:`/v1/assets/${t}/tag`,body:r,sendJWT:!0})},async untagAsset(t,r){if(!t)throw new Error("assetId is required.");if(!r.tagId)throw new Error("tagId is required.");return s._request({method:"PUT",endpoint:`/v1/assets/${t}/untag`,body:r,sendJWT:!0})},async createShortLink(t,r){if(!t)throw new Error("assetId is required.");return s._request({method:"POST",endpoint:`/v1/assets/${t}/shortlink`,params:r,sendJWT:!0})},async createPublicLink(t,r){if(!t)throw new Error("assetId is required.");return s._request({method:"POST",endpoint:`/v1/assets/${t}/public-links`,body:r,sendJWT:!0})},async getPublicLinks(t,r){if(!t)throw new Error("assetId is required.");return s._request({method:"GET",endpoint:`/v1/assets/${t}/public-links`,sendJWT:!0,bypassCache:r?.bypassCache})},async updatePublicLink(t,r,n){if(!t)throw new Error("assetId is required.");if(!r)throw new Error("linkId is required.");return s._request({method:"PUT",endpoint:`/v1/assets/${t}/public-links/${r}`,body:n,sendJWT:!0})},async disablePublicLink(t,r){if(!t)throw new Error("assetId is required.");if(!r)throw new Error("linkId is required.");return s._request({method:"PUT",endpoint:`/v1/assets/${t}/public-links/${r}/disable`,sendJWT:!0})},async reactivatePublicLink(t,r,n){if(!t)throw new Error("assetId is required.");if(!r)throw new Error("linkId is required.");return s._request({method:"PUT",endpoint:`/v1/assets/${t}/public-links/${r}/reactivate`,body:n,sendJWT:!0})},async getCustomThumbnailUploadUrl(t,r){if(!t)throw new Error("assetId is required.");if(!r?.fileName||!r?.mimeType||!r?.sizeInMB)throw new Error("fileName, mimeType, and sizeInMB are required.");return s._request({method:"POST",endpoint:`/v1/assets/${t}/custom-thumbnail/upload-url`,body:r,sendJWT:!0})},async completeCustomThumbnailUpload(t,r){if(!t)throw new Error("assetId is required.");if(!r?.key||!r?.uploadId||!r?.parts?.length)throw new Error("key, uploadId, and parts are required.");return s._request({method:"POST",endpoint:`/v1/assets/${t}/custom-thumbnail/complete-upload`,body:r,sendJWT:!0})},async removeCustomThumbnail(t){if(!t)throw new Error("assetId is required.");return s._request({method:"DELETE",endpoint:`/v1/assets/${t}/custom-thumbnail`,sendJWT:!0})},async promoteAttachmentToProject(t,r){if(!t)throw new Error("assetId is required.");if(!r?.projectId)throw new Error("projectId is required.");return s._request({method:"POST",endpoint:`/v1/assets/${t}/promote-to-project`,body:r,sendJWT:!0})},getUploadSessions(t){if(!t)throw new Error("projectId is required");return M.getProjectSessions(t)},hasActiveUploads(t){return M.hasActiveUploads(t)},getUploadSession(t,r){if(!t)throw new Error("projectId is required");if(!r)throw new Error("sessionId is required");return M.getSession(t,r)},removeUploadSession(t,r){if(!t)throw new Error("projectId is required");if(!r)throw new Error("sessionId is required");M.removeSession(t,r)},cleanupUploadSessions(t,r){if(!t)throw new Error("projectId is required");M.cleanupSessions(t,r)},onUploadSessionMessage(t,r){if(!t)throw new Error("listenerId is required");if(typeof r!="function")throw new Error("callback must be a function");M.onMessage(t,r)},offUploadSessionMessage(t){if(!t)throw new Error("listenerId is required");M.offMessage(t)},completeUploadSession(t,r){if(!t)throw new Error("projectId is required");if(!r)throw new Error("sessionId is required");M.updateStatus(t,r,"completed")},async recordAccessActivity(t,r){if(!t)throw new Error("assetId is required.");await s._request({method:"POST",endpoint:`/v1/assets/${t}/access-activity`,body:r,sendJWT:!0})},async getAssetAccessActivity(t,r){if(!t)throw new Error("assetId is required.");let n=new URLSearchParams;r?.range&&n.set("range",r.range),r?.groupBy&&n.set("groupBy",r.groupBy),r?.eventType&&n.set("eventType",r.eventType),r?.limit!=null&&n.set("limit",String(r.limit));let o=n.toString();return s._request({method:"GET",endpoint:`/v1/assets/${t}/access-activity${o?`?${o}`:""}`,sendJWT:!0})}}}function Ne(s){return{async createTopicChat(e){return s._request({method:"POST",endpoint:"/v1/chats/topic",body:e,sendJWT:!0})},async getChatByTopicId(e,t){if(!e)throw new Error("topicId is required.");return s._request({method:"GET",endpoint:`/v1/chats/topic/${e}`,params:t,sendJWT:!0})},async createMemberChat(e){return s._request({method:"POST",endpoint:"/v1/chats/member",body:e,sendJWT:!0})},async getUsersMemberChats(e){return s._request({method:"GET",endpoint:"/v1/chats/member",params:e,sendJWT:!0})},async getMemberChat(e){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/member/${e}`,sendJWT:!0})},async getWorkspaceProjectChats(e){if(!e)throw new Error("workspaceId is required.");return s._request({method:"GET",endpoint:`/v1/chats/workspace/${e}/project-chats`,sendJWT:!0})},async updateMemberChat(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/member/${e}`,body:t,sendJWT:!0})},async deleteMemberChat(e){if(!e)throw new Error("chatId is required.");return s._request({method:"DELETE",endpoint:`/v1/chats/member/${e}`,sendJWT:!0})},async archiveMemberChat(e){if(!e)throw new Error("chatId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/member/${e}/archive`,sendJWT:!0})},async unarchiveMemberChat(e){if(!e)throw new Error("chatId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/member/${e}/unarchive`,sendJWT:!0})},async updateMemberChatIcon(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/member/${e}/icon`,body:t,sendJWT:!0})},async getAddableMembers(e){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/member/members/${e}`,sendJWT:!0})},async getScopeAddableMembers(e,t){if(!e)throw new Error("scopeType is required.");if(!t)throw new Error("scopeId is required.");return s._request({method:"GET",endpoint:"/v1/chats/member/addable",params:{scopeType:e,scopeId:t},sendJWT:!0})},async addMembers(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/member/members/${e}`,body:t,sendJWT:!0})},async removeMembers(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"DELETE",endpoint:`/v1/chats/member/members/${e}`,body:t,sendJWT:!0})},async getChat(e){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}`,sendJWT:!0})},async updateChatSubject(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/${e}`,body:t,sendJWT:!0})},async deleteChat(e){if(!e)throw new Error("chatId is required.");return s._request({method:"DELETE",endpoint:`/v1/chats/${e}`,sendJWT:!0})},async createMessage(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"POST",endpoint:`/v1/chats/${e}/new-message`,body:t,sendJWT:!0})},async createAssetChatAndMessage(e,t,r,n){if(!e)throw new Error("assetId is required.");return s._request({method:"POST",endpoint:`/v1/chats/asset/${e}/${t}/new-message`,body:r,params:n,sendJWT:!0})},async getMessages(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}/messages`,params:t,sendJWT:!0})},async getMessage(e,t){if(!e)throw new Error("messageId is required.");return s._request({method:"GET",endpoint:`/v1/chats/message/${e}`,params:t,sendJWT:!0})},async reviseMessage(e,t){if(!e)throw new Error("messageId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/message/${e}`,body:t,sendJWT:!0})},async deleteMessage(e){if(!e)throw new Error("messageId is required.");return s._request({method:"DELETE",endpoint:`/v1/chats/message/${e}`,sendJWT:!0})},async getReplies(e,t){if(!e)throw new Error("messageId is required.");return s._request({method:"GET",endpoint:`/v1/chats/message/${e}/replies`,params:t,sendJWT:!0})},async addAttachments(e,t){if(!e)throw new Error("messageId is required.");return s._request({method:"POST",endpoint:`/v1/chats/message/${e}/attachment/`,body:t,sendJWT:!0})},async removeAttachment(e,t){if(!e)throw new Error("messageId is required.");if(!t)throw new Error("assetId is required.");return s._request({method:"DELETE",endpoint:`/v1/chats/message/${e}/attachment/${t}`,sendJWT:!0})},async getMentions(e){return s._request({method:"GET",endpoint:"/v1/chats/mentions",params:e,sendJWT:!0})},async createReaction(e,t){if(!e)throw new Error("messageId is required.");return s._request({method:"POST",endpoint:`/v1/chats/message/${e}/reaction`,body:t,sendJWT:!0})},async removeReaction(e){if(!e)throw new Error("messageId is required.");return s._request({method:"DELETE",endpoint:`/v1/chats/message/${e}/reaction`,sendJWT:!0})},async followChat(e){if(!e)throw new Error("chatId is required.");await s._request({method:"PUT",endpoint:`/v1/chats/${e}/follow`,sendJWT:!0})},async unfollowChat(e){if(!e)throw new Error("chatId is required.");await s._request({method:"PUT",endpoint:`/v1/chats/${e}/unfollow`,sendJWT:!0})},async getMentionableAssets(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}/mentionable/assets`,params:t,sendJWT:!0})},async getMentionableFolders(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}/mentionable/folders`,params:t,sendJWT:!0})},async getMentionableSubmissions(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}/mentionable/submissions`,params:t,sendJWT:!0})},async getMentionablePublics(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}/mentionable/publics`,params:t,sendJWT:!0})},async getMentionableTasks(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}/mentionable/tasks`,params:t,sendJWT:!0})},async highlightMessage(e){if(!e)throw new Error("messageId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/message/${e}/highlight`,sendJWT:!0})},async unhighlightMessage(e){if(!e)throw new Error("messageId is required.");return s._request({method:"PUT",endpoint:`/v1/chats/message/${e}/unhighlight`,sendJWT:!0})},async createMessageShortLink(e){if(!e)throw new Error("messageId is required.");return s._request({method:"POST",endpoint:`/v1/chats/message/${e}/shortlink`,sendJWT:!0})},async fetchLinkPreviews(e){return s._request({method:"POST",endpoint:"/v1/link-preview",body:e,sendJWT:!0})}}}function Ge(s){return{async getFolder(e){if(!e)throw new Error("folderId is required.");return s._request({method:"GET",endpoint:`/v1/folders/${e}`,sendJWT:!0})},async updateFolder(e,t){if(!e)throw new Error("folderId is required.");return s._request({method:"PUT",endpoint:`/v1/folders/${e}`,body:t,sendJWT:!0})},async updateFolderIcon(e,t){if(!e)throw new Error("folderId is required.");return s._request({method:"PUT",endpoint:`/v1/folders/${e}/icon`,body:t,sendJWT:!0})},async getFoldersAssets(e,t){if(!e)throw new Error("folderId is required.");return s._request({method:"GET",endpoint:`/v1/folders/${e}/assets`,params:t,sendJWT:!0})},async tagFolder(e,t){if(!e)throw new Error("folderId is required.");if(!t.tagId)throw new Error("tagId is required.");return s._request({method:"PUT",endpoint:`/v1/folders/${e}/tag`,body:t,sendJWT:!0})},async untagFolder(e,t){if(!e)throw new Error("folderId is required.");if(!t.tagId)throw new Error("tagId is required.");return s._request({method:"PUT",endpoint:`/v1/folders/${e}/untag`,body:t,sendJWT:!0})}}}function Fe(s){return{async inviteUser(e){return s._request({method:"POST",endpoint:"/v1/invites",body:e,sendJWT:!0})},async getInvites(e){return s._request({method:"GET",endpoint:"/v1/invites",params:e,sendJWT:!0})},async getInviteById(e){if(!e)throw new Error("inviteId is required.");return s._request({method:"GET",endpoint:`/v1/invites/${e}`,sendJWT:!1})},async cancelInvite(e){if(!e)throw new Error("inviteId is required.");return s._request({method:"DELETE",endpoint:`/v1/invites/${e}`,sendJWT:!0})},async getInvitesForResource(e,t){if(!e)throw new Error("resourceId is required.");return s._request({method:"GET",endpoint:`/v1/invites/resource/${e}`,params:t,sendJWT:!0})},async acceptInvite(e){if(!e)throw new Error("inviteId is required.");return s._request({method:"POST",endpoint:`/v1/invites/accept/${e}`,sendJWT:!0})},async resendInvite(e){if(!e)throw new Error("inviteId is required.");return s._request({method:"POST",endpoint:`/v1/invites/resend/${e}`,sendJWT:!0})}}}function je(s){return{async createJoinLink(e){return s._request({method:"POST",endpoint:"/v1/join-links",body:e,sendJWT:!0})},async getJoinLinks(e){if(!e?.projectId)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:"/v1/join-links",params:e,sendJWT:!0})},async updateJoinLink(e,t){if(!e)throw new Error("linkId is required.");return s._request({method:"PATCH",endpoint:`/v1/join-links/${e}`,body:t,sendJWT:!0})},async rollJoinLink(e,t){if(!e)throw new Error("linkId is required.");return s._request({method:"POST",endpoint:`/v1/join-links/${e}/roll`,body:t!==void 0?{expiresAt:t}:{},sendJWT:!0})},async getJoinByToken(e){if(!e)throw new Error("token is required.");return s._request({method:"GET",endpoint:`/v1/join/${e}`,sendJWT:!1})},async joinByToken(e){if(!e)throw new Error("token is required.");return s._request({method:"POST",endpoint:`/v1/join/${e}`,sendJWT:!0})}}}function Ke(s){return{async getMyMemberships(){return s._request({method:"GET",endpoint:"/v1/memberships/",sendJWT:!0})},async getWorkspaceMemberships(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({method:"GET",endpoint:`/v1/memberships/workspace/${e}`,params:t,sendJWT:!0})},async getProjectMemberships(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/memberships/project/${e}`,params:t,sendJWT:!0})},async deleteMembership(e){if(!e)throw new Error("membershipId is required.");return s._request({method:"DELETE",endpoint:`/v1/memberships/${e}`,sendJWT:!0})},async leaveResource(e){if(!e)throw new Error("resourceId is required.");return s._request({method:"DELETE",endpoint:`/v1/memberships/leave/${e}`,sendJWT:!0})},async addRole(e){if(!e||!e.membershipId||!e.role)throw new Error("membershipId and role are required.");return s._request({method:"POST",endpoint:"/v1/memberships/add-role",body:e,sendJWT:!0})},async removeRole(e){if(!e||!e.membershipId||!e.role)throw new Error("membershipId and role are required.");return s._request({method:"POST",endpoint:"/v1/memberships/remove-role",body:e,sendJWT:!0})},async getProjectMentionableUsers(e,t){if(!e)throw new Error("projectId is required.");if(!t)throw new Error("visibility is required.");return s._request({method:"GET",endpoint:`/v1/memberships/mentionable/project/${e}/${t}`,sendJWT:!0})},async getWorkspaceLastSeen(e,t){if(!e)throw new Error("workspaceId is required.");if(!t||!t.userIds||!Array.isArray(t.userIds)||t.userIds.length===0)throw new Error("userIds array is required and must contain at least one user ID.");if(t.userIds.length>100)throw new Error("userIds array cannot contain more than 100 user IDs.");return s._request({method:"POST",endpoint:`/v1/memberships/workspace/${e}/last-seen`,body:t,sendJWT:!0})},async getProjectLastSeen(e,t){if(!e)throw new Error("projectId is required.");if(!t||!t.userIds||!Array.isArray(t.userIds)||t.userIds.length===0)throw new Error("userIds array is required and must contain at least one user ID.");if(t.userIds.length>100)throw new Error("userIds array cannot contain more than 100 user IDs.");return s._request({method:"POST",endpoint:`/v1/memberships/project/${e}/last-seen`,body:t,sendJWT:!0})}}}function Ve(s){return{async getNotifications(e){return s._request({method:"POST",endpoint:"/v1/notifications/",body:e,sendJWT:!0})},async getNewNotifications(e){return s._request({method:"POST",endpoint:"/v1/notifications/new",body:e,sendJWT:!0})},async getNewNotificationCount(e){return s._request({method:"POST",endpoint:"/v1/notifications/count",body:e,sendJWT:!0})},async getNewNotificationCountBulk(e){return s._request({method:"POST",endpoint:"/v1/notifications/count/bulk",body:e,sendJWT:!0})},async getUsersLastNotificationsSeen(e){return s._request({method:"POST",endpoint:"/v1/notifications/last-seen",body:e,sendJWT:!0})},async updateUsersLastSeen(e){return s._request({method:"PUT",endpoint:"/v1/notifications/last-seen",body:e,sendJWT:!0})}}}function ze(s){return{async createStripeCheckout(e){if(!e.resourceId)throw new Error("resourceId is required.");if(!e.productId)throw new Error("productId is required.");if(!e.currency)throw new Error("currency is required.");if(!e.billingPeriod)throw new Error("billingPeriod is required.");return s._request({method:"POST",endpoint:"/v1/payments/stripe/checkout",body:e,sendJWT:!0})},async createManualCheckout(e){if(!e.resourceId)throw new Error("resourceId is required.");if(!e.productId)throw new Error("productId is required.");if(!e.currency)throw new Error("currency is required.");if(!e.billingPeriod)throw new Error("billingPeriod is required.");return s._request({method:"POST",endpoint:"/v1/payments/manual/checkout",body:e,sendJWT:!0})},async createStripeCustomer(){return s._request({method:"POST",endpoint:"/v1/payments/stripe/customer",sendJWT:!0})},async getStripePortalUrl(){return s._request({method:"GET",endpoint:"/v1/payments/stripe/portal",sendJWT:!0})}}}function He(s){return{async getWorkspaceProducts(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({method:"GET",endpoint:`/v1/products/workspace/${e}`,params:t,sendJWT:!0})},async listPlans(){return s._request({method:"GET",endpoint:"/v1/products/plans",sendJWT:!0})},async getSuggestedCurrency(){return s._request({method:"GET",endpoint:"/v1/products/suggested-currency",sendJWT:!0})}}}var hs=new Set(["disconnect","tokenExpired","tokenBlacklisted","reconnect_failed","reconnect"]);function Tt(s){let e={},t=s.debug,r=(...a)=>{t&&console.log("[SOCKET]",...a)},n=async()=>{try{let a=await Promise.resolve().then(()=>(Ir(),Mr));return a.default||a}catch{throw new Error("socket.io-client is not installed. Please install it with: npm install socket.io-client")}},o=()=>s._apiKey||s._getAccessToken(),i=()=>!!s._apiKey,c=a=>a?.websocketURL?a.websocketURL:s.websocketURL?s.websocketURL:s.baseURL,u=async(a,p={})=>{r(`Connecting to channel: ${a}`);let d={autoRefresh:!0,autoReconnect:!0,autoReconnectOnTokenExpiry:!0,debug:s.debug,...p};if(e[a])return r(`Already connected to channel: ${a}`),e[a];let h=o();if(!h)throw new Error("Authentication required. Please login first.");let m=c(p);r(`Using Socket.IO URL: ${m}`);let y=(await n())(`${m}${a}`,{query:{token:h},reconnection:d.autoReconnect,reconnectionAttempts:10,reconnectionDelay:1e3,reconnectionDelayMax:3e4,randomizationFactor:.5,timeout:2e4,transports:["websocket","polling"],upgrade:!0,rememberUpgrade:!0,forceNew:!1}),b={socket:y,channel:a,listeners:{}};return e[a]=b,new Promise((D,U)=>{let T=!1;y.on("connect",()=>{r(`Connected to channel: ${a}`),e[a]=b,T||(T=!0,D(b))}),y.on("connect_error",P=>{r(`Connection error for channel ${a}:`,P),T||(T=!0,D(b))}),y.on("reconnect_attempt",P=>{r(`Reconnection attempt ${P} for channel: ${a}`)}),y.on("reconnect",P=>{r(`Reconnected to channel ${a} after ${P} attempts`),e[a]=b,(b.listeners.reconnect||new Set).forEach(S=>S({type:"reconnect",attempt:P}))}),y.on("reconnect_failed",()=>{r(`Reconnection failed for channel ${a} after maximum attempts`),(b.listeners.reconnect_failed||new Set).forEach(_=>_({type:"reconnect_failed"})),T||(T=!0,U(new Error(`Connection to ${a} failed after maximum reconnection attempts`)))}),y.on("tokenEvent",P=>{if(r(`Token event on channel ${a}:`,P),P==="TokenExpired"&&d.autoReconnectOnTokenExpiry){if(i()){r("Token expired event in API key mode \u2014 disconnecting (no refresh path)"),g(a),(b.listeners.tokenExpired||new Set).forEach(S=>S({type:"tokenExpired"}));return}r("Token expired, attempting to refresh and reconnect"),s._refreshToken().then(()=>{r("Token refreshed, reconnecting");let _=b.listeners;g(a).then(()=>u(a,p)).then(S=>{Object.entries(_).forEach(([A,Ae])=>{Ae.forEach(Ft=>{hs.has(A)?(S.listeners[A]||(S.listeners[A]=new Set),S.listeners[A].add(Ft)):v(a,A,Ft)})}),(S.listeners.reconnect||new Set).forEach(A=>A({type:"reconnect",reason:"tokenRefresh"}))}).catch(S=>{r(`Failed to re-establish subscriptions after token refresh on ${a}:`,S)})}).catch(_=>{r("Failed to refresh token",_),(b.listeners.tokenExpired||new Set).forEach(A=>A({type:"tokenExpired",error:_}))})}else P==="tokenBlacklisted"&&(r("Token blacklisted, disconnecting"),g(a),(b.listeners.tokenBlacklisted||new Set).forEach(S=>S({type:"tokenBlacklisted"})))}),y.on("disconnect",P=>{r(`Disconnected from channel ${a}:`,P),(b.listeners.disconnect||new Set).forEach(S=>S({type:"disconnect",reason:P})),delete e[a]})})},l=async(a,p={})=>{let d=`public/${a}`;r(`Connecting to public channel: ${d}`);let h={autoReconnect:!0,debug:s.debug,...p};if(e[d])return r(`Already connected to public channel: ${d}`),e[d];let m=c(p);r(`Using Socket.IO URL for public connection: ${m}`);let y=(await n())(`${m}${d}`,{query:{publicToken:a},reconnection:h.autoReconnect,reconnectionAttempts:10,reconnectionDelay:1e3,reconnectionDelayMax:3e4,randomizationFactor:.5,timeout:2e4,transports:["websocket","polling"],upgrade:!0,rememberUpgrade:!0,forceNew:!1}),b={socket:y,channel:d,listeners:{}};return new Promise((D,U)=>{y.on("connect",()=>{r(`Connected to public channel: ${d}`),e[d]=b,D(b)}),y.on("connect_error",T=>{r(`Connection error for public channel ${d}:`,T),U(T)}),y.on("reconnect_attempt",T=>{r(`Reconnection attempt ${T} for public channel: ${d}`)}),y.on("reconnect",T=>{r(`Reconnected to public channel ${d} after ${T} attempts`)}),y.on("reconnect_failed",()=>{r(`Reconnection failed for public channel ${d} after maximum attempts`),(b.listeners.reconnect_failed||new Set).forEach(P=>P({type:"reconnect_failed"}))}),y.on("disconnect",T=>{r(`Disconnected from public channel ${d}:`,T),(b.listeners.disconnect||new Set).forEach(_=>_({type:"disconnect",reason:T})),delete e[d]})})},g=async a=>{let p=e[a];p&&(r(`Disconnecting from channel: ${a}`),p.socket.disconnect(),delete e[a])},v=async(a,p,d)=>{let h=e[a];h||(h=await u(a)),h.listeners[p]||(h.listeners[p]=new Set,h.socket.on(p,m=>{r(`Received event '${p}' on channel ${a}:`,m),(h.listeners[p]||new Set).forEach(y=>y(m))})),h.listeners[p].add(d),r(`Subscribed to event '${p}' on channel ${a}`)};return{connect:u,connectPublic:l,disconnect:g,disconnectAll:async()=>{r("Disconnecting from all channels");let a=Object.keys(e);for(let p of a)await g(p)},subscribe:v,subscribePublic:async(a,p,d)=>{let h=`public/${a}`,m=e[h];m||(m=await l(a)),m.listeners[p]||(m.listeners[p]=new Set,m.socket.on(p,E=>{r(`Received event '${p}' on public channel ${h}:`,E),(m.listeners[p]||new Set).forEach(b=>b(E))})),m.listeners[p].add(d),r(`Subscribed to event '${p}' on public channel ${h}`)},unsubscribe:(a,p,d)=>{let h=e[a];!h||!h.listeners[p]||(d?(h.listeners[p].delete(d),r(`Unsubscribed specific callback from event '${p}' on channel ${a}`)):(h.listeners[p].clear(),h.socket.off(p),r(`Unsubscribed all callbacks from event '${p}' on channel ${a}`)))},isConnected:a=>!!e[a]?.socket.connected,emit:(a,p,d)=>{let h=e[a];if(!h?.socket.connected){r(`Cannot emit to channel ${a}: not connected`);return}r(`Emitting '${p}' on channel ${a}`),h.socket.emit(p,d)},emitWithAck:(a,p,d,h)=>{let m=e[a];return m?new Promise(E=>{try{m.socket.timeout(h).emit(p,d,y=>{E(!y)})}catch(y){r(`emitWithAck error on channel ${a}:`,y),E(!1)}}):Promise.resolve(!1)},onReconnect:(a,p)=>{let d=e[a];d&&(d.listeners.reconnect||(d.listeners.reconnect=new Set),d.listeners.reconnect.add(p))},onReconnectFailed:(a,p)=>{let d=e[a];d&&(d.listeners.reconnect_failed||(d.listeners.reconnect_failed=new Set),d.listeners.reconnect_failed.add(p))}}}function Pt(s){return{async getStorageChart(e,t,r){if(!e)throw new Error("resourceType is required.");if(!t)throw new Error("resourceId is required.");return s._request({method:"GET",endpoint:`/v1/storage/chart/${e}/${t}`,params:r,sendJWT:!0})},async getStorageRecord(e,t){if(!e)throw new Error("resourceType is required.");if(!t)throw new Error("resourceId is required.");return s._request({method:"GET",endpoint:`/v1/storage/${e}/${t}`,sendJWT:!0})}}}function kt(s){return{async getMyTasks(e){return s._request({method:"GET",endpoint:"/v1/tasks/",params:e,sendJWT:!0})},async bulkCreate(e){if(!e?.projectId)throw new Error("projectId is required.");if(!Array.isArray(e?.tasks)||e.tasks.length===0)throw new Error("tasks is required and must contain at least one draft.");return s._request({method:"POST",endpoint:"/v1/tasks/bulk-create",body:e,sendJWT:!0})},async updateTaskStatus(e,t){if(!e)throw new Error("taskId is required.");if(!t||!t.status)throw new Error("status is required in the request body.");return s._request({method:"PUT",endpoint:`/v1/tasks/${e}`,body:t,sendJWT:!0})},async acknowledgeTask(e){if(!e)throw new Error("taskId is required.");return s._request({method:"PUT",endpoint:`/v1/tasks/acknowledge/${e}`,sendJWT:!0})},async getUnacknowledgedTaskCount(e){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/tasks/unacknowledged/${e}`,sendJWT:!0})},async acknowledgeAllTasks(e){if(!e)throw new Error("projectId is required.");return s._request({method:"PUT",endpoint:`/v1/tasks/acknowledge-all/${e}`,sendJWT:!0})},async followTask(e){if(!e)throw new Error("taskId is required.");return s._request({method:"PUT",endpoint:`/v1/tasks/${e}/follow`,sendJWT:!0})},async unfollowTask(e){if(!e)throw new Error("taskId is required.");return s._request({method:"PUT",endpoint:`/v1/tasks/${e}/unfollow`,sendJWT:!0})},async deleteTask(e){if(!e)throw new Error("taskId is required.");return s._request({method:"DELETE",endpoint:`/v1/tasks/${e}`,sendJWT:!0})},async getTaskEvents(e,t){if(!e)throw new Error("taskId is required.");return s._request({method:"GET",endpoint:`/v1/tasks/${e}/events`,params:t,sendJWT:!0})},async updateTaskDetails(e,t){if(!e)throw new Error("taskId is required.");return s._request({method:"PUT",endpoint:`/v1/tasks/${e}/details`,body:t,sendJWT:!0})},async linkTask(e,t){if(!e)throw new Error("taskId is required.");if(!t.linkedTaskId)throw new Error("linkedTaskId is required.");return s._request({method:"POST",endpoint:`/v1/tasks/${e}/links`,body:t,sendJWT:!0})},async unlinkTask(e,t){if(!e)throw new Error("taskId is required.");if(!t)throw new Error("linkedTaskId is required.");await s._request({method:"DELETE",endpoint:`/v1/tasks/${e}/links/${t}`,sendJWT:!0})},async getTaskLinks(e){if(!e)throw new Error("taskId is required.");return s._request({method:"GET",endpoint:`/v1/tasks/${e}/links`,sendJWT:!0})},async tagTask(e,t){if(!e)throw new Error("taskId is required.");if(!t)throw new Error("tagId is required.");return s._request({method:"PUT",endpoint:`/v1/tasks/${e}/tag`,body:{tagId:t},sendJWT:!0})},async untagTask(e,t){if(!e)throw new Error("taskId is required.");if(!t)throw new Error("tagId is required.");return s._request({method:"PUT",endpoint:`/v1/tasks/${e}/untag`,body:{tagId:t},sendJWT:!0})}}}function vt(s){return{async getCommitHash(){return s._request({method:"GET",endpoint:"/v1/version/commit",sendJWT:!1})},async getHealth(){return s._request({method:"GET",endpoint:"/v1/version/health",sendJWT:!1,bypassCache:!0})}}}function Rt(s){return{getConfig:async()=>s._request({endpoint:"/v1/config",method:"GET",sendJWT:!1})}}function Et(s){return{async createTag(e){if(!e.name)throw new Error("Tag name is required.");if(!e.ownerResourceType)throw new Error("Owner resource type is required.");if(!e.ownerResourceId)throw new Error("Owner resource ID is required.");return s._request({method:"POST",endpoint:"/v1/tags",body:e,sendJWT:!0})},async getTags(e,t,r){if(!e)throw new Error("Owner resource type is required.");if(!t)throw new Error("Owner resource ID is required.");return s._request({method:"GET",endpoint:`/v1/tags/${e}/${t}`,params:r,sendJWT:!0})},async updateTag(e,t){if(!e)throw new Error("Tag ID is required.");if(!t.name&&!t.color)throw new Error("At least one field (name or color) must be provided for update.");return s._request({method:"PUT",endpoint:`/v1/tags/${e}`,body:t,sendJWT:!0})},async deleteTag(e){if(!e)throw new Error("Tag ID is required.");return s._request({method:"DELETE",endpoint:`/v1/tags/${e}`,sendJWT:!0})}}}function St(s){return{async getPublicFileSystem(e){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");return s._request({endpoint:`/v1/public/${e}`,method:"GET",sendJWT:!1})},async getPublicItems(e,t){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");let r=t?{...t,resourceIds:Array.isArray(t.resourceIds)?t.resourceIds:t.resourceIds?[t.resourceIds]:[],resourceSlugs:Array.isArray(t.resourceSlugs)?t.resourceSlugs:t.resourceSlugs?[t.resourceSlugs]:[],resourceTags:Array.isArray(t.resourceTags)?t.resourceTags:t.resourceTags?[t.resourceTags]:[],mediaTypes:Array.isArray(t.mediaTypes)?t.mediaTypes:t.mediaTypes?[t.mediaTypes]:[]}:{};return s._request({endpoint:`/v1/public/${e}/files`,method:"GET",params:r,sendJWT:!1})},async getPublicItemsAtPath(e,t,r){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");if(t==null)throw new Error("path is required.");let n=t.startsWith("/")?t.substring(1):t,o=r?{...r,resourceIds:Array.isArray(r.resourceIds)?r.resourceIds:r.resourceIds?[r.resourceIds]:[],resourceSlugs:Array.isArray(r.resourceSlugs)?r.resourceSlugs:r.resourceSlugs?[r.resourceSlugs]:[],resourceTags:Array.isArray(r.resourceTags)?r.resourceTags:r.resourceTags?[r.resourceTags]:[],mediaTypes:Array.isArray(r.mediaTypes)?r.mediaTypes:r.mediaTypes?[r.mediaTypes]:[]}:{};return s._request({endpoint:`/v1/public/${e}/files/${n}`,method:"GET",params:o,sendJWT:!1})},async downloadAssets(e,t){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");if(!t)throw new Error("downloadData is required.");if(!t.assetIds||!Array.isArray(t.assetIds)||t.assetIds.length===0)throw new Error("downloadData.assetIds must be a non-empty array.");return s._request({endpoint:`/v1/public/${e}/download`,method:"POST",body:t,sendJWT:!1})},async getPublicChat(e,t){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");let r=t?`/v1/public/${e}/chat/${t}`:`/v1/public/${e}/chat`;return s._request({endpoint:r,method:"GET",sendJWT:!1})},async getPublicChatMessages(e,t,r){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");if(!t)throw new Error("chatId is required.");return s._request({endpoint:`/v1/public/${e}/chat/${t}/messages`,method:"GET",params:r||{},sendJWT:!1})},async createPublicChatMessage(e,t,r){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");if(!t)throw new Error("chatId is required.");if(!r)throw new Error("data is required.");return s._request({endpoint:`/v1/public/${e}/chat/${t}/messages`,method:"POST",body:r,sendJWT:"optional"})},async createPublicTopicChatMessage(e,t){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");if(!t)throw new Error("data is required.");return s._request({endpoint:`/v1/public/${e}/chat/messages`,method:"POST",body:t,sendJWT:"optional"})},async getPublicAsset(e,t){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");if(!t)throw new Error("assetId is required.");return s._request({endpoint:`/v1/public/${e}/assets/${t}`,method:"GET",sendJWT:!1})},async createPublicAssetChatMessage(e,t,r){if(!e)throw new Error("token is required.");if(e.length!==10)throw new Error("token must be exactly 10 characters long.");if(!/^[a-zA-Z0-9]{10}$/.test(e))throw new Error("token must contain only alphanumeric characters.");if(!t)throw new Error("assetId is required.");if(!r)throw new Error("data is required.");return s._request({endpoint:`/v1/public/${e}/assets/${t}/messages`,method:"POST",body:r,sendJWT:"optional"})},async resolvePublicDownload(e){if(!e)throw new Error("token is required.");return s._request({method:"GET",endpoint:`/v1/public-download/${e}`,sendJWT:!1})},async getPublicDownloadUrl(e){if(!e)throw new Error("token is required.");return s._request({method:"GET",endpoint:`/v1/public-download/${e}/download`,sendJWT:!1})},async getPublicEmbedFiles(e){if(!e)throw new Error("token is required.");return s._request({method:"GET",endpoint:`/v1/public-download/${e}/embed-files`,sendJWT:!1})},async recordAccessActivity(e,t){if(!e)throw new Error("token is required.");await s._request({method:"POST",endpoint:`/v1/public-download/${e}/access-activity`,body:t,sendJWT:!1})}}}function qt(s){return{async getEffectiveSettings(e,t,r){return s._request({method:"GET",endpoint:`/v1/settings/${e}/${t}/effective`,params:r?{workspaceId:r}:void 0,sendJWT:!0})},async getResourceSettings(e,t){return s._request({method:"GET",endpoint:`/v1/settings/${e}/${t}`,sendJWT:!0})},async getAllResourceSettings(){return s._request({method:"GET",endpoint:"/v1/settings",sendJWT:!0})},async updateResourceSettings(e,t,r){return s._request({method:"PUT",endpoint:`/v1/settings/${e}/${t}`,body:r,sendJWT:!0})},async resetResourceSettings(e,t){return s._request({method:"DELETE",endpoint:`/v1/settings/${e}/${t}`,sendJWT:!0})},async cleanupOrphanedSettings(){return s._request({method:"POST",endpoint:"/v1/settings/cleanup",sendJWT:!0})}}}function _t(s){return{async registerDevice(e){if(!e.deviceType||!e.pushToken)throw new Error("deviceType and pushToken are required.");return s._request({method:"POST",endpoint:"/v1/devices",body:e,sendJWT:!0})},async getUserDevices(e){return s._request({method:"GET",endpoint:"/v1/devices",params:e,sendJWT:!0})},async getDevice(e){if(!e)throw new Error("deviceId is required.");return s._request({method:"GET",endpoint:`/v1/devices/${e}`,sendJWT:!0})},async updateDevice(e,t){if(!e)throw new Error("deviceId is required.");if(Object.keys(t).length===0)throw new Error("At least one field must be provided to update the device.");return s._request({method:"PUT",endpoint:`/v1/devices/${e}`,body:t,sendJWT:!0})},async deleteDevice(e){if(!e)throw new Error("deviceId is required.");return s._request({method:"DELETE",endpoint:`/v1/devices/${e}`,sendJWT:!0})}}}function Ct(s){return{async resolveShortLink(e){if(!e)throw new Error("code is required.");return s._request({method:"GET",endpoint:`/v1/shortlink/${e}`,sendJWT:!1})}}}function xt(s){return{async startConvo(e){if(!e.chatId||!e.chatType||!e.convoType)throw new Error("chatId, chatType, and convoType are required.");return s._request({method:"POST",endpoint:"/v1/convos",body:e,sendJWT:!0})},async getConvo(e){if(!e)throw new Error("convoId is required.");return s._request({method:"GET",endpoint:`/v1/convos/${e}`,sendJWT:!0})},async joinConvo(e){if(!e)throw new Error("convoId is required.");return s._request({method:"PUT",endpoint:`/v1/convos/${e}/join`,sendJWT:!0})},async rejoinConvo(e){if(!e)throw new Error("convoId is required.");return s._request({method:"PUT",endpoint:`/v1/convos/${e}/rejoin`,sendJWT:!0})},async leaveConvo(e){if(!e)throw new Error("convoId is required.");return s._request({method:"PUT",endpoint:`/v1/convos/${e}/leave`,sendJWT:!0})},async completeConvo(e){if(!e)throw new Error("convoId is required.");return s._request({method:"PUT",endpoint:`/v1/convos/${e}/complete`,sendJWT:!0})},async deleteConvo(e){if(!e)throw new Error("convoId is required.");await s._request({method:"DELETE",endpoint:`/v1/convos/${e}`,sendJWT:!0})},async updateConvo(e,t){if(!e)throw new Error("convoId is required.");return s._request({method:"PATCH",endpoint:`/v1/convos/${e}`,body:t,sendJWT:!0})},async getChatConvos(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}/convos`,params:t,sendJWT:!0})},async getProjectConvos(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/projects/${e}/convos`,params:t,sendJWT:!0})},async promoteConvoArtifact(e,t,r,n){if(!e)throw new Error("convoId is required.");if(!r)throw new Error("dailyId is required.");return s._request({method:"POST",endpoint:`/v1/convos/${e}/artifacts/${t}/${r}/promote`,body:n??{},sendJWT:!0})},async getScopeConvos(e,t){if(!e)throw new Error("scopeId is required.");if(!t.visibility||t.visibility.length===0)throw new Error("visibility array is required and must not be empty.");let r=new URLSearchParams;return t.visibility.forEach(n=>r.append("visibility[]",n)),t.status&&r.append("status",t.status),t.search&&r.append("search",t.search),t.limit&&r.append("limit",t.limit.toString()),t.cursor&&r.append("cursor",t.cursor),t.includeCounts&&r.append("includeCounts","true"),s._request({method:"GET",endpoint:`/v1/convos/scope/${e}?${r.toString()}`,sendJWT:!0})}}}function At(s){return{async createBoard(e){if(!e.projectId)throw new Error("projectId is required.");if(!e.name)throw new Error("name is required.");return s._request({method:"POST",endpoint:"/v1/boards/",body:e,sendJWT:!0})},async getProjectBoards(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/boards/project/${e}`,params:t,sendJWT:!0})},async getProjectTasks(e,t){if(!e)throw new Error("projectId is required.");return s._request({method:"GET",endpoint:`/v1/boards/project/${e}/tasks`,params:t,sendJWT:!0})},async getBoard(e){if(!e)throw new Error("boardId is required.");return s._request({method:"GET",endpoint:`/v1/boards/${e}`,sendJWT:!0})},async updateBoard(e,t){if(!e)throw new Error("boardId is required.");return s._request({method:"PUT",endpoint:`/v1/boards/${e}`,body:t,sendJWT:!0})},async deleteBoard(e,t){if(!e)throw new Error("boardId is required.");return s._request({method:"DELETE",endpoint:`/v1/boards/${e}`,body:t&&Object.keys(t).length>0?t:void 0,sendJWT:!0})},async addColumn(e,t){if(!e)throw new Error("boardId is required.");if(!t.name)throw new Error("name is required.");return s._request({method:"POST",endpoint:`/v1/boards/${e}/columns`,body:t,sendJWT:!0})},async reorderColumns(e,t){if(!e)throw new Error("boardId is required.");return s._request({method:"PUT",endpoint:`/v1/boards/${e}/columns/reorder`,body:t,sendJWT:!0})},async updateColumn(e,t,r){if(!e)throw new Error("boardId is required.");if(!t)throw new Error("columnId is required.");return s._request({method:"PUT",endpoint:`/v1/boards/${e}/columns/${t}`,body:r,sendJWT:!0})},async deleteColumn(e,t,r){if(!e)throw new Error("boardId is required.");if(!t)throw new Error("columnId is required.");return s._request({method:"DELETE",endpoint:`/v1/boards/${e}/columns/${t}`,body:r?{targetColumnId:r}:void 0,sendJWT:!0})},async getBoardTasks(e,t){if(!e)throw new Error("boardId is required.");return s._request({method:"GET",endpoint:`/v1/boards/${e}/tasks`,params:t,sendJWT:!0})},async createBoardTask(e,t){if(!e)throw new Error("boardId is required.");if(!t.subject)throw new Error("subject is required.");return s._request({method:"POST",endpoint:`/v1/boards/${e}/tasks`,body:t,sendJWT:!0})},async addExistingTaskToBoard(e,t){if(!e)throw new Error("boardId is required.");if(!t.taskId)throw new Error("taskId is required.");return s._request({method:"POST",endpoint:`/v1/boards/${e}/tasks/add`,body:t,sendJWT:!0})},async moveTask(e,t,r){if(!e)throw new Error("boardId is required.");if(!t)throw new Error("taskId is required.");if(!r.columnId)throw new Error("columnId is required.");return s._request({method:"PUT",endpoint:`/v1/boards/${e}/tasks/${t}/move`,body:r,sendJWT:!0})},async removeTaskFromBoard(e,t){if(!e)throw new Error("boardId is required.");if(!t)throw new Error("taskId is required.");return s._request({method:"DELETE",endpoint:`/v1/boards/${e}/tasks/${t}`,sendJWT:!0})},async tagBoard(e,t){return s._request({method:"PUT",endpoint:`/v1/boards/${e}/tag`,body:{tagId:t},sendJWT:!0})},async untagBoard(e,t){return s._request({method:"PUT",endpoint:`/v1/boards/${e}/untag`,body:{tagId:t},sendJWT:!0})},async followBoard(e){if(!e)throw new Error("boardId is required.");return s._request({method:"PUT",endpoint:`/v1/boards/${e}/follow`,sendJWT:!0})},async unfollowBoard(e){if(!e)throw new Error("boardId is required.");return s._request({method:"PUT",endpoint:`/v1/boards/${e}/unfollow`,sendJWT:!0})}}}function Mt(s){return{async getTaskRelations(e,t){if(!e)throw new Error("taskId is required.");return s._request({method:"GET",endpoint:`/v1/tasks/${e}/relations`,params:t,sendJWT:!0})},async createTaskRelation(e,t){if(!e)throw new Error("taskId is required.");if(!t?.resourceId)throw new Error("resourceId is required.");if(!t?.resourceType)throw new Error("resourceType is required.");return s._request({method:"POST",endpoint:`/v1/tasks/${e}/relations`,body:t,sendJWT:!0})},async deleteTaskRelation(e,t){if(!e)throw new Error("taskId is required.");if(!t)throw new Error("relationId is required.");return s._request({method:"DELETE",endpoint:`/v1/tasks/${e}/relations/${t}`,sendJWT:!0})},async getRelationsForChat(e,t){if(!e)throw new Error("chatId is required.");return s._request({method:"GET",endpoint:`/v1/chats/${e}/relations`,params:t,sendJWT:!0})},async getRelationsForMessage(e,t){if(!e)throw new Error("messageId is required.");return s._request({method:"GET",endpoint:`/v1/chat-messages/${e}/relations`,params:t,sendJWT:!0})}}}function It(s){return{async createBot(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({method:"POST",endpoint:`/v1/workspaces/${e}/bots`,body:t,sendJWT:!0})},async listBots(e){if(!e)throw new Error("workspaceId is required.");return s._request({method:"GET",endpoint:`/v1/workspaces/${e}/bots`,sendJWT:!0,bypassCache:!0})},async getBot(e,t){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("botId is required.");return s._request({method:"GET",endpoint:`/v1/workspaces/${e}/bots/${t}`,sendJWT:!0,bypassCache:!0})},async updateBot(e,t,r){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("botId is required.");return s._request({method:"PUT",endpoint:`/v1/workspaces/${e}/bots/${t}`,body:r,sendJWT:!0})},async deleteBot(e,t){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("botId is required.");return s._request({method:"DELETE",endpoint:`/v1/workspaces/${e}/bots/${t}`,sendJWT:!0})},async rotateBotKey(e,t){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("botId is required.");return s._request({method:"POST",endpoint:`/v1/workspaces/${e}/bots/${t}/rotate-key`,sendJWT:!0})},async updateBotAvatar(e,t,r){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("botId is required.");return s._request({method:"POST",endpoint:`/v1/workspaces/${e}/bots/${t}/avatar`,body:r,sendJWT:!0})},async listProjectMemberships(e,t){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("botId is required.");return s._request({method:"GET",endpoint:`/v1/workspaces/${e}/bots/${t}/memberships`,sendJWT:!0,bypassCache:!0})},async setProjectMembership(e,t,r,n){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("botId is required.");if(!r)throw new Error("projectId is required.");return s._request({method:"PUT",endpoint:`/v1/workspaces/${e}/bots/${t}/memberships/project/${r}`,body:n,sendJWT:!0})},async removeProjectMembership(e,t,r){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("botId is required.");if(!r)throw new Error("projectId is required.");return s._request({method:"DELETE",endpoint:`/v1/workspaces/${e}/bots/${t}/memberships/project/${r}`,sendJWT:!0})}}}function $t(s){return{async composeWithNu(e){if(!e?.workspaceId)throw new Error("workspaceId is required.");if(!e?.chatId)throw new Error("chatId is required.");if(!e?.messages?.length)throw new Error("messages is required.");return s._request({endpoint:"/v1/ai/compose",method:"POST",body:e,sendJWT:!0})},async submitFeedback(e){if(!e?.chatId)throw new Error("chatId is required.");if(!e?.rating)throw new Error("rating is required.");if(!e?.surface)throw new Error("surface is required.");return s._request({endpoint:"/v1/ai/feedback",method:"POST",body:e,sendJWT:!0})},async polish(e){if(!e?.workspaceId)throw new Error("workspaceId is required.");if(!e?.text)throw new Error("text is required.");if(!e?.toneId)throw new Error("toneId is required.");return s._request({endpoint:"/v1/ai/polish",method:"POST",body:e,sendJWT:!0})},async generateTasks(e){if(!e?.workspaceId)throw new Error("workspaceId is required.");if(!e?.projectId)throw new Error("projectId is required.");if(!e?.messageText)throw new Error("messageText is required.");return s._request({endpoint:"/v1/ai/task-generation",method:"POST",body:e,sendJWT:!0})},async listTones(){return s._request({endpoint:"/v1/ai/tones",method:"GET",sendJWT:!0})},async generateRevision(e){if(!e?.workspaceId)throw new Error("workspaceId is required.");if(!e?.source)throw new Error("source is required.");if(!e?.prompt)throw new Error("prompt is required.");return s._request({endpoint:"/v1/ai/revisions",method:"POST",body:e,sendJWT:!0})},async createRevisionSourceUpload(e){if(!e?.workspaceId)throw new Error("workspaceId is required.");if(!(e?.sizeInMB>0))throw new Error("sizeInMB must be a positive number.");return s._request({endpoint:"/v1/ai/revisions/source-upload",method:"POST",body:e,sendJWT:!0})}}}function Wt(s){let e=t=>{let r=new URLSearchParams;for(let[o,i]of Object.entries(t))i==null||i===""||r.set(o,String(i));let n=r.toString();return n?`?${n}`:""};return{async listTopics(t){if(!t?.workspaceId)throw new Error("workspaceId is required.");if(!t?.scopeType)throw new Error("scopeType is required.");if(t.scopeType!=="social"&&!t.scopeId)throw new Error("scopeId is required for workspace/project scope.");return s._request({endpoint:`/v1/ai/chat/topics${e(t)}`,method:"GET",sendJWT:!0})},async createTopic(t){if(!t?.workspaceId)throw new Error("workspaceId is required.");if(!t?.scopeType)throw new Error("scopeType is required.");if(t.scopeType!=="social"&&!t.scopeId)throw new Error("scopeId is required for workspace/project scope.");return s._request({endpoint:"/v1/ai/chat/topics",method:"POST",body:t,sendJWT:!0})},async getTopic(t,r){if(!t)throw new Error("topicId is required.");return s._request({endpoint:`/v1/ai/chat/topics/${encodeURIComponent(t)}${e(r)}`,method:"GET",sendJWT:!0})},async updateTopic(t,r){if(!t)throw new Error("topicId is required.");return s._request({endpoint:`/v1/ai/chat/topics/${encodeURIComponent(t)}`,method:"PATCH",body:r,sendJWT:!0})},async deleteTopic(t,r){if(!t)throw new Error("topicId is required.");return s._request({endpoint:`/v1/ai/chat/topics/${encodeURIComponent(t)}${e(r)}`,method:"DELETE",sendJWT:!0})}}}function Dt(s){return{async getTopic(){return s._request({endpoint:"/v1/ai/support-chat/topic",method:"GET",sendJWT:!0})},async createAttachment(e){return s._request({endpoint:"/v1/ai/support-chat/attachments",method:"POST",body:e,sendJWT:!0})}}}function Ut(s){return{async listBlogPosts(e={}){let t=new URLSearchParams;e.limit!=null&&t.set("limit",String(e.limit)),e.page!=null&&t.set("page",String(e.page));let r=t.toString();return s._request({endpoint:`/v1/blog-posts${r?`?${r}`:""}`,method:"GET",sendJWT:!0})}}}function Bt(s){return{async getBalance(e){if(!e)throw new Error("workspaceId is required.");return s._request({endpoint:`/v1/credits/balance?workspaceId=${encodeURIComponent(e)}`,method:"GET",sendJWT:!0})},async getUsageReport(e,t={}){if(!e)throw new Error("workspaceId is required.");let r=new URLSearchParams({workspaceId:e});return t.startDate&&r.set("startDate",t.startDate),t.endDate&&r.set("endDate",t.endDate),t.userId&&r.set("userId",t.userId),t.integrationPoint&&r.set("integrationPoint",t.integrationPoint),s._request({endpoint:`/v1/credits/usage?${r.toString()}`,method:"GET",sendJWT:!0})}}}function Jt(s){return{async completeUpload(e,t){if(!e)throw new Error("scratchId is required.");if(!t?.uploadId)throw new Error("uploadId is required.");if(!Array.isArray(t?.parts)||t.parts.length===0)throw new Error("parts is required.");return s._request({endpoint:`/v1/scratch/${encodeURIComponent(e)}/complete-upload`,method:"POST",body:t,sendJWT:!0})},async promote(e,t={}){if(!e)throw new Error("scratchId is required.");return s._request({endpoint:`/v1/scratch/${encodeURIComponent(e)}/promote`,method:"POST",body:t,sendJWT:!0})}}}function Lt(s){return{async createToken(e){return s._request({method:"POST",endpoint:"/v1/tokens",body:e,sendJWT:!0})},async listTokens(){return s._request({method:"GET",endpoint:"/v1/tokens",sendJWT:!0,bypassCache:!0})},async deleteToken(e){if(!e)throw new Error("tokenId is required.");return s._request({method:"DELETE",endpoint:`/v1/tokens/${e}`,sendJWT:!0})}}}function Ot(s){return{async createWebhook(e,t){if(!e)throw new Error("workspaceId is required.");return s._request({method:"POST",endpoint:`/v1/workspaces/${e}/webhooks`,body:t,sendJWT:!0})},async listWebhooks(e){if(!e)throw new Error("workspaceId is required.");return s._request({method:"GET",endpoint:`/v1/workspaces/${e}/webhooks`,sendJWT:!0,bypassCache:!0})},async getWebhook(e,t){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("webhookId is required.");return s._request({method:"GET",endpoint:`/v1/workspaces/${e}/webhooks/${t}`,sendJWT:!0,bypassCache:!0})},async updateWebhook(e,t,r){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("webhookId is required.");return s._request({method:"PATCH",endpoint:`/v1/workspaces/${e}/webhooks/${t}`,body:r,sendJWT:!0})},async deleteWebhook(e,t){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("webhookId is required.");return s._request({method:"DELETE",endpoint:`/v1/workspaces/${e}/webhooks/${t}`,sendJWT:!0})},async rotateWebhookSecret(e,t){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("webhookId is required.");return s._request({method:"POST",endpoint:`/v1/workspaces/${e}/webhooks/${t}/rotate-secret`,sendJWT:!0})},async testWebhook(e,t){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("webhookId is required.");return s._request({method:"POST",endpoint:`/v1/workspaces/${e}/webhooks/${t}/test`,sendJWT:!0})},async listWebhookDeliveries(e,t,r={}){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("webhookId is required.");let n=new URLSearchParams;r.limit!==void 0&&n.set("limit",String(r.limit)),r.cursor!==void 0&&n.set("cursor",r.cursor),r.status!==void 0&&n.set("status",r.status);let o=n.toString();return s._request({method:"GET",endpoint:`/v1/workspaces/${e}/webhooks/${t}/deliveries${o?`?${o}`:""}`,sendJWT:!0,bypassCache:!0})},async replayWebhookDelivery(e,t,r){if(!e)throw new Error("workspaceId is required.");if(!t)throw new Error("webhookId is required.");if(!r)throw new Error("attemptId is required.");return s._request({method:"POST",endpoint:`/v1/workspaces/${e}/webhooks/${t}/deliveries/${r}/replay`,sendJWT:!0})}}}function Nt(s){let e=(t={})=>{let r=new URLSearchParams;for(let[o,i]of Object.entries(t))i==null||i===""||r.set(o,String(i));let n=r.toString();return n?`?${n}`:""};return{async createSupportTicket(t){if(!t?.scopeType)throw new Error("scopeType is required.");if(t.scopeType!=="user"&&!t.scopeId)throw new Error("scopeId is required for workspace/project scope.");if(!t?.subject)throw new Error("subject is required.");if(!t?.body)throw new Error("body is required.");return s._request({endpoint:"/v1/support-tickets",method:"POST",body:t,sendJWT:!0})},async listSupportTickets(t={}){return s._request({endpoint:`/v1/support-tickets${e(t)}`,method:"GET",sendJWT:!0})},async getSupportTicket(t){if(!t)throw new Error("ticketId is required.");return s._request({endpoint:`/v1/support-tickets/${encodeURIComponent(t)}`,method:"GET",sendJWT:!0})},async getSupportTicketScopeOptions(){return s._request({endpoint:"/v1/support-tickets/scope-options",method:"GET",sendJWT:!0})}}}var $r={version:"1.4.0",buildTimestamp:"2026-10-03T16:23:07.694Z",buildHash:"60ddbec0797c9d1bdf96aaf49b69dda5",gitCommit:"c000da4",dirty:!1};var Gt=class{constructor(e,t={}){this.browserMode=!1;this._accessToken=null;this._refreshTokenValue=null;this._accessTokenExpiry=null;this._refreshTokenExpiry=null;this._verifyMfaToken=null;this._isRefreshing=!1;this._lastRefreshAttempt=0;this._cache=new Map;this._cacheGeneration=0;this._apiKey=null;if(!e)throw new Error("baseURL is required.");let r=typeof fetch<"u"?fetch:void 0;this.baseURL=e.replace(/\/$/,""),this.browserMode=t.browserMode||!1;let n;if(t.fetch?n=t.fetch:this.browserMode&&typeof window<"u"&&window.fetch?n=(o,i)=>window.fetch(o,i):n=r,!n)throw new Error("Fetch implementation not found. Please provide one in options or ensure global fetch is available.");this.fetch=n,this.tokenStorageKey=t.tokenStorageKey||"nurama_access_token",this.refreshTokenStorageKey=t.refreshTokenStorageKey||"nurama_refresh_token",this.tokenExpiryBufferSeconds=t.tokenExpiryBufferSeconds===void 0?60:t.tokenExpiryBufferSeconds,this.refreshLockTimeoutMs=t.refreshLockTimeoutMs===void 0?1e3:t.refreshLockTimeoutMs,this.tokenRefreshRetryDelayMs=t.tokenRefreshRetryDelayMs===void 0?100:t.tokenRefreshRetryDelayMs,this.tokenRefreshMaxWaitMs=t.tokenRefreshMaxWaitMs===void 0?1e3:t.tokenRefreshMaxWaitMs,this.debug=t.debug||!1,this.websocketURL=t.websocketURL,this.enableCache=t.enableCache===void 0?!0:t.enableCache,this.cacheDurationSeconds=t.cacheDurationSeconds===void 0?5:t.cacheDurationSeconds,this.invalidateCacheOnMutation=t.invalidateCacheOnMutation===void 0?!0:t.invalidateCacheOnMutation,this._onUnauthorized=t.onUnauthorized,this._onMaintenance=t.onMaintenance,this._apiKey=t.apiKey||null,this.browserMode&&!this._apiKey&&this._loadTokens(),this.auth=We(this),this.subscription=De(this),this.user=Ue(this),this.workspace=Be(this),this.project=Je(this),this.asset=Oe(this),this.chat=Ne(this),this.folder=Ge(this),this.invite=Fe(this),this.joinLink=je(this),this.membership=Ke(this),this.notification=Ve(this),this.payment=ze(this),this.product=He(this),this.socket=Tt(this),this.storage=Pt(this),this.task=kt(this),this.version=vt(this),this.config=Rt(this),this.tag=Et(this),this.public=St(this),this.settings=qt(this),this.device=_t(this),this.shortlink=Ct(this),this.convo=xt(this),this.board=At(this),this.taskRelation=Mt(this),this.bot=It(this),this.ai=$t(this),this.aiChat=Wt(this),this.supportChat=Dt(this),this.blogPosts=Ut(this),this.credits=Bt(this),this.scratch=Jt(this),this.token=Lt(this),this.webhook=Ot(this),this.supportTicket=Nt(this)}_log(...e){this.debug&&console.log(...e)}_isCacheablePostEndpoint(e){return["/v1/notifications/count","/v1/notifications/count/bulk","/v1/notifications","/v1/notifications/new","/v1/notifications/last-seen"].some(r=>e===r)}_generateCacheKey(e){let{endpoint:t,method:r="GET",params:n={},body:o=null}=e,i=Object.keys(n).sort().reduce((c,u)=>(c[u]=n[u],c),{});return JSON.stringify({endpoint:t,method:r,params:i,body:o})}_isCacheEntryValid(e){let t=Date.now(),r=this.cacheDurationSeconds*1e3;return t-e.timestamp<r}_getCachedResponse(e){let t=this._cache.get(e);return t?this._isCacheEntryValid(t)?(this._log("[DEBUG] Cache hit for key:",e),t.data):(this._cache.delete(e),this._log("[DEBUG] Cache entry expired and removed for key:",e),null):null}_setCachedResponse(e,t){this._cache.set(e,{data:t,timestamp:Date.now()}),this._log("[DEBUG] Cached response for key:",e)}_getPendingPromise(e,t){let r=this._cache.get(e);return t?(r?r.promise=t:this._cache.set(e,{data:null,timestamp:Date.now(),promise:t}),t):r?.promise&&this._isCacheEntryValid(r)?(this._log("[DEBUG] Returning pending promise for concurrent request:",e),r.promise):null}_clearPendingPromise(e){let t=this._cache.get(e);t&&delete t.promise}_isMutation(e,t){let r=(e||"GET").toUpperCase();return r==="PUT"||r==="PATCH"||r==="DELETE"?!0:r==="POST"?!this._isCacheablePostEndpoint(t):!1}_looksLikeSegmentId(e){return/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(e)||/^\d+$/.test(e)}_resourceToken(e){let r=(e||"").split("?")[0].split("/").filter(Boolean);for(let n=r.length-1;n>=0;n-=1){let o=r[n];if(!(o==="v1"||this._looksLikeSegmentId(o)))return o}return null}_invalidateForMutation(e){this._cacheGeneration++;let t=this._resourceToken(e);if(!t){this._cache.clear();return}for(let r of Array.from(this._cache.keys())){let n="";try{n=JSON.parse(r).endpoint||""}catch{continue}n.split("?")[0].split("/").filter(Boolean).includes(t)&&this._cache.delete(r)}this._log("[DEBUG] Invalidated cached reads for resource:",t)}_setTokens(e,t,r,n){if(this._log("[DEBUG] Setting tokens. Access:",e?"Yes":"No","Refresh:",t?"Yes":"No"),this._accessToken=e,this._refreshTokenValue=t,this._accessTokenExpiry=r||null,this._refreshTokenExpiry=n||null,!e&&!t&&(this._verifyMfaToken=null),this.browserMode)try{e?localStorage.setItem(this.tokenStorageKey,e):localStorage.removeItem(this.tokenStorageKey),t?localStorage.setItem(this.refreshTokenStorageKey,t):localStorage.removeItem(this.refreshTokenStorageKey),r?localStorage.setItem(`${this.tokenStorageKey}_expiry`,r):localStorage.removeItem(`${this.tokenStorageKey}_expiry`),n?localStorage.setItem(`${this.refreshTokenStorageKey}_expiry`,n):localStorage.removeItem(`${this.refreshTokenStorageKey}_expiry`)}catch(o){console.error("Failed to save tokens to localStorage:",o)}}_getAccessToken(){return this._accessToken}_getRefreshToken(){return this._refreshTokenValue}_setVerifyMfaToken(e){this._log("[DEBUG] Setting verifyMfa token:",e?"Yes":"No"),this._verifyMfaToken=e}_getVerifyMfaToken(){return this._verifyMfaToken}_loadTokens(){if(this.browserMode)try{this._accessToken=localStorage.getItem(this.tokenStorageKey),this._refreshTokenValue=localStorage.getItem(this.refreshTokenStorageKey),this._accessTokenExpiry=localStorage.getItem(`${this.tokenStorageKey}_expiry`),this._refreshTokenExpiry=localStorage.getItem(`${this.refreshTokenStorageKey}_expiry`),this._log("[DEBUG] Loaded tokens from localStorage. Access:",this._accessToken?"Yes":"No","Refresh:",this._refreshTokenValue?"Yes":"No"),this._log("[DEBUG] Loaded token expiries. Access expiry:",this._accessTokenExpiry||"None","Refresh expiry:",this._refreshTokenExpiry||"None")}catch(e){console.error("Failed to load tokens from localStorage:",e),this._accessToken=null,this._refreshTokenValue=null,this._accessTokenExpiry=null,this._refreshTokenExpiry=null}}_isTokenExpired(){if(this._apiKey)return!1;let e=this._getAccessToken();if(!e)return!0;try{let t=$e(e);if(!t||typeof t.exp!="number")return console.error("Invalid token or missing exp claim."),!0;let r=t.exp*1e3,n=Date.now(),o=this.tokenExpiryBufferSeconds*1e3,i=n>=r-o;return i&&this.debug&&this._log(`[DEBUG] Token needs refresh. Current: ${new Date(n).toISOString()}, Expires: ${new Date(r).toISOString()}, Buffer: ${this.tokenExpiryBufferSeconds}s`),i}catch(t){return console.error("Failed to decode or check token expiry:",t),!0}}tokenValid(){return!this._isTokenExpired()}getTokenExpiry(){return{access:this._accessTokenExpiry,refresh:this._refreshTokenExpiry}}async _refreshToken(){let e=Date.now();if(this._isRefreshing){this._log("[DEBUG] Token refresh already in progress, waiting...");let r=Date.now();for(;this._isRefreshing;){if(Date.now()-r>this.tokenRefreshMaxWaitMs)throw console.error("Timed out waiting for token refresh to complete."),new Error("Timeout waiting for token refresh.");await new Promise(n=>setTimeout(n,this.tokenRefreshRetryDelayMs))}if(this._log("[DEBUG] Other refresh process finished."),!this._isTokenExpired()){this._log("[DEBUG] Token is now valid after waiting.");return}if(e-this._lastRefreshAttempt<this.refreshLockTimeoutMs)throw this._log(`[DEBUG] Refresh attempt too soon after waiting (last attempt: ${new Date(this._lastRefreshAttempt).toISOString()}, now: ${new Date(e).toISOString()})`),new Error("Token still requires refresh after wait, but locked due to recent attempt.")}else if(e-this._lastRefreshAttempt<this.refreshLockTimeoutMs){if(this._log(`[DEBUG] Refresh attempt too soon (last attempt: ${new Date(this._lastRefreshAttempt).toISOString()}, now: ${new Date(e).toISOString()})`),this._isTokenExpired())throw new Error("Token requires refresh, but locked due to recent attempt.");return}let t=this._getRefreshToken();if(!t)throw this._log("[DEBUG] No refresh token available for _refreshToken."),this._setTokens(null,null),new Error("Refresh token not found.");this._isRefreshing=!0,this._lastRefreshAttempt=e;try{this._log("[DEBUG] Attempting token refresh...");let r=await this._request({endpoint:"/v1/auth/refresh-tokens",method:"POST",body:{refreshToken:t},sendJWT:!1,_isInternalRefresh:!0});if(r&&r.access&&r.access.token&&r.refresh&&r.refresh.token)this._log("[DEBUG] Token refresh successful."),this._setTokens(r.access.token,r.refresh.token,r.access.expires,r.refresh.expires);else throw console.error("Invalid token refresh response:",r),this._setTokens(null,null),new Error("Invalid token refresh response structure.")}catch(r){console.error("Token refresh API call failed:",r),r?.status===401||r?.status===403?(this._log("[DEBUG] Refresh token is invalid (401/403), clearing all tokens"),this._setTokens(null,null)):(this._log("[DEBUG] Refresh failed due to network/server error, keeping refresh token for retry"),this._setTokens(null,t,null,this._refreshTokenExpiry));let o=new Error("Token refresh failed.");throw o.reasonType=r?.data?.type,o}finally{this._isRefreshing=!1}}async _request(e){let{endpoint:t,method:r="GET",params:n={},body:o=null,sendJWT:i=!0,customHeaders:c={},_isInternalRefresh:u=!1,bypassCache:l=!1}=e,g=this._generateCacheKey(e),v=r==="POST"&&this._isCacheablePostEndpoint(t),R=this.enableCache&&!l&&!u&&(r==="GET"||r==="HEAD"||v);if(v&&this._log("[DEBUG] POST request eligible for caching:",t),R){let d=this._getCachedResponse(g);if(d!==null)return d;let h=this._getPendingPromise(g);if(h)return h}let q=this._apiKey||this._getAccessToken();if(!u&&i===!0&&!this._apiKey){if(this._isTokenExpired()){try{await this._refreshToken(),q=this._getAccessToken()}catch(d){throw console.error("Token refresh failed during request:",d),this._setTokens(null,null),this._onUnauthorized&&this._onUnauthorized({type:d?.reasonType}),new Error("Authentication required due to refresh failure.")}if(!q)throw this._onUnauthorized&&this._onUnauthorized(),new Error("Authentication required, token unavailable after refresh attempt.")}}else if(!u&&i==="optional"&&!this._apiKey&&q&&this._isTokenExpired())try{await this._refreshToken(),q=this._getAccessToken()}catch{q=null}let F={"Content-Type":"application/json",...c};i&&q&&(F.Authorization=`Bearer ${q}`);let $={method:r,headers:F};o&&(r==="POST"||r==="PUT"||r==="PATCH"||r==="DELETE")&&(F["Content-Type"]==="application/json"?$.body=JSON.stringify(o):($.body=o,delete F["Content-Type"]));let ee=n&&typeof n=="object"&&!Array.isArray(n)?n:{},te=Object.entries(ee).filter(([,d])=>d!=null).reduce((d,[h,m])=>(d[h]=m,d),{}),re=zt(te,{arrayFormat:"repeat"}),x=`${this.baseURL}${t}${re.toString()?`?${re.toString()}`:""}`;this._log(`[DEBUG] API Request: ${r} ${x}`,o?{Body:o}:"");let a=this._cacheGeneration,p=this._executeRequest(x,$);R&&this._getPendingPromise(g,p);try{let d=await p;return R&&d!==null&&this._cacheGeneration===a&&this._setCachedResponse(g,d),this.enableCache&&this.invalidateCacheOnMutation&&!u&&this._isMutation(r,t)&&this._invalidateForMutation(t),d}finally{R&&this._clearPendingPromise(g)}}async _executeRequest(e,t){try{let r=await this.fetch(e,t);if(!r.ok){let n;try{n=await r.json(),this._log("[DEBUG] API Error Response Body:",n)}catch{n={message:r.statusText},this._log(`[DEBUG] API Error Response Text: ${r.statusText}`)}if((r.status===418||r.status===503)&&n?.error==="maintenance"&&this._onMaintenance)try{this._onMaintenance()}catch{}let o=new Error(n.message||n.type||`HTTP error! status: ${r.status}`);throw o.status=r.status,o.data=n,o}if(r.status===204)return this._log(`[DEBUG] API Response: ${r.status} No Content`),null;try{let n=await r.json();return this._log(`[DEBUG] API Response: ${r.status}`,n),n}catch{return this._log(`[DEBUG] API Response OK but failed to parse as JSON: ${r.status}`,r),null}}catch(r){let n=r;throw r instanceof Error&&n.status?this._log(`[DEBUG] API Error Caught: ${t.method} ${e}`,r):console.error(`[ERROR] API request failed: ${t.method} ${e}`,r),r}}getUserId(){let e=this._getAccessToken();if(!e)return null;try{return $e(e)?.sub||null}catch(t){return console.error("Failed to decode token:",t),null}}getVersion(){return $r}clearCache(){this._cache.clear(),this._cacheGeneration++,this._log("[DEBUG] Cache cleared")}getCacheStats(){let e=Array.from(this._cache.entries()).map(([t,r])=>({key:t,timestamp:r.timestamp,hasData:r.data!==null&&r.data!==void 0,hasPendingPromise:!!r.promise}));return{size:this._cache.size,entries:e}}},Wr=Gt;var ls=Wr,xe=class extends ls{constructor(e,t={}){let r={...t,fetch:(n,o)=>window.fetch(n,o)};super(e,r)}};window.NuramaClient=xe;var Ui=xe;})();