@elysiajs/eden 1.4.4 → 1.4.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/bun.lock +131 -70
- package/dist/chunk-7WR4DS5F.mjs +4 -0
- package/dist/chunk-VMSCNLL4.mjs +1 -0
- package/dist/fetch.d.mts +1 -1
- package/dist/fetch.d.ts +1 -1
- package/dist/fetch.global.js +1 -1
- package/dist/fetch.js +1 -1
- package/dist/fetch.mjs +1 -1
- package/dist/index.d.mts +2 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.global.js +3 -5
- package/dist/index.js +3 -5
- package/dist/index.mjs +1 -1
- package/dist/treaty.d.mts +1 -1
- package/dist/treaty.d.ts +1 -1
- package/dist/treaty2/index.d.ts +1 -1
- package/dist/treaty2/types.d.ts +16 -32
- package/dist/treaty2.d.mts +17 -33
- package/dist/treaty2.d.ts +17 -33
- package/dist/treaty2.global.js +3 -5
- package/dist/treaty2.js +3 -5
- package/dist/treaty2.mjs +1 -1
- package/dist/{types-C41kuZ-K.d.mts → types-BdHMTa_C.d.mts} +17 -1
- package/dist/{types-C41kuZ-K.d.ts → types-BdHMTa_C.d.ts} +17 -1
- package/dist/types.d.ts +16 -0
- package/package.json +3 -3
- package/dist/chunk-4RPCKTWO.mjs +0 -1
- package/dist/chunk-LJDYVDXQ.mjs +0 -6
package/dist/fetch.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var h=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var N=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var j=(t,e)=>{for(var r in e)h(t,r,{get:e[r],enumerable:!0})},w=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of N(e))!b.call(t,s)&&s!==r&&h(t,s,{get:()=>e[s],enumerable:!(n=T(e,s))||n.enumerable});return t};var F=t=>w(h({},"__esModule",{value:!0}),t);var V={};j(V,{edenFetch:()=>U});module.exports=F(V);var i=class extends Error{constructor(r,n){super(n+"");this.status=r;this.value=n}};var O=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,D=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,A=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,M=t=>t.trim().length!==0&&!Number.isNaN(Number(t)),y=t=>{if(typeof t!="string")return null;let e=t.replace(/"/g,"");if(O.test(e)||D.test(e)||A.test(e)){let r=new Date(e);if(!Number.isNaN(r.getTime()))return r}return null},C=t=>{let e=t.charCodeAt(0),r=t.charCodeAt(t.length-1);return e===123&&r===125||e===91&&r===93},R=t=>JSON.parse(t,(e,r)=>{let n=y(r);return n||r}),g=t=>{if(!t)return t;if(M(t))return+t;if(t==="true")return!0;if(t==="false")return!1;let e=y(t);if(e)return e;if(C(t))try{return R(t)}catch{}return t};var $=async t=>{switch(t.headers.get("Content-Type")?.split(";")[0]){case"application/json":return t.json();case"application/octet-stream":return t.arrayBuffer();case"multipart/form-data":{let r=await t.formData(),n={};return r.forEach((s,a)=>{n[a]=s}),n}}return t.text().then(g)},J=async(t,e)=>{let r=await $(t);return t.status>300?{data:null,status:t.status,headers:t.headers,retry:e,error:new i(t.status,r)}:{data:r,error:null,status:t.status,headers:t.headers,retry:e}},U=(t,e)=>(r,{query:n,params:s,body:a,...d}={})=>{s&&Object.entries(s).forEach(([c,o])=>{r=r.replace(`:${c}`,o)});let m=e?.fetcher||globalThis.fetch,l=n?Object.fromEntries(Object.entries(n).filter(([c,o])=>o!=null)):null,S=l?`?${new URLSearchParams(l).toString()}`:"",x=`${t}${r}${S}`,u=new Headers(d.headers||{}),f=u.get("content-type");if(!(a instanceof FormData)&&!(a instanceof URLSearchParams)&&(!f||f==="application/json"))try{a=JSON.stringify(a),f||u.set("content-type","application/json")}catch{}let E={...d,method:d.method?.toUpperCase()||"GET",headers:u,body:a},p=()=>m(x,E).then(c=>J(c,p)).catch(c=>({data:null,error:new i(503,c),status:503,headers:void 0,retry:p}));return p()};0&&(module.exports={edenFetch});
|
package/dist/fetch.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-VMSCNLL4.mjs";import"./chunk-QSLHAOSM.mjs";export{a as edenFetch};
|
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.global.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
"use strict";var Eden=(()=>{var
|
|
1
|
+
"use strict";var Eden=(()=>{var U=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var oe=(e,t)=>{for(var n in t)U(e,n,{get:t[n],enumerable:!0})},ce=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ae(t))!ie.call(e,s)&&s!==n&&U(e,s,{get:()=>t[s],enumerable:!(r=se(t,s))||r.enumerable});return e};var fe=e=>ce(U({},"__esModule",{value:!0}),e);var ke={};oe(ke,{EdenFetchError:()=>S,edenFetch:()=>re,edenTreaty:()=>ne,treaty:()=>X});var S=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var de=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,ue=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,ye=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,le=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),D=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(de.test(t)||ue.test(t)||ye.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},pe=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},he=e=>JSON.parse(e,(t,n)=>{let r=D(n);return r||n}),$=e=>{if(!e)return e;if(le(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=D(e);if(t)return t;if(pe(e))try{return he(e)}catch{}return e},I=e=>{let t=e.data.toString();return t==="null"?null:$(t)};var P=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,s=>{if(t==="message"){let i=I(s);n({...s,data:i})}else n(s)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var ge=["get","post","put","delete","patch","options","head","connect","subscribe"],Q=["localhost","127.0.0.1","0.0.0.0"],V=typeof FileList>"u",q=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,me=e=>{if(!e)return!1;for(let t in e)if(q(e[t])||Array.isArray(e[t])&&e[t].find(q))return!0;return!1},B=e=>V?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),C=async(e,t,n={},r={})=>{if(Array.isArray(e)){for(let s of e)if(!Array.isArray(s))r=await C(s,t,n,r);else{let i=s[0];if(typeof i=="string")r[i.toLowerCase()]=s[1];else for(let[a,d]of i)r[a.toLowerCase()]=d}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return C(e,t,n,r);let s=await e(t,n);return s?C(s,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((i,a)=>{r[a.toLowerCase()]=i}),r;for(let[i,a]of Object.entries(e))r[i.toLowerCase()]=a;return r;default:return r}};function z(e){let t=e.split(`
|
|
2
|
+
`),n={};for(let r of t){if(!r||r.startsWith(":"))continue;let s=r.indexOf(":");if(s>0){let i=r.slice(0,s).trim(),a=r.slice(s+1).replace(/^ /,"");n[i]=a&&$(a)}}return Object.keys(n).length>0?n:null}function*Z(e){let t;for(;(t=e.value.indexOf(`
|
|
2
3
|
|
|
3
|
-
`)
|
|
4
|
-
|
|
5
|
-
`);for(let n of t){if(n.indexOf(":")<=0){n&&(yield L(n));continue}let r=n.split(`
|
|
6
|
-
`),a={};for(let s of r){let i=s.indexOf(":");if(i>0){let y=s.slice(0,i).trim(),j=s.slice(i+1).trim();a[y]=L(j)}}yield a}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(a,s){return K(e,t,s==="index"?n:[...n,s],r)},apply(a,s,[i,y]){if(!i||y||typeof i=="object"&&Object.keys(i).length!==1||pe.includes(n.at(-1))){let j=[...n],A=j.pop(),w="/"+j.join("/"),{fetcher:k=fetch,headers:T,onRequest:m,onResponse:b,fetch:S}=t,h=A==="get"||A==="head"||A==="subscribe";T=M(T,w,y);let N=h?i?.query:y?.query,x="";if(N){let o=(O,E)=>{x+=(x?"&":"?")+`${encodeURIComponent(O)}=${encodeURIComponent(E)}`};for(let[O,E]of Object.entries(N)){if(Array.isArray(E)){for(let c of E)o(O,c);continue}if(E!=null){if(typeof E=="object"){o(O,JSON.stringify(E));continue}o(O,`${E}`)}}}if(A==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Z.find(O=>e.includes(O))?"ws://":"wss://")+w+x;return new P(o)}return(async()=>{let o={method:A?.toUpperCase(),body:i,...S,headers:T};o.headers={...T,...M(h?i?.headers:y?.headers,w,o)};let O=h&&typeof i=="object"?i.fetch:y?.fetch;if(o={...o,...O},h&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}if(h&&delete o.body,he(i)){let u=new FormData;for(let[f,d]of Object.entries(o.body)){if(Array.isArray(d)){for(let l=0;l<d.length;l++){let v=d[l];u.append(f,v instanceof File?await U(v):v)}continue}if(H){if(Array.isArray(d))for(let l of d)u.append(f,l);else u.append(f,d);continue}if(d instanceof File){u.append(f,await U(d));continue}if(d instanceof FileList){for(let l=0;l<d.length;l++)u.append(f,await U(d[l]));continue}u.append(f,d)}o.body=u}else typeof i=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(i)):i!=null&&(o.headers["content-type"]="text/plain");if(h&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}y?.headers?.["content-type"]&&(o.headers["content-type"]=y?.headers["content-type"]);let E=e+w+x,c=await(r?.handle(new Request(E,o))??k(E,o)),g=null,p=null;if(b){Array.isArray(b)||(b=[b]);for(let u of b)try{let f=await u(c.clone());if(f!=null){g=f;break}}catch(f){f instanceof R?p=f:p=new R(422,f);break}}if(g!==null)return{data:g,error:p,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":g=ge(c);break;case"application/json":g=JSON.parse(await c.text(),(f,d)=>{if(typeof d!="string")return d;let l=D(d);return l||d});break;case"application/octet-stream":g=await c.arrayBuffer();break;case"multipart/form-data":let u=await c.formData();g={},u.forEach((f,d)=>{g[d]=f});break;default:g=await c.text().then(L)}return(c.status>=300||c.status<200)&&(p=new R(c.status,g),g=null),{data:g,error:p,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?K(e,t,[...n,Object.values(i)[0]],r):K(e,t,n)}}),Q=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(Z.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),K(e,t)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),K("http://e.ly",t,[],e));var z=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${e}${t}?${r.slice(0,-1)}`};var V=typeof FileList>"u",X=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,Ee=e=>{if(!e)return!1;for(let t in e){if(X(e[t]))return!0;if(Array.isArray(e[t])&&e[t].find(n=>X(n)))return!0}return!1},_=e=>V?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),B=class{ws;url;constructor(t){this.ws=new WebSocket(t),this.url=t}send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}},Y=(e,t="",n)=>new Proxy(()=>{},{get(r,a,s){return Y(e,`${t}/${a.toString()}`,n)},apply(r,a,[s,i={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:j,$fetch:A,$headers:w,$transform:k,getRaw:T,...m}=s??{};y??=m;let b=t.lastIndexOf("/"),S=t.slice(b+1).toUpperCase(),h=z(e,b===-1?"/":t.slice(0,b),Object.assign(i.query??{},j)),N=n.fetcher??fetch,x=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=k?Array.isArray(k)?k:[k]:void 0;return o&&(x?x=o.concat(x):x=o),S==="SUBSCRIBE"?new B(h.replace(/^([^]+):\/\//,h.startsWith("https://")?"wss://":"ws://")):(async E=>{let c,g={...n.$fetch?.headers,...A?.headers,...i.headers,...w};if(S!=="GET"&&S!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let l=c&&(typeof c=="object"||Array.isArray(y));if(l&&Ee(c)){let $=new FormData;for(let[C,F]of Object.entries(c))if(V)$.append(C,F);else if(F instanceof File)$.append(C,await _(F));else if(F instanceof FileList)for(let W=0;W<F.length;W++)$.append(C,await _(F[W]));else if(Array.isArray(F))for(let W=0;W<F.length;W++){let q=F[W];$.append(C,q instanceof File?await _(q):q)}else $.append(C,F);c=$}else c!=null&&(g["content-type"]=l?"application/json":"text/plain",c=l?JSON.stringify(c):y)}let p=await N(h,{method:S,body:c,...n.$fetch,...i.fetch,...A,headers:g}),u;if(E.getRaw)return p;switch(p.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await p.json();break;default:u=await p.text().then(L)}let f=p.status>=300||p.status<200?new R(p.status,u):null,d={data:u,error:f,response:p,status:p.status,headers:p.headers};if(x)for(let l of x){let v=l(d);v instanceof Promise&&(v=await v),v!=null&&(d=v)}return d})({getRaw:T})}}),ee=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return Y(e,r,t)}});var we=async e=>{switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":return e.json();case"application/octet-stream":return e.arrayBuffer();case"multipart/form-data":{let n=await e.formData(),r={};return n.forEach((a,s)=>{r[s]=a}),r}}return e.text().then(L)},be=async(e,t)=>{let n=await we(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new R(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},te=(e,t)=>(n,{query:r,params:a,body:s,...i}={})=>{a&&Object.entries(a).forEach(([S,h])=>{n=n.replace(`:${S}`,h)});let y=t?.fetcher||globalThis.fetch,j=r?Object.fromEntries(Object.entries(r).filter(([S,h])=>h!=null)):null,A=j?`?${new URLSearchParams(j).toString()}`:"",w=`${e}${n}${A}`,k=new Headers(i.headers||{}),T=k.get("content-type");if(!(s instanceof FormData)&&!(s instanceof URLSearchParams)&&(!T||T==="application/json"))try{s=JSON.stringify(s),T||k.set("content-type","application/json")}catch{}let m={...i,method:i.method?.toUpperCase()||"GET",headers:k,body:s},b=()=>y(w,m).then(S=>be(S,b));return b()};return oe(Se);})();
|
|
4
|
+
`))!==-1;){let n=e.value.slice(0,t);if(e.value=e.value.slice(t+2),n.trim()){let r=z(n);r&&(yield r)}}}async function*we(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder("utf-8"),s={value:""};try{for(;;){let{done:a,value:d}=await n.read();if(a)break;let W=typeof d=="string"?d:r.decode(d,{stream:!0});s.value+=W,yield*Z(s)}let i=r.decode();if(i&&(s.value+=i),yield*Z(s),s.value.trim()){let a=z(s.value);a&&(yield a)}}finally{n.releaseLock()}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(s,i){return K(e,t,i==="index"?n:[...n,i],r)},apply(s,i,[a,d]){if(!a||d||typeof a=="object"&&Object.keys(a).length!==1||ge.includes(n.at(-1))){let W=[...n],F=W.pop(),A="/"+W.join("/"),{fetcher:R=fetch,headers:j,onRequest:w,onResponse:k,fetch:E}=t,h=F==="get"||F==="head"||F==="subscribe",N=h?a?.query:d?.query,O="";if(N){let o=(L,b)=>{O+=(O?"&":"?")+`${encodeURIComponent(L)}=${encodeURIComponent(b)}`};for(let[L,b]of Object.entries(N)){if(Array.isArray(b)){for(let c of b)o(L,c);continue}if(b!=null){if(typeof b=="object"){o(L,JSON.stringify(b));continue}o(L,`${b}`)}}}if(F==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Q.find(L=>e.includes(L))?"ws://":"wss://")+A+O;return new P(o)}return(async()=>{j=await C(j,A,d);let o={method:F?.toUpperCase(),body:a,...E,headers:j};o.headers={...j,...await C(h?a?.headers:d?.headers,A,o)};let L=h&&typeof a=="object"?a.fetch:d?.fetch;if(o={...o,...L},h&&delete o.body,w){Array.isArray(w)||(w=[w]);for(let u of w){let y=await u(A,o);typeof y=="object"&&(o={...o,...y,headers:{...o.headers,...await C(y.headers,A,o)}})}}if(h&&delete o.body,me(a)){let u=new FormData,y=f=>{if(typeof f=="string"||q(f))return!1;if(typeof f=="object"){if(f!==null)return!0;if(f instanceof Date)return!1}return!1},m=async f=>f instanceof File?await B(f):y(f)?JSON.stringify(f):f;for(let[f,l]of Object.entries(o.body)){if(Array.isArray(l)){if(l.some(v=>typeof v=="object"&&v!==null&&!q(v)))u.append(f,JSON.stringify(l));else for(let v=0;v<l.length;v++){let T=l[v],M=await m(T);u.append(f,M)}continue}if(V){if(Array.isArray(l))for(let x of l)u.append(f,await m(x));else u.append(f,await m(l));continue}if(l instanceof File){u.append(f,await B(l));continue}if(l instanceof FileList){for(let x=0;x<l.length;x++)u.append(f,await B(l[x]));continue}u.append(f,await m(l))}o.body=u}else typeof a=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(a)):a!=null&&(o.headers["content-type"]="text/plain");if(h&&delete o.body,w){Array.isArray(w)||(w=[w]);for(let u of w){let y=await u(A,o);typeof y=="object"&&(o={...o,...y,headers:{...o.headers,...await C(y.headers,A,o)}})}}d?.headers?.["content-type"]&&(o.headers["content-type"]=d?.headers["content-type"]);let b=e+A+O,c;try{c=await(r?.handle(new Request(b,o))??R(b,o))}catch(u){return{data:null,error:new S(503,u),response:void 0,status:503,headers:void 0}}let g=null,p=null;if(k){Array.isArray(k)||(k=[k]);for(let u of k)try{let y=await u(c.clone());if(y!=null){g=y;break}}catch(y){y instanceof S?p=y:p=new S(422,y);break}}if(g!==null)return{data:g,error:p,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":g=we(c);break;case"application/json":g=JSON.parse(await c.text(),(y,m)=>{if(typeof m!="string")return m;let f=D(m);return f||m});break;case"application/octet-stream":g=await c.arrayBuffer();break;case"multipart/form-data":let u=await c.formData();g={},u.forEach((y,m)=>{g[m]=y});break;default:g=await c.text().then($)}return(c.status>=300||c.status<200)&&(p=new S(c.status,g),g=null),{data:g,error:p,response:c,status:c.status,headers:c.headers}})()}return typeof a=="object"?K(e,t,[...n,Object.values(a)[0]],r):K(e,t,n)}}),X=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(Q.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),K(e,t)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),K("http://e.ly",t,[],e));var Y=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[s,i]of Object.entries(n))r+=`${s}=${i}&`;return`${e}${t}?${r.slice(0,-1)}`};var G=typeof FileList>"u",ee=e=>G?e instanceof Blob:e instanceof FileList||e instanceof File,Ee=e=>{if(!e)return!1;for(let t in e){if(ee(e[t]))return!0;if(Array.isArray(e[t])&&e[t].find(n=>ee(n)))return!0}return!1},H=e=>G?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),_=class{ws;url;constructor(t){this.ws=new WebSocket(t),this.url=t}send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,s=>{if(t==="message"){let i=I(s);n({...s,data:i})}else n(s)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}},te=(e,t="",n)=>new Proxy(()=>{},{get(r,s,i){return te(e,`${t}/${s.toString()}`,n)},apply(r,s,[i,a={}]=[{},{}]){let d=i!==void 0&&(typeof i!="object"||Array.isArray(i))?i:void 0,{$query:W,$fetch:F,$headers:A,$transform:R,getRaw:j,...w}=i??{};d??=w;let k=t.lastIndexOf("/"),E=t.slice(k+1).toUpperCase(),h=Y(e,k===-1?"/":t.slice(0,k),Object.assign(a.query??{},W)),N=n.fetcher??fetch,O=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=R?Array.isArray(R)?R:[R]:void 0;return o&&(O?O=o.concat(O):O=o),E==="SUBSCRIBE"?new _(h.replace(/^([^]+):\/\//,h.startsWith("https://")?"wss://":"ws://")):(async b=>{let c,g={...n.$fetch?.headers,...F?.headers,...a.headers,...A};if(E!=="GET"&&E!=="HEAD"){c=Object.keys(d).length||Array.isArray(d)?d:void 0;let f=c&&(typeof c=="object"||Array.isArray(d));if(f&&Ee(c)){let x=new FormData;for(let[v,T]of Object.entries(c))if(G)x.append(v,T);else if(T instanceof File)x.append(v,await H(T));else if(T instanceof FileList)for(let M=0;M<T.length;M++)x.append(v,await H(T[M]));else if(Array.isArray(T))for(let M=0;M<T.length;M++){let J=T[M];x.append(v,J instanceof File?await H(J):J)}else x.append(v,T);c=x}else c!=null&&(g["content-type"]=f?"application/json":"text/plain",c=f?JSON.stringify(c):d)}let p=await N(h,{method:E,body:c,...n.$fetch,...a.fetch,...F,headers:g}),u;if(b.getRaw)return p;switch(p.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await p.json();break;default:u=await p.text().then($)}let y=p.status>=300||p.status<200?new S(p.status,u):null,m={data:u,error:y,response:p,status:p.status,headers:p.headers};if(O)for(let f of O){let l=f(m);l instanceof Promise&&(l=await l),l!=null&&(m=l)}return m})({getRaw:j})}}),ne=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return te(e,r,t)}});var be=async e=>{switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":return e.json();case"application/octet-stream":return e.arrayBuffer();case"multipart/form-data":{let n=await e.formData(),r={};return n.forEach((s,i)=>{r[i]=s}),r}}return e.text().then($)},Se=async(e,t)=>{let n=await be(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new S(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},re=(e,t)=>(n,{query:r,params:s,body:i,...a}={})=>{s&&Object.entries(s).forEach(([E,h])=>{n=n.replace(`:${E}`,h)});let d=t?.fetcher||globalThis.fetch,W=r?Object.fromEntries(Object.entries(r).filter(([E,h])=>h!=null)):null,F=W?`?${new URLSearchParams(W).toString()}`:"",A=`${e}${n}${F}`,R=new Headers(a.headers||{}),j=R.get("content-type");if(!(i instanceof FormData)&&!(i instanceof URLSearchParams)&&(!j||j==="application/json"))try{i=JSON.stringify(i),j||R.set("content-type","application/json")}catch{}let w={...a,method:a.method?.toUpperCase()||"GET",headers:R,body:i},k=()=>d(A,w).then(E=>Se(E,k)).catch(E=>({data:null,error:new S(503,E),status:503,headers:void 0,retry:k}));return k()};return fe(ke);})();
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var U=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var oe=(e,t)=>{for(var n in t)U(e,n,{get:t[n],enumerable:!0})},ce=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of ae(t))!ie.call(e,s)&&s!==n&&U(e,s,{get:()=>t[s],enumerable:!(r=se(t,s))||r.enumerable});return e};var fe=e=>ce(U({},"__esModule",{value:!0}),e);var ke={};oe(ke,{EdenFetchError:()=>S,edenFetch:()=>re,edenTreaty:()=>ne,treaty:()=>X});module.exports=fe(ke);var S=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var de=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,ue=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,ye=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,le=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),D=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(de.test(t)||ue.test(t)||ye.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},pe=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},he=e=>JSON.parse(e,(t,n)=>{let r=D(n);return r||n}),$=e=>{if(!e)return e;if(le(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=D(e);if(t)return t;if(pe(e))try{return he(e)}catch{}return e},I=e=>{let t=e.data.toString();return t==="null"?null:$(t)};var P=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,s=>{if(t==="message"){let i=I(s);n({...s,data:i})}else n(s)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var ge=["get","post","put","delete","patch","options","head","connect","subscribe"],Q=["localhost","127.0.0.1","0.0.0.0"],V=typeof FileList>"u",q=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,me=e=>{if(!e)return!1;for(let t in e)if(q(e[t])||Array.isArray(e[t])&&e[t].find(q))return!0;return!1},B=e=>V?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),C=async(e,t,n={},r={})=>{if(Array.isArray(e)){for(let s of e)if(!Array.isArray(s))r=await C(s,t,n,r);else{let i=s[0];if(typeof i=="string")r[i.toLowerCase()]=s[1];else for(let[a,d]of i)r[a.toLowerCase()]=d}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return C(e,t,n,r);let s=await e(t,n);return s?C(s,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((i,a)=>{r[a.toLowerCase()]=i}),r;for(let[i,a]of Object.entries(e))r[i.toLowerCase()]=a;return r;default:return r}};function z(e){let t=e.split(`
|
|
2
|
+
`),n={};for(let r of t){if(!r||r.startsWith(":"))continue;let s=r.indexOf(":");if(s>0){let i=r.slice(0,s).trim(),a=r.slice(s+1).replace(/^ /,"");n[i]=a&&$(a)}}return Object.keys(n).length>0?n:null}function*Z(e){let t;for(;(t=e.value.indexOf(`
|
|
2
3
|
|
|
3
|
-
`)
|
|
4
|
-
|
|
5
|
-
`);for(let n of t){if(n.indexOf(":")<=0){n&&(yield L(n));continue}let r=n.split(`
|
|
6
|
-
`),a={};for(let s of r){let i=s.indexOf(":");if(i>0){let y=s.slice(0,i).trim(),j=s.slice(i+1).trim();a[y]=L(j)}}yield a}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(a,s){return K(e,t,s==="index"?n:[...n,s],r)},apply(a,s,[i,y]){if(!i||y||typeof i=="object"&&Object.keys(i).length!==1||pe.includes(n.at(-1))){let j=[...n],A=j.pop(),w="/"+j.join("/"),{fetcher:k=fetch,headers:T,onRequest:m,onResponse:b,fetch:S}=t,h=A==="get"||A==="head"||A==="subscribe";T=M(T,w,y);let N=h?i?.query:y?.query,x="";if(N){let o=(O,E)=>{x+=(x?"&":"?")+`${encodeURIComponent(O)}=${encodeURIComponent(E)}`};for(let[O,E]of Object.entries(N)){if(Array.isArray(E)){for(let c of E)o(O,c);continue}if(E!=null){if(typeof E=="object"){o(O,JSON.stringify(E));continue}o(O,`${E}`)}}}if(A==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Z.find(O=>e.includes(O))?"ws://":"wss://")+w+x;return new P(o)}return(async()=>{let o={method:A?.toUpperCase(),body:i,...S,headers:T};o.headers={...T,...M(h?i?.headers:y?.headers,w,o)};let O=h&&typeof i=="object"?i.fetch:y?.fetch;if(o={...o,...O},h&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}if(h&&delete o.body,he(i)){let u=new FormData;for(let[f,d]of Object.entries(o.body)){if(Array.isArray(d)){for(let l=0;l<d.length;l++){let v=d[l];u.append(f,v instanceof File?await U(v):v)}continue}if(H){if(Array.isArray(d))for(let l of d)u.append(f,l);else u.append(f,d);continue}if(d instanceof File){u.append(f,await U(d));continue}if(d instanceof FileList){for(let l=0;l<d.length;l++)u.append(f,await U(d[l]));continue}u.append(f,d)}o.body=u}else typeof i=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(i)):i!=null&&(o.headers["content-type"]="text/plain");if(h&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}y?.headers?.["content-type"]&&(o.headers["content-type"]=y?.headers["content-type"]);let E=e+w+x,c=await(r?.handle(new Request(E,o))??k(E,o)),g=null,p=null;if(b){Array.isArray(b)||(b=[b]);for(let u of b)try{let f=await u(c.clone());if(f!=null){g=f;break}}catch(f){f instanceof R?p=f:p=new R(422,f);break}}if(g!==null)return{data:g,error:p,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":g=ge(c);break;case"application/json":g=JSON.parse(await c.text(),(f,d)=>{if(typeof d!="string")return d;let l=D(d);return l||d});break;case"application/octet-stream":g=await c.arrayBuffer();break;case"multipart/form-data":let u=await c.formData();g={},u.forEach((f,d)=>{g[d]=f});break;default:g=await c.text().then(L)}return(c.status>=300||c.status<200)&&(p=new R(c.status,g),g=null),{data:g,error:p,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?K(e,t,[...n,Object.values(i)[0]],r):K(e,t,n)}}),Q=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(Z.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),K(e,t)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),K("http://e.ly",t,[],e));var z=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${e}${t}?${r.slice(0,-1)}`};var V=typeof FileList>"u",X=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,Ee=e=>{if(!e)return!1;for(let t in e){if(X(e[t]))return!0;if(Array.isArray(e[t])&&e[t].find(n=>X(n)))return!0}return!1},_=e=>V?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),B=class{ws;url;constructor(t){this.ws=new WebSocket(t),this.url=t}send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}},Y=(e,t="",n)=>new Proxy(()=>{},{get(r,a,s){return Y(e,`${t}/${a.toString()}`,n)},apply(r,a,[s,i={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:j,$fetch:A,$headers:w,$transform:k,getRaw:T,...m}=s??{};y??=m;let b=t.lastIndexOf("/"),S=t.slice(b+1).toUpperCase(),h=z(e,b===-1?"/":t.slice(0,b),Object.assign(i.query??{},j)),N=n.fetcher??fetch,x=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=k?Array.isArray(k)?k:[k]:void 0;return o&&(x?x=o.concat(x):x=o),S==="SUBSCRIBE"?new B(h.replace(/^([^]+):\/\//,h.startsWith("https://")?"wss://":"ws://")):(async E=>{let c,g={...n.$fetch?.headers,...A?.headers,...i.headers,...w};if(S!=="GET"&&S!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let l=c&&(typeof c=="object"||Array.isArray(y));if(l&&Ee(c)){let $=new FormData;for(let[C,F]of Object.entries(c))if(V)$.append(C,F);else if(F instanceof File)$.append(C,await _(F));else if(F instanceof FileList)for(let W=0;W<F.length;W++)$.append(C,await _(F[W]));else if(Array.isArray(F))for(let W=0;W<F.length;W++){let q=F[W];$.append(C,q instanceof File?await _(q):q)}else $.append(C,F);c=$}else c!=null&&(g["content-type"]=l?"application/json":"text/plain",c=l?JSON.stringify(c):y)}let p=await N(h,{method:S,body:c,...n.$fetch,...i.fetch,...A,headers:g}),u;if(E.getRaw)return p;switch(p.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await p.json();break;default:u=await p.text().then(L)}let f=p.status>=300||p.status<200?new R(p.status,u):null,d={data:u,error:f,response:p,status:p.status,headers:p.headers};if(x)for(let l of x){let v=l(d);v instanceof Promise&&(v=await v),v!=null&&(d=v)}return d})({getRaw:T})}}),ee=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return Y(e,r,t)}});var we=async e=>{switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":return e.json();case"application/octet-stream":return e.arrayBuffer();case"multipart/form-data":{let n=await e.formData(),r={};return n.forEach((a,s)=>{r[s]=a}),r}}return e.text().then(L)},be=async(e,t)=>{let n=await we(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new R(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},te=(e,t)=>(n,{query:r,params:a,body:s,...i}={})=>{a&&Object.entries(a).forEach(([S,h])=>{n=n.replace(`:${S}`,h)});let y=t?.fetcher||globalThis.fetch,j=r?Object.fromEntries(Object.entries(r).filter(([S,h])=>h!=null)):null,A=j?`?${new URLSearchParams(j).toString()}`:"",w=`${e}${n}${A}`,k=new Headers(i.headers||{}),T=k.get("content-type");if(!(s instanceof FormData)&&!(s instanceof URLSearchParams)&&(!T||T==="application/json"))try{s=JSON.stringify(s),T||k.set("content-type","application/json")}catch{}let m={...i,method:i.method?.toUpperCase()||"GET",headers:k,body:s},b=()=>y(w,m).then(S=>be(S,b));return b()};0&&(module.exports={edenFetch,edenTreaty,treaty});
|
|
4
|
+
`))!==-1;){let n=e.value.slice(0,t);if(e.value=e.value.slice(t+2),n.trim()){let r=z(n);r&&(yield r)}}}async function*we(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder("utf-8"),s={value:""};try{for(;;){let{done:a,value:d}=await n.read();if(a)break;let W=typeof d=="string"?d:r.decode(d,{stream:!0});s.value+=W,yield*Z(s)}let i=r.decode();if(i&&(s.value+=i),yield*Z(s),s.value.trim()){let a=z(s.value);a&&(yield a)}}finally{n.releaseLock()}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(s,i){return K(e,t,i==="index"?n:[...n,i],r)},apply(s,i,[a,d]){if(!a||d||typeof a=="object"&&Object.keys(a).length!==1||ge.includes(n.at(-1))){let W=[...n],F=W.pop(),A="/"+W.join("/"),{fetcher:R=fetch,headers:j,onRequest:w,onResponse:k,fetch:E}=t,h=F==="get"||F==="head"||F==="subscribe",N=h?a?.query:d?.query,O="";if(N){let o=(L,b)=>{O+=(O?"&":"?")+`${encodeURIComponent(L)}=${encodeURIComponent(b)}`};for(let[L,b]of Object.entries(N)){if(Array.isArray(b)){for(let c of b)o(L,c);continue}if(b!=null){if(typeof b=="object"){o(L,JSON.stringify(b));continue}o(L,`${b}`)}}}if(F==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Q.find(L=>e.includes(L))?"ws://":"wss://")+A+O;return new P(o)}return(async()=>{j=await C(j,A,d);let o={method:F?.toUpperCase(),body:a,...E,headers:j};o.headers={...j,...await C(h?a?.headers:d?.headers,A,o)};let L=h&&typeof a=="object"?a.fetch:d?.fetch;if(o={...o,...L},h&&delete o.body,w){Array.isArray(w)||(w=[w]);for(let u of w){let y=await u(A,o);typeof y=="object"&&(o={...o,...y,headers:{...o.headers,...await C(y.headers,A,o)}})}}if(h&&delete o.body,me(a)){let u=new FormData,y=f=>{if(typeof f=="string"||q(f))return!1;if(typeof f=="object"){if(f!==null)return!0;if(f instanceof Date)return!1}return!1},m=async f=>f instanceof File?await B(f):y(f)?JSON.stringify(f):f;for(let[f,l]of Object.entries(o.body)){if(Array.isArray(l)){if(l.some(v=>typeof v=="object"&&v!==null&&!q(v)))u.append(f,JSON.stringify(l));else for(let v=0;v<l.length;v++){let T=l[v],M=await m(T);u.append(f,M)}continue}if(V){if(Array.isArray(l))for(let x of l)u.append(f,await m(x));else u.append(f,await m(l));continue}if(l instanceof File){u.append(f,await B(l));continue}if(l instanceof FileList){for(let x=0;x<l.length;x++)u.append(f,await B(l[x]));continue}u.append(f,await m(l))}o.body=u}else typeof a=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(a)):a!=null&&(o.headers["content-type"]="text/plain");if(h&&delete o.body,w){Array.isArray(w)||(w=[w]);for(let u of w){let y=await u(A,o);typeof y=="object"&&(o={...o,...y,headers:{...o.headers,...await C(y.headers,A,o)}})}}d?.headers?.["content-type"]&&(o.headers["content-type"]=d?.headers["content-type"]);let b=e+A+O,c;try{c=await(r?.handle(new Request(b,o))??R(b,o))}catch(u){return{data:null,error:new S(503,u),response:void 0,status:503,headers:void 0}}let g=null,p=null;if(k){Array.isArray(k)||(k=[k]);for(let u of k)try{let y=await u(c.clone());if(y!=null){g=y;break}}catch(y){y instanceof S?p=y:p=new S(422,y);break}}if(g!==null)return{data:g,error:p,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":g=we(c);break;case"application/json":g=JSON.parse(await c.text(),(y,m)=>{if(typeof m!="string")return m;let f=D(m);return f||m});break;case"application/octet-stream":g=await c.arrayBuffer();break;case"multipart/form-data":let u=await c.formData();g={},u.forEach((y,m)=>{g[m]=y});break;default:g=await c.text().then($)}return(c.status>=300||c.status<200)&&(p=new S(c.status,g),g=null),{data:g,error:p,response:c,status:c.status,headers:c.headers}})()}return typeof a=="object"?K(e,t,[...n,Object.values(a)[0]],r):K(e,t,n)}}),X=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(Q.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),K(e,t)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),K("http://e.ly",t,[],e));var Y=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[s,i]of Object.entries(n))r+=`${s}=${i}&`;return`${e}${t}?${r.slice(0,-1)}`};var G=typeof FileList>"u",ee=e=>G?e instanceof Blob:e instanceof FileList||e instanceof File,Ee=e=>{if(!e)return!1;for(let t in e){if(ee(e[t]))return!0;if(Array.isArray(e[t])&&e[t].find(n=>ee(n)))return!0}return!1},H=e=>G?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),_=class{ws;url;constructor(t){this.ws=new WebSocket(t),this.url=t}send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,s=>{if(t==="message"){let i=I(s);n({...s,data:i})}else n(s)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}},te=(e,t="",n)=>new Proxy(()=>{},{get(r,s,i){return te(e,`${t}/${s.toString()}`,n)},apply(r,s,[i,a={}]=[{},{}]){let d=i!==void 0&&(typeof i!="object"||Array.isArray(i))?i:void 0,{$query:W,$fetch:F,$headers:A,$transform:R,getRaw:j,...w}=i??{};d??=w;let k=t.lastIndexOf("/"),E=t.slice(k+1).toUpperCase(),h=Y(e,k===-1?"/":t.slice(0,k),Object.assign(a.query??{},W)),N=n.fetcher??fetch,O=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=R?Array.isArray(R)?R:[R]:void 0;return o&&(O?O=o.concat(O):O=o),E==="SUBSCRIBE"?new _(h.replace(/^([^]+):\/\//,h.startsWith("https://")?"wss://":"ws://")):(async b=>{let c,g={...n.$fetch?.headers,...F?.headers,...a.headers,...A};if(E!=="GET"&&E!=="HEAD"){c=Object.keys(d).length||Array.isArray(d)?d:void 0;let f=c&&(typeof c=="object"||Array.isArray(d));if(f&&Ee(c)){let x=new FormData;for(let[v,T]of Object.entries(c))if(G)x.append(v,T);else if(T instanceof File)x.append(v,await H(T));else if(T instanceof FileList)for(let M=0;M<T.length;M++)x.append(v,await H(T[M]));else if(Array.isArray(T))for(let M=0;M<T.length;M++){let J=T[M];x.append(v,J instanceof File?await H(J):J)}else x.append(v,T);c=x}else c!=null&&(g["content-type"]=f?"application/json":"text/plain",c=f?JSON.stringify(c):d)}let p=await N(h,{method:E,body:c,...n.$fetch,...a.fetch,...F,headers:g}),u;if(b.getRaw)return p;switch(p.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await p.json();break;default:u=await p.text().then($)}let y=p.status>=300||p.status<200?new S(p.status,u):null,m={data:u,error:y,response:p,status:p.status,headers:p.headers};if(O)for(let f of O){let l=f(m);l instanceof Promise&&(l=await l),l!=null&&(m=l)}return m})({getRaw:j})}}),ne=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return te(e,r,t)}});var be=async e=>{switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":return e.json();case"application/octet-stream":return e.arrayBuffer();case"multipart/form-data":{let n=await e.formData(),r={};return n.forEach((s,i)=>{r[i]=s}),r}}return e.text().then($)},Se=async(e,t)=>{let n=await be(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new S(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},re=(e,t)=>(n,{query:r,params:s,body:i,...a}={})=>{s&&Object.entries(s).forEach(([E,h])=>{n=n.replace(`:${E}`,h)});let d=t?.fetcher||globalThis.fetch,W=r?Object.fromEntries(Object.entries(r).filter(([E,h])=>h!=null)):null,F=W?`?${new URLSearchParams(W).toString()}`:"",A=`${e}${n}${F}`,R=new Headers(a.headers||{}),j=R.get("content-type");if(!(i instanceof FormData)&&!(i instanceof URLSearchParams)&&(!j||j==="application/json"))try{i=JSON.stringify(i),j||R.set("content-type","application/json")}catch{}let w={...a,method:a.method?.toUpperCase()||"GET",headers:R,body:i},k=()=>d(A,w).then(E=>Se(E,k)).catch(E=>({data:null,error:new S(503,E),status:503,headers:void 0,retry:k}));return k()};0&&(module.exports={EdenFetchError,edenFetch,edenTreaty,treaty});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as
|
|
1
|
+
import{b as t}from"./chunk-EF6Z4LSD.mjs";import{b as r}from"./chunk-7WR4DS5F.mjs";import{a as o}from"./chunk-VMSCNLL4.mjs";import{a as e}from"./chunk-QSLHAOSM.mjs";export{e as EdenFetchError,o as edenFetch,t as edenTreaty,r as treaty};
|
package/dist/treaty.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Elysia, InputSchema } from 'elysia';
|
|
2
|
-
import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-
|
|
2
|
+
import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-BdHMTa_C.mjs';
|
|
3
3
|
|
|
4
4
|
type Files = File | FileList;
|
|
5
5
|
type Replace<RecordType, TargetType, GenericType> = {
|
package/dist/treaty.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Elysia, InputSchema } from 'elysia';
|
|
2
|
-
import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-
|
|
2
|
+
import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-BdHMTa_C.js';
|
|
3
3
|
|
|
4
4
|
type Files = File | FileList;
|
|
5
5
|
type Replace<RecordType, TargetType, GenericType> = {
|
package/dist/treaty2/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Elysia } from 'elysia';
|
|
2
2
|
import type { Treaty } from './types';
|
|
3
|
-
export declare function streamResponse(response: Response): AsyncGenerator<
|
|
3
|
+
export declare function streamResponse(response: Response): AsyncGenerator<Record<string, unknown>, void, any>;
|
|
4
4
|
export declare const treaty: <const App extends Elysia<any, any, any, any, any, any, any>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
|
|
5
5
|
export type { Treaty };
|
package/dist/treaty2/types.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { Elysia, ELYSIA_FORM_DATA } from 'elysia';
|
|
2
2
|
import { EdenWS } from './ws';
|
|
3
|
-
import type { IsNever, Not, Prettify } from '../types';
|
|
3
|
+
import type { IsNever, MaybeEmptyObject, Not, Prettify } from '../types';
|
|
4
|
+
import { BunFile } from 'bun';
|
|
4
5
|
type And<A extends boolean, B extends boolean> = A extends true ? B extends true ? true : false : false;
|
|
5
6
|
type ReplaceGeneratorWithAsyncGenerator<in out RecordType extends Record<string, unknown>> = {
|
|
6
7
|
[K in keyof RecordType]: IsNever<RecordType[K]> extends true ? RecordType[K] : RecordType[K] extends Generator<infer A, infer B, infer C> ? void extends B ? AsyncGenerator<A, B, C> : And<IsNever<A>, void extends B ? false : true> extends true ? B : AsyncGenerator<A, B, C> | B : RecordType[K] extends AsyncGenerator<infer A, infer B, infer C> ? And<Not<IsNever<A>>, void extends B ? true : false> extends true ? AsyncGenerator<A, B, C> : And<IsNever<A>, void extends B ? false : true> extends true ? B : AsyncGenerator<A, B, C> | B : RecordType[K] extends ReadableStream<infer A> ? AsyncGenerator<A, void, unknown> : RecordType[K];
|
|
@@ -9,45 +10,28 @@ type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] exte
|
|
|
9
10
|
type IntegerRange<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
|
|
10
11
|
type SuccessCodeRange = IntegerRange<200, 300>;
|
|
11
12
|
type MaybeArray<T> = T | T[];
|
|
13
|
+
type MaybeArrayFile<T> = T extends (File | BunFile)[] ? (File | BunFile)[] | File | BunFile : T extends File | BunFile ? File | BunFile : T;
|
|
14
|
+
type RelaxFileArrays<T> = T extends Record<string, unknown> ? {
|
|
15
|
+
[K in keyof T]: MaybeArrayFile<T[K]>;
|
|
16
|
+
} : T;
|
|
17
|
+
type SerializeQueryParams<T> = T extends Record<string, any> ? {
|
|
18
|
+
[K in keyof T]: T[K] extends Date ? string : T[K] extends Date | undefined ? string | undefined : T[K];
|
|
19
|
+
} : T;
|
|
12
20
|
export declare namespace Treaty {
|
|
13
21
|
interface TreatyParam {
|
|
14
22
|
fetch?: RequestInit;
|
|
15
23
|
}
|
|
16
24
|
export type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends {
|
|
17
|
-
'~Routes': infer Schema extends Record<
|
|
25
|
+
'~Routes': infer Schema extends Record<any, any>;
|
|
18
26
|
} ? Prettify<Sign<Schema>> & CreateParams<Schema> : 'Please install Elysia before using Eden';
|
|
19
|
-
export type Sign<in out Route extends Record<
|
|
20
|
-
[K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ?
|
|
21
|
-
headers?: Record<string, unknown>;
|
|
22
|
-
} : undefined extends Route['subscribe']['headers'] ? {
|
|
23
|
-
headers?: Record<string, unknown>;
|
|
24
|
-
} : {
|
|
25
|
-
headers: Route['subscribe']['headers'];
|
|
26
|
-
}) & ({} extends Route['subscribe']['query'] ? {
|
|
27
|
-
query?: Record<string, unknown>;
|
|
28
|
-
} : undefined extends Route['subscribe']['query'] ? {
|
|
29
|
-
query?: Record<string, unknown>;
|
|
30
|
-
} : {
|
|
31
|
-
query: Route['subscribe']['query'];
|
|
32
|
-
}) extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
|
|
27
|
+
export type Sign<in out Route extends Record<any, any>> = {
|
|
28
|
+
[K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? MaybeEmptyObject<Route['subscribe']['headers'], 'headers'> & MaybeEmptyObject<SerializeQueryParams<Route['subscribe']['query']>, 'query'> extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
|
|
33
29
|
body: infer Body;
|
|
34
30
|
headers: infer Headers;
|
|
35
31
|
params: any;
|
|
36
32
|
query: infer Query;
|
|
37
33
|
response: infer Res extends Record<number, unknown>;
|
|
38
|
-
} ? ({} extends
|
|
39
|
-
headers?: Record<string, unknown>;
|
|
40
|
-
} : undefined extends Headers ? {
|
|
41
|
-
headers?: Record<string, unknown>;
|
|
42
|
-
} : {
|
|
43
|
-
headers: Headers;
|
|
44
|
-
}) & ({} extends Query ? {
|
|
45
|
-
query?: Record<string, unknown>;
|
|
46
|
-
} : undefined extends Query ? {
|
|
47
|
-
query?: Record<string, unknown>;
|
|
48
|
-
} : {
|
|
49
|
-
query: Query;
|
|
50
|
-
}) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
|
|
34
|
+
} ? MaybeEmptyObject<Headers, 'headers'> & MaybeEmptyObject<SerializeQueryParams<Query>, 'query'> extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: RelaxFileArrays<Body>, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
|
|
51
35
|
};
|
|
52
36
|
type CreateParams<Route extends Record<string, any>> = Extract<keyof Route, `:${string}`> extends infer Path extends string ? IsNever<Path> extends true ? Prettify<Sign<Route>> : // ! DO NOT USE PRETTIFY ON THIS LINE, OTHERWISE FUNCTION CALLING WILL BE OMITTED
|
|
53
37
|
(((params: {
|
|
@@ -56,7 +40,7 @@ export declare namespace Treaty {
|
|
|
56
40
|
export interface Config {
|
|
57
41
|
fetch?: Omit<RequestInit, 'headers' | 'method'>;
|
|
58
42
|
fetcher?: typeof fetch;
|
|
59
|
-
headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => RequestInit['headers'] | void)>;
|
|
43
|
+
headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => MaybePromise<RequestInit['headers'] | void>)>;
|
|
60
44
|
onRequest?: MaybeArray<(path: string, options: RequestInit) => MaybePromise<RequestInit | void>>;
|
|
61
45
|
onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
|
|
62
46
|
keepDomain?: boolean;
|
|
@@ -68,7 +52,7 @@ export declare namespace Treaty {
|
|
|
68
52
|
error: null;
|
|
69
53
|
response: Response;
|
|
70
54
|
status: number;
|
|
71
|
-
headers:
|
|
55
|
+
headers: ResponseInit['headers'];
|
|
72
56
|
} | {
|
|
73
57
|
data: null;
|
|
74
58
|
error: Exclude<keyof Res, SuccessCodeRange> extends never ? {
|
|
@@ -84,7 +68,7 @@ export declare namespace Treaty {
|
|
|
84
68
|
}[Exclude<keyof Res, SuccessCodeRange>];
|
|
85
69
|
response: Response;
|
|
86
70
|
status: number;
|
|
87
|
-
headers:
|
|
71
|
+
headers: ResponseInit['headers'];
|
|
88
72
|
};
|
|
89
73
|
export interface OnMessage<Data = unknown> extends MessageEvent {
|
|
90
74
|
data: Data;
|
package/dist/treaty2.d.mts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InputSchema, Elysia, ELYSIA_FORM_DATA } from 'elysia';
|
|
2
|
-
import { P as Prettify, a as IsNever, N as Not } from './types-
|
|
2
|
+
import { P as Prettify, b as MaybeEmptyObject, a as IsNever, N as Not } from './types-BdHMTa_C.mjs';
|
|
3
|
+
import { BunFile } from 'bun';
|
|
3
4
|
|
|
4
5
|
declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
|
|
5
6
|
url: string;
|
|
@@ -22,45 +23,28 @@ type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] exte
|
|
|
22
23
|
type IntegerRange<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
|
|
23
24
|
type SuccessCodeRange = IntegerRange<200, 300>;
|
|
24
25
|
type MaybeArray<T> = T | T[];
|
|
26
|
+
type MaybeArrayFile<T> = T extends (File | BunFile)[] ? (File | BunFile)[] | File | BunFile : T extends File | BunFile ? File | BunFile : T;
|
|
27
|
+
type RelaxFileArrays<T> = T extends Record<string, unknown> ? {
|
|
28
|
+
[K in keyof T]: MaybeArrayFile<T[K]>;
|
|
29
|
+
} : T;
|
|
30
|
+
type SerializeQueryParams<T> = T extends Record<string, any> ? {
|
|
31
|
+
[K in keyof T]: T[K] extends Date ? string : T[K] extends Date | undefined ? string | undefined : T[K];
|
|
32
|
+
} : T;
|
|
25
33
|
declare namespace Treaty {
|
|
26
34
|
interface TreatyParam {
|
|
27
35
|
fetch?: RequestInit;
|
|
28
36
|
}
|
|
29
37
|
export type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends {
|
|
30
|
-
'~Routes': infer Schema extends Record<
|
|
38
|
+
'~Routes': infer Schema extends Record<any, any>;
|
|
31
39
|
} ? Prettify<Sign<Schema>> & CreateParams<Schema> : 'Please install Elysia before using Eden';
|
|
32
|
-
export type Sign<in out Route extends Record<
|
|
33
|
-
[K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ?
|
|
34
|
-
headers?: Record<string, unknown>;
|
|
35
|
-
} : undefined extends Route['subscribe']['headers'] ? {
|
|
36
|
-
headers?: Record<string, unknown>;
|
|
37
|
-
} : {
|
|
38
|
-
headers: Route['subscribe']['headers'];
|
|
39
|
-
}) & ({} extends Route['subscribe']['query'] ? {
|
|
40
|
-
query?: Record<string, unknown>;
|
|
41
|
-
} : undefined extends Route['subscribe']['query'] ? {
|
|
42
|
-
query?: Record<string, unknown>;
|
|
43
|
-
} : {
|
|
44
|
-
query: Route['subscribe']['query'];
|
|
45
|
-
}) extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
|
|
40
|
+
export type Sign<in out Route extends Record<any, any>> = {
|
|
41
|
+
[K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? MaybeEmptyObject<Route['subscribe']['headers'], 'headers'> & MaybeEmptyObject<SerializeQueryParams<Route['subscribe']['query']>, 'query'> extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
|
|
46
42
|
body: infer Body;
|
|
47
43
|
headers: infer Headers;
|
|
48
44
|
params: any;
|
|
49
45
|
query: infer Query;
|
|
50
46
|
response: infer Res extends Record<number, unknown>;
|
|
51
|
-
} ? ({} extends
|
|
52
|
-
headers?: Record<string, unknown>;
|
|
53
|
-
} : undefined extends Headers ? {
|
|
54
|
-
headers?: Record<string, unknown>;
|
|
55
|
-
} : {
|
|
56
|
-
headers: Headers;
|
|
57
|
-
}) & ({} extends Query ? {
|
|
58
|
-
query?: Record<string, unknown>;
|
|
59
|
-
} : undefined extends Query ? {
|
|
60
|
-
query?: Record<string, unknown>;
|
|
61
|
-
} : {
|
|
62
|
-
query: Query;
|
|
63
|
-
}) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
|
|
47
|
+
} ? MaybeEmptyObject<Headers, 'headers'> & MaybeEmptyObject<SerializeQueryParams<Query>, 'query'> extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: RelaxFileArrays<Body>, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
|
|
64
48
|
};
|
|
65
49
|
type CreateParams<Route extends Record<string, any>> = Extract<keyof Route, `:${string}`> extends infer Path extends string ? IsNever<Path> extends true ? Prettify<Sign<Route>> : // ! DO NOT USE PRETTIFY ON THIS LINE, OTHERWISE FUNCTION CALLING WILL BE OMITTED
|
|
66
50
|
(((params: {
|
|
@@ -69,7 +53,7 @@ declare namespace Treaty {
|
|
|
69
53
|
export interface Config {
|
|
70
54
|
fetch?: Omit<RequestInit, 'headers' | 'method'>;
|
|
71
55
|
fetcher?: typeof fetch;
|
|
72
|
-
headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => RequestInit['headers'] | void)>;
|
|
56
|
+
headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => MaybePromise<RequestInit['headers'] | void>)>;
|
|
73
57
|
onRequest?: MaybeArray<(path: string, options: RequestInit) => MaybePromise<RequestInit | void>>;
|
|
74
58
|
onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
|
|
75
59
|
keepDomain?: boolean;
|
|
@@ -81,7 +65,7 @@ declare namespace Treaty {
|
|
|
81
65
|
error: null;
|
|
82
66
|
response: Response;
|
|
83
67
|
status: number;
|
|
84
|
-
headers:
|
|
68
|
+
headers: ResponseInit['headers'];
|
|
85
69
|
} | {
|
|
86
70
|
data: null;
|
|
87
71
|
error: Exclude<keyof Res, SuccessCodeRange> extends never ? {
|
|
@@ -97,7 +81,7 @@ declare namespace Treaty {
|
|
|
97
81
|
}[Exclude<keyof Res, SuccessCodeRange>];
|
|
98
82
|
response: Response;
|
|
99
83
|
status: number;
|
|
100
|
-
headers:
|
|
84
|
+
headers: ResponseInit['headers'];
|
|
101
85
|
};
|
|
102
86
|
export interface OnMessage<Data = unknown> extends MessageEvent {
|
|
103
87
|
data: Data;
|
|
@@ -112,7 +96,7 @@ declare namespace Treaty {
|
|
|
112
96
|
export { };
|
|
113
97
|
}
|
|
114
98
|
|
|
115
|
-
declare function streamResponse(response: Response): AsyncGenerator<
|
|
99
|
+
declare function streamResponse(response: Response): AsyncGenerator<Record<string, unknown>, void, any>;
|
|
116
100
|
declare const treaty: <const App extends Elysia<any, any, any, any, any, any, any>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
|
|
117
101
|
|
|
118
102
|
export { Treaty, streamResponse, treaty };
|
package/dist/treaty2.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { InputSchema, Elysia, ELYSIA_FORM_DATA } from 'elysia';
|
|
2
|
-
import { P as Prettify, a as IsNever, N as Not } from './types-
|
|
2
|
+
import { P as Prettify, b as MaybeEmptyObject, a as IsNever, N as Not } from './types-BdHMTa_C.js';
|
|
3
|
+
import { BunFile } from 'bun';
|
|
3
4
|
|
|
4
5
|
declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
|
|
5
6
|
url: string;
|
|
@@ -22,45 +23,28 @@ type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] exte
|
|
|
22
23
|
type IntegerRange<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
|
|
23
24
|
type SuccessCodeRange = IntegerRange<200, 300>;
|
|
24
25
|
type MaybeArray<T> = T | T[];
|
|
26
|
+
type MaybeArrayFile<T> = T extends (File | BunFile)[] ? (File | BunFile)[] | File | BunFile : T extends File | BunFile ? File | BunFile : T;
|
|
27
|
+
type RelaxFileArrays<T> = T extends Record<string, unknown> ? {
|
|
28
|
+
[K in keyof T]: MaybeArrayFile<T[K]>;
|
|
29
|
+
} : T;
|
|
30
|
+
type SerializeQueryParams<T> = T extends Record<string, any> ? {
|
|
31
|
+
[K in keyof T]: T[K] extends Date ? string : T[K] extends Date | undefined ? string | undefined : T[K];
|
|
32
|
+
} : T;
|
|
25
33
|
declare namespace Treaty {
|
|
26
34
|
interface TreatyParam {
|
|
27
35
|
fetch?: RequestInit;
|
|
28
36
|
}
|
|
29
37
|
export type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends {
|
|
30
|
-
'~Routes': infer Schema extends Record<
|
|
38
|
+
'~Routes': infer Schema extends Record<any, any>;
|
|
31
39
|
} ? Prettify<Sign<Schema>> & CreateParams<Schema> : 'Please install Elysia before using Eden';
|
|
32
|
-
export type Sign<in out Route extends Record<
|
|
33
|
-
[K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ?
|
|
34
|
-
headers?: Record<string, unknown>;
|
|
35
|
-
} : undefined extends Route['subscribe']['headers'] ? {
|
|
36
|
-
headers?: Record<string, unknown>;
|
|
37
|
-
} : {
|
|
38
|
-
headers: Route['subscribe']['headers'];
|
|
39
|
-
}) & ({} extends Route['subscribe']['query'] ? {
|
|
40
|
-
query?: Record<string, unknown>;
|
|
41
|
-
} : undefined extends Route['subscribe']['query'] ? {
|
|
42
|
-
query?: Record<string, unknown>;
|
|
43
|
-
} : {
|
|
44
|
-
query: Route['subscribe']['query'];
|
|
45
|
-
}) extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
|
|
40
|
+
export type Sign<in out Route extends Record<any, any>> = {
|
|
41
|
+
[K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? MaybeEmptyObject<Route['subscribe']['headers'], 'headers'> & MaybeEmptyObject<SerializeQueryParams<Route['subscribe']['query']>, 'query'> extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
|
|
46
42
|
body: infer Body;
|
|
47
43
|
headers: infer Headers;
|
|
48
44
|
params: any;
|
|
49
45
|
query: infer Query;
|
|
50
46
|
response: infer Res extends Record<number, unknown>;
|
|
51
|
-
} ? ({} extends
|
|
52
|
-
headers?: Record<string, unknown>;
|
|
53
|
-
} : undefined extends Headers ? {
|
|
54
|
-
headers?: Record<string, unknown>;
|
|
55
|
-
} : {
|
|
56
|
-
headers: Headers;
|
|
57
|
-
}) & ({} extends Query ? {
|
|
58
|
-
query?: Record<string, unknown>;
|
|
59
|
-
} : undefined extends Query ? {
|
|
60
|
-
query?: Record<string, unknown>;
|
|
61
|
-
} : {
|
|
62
|
-
query: Query;
|
|
63
|
-
}) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
|
|
47
|
+
} ? MaybeEmptyObject<Headers, 'headers'> & MaybeEmptyObject<SerializeQueryParams<Query>, 'query'> extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: RelaxFileArrays<Body>, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: RelaxFileArrays<Body>, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
|
|
64
48
|
};
|
|
65
49
|
type CreateParams<Route extends Record<string, any>> = Extract<keyof Route, `:${string}`> extends infer Path extends string ? IsNever<Path> extends true ? Prettify<Sign<Route>> : // ! DO NOT USE PRETTIFY ON THIS LINE, OTHERWISE FUNCTION CALLING WILL BE OMITTED
|
|
66
50
|
(((params: {
|
|
@@ -69,7 +53,7 @@ declare namespace Treaty {
|
|
|
69
53
|
export interface Config {
|
|
70
54
|
fetch?: Omit<RequestInit, 'headers' | 'method'>;
|
|
71
55
|
fetcher?: typeof fetch;
|
|
72
|
-
headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => RequestInit['headers'] | void)>;
|
|
56
|
+
headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => MaybePromise<RequestInit['headers'] | void>)>;
|
|
73
57
|
onRequest?: MaybeArray<(path: string, options: RequestInit) => MaybePromise<RequestInit | void>>;
|
|
74
58
|
onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
|
|
75
59
|
keepDomain?: boolean;
|
|
@@ -81,7 +65,7 @@ declare namespace Treaty {
|
|
|
81
65
|
error: null;
|
|
82
66
|
response: Response;
|
|
83
67
|
status: number;
|
|
84
|
-
headers:
|
|
68
|
+
headers: ResponseInit['headers'];
|
|
85
69
|
} | {
|
|
86
70
|
data: null;
|
|
87
71
|
error: Exclude<keyof Res, SuccessCodeRange> extends never ? {
|
|
@@ -97,7 +81,7 @@ declare namespace Treaty {
|
|
|
97
81
|
}[Exclude<keyof Res, SuccessCodeRange>];
|
|
98
82
|
response: Response;
|
|
99
83
|
status: number;
|
|
100
|
-
headers:
|
|
84
|
+
headers: ResponseInit['headers'];
|
|
101
85
|
};
|
|
102
86
|
export interface OnMessage<Data = unknown> extends MessageEvent {
|
|
103
87
|
data: Data;
|
|
@@ -112,7 +96,7 @@ declare namespace Treaty {
|
|
|
112
96
|
export { };
|
|
113
97
|
}
|
|
114
98
|
|
|
115
|
-
declare function streamResponse(response: Response): AsyncGenerator<
|
|
99
|
+
declare function streamResponse(response: Response): AsyncGenerator<Record<string, unknown>, void, any>;
|
|
116
100
|
declare const treaty: <const App extends Elysia<any, any, any, any, any, any, any>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
|
|
117
101
|
|
|
118
102
|
export { Treaty, streamResponse, treaty };
|
package/dist/treaty2.global.js
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
"use strict";var Eden=(()=>{var
|
|
1
|
+
"use strict";var Eden=(()=>{var D=Object.defineProperty;var Z=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var Q=Object.prototype.hasOwnProperty;var X=(e,t)=>{for(var n in t)D(e,n,{get:t[n],enumerable:!0})},Y=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of z(t))!Q.call(e,i)&&i!==n&&D(e,i,{get:()=>t[i],enumerable:!(r=Z(t,i))||r.enumerable});return e};var ee=e=>Y(D({},"__esModule",{value:!0}),e);var ue={};X(ue,{streamResponse:()=>_,treaty:()=>fe});var k=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var te=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,ne=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,re=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,se=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),T=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(te.test(t)||ne.test(t)||re.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},ie=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},ae=e=>JSON.parse(e,(t,n)=>{let r=T(n);return r||n}),W=e=>{if(!e)return e;if(se(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=T(e);if(t)return t;if(ie(e))try{return ae(e)}catch{}return e},q=e=>{let t=e.data.toString();return t==="null"?null:W(t)};var M=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,i=>{if(t==="message"){let u=q(i);n({...i,data:u})}else n(i)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var oe=["get","post","put","delete","patch","options","head","connect","subscribe"],V=["localhost","127.0.0.1","0.0.0.0"],J=typeof FileList>"u",C=e=>J?e instanceof Blob:e instanceof FileList||e instanceof File,ce=e=>{if(!e)return!1;for(let t in e)if(C(e[t])||Array.isArray(e[t])&&e[t].find(C))return!0;return!1},K=e=>J?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),E=async(e,t,n={},r={})=>{if(Array.isArray(e)){for(let i of e)if(!Array.isArray(i))r=await E(i,t,n,r);else{let u=i[0];if(typeof u=="string")r[u.toLowerCase()]=i[1];else for(let[a,y]of u)r[a.toLowerCase()]=y}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return E(e,t,n,r);let i=await e(t,n);return i?E(i,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((u,a)=>{r[a.toLowerCase()]=u}),r;for(let[u,a]of Object.entries(e))r[u.toLowerCase()]=a;return r;default:return r}};function B(e){let t=e.split(`
|
|
2
|
+
`),n={};for(let r of t){if(!r||r.startsWith(":"))continue;let i=r.indexOf(":");if(i>0){let u=r.slice(0,i).trim(),a=r.slice(i+1).replace(/^ /,"");n[u]=a&&W(a)}}return Object.keys(n).length>0?n:null}function*P(e){let t;for(;(t=e.value.indexOf(`
|
|
2
3
|
|
|
3
|
-
`)
|
|
4
|
-
|
|
5
|
-
`);for(let n of t){if(n.indexOf(":")<=0){n&&(yield A(n));continue}let s=n.split(`
|
|
6
|
-
`),o={};for(let c of s){let i=c.indexOf(":");if(i>0){let g=c.slice(0,i).trim(),L=c.slice(i+1).trim();o[g]=A(L)}}yield o}}var O=(e,t,n=[],s)=>new Proxy(()=>{},{get(o,c){return O(e,t,c==="index"?n:[...n,c],s)},apply(o,c,[i,g]){if(!i||g||typeof i=="object"&&Object.keys(i).length!==1||te.includes(n.at(-1))){let L=[...n],E=L.pop(),m="/"+L.join("/"),{fetcher:P=fetch,headers:R,onRequest:h,onResponse:v,fetch:_}=t,w=E==="get"||E==="head"||E==="subscribe";R=S(R,m,g);let K=w?i?.query:g?.query,T="";if(K){let r=(b,l)=>{T+=(T?"&":"?")+`${encodeURIComponent(b)}=${encodeURIComponent(l)}`};for(let[b,l]of Object.entries(K)){if(Array.isArray(l)){for(let d of l)r(b,d);continue}if(l!=null){if(typeof l=="object"){r(b,JSON.stringify(l));continue}r(b,`${l}`)}}}if(E==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||I.find(b=>e.includes(b))?"ws://":"wss://")+m+T;return new M(r)}return(async()=>{let r={method:E?.toUpperCase(),body:i,..._,headers:R};r.headers={...R,...S(w?i?.headers:g?.headers,m,r)};let b=w&&typeof i=="object"?i.fetch:g?.fetch;if(r={...r,...b},w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}if(w&&delete r.body,ne(i)){let u=new FormData;for(let[a,f]of Object.entries(r.body)){if(Array.isArray(f)){for(let p=0;p<f.length;p++){let W=f[p];u.append(a,W instanceof File?await N(W):W)}continue}if(C){if(Array.isArray(f))for(let p of f)u.append(a,p);else u.append(a,f);continue}if(f instanceof File){u.append(a,await N(f));continue}if(f instanceof FileList){for(let p=0;p<f.length;p++)u.append(a,await N(f[p]));continue}u.append(a,f)}r.body=u}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}g?.headers?.["content-type"]&&(r.headers["content-type"]=g?.headers["content-type"]);let l=e+m+T,d=await(s?.handle(new Request(l,r))??P(l,r)),y=null,x=null;if(v){Array.isArray(v)||(v=[v]);for(let u of v)try{let a=await u(d.clone());if(a!=null){y=a;break}}catch(a){a instanceof k?x=a:x=new k(422,a);break}}if(y!==null)return{data:y,error:x,response:d,status:d.status,headers:d.headers};switch(d.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":y=J(d);break;case"application/json":y=JSON.parse(await d.text(),(a,f)=>{if(typeof f!="string")return f;let p=F(f);return p||f});break;case"application/octet-stream":y=await d.arrayBuffer();break;case"multipart/form-data":let u=await d.formData();y={},u.forEach((a,f)=>{y[f]=a});break;default:y=await d.text().then(A)}return(d.status>=300||d.status<200)&&(x=new k(d.status,y),y=null),{data:y,error:x,response:d,status:d.status,headers:d.headers}})()}return typeof i=="object"?O(e,t,[...n,Object.values(i)[0]],s):O(e,t,n)}}),re=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(I.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),O(e,t)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),O("http://e.ly",t,[],e));return Z(ie);})();
|
|
4
|
+
`))!==-1;){let n=e.value.slice(0,t);if(e.value=e.value.slice(t+2),n.trim()){let r=B(n);r&&(yield r)}}}async function*_(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder("utf-8"),i={value:""};try{for(;;){let{done:a,value:y}=await n.read();if(a)break;let R=typeof y=="string"?y:r.decode(y,{stream:!0});i.value+=R,yield*P(i)}let u=r.decode();if(u&&(i.value+=u),yield*P(i),i.value.trim()){let a=B(i.value);a&&(yield a)}}finally{n.releaseLock()}}var F=(e,t,n=[],r)=>new Proxy(()=>{},{get(i,u){return F(e,t,u==="index"?n:[...n,u],r)},apply(i,u,[a,y]){if(!a||y||typeof a=="object"&&Object.keys(a).length!==1||oe.includes(n.at(-1))){let R=[...n],x=R.pop(),m="/"+R.join("/"),{fetcher:H=fetch,headers:L,onRequest:w,onResponse:O,fetch:U}=t,v=x==="get"||x==="head"||x==="subscribe",I=v?a?.query:y?.query,N="";if(I){let s=(b,p)=>{N+=(N?"&":"?")+`${encodeURIComponent(b)}=${encodeURIComponent(p)}`};for(let[b,p]of Object.entries(I)){if(Array.isArray(p)){for(let f of p)s(b,f);continue}if(p!=null){if(typeof p=="object"){s(b,JSON.stringify(p));continue}s(b,`${p}`)}}}if(x==="subscribe"){let s=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||V.find(b=>e.includes(b))?"ws://":"wss://")+m+N;return new M(s)}return(async()=>{L=await E(L,m,y);let s={method:x?.toUpperCase(),body:a,...U,headers:L};s.headers={...L,...await E(v?a?.headers:y?.headers,m,s)};let b=v&&typeof a=="object"?a.fetch:y?.fetch;if(s={...s,...b},v&&delete s.body,w){Array.isArray(w)||(w=[w]);for(let d of w){let c=await d(m,s);typeof c=="object"&&(s={...s,...c,headers:{...s.headers,...await E(c.headers,m,s)}})}}if(v&&delete s.body,ce(a)){let d=new FormData,c=o=>{if(typeof o=="string"||C(o))return!1;if(typeof o=="object"){if(o!==null)return!0;if(o instanceof Date)return!1}return!1},h=async o=>o instanceof File?await K(o):c(o)?JSON.stringify(o):o;for(let[o,l]of Object.entries(s.body)){if(Array.isArray(l)){if(l.some(S=>typeof S=="object"&&S!==null&&!C(S)))d.append(o,JSON.stringify(l));else for(let S=0;S<l.length;S++){let $=l[S],G=await h($);d.append(o,G)}continue}if(J){if(Array.isArray(l))for(let A of l)d.append(o,await h(A));else d.append(o,await h(l));continue}if(l instanceof File){d.append(o,await K(l));continue}if(l instanceof FileList){for(let A=0;A<l.length;A++)d.append(o,await K(l[A]));continue}d.append(o,await h(l))}s.body=d}else typeof a=="object"?(s.headers["content-type"]="application/json",s.body=JSON.stringify(a)):a!=null&&(s.headers["content-type"]="text/plain");if(v&&delete s.body,w){Array.isArray(w)||(w=[w]);for(let d of w){let c=await d(m,s);typeof c=="object"&&(s={...s,...c,headers:{...s.headers,...await E(c.headers,m,s)}})}}y?.headers?.["content-type"]&&(s.headers["content-type"]=y?.headers["content-type"]);let p=e+m+N,f;try{f=await(r?.handle(new Request(p,s))??H(p,s))}catch(d){return{data:null,error:new k(503,d),response:void 0,status:503,headers:void 0}}let g=null,j=null;if(O){Array.isArray(O)||(O=[O]);for(let d of O)try{let c=await d(f.clone());if(c!=null){g=c;break}}catch(c){c instanceof k?j=c:j=new k(422,c);break}}if(g!==null)return{data:g,error:j,response:f,status:f.status,headers:f.headers};switch(f.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":g=_(f);break;case"application/json":g=JSON.parse(await f.text(),(c,h)=>{if(typeof h!="string")return h;let o=T(h);return o||h});break;case"application/octet-stream":g=await f.arrayBuffer();break;case"multipart/form-data":let d=await f.formData();g={},d.forEach((c,h)=>{g[h]=c});break;default:g=await f.text().then(W)}return(f.status>=300||f.status<200)&&(j=new k(f.status,g),g=null),{data:g,error:j,response:f,status:f.status,headers:f.headers}})()}return typeof a=="object"?F(e,t,[...n,Object.values(a)[0]],r):F(e,t,n)}}),fe=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(V.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),F(e,t)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),F("http://e.ly",t,[],e));return ee(ue);})();
|