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