@modrinth/api-client 0.41.0 → 0.42.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 CHANGED
@@ -2711,22 +2711,24 @@ export declare namespace Labrinth {
2711
2711
  }
2712
2712
  }
2713
2713
  export namespace Analytics {
2714
- export namespace v3 {
2715
- export type AnalyticsEventId = number;
2716
- export type AnalyticsEventMetricKind = 'views' | 'revenue' | 'downloads' | 'playtime';
2717
- export type AnalyticsEvent = {
2714
+ export namespace Internal {
2715
+ export type AnalyticsEventUpsert = {
2718
2716
  announcement_url: string | null;
2719
- for_metric_kind: AnalyticsEventMetricKind[] | null;
2717
+ for_metric_kind: v3.AnalyticsEventMetricKind[] | null;
2720
2718
  title: string;
2721
2719
  ends: string;
2722
- id: AnalyticsEventId;
2723
2720
  starts: string;
2724
2721
  };
2725
- export type AnalyticsEventUpsert = {
2722
+ }
2723
+ export namespace v3 {
2724
+ export type AnalyticsEventId = number;
2725
+ export type AnalyticsEventMetricKind = 'views' | 'revenue' | 'downloads' | 'playtime';
2726
+ export type AnalyticsEvent = {
2726
2727
  announcement_url: string | null;
2727
2728
  for_metric_kind: AnalyticsEventMetricKind[] | null;
2728
2729
  title: string;
2729
2730
  ends: string;
2731
+ id: AnalyticsEventId;
2730
2732
  starts: string;
2731
2733
  };
2732
2734
  export type FetchRequest = {
@@ -4480,6 +4482,25 @@ declare class LabrinthAffiliateInternalModule extends AbstractModule {
4480
4482
  patch(id: string, data: Labrinth.Affiliate.Internal.PatchRequest): Promise<void>;
4481
4483
  }
4482
4484
 
4485
+ declare class LabrinthAnalyticsInternalModule extends AbstractModule {
4486
+ getModuleID(): string;
4487
+ /**
4488
+ * Create an analytics event.
4489
+ * POST /_internal/analytics-event
4490
+ */
4491
+ createEvent(data: Labrinth.Analytics.Internal.AnalyticsEventUpsert): Promise<Labrinth.Analytics.v3.AnalyticsEvent>;
4492
+ /**
4493
+ * Edit an analytics event.
4494
+ * PATCH /_internal/analytics-event/{id}
4495
+ */
4496
+ editEvent(id: Labrinth.Analytics.v3.AnalyticsEventId, data: Labrinth.Analytics.Internal.AnalyticsEventUpsert): Promise<Labrinth.Analytics.v3.AnalyticsEvent>;
4497
+ /**
4498
+ * Delete an analytics event.
4499
+ * DELETE /_internal/analytics-event/{id}
4500
+ */
4501
+ deleteEvent(id: Labrinth.Analytics.v3.AnalyticsEventId): Promise<void>;
4502
+ }
4503
+
4483
4504
  declare class LabrinthAnalyticsV3Module extends AbstractModule {
4484
4505
  getModuleID(): string;
4485
4506
  /**
@@ -4518,21 +4539,6 @@ declare class LabrinthAnalyticsV3Module extends AbstractModule {
4518
4539
  * GET /v3/analytics-event
4519
4540
  */
4520
4541
  getEvents(): Promise<Labrinth.Analytics.v3.AnalyticsEvent[]>;
4521
- /**
4522
- * Create an analytics event.
4523
- * POST /v3/analytics-event
4524
- */
4525
- createEvent(data: Labrinth.Analytics.v3.AnalyticsEventUpsert): Promise<Labrinth.Analytics.v3.AnalyticsEvent>;
4526
- /**
4527
- * Edit an analytics event.
4528
- * PATCH /v3/analytics-event/{id}
4529
- */
4530
- editEvent(id: Labrinth.Analytics.v3.AnalyticsEventId, data: Labrinth.Analytics.v3.AnalyticsEventUpsert): Promise<Labrinth.Analytics.v3.AnalyticsEvent>;
4531
- /**
4532
- * Delete an analytics event.
4533
- * DELETE /v3/analytics-event/{id}
4534
- */
4535
- deleteEvent(id: Labrinth.Analytics.v3.AnalyticsEventId): Promise<void>;
4536
4542
  }
4537
4543
 
4538
4544
  declare class LabrinthAttributionInternalModule extends AbstractModule {
@@ -6451,6 +6457,7 @@ declare const MODULE_REGISTRY: {
6451
6457
  readonly kyros_logs_v1: typeof KyrosLogsV1Module;
6452
6458
  readonly kyros_upload_sessions_v1: typeof KyrosUploadSessionsV1Module;
6453
6459
  readonly labrinth_affiliate_internal: typeof LabrinthAffiliateInternalModule;
6460
+ readonly labrinth_analytics_internal: typeof LabrinthAnalyticsInternalModule;
6454
6461
  readonly labrinth_analytics_v3: typeof LabrinthAnalyticsV3Module;
6455
6462
  readonly labrinth_auth_internal: typeof LabrinthAuthInternalModule;
6456
6463
  readonly labrinth_auth_v2: typeof LabrinthAuthV2Module;
package/dist/index.js CHANGED
@@ -1,7 +1,7 @@
1
- var o=class{constructor(e){this.client=e}};var M=class extends o{getModuleID(){return"archon_actions_v1"}async list(e,t={}){let r={};return t.filter&&(r.filter=JSON.stringify(t.filter)),t.limit!==void 0&&(r.limit=t.limit),t.offset!==void 0&&(r.offset=t.offset),t.order!==void 0&&(r.order=t.order),t.min_datetime!==void 0&&(r.min_datetime=t.min_datetime),t.max_datetime!==void 0&&(r.max_datetime=t.max_datetime),this.client.request(`/servers/${e}/action-log`,{api:"archon",version:1,method:"GET",params:Object.keys(r).length>0?r:void 0})}};var O=class extends o{getModuleID(){return"archon_backups_v1"}async list(e,t){return this.client.request(`/servers/${e}/worlds/${t}/backups`,{api:"archon",version:1,method:"GET"})}async get(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/backups/${r}`,{api:"archon",version:1,method:"GET"})}async create(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/backups`,{api:"archon",version:1,method:"POST",body:r})}async restore(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups/${r}/restore`,{api:"archon",version:1,method:"POST"})}async delete(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups/${r}`,{api:"archon",version:1,method:"DELETE"})}async retry(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups/${r}/retry`,{api:"archon",version:1,method:"POST"})}async rename(e,t,r,n){await this.client.request(`/servers/${e}/worlds/${t}/backups/${r}`,{api:"archon",version:1,method:"PATCH",body:n})}};var $=class extends o{getModuleID(){return"archon_backups_queue_v1"}async list(e,t){return this.client.request(`/servers/${e}/worlds/${t}/backups-queue`,{api:"archon",version:1,method:"GET"})}async create(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/backups-queue`,{api:"archon",version:1,method:"POST",body:r})}async ackCreate(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/history/create/${r}/ack`,{api:"archon",version:1,method:"POST"})}async cancelCreate(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/history/create/${r}/cancel`,{api:"archon",version:1,method:"POST"})}async ackRestore(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/history/restore/${r}/ack`,{api:"archon",version:1,method:"POST"})}async cancelRestore(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/history/restore/${r}/cancel`,{api:"archon",version:1,method:"POST"})}async delete(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/${r}`,{api:"archon",version:1,method:"DELETE"})}async deleteMany(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/delete-many`,{api:"archon",version:1,method:"POST",body:{backup_ids:r}})}async restore(e,t,r,n){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/${r}/restore`,{api:"archon",version:1,method:"POST",body:n})}async retry(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/${r}/retry`,{api:"archon",version:1,method:"POST"})}};var U=class extends o{getModuleID(){return"archon_content_v1"}async getAddons(e,t,r){let n=new URLSearchParams;r?.from_modpack!==void 0&&n.set("from_modpack",String(r.from_modpack)),r?.disabled!==void 0&&n.set("disabled",String(r.disabled)),r?.addons!==void 0&&n.set("addons",String(r.addons)),r?.updates!==void 0&&n.set("updates",String(r.updates));let i=n.toString();return this.client.request(`/servers/${e}/worlds/${t}/addons${i?`?${i}`:""}`,{api:"archon",version:1,method:"GET"})}async addAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons`,{api:"archon",version:1,method:"POST",body:r})}async addAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/install-many`,{api:"archon",version:1,method:"POST",body:r})}async deleteAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/delete`,{api:"archon",version:1,method:"POST",body:r})}async disableAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/disable`,{api:"archon",version:1,method:"POST",body:r})}async enableAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/enable`,{api:"archon",version:1,method:"POST",body:r})}async deleteAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/delete-many`,{api:"archon",version:1,method:"POST",body:{items:r}})}async disableAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/disable-many`,{api:"archon",version:1,method:"POST",body:{items:r}})}async enableAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/enable-many`,{api:"archon",version:1,method:"POST",body:{items:r}})}async installContent(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/content`,{api:"archon",version:1,method:"POST",body:r})}async repair(e,t){await this.client.request(`/servers/${e}/worlds/${t}/content/repair`,{api:"archon",version:1,method:"POST"})}async unlinkModpack(e,t){await this.client.request(`/servers/${e}/worlds/${t}/content/unlink-modpack`,{api:"archon",version:1,method:"POST"})}async getAddonUpdate(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/addons/update?filename=${encodeURIComponent(r)}`,{api:"archon",version:1,method:"GET"})}async updateAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/update`,{api:"archon",version:1,method:"POST",body:r})}async updateAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/update-many`,{api:"archon",version:1,method:"POST",body:{addons:r}})}async getModpackUpdate(e,t){return this.client.request(`/servers/${e}/worlds/${t}/content/modpack/update`,{api:"archon",version:1,method:"GET"})}async updateModpack(e,t){await this.client.request(`/servers/${e}/worlds/${t}/content/modpack/update`,{api:"archon",version:1,method:"POST"})}async getUpdateGameVersionPreview(e,t,r,n){return this.client.request(`/servers/${e}/worlds/${t}/content/update-game-version?game_version=${encodeURIComponent(r)}`,{api:"archon",version:1,method:"GET",timeout:1e3*1e3,signal:n})}async applyGameVersionUpdate(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/content/update-game-version?game_version=${encodeURIComponent(r)}`,{api:"archon",version:1,method:"POST"})}};var D=class extends o{getModuleID(){return"archon_nodes_internal"}async overview(){return this.client.request("/nodes/overview",{api:"archon",version:"internal",method:"GET"})}};var N=class extends o{getModuleID(){return"archon_notices_v0"}async list(){return this.client.request("/notices",{api:"archon",version:"modrinth/v0",method:"GET"})}async create(e){return this.client.request("/notices",{api:"archon",version:"modrinth/v0",method:"POST",body:e})}async update(e,t){await this.client.request(`/notices/${e}`,{api:"archon",version:"modrinth/v0",method:"PATCH",body:t})}async delete(e){await this.client.request(`/notices/${e}`,{api:"archon",version:"modrinth/v0",method:"DELETE"})}async assign(e,t){await this.client.request(`/notices/${e}/assign`,{api:"archon",version:"modrinth/v0",method:"PUT",params:this.assignmentTargetToParams(t)})}async unassign(e,t){await this.client.request(`/notices/${e}/unassign`,{api:"archon",version:"modrinth/v0",method:"PUT",params:this.assignmentTargetToParams(t)})}assignmentTargetToParams(e){return"server"in e?{server:e.server}:{node:e.node}}};var B=class extends o{getModuleID(){return"archon_options_v1"}async getStartup(e,t){return this.client.request(`/servers/${e}/worlds/${t}/options/startup`,{api:"archon",version:1,method:"GET"})}async patchStartup(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/options/startup`,{api:"archon",version:1,method:"PATCH",body:r})}};var j=class extends o{getModuleID(){return"archon_properties_v1"}async getProperties(e,t){return this.client.request(`/servers/${e}/worlds/${t}/properties`,{api:"archon",version:1,method:"GET"})}async patchProperties(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/properties`,{api:"archon",version:1,method:"PATCH",body:r})}};var F=class extends o{getModuleID(){return"archon_server_users_v1"}async list(e){return this.client.request(`/servers/${e}/users`,{api:"archon",version:1,method:"GET"})}async add(e,t){await this.client.request(`/servers/${e}/users`,{api:"archon",version:1,method:"POST",body:t})}async reinvite(e,t){return this.client.request(`/servers/${e}/users/${t}/reinvite`,{api:"archon",version:1,method:"POST"})}async delete(e,t){await this.client.request(`/servers/${e}/users/${t}`,{api:"archon",version:1,method:"DELETE"})}async update(e,t,r){await this.client.request(`/servers/${e}/users/${t}`,{api:"archon",version:1,method:"PATCH",body:JSON.stringify(r)})}};var G=class extends o{getModuleID(){return"archon_servers_v0"}async get(e){return this.client.request(`/servers/${e}`,{api:"archon",method:"GET",version:"modrinth/v0"})}async list(e){let t=new URLSearchParams;e?.limit&&t.set("limit",e.limit.toString()),e?.offset&&t.set("offset",e.offset.toString());let r=t.toString()?`?${t.toString()}`:"";return this.client.request(`servers${r}`,{api:"archon",method:"GET",version:"modrinth/v0"})}async checkStock(e,t){return this.client.request(`/stock?region=${e}`,{api:"archon",version:"modrinth/v0",method:"POST",body:t,skipAuth:!0})}async checkStockGlobal(e){return this.client.request("/stock",{api:"archon",version:"modrinth/v0",method:"POST",body:e,skipAuth:!0})}async getFilesystemAuth(e){return this.client.request(`/servers/${e}/fs`,{api:"archon",version:"modrinth/v0",method:"GET"})}async getWebSocketAuth(e){return this.client.request(`/servers/${e}/ws`,{api:"archon",version:"modrinth/v0",method:"GET"})}async power(e,t){await this.client.request(`/servers/${e}/power`,{api:"archon",method:"POST",version:"modrinth/v0",body:{action:t}})}async reinstall(e,t,r=!1){await this.client.request(`/servers/${e}/reinstall`,{api:"archon",method:"POST",version:"modrinth/v0",params:{hard:String(r)},body:t})}async getReinstallMrpackAuth(e){return this.client.request(`/servers/${e}/reinstallFromMrpack`,{api:"archon",version:"modrinth/v0",method:"GET"})}async reinstallFromMrpack(e,t,r=!1,n){let i=await this.getReinstallMrpackAuth(e),a=new FormData;return a.append("file",t),this.client.upload("",{api:`https://${i.url}`,version:"reinstallMrpackMultiparted",formData:a,params:{hard:String(r)},headers:{Authorization:`Bearer ${i.token}`},skipAuth:!0,onProgress:n?.onProgress,retry:!1})}async updateName(e,t){await this.client.request(`/servers/${e}/name`,{api:"archon",method:"POST",version:"modrinth/v0",body:{name:t}})}async getAllocations(e){return this.client.request(`/servers/${e}/allocations`,{api:"archon",method:"GET",version:"modrinth/v0"})}async reserveAllocation(e,t){return this.client.request(`/servers/${e}/allocations`,{api:"archon",method:"POST",version:"modrinth/v0",params:{name:t}})}async updateAllocation(e,t,r){await this.client.request(`/servers/${e}/allocations/${t}`,{api:"archon",method:"PUT",version:"modrinth/v0",params:{name:r}})}async deleteAllocation(e,t){await this.client.request(`/servers/${e}/allocations/${t}`,{api:"archon",method:"DELETE",version:"modrinth/v0"})}async checkSubdomainAvailability(e){return this.client.request(`/subdomains/${e}/isavailable`,{api:"archon",method:"GET",version:"modrinth/v0"})}async changeSubdomain(e,t){await this.client.request(`/servers/${e}/subdomain`,{api:"archon",method:"POST",version:"modrinth/v0",body:{subdomain:t}})}async getStartupConfig(e){return this.client.request(`/servers/${e}/startup`,{api:"archon",method:"GET",version:"modrinth/v0"})}async updateStartupConfig(e,t){await this.client.request(`/servers/${e}/startup`,{api:"archon",method:"POST",version:"modrinth/v0",body:t})}async dismissNotice(e,t){await this.client.request(`/servers/${e}/notices/${t}/dismiss`,{api:"archon",method:"POST",version:"modrinth/v0"})}};var W=class extends o{getModuleID(){return"archon_servers_v1"}async list(){return this.client.request("/servers",{api:"archon",version:1,method:"GET"})}async get(e){return this.client.request(`/servers/${e}`,{api:"archon",version:1,method:"GET"})}async getRegions(){return this.client.request("/regions",{api:"archon",version:1,method:"GET",skipAuth:!0})}async endIntro(e){await this.client.request(`/servers/${e}/flows/intro`,{api:"archon",version:1,method:"DELETE"})}async resetToOnboarding(e,t){await this.client.request(`/servers/${e}/worlds/${t}/onboard`,{api:"archon",version:1,method:"POST"})}};var V=class extends o{getModuleID(){return"archon_transfers_internal"}async scheduleServers(e){return this.client.request("/transfers/schedule/servers",{api:"archon",version:"internal",method:"POST",body:e})}async scheduleNodes(e){return this.client.request("/transfers/schedule/nodes",{api:"archon",version:"internal",method:"POST",body:e})}async history(e){let t={};return e?.page!==void 0&&(t.page=e.page),e?.page_size!==void 0&&(t.page_size=e.page_size),this.client.request("/transfers/history",{api:"archon",version:"internal",method:"GET",params:t})}async cancel(e){return this.client.request("/transfers/cancel",{api:"archon",version:"internal",method:"POST",body:e})}};import{$fetch as it}from"ofetch";var ot="https://raw.githubusercontent.com/ipregistry/iso3166/master";function at(s){let e=s.trim().split(`
2
- `).filter(n=>n.trim()!=="");if(e.length===0)return[];let t=e[0],r=(t.startsWith("#")?t.slice(1):t).split(",");return e.slice(1).map(n=>{let i=n.split(","),a={};return r.forEach((c,l)=>{a[c]=i[l]||""}),a})}var H=class extends o{getModuleID(){return"iso3166_data"}async build(){try{let[e,t]=await Promise.all([it(`${ot}/countries.csv`,{responseType:"text"}),it(`${ot}/subdivisions.csv`,{responseType:"text"})]),r=at(e),n=at(t),i=r.map(c=>({alpha2:c.country_code_alpha2,alpha3:c.country_code_alpha3,numeric:c.numeric_code,nameShort:c.name_short,nameLong:c.name_long})),a=n.reduce((c,l)=>{let u=l.country_code_alpha2;return!u||typeof u!="string"||u.trim()===""||(c[u]||(c[u]=[]),c[u].push({code:l["subdivision_code_iso3166-2"],name:l.subdivision_name,localVariant:l.localVariant||null,category:l.category,parent:l.parent_subdivision||null,language:l.language_code})),c},{});return{countries:i,subdivisions:a}}catch(e){return console.error("Error fetching ISO3166 data:",e),{countries:[],subdivisions:{}}}}};var z=class extends o{getModuleID(){return"kyros_content_v1"}uploadAddonFile(e,t,r){let n=new FormData;for(let i of t)n.append("file",i,i instanceof File?i.name:"file");return this.client.upload(`/worlds/${e}/content/upload-addon-file`,{api:"",version:"v1",formData:n,onProgress:r?.onProgress,useNodeAuth:!0})}uploadModpackFile(e,t,r,n){let i=new FormData;return i.append("file",t,t instanceof File?t.name:"file"),i.append("properties",JSON.stringify(r)),this.client.upload(`/worlds/${e}/content/upload-modpack-file`,{api:"",version:"v1",formData:i,params:n?.softOverride!==void 0?{soft_override:String(n.softOverride)}:void 0,onProgress:n?.onProgress,useNodeAuth:!0})}};var St=/\/modrinth\/v\d+\/fs\/?$/,At=/^https?:\/\//i,_t=/^wss?:\/\//i,ct=/^https:\/\//i,lt=/^http:\/\//i;function K(s){let e=s.replace(St,"");return At.test(e)?e:`https://${e}`}function He(s){return _t.test(s)?s:ct.test(s)?s.replace(ct,"wss://"):lt.test(s)?s.replace(lt,"ws://"):`wss://${s}`}var J=class extends o{getModuleID(){return"kyros_files_v0"}getNodeBaseUrl(e){return K(e.url)}async listDirectory(e,t=1,r=100){return this.client.request("/fs/list",{api:"",version:"modrinth/v0",method:"GET",params:{path:e,page:t,page_size:r},useNodeAuth:!0})}async createFileOrFolder(e,t){return this.client.request("/fs/create",{api:"",version:"modrinth/v0",method:"POST",params:{path:e,type:t},headers:{"Content-Type":"application/octet-stream"},useNodeAuth:!0})}async downloadFile(e){return this.client.request("/fs/download",{api:"",version:"modrinth/v0",method:"GET",params:{path:e},useNodeAuth:!0})}async downloadFileWithAuth(e,t){return this.client.request("/fs/download",{api:this.getNodeBaseUrl(e),version:"modrinth/v0",method:"GET",params:{path:t},headers:{Authorization:`Bearer ${e.token}`},skipAuth:!0})}uploadFile(e,t,r){return this.client.upload("/fs/create",{api:"",version:"modrinth/v0",file:t,params:{path:e,type:"file"},onProgress:r?.onProgress,retry:r?.retry,useNodeAuth:!0})}uploadFileWithAuth(e,t,r,n){return this.client.upload("/fs/create",{api:this.getNodeBaseUrl(e),version:"modrinth/v0",file:r,params:{path:t,type:"file"},headers:{Authorization:`Bearer ${e.token}`},onProgress:n?.onProgress,retry:n?.retry,skipAuth:!0})}async updateFile(e,t){let r=typeof t=="string"?new Blob([t]):t;return this.client.request("/fs/update",{api:"",version:"modrinth/v0",method:"PUT",params:{path:e},body:r,headers:{"Content-Type":"application/octet-stream"},useNodeAuth:!0})}async moveFileOrFolder(e,t){return this.client.request("/fs/move",{api:"",version:"modrinth/v0",method:"POST",body:{source:e,destination:t},useNodeAuth:!0})}async renameFileOrFolder(e,t){let r=e.split("/").slice(0,-1).join("/")+"/"+t;return this.moveFileOrFolder(e,r)}async deleteFileOrFolder(e,t){return this.client.request("/fs/delete",{api:"",version:"modrinth/v0",method:"DELETE",params:{path:e,recursive:t},useNodeAuth:!0})}async deleteFileOrFolderWithAuth(e,t,r){return this.client.request("/fs/delete",{api:this.getNodeBaseUrl(e),version:"modrinth/v0",method:"DELETE",params:{path:t,recursive:r},headers:{Authorization:`Bearer ${e.token}`},skipAuth:!0})}async extractFile(e,t=!0,r=!1){return this.client.request("/fs/unarchive",{api:"",version:"v1",method:"POST",params:{src:e,trg:"/",override:t,dry:r},useNodeAuth:!0})}async modifyOperation(e,t){return this.client.request(`/fs/ops/${t}`,{api:"",version:"v1",method:"POST",params:{id:e},useNodeAuth:!0})}};var Q=class extends o{getModuleID(){return"kyros_logs_v1"}async clear(){return this.client.request("/logs/clear",{api:"",version:"v1",method:"POST",useNodeAuth:!0})}};var X=class extends o{getModuleID(){return"kyros_upload_sessions_v1"}async create(e,t){return this.client.request(`/worlds/${t}/files/upload-session`,{api:"",version:"v1",method:"POST",useNodeAuth:!0})}async get(e,t){return this.client.request(`/worlds/${t}/files/upload-session`,{api:"",version:"v1",method:"GET",useNodeAuth:!0})}uploadFiles(e,t,r,n,i){let a=new FormData;for(let{file:c,filename:l}of n)a.append("file",c,l);return this.client.upload(`/worlds/${t}/files/upload-session/${r}/files`,{api:"",version:"v1",formData:a,onProgress:i?.onProgress,retry:i?.retry,useNodeAuth:!0})}async finalize(e,t,r){return this.client.request(`/worlds/${t}/files/upload-session/${r}/finalize`,{api:"",version:"v1",method:"POST",useNodeAuth:!0})}async cancel(e,t,r){return this.client.request(`/worlds/${t}/files/upload-session/${r}`,{api:"",version:"v1",method:"DELETE",useNodeAuth:!0})}};var Y=class extends o{getModuleID(){return"labrinth_analytics_v3"}async fetch(e){return this.client.request("/analytics",{api:"labrinth",version:3,method:"POST",body:e,timeout:100*1e3})}async fetchFacets(e){return this.client.request("/analytics/facets",{api:"labrinth",version:3,method:"POST",body:e,timeout:100*1e3})}async getEvents(){return this.client.request("/analytics-event",{api:"labrinth",version:3,method:"GET"})}async createEvent(e){return this.client.request("/analytics-event",{api:"labrinth",version:3,method:"POST",body:e})}async editEvent(e,t){return this.client.request(`/analytics-event/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async deleteEvent(e){return this.client.request(`/analytics-event/${e}`,{api:"labrinth",version:3,method:"DELETE"})}};var Et="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";function ut(s){let e=0;for(let t of s){let r=Et.indexOf(t);if(r<0)throw new Error(`Invalid base62 character "${t}" in id "${s}"`);if(e=e*62+r,!Number.isSafeInteger(e))throw new Error(`Base62 id "${s}" exceeds safe integer range`)}return e}var Z=class extends o{getModuleID(){return"labrinth_attribution_internal"}async listProjectAttribution(e){return this.client.request(`/attribution/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async updateGroup(e,t){let r=ut(e);return this.client.request(`/attribution/group/${r}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async deleteGroups(e){let t={groups:e};return this.client.request("/attribution/group",{api:"labrinth",version:"internal",method:"DELETE",body:t})}async deleteAllGroups(e){let t={project_id:e};return this.client.request("/attribution/all-groups",{api:"labrinth",version:"internal",method:"DELETE",body:t})}async assignFileToGroup(e){let t={sha1:e.sha1,target_group_id:ut(e.target_group_id),project_id:e.project_id};return this.client.request("/attribution/assign",{api:"labrinth",version:"internal",method:"POST",body:t})}async splitFile(e){return this.client.request("/attribution/split",{api:"labrinth",version:"internal",method:"POST",body:e})}async scanFile(e){return this.client.request(`/attribution/file/${e}/scan`,{api:"labrinth",version:"internal",method:"POST"})}};var ee=class extends o{getModuleID(){return"labrinth_auth_internal"}async getNewsletterStatus(){return this.client.request("/auth/email/subscribe",{api:"labrinth",version:"internal",method:"GET"})}async subscribeNewsletter(){return this.client.request("/auth/email/subscribe",{api:"labrinth",version:"internal",method:"POST"})}async createDiscordCommunityLink(){return this.client.request("/auth/discord-community-link",{api:"labrinth",version:"internal",method:"POST"})}};var te=class extends o{getModuleID(){return"labrinth_auth_v2"}async login(e){return this.client.request("/auth/login",{api:"labrinth",version:2,method:"POST",body:e})}async login2FA(e){return this.client.request("/auth/login/2fa",{api:"labrinth",version:2,method:"POST",body:e})}async createAccount(e){return this.client.request("/auth/create",{api:"labrinth",version:2,method:"POST",body:e})}async validateCreateAccount(e){return this.client.request("/auth/create/validate",{api:"labrinth",version:2,method:"POST",body:e})}async createOAuthAccount(e){return this.client.request("/auth/create/oauth",{api:"labrinth",version:2,method:"POST",body:e})}async resetPasswordBegin(e){return this.client.request("/auth/password/reset",{api:"labrinth",version:2,method:"POST",body:e})}async changePassword(e){return this.client.request("/auth/password",{api:"labrinth",version:2,method:"PATCH",body:e})}async listPasskeys(){return this.client.request("/auth/passkey",{api:"labrinth",version:2,method:"GET"})}async registerPasskeyStart(){return this.client.request("/auth/passkey/register/start",{api:"labrinth",version:2,method:"POST"})}async registerPasskeyFinish(e){return this.client.request("/auth/passkey/register/finish",{api:"labrinth",version:2,method:"POST",body:e})}async authenticatePasskeyStart(){return this.client.request("/auth/passkey/start",{api:"labrinth",version:2,method:"POST",skipAuth:!0})}async authenticatePasskeyFinish(e){return this.client.request("/auth/passkey/finish",{api:"labrinth",version:2,method:"POST",body:e,skipAuth:!0})}async renamePasskey(e,t){return this.client.request(`/auth/passkey/${e}`,{api:"labrinth",version:2,method:"PATCH",body:t})}async deletePasskey(e){return this.client.request(`/auth/passkey/${e}`,{api:"labrinth",version:2,method:"DELETE"})}};var re=class extends o{getModuleID(){return"labrinth_billing_internal"}async getSubscriptions(e){let t=e?`?user_id=${e}`:"";return this.client.request(`/billing/subscriptions${t}`,{api:"labrinth",version:"internal",method:"GET"})}async getProducts(){return this.client.request("/billing/products",{api:"labrinth",version:"internal",method:"GET"})}async getCustomer(){return this.client.request("/billing/customer",{api:"labrinth",version:"internal",method:"GET"})}async editSubscription(e,t,r){let n=r?"?dry=true":"";return this.client.request(`/billing/subscription/${e}${n}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async getPaymentMethods(){return this.client.request("/billing/payment_methods",{api:"labrinth",version:"internal",method:"GET"})}async addPaymentMethodFlow(){return this.client.request("/billing/payment_method",{api:"labrinth",version:"internal",method:"POST"})}async editPaymentMethod(e,t){return this.client.request(`/billing/payment_method/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async removePaymentMethod(e){return this.client.request(`/billing/payment_method/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}async getPayments(e){let t=e?`?user_id=${e}`:"";return this.client.request(`/billing/payments${t}`,{api:"labrinth",version:"internal",method:"GET"})}async initiatePayment(e){return this.client.request("/billing/payment",{api:"labrinth",version:"internal",method:"POST",body:e})}async refundCharge(e,t){return this.client.request(`/billing/charge/${e}/refund`,{api:"labrinth",version:"internal",method:"POST",body:t})}async credit(e){return this.client.request("/billing/credit",{api:"labrinth",version:"internal",method:"POST",body:e})}};var ne=class extends o{getModuleID(){return"labrinth_collections"}async get(e){return this.client.request(`/collection/${e}`,{api:"labrinth",version:3,method:"GET"})}async getMultiple(e){return this.client.request("/collections",{api:"labrinth",version:3,method:"GET",params:{ids:JSON.stringify(e)}})}async edit(e,t){return this.client.request(`/collection/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async delete(e){return this.client.request(`/collection/${e}`,{api:"labrinth",version:3,method:"DELETE"})}async editIcon(e,t,r){return this.client.request(`/collection/${e}/icon?ext=${r}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async deleteIcon(e){return this.client.request(`/collection/${e}/icon`,{api:"labrinth",version:3,method:"DELETE"})}};var se=class extends o{getModuleID(){return"labrinth_content_v3"}async resolve(e){return this.client.request("/content/resolve",{api:"labrinth",version:3,method:"POST",body:e})}};var ie=class extends o{getModuleID(){return"labrinth_external_projects_internal"}async search(e){return this.client.request("/moderation/external-license/search",{api:"labrinth",version:"internal",method:"POST",body:e})}async getBySha1(e){return this.client.request(`/moderation/external-license/by-sha1/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async update(e,t){return this.client.request(`/moderation/external-license/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async addFile(e){return this.client.request("/moderation/external-license/file",{api:"labrinth",version:"internal",method:"POST",body:e})}};var oe=class extends o{getModuleID(){return"labrinth_friends_v3"}async list(){return this.client.request("/friends",{api:"labrinth",version:3,method:"GET"})}async add(e){return this.client.request(`/friend/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"POST"})}async remove(e){return this.client.request(`/friend/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"DELETE"})}};var ae=class extends o{getModuleID(){return"labrinth_globals_internal"}async get(){return this.client.request("/globals",{api:"labrinth",version:"internal",method:"GET",skipAuth:!0})}};function Rt(s,e){let t={ext:s,context:e.context};switch(e.context){case"project":t.project_id=e.project_id;break;case"version":t.version_id=e.version_id;break;case"thread_message":t.thread_message_id=e.thread_message_id;break;case"report":e.report_id&&(t.report_id=e.report_id);break}return t}var ce=class extends o{getModuleID(){return"labrinth_images_v3"}uploadImage(e,t,r){return this.client.upload("/image",{api:"labrinth",version:3,file:e,params:Rt(t,r)})}};var le=class extends o{getModuleID(){return"labrinth_limits_v3"}async getProjectLimits(){return this.client.request("/limits/projects",{api:"labrinth",version:3,method:"GET"})}async getOrganizationLimits(){return this.client.request("/limits/organizations",{api:"labrinth",version:3,method:"GET"})}async getCollectionLimits(){return this.client.request("/limits/collections",{api:"labrinth",version:3,method:"GET"})}};var ue=class extends o{getModuleID(){return"labrinth_moderation_internal"}async getProjects(e={}){return this.client.request("/moderation/projects",{api:"labrinth",version:"internal",method:"GET",params:e})}async getProjectIds(e={}){return this.client.request("/moderation/projects/ids",{api:"labrinth",version:"internal",method:"GET",params:e})}async acquireLock(e){return this.client.request(`/moderation/lock/${e}`,{api:"labrinth",version:"internal",method:"POST"})}async overrideLock(e){return this.client.request(`/moderation/lock/${e}/override`,{api:"labrinth",version:"internal",method:"POST"})}async releaseLock(e){return this.client.request(`/moderation/lock/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}async checkLock(e){return this.client.request(`/moderation/lock/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async setProjectJudgements(e){return this.client.request("/moderation/project",{api:"labrinth",version:"internal",method:"POST",body:e})}};var pe=class extends o{getModuleID(){return"labrinth_notifications_v2"}async getUserNotifications(e){return this.client.request(`/user/${e}/notifications`,{api:"labrinth",version:2,method:"GET"})}async getMultiple(e){return this.client.request(`/notifications?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:2,method:"GET"})}async markAsRead(e){return this.client.request(`/notification/${e}`,{api:"labrinth",version:2,method:"PATCH"})}async markMultipleAsRead(e){return this.client.request("/notifications",{api:"labrinth",version:2,method:"PATCH",params:{ids:JSON.stringify([...new Set(e)])}})}async delete(e){return this.client.request(`/notification/${e}`,{api:"labrinth",version:2,method:"DELETE"})}async deleteMultiple(e){return this.client.request("/notifications",{api:"labrinth",version:2,method:"DELETE",params:{ids:JSON.stringify([...new Set(e)])}})}};var de=class extends o{getModuleID(){return"labrinth_oauth_internal"}async getUserApps(e){return this.client.request(`/user/${e}/oauth_apps`,{api:"labrinth",version:3,method:"GET"})}async getApp(e){return this.client.request(`/oauth/app/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async getApps(e){return e.length===0?[]:(await Promise.all(e.map(r=>this.getApp(r).catch(()=>null)))).filter(r=>r!==null)}async createApp(e){return this.client.request("/oauth/app",{api:"labrinth",version:"internal",method:"POST",body:e})}async editApp(e,t){return this.client.request(`/oauth/app/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async deleteApp(e){return this.client.request(`/oauth/app/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}async uploadAppIcon(e,t,r){return this.client.request(`/oauth/app/${e}/icon`,{api:"labrinth",version:"internal",method:"PATCH",params:{ext:r},body:t})}async getAuthorizations(){return this.client.request("/oauth/authorizations",{api:"labrinth",version:"internal",method:"GET"})}async revokeAuthorization(e){return this.client.request("/oauth/authorizations",{api:"labrinth",version:"internal",method:"DELETE",params:{client_id:e}})}async authorize(e){return this.client.request("/oauth/authorize",{api:"labrinth",version:"internal",method:"GET",params:e})}async accept(e){return this.client.request("/oauth/accept",{api:"labrinth",version:"internal",method:"POST",body:e})}async reject(e){return this.client.request("/oauth/reject",{api:"labrinth",version:"internal",method:"POST",body:e})}};var he=class extends o{getModuleID(){return"labrinth_organizations_v3"}async get(e){return this.client.request(`/organization/${e}`,{api:"labrinth",version:3,method:"GET"})}async getProjects(e){return this.client.request(`/organization/${e}/projects`,{api:"labrinth",version:3,method:"GET"})}async getMultiple(e){return this.client.request(`/organizations?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:3,method:"GET"})}async addProject(e,t){return this.client.request(`/organization/${e}/projects`,{api:"labrinth",version:3,method:"POST",body:t})}async removeProject(e,t,r){return this.client.request(`/organization/${e}/projects/${t}`,{api:"labrinth",version:3,method:"DELETE",body:r})}};var me=class extends o{getModuleID(){return"labrinth_pats_v2"}async list(){return this.client.request("/pat",{api:"labrinth",version:2,method:"GET"})}async create(e){return this.client.request("/pat",{api:"labrinth",version:2,method:"POST",body:e})}async modify(e,t){return this.client.request(`/pat/${e}`,{api:"labrinth",version:2,method:"PATCH",body:t})}async delete(e){return this.client.request(`/pat/${e}`,{api:"labrinth",version:2,method:"DELETE"})}};var be=class extends o{getModuleID(){return"labrinth_payout_v3"}async getBalance(){let e=await this.client.request("/payout/balance",{api:"labrinth",version:3,method:"GET"});return{...e,available:Number(e.available),withdrawn_lifetime:Number(e.withdrawn_lifetime),withdrawn_ytd:Number(e.withdrawn_ytd),pending:Number(e.pending),dates:Object.fromEntries(Object.entries(e.dates).map(([t,r])=>[t,Number(r)]))}}async getHistory(){return(await this.client.request("/payout/history",{api:"labrinth",version:3,method:"GET"})).map(t=>t.type==="withdrawal"?{...t,amount:Number(t.amount),fee:t.fee===null?null:Number(t.fee)}:{...t,amount:Number(t.amount)})}async getMethods(e){return this.client.request("/payout/methods",{api:"labrinth",version:3,method:"GET",params:e?{country:e}:void 0})}async cancel(e){return this.client.request(`/payout/${e}`,{api:"labrinth",version:3,method:"DELETE"})}};var ge=class extends o{getModuleID(){return"labrinth_payouts_v3"}async getPlatformRevenue(e){return this.client.request("/payout/platform_revenue",{api:"labrinth",version:3,method:"GET",params:e})}};var ve=class extends o{getModuleID(){return"labrinth_projects_v2"}async get(e){return this.client.request(`/project/${e}`,{api:"labrinth",version:2,method:"GET"})}async check(e){let t=encodeURIComponent(e);return this.client.request(`/project/${t}/check`,{api:"labrinth",version:2,method:"GET"})}async getMultiple(e){return this.client.request("/projects",{api:"labrinth",version:2,method:"GET",params:{ids:JSON.stringify(e)}})}async search(e){return this.client.request("/search",{api:"labrinth",version:2,method:"GET",params:{...e,facets:e.facets?JSON.stringify(e.facets):void 0,new_filters:e.new_filters??void 0}})}async edit(e,t){return this.client.request(`/project/${e}`,{api:"labrinth",version:2,method:"PATCH",body:t})}async delete(e){return this.client.request(`/project/${e}`,{api:"labrinth",version:2,method:"DELETE"})}async getDependencies(e){return this.client.request(`/project/${e}/dependencies`,{api:"labrinth",version:2,method:"GET"})}async createGalleryImage(e,t,r){let n={ext:r.ext,featured:String(r.featured)};return r.title&&(n.title=r.title),r.description&&(n.description=r.description),r.ordering!==void 0&&(n.ordering=String(r.ordering)),this.client.request(`/project/${e}/gallery`,{api:"labrinth",version:2,method:"POST",params:n,body:t})}async editGalleryImage(e,t,r){let n={url:t,featured:String(r.featured)};return r.title&&(n.title=r.title),r.description&&(n.description=r.description),r.ordering!==void 0&&(n.ordering=String(r.ordering)),this.client.request(`/project/${e}/gallery`,{api:"labrinth",version:2,method:"PATCH",params:n})}async deleteGalleryImage(e,t){return this.client.request(`/project/${e}/gallery`,{api:"labrinth",version:2,method:"DELETE",params:{url:t}})}async getRandom(e){return this.client.request("/projects_random",{api:"labrinth",version:2,method:"GET",params:{count:String(e)}})}async bulkEdit(e,t){return this.client.request("/projects",{api:"labrinth",version:2,method:"PATCH",params:{ids:JSON.stringify(e)},body:t})}};function ze(s){if(typeof s!="object"||s===null)return!1;let e=s;return typeof e.error=="string"&&typeof e.description=="string"}var h=class s extends Error{constructor(e,t){super(e),this.name="ModrinthApiError",this.statusCode=t?.statusCode,this.originalError=t?.originalError,this.responseData=t?.responseData,this.context=t?.context,Error.captureStackTrace&&Error.captureStackTrace(this,s)}static fromUnknown(e,t){return e instanceof s?e:e instanceof Error?new s(e.message,{originalError:e,context:t}):new s(String(e),{context:t})}},T=class s extends h{constructor(e,t){let r=e;t?.v1Error&&(r=`[${t.v1Error.error}] ${t.v1Error.description}`,t.v1Error.context&&(r=`${t.v1Error.context}: ${r}`)),super(r,t),this.name="ModrinthServerError",this.v1Error=t?.v1Error,Error.captureStackTrace&&Error.captureStackTrace(this,s)}static fromResponse(e,t,r){let n=ze(t)?t:void 0,i=`HTTP ${e}`;return n?i=n.description:typeof t=="string"&&(i=t),new s(i,{statusCode:e,responseData:t,context:r,v1Error:n})}static fromUnknown(e,t){return e instanceof s?e:e instanceof h?new s(e.message,{statusCode:e.statusCode,originalError:e.originalError,responseData:e.responseData,context:t??e.context}):e instanceof Error?new s(e.message,{originalError:e,context:t}):new s(String(e),{context:t})}};var ye=class extends o{getModuleID(){return"labrinth_projects_v3"}async get(e){return this.client.request(`/project/${e}`,{api:"labrinth",version:3,method:"GET"})}async getDependencies(e){return this.client.request(`/project/${e}/dependencies`,{api:"labrinth",version:3,method:"GET"})}async getMultiple(e){return this.client.request("/projects",{api:"labrinth",version:3,method:"GET",params:{ids:JSON.stringify(e)}})}async search(e,t){return this.client.request("/search",{api:"labrinth",version:3,method:"GET",headers:t?.headers,params:{...e,facets:e.facets?JSON.stringify(e.facets):void 0}})}async edit(e,t){return this.client.request(`/project/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async getOrganization(e){try{return await this.client.request(`/project/${e}/organization`,{api:"labrinth",version:3,method:"GET"})}catch(t){if(t instanceof h&&t.statusCode===404)return null;throw t}}async getMembers(e){return this.client.request(`/project/${e}/members`,{api:"labrinth",version:3,method:"GET"})}async createServerProject(e){return this.client.request("/project",{api:"labrinth",version:3,method:"PUT",body:e})}async deleteProject(e){return this.client.request(`/project/${e}`,{api:"labrinth",version:3,method:"DELETE"})}async changeIcon(e,t,r){return this.client.request(`/project/${e}/icon`,{api:"labrinth",version:3,method:"PATCH",params:{ext:r},body:t})}async deleteIcon(e){return this.client.request(`/project/${e}/icon`,{api:"labrinth",version:3,method:"DELETE"})}};var fe=class extends o{getModuleID(){return"labrinth_reports_v3"}async get(e){return this.client.request(`/report/${e}`,{api:"labrinth",version:3,method:"GET"})}async list(e){let t={};return e?.count!=null&&(t.count=String(e.count)),e?.offset!=null&&(t.offset=String(e.offset)),e?.all!=null&&(t.all=String(e.all)),this.client.request("/report",{api:"labrinth",version:3,method:"GET",params:Object.keys(t).length>0?t:void 0})}async getMultiple(e){return this.client.request(`/reports?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:3,method:"GET"})}async create(e){return this.client.request("/report",{api:"labrinth",version:3,method:"POST",body:e})}async edit(e,t){return this.client.request(`/report/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async delete(e){return this.client.request(`/report/${e}`,{api:"labrinth",version:3,method:"DELETE"})}};var Pe=class extends o{getModuleID(){return"labrinth_server_ping_internal"}async pingMinecraftJava(e){return this.client.request("/server-ping/minecraft-java",{api:"labrinth",version:"internal",method:"POST",body:e})}};var Se=class extends o{getModuleID(){return"labrinth_sessions_v2"}async list(){return this.client.request("/session/list",{api:"labrinth",version:2,method:"GET"})}async delete(e){return this.client.request(`/session/${e}`,{api:"labrinth",version:2,method:"DELETE"})}};var Ae=class extends o{getModuleID(){return"labrinth_state"}async build(){let e=[],t=(d,ft,Pt)=>(console.error("Error fetching state data:",d),e.push({endpoint:Pt,error:d}),ft),[r,n,i,a,c,l,u,p,m,b,g,I,v]=await Promise.all([this.client.request("/tag/category",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/category")),this.client.request("/tag/loader",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/loader")),this.client.request("/tag/game_version",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/game_version")),this.client.request("/tag/donation_platform",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/donation_platform")),this.client.request("/tag/report_type",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/report_type")),this.client.request("/projects_random",{api:"labrinth",version:2,method:"GET",params:{count:"60"}}).catch(d=>t(d,[],"/v2/projects_random")),this.client.request("/search",{api:"labrinth",version:2,method:"GET",params:{limit:"3",query:"leave",index:"relevance"}}).catch(d=>t(d,{},"/v2/search")),this.client.request("/search",{api:"labrinth",version:2,method:"GET",params:{limit:"3",query:"",index:"updated"}}).catch(d=>t(d,{},"/v2/search")),this.client.labrinth.billing_internal.getProducts().catch(d=>t(d,[],"/_internal/billing/products")),this.client.request("/mural/bank-details",{api:"labrinth",version:"internal",method:"GET"}).catch(d=>t(d,null,"/_internal/mural/bank-details")),this.client.iso3166.data.build().catch(d=>t(d,{countries:[],subdivisions:{}},"iso3166/data")),this.client.request("/payout/methods",{api:"labrinth",version:3,method:"GET"}).catch(d=>t(d,[],"/v3/payout/methods")),this.client.request("/globals",{api:"labrinth",version:"internal",method:"GET"}).catch(d=>t(d,null,"/_internal/globals"))]),R=Object.fromEntries(I.filter(d=>d.type==="tremendous").map(d=>[d.id,{name:d.name,image_url:d.image_logo_url}]));return{categories:r,loaders:n,gameVersions:i,donationPlatforms:a,reportTypes:c,homePageProjects:l,homePageSearch:u,homePageNotifs:p,products:m,muralBankDetails:b?.bankDetails,tremendousIdMap:R,countries:g.countries,subdivisions:g.subdivisions,taxComplianceThresholds:v?.tax_compliance_thresholds,errors:e}}};var _e=class extends o{getModuleID(){return"labrinth_tech_review_internal"}async searchProjects(e){return this.client.request("/moderation/tech-review/search",{api:"labrinth",version:"internal",method:"POST",body:e})}async getReport(e){return this.client.request(`/moderation/tech-review/report/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async getIssue(e){return this.client.request(`/moderation/tech-review/issue/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async updateIssueDetail(e,t){return this.updateIssueDetails([{detail_id:e,verdict:t.verdict}])}async updateIssueDetails(e){return this.client.request("/moderation/tech-review/issue-detail",{api:"labrinth",version:"internal",method:"PATCH",body:e})}async updateGlobalIssueDetails(e){return this.client.request("/moderation/tech-review/global-issue-detail",{api:"labrinth",version:"internal",method:"POST",body:e})}async searchGlobalIssueDetails(e){return this.client.request("/moderation/tech-review/global-issue-detail/search",{api:"labrinth",version:"internal",method:"POST",body:e})}async getGlobalIssueDetail(e){return this.client.request("/moderation/tech-review/global-issue-detail/local-traces",{api:"labrinth",version:"internal",method:"POST",body:e})}async submitProject(e,t){return this.client.request(`/moderation/tech-review/submit/${e}`,{api:"labrinth",version:"internal",method:"POST",body:t})}async getProjectReport(e){return this.client.request(`/moderation/tech-review/project/${e}`,{api:"labrinth",version:"internal",method:"GET"})}};var Ee=class extends o{getModuleID(){return"labrinth_threads_v3"}async getThread(e){return this.client.request(`/thread/${e}`,{api:"labrinth",version:3,method:"GET"})}async getMultiple(e){return this.client.request(`/threads?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:3,method:"GET"})}async sendMessage(e,t){return this.client.request(`/thread/${e}`,{api:"labrinth",version:3,method:"POST",body:t})}async deleteMessage(e){return this.client.request(`/message/${e}`,{api:"labrinth",version:3,method:"DELETE"})}};var Re=class extends o{getModuleID(){return"labrinth_users_v2"}async get(e){return this.client.request(`/user/${e}`,{api:"labrinth",version:2,method:"GET"})}async getMultiple(e){return this.client.request(`/users?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:2,method:"GET"})}async getProjects(e){return this.client.request(`/user/${e}/projects`,{api:"labrinth",version:2,method:"GET"})}async getOrganizations(e){return this.client.request(`/user/${e}/organizations`,{api:"labrinth",version:3,method:"GET"})}async getCollections(e){return this.client.request(`/user/${e}/collections`,{api:"labrinth",version:3,method:"GET"})}async getNotifications(e){return this.client.request(`/user/${e}/notifications`,{api:"labrinth",version:2,method:"GET"})}async getFollowedProjects(e){return this.client.request(`/user/${e}/follows`,{api:"labrinth",version:2,method:"GET"})}async patch(e,t){return this.client.request(`/user/${e}`,{api:"labrinth",version:2,method:"PATCH",body:t})}async changeIcon(e,t,r){return this.client.request(`/user/${e}/icon`,{api:"labrinth",version:2,method:"PATCH",params:{ext:r},body:t})}async deleteIcon(e){return this.client.request(`/user/${e}/icon`,{api:"labrinth",version:2,method:"DELETE"})}};var Te=class extends o{getModuleID(){return"labrinth_users_v3"}async getAuthenticated(){return this.client.request("/user",{api:"labrinth",version:3,method:"GET"})}async get(e){return this.client.request(`/user/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"GET"})}async search(e){return this.client.request(`/users/search?query=${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"GET"})}async getAllProjects(e){return this.client.request(`/user/${encodeURIComponent(e)}/all-projects`,{api:"labrinth",version:3,method:"GET"})}};var xe=class extends o{getModuleID(){return"labrinth_versions_v2"}async getProjectVersions(e,t){let r={};return t?.game_versions?.length&&(r.game_versions=JSON.stringify(t.game_versions)),t?.loaders?.length&&(r.loaders=JSON.stringify(t.loaders)),t?.include_changelog===!1&&(r.include_changelog="false"),t?.limit!=null&&(r.limit=String(t.limit)),t?.offset!=null&&(r.offset=String(t.offset)),this.client.request(`/project/${e}/version`,{api:"labrinth",version:2,method:"GET",params:Object.keys(r).length>0?r:void 0})}async getVersion(e){return this.client.request(`/version/${e}`,{api:"labrinth",version:2,method:"GET"})}async getVersionFromFileHash(e,t){return this.client.request(`/version_file/${e}`,{api:"labrinth",version:2,method:"GET",params:{algorithm:t}})}async getVersions(e){return this.client.request("/versions",{api:"labrinth",version:2,method:"GET",params:{ids:JSON.stringify(e)}})}async getVersionFromIdOrNumber(e,t){return this.client.request(`/project/${e}/version/${t}`,{api:"labrinth",version:2,method:"GET"})}async deleteVersion(e){return this.client.request(`/version/${e}`,{api:"labrinth",version:2,method:"DELETE"})}};var pt=1800*1e3,ke=class extends o{getModuleID(){return"labrinth_versions_v3"}async getProjectVersions(e,t){let r={};return t?.game_versions?.length&&(r.game_versions=JSON.stringify(t.game_versions)),t?.loaders?.length&&(r.loaders=JSON.stringify(t.loaders)),t?.include_changelog===!1&&(r.include_changelog="false"),t?.limit!=null&&(r.limit=String(t.limit)),t?.offset!=null&&(r.offset=String(t.offset)),this.client.request(`/project/${e}/version`,{api:"labrinth",version:t?.apiVersion??2,method:"GET",params:Object.keys(r).length>0?r:void 0})}async getVersion(e){return this.client.request(`/version/${e}`,{api:"labrinth",version:3,method:"GET"})}async getVersions(e){return this.client.request("/versions",{api:"labrinth",version:3,method:"GET",params:{ids:JSON.stringify(e)}})}async getVersionFromIdOrNumber(e,t){return this.client.request(`/project/${e}/version/${t}`,{api:"labrinth",version:3,method:"GET"})}createVersion(e,t,r=null){let n=new FormData,i=t.map(p=>p.file),a=t.map(p=>p.fileType||null),c=i.map((p,m)=>`${p.name}-${m===0?"primary":m}`),l=c.reduce((p,m,b)=>(p[m]=a[b],p),{}),u={project_id:e.project_id,version_number:e.version_number,name:e.name||e.version_number,changelog:e.changelog,dependencies:e.dependencies||[],game_versions:e.game_versions,version_type:e.version_type,featured:!!e.featured,file_parts:c,file_types:l,primary_file:c[0],environment:e.environment,loaders:e.loaders};return r==="modpack"&&(u.mrpack_loaders=e.loaders,u.loaders=["mrpack"]),n.append("data",JSON.stringify(u)),i.forEach((p,m)=>{n.append(c[m],p,p.name)}),this.client.upload("/version",{api:"labrinth",version:3,formData:n,timeout:pt})}async modifyVersion(e,t){return this.client.request(`/version/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async deleteVersion(e){return this.client.request(`/version/${e}`,{api:"labrinth",version:2,method:"DELETE"})}addFilesToVersion(e,t){let r=new FormData,n=t.map(l=>l.file),i=t.map(l=>l.fileType||null),a=n.map((l,u)=>`${l.name}-${u}`),c=a.reduce((l,u,p)=>(l[u]=i[p],l),{});return r.append("data",JSON.stringify({file_types:c})),n.forEach((l,u)=>{r.append(a[u],l,l.name)}),this.client.upload(`/version/${e}/file`,{api:"labrinth",version:2,formData:r,timeout:pt})}};var we=class extends o{getModuleID(){return"labrinth_affiliate_internal"}async getAll(){return this.client.request("/affiliate",{api:"labrinth",version:"internal",method:"GET"})}async create(e){return this.client.request("/affiliate",{api:"labrinth",version:"internal",method:"PUT",body:e})}async get(e){return this.client.request(`/affiliate/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async delete(e){return this.client.request(`/affiliate/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}async patch(e,t){return this.client.request(`/affiliate/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}};var Le=class extends o{getModuleID(){return"labrinth_blocked_users_internal"}async getStatus(e,t){return this.client.request(`/block/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{api:"labrinth",version:"internal",method:"GET"})}};var qe=class extends o{getModuleID(){return"labrinth_blocked_users_v3"}async list(){return this.client.request("/blocks",{api:"labrinth",version:3,method:"GET"})}async block(e){return this.client.request(`/block/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"POST"})}async unblock(e){return this.client.request(`/block/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"DELETE"})}};var Ce=class extends o{getModuleID(){return"labrinth_campaign_internal"}async getPride26(){return this.client.request("/campaign/pride-26",{api:"labrinth",version:"internal",method:"GET",skipAuth:!0})}};var Ie=class extends o{getModuleID(){return"labrinth_tags_v2"}async getLicenseText(e){return this.client.request(`/tag/license/${e}`,{api:"labrinth",version:2,method:"GET"})}};var Me=class extends o{getModuleID(){return"labrinth_teams_v2"}async addMember(e,t){return this.client.request(`/team/${e}/members`,{api:"labrinth",version:2,method:"POST",body:t})}async editMember(e,t,r){return this.client.request(`/team/${e}/members/${t}`,{api:"labrinth",version:2,method:"PATCH",body:r})}async removeMember(e,t){return this.client.request(`/team/${e}/members/${t}`,{api:"labrinth",version:2,method:"DELETE"})}async transferOwnership(e,t){return this.client.request(`/team/${e}/owner`,{api:"labrinth",version:2,method:"PATCH",body:t})}};var Oe=class extends o{getModuleID(){return"labrinth_teams_v3"}async getMultiple(e){return this.client.request(`/teams?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:3,method:"GET"})}};var Tt="https://launcher-meta.modrinth.com",$e=class extends o{getModuleID(){return"launchermeta_manifest_v0"}async getManifest(e,t=0){return this.client.request("/manifest.json",{api:Tt,version:`${e}/v${t}`,method:"GET",skipAuth:!0,headers:{"Content-Type":""}})}};var Ue=class extends o{getModuleID(){return"mclogs_insights_v1"}async analyse(e){return this.client.request("/analyse",{api:"https://api.mclo.gs",version:"1",method:"POST",body:new URLSearchParams({content:e}),headers:{"Content-Type":"application/x-www-form-urlencoded"},skipAuth:!0})}};var De=class extends o{getModuleID(){return"mclogs_logs_v1"}async create(e){return this.client.request("/log",{api:"https://api.mclo.gs",version:"1",method:"POST",body:new URLSearchParams({content:e}),headers:{"Content-Type":"application/x-www-form-urlencoded"},skipAuth:!0})}};var dt="https://fill.papermc.io",Ne=class extends o{getModuleID(){return"paper_versions_v3"}async getProject(){return this.client.request("/projects/paper",{api:dt,version:"v3",method:"GET",skipAuth:!0})}async getBuilds(e){return{builds:await this.client.request(`/projects/paper/versions/${e}/builds`,{api:dt,version:"v3",method:"GET",skipAuth:!0})}}};var ht="https://api.purpurmc.org",Be=class extends o{getModuleID(){return"purpur_versions_v2"}async getProject(){return this.client.request("/purpur",{api:ht,version:"v2",method:"GET",skipAuth:!0})}async getBuilds(e){return this.client.request(`/purpur/${e}`,{api:ht,version:"v2",method:"GET",skipAuth:!0})}};var je=class extends o{getModuleID(){return"sharedinstances_instances_v1"}async get(e){return this.client.request(`/instances/${encodeURIComponent(e)}`,{api:"sharedinstances",version:1,method:"GET"})}async getForUser(e){return this.client.request("/instances",{api:"sharedinstances",version:1,method:"GET",params:{user:e}})}async getUsers(e){return this.client.request(`/instances/${encodeURIComponent(e)}/users`,{api:"sharedinstances",version:1,method:"GET"})}async getLatestVersion(e){return this.client.request(`/instances/${encodeURIComponent(e)}/versions`,{api:"sharedinstances",version:1,method:"GET"})}async getVersion(e,t){return this.client.request(`/instances/${encodeURIComponent(e)}/versions/${t}`,{api:"sharedinstances",version:1,method:"GET"})}};var Fe=class extends o{getModuleID(){return"sharedinstances_invites_v1"}async get(e){return this.client.request(`/invites/${encodeURIComponent(e)}`,{api:"sharedinstances",version:1,method:"GET",skipAuth:!0,retry:!1})}};var Ge=class extends o{getModuleID(){return"sharedinstances_moderation_v1"}async blacklistUsers(e){return this.client.request("/moderation/blacklist",{api:"sharedinstances",version:1,method:"POST",body:e})}async unblacklistUsers(e){return this.client.request("/moderation/blacklist",{api:"sharedinstances",version:1,method:"DELETE",body:e})}async deleteFile(e,t,r){return this.client.request(`/moderation/instances/${encodeURIComponent(e)}/versions/${t}/files/${encodeURIComponent(r)}`,{api:"sharedinstances",version:1,method:"DELETE"})}};var We=class extends o{getModuleID(){return"sharedinstances_users_v1"}async getBlacklistStatus(e){return this.client.request(`/blacklist/${encodeURIComponent(e)}`,{api:"sharedinstances",version:1,method:"GET"})}};var xt={archon_actions_v1:M,archon_backups_queue_v1:$,archon_backups_v1:O,archon_content_v1:U,archon_nodes_internal:D,archon_notices_v0:N,archon_options_v1:B,archon_properties_v1:j,archon_server_users_v1:F,archon_servers_v0:G,archon_servers_v1:W,archon_transfers_internal:V,iso3166_data:H,mclogs_insights_v1:Ue,mclogs_logs_v1:De,launchermeta_manifest_v0:$e,kyros_content_v1:z,kyros_files_v0:J,kyros_logs_v1:Q,kyros_upload_sessions_v1:X,labrinth_affiliate_internal:we,labrinth_analytics_v3:Y,labrinth_auth_internal:ee,labrinth_auth_v2:te,labrinth_attribution_internal:Z,labrinth_billing_internal:re,labrinth_blocked_users_internal:Le,labrinth_blocked_users_v3:qe,labrinth_campaign_internal:Ce,labrinth_collections:ne,labrinth_content_v3:se,labrinth_external_projects_internal:ie,labrinth_friends_v3:oe,labrinth_globals_internal:ae,labrinth_images_v3:ce,labrinth_moderation_internal:ue,labrinth_notifications_v2:pe,labrinth_oauth_internal:de,labrinth_organizations_v3:he,labrinth_pats_v2:me,labrinth_limits_v3:le,labrinth_payout_v3:be,labrinth_payouts_v3:ge,labrinth_projects_v2:ve,labrinth_projects_v3:ye,labrinth_reports_v3:fe,labrinth_server_ping_internal:Pe,labrinth_sessions_v2:Se,labrinth_state:Ae,labrinth_tags_v2:Ie,labrinth_teams_v2:Me,labrinth_teams_v3:Oe,labrinth_tech_review_internal:_e,labrinth_threads_v3:Ee,labrinth_users_v2:Re,labrinth_users_v3:Te,labrinth_versions_v2:xe,labrinth_versions_v3:ke,paper_versions_v3:Ne,purpur_versions_v2:Be,sharedinstances_invites_v1:Fe,sharedinstances_instances_v1:je,sharedinstances_moderation_v1:Ge,sharedinstances_users_v1:We};function kt(s){let e=s.split("_");if(e.length<2)throw new Error(`Invalid module ID "${s}". Expected format: <api>_<module> (e.g., "labrinth_projects_v2")`);let t=e[0],r=e.slice(1).join("_");return[t,r]}function mt(){let s={};for(let[e,t]of Object.entries(xt)){let[r,n]=kt(e);s[r]||(s[r]={}),s[r][n]=t}return s}var x=class{};var k=class extends x{constructor(t){super();this._moduleInstances=new Map;this._moduleNamespaces=new Map;this.config={timeout:1e4,labrinthBaseUrl:"https://api.modrinth.com",archonBaseUrl:"https://archon.modrinth.com",sharedInstancesBaseUrl:"https://shared-instances.modrinth.com",...t},this.features=t.features??[],this.initializeModules()}initializeModules(){let t=mt();for(let[r,n]of Object.entries(t)){let i={};for(let[a,c]of Object.entries(n)){let l=`${r}_${a}`;Object.defineProperty(i,a,{get:()=>{if(!this._moduleInstances.has(l)){let u=new c(this),p=u.getModuleID();if(p!==l)throw new Error(`Module ID mismatch: registry expects "${l}" but module declares "${p}"`);this._moduleInstances.set(l,u)}return this._moduleInstances.get(l)},enumerable:!0,configurable:!1})}Object.defineProperty(this,r,{value:i,writable:!1,enumerable:!0,configurable:!1}),this._moduleNamespaces.set(r,i)}}async request(t,r){let n;r.api==="labrinth"?n=this.resolveBaseUrl(this.config.labrinthBaseUrl):r.api==="archon"?n=this.resolveBaseUrl(this.config.archonBaseUrl):r.api==="sharedinstances"?n=this.resolveBaseUrl(this.config.sharedInstancesBaseUrl):n=r.api;let i=this.buildUrl(t,n,r.version),a=await this.buildDefaultHeaders(),c={method:"GET",timeout:this.config.timeout,...r,headers:{...a,...r.headers}};this.attachArchonSentryCaptureHeader(c);let l=c.headers;l&&"Content-Type"in l&&l["Content-Type"]===""&&delete l["Content-Type"];let u=this.buildContext(i,t,c);try{let p=await this.executeFeatureChain(u);return await this.config.hooks?.onResponse?.(p,u),p}catch(p){let m=this.normalizeError(p,u);throw await this.config.hooks?.onError?.(m,u),m}}async stream(t,r){let n;r.api==="labrinth"?n=this.resolveBaseUrl(this.config.labrinthBaseUrl):r.api==="archon"?n=this.resolveBaseUrl(this.config.archonBaseUrl):r.api==="sharedinstances"?n=this.resolveBaseUrl(this.config.sharedInstancesBaseUrl):n=r.api;let i=this.buildUrl(t,n,r.version),a=await this.buildDefaultHeaders(),c={method:"GET",retry:!1,circuitBreaker:!1,...r,headers:{...a,Accept:"text/event-stream",...r.headers}};this.attachArchonSentryCaptureHeader(c);let l=this.buildContext(i,t,c);try{return await this.executeFeatureChain(l,()=>this.executeStreamRequest(l.url,l.options))}catch(u){let p=this.normalizeError(u,l);throw await this.config.hooks?.onError?.(p,l),p}}async executeFeatureChain(t,r=()=>this.executeRequest(t.url,t.options)){let n=this.features.filter(c=>c.shouldApply(t)),i=n.length,a=async()=>(i--,i>=0?n[i].execute(a,t):(await this.config.hooks?.onRequest?.(t),r()));return a()}async executeUploadFeatureChain(t,r,n){let i=this.features.filter(l=>l.shouldApply(t)),a=i.length,c=async()=>(a--,a>=0?i[a].execute(c,t):(await this.config.hooks?.onRequest?.(t),this.executeXHRUpload(t,r,n)));return c()}buildUrl(t,r,n){let i=r.replace(/\/$/,""),a="";n==="internal"?a="/_internal":typeof n=="number"?a=`/v${n}`:typeof n=="string"&&(a=`/${n}`);let c=t.startsWith("/")?t:`/${t}`;return`${i}${a}${c}`}resolveBaseUrl(t){return typeof t=="function"?t():t}buildContext(t,r,n){return{url:t,path:r,options:n,attempt:1,startTime:Date.now()}}buildUploadContext(t,r,n){let i,a;if("formData"in n&&n.formData)i={isUpload:!0,formData:n.formData,onProgress:n.onProgress},a=n.formData;else if("file"in n&&n.file)i={isUpload:!0,file:n.file,onProgress:n.onProgress},a=n.file;else throw new Error("Upload options must include either file or formData");return{url:t,path:r,options:{...n,method:"POST",body:a},attempt:1,startTime:Date.now(),metadata:i}}async buildDefaultHeaders(){let t={"Content-Type":"application/json",...this.config.headers},r=await this.resolveUserAgent();return r&&(t["User-Agent"]=r),t}async resolveUserAgent(){let t=this.config.userAgent;return typeof t=="function"?await t():t}attachArchonSentryCaptureHeader(t){t.api!=="archon"||!t.headers||!this.shouldCaptureArchonRequests()||(t.headers["modrinth-sentry-capture"]="1")}shouldCaptureArchonRequests(){let t=this.config.archonSentryCapture;return typeof t=="function"?t():t===!0}normalizeError(t,r){return t instanceof h?t:h.fromUnknown(t,r?.path)}createNormalizedError(t,r,n){return r&&n?T.fromResponse(r,n):new h(t.message,{statusCode:r,originalError:t,responseData:n})}addFeature(t){return this.features.push(t),this}removeFeature(t){let r=this.features.indexOf(t);return r!==-1&&this.features.splice(r,1),this}getFeatures(){return[...this.features]}};var y=class{constructor(e){this.config={enabled:!0,...e}}shouldApply(e){return this.config.enabled!==!1}get name(){return this.config.name??this.constructor.name}get enabled(){return this.config.enabled!==!1}};var w=class{constructor(e){this.client=e;this.connections=new Map}on(e,t,r){let n=this.getEventKey(e,t),i=r;return this.emitter.on(n,i),()=>{this.emitter.off(n,i)}}onAny(e,t){let r=this.getAnyEventKey(e),n=t;return this.emitter.on(r,n),()=>{this.emitter.off(r,n)}}onStatus(e,t){let r=this.getStatusEventKey(e),n=t;return this.emitter.on(r,n),()=>{this.emitter.off(r,n)}}getStatus(e){let t=this.connections.get(e);return t?this.connectionToStatus(t):null}emitSyncEvent(e,t){this.emitter.emit(this.getEventKey(e,t.type),t),this.emitter.emit(this.getAnyEventKey(e),t)}updateStatus(e,t,r){e.status=t,e.error=r,this.emitter.emit(this.getStatusEventKey(e.serverId),this.connectionToStatus(e))}clearListeners(e){this.emitter.all.forEach((t,r)=>{r.toString().startsWith(`${e}:`)&&this.emitter.all.delete(r)})}connectionToStatus(e){return{state:e.status,connected:e.status==="connected",reconnecting:e.status==="reconnecting",reconnectAttempts:e.reconnectAttempts,retryDelay:e.retryDelay,lastEventId:e.lastEventId,error:e.error}}getEventKey(e,t){return`${e}:${t}`}getAnyEventKey(e){return`${e}:*`}getStatusEventKey(e){return`${e}:__status`}};var L=class{constructor(e){this.client=e;this.connections=new Map;this.MAX_RECONNECT_ATTEMPTS=10;this.RECONNECT_BASE_DELAY=1e3;this.RECONNECT_MAX_DELAY=3e4}async safeConnect(e,t){let r=this.getStatus(e);if(r?.connected&&!t?.force||r&&!r.connected&&!t?.force)return;t?.force&&r&&this.disconnect(e);let n=await this.client.archon.servers_v0.getWebSocketAuth(e);await this.connect(e,n)}on(e,t,r){let n=`${e}:${t}`;return this.emitter.on(n,r),()=>{this.emitter.off(n,r)}}getStatus(e){let t=this.connections.get(e);return t?{connected:t.socket.readyState===WebSocket.OPEN,reconnecting:t.isReconnecting,reconnectAttempts:t.reconnectAttempts}:null}getReconnectDelay(e){return Math.min(this.RECONNECT_BASE_DELAY*Math.pow(2,e),this.RECONNECT_MAX_DELAY)+Math.random()*1e3}};var Ke=class extends y{async execute(e,t){let r=await this.getToken();if(r){let n=this.config.headerName??"Authorization",i=this.config.tokenPrefix??"Bearer",a=i?`${i} ${r}`:r;t.options.headers={...t.options.headers,[n]:a}}return e()}shouldApply(e){if(e.options.skipAuth)return!1;let t=this.config.headerName??"Authorization";return e.options.headers?.[t]?!1:super.shouldApply(e)}async getToken(){let{token:e}=this.config;return typeof e=="function"?await e():e}};var Ve=class{constructor(){this.state=new Map}get(e){return this.state.get(e)}set(e,t){this.state.set(e,t)}clear(e){this.state.delete(e)}},Je=class extends y{constructor(e){super(e),this.config={enabled:!0,name:"circuit-breaker",maxFailures:3,resetTimeout:3e4,failureStatusCodes:[500,502,503,504],...e},this.storage=e?.storage??new Ve}async execute(e,t){let r=this.getCircuitKey(t);if(this.isCircuitOpen(r))throw new h("Circuit breaker open - too many recent failures",{statusCode:503,context:t.path});try{let n=await e();return this.recordSuccess(r),n}catch(n){throw this.isFailureError(n)&&this.recordFailure(r),n}}shouldApply(e){return e.options.circuitBreaker===!1?!1:super.shouldApply(e)}getCircuitKey(e){if(this.config.getCircuitKey)return this.config.getCircuitKey(e.url,e.options.method??"GET");let t=e.options.method??"GET",r=e.path.split("?")[0];return`${t}_${r}`}isCircuitOpen(e){let t=this.storage.get(e);return t?Date.now()-t.lastFailure>this.config.resetTimeout?(this.storage.clear?.(e),!1):t.failures>=this.config.maxFailures:!1}recordSuccess(e){this.storage.clear?.(e)}recordFailure(e){let t=Date.now(),r=this.storage.get(e);r?this.storage.set(e,{failures:r.failures+1,lastFailure:t}):this.storage.set(e,{failures:1,lastFailure:t})}isFailureError(e){return e instanceof h&&e.statusCode?this.config.failureStatusCodes.includes(e.statusCode):!1}getCircuitState(e){return this.storage.get(e)}resetCircuit(e){this.storage.clear?.(e)}};var Qe=class extends y{constructor(){super(...arguments);this.refreshPromise=null}shouldApply(t){return t.options.useNodeAuth===!0&&this.config.enabled!==!1}async refreshAuthWithLock(){return this.refreshPromise?this.refreshPromise:(this.refreshPromise=this.config.refreshAuth().finally(()=>{this.refreshPromise=null}),this.refreshPromise)}async execute(t,r){let i=0,a=this.config.getAuth();if((!a||this.isTokenExpired(a.token))&&(await this.refreshAuthWithLock(),a=this.config.getAuth()),!a)throw new Error("Failed to obtain node authentication");for(this.applyAuth(r,a);;)try{return await t()}catch(c){if(c instanceof h&&c.statusCode===401){if(i++,i>=3)throw new Error("Node authentication failed after 3 retries. Please re-authenticate.");if(await this.refreshAuthWithLock(),a=this.config.getAuth(),!a)throw new Error("Failed to refresh node authentication");this.applyAuth(r,a);continue}throw c}}applyAuth(t,r){let n=K(r.url);t.url=this.buildUrl(t.path,n,t.options.version),t.options.headers={...t.options.headers,Authorization:`Bearer ${r.token}`},t.options.skipAuth=!0}buildUrl(t,r,n){let i=r.replace(/\/$/,""),a="";n==="internal"?a="/_internal":typeof n=="number"?a=`/v${n}`:typeof n=="string"&&(a=`/${n}`);let c=t.startsWith("/")?t:`/${t}`;return`${i}${a}${c}`}isTokenExpired(t){try{let r=JSON.parse(atob(t.split(".")[1]));if(!r.exp)return!1;let n=r.exp*1e3;return Date.now()>=n-1e4}catch{return!1}}};var bt=1,Xe=class extends y{async execute(e,t){return t.options.headers={...t.options.headers,"X-Panel-Version":String(bt)},e()}shouldApply(e){return e.options.api==="labrinth"||e.options.api==="archon"}};var Ye=class extends y{constructor(e){super(e),this.config={enabled:!0,name:"retry",maxAttempts:3,backoffStrategy:"exponential",initialDelay:1e3,maxDelay:15e3,retryableStatusCodes:[408,429,500,502,503,504],retryOnNetworkError:!0,...e}}async execute(e,t){let r=null,n=this.getMaxAttempts(t);for(let i=1;i<=n;i++){t.attempt=i;try{return await e()}catch(a){if(r=a,!this.shouldRetryError(a,i,n)||i>=n)throw a;let l=this.calculateDelay(i);console.warn(`[${this.name}] Retrying request to ${t.path} (attempt ${i+1}/${n}) after ${l}ms`),await this.sleep(l)}}throw r??new Error("Max retry attempts reached")}shouldApply(e){return e.options.retry===!1?!1:super.shouldApply(e)}shouldRetryError(e,t,r){return this.config.shouldRetry?this.config.shouldRetry(e,t):this.config.retryOnNetworkError&&this.isNetworkError(e)?!0:e instanceof h&&e.statusCode?this.config.retryableStatusCodes.includes(e.statusCode):!1}isNetworkError(e){let t=[/network/i,/timeout/i,/ECONNREFUSED/i,/ENOTFOUND/i,/ETIMEDOUT/i,/ECONNRESET/i],r=e instanceof Error?e.message:String(e);return t.some(n=>n.test(r))}getMaxAttempts(e){return typeof e.options.retry=="number"?e.options.retry:this.config.maxAttempts}calculateDelay(e){let{backoffStrategy:t,initialDelay:r,maxDelay:n}=this.config,i;switch(t){case"exponential":i=r*Math.pow(2,e-1);break;case"linear":i=r*e;break;case"constant":i=r;break;default:i=r}return i+=Math.random()*1e3,Math.min(i,n)}sleep(e){return new Promise(t=>setTimeout(t,e))}};var Ze=class extends y{async execute(e,t){let r=t.options.method??"GET",n=t.options.api,i=t.options.version,a=`[${r}] [${n}_v${i}]`;console.debug(`${a} ${t.url} SENT`);try{let c=await e();try{let l=c?JSON.stringify(c).length:0;console.debug(`${a} ${t.url} RECEIVED ${l} bytes`)}catch{console.debug(`${a} ${t.url} RECEIVED`)}return c}catch(c){let l=wt(c);throw console.debug(`${a} ${t.url} FAILED${l?` \u2014 ${l}`:""}`),c}}};function wt(s){if(!s||typeof s!="object")return typeof s=="string"?s:"";let e=s,t=e.status??e.statusCode??e.response?.status,r=e.statusText??e.response?.statusText,n=e.responseData??e.data??e.response?._data,i=[];return t!==void 0&&i.push(r?`${t} ${r}`:String(t)),n!==void 0?i.push(`body: ${Lt(n)}`):e.message&&i.push(e.message),i.join(" ")}function Lt(s){if(typeof s=="string")return s;try{return JSON.stringify(s)}catch{return String(s)}}var gt;(e=>{let s;(r=>{let t;(i=>i.UserScope={NONE:"",SERVER_ADMIN:"SERVER_ADMIN",BASE_READ:"BASE_READ",POWER_ACTIONS:"POWER_ACTIONS",EXEC_COMMANDS:"EXEC_COMMANDS",FILES_WRITE:"FILES_WRITE",SETUP:"SETUP",BACKUPS:"BACKUPS",ADVANCED:"ADVANCED",RESET_SERVER:"RESET_SERVER",MANAGE_USERS:"MANAGE_USERS",SUPPORT_AGENT:"SUPPORT_AGENT",INFRA_MANAGER:"INFRA_MANAGER",INFRA_MANAGER_READ:"INFRA_MANAGER_READ",INFRA_SERVERS_XFER:"INFRA_SERVERS_XFER",INFRA_USERS:"INFRA_USERS"})(t=r.v1||(r.v1={}))})(s=e.ServerUsers||(e.ServerUsers={}))})(gt||(gt={}));import{$fetch as Ot,FetchError as $t}from"ofetch";function A(s,e){if(!e)return s;let t={};for(let[n,i]of Object.entries(e))i!=null&&(t[n]=String(i));let r=new URLSearchParams(t).toString();return r?`${s}${s.includes("?")?"&":"?"}${r}`:s}function _(s){if(s)return typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof URLSearchParams)&&!(s instanceof Blob)&&!(s instanceof ArrayBuffer)&&!ArrayBuffer.isView(s)?JSON.stringify(s):s}async function E(s){let e=s.headers.get("content-type")?.toLowerCase()??"";try{if(e.includes("application/json")||e.includes("+json"))return await s.json();let t=await s.text();if(!t)return;try{return JSON.parse(t)}catch{return t}}catch{return}}import qt from"mitt";var q=class{constructor(){this.buffer="";this.eventName="";this.data=""}feed(e){this.buffer+=e;let t=[];for(;;){let r=this.findLineEnd();if(!r)break;let{line:n,length:i}=r;this.buffer=this.buffer.slice(i),this.processLine(n,t)}return t}end(){let e=[];return this.buffer.length>0&&(this.processLine(this.buffer.endsWith("\r")?this.buffer.slice(0,-1):this.buffer,e),this.buffer=""),this.dispatch(e),e}findLineEnd(){let e=this.buffer.indexOf(`
1
+ var o=class{constructor(e){this.client=e}};var M=class extends o{getModuleID(){return"archon_actions_v1"}async list(e,t={}){let r={};return t.filter&&(r.filter=JSON.stringify(t.filter)),t.limit!==void 0&&(r.limit=t.limit),t.offset!==void 0&&(r.offset=t.offset),t.order!==void 0&&(r.order=t.order),t.min_datetime!==void 0&&(r.min_datetime=t.min_datetime),t.max_datetime!==void 0&&(r.max_datetime=t.max_datetime),this.client.request(`/servers/${e}/action-log`,{api:"archon",version:1,method:"GET",params:Object.keys(r).length>0?r:void 0})}};var O=class extends o{getModuleID(){return"archon_backups_v1"}async list(e,t){return this.client.request(`/servers/${e}/worlds/${t}/backups`,{api:"archon",version:1,method:"GET"})}async get(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/backups/${r}`,{api:"archon",version:1,method:"GET"})}async create(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/backups`,{api:"archon",version:1,method:"POST",body:r})}async restore(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups/${r}/restore`,{api:"archon",version:1,method:"POST"})}async delete(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups/${r}`,{api:"archon",version:1,method:"DELETE"})}async retry(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups/${r}/retry`,{api:"archon",version:1,method:"POST"})}async rename(e,t,r,n){await this.client.request(`/servers/${e}/worlds/${t}/backups/${r}`,{api:"archon",version:1,method:"PATCH",body:n})}};var $=class extends o{getModuleID(){return"archon_backups_queue_v1"}async list(e,t){return this.client.request(`/servers/${e}/worlds/${t}/backups-queue`,{api:"archon",version:1,method:"GET"})}async create(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/backups-queue`,{api:"archon",version:1,method:"POST",body:r})}async ackCreate(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/history/create/${r}/ack`,{api:"archon",version:1,method:"POST"})}async cancelCreate(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/history/create/${r}/cancel`,{api:"archon",version:1,method:"POST"})}async ackRestore(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/history/restore/${r}/ack`,{api:"archon",version:1,method:"POST"})}async cancelRestore(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/history/restore/${r}/cancel`,{api:"archon",version:1,method:"POST"})}async delete(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/${r}`,{api:"archon",version:1,method:"DELETE"})}async deleteMany(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/delete-many`,{api:"archon",version:1,method:"POST",body:{backup_ids:r}})}async restore(e,t,r,n){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/${r}/restore`,{api:"archon",version:1,method:"POST",body:n})}async retry(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/backups-queue/${r}/retry`,{api:"archon",version:1,method:"POST"})}};var U=class extends o{getModuleID(){return"archon_content_v1"}async getAddons(e,t,r){let n=new URLSearchParams;r?.from_modpack!==void 0&&n.set("from_modpack",String(r.from_modpack)),r?.disabled!==void 0&&n.set("disabled",String(r.disabled)),r?.addons!==void 0&&n.set("addons",String(r.addons)),r?.updates!==void 0&&n.set("updates",String(r.updates));let i=n.toString();return this.client.request(`/servers/${e}/worlds/${t}/addons${i?`?${i}`:""}`,{api:"archon",version:1,method:"GET"})}async addAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons`,{api:"archon",version:1,method:"POST",body:r})}async addAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/install-many`,{api:"archon",version:1,method:"POST",body:r})}async deleteAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/delete`,{api:"archon",version:1,method:"POST",body:r})}async disableAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/disable`,{api:"archon",version:1,method:"POST",body:r})}async enableAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/enable`,{api:"archon",version:1,method:"POST",body:r})}async deleteAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/delete-many`,{api:"archon",version:1,method:"POST",body:{items:r}})}async disableAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/disable-many`,{api:"archon",version:1,method:"POST",body:{items:r}})}async enableAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/enable-many`,{api:"archon",version:1,method:"POST",body:{items:r}})}async installContent(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/content`,{api:"archon",version:1,method:"POST",body:r})}async repair(e,t){await this.client.request(`/servers/${e}/worlds/${t}/content/repair`,{api:"archon",version:1,method:"POST"})}async unlinkModpack(e,t){await this.client.request(`/servers/${e}/worlds/${t}/content/unlink-modpack`,{api:"archon",version:1,method:"POST"})}async getAddonUpdate(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/addons/update?filename=${encodeURIComponent(r)}`,{api:"archon",version:1,method:"GET"})}async updateAddon(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/update`,{api:"archon",version:1,method:"POST",body:r})}async updateAddons(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/addons/update-many`,{api:"archon",version:1,method:"POST",body:{addons:r}})}async getModpackUpdate(e,t){return this.client.request(`/servers/${e}/worlds/${t}/content/modpack/update`,{api:"archon",version:1,method:"GET"})}async updateModpack(e,t){await this.client.request(`/servers/${e}/worlds/${t}/content/modpack/update`,{api:"archon",version:1,method:"POST"})}async getUpdateGameVersionPreview(e,t,r,n){return this.client.request(`/servers/${e}/worlds/${t}/content/update-game-version?game_version=${encodeURIComponent(r)}`,{api:"archon",version:1,method:"GET",timeout:1e3*1e3,signal:n})}async applyGameVersionUpdate(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/content/update-game-version?game_version=${encodeURIComponent(r)}`,{api:"archon",version:1,method:"POST"})}};var D=class extends o{getModuleID(){return"archon_nodes_internal"}async overview(){return this.client.request("/nodes/overview",{api:"archon",version:"internal",method:"GET"})}};var N=class extends o{getModuleID(){return"archon_notices_v0"}async list(){return this.client.request("/notices",{api:"archon",version:"modrinth/v0",method:"GET"})}async create(e){return this.client.request("/notices",{api:"archon",version:"modrinth/v0",method:"POST",body:e})}async update(e,t){await this.client.request(`/notices/${e}`,{api:"archon",version:"modrinth/v0",method:"PATCH",body:t})}async delete(e){await this.client.request(`/notices/${e}`,{api:"archon",version:"modrinth/v0",method:"DELETE"})}async assign(e,t){await this.client.request(`/notices/${e}/assign`,{api:"archon",version:"modrinth/v0",method:"PUT",params:this.assignmentTargetToParams(t)})}async unassign(e,t){await this.client.request(`/notices/${e}/unassign`,{api:"archon",version:"modrinth/v0",method:"PUT",params:this.assignmentTargetToParams(t)})}assignmentTargetToParams(e){return"server"in e?{server:e.server}:{node:e.node}}};var B=class extends o{getModuleID(){return"archon_options_v1"}async getStartup(e,t){return this.client.request(`/servers/${e}/worlds/${t}/options/startup`,{api:"archon",version:1,method:"GET"})}async patchStartup(e,t,r){await this.client.request(`/servers/${e}/worlds/${t}/options/startup`,{api:"archon",version:1,method:"PATCH",body:r})}};var j=class extends o{getModuleID(){return"archon_properties_v1"}async getProperties(e,t){return this.client.request(`/servers/${e}/worlds/${t}/properties`,{api:"archon",version:1,method:"GET"})}async patchProperties(e,t,r){return this.client.request(`/servers/${e}/worlds/${t}/properties`,{api:"archon",version:1,method:"PATCH",body:r})}};var F=class extends o{getModuleID(){return"archon_server_users_v1"}async list(e){return this.client.request(`/servers/${e}/users`,{api:"archon",version:1,method:"GET"})}async add(e,t){await this.client.request(`/servers/${e}/users`,{api:"archon",version:1,method:"POST",body:t})}async reinvite(e,t){return this.client.request(`/servers/${e}/users/${t}/reinvite`,{api:"archon",version:1,method:"POST"})}async delete(e,t){await this.client.request(`/servers/${e}/users/${t}`,{api:"archon",version:1,method:"DELETE"})}async update(e,t,r){await this.client.request(`/servers/${e}/users/${t}`,{api:"archon",version:1,method:"PATCH",body:JSON.stringify(r)})}};var G=class extends o{getModuleID(){return"archon_servers_v0"}async get(e){return this.client.request(`/servers/${e}`,{api:"archon",method:"GET",version:"modrinth/v0"})}async list(e){let t=new URLSearchParams;e?.limit&&t.set("limit",e.limit.toString()),e?.offset&&t.set("offset",e.offset.toString());let r=t.toString()?`?${t.toString()}`:"";return this.client.request(`servers${r}`,{api:"archon",method:"GET",version:"modrinth/v0"})}async checkStock(e,t){return this.client.request(`/stock?region=${e}`,{api:"archon",version:"modrinth/v0",method:"POST",body:t,skipAuth:!0})}async checkStockGlobal(e){return this.client.request("/stock",{api:"archon",version:"modrinth/v0",method:"POST",body:e,skipAuth:!0})}async getFilesystemAuth(e){return this.client.request(`/servers/${e}/fs`,{api:"archon",version:"modrinth/v0",method:"GET"})}async getWebSocketAuth(e){return this.client.request(`/servers/${e}/ws`,{api:"archon",version:"modrinth/v0",method:"GET"})}async power(e,t){await this.client.request(`/servers/${e}/power`,{api:"archon",method:"POST",version:"modrinth/v0",body:{action:t}})}async reinstall(e,t,r=!1){await this.client.request(`/servers/${e}/reinstall`,{api:"archon",method:"POST",version:"modrinth/v0",params:{hard:String(r)},body:t})}async getReinstallMrpackAuth(e){return this.client.request(`/servers/${e}/reinstallFromMrpack`,{api:"archon",version:"modrinth/v0",method:"GET"})}async reinstallFromMrpack(e,t,r=!1,n){let i=await this.getReinstallMrpackAuth(e),a=new FormData;return a.append("file",t),this.client.upload("",{api:`https://${i.url}`,version:"reinstallMrpackMultiparted",formData:a,params:{hard:String(r)},headers:{Authorization:`Bearer ${i.token}`},skipAuth:!0,onProgress:n?.onProgress,retry:!1})}async updateName(e,t){await this.client.request(`/servers/${e}/name`,{api:"archon",method:"POST",version:"modrinth/v0",body:{name:t}})}async getAllocations(e){return this.client.request(`/servers/${e}/allocations`,{api:"archon",method:"GET",version:"modrinth/v0"})}async reserveAllocation(e,t){return this.client.request(`/servers/${e}/allocations`,{api:"archon",method:"POST",version:"modrinth/v0",params:{name:t}})}async updateAllocation(e,t,r){await this.client.request(`/servers/${e}/allocations/${t}`,{api:"archon",method:"PUT",version:"modrinth/v0",params:{name:r}})}async deleteAllocation(e,t){await this.client.request(`/servers/${e}/allocations/${t}`,{api:"archon",method:"DELETE",version:"modrinth/v0"})}async checkSubdomainAvailability(e){return this.client.request(`/subdomains/${e}/isavailable`,{api:"archon",method:"GET",version:"modrinth/v0"})}async changeSubdomain(e,t){await this.client.request(`/servers/${e}/subdomain`,{api:"archon",method:"POST",version:"modrinth/v0",body:{subdomain:t}})}async getStartupConfig(e){return this.client.request(`/servers/${e}/startup`,{api:"archon",method:"GET",version:"modrinth/v0"})}async updateStartupConfig(e,t){await this.client.request(`/servers/${e}/startup`,{api:"archon",method:"POST",version:"modrinth/v0",body:t})}async dismissNotice(e,t){await this.client.request(`/servers/${e}/notices/${t}/dismiss`,{api:"archon",method:"POST",version:"modrinth/v0"})}};var W=class extends o{getModuleID(){return"archon_servers_v1"}async list(){return this.client.request("/servers",{api:"archon",version:1,method:"GET"})}async get(e){return this.client.request(`/servers/${e}`,{api:"archon",version:1,method:"GET"})}async getRegions(){return this.client.request("/regions",{api:"archon",version:1,method:"GET",skipAuth:!0})}async endIntro(e){await this.client.request(`/servers/${e}/flows/intro`,{api:"archon",version:1,method:"DELETE"})}async resetToOnboarding(e,t){await this.client.request(`/servers/${e}/worlds/${t}/onboard`,{api:"archon",version:1,method:"POST"})}};var V=class extends o{getModuleID(){return"archon_transfers_internal"}async scheduleServers(e){return this.client.request("/transfers/schedule/servers",{api:"archon",version:"internal",method:"POST",body:e})}async scheduleNodes(e){return this.client.request("/transfers/schedule/nodes",{api:"archon",version:"internal",method:"POST",body:e})}async history(e){let t={};return e?.page!==void 0&&(t.page=e.page),e?.page_size!==void 0&&(t.page_size=e.page_size),this.client.request("/transfers/history",{api:"archon",version:"internal",method:"GET",params:t})}async cancel(e){return this.client.request("/transfers/cancel",{api:"archon",version:"internal",method:"POST",body:e})}};import{$fetch as ot}from"ofetch";var at="https://raw.githubusercontent.com/ipregistry/iso3166/master";function ct(s){let e=s.trim().split(`
2
+ `).filter(n=>n.trim()!=="");if(e.length===0)return[];let t=e[0],r=(t.startsWith("#")?t.slice(1):t).split(",");return e.slice(1).map(n=>{let i=n.split(","),a={};return r.forEach((c,l)=>{a[c]=i[l]||""}),a})}var H=class extends o{getModuleID(){return"iso3166_data"}async build(){try{let[e,t]=await Promise.all([ot(`${at}/countries.csv`,{responseType:"text"}),ot(`${at}/subdivisions.csv`,{responseType:"text"})]),r=ct(e),n=ct(t),i=r.map(c=>({alpha2:c.country_code_alpha2,alpha3:c.country_code_alpha3,numeric:c.numeric_code,nameShort:c.name_short,nameLong:c.name_long})),a=n.reduce((c,l)=>{let u=l.country_code_alpha2;return!u||typeof u!="string"||u.trim()===""||(c[u]||(c[u]=[]),c[u].push({code:l["subdivision_code_iso3166-2"],name:l.subdivision_name,localVariant:l.localVariant||null,category:l.category,parent:l.parent_subdivision||null,language:l.language_code})),c},{});return{countries:i,subdivisions:a}}catch(e){return console.error("Error fetching ISO3166 data:",e),{countries:[],subdivisions:{}}}}};var z=class extends o{getModuleID(){return"kyros_content_v1"}uploadAddonFile(e,t,r){let n=new FormData;for(let i of t)n.append("file",i,i instanceof File?i.name:"file");return this.client.upload(`/worlds/${e}/content/upload-addon-file`,{api:"",version:"v1",formData:n,onProgress:r?.onProgress,useNodeAuth:!0})}uploadModpackFile(e,t,r,n){let i=new FormData;return i.append("file",t,t instanceof File?t.name:"file"),i.append("properties",JSON.stringify(r)),this.client.upload(`/worlds/${e}/content/upload-modpack-file`,{api:"",version:"v1",formData:i,params:n?.softOverride!==void 0?{soft_override:String(n.softOverride)}:void 0,onProgress:n?.onProgress,useNodeAuth:!0})}};var At=/\/modrinth\/v\d+\/fs\/?$/,_t=/^https?:\/\//i,Et=/^wss?:\/\//i,lt=/^https:\/\//i,ut=/^http:\/\//i;function K(s){let e=s.replace(At,"");return _t.test(e)?e:`https://${e}`}function ze(s){return Et.test(s)?s:lt.test(s)?s.replace(lt,"wss://"):ut.test(s)?s.replace(ut,"ws://"):`wss://${s}`}var J=class extends o{getModuleID(){return"kyros_files_v0"}getNodeBaseUrl(e){return K(e.url)}async listDirectory(e,t=1,r=100){return this.client.request("/fs/list",{api:"",version:"modrinth/v0",method:"GET",params:{path:e,page:t,page_size:r},useNodeAuth:!0})}async createFileOrFolder(e,t){return this.client.request("/fs/create",{api:"",version:"modrinth/v0",method:"POST",params:{path:e,type:t},headers:{"Content-Type":"application/octet-stream"},useNodeAuth:!0})}async downloadFile(e){return this.client.request("/fs/download",{api:"",version:"modrinth/v0",method:"GET",params:{path:e},useNodeAuth:!0})}async downloadFileWithAuth(e,t){return this.client.request("/fs/download",{api:this.getNodeBaseUrl(e),version:"modrinth/v0",method:"GET",params:{path:t},headers:{Authorization:`Bearer ${e.token}`},skipAuth:!0})}uploadFile(e,t,r){return this.client.upload("/fs/create",{api:"",version:"modrinth/v0",file:t,params:{path:e,type:"file"},onProgress:r?.onProgress,retry:r?.retry,useNodeAuth:!0})}uploadFileWithAuth(e,t,r,n){return this.client.upload("/fs/create",{api:this.getNodeBaseUrl(e),version:"modrinth/v0",file:r,params:{path:t,type:"file"},headers:{Authorization:`Bearer ${e.token}`},onProgress:n?.onProgress,retry:n?.retry,skipAuth:!0})}async updateFile(e,t){let r=typeof t=="string"?new Blob([t]):t;return this.client.request("/fs/update",{api:"",version:"modrinth/v0",method:"PUT",params:{path:e},body:r,headers:{"Content-Type":"application/octet-stream"},useNodeAuth:!0})}async moveFileOrFolder(e,t){return this.client.request("/fs/move",{api:"",version:"modrinth/v0",method:"POST",body:{source:e,destination:t},useNodeAuth:!0})}async renameFileOrFolder(e,t){let r=e.split("/").slice(0,-1).join("/")+"/"+t;return this.moveFileOrFolder(e,r)}async deleteFileOrFolder(e,t){return this.client.request("/fs/delete",{api:"",version:"modrinth/v0",method:"DELETE",params:{path:e,recursive:t},useNodeAuth:!0})}async deleteFileOrFolderWithAuth(e,t,r){return this.client.request("/fs/delete",{api:this.getNodeBaseUrl(e),version:"modrinth/v0",method:"DELETE",params:{path:t,recursive:r},headers:{Authorization:`Bearer ${e.token}`},skipAuth:!0})}async extractFile(e,t=!0,r=!1){return this.client.request("/fs/unarchive",{api:"",version:"v1",method:"POST",params:{src:e,trg:"/",override:t,dry:r},useNodeAuth:!0})}async modifyOperation(e,t){return this.client.request(`/fs/ops/${t}`,{api:"",version:"v1",method:"POST",params:{id:e},useNodeAuth:!0})}};var Q=class extends o{getModuleID(){return"kyros_logs_v1"}async clear(){return this.client.request("/logs/clear",{api:"",version:"v1",method:"POST",useNodeAuth:!0})}};var X=class extends o{getModuleID(){return"kyros_upload_sessions_v1"}async create(e,t){return this.client.request(`/worlds/${t}/files/upload-session`,{api:"",version:"v1",method:"POST",useNodeAuth:!0})}async get(e,t){return this.client.request(`/worlds/${t}/files/upload-session`,{api:"",version:"v1",method:"GET",useNodeAuth:!0})}uploadFiles(e,t,r,n,i){let a=new FormData;for(let{file:c,filename:l}of n)a.append("file",c,l);return this.client.upload(`/worlds/${t}/files/upload-session/${r}/files`,{api:"",version:"v1",formData:a,onProgress:i?.onProgress,retry:i?.retry,useNodeAuth:!0})}async finalize(e,t,r){return this.client.request(`/worlds/${t}/files/upload-session/${r}/finalize`,{api:"",version:"v1",method:"POST",useNodeAuth:!0})}async cancel(e,t,r){return this.client.request(`/worlds/${t}/files/upload-session/${r}`,{api:"",version:"v1",method:"DELETE",useNodeAuth:!0})}};var Y=class extends o{getModuleID(){return"labrinth_analytics_internal"}async createEvent(e){return this.client.request("/analytics-event",{api:"labrinth",version:"internal",method:"POST",body:e})}async editEvent(e,t){return this.client.request(`/analytics-event/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async deleteEvent(e){return this.client.request(`/analytics-event/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}};var Z=class extends o{getModuleID(){return"labrinth_analytics_v3"}async fetch(e){return this.client.request("/analytics",{api:"labrinth",version:3,method:"POST",body:e,timeout:100*1e3})}async fetchFacets(e){return this.client.request("/analytics/facets",{api:"labrinth",version:3,method:"POST",body:e,timeout:100*1e3})}async getEvents(){return this.client.request("/analytics-event",{api:"labrinth",version:3,method:"GET"})}};var Rt="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";function pt(s){let e=0;for(let t of s){let r=Rt.indexOf(t);if(r<0)throw new Error(`Invalid base62 character "${t}" in id "${s}"`);if(e=e*62+r,!Number.isSafeInteger(e))throw new Error(`Base62 id "${s}" exceeds safe integer range`)}return e}var ee=class extends o{getModuleID(){return"labrinth_attribution_internal"}async listProjectAttribution(e){return this.client.request(`/attribution/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async updateGroup(e,t){let r=pt(e);return this.client.request(`/attribution/group/${r}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async deleteGroups(e){let t={groups:e};return this.client.request("/attribution/group",{api:"labrinth",version:"internal",method:"DELETE",body:t})}async deleteAllGroups(e){let t={project_id:e};return this.client.request("/attribution/all-groups",{api:"labrinth",version:"internal",method:"DELETE",body:t})}async assignFileToGroup(e){let t={sha1:e.sha1,target_group_id:pt(e.target_group_id),project_id:e.project_id};return this.client.request("/attribution/assign",{api:"labrinth",version:"internal",method:"POST",body:t})}async splitFile(e){return this.client.request("/attribution/split",{api:"labrinth",version:"internal",method:"POST",body:e})}async scanFile(e){return this.client.request(`/attribution/file/${e}/scan`,{api:"labrinth",version:"internal",method:"POST"})}};var te=class extends o{getModuleID(){return"labrinth_auth_internal"}async getNewsletterStatus(){return this.client.request("/auth/email/subscribe",{api:"labrinth",version:"internal",method:"GET"})}async subscribeNewsletter(){return this.client.request("/auth/email/subscribe",{api:"labrinth",version:"internal",method:"POST"})}async createDiscordCommunityLink(){return this.client.request("/auth/discord-community-link",{api:"labrinth",version:"internal",method:"POST"})}};var re=class extends o{getModuleID(){return"labrinth_auth_v2"}async login(e){return this.client.request("/auth/login",{api:"labrinth",version:2,method:"POST",body:e})}async login2FA(e){return this.client.request("/auth/login/2fa",{api:"labrinth",version:2,method:"POST",body:e})}async createAccount(e){return this.client.request("/auth/create",{api:"labrinth",version:2,method:"POST",body:e})}async validateCreateAccount(e){return this.client.request("/auth/create/validate",{api:"labrinth",version:2,method:"POST",body:e})}async createOAuthAccount(e){return this.client.request("/auth/create/oauth",{api:"labrinth",version:2,method:"POST",body:e})}async resetPasswordBegin(e){return this.client.request("/auth/password/reset",{api:"labrinth",version:2,method:"POST",body:e})}async changePassword(e){return this.client.request("/auth/password",{api:"labrinth",version:2,method:"PATCH",body:e})}async listPasskeys(){return this.client.request("/auth/passkey",{api:"labrinth",version:2,method:"GET"})}async registerPasskeyStart(){return this.client.request("/auth/passkey/register/start",{api:"labrinth",version:2,method:"POST"})}async registerPasskeyFinish(e){return this.client.request("/auth/passkey/register/finish",{api:"labrinth",version:2,method:"POST",body:e})}async authenticatePasskeyStart(){return this.client.request("/auth/passkey/start",{api:"labrinth",version:2,method:"POST",skipAuth:!0})}async authenticatePasskeyFinish(e){return this.client.request("/auth/passkey/finish",{api:"labrinth",version:2,method:"POST",body:e,skipAuth:!0})}async renamePasskey(e,t){return this.client.request(`/auth/passkey/${e}`,{api:"labrinth",version:2,method:"PATCH",body:t})}async deletePasskey(e){return this.client.request(`/auth/passkey/${e}`,{api:"labrinth",version:2,method:"DELETE"})}};var ne=class extends o{getModuleID(){return"labrinth_billing_internal"}async getSubscriptions(e){let t=e?`?user_id=${e}`:"";return this.client.request(`/billing/subscriptions${t}`,{api:"labrinth",version:"internal",method:"GET"})}async getProducts(){return this.client.request("/billing/products",{api:"labrinth",version:"internal",method:"GET"})}async getCustomer(){return this.client.request("/billing/customer",{api:"labrinth",version:"internal",method:"GET"})}async editSubscription(e,t,r){let n=r?"?dry=true":"";return this.client.request(`/billing/subscription/${e}${n}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async getPaymentMethods(){return this.client.request("/billing/payment_methods",{api:"labrinth",version:"internal",method:"GET"})}async addPaymentMethodFlow(){return this.client.request("/billing/payment_method",{api:"labrinth",version:"internal",method:"POST"})}async editPaymentMethod(e,t){return this.client.request(`/billing/payment_method/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async removePaymentMethod(e){return this.client.request(`/billing/payment_method/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}async getPayments(e){let t=e?`?user_id=${e}`:"";return this.client.request(`/billing/payments${t}`,{api:"labrinth",version:"internal",method:"GET"})}async initiatePayment(e){return this.client.request("/billing/payment",{api:"labrinth",version:"internal",method:"POST",body:e})}async refundCharge(e,t){return this.client.request(`/billing/charge/${e}/refund`,{api:"labrinth",version:"internal",method:"POST",body:t})}async credit(e){return this.client.request("/billing/credit",{api:"labrinth",version:"internal",method:"POST",body:e})}};var se=class extends o{getModuleID(){return"labrinth_collections"}async get(e){return this.client.request(`/collection/${e}`,{api:"labrinth",version:3,method:"GET"})}async getMultiple(e){return this.client.request("/collections",{api:"labrinth",version:3,method:"GET",params:{ids:JSON.stringify(e)}})}async edit(e,t){return this.client.request(`/collection/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async delete(e){return this.client.request(`/collection/${e}`,{api:"labrinth",version:3,method:"DELETE"})}async editIcon(e,t,r){return this.client.request(`/collection/${e}/icon?ext=${r}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async deleteIcon(e){return this.client.request(`/collection/${e}/icon`,{api:"labrinth",version:3,method:"DELETE"})}};var ie=class extends o{getModuleID(){return"labrinth_content_v3"}async resolve(e){return this.client.request("/content/resolve",{api:"labrinth",version:3,method:"POST",body:e})}};var oe=class extends o{getModuleID(){return"labrinth_external_projects_internal"}async search(e){return this.client.request("/moderation/external-license/search",{api:"labrinth",version:"internal",method:"POST",body:e})}async getBySha1(e){return this.client.request(`/moderation/external-license/by-sha1/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async update(e,t){return this.client.request(`/moderation/external-license/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async addFile(e){return this.client.request("/moderation/external-license/file",{api:"labrinth",version:"internal",method:"POST",body:e})}};var ae=class extends o{getModuleID(){return"labrinth_friends_v3"}async list(){return this.client.request("/friends",{api:"labrinth",version:3,method:"GET"})}async add(e){return this.client.request(`/friend/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"POST"})}async remove(e){return this.client.request(`/friend/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"DELETE"})}};var ce=class extends o{getModuleID(){return"labrinth_globals_internal"}async get(){return this.client.request("/globals",{api:"labrinth",version:"internal",method:"GET",skipAuth:!0})}};function Tt(s,e){let t={ext:s,context:e.context};switch(e.context){case"project":t.project_id=e.project_id;break;case"version":t.version_id=e.version_id;break;case"thread_message":t.thread_message_id=e.thread_message_id;break;case"report":e.report_id&&(t.report_id=e.report_id);break}return t}var le=class extends o{getModuleID(){return"labrinth_images_v3"}uploadImage(e,t,r){return this.client.upload("/image",{api:"labrinth",version:3,file:e,params:Tt(t,r)})}};var ue=class extends o{getModuleID(){return"labrinth_limits_v3"}async getProjectLimits(){return this.client.request("/limits/projects",{api:"labrinth",version:3,method:"GET"})}async getOrganizationLimits(){return this.client.request("/limits/organizations",{api:"labrinth",version:3,method:"GET"})}async getCollectionLimits(){return this.client.request("/limits/collections",{api:"labrinth",version:3,method:"GET"})}};var pe=class extends o{getModuleID(){return"labrinth_moderation_internal"}async getProjects(e={}){return this.client.request("/moderation/projects",{api:"labrinth",version:"internal",method:"GET",params:e})}async getProjectIds(e={}){return this.client.request("/moderation/projects/ids",{api:"labrinth",version:"internal",method:"GET",params:e})}async acquireLock(e){return this.client.request(`/moderation/lock/${e}`,{api:"labrinth",version:"internal",method:"POST"})}async overrideLock(e){return this.client.request(`/moderation/lock/${e}/override`,{api:"labrinth",version:"internal",method:"POST"})}async releaseLock(e){return this.client.request(`/moderation/lock/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}async checkLock(e){return this.client.request(`/moderation/lock/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async setProjectJudgements(e){return this.client.request("/moderation/project",{api:"labrinth",version:"internal",method:"POST",body:e})}};var de=class extends o{getModuleID(){return"labrinth_notifications_v2"}async getUserNotifications(e){return this.client.request(`/user/${e}/notifications`,{api:"labrinth",version:2,method:"GET"})}async getMultiple(e){return this.client.request(`/notifications?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:2,method:"GET"})}async markAsRead(e){return this.client.request(`/notification/${e}`,{api:"labrinth",version:2,method:"PATCH"})}async markMultipleAsRead(e){return this.client.request("/notifications",{api:"labrinth",version:2,method:"PATCH",params:{ids:JSON.stringify([...new Set(e)])}})}async delete(e){return this.client.request(`/notification/${e}`,{api:"labrinth",version:2,method:"DELETE"})}async deleteMultiple(e){return this.client.request("/notifications",{api:"labrinth",version:2,method:"DELETE",params:{ids:JSON.stringify([...new Set(e)])}})}};var he=class extends o{getModuleID(){return"labrinth_oauth_internal"}async getUserApps(e){return this.client.request(`/user/${e}/oauth_apps`,{api:"labrinth",version:3,method:"GET"})}async getApp(e){return this.client.request(`/oauth/app/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async getApps(e){return e.length===0?[]:(await Promise.all(e.map(r=>this.getApp(r).catch(()=>null)))).filter(r=>r!==null)}async createApp(e){return this.client.request("/oauth/app",{api:"labrinth",version:"internal",method:"POST",body:e})}async editApp(e,t){return this.client.request(`/oauth/app/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}async deleteApp(e){return this.client.request(`/oauth/app/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}async uploadAppIcon(e,t,r){return this.client.request(`/oauth/app/${e}/icon`,{api:"labrinth",version:"internal",method:"PATCH",params:{ext:r},body:t})}async getAuthorizations(){return this.client.request("/oauth/authorizations",{api:"labrinth",version:"internal",method:"GET"})}async revokeAuthorization(e){return this.client.request("/oauth/authorizations",{api:"labrinth",version:"internal",method:"DELETE",params:{client_id:e}})}async authorize(e){return this.client.request("/oauth/authorize",{api:"labrinth",version:"internal",method:"GET",params:e})}async accept(e){return this.client.request("/oauth/accept",{api:"labrinth",version:"internal",method:"POST",body:e})}async reject(e){return this.client.request("/oauth/reject",{api:"labrinth",version:"internal",method:"POST",body:e})}};var me=class extends o{getModuleID(){return"labrinth_organizations_v3"}async get(e){return this.client.request(`/organization/${e}`,{api:"labrinth",version:3,method:"GET"})}async getProjects(e){return this.client.request(`/organization/${e}/projects`,{api:"labrinth",version:3,method:"GET"})}async getMultiple(e){return this.client.request(`/organizations?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:3,method:"GET"})}async addProject(e,t){return this.client.request(`/organization/${e}/projects`,{api:"labrinth",version:3,method:"POST",body:t})}async removeProject(e,t,r){return this.client.request(`/organization/${e}/projects/${t}`,{api:"labrinth",version:3,method:"DELETE",body:r})}};var be=class extends o{getModuleID(){return"labrinth_pats_v2"}async list(){return this.client.request("/pat",{api:"labrinth",version:2,method:"GET"})}async create(e){return this.client.request("/pat",{api:"labrinth",version:2,method:"POST",body:e})}async modify(e,t){return this.client.request(`/pat/${e}`,{api:"labrinth",version:2,method:"PATCH",body:t})}async delete(e){return this.client.request(`/pat/${e}`,{api:"labrinth",version:2,method:"DELETE"})}};var ge=class extends o{getModuleID(){return"labrinth_payout_v3"}async getBalance(){let e=await this.client.request("/payout/balance",{api:"labrinth",version:3,method:"GET"});return{...e,available:Number(e.available),withdrawn_lifetime:Number(e.withdrawn_lifetime),withdrawn_ytd:Number(e.withdrawn_ytd),pending:Number(e.pending),dates:Object.fromEntries(Object.entries(e.dates).map(([t,r])=>[t,Number(r)]))}}async getHistory(){return(await this.client.request("/payout/history",{api:"labrinth",version:3,method:"GET"})).map(t=>t.type==="withdrawal"?{...t,amount:Number(t.amount),fee:t.fee===null?null:Number(t.fee)}:{...t,amount:Number(t.amount)})}async getMethods(e){return this.client.request("/payout/methods",{api:"labrinth",version:3,method:"GET",params:e?{country:e}:void 0})}async cancel(e){return this.client.request(`/payout/${e}`,{api:"labrinth",version:3,method:"DELETE"})}};var ve=class extends o{getModuleID(){return"labrinth_payouts_v3"}async getPlatformRevenue(e){return this.client.request("/payout/platform_revenue",{api:"labrinth",version:3,method:"GET",params:e})}};var ye=class extends o{getModuleID(){return"labrinth_projects_v2"}async get(e){return this.client.request(`/project/${e}`,{api:"labrinth",version:2,method:"GET"})}async check(e){let t=encodeURIComponent(e);return this.client.request(`/project/${t}/check`,{api:"labrinth",version:2,method:"GET"})}async getMultiple(e){return this.client.request("/projects",{api:"labrinth",version:2,method:"GET",params:{ids:JSON.stringify(e)}})}async search(e){return this.client.request("/search",{api:"labrinth",version:2,method:"GET",params:{...e,facets:e.facets?JSON.stringify(e.facets):void 0,new_filters:e.new_filters??void 0}})}async edit(e,t){return this.client.request(`/project/${e}`,{api:"labrinth",version:2,method:"PATCH",body:t})}async delete(e){return this.client.request(`/project/${e}`,{api:"labrinth",version:2,method:"DELETE"})}async getDependencies(e){return this.client.request(`/project/${e}/dependencies`,{api:"labrinth",version:2,method:"GET"})}async createGalleryImage(e,t,r){let n={ext:r.ext,featured:String(r.featured)};return r.title&&(n.title=r.title),r.description&&(n.description=r.description),r.ordering!==void 0&&(n.ordering=String(r.ordering)),this.client.request(`/project/${e}/gallery`,{api:"labrinth",version:2,method:"POST",params:n,body:t})}async editGalleryImage(e,t,r){let n={url:t,featured:String(r.featured)};return r.title&&(n.title=r.title),r.description&&(n.description=r.description),r.ordering!==void 0&&(n.ordering=String(r.ordering)),this.client.request(`/project/${e}/gallery`,{api:"labrinth",version:2,method:"PATCH",params:n})}async deleteGalleryImage(e,t){return this.client.request(`/project/${e}/gallery`,{api:"labrinth",version:2,method:"DELETE",params:{url:t}})}async getRandom(e){return this.client.request("/projects_random",{api:"labrinth",version:2,method:"GET",params:{count:String(e)}})}async bulkEdit(e,t){return this.client.request("/projects",{api:"labrinth",version:2,method:"PATCH",params:{ids:JSON.stringify(e)},body:t})}};function Ke(s){if(typeof s!="object"||s===null)return!1;let e=s;return typeof e.error=="string"&&typeof e.description=="string"}var h=class s extends Error{constructor(e,t){super(e),this.name="ModrinthApiError",this.statusCode=t?.statusCode,this.originalError=t?.originalError,this.responseData=t?.responseData,this.context=t?.context,Error.captureStackTrace&&Error.captureStackTrace(this,s)}static fromUnknown(e,t){return e instanceof s?e:e instanceof Error?new s(e.message,{originalError:e,context:t}):new s(String(e),{context:t})}},T=class s extends h{constructor(e,t){let r=e;t?.v1Error&&(r=`[${t.v1Error.error}] ${t.v1Error.description}`,t.v1Error.context&&(r=`${t.v1Error.context}: ${r}`)),super(r,t),this.name="ModrinthServerError",this.v1Error=t?.v1Error,Error.captureStackTrace&&Error.captureStackTrace(this,s)}static fromResponse(e,t,r){let n=Ke(t)?t:void 0,i=`HTTP ${e}`;return n?i=n.description:typeof t=="string"&&(i=t),new s(i,{statusCode:e,responseData:t,context:r,v1Error:n})}static fromUnknown(e,t){return e instanceof s?e:e instanceof h?new s(e.message,{statusCode:e.statusCode,originalError:e.originalError,responseData:e.responseData,context:t??e.context}):e instanceof Error?new s(e.message,{originalError:e,context:t}):new s(String(e),{context:t})}};var fe=class extends o{getModuleID(){return"labrinth_projects_v3"}async get(e){return this.client.request(`/project/${e}`,{api:"labrinth",version:3,method:"GET"})}async getDependencies(e){return this.client.request(`/project/${e}/dependencies`,{api:"labrinth",version:3,method:"GET"})}async getMultiple(e){return this.client.request("/projects",{api:"labrinth",version:3,method:"GET",params:{ids:JSON.stringify(e)}})}async search(e,t){return this.client.request("/search",{api:"labrinth",version:3,method:"GET",headers:t?.headers,params:{...e,facets:e.facets?JSON.stringify(e.facets):void 0}})}async edit(e,t){return this.client.request(`/project/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async getOrganization(e){try{return await this.client.request(`/project/${e}/organization`,{api:"labrinth",version:3,method:"GET"})}catch(t){if(t instanceof h&&t.statusCode===404)return null;throw t}}async getMembers(e){return this.client.request(`/project/${e}/members`,{api:"labrinth",version:3,method:"GET"})}async createServerProject(e){return this.client.request("/project",{api:"labrinth",version:3,method:"PUT",body:e})}async deleteProject(e){return this.client.request(`/project/${e}`,{api:"labrinth",version:3,method:"DELETE"})}async changeIcon(e,t,r){return this.client.request(`/project/${e}/icon`,{api:"labrinth",version:3,method:"PATCH",params:{ext:r},body:t})}async deleteIcon(e){return this.client.request(`/project/${e}/icon`,{api:"labrinth",version:3,method:"DELETE"})}};var Pe=class extends o{getModuleID(){return"labrinth_reports_v3"}async get(e){return this.client.request(`/report/${e}`,{api:"labrinth",version:3,method:"GET"})}async list(e){let t={};return e?.count!=null&&(t.count=String(e.count)),e?.offset!=null&&(t.offset=String(e.offset)),e?.all!=null&&(t.all=String(e.all)),this.client.request("/report",{api:"labrinth",version:3,method:"GET",params:Object.keys(t).length>0?t:void 0})}async getMultiple(e){return this.client.request(`/reports?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:3,method:"GET"})}async create(e){return this.client.request("/report",{api:"labrinth",version:3,method:"POST",body:e})}async edit(e,t){return this.client.request(`/report/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async delete(e){return this.client.request(`/report/${e}`,{api:"labrinth",version:3,method:"DELETE"})}};var Se=class extends o{getModuleID(){return"labrinth_server_ping_internal"}async pingMinecraftJava(e){return this.client.request("/server-ping/minecraft-java",{api:"labrinth",version:"internal",method:"POST",body:e})}};var Ae=class extends o{getModuleID(){return"labrinth_sessions_v2"}async list(){return this.client.request("/session/list",{api:"labrinth",version:2,method:"GET"})}async delete(e){return this.client.request(`/session/${e}`,{api:"labrinth",version:2,method:"DELETE"})}};var _e=class extends o{getModuleID(){return"labrinth_state"}async build(){let e=[],t=(d,Pt,St)=>(console.error("Error fetching state data:",d),e.push({endpoint:St,error:d}),Pt),[r,n,i,a,c,l,u,p,m,b,g,I,v]=await Promise.all([this.client.request("/tag/category",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/category")),this.client.request("/tag/loader",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/loader")),this.client.request("/tag/game_version",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/game_version")),this.client.request("/tag/donation_platform",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/donation_platform")),this.client.request("/tag/report_type",{api:"labrinth",version:2,method:"GET"}).catch(d=>t(d,[],"/v2/tag/report_type")),this.client.request("/projects_random",{api:"labrinth",version:2,method:"GET",params:{count:"60"}}).catch(d=>t(d,[],"/v2/projects_random")),this.client.request("/search",{api:"labrinth",version:2,method:"GET",params:{limit:"3",query:"leave",index:"relevance"}}).catch(d=>t(d,{},"/v2/search")),this.client.request("/search",{api:"labrinth",version:2,method:"GET",params:{limit:"3",query:"",index:"updated"}}).catch(d=>t(d,{},"/v2/search")),this.client.labrinth.billing_internal.getProducts().catch(d=>t(d,[],"/_internal/billing/products")),this.client.request("/mural/bank-details",{api:"labrinth",version:"internal",method:"GET"}).catch(d=>t(d,null,"/_internal/mural/bank-details")),this.client.iso3166.data.build().catch(d=>t(d,{countries:[],subdivisions:{}},"iso3166/data")),this.client.request("/payout/methods",{api:"labrinth",version:3,method:"GET"}).catch(d=>t(d,[],"/v3/payout/methods")),this.client.request("/globals",{api:"labrinth",version:"internal",method:"GET"}).catch(d=>t(d,null,"/_internal/globals"))]),R=Object.fromEntries(I.filter(d=>d.type==="tremendous").map(d=>[d.id,{name:d.name,image_url:d.image_logo_url}]));return{categories:r,loaders:n,gameVersions:i,donationPlatforms:a,reportTypes:c,homePageProjects:l,homePageSearch:u,homePageNotifs:p,products:m,muralBankDetails:b?.bankDetails,tremendousIdMap:R,countries:g.countries,subdivisions:g.subdivisions,taxComplianceThresholds:v?.tax_compliance_thresholds,errors:e}}};var Ee=class extends o{getModuleID(){return"labrinth_tech_review_internal"}async searchProjects(e){return this.client.request("/moderation/tech-review/search",{api:"labrinth",version:"internal",method:"POST",body:e})}async getReport(e){return this.client.request(`/moderation/tech-review/report/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async getIssue(e){return this.client.request(`/moderation/tech-review/issue/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async updateIssueDetail(e,t){return this.updateIssueDetails([{detail_id:e,verdict:t.verdict}])}async updateIssueDetails(e){return this.client.request("/moderation/tech-review/issue-detail",{api:"labrinth",version:"internal",method:"PATCH",body:e})}async updateGlobalIssueDetails(e){return this.client.request("/moderation/tech-review/global-issue-detail",{api:"labrinth",version:"internal",method:"POST",body:e})}async searchGlobalIssueDetails(e){return this.client.request("/moderation/tech-review/global-issue-detail/search",{api:"labrinth",version:"internal",method:"POST",body:e})}async getGlobalIssueDetail(e){return this.client.request("/moderation/tech-review/global-issue-detail/local-traces",{api:"labrinth",version:"internal",method:"POST",body:e})}async submitProject(e,t){return this.client.request(`/moderation/tech-review/submit/${e}`,{api:"labrinth",version:"internal",method:"POST",body:t})}async getProjectReport(e){return this.client.request(`/moderation/tech-review/project/${e}`,{api:"labrinth",version:"internal",method:"GET"})}};var Re=class extends o{getModuleID(){return"labrinth_threads_v3"}async getThread(e){return this.client.request(`/thread/${e}`,{api:"labrinth",version:3,method:"GET"})}async getMultiple(e){return this.client.request(`/threads?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:3,method:"GET"})}async sendMessage(e,t){return this.client.request(`/thread/${e}`,{api:"labrinth",version:3,method:"POST",body:t})}async deleteMessage(e){return this.client.request(`/message/${e}`,{api:"labrinth",version:3,method:"DELETE"})}};var Te=class extends o{getModuleID(){return"labrinth_users_v2"}async get(e){return this.client.request(`/user/${e}`,{api:"labrinth",version:2,method:"GET"})}async getMultiple(e){return this.client.request(`/users?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:2,method:"GET"})}async getProjects(e){return this.client.request(`/user/${e}/projects`,{api:"labrinth",version:2,method:"GET"})}async getOrganizations(e){return this.client.request(`/user/${e}/organizations`,{api:"labrinth",version:3,method:"GET"})}async getCollections(e){return this.client.request(`/user/${e}/collections`,{api:"labrinth",version:3,method:"GET"})}async getNotifications(e){return this.client.request(`/user/${e}/notifications`,{api:"labrinth",version:2,method:"GET"})}async getFollowedProjects(e){return this.client.request(`/user/${e}/follows`,{api:"labrinth",version:2,method:"GET"})}async patch(e,t){return this.client.request(`/user/${e}`,{api:"labrinth",version:2,method:"PATCH",body:t})}async changeIcon(e,t,r){return this.client.request(`/user/${e}/icon`,{api:"labrinth",version:2,method:"PATCH",params:{ext:r},body:t})}async deleteIcon(e){return this.client.request(`/user/${e}/icon`,{api:"labrinth",version:2,method:"DELETE"})}};var xe=class extends o{getModuleID(){return"labrinth_users_v3"}async getAuthenticated(){return this.client.request("/user",{api:"labrinth",version:3,method:"GET"})}async get(e){return this.client.request(`/user/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"GET"})}async search(e){return this.client.request(`/users/search?query=${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"GET"})}async getAllProjects(e){return this.client.request(`/user/${encodeURIComponent(e)}/all-projects`,{api:"labrinth",version:3,method:"GET"})}};var ke=class extends o{getModuleID(){return"labrinth_versions_v2"}async getProjectVersions(e,t){let r={};return t?.game_versions?.length&&(r.game_versions=JSON.stringify(t.game_versions)),t?.loaders?.length&&(r.loaders=JSON.stringify(t.loaders)),t?.include_changelog===!1&&(r.include_changelog="false"),t?.limit!=null&&(r.limit=String(t.limit)),t?.offset!=null&&(r.offset=String(t.offset)),this.client.request(`/project/${e}/version`,{api:"labrinth",version:2,method:"GET",params:Object.keys(r).length>0?r:void 0})}async getVersion(e){return this.client.request(`/version/${e}`,{api:"labrinth",version:2,method:"GET"})}async getVersionFromFileHash(e,t){return this.client.request(`/version_file/${e}`,{api:"labrinth",version:2,method:"GET",params:{algorithm:t}})}async getVersions(e){return this.client.request("/versions",{api:"labrinth",version:2,method:"GET",params:{ids:JSON.stringify(e)}})}async getVersionFromIdOrNumber(e,t){return this.client.request(`/project/${e}/version/${t}`,{api:"labrinth",version:2,method:"GET"})}async deleteVersion(e){return this.client.request(`/version/${e}`,{api:"labrinth",version:2,method:"DELETE"})}};var dt=1800*1e3,we=class extends o{getModuleID(){return"labrinth_versions_v3"}async getProjectVersions(e,t){let r={};return t?.game_versions?.length&&(r.game_versions=JSON.stringify(t.game_versions)),t?.loaders?.length&&(r.loaders=JSON.stringify(t.loaders)),t?.include_changelog===!1&&(r.include_changelog="false"),t?.limit!=null&&(r.limit=String(t.limit)),t?.offset!=null&&(r.offset=String(t.offset)),this.client.request(`/project/${e}/version`,{api:"labrinth",version:t?.apiVersion??2,method:"GET",params:Object.keys(r).length>0?r:void 0})}async getVersion(e){return this.client.request(`/version/${e}`,{api:"labrinth",version:3,method:"GET"})}async getVersions(e){return this.client.request("/versions",{api:"labrinth",version:3,method:"GET",params:{ids:JSON.stringify(e)}})}async getVersionFromIdOrNumber(e,t){return this.client.request(`/project/${e}/version/${t}`,{api:"labrinth",version:3,method:"GET"})}createVersion(e,t,r=null){let n=new FormData,i=t.map(p=>p.file),a=t.map(p=>p.fileType||null),c=i.map((p,m)=>`${p.name}-${m===0?"primary":m}`),l=c.reduce((p,m,b)=>(p[m]=a[b],p),{}),u={project_id:e.project_id,version_number:e.version_number,name:e.name||e.version_number,changelog:e.changelog,dependencies:e.dependencies||[],game_versions:e.game_versions,version_type:e.version_type,featured:!!e.featured,file_parts:c,file_types:l,primary_file:c[0],environment:e.environment,loaders:e.loaders};return r==="modpack"&&(u.mrpack_loaders=e.loaders,u.loaders=["mrpack"]),n.append("data",JSON.stringify(u)),i.forEach((p,m)=>{n.append(c[m],p,p.name)}),this.client.upload("/version",{api:"labrinth",version:3,formData:n,timeout:dt})}async modifyVersion(e,t){return this.client.request(`/version/${e}`,{api:"labrinth",version:3,method:"PATCH",body:t})}async deleteVersion(e){return this.client.request(`/version/${e}`,{api:"labrinth",version:2,method:"DELETE"})}addFilesToVersion(e,t){let r=new FormData,n=t.map(l=>l.file),i=t.map(l=>l.fileType||null),a=n.map((l,u)=>`${l.name}-${u}`),c=a.reduce((l,u,p)=>(l[u]=i[p],l),{});return r.append("data",JSON.stringify({file_types:c})),n.forEach((l,u)=>{r.append(a[u],l,l.name)}),this.client.upload(`/version/${e}/file`,{api:"labrinth",version:2,formData:r,timeout:dt})}};var Le=class extends o{getModuleID(){return"labrinth_affiliate_internal"}async getAll(){return this.client.request("/affiliate",{api:"labrinth",version:"internal",method:"GET"})}async create(e){return this.client.request("/affiliate",{api:"labrinth",version:"internal",method:"PUT",body:e})}async get(e){return this.client.request(`/affiliate/${e}`,{api:"labrinth",version:"internal",method:"GET"})}async delete(e){return this.client.request(`/affiliate/${e}`,{api:"labrinth",version:"internal",method:"DELETE"})}async patch(e,t){return this.client.request(`/affiliate/${e}`,{api:"labrinth",version:"internal",method:"PATCH",body:t})}};var qe=class extends o{getModuleID(){return"labrinth_blocked_users_internal"}async getStatus(e,t){return this.client.request(`/block/${encodeURIComponent(e)}/${encodeURIComponent(t)}`,{api:"labrinth",version:"internal",method:"GET"})}};var Ce=class extends o{getModuleID(){return"labrinth_blocked_users_v3"}async list(){return this.client.request("/blocks",{api:"labrinth",version:3,method:"GET"})}async block(e){return this.client.request(`/block/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"POST"})}async unblock(e){return this.client.request(`/block/${encodeURIComponent(e)}`,{api:"labrinth",version:3,method:"DELETE"})}};var Ie=class extends o{getModuleID(){return"labrinth_campaign_internal"}async getPride26(){return this.client.request("/campaign/pride-26",{api:"labrinth",version:"internal",method:"GET",skipAuth:!0})}};var Me=class extends o{getModuleID(){return"labrinth_tags_v2"}async getLicenseText(e){return this.client.request(`/tag/license/${e}`,{api:"labrinth",version:2,method:"GET"})}};var Oe=class extends o{getModuleID(){return"labrinth_teams_v2"}async addMember(e,t){return this.client.request(`/team/${e}/members`,{api:"labrinth",version:2,method:"POST",body:t})}async editMember(e,t,r){return this.client.request(`/team/${e}/members/${t}`,{api:"labrinth",version:2,method:"PATCH",body:r})}async removeMember(e,t){return this.client.request(`/team/${e}/members/${t}`,{api:"labrinth",version:2,method:"DELETE"})}async transferOwnership(e,t){return this.client.request(`/team/${e}/owner`,{api:"labrinth",version:2,method:"PATCH",body:t})}};var $e=class extends o{getModuleID(){return"labrinth_teams_v3"}async getMultiple(e){return this.client.request(`/teams?ids=${encodeURIComponent(JSON.stringify(e))}`,{api:"labrinth",version:3,method:"GET"})}};var xt="https://launcher-meta.modrinth.com",Ue=class extends o{getModuleID(){return"launchermeta_manifest_v0"}async getManifest(e,t=0){return this.client.request("/manifest.json",{api:xt,version:`${e}/v${t}`,method:"GET",skipAuth:!0,headers:{"Content-Type":""}})}};var De=class extends o{getModuleID(){return"mclogs_insights_v1"}async analyse(e){return this.client.request("/analyse",{api:"https://api.mclo.gs",version:"1",method:"POST",body:new URLSearchParams({content:e}),headers:{"Content-Type":"application/x-www-form-urlencoded"},skipAuth:!0})}};var Ne=class extends o{getModuleID(){return"mclogs_logs_v1"}async create(e){return this.client.request("/log",{api:"https://api.mclo.gs",version:"1",method:"POST",body:new URLSearchParams({content:e}),headers:{"Content-Type":"application/x-www-form-urlencoded"},skipAuth:!0})}};var ht="https://fill.papermc.io",Be=class extends o{getModuleID(){return"paper_versions_v3"}async getProject(){return this.client.request("/projects/paper",{api:ht,version:"v3",method:"GET",skipAuth:!0})}async getBuilds(e){return{builds:await this.client.request(`/projects/paper/versions/${e}/builds`,{api:ht,version:"v3",method:"GET",skipAuth:!0})}}};var mt="https://api.purpurmc.org",je=class extends o{getModuleID(){return"purpur_versions_v2"}async getProject(){return this.client.request("/purpur",{api:mt,version:"v2",method:"GET",skipAuth:!0})}async getBuilds(e){return this.client.request(`/purpur/${e}`,{api:mt,version:"v2",method:"GET",skipAuth:!0})}};var Fe=class extends o{getModuleID(){return"sharedinstances_instances_v1"}async get(e){return this.client.request(`/instances/${encodeURIComponent(e)}`,{api:"sharedinstances",version:1,method:"GET"})}async getForUser(e){return this.client.request("/instances",{api:"sharedinstances",version:1,method:"GET",params:{user:e}})}async getUsers(e){return this.client.request(`/instances/${encodeURIComponent(e)}/users`,{api:"sharedinstances",version:1,method:"GET"})}async getLatestVersion(e){return this.client.request(`/instances/${encodeURIComponent(e)}/versions`,{api:"sharedinstances",version:1,method:"GET"})}async getVersion(e,t){return this.client.request(`/instances/${encodeURIComponent(e)}/versions/${t}`,{api:"sharedinstances",version:1,method:"GET"})}};var Ge=class extends o{getModuleID(){return"sharedinstances_invites_v1"}async get(e){return this.client.request(`/invites/${encodeURIComponent(e)}`,{api:"sharedinstances",version:1,method:"GET",skipAuth:!0,retry:!1})}};var We=class extends o{getModuleID(){return"sharedinstances_moderation_v1"}async blacklistUsers(e){return this.client.request("/moderation/blacklist",{api:"sharedinstances",version:1,method:"POST",body:e})}async unblacklistUsers(e){return this.client.request("/moderation/blacklist",{api:"sharedinstances",version:1,method:"DELETE",body:e})}async deleteFile(e,t,r){return this.client.request(`/moderation/instances/${encodeURIComponent(e)}/versions/${t}/files/${encodeURIComponent(r)}`,{api:"sharedinstances",version:1,method:"DELETE"})}};var Ve=class extends o{getModuleID(){return"sharedinstances_users_v1"}async getBlacklistStatus(e){return this.client.request(`/blacklist/${encodeURIComponent(e)}`,{api:"sharedinstances",version:1,method:"GET"})}};var kt={archon_actions_v1:M,archon_backups_queue_v1:$,archon_backups_v1:O,archon_content_v1:U,archon_nodes_internal:D,archon_notices_v0:N,archon_options_v1:B,archon_properties_v1:j,archon_server_users_v1:F,archon_servers_v0:G,archon_servers_v1:W,archon_transfers_internal:V,iso3166_data:H,mclogs_insights_v1:De,mclogs_logs_v1:Ne,launchermeta_manifest_v0:Ue,kyros_content_v1:z,kyros_files_v0:J,kyros_logs_v1:Q,kyros_upload_sessions_v1:X,labrinth_affiliate_internal:Le,labrinth_analytics_internal:Y,labrinth_analytics_v3:Z,labrinth_auth_internal:te,labrinth_auth_v2:re,labrinth_attribution_internal:ee,labrinth_billing_internal:ne,labrinth_blocked_users_internal:qe,labrinth_blocked_users_v3:Ce,labrinth_campaign_internal:Ie,labrinth_collections:se,labrinth_content_v3:ie,labrinth_external_projects_internal:oe,labrinth_friends_v3:ae,labrinth_globals_internal:ce,labrinth_images_v3:le,labrinth_moderation_internal:pe,labrinth_notifications_v2:de,labrinth_oauth_internal:he,labrinth_organizations_v3:me,labrinth_pats_v2:be,labrinth_limits_v3:ue,labrinth_payout_v3:ge,labrinth_payouts_v3:ve,labrinth_projects_v2:ye,labrinth_projects_v3:fe,labrinth_reports_v3:Pe,labrinth_server_ping_internal:Se,labrinth_sessions_v2:Ae,labrinth_state:_e,labrinth_tags_v2:Me,labrinth_teams_v2:Oe,labrinth_teams_v3:$e,labrinth_tech_review_internal:Ee,labrinth_threads_v3:Re,labrinth_users_v2:Te,labrinth_users_v3:xe,labrinth_versions_v2:ke,labrinth_versions_v3:we,paper_versions_v3:Be,purpur_versions_v2:je,sharedinstances_invites_v1:Ge,sharedinstances_instances_v1:Fe,sharedinstances_moderation_v1:We,sharedinstances_users_v1:Ve};function wt(s){let e=s.split("_");if(e.length<2)throw new Error(`Invalid module ID "${s}". Expected format: <api>_<module> (e.g., "labrinth_projects_v2")`);let t=e[0],r=e.slice(1).join("_");return[t,r]}function bt(){let s={};for(let[e,t]of Object.entries(kt)){let[r,n]=wt(e);s[r]||(s[r]={}),s[r][n]=t}return s}var x=class{};var k=class extends x{constructor(t){super();this._moduleInstances=new Map;this._moduleNamespaces=new Map;this.config={timeout:1e4,labrinthBaseUrl:"https://api.modrinth.com",archonBaseUrl:"https://archon.modrinth.com",sharedInstancesBaseUrl:"https://shared-instances.modrinth.com",...t},this.features=t.features??[],this.initializeModules()}initializeModules(){let t=bt();for(let[r,n]of Object.entries(t)){let i={};for(let[a,c]of Object.entries(n)){let l=`${r}_${a}`;Object.defineProperty(i,a,{get:()=>{if(!this._moduleInstances.has(l)){let u=new c(this),p=u.getModuleID();if(p!==l)throw new Error(`Module ID mismatch: registry expects "${l}" but module declares "${p}"`);this._moduleInstances.set(l,u)}return this._moduleInstances.get(l)},enumerable:!0,configurable:!1})}Object.defineProperty(this,r,{value:i,writable:!1,enumerable:!0,configurable:!1}),this._moduleNamespaces.set(r,i)}}async request(t,r){let n;r.api==="labrinth"?n=this.resolveBaseUrl(this.config.labrinthBaseUrl):r.api==="archon"?n=this.resolveBaseUrl(this.config.archonBaseUrl):r.api==="sharedinstances"?n=this.resolveBaseUrl(this.config.sharedInstancesBaseUrl):n=r.api;let i=this.buildUrl(t,n,r.version),a=await this.buildDefaultHeaders(),c={method:"GET",timeout:this.config.timeout,...r,headers:{...a,...r.headers}};this.attachArchonSentryCaptureHeader(c);let l=c.headers;l&&"Content-Type"in l&&l["Content-Type"]===""&&delete l["Content-Type"];let u=this.buildContext(i,t,c);try{let p=await this.executeFeatureChain(u);return await this.config.hooks?.onResponse?.(p,u),p}catch(p){let m=this.normalizeError(p,u);throw await this.config.hooks?.onError?.(m,u),m}}async stream(t,r){let n;r.api==="labrinth"?n=this.resolveBaseUrl(this.config.labrinthBaseUrl):r.api==="archon"?n=this.resolveBaseUrl(this.config.archonBaseUrl):r.api==="sharedinstances"?n=this.resolveBaseUrl(this.config.sharedInstancesBaseUrl):n=r.api;let i=this.buildUrl(t,n,r.version),a=await this.buildDefaultHeaders(),c={method:"GET",retry:!1,circuitBreaker:!1,...r,headers:{...a,Accept:"text/event-stream",...r.headers}};this.attachArchonSentryCaptureHeader(c);let l=this.buildContext(i,t,c);try{return await this.executeFeatureChain(l,()=>this.executeStreamRequest(l.url,l.options))}catch(u){let p=this.normalizeError(u,l);throw await this.config.hooks?.onError?.(p,l),p}}async executeFeatureChain(t,r=()=>this.executeRequest(t.url,t.options)){let n=this.features.filter(c=>c.shouldApply(t)),i=n.length,a=async()=>(i--,i>=0?n[i].execute(a,t):(await this.config.hooks?.onRequest?.(t),r()));return a()}async executeUploadFeatureChain(t,r,n){let i=this.features.filter(l=>l.shouldApply(t)),a=i.length,c=async()=>(a--,a>=0?i[a].execute(c,t):(await this.config.hooks?.onRequest?.(t),this.executeXHRUpload(t,r,n)));return c()}buildUrl(t,r,n){let i=r.replace(/\/$/,""),a="";n==="internal"?a="/_internal":typeof n=="number"?a=`/v${n}`:typeof n=="string"&&(a=`/${n}`);let c=t.startsWith("/")?t:`/${t}`;return`${i}${a}${c}`}resolveBaseUrl(t){return typeof t=="function"?t():t}buildContext(t,r,n){return{url:t,path:r,options:n,attempt:1,startTime:Date.now()}}buildUploadContext(t,r,n){let i,a;if("formData"in n&&n.formData)i={isUpload:!0,formData:n.formData,onProgress:n.onProgress},a=n.formData;else if("file"in n&&n.file)i={isUpload:!0,file:n.file,onProgress:n.onProgress},a=n.file;else throw new Error("Upload options must include either file or formData");return{url:t,path:r,options:{...n,method:"POST",body:a},attempt:1,startTime:Date.now(),metadata:i}}async buildDefaultHeaders(){let t={"Content-Type":"application/json",...this.config.headers},r=await this.resolveUserAgent();return r&&(t["User-Agent"]=r),t}async resolveUserAgent(){let t=this.config.userAgent;return typeof t=="function"?await t():t}attachArchonSentryCaptureHeader(t){t.api!=="archon"||!t.headers||!this.shouldCaptureArchonRequests()||(t.headers["modrinth-sentry-capture"]="1")}shouldCaptureArchonRequests(){let t=this.config.archonSentryCapture;return typeof t=="function"?t():t===!0}normalizeError(t,r){return t instanceof h?t:h.fromUnknown(t,r?.path)}createNormalizedError(t,r,n){return r&&n?T.fromResponse(r,n):new h(t.message,{statusCode:r,originalError:t,responseData:n})}addFeature(t){return this.features.push(t),this}removeFeature(t){let r=this.features.indexOf(t);return r!==-1&&this.features.splice(r,1),this}getFeatures(){return[...this.features]}};var y=class{constructor(e){this.config={enabled:!0,...e}}shouldApply(e){return this.config.enabled!==!1}get name(){return this.config.name??this.constructor.name}get enabled(){return this.config.enabled!==!1}};var w=class{constructor(e){this.client=e;this.connections=new Map}on(e,t,r){let n=this.getEventKey(e,t),i=r;return this.emitter.on(n,i),()=>{this.emitter.off(n,i)}}onAny(e,t){let r=this.getAnyEventKey(e),n=t;return this.emitter.on(r,n),()=>{this.emitter.off(r,n)}}onStatus(e,t){let r=this.getStatusEventKey(e),n=t;return this.emitter.on(r,n),()=>{this.emitter.off(r,n)}}getStatus(e){let t=this.connections.get(e);return t?this.connectionToStatus(t):null}emitSyncEvent(e,t){this.emitter.emit(this.getEventKey(e,t.type),t),this.emitter.emit(this.getAnyEventKey(e),t)}updateStatus(e,t,r){e.status=t,e.error=r,this.emitter.emit(this.getStatusEventKey(e.serverId),this.connectionToStatus(e))}clearListeners(e){this.emitter.all.forEach((t,r)=>{r.toString().startsWith(`${e}:`)&&this.emitter.all.delete(r)})}connectionToStatus(e){return{state:e.status,connected:e.status==="connected",reconnecting:e.status==="reconnecting",reconnectAttempts:e.reconnectAttempts,retryDelay:e.retryDelay,lastEventId:e.lastEventId,error:e.error}}getEventKey(e,t){return`${e}:${t}`}getAnyEventKey(e){return`${e}:*`}getStatusEventKey(e){return`${e}:__status`}};var L=class{constructor(e){this.client=e;this.connections=new Map;this.MAX_RECONNECT_ATTEMPTS=10;this.RECONNECT_BASE_DELAY=1e3;this.RECONNECT_MAX_DELAY=3e4}async safeConnect(e,t){let r=this.getStatus(e);if(r?.connected&&!t?.force||r&&!r.connected&&!t?.force)return;t?.force&&r&&this.disconnect(e);let n=await this.client.archon.servers_v0.getWebSocketAuth(e);await this.connect(e,n)}on(e,t,r){let n=`${e}:${t}`;return this.emitter.on(n,r),()=>{this.emitter.off(n,r)}}getStatus(e){let t=this.connections.get(e);return t?{connected:t.socket.readyState===WebSocket.OPEN,reconnecting:t.isReconnecting,reconnectAttempts:t.reconnectAttempts}:null}getReconnectDelay(e){return Math.min(this.RECONNECT_BASE_DELAY*Math.pow(2,e),this.RECONNECT_MAX_DELAY)+Math.random()*1e3}};var Je=class extends y{async execute(e,t){let r=await this.getToken();if(r){let n=this.config.headerName??"Authorization",i=this.config.tokenPrefix??"Bearer",a=i?`${i} ${r}`:r;t.options.headers={...t.options.headers,[n]:a}}return e()}shouldApply(e){if(e.options.skipAuth)return!1;let t=this.config.headerName??"Authorization";return e.options.headers?.[t]?!1:super.shouldApply(e)}async getToken(){let{token:e}=this.config;return typeof e=="function"?await e():e}};var He=class{constructor(){this.state=new Map}get(e){return this.state.get(e)}set(e,t){this.state.set(e,t)}clear(e){this.state.delete(e)}},Qe=class extends y{constructor(e){super(e),this.config={enabled:!0,name:"circuit-breaker",maxFailures:3,resetTimeout:3e4,failureStatusCodes:[500,502,503,504],...e},this.storage=e?.storage??new He}async execute(e,t){let r=this.getCircuitKey(t);if(this.isCircuitOpen(r))throw new h("Circuit breaker open - too many recent failures",{statusCode:503,context:t.path});try{let n=await e();return this.recordSuccess(r),n}catch(n){throw this.isFailureError(n)&&this.recordFailure(r),n}}shouldApply(e){return e.options.circuitBreaker===!1?!1:super.shouldApply(e)}getCircuitKey(e){if(this.config.getCircuitKey)return this.config.getCircuitKey(e.url,e.options.method??"GET");let t=e.options.method??"GET",r=e.path.split("?")[0];return`${t}_${r}`}isCircuitOpen(e){let t=this.storage.get(e);return t?Date.now()-t.lastFailure>this.config.resetTimeout?(this.storage.clear?.(e),!1):t.failures>=this.config.maxFailures:!1}recordSuccess(e){this.storage.clear?.(e)}recordFailure(e){let t=Date.now(),r=this.storage.get(e);r?this.storage.set(e,{failures:r.failures+1,lastFailure:t}):this.storage.set(e,{failures:1,lastFailure:t})}isFailureError(e){return e instanceof h&&e.statusCode?this.config.failureStatusCodes.includes(e.statusCode):!1}getCircuitState(e){return this.storage.get(e)}resetCircuit(e){this.storage.clear?.(e)}};var Xe=class extends y{constructor(){super(...arguments);this.refreshPromise=null}shouldApply(t){return t.options.useNodeAuth===!0&&this.config.enabled!==!1}async refreshAuthWithLock(){return this.refreshPromise?this.refreshPromise:(this.refreshPromise=this.config.refreshAuth().finally(()=>{this.refreshPromise=null}),this.refreshPromise)}async execute(t,r){let i=0,a=this.config.getAuth();if((!a||this.isTokenExpired(a.token))&&(await this.refreshAuthWithLock(),a=this.config.getAuth()),!a)throw new Error("Failed to obtain node authentication");for(this.applyAuth(r,a);;)try{return await t()}catch(c){if(c instanceof h&&c.statusCode===401){if(i++,i>=3)throw new Error("Node authentication failed after 3 retries. Please re-authenticate.");if(await this.refreshAuthWithLock(),a=this.config.getAuth(),!a)throw new Error("Failed to refresh node authentication");this.applyAuth(r,a);continue}throw c}}applyAuth(t,r){let n=K(r.url);t.url=this.buildUrl(t.path,n,t.options.version),t.options.headers={...t.options.headers,Authorization:`Bearer ${r.token}`},t.options.skipAuth=!0}buildUrl(t,r,n){let i=r.replace(/\/$/,""),a="";n==="internal"?a="/_internal":typeof n=="number"?a=`/v${n}`:typeof n=="string"&&(a=`/${n}`);let c=t.startsWith("/")?t:`/${t}`;return`${i}${a}${c}`}isTokenExpired(t){try{let r=JSON.parse(atob(t.split(".")[1]));if(!r.exp)return!1;let n=r.exp*1e3;return Date.now()>=n-1e4}catch{return!1}}};var gt=1,Ye=class extends y{async execute(e,t){return t.options.headers={...t.options.headers,"X-Panel-Version":String(gt)},e()}shouldApply(e){return e.options.api==="labrinth"||e.options.api==="archon"}};var Ze=class extends y{constructor(e){super(e),this.config={enabled:!0,name:"retry",maxAttempts:3,backoffStrategy:"exponential",initialDelay:1e3,maxDelay:15e3,retryableStatusCodes:[408,429,500,502,503,504],retryOnNetworkError:!0,...e}}async execute(e,t){let r=null,n=this.getMaxAttempts(t);for(let i=1;i<=n;i++){t.attempt=i;try{return await e()}catch(a){if(r=a,!this.shouldRetryError(a,i,n)||i>=n)throw a;let l=this.calculateDelay(i);console.warn(`[${this.name}] Retrying request to ${t.path} (attempt ${i+1}/${n}) after ${l}ms`),await this.sleep(l)}}throw r??new Error("Max retry attempts reached")}shouldApply(e){return e.options.retry===!1?!1:super.shouldApply(e)}shouldRetryError(e,t,r){return this.config.shouldRetry?this.config.shouldRetry(e,t):this.config.retryOnNetworkError&&this.isNetworkError(e)?!0:e instanceof h&&e.statusCode?this.config.retryableStatusCodes.includes(e.statusCode):!1}isNetworkError(e){let t=[/network/i,/timeout/i,/ECONNREFUSED/i,/ENOTFOUND/i,/ETIMEDOUT/i,/ECONNRESET/i],r=e instanceof Error?e.message:String(e);return t.some(n=>n.test(r))}getMaxAttempts(e){return typeof e.options.retry=="number"?e.options.retry:this.config.maxAttempts}calculateDelay(e){let{backoffStrategy:t,initialDelay:r,maxDelay:n}=this.config,i;switch(t){case"exponential":i=r*Math.pow(2,e-1);break;case"linear":i=r*e;break;case"constant":i=r;break;default:i=r}return i+=Math.random()*1e3,Math.min(i,n)}sleep(e){return new Promise(t=>setTimeout(t,e))}};var et=class extends y{async execute(e,t){let r=t.options.method??"GET",n=t.options.api,i=t.options.version,a=`[${r}] [${n}_v${i}]`;console.debug(`${a} ${t.url} SENT`);try{let c=await e();try{let l=c?JSON.stringify(c).length:0;console.debug(`${a} ${t.url} RECEIVED ${l} bytes`)}catch{console.debug(`${a} ${t.url} RECEIVED`)}return c}catch(c){let l=Lt(c);throw console.debug(`${a} ${t.url} FAILED${l?` \u2014 ${l}`:""}`),c}}};function Lt(s){if(!s||typeof s!="object")return typeof s=="string"?s:"";let e=s,t=e.status??e.statusCode??e.response?.status,r=e.statusText??e.response?.statusText,n=e.responseData??e.data??e.response?._data,i=[];return t!==void 0&&i.push(r?`${t} ${r}`:String(t)),n!==void 0?i.push(`body: ${qt(n)}`):e.message&&i.push(e.message),i.join(" ")}function qt(s){if(typeof s=="string")return s;try{return JSON.stringify(s)}catch{return String(s)}}var vt;(e=>{let s;(r=>{let t;(i=>i.UserScope={NONE:"",SERVER_ADMIN:"SERVER_ADMIN",BASE_READ:"BASE_READ",POWER_ACTIONS:"POWER_ACTIONS",EXEC_COMMANDS:"EXEC_COMMANDS",FILES_WRITE:"FILES_WRITE",SETUP:"SETUP",BACKUPS:"BACKUPS",ADVANCED:"ADVANCED",RESET_SERVER:"RESET_SERVER",MANAGE_USERS:"MANAGE_USERS",SUPPORT_AGENT:"SUPPORT_AGENT",INFRA_MANAGER:"INFRA_MANAGER",INFRA_MANAGER_READ:"INFRA_MANAGER_READ",INFRA_SERVERS_XFER:"INFRA_SERVERS_XFER",INFRA_USERS:"INFRA_USERS"})(t=r.v1||(r.v1={}))})(s=e.ServerUsers||(e.ServerUsers={}))})(vt||(vt={}));import{$fetch as $t,FetchError as Ut}from"ofetch";function A(s,e){if(!e)return s;let t={};for(let[n,i]of Object.entries(e))i!=null&&(t[n]=String(i));let r=new URLSearchParams(t).toString();return r?`${s}${s.includes("?")?"&":"?"}${r}`:s}function _(s){if(s)return typeof s=="object"&&!(s instanceof FormData)&&!(s instanceof URLSearchParams)&&!(s instanceof Blob)&&!(s instanceof ArrayBuffer)&&!ArrayBuffer.isView(s)?JSON.stringify(s):s}async function E(s){let e=s.headers.get("content-type")?.toLowerCase()??"";try{if(e.includes("application/json")||e.includes("+json"))return await s.json();let t=await s.text();if(!t)return;try{return JSON.parse(t)}catch{return t}}catch{return}}import Ct from"mitt";var q=class{constructor(){this.buffer="";this.eventName="";this.data=""}feed(e){this.buffer+=e;let t=[];for(;;){let r=this.findLineEnd();if(!r)break;let{line:n,length:i}=r;this.buffer=this.buffer.slice(i),this.processLine(n,t)}return t}end(){let e=[];return this.buffer.length>0&&(this.processLine(this.buffer.endsWith("\r")?this.buffer.slice(0,-1):this.buffer,e),this.buffer=""),this.dispatch(e),e}findLineEnd(){let e=this.buffer.indexOf(`
3
3
  `),t=this.buffer.indexOf("\r");if(e===-1&&t===-1)return null;if(t!==-1&&(e===-1||t<e)){if(t===this.buffer.length-1)return null;let r=this.buffer[t+1]===`
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),i=r===-1?"":e.slice(r+1);switch(i.startsWith(" ")&&(i=i.slice(1)),n){case"event":this.eventName=i;break;case"data":this.data+=`${i}
5
5
  `;break;case"id":this.id=i;break;case"retry":{let a=Number(i);Number.isInteger(a)&&a>=0&&t.push({kind:"retry",retry:a});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
- `)?this.data.slice(0,-1):this.data}),this.eventName="",this.data="",this.id=void 0}};function et(s){let e;try{e=JSON.parse(s)}catch{return null}return!e||typeof e!="object"||typeof e.type!="string"?null:e}var Ct=1e3,vt=3e4,It=1e3,f=class extends w{constructor(){super(...arguments);this.emitter=qt()}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 i={serverId:t,intent:r.intent??"all",reconnectAttempts:0,retryDelay:Ct,stopped:!1,status:"idle"};this.connections.set(t,i),this.runConnection(i)}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 i=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 a=await this.consumeStream(t,i);if(t.controller=void 0,t.stopped)return;if(a==="protocol-reconnect"){t.reconnectAttempts=0;continue}await this.waitForReconnect(t)}catch(i){if(t.controller=void 0,t.stopped||this.isAbortError(i))return;t.reconnectAttempts++,this.updateStatus(t,"error",i),console.warn(`[Sync] Connection failed for server ${t.serverId}:`,i),await this.waitForReconnect(t)}}}async consumeStream(t,r){let n=r.getReader(),i=new TextDecoder,a=new q;try{for(;!t.stopped;){let{done:p,value:m}=await n.read();if(p)break;let b=i.decode(m,{stream:!0}),g=this.processParsedItems(t,a.feed(b));if(g==="protocol-reconnect")return await n.cancel(),t.controller?.abort(),g}let c=i.decode(),l=c?a.feed(c):[],u=this.processParsedItems(t,[...l,...a.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,vt);continue}this.updateLastEventId(t,n.id);let i=et(n.data);if(!i){console.warn("[Sync] Dropping malformed SSE payload:",{serverId:t.serverId,event:n.event,data:n.data});continue}if(this.emitSyncEvent(t.serverId,i),i.type==="protocol.reset"||i.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,vt)+Math.random()*It}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 Mt from"mitt";var yt=1e3,S=class extends L{constructor(){super(...arguments);this.emitter=Mt()}async connect(t,r){return this.connections.has(t)&&this.closeConnection(t),new Promise((n,i)=>{try{let a=new WebSocket(He(r.url)),c={serverId:t,socket:a,reconnectAttempts:0,reconnectTimer:void 0,isReconnecting:!1};this.connections.set(t,c),a.onopen=()=>{a.send(JSON.stringify({event:"auth",jwt:r.token})),c.reconnectAttempts=0,c.isReconnecting=!1,n()},a.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)}},a.onclose=l=>{console.debug(`[WebSocket] Closed for server ${t}:`,{code:l.code,reason:l.reason,wasClean:l.wasClean}),l.code!==yt&&this.scheduleReconnect(t,r)},a.onerror=l=>{let u=a.url,p=a.readyState;console.error(`[WebSocket] Error for server ${t}:`,{url:u,readyState:p,readyStateLabel:["CONNECTING","OPEN","CLOSING","CLOSED"][p],type:l.type}),i(new Error(`WebSocket connection failed for server ${t} (readyState: ${p})`))}}catch(a){i(a)}})}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(yt,"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 i=this.getReconnectDelay(n.reconnectAttempts);n.reconnectTimer=setTimeout(()=>{this.connect(t,r).catch(a=>{console.error(`[WebSocket] Reconnection failed for server ${t}:`,a)})},i)}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):t.api==="sharedinstances"?r=this.resolveBaseUrl(this.config.sharedInstancesBaseUrl):r=t.api;let n=this.buildUrl(e,r,t.version),i=[];t.onProgress&&i.push(t.onProgress);let a=new AbortController;t.signal&&t.signal.addEventListener("abort",()=>a.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 b=this.buildUploadContext(n,e,m);if(c=b,a.signal.aborted)throw new h("Upload cancelled");let g=await this.executeUploadFeatureChain(b,i,a);return await this.config.hooks?.onResponse?.(g,b),g})().catch(async u=>{let p=this.normalizeError(u,c);throw c&&await this.config.hooks?.onError?.(p,c),p}),onProgress:u=>(i.push(u),l),cancel:()=>a.abort()};return l}executeXHRUpload(e,t,r){return new Promise((n,i)=>{let a=new XMLHttpRequest,c=e.metadata;a.upload.addEventListener("progress",p=>{if(p.lengthComputable){let m={loaded:p.loaded,total:p.total,progress:p.loaded/p.total};t.forEach(b=>b(m))}}),a.addEventListener("load",()=>{if(a.status>=200&&a.status<300)try{n(a.response?JSON.parse(a.response):void 0)}catch{n(void 0)}else i(this.createUploadError(a))}),a.addEventListener("error",()=>i(new h("Upload failed"))),a.addEventListener("abort",()=>i(new h("Upload cancelled"))),a.addEventListener("timeout",()=>i(new h("Upload timed out"))),e.options.timeout!==void 0&&(a.timeout=e.options.timeout);let l=e.url;if(e.options.params){let p=new URLSearchParams(Object.entries(e.options.params).map(([m,b])=>[m,String(b)])).toString();l+=(l.includes("?")?"&":"?")+p}a.open("POST",l);for(let[p,m]of Object.entries(e.options.headers??{}))a.setRequestHeader(p,m);let u="formData"in c?c.formData:c.file;a.send(u),r.signal.addEventListener("abort",()=>a.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 tt=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new S(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 Ot(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(A(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 $t?this.createNormalizedError(e,e.response?.status,e.data):super.normalizeError(e)}};import{FetchError as Ut}from"ofetch";var rt=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)}},nt=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new S(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(A(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 Ut?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 st=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new S(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),i=A(e,t.params),a=await r(i,{method:t.method??"GET",headers:t.headers,body:n});if(!a.ok){let u;try{u=await a.json()}catch{u=void 0}let p=new Error(`HTTP ${a.status}: ${a.statusText}`);throw p.statusCode=a.status,p.responseData=u,p}let c=a.headers.get("content-type")?.toLowerCase()??"";if(i.includes("/fs/download"))return await a.blob();if(c.startsWith("image/")||c.startsWith("audio/")||c.startsWith("video/")||c.includes("application/octet-stream"))return await a.blob();if(a.status===204||a.status===205)return;if(c.includes("application/json")||c.includes("+json"))return await a.json();let l=await a.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(A(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 C={getAuth:null,refreshAuth:null};function Dt(s,e){C.getAuth=s,C.refreshAuth=e}function Nt(){C.getAuth=null,C.refreshAuth=null}async function Bt(s,e){try{return await s()}catch(t){if(t instanceof h&&t.statusCode===401)return await e(),await s();throw t}}async function jt(s,e={}){let t=e.count??5,r=e.intervalMs??200,n=e.settleDelayMs??1e3,i=e.timeoutMs??t*r+n+1e3;return e.signal?.aborted?-1:await new Promise(a=>{let c=[],l=new Set,u,p=!1,m=(v,R)=>{let d=setTimeout(()=>{l.delete(d),v()},R);return l.add(d),d},b=()=>{for(let v of l)clearTimeout(v);l.clear(),e.signal?.removeEventListener("abort",I),u&&(u.readyState===WebSocket.CONNECTING||u.readyState===WebSocket.OPEN)&&u.close()},g=v=>{p||(p=!0,b(),a(v))},I=()=>g(-1);e.signal?.addEventListener("abort",I,{once:!0});try{u=new WebSocket(s)}catch{g(-1);return}m(()=>g(-1),i),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;g(v)},t*r+n)},u.onmessage=v=>{c.push(performance.now()-Number(v.data))},u.onerror=()=>g(-1),u.onclose=()=>{!p&&c.length===0&&g(-1)}})}export{y as AbstractFeature,k as AbstractModrinthClient,w as AbstractSyncClient,x as AbstractUploadClient,L as AbstractWebSocketClient,gt as Archon,Ke as AuthFeature,Je as CircuitBreakerFeature,tt as GenericModrinthClient,f as GenericSyncClient,Ve as InMemoryCircuitBreakerStorage,h as ModrinthApiError,T as ModrinthServerError,Qe as NodeAuthFeature,rt as NuxtCircuitBreakerStorage,nt as NuxtModrinthClient,bt as PANEL_VERSION,Xe as PanelVersionFeature,Ye as RetryFeature,q as SseParser,st as TauriModrinthClient,Ze as VerboseLoggingFeature,P as XHRUploadClient,Nt as clearNodeAuthState,He as getNodeWebSocketUrl,ze as isModrinthErrorResponse,C as nodeAuthState,et as parseSyncEventData,jt as pingWebSocketUrl,Dt as setNodeAuthState,Bt as withJWTRetry};
6
+ `)?this.data.slice(0,-1):this.data}),this.eventName="",this.data="",this.id=void 0}};function tt(s){let e;try{e=JSON.parse(s)}catch{return null}return!e||typeof e!="object"||typeof e.type!="string"?null:e}var It=1e3,yt=3e4,Mt=1e3,f=class extends w{constructor(){super(...arguments);this.emitter=Ct()}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 i={serverId:t,intent:r.intent??"all",reconnectAttempts:0,retryDelay:It,stopped:!1,status:"idle"};this.connections.set(t,i),this.runConnection(i)}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 i=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 a=await this.consumeStream(t,i);if(t.controller=void 0,t.stopped)return;if(a==="protocol-reconnect"){t.reconnectAttempts=0;continue}await this.waitForReconnect(t)}catch(i){if(t.controller=void 0,t.stopped||this.isAbortError(i))return;t.reconnectAttempts++,this.updateStatus(t,"error",i),console.warn(`[Sync] Connection failed for server ${t.serverId}:`,i),await this.waitForReconnect(t)}}}async consumeStream(t,r){let n=r.getReader(),i=new TextDecoder,a=new q;try{for(;!t.stopped;){let{done:p,value:m}=await n.read();if(p)break;let b=i.decode(m,{stream:!0}),g=this.processParsedItems(t,a.feed(b));if(g==="protocol-reconnect")return await n.cancel(),t.controller?.abort(),g}let c=i.decode(),l=c?a.feed(c):[],u=this.processParsedItems(t,[...l,...a.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,yt);continue}this.updateLastEventId(t,n.id);let i=tt(n.data);if(!i){console.warn("[Sync] Dropping malformed SSE payload:",{serverId:t.serverId,event:n.event,data:n.data});continue}if(this.emitSyncEvent(t.serverId,i),i.type==="protocol.reset"||i.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,yt)+Math.random()*Mt}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 Ot from"mitt";var ft=1e3,S=class extends L{constructor(){super(...arguments);this.emitter=Ot()}async connect(t,r){return this.connections.has(t)&&this.closeConnection(t),new Promise((n,i)=>{try{let a=new WebSocket(ze(r.url)),c={serverId:t,socket:a,reconnectAttempts:0,reconnectTimer:void 0,isReconnecting:!1};this.connections.set(t,c),a.onopen=()=>{a.send(JSON.stringify({event:"auth",jwt:r.token})),c.reconnectAttempts=0,c.isReconnecting=!1,n()},a.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)}},a.onclose=l=>{console.debug(`[WebSocket] Closed for server ${t}:`,{code:l.code,reason:l.reason,wasClean:l.wasClean}),l.code!==ft&&this.scheduleReconnect(t,r)},a.onerror=l=>{let u=a.url,p=a.readyState;console.error(`[WebSocket] Error for server ${t}:`,{url:u,readyState:p,readyStateLabel:["CONNECTING","OPEN","CLOSING","CLOSED"][p],type:l.type}),i(new Error(`WebSocket connection failed for server ${t} (readyState: ${p})`))}}catch(a){i(a)}})}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(ft,"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 i=this.getReconnectDelay(n.reconnectAttempts);n.reconnectTimer=setTimeout(()=>{this.connect(t,r).catch(a=>{console.error(`[WebSocket] Reconnection failed for server ${t}:`,a)})},i)}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):t.api==="sharedinstances"?r=this.resolveBaseUrl(this.config.sharedInstancesBaseUrl):r=t.api;let n=this.buildUrl(e,r,t.version),i=[];t.onProgress&&i.push(t.onProgress);let a=new AbortController;t.signal&&t.signal.addEventListener("abort",()=>a.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 b=this.buildUploadContext(n,e,m);if(c=b,a.signal.aborted)throw new h("Upload cancelled");let g=await this.executeUploadFeatureChain(b,i,a);return await this.config.hooks?.onResponse?.(g,b),g})().catch(async u=>{let p=this.normalizeError(u,c);throw c&&await this.config.hooks?.onError?.(p,c),p}),onProgress:u=>(i.push(u),l),cancel:()=>a.abort()};return l}executeXHRUpload(e,t,r){return new Promise((n,i)=>{let a=new XMLHttpRequest,c=e.metadata;a.upload.addEventListener("progress",p=>{if(p.lengthComputable){let m={loaded:p.loaded,total:p.total,progress:p.loaded/p.total};t.forEach(b=>b(m))}}),a.addEventListener("load",()=>{if(a.status>=200&&a.status<300)try{n(a.response?JSON.parse(a.response):void 0)}catch{n(void 0)}else i(this.createUploadError(a))}),a.addEventListener("error",()=>i(new h("Upload failed"))),a.addEventListener("abort",()=>i(new h("Upload cancelled"))),a.addEventListener("timeout",()=>i(new h("Upload timed out"))),e.options.timeout!==void 0&&(a.timeout=e.options.timeout);let l=e.url;if(e.options.params){let p=new URLSearchParams(Object.entries(e.options.params).map(([m,b])=>[m,String(b)])).toString();l+=(l.includes("?")?"&":"?")+p}a.open("POST",l);for(let[p,m]of Object.entries(e.options.headers??{}))a.setRequestHeader(p,m);let u="formData"in c?c.formData:c.file;a.send(u),r.signal.addEventListener("abort",()=>a.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 rt=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new S(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 $t(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(A(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 Ut?this.createNormalizedError(e,e.response?.status,e.data):super.normalizeError(e)}};import{FetchError as Dt}from"ofetch";var nt=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)}},st=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new S(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(A(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 Dt?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 it=class extends P{constructor(e){super(e),Object.defineProperty(this.archon,"sockets",{value:new S(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),i=A(e,t.params),a=await r(i,{method:t.method??"GET",headers:t.headers,body:n});if(!a.ok){let u;try{u=await a.json()}catch{u=void 0}let p=new Error(`HTTP ${a.status}: ${a.statusText}`);throw p.statusCode=a.status,p.responseData=u,p}let c=a.headers.get("content-type")?.toLowerCase()??"";if(i.includes("/fs/download"))return await a.blob();if(c.startsWith("image/")||c.startsWith("audio/")||c.startsWith("video/")||c.includes("application/octet-stream"))return await a.blob();if(a.status===204||a.status===205)return;if(c.includes("application/json")||c.includes("+json"))return await a.json();let l=await a.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(A(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 C={getAuth:null,refreshAuth:null};function Nt(s,e){C.getAuth=s,C.refreshAuth=e}function Bt(){C.getAuth=null,C.refreshAuth=null}async function jt(s,e){try{return await s()}catch(t){if(t instanceof h&&t.statusCode===401)return await e(),await s();throw t}}async function Ft(s,e={}){let t=e.count??5,r=e.intervalMs??200,n=e.settleDelayMs??1e3,i=e.timeoutMs??t*r+n+1e3;return e.signal?.aborted?-1:await new Promise(a=>{let c=[],l=new Set,u,p=!1,m=(v,R)=>{let d=setTimeout(()=>{l.delete(d),v()},R);return l.add(d),d},b=()=>{for(let v of l)clearTimeout(v);l.clear(),e.signal?.removeEventListener("abort",I),u&&(u.readyState===WebSocket.CONNECTING||u.readyState===WebSocket.OPEN)&&u.close()},g=v=>{p||(p=!0,b(),a(v))},I=()=>g(-1);e.signal?.addEventListener("abort",I,{once:!0});try{u=new WebSocket(s)}catch{g(-1);return}m(()=>g(-1),i),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;g(v)},t*r+n)},u.onmessage=v=>{c.push(performance.now()-Number(v.data))},u.onerror=()=>g(-1),u.onclose=()=>{!p&&c.length===0&&g(-1)}})}export{y as AbstractFeature,k as AbstractModrinthClient,w as AbstractSyncClient,x as AbstractUploadClient,L as AbstractWebSocketClient,vt as Archon,Je as AuthFeature,Qe as CircuitBreakerFeature,rt as GenericModrinthClient,f as GenericSyncClient,He as InMemoryCircuitBreakerStorage,h as ModrinthApiError,T as ModrinthServerError,Xe as NodeAuthFeature,nt as NuxtCircuitBreakerStorage,st as NuxtModrinthClient,gt as PANEL_VERSION,Ye as PanelVersionFeature,Ze as RetryFeature,q as SseParser,it as TauriModrinthClient,et as VerboseLoggingFeature,P as XHRUploadClient,Bt as clearNodeAuthState,ze as getNodeWebSocketUrl,Ke as isModrinthErrorResponse,C as nodeAuthState,tt as parseSyncEventData,Ft as pingWebSocketUrl,Nt as setNodeAuthState,jt as withJWTRetry};
7
7
  //# sourceMappingURL=index.js.map