@elysiajs/eden 1.0.14 → 1.1.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ import{a as O,b as L,c as W}from"./chunk-XYW4OUFN.mjs";var K=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[c,a]of Object.entries(t))s+=`${c}=${a}&`;return`${n}${e}?${s.slice(0,-1)}`};var $=typeof FileList>"u",M=n=>$?n instanceof Blob:n instanceof FileList||n instanceof File,H=n=>{if(!n)return!1;for(let e in n){if(M(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>M(t)))return!0}return!1},x=n=>$?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{let s=new File([t.result],n.name,{lastModified:n.lastModified,type:n.type});e(s)},t.readAsArrayBuffer(n)}),T=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,c=>{if(e==="message"){let a=W(c);t({...c,data:a})}else t(c)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},j=(n,e="",t)=>new Proxy(()=>{},{get(s,c,a){return j(n,`${e}/${c.toString()}`,t)},apply(s,c,[a,b={}]=[{},{}]){let y=a!==void 0&&(typeof a!="object"||Array.isArray(a))?a:void 0,{$query:I,$fetch:F,$headers:P,$transform:m,getRaw:C,...q}=a??{};y??=q;let w=e.lastIndexOf("/"),E=e.slice(w+1).toUpperCase(),v=K(n,w===-1?"/":e.slice(0,w),Object.assign(b.query??{},I)),D=t.fetcher??fetch,l=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,S=m?Array.isArray(m)?m:[m]:void 0;return S&&(l?l=S.concat(l):l=S),E==="SUBSCRIBE"?new T(v.replace(/^([^]+):\/\//,v.startsWith("https://")?"wss://":"ws://")):(async N=>{let r,R={...t.$fetch?.headers,...F?.headers,...b.headers,...P};if(E!=="GET"&&E!=="HEAD"){r=Object.keys(y).length||Array.isArray(y)?y:void 0;let p=r&&(typeof r=="object"||Array.isArray(y));if(p&&H(r)){let u=new FormData;for(let[h,o]of Object.entries(r))if($)u.append(h,o);else if(o instanceof File)u.append(h,await x(o));else if(o instanceof FileList)for(let d=0;d<o.length;d++)u.append(h,await x(o[d]));else if(Array.isArray(o))for(let d=0;d<o.length;d++){let k=o[d];u.append(h,k instanceof File?await x(k):k)}else u.append(h,o);r=u}else r!=null&&(R["content-type"]=p?"application/json":"text/plain",r=p?JSON.stringify(r):y)}let i=await D(v,{method:E,body:r,...t.$fetch,...b.fetch,...F,headers:R}),g;if(N.getRaw)return i;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await i.json();break;default:g=await i.text().then(L)}let B=i.status>=300||i.status<200?new O(i.status,g):null,A={data:g,error:B,response:i,status:i.status,headers:i.headers};if(l)for(let p of l){let f=p(A);f instanceof Promise&&(f=await f),f!=null&&(A=f)}return A})({getRaw:C})}}),z=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return j(n,s,e)}});export{T as a,z as b};
@@ -0,0 +1 @@
1
+ import{a as x,b as O,c as M}from"./chunk-XYW4OUFN.mjs";var F=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,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,c=>{if(t==="message"){let f=M(c);n({...c,data:f})}else n(c)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var P=["get","post","put","delete","patch","options","head","connect","subscribe"],I=["localhost","127.0.0.1","0.0.0.0"],C=typeof FileList>"u",q=e=>C?e instanceof Blob:e instanceof FileList||e instanceof File,U=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},j=e=>C?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),b=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let c of e)if(!Array.isArray(c))s=b(c,t,n,s);else{let f=c[0];if(typeof f=="string")s[f.toLowerCase()]=c[1];else for(let[a,w]of f)s[a.toLowerCase()]=w}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return b(e,t,n,s);let c=e(t,n);return c?b(c,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((f,a)=>{s[a.toLowerCase()]=f}),s;for(let[f,a]of Object.entries(e))s[f.toLowerCase()]=a;return s;default:return s}};async function*_(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:c,value:f}=await n.read();if(c)break;let a=s.decode(f);yield O(a)}}finally{n.releaseLock()}}var S=(e,t,n=[],s)=>new Proxy(()=>{},{get(c,f){return S(e,t,f==="index"?n:[...n,f],s)},apply(c,f,[a,w]){if(!a||w||typeof a=="object"&&Object.keys(a).length!==1||P.includes(n.at(-1))){let K=[...n],k=K.pop(),d="/"+K.join("/"),{fetcher:D=fetch,headers:L,onRequest:p,onResponse:E,fetch:H}=t,m=k==="get"||k==="head"||k==="subscribe";L=b(L,d,w);let T=m?a?.query:w?.query,R="";if(T){let r=(h,g)=>{R+=(R?"&":"?")+`${encodeURIComponent(h)}=${encodeURIComponent(g)}`};for(let[h,g]of Object.entries(T)){if(Array.isArray(g)){for(let o of g)r(h,o);continue}r(h,`${g}`)}}if(k==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||I.find(h=>e.includes(h))?"ws://":"wss://")+d+R;return new F(r)}return(async()=>{let r={method:k?.toUpperCase(),body:a,...H,headers:L};r.headers={...L,...b(m?a?.headers:w?.headers,d,r)};let h=m&&typeof a=="object"?a.fetch:w?.fetch;if(r={...r,...h},m&&delete r.body,p){Array.isArray(p)||(p=[p]);for(let y of p){let i=await y(d,r);typeof i=="object"&&(r={...r,...i,headers:{...r.headers,...b(i.headers,d,r)}})}}if(m&&delete r.body,U(a)){let y=new FormData;for(let[i,u]of Object.entries(r.body)){if(C){y.append(i,u);continue}if(u instanceof File){y.append(i,await j(u));continue}if(u instanceof FileList){for(let v=0;v<u.length;v++)y.append(i,await j(u[v]));continue}if(Array.isArray(u)){for(let v=0;v<u.length;v++){let W=u[v];y.append(i,W instanceof File?await j(W):W)}continue}y.append(i,u)}r.body=y}else typeof a=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(a)):a!=null&&(r.headers["content-type"]="text/plain");if(m&&delete r.body,p){Array.isArray(p)||(p=[p]);for(let y of p){let i=await y(d,r);typeof i=="object"&&(r={...r,...i,headers:{...r.headers,...b(i.headers,d,r)}})}}let g=e+d+R,o=await(s?.handle(new Request(g,r))??D(g,r)),l=null,A=null;if(E){Array.isArray(E)||(E=[E]);for(let y of E)try{let i=await y(o.clone());if(i!=null){l=i;break}}catch(i){i instanceof x?A=i:A=new x(422,i);break}}if(l!==null)return{data:l,error:A,response:o,status:o.status,headers:o.headers};switch(o.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":l=_(o);break;case"application/json":l=await o.json();break;case"application/octet-stream":l=await o.arrayBuffer();break;case"multipart/form-data":let y=await o.formData();l={},y.forEach((i,u)=>{l[u]=i});break;default:l=await o.text().then(O)}return(o.status>=300||o.status<200)&&(A=new x(o.status,l),l=null),{data:l,error:A,response:o,status:o.status,headers:o.headers}})()}return typeof a=="object"?S(e,t,[...n,Object.values(a)[0]],s):S(e,t,n)}}),V=(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))),S(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."),S("http://e.ly",t,[],e));export{_ as a,V as b};
@@ -0,0 +1 @@
1
+ var s=class extends Error{constructor(e,n){super(n+"");this.status=e;this.value=n}};var i=/(\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))/,o=/(?: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\([^)]+\)/,c=/^(?:(?:(?:(?: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)?)?$/,u=t=>t.trim().length!==0&&!Number.isNaN(Number(t)),d=t=>{if(typeof t!="string")return null;let r=t.replace(/"/g,"");if(i.test(r)||o.test(r)||c.test(r)){let e=new Date(r);if(!Number.isNaN(e.getTime()))return e}return null},a=t=>{let r=t.charCodeAt(0),e=t.charCodeAt(t.length-1);return r===123&&e===125||r===91&&e===93},p=t=>JSON.parse(t,(r,e)=>{let n=d(e);return n||e}),g=t=>{if(!t)return t;if(u(t))return+t;if(t==="true")return!0;if(t==="false")return!1;let r=d(t);if(r)return r;if(a(t))try{return p(t)}catch{}return t},S=t=>{let r=t.data.toString();return r==="null"?null:g(r)};export{s as a,g as b,S as c};
@@ -0,0 +1 @@
1
+ import{a as y,b as p}from"./chunk-XYW4OUFN.mjs";var g=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 e=await t.formData(),r={};return e.forEach((c,a)=>{r[a]=c}),r}}return t.text().then(p)},T=async(t,n)=>{let e=await g(t);return t.status>300?{data:null,status:t.status,headers:t.headers,retry:n,error:new y(t.status,e)}:{data:e,error:null,status:t.status,headers:t.headers,retry:n}},w=(t,n)=>(e,{query:r,params:c,body:a,...s}={})=>{c&&Object.entries(c).forEach(([o,E])=>{e=e.replace(`:${o}`,E)});let i=s.headers?.["Content-Type"];if(!i||i==="application/json")try{a=JSON.stringify(a)}catch{}let f=n?.fetcher||globalThis.fetch,d=r?`?${new URLSearchParams(r).toString()}`:"",u=`${t}${e}${d}`,l=a?{"content-type":"application/json",...s.headers}:s.headers,m={...s,method:s.method?.toUpperCase()||"GET",headers:l,body:a},h=()=>f(u,m).then(o=>T(o,h));return h()};export{w as a};
package/dist/fetch.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Elysia } from 'elysia';
2
- import { T as TreatyToPath, I as IsNever, a as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-DcP_1Cpm.js';
2
+ import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-DNydNaKe.mjs';
3
3
 
4
4
  declare namespace EdenFetch {
5
5
  type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
package/dist/fetch.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Elysia } from 'elysia';
2
- import { T as TreatyToPath, I as IsNever, a as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-DcP_1Cpm.js';
2
+ import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-DNydNaKe.js';
3
3
 
4
4
  declare namespace EdenFetch {
5
5
  type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
@@ -1 +1 @@
1
- "use strict";var Eden=(()=>{var p=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var T=(t,r)=>{for(var s in r)p(t,s,{get:r[s],enumerable:!0})},F=(t,r,s,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of A(r))!x.call(t,a)&&a!==s&&p(t,a,{get:()=>r[a],enumerable:!(o=k(r,a))||o.enumerable});return t};var N=t=>F(p({},"__esModule",{value:!0}),t);var j={};T(j,{edenFetch:()=>O});var y=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var u=class extends Error{constructor(s,o){super(o+"");this.status=s;this.value=o}};var m=/(\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))/,w=/(?: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\([^)]+\)/,b=/^(?:(?:(?:(?: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)?)?$/;var O=(t,r)=>(s,{query:o,params:a,body:l,...f}={})=>{a&&Object.entries(a).forEach(([e,i])=>{s=s.replace(`:${e}`,i)});let h=f.headers?.["Content-Type"];if(!h||h==="application/json")try{l=JSON.stringify(l)}catch{}let S=r?.fetcher||globalThis.fetch,E=o?`?${new URLSearchParams(o).toString()}`:"",d=()=>S(t+s+E,{...f,method:f.method?.toUpperCase()||"GET",headers:l?{"content-type":"application/json",...f.headers}:f.headers,body:l}).then(async e=>{let i;switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":i=await e.json();break;case"application/octet-stream":i=await e.arrayBuffer();break;case"multipart/form-data":let v=await e.formData();i={},v.forEach((n,c)=>{i[c]=n});break;default:i=await e.text().then(n=>{if(y(n))return+n;if(n==="true")return!0;if(n==="false")return!1;if(!n)return n;let c=n.replace(/"/g,"");if(m.test(c)||w.test(c)||b.test(c)){let g=new Date(c);if(!Number.isNaN(g.getTime()))return g}return n})}return e.status>300?{data:null,status:e.status,headers:e.headers,retry:d,error:new u(e.status,i)}:{data:i,error:null,status:e.status,headers:e.headers,retry:d}});return d()};return N(j);})();
1
+ "use strict";var Eden=(()=>{var d=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var b=(t,e)=>{for(var r in e)d(t,r,{get:e[r],enumerable:!0})},F=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of E(e))!N.call(t,s)&&s!==r&&d(t,s,{get:()=>e[s],enumerable:!(n=T(e,s))||n.enumerable});return t};var j=t=>F(d({},"__esModule",{value:!0}),t);var V={};b(V,{edenFetch:()=>R});var o=class extends Error{constructor(r,n){super(n+"");this.status=r;this.value=n}};var w=/(\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))/,A=/(?: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\([^)]+\)/,C=/^(?:(?:(?:(?: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)?)?$/,D=t=>t.trim().length!==0&&!Number.isNaN(Number(t)),f=t=>{if(typeof t!="string")return null;let e=t.replace(/"/g,"");if(w.test(e)||A.test(e)||C.test(e)){let r=new Date(e);if(!Number.isNaN(r.getTime()))return r}return null},M=t=>{let e=t.charCodeAt(0),r=t.charCodeAt(t.length-1);return e===123&&r===125||e===91&&r===93},O=t=>JSON.parse(t,(e,r)=>{let n=f(r);return n||r}),h=t=>{if(!t)return t;if(D(t))return+t;if(t==="true")return!0;if(t==="false")return!1;let e=f(t);if(e)return e;if(M(t))try{return O(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(h)},J=async(t,e)=>{let r=await $(t);return t.status>300?{data:null,status:t.status,headers:t.headers,retry:e,error:new o(t.status,r)}:{data:r,error:null,status:t.status,headers:t.headers,retry:e}},R=(t,e)=>(r,{query:n,params:s,body:a,...c}={})=>{s&&Object.entries(s).forEach(([i,x])=>{r=r.replace(`:${i}`,x)});let u=c.headers?.["Content-Type"];if(!u||u==="application/json")try{a=JSON.stringify(a)}catch{}let y=e?.fetcher||globalThis.fetch,g=n?`?${new URLSearchParams(n).toString()}`:"",l=`${t}${r}${g}`,m=a?{"content-type":"application/json",...c.headers}:c.headers,S={...c,method:c.method?.toUpperCase()||"GET",headers:m,body:a},p=()=>y(l,S).then(i=>J(i,p));return p()};return j(V);})();
package/dist/fetch.js CHANGED
@@ -1 +1 @@
1
- "use strict";var p=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var A=Object.getOwnPropertyNames;var x=Object.prototype.hasOwnProperty;var T=(t,r)=>{for(var s in r)p(t,s,{get:r[s],enumerable:!0})},F=(t,r,s,o)=>{if(r&&typeof r=="object"||typeof r=="function")for(let a of A(r))!x.call(t,a)&&a!==s&&p(t,a,{get:()=>r[a],enumerable:!(o=k(r,a))||o.enumerable});return t};var N=t=>F(p({},"__esModule",{value:!0}),t);var j={};T(j,{edenFetch:()=>O});module.exports=N(j);var y=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var u=class extends Error{constructor(s,o){super(o+"");this.status=s;this.value=o}};var m=/(\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))/,w=/(?: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\([^)]+\)/,b=/^(?:(?:(?:(?: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)?)?$/;var O=(t,r)=>(s,{query:o,params:a,body:l,...f}={})=>{a&&Object.entries(a).forEach(([e,i])=>{s=s.replace(`:${e}`,i)});let h=f.headers?.["Content-Type"];if(!h||h==="application/json")try{l=JSON.stringify(l)}catch{}let S=r?.fetcher||globalThis.fetch,E=o?`?${new URLSearchParams(o).toString()}`:"",d=()=>S(t+s+E,{...f,method:f.method?.toUpperCase()||"GET",headers:l?{"content-type":"application/json",...f.headers}:f.headers,body:l}).then(async e=>{let i;switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":i=await e.json();break;case"application/octet-stream":i=await e.arrayBuffer();break;case"multipart/form-data":let v=await e.formData();i={},v.forEach((n,c)=>{i[c]=n});break;default:i=await e.text().then(n=>{if(y(n))return+n;if(n==="true")return!0;if(n==="false")return!1;if(!n)return n;let c=n.replace(/"/g,"");if(m.test(c)||w.test(c)||b.test(c)){let g=new Date(c);if(!Number.isNaN(g.getTime()))return g}return n})}return e.status>300?{data:null,status:e.status,headers:e.headers,retry:d,error:new u(e.status,i)}:{data:i,error:null,status:e.status,headers:e.headers,retry:d}});return d()};0&&(module.exports={edenFetch});
1
+ "use strict";var d=Object.defineProperty;var T=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var N=Object.prototype.hasOwnProperty;var b=(t,e)=>{for(var r in e)d(t,r,{get:e[r],enumerable:!0})},F=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of E(e))!N.call(t,s)&&s!==r&&d(t,s,{get:()=>e[s],enumerable:!(n=T(e,s))||n.enumerable});return t};var j=t=>F(d({},"__esModule",{value:!0}),t);var V={};b(V,{edenFetch:()=>R});module.exports=j(V);var o=class extends Error{constructor(r,n){super(n+"");this.status=r;this.value=n}};var w=/(\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))/,A=/(?: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\([^)]+\)/,C=/^(?:(?:(?:(?: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)?)?$/,D=t=>t.trim().length!==0&&!Number.isNaN(Number(t)),f=t=>{if(typeof t!="string")return null;let e=t.replace(/"/g,"");if(w.test(e)||A.test(e)||C.test(e)){let r=new Date(e);if(!Number.isNaN(r.getTime()))return r}return null},M=t=>{let e=t.charCodeAt(0),r=t.charCodeAt(t.length-1);return e===123&&r===125||e===91&&r===93},O=t=>JSON.parse(t,(e,r)=>{let n=f(r);return n||r}),h=t=>{if(!t)return t;if(D(t))return+t;if(t==="true")return!0;if(t==="false")return!1;let e=f(t);if(e)return e;if(M(t))try{return O(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(h)},J=async(t,e)=>{let r=await $(t);return t.status>300?{data:null,status:t.status,headers:t.headers,retry:e,error:new o(t.status,r)}:{data:r,error:null,status:t.status,headers:t.headers,retry:e}},R=(t,e)=>(r,{query:n,params:s,body:a,...c}={})=>{s&&Object.entries(s).forEach(([i,x])=>{r=r.replace(`:${i}`,x)});let u=c.headers?.["Content-Type"];if(!u||u==="application/json")try{a=JSON.stringify(a)}catch{}let y=e?.fetcher||globalThis.fetch,g=n?`?${new URLSearchParams(n).toString()}`:"",l=`${t}${r}${g}`,m=a?{"content-type":"application/json",...c.headers}:c.headers,S={...c,method:c.method?.toUpperCase()||"GET",headers:m,body:a},p=()=>y(l,S).then(i=>J(i,p));return p()};0&&(module.exports={edenFetch});
package/dist/fetch.mjs CHANGED
@@ -1 +1 @@
1
- import{b as a}from"./chunk-VA7FGDJH.mjs";import"./chunk-HUZ6GXDC.mjs";export{a as edenFetch};
1
+ import{a}from"./chunk-YAG46HFR.mjs";import"./chunk-XYW4OUFN.mjs";export{a as edenFetch};
package/dist/index.d.mts CHANGED
@@ -1,102 +1,5 @@
1
- import { InputSchema, Elysia } from 'elysia';
2
- import { P as Prettify, I as IsNever } from './types-DcP_1Cpm.js';
1
+ export { Treaty, treaty } from './treaty2.mjs';
3
2
  export { edenTreaty } from './treaty.mjs';
4
3
  export { edenFetch } from './fetch.mjs';
5
-
6
- declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
7
- url: string;
8
- ws: WebSocket;
9
- constructor(url: string);
10
- send(data: Schema['body'] | Schema['body'][]): this;
11
- on<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
12
- off<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
13
- subscribe(onMessage: (event: Treaty.WSEvent<'message', Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
14
- addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
15
- removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
16
- close(): this;
17
- }
18
-
19
- /// <reference lib="dom" />
20
-
21
- type Files = File | FileList;
22
- type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
23
- [K in keyof RecordType]: RecordType[K] extends Blob | Blob[] ? Files : RecordType[K];
24
- } & {};
25
- type MaybeArray<T> = T | T[];
26
- type MaybePromise<T> = T | Promise<T>;
27
- declare namespace Treaty {
28
- interface TreatyParam {
29
- fetch?: RequestInit;
30
- }
31
- export type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
32
- _routes: infer Schema extends Record<string, any>;
33
- } ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
34
- export type Sign<in out Route extends Record<string, any>> = {
35
- [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? (undefined extends Route['subscribe']['headers'] ? {
36
- headers?: Record<string, unknown>;
37
- } : {
38
- headers: Route['subscribe']['headers'];
39
- }) & (undefined extends Route['subscribe']['query'] ? {
40
- query?: Record<string, unknown>;
41
- } : {
42
- query: Route['subscribe']['query'];
43
- }) extends infer Param ? {} extends Param ? (options?: Param) => EdenWS<Route['subscribe']> : (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
44
- body: infer Body;
45
- headers: infer Headers;
46
- params: any;
47
- query: infer Query;
48
- response: infer Response extends Record<number, unknown>;
49
- } ? (undefined extends Headers ? {
50
- headers?: Record<string, unknown>;
51
- } : {
52
- headers: Headers;
53
- }) & (undefined extends Query ? {
54
- query?: Record<string, unknown>;
55
- } : {
56
- query: Query;
57
- }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : never : CreateParams<Route[K]>;
58
- };
59
- 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
60
- ((params: {
61
- [param in Path extends `:${infer Param}` ? Param : never]: string | number;
62
- }) => Prettify<Sign<Route[Path]>> & CreateParams<Route[Path]>) & Prettify<Sign<Route>> : never;
63
- export interface Config {
64
- fetch?: Omit<RequestInit, 'headers' | 'method'>;
65
- fetcher?: typeof fetch;
66
- headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => RequestInit['headers'] | void)>;
67
- onRequest?: MaybeArray<(path: string, options: FetchRequestInit) => MaybePromise<FetchRequestInit | void>>;
68
- onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
69
- keepDomain?: boolean;
70
- }
71
- type TreatyResponse<Res extends Record<number, unknown>> = {
72
- data: Res[200];
73
- error: null;
74
- response: Response;
75
- status: number;
76
- headers: FetchRequestInit['headers'];
77
- } | {
78
- data: null;
79
- error: Exclude<keyof Res, 200> extends never ? {
80
- status: unknown;
81
- value: unknown;
82
- } : {
83
- [Status in keyof Res]: {
84
- status: Status;
85
- value: Res[Status];
86
- };
87
- }[Exclude<keyof Res, 200>];
88
- response: Response;
89
- status: number;
90
- headers: FetchRequestInit['headers'];
91
- };
92
- export interface OnMessage<Data = unknown> extends MessageEvent {
93
- data: Data;
94
- rawData: MessageEvent['data'];
95
- }
96
- export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
97
- export { };
98
- }
99
-
100
- declare const treaty: <const App extends Elysia<any, any, any, any, any, any, any, any>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
101
-
102
- export { treaty };
4
+ import 'elysia';
5
+ import './types-DNydNaKe.mjs';
package/dist/index.d.ts CHANGED
@@ -1,102 +1,5 @@
1
- import { InputSchema, Elysia } from 'elysia';
2
- import { P as Prettify, I as IsNever } from './types-DcP_1Cpm.js';
1
+ export { Treaty, treaty } from './treaty2.js';
3
2
  export { edenTreaty } from './treaty.js';
4
3
  export { edenFetch } from './fetch.js';
5
-
6
- declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
7
- url: string;
8
- ws: WebSocket;
9
- constructor(url: string);
10
- send(data: Schema['body'] | Schema['body'][]): this;
11
- on<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
12
- off<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
13
- subscribe(onMessage: (event: Treaty.WSEvent<'message', Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
14
- addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
15
- removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
16
- close(): this;
17
- }
18
-
19
- /// <reference lib="dom" />
20
-
21
- type Files = File | FileList;
22
- type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
23
- [K in keyof RecordType]: RecordType[K] extends Blob | Blob[] ? Files : RecordType[K];
24
- } & {};
25
- type MaybeArray<T> = T | T[];
26
- type MaybePromise<T> = T | Promise<T>;
27
- declare namespace Treaty {
28
- interface TreatyParam {
29
- fetch?: RequestInit;
30
- }
31
- export type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
32
- _routes: infer Schema extends Record<string, any>;
33
- } ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
34
- export type Sign<in out Route extends Record<string, any>> = {
35
- [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? (undefined extends Route['subscribe']['headers'] ? {
36
- headers?: Record<string, unknown>;
37
- } : {
38
- headers: Route['subscribe']['headers'];
39
- }) & (undefined extends Route['subscribe']['query'] ? {
40
- query?: Record<string, unknown>;
41
- } : {
42
- query: Route['subscribe']['query'];
43
- }) extends infer Param ? {} extends Param ? (options?: Param) => EdenWS<Route['subscribe']> : (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
44
- body: infer Body;
45
- headers: infer Headers;
46
- params: any;
47
- query: infer Query;
48
- response: infer Response extends Record<number, unknown>;
49
- } ? (undefined extends Headers ? {
50
- headers?: Record<string, unknown>;
51
- } : {
52
- headers: Headers;
53
- }) & (undefined extends Query ? {
54
- query?: Record<string, unknown>;
55
- } : {
56
- query: Query;
57
- }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : never : CreateParams<Route[K]>;
58
- };
59
- 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
60
- ((params: {
61
- [param in Path extends `:${infer Param}` ? Param : never]: string | number;
62
- }) => Prettify<Sign<Route[Path]>> & CreateParams<Route[Path]>) & Prettify<Sign<Route>> : never;
63
- export interface Config {
64
- fetch?: Omit<RequestInit, 'headers' | 'method'>;
65
- fetcher?: typeof fetch;
66
- headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => RequestInit['headers'] | void)>;
67
- onRequest?: MaybeArray<(path: string, options: FetchRequestInit) => MaybePromise<FetchRequestInit | void>>;
68
- onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
69
- keepDomain?: boolean;
70
- }
71
- type TreatyResponse<Res extends Record<number, unknown>> = {
72
- data: Res[200];
73
- error: null;
74
- response: Response;
75
- status: number;
76
- headers: FetchRequestInit['headers'];
77
- } | {
78
- data: null;
79
- error: Exclude<keyof Res, 200> extends never ? {
80
- status: unknown;
81
- value: unknown;
82
- } : {
83
- [Status in keyof Res]: {
84
- status: Status;
85
- value: Res[Status];
86
- };
87
- }[Exclude<keyof Res, 200>];
88
- response: Response;
89
- status: number;
90
- headers: FetchRequestInit['headers'];
91
- };
92
- export interface OnMessage<Data = unknown> extends MessageEvent {
93
- data: Data;
94
- rawData: MessageEvent['data'];
95
- }
96
- export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
97
- export { };
98
- }
99
-
100
- declare const treaty: <const App extends Elysia<any, any, any, any, any, any, any, any>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
101
-
102
- export { treaty };
4
+ import 'elysia';
5
+ import './types-DNydNaKe.js';
@@ -1 +1 @@
1
- "use strict";var Eden=(()=>{var P=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var oe=(t,e)=>{for(var r in e)P(t,r,{get:e[r],enumerable:!0})},ce=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of ae(e))!ie.call(t,c)&&c!==r&&P(t,c,{get:()=>e[c],enumerable:!(s=se(e,c))||s.enumerable});return t};var fe=t=>ce(P({},"__esModule",{value:!0}),t);var de={};oe(de,{edenFetch:()=>ne,edenTreaty:()=>re,treaty:()=>Y});var V=(t,e,r)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!r||!Object.keys(r).length)return`${t}${e}`;let s="";for(let[c,n]of Object.entries(r))s+=`${c}=${n}&`;return`${t}${e}?${s.slice(0,-1)}`},R=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var O=class extends Error{constructor(r,s){super(s+"");this.status=r;this.value=s}};var z=/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/,D=class{constructor(e){this.url=e;this.ws=new WebSocket(e)}ws;send(e){return Array.isArray(e)?(e.forEach(r=>this.send(r)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,r,s){return this.addEventListener(e,r,s)}off(e,r,s){return this.ws.removeEventListener(e,r,s),this}subscribe(e,r){return this.addEventListener("message",e,r)}addEventListener(e,r,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let n=c.data.toString(),a=n.charCodeAt(0),d=n.charCodeAt(n.length-1);if(a===91||a===123)try{n=JSON.parse(n,(W,w)=>{if(typeof w=="string"&&z.test(w)){let m=new Date(w);if(!Number.isNaN(m.getTime()))return m}return w})}catch{}else R(n)?n=+n:n==="true"?n=!0:n==="false"?n=!1:n==="null"?n=null:a===34&&d===34&&z.test(n)&&(n=new Date(n.substring(1,n.length-1)));r({...c,data:n})}else r(c)},s),this}removeEventListener(e,r,s){return this.off(e,r,s),this}close(){return this.ws.close(),this}};var ye=["get","post","put","delete","patch","options","head","connect","subscribe"],X=["localhost","127.0.0.1","0.0.0.0"],J=typeof FileList>"u",U=/(\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))/,B=/(?: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\([^)]+\)/,H=/^(?:(?:(?:(?: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)?)?$/,Q=t=>J?t instanceof Blob:t instanceof FileList||t instanceof File,ue=t=>{if(!t)return!1;for(let e in t)if(Q(t[e])||Array.isArray(t[e])&&t[e].find(Q))return!0;return!1},q=t=>J?t:new Promise(e=>{let r=new FileReader;r.onload=()=>{let s=new File([r.result],t.name,{lastModified:t.lastModified,type:t.type});e(s)},r.readAsArrayBuffer(t)}),M=(t,e,r={},s={})=>{if(Array.isArray(t)){for(let c of t)if(!Array.isArray(c))s=M(c,e,r,s);else{let n=c[0];if(typeof n=="string")s[n.toLowerCase()]=c[1];else for(let[a,d]of n)s[a.toLowerCase()]=d}return s}if(!t)return s;switch(typeof t){case"function":let c=t(e,r);return c?M(c,e,r,s):s;case"object":if(t instanceof Headers)return t.forEach((n,a)=>{s[a.toLowerCase()]=n}),s;for(let[n,a]of Object.entries(t))s[n.toLowerCase()]=a;default:return s}},$=(t,e,r=[],s)=>new Proxy(()=>{},{get(c,n){return $(t,e,n==="index"?r:[...r,n],s)},apply(c,n,[a,d]){if(!a||d||typeof a=="object"&&Object.keys(a).length!==1||ye.includes(r.at(-1))){let W=[...r],w=W.pop(),m="/"+W.join("/"),{fetcher:u=fetch,headers:g,onRequest:b,onResponse:p,fetch:S}=e,v=w==="get"||w==="head"||w==="subscribe";g=M(g,m,d);let K=v?a?.query:d?.query,k="";if(K){let o=(L,T)=>{k+=(k?"&":"?")+`${encodeURIComponent(L)}=${encodeURIComponent(T)}`};for(let[L,T]of Object.entries(K)){if(Array.isArray(T)){for(let f of T)o(L,f);continue}o(L,`${T}`)}}if(w==="subscribe"){let o=t.replace(/^([^]+):\/\//,t.startsWith("https://")?"wss://":t.startsWith("http://")||X.find(L=>t.includes(L))?"ws://":"wss://")+m+k;return new D(o)}return(async()=>{let o={method:w?.toUpperCase(),body:a,...S,headers:g};o.headers={...g,...M(v?a?.headers:d?.headers,m,o)};let L=v&&typeof a=="object"?a.fetch:d?.fetch;if(o={...o,...L},v&&delete o.body,b){Array.isArray(b)||(b=[b]);for(let h of b){let i=await h(m,o);typeof i=="object"&&(o={...o,...i,headers:{...o.headers,...M(i.headers,m,o)}})}}if(v&&delete o.body,ue(a)){let h=new FormData;for(let[i,l]of Object.entries(o.body)){if(J){h.append(i,l);continue}if(l instanceof File){h.append(i,await q(l));continue}if(l instanceof FileList){for(let y=0;y<l.length;y++)h.append(i,await q(l[y]));continue}if(Array.isArray(l)){for(let y=0;y<l.length;y++){let x=l[y];h.append(i,x instanceof File?await q(x):x)}continue}h.append(i,l)}o.body=h}else typeof a=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(a)):a!=null&&(o.headers["content-type"]="text/plain");if(v&&delete o.body,b){Array.isArray(b)||(b=[b]);for(let h of b){let i=await h(m,o);typeof i=="object"&&(o={...o,...i,headers:{...o.headers,...i.headers}})}}let T=t+m+k,f=await(s?.handle(new Request(T,o))??u(T,o)),A=null,E=null;if(p){Array.isArray(p)||(p=[p]);for(let h of p)try{let i=await h(f.clone());if(i!=null){A=i;break}}catch(i){i instanceof O?E=i:E=new O(422,i);break}}if(A===null){switch(f.headers.get("Content-Type")?.split(";")[0]){case"application/json":A=await f.json();break;case"application/octet-stream":A=await f.arrayBuffer();break;case"multipart/form-data":let h=await f.formData();A={},h.forEach((i,l)=>{A[l]=i});break;default:A=await f.text().then(i=>{if(R(i))return+i;if(i==="true")return!0;if(i==="false")return!1;if(!i)return i;let l=i.replace(/"/g,"");if(U.test(l)||B.test(l)||H.test(l)){let y=new Date(l);if(!Number.isNaN(y.getTime()))return y}return i})}(f.status>=300||f.status<200)&&(E=new O(f.status,A),A=null)}return{data:A,error:E,response:f,status:f.status,headers:f.headers}})()}return typeof a=="object"?$(t,e,[...r,Object.values(a)[0]],s):$(t,e,r)}}),Y=(t,e={})=>typeof t=="string"?(e.keepDomain||(t.includes("://")||(t=(X.find(r=>t.includes(r))?"http://":"https://")+t),t.endsWith("/")&&(t=t.slice(0,-1))),$(t,e)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),$("http://e.ly",e,[],t));var Z=typeof FileList>"u",ee=t=>Z?t instanceof Blob:t instanceof FileList||t instanceof File,le=t=>{if(!t)return!1;for(let e in t){if(ee(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(r=>ee(r)))return!0}return!1},_=t=>Z?t:new Promise(e=>{let r=new FileReader;r.onload=()=>{let s=new File([r.result],t.name,{lastModified:t.lastModified,type:t.type});e(s)},r.readAsArrayBuffer(t)}),G=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(r=>this.send(r)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,r,s){return this.addEventListener(e,r,s)}off(e,r,s){return this.ws.removeEventListener(e,r,s),this}subscribe(e,r){return this.addEventListener("message",e,r)}addEventListener(e,r,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let n=c.data.toString(),a=n.charCodeAt(0);if(a===47||a===123)try{n=JSON.parse(n)}catch{}else R(n)?n=+n:n==="true"?n=!0:n==="false"&&(n=!1);r({...c,data:n})}else r(c)},s),this}removeEventListener(e,r,s){return this.off(e,r,s),this}close(){return this.ws.close(),this}},te=(t,e="",r)=>new Proxy(()=>{},{get(s,c,n){return te(t,`${e}/${c.toString()}`,r)},apply(s,c,[n,a={}]=[{},{}]){let d=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:W,$fetch:w,$headers:m,$transform:u,getRaw:g,...b}=n??{};d??=b;let p=e.lastIndexOf("/"),S=e.slice(p+1).toUpperCase(),v=V(t,p===-1?"/":e.slice(0,p),Object.assign(a.query??{},W)),K=r.fetcher??fetch,k=r.transform?Array.isArray(r.transform)?r.transform:[r.transform]:void 0,o=u?Array.isArray(u)?u:[u]:void 0;return o&&(k?k=o.concat(k):k=o),S==="SUBSCRIBE"?new G(v.replace(/^([^]+):\/\//,v.startsWith("https://")?"wss://":"ws://")):(async T=>{let f,A={...r.$fetch?.headers,...w?.headers,...a.headers,...m};if(S!=="GET"&&S!=="HEAD"){f=Object.keys(d).length||Array.isArray(d)?d:void 0;let y=f&&(typeof f=="object"||Array.isArray(d));if(y&&le(f)){let j=new FormData;for(let[C,F]of Object.entries(f))if(Z)j.append(C,F);else if(F instanceof File)j.append(C,await _(F));else if(F instanceof FileList)for(let N=0;N<F.length;N++)j.append(C,await _(F[N]));else if(Array.isArray(F))for(let N=0;N<F.length;N++){let I=F[N];j.append(C,I instanceof File?await _(I):I)}else j.append(C,F);f=j}else f!=null&&(A["content-type"]=y?"application/json":"text/plain",f=y?JSON.stringify(f):d)}let E=await K(v,{method:S,body:f,...r.$fetch,...a.fetch,...w,headers:A}),h;if(T.getRaw)return E;switch(E.headers.get("Content-Type")?.split(";")[0]){case"application/json":h=await E.json();break;default:h=await E.text().then(y=>R(y)?+y:y==="true"?!0:y==="false"?!1:y)}let i=E.status>=300||E.status<200?new O(E.status,h):null,l={data:h,error:i,response:E,status:E.status,headers:E.headers};if(k)for(let y of k){let x=y(l);x instanceof Promise&&(x=await x),x!=null&&(l=x)}return l})({getRaw:g})}}),re=(t,e={fetcher:fetch})=>new Proxy({},{get(r,s){return te(t,s,e)}});var ne=(t,e)=>(r,{query:s,params:c,body:n,...a}={})=>{c&&Object.entries(c).forEach(([u,g])=>{r=r.replace(`:${u}`,g)});let d=a.headers?.["Content-Type"];if(!d||d==="application/json")try{n=JSON.stringify(n)}catch{}let W=e?.fetcher||globalThis.fetch,w=s?`?${new URLSearchParams(s).toString()}`:"",m=()=>W(t+r+w,{...a,method:a.method?.toUpperCase()||"GET",headers:n?{"content-type":"application/json",...a.headers}:a.headers,body:n}).then(async u=>{let g;switch(u.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await u.json();break;case"application/octet-stream":g=await u.arrayBuffer();break;case"multipart/form-data":let b=await u.formData();g={},b.forEach((p,S)=>{g[S]=p});break;default:g=await u.text().then(p=>{if(R(p))return+p;if(p==="true")return!0;if(p==="false")return!1;if(!p)return p;let S=p.replace(/"/g,"");if(U.test(S)||B.test(S)||H.test(S)){let v=new Date(S);if(!Number.isNaN(v.getTime()))return v}return p})}return u.status>300?{data:null,status:u.status,headers:u.headers,retry:m,error:new O(u.status,g)}:{data:g,error:null,status:u.status,headers:u.headers,retry:m}});return m()};return fe(de);})();
1
+ "use strict";var Eden=(()=>{var P=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.prototype.hasOwnProperty;var ae=(e,t)=>{for(var n in t)P(e,n,{get:t[n],enumerable:!0})},ie=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of re(t))!se.call(e,s)&&s!==n&&P(e,s,{get:()=>t[s],enumerable:!(r=ne(t,s))||r.enumerable});return e};var oe=e=>ie(P({},"__esModule",{value:!0}),e);var be={};ae(be,{edenFetch:()=>te,edenTreaty:()=>ee,treaty:()=>z});var k=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var ce=/(\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))/,fe=/(?: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\([^)]+\)/,de=/^(?:(?:(?:(?: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)?)?$/,ye=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),_=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(ce.test(t)||fe.test(t)||de.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},ue=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},le=e=>JSON.parse(e,(t,n)=>{let r=_(n);return r||n}),L=e=>{if(!e)return e;if(ye(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=_(e);if(t)return t;if(ue(e))try{return le(e)}catch{}return e},D=e=>{let t=e.data.toString();return t==="null"?null:L(t)};var I=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 a=D(s);n({...s,data:a})}else n(s)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var pe=["get","post","put","delete","patch","options","head","connect","subscribe"],Z=["localhost","127.0.0.1","0.0.0.0"],U=typeof FileList>"u",G=e=>U?e instanceof Blob:e instanceof FileList||e instanceof File,he=e=>{if(!e)return!1;for(let t in e)if(G(e[t])||Array.isArray(e[t])&&e[t].find(G))return!0;return!1},J=e=>U?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)}),j=(e,t,n={},r={})=>{if(Array.isArray(e)){for(let s of e)if(!Array.isArray(s))r=j(s,t,n,r);else{let a=s[0];if(typeof a=="string")r[a.toLowerCase()]=s[1];else for(let[i,y]of a)r[i.toLowerCase()]=y}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return j(e,t,n,r);let s=e(t,n);return s?j(s,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((a,i)=>{r[i.toLowerCase()]=a}),r;for(let[a,i]of Object.entries(e))r[a.toLowerCase()]=i;return r;default:return r}};async function*ge(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder;try{for(;;){let{done:s,value:a}=await n.read();if(s)break;let i=r.decode(a);yield L(i)}}finally{n.releaseLock()}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(s,a){return K(e,t,a==="index"?n:[...n,a],r)},apply(s,a,[i,y]){if(!i||y||typeof i=="object"&&Object.keys(i).length!==1||pe.includes(n.at(-1))){let M=[...n],S=M.pop(),E="/"+M.join("/"),{fetcher:F=fetch,headers:R,onRequest:p,onResponse:g,fetch:O}=t,v=S==="get"||S==="head"||S==="subscribe";R=j(R,E,y);let N=v?i?.query:y?.query,w="";if(N){let o=(T,x)=>{w+=(w?"&":"?")+`${encodeURIComponent(T)}=${encodeURIComponent(x)}`};for(let[T,x]of Object.entries(N)){if(Array.isArray(x)){for(let c of x)o(T,c);continue}o(T,`${x}`)}}if(S==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Z.find(T=>e.includes(T))?"ws://":"wss://")+E+w;return new I(o)}return(async()=>{let o={method:S?.toUpperCase(),body:i,...O,headers:R};o.headers={...R,...j(v?i?.headers:y?.headers,E,o)};let T=v&&typeof i=="object"?i.fetch:y?.fetch;if(o={...o,...T},v&&delete o.body,p){Array.isArray(p)||(p=[p]);for(let d of p){let f=await d(E,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...j(f.headers,E,o)}})}}if(v&&delete o.body,he(i)){let d=new FormData;for(let[f,l]of Object.entries(o.body)){if(U){d.append(f,l);continue}if(l instanceof File){d.append(f,await J(l));continue}if(l instanceof FileList){for(let m=0;m<l.length;m++)d.append(f,await J(l[m]));continue}if(Array.isArray(l)){for(let m=0;m<l.length;m++){let b=l[m];d.append(f,b instanceof File?await J(b):b)}continue}d.append(f,l)}o.body=d}else typeof i=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(i)):i!=null&&(o.headers["content-type"]="text/plain");if(v&&delete o.body,p){Array.isArray(p)||(p=[p]);for(let d of p){let f=await d(E,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...j(f.headers,E,o)}})}}let x=e+E+w,c=await(r?.handle(new Request(x,o))??F(x,o)),h=null,u=null;if(g){Array.isArray(g)||(g=[g]);for(let d of g)try{let f=await d(c.clone());if(f!=null){h=f;break}}catch(f){f instanceof k?u=f:u=new k(422,f);break}}if(h!==null)return{data:h,error:u,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":h=ge(c);break;case"application/json":h=await c.json();break;case"application/octet-stream":h=await c.arrayBuffer();break;case"multipart/form-data":let d=await c.formData();h={},d.forEach((f,l)=>{h[l]=f});break;default:h=await c.text().then(L)}return(c.status>=300||c.status<200)&&(u=new k(c.status,h),h=null),{data:h,error:u,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)}}),z=(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 Q=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[s,a]of Object.entries(n))r+=`${s}=${a}&`;return`${e}${t}?${r.slice(0,-1)}`};var V=typeof FileList>"u",X=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,me=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},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)}),H=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 a=D(s);n({...s,data:a})}else n(s)},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,s,a){return Y(e,`${t}/${s.toString()}`,n)},apply(r,s,[a,i={}]=[{},{}]){let y=a!==void 0&&(typeof a!="object"||Array.isArray(a))?a:void 0,{$query:M,$fetch:S,$headers:E,$transform:F,getRaw:R,...p}=a??{};y??=p;let g=t.lastIndexOf("/"),O=t.slice(g+1).toUpperCase(),v=Q(e,g===-1?"/":t.slice(0,g),Object.assign(i.query??{},M)),N=n.fetcher??fetch,w=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=F?Array.isArray(F)?F:[F]:void 0;return o&&(w?w=o.concat(w):w=o),O==="SUBSCRIBE"?new H(v.replace(/^([^]+):\/\//,v.startsWith("https://")?"wss://":"ws://")):(async x=>{let c,h={...n.$fetch?.headers,...S?.headers,...i.headers,...E};if(O!=="GET"&&O!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let m=c&&(typeof c=="object"||Array.isArray(y));if(m&&me(c)){let $=new FormData;for(let[C,A]of Object.entries(c))if(V)$.append(C,A);else if(A instanceof File)$.append(C,await B(A));else if(A instanceof FileList)for(let W=0;W<A.length;W++)$.append(C,await B(A[W]));else if(Array.isArray(A))for(let W=0;W<A.length;W++){let q=A[W];$.append(C,q instanceof File?await B(q):q)}else $.append(C,A);c=$}else c!=null&&(h["content-type"]=m?"application/json":"text/plain",c=m?JSON.stringify(c):y)}let u=await N(v,{method:O,body:c,...n.$fetch,...i.fetch,...S,headers:h}),d;if(x.getRaw)return u;switch(u.headers.get("Content-Type")?.split(";")[0]){case"application/json":d=await u.json();break;default:d=await u.text().then(L)}let f=u.status>=300||u.status<200?new k(u.status,d):null,l={data:d,error:f,response:u,status:u.status,headers:u.headers};if(w)for(let m of w){let b=m(l);b instanceof Promise&&(b=await b),b!=null&&(l=b)}return l})({getRaw:R})}}),ee=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return Y(e,r,t)}});var Ee=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,a)=>{r[a]=s}),r}}return e.text().then(L)},we=async(e,t)=>{let n=await Ee(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new k(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},te=(e,t)=>(n,{query:r,params:s,body:a,...i}={})=>{s&&Object.entries(s).forEach(([g,O])=>{n=n.replace(`:${g}`,O)});let y=i.headers?.["Content-Type"];if(!y||y==="application/json")try{a=JSON.stringify(a)}catch{}let M=t?.fetcher||globalThis.fetch,S=r?`?${new URLSearchParams(r).toString()}`:"",E=`${e}${n}${S}`,F=a?{"content-type":"application/json",...i.headers}:i.headers,R={...i,method:i.method?.toUpperCase()||"GET",headers:F,body:a},p=()=>M(E,R).then(g=>we(g,p));return p()};return oe(be);})();
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- "use strict";var P=Object.defineProperty;var se=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ie=Object.prototype.hasOwnProperty;var oe=(t,e)=>{for(var r in e)P(t,r,{get:e[r],enumerable:!0})},ce=(t,e,r,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of ae(e))!ie.call(t,c)&&c!==r&&P(t,c,{get:()=>e[c],enumerable:!(s=se(e,c))||s.enumerable});return t};var fe=t=>ce(P({},"__esModule",{value:!0}),t);var de={};oe(de,{edenFetch:()=>ne,edenTreaty:()=>re,treaty:()=>Y});module.exports=fe(de);var V=(t,e,r)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!r||!Object.keys(r).length)return`${t}${e}`;let s="";for(let[c,n]of Object.entries(r))s+=`${c}=${n}&`;return`${t}${e}?${s.slice(0,-1)}`},R=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var O=class extends Error{constructor(r,s){super(s+"");this.status=r;this.value=s}};var z=/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/,D=class{constructor(e){this.url=e;this.ws=new WebSocket(e)}ws;send(e){return Array.isArray(e)?(e.forEach(r=>this.send(r)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,r,s){return this.addEventListener(e,r,s)}off(e,r,s){return this.ws.removeEventListener(e,r,s),this}subscribe(e,r){return this.addEventListener("message",e,r)}addEventListener(e,r,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let n=c.data.toString(),a=n.charCodeAt(0),d=n.charCodeAt(n.length-1);if(a===91||a===123)try{n=JSON.parse(n,(W,w)=>{if(typeof w=="string"&&z.test(w)){let m=new Date(w);if(!Number.isNaN(m.getTime()))return m}return w})}catch{}else R(n)?n=+n:n==="true"?n=!0:n==="false"?n=!1:n==="null"?n=null:a===34&&d===34&&z.test(n)&&(n=new Date(n.substring(1,n.length-1)));r({...c,data:n})}else r(c)},s),this}removeEventListener(e,r,s){return this.off(e,r,s),this}close(){return this.ws.close(),this}};var ye=["get","post","put","delete","patch","options","head","connect","subscribe"],X=["localhost","127.0.0.1","0.0.0.0"],J=typeof FileList>"u",U=/(\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))/,B=/(?: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\([^)]+\)/,H=/^(?:(?:(?:(?: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)?)?$/,Q=t=>J?t instanceof Blob:t instanceof FileList||t instanceof File,ue=t=>{if(!t)return!1;for(let e in t)if(Q(t[e])||Array.isArray(t[e])&&t[e].find(Q))return!0;return!1},q=t=>J?t:new Promise(e=>{let r=new FileReader;r.onload=()=>{let s=new File([r.result],t.name,{lastModified:t.lastModified,type:t.type});e(s)},r.readAsArrayBuffer(t)}),M=(t,e,r={},s={})=>{if(Array.isArray(t)){for(let c of t)if(!Array.isArray(c))s=M(c,e,r,s);else{let n=c[0];if(typeof n=="string")s[n.toLowerCase()]=c[1];else for(let[a,d]of n)s[a.toLowerCase()]=d}return s}if(!t)return s;switch(typeof t){case"function":let c=t(e,r);return c?M(c,e,r,s):s;case"object":if(t instanceof Headers)return t.forEach((n,a)=>{s[a.toLowerCase()]=n}),s;for(let[n,a]of Object.entries(t))s[n.toLowerCase()]=a;default:return s}},$=(t,e,r=[],s)=>new Proxy(()=>{},{get(c,n){return $(t,e,n==="index"?r:[...r,n],s)},apply(c,n,[a,d]){if(!a||d||typeof a=="object"&&Object.keys(a).length!==1||ye.includes(r.at(-1))){let W=[...r],w=W.pop(),m="/"+W.join("/"),{fetcher:u=fetch,headers:g,onRequest:b,onResponse:p,fetch:S}=e,v=w==="get"||w==="head"||w==="subscribe";g=M(g,m,d);let K=v?a?.query:d?.query,k="";if(K){let o=(L,T)=>{k+=(k?"&":"?")+`${encodeURIComponent(L)}=${encodeURIComponent(T)}`};for(let[L,T]of Object.entries(K)){if(Array.isArray(T)){for(let f of T)o(L,f);continue}o(L,`${T}`)}}if(w==="subscribe"){let o=t.replace(/^([^]+):\/\//,t.startsWith("https://")?"wss://":t.startsWith("http://")||X.find(L=>t.includes(L))?"ws://":"wss://")+m+k;return new D(o)}return(async()=>{let o={method:w?.toUpperCase(),body:a,...S,headers:g};o.headers={...g,...M(v?a?.headers:d?.headers,m,o)};let L=v&&typeof a=="object"?a.fetch:d?.fetch;if(o={...o,...L},v&&delete o.body,b){Array.isArray(b)||(b=[b]);for(let h of b){let i=await h(m,o);typeof i=="object"&&(o={...o,...i,headers:{...o.headers,...M(i.headers,m,o)}})}}if(v&&delete o.body,ue(a)){let h=new FormData;for(let[i,l]of Object.entries(o.body)){if(J){h.append(i,l);continue}if(l instanceof File){h.append(i,await q(l));continue}if(l instanceof FileList){for(let y=0;y<l.length;y++)h.append(i,await q(l[y]));continue}if(Array.isArray(l)){for(let y=0;y<l.length;y++){let x=l[y];h.append(i,x instanceof File?await q(x):x)}continue}h.append(i,l)}o.body=h}else typeof a=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(a)):a!=null&&(o.headers["content-type"]="text/plain");if(v&&delete o.body,b){Array.isArray(b)||(b=[b]);for(let h of b){let i=await h(m,o);typeof i=="object"&&(o={...o,...i,headers:{...o.headers,...i.headers}})}}let T=t+m+k,f=await(s?.handle(new Request(T,o))??u(T,o)),A=null,E=null;if(p){Array.isArray(p)||(p=[p]);for(let h of p)try{let i=await h(f.clone());if(i!=null){A=i;break}}catch(i){i instanceof O?E=i:E=new O(422,i);break}}if(A===null){switch(f.headers.get("Content-Type")?.split(";")[0]){case"application/json":A=await f.json();break;case"application/octet-stream":A=await f.arrayBuffer();break;case"multipart/form-data":let h=await f.formData();A={},h.forEach((i,l)=>{A[l]=i});break;default:A=await f.text().then(i=>{if(R(i))return+i;if(i==="true")return!0;if(i==="false")return!1;if(!i)return i;let l=i.replace(/"/g,"");if(U.test(l)||B.test(l)||H.test(l)){let y=new Date(l);if(!Number.isNaN(y.getTime()))return y}return i})}(f.status>=300||f.status<200)&&(E=new O(f.status,A),A=null)}return{data:A,error:E,response:f,status:f.status,headers:f.headers}})()}return typeof a=="object"?$(t,e,[...r,Object.values(a)[0]],s):$(t,e,r)}}),Y=(t,e={})=>typeof t=="string"?(e.keepDomain||(t.includes("://")||(t=(X.find(r=>t.includes(r))?"http://":"https://")+t),t.endsWith("/")&&(t=t.slice(0,-1))),$(t,e)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),$("http://e.ly",e,[],t));var Z=typeof FileList>"u",ee=t=>Z?t instanceof Blob:t instanceof FileList||t instanceof File,le=t=>{if(!t)return!1;for(let e in t){if(ee(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(r=>ee(r)))return!0}return!1},_=t=>Z?t:new Promise(e=>{let r=new FileReader;r.onload=()=>{let s=new File([r.result],t.name,{lastModified:t.lastModified,type:t.type});e(s)},r.readAsArrayBuffer(t)}),G=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(r=>this.send(r)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,r,s){return this.addEventListener(e,r,s)}off(e,r,s){return this.ws.removeEventListener(e,r,s),this}subscribe(e,r){return this.addEventListener("message",e,r)}addEventListener(e,r,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let n=c.data.toString(),a=n.charCodeAt(0);if(a===47||a===123)try{n=JSON.parse(n)}catch{}else R(n)?n=+n:n==="true"?n=!0:n==="false"&&(n=!1);r({...c,data:n})}else r(c)},s),this}removeEventListener(e,r,s){return this.off(e,r,s),this}close(){return this.ws.close(),this}},te=(t,e="",r)=>new Proxy(()=>{},{get(s,c,n){return te(t,`${e}/${c.toString()}`,r)},apply(s,c,[n,a={}]=[{},{}]){let d=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:W,$fetch:w,$headers:m,$transform:u,getRaw:g,...b}=n??{};d??=b;let p=e.lastIndexOf("/"),S=e.slice(p+1).toUpperCase(),v=V(t,p===-1?"/":e.slice(0,p),Object.assign(a.query??{},W)),K=r.fetcher??fetch,k=r.transform?Array.isArray(r.transform)?r.transform:[r.transform]:void 0,o=u?Array.isArray(u)?u:[u]:void 0;return o&&(k?k=o.concat(k):k=o),S==="SUBSCRIBE"?new G(v.replace(/^([^]+):\/\//,v.startsWith("https://")?"wss://":"ws://")):(async T=>{let f,A={...r.$fetch?.headers,...w?.headers,...a.headers,...m};if(S!=="GET"&&S!=="HEAD"){f=Object.keys(d).length||Array.isArray(d)?d:void 0;let y=f&&(typeof f=="object"||Array.isArray(d));if(y&&le(f)){let j=new FormData;for(let[C,F]of Object.entries(f))if(Z)j.append(C,F);else if(F instanceof File)j.append(C,await _(F));else if(F instanceof FileList)for(let N=0;N<F.length;N++)j.append(C,await _(F[N]));else if(Array.isArray(F))for(let N=0;N<F.length;N++){let I=F[N];j.append(C,I instanceof File?await _(I):I)}else j.append(C,F);f=j}else f!=null&&(A["content-type"]=y?"application/json":"text/plain",f=y?JSON.stringify(f):d)}let E=await K(v,{method:S,body:f,...r.$fetch,...a.fetch,...w,headers:A}),h;if(T.getRaw)return E;switch(E.headers.get("Content-Type")?.split(";")[0]){case"application/json":h=await E.json();break;default:h=await E.text().then(y=>R(y)?+y:y==="true"?!0:y==="false"?!1:y)}let i=E.status>=300||E.status<200?new O(E.status,h):null,l={data:h,error:i,response:E,status:E.status,headers:E.headers};if(k)for(let y of k){let x=y(l);x instanceof Promise&&(x=await x),x!=null&&(l=x)}return l})({getRaw:g})}}),re=(t,e={fetcher:fetch})=>new Proxy({},{get(r,s){return te(t,s,e)}});var ne=(t,e)=>(r,{query:s,params:c,body:n,...a}={})=>{c&&Object.entries(c).forEach(([u,g])=>{r=r.replace(`:${u}`,g)});let d=a.headers?.["Content-Type"];if(!d||d==="application/json")try{n=JSON.stringify(n)}catch{}let W=e?.fetcher||globalThis.fetch,w=s?`?${new URLSearchParams(s).toString()}`:"",m=()=>W(t+r+w,{...a,method:a.method?.toUpperCase()||"GET",headers:n?{"content-type":"application/json",...a.headers}:a.headers,body:n}).then(async u=>{let g;switch(u.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await u.json();break;case"application/octet-stream":g=await u.arrayBuffer();break;case"multipart/form-data":let b=await u.formData();g={},b.forEach((p,S)=>{g[S]=p});break;default:g=await u.text().then(p=>{if(R(p))return+p;if(p==="true")return!0;if(p==="false")return!1;if(!p)return p;let S=p.replace(/"/g,"");if(U.test(S)||B.test(S)||H.test(S)){let v=new Date(S);if(!Number.isNaN(v.getTime()))return v}return p})}return u.status>300?{data:null,status:u.status,headers:u.headers,retry:m,error:new O(u.status,g)}:{data:g,error:null,status:u.status,headers:u.headers,retry:m}});return m()};0&&(module.exports={edenFetch,edenTreaty,treaty});
1
+ "use strict";var P=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.prototype.hasOwnProperty;var ae=(e,t)=>{for(var n in t)P(e,n,{get:t[n],enumerable:!0})},ie=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of re(t))!se.call(e,s)&&s!==n&&P(e,s,{get:()=>t[s],enumerable:!(r=ne(t,s))||r.enumerable});return e};var oe=e=>ie(P({},"__esModule",{value:!0}),e);var be={};ae(be,{edenFetch:()=>te,edenTreaty:()=>ee,treaty:()=>z});module.exports=oe(be);var k=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var ce=/(\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))/,fe=/(?: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\([^)]+\)/,de=/^(?:(?:(?:(?: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)?)?$/,ye=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),_=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(ce.test(t)||fe.test(t)||de.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},ue=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},le=e=>JSON.parse(e,(t,n)=>{let r=_(n);return r||n}),L=e=>{if(!e)return e;if(ye(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=_(e);if(t)return t;if(ue(e))try{return le(e)}catch{}return e},D=e=>{let t=e.data.toString();return t==="null"?null:L(t)};var I=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 a=D(s);n({...s,data:a})}else n(s)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var pe=["get","post","put","delete","patch","options","head","connect","subscribe"],Z=["localhost","127.0.0.1","0.0.0.0"],U=typeof FileList>"u",G=e=>U?e instanceof Blob:e instanceof FileList||e instanceof File,he=e=>{if(!e)return!1;for(let t in e)if(G(e[t])||Array.isArray(e[t])&&e[t].find(G))return!0;return!1},J=e=>U?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)}),j=(e,t,n={},r={})=>{if(Array.isArray(e)){for(let s of e)if(!Array.isArray(s))r=j(s,t,n,r);else{let a=s[0];if(typeof a=="string")r[a.toLowerCase()]=s[1];else for(let[i,y]of a)r[i.toLowerCase()]=y}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return j(e,t,n,r);let s=e(t,n);return s?j(s,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((a,i)=>{r[i.toLowerCase()]=a}),r;for(let[a,i]of Object.entries(e))r[a.toLowerCase()]=i;return r;default:return r}};async function*ge(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder;try{for(;;){let{done:s,value:a}=await n.read();if(s)break;let i=r.decode(a);yield L(i)}}finally{n.releaseLock()}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(s,a){return K(e,t,a==="index"?n:[...n,a],r)},apply(s,a,[i,y]){if(!i||y||typeof i=="object"&&Object.keys(i).length!==1||pe.includes(n.at(-1))){let M=[...n],S=M.pop(),E="/"+M.join("/"),{fetcher:F=fetch,headers:R,onRequest:p,onResponse:g,fetch:O}=t,v=S==="get"||S==="head"||S==="subscribe";R=j(R,E,y);let N=v?i?.query:y?.query,w="";if(N){let o=(T,x)=>{w+=(w?"&":"?")+`${encodeURIComponent(T)}=${encodeURIComponent(x)}`};for(let[T,x]of Object.entries(N)){if(Array.isArray(x)){for(let c of x)o(T,c);continue}o(T,`${x}`)}}if(S==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Z.find(T=>e.includes(T))?"ws://":"wss://")+E+w;return new I(o)}return(async()=>{let o={method:S?.toUpperCase(),body:i,...O,headers:R};o.headers={...R,...j(v?i?.headers:y?.headers,E,o)};let T=v&&typeof i=="object"?i.fetch:y?.fetch;if(o={...o,...T},v&&delete o.body,p){Array.isArray(p)||(p=[p]);for(let d of p){let f=await d(E,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...j(f.headers,E,o)}})}}if(v&&delete o.body,he(i)){let d=new FormData;for(let[f,l]of Object.entries(o.body)){if(U){d.append(f,l);continue}if(l instanceof File){d.append(f,await J(l));continue}if(l instanceof FileList){for(let m=0;m<l.length;m++)d.append(f,await J(l[m]));continue}if(Array.isArray(l)){for(let m=0;m<l.length;m++){let b=l[m];d.append(f,b instanceof File?await J(b):b)}continue}d.append(f,l)}o.body=d}else typeof i=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(i)):i!=null&&(o.headers["content-type"]="text/plain");if(v&&delete o.body,p){Array.isArray(p)||(p=[p]);for(let d of p){let f=await d(E,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...j(f.headers,E,o)}})}}let x=e+E+w,c=await(r?.handle(new Request(x,o))??F(x,o)),h=null,u=null;if(g){Array.isArray(g)||(g=[g]);for(let d of g)try{let f=await d(c.clone());if(f!=null){h=f;break}}catch(f){f instanceof k?u=f:u=new k(422,f);break}}if(h!==null)return{data:h,error:u,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":h=ge(c);break;case"application/json":h=await c.json();break;case"application/octet-stream":h=await c.arrayBuffer();break;case"multipart/form-data":let d=await c.formData();h={},d.forEach((f,l)=>{h[l]=f});break;default:h=await c.text().then(L)}return(c.status>=300||c.status<200)&&(u=new k(c.status,h),h=null),{data:h,error:u,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)}}),z=(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 Q=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[s,a]of Object.entries(n))r+=`${s}=${a}&`;return`${e}${t}?${r.slice(0,-1)}`};var V=typeof FileList>"u",X=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,me=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},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)}),H=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 a=D(s);n({...s,data:a})}else n(s)},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,s,a){return Y(e,`${t}/${s.toString()}`,n)},apply(r,s,[a,i={}]=[{},{}]){let y=a!==void 0&&(typeof a!="object"||Array.isArray(a))?a:void 0,{$query:M,$fetch:S,$headers:E,$transform:F,getRaw:R,...p}=a??{};y??=p;let g=t.lastIndexOf("/"),O=t.slice(g+1).toUpperCase(),v=Q(e,g===-1?"/":t.slice(0,g),Object.assign(i.query??{},M)),N=n.fetcher??fetch,w=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=F?Array.isArray(F)?F:[F]:void 0;return o&&(w?w=o.concat(w):w=o),O==="SUBSCRIBE"?new H(v.replace(/^([^]+):\/\//,v.startsWith("https://")?"wss://":"ws://")):(async x=>{let c,h={...n.$fetch?.headers,...S?.headers,...i.headers,...E};if(O!=="GET"&&O!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let m=c&&(typeof c=="object"||Array.isArray(y));if(m&&me(c)){let $=new FormData;for(let[C,A]of Object.entries(c))if(V)$.append(C,A);else if(A instanceof File)$.append(C,await B(A));else if(A instanceof FileList)for(let W=0;W<A.length;W++)$.append(C,await B(A[W]));else if(Array.isArray(A))for(let W=0;W<A.length;W++){let q=A[W];$.append(C,q instanceof File?await B(q):q)}else $.append(C,A);c=$}else c!=null&&(h["content-type"]=m?"application/json":"text/plain",c=m?JSON.stringify(c):y)}let u=await N(v,{method:O,body:c,...n.$fetch,...i.fetch,...S,headers:h}),d;if(x.getRaw)return u;switch(u.headers.get("Content-Type")?.split(";")[0]){case"application/json":d=await u.json();break;default:d=await u.text().then(L)}let f=u.status>=300||u.status<200?new k(u.status,d):null,l={data:d,error:f,response:u,status:u.status,headers:u.headers};if(w)for(let m of w){let b=m(l);b instanceof Promise&&(b=await b),b!=null&&(l=b)}return l})({getRaw:R})}}),ee=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return Y(e,r,t)}});var Ee=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,a)=>{r[a]=s}),r}}return e.text().then(L)},we=async(e,t)=>{let n=await Ee(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new k(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},te=(e,t)=>(n,{query:r,params:s,body:a,...i}={})=>{s&&Object.entries(s).forEach(([g,O])=>{n=n.replace(`:${g}`,O)});let y=i.headers?.["Content-Type"];if(!y||y==="application/json")try{a=JSON.stringify(a)}catch{}let M=t?.fetcher||globalThis.fetch,S=r?`?${new URLSearchParams(r).toString()}`:"",E=`${e}${n}${S}`,F=a?{"content-type":"application/json",...i.headers}:i.headers,R={...i,method:i.method?.toUpperCase()||"GET",headers:F,body:a},p=()=>M(E,R).then(g=>we(g,p));return p()};0&&(module.exports={edenFetch,edenTreaty,treaty});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{b as t}from"./chunk-FOFYS2DG.mjs";import{a as e,b as r}from"./chunk-VA7FGDJH.mjs";import"./chunk-HUZ6GXDC.mjs";export{r as edenFetch,t as edenTreaty,e as treaty};
1
+ import{b as r}from"./chunk-2IHGLN7W.mjs";import{b as e}from"./chunk-RPZULI5W.mjs";import{a as t}from"./chunk-YAG46HFR.mjs";import"./chunk-XYW4OUFN.mjs";export{t as edenFetch,r as edenTreaty,e as treaty};
@@ -1,4 +1,3 @@
1
- /// <reference lib="dom" />
2
1
  import { Elysia } from 'elysia';
3
2
  import type { EdenWS } from './index';
4
3
  import type { IsUnknown, IsNever, MapError, Prettify } from '../types';
@@ -1,2 +1 @@
1
1
  export declare const composePath: (domain: string, path: string, query: Record<string, string> | undefined) => string;
2
- export declare const isNumericString: (message: string) => boolean;
package/dist/treaty.d.mts CHANGED
@@ -1,7 +1,5 @@
1
1
  import { Elysia, InputSchema } from 'elysia';
2
- import { P as Prettify, a as IsUnknown, M as MapError, I as IsNever, E as EdenFetchError } from './types-DcP_1Cpm.js';
3
-
4
- /// <reference lib="dom" />
2
+ import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-DNydNaKe.mjs';
5
3
 
6
4
  type Files = File | FileList;
7
5
  type Replace<RecordType, TargetType, GenericType> = {
package/dist/treaty.d.ts CHANGED
@@ -1,7 +1,5 @@
1
1
  import { Elysia, InputSchema } from 'elysia';
2
- import { P as Prettify, a as IsUnknown, M as MapError, I as IsNever, E as EdenFetchError } from './types-DcP_1Cpm.js';
3
-
4
- /// <reference lib="dom" />
2
+ import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-DNydNaKe.js';
5
3
 
6
4
  type Files = File | FileList;
7
5
  type Replace<RecordType, TargetType, GenericType> = {
@@ -1 +1 @@
1
- "use strict";var Eden=(()=>{var $=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var n in e)$(t,n,{get:e[n],enumerable:!0})},G=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of H(e))!U.call(t,a)&&a!==n&&$(t,a,{get:()=>e[a],enumerable:!(r=B(e,a))||r.enumerable});return t};var _=t=>G($({},"__esModule",{value:!0}),t);var X={};V(X,{EdenWS:()=>S,edenTreaty:()=>Q});var w=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var K=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${t}${e}?${r.slice(0,-1)}`},O=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var F=typeof FileList>"u",M=t=>F?t instanceof Blob:t instanceof FileList||t instanceof File,z=t=>{if(!t)return!1;for(let e in t){if(M(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>M(n)))return!0}return!1},R=t=>F?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(r)},n.readAsArrayBuffer(t)}),S=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(n=>this.send(n)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,n,r){return this.addEventListener(e,n,r)}off(e,n,r){return this.ws.removeEventListener(e,n,r),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,r){return this.ws.addEventListener(e,a=>{if(e==="message"){let s=a.data.toString(),l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else O(s)?s=+s:s==="true"?s=!0:s==="false"&&(s=!1);n({...a,data:s})}else n(a)},r),this}removeEventListener(e,n,r){return this.off(e,n,r),this}close(){return this.ws.close(),this}},N=(t,e="",n)=>new Proxy(()=>{},{get(r,a,s){return N(t,`${e}/${a.toString()}`,n)},apply(r,a,[s,l={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:j,$fetch:L,$headers:I,$transform:g,getRaw:P,...C}=s??{};y??=C;let v=e.lastIndexOf("/"),E=e.slice(v+1).toUpperCase(),x=K(t,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},j)),q=n.fetcher??fetch,p=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,A=g?Array.isArray(g)?g:[g]:void 0;return A&&(p?p=A.concat(p):p=A),E==="SUBSCRIBE"?new S(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async D=>{let i,W={...n.$fetch?.headers,...L?.headers,...l.headers,...I};if(E!=="GET"&&E!=="HEAD"){i=Object.keys(y).length||Array.isArray(y)?y:void 0;let o=i&&(typeof i=="object"||Array.isArray(y));if(o&&z(i)){let h=new FormData;for(let[m,f]of Object.entries(i))if(F)h.append(m,f);else if(f instanceof File)h.append(m,await R(f));else if(f instanceof FileList)for(let d=0;d<f.length;d++)h.append(m,await R(f[d]));else if(Array.isArray(f))for(let d=0;d<f.length;d++){let T=f[d];h.append(m,T instanceof File?await R(T):T)}else h.append(m,f);i=h}else i!=null&&(W["content-type"]=o?"application/json":"text/plain",i=o?JSON.stringify(i):y)}let c=await q(x,{method:E,body:i,...n.$fetch,...l.fetch,...L,headers:W}),b;if(D.getRaw)return c;switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":b=await c.json();break;default:b=await c.text().then(o=>O(o)?+o:o==="true"?!0:o==="false"?!1:o)}let J=c.status>=300||c.status<200?new w(c.status,b):null,k={data:b,error:J,response:c,status:c.status,headers:c.headers};if(p)for(let o of p){let u=o(k);u instanceof Promise&&(u=await u),u!=null&&(k=u)}return k})({getRaw:P})}}),Q=(t,e={fetcher:fetch})=>new Proxy({},{get(n,r){return N(t,r,e)}});return _(X);})();
1
+ "use strict";var Eden=(()=>{var v=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var U=(t,e)=>{for(var n in e)v(t,n,{get:e[n],enumerable:!0})},_=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of G(e))!H.call(t,s)&&s!==n&&v(t,s,{get:()=>e[s],enumerable:!(r=B(e,s))||r.enumerable});return t};var z=t=>_(v({},"__esModule",{value:!0}),t);var ae={};U(ae,{EdenWS:()=>b,edenTreaty:()=>se});var S=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var L=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let r="";for(let[s,i]of Object.entries(n))r+=`${s}=${i}&`;return`${t}${e}?${r.slice(0,-1)}`};var Q=/(\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))/,X=/(?: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\([^)]+\)/,Y=/^(?:(?:(?:(?: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)?)?$/,ee=t=>t.trim().length!==0&&!Number.isNaN(Number(t)),N=t=>{if(typeof t!="string")return null;let e=t.replace(/"/g,"");if(Q.test(e)||X.test(e)||Y.test(e)){let n=new Date(e);if(!Number.isNaN(n.getTime()))return n}return null},te=t=>{let e=t.charCodeAt(0),n=t.charCodeAt(t.length-1);return e===123&&n===125||e===91&&n===93},ne=t=>JSON.parse(t,(e,n)=>{let r=N(n);return r||n}),$=t=>{if(!t)return t;if(ee(t))return+t;if(t==="true")return!0;if(t==="false")return!1;let e=N(t);if(e)return e;if(te(t))try{return ne(t)}catch{}return t},K=t=>{let e=t.data.toString();return e==="null"?null:$(e)};var M=typeof FileList>"u",j=t=>M?t instanceof Blob:t instanceof FileList||t instanceof File,re=t=>{if(!t)return!1;for(let e in t){if(j(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>j(n)))return!0}return!1},F=t=>M?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(r)},n.readAsArrayBuffer(t)}),b=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(n=>this.send(n)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,n,r){return this.addEventListener(e,n,r)}off(e,n,r){return this.ws.removeEventListener(e,n,r),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,r){return this.ws.addEventListener(e,s=>{if(e==="message"){let i=K(s);n({...s,data:i})}else n(s)},r),this}removeEventListener(e,n,r){return this.off(e,n,r),this}close(){return this.ws.close(),this}},D=(t,e="",n)=>new Proxy(()=>{},{get(r,s,i){return D(t,`${e}/${s.toString()}`,n)},apply(r,s,[i,w={}]=[{},{}]){let c=i!==void 0&&(typeof i!="object"||Array.isArray(i))?i:void 0,{$query:I,$fetch:R,$headers:P,$transform:g,getRaw:C,...J}=i??{};c??=J;let x=e.lastIndexOf("/"),m=e.slice(x+1).toUpperCase(),A=L(t,x===-1?"/":e.slice(0,x),Object.assign(w.query??{},I)),q=n.fetcher??fetch,u=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,T=g?Array.isArray(g)?g:[g]:void 0;return T&&(u?u=T.concat(u):u=T),m==="SUBSCRIBE"?new b(A.replace(/^([^]+):\/\//,A.startsWith("https://")?"wss://":"ws://")):(async V=>{let a,W={...n.$fetch?.headers,...R?.headers,...w.headers,...P};if(m!=="GET"&&m!=="HEAD"){a=Object.keys(c).length||Array.isArray(c)?c:void 0;let l=a&&(typeof a=="object"||Array.isArray(c));if(l&&re(a)){let p=new FormData;for(let[h,d]of Object.entries(a))if(M)p.append(h,d);else if(d instanceof File)p.append(h,await F(d));else if(d instanceof FileList)for(let y=0;y<d.length;y++)p.append(h,await F(d[y]));else if(Array.isArray(d))for(let y=0;y<d.length;y++){let O=d[y];p.append(h,O instanceof File?await F(O):O)}else p.append(h,d);a=p}else a!=null&&(W["content-type"]=l?"application/json":"text/plain",a=l?JSON.stringify(a):c)}let o=await q(A,{method:m,body:a,...n.$fetch,...w.fetch,...R,headers:W}),E;if(V.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":E=await o.json();break;default:E=await o.text().then($)}let Z=o.status>=300||o.status<200?new S(o.status,E):null,k={data:E,error:Z,response:o,status:o.status,headers:o.headers};if(u)for(let l of u){let f=l(k);f instanceof Promise&&(f=await f),f!=null&&(k=f)}return k})({getRaw:C})}}),se=(t,e={fetcher:fetch})=>new Proxy({},{get(n,r){return D(t,r,e)}});return z(ae);})();
package/dist/treaty.js CHANGED
@@ -1 +1 @@
1
- "use strict";var $=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var U=Object.prototype.hasOwnProperty;var V=(t,e)=>{for(var n in e)$(t,n,{get:e[n],enumerable:!0})},G=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of H(e))!U.call(t,a)&&a!==n&&$(t,a,{get:()=>e[a],enumerable:!(r=B(e,a))||r.enumerable});return t};var _=t=>G($({},"__esModule",{value:!0}),t);var X={};V(X,{EdenWS:()=>S,edenTreaty:()=>Q});module.exports=_(X);var w=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var K=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${t}${e}?${r.slice(0,-1)}`},O=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var F=typeof FileList>"u",M=t=>F?t instanceof Blob:t instanceof FileList||t instanceof File,z=t=>{if(!t)return!1;for(let e in t){if(M(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>M(n)))return!0}return!1},R=t=>F?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(r)},n.readAsArrayBuffer(t)}),S=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(n=>this.send(n)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,n,r){return this.addEventListener(e,n,r)}off(e,n,r){return this.ws.removeEventListener(e,n,r),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,r){return this.ws.addEventListener(e,a=>{if(e==="message"){let s=a.data.toString(),l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else O(s)?s=+s:s==="true"?s=!0:s==="false"&&(s=!1);n({...a,data:s})}else n(a)},r),this}removeEventListener(e,n,r){return this.off(e,n,r),this}close(){return this.ws.close(),this}},N=(t,e="",n)=>new Proxy(()=>{},{get(r,a,s){return N(t,`${e}/${a.toString()}`,n)},apply(r,a,[s,l={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:j,$fetch:L,$headers:I,$transform:g,getRaw:P,...C}=s??{};y??=C;let v=e.lastIndexOf("/"),E=e.slice(v+1).toUpperCase(),x=K(t,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},j)),q=n.fetcher??fetch,p=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,A=g?Array.isArray(g)?g:[g]:void 0;return A&&(p?p=A.concat(p):p=A),E==="SUBSCRIBE"?new S(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async D=>{let i,W={...n.$fetch?.headers,...L?.headers,...l.headers,...I};if(E!=="GET"&&E!=="HEAD"){i=Object.keys(y).length||Array.isArray(y)?y:void 0;let o=i&&(typeof i=="object"||Array.isArray(y));if(o&&z(i)){let h=new FormData;for(let[m,f]of Object.entries(i))if(F)h.append(m,f);else if(f instanceof File)h.append(m,await R(f));else if(f instanceof FileList)for(let d=0;d<f.length;d++)h.append(m,await R(f[d]));else if(Array.isArray(f))for(let d=0;d<f.length;d++){let T=f[d];h.append(m,T instanceof File?await R(T):T)}else h.append(m,f);i=h}else i!=null&&(W["content-type"]=o?"application/json":"text/plain",i=o?JSON.stringify(i):y)}let c=await q(x,{method:E,body:i,...n.$fetch,...l.fetch,...L,headers:W}),b;if(D.getRaw)return c;switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":b=await c.json();break;default:b=await c.text().then(o=>O(o)?+o:o==="true"?!0:o==="false"?!1:o)}let J=c.status>=300||c.status<200?new w(c.status,b):null,k={data:b,error:J,response:c,status:c.status,headers:c.headers};if(p)for(let o of p){let u=o(k);u instanceof Promise&&(u=await u),u!=null&&(k=u)}return k})({getRaw:P})}}),Q=(t,e={fetcher:fetch})=>new Proxy({},{get(n,r){return N(t,r,e)}});0&&(module.exports={EdenWS,edenTreaty});
1
+ "use strict";var v=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var G=Object.getOwnPropertyNames;var H=Object.prototype.hasOwnProperty;var U=(t,e)=>{for(var n in e)v(t,n,{get:e[n],enumerable:!0})},_=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of G(e))!H.call(t,s)&&s!==n&&v(t,s,{get:()=>e[s],enumerable:!(r=B(e,s))||r.enumerable});return t};var z=t=>_(v({},"__esModule",{value:!0}),t);var ae={};U(ae,{EdenWS:()=>b,edenTreaty:()=>se});module.exports=z(ae);var S=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var L=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let r="";for(let[s,i]of Object.entries(n))r+=`${s}=${i}&`;return`${t}${e}?${r.slice(0,-1)}`};var Q=/(\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))/,X=/(?: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\([^)]+\)/,Y=/^(?:(?:(?:(?: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)?)?$/,ee=t=>t.trim().length!==0&&!Number.isNaN(Number(t)),N=t=>{if(typeof t!="string")return null;let e=t.replace(/"/g,"");if(Q.test(e)||X.test(e)||Y.test(e)){let n=new Date(e);if(!Number.isNaN(n.getTime()))return n}return null},te=t=>{let e=t.charCodeAt(0),n=t.charCodeAt(t.length-1);return e===123&&n===125||e===91&&n===93},ne=t=>JSON.parse(t,(e,n)=>{let r=N(n);return r||n}),$=t=>{if(!t)return t;if(ee(t))return+t;if(t==="true")return!0;if(t==="false")return!1;let e=N(t);if(e)return e;if(te(t))try{return ne(t)}catch{}return t},K=t=>{let e=t.data.toString();return e==="null"?null:$(e)};var M=typeof FileList>"u",j=t=>M?t instanceof Blob:t instanceof FileList||t instanceof File,re=t=>{if(!t)return!1;for(let e in t){if(j(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>j(n)))return!0}return!1},F=t=>M?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(r)},n.readAsArrayBuffer(t)}),b=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(n=>this.send(n)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,n,r){return this.addEventListener(e,n,r)}off(e,n,r){return this.ws.removeEventListener(e,n,r),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,r){return this.ws.addEventListener(e,s=>{if(e==="message"){let i=K(s);n({...s,data:i})}else n(s)},r),this}removeEventListener(e,n,r){return this.off(e,n,r),this}close(){return this.ws.close(),this}},D=(t,e="",n)=>new Proxy(()=>{},{get(r,s,i){return D(t,`${e}/${s.toString()}`,n)},apply(r,s,[i,w={}]=[{},{}]){let c=i!==void 0&&(typeof i!="object"||Array.isArray(i))?i:void 0,{$query:I,$fetch:R,$headers:P,$transform:g,getRaw:C,...J}=i??{};c??=J;let x=e.lastIndexOf("/"),m=e.slice(x+1).toUpperCase(),A=L(t,x===-1?"/":e.slice(0,x),Object.assign(w.query??{},I)),q=n.fetcher??fetch,u=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,T=g?Array.isArray(g)?g:[g]:void 0;return T&&(u?u=T.concat(u):u=T),m==="SUBSCRIBE"?new b(A.replace(/^([^]+):\/\//,A.startsWith("https://")?"wss://":"ws://")):(async V=>{let a,W={...n.$fetch?.headers,...R?.headers,...w.headers,...P};if(m!=="GET"&&m!=="HEAD"){a=Object.keys(c).length||Array.isArray(c)?c:void 0;let l=a&&(typeof a=="object"||Array.isArray(c));if(l&&re(a)){let p=new FormData;for(let[h,d]of Object.entries(a))if(M)p.append(h,d);else if(d instanceof File)p.append(h,await F(d));else if(d instanceof FileList)for(let y=0;y<d.length;y++)p.append(h,await F(d[y]));else if(Array.isArray(d))for(let y=0;y<d.length;y++){let O=d[y];p.append(h,O instanceof File?await F(O):O)}else p.append(h,d);a=p}else a!=null&&(W["content-type"]=l?"application/json":"text/plain",a=l?JSON.stringify(a):c)}let o=await q(A,{method:m,body:a,...n.$fetch,...w.fetch,...R,headers:W}),E;if(V.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":E=await o.json();break;default:E=await o.text().then($)}let Z=o.status>=300||o.status<200?new S(o.status,E):null,k={data:E,error:Z,response:o,status:o.status,headers:o.headers};if(u)for(let l of u){let f=l(k);f instanceof Promise&&(f=await f),f!=null&&(k=f)}return k})({getRaw:C})}}),se=(t,e={fetcher:fetch})=>new Proxy({},{get(n,r){return D(t,r,e)}});0&&(module.exports={EdenWS,edenTreaty});
package/dist/treaty.mjs CHANGED
@@ -1 +1 @@
1
- import{a,b}from"./chunk-FOFYS2DG.mjs";import"./chunk-HUZ6GXDC.mjs";export{a as EdenWS,b as edenTreaty};
1
+ import{a,b}from"./chunk-2IHGLN7W.mjs";import"./chunk-XYW4OUFN.mjs";export{a as EdenWS,b as edenTreaty};
@@ -1,7 +1,5 @@
1
1
  import type { Elysia } from 'elysia';
2
2
  import type { Treaty } from './types';
3
- export declare const isISO8601: RegExp;
4
- export declare const isFormalDate: RegExp;
5
- export declare const isShortenDate: RegExp;
3
+ export declare function streamResponse(response: Response): AsyncGenerator<any, void, unknown>;
6
4
  export declare const treaty: <const App extends Elysia<any, any, any, any, any, any, any, any>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
7
5
  export type { Treaty };
@@ -1,5 +1,3 @@
1
- /// <reference types="bun-types" />
2
- /// <reference lib="dom" />
3
1
  import type { Elysia } from 'elysia';
4
2
  import { EdenWS } from './ws';
5
3
  import type { IsNever, Prettify } from '../types';
@@ -7,6 +5,9 @@ type Files = File | FileList;
7
5
  type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
8
6
  [K in keyof RecordType]: RecordType[K] extends Blob | Blob[] ? Files : RecordType[K];
9
7
  } & {};
8
+ type ReplaceGeneratorWithAsyncGenerator<in out RecordType extends Record<string, unknown>> = {
9
+ [K in keyof RecordType]: RecordType[K] extends Generator<infer A, infer B, infer C> ? AsyncGenerator<A, B, C> : RecordType[K];
10
+ } & {};
10
11
  type MaybeArray<T> = T | T[];
11
12
  type MaybePromise<T> = T | Promise<T>;
12
13
  export declare namespace Treaty {
@@ -39,7 +40,7 @@ export declare namespace Treaty {
39
40
  query?: Record<string, unknown>;
40
41
  } : {
41
42
  query: Query;
42
- }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : never : CreateParams<Route[K]>;
43
+ }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : never : CreateParams<Route[K]>;
43
44
  };
44
45
  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
45
46
  ((params: {
@@ -53,7 +54,7 @@ export declare namespace Treaty {
53
54
  onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
54
55
  keepDomain?: boolean;
55
56
  }
56
- type TreatyResponse<Res extends Record<number, unknown>> = {
57
+ export type TreatyResponse<Res extends Record<number, unknown>> = {
57
58
  data: Res[200];
58
59
  error: null;
59
60
  response: Response;
@@ -0,0 +1,102 @@
1
+ import { InputSchema, Elysia } from 'elysia';
2
+ import { P as Prettify, a as IsNever } from './types-DNydNaKe.mjs';
3
+
4
+ declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
5
+ url: string;
6
+ ws: WebSocket;
7
+ constructor(url: string);
8
+ send(data: Schema['body'] | Schema['body'][]): this;
9
+ on<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
10
+ off<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
11
+ subscribe(onMessage: (event: Treaty.WSEvent<'message', Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
12
+ addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
13
+ removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
14
+ close(): this;
15
+ }
16
+
17
+ type Files = File | FileList;
18
+ type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
19
+ [K in keyof RecordType]: RecordType[K] extends Blob | Blob[] ? Files : RecordType[K];
20
+ } & {};
21
+ type ReplaceGeneratorWithAsyncGenerator<in out RecordType extends Record<string, unknown>> = {
22
+ [K in keyof RecordType]: RecordType[K] extends Generator<infer A, infer B, infer C> ? AsyncGenerator<A, B, C> : RecordType[K];
23
+ } & {};
24
+ type MaybeArray<T> = T | T[];
25
+ type MaybePromise<T> = T | Promise<T>;
26
+ declare namespace Treaty {
27
+ interface TreatyParam {
28
+ fetch?: RequestInit;
29
+ }
30
+ export type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
31
+ _routes: infer Schema extends Record<string, any>;
32
+ } ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
33
+ export type Sign<in out Route extends Record<string, any>> = {
34
+ [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? (undefined extends Route['subscribe']['headers'] ? {
35
+ headers?: Record<string, unknown>;
36
+ } : {
37
+ headers: Route['subscribe']['headers'];
38
+ }) & (undefined extends Route['subscribe']['query'] ? {
39
+ query?: Record<string, unknown>;
40
+ } : {
41
+ query: Route['subscribe']['query'];
42
+ }) extends infer Param ? {} extends Param ? (options?: Param) => EdenWS<Route['subscribe']> : (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
43
+ body: infer Body;
44
+ headers: infer Headers;
45
+ params: any;
46
+ query: infer Query;
47
+ response: infer Response extends Record<number, unknown>;
48
+ } ? (undefined extends Headers ? {
49
+ headers?: Record<string, unknown>;
50
+ } : {
51
+ headers: Headers;
52
+ }) & (undefined extends Query ? {
53
+ query?: Record<string, unknown>;
54
+ } : {
55
+ query: Query;
56
+ }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : never : CreateParams<Route[K]>;
57
+ };
58
+ 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
59
+ ((params: {
60
+ [param in Path extends `:${infer Param}` ? Param : never]: string | number;
61
+ }) => Prettify<Sign<Route[Path]>> & CreateParams<Route[Path]>) & Prettify<Sign<Route>> : never;
62
+ export interface Config {
63
+ fetch?: Omit<RequestInit, 'headers' | 'method'>;
64
+ fetcher?: typeof fetch;
65
+ headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => RequestInit['headers'] | void)>;
66
+ onRequest?: MaybeArray<(path: string, options: FetchRequestInit) => MaybePromise<FetchRequestInit | void>>;
67
+ onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
68
+ keepDomain?: boolean;
69
+ }
70
+ export type TreatyResponse<Res extends Record<number, unknown>> = {
71
+ data: Res[200];
72
+ error: null;
73
+ response: Response;
74
+ status: number;
75
+ headers: FetchRequestInit['headers'];
76
+ } | {
77
+ data: null;
78
+ error: Exclude<keyof Res, 200> extends never ? {
79
+ status: unknown;
80
+ value: unknown;
81
+ } : {
82
+ [Status in keyof Res]: {
83
+ status: Status;
84
+ value: Res[Status];
85
+ };
86
+ }[Exclude<keyof Res, 200>];
87
+ response: Response;
88
+ status: number;
89
+ headers: FetchRequestInit['headers'];
90
+ };
91
+ export interface OnMessage<Data = unknown> extends MessageEvent {
92
+ data: Data;
93
+ rawData: MessageEvent['data'];
94
+ }
95
+ export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
96
+ export { };
97
+ }
98
+
99
+ declare function streamResponse(response: Response): AsyncGenerator<any, void, unknown>;
100
+ declare const treaty: <const App extends Elysia<any, any, any, any, any, any, any, any>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
101
+
102
+ export { Treaty, streamResponse, treaty };
@@ -0,0 +1,102 @@
1
+ import { InputSchema, Elysia } from 'elysia';
2
+ import { P as Prettify, a as IsNever } from './types-DNydNaKe.js';
3
+
4
+ declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
5
+ url: string;
6
+ ws: WebSocket;
7
+ constructor(url: string);
8
+ send(data: Schema['body'] | Schema['body'][]): this;
9
+ on<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
10
+ off<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
11
+ subscribe(onMessage: (event: Treaty.WSEvent<'message', Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
12
+ addEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (event: Treaty.WSEvent<K, Schema['response']>) => void, options?: boolean | AddEventListenerOptions): this;
13
+ removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
14
+ close(): this;
15
+ }
16
+
17
+ type Files = File | FileList;
18
+ type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
19
+ [K in keyof RecordType]: RecordType[K] extends Blob | Blob[] ? Files : RecordType[K];
20
+ } & {};
21
+ type ReplaceGeneratorWithAsyncGenerator<in out RecordType extends Record<string, unknown>> = {
22
+ [K in keyof RecordType]: RecordType[K] extends Generator<infer A, infer B, infer C> ? AsyncGenerator<A, B, C> : RecordType[K];
23
+ } & {};
24
+ type MaybeArray<T> = T | T[];
25
+ type MaybePromise<T> = T | Promise<T>;
26
+ declare namespace Treaty {
27
+ interface TreatyParam {
28
+ fetch?: RequestInit;
29
+ }
30
+ export type Create<App extends Elysia<any, any, any, any, any, any, any, any>> = App extends {
31
+ _routes: infer Schema extends Record<string, any>;
32
+ } ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
33
+ export type Sign<in out Route extends Record<string, any>> = {
34
+ [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? (undefined extends Route['subscribe']['headers'] ? {
35
+ headers?: Record<string, unknown>;
36
+ } : {
37
+ headers: Route['subscribe']['headers'];
38
+ }) & (undefined extends Route['subscribe']['query'] ? {
39
+ query?: Record<string, unknown>;
40
+ } : {
41
+ query: Route['subscribe']['query'];
42
+ }) extends infer Param ? {} extends Param ? (options?: Param) => EdenWS<Route['subscribe']> : (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
43
+ body: infer Body;
44
+ headers: infer Headers;
45
+ params: any;
46
+ query: infer Query;
47
+ response: infer Response extends Record<number, unknown>;
48
+ } ? (undefined extends Headers ? {
49
+ headers?: Record<string, unknown>;
50
+ } : {
51
+ headers: Headers;
52
+ }) & (undefined extends Query ? {
53
+ query?: Record<string, unknown>;
54
+ } : {
55
+ query: Query;
56
+ }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Response>>> : never : CreateParams<Route[K]>;
57
+ };
58
+ 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
59
+ ((params: {
60
+ [param in Path extends `:${infer Param}` ? Param : never]: string | number;
61
+ }) => Prettify<Sign<Route[Path]>> & CreateParams<Route[Path]>) & Prettify<Sign<Route>> : never;
62
+ export interface Config {
63
+ fetch?: Omit<RequestInit, 'headers' | 'method'>;
64
+ fetcher?: typeof fetch;
65
+ headers?: MaybeArray<RequestInit['headers'] | ((path: string, options: RequestInit) => RequestInit['headers'] | void)>;
66
+ onRequest?: MaybeArray<(path: string, options: FetchRequestInit) => MaybePromise<FetchRequestInit | void>>;
67
+ onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
68
+ keepDomain?: boolean;
69
+ }
70
+ export type TreatyResponse<Res extends Record<number, unknown>> = {
71
+ data: Res[200];
72
+ error: null;
73
+ response: Response;
74
+ status: number;
75
+ headers: FetchRequestInit['headers'];
76
+ } | {
77
+ data: null;
78
+ error: Exclude<keyof Res, 200> extends never ? {
79
+ status: unknown;
80
+ value: unknown;
81
+ } : {
82
+ [Status in keyof Res]: {
83
+ status: Status;
84
+ value: Res[Status];
85
+ };
86
+ }[Exclude<keyof Res, 200>];
87
+ response: Response;
88
+ status: number;
89
+ headers: FetchRequestInit['headers'];
90
+ };
91
+ export interface OnMessage<Data = unknown> extends MessageEvent {
92
+ data: Data;
93
+ rawData: MessageEvent['data'];
94
+ }
95
+ export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
96
+ export { };
97
+ }
98
+
99
+ declare function streamResponse(response: Response): AsyncGenerator<any, void, unknown>;
100
+ declare const treaty: <const App extends Elysia<any, any, any, any, any, any, any, any>>(domain: string | App, config?: Treaty.Config) => Treaty.Create<App>;
101
+
102
+ export { Treaty, streamResponse, treaty };
@@ -0,0 +1 @@
1
+ "use strict";var Eden=(()=>{var M=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var n in t)M(e,n,{get:t[n],enumerable:!0})},B=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of U(t))!V.call(e,o)&&o!==n&&M(e,o,{get:()=>t[o],enumerable:!(s=H(t,o))||s.enumerable});return e};var Z=e=>B(M({},"__esModule",{value:!0}),e);var re={};$(re,{streamResponse:()=>J,treaty:()=>se});var k=class extends Error{constructor(n,s){super(s+"");this.status=n;this.value=s}};var G=/(\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))/,z=/(?: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\([^)]+\)/,Q=/^(?:(?:(?:(?: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)?)?$/,X=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),K=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(G.test(t)||z.test(t)||Q.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},Y=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},ee=e=>JSON.parse(e,(t,n)=>{let s=K(n);return s||n}),T=e=>{if(!e)return e;if(X(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=K(e);if(t)return t;if(Y(e))try{return ee(e)}catch{}return e},D=e=>{let t=e.data.toString();return t==="null"?null:T(t)};var F=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,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,o=>{if(t==="message"){let f=D(o);n({...o,data:f})}else n(o)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var te=["get","post","put","delete","patch","options","head","connect","subscribe"],I=["localhost","127.0.0.1","0.0.0.0"],j=typeof FileList>"u",q=e=>j?e instanceof Blob:e instanceof FileList||e instanceof File,ne=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},W=e=>j?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),w=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let o of e)if(!Array.isArray(o))s=w(o,t,n,s);else{let f=o[0];if(typeof f=="string")s[f.toLowerCase()]=o[1];else for(let[i,b]of f)s[i.toLowerCase()]=b}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return w(e,t,n,s);let o=e(t,n);return o?w(o,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((f,i)=>{s[i.toLowerCase()]=f}),s;for(let[f,i]of Object.entries(e))s[f.toLowerCase()]=i;return s;default:return s}};async function*J(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:o,value:f}=await n.read();if(o)break;let i=s.decode(f);yield T(i)}}finally{n.releaseLock()}}var x=(e,t,n=[],s)=>new Proxy(()=>{},{get(o,f){return x(e,t,f==="index"?n:[...n,f],s)},apply(o,f,[i,b]){if(!i||b||typeof i=="object"&&Object.keys(i).length!==1||te.includes(n.at(-1))){let C=[...n],E=C.pop(),y="/"+C.join("/"),{fetcher:P=fetch,headers:L,onRequest:p,onResponse:v,fetch:_}=t,S=E==="get"||E==="head"||E==="subscribe";L=w(L,y,b);let N=S?i?.query:b?.query,O="";if(N){let r=(g,h)=>{O+=(O?"&":"?")+`${encodeURIComponent(g)}=${encodeURIComponent(h)}`};for(let[g,h]of Object.entries(N)){if(Array.isArray(h)){for(let c of h)r(g,c);continue}r(g,`${h}`)}}if(E==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||I.find(g=>e.includes(g))?"ws://":"wss://")+y+O;return new F(r)}return(async()=>{let r={method:E?.toUpperCase(),body:i,..._,headers:L};r.headers={...L,...w(S?i?.headers:b?.headers,y,r)};let g=S&&typeof i=="object"?i.fetch:b?.fetch;if(r={...r,...g},S&&delete r.body,p){Array.isArray(p)||(p=[p]);for(let d of p){let a=await d(y,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...w(a.headers,y,r)}})}}if(S&&delete r.body,ne(i)){let d=new FormData;for(let[a,l]of Object.entries(r.body)){if(j){d.append(a,l);continue}if(l instanceof File){d.append(a,await W(l));continue}if(l instanceof FileList){for(let m=0;m<l.length;m++)d.append(a,await W(l[m]));continue}if(Array.isArray(l)){for(let m=0;m<l.length;m++){let R=l[m];d.append(a,R instanceof File?await W(R):R)}continue}d.append(a,l)}r.body=d}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(S&&delete r.body,p){Array.isArray(p)||(p=[p]);for(let d of p){let a=await d(y,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...w(a.headers,y,r)}})}}let h=e+y+O,c=await(s?.handle(new Request(h,r))??P(h,r)),u=null,A=null;if(v){Array.isArray(v)||(v=[v]);for(let d of v)try{let a=await d(c.clone());if(a!=null){u=a;break}}catch(a){a instanceof k?A=a:A=new k(422,a);break}}if(u!==null)return{data:u,error:A,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":u=J(c);break;case"application/json":u=await c.json();break;case"application/octet-stream":u=await c.arrayBuffer();break;case"multipart/form-data":let d=await c.formData();u={},d.forEach((a,l)=>{u[l]=a});break;default:u=await c.text().then(T)}return(c.status>=300||c.status<200)&&(A=new k(c.status,u),u=null),{data:u,error:A,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?x(e,t,[...n,Object.values(i)[0]],s):x(e,t,n)}}),se=(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))),x(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."),x("http://e.ly",t,[],e));return Z(re);})();
@@ -0,0 +1 @@
1
+ "use strict";var M=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var n in t)M(e,n,{get:t[n],enumerable:!0})},B=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of U(t))!V.call(e,o)&&o!==n&&M(e,o,{get:()=>t[o],enumerable:!(s=H(t,o))||s.enumerable});return e};var Z=e=>B(M({},"__esModule",{value:!0}),e);var re={};$(re,{streamResponse:()=>J,treaty:()=>se});module.exports=Z(re);var k=class extends Error{constructor(n,s){super(s+"");this.status=n;this.value=s}};var G=/(\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))/,z=/(?: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\([^)]+\)/,Q=/^(?:(?:(?:(?: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)?)?$/,X=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),K=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(G.test(t)||z.test(t)||Q.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},Y=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},ee=e=>JSON.parse(e,(t,n)=>{let s=K(n);return s||n}),T=e=>{if(!e)return e;if(X(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=K(e);if(t)return t;if(Y(e))try{return ee(e)}catch{}return e},D=e=>{let t=e.data.toString();return t==="null"?null:T(t)};var F=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,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,o=>{if(t==="message"){let f=D(o);n({...o,data:f})}else n(o)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var te=["get","post","put","delete","patch","options","head","connect","subscribe"],I=["localhost","127.0.0.1","0.0.0.0"],j=typeof FileList>"u",q=e=>j?e instanceof Blob:e instanceof FileList||e instanceof File,ne=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},W=e=>j?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),w=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let o of e)if(!Array.isArray(o))s=w(o,t,n,s);else{let f=o[0];if(typeof f=="string")s[f.toLowerCase()]=o[1];else for(let[i,b]of f)s[i.toLowerCase()]=b}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return w(e,t,n,s);let o=e(t,n);return o?w(o,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((f,i)=>{s[i.toLowerCase()]=f}),s;for(let[f,i]of Object.entries(e))s[f.toLowerCase()]=i;return s;default:return s}};async function*J(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:o,value:f}=await n.read();if(o)break;let i=s.decode(f);yield T(i)}}finally{n.releaseLock()}}var x=(e,t,n=[],s)=>new Proxy(()=>{},{get(o,f){return x(e,t,f==="index"?n:[...n,f],s)},apply(o,f,[i,b]){if(!i||b||typeof i=="object"&&Object.keys(i).length!==1||te.includes(n.at(-1))){let C=[...n],E=C.pop(),y="/"+C.join("/"),{fetcher:P=fetch,headers:L,onRequest:p,onResponse:v,fetch:_}=t,S=E==="get"||E==="head"||E==="subscribe";L=w(L,y,b);let N=S?i?.query:b?.query,O="";if(N){let r=(g,h)=>{O+=(O?"&":"?")+`${encodeURIComponent(g)}=${encodeURIComponent(h)}`};for(let[g,h]of Object.entries(N)){if(Array.isArray(h)){for(let c of h)r(g,c);continue}r(g,`${h}`)}}if(E==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||I.find(g=>e.includes(g))?"ws://":"wss://")+y+O;return new F(r)}return(async()=>{let r={method:E?.toUpperCase(),body:i,..._,headers:L};r.headers={...L,...w(S?i?.headers:b?.headers,y,r)};let g=S&&typeof i=="object"?i.fetch:b?.fetch;if(r={...r,...g},S&&delete r.body,p){Array.isArray(p)||(p=[p]);for(let d of p){let a=await d(y,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...w(a.headers,y,r)}})}}if(S&&delete r.body,ne(i)){let d=new FormData;for(let[a,l]of Object.entries(r.body)){if(j){d.append(a,l);continue}if(l instanceof File){d.append(a,await W(l));continue}if(l instanceof FileList){for(let m=0;m<l.length;m++)d.append(a,await W(l[m]));continue}if(Array.isArray(l)){for(let m=0;m<l.length;m++){let R=l[m];d.append(a,R instanceof File?await W(R):R)}continue}d.append(a,l)}r.body=d}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(S&&delete r.body,p){Array.isArray(p)||(p=[p]);for(let d of p){let a=await d(y,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...w(a.headers,y,r)}})}}let h=e+y+O,c=await(s?.handle(new Request(h,r))??P(h,r)),u=null,A=null;if(v){Array.isArray(v)||(v=[v]);for(let d of v)try{let a=await d(c.clone());if(a!=null){u=a;break}}catch(a){a instanceof k?A=a:A=new k(422,a);break}}if(u!==null)return{data:u,error:A,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":u=J(c);break;case"application/json":u=await c.json();break;case"application/octet-stream":u=await c.arrayBuffer();break;case"multipart/form-data":let d=await c.formData();u={},d.forEach((a,l)=>{u[l]=a});break;default:u=await c.text().then(T)}return(c.status>=300||c.status<200)&&(A=new k(c.status,u),u=null),{data:u,error:A,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?x(e,t,[...n,Object.values(i)[0]],s):x(e,t,n)}}),se=(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))),x(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."),x("http://e.ly",t,[],e));0&&(module.exports={streamResponse,treaty});
@@ -0,0 +1 @@
1
+ import{a,b}from"./chunk-RPZULI5W.mjs";import"./chunk-XYW4OUFN.mjs";export{a as streamResponse,b as treaty};
@@ -40,4 +40,4 @@ type TreatyToPath<T, Path extends string = ''> = UnionToIntersect<T extends Reco
40
40
  } : TreatyToPath<T[K], `${Path}/${K & string}`>;
