1 line
40 KiB
JavaScript
1 line
40 KiB
JavaScript
import{lt as e}from"./CaGtQlYh.js";import{At as t,Jt as n}from"#entry";import{c as r}from"./CIa-1CJu.js";import{t as i}from"./CsU6pgHx.js";var a=class extends Error{name=`KyError`;get isKyError(){return!0}},o=class extends a{name=`HTTPError`;response;request;options;data;constructor(e,t,n){let r=`${e.status||e.status===0?e.status:``} ${e.statusText??``}`.trim(),i=r?`status code ${r}`:`an unknown error`;super(`Request failed with ${i}: ${t.method} ${t.url}`),this.response=e,this.request=t,this.options=n}},s=class extends a{name=`NetworkError`;request;constructor(e,t){super(`Request failed due to a network error: ${e.method} ${e.url}`,t),this.request=e}},c=class extends Error{name=`NonError`;value;constructor(e){let t=`Non-error value was thrown`;try{typeof e==`string`?t=e:e&&typeof e==`object`&&`message`in e&&typeof e.message==`string`&&(t=e.message)}catch{}super(t),this.value=e}},l=class extends a{name=`ForceRetryError`;customDelay;code;customRequest;constructor(e){let t=e?.cause?e.cause instanceof Error?e.cause:new c(e.cause):void 0;super(e?.code?`Forced retry: ${e.code}`:`Forced retry`,t?{cause:t}:void 0),this.customDelay=e?.delay,this.code=e?.code,this.customRequest=e?.request}},u=class extends Error{name=`SchemaValidationError`;issues;constructor(e){super(`Response schema validation failed`),this.issues=e}},d=class extends a{name=`TimeoutError`;request;constructor(e){super(`Request timed out: ${e.method} ${e.url}`),this.request=e}},f=(()=>{let e=!1,t=!1,n=typeof globalThis.ReadableStream==`function`,r=typeof globalThis.Request==`function`;if(n&&r)try{t=new globalThis.Request(`https://empty.invalid`,{body:new globalThis.ReadableStream,method:`POST`,get duplex(){return e=!0,`half`}}).headers.has(`Content-Type`)}catch(e){if(e instanceof Error&&e.message===`unsupported BodyInit type`)return!1;throw e}return e&&!t})(),p=typeof globalThis.AbortController==`function`,m=typeof globalThis.AbortSignal==`function`&&typeof globalThis.AbortSignal.any==`function`,ee=typeof globalThis.ReadableStream==`function`,te=typeof globalThis.FormData==`function`,h=[`get`,`post`,`put`,`patch`,`head`,`delete`],ne={json:`application/json`,text:`text/*`,formData:`multipart/form-data`,arrayBuffer:`*/*`,blob:`*/*`,bytes:`*/*`},g=2147483647,_=Symbol(`stop`),v=class{options;constructor(e){this.options=e}},re=e=>new v(e),ie={json:!0,parseJson:!0,stringifyJson:!0,searchParams:!0,baseUrl:!0,prefix:!0,retry:!0,timeout:!0,totalTimeout:!0,hooks:!0,throwHttpErrors:!0,onDownloadProgress:!0,onUploadProgress:!0,fetch:!0,context:!0},ae={method:!0,headers:!0,body:!0,mode:!0,credentials:!0,cache:!0,redirect:!0,referrer:!0,referrerPolicy:!0,integrity:!0,keepalive:!0,signal:!0,window:!0,duplex:!0},y=new TextEncoder,oe=e=>{if(!e)return 0;if(e instanceof FormData){let t=0;for(let[n,r]of e)t+=40,t+=y.encode(`Content-Disposition: form-data; name="${n}"`).byteLength,t+=typeof r==`string`?y.encode(r).byteLength:r.size;return t}return e instanceof Blob?e.size:e instanceof ArrayBuffer||ArrayBuffer.isView(e)?e.byteLength:typeof e==`string`?y.encode(e).byteLength:e instanceof URLSearchParams?y.encode(e.toString()).byteLength:0},b=(e,t,n)=>{let r,i=0;return e.pipeThrough(new TransformStream({transform(e,a){if(a.enqueue(e),r){i+=r.byteLength;let e=t===0?0:i/t;e>=1&&(e=1-2**-52),n?.({percent:e,totalBytes:Math.max(t,i),transferredBytes:i},r)}r=e},flush(){r&&(i+=r.byteLength,n?.({percent:1,totalBytes:Math.max(t,i),transferredBytes:i},r))}}))},se=(e,t)=>{if(!e.body)return e;let n={status:e.status,statusText:e.statusText,headers:e.headers};if(e.status===204)return new Response(null,n);let r=Math.max(0,Number(e.headers.get(`content-length`))||0);return new Response(b(e.body,r,t),n)},ce=(e,t,n)=>{if(!e.body)return e;let r=oe(n??e.body);return new Request(e,{duplex:`half`,body:b(e.body,r,t)})},x=e=>typeof e==`object`&&!!e,le=Symbol(`replaceOption`),S=e=>x(e)&&e[le]===!0?{isReplace:!0,value:e.value}:{isReplace:!1,value:e},C=(...e)=>{for(let t of e)if((!x(t)||Array.isArray(t))&&t!==void 0)throw TypeError("The `options` argument must be an object");return A({},...e)},w=(e={},t={})=>{let n=new globalThis.Headers(e),r=t instanceof globalThis.Headers,i=new globalThis.Headers(t);for(let[e,t]of i.entries())r&&t===`undefined`||t===void 0?n.delete(e):n.set(e,t);return n},T=e=>{if(!x(e)||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null},E=e=>{if(e instanceof URLSearchParams){let t=new URLSearchParams(e),n=e[k];return n&&(t[k]=new Set(n)),t}return e instanceof globalThis.Headers?new globalThis.Headers(e):Array.isArray(e)?[...e]:T(e)?{...e}:e},ue=e=>Object.fromEntries(Object.entries(e).filter(e=>e[1]!==void 0)),de=(e,t)=>T(e)&&T(t)?ue({...e,...t}):w(e,t);function D(e,t,n){return Object.hasOwn(t,n)&&t[n]===void 0?[]:A(e[n]??[],t[n]??[])}var O=(e={},t={})=>({init:D(e,t,`init`),beforeRequest:D(e,t,`beforeRequest`),beforeRetry:D(e,t,`beforeRetry`),beforeError:D(e,t,`beforeError`),afterResponse:D(e,t,`afterResponse`)}),k=Symbol(`deletedParameters`),fe=(e,t)=>{let n=new URLSearchParams,r=new Set;for(let i of[e,t])if(i!==void 0)if(i instanceof URLSearchParams){for(let[e,t]of i.entries())n.append(e,t),r.delete(e);let e=i[k];if(e)for(let t of e)n.delete(t),r.add(t)}else if(Array.isArray(i))for(let e of i){if(!Array.isArray(e)||e.length!==2)throw TypeError(`Array search parameters must be provided in [[key, value], ...] format`);n.append(String(e[0]),String(e[1])),r.delete(String(e[0]))}else if(x(i))for(let[e,t]of Object.entries(i))t===void 0?(n.delete(e),r.add(e)):(n.append(e,String(t)),r.delete(e));else{let e=new URLSearchParams(i);for(let[t,i]of e.entries())n.append(t,i),r.delete(t)}return r.size>0&&(n[k]=r),n},A=(...e)=>{let t={},n={},r={},i,a=[];for(let o of e)if(Array.isArray(o))Array.isArray(t)||(t=[]),t=[...t,...o];else if(x(o)){for(let[e,n]of Object.entries(o)){if(e===`signal`&&n instanceof globalThis.AbortSignal){a.push(n);continue}let r=S(n),{isReplace:o}=r;if(n=r.value,e===`context`){if(n!=null&&(!x(n)||Array.isArray(n)))throw TypeError("The `context` option must be an object");t={...t,context:n==null?{}:o?{...n}:{...t.context,...n}};continue}if(e===`searchParams`){i=n==null?void 0:o||i===void 0?n:fe(i,n);continue}x(n)&&!o&&e in t&&(n=A(t[e],n)),t={...t,[e]:n}}if(x(o.hooks)){let{value:e,isReplace:n}=S(o.hooks);r=O(n?{}:r,e),t.hooks=r}if(x(o.headers)){let{value:e,isReplace:r}=S(o.headers);n=r?E(e):de(n,e),t.headers=n}}return i!==void 0&&(t.searchParams=i),a.length>0&&(a.length===1?t.signal=a[0]:m?t.signal=AbortSignal.any(a):t.signal=a.at(-1)),t},pe=e=>h.includes(e)?e.toUpperCase():e,j={limit:2,methods:[`get`,`put`,`head`,`delete`,`options`,`trace`],statusCodes:[408,413,429,500,502,503,504],afterStatusCodes:[413,429,503],maxRetryAfter:1/0,backoffLimit:1/0,delay:e=>.3*2**(e-1)*1e3,jitter:void 0,retryOnTimeout:!1},me=(e={})=>{if(typeof e==`number`)return{...j,limit:e};if(e.methods&&!Array.isArray(e.methods))throw Error(`retry.methods must be an array`);if(e.statusCodes&&!Array.isArray(e.statusCodes))throw Error(`retry.statusCodes must be an array`);let t=Object.fromEntries(Object.entries({...e,methods:e.methods?.map(e=>e.toLowerCase())}).filter(([,e])=>e!==void 0));return{...j,...t}};async function he(e,t,n,r){return new Promise((i,a)=>{let o=setTimeout(()=>{n&&n.abort(),a(new d(e))},r.timeout);r.fetch(e,t).then(i).catch(a).then(()=>{clearTimeout(o)})})}async function M(e,{signal:t}){return new Promise((n,r)=>{t&&(t.throwIfAborted(),t.addEventListener(`abort`,i,{once:!0}));function i(){clearTimeout(a),r(t.reason)}let a=setTimeout(()=>{t?.removeEventListener(`abort`,i),n()},e)})}var ge=e=>{let t={};for(let n in e)Object.hasOwn(e,n)&&!(n in ae)&&!(n in ie)&&(t[n]=e[n]);return t},_e=e=>e===void 0?!1:Array.isArray(e)?e.length>0:e instanceof URLSearchParams?e.size>0||!!e[k]?.size:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!!e,ve=Object.prototype.toString,ye=e=>ve.call(e)===`[object Error]`,be=new Set([`network error`,`NetworkError when attempting to fetch resource.`,`The Internet connection appears to be offline.`,`Network request failed`,`fetch failed`,`terminated`,` A network error occurred.`,`Network connection lost`]);function xe(e){if(!(e&&ye(e)&&e.name===`TypeError`&&typeof e.message==`string`))return!1;let{message:t,stack:n}=e;return t===`Load failed`?n===void 0||`__sentry_captured__`in e:t.startsWith(`error sending request for url`)||t===`Failed to fetch`||t.startsWith(`Failed to fetch (`)&&t.endsWith(`)`)?!0:be.has(t)}var N=(e,t)=>e instanceof t||e?.name===t.name;function Se(e){return N(e,o)}function Ce(e){return N(e,s)}function we(e){return N(e,d)}var Te=10*1024*1024,Ee="The `prefixUrl` option has been renamed `prefix` in v2 and enhanced to allow slashes in input. See also the new `baseUrl` option for improved flexibility with standard URL resolution: https://github.com/sindresorhus/ky#baseurl",P=Symbol(`timedOutResponseData`),De=e=>{let t=/;\s*charset\s*=\s*(?:"([^"]+)"|([^;,\s]+))/i.exec(e),n=t?.[1]??t?.[2];if(n)try{return new TextDecoder(n)}catch{}return new TextDecoder},F="The `schema` argument must follow the Standard Schema specification",Oe=e=>typeof e==`object`?{...e,...e.methods&&{methods:[...e.methods]},...e.statusCodes&&{statusCodes:[...e.statusCodes]},...e.afterStatusCodes&&{afterStatusCodes:[...e.afterStatusCodes]}}:e,I=Object.prototype.toString,L=e=>e instanceof globalThis.Request||I.call(e)===`[object Request]`,R=e=>e instanceof globalThis.Response||I.call(e)===`[object Response]`,ke=e=>Array.isArray(e)?e.map(e=>[...e]):E(e);function Ae(e){let t={...e,json:E(e.json),context:E(e.context),headers:E(e.headers),searchParams:ke(e.searchParams)};return e.retry!==void 0&&(t.retry=Oe(e.retry)),t}var z=async(e,t)=>{if(typeof t!=`object`&&typeof t!=`function`||t===null)throw TypeError(F);let n=t[`~standard`];if(typeof n!=`object`||!n||typeof n.validate!=`function`)throw TypeError(F);let r=await n.validate(e);if(r.issues)throw new u(r.issues);return r.value},B=class e{static create(t,n){let r=n.hooks?.init??[],i=r.length>0?Ae(n):n;for(let e of r)e(i);let a=new e(t,i),s=async()=>{if(typeof a.#i.timeout==`number`&&a.#i.timeout>2147483647)throw RangeError(`The \`timeout\` option cannot be greater than ${g}`);if(typeof a.#i.totalTimeout==`number`&&a.#i.totalTimeout>2147483647)throw RangeError(`The \`totalTimeout\` option cannot be greater than ${g}`);await Promise.resolve();let e=await a.#w(),t=e??await a.#E(async()=>a.#k()),n=e!==void 0||a.#O();for(;;){if(t===void 0)return t;if(R(t))try{t=await a.#T(t)}catch(e){if(!(e instanceof l))throw e;let r=await a.#D(e,async()=>a.#k());if(r===void 0)return r;t=r,n=a.#O();continue}let e=t;if(!e.ok&&e.type!==`opaque`&&(typeof a.#i.throwHttpErrors==`function`?a.#i.throwHttpErrors(e.status):a.#i.throwHttpErrors)){let r=new o(e,a.#P(e),a.#M()),i=r;if(r.data=await a.#h(e),n)throw i;let s=await a.#D(r,async()=>a.#k());if(s===void 0)return s;t=s,n=a.#O();continue}break}if(!R(t))return t;if(a.#m(t),a.#i.onDownloadProgress){if(typeof a.#i.onDownloadProgress!=`function`)throw TypeError("The `onDownloadProgress` option must be a function");if(!ee)throw Error("Streams are not supported in your environment. `ReadableStream` is missing.");let e=t.clone();return a.#x(t),se(e,a.#i.onDownloadProgress)}return t},c=(async()=>{try{return await s()}catch(e){if(!(e instanceof Error)||a.#s.has(e))throw e;let t=e;for(let e of a.#i.hooks.beforeError){let n=await e({request:a.request,options:a.#M(),error:t,retryCount:a.#n});n instanceof Error&&(t=n)}throw t}finally{let e=a.#a;a.#b(e?.body??void 0),a.request!==e&&a.#b(a.request.body??void 0)}})();for(let[e,t]of Object.entries(ne))e===`bytes`&&typeof globalThis.Response?.prototype?.bytes!=`function`||(c[e]=async n=>{a.request.headers.set(`accept`,a.request.headers.get(`accept`)||t);let r=await c;if(e!==`json`)return r[e]();let o=await r.text();if(o===``)return n===void 0?JSON.parse(o):z(void 0,n);let s=i.parseJson?await i.parseJson(o,{request:a.#P(r),response:r}):JSON.parse(o);return n===void 0?s:z(s,n)});return c}static#e(e){return e&&typeof e==`object`&&!Array.isArray(e)&&!(e instanceof URLSearchParams)?Object.fromEntries(Object.entries(e).filter(([,e])=>e!==void 0)):e}request;#t;#n=0;#r;#i;#a;#o;#s=new WeakSet;#c;#l;#u=!1;#d=new WeakMap;constructor(t,n={}){if(this.#r=t,Object.hasOwn(n,`prefixUrl`))throw Error(Ee);if(this.#i={...n,headers:w(this.#r.headers,n.headers),hooks:O({},n.hooks),method:pe(n.method??this.#r.method??`GET`),prefix:String(n.prefix||``),retry:me(n.retry),throwHttpErrors:n.throwHttpErrors??!0,timeout:n.timeout??1e4,totalTimeout:n.totalTimeout??!1,fetch:n.fetch??globalThis.fetch.bind(globalThis),context:n.context??{}},typeof this.#r!=`string`&&!(this.#r instanceof URL||this.#r instanceof globalThis.Request))throw TypeError("`input` must be a string, URL, or Request");if(typeof this.#r==`string`){if(this.#i.prefix){let e=this.#i.prefix.replace(/\/+$/,``),t=this.#r.replace(/^\/+/,``);this.#r=`${e}/${t}`}if(this.#i.baseUrl){let e;try{e=new URL(this.#r)}catch{}e||(this.#r=new URL(this.#r,new Request(this.#i.baseUrl).url))}}p&&m&&(this.#o=this.#i.signal??this.#r.signal,this.#t=new globalThis.AbortController,this.#i.signal=this.#S()),f&&(this.#i.duplex=`half`),this.#i.json!==void 0&&(this.#i.body=this.#i.stringifyJson?.(this.#i.json)??JSON.stringify(this.#i.json),this.#i.headers.set(`content-type`,this.#i.headers.get(`content-type`)??`application/json`));let r=n.headers&&new globalThis.Headers(n.headers).has(`content-type`);if(this.#r instanceof globalThis.Request&&(te&&this.#i.body instanceof globalThis.FormData||this.#i.body instanceof URLSearchParams)&&!r&&this.#i.headers.delete(`content-type`),this.request=new globalThis.Request(this.#r,this.#i),_e(this.#i.searchParams)){let t=new URL(this.request.url),n=this.#i.searchParams?.[k];if(n)for(let e of n)t.searchParams.delete(e);if(typeof this.#i.searchParams==`string`){let e=this.#i.searchParams.replace(/^\?/,``);e!==``&&(t.search=t.search?`${t.search}&${e}`:`?${e}`)}else{let n=new URLSearchParams(e.#e(this.#i.searchParams));for(let[e,r]of n.entries())t.searchParams.append(e,r)}if(this.#i.searchParams&&typeof this.#i.searchParams==`object`&&!Array.isArray(this.#i.searchParams)&&!(this.#i.searchParams instanceof URLSearchParams))for(let[e,n]of Object.entries(this.#i.searchParams))n===void 0&&t.searchParams.delete(e);this.request=new globalThis.Request(t,this.#i)}if(this.#i.onUploadProgress&&typeof this.#i.onUploadProgress!=`function`)throw TypeError("The `onUploadProgress` option must be a function");this.#l=typeof this.#i.totalTimeout==`number`?this.#j():void 0}#f(){let e=this.#i.retry.delay(this.#n+1),t=e;return this.#i.retry.jitter===!0?t=Math.random()*e:typeof this.#i.retry.jitter==`function`&&(t=this.#i.retry.jitter(e),(!Number.isFinite(t)||t<0)&&(t=e)),Math.min(this.#i.retry.backoffLimit,t)}async#p(e){if(this.#n>=this.#i.retry.limit)throw e;let t=e instanceof Error?e:new c(e);if(t instanceof l)return t.customDelay??this.#f();if(!this.#i.retry.methods.includes(this.request.method.toLowerCase()))throw e;if(this.#i.retry.shouldRetry!==void 0){let n=await this.#i.retry.shouldRetry({error:t,retryCount:this.#n+1});if(n===!1)throw e;if(n===!0)return this.#f()}if(we(e)){if(!this.#i.retry.retryOnTimeout)throw e;return this.#f()}if(Se(e)){if(!this.#i.retry.statusCodes.includes(e.response.status))throw e;let t=e.response.headers.get(`Retry-After`)??e.response.headers.get(`RateLimit-Reset`)??e.response.headers.get(`X-RateLimit-Retry-After`)??e.response.headers.get(`X-RateLimit-Reset`)??e.response.headers.get(`X-Rate-Limit-Reset`);if(t&&this.#i.retry.afterStatusCodes.includes(e.response.status)){let e=Number(t)*1e3;return Number.isNaN(e)?e=Date.parse(t)-Date.now():e>=Date.parse(`2024-01-01`)&&(e-=Date.now()),Number.isFinite(e)?(e=Math.max(0,e),Math.min(this.#i.retry.maxRetryAfter,e)):Math.min(this.#i.retry.maxRetryAfter,this.#f())}if(e.response.status===413)throw e;return this.#f()}if(!Ce(e))throw e;return this.#f()}#m(e){let t=this.#P(e);return this.#i.parseJson&&(e.json=async()=>{let n=await e.text();return n===``?JSON.parse(n):this.#i.parseJson(n,{request:t,response:e})}),e}async#h(e){let t=await this.#v(e,this.#g());if(t===P){this.#C();return}if(!t)return;if(!this.#_(e.headers.get(`content-type`)??``))return t;let n=await this.#y(t,e,this.#g(),this.#P(e));if(n===P){this.#C();return}return n}#g(){let e=this.#i.timeout===!1?1e4:this.#i.timeout,t=this.#A();if(t===void 0)return e;if(t<=0)throw new d(this.request);return Math.min(e,t)}#_(e){let t=(e.split(`;`,1)[0]??``).trim().toLowerCase();return/\/(?:.*[.+-])?json$/.test(t)}async#v(e,t){let{body:n}=e;if(!n)try{return await e.text()}catch{return}let r;try{r=n.getReader()}catch{return}let i=De(e.headers.get(`content-type`)??``),a=[],o=0,s=(async()=>{try{for(;;){let{done:e,value:t}=await r.read();if(e)break;if(o+=t.byteLength,o>Te){r.cancel().catch(()=>void 0);return}a.push(i.decode(t,{stream:!0}))}}catch{return}return a.push(i.decode()),a.join(``)})(),c=new Promise(e=>{let n=setTimeout(()=>{e(P)},t);s.finally(()=>{clearTimeout(n)})}),l=await Promise.race([s,c]);return l===P&&r.cancel().catch(()=>void 0),l}async#y(e,t,n,r){let i;try{return await Promise.race([Promise.resolve().then(()=>this.#i.parseJson?this.#i.parseJson(e,{request:r,response:t}):JSON.parse(e)),new Promise(e=>{i=setTimeout(()=>{e(P)},n)})])}catch{return}finally{clearTimeout(i)}}#b(e){e&&e.cancel().catch(()=>void 0)}#x(e){this.#b(e.body??void 0)}#S(){return this.#o?AbortSignal.any([this.#o,this.#t.signal]):this.#t.signal}#C(){let e=this.#A();if(e!==void 0&&e<=0)throw new d(this.request)}async#w(){for(let e of this.#i.hooks.beforeRequest){let t=await e({request:this.request,options:this.#M(),retryCount:0});if(L(t))this.#N(t);else if(R(t))return t}}async#T(e){let t=this.#P(e);for(let n of this.#i.hooks.afterResponse){let r=this.#F(e.clone(),t);this.#m(r);let i;try{i=await n({request:this.request,options:this.#M(),response:r,retryCount:this.#n})}catch(t){throw r!==e&&this.#x(r),this.#x(e),t}if(i instanceof v)throw r!==e&&this.#x(r),this.#x(e),new l(i.options);let a=R(i)?this.#F(i,t):e;r!==e&&r!==a&&r.body!==a.body&&this.#x(r),e!==a&&e.body!==a.body&&this.#x(e),e=a}return e}async#E(e){try{return await e()}catch(t){return this.#D(t,e)}}async#D(e,t){this.#u=!1;let n=Math.min(await this.#p(e),g),r={signal:this.#o},i=this.#A();if(i!==void 0){if(i<=0)throw new d(this.request);if(n>=i)throw await M(i,r),new d(this.request)}if(await M(n,r),this.#C(),e instanceof l&&e.customRequest){let t=new globalThis.Request(e.customRequest,this.#i.signal?{signal:this.#i.signal}:void 0);this.#N(t)}for(let t of this.#i.hooks.beforeRetry){let n;try{n=await t({request:this.request,options:this.#M(),error:e,retryCount:this.#n+1})}catch(t){throw t instanceof Error&&t!==e&&this.#s.add(t),t}if(L(n)){this.#N(n);break}if(R(n))return this.#u=!0,this.#n++,n;if(n===_)return}return this.#C(),this.#n++,this.#E(t)}#O(){let e=this.#u;return this.#u=!1,e}async#k(){this.#t?.signal.aborted&&(this.#t=new globalThis.AbortController,this.#i.signal=this.#S(),this.request=new globalThis.Request(this.request,{signal:this.#i.signal}));let e=ge(this.#i),t=this.#i.retry.limit>0?this.request.clone():void 0,n=this.#I(this.request,this.#i.body??void 0);this.#a=n,t&&(this.request=t);try{let t=this.#A();if(t!==void 0&&t<=0)throw new d(this.request);let r=this.#i.timeout===!1?t:t===void 0?this.#i.timeout:Math.min(this.#i.timeout,t),i=r===void 0?await this.#i.fetch(n,e):await he(n,e,this.#t,{timeout:r,fetch:this.#i.fetch});return this.#F(i,n)}catch(e){throw xe(e)?new s(this.request,{cause:e}):e}}#A(){if(this.#l===void 0)return;let e=this.#j()-this.#l;return Math.max(0,this.#i.totalTimeout-e)}#j(){return globalThis.performance?.now()??Date.now()}#M(){if(!this.#c){let{hooks:e,json:t,parseJson:n,stringifyJson:r,searchParams:i,timeout:a,totalTimeout:o,throwHttpErrors:s,fetch:c,...l}=this.#i;this.#c=Object.freeze(l)}return this.#c}#N(e){this.#c=void 0,this.request=e}#P(e){return this.#d.get(e)??this.request}#F(e,t){return this.#d.set(e,t),e}#I(e,t){return!this.#i.onUploadProgress||!e.body||!f?e:ce(e,this.#i.onUploadProgress,t??this.#i.body??void 0)}},V=e=>{let t=(t,n)=>B.create(t,C(e,n));for(let n of h)t[n]=(t,r)=>B.create(t,C(e,r,{method:n}));return t.create=e=>V(C(e)),t.extend=t=>(typeof t==`function`&&(t=t(e??{})),V(C(e,t))),t.stop=_,t.retry=re,t},H=V(),je={meta:!0,version:`v1.18.0`},Me={port:7890,"socks-port":7891,"redir-port":0,"tproxy-port":0,"mixed-port":7893,mode:`rule`,"log-level":`info`,"allow-lan":!1,ipv6:!1,tun:{enable:!1,device:`utun`,stack:`system`,"dns-hijack":null,"auto-route":!0,"auto-detect-interface":!0,"file-descriptor":0}};function Ne(e,t,n=``,r=``){return{network:`tcp`,type:`HTTP Connect`,destinationIP:t,destinationPort:`443`,dnsMode:`normal`,host:e,inboundIP:`127.0.0.1`,inboundName:`mixed-in`,inboundPort:`7893`,inboundUser:r,process:n,processPath:n?`/Applications/${n}.app`:``,remoteDestination:``,sniffHost:e,sourceIP:`192.168.1.100`,sourcePort:`52341`,specialProxy:``,specialRules:``,uid:501}}function U(e,t,n,r,i){return{name:e,type:t,all:r||[],history:n?[{delay:n,time:new Date().toISOString()}]:[],udp:!0,xudp:t===`Hysteria2`||t===`VLESS`,tfo:!1,extra:{},hidden:!1,now:i||``}}function W(e,t,n){return{name:e,type:t,alive:!0,tfo:!1,udp:!0,xudp:!1,now:``,id:e,extra:{},history:n?[{delay:n,time:new Date().toISOString()}]:[]}}var Pe={DIRECT:U(`DIRECT`,`Direct`),REJECT:U(`REJECT`,`Reject`),"Hong Kong":U(`Hong Kong`,`Shadowsocks`,85),Japan:U(`Japan`,`Vmess`,120),Singapore:U(`Singapore`,`Trojan`,65),"United States":U(`United States`,`Hysteria2`,180),Taiwan:U(`Taiwan`,`VLESS`,95),"Auto Select":U(`Auto Select`,`URLTest`,void 0,[`Hong Kong`,`Japan`,`Singapore`,`United States`,`Taiwan`],`Singapore`),Proxy:U(`Proxy`,`Selector`,void 0,[`Auto Select`,`Hong Kong`,`Japan`,`Singapore`,`United States`,`Taiwan`,`DIRECT`],`Auto Select`),Streaming:U(`Streaming`,`Selector`,void 0,[`Proxy`,`Hong Kong`,`Japan`,`Singapore`,`Taiwan`,`DIRECT`],`Japan`),"AI Services":U(`AI Services`,`Selector`,void 0,[`Proxy`,`United States`,`Japan`,`Singapore`],`United States`)},Fe={"Provider A":{name:`Provider A`,type:`Proxy`,vehicleType:`HTTP`,testUrl:`https://www.gstatic.com/generate_204`,proxies:[W(`Hong Kong`,`Shadowsocks`,85),W(`Japan`,`Vmess`,120),W(`Singapore`,`Trojan`,65)],updatedAt:new Date().toISOString(),subscriptionInfo:{Upload:1024*1024*100,Download:1024*1024*500,Total:1024*1024*1024*100,Expire:Math.floor(Date.now()/1e3)+720*60*60}},"Provider B":{name:`Provider B`,type:`Proxy`,vehicleType:`File`,testUrl:`https://www.gstatic.com/generate_204`,proxies:[W(`United States`,`Hysteria2`,180),W(`Taiwan`,`VLESS`,95)],updatedAt:new Date(Date.now()-1440*60*1e3).toISOString(),subscriptionInfo:{Upload:1024*1024*50,Download:1024*1024*200,Total:1024*1024*1024*50,Expire:Math.floor(Date.now()/1e3)+1440*60*60}}},Ie=Le();function Le(){let e=[{type:`DOMAIN-SUFFIX`,payload:`google.com`,proxy:`Proxy`,size:156,extra:{disabled:!1,hitCount:128,hitAt:new Date(Date.now()-300*1e3).toISOString(),missCount:3,missAt:new Date(Date.now()-7200*1e3).toISOString()}},{type:`DOMAIN-SUFFIX`,payload:`googleapis.com`,proxy:`Proxy`,size:89},{type:`DOMAIN-SUFFIX`,payload:`gstatic.com`,proxy:`Proxy`,size:234},{type:`DOMAIN-SUFFIX`,payload:`github.com`,proxy:`Proxy`,size:178},{type:`DOMAIN-SUFFIX`,payload:`githubusercontent.com`,proxy:`Proxy`,size:445},{type:`DOMAIN-SUFFIX`,payload:`openai.com`,proxy:`AI Services`,size:67},{type:`DOMAIN-SUFFIX`,payload:`anthropic.com`,proxy:`AI Services`,size:34},{type:`DOMAIN-SUFFIX`,payload:`claude.ai`,proxy:`AI Services`,size:23},{type:`DOMAIN-SUFFIX`,payload:`netflix.com`,proxy:`Streaming`,size:512},{type:`DOMAIN-SUFFIX`,payload:`nflxvideo.net`,proxy:`Streaming`,size:1024},{type:`DOMAIN-SUFFIX`,payload:`youtube.com`,proxy:`Streaming`,size:789},{type:`DOMAIN-SUFFIX`,payload:`ytimg.com`,proxy:`Streaming`,size:456},{type:`DOMAIN-SUFFIX`,payload:`googlevideo.com`,proxy:`Streaming`,size:2048},{type:`DOMAIN-SUFFIX`,payload:`twitter.com`,proxy:`Proxy`,size:345},{type:`DOMAIN-SUFFIX`,payload:`x.com`,proxy:`Proxy`,size:123},{type:`DOMAIN-SUFFIX`,payload:`twimg.com`,proxy:`Proxy`,size:567},{type:`DOMAIN-SUFFIX`,payload:`facebook.com`,proxy:`Proxy`,size:890},{type:`DOMAIN-SUFFIX`,payload:`fbcdn.net`,proxy:`Proxy`,size:1234},{type:`DOMAIN-SUFFIX`,payload:`instagram.com`,proxy:`Proxy`,size:678},{type:`DOMAIN-SUFFIX`,payload:`cdninstagram.com`,proxy:`Proxy`,size:901},{type:`DOMAIN-SUFFIX`,payload:`telegram.org`,proxy:`Proxy`,size:234},{type:`DOMAIN-SUFFIX`,payload:`t.me`,proxy:`Proxy`,size:56},{type:`DOMAIN-SUFFIX`,payload:`whatsapp.com`,proxy:`Proxy`,size:345},{type:`DOMAIN-SUFFIX`,payload:`discord.com`,proxy:`Proxy`,size:456},{type:`DOMAIN-SUFFIX`,payload:`discordapp.com`,proxy:`Proxy`,size:567},{type:`DOMAIN-SUFFIX`,payload:`spotify.com`,proxy:`Streaming`,size:678},{type:`DOMAIN-SUFFIX`,payload:`scdn.co`,proxy:`Streaming`,size:789},{type:`DOMAIN-SUFFIX`,payload:`twitch.tv`,proxy:`Streaming`,size:890},{type:`DOMAIN-SUFFIX`,payload:`ttvnw.net`,proxy:`Streaming`,size:1567},{type:`DOMAIN-SUFFIX`,payload:`reddit.com`,proxy:`Proxy`,size:234},{type:`DOMAIN-SUFFIX`,payload:`redd.it`,proxy:`Proxy`,size:123},{type:`DOMAIN-SUFFIX`,payload:`medium.com`,proxy:`Proxy`,size:345},{type:`DOMAIN-SUFFIX`,payload:`wikipedia.org`,proxy:`Proxy`,size:456},{type:`DOMAIN-SUFFIX`,payload:`wikimedia.org`,proxy:`Proxy`,size:567},{type:`DOMAIN-KEYWORD`,payload:`google`,proxy:`Proxy`,size:12},{type:`DOMAIN-KEYWORD`,payload:`facebook`,proxy:`Proxy`,size:8},{type:`DOMAIN-KEYWORD`,payload:`youtube`,proxy:`Streaming`,size:6},{type:`DOMAIN-KEYWORD`,payload:`twitter`,proxy:`Proxy`,size:5},{type:`DOMAIN-KEYWORD`,payload:`netflix`,proxy:`Streaming`,size:4},{type:`GEOIP`,payload:`CN`,proxy:`DIRECT`,size:8945},{type:`GEOIP`,payload:`PRIVATE`,proxy:`DIRECT`,size:156},{type:`IP-CIDR`,payload:`192.168.0.0/16`,proxy:`DIRECT`,size:1},{type:`IP-CIDR`,payload:`10.0.0.0/8`,proxy:`DIRECT`,size:1},{type:`IP-CIDR`,payload:`172.16.0.0/12`,proxy:`DIRECT`,size:1},{type:`IP-CIDR`,payload:`127.0.0.0/8`,proxy:`DIRECT`,size:1},{type:`IP-CIDR`,payload:`100.64.0.0/10`,proxy:`DIRECT`,size:1},{type:`IP-CIDR6`,payload:`::1/128`,proxy:`DIRECT`,size:1},{type:`IP-CIDR6`,payload:`fc00::/7`,proxy:`DIRECT`,size:1},{type:`IP-CIDR6`,payload:`fe80::/10`,proxy:`DIRECT`,size:1},{type:`PROCESS-NAME`,payload:`Telegram`,proxy:`Proxy`,size:1},{type:`PROCESS-NAME`,payload:`Discord`,proxy:`Proxy`,size:1},{type:`PROCESS-NAME`,payload:`Spotify`,proxy:`Streaming`,size:1},{type:`RULE-SET`,payload:`reject`,proxy:`REJECT`,size:1234},{type:`RULE-SET`,payload:`direct`,proxy:`DIRECT`,size:5678},{type:`RULE-SET`,payload:`proxy`,proxy:`Proxy`,size:2345},{type:`MATCH`,payload:``,proxy:`Proxy`,size:1,extra:{disabled:!1,hitCount:2048,hitAt:new Date(Date.now()-30*1e3).toISOString(),missCount:0}}];for(let[t,n]of e.entries())if(!(`extra`in n)){let e=t%4==0?0:(t+1)*7;n.extra={disabled:t%9==0,hitCount:e,hitAt:e>0?new Date(Date.now()-(t+1)*60*1e3).toISOString():void 0,missCount:e===0?t+2:Math.max(0,Math.floor(e/6)),missAt:new Date(Date.now()-(t+3)*90*1e3).toISOString()}}return e}var Re={reject:{name:`reject`,type:`Rule`,behavior:`domain`,ruleCount:1234,updatedAt:new Date().toISOString(),vehicleType:`HTTP`,format:`yaml`},direct:{name:`direct`,type:`Rule`,behavior:`domain`,ruleCount:5678,updatedAt:new Date(Date.now()-720*60*1e3).toISOString(),vehicleType:`HTTP`,format:`yaml`},proxy:{name:`proxy`,type:`Rule`,behavior:`classical`,ruleCount:2345,updatedAt:new Date(Date.now()-360*60*1e3).toISOString(),vehicleType:`HTTP`,format:`yaml`}},ze=Be();function Be(){let e=[{host:`www.google.com`,ip:`142.250.185.14`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`google.com`},{host:`github.com`,ip:`140.82.121.4`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`github.com`},{host:`api.github.com`,ip:`140.82.121.6`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`github.com`},{host:`raw.githubusercontent.com`,ip:`185.199.108.133`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`githubusercontent.com`},{host:`www.youtube.com`,ip:`172.217.14.110`,proxy:`Streaming`,rule:`DOMAIN-SUFFIX`,rulePayload:`youtube.com`},{host:`i.ytimg.com`,ip:`172.217.14.118`,proxy:`Streaming`,rule:`DOMAIN-SUFFIX`,rulePayload:`ytimg.com`},{host:`api.openai.com`,ip:`104.18.12.191`,proxy:`AI Services`,rule:`DOMAIN-SUFFIX`,rulePayload:`openai.com`},{host:`chat.openai.com`,ip:`104.18.13.191`,proxy:`AI Services`,rule:`DOMAIN-SUFFIX`,rulePayload:`openai.com`},{host:`api.anthropic.com`,ip:`104.18.32.47`,proxy:`AI Services`,rule:`DOMAIN-SUFFIX`,rulePayload:`anthropic.com`},{host:`claude.ai`,ip:`104.18.33.47`,proxy:`AI Services`,rule:`DOMAIN-SUFFIX`,rulePayload:`claude.ai`},{host:`www.netflix.com`,ip:`54.74.73.31`,proxy:`Streaming`,rule:`DOMAIN-SUFFIX`,rulePayload:`netflix.com`},{host:`twitter.com`,ip:`104.244.42.1`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`twitter.com`},{host:`x.com`,ip:`104.244.42.65`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`x.com`},{host:`www.facebook.com`,ip:`157.240.1.35`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`facebook.com`},{host:`www.instagram.com`,ip:`157.240.1.174`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`instagram.com`},{host:`web.telegram.org`,ip:`149.154.167.99`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`telegram.org`},{host:`discord.com`,ip:`162.159.130.234`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`discord.com`},{host:`cdn.discordapp.com`,ip:`162.159.133.234`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`discordapp.com`},{host:`open.spotify.com`,ip:`35.186.224.25`,proxy:`Streaming`,rule:`DOMAIN-SUFFIX`,rulePayload:`spotify.com`},{host:`www.twitch.tv`,ip:`151.101.2.167`,proxy:`Streaming`,rule:`DOMAIN-SUFFIX`,rulePayload:`twitch.tv`},{host:`www.reddit.com`,ip:`151.101.1.140`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`reddit.com`},{host:`medium.com`,ip:`162.159.152.4`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`medium.com`},{host:`en.wikipedia.org`,ip:`208.80.154.224`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`wikipedia.org`},{host:`www.whatsapp.com`,ip:`157.240.1.60`,proxy:`Proxy`,rule:`DOMAIN-SUFFIX`,rulePayload:`whatsapp.com`},{host:`www.baidu.com`,ip:`110.242.68.66`,proxy:`DIRECT`,rule:`GEOIP`,rulePayload:`CN`},{host:`www.taobao.com`,ip:`140.205.94.189`,proxy:`DIRECT`,rule:`GEOIP`,rulePayload:`CN`},{host:`www.bilibili.com`,ip:`120.92.78.97`,proxy:`DIRECT`,rule:`GEOIP`,rulePayload:`CN`},{host:`www.zhihu.com`,ip:`103.41.167.234`,proxy:`DIRECT`,rule:`GEOIP`,rulePayload:`CN`}],t=[`Google Chrome`,`Safari`,`Firefox`,`Visual Studio Code`,`Electron`,`node`,`curl`,`Telegram`,`Discord`,`Spotify`],n=[[`Proxy`,`Auto Select`,`Hong Kong`],[`Proxy`,`Auto Select`,`Singapore`],[`Proxy`,`Auto Select`,`Japan`],[`Streaming`,`Japan`],[`Streaming`,`Hong Kong`],[`AI Services`,`United States`],[`DIRECT`]],r=[`alice`,`bob`,`mobile-user`,`guest`,``],i=[];for(let a=0;a<60;a++){let o=e[a%e.length],s=t[Math.floor(Math.random()*t.length)],c=r[a%r.length],l=o.proxy===`DIRECT`?[`DIRECT`]:n[Math.floor(Math.random()*(n.length-1))],u=Math.random()>.85;i.push({id:`conn-${a+1}`,metadata:{...Ne(o.host,o.ip,s,c),network:u?`udp`:`tcp`,type:u?`QUIC`:`HTTP Connect`,sourcePort:String(5e4+a)},upload:Math.floor(Math.random()*1024*1024),download:Math.floor(Math.random()*1024*1024*10),downloadSpeed:Math.floor(Math.random()*1024*500),uploadSpeed:Math.floor(Math.random()*1024*100),start:new Date(Date.now()-Math.floor(Math.random()*6e5)).toISOString(),chains:l,rule:o.rule,rulePayload:o.rulePayload})}return i}var Ve=He();function He(){let e=[{type:r.Info,template:`[DNS] resolve {host} to {ip}`},{type:r.Info,template:`[TCP] {srcIP}:{srcPort} --> {host}:{destPort} match {rule}({payload}) using {proxy}`},{type:r.Info,template:`[UDP] {srcIP}:{srcPort} --> {host}:{destPort} match {rule}({payload}) using {proxy}`},{type:r.Debug,template:`[Proxy] {node} latency: {latency}ms`},{type:r.Warning,template:`[UDP] connection to {ip}:{destPort} timeout`},{type:r.Info,template:`[TUN] {srcIP} --> {host} using {proxy}`},{type:r.Debug,template:`[DNS] cache hit for {host}`},{type:r.Info,template:`[QUIC] {srcIP}:{srcPort} --> {host}:{destPort} match {rule}({payload}) using {proxy}`}],t=[`www.google.com`,`github.com`,`api.openai.com`,`www.youtube.com`,`twitter.com`,`www.netflix.com`,`discord.com`,`www.twitch.tv`,`open.spotify.com`,`www.reddit.com`,`medium.com`,`www.facebook.com`,`www.instagram.com`,`web.telegram.org`,`claude.ai`,`www.baidu.com`,`www.bilibili.com`],n=[`142.250.185.14`,`140.82.121.4`,`104.18.12.191`,`172.217.14.110`,`104.244.42.1`,`54.74.73.31`,`162.159.130.234`,`151.101.2.167`,`35.186.224.25`,`151.101.1.140`,`162.159.152.4`,`157.240.1.35`,`157.240.1.174`,`149.154.167.99`,`104.18.33.47`,`110.242.68.66`,`120.92.78.97`],i=[`Hong Kong`,`Singapore`,`Japan`,`United States`,`Taiwan`],a=[`Proxy[Auto Select(Hong Kong)]`,`Proxy[Auto Select(Singapore)]`,`Streaming[Japan]`,`AI Services[United States]`,`DIRECT`],o=[`DOMAIN-SUFFIX`,`DOMAIN-KEYWORD`,`GEOIP`,`IP-CIDR`,`MATCH`],s=[];for(let r=0;r<60;r++){let c=e[r%e.length],l=t[Math.floor(Math.random()*t.length)],u=n[Math.floor(Math.random()*n.length)],d=i[Math.floor(Math.random()*i.length)],f=a[Math.floor(Math.random()*a.length)],p=o[Math.floor(Math.random()*o.length)],m=c.template.replace(`{host}`,l).replace(`{ip}`,u).replace(`{srcIP}`,`192.168.1.100`).replace(`{srcPort}`,String(5e4+r)).replace(`{destPort}`,`443`).replace(`{node}`,d).replace(`{latency}`,String(50+Math.floor(Math.random()*150))).replace(`{proxy}`,f).replace(`{rule}`,p).replace(`{payload}`,l);s.push({type:c.type,payload:m})}return s}var Ue={up:125e6,down:85e7},We={inuse:45*1024*1024,oslimit:0};function G(){return{mockVersion:je,mockConfig:Me,mockProxies:Pe,mockProxyProviders:Fe,mockRules:Ie,mockRuleProviders:Re,mockConnections:ze,mockLogs:Ve,mockTrafficStats:Ue,mockMemory:We}}function K(){return n().public.mockMode===!0}function q(e){if(!e||e<=0)return Math.random()<.9?Math.round(40+Math.random()*260):0;let t=e*.2;return Math.round(Math.max(1,e-t)+Math.random()*t*2)}function J(e,t){let n={time:new Date().toISOString(),delay:t};e.history=[...e.history??[],n].slice(-10)}function Y(e,t){let n=e[t];if(!n)return{delay:0};let r=n.history?.at(-1)?.delay,i=q(r);return J(n,i),{delay:i}}function Ge(e,t){let n=e[t];if(!n?.all)return{};let r={};for(let t of n.all)r[t]=Y(e,t).delay;return r}function Ke(e,t,n){let r=e[n];if(!r?.proxies)return{};let i={};for(let e of r.proxies){if(!e.name)continue;let n=q(t[e.name]?.history?.at(-1)?.delay??e.history?.at(-1)?.delay);i[e.name]=n,J(e,n),t[e.name]&&J(t[e.name],n)}return i}function qe(e){let t=n().public.mockMode===!0?G():null;if(!t)return{};let r=e.startsWith(`/`)?e.slice(1):e;if(r===`version`)return t.mockVersion;if(r===`configs`)return t.mockConfig;if(r===`proxies`)return{proxies:t.mockProxies};if(r===`providers/proxies`)return{providers:t.mockProxyProviders};if(r===`rules`){let e={};return t.mockRules.forEach((t,n)=>{e[String(n)]=t}),{rules:e}}if(r===`providers/rules`)return{providers:t.mockRuleProviders};if(r===`rules/disable`)return{};if(r===`connections`)return{connections:t.mockConnections,downloadTotal:85e7,uploadTotal:125e6};if(r===`group`)return{groups:{}};if(r.startsWith(`proxies/`)&&r.endsWith(`/delay`)){let e=decodeURIComponent(r.slice(8,-6));return Y(t.mockProxies,e)}if(r.startsWith(`group/`)&&r.endsWith(`/delay`)){let e=decodeURIComponent(r.slice(6,-6));return Ge(t.mockProxies,e)}if(r.startsWith(`providers/proxies/`)&&r.endsWith(`/healthcheck`)){let e=r.slice(18,-12),n=e.split(`/`);return n.length===2?Y(t.mockProxies,decodeURIComponent(n[1])):Ke(t.mockProxyProviders,t.mockProxies,decodeURIComponent(e))}if(r.startsWith(`proxies/`)){let e=decodeURIComponent(r.replace(`proxies/`,``));return t.mockProxies[e]||{}}if(r.startsWith(`providers/proxies/`)){let e=decodeURIComponent(r.replace(`providers/proxies/`,``));return t.mockProxyProviders[e]||{}}return{}}function X(){let e=t().currentEndpoint;if(K()){let e=async e=>qe(e);return{get:t=>({json:()=>e(t)}),post:t=>({json:()=>e(t)}),put:t=>({json:()=>e(t)}),patch:t=>({json:()=>e(t)}),delete:t=>({json:()=>e(t)})}}if(!e)return H.create({});let n=new Headers;return e.secret&&n.set(`Authorization`,`Bearer ${e.secret}`),H.create({prefix:e.url,headers:n,timeout:5e3})}function Z(){let e=new Headers;return H.create({prefix:`https://api.github.com`,headers:e})}function Je(e,t){return H.get(e.endsWith(`/`)?`${e}version`:`${e}/version`,{headers:t?{Authorization:`Bearer ${t}`}:{},timeout:5e3}).then(()=>null).catch(t=>(console.error(t),typeof window<`u`&&window.location.protocol===`https:`&&e.startsWith(`http://`)?`mixed_content`:`network_error`))}function Ye(){return X().delete(`connections`)}function Xe(e){return X().delete(`connections/${e}`)}function Ze(){return X().get(`providers/proxies`).json()}function Qe(){return X().get(`proxies`).json()}function Q(e){return X().put(`providers/proxies/${encodeURIComponent(e)}`)}function $e(e,t){return X().put(`proxies/${encodeURIComponent(e)}`,{body:JSON.stringify({name:t})})}function et(e){return X().delete(`proxies/${encodeURIComponent(e)}`)}function tt(e,t,n,r){let i=X(),a=t?`providers/proxies/${encodeURIComponent(t)}/${encodeURIComponent(e)}/healthcheck`:`proxies/${encodeURIComponent(e)}/delay`;return i.get(a,{searchParams:{url:n,timeout:r}}).json()}function nt(e,t,n){return X().get(`group/${encodeURIComponent(e)}/delay`,{searchParams:{url:t,timeout:n},timeout:Math.max(3e4,n*2+1e4)}).json()}function rt(e,t){return X().patch(`rules/disable`,{json:{[e]:t}})}function it(){let t=e(!1),n=e(!1),r=e(!1),i=e(!1),a=e(!1),o=e(!1),s=e(!1),c=async()=>{let e=X();t.value=!0;try{await e.put(`configs`,{searchParams:{force:!0},json:{path:``,payload:``}})}catch{}finally{t.value=!1}},l=e(!1);return{reloadingConfigFile:t,updatingGEODatabases:n,flushingFakeIPData:r,flushingDNSCache:i,upgradingBackend:a,upgradingUI:o,restartingBackend:s,fetchingRemoteConfig:l,reloadConfigFileAPI:c,flushFakeIPDataAPI:async()=>{let e=X();r.value=!0;try{await e.post(`cache/fakeip/flush`)}catch{}finally{r.value=!1}},flushDNSCacheAPI:async()=>{let e=X();i.value=!0;try{await e.post(`cache/dns/flush`)}catch{}finally{i.value=!1}},updateGEODatabasesAPI:async()=>{let e=X();n.value=!0;try{await e.post(`configs/geo`)}catch{}finally{n.value=!1}},upgradeBackendAPI:async()=>{let e=X();a.value=!0;try{await e.post(`upgrade`)}catch{}finally{a.value=!1}},upgradeUIAPI:async()=>{let e=X();o.value=!0;try{await e.post(`upgrade/ui`)}catch{}finally{o.value=!1}},restartBackendAPI:async()=>{let e=X();s.value=!0;try{await e.post(`restart`)}catch{}finally{s.value=!1}},fetchRemoteConfigAPI:async e=>{let t=X();l.value=!0;try{let n=await(await H.get(e)).text();await t.put(`configs`,{searchParams:{force:!0},json:{path:``,payload:n}})}catch(e){throw console.error(`Failed to fetch remote config:`,e),e}finally{l.value=!1}}}}var $=/(alpha|beta|meta)-?(\w+)/;async function at(e){let{tag_name:t,body:n}=await Z().get(`repos/MetaCubeX/metacubexd/releases/latest`).json();return{isUpdateAvailable:i(t,e)>0,changelog:n}}async function ot(e){let t=Z(),n=`repos/MetaCubeX/mihomo`,r=$.exec(e),a=async(e,r)=>{let{assets:i,body:a}=await t.get(`${n}/${e}`).json();return{isUpdateAvailable:!i.some(({name:e})=>e.includes(r)),changelog:a}};if(r){let e=r[2]||``,t=r[1]||``;return t===`meta`?await a(`releases/latest`,e):t===`alpha`?await a(`releases/tags/Prerelease-Alpha`,e):{isUpdateAvailable:!1}}let{tag_name:o,body:s}=await t.get(`${n}/releases/latest`).json();return{isUpdateAvailable:i(o,e)>0,changelog:s}}async function st(e,t=10){return(await Z().get(`repos/MetaCubeX/metacubexd/releases`,{searchParams:{per_page:t}}).json()).map(t=>({version:t.tag_name,changelog:t.body,publishedAt:t.published_at,isCurrent:t.tag_name===e}))}async function ct(e,t=10){let n=Z(),r=`repos/MetaCubeX/mihomo`,i=$.exec(e);if(!i){let i=await n.get(`${r}/releases`,{searchParams:{per_page:t}}).json();return i=i.filter(e=>!e.tag_name.includes(`Alpha`)&&!e.tag_name.includes(`Prerelease`)),i.map(t=>({version:t.tag_name,changelog:t.body,publishedAt:t.published_at,isCurrent:t.tag_name===e}))}let a=i[1]||``,o=i[2]||``,s=[];return a===`meta`?(s=await n.get(`${r}/releases`,{searchParams:{per_page:t}}).json(),s=s.filter(e=>!e.tag_name.includes(`Alpha`)&&!e.tag_name.includes(`Prerelease`))):a===`alpha`&&(s=await n.get(`${r}/releases`,{searchParams:{per_page:t*2}}).json(),s=s.filter(e=>e.tag_name.includes(`Alpha`)||e.tag_name.includes(`Prerelease`)).slice(0,t)),s.map(e=>({version:e.tag_name,changelog:e.body,publishedAt:e.published_at,isCurrent:e.assets?.some(({name:e})=>e.includes(o))??!1}))}export{K as _,ct as a,H as b,Ze as c,tt as d,$e as f,it as g,Q as h,Xe as i,at as l,et as m,Je as n,st as o,rt as p,Ye as r,Qe as s,ot as t,nt as u,X as v,G as y}; |