@elysiajs/eden 0.7.3 → 0.7.6

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 W}from"./chunk-Y6SMVGJX.mjs";var T=(s,e,t)=>{if(s.endsWith("/")||(s+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${s}${e}`;let r="";for(let[f,n]of Object.entries(t))r+=`${f}=${n}&`;return`${s}${e}?${r.slice(0,-1)}`};var $=typeof FileList>"u",K=s=>$?s instanceof Blob:s instanceof FileList||s instanceof File,C=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},k=s=>$?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)}),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,f=>{if(e==="message"){let n=f.data.toString(),u=n.charCodeAt(0);if(u===47||u===123)try{n=JSON.parse(n)}catch{}else Number.isNaN(+n)?n==="true"?n=!0:n==="fase"&&(n=!1):n=+n;t({...f,data:n})}else t(f)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},R=(s,e="",t)=>new Proxy(()=>{},{get(r,f,n){return R(s,`${e}/${f.toString()}`,t)},apply(r,f,[n,u={}]=[{},{}]){let y=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:N,$fetch:F,$headers:j,$transform:E,...M}=n??{};y??=M;let S=e.lastIndexOf("/"),b=e.slice(S+1).toUpperCase(),v=T(s,S===-1?"/":e.slice(0,S),Object.assign(u.query??{},N)),I=t.fetcher??fetch,h=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,w=E?Array.isArray(E)?E:[E]:void 0;return w&&(h?h=w.concat(h):h=w),b==="SUBSCRIBE"?new x(v.replace(/^([^]+):\/\//,v.startsWith("https://")?"wss://":"ws://")):(async()=>{let c,O={...t.$fetch?.headers,...F?.headers,...u.headers,...j};if(b!=="GET"&&b!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let i=typeof c=="object"||Array.isArray(y);if(i&&C(c)){let m=new FormData;for(let[g,o]of Object.entries(c))if($)m.append(g,o);else if(o instanceof File)m.append(g,await k(o));else if(o instanceof FileList)for(let l=0;l<o.length;l++)m.append(g,await k(o[l]));else if(Array.isArray(o))for(let l=0;l<o.length;l++){let A=o[l];m.append(g,A instanceof File?k(A):A)}else m.append(g,o);c=m}else O["content-type"]=i?"application/json":"text/plain",c=i?JSON.stringify(c):y}let a=await I(v,{method:b,body:c,...t.$fetch,...u.fetch,...F,headers:O}),p;switch(a.headers.get("Content-Type")?.split(";")[0]){case"application/json":p=await a.json();break;default:p=await a.text().then(i=>Number.isNaN(+i)?i==="true"?!0:i==="false"?!1:i:+i)}let L=a.status>=300||a.status<200?new W(a.status,p):null;if(h)for(let i of h){let d=i({data:p,status:a.status,headers:a.headers,response:a,error:L});d instanceof Promise&&(d=await d),d!=null&&(p=d)}return{data:p,error:L,response:a,status:a.status,headers:a.headers}})()}}),B=(s,e={fetcher:fetch})=>new Proxy({},{get(t,r){return R(s,r,e)}});export{x as a,B as b};
@@ -1 +1 @@
1
- "use strict";var Eden=(()=>{var x=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var R=(n,e)=>{for(var t in e)x(n,t,{get:e[t],enumerable:!0})},B=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of K(e))!j.call(n,a)&&a!==t&&x(n,a,{get:()=>e[a],enumerable:!(s=C(e,a))||s.enumerable});return n};var I=n=>B(x({},"__esModule",{value:!0}),n);var P={};R(P,{edenFetch:()=>N,edenTreaty:()=>W});var h=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var $=(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 F=typeof FileList>"u",A=n=>F?n instanceof Blob:n instanceof FileList||n instanceof File,M=n=>{if(!n)return!1;for(let e in n){if(A(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>A(t)))return!0}return!1},L=n=>F?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),k=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(),o=r.charCodeAt(0);if(o===47||o===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}},O=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return O(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:o,$headers:S,...w}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){let m=e.lastIndexOf("/"),u=e.slice(m+1).toUpperCase(),i=$(n,m===-1?"/":e.slice(0,m),r),y=t.fetcher??fetch;return u==="SUBSCRIBE"?new k(i.replace(/^([^]+):\/\//,i.startsWith("https://")?"wss://":"ws://")):(async()=>{let l,T={...t.$fetch?.headers,...o?.headers,...S};if(u!=="GET"&&u!=="HEAD"){l=Object.keys(w).length?w:void 0;let f=typeof l=="object";if(f&&M(l)){let g=new FormData;for(let[b,d]of Object.entries(l))if(F)g.append(b,d);else if(d instanceof File)g.append(b,await L(d));else if(d instanceof FileList)for(let v=0;v<d.length;v++)g.append(b,await L(d[v]));else g.append(b,d);l=g}else T["content-type"]=f?"application/json":"text/plain",f&&(l=JSON.stringify(l))}let c=await y(i,{method:u,body:l,...t.$fetch,...o,headers:T}),E;switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":E=await c.json();break;default:E=await c.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}return c.status>300?{data:E,error:new h(c.status,await E),status:c.status,raw:c,headers:c.headers}:{data:E,status:c.status,response:c,headers:c.headers,error:null}})()}}),W=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return O(n,s,e)}});var N=(n,e)=>(t,{query:s,params:a,body:r,...o}={})=>{a&&Object.entries(a).forEach(([i,y])=>{t=t.replace(`:${i}`,y)});let S=o.headers?.["Content-Type"];if(!S||S==="application/json")try{r=JSON.stringify(r)}catch{}let w=e?.fetcher||globalThis.fetch,m=s?`?${new URLSearchParams(s).toString()}`:"",u=()=>w(n+t+m,{...o,method:o.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...o.headers}:o.headers,body:r}).then(async i=>{let y;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":y=await i.json();break;default:y=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:u,error:new h(i.status,y)}:{data:y,error:null,status:i.status,headers:i.headers,retry:u}});return u()};return I(P);})();
1
+ "use strict";var Eden=(()=>{var O=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(r,e)=>{for(var t in e)O(r,t,{get:e[t],enumerable:!0})},z=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of J(e))!U.call(r,a)&&a!==t&&O(r,a,{get:()=>e[a],enumerable:!(n=D(e,a))||n.enumerable});return r};var B=r=>z(O({},"__esModule",{value:!0}),r);var H={};V(H,{edenFetch:()=>P,edenTreaty:()=>I});var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var C=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let n="";for(let[a,s]of Object.entries(t))n+=`${a}=${s}&`;return`${r}${e}?${n.slice(0,-1)}`};var N=typeof FileList>"u",K=r=>N?r instanceof Blob:r instanceof FileList||r instanceof File,G=r=>{if(!r)return!1;for(let e in r){if(K(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>K(t)))return!0}return!1},j=r=>N?r:new Promise(e=>{let t=new FileReader;t.onload=()=>{let n=new File([t.result],r.name,{lastModified:r.lastModified,type:r.type});e(n)},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,n){return this.addEventListener(e,t,n)}off(e,t,n){return this.ws.removeEventListener(e,t,n),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,n){return this.ws.addEventListener(e,a=>{if(e==="message"){let s=a.data.toString(),o=s.charCodeAt(0);if(o===47||o===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...a,data:s})}else t(a)},n),this}removeEventListener(e,t,n){return this.off(e,t,n),this}close(){return this.ws.close(),this}},M=(r,e="",t)=>new Proxy(()=>{},{get(n,a,s){return M(r,`${e}/${a.toString()}`,t)},apply(n,a,[s,o={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:A,$fetch:x,$headers:w,$transform:i,...l}=s??{};y??=l;let d=e.lastIndexOf("/"),k=e.slice(d+1).toUpperCase(),F=C(r,d===-1?"/":e.slice(0,d),Object.assign(o.query??{},A)),q=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()=>{let p,W={...t.$fetch?.headers,...x?.headers,...o.headers,...w};if(k!=="GET"&&k!=="HEAD"){p=Object.keys(y).length||Array.isArray(y)?y:void 0;let f=typeof p=="object"||Array.isArray(y);if(f&&G(p)){let b=new FormData;for(let[v,u]of Object.entries(p))if(N)b.append(v,u);else if(u instanceof File)b.append(v,await j(u));else if(u instanceof FileList)for(let m=0;m<u.length;m++)b.append(v,await j(u[m]));else if(Array.isArray(u))for(let m=0;m<u.length;m++){let T=u[m];b.append(v,T instanceof File?j(T):T)}else b.append(v,u);p=b}else W["content-type"]=f?"application/json":"text/plain",p=f?JSON.stringify(p):y}let c=await q(F,{method:k,body:p,...t.$fetch,...o.fetch,...x,headers:W}),g;switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await c.json();break;default:g=await c.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}let R=c.status>=300||c.status<200?new S(c.status,g):null;if(E)for(let f of E){let h=f({data:g,status:c.status,headers:c.headers,response:c,error:R});h instanceof Promise&&(h=await h),h!=null&&(g=h)}return{data:g,error:R,response:c,status:c.status,headers:c.headers}})()}}),I=(r,e={fetcher:fetch})=>new Proxy({},{get(t,n){return M(r,n,e)}});var P=(r,e)=>(t,{query:n,params:a,body:s,...o}={})=>{a&&Object.entries(a).forEach(([i,l])=>{t=t.replace(`:${i}`,l)});let y=o.headers?.["Content-Type"];if(!y||y==="application/json")try{s=JSON.stringify(s)}catch{}let A=e?.fetcher||globalThis.fetch,x=n?`?${new URLSearchParams(n).toString()}`:"",w=()=>A(r+t+x,{...o,method:o.method?.toUpperCase()||"GET",headers:s?{"content-type":"application/json",...o.headers}:o.headers,body:s}).then(async i=>{let l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(d=>Number.isNaN(+d)?d==="true"?!0:d==="false"?!1:d:+d);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:w,error:new S(i.status,l)}:{data:l,error:null,status:i.status,headers:i.headers,retry:w}});return w()};return B(H);})();
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var x=Object.defineProperty;var C=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var j=Object.prototype.hasOwnProperty;var R=(n,e)=>{for(var t in e)x(n,t,{get:e[t],enumerable:!0})},B=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of K(e))!j.call(n,a)&&a!==t&&x(n,a,{get:()=>e[a],enumerable:!(s=C(e,a))||s.enumerable});return n};var I=n=>B(x({},"__esModule",{value:!0}),n);var P={};R(P,{edenFetch:()=>N,edenTreaty:()=>W});module.exports=I(P);var h=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var $=(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 F=typeof FileList>"u",A=n=>F?n instanceof Blob:n instanceof FileList||n instanceof File,M=n=>{if(!n)return!1;for(let e in n){if(A(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>A(t)))return!0}return!1},L=n=>F?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),k=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(),o=r.charCodeAt(0);if(o===47||o===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}},O=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return O(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:o,$headers:S,...w}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){let m=e.lastIndexOf("/"),u=e.slice(m+1).toUpperCase(),i=$(n,m===-1?"/":e.slice(0,m),r),y=t.fetcher??fetch;return u==="SUBSCRIBE"?new k(i.replace(/^([^]+):\/\//,i.startsWith("https://")?"wss://":"ws://")):(async()=>{let l,T={...t.$fetch?.headers,...o?.headers,...S};if(u!=="GET"&&u!=="HEAD"){l=Object.keys(w).length?w:void 0;let f=typeof l=="object";if(f&&M(l)){let g=new FormData;for(let[b,d]of Object.entries(l))if(F)g.append(b,d);else if(d instanceof File)g.append(b,await L(d));else if(d instanceof FileList)for(let v=0;v<d.length;v++)g.append(b,await L(d[v]));else g.append(b,d);l=g}else T["content-type"]=f?"application/json":"text/plain",f&&(l=JSON.stringify(l))}let c=await y(i,{method:u,body:l,...t.$fetch,...o,headers:T}),E;switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":E=await c.json();break;default:E=await c.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}return c.status>300?{data:E,error:new h(c.status,await E),status:c.status,raw:c,headers:c.headers}:{data:E,status:c.status,response:c,headers:c.headers,error:null}})()}}),W=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return O(n,s,e)}});var N=(n,e)=>(t,{query:s,params:a,body:r,...o}={})=>{a&&Object.entries(a).forEach(([i,y])=>{t=t.replace(`:${i}`,y)});let S=o.headers?.["Content-Type"];if(!S||S==="application/json")try{r=JSON.stringify(r)}catch{}let w=e?.fetcher||globalThis.fetch,m=s?`?${new URLSearchParams(s).toString()}`:"",u=()=>w(n+t+m,{...o,method:o.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...o.headers}:o.headers,body:r}).then(async i=>{let y;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":y=await i.json();break;default:y=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:u,error:new h(i.status,y)}:{data:y,error:null,status:i.status,headers:i.headers,retry:u}});return u()};0&&(module.exports={edenFetch,edenTreaty});
1
+ "use strict";var O=Object.defineProperty;var D=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(r,e)=>{for(var t in e)O(r,t,{get:e[t],enumerable:!0})},z=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of J(e))!U.call(r,a)&&a!==t&&O(r,a,{get:()=>e[a],enumerable:!(n=D(e,a))||n.enumerable});return r};var B=r=>z(O({},"__esModule",{value:!0}),r);var H={};V(H,{edenFetch:()=>P,edenTreaty:()=>I});module.exports=B(H);var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var C=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let n="";for(let[a,s]of Object.entries(t))n+=`${a}=${s}&`;return`${r}${e}?${n.slice(0,-1)}`};var N=typeof FileList>"u",K=r=>N?r instanceof Blob:r instanceof FileList||r instanceof File,G=r=>{if(!r)return!1;for(let e in r){if(K(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>K(t)))return!0}return!1},j=r=>N?r:new Promise(e=>{let t=new FileReader;t.onload=()=>{let n=new File([t.result],r.name,{lastModified:r.lastModified,type:r.type});e(n)},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,n){return this.addEventListener(e,t,n)}off(e,t,n){return this.ws.removeEventListener(e,t,n),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,n){return this.ws.addEventListener(e,a=>{if(e==="message"){let s=a.data.toString(),o=s.charCodeAt(0);if(o===47||o===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...a,data:s})}else t(a)},n),this}removeEventListener(e,t,n){return this.off(e,t,n),this}close(){return this.ws.close(),this}},M=(r,e="",t)=>new Proxy(()=>{},{get(n,a,s){return M(r,`${e}/${a.toString()}`,t)},apply(n,a,[s,o={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:A,$fetch:x,$headers:w,$transform:i,...l}=s??{};y??=l;let d=e.lastIndexOf("/"),k=e.slice(d+1).toUpperCase(),F=C(r,d===-1?"/":e.slice(0,d),Object.assign(o.query??{},A)),q=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()=>{let p,W={...t.$fetch?.headers,...x?.headers,...o.headers,...w};if(k!=="GET"&&k!=="HEAD"){p=Object.keys(y).length||Array.isArray(y)?y:void 0;let f=typeof p=="object"||Array.isArray(y);if(f&&G(p)){let b=new FormData;for(let[v,u]of Object.entries(p))if(N)b.append(v,u);else if(u instanceof File)b.append(v,await j(u));else if(u instanceof FileList)for(let m=0;m<u.length;m++)b.append(v,await j(u[m]));else if(Array.isArray(u))for(let m=0;m<u.length;m++){let T=u[m];b.append(v,T instanceof File?j(T):T)}else b.append(v,u);p=b}else W["content-type"]=f?"application/json":"text/plain",p=f?JSON.stringify(p):y}let c=await q(F,{method:k,body:p,...t.$fetch,...o.fetch,...x,headers:W}),g;switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await c.json();break;default:g=await c.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}let R=c.status>=300||c.status<200?new S(c.status,g):null;if(E)for(let f of E){let h=f({data:g,status:c.status,headers:c.headers,response:c,error:R});h instanceof Promise&&(h=await h),h!=null&&(g=h)}return{data:g,error:R,response:c,status:c.status,headers:c.headers}})()}}),I=(r,e={fetcher:fetch})=>new Proxy({},{get(t,n){return M(r,n,e)}});var P=(r,e)=>(t,{query:n,params:a,body:s,...o}={})=>{a&&Object.entries(a).forEach(([i,l])=>{t=t.replace(`:${i}`,l)});let y=o.headers?.["Content-Type"];if(!y||y==="application/json")try{s=JSON.stringify(s)}catch{}let A=e?.fetcher||globalThis.fetch,x=n?`?${new URLSearchParams(n).toString()}`:"",w=()=>A(r+t+x,{...o,method:o.method?.toUpperCase()||"GET",headers:s?{"content-type":"application/json",...o.headers}:o.headers,body:s}).then(async i=>{let l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(d=>Number.isNaN(+d)?d==="true"?!0:d==="false"?!1:d:+d);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:w,error:new S(i.status,l)}:{data:l,error:null,status:i.status,headers:i.headers,retry:w}});return w()};0&&(module.exports={edenFetch,edenTreaty});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{b as e}from"./chunk-6KKDNR4U.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-VFBRC7KF.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;
@@ -18,18 +15,28 @@ type AnySchema = {
18
15
  params: unknown;
19
16
  response: any;
20
17
  };
18
+ type MaybeArray<T> = T | T[];
21
19
  export declare namespace EdenTreaty {
22
- type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
20
+ export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
23
21
  schema: infer Schema extends Record<string, any>;
24
22
  } ? UnionToIntersect<Sign<Schema>> : 'Please install Elysia before using Eden';
25
- interface Config {
23
+ type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
24
+ export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
25
+ data: any;
26
+ error: any;
27
+ response: Response;
28
+ status: number;
29
+ headers: Headers;
30
+ } : UnwrapPromise<T>) => UnwrapPromise<T> | void>;
31
+ export interface Config {
26
32
  /**
27
33
  * Default options to pass to fetch
28
34
  */
29
35
  $fetch?: RequestInit;
30
36
  fetcher?: typeof fetch;
37
+ transform?: Transform;
31
38
  }
32
- type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
39
+ export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
33
40
  infer Prefix extends string | number,
34
41
  ...infer Rest extends (string | number)[]
35
42
  ] ? {
@@ -65,12 +72,23 @@ export declare namespace EdenTreaty {
65
72
  $params: undefined;
66
73
  $headers: undefined;
67
74
  $query: undefined;
68
- } extends Params ? (params?: Prettify<Params>) => Response : (params: Prettify<Params>) => Response : never : never;
75
+ } extends Params ? (params?: Params, options?: {
76
+ fetch?: RequestInit;
77
+ transform?: EdenTreaty.Transform<Response>;
78
+ query?: Params['query'];
79
+ headers?: Params['headers'];
80
+ }) => Response : (params: Params, options?: {
81
+ fetch?: RequestInit;
82
+ transform?: EdenTreaty.Transform<Response>;
83
+ query?: Params['query'];
84
+ headers?: Params['headers'];
85
+ }) => Response : never : never;
69
86
  } : {};
70
- interface OnMessage<Data = unknown> extends MessageEvent {
87
+ export interface OnMessage<Data = unknown> extends MessageEvent {
71
88
  data: Data;
72
89
  rawData: MessageEvent['data'];
73
90
  }
74
- type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
91
+ export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
92
+ export {};
75
93
  }
76
94
  export {};
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;
@@ -18,18 +15,28 @@ type AnySchema = {
18
15
  params: unknown;
19
16
  response: any;
20
17
  };
18
+ type MaybeArray<T> = T | T[];
21
19
  declare namespace EdenTreaty {
22
- type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
20
+ export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
23
21
  schema: infer Schema extends Record<string, any>;
24
22
  } ? UnionToIntersect<Sign<Schema>> : 'Please install Elysia before using Eden';
25
- interface Config {
23
+ type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
24
+ export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
25
+ data: any;
26
+ error: any;
27
+ response: Response;
28
+ status: number;
29
+ headers: Headers;
30
+ } : UnwrapPromise<T>) => UnwrapPromise<T> | void>;
31
+ export interface Config {
26
32
  /**
27
33
  * Default options to pass to fetch
28
34
  */
29
35
  $fetch?: RequestInit;
30
36
  fetcher?: typeof fetch;
37
+ transform?: Transform;
31
38
  }
32
- type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
39
+ export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
33
40
  infer Prefix extends string | number,
34
41
  ...infer Rest extends (string | number)[]
35
42
  ] ? {
@@ -65,13 +72,24 @@ declare namespace EdenTreaty {
65
72
  $params: undefined;
66
73
  $headers: undefined;
67
74
  $query: undefined;
68
- } extends Params ? (params?: Prettify<Params>) => Response : (params: Prettify<Params>) => Response : never : never;
75
+ } extends Params ? (params?: Params, options?: {
76
+ fetch?: RequestInit;
77
+ transform?: EdenTreaty.Transform<Response>;
78
+ query?: Params['query'];
79
+ headers?: Params['headers'];
80
+ }) => Response : (params: Params, options?: {
81
+ fetch?: RequestInit;
82
+ transform?: EdenTreaty.Transform<Response>;
83
+ query?: Params['query'];
84
+ headers?: Params['headers'];
85
+ }) => Response : never : never;
69
86
  } : {};
70
- interface OnMessage<Data = unknown> extends MessageEvent {
87
+ export interface OnMessage<Data = unknown> extends MessageEvent {
71
88
  data: Data;
72
89
  rawData: MessageEvent['data'];
73
90
  }
74
- type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
91
+ export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
92
+ export {};
75
93
  }
76
94
 
77
95
  declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
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;
@@ -18,18 +15,28 @@ type AnySchema = {
18
15
  params: unknown;
19
16
  response: any;
20
17
  };
18
+ type MaybeArray<T> = T | T[];
21
19
  declare namespace EdenTreaty {
22
- type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
20
+ export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
23
21
  schema: infer Schema extends Record<string, any>;
24
22
  } ? UnionToIntersect<Sign<Schema>> : 'Please install Elysia before using Eden';
25
- interface Config {
23
+ type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
24
+ export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
25
+ data: any;
26
+ error: any;
27
+ response: Response;
28
+ status: number;
29
+ headers: Headers;
30
+ } : UnwrapPromise<T>) => UnwrapPromise<T> | void>;
31
+ export interface Config {
26
32
  /**
27
33
  * Default options to pass to fetch
28
34
  */
29
35
  $fetch?: RequestInit;
30
36
  fetcher?: typeof fetch;
37
+ transform?: Transform;
31
38
  }
32
- type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
39
+ export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
33
40
  infer Prefix extends string | number,
34
41
  ...infer Rest extends (string | number)[]
35
42
  ] ? {
@@ -65,13 +72,24 @@ declare namespace EdenTreaty {
65
72
  $params: undefined;
66
73
  $headers: undefined;
67
74
  $query: undefined;
68
- } extends Params ? (params?: Prettify<Params>) => Response : (params: Prettify<Params>) => Response : never : never;
75
+ } extends Params ? (params?: Params, options?: {
76
+ fetch?: RequestInit;
77
+ transform?: EdenTreaty.Transform<Response>;
78
+ query?: Params['query'];
79
+ headers?: Params['headers'];
80
+ }) => Response : (params: Params, options?: {
81
+ fetch?: RequestInit;
82
+ transform?: EdenTreaty.Transform<Response>;
83
+ query?: Params['query'];
84
+ headers?: Params['headers'];
85
+ }) => Response : never : never;
69
86
  } : {};
70
- interface OnMessage<Data = unknown> extends MessageEvent {
87
+ export interface OnMessage<Data = unknown> extends MessageEvent {
71
88
  data: Data;
72
89
  rawData: MessageEvent['data'];
73
90
  }
74
- type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
91
+ export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
92
+ export {};
75
93
  }
76
94
 
77
95
  declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
@@ -1 +1 @@
1
- "use strict";var Eden=(()=>{var v=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var N=(n,e)=>{for(var t in e)v(n,t,{get:e[t],enumerable:!0})},R=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of K(e))!T.call(n,a)&&a!==t&&v(n,a,{get:()=>e[a],enumerable:!(s=F(e,a))||s.enumerable});return n};var B=n=>R(v({},"__esModule",{value:!0}),n);var M={};N(M,{EdenWS:()=>g,edenTreaty:()=>I});var h=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var x=(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 b=typeof FileList>"u",$=n=>b?n instanceof Blob:n instanceof FileList||n instanceof File,C=n=>{if(!n)return!1;for(let e in n){if($(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>$(t)))return!0}return!1},L=n=>b?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),g=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(),f=r.charCodeAt(0);if(f===47||f===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}},W=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return W(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:f,$headers:A,...w}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){let E=e.lastIndexOf("/"),y=e.slice(E+1).toUpperCase(),S=x(n,E===-1?"/":e.slice(0,E),r),O=t.fetcher??fetch;return y==="SUBSCRIBE"?new g(S.replace(/^([^]+):\/\//,S.startsWith("https://")?"wss://":"ws://")):(async()=>{let c,k={...t.$fetch?.headers,...f?.headers,...A};if(y!=="GET"&&y!=="HEAD"){c=Object.keys(w).length?w:void 0;let o=typeof c=="object";if(o&&C(c)){let d=new FormData;for(let[p,u]of Object.entries(c))if(b)d.append(p,u);else if(u instanceof File)d.append(p,await L(u));else if(u instanceof FileList)for(let m=0;m<u.length;m++)d.append(p,await L(u[m]));else d.append(p,u);c=d}else k["content-type"]=o?"application/json":"text/plain",o&&(c=JSON.stringify(c))}let i=await O(S,{method:y,body:c,...t.$fetch,...f,headers:k}),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)}return i.status>300?{data:l,error:new h(i.status,await l),status:i.status,raw:i,headers:i.headers}:{data:l,status:i.status,response:i,headers:i.headers,error:null}})()}}),I=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return W(n,s,e)}});return B(M);})();
1
+ "use strict";var Eden=(()=>{var $=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var J=(s,e)=>{for(var t in e)$(s,t,{get:e[t],enumerable:!0})},V=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of q(e))!D.call(s,a)&&a!==t&&$(s,a,{get:()=>e[a],enumerable:!(r=P(e,a))||r.enumerable});return s};var z=s=>V($({},"__esModule",{value:!0}),s);var U={};J(U,{EdenWS:()=>v,edenTreaty:()=>H});var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var K=(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",R=s=>O?s instanceof Blob:s instanceof FileList||s instanceof File,B=s=>{if(!s)return!1;for(let e in s){if(R(s[e]))return!0;if(Array.isArray(s[e])&&s[e].find(t=>R(t)))return!0}return!1},F=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)}),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,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==="fase"&&(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:L,$headers:M,$transform:E,...I}=n??{};u??=I;let w=e.lastIndexOf("/"),b=e.slice(w+1).toUpperCase(),k=K(s,w===-1?"/":e.slice(0,w),Object.assign(l.query??{},N)),C=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,A=E?Array.isArray(E)?E:[E]:void 0;return A&&(p?p=A.concat(p):p=A),b==="SUBSCRIBE"?new v(k.replace(/^([^]+):\/\//,k.startsWith("https://")?"wss://":"ws://")):(async()=>{let f,W={...t.$fetch?.headers,...L?.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&&B(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 F(c));else if(c instanceof FileList)for(let y=0;y<c.length;y++)m.append(g,await F(c[y]));else if(Array.isArray(c))for(let y=0;y<c.length;y++){let x=c[y];m.append(g,x instanceof File?F(x):x)}else m.append(g,c);f=m}else W["content-type"]=o?"application/json":"text/plain",f=o?JSON.stringify(f):u}let i=await C(k,{method:b,body:f,...t.$fetch,...l.fetch,...L,headers:W}),h;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 T=i.status>=300||i.status<200?new S(i.status,h):null;if(p)for(let o of p){let d=o({data:h,status:i.status,headers:i.headers,response:i,error:T});d instanceof Promise&&(d=await d),d!=null&&(h=d)}return{data:h,error:T,response:i,status:i.status,headers:i.headers}})()}}),H=(s,e={fetcher:fetch})=>new Proxy({},{get(t,r){return j(s,r,e)}});return z(U);})();
package/dist/treaty.js CHANGED
@@ -1 +1 @@
1
- "use strict";var v=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var K=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var N=(n,e)=>{for(var t in e)v(n,t,{get:e[t],enumerable:!0})},R=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of K(e))!T.call(n,a)&&a!==t&&v(n,a,{get:()=>e[a],enumerable:!(s=F(e,a))||s.enumerable});return n};var B=n=>R(v({},"__esModule",{value:!0}),n);var M={};N(M,{EdenWS:()=>g,edenTreaty:()=>I});module.exports=B(M);var h=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var x=(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 b=typeof FileList>"u",$=n=>b?n instanceof Blob:n instanceof FileList||n instanceof File,C=n=>{if(!n)return!1;for(let e in n){if($(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>$(t)))return!0}return!1},L=n=>b?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),g=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(),f=r.charCodeAt(0);if(f===47||f===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}},W=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return W(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:f,$headers:A,...w}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){let E=e.lastIndexOf("/"),y=e.slice(E+1).toUpperCase(),S=x(n,E===-1?"/":e.slice(0,E),r),O=t.fetcher??fetch;return y==="SUBSCRIBE"?new g(S.replace(/^([^]+):\/\//,S.startsWith("https://")?"wss://":"ws://")):(async()=>{let c,k={...t.$fetch?.headers,...f?.headers,...A};if(y!=="GET"&&y!=="HEAD"){c=Object.keys(w).length?w:void 0;let o=typeof c=="object";if(o&&C(c)){let d=new FormData;for(let[p,u]of Object.entries(c))if(b)d.append(p,u);else if(u instanceof File)d.append(p,await L(u));else if(u instanceof FileList)for(let m=0;m<u.length;m++)d.append(p,await L(u[m]));else d.append(p,u);c=d}else k["content-type"]=o?"application/json":"text/plain",o&&(c=JSON.stringify(c))}let i=await O(S,{method:y,body:c,...t.$fetch,...f,headers:k}),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)}return i.status>300?{data:l,error:new h(i.status,await l),status:i.status,raw:i,headers:i.headers}:{data:l,status:i.status,response:i,headers:i.headers,error:null}})()}}),I=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return W(n,s,e)}});0&&(module.exports={EdenWS,edenTreaty});
1
+ "use strict";var $=Object.defineProperty;var P=Object.getOwnPropertyDescriptor;var q=Object.getOwnPropertyNames;var D=Object.prototype.hasOwnProperty;var J=(s,e)=>{for(var t in e)$(s,t,{get:e[t],enumerable:!0})},V=(s,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of q(e))!D.call(s,a)&&a!==t&&$(s,a,{get:()=>e[a],enumerable:!(r=P(e,a))||r.enumerable});return s};var z=s=>V($({},"__esModule",{value:!0}),s);var U={};J(U,{EdenWS:()=>v,edenTreaty:()=>H});module.exports=z(U);var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var K=(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",R=s=>O?s instanceof Blob:s instanceof FileList||s instanceof File,B=s=>{if(!s)return!1;for(let e in s){if(R(s[e]))return!0;if(Array.isArray(s[e])&&s[e].find(t=>R(t)))return!0}return!1},F=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)}),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,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==="fase"&&(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:L,$headers:M,$transform:E,...I}=n??{};u??=I;let w=e.lastIndexOf("/"),b=e.slice(w+1).toUpperCase(),k=K(s,w===-1?"/":e.slice(0,w),Object.assign(l.query??{},N)),C=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,A=E?Array.isArray(E)?E:[E]:void 0;return A&&(p?p=A.concat(p):p=A),b==="SUBSCRIBE"?new v(k.replace(/^([^]+):\/\//,k.startsWith("https://")?"wss://":"ws://")):(async()=>{let f,W={...t.$fetch?.headers,...L?.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&&B(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 F(c));else if(c instanceof FileList)for(let y=0;y<c.length;y++)m.append(g,await F(c[y]));else if(Array.isArray(c))for(let y=0;y<c.length;y++){let x=c[y];m.append(g,x instanceof File?F(x):x)}else m.append(g,c);f=m}else W["content-type"]=o?"application/json":"text/plain",f=o?JSON.stringify(f):u}let i=await C(k,{method:b,body:f,...t.$fetch,...l.fetch,...L,headers:W}),h;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 T=i.status>=300||i.status<200?new S(i.status,h):null;if(p)for(let o of p){let d=o({data:h,status:i.status,headers:i.headers,response:i,error:T});d instanceof Promise&&(d=await d),d!=null&&(h=d)}return{data:h,error:T,response:i,status:i.status,headers:i.headers}})()}}),H=(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-6KKDNR4U.mjs";import"./chunk-Y6SMVGJX.mjs";export{a as EdenWS,b as edenTreaty};
1
+ import{a,b}from"./chunk-VFBRC7KF.mjs";import"./chunk-Y6SMVGJX.mjs";export{a as EdenWS,b as edenTreaty};
package/package.json CHANGED
@@ -1,79 +1,75 @@
1
1
  {
2
- "name": "@elysiajs/eden",
3
- "version": "0.7.3",
4
- "description": "Fully type-safe Elysia client",
5
- "author": {
6
- "name": "saltyAom",
7
- "url": "https://github.com/SaltyAom",
8
- "email": "saltyaom@gmail.com"
9
- },
10
- "main": "./dist/index.js",
11
- "exports": {
12
- ".": {
13
- "require": "./dist/index.js",
14
- "import": "./dist/index.mjs",
15
- "node": "./dist/index.js",
16
- "default": "./dist/index.js",
17
- "types": "./dist/index.d.ts"
2
+ "name": "@elysiajs/eden",
3
+ "version": "0.7.6",
4
+ "description": "Fully type-safe Elysia client",
5
+ "author": {
6
+ "name": "saltyAom",
7
+ "url": "https://github.com/SaltyAom",
8
+ "email": "saltyaom@gmail.com"
18
9
  },
19
- "./treaty": {
20
- "require": "./dist/treaty.js",
21
- "import": "./dist/treaty.mjs",
22
- "node": "./dist/treaty.js",
23
- "default": "./dist/treaty.js",
24
- "types": "./dist/treaty/index.d.ts"
10
+ "main": "./dist/index.js",
11
+ "exports": {
12
+ ".": {
13
+ "require": "./dist/index.js",
14
+ "import": "./dist/index.mjs",
15
+ "node": "./dist/index.js",
16
+ "default": "./dist/index.js",
17
+ "types": "./dist/index.d.ts"
18
+ },
19
+ "./treaty": {
20
+ "require": "./dist/treaty.js",
21
+ "import": "./dist/treaty.mjs",
22
+ "node": "./dist/treaty.js",
23
+ "default": "./dist/treaty.js",
24
+ "types": "./dist/treaty/index.d.ts"
25
+ },
26
+ "./fetch": {
27
+ "require": "./dist/fetch.js",
28
+ "import": "./dist/fetch.mjs",
29
+ "node": "./dist/fetch.js",
30
+ "default": "./dist/fetch.js",
31
+ "types": "./dist/fetch/index.d.ts"
32
+ }
25
33
  },
26
- "./fetch": {
27
- "require": "./dist/fetch.js",
28
- "import": "./dist/fetch.mjs",
29
- "node": "./dist/fetch.js",
30
- "default": "./dist/fetch.js",
31
- "types": "./dist/fetch/index.d.ts"
32
- }
33
- },
34
- "types": "./src/index.ts",
35
- "keywords": [
36
- "elysia",
37
- "eden",
38
- "connector"
39
- ],
40
- "homepage": "https://github.com/elysiajs/eden",
41
- "repository": {
42
- "type": "git",
43
- "url": "https://github.com/elysiajs/eden"
44
- },
45
- "bugs": "https://github.com/elysiajs/eden/issues",
46
- "license": "MIT",
47
- "scripts": {
48
- "dev": "bun run --watch example/index.ts",
49
- "test": "bun test",
50
- "build": "rimraf dist && tsup",
51
- "release": "npm run build && npm run test && npm publish --access public"
52
- },
53
- "peerDependencies": {
54
- "elysia": ">= 0.7.0"
55
- },
56
- "peerDependenciesMeta": {
57
- "@sinclair/typebox": {
58
- "optional": true
34
+ "types": "./src/index.ts",
35
+ "keywords": ["elysia", "eden", "connector"],
36
+ "homepage": "https://github.com/elysiajs/eden",
37
+ "repository": {
38
+ "type": "git",
39
+ "url": "https://github.com/elysiajs/eden"
40
+ },
41
+ "bugs": "https://github.com/elysiajs/eden/issues",
42
+ "license": "MIT",
43
+ "scripts": {
44
+ "dev": "bun run --watch example/index.ts",
45
+ "test": "bun test",
46
+ "build": "rimraf dist && tsup",
47
+ "release": "npm run build && npm run test && npm publish --access public"
48
+ },
49
+ "peerDependencies": {
50
+ "elysia": ">= 0.7.0"
51
+ },
52
+ "peerDependenciesMeta": {
53
+ "@sinclair/typebox": {
54
+ "optional": true
55
+ }
56
+ },
57
+ "devDependencies": {
58
+ "@elysiajs/cors": "0.7.0",
59
+ "@sinclair/typebox": "^0.31.6",
60
+ "@types/node": "^18.15.5",
61
+ "bun-types": "^1.0.1",
62
+ "elysia": "^0.7.15",
63
+ "esbuild": "^0.19.3",
64
+ "eslint": "^8.26.0",
65
+ "rimraf": "^4.4.1",
66
+ "tsup": "^7.2.0",
67
+ "typescript": "^5.2.2"
68
+ },
69
+ "prettier": {
70
+ "semi": false,
71
+ "tabWidth": 4,
72
+ "singleQuote": true,
73
+ "trailingComma": "none"
59
74
  }
60
- },
61
- "devDependencies": {
62
- "@elysiajs/cors": "0.7.0",
63
- "@sinclair/typebox": "^0.31.6",
64
- "@types/node": "^18.15.5",
65
- "bun-types": "^1.0.1",
66
- "elysia": "^0.7.9",
67
- "esbuild": "^0.19.3",
68
- "eslint": "^8.26.0",
69
- "rimraf": "^4.4.1",
70
- "tsup": "^7.2.0",
71
- "typescript": "^5.2.2"
72
- },
73
- "prettier": {
74
- "semi": false,
75
- "tabWidth": 4,
76
- "singleQuote": true,
77
- "trailingComma": "none"
78
- }
79
75
  }
@@ -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)
@@ -161,31 +165,61 @@ 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, ...bodyObj } = {
169
- $fetch: undefined,
170
- $headers: undefined,
171
- $query: undefined
172
+ [initialBody, options = {}]: [
173
+ {
174
+ [x: string]: any
175
+ $fetch?: RequestInit
176
+ $headers?: HeadersInit
177
+ $query?: Record<string, string>
178
+ },
179
+ {
180
+ fetch?: RequestInit
181
+ transform?: EdenTreaty.Transform
182
+ headers?: Record<string, string>
183
+ query?: Record<string, string | number>
172
184
  }
173
- ]: {
174
- [x: string]: any
175
- $fetch?: RequestInit
176
- $headers?: HeadersInit
177
- $query?: Record<string, string>
178
- }[] = [{}]
185
+ ] = [{}, {}]
179
186
  ) {
187
+ let bodyObj: any =
188
+ initialBody !== undefined &&
189
+ (typeof initialBody !== 'object' || Array.isArray(initialBody))
190
+ ? initialBody
191
+ : undefined
192
+
193
+ const { $query, $fetch, $headers, $transform, ...restBody } =
194
+ initialBody ?? {}
195
+
196
+ bodyObj ??= restBody
197
+
180
198
  const i = path.lastIndexOf('/'),
181
199
  method = path.slice(i + 1).toUpperCase(),
182
200
  url = composePath(
183
201
  domain,
184
202
  i === -1 ? '/' : path.slice(0, i),
185
- $query
203
+ Object.assign(options.query ?? {}, $query)
186
204
  )
187
205
 
188
206
  const fetcher = config.fetcher ?? fetch
207
+ let transforms = config.transform
208
+ ? Array.isArray(config.transform)
209
+ ? config.transform
210
+ : [config.transform]
211
+ : undefined
212
+
213
+ const $transforms = $transform
214
+ ? Array.isArray($transform)
215
+ ? $transform
216
+ : [$transform]
217
+ : undefined
218
+
219
+ if ($transforms) {
220
+ if (transforms) transforms = $transforms.concat(transforms)
221
+ else transforms = $transforms as any
222
+ }
189
223
 
190
224
  if (method === 'SUBSCRIBE')
191
225
  return new EdenWS(
@@ -201,12 +235,19 @@ const createProxy = (
201
235
  const headers = {
202
236
  ...config.$fetch?.headers,
203
237
  ...$fetch?.headers,
238
+ ...options.headers,
204
239
  ...$headers
205
240
  } as Record<string, string>
206
241
 
207
242
  if (method !== 'GET' && method !== 'HEAD') {
208
- body = Object.keys(bodyObj).length ? bodyObj : undefined
209
- const isObject = typeof body === 'object'
243
+ body = Object.keys(bodyObj).length
244
+ ? bodyObj
245
+ : Array.isArray(bodyObj)
246
+ ? bodyObj
247
+ : undefined
248
+
249
+ const isObject =
250
+ typeof body === 'object' || Array.isArray(bodyObj)
210
251
  const isFormData = isObject && hasFile(body)
211
252
 
212
253
  if (isFormData) {
@@ -221,7 +262,7 @@ const createProxy = (
221
262
  if (field instanceof File)
222
263
  newBody.append(
223
264
  key,
224
- await fileToBlob(field as any)
265
+ await createNewFile(field as any)
225
266
  )
226
267
  // @ts-ignore
227
268
  else if (field instanceof FileList) {
@@ -229,7 +270,20 @@ const createProxy = (
229
270
  for (let i = 0; i < field.length; i++) {
230
271
  newBody.append(
231
272
  key as any,
232
- await fileToBlob((field as any)[i])
273
+ await createNewFile(
274
+ (field as any)[i]
275
+ )
276
+ )
277
+ }
278
+ } else if (Array.isArray(field)) {
279
+ for (let i = 0; i < field.length; i++) {
280
+ const value = (field as any)[i]
281
+
282
+ newBody.append(
283
+ key as any,
284
+ value instanceof File
285
+ ? createNewFile(value)
286
+ : value
233
287
  )
234
288
  }
235
289
  } else newBody.append(key, field as string)
@@ -242,7 +296,7 @@ const createProxy = (
242
296
  ? 'application/json'
243
297
  : 'text/plain'
244
298
 
245
- if (isObject) body = JSON.stringify(body)
299
+ body = isObject ? JSON.stringify(body) : bodyObj
246
300
  }
247
301
  }
248
302
 
@@ -250,6 +304,7 @@ const createProxy = (
250
304
  method,
251
305
  body,
252
306
  ...config.$fetch,
307
+ ...options.fetch,
253
308
  ...$fetch,
254
309
  headers
255
310
  })
@@ -271,21 +326,31 @@ const createProxy = (
271
326
  })
272
327
  }
273
328
 
274
- if (response.status > 300)
275
- return {
276
- data,
277
- error: new EdenFetchError(response.status, await data),
278
- status: response.status,
279
- raw: response,
280
- headers: response.headers
329
+ const error =
330
+ response.status >= 300 || response.status < 200
331
+ ? new EdenFetchError(response.status, data)
332
+ : null
333
+
334
+ if (transforms)
335
+ for (const transform of transforms) {
336
+ let temp = transform({
337
+ data,
338
+ status: response.status,
339
+ headers: response.headers,
340
+ response,
341
+ error
342
+ })
343
+ if (temp instanceof Promise) temp = await temp
344
+
345
+ if (temp !== undefined && temp !== null) data = temp
281
346
  }
282
347
 
283
348
  return {
284
349
  data,
285
- status: response.status,
350
+ error,
286
351
  response: response,
287
- headers: response.headers,
288
- error: null as null
352
+ status: response.status,
353
+ headers: response.headers
289
354
  }
290
355
  }
291
356
 
@@ -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]
@@ -42,6 +42,8 @@ type AnySchema = {
42
42
  response: any
43
43
  }
44
44
 
45
+ type MaybeArray<T> = T | T[]
46
+
45
47
  export namespace EdenTreaty {
46
48
  export type Create<App extends Elysia<any, any, any, any, any, any>> =
47
49
  App extends {
@@ -53,8 +55,24 @@ export namespace EdenTreaty {
53
55
  type SplitKeys<T> = T extends [infer First, ...infer Rest]
54
56
  ? [First, Rest]
55
57
  : T extends [infer First, ...infer Rest][number]
56
- ? [First, Rest]
57
- : never
58
+ ? [First, Rest]
59
+ : never
60
+
61
+ type UnwrapPromise<T> = T extends Promise<infer A> ? A : T
62
+
63
+ export type Transform<T = unknown> = MaybeArray<
64
+ (
65
+ response: unknown extends T
66
+ ? {
67
+ data: any
68
+ error: any
69
+ response: Response
70
+ status: number
71
+ headers: Headers
72
+ }
73
+ : UnwrapPromise<T>
74
+ ) => UnwrapPromise<T> | void
75
+ >
58
76
 
59
77
  export interface Config {
60
78
  /**
@@ -62,6 +80,7 @@ export namespace EdenTreaty {
62
80
  */
63
81
  $fetch?: RequestInit
64
82
  fetcher?: typeof fetch
83
+ transform?: Transform
65
84
  }
66
85
 
67
86
  export type Sign<
@@ -78,73 +97,101 @@ export namespace EdenTreaty {
78
97
  : Prefix]: Sign<Schema, Rest, `${Carry}/${Key}`>
79
98
  }
80
99
  : Schema[Carry extends '' ? '/' : Carry] extends infer Routes
81
- ? {
82
- [Method in keyof Routes]: Routes[Method] extends infer Route extends AnySchema
83
- ? Method extends 'subscribe'
84
- ? undefined extends Route['query']
85
- ? (params?: {
86
- $query?: Record<string, string>
87
- }) => EdenWS<Route>
88
- : (params: {
89
- $query: Route['query']
90
- }) => EdenWS<Route>
91
- : ((
92
- params: {
93
- $fetch?: RequestInit
94
- } & (IsUnknown<Route['body']> extends false
95
- ? Replace<Route['body'], Blob | Blob[], Files>
96
- : {}) &
97
- (undefined extends Route['query']
98
- ? {
99
- $query?: Record<string, string>
100
- }
101
- : {
102
- $query: Route['query']
103
- }) &
104
- (undefined extends Route['headers']
105
- ? {
106
- $headers?: Record<string, unknown>
100
+ ? {
101
+ [Method in keyof Routes]: Routes[Method] extends infer Route extends
102
+ AnySchema
103
+ ? Method extends 'subscribe'
104
+ ? undefined extends Route['query']
105
+ ? (params?: {
106
+ $query?: Record<string, string>
107
+ }) => EdenWS<Route>
108
+ : (params: {
109
+ $query: Route['query']
110
+ }) => EdenWS<Route>
111
+ : ((
112
+ params: {
113
+ $fetch?: RequestInit
114
+ } & (IsUnknown<Route['body']> extends false
115
+ ? Replace<
116
+ Route['body'],
117
+ Blob | Blob[],
118
+ Files
119
+ >
120
+ : {}) &
121
+ (undefined extends Route['query']
122
+ ? {
123
+ $query?: Record<string, string>
124
+ }
125
+ : {
126
+ $query: Route['query']
127
+ }) &
128
+ (undefined extends Route['headers']
129
+ ? {
130
+ $headers?: Record<string, unknown>
131
+ }
132
+ : {
133
+ $headers: Route['headers']
134
+ })
135
+ ) => Promise<
136
+ (
137
+ | {
138
+ data: Route['response'] extends {
139
+ 200: infer ReturnedType
140
+ }
141
+ ? Awaited<ReturnedType>
142
+ : unknown
143
+ error: null
107
144
  }
108
- : {
109
- $headers: Route['headers']
110
- })
111
- ) => Promise<
112
- (
113
- | {
114
- data: Route['response'] extends {
115
- 200: infer ReturnedType
145
+ | {
146
+ data: null
147
+ error: MapError<
148
+ Route['response']
149
+ > extends infer Errors
150
+ ? IsNever<Errors> extends true
151
+ ? EdenFetchError<
152
+ number,
153
+ string
154
+ >
155
+ : Errors
156
+ : EdenFetchError<number, string>
116
157
  }
117
- ? Awaited<ReturnedType>
118
- : unknown
119
- error: null
120
- }
121
- | {
122
- data: null
123
- error: MapError<
124
- Route['response']
125
- > extends infer Errors
126
- ? IsNever<Errors> extends true
127
- ? EdenFetchError<number, string>
128
- : Errors
129
- : EdenFetchError<number, string>
130
- }
131
- ) & {
132
- status: number
133
- response: Response
134
- headers: Record<string, string>
135
- }
136
- >) extends (params: infer Params) => infer Response
137
- ? {
138
- $params: undefined
139
- $headers: undefined
140
- $query: undefined
141
- } extends Params
142
- ? (params?: Prettify<Params>) => Response
143
- : (params: Prettify<Params>) => Response
144
- : never
145
- : never
146
- }
147
- : {}
158
+ ) & {
159
+ status: number
160
+ response: Response
161
+ headers: Record<string, string>
162
+ }
163
+ >) extends (params: infer Params) => infer Response
164
+ ? {
165
+ $params: undefined
166
+ $headers: undefined
167
+ $query: undefined
168
+ } extends Params
169
+ ? (
170
+ params?: Params,
171
+ options?: {
172
+ fetch?: RequestInit
173
+ transform?: EdenTreaty.Transform<Response>
174
+ // @ts-ignore
175
+ query?: Params['query']
176
+ // @ts-ignore
177
+ headers?: Params['headers']
178
+ }
179
+ ) => Response
180
+ : (
181
+ params: Params,
182
+ options?: {
183
+ fetch?: RequestInit
184
+ transform?: EdenTreaty.Transform<Response>
185
+ // @ts-ignore
186
+ query?: Params['query']
187
+ // @ts-ignore
188
+ headers?: Params['headers']
189
+ }
190
+ ) => Response
191
+ : never
192
+ : never
193
+ }
194
+ : {}
148
195
 
149
196
  export interface OnMessage<Data = unknown> extends MessageEvent {
150
197
  data: Data
@@ -1 +0,0 @@
1
- import{a as w}from"./chunk-Y6SMVGJX.mjs";var k=(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 S=typeof FileList>"u",x=n=>S?n instanceof Blob:n instanceof FileList||n instanceof File,F=n=>{if(!n)return!1;for(let e in n){if(x(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>x(t)))return!0}return!1},$=n=>S?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,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(),d=s.charCodeAt(0);if(d===47||d===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}},L=(n,e="",t)=>new Proxy(()=>{},{get(r,o,s){return L(n,`${e}/${o.toString()}`,t)},apply(r,o,[{$query:s,$fetch:d,$headers:W,...b}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){let h=e.lastIndexOf("/"),u=e.slice(h+1).toUpperCase(),E=k(n,h===-1?"/":e.slice(0,h),s),A=t.fetcher??fetch;return u==="SUBSCRIBE"?new v(E.replace(/^([^]+):\/\//,E.startsWith("https://")?"wss://":"ws://")):(async()=>{let c,m={...t.$fetch?.headers,...d?.headers,...W};if(u!=="GET"&&u!=="HEAD"){c=Object.keys(b).length?b:void 0;let a=typeof c=="object";if(a&&F(c)){let y=new FormData;for(let[p,f]of Object.entries(c))if(S)y.append(p,f);else if(f instanceof File)y.append(p,await $(f));else if(f instanceof FileList)for(let g=0;g<f.length;g++)y.append(p,await $(f[g]));else y.append(p,f);c=y}else m["content-type"]=a?"application/json":"text/plain",a&&(c=JSON.stringify(c))}let i=await A(E,{method:u,body:c,...t.$fetch,...d,headers:m}),l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(a=>Number.isNaN(+a)?a==="true"?!0:a==="false"?!1:a:+a)}return i.status>300?{data:l,error:new w(i.status,await l),status:i.status,raw:i,headers:i.headers}:{data:l,status:i.status,response:i,headers:i.headers,error:null}})()}}),B=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return L(n,r,e)}});export{v as a,B as b};