41
41
  }[keyof T] : {}>;
42
42
 
43
- export { EdenFetchError as E, type IsNever as I, type MapError as M, type Prettify as P, type TreatyToPath as T, type IsUnknown as a };
43
+ export { EdenFetchError as E, type IsUnknown as I, type MapError as M, type Prettify as P, type TreatyToPath as T, type IsNever as a };
@@ -0,0 +1,43 @@
1
+ declare class EdenFetchError<Status extends number = number, Value = unknown> extends Error {
2
+ status: Status;
3
+ value: Value;
4
+ constructor(status: Status, value: Value);
5
+ }
6
+
7
+ type Range<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
8
+ type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc['length']]>;
9
+ type ErrorRange = Range<300, 599>;
10
+ type MapError<T extends Record<number, unknown>> = [
11
+ {
12
+ [K in keyof T]-?: K extends ErrorRange ? K : never;
13
+ }[keyof T]
14
+ ] extends [infer A extends number] ? {
15
+ [K in A]: EdenFetchError<K, T[K]>;
16
+ }[A] : false;
17
+ type UnionToIntersect<U> = (U extends any ? (arg: U) => any : never) extends (arg: infer I) => void ? I : never;
18
+ type IsAny<T> = 0 extends 1 & T ? true : false;
19
+ type IsNever<T> = [T] extends [never] ? true : false;
20
+ type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
21
+ type AnyTypedRoute = {
22
+ body?: unknown;
23
+ headers?: unknown;
24
+ query?: unknown;
25
+ params?: unknown;
26
+ response: Record<number, unknown>;
27
+ };
28
+ type Prettify<T> = {
29
+ [K in keyof T]: T[K];
30
+ } & {};
31
+ type TreatyToPath<T, Path extends string = ''> = UnionToIntersect<T extends Record<string, unknown> ? {
32
+ [K in keyof T]: T[K] extends AnyTypedRoute ? {
33
+ [path in Path]: {
34
+ [method in K]: T[K];
35
+ };
36
+ } : unknown extends T[K] ? {
37
+ [path in Path]: {
38
+ [method in K]: T[K];
39
+ };
40
+ } : TreatyToPath<T[K], `${Path}/${K & string}`>;
41
+ }[keyof T] : {}>;
42
+
43
+ export { EdenFetchError as E, type IsUnknown as I, type MapError as M, type Prettify as P, type TreatyToPath as T, type IsNever as a };
@@ -0,0 +1,6 @@
1
+ export declare const isNumericString: (message: string) => boolean;
2
+ export declare const parseStringifiedDate: (value: any) => Date | null;
3
+ export declare const isStringifiedObject: (value: string) => boolean;
4
+ export declare const parseStringifiedObject: (data: string) => any;
5
+ export declare const parseStringifiedValue: (value: string) => any;
6
+ export declare const parseMessageEvent: (event: MessageEvent) => any;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elysiajs/eden",
3
- "version": "1.0.14",
3
+ "version": "1.1.0-rc.0",
4
4
  "description": "Fully type-safe Elysia client",
