@modrinth/api-client 0.31.0 → 0.32.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.
- package/dist/index.d.ts +7103 -28
- package/dist/index.js +1 -0
- package/dist/index.js.map +7 -0
- package/package.json +4 -2
- package/dist/core/abstract-client.d.ts +0 -163
- package/dist/core/abstract-feature.d.ts +0 -72
- package/dist/core/abstract-module.d.ts +0 -10
- package/dist/core/abstract-sync.d.ts +0 -61
- package/dist/core/abstract-upload-client.d.ts +0 -20
- package/dist/core/abstract-websocket.d.ts +0 -52
- package/dist/core/errors.d.ts +0 -48
- package/dist/features/auth.d.ts +0 -47
- package/dist/features/circuit-breaker.d.ts +0 -139
- package/dist/features/node-auth.d.ts +0 -58
- package/dist/features/panel-version.d.ts +0 -7
- package/dist/features/retry.d.ts +0 -87
- package/dist/features/verbose-logging.d.ts +0 -6
- package/dist/modules/archon/actions/v1.d.ts +0 -10
- package/dist/modules/archon/backups/v1.d.ts +0 -44
- package/dist/modules/archon/backups-queue/v1.d.ts +0 -25
- package/dist/modules/archon/content/v1.d.ts +0 -48
- package/dist/modules/archon/index.d.ts +0 -8
- package/dist/modules/archon/nodes/internal.d.ts +0 -10
- package/dist/modules/archon/notices/v0.d.ts +0 -38
- package/dist/modules/archon/options/v1.d.ts +0 -9
- package/dist/modules/archon/properties/v1.d.ts +0 -9
- package/dist/modules/archon/server-users/v1.d.ts +0 -30
- package/dist/modules/archon/servers/v0.d.ts +0 -122
- package/dist/modules/archon/servers/v1.d.ts +0 -30
- package/dist/modules/archon/transfers/internal.d.ts +0 -25
- package/dist/modules/archon/types.d.ts +0 -941
- package/dist/modules/index.d.ts +0 -181
- package/dist/modules/iso3166/index.d.ts +0 -24
- package/dist/modules/iso3166/types.d.ts +0 -21
- package/dist/modules/kyros/content/v1.d.ts +0 -23
- package/dist/modules/kyros/files/v0.d.ts +0 -123
- package/dist/modules/kyros/logs/v1.d.ts +0 -6
- package/dist/modules/kyros/types.d.ts +0 -44
- package/dist/modules/kyros/upload-sessions/v1.d.ts +0 -18
- package/dist/modules/labrinth/affiliate/internal.d.ts +0 -30
- package/dist/modules/labrinth/analytics/v3.d.ts +0 -56
- package/dist/modules/labrinth/attribution/internal.d.ts +0 -47
- package/dist/modules/labrinth/auth/internal.d.ts +0 -19
- package/dist/modules/labrinth/auth/v2.d.ts +0 -98
- package/dist/modules/labrinth/billing/internal.d.ts +0 -65
- package/dist/modules/labrinth/campaign/internal.d.ts +0 -10
- package/dist/modules/labrinth/collections.d.ts +0 -80
- package/dist/modules/labrinth/content/v3.d.ts +0 -6
- package/dist/modules/labrinth/external-projects/internal.d.ts +0 -9
- package/dist/modules/labrinth/friends/v3.d.ts +0 -23
- package/dist/modules/labrinth/globals/internal.d.ts +0 -11
- package/dist/modules/labrinth/images/v3.d.ts +0 -7
- package/dist/modules/labrinth/index.d.ts +0 -31
- package/dist/modules/labrinth/limits/v3.d.ts +0 -17
- package/dist/modules/labrinth/moderation/internal.d.ts +0 -12
- package/dist/modules/labrinth/notifications/v2.d.ts +0 -73
- package/dist/modules/labrinth/oauth/internal.d.ts +0 -97
- package/dist/modules/labrinth/organizations/v3.d.ts +0 -66
- package/dist/modules/labrinth/pats/v2.d.ts +0 -31
- package/dist/modules/labrinth/payout/v3.d.ts +0 -30
- package/dist/modules/labrinth/payouts/v3.d.ts +0 -15
- package/dist/modules/labrinth/projects/v2.d.ts +0 -169
- package/dist/modules/labrinth/projects/v3.d.ts +0 -110
- package/dist/modules/labrinth/reports/v3.d.ts +0 -81
- package/dist/modules/labrinth/server-ping/internal.d.ts +0 -10
- package/dist/modules/labrinth/sessions/v2.d.ts +0 -17
- package/dist/modules/labrinth/state/index.d.ts +0 -17
- package/dist/modules/labrinth/tags/v2.d.ts +0 -19
- package/dist/modules/labrinth/teams/v2.d.ts +0 -57
- package/dist/modules/labrinth/teams/v3.d.ts +0 -18
- package/dist/modules/labrinth/tech-review/internal.d.ts +0 -77
- package/dist/modules/labrinth/threads/v3.d.ts +0 -57
- package/dist/modules/labrinth/types.d.ts +0 -2119
- package/dist/modules/labrinth/users/v2.d.ts +0 -101
- package/dist/modules/labrinth/users/v3.d.ts +0 -37
- package/dist/modules/labrinth/versions/v2.d.ts +0 -75
- package/dist/modules/labrinth/versions/v3.d.ts +0 -123
- package/dist/modules/launcher-meta/types.d.ts +0 -25
- package/dist/modules/launcher-meta/v0.d.ts +0 -17
- package/dist/modules/mclogs/insights/v1.d.ts +0 -6
- package/dist/modules/mclogs/logs/v1.d.ts +0 -6
- package/dist/modules/mclogs/types.d.ts +0 -60
- package/dist/modules/paper/types.d.ts +0 -22
- package/dist/modules/paper/v3.d.ts +0 -19
- package/dist/modules/purpur/types.d.ts +0 -15
- package/dist/modules/purpur/v2.d.ts +0 -16
- package/dist/modules/types.d.ts +0 -8
- package/dist/platform/generic.d.ts +0 -28
- package/dist/platform/nuxt.d.ts +0 -88
- package/dist/platform/sync-generic.d.ts +0 -16
- package/dist/platform/tauri.d.ts +0 -35
- package/dist/platform/websocket-generic.d.ts +0 -16
- package/dist/platform/xhr-upload-client.d.ts +0 -15
- package/dist/state/node-auth.d.ts +0 -36
- package/dist/types/client.d.ts +0 -70
- package/dist/types/errors.d.ts +0 -43
- package/dist/types/index.d.ts +0 -10
- package/dist/types/request.d.ts +0 -124
- package/dist/types/upload.d.ts +0 -92
- package/dist/utils/fetch.d.ts +0 -4
- package/dist/utils/jwt-retry.d.ts +0 -5
- package/dist/utils/node-url.d.ts +0 -2
- package/dist/utils/pingtest.d.ts +0 -8
- package/dist/utils/sse.d.ts +0 -24
- package/dist/utils/types.d.ts +0 -2
package/dist/index.js
CHANGED
|
@@ -4,3 +4,4 @@ var a=class{constructor(e){this.client=e}};var M=class extends a{getModuleID(){r
|
|
|
4
4
|
`?t+2:t+1;return{line:this.buffer.slice(0,t),length:r}}return{line:this.buffer.slice(0,e),length:e+1}}processLine(e,t){if(e===""){this.dispatch(t);return}if(e.startsWith(":"))return;let r=e.indexOf(":"),n=r===-1?e:e.slice(0,r),s=r===-1?"":e.slice(r+1);switch(s.startsWith(" ")&&(s=s.slice(1)),n){case"event":this.eventName=s;break;case"data":this.data+=`${s}
|
|
5
5
|
`;break;case"id":this.id=s;break;case"retry":{let o=Number(s);Number.isInteger(o)&&o>=0&&t.push({kind:"retry",retry:o});break}}}dispatch(e){if(!this.data){this.eventName="",this.id=void 0;return}e.push({kind:"event",id:this.id,event:this.eventName||void 0,data:this.data.endsWith(`
|
|
6
6
|
`)?this.data.slice(0,-1):this.data}),this.eventName="",this.data="",this.id=void 0}};function Je(i){let e;try{e=JSON.parse(i)}catch{return null}return!e||typeof e!="object"||typeof e.type!="string"?null:e}var Tt=1e3,pt=3e4,xt=1e3,f=class extends w{constructor(){super(...arguments);this.emitter=Rt()}async safeConnectServer(t,r={}){let n=this.connections.get(t);if(n&&!r.force&&!n.stopped&&n.status!=="disconnected")return;n&&this.closeConnection(t);let s={serverId:t,intent:r.intent??"all",reconnectAttempts:0,retryDelay:Tt,stopped:!1,status:"idle"};this.connections.set(t,s),this.runConnection(s)}disconnect(t){this.closeConnection(t),this.clearListeners(t)}disconnectAll(){for(let t of this.connections.keys())this.disconnect(t)}async runConnection(t){for(;!t.stopped;){let r=t.status==="connected";this.updateStatus(t,r?"reconnecting":"connecting");let n=new AbortController;t.controller=n;try{let s=await this.client.stream("/sync",{api:"archon",version:1,method:"GET",params:{scope:`server:${t.serverId}`,intent:this.intentToParam(t.intent)},headers:t.lastEventId?{"Last-Event-Id":t.lastEventId}:void 0,signal:n.signal,retry:!1,circuitBreaker:!1});if(t.stopped)return;t.reconnectAttempts=0,this.updateStatus(t,"connected");let o=await this.consumeStream(t,s);if(t.controller=void 0,t.stopped)return;if(o==="protocol-reconnect"){t.reconnectAttempts=0;continue}await this.waitForReconnect(t)}catch(s){if(t.controller=void 0,t.stopped||this.isAbortError(s))return;t.reconnectAttempts++,this.updateStatus(t,"error",s),console.warn(`[Sync] Connection failed for server ${t.serverId}:`,s),await this.waitForReconnect(t)}}}async consumeStream(t,r){let n=r.getReader(),s=new TextDecoder,o=new C;try{for(;!t.stopped;){let{done:p,value:m}=await n.read();if(p)break;let g=s.decode(m,{stream:!0}),b=this.processParsedItems(t,o.feed(g));if(b==="protocol-reconnect")return await n.cancel(),t.controller?.abort(),b}let c=s.decode(),l=c?o.feed(c):[],u=this.processParsedItems(t,[...l,...o.end()]);if(u==="protocol-reconnect")return await n.cancel(),t.controller?.abort(),u}finally{n.releaseLock()}return"closed"}processParsedItems(t,r){for(let n of r){if(n.kind==="retry"){t.retryDelay=Math.min(n.retry,pt);continue}this.updateLastEventId(t,n.id);let s=Je(n.data);if(!s){console.warn("[Sync] Dropping malformed SSE payload:",{serverId:t.serverId,event:n.event,data:n.data});continue}if(this.emitSyncEvent(t.serverId,s),s.type==="protocol.reset"||s.type==="protocol.invalid")return t.lastEventId=void 0,"protocol-reconnect"}return"closed"}async waitForReconnect(t){if(t.stopped)return;this.updateStatus(t,"reconnecting");let r=this.getReconnectDelay(t);await new Promise(n=>{t.reconnectResolve=n,t.reconnectTimer=setTimeout(()=>{t.reconnectTimer=void 0,t.reconnectResolve=void 0,n()},r)})}closeConnection(t){let r=this.connections.get(t);r&&(r.stopped=!0,r.controller?.abort(),r.reconnectTimer&&(clearTimeout(r.reconnectTimer),r.reconnectTimer=void 0),r.reconnectResolve?.(),r.reconnectResolve=void 0,this.updateStatus(r,"disconnected"),this.connections.delete(t))}getReconnectDelay(t){let r=t.retryDelay*Math.pow(2,Math.max(t.reconnectAttempts-1,0));return Math.min(r,pt)+Math.random()*xt}updateLastEventId(t,r){r!==void 0&&(t.lastEventId=r||void 0)}intentToParam(t){return Array.isArray(t)?t.join(","):t}isAbortError(t){return t instanceof Error?t.name==="AbortError"||t.message.toLowerCase().includes("abort"):!1}};import kt from"mitt";var dt=1e3,A=class extends L{constructor(){super(...arguments);this.emitter=kt()}async connect(t,r){return this.connections.has(t)&&this.closeConnection(t),new Promise((n,s)=>{try{let o=new WebSocket(je(r.url)),c={serverId:t,socket:o,reconnectAttempts:0,reconnectTimer:void 0,isReconnecting:!1};this.connections.set(t,c),o.onopen=()=>{o.send(JSON.stringify({event:"auth",jwt:r.token})),c.reconnectAttempts=0,c.isReconnecting=!1,n()},o.onmessage=l=>{try{let u=JSON.parse(l.data),p=`${t}:${u.event}`;this.emitter.emit(p,u),(u.event==="auth-expiring"||u.event==="auth-incorrect")&&this.handleAuthExpiring(t).catch(console.error)}catch(u){console.error("[WebSocket] Failed to parse message:",u)}},o.onclose=l=>{console.debug(`[WebSocket] Closed for server ${t}:`,{code:l.code,reason:l.reason,wasClean:l.wasClean}),l.code!==dt&&this.scheduleReconnect(t,r)},o.onerror=l=>{let u=o.url,p=o.readyState;console.error(`[WebSocket] Error for server ${t}:`,{url:u,readyState:p,readyStateLabel:["CONNECTING","OPEN","CLOSING","CLOSED"][p],type:l.type}),s(new Error(`WebSocket connection failed for server ${t} (readyState: ${p})`))}}catch(o){s(o)}})}disconnect(t){this.closeConnection(t),this.emitter.all.forEach((r,n)=>{n.toString().startsWith(`${t}:`)&&this.emitter.all.delete(n)})}closeConnection(t){let r=this.connections.get(t);r&&(r.reconnectTimer&&(clearTimeout(r.reconnectTimer),r.reconnectTimer=void 0),(r.socket.readyState===WebSocket.OPEN||r.socket.readyState===WebSocket.CONNECTING)&&r.socket.close(dt,"Client disconnecting"),this.connections.delete(t))}disconnectAll(){for(let t of this.connections.keys())this.disconnect(t)}send(t,r){let n=this.connections.get(t);if(!n||n.socket.readyState!==WebSocket.OPEN){console.warn(`Cannot send message: WebSocket not connected for server ${t}`);return}n.socket.send(JSON.stringify(r))}scheduleReconnect(t,r){let n=this.connections.get(t);if(!n)return;if(n.reconnectAttempts>=this.MAX_RECONNECT_ATTEMPTS){this.disconnect(t);return}n.isReconnecting=!0,n.reconnectAttempts++;let s=this.getReconnectDelay(n.reconnectAttempts);n.reconnectTimer=setTimeout(()=>{this.connect(t,r).catch(o=>{console.error(`[WebSocket] Reconnection failed for server ${t}:`,o)})},s)}async handleAuthExpiring(t){try{let r=await this.client.archon.servers_v0.getWebSocketAuth(t),n=this.connections.get(t);n&&n.socket.readyState===WebSocket.OPEN&&n.socket.send(JSON.stringify({event:"auth",jwt:r.token}))}catch(r){console.error(`[WebSocket] Failed to refresh auth for server ${t}:`,r),this.disconnect(t)}}};var P=class extends k{upload(e,t){let r;t.api==="labrinth"?r=this.resolveBaseUrl(this.config.labrinthBaseUrl):t.api==="archon"?r=this.resolveBaseUrl(this.config.archonBaseUrl):r=t.api;let n=this.buildUrl(e,r,t.version),s=[];t.onProgress&&s.push(t.onProgress);let o=new AbortController;t.signal&&t.signal.addEventListener("abort",()=>o.abort());let c,l={promise:(async()=>{let u="formData"in t&&t.formData instanceof FormData,p=await this.buildDefaultHeaders();u?delete p["Content-Type"]:p["Content-Type"]="application/octet-stream";let m={retry:!1,...t,headers:{...p,...t.headers}};this.attachArchonSentryCaptureHeader(m);let g=this.buildUploadContext(n,e,m);if(c=g,o.signal.aborted)throw new h("Upload cancelled");let b=await this.executeUploadFeatureChain(g,s,o);return await this.config.hooks?.onResponse?.(b,g),b})().catch(async u=>{let p=this.normalizeError(u,c);throw c&&await this.config.hooks?.onError?.(p,c),p}),onProgress:u=>(s.push(u),l),cancel:()=>o.abort()};return l}executeXHRUpload(e,t,r){return new Promise((n,s)=>{let o=new XMLHttpRequest,c=e.metadata;o.upload.addEventListener("progress",p=>{if(p.lengthComputable){let m={loaded:p.loaded,total:p.total,progress:p.loaded/p.total};t.forEach(g=>g(m))}}),o.addEventListener("load",()=>{if(o.status>=200&&o.status<300)try{n(o.response?JSON.parse(o.response):void 0)}catch{n(void 0)}else s(this.createUploadError(o))}),o.addEventListener("error",()=>s(new h("Upload failed"))),o.addEventListener("abort",()=>s(new h("Upload cancelled"))),o.addEventListener("timeout",()=>s(new h("Upload timed out"))),e.options.timeout!==void 0&&(o.timeout=e.options.timeout);let l=e.url;if(e.options.params){let p=new URLSearchParams(Object.entries(e.options.params).map(([m,g])=>[m,String(g)])).toString();l+=(l.includes("?")?"&":"?")+p}o.open("POST",l);for(let[p,m]of Object.entries(e.options.headers??{}))o.setRequestHeader(p,m);let u="formData"in c?c.formData:c.file;o.send(u),r.signal.addEventListener("abort",()=>o.abort())})}createUploadError(e){let t;try{t=e.response?JSON.parse(e.response):void 0}catch{t=e.responseText}return this.createNormalizedError(new Error(`Upload failed with status ${e.status}`),e.status,t)}};var Qe=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new A(this),writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.archon,"sync",{value:new f(this),writable:!1,enumerable:!0,configurable:!1})}async executeRequest(e,t){try{return await wt(e,{method:t.method??"GET",headers:t.headers,body:t.body,params:t.params,timeout:t.timeout,signal:t.signal})}catch(r){throw this.normalizeError(r)}}async executeStreamRequest(e,t){try{let r=await fetch(S(e,t.params),{method:t.method??"GET",headers:t.headers,body:_(t.body),signal:t.signal});if(!r.ok)throw this.createNormalizedError(new Error(`HTTP ${r.status}: ${r.statusText}`),r.status,await E(r));if(!r.body)throw new h("Streaming response has no readable body",{statusCode:r.status});return r.body}catch(r){throw this.normalizeError(r)}}normalizeError(e){return e instanceof Lt?this.createNormalizedError(e,e.response?.status,e.data):super.normalizeError(e)}};import{FetchError as Ct}from"ofetch";var Xe=class{constructor(){let e=useState("circuit-breaker-state",()=>new Map);this.state=e.value}get(e){return this.state.get(e)}set(e,t){this.state.set(e,t)}clear(e){this.state.delete(e)}},Ye=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new A(this),writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.archon,"sync",{value:new f(this),writable:!1,enumerable:!0,configurable:!1})}async resolveRateLimitKey(){if(this.rateLimitKeyResolved!==void 0)return this.rateLimitKeyResolved;let e=this.config.rateLimitKey;return typeof e=="string"?this.rateLimitKeyResolved=e:typeof e=="function"&&(this.rateLimitKeyPromise||(this.rateLimitKeyPromise=e()),this.rateLimitKeyResolved=await this.rateLimitKeyPromise),this.rateLimitKeyResolved}async request(e,t){return import.meta.server&&await this.resolveRateLimitKey(),super.request(e,t)}upload(e,t){if(import.meta.server)throw new h("upload() is not supported during SSR");return super.upload(e,t)}async executeRequest(e,t){try{return await $fetch(e,{method:t.method??"GET",headers:t.headers,body:t.body,params:t.params,timeout:t.timeout,signal:t.signal,cache:import.meta.server?void 0:"no-store"})}catch(r){throw this.normalizeError(r)}}async executeStreamRequest(e,t){try{let r=await fetch(S(e,t.params),{method:t.method??"GET",headers:t.headers,body:_(t.body),signal:t.signal,cache:import.meta.server?void 0:"no-store"});if(!r.ok)throw this.createNormalizedError(new Error(`HTTP ${r.status}: ${r.statusText}`),r.status,await E(r));if(!r.body)throw new h("Streaming response has no readable body",{statusCode:r.status});return r.body}catch(r){throw this.normalizeError(r)}}normalizeError(e){return e instanceof Ct?this.createNormalizedError(e,e.response?.status,e.data):super.normalizeError(e)}async buildDefaultHeaders(){let e={...await super.buildDefaultHeaders()};return import.meta.server&&this.rateLimitKeyResolved&&(e["x-ratelimit-key"]=this.rateLimitKeyResolved),e}};var Ze=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new A(this),writable:!1,enumerable:!0,configurable:!1}),Object.defineProperty(this.archon,"sync",{value:new f(this),writable:!1,enumerable:!0,configurable:!1})}async executeRequest(e,t){try{let{fetch:r}=await import("@tauri-apps/plugin-http"),n=_(t.body),s=S(e,t.params),o=await r(s,{method:t.method??"GET",headers:t.headers,body:n});if(!o.ok){let u;try{u=await o.json()}catch{u=void 0}let p=new Error(`HTTP ${o.status}: ${o.statusText}`);throw p.statusCode=o.status,p.responseData=u,p}let c=o.headers.get("content-type")?.toLowerCase()??"";if(s.includes("/fs/download"))return await o.blob();if(c.startsWith("image/")||c.startsWith("audio/")||c.startsWith("video/")||c.includes("application/octet-stream"))return await o.blob();if(o.status===204||o.status===205)return;if(c.includes("application/json")||c.includes("+json"))return await o.json();let l=await o.text();if(!l)return;try{return JSON.parse(l)}catch{return l}}catch(r){throw this.normalizeError(r)}}async executeStreamRequest(e,t){try{let{fetch:r}=await import("@tauri-apps/plugin-http"),n=await r(S(e,t.params),{method:t.method??"GET",headers:t.headers,body:_(t.body),signal:t.signal});if(!n.ok)throw this.createNormalizedError(new Error(`HTTP ${n.status}: ${n.statusText}`),n.status,await E(n));if(!n.body)throw this.createNormalizedError(new Error("Streaming response has no readable body"),n.status,void 0);return n.body}catch(r){throw this.normalizeError(r)}}normalizeError(e){if(e instanceof Error){let t=e,r=t.statusCode,n=t.responseData;return this.createNormalizedError(e,r,n)}return super.normalizeError(e)}};var q={getAuth:null,refreshAuth:null};function qt(i,e){q.getAuth=i,q.refreshAuth=e}function Ot(){q.getAuth=null,q.refreshAuth=null}async function Mt(i,e){try{return await i()}catch(t){if(t instanceof h&&t.statusCode===401)return await e(),await i();throw t}}async function It(i,e={}){let t=e.count??5,r=e.intervalMs??200,n=e.settleDelayMs??1e3,s=e.timeoutMs??t*r+n+1e3;return e.signal?.aborted?-1:await new Promise(o=>{let c=[],l=new Set,u,p=!1,m=(v,R)=>{let d=setTimeout(()=>{l.delete(d),v()},R);return l.add(d),d},g=()=>{for(let v of l)clearTimeout(v);l.clear(),e.signal?.removeEventListener("abort",O),u&&(u.readyState===WebSocket.CONNECTING||u.readyState===WebSocket.OPEN)&&u.close()},b=v=>{p||(p=!0,g(),o(v))},O=()=>b(-1);e.signal?.addEventListener("abort",O,{once:!0});try{u=new WebSocket(i)}catch{b(-1);return}m(()=>b(-1),s),u.onopen=()=>{for(let v=0;v<t;v++)m(()=>{u?.readyState===WebSocket.OPEN&&u.send(String(performance.now()))},v*r);m(()=>{let v=c.length>0?Math.round([...c].sort((R,d)=>R-d)[Math.floor(c.length/2)]):-1;b(v)},t*r+n)},u.onmessage=v=>{c.push(performance.now()-Number(v.data))},u.onerror=()=>b(-1),u.onclose=()=>{!p&&c.length===0&&b(-1)}})}export{y as AbstractFeature,k as AbstractModrinthClient,w as AbstractSyncClient,x as AbstractUploadClient,L as AbstractWebSocketClient,ut as Archon,Ge as AuthFeature,We as CircuitBreakerFeature,Qe as GenericModrinthClient,f as GenericSyncClient,Ne as InMemoryCircuitBreakerStorage,h as ModrinthApiError,T as ModrinthServerError,Ve as NodeAuthFeature,Xe as NuxtCircuitBreakerStorage,Ye as NuxtModrinthClient,lt as PANEL_VERSION,He as PanelVersionFeature,ze as RetryFeature,C as SseParser,Ze as TauriModrinthClient,Ke as VerboseLoggingFeature,P as XHRUploadClient,Ot as clearNodeAuthState,je as getNodeWebSocketUrl,Fe as isModrinthErrorResponse,q as nodeAuthState,Je as parseSyncEventData,It as pingWebSocketUrl,qt as setNodeAuthState,Mt as withJWTRetry};
|
|
7
|
+
//# sourceMappingURL=index.js.map
|