@elysiajs/eden 0.7.4 → 0.7.7

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/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright 2022 saltyAom
1
+ Copyright 2023 saltyAom
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4
4
 
@@ -0,0 +1 @@
1
+ import{a as R}from"./chunk-Y6SMVGJX.mjs";var L=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let r="";for(let[c,s]of Object.entries(t))r+=`${c}=${s}&`;return`${n}${e}?${r.slice(0,-1)}`};var T=typeof FileList>"u",W=n=>T?n instanceof Blob:n instanceof FileList||n instanceof File,q=n=>{if(!n)return!1;for(let e in n){if(W(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>W(t)))return!0}return!1},k=n=>T?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{let r=new File([t.result],n.name,{lastModified:n.lastModified,type:n.type});e(r)},t.readAsArrayBuffer(n)}),x=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,r){return this.addEventListener(e,t,r)}off(e,t,r){return this.ws.removeEventListener(e,t,r),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,r){return this.ws.addEventListener(e,c=>{if(e==="message"){let s=c.data.toString(),u=s.charCodeAt(0);if(u===47||u===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="false"&&(s=!1):s=+s;t({...c,data:s})}else t(c)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(r,c,s){return K(n,`${e}/${c.toString()}`,t)},apply(r,c,[s,u={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:N,$fetch:$,$headers:j,$transform:g,getRaw:M,...I}=s??{};y??=I;let w=e.lastIndexOf("/"),b=e.slice(w+1).toUpperCase(),S=L(n,w===-1?"/":e.slice(0,w),Object.assign(u.query??{},N)),P=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,v=g?Array.isArray(g)?g:[g]:void 0;return v&&(p?p=v.concat(p):p=v),b==="SUBSCRIBE"?new x(S.replace(/^([^]+):\/\//,S.startsWith("https://")?"wss://":"ws://")):(async C=>{let f,F={...t.$fetch?.headers,...$?.headers,...u.headers,...j};if(b!=="GET"&&b!=="HEAD"){f=Object.keys(y).length||Array.isArray(y)?y:void 0;let i=typeof f=="object"||Array.isArray(y);if(i&&q(f)){let m=new FormData;for(let[E,o]of Object.entries(f))if(T)m.append(E,o);else if(o instanceof File)m.append(E,await k(o));else if(o instanceof FileList)for(let l=0;l<o.length;l++)m.append(E,await k(o[l]));else if(Array.isArray(o))for(let l=0;l<o.length;l++){let A=o[l];m.append(E,A instanceof File?await k(A):A)}else m.append(E,o);f=m}else F["content-type"]=i?"application/json":"text/plain",f=i?JSON.stringify(f):y}let a=await P(S,{method:b,body:f,...t.$fetch,...u.fetch,...$,headers:F}),h;if(C.getRaw)return a;switch(a.headers.get("Content-Type")?.split(";")[0]){case"application/json":h=await a.json();break;default:h=await a.text().then(i=>Number.isNaN(+i)?i==="true"?!0:i==="false"?!1:i:+i)}let O=a.status>=300||a.status<200?new R(a.status,h):null;if(p)for(let i of p){let d=i({data:h,status:a.status,headers:a.headers,response:a,error:O});d instanceof Promise&&(d=await d),d!=null&&(h=d)}return{data:h,error:O,response:a,status:a.status,headers:a.headers}})({getRaw:M})}}),U=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return K(n,r,e)}});export{x as a,U as b};
@@ -1 +1 @@
1
- "use strict";var Eden=(()=>{var F=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)F(n,t,{get:e[t],enumerable:!0})},D=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of P(e))!I.call(n,a)&&a!==t&&F(n,a,{get:()=>e[a],enumerable:!(s=B(e,a))||s.enumerable});return n};var J=n=>D(F({},"__esModule",{value:!0}),n);var V={};M(V,{edenFetch:()=>R,edenTreaty:()=>j});var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[a,r]of Object.entries(t))s+=`${a}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`};var $=typeof FileList>"u",N=n=>$?n instanceof Blob:n instanceof FileList||n instanceof File,U=n=>{if(!n)return!1;for(let e in n){if(N(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>N(t)))return!0}return!1},C=n=>$?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),A=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let r=a.data.toString(),c=r.charCodeAt(0);if(c===47||c===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...a,data:r})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return K(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:c,$headers:w,$transform:m,...v}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let d=e.lastIndexOf("/"),i=e.slice(d+1).toUpperCase(),u=W(n,d===-1?"/":e.slice(0,d),r),l=t.fetcher??fetch,E=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,k=m?Array.isArray(m)?m:[m]:void 0;return k&&(E?E=k.concat(E):E=k),i==="SUBSCRIBE"?new A(u.replace(/^([^]+):\/\//,u.startsWith("https://")?"wss://":"ws://")):(async()=>{let y,L={...t.$fetch?.headers,...c?.headers,...w};if(i!=="GET"&&i!=="HEAD"){y=Object.keys(v).length?v:void 0;let f=typeof y=="object";if(f&&U(y)){let b=new FormData;for(let[x,h]of Object.entries(y))if($)b.append(x,h);else if(h instanceof File)b.append(x,await C(h));else if(h instanceof FileList)for(let T=0;T<h.length;T++)b.append(x,await C(h[T]));else b.append(x,h);y=b}else L["content-type"]=f?"application/json":"text/plain",f&&(y=JSON.stringify(y))}let o=await l(u,{method:i,body:y,...t.$fetch,...c,headers:L}),g;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await o.json();break;default:g=await o.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}let O=o.status>=300||o.status<200?new S(o.status,g):null;if(E)for(let f of E){let p=f({data:g,status:o.status,headers:o.headers,response:o,error:O});p instanceof Promise&&(p=await p),p!=null&&(g=p)}return{data:g,error:O,response:o,status:o.status,headers:o.headers}})()}}),j=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return K(n,s,e)}});var R=(n,e)=>(t,{query:s,params:a,body:r,...c}={})=>{a&&Object.entries(a).forEach(([i,u])=>{t=t.replace(`:${i}`,u)});let w=c.headers?.["Content-Type"];if(!w||w==="application/json")try{r=JSON.stringify(r)}catch{}let m=e?.fetcher||globalThis.fetch,v=s?`?${new URLSearchParams(s).toString()}`:"",d=()=>m(n+t+v,{...c,method:c.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...c.headers}:c.headers,body:r}).then(async i=>{let u;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await i.json();break;default:u=await i.text().then(l=>Number.isNaN(+l)?l==="true"?!0:l==="false"?!1:l:+l);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:d,error:new S(i.status,u)}:{data:u,error:null,status:i.status,headers:i.headers,retry:d}});return d()};return J(V);})();
1
+ "use strict";var Eden=(()=>{var R=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var B=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumerable:!0})},G=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of V(e))!z.call(r,a)&&a!==t&&R(r,a,{get:()=>e[a],enumerable:!(s=U(e,a))||s.enumerable});return r};var H=r=>G(R({},"__esModule",{value:!0}),r);var Q={};B(Q,{edenFetch:()=>q,edenTreaty:()=>I});var w=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var K=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let s="";for(let[a,n]of Object.entries(t))s+=`${a}=${n}&`;return`${r}${e}?${s.slice(0,-1)}`};var N=typeof FileList>"u",M=r=>N?r instanceof Blob:r instanceof FileList||r instanceof File,_=r=>{if(!r)return!1;for(let e in r){if(M(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>M(t)))return!0}return!1},j=r=>N?r:new Promise(e=>{let t=new FileReader;t.onload=()=>{let s=new File([t.result],r.name,{lastModified:r.lastModified,type:r.type});e(s)},t.readAsArrayBuffer(r)}),L=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let n=a.data.toString(),c=n.charCodeAt(0);if(c===47||c===123)try{n=JSON.parse(n)}catch{}else Number.isNaN(+n)?n==="true"?n=!0:n==="false"&&(n=!1):n=+n;t({...a,data:n})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},P=(r,e="",t)=>new Proxy(()=>{},{get(s,a,n){return P(r,`${e}/${a.toString()}`,t)},apply(s,a,[n,c={}]=[{},{}]){let y=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:A,$fetch:v,$headers:S,$transform:i,getRaw:d,...p}=n??{};y??=p;let T=e.lastIndexOf("/"),k=e.slice(T+1).toUpperCase(),F=K(r,T===-1?"/":e.slice(0,T),Object.assign(c.query??{},A)),D=t.fetcher??fetch,E=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,$=i?Array.isArray(i)?i:[i]:void 0;return $&&(E?E=$.concat(E):E=$),k==="SUBSCRIBE"?new L(F.replace(/^([^]+):\/\//,F.startsWith("https://")?"wss://":"ws://")):(async J=>{let l,W={...t.$fetch?.headers,...v?.headers,...c.headers,...S};if(k!=="GET"&&k!=="HEAD"){l=Object.keys(y).length||Array.isArray(y)?y:void 0;let f=typeof l=="object"||Array.isArray(y);if(f&&_(l)){let b=new FormData;for(let[x,u]of Object.entries(l))if(N)b.append(x,u);else if(u instanceof File)b.append(x,await j(u));else if(u instanceof FileList)for(let m=0;m<u.length;m++)b.append(x,await j(u[m]));else if(Array.isArray(u))for(let m=0;m<u.length;m++){let O=u[m];b.append(x,O instanceof File?await j(O):O)}else b.append(x,u);l=b}else W["content-type"]=f?"application/json":"text/plain",l=f?JSON.stringify(l):y}let o=await D(F,{method:k,body:l,...t.$fetch,...c.fetch,...v,headers:W}),g;if(J.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await o.json();break;default:g=await o.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}let C=o.status>=300||o.status<200?new w(o.status,g):null;if(E)for(let f of E){let h=f({data:g,status:o.status,headers:o.headers,response:o,error:C});h instanceof Promise&&(h=await h),h!=null&&(g=h)}return{data:g,error:C,response:o,status:o.status,headers:o.headers}})({getRaw:d})}}),I=(r,e={fetcher:fetch})=>new Proxy({},{get(t,s){return P(r,s,e)}});var q=(r,e)=>(t,{query:s,params:a,body:n,...c}={})=>{a&&Object.entries(a).forEach(([i,d])=>{t=t.replace(`:${i}`,d)});let y=c.headers?.["Content-Type"];if(!y||y==="application/json")try{n=JSON.stringify(n)}catch{}let A=e?.fetcher||globalThis.fetch,v=s?`?${new URLSearchParams(s).toString()}`:"",S=()=>A(r+t+v,{...c,method:c.method?.toUpperCase()||"GET",headers:n?{"content-type":"application/json",...c.headers}:c.headers,body:n}).then(async i=>{let d;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":d=await i.json();break;default:d=await i.text().then(p=>Number.isNaN(+p)?p==="true"?!0:p==="false"?!1:p:+p);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:S,error:new w(i.status,d)}:{data:d,error:null,status:i.status,headers:i.headers,retry:S}});return S()};return H(Q);})();
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var F=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)F(n,t,{get:e[t],enumerable:!0})},D=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of P(e))!I.call(n,a)&&a!==t&&F(n,a,{get:()=>e[a],enumerable:!(s=B(e,a))||s.enumerable});return n};var J=n=>D(F({},"__esModule",{value:!0}),n);var V={};M(V,{edenFetch:()=>R,edenTreaty:()=>j});module.exports=J(V);var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[a,r]of Object.entries(t))s+=`${a}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`};var $=typeof FileList>"u",N=n=>$?n instanceof Blob:n instanceof FileList||n instanceof File,U=n=>{if(!n)return!1;for(let e in n){if(N(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>N(t)))return!0}return!1},C=n=>$?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),A=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let r=a.data.toString(),c=r.charCodeAt(0);if(c===47||c===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...a,data:r})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return K(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:c,$headers:w,$transform:m,...v}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let d=e.lastIndexOf("/"),i=e.slice(d+1).toUpperCase(),u=W(n,d===-1?"/":e.slice(0,d),r),l=t.fetcher??fetch,E=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,k=m?Array.isArray(m)?m:[m]:void 0;return k&&(E?E=k.concat(E):E=k),i==="SUBSCRIBE"?new A(u.replace(/^([^]+):\/\//,u.startsWith("https://")?"wss://":"ws://")):(async()=>{let y,L={...t.$fetch?.headers,...c?.headers,...w};if(i!=="GET"&&i!=="HEAD"){y=Object.keys(v).length?v:void 0;let f=typeof y=="object";if(f&&U(y)){let b=new FormData;for(let[x,h]of Object.entries(y))if($)b.append(x,h);else if(h instanceof File)b.append(x,await C(h));else if(h instanceof FileList)for(let T=0;T<h.length;T++)b.append(x,await C(h[T]));else b.append(x,h);y=b}else L["content-type"]=f?"application/json":"text/plain",f&&(y=JSON.stringify(y))}let o=await l(u,{method:i,body:y,...t.$fetch,...c,headers:L}),g;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await o.json();break;default:g=await o.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}let O=o.status>=300||o.status<200?new S(o.status,g):null;if(E)for(let f of E){let p=f({data:g,status:o.status,headers:o.headers,response:o,error:O});p instanceof Promise&&(p=await p),p!=null&&(g=p)}return{data:g,error:O,response:o,status:o.status,headers:o.headers}})()}}),j=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return K(n,s,e)}});var R=(n,e)=>(t,{query:s,params:a,body:r,...c}={})=>{a&&Object.entries(a).forEach(([i,u])=>{t=t.replace(`:${i}`,u)});let w=c.headers?.["Content-Type"];if(!w||w==="application/json")try{r=JSON.stringify(r)}catch{}let m=e?.fetcher||globalThis.fetch,v=s?`?${new URLSearchParams(s).toString()}`:"",d=()=>m(n+t+v,{...c,method:c.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...c.headers}:c.headers,body:r}).then(async i=>{let u;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await i.json();break;default:u=await i.text().then(l=>Number.isNaN(+l)?l==="true"?!0:l==="false"?!1:l:+l);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:d,error:new S(i.status,u)}:{data:u,error:null,status:i.status,headers:i.headers,retry:d}});return d()};0&&(module.exports={edenFetch,edenTreaty});
1
+ "use strict";var R=Object.defineProperty;var U=Object.getOwnPropertyDescriptor;var V=Object.getOwnPropertyNames;var z=Object.prototype.hasOwnProperty;var B=(r,e)=>{for(var t in e)R(r,t,{get:e[t],enumerable:!0})},G=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of V(e))!z.call(r,a)&&a!==t&&R(r,a,{get:()=>e[a],enumerable:!(s=U(e,a))||s.enumerable});return r};var H=r=>G(R({},"__esModule",{value:!0}),r);var Q={};B(Q,{edenFetch:()=>q,edenTreaty:()=>I});module.exports=H(Q);var w=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var K=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let s="";for(let[a,n]of Object.entries(t))s+=`${a}=${n}&`;return`${r}${e}?${s.slice(0,-1)}`};var N=typeof FileList>"u",M=r=>N?r instanceof Blob:r instanceof FileList||r instanceof File,_=r=>{if(!r)return!1;for(let e in r){if(M(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>M(t)))return!0}return!1},j=r=>N?r:new Promise(e=>{let t=new FileReader;t.onload=()=>{let s=new File([t.result],r.name,{lastModified:r.lastModified,type:r.type});e(s)},t.readAsArrayBuffer(r)}),L=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let n=a.data.toString(),c=n.charCodeAt(0);if(c===47||c===123)try{n=JSON.parse(n)}catch{}else Number.isNaN(+n)?n==="true"?n=!0:n==="false"&&(n=!1):n=+n;t({...a,data:n})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},P=(r,e="",t)=>new Proxy(()=>{},{get(s,a,n){return P(r,`${e}/${a.toString()}`,t)},apply(s,a,[n,c={}]=[{},{}]){let y=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:A,$fetch:v,$headers:S,$transform:i,getRaw:d,...p}=n??{};y??=p;let T=e.lastIndexOf("/"),k=e.slice(T+1).toUpperCase(),F=K(r,T===-1?"/":e.slice(0,T),Object.assign(c.query??{},A)),D=t.fetcher??fetch,E=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,$=i?Array.isArray(i)?i:[i]:void 0;return $&&(E?E=$.concat(E):E=$),k==="SUBSCRIBE"?new L(F.replace(/^([^]+):\/\//,F.startsWith("https://")?"wss://":"ws://")):(async J=>{let l,W={...t.$fetch?.headers,...v?.headers,...c.headers,...S};if(k!=="GET"&&k!=="HEAD"){l=Object.keys(y).length||Array.isArray(y)?y:void 0;let f=typeof l=="object"||Array.isArray(y);if(f&&_(l)){let b=new FormData;for(let[x,u]of Object.entries(l))if(N)b.append(x,u);else if(u instanceof File)b.append(x,await j(u));else if(u instanceof FileList)for(let m=0;m<u.length;m++)b.append(x,await j(u[m]));else if(Array.isArray(u))for(let m=0;m<u.length;m++){let O=u[m];b.append(x,O instanceof File?await j(O):O)}else b.append(x,u);l=b}else W["content-type"]=f?"application/json":"text/plain",l=f?JSON.stringify(l):y}let o=await D(F,{method:k,body:l,...t.$fetch,...c.fetch,...v,headers:W}),g;if(J.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await o.json();break;default:g=await o.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}let C=o.status>=300||o.status<200?new w(o.status,g):null;if(E)for(let f of E){let h=f({data:g,status:o.status,headers:o.headers,response:o,error:C});h instanceof Promise&&(h=await h),h!=null&&(g=h)}return{data:g,error:C,response:o,status:o.status,headers:o.headers}})({getRaw:d})}}),I=(r,e={fetcher:fetch})=>new Proxy({},{get(t,s){return P(r,s,e)}});var q=(r,e)=>(t,{query:s,params:a,body:n,...c}={})=>{a&&Object.entries(a).forEach(([i,d])=>{t=t.replace(`:${i}`,d)});let y=c.headers?.["Content-Type"];if(!y||y==="application/json")try{n=JSON.stringify(n)}catch{}let A=e?.fetcher||globalThis.fetch,v=s?`?${new URLSearchParams(s).toString()}`:"",S=()=>A(r+t+v,{...c,method:c.method?.toUpperCase()||"GET",headers:n?{"content-type":"application/json",...c.headers}:c.headers,body:n}).then(async i=>{let d;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":d=await i.json();break;default:d=await i.text().then(p=>Number.isNaN(+p)?p==="true"?!0:p==="false"?!1:p:+p);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:S,error:new w(i.status,d)}:{data:d,error:null,status:i.status,headers:i.headers,retry:S}});return S()};0&&(module.exports={edenFetch,edenTreaty});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{b as e}from"./chunk-2G5RO3ND.mjs";import{a as t}from"./chunk-3KYW6H6M.mjs";import"./chunk-Y6SMVGJX.mjs";export{t as edenFetch,e as edenTreaty};
1
+ import{b as e}from"./chunk-NZCTJ6S3.mjs";import{a as t}from"./chunk-3KYW6H6M.mjs";import"./chunk-Y6SMVGJX.mjs";export{t as edenFetch,e as edenTreaty};
@@ -8,9 +8,6 @@ type Replace<RecordType, TargetType, GenericType> = {
8
8
  [K in keyof RecordType]: RecordType[K] extends TargetType ? GenericType : RecordType[K];
9
9
  };
10
10
  type Split<S extends string> = S extends `${infer Head}/${infer Tail}` ? Head extends '' ? Tail extends '' ? [] : Split<Tail> : [Head, ...Split<Tail>] : S extends `/` ? [] : S extends `${infer Head}/` ? [Head] : [S];
11
- type Prettify<T> = {
12
- [K in keyof T]: T[K];
13
- } & {};
14
11
  type AnySchema = {
15
12
  body: unknown;
16
13
  headers: unknown;
@@ -39,6 +36,13 @@ export declare namespace EdenTreaty {
39
36
  fetcher?: typeof fetch;
40
37
  transform?: Transform;
41
38
  }
39
+ export type DetailedResponse = {
40
+ data: any;
41
+ error: any;
42
+ response: Response;
43
+ status: number;
44
+ headers: Headers;
45
+ };
42
46
  export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
43
47
  infer Prefix extends string | number,
44
48
  ...infer Rest extends (string | number)[]
@@ -51,6 +55,7 @@ export declare namespace EdenTreaty {
51
55
  $query: Route['query'];
52
56
  }) => EdenWS<Route> : ((params: {
53
57
  $fetch?: RequestInit;
58
+ getRaw?: boolean;
54
59
  } & (IsUnknown<Route['body']> extends false ? Replace<Route['body'], Blob | Blob[], Files> : {}) & (undefined extends Route['query'] ? {
55
60
  $query?: Record<string, string>;
56
61
  } : {
@@ -75,16 +80,26 @@ export declare namespace EdenTreaty {
75
80
  $params: undefined;
76
81
  $headers: undefined;
77
82
  $query: undefined;
78
- } extends Params ? (params?: Prettify<Params & {
79
- $transform?: EdenTreaty.Transform<Response>;
80
- }>) => Response : (params: Prettify<Params & {
81
- $transform?: EdenTreaty.Transform<Response>;
82
- }>) => Response : never : never;
83
+ } extends Params ? (params?: Params, options?: {
84
+ fetch?: RequestInit;
85
+ transform?: EdenTreaty.Transform<Response>;
86
+ query?: Params['query'];
87
+ headers?: Params['headers'];
88
+ }) => Response : (params: Params, options?: {
89
+ fetch?: RequestInit;
90
+ transform?: EdenTreaty.Transform<Response>;
91
+ query?: Params['query'];
92
+ headers?: Params['headers'];
93
+ }) => Response : never : never;
83
94
  } : {};
84
95
  export interface OnMessage<Data = unknown> extends MessageEvent {
85
96
  data: Data;
86
97
  rawData: MessageEvent['data'];
87
98
  }
99
+ export type ExecuteOptions = {
100
+ getRaw?: boolean;
101
+ };
102
+ export type ExecuteReturnType<T extends ExecuteOptions> = T['getRaw'] extends true ? Response : DetailedResponse;
88
103
  export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
89
104
  export {};
90
105
  }
package/dist/treaty.d.mts CHANGED
@@ -8,9 +8,6 @@ type Replace<RecordType, TargetType, GenericType> = {
8
8
  [K in keyof RecordType]: RecordType[K] extends TargetType ? GenericType : RecordType[K];
9
9
  };
10
10
  type Split<S extends string> = S extends `${infer Head}/${infer Tail}` ? Head extends '' ? Tail extends '' ? [] : Split<Tail> : [Head, ...Split<Tail>] : S extends `/` ? [] : S extends `${infer Head}/` ? [Head] : [S];
11
- type Prettify<T> = {
12
- [K in keyof T]: T[K];
13
- } & {};
14
11
  type AnySchema = {
15
12
  body: unknown;
16
13
  headers: unknown;
@@ -39,6 +36,13 @@ declare namespace EdenTreaty {
39
36
  fetcher?: typeof fetch;
40
37
  transform?: Transform;
41
38
  }
39
+ export type DetailedResponse = {
40
+ data: any;
41
+ error: any;
42
+ response: Response;
43
+ status: number;
44
+ headers: Headers;
45
+ };
42
46
  export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
43
47
  infer Prefix extends string | number,
44
48
  ...infer Rest extends (string | number)[]
@@ -51,6 +55,7 @@ declare namespace EdenTreaty {
51
55
  $query: Route['query'];
52
56
  }) => EdenWS<Route> : ((params: {
53
57
  $fetch?: RequestInit;
58
+ getRaw?: boolean;
54
59
  } & (IsUnknown<Route['body']> extends false ? Replace<Route['body'], Blob | Blob[], Files> : {}) & (undefined extends Route['query'] ? {
55
60
  $query?: Record<string, string>;
56
61
  } : {
@@ -75,16 +80,26 @@ declare namespace EdenTreaty {
75
80
  $params: undefined;
76
81
  $headers: undefined;
77
82
  $query: undefined;
78
- } extends Params ? (params?: Prettify<Params & {
79
- $transform?: EdenTreaty.Transform<Response>;
80
- }>) => Response : (params: Prettify<Params & {
81
- $transform?: EdenTreaty.Transform<Response>;
82
- }>) => Response : never : never;
83
+ } extends Params ? (params?: Params, options?: {
84
+ fetch?: RequestInit;
85
+ transform?: EdenTreaty.Transform<Response>;
86
+ query?: Params['query'];
87
+ headers?: Params['headers'];
88
+ }) => Response : (params: Params, options?: {
89
+ fetch?: RequestInit;
90
+ transform?: EdenTreaty.Transform<Response>;
91
+ query?: Params['query'];
92
+ headers?: Params['headers'];
93
+ }) => Response : never : never;
83
94
  } : {};
84
95
  export interface OnMessage<Data = unknown> extends MessageEvent {
85
96
  data: Data;
86
97
  rawData: MessageEvent['data'];
87
98
  }
99
+ export type ExecuteOptions = {
100
+ getRaw?: boolean;
101
+ };
102
+ export type ExecuteReturnType<T extends ExecuteOptions> = T['getRaw'] extends true ? Response : DetailedResponse;
88
103
  export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
89
104
  export {};
90
105
  }
package/dist/treaty.d.ts CHANGED
@@ -8,9 +8,6 @@ type Replace<RecordType, TargetType, GenericType> = {
8
8
  [K in keyof RecordType]: RecordType[K] extends TargetType ? GenericType : RecordType[K];
9
9
  };
10
10
  type Split<S extends string> = S extends `${infer Head}/${infer Tail}` ? Head extends '' ? Tail extends '' ? [] : Split<Tail> : [Head, ...Split<Tail>] : S extends `/` ? [] : S extends `${infer Head}/` ? [Head] : [S];
11
- type Prettify<T> = {
12
- [K in keyof T]: T[K];
13
- } & {};
14
11
  type AnySchema = {
15
12
  body: unknown;
16
13
  headers: unknown;
@@ -39,6 +36,13 @@ declare namespace EdenTreaty {
39
36
  fetcher?: typeof fetch;
40
37
  transform?: Transform;
41
38
  }
39
+ export type DetailedResponse = {
40
+ data: any;
41
+ error: any;
42
+ response: Response;
43
+ status: number;
44
+ headers: Headers;
45
+ };
42
46
  export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
43
47
  infer Prefix extends string | number,
44
48
  ...infer Rest extends (string | number)[]
@@ -51,6 +55,7 @@ declare namespace EdenTreaty {
51
55
  $query: Route['query'];
52
56
  }) => EdenWS<Route> : ((params: {
53
57
  $fetch?: RequestInit;
58
+ getRaw?: boolean;
54
59
  } & (IsUnknown<Route['body']> extends false ? Replace<Route['body'], Blob | Blob[], Files> : {}) & (undefined extends Route['query'] ? {
55
60
  $query?: Record<string, string>;
56
61
  } : {
@@ -75,16 +80,26 @@ declare namespace EdenTreaty {
75
80
  $params: undefined;
76
81
  $headers: undefined;
77
82
  $query: undefined;
78
- } extends Params ? (params?: Prettify<Params & {
79
- $transform?: EdenTreaty.Transform<Response>;
80
- }>) => Response : (params: Prettify<Params & {
81
- $transform?: EdenTreaty.Transform<Response>;
82
- }>) => Response : never : never;
83
+ } extends Params ? (params?: Params, options?: {
84
+ fetch?: RequestInit;
85
+ transform?: EdenTreaty.Transform<Response>;
86
+ query?: Params['query'];
87
+ headers?: Params['headers'];
88
+ }) => Response : (params: Params, options?: {
89
+ fetch?: RequestInit;
90
+ transform?: EdenTreaty.Transform<Response>;
91
+ query?: Params['query'];
92
+ headers?: Params['headers'];
93
+ }) => Response : never : never;
83
94
  } : {};
84
95
  export interface OnMessage<Data = unknown> extends MessageEvent {
85
96
  data: Data;
86
97
  rawData: MessageEvent['data'];
87
98
  }
99
+ export type ExecuteOptions = {
100
+ getRaw?: boolean;
101
+ };
102
+ export type ExecuteReturnType<T extends ExecuteOptions> = T['getRaw'] extends true ? Response : DetailedResponse;
88
103
  export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
89
104
  export {};
90
105
  }
@@ -1 +1 @@
1
- "use strict";var Eden=(()=>{var x=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)x(n,t,{get:e[t],enumerable:!0})},P=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of C(e))!I.call(n,a)&&a!==t&&x(n,a,{get:()=>e[a],enumerable:!(s=B(e,a))||s.enumerable});return n};var j=n=>P(x({},"__esModule",{value:!0}),n);var V={};M(V,{EdenWS:()=>v,edenTreaty:()=>J});var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[a,r]of Object.entries(t))s+=`${a}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`};var A=typeof FileList>"u",O=n=>A?n instanceof Blob:n instanceof FileList||n instanceof File,D=n=>{if(!n)return!1;for(let e in n){if(O(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>O(t)))return!0}return!1},F=n=>A?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),v=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let r=a.data.toString(),y=r.charCodeAt(0);if(y===47||y===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...a,data:r})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return K(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:y,$headers:N,$transform:h,...$}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let g=e.lastIndexOf("/"),m=e.slice(g+1).toUpperCase(),b=W(n,g===-1?"/":e.slice(0,g),r),R=t.fetcher??fetch,d=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,w=h?Array.isArray(h)?h:[h]:void 0;return w&&(d?d=w.concat(d):d=w),m==="SUBSCRIBE"?new v(b.replace(/^([^]+):\/\//,b.startsWith("https://")?"wss://":"ws://")):(async()=>{let f,L={...t.$fetch?.headers,...y?.headers,...N};if(m!=="GET"&&m!=="HEAD"){f=Object.keys($).length?$:void 0;let o=typeof f=="object";if(o&&D(f)){let p=new FormData;for(let[E,u]of Object.entries(f))if(A)p.append(E,u);else if(u instanceof File)p.append(E,await F(u));else if(u instanceof FileList)for(let k=0;k<u.length;k++)p.append(E,await F(u[k]));else p.append(E,u);f=p}else L["content-type"]=o?"application/json":"text/plain",o&&(f=JSON.stringify(f))}let i=await R(b,{method:m,body:f,...t.$fetch,...y,headers:L}),l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(o=>Number.isNaN(+o)?o==="true"?!0:o==="false"?!1:o:+o)}let T=i.status>=300||i.status<200?new S(i.status,l):null;if(d)for(let o of d){let c=o({data:l,status:i.status,headers:i.headers,response:i,error:T});c instanceof Promise&&(c=await c),c!=null&&(l=c)}return{data:l,error:T,response:i,status:i.status,headers:i.headers}})()}}),J=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return K(n,s,e)}});return j(V);})();
1
+ "use strict";var Eden=(()=>{var T=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var z=(s,e)=>{for(var t in e)T(s,t,{get:e[t],enumerable:!0})},B=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of J(e))!V.call(s,a)&&a!==t&&T(s,a,{get:()=>e[a],enumerable:!(r=D(e,a))||r.enumerable});return s};var H=s=>B(T({},"__esModule",{value:!0}),s);var _={};z(_,{EdenWS:()=>S,edenTreaty:()=>G});var w=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(s,e,t)=>{if(s.endsWith("/")||(s+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${s}${e}`;let r="";for(let[a,n]of Object.entries(t))r+=`${a}=${n}&`;return`${s}${e}?${r.slice(0,-1)}`};var O=typeof FileList>"u",K=s=>O?s instanceof Blob:s instanceof FileList||s instanceof File,U=s=>{if(!s)return!1;for(let e in s){if(K(s[e]))return!0;if(Array.isArray(s[e])&&s[e].find(t=>K(t)))return!0}return!1},$=s=>O?s:new Promise(e=>{let t=new FileReader;t.onload=()=>{let r=new File([t.result],s.name,{lastModified:s.lastModified,type:s.type});e(r)},t.readAsArrayBuffer(s)}),S=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,r){return this.addEventListener(e,t,r)}off(e,t,r){return this.ws.removeEventListener(e,t,r),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,r){return this.ws.addEventListener(e,a=>{if(e==="message"){let n=a.data.toString(),l=n.charCodeAt(0);if(l===47||l===123)try{n=JSON.parse(n)}catch{}else Number.isNaN(+n)?n==="true"?n=!0:n==="false"&&(n=!1):n=+n;t({...a,data:n})}else t(a)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},j=(s,e="",t)=>new Proxy(()=>{},{get(r,a,n){return j(s,`${e}/${a.toString()}`,t)},apply(r,a,[n,l={}]=[{},{}]){let u=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:N,$fetch:F,$headers:M,$transform:E,getRaw:I,...P}=n??{};u??=P;let v=e.lastIndexOf("/"),b=e.slice(v+1).toUpperCase(),x=W(s,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},N)),C=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,k=E?Array.isArray(E)?E:[E]:void 0;return k&&(p?p=k.concat(p):p=k),b==="SUBSCRIBE"?new S(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async q=>{let f,R={...t.$fetch?.headers,...F?.headers,...l.headers,...M};if(b!=="GET"&&b!=="HEAD"){f=Object.keys(u).length||Array.isArray(u)?u:void 0;let o=typeof f=="object"||Array.isArray(u);if(o&&U(f)){let m=new FormData;for(let[g,c]of Object.entries(f))if(O)m.append(g,c);else if(c instanceof File)m.append(g,await $(c));else if(c instanceof FileList)for(let d=0;d<c.length;d++)m.append(g,await $(c[d]));else if(Array.isArray(c))for(let d=0;d<c.length;d++){let A=c[d];m.append(g,A instanceof File?await $(A):A)}else m.append(g,c);f=m}else R["content-type"]=o?"application/json":"text/plain",f=o?JSON.stringify(f):u}let i=await C(x,{method:b,body:f,...t.$fetch,...l.fetch,...F,headers:R}),h;if(q.getRaw)return i;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":h=await i.json();break;default:h=await i.text().then(o=>Number.isNaN(+o)?o==="true"?!0:o==="false"?!1:o:+o)}let L=i.status>=300||i.status<200?new w(i.status,h):null;if(p)for(let o of p){let y=o({data:h,status:i.status,headers:i.headers,response:i,error:L});y instanceof Promise&&(y=await y),y!=null&&(h=y)}return{data:h,error:L,response:i,status:i.status,headers:i.headers}})({getRaw:I})}}),G=(s,e={fetcher:fetch})=>new Proxy({},{get(t,r){return j(s,r,e)}});return H(_);})();
package/dist/treaty.js CHANGED
@@ -1 +1 @@
1
- "use strict";var x=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)x(n,t,{get:e[t],enumerable:!0})},P=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of C(e))!I.call(n,a)&&a!==t&&x(n,a,{get:()=>e[a],enumerable:!(s=B(e,a))||s.enumerable});return n};var j=n=>P(x({},"__esModule",{value:!0}),n);var V={};M(V,{EdenWS:()=>v,edenTreaty:()=>J});module.exports=j(V);var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[a,r]of Object.entries(t))s+=`${a}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`};var A=typeof FileList>"u",O=n=>A?n instanceof Blob:n instanceof FileList||n instanceof File,D=n=>{if(!n)return!1;for(let e in n){if(O(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>O(t)))return!0}return!1},F=n=>A?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),v=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let r=a.data.toString(),y=r.charCodeAt(0);if(y===47||y===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...a,data:r})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return K(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:y,$headers:N,$transform:h,...$}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let g=e.lastIndexOf("/"),m=e.slice(g+1).toUpperCase(),b=W(n,g===-1?"/":e.slice(0,g),r),R=t.fetcher??fetch,d=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,w=h?Array.isArray(h)?h:[h]:void 0;return w&&(d?d=w.concat(d):d=w),m==="SUBSCRIBE"?new v(b.replace(/^([^]+):\/\//,b.startsWith("https://")?"wss://":"ws://")):(async()=>{let f,L={...t.$fetch?.headers,...y?.headers,...N};if(m!=="GET"&&m!=="HEAD"){f=Object.keys($).length?$:void 0;let o=typeof f=="object";if(o&&D(f)){let p=new FormData;for(let[E,u]of Object.entries(f))if(A)p.append(E,u);else if(u instanceof File)p.append(E,await F(u));else if(u instanceof FileList)for(let k=0;k<u.length;k++)p.append(E,await F(u[k]));else p.append(E,u);f=p}else L["content-type"]=o?"application/json":"text/plain",o&&(f=JSON.stringify(f))}let i=await R(b,{method:m,body:f,...t.$fetch,...y,headers:L}),l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(o=>Number.isNaN(+o)?o==="true"?!0:o==="false"?!1:o:+o)}let T=i.status>=300||i.status<200?new S(i.status,l):null;if(d)for(let o of d){let c=o({data:l,status:i.status,headers:i.headers,response:i,error:T});c instanceof Promise&&(c=await c),c!=null&&(l=c)}return{data:l,error:T,response:i,status:i.status,headers:i.headers}})()}}),J=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return K(n,s,e)}});0&&(module.exports={EdenWS,edenTreaty});
1
+ "use strict";var T=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var z=(s,e)=>{for(var t in e)T(s,t,{get:e[t],enumerable:!0})},B=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of J(e))!V.call(s,a)&&a!==t&&T(s,a,{get:()=>e[a],enumerable:!(r=D(e,a))||r.enumerable});return s};var H=s=>B(T({},"__esModule",{value:!0}),s);var _={};z(_,{EdenWS:()=>S,edenTreaty:()=>G});module.exports=H(_);var w=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(s,e,t)=>{if(s.endsWith("/")||(s+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${s}${e}`;let r="";for(let[a,n]of Object.entries(t))r+=`${a}=${n}&`;return`${s}${e}?${r.slice(0,-1)}`};var O=typeof FileList>"u",K=s=>O?s instanceof Blob:s instanceof FileList||s instanceof File,U=s=>{if(!s)return!1;for(let e in s){if(K(s[e]))return!0;if(Array.isArray(s[e])&&s[e].find(t=>K(t)))return!0}return!1},$=s=>O?s:new Promise(e=>{let t=new FileReader;t.onload=()=>{let r=new File([t.result],s.name,{lastModified:s.lastModified,type:s.type});e(r)},t.readAsArrayBuffer(s)}),S=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,r){return this.addEventListener(e,t,r)}off(e,t,r){return this.ws.removeEventListener(e,t,r),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,r){return this.ws.addEventListener(e,a=>{if(e==="message"){let n=a.data.toString(),l=n.charCodeAt(0);if(l===47||l===123)try{n=JSON.parse(n)}catch{}else Number.isNaN(+n)?n==="true"?n=!0:n==="false"&&(n=!1):n=+n;t({...a,data:n})}else t(a)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},j=(s,e="",t)=>new Proxy(()=>{},{get(r,a,n){return j(s,`${e}/${a.toString()}`,t)},apply(r,a,[n,l={}]=[{},{}]){let u=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:N,$fetch:F,$headers:M,$transform:E,getRaw:I,...P}=n??{};u??=P;let v=e.lastIndexOf("/"),b=e.slice(v+1).toUpperCase(),x=W(s,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},N)),C=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,k=E?Array.isArray(E)?E:[E]:void 0;return k&&(p?p=k.concat(p):p=k),b==="SUBSCRIBE"?new S(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async q=>{let f,R={...t.$fetch?.headers,...F?.headers,...l.headers,...M};if(b!=="GET"&&b!=="HEAD"){f=Object.keys(u).length||Array.isArray(u)?u:void 0;let o=typeof f=="object"||Array.isArray(u);if(o&&U(f)){let m=new FormData;for(let[g,c]of Object.entries(f))if(O)m.append(g,c);else if(c instanceof File)m.append(g,await $(c));else if(c instanceof FileList)for(let d=0;d<c.length;d++)m.append(g,await $(c[d]));else if(Array.isArray(c))for(let d=0;d<c.length;d++){let A=c[d];m.append(g,A instanceof File?await $(A):A)}else m.append(g,c);f=m}else R["content-type"]=o?"application/json":"text/plain",f=o?JSON.stringify(f):u}let i=await C(x,{method:b,body:f,...t.$fetch,...l.fetch,...F,headers:R}),h;if(q.getRaw)return i;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":h=await i.json();break;default:h=await i.text().then(o=>Number.isNaN(+o)?o==="true"?!0:o==="false"?!1:o:+o)}let L=i.status>=300||i.status<200?new w(i.status,h):null;if(p)for(let o of p){let y=o({data:h,status:i.status,headers:i.headers,response:i,error:L});y instanceof Promise&&(y=await y),y!=null&&(h=y)}return{data:h,error:L,response:i,status:i.status,headers:i.headers}})({getRaw:I})}}),G=(s,e={fetcher:fetch})=>new Proxy({},{get(t,r){return j(s,r,e)}});0&&(module.exports={EdenWS,edenTreaty});
package/dist/treaty.mjs CHANGED
@@ -1 +1 @@
1
- import{a,b}from"./chunk-2G5RO3ND.mjs";import"./chunk-Y6SMVGJX.mjs";export{a as EdenWS,b as edenTreaty};
1
+ import{a,b}from"./chunk-NZCTJ6S3.mjs";import"./chunk-Y6SMVGJX.mjs";export{a as EdenWS,b as edenTreaty};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elysiajs/eden",
3
- "version": "0.7.4",
3
+ "version": "0.7.7",
4
4
  "description": "Fully type-safe Elysia client",
5
5
  "author": {
6
6
  "name": "saltyAom",
@@ -32,11 +32,7 @@
32
32
  }
33
33
  },
34
34
  "types": "./src/index.ts",
35
- "keywords": [
36
- "elysia",
37
- "eden",
38
- "connector"
39
- ],
35
+ "keywords": ["elysia", "eden", "connector"],
40
36
  "homepage": "https://github.com/elysiajs/eden",
41
37
  "repository": {
42
38
  "type": "git",
@@ -75,5 +71,8 @@
75
71
  "tabWidth": 4,
76
72
  "singleQuote": true,
77
73
  "trailingComma": "none"
74
+ },
75
+ "dependencies": {
76
+ "superjson": "^2.2.1"
78
77
  }
79
78
  }
@@ -37,15 +37,19 @@ const hasFile = (obj: Record<string, any>) => {
37
37
  }
38
38
 
39
39
  // @ts-ignore
40
- const fileToBlob = (v: File) =>
40
+ const createNewFile = (v: File) =>
41
41
  isServer
42
42
  ? v
43
- : new Promise<Blob>((resolve) => {
43
+ : new Promise<File>((resolve) => {
44
44
  // @ts-ignore
45
45
  const reader = new FileReader()
46
46
 
47
47
  reader.onload = () => {
48
- resolve(new Blob([reader.result!], { type: v.type }))
48
+ const file = new File([reader.result!], v.name, {
49
+ lastModified: v.lastModified,
50
+ type: v.type
51
+ })
52
+ resolve(file)
49
53
  }
50
54
 
51
55
  reader.readAsArrayBuffer(v)
@@ -121,7 +125,7 @@ export class EdenWS<Schema extends InputSchema<any> = InputSchema> {
121
125
  }
122
126
  else if (!Number.isNaN(+data)) data = +data
123
127
  else if (data === 'true') data = true
124
- else if (data === 'fase') data = false
128
+ else if (data === 'false') data = false
125
129
 
126
130
  listener({
127
131
  ...ws,
@@ -161,30 +165,43 @@ const createProxy = (
161
165
  get(target, key, value) {
162
166
  return createProxy(domain, `${path}/${key.toString()}`, config)
163
167
  },
168
+ // @ts-ignore
164
169
  apply(
165
170
  target,
166
171
  _,
167
- [
168
- { $query, $fetch, $headers, $transform, ...bodyObj } = {
169
- $fetch: undefined,
170
- $headers: undefined,
171
- $query: undefined,
172
- $transform: undefined
172
+ [initialBody, options = {}]: [
173
+ {
174
+ [x: string]: any
175
+ $fetch?: RequestInit
176
+ $headers?: HeadersInit
177
+ $query?: Record<string, string>
178
+ getRaw?: boolean
179
+ },
180
+ {
181
+ fetch?: RequestInit
182
+ transform?: EdenTreaty.Transform
183
+ headers?: Record<string, string>
184
+ query?: Record<string, string | number>
173
185
  }
174
- ]: {
175
- [x: string]: any
176
- $fetch?: RequestInit
177
- $headers?: HeadersInit
178
- $query?: Record<string, string>
179
- $transform?: EdenTreaty.Transform
180
- }[] = [{}]
186
+ ] = [{}, {}]
181
187
  ) {
188
+ let bodyObj: any =
189
+ initialBody !== undefined &&
190
+ (typeof initialBody !== 'object' || Array.isArray(initialBody))
191
+ ? initialBody
192
+ : undefined
193
+
194
+ const { $query, $fetch, $headers, $transform, getRaw, ...restBody } =
195
+ initialBody ?? {}
196
+
197
+ bodyObj ??= restBody
198
+
182
199
  const i = path.lastIndexOf('/'),
183
200
  method = path.slice(i + 1).toUpperCase(),
184
201
  url = composePath(
185
202
  domain,
186
203
  i === -1 ? '/' : path.slice(0, i),
187
- $query
204
+ Object.assign(options.query ?? {}, $query)
188
205
  )
189
206
 
190
207
  const fetcher = config.fetcher ?? fetch
@@ -213,18 +230,25 @@ const createProxy = (
213
230
  )
214
231
  )
215
232
 
216
- const execute = async () => {
233
+ const execute = async <T extends EdenTreaty.ExecuteOptions>(modifiers: T): Promise<EdenTreaty.ExecuteReturnType<T>> => {
217
234
  let body: any
218
235
 
219
236
  const headers = {
220
237
  ...config.$fetch?.headers,
221
238
  ...$fetch?.headers,
239
+ ...options.headers,
222
240
  ...$headers
223
241
  } as Record<string, string>
224
242
 
225
243
  if (method !== 'GET' && method !== 'HEAD') {
226
- body = Object.keys(bodyObj).length ? bodyObj : undefined
227
- const isObject = typeof body === 'object'
244
+ body = Object.keys(bodyObj).length
245
+ ? bodyObj
246
+ : Array.isArray(bodyObj)
247
+ ? bodyObj
248
+ : undefined
249
+
250
+ const isObject =
251
+ typeof body === 'object' || Array.isArray(bodyObj)
228
252
  const isFormData = isObject && hasFile(body)
229
253
 
230
254
  if (isFormData) {
@@ -239,7 +263,7 @@ const createProxy = (
239
263
  if (field instanceof File)
240
264
  newBody.append(
241
265
  key,
242
- await fileToBlob(field as any)
266
+ await createNewFile(field as any)
243
267
  )
244
268
  // @ts-ignore
245
269
  else if (field instanceof FileList) {
@@ -247,7 +271,20 @@ const createProxy = (
247
271
  for (let i = 0; i < field.length; i++) {
248
272
  newBody.append(
249
273
  key as any,
250
- await fileToBlob((field as any)[i])
274
+ await createNewFile(
275
+ (field as any)[i]
276
+ )
277
+ )
278
+ }
279
+ } else if (Array.isArray(field)) {
280
+ for (let i = 0; i < field.length; i++) {
281
+ const value = (field as any)[i]
282
+
283
+ newBody.append(
284
+ key as any,
285
+ value instanceof File
286
+ ? await createNewFile(value)
287
+ : value
251
288
  )
252
289
  }
253
290
  } else newBody.append(key, field as string)
@@ -260,7 +297,7 @@ const createProxy = (
260
297
  ? 'application/json'
261
298
  : 'text/plain'
262
299
 
263
- if (isObject) body = JSON.stringify(body)
300
+ body = isObject ? JSON.stringify(body) : bodyObj
264
301
  }
265
302
  }
266
303
 
@@ -268,12 +305,14 @@ const createProxy = (
268
305
  method,
269
306
  body,
270
307
  ...config.$fetch,
308
+ ...options.fetch,
271
309
  ...$fetch,
272
310
  headers
273
311
  })
274
312
 
275
313
  let data
276
314
 
315
+ if (modifiers.getRaw) return response as any
277
316
  switch (response.headers.get('Content-Type')?.split(';')[0]) {
278
317
  case 'application/json':
279
318
  data = await response.json()
@@ -314,10 +353,10 @@ const createProxy = (
314
353
  response: response,
315
354
  status: response.status,
316
355
  headers: response.headers
317
- }
356
+ } as any
318
357
  }
319
358
 
320
- return execute()
359
+ return execute({ getRaw })
321
360
  }
322
361
  }) as unknown as Record<string, unknown>
323
362
 
@@ -25,10 +25,10 @@ type Split<S extends string> = S extends `${infer Head}/${infer Tail}`
25
25
  : Split<Tail>
26
26
  : [Head, ...Split<Tail>]
27
27
  : S extends `/`
28
- ? []
29
- : S extends `${infer Head}/`
30
- ? [Head]
31
- : [S]
28
+ ? []
29
+ : S extends `${infer Head}/`
30
+ ? [Head]
31
+ : [S]
32
32
 
33
33
  type Prettify<T> = {
34
34
  [K in keyof T]: T[K]
@@ -55,8 +55,8 @@ export namespace EdenTreaty {
55
55
  type SplitKeys<T> = T extends [infer First, ...infer Rest]
56
56
  ? [First, Rest]
57
57
  : T extends [infer First, ...infer Rest][number]
58
- ? [First, Rest]
59
- : never
58
+ ? [First, Rest]
59
+ : never
60
60
 
61
61
  type UnwrapPromise<T> = T extends Promise<infer A> ? A : T
62
62
 
@@ -83,6 +83,14 @@ export namespace EdenTreaty {
83
83
  transform?: Transform
84
84
  }
85
85
 
86
+ export type DetailedResponse = {
87
+ data: any
88
+ error: any
89
+ response: Response
90
+ status: number
91
+ headers: Headers
92
+ };
93
+
86
94
  export type Sign<
87
95
  Schema extends Record<string, Record<string, unknown>>,
88
96
  Paths extends (string | number)[] = Split<keyof Schema & string>,
@@ -97,91 +105,113 @@ export namespace EdenTreaty {
97
105
  : Prefix]: Sign<Schema, Rest, `${Carry}/${Key}`>
98
106
  }
99
107
  : Schema[Carry extends '' ? '/' : Carry] extends infer Routes
100
- ? {
101
- [Method in keyof Routes]: Routes[Method] extends infer Route extends AnySchema
102
- ? Method extends 'subscribe'
103
- ? undefined extends Route['query']
104
- ? (params?: {
105
- $query?: Record<string, string>
106
- }) => EdenWS<Route>
107
- : (params: {
108
- $query: Route['query']
109
- }) => EdenWS<Route>
110
- : ((
111
- params: {
112
- $fetch?: RequestInit
113
- } & (IsUnknown<Route['body']> extends false
114
- ? Replace<Route['body'], Blob | Blob[], Files>
115
- : {}) &
116
- (undefined extends Route['query']
117
- ? {
118
- $query?: Record<string, string>
108
+ ? {
109
+ [Method in keyof Routes]: Routes[Method] extends infer Route extends
110
+ AnySchema
111
+ ? Method extends 'subscribe'
112
+ ? undefined extends Route['query']
113
+ ? (params?: {
114
+ $query?: Record<string, string>
115
+ }) => EdenWS<Route>
116
+ : (params: {
117
+ $query: Route['query']
118
+ }) => EdenWS<Route>
119
+ : ((
120
+ params: {
121
+ $fetch?: RequestInit
122
+ getRaw?: boolean
123
+ } & (IsUnknown<Route['body']> extends false
124
+ ? Replace<
125
+ Route['body'],
126
+ Blob | Blob[],
127
+ Files
128
+ >
129
+ : {}) &
130
+ (undefined extends Route['query']
131
+ ? {
132
+ $query?: Record<string, string>
133
+ }
134
+ : {
135
+ $query: Route['query']
136
+ }) &
137
+ (undefined extends Route['headers']
138
+ ? {
139
+ $headers?: Record<string, unknown>
140
+ }
141
+ : {
142
+ $headers: Route['headers']
143
+ })
144
+ ) => Promise<
145
+ (
146
+ | {
147
+ data: Route['response'] extends {
148
+ 200: infer ReturnedType
149
+ }
150
+ ? Awaited<ReturnedType>
151
+ : unknown
152
+ error: null
119
153
  }
120
- : {
121
- $query: Route['query']
122
- }) &
123
- (undefined extends Route['headers']
124
- ? {
125
- $headers?: Record<string, unknown>
154
+ | {
155
+ data: null
156
+ error: MapError<
157
+ Route['response']
158
+ > extends infer Errors
159
+ ? IsNever<Errors> extends true
160
+ ? EdenFetchError<
161
+ number,
162
+ string
163
+ >
164
+ : Errors
165
+ : EdenFetchError<number, string>
126
166
  }
127
- : {
128
- $headers: Route['headers']
129
- })
130
- ) => Promise<
131
- (
132
- | {
133
- data: Route['response'] extends {
134
- 200: infer ReturnedType
135
- }
136
- ? Awaited<ReturnedType>
137
- : unknown
138
- error: null
139
- }
140
- | {
141
- data: null
142
- error: MapError<
143
- Route['response']
144
- > extends infer Errors
145
- ? IsNever<Errors> extends true
146
- ? EdenFetchError<number, string>
147
- : Errors
148
- : EdenFetchError<number, string>
149
- }
150
- ) & {
151
- status: number
152
- response: Response
153
- headers: Record<string, string>
154
- }
155
- >) extends (params: infer Params) => infer Response
156
- ? {
157
- $params: undefined
158
- $headers: undefined
159
- $query: undefined
160
- } extends Params
161
- ? (
162
- params?: Prettify<
163
- Params & {
164
- $transform?: EdenTreaty.Transform<Response>
167
+ ) & {
168
+ status: number
169
+ response: Response
170
+ headers: Record<string, string>
171
+ }
172
+ >) extends (params: infer Params) => infer Response
173
+ ? {
174
+ $params: undefined
175
+ $headers: undefined
176
+ $query: undefined
177
+ } extends Params
178
+ ? (
179
+ params?: Params,
180
+ options?: {
181
+ fetch?: RequestInit
182
+ transform?: EdenTreaty.Transform<Response>
183
+ // @ts-ignore
184
+ query?: Params['query']
185
+ // @ts-ignore
186
+ headers?: Params['headers']
165
187
  }
166
- >
167
- ) => Response
168
- : (
169
- params: Prettify<
170
- Params & {
171
- $transform?: EdenTreaty.Transform<Response>
188
+ ) => Response
189
+ : (
190
+ params: Params,
191
+ options?: {
192
+ fetch?: RequestInit
193
+ transform?: EdenTreaty.Transform<Response>
194
+ // @ts-ignore
195
+ query?: Params['query']
196
+ // @ts-ignore
197
+ headers?: Params['headers']
172
198
  }
173
- >
174
- ) => Response
175
- : never
176
- : never
177
- }
178
- : {}
199
+ ) => Response
200
+ : never
201
+ : never
202
+ }
203
+ : {}
179
204
 
180
205
  export interface OnMessage<Data = unknown> extends MessageEvent {
181
206
  data: Data
182
207
  rawData: MessageEvent['data']
183
208
  }
184
209
 
210
+ export type ExecuteOptions = {
211
+ getRaw?: boolean
212
+ };
213
+ export type ExecuteReturnType<T extends ExecuteOptions> = T['getRaw'] extends true ? Response : DetailedResponse;
214
+
185
215
  export type WSEvent<
186
216
  K extends keyof WebSocketEventMap,
187
217
  Data = unknown
@@ -1 +0,0 @@
1
- import{a as L}from"./chunk-Y6SMVGJX.mjs";var T=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let r="";for(let[o,s]of Object.entries(t))r+=`${o}=${s}&`;return`${n}${e}?${r.slice(0,-1)}`};var k=typeof FileList>"u",W=n=>k?n instanceof Blob:n instanceof FileList||n instanceof File,R=n=>{if(!n)return!1;for(let e in n){if(W(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>W(t)))return!0}return!1},F=n=>k?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),w=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,r){return this.addEventListener(e,t,r)}off(e,t,r){return this.ws.removeEventListener(e,t,r),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,r){return this.ws.addEventListener(e,o=>{if(e==="message"){let s=o.data.toString(),u=s.charCodeAt(0);if(u===47||u===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...o,data:s})}else t(o)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},O=(n,e="",t)=>new Proxy(()=>{},{get(r,o,s){return O(n,`${e}/${o.toString()}`,t)},apply(r,o,[{$query:s,$fetch:u,$headers:K,$transform:h,...x}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let g=e.lastIndexOf("/"),m=e.slice(g+1).toUpperCase(),v=T(n,g===-1?"/":e.slice(0,g),s),N=t.fetcher??fetch,y=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,S=h?Array.isArray(h)?h:[h]:void 0;return S&&(y?y=S.concat(y):y=S),m==="SUBSCRIBE"?new w(v.replace(/^([^]+):\/\//,v.startsWith("https://")?"wss://":"ws://")):(async()=>{let f,A={...t.$fetch?.headers,...u?.headers,...K};if(m!=="GET"&&m!=="HEAD"){f=Object.keys(x).length?x:void 0;let i=typeof f=="object";if(i&&R(f)){let p=new FormData;for(let[E,d]of Object.entries(f))if(k)p.append(E,d);else if(d instanceof File)p.append(E,await F(d));else if(d instanceof FileList)for(let b=0;b<d.length;b++)p.append(E,await F(d[b]));else p.append(E,d);f=p}else A["content-type"]=i?"application/json":"text/plain",i&&(f=JSON.stringify(f))}let a=await N(v,{method:m,body:f,...t.$fetch,...u,headers:A}),l;switch(a.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await a.json();break;default:l=await a.text().then(i=>Number.isNaN(+i)?i==="true"?!0:i==="false"?!1:i:+i)}let $=a.status>=300||a.status<200?new L(a.status,l):null;if(y)for(let i of y){let c=i({data:l,status:a.status,headers:a.headers,response:a,error:$});c instanceof Promise&&(c=await c),c!=null&&(l=c)}return{data:l,error:$,response:a,status:a.status,headers:a.headers}})()}}),P=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return O(n,r,e)}});export{w as a,P as b};