5
5
  "author": {
6
6
  "name": "saltyAom",
@@ -25,6 +25,13 @@
25
25
  "default": "./dist/treaty.js",
26
26
  "types": "./dist/treaty/index.d.ts"
27
27
  },
28
+ "./treaty2": {
29
+ "require": "./dist/2.js",
30
+ "import": "./dist/treaty2.mjs",
31
+ "node": "./dist/treaty2.js",
32
+ "default": "./dist/treaty2.js",
33
+ "types": "./dist/treaty2/index.d.ts"
34
+ },
28
35
  "./fetch": {
29
36
  "require": "./dist/fetch.js",
30
37
  "import": "./dist/fetch.mjs",
@@ -54,27 +61,25 @@
54
61
  "release": "npm run build && npm run test && npm publish --access public"
55
62
  },
56
63
  "peerDependencies": {
57
- "elysia": ">= 1.0.22"
64
+ "elysia": ">= 1.1.0-rc.2"
58
65
  },
59
66
  "devDependencies": {
60
67
  "@elysiajs/cors": "0.7.0",
61
68
  "@types/bun": "^1.0.3",
62
69
  "@types/node": "^18.15.5",
63
- "elysia": "^1.0.22",
70
+ "elysia": "^1.1.0-rc.3",
64
71
  "esbuild": "^0.19.3",
65
72
  "eslint": "^8.26.0",
66
73
  "expect-type": "^0.17.3",
67
74
  "rimraf": "^4.4.1",
68
- "tsup": "^7.2.0",
69
- "typescript": "^5.4.5"
75
+ "tsup": "^8.1.0",
76
+ "typescript": "^5.4.5",
77
+ "vite": "^5.3.3"
70
78
  },
71
79
  "prettier": {
72
80
  "semi": false,
73
81
  "tabWidth": 4,
74
82
  "singleQuote": true,
75
83
  "trailingComma": "none"
76
- },
77
- "dependencies": {
78
- "@elysiajs/stream": "^1.0.2"
79
84
  }
80
85
  }
@@ -1 +0,0 @@
1
- import{a as W,b as x,c as K}from"./chunk-HUZ6GXDC.mjs";var R=typeof FileList>"u",$=n=>R?n instanceof Blob:n instanceof FileList||n instanceof File,J=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},T=n=>R?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{let s=new File([t.result],n.name,{lastModified:n.lastModified,type:n.type});e(s)},t.readAsArrayBuffer(n)}),F=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,l=>{if(e==="message"){let r=l.data.toString(),u=r.charCodeAt(0);if(u===47||u===123)try{r=JSON.parse(r)}catch{}else x(r)?r=+r:r==="true"?r=!0:r==="false"&&(r=!1);t({...l,data:r})}else t(l)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},M=(n,e="",t)=>new Proxy(()=>{},{get(s,l,r){return M(n,`${e}/${l.toString()}`,t)},apply(s,l,[r,u={}]=[{},{}]){let y=r!==void 0&&(typeof r!="object"||Array.isArray(r))?r:void 0,{$query:I,$fetch:O,$headers:j,$transform:E,getRaw:C,...P}=r??{};y??=P;let b=e.lastIndexOf("/"),g=e.slice(b+1).toUpperCase(),S=W(n,b===-1?"/":e.slice(0,b),Object.assign(u.query??{},I)),q=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,v=E?Array.isArray(E)?E:[E]:void 0;return v&&(p?p=v.concat(p):p=v),g==="SUBSCRIBE"?new F(S.replace(/^([^]+):\/\//,S.startsWith("https://")?"wss://":"ws://")):(async N=>{let a,L={...t.$fetch?.headers,...O?.headers,...u.headers,...j};if(g!=="GET"&&g!=="HEAD"){a=Object.keys(y).length||Array.isArray(y)?y:void 0;let i=a&&(typeof a=="object"||Array.isArray(y));if(i&&J(a)){let h=new FormData;for(let[m,f]of Object.entries(a))if(R)h.append(m,f);else if(f instanceof File)h.append(m,await T(f));else if(f instanceof FileList)for(let d=0;d<f.length;d++)h.append(m,await T(f[d]));else if(Array.isArray(f))for(let d=0;d<f.length;d++){let k=f[d];h.append(m,k instanceof File?await T(k):k)}else h.append(m,f);a=h}else a!=null&&(L["content-type"]=i?"application/json":"text/plain",a=i?JSON.stringify(a):y)}let o=await q(S,{method:g,body:a,...t.$fetch,...u.fetch,...O,headers:L}),w;if(N.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":w=await o.json();break;default:w=await o.text().then(i=>x(i)?+i:i==="true"?!0:i==="false"?!1:i)}let D=o.status>=300||o.status<200?new K(o.status,w):null,A={data:w,error:D,response:o,status:o.status,headers:o.headers};if(p)for(let i of p){let c=i(A);c instanceof Promise&&(c=await c),c!=null&&(A=c)}return A})({getRaw:C})}}),G=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return M(n,s,e)}});export{F as a,G as b};
@@ -1 +0,0 @@
1
- var c=(t,e,r)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!r||!Object.keys(r).length)return`${t}${e}`;let s="";for(let[i,u]of Object.entries(r))s+=`${i}=${u}&`;return`${t}${e}?${s.slice(0,-1)}`},o=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var n=class extends Error{constructor(r,s){super(s+"");this.status=r;this.value=s}};export{c as a,o as b,n as c};
@@ -1 +0,0 @@
1
- import{b as F,c as T}from"./chunk-HUZ6GXDC.mjs";var J=/\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{3}Z/,N=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,i){return this.addEventListener(t,n,i)}off(t,n,i){return this.ws.removeEventListener(t,n,i),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,i){return this.ws.addEventListener(t,f=>{if(t==="message"){let r=f.data.toString(),a=r.charCodeAt(0),g=r.charCodeAt(r.length-1);if(a===91||a===123)try{r=JSON.parse(r,(x,m)=>{if(typeof m=="string"&&J.test(m)){let y=new Date(m);if(!Number.isNaN(y.getTime()))return y}return m})}catch{}else F(r)?r=+r:r==="true"?r=!0:r==="false"?r=!1:r==="null"?r=null:a===34&&g===34&&J.test(r)&&(r=new Date(r.substring(1,r.length-1)));n({...f,data:r})}else n(f)},i),this}removeEventListener(t,n,i){return this.off(t,n,i),this}close(){return this.ws.close(),this}};var $=["get","post","put","delete","patch","options","head","connect","subscribe"],U=["localhost","127.0.0.1","0.0.0.0"],D=typeof FileList>"u",M=/(\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))/,K=/(?: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\([^)]+\)/,I=/^(?:(?:(?:(?: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)?)?$/,P=e=>D?e instanceof Blob:e instanceof FileList||e instanceof File,B=e=>{if(!e)return!1;for(let t in e)if(P(e[t])||Array.isArray(e[t])&&e[t].find(P))return!0;return!1},R=e=>D?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let i=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(i)},n.readAsArrayBuffer(e)}),O=(e,t,n={},i={})=>{if(Array.isArray(e)){for(let f of e)if(!Array.isArray(f))i=O(f,t,n,i);else{let r=f[0];if(typeof r=="string")i[r.toLowerCase()]=f[1];else for(let[a,g]of r)i[a.toLowerCase()]=g}return i}if(!e)return i;switch(typeof e){case"function":let f=e(t,n);return f?O(f,t,n,i):i;case"object":if(e instanceof Headers)return e.forEach((r,a)=>{i[a.toLowerCase()]=r}),i;for(let[r,a]of Object.entries(e))i[r.toLowerCase()]=a;default:return i}},C=(e,t,n=[],i)=>new Proxy(()=>{},{get(f,r){return C(e,t,r==="index"?n:[...n,r],i)},apply(f,r,[a,g]){if(!a||g||typeof a=="object"&&Object.keys(a).length!==1||$.includes(n.at(-1))){let x=[...n],m=x.pop(),y="/"+x.join("/"),{fetcher:u=fetch,headers:d,onRequest:w,onResponse:l,fetch:v}=t,E=m==="get"||m==="head"||m==="subscribe";d=O(d,y,g);let q=E?a?.query:g?.query,L="";if(q){let o=(A,k)=>{L+=(L?"&":"?")+`${encodeURIComponent(A)}=${encodeURIComponent(k)}`};for(let[A,k]of Object.entries(q)){if(Array.isArray(k)){for(let p of k)o(A,p);continue}o(A,`${k}`)}}if(m==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||U.find(A=>e.includes(A))?"ws://":"wss://")+y+L;return new N(o)}return(async()=>{let o={method:m?.toUpperCase(),body:a,...v,headers:d};o.headers={...d,...O(E?a?.headers:g?.headers,y,o)};let A=E&&typeof a=="object"?a.fetch:g?.fetch;if(o={...o,...A},E&&delete o.body,w){Array.isArray(w)||(w=[w]);for(let h of w){let s=await h(y,o);typeof s=="object"&&(o={...o,...s,headers:{...o.headers,...O(s.headers,y,o)}})}}if(E&&delete o.body,B(a)){let h=new FormData;for(let[s,c]of Object.entries(o.body)){if(D){h.append(s,c);continue}if(c instanceof File){h.append(s,await R(c));continue}if(c instanceof FileList){for(let S=0;S<c.length;S++)h.append(s,await R(c[S]));continue}if(Array.isArray(c)){for(let S=0;S<c.length;S++){let W=c[S];h.append(s,W instanceof File?await R(W):W)}continue}h.append(s,c)}o.body=h}else typeof a=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(a)):a!=null&&(o.headers["content-type"]="text/plain");if(E&&delete o.body,w){Array.isArray(w)||(w=[w]);for(let h of w){let s=await h(y,o);typeof s=="object"&&(o={...o,...s,headers:{...o.headers,...s.headers}})}}let k=e+y+L,p=await(i?.handle(new Request(k,o))??u(k,o)),b=null,j=null;if(l){Array.isArray(l)||(l=[l]);for(let h of l)try{let s=await h(p.clone());if(s!=null){b=s;break}}catch(s){s instanceof T?j=s:j=new T(422,s);break}}if(b===null){switch(p.headers.get("Content-Type")?.split(";")[0]){case"application/json":b=await p.json();break;case"application/octet-stream":b=await p.arrayBuffer();break;case"multipart/form-data":let h=await p.formData();b={},h.forEach((s,c)=>{b[c]=s});break;default:b=await p.text().then(s=>{if(F(s))return+s;if(s==="true")return!0;if(s==="false")return!1;if(!s)return s;let c=s.replace(/"/g,"");if(M.test(c)||K.test(c)||I.test(c)){let S=new Date(c);if(!Number.isNaN(S.getTime()))return S}return s})}(p.status>=300||p.status<200)&&(j=new T(p.status,b),b=null)}return{data:b,error:j,response:p,status:p.status,headers:p.headers}})()}return typeof a=="object"?C(e,t,[...n,Object.values(a)[0]],i):C(e,t,n)}}),V=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(U.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),C(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."),C("http://e.ly",t,[],e));var re=(e,t)=>(n,{query:i,params:f,body:r,...a}={})=>{f&&Object.entries(f).forEach(([u,d])=>{n=n.replace(`:${u}`,d)});let g=a.headers?.["Content-Type"];if(!g||g==="application/json")try{r=JSON.stringify(r)}catch{}let x=t?.fetcher||globalThis.fetch,m=i?`?${new URLSearchParams(i).toString()}`:"",y=()=>x(e+n+m,{...a,method:a.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...a.headers}:a.headers,body:r}).then(async u=>{let d;switch(u.headers.get("Content-Type")?.split(";")[0]){case"application/json":d=await u.json();break;case"application/octet-stream":d=await u.arrayBuffer();break;case"multipart/form-data":let w=await u.formData();d={},w.forEach((l,v)=>{d[v]=l});break;default:d=await u.text().then(l=>{if(F(l))return+l;if(l==="true")return!0;if(l==="false")return!1;if(!l)return l;let v=l.replace(/"/g,"");if(M.test(v)||K.test(v)||I.test(v)){let E=new Date(v);if(!Number.isNaN(E.getTime()))return E}return l})}return u.status>300?{data:null,status:u.status,headers:u.headers,retry:y,error:new T(u.status,d)}:{data:d,error:null,status:u.status,headers:u.headers,retry:y}});return y()};export{V as a,re as b};