@elysiajs/eden 0.7.2 → 0.7.4
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/dist/chunk-2G5RO3ND.mjs +1 -0
- package/dist/chunk-3KYW6H6M.mjs +1 -0
- package/dist/fetch.d.mts +1 -1
- package/dist/fetch.d.ts +1 -1
- package/dist/fetch.global.js +1 -1
- package/dist/fetch.js +1 -1
- package/dist/fetch.mjs +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.global.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/treaty/types.d.ts +21 -6
- package/dist/treaty.d.mts +22 -7
- package/dist/treaty.d.ts +22 -7
- package/dist/treaty.global.js +1 -1
- package/dist/treaty.js +1 -1
- package/dist/treaty.mjs +1 -1
- package/dist/{types-59a29919.d.ts → types-d1b334ad.d.ts} +1 -1
- package/dist/types.d.ts +2 -1
- package/package.json +2 -2
- package/src/fetch/index.ts +1 -0
- package/src/treaty/index.ts +42 -14
- package/src/treaty/types.ts +39 -3
- package/src/types.ts +8 -2
- package/dist/chunk-BYO7CHLQ.mjs +0 -1
- package/dist/chunk-V6QCRD5H.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as L}from"./chunk-Y6SMVGJX.mjs";var T=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let r="";for(let[o,s]of Object.entries(t))r+=`${o}=${s}&`;return`${n}${e}?${r.slice(0,-1)}`};var k=typeof FileList>"u",W=n=>k?n instanceof Blob:n instanceof FileList||n instanceof File,R=n=>{if(!n)return!1;for(let e in n){if(W(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>W(t)))return!0}return!1},F=n=>k?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),w=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,r){return this.addEventListener(e,t,r)}off(e,t,r){return this.ws.removeEventListener(e,t,r),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,r){return this.ws.addEventListener(e,o=>{if(e==="message"){let s=o.data.toString(),u=s.charCodeAt(0);if(u===47||u===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...o,data:s})}else t(o)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},O=(n,e="",t)=>new Proxy(()=>{},{get(r,o,s){return O(n,`${e}/${o.toString()}`,t)},apply(r,o,[{$query:s,$fetch:u,$headers:K,$transform:h,...x}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let g=e.lastIndexOf("/"),m=e.slice(g+1).toUpperCase(),v=T(n,g===-1?"/":e.slice(0,g),s),N=t.fetcher??fetch,y=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,S=h?Array.isArray(h)?h:[h]:void 0;return S&&(y?y=S.concat(y):y=S),m==="SUBSCRIBE"?new w(v.replace(/^([^]+):\/\//,v.startsWith("https://")?"wss://":"ws://")):(async()=>{let f,A={...t.$fetch?.headers,...u?.headers,...K};if(m!=="GET"&&m!=="HEAD"){f=Object.keys(x).length?x:void 0;let i=typeof f=="object";if(i&&R(f)){let p=new FormData;for(let[E,d]of Object.entries(f))if(k)p.append(E,d);else if(d instanceof File)p.append(E,await F(d));else if(d instanceof FileList)for(let b=0;b<d.length;b++)p.append(E,await F(d[b]));else p.append(E,d);f=p}else A["content-type"]=i?"application/json":"text/plain",i&&(f=JSON.stringify(f))}let a=await N(v,{method:m,body:f,...t.$fetch,...u,headers:A}),l;switch(a.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await a.json();break;default:l=await a.text().then(i=>Number.isNaN(+i)?i==="true"?!0:i==="false"?!1:i:+i)}let $=a.status>=300||a.status<200?new L(a.status,l):null;if(y)for(let i of y){let c=i({data:l,status:a.status,headers:a.headers,response:a,error:$});c instanceof Promise&&(c=await c),c!=null&&(l=c)}return{data:l,error:$,response:a,status:a.status,headers:a.headers}})()}}),P=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return O(n,r,e)}});export{w as a,P as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as y}from"./chunk-Y6SMVGJX.mjs";var m=(p,u)=>(s,{query:h,params:i,body:n,...r}={})=>{i&&Object.entries(i).forEach(([e,t])=>{s=s.replace(`:${e}`,t)});let o=r.headers?.["Content-Type"];if(!o||o==="application/json")try{n=JSON.stringify(n)}catch{}let f=u?.fetcher||globalThis.fetch,l=h?`?${new URLSearchParams(h).toString()}`:"",c=()=>f(p+s+l,{...r,method:r.method?.toUpperCase()||"GET",headers:n?{"content-type":"application/json",...r.headers}:r.headers,body:n}).then(async e=>{let t;switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":t=await e.json();break;default:t=await e.text().then(a=>Number.isNaN(+a)?a==="true"?!0:a==="false"?!1:a:+a);break}return e.status>300?{data:null,status:e.status,headers:e.headers,retry:c,error:new y(e.status,t)}:{data:t,error:null,status:e.status,headers:e.headers,retry:c}});return c()};export{m as a};
|
package/dist/fetch.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Elysia } from 'elysia';
|
|
2
|
-
import { a as IsNever, I as IsUnknown, M as MapError, E as EdenFetchError } from './types-
|
|
2
|
+
import { a as IsNever, I as IsUnknown, M as MapError, E as EdenFetchError } from './types-d1b334ad.js';
|
|
3
3
|
|
|
4
4
|
type Prettify<T> = {
|
|
5
5
|
[K in keyof T]: T[K];
|
package/dist/fetch.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Elysia } from 'elysia';
|
|
2
|
-
import { a as IsNever, I as IsUnknown, M as MapError, E as EdenFetchError } from './types-
|
|
2
|
+
import { a as IsNever, I as IsUnknown, M as MapError, E as EdenFetchError } from './types-d1b334ad.js';
|
|
3
3
|
|
|
4
4
|
type Prettify<T> = {
|
|
5
5
|
[K in keyof T]: T[K];
|
package/dist/fetch.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Eden=(()=>{var p=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var
|
|
1
|
+
"use strict";var Eden=(()=>{var p=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var x=(r,e)=>{for(var a in e)p(r,a,{get:e[a],enumerable:!0})},S=(r,e,a,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of E(e))!g.call(r,s)&&s!==a&&p(r,s,{get:()=>e[s],enumerable:!(u=m(e,s))||u.enumerable});return r};var j=r=>S(p({},"__esModule",{value:!0}),r);var b={};x(b,{edenFetch:()=>w});var h=class extends Error{status;value;constructor(e,a){super(),this.status=e,this.value=a}};var w=(r,e)=>(a,{query:u,params:s,body:o,...i}={})=>{s&&Object.entries(s).forEach(([t,n])=>{a=a.replace(`:${t}`,n)});let y=i.headers?.["Content-Type"];if(!y||y==="application/json")try{o=JSON.stringify(o)}catch{}let f=e?.fetcher||globalThis.fetch,d=u?`?${new URLSearchParams(u).toString()}`:"",l=()=>f(r+a+d,{...i,method:i.method?.toUpperCase()||"GET",headers:o?{"content-type":"application/json",...i.headers}:i.headers,body:o}).then(async t=>{let n;switch(t.headers.get("Content-Type")?.split(";")[0]){case"application/json":n=await t.json();break;default:n=await t.text().then(c=>Number.isNaN(+c)?c==="true"?!0:c==="false"?!1:c:+c);break}return t.status>300?{data:null,status:t.status,headers:t.headers,retry:l,error:new h(t.status,n)}:{data:n,error:null,status:t.status,headers:t.headers,retry:l}});return l()};return j(b);})();
|
package/dist/fetch.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var p=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var
|
|
1
|
+
"use strict";var p=Object.defineProperty;var m=Object.getOwnPropertyDescriptor;var E=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var x=(r,e)=>{for(var a in e)p(r,a,{get:e[a],enumerable:!0})},S=(r,e,a,u)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of E(e))!g.call(r,s)&&s!==a&&p(r,s,{get:()=>e[s],enumerable:!(u=m(e,s))||u.enumerable});return r};var j=r=>S(p({},"__esModule",{value:!0}),r);var b={};x(b,{edenFetch:()=>w});module.exports=j(b);var h=class extends Error{status;value;constructor(e,a){super(),this.status=e,this.value=a}};var w=(r,e)=>(a,{query:u,params:s,body:o,...i}={})=>{s&&Object.entries(s).forEach(([t,n])=>{a=a.replace(`:${t}`,n)});let y=i.headers?.["Content-Type"];if(!y||y==="application/json")try{o=JSON.stringify(o)}catch{}let f=e?.fetcher||globalThis.fetch,d=u?`?${new URLSearchParams(u).toString()}`:"",l=()=>f(r+a+d,{...i,method:i.method?.toUpperCase()||"GET",headers:o?{"content-type":"application/json",...i.headers}:i.headers,body:o}).then(async t=>{let n;switch(t.headers.get("Content-Type")?.split(";")[0]){case"application/json":n=await t.json();break;default:n=await t.text().then(c=>Number.isNaN(+c)?c==="true"?!0:c==="false"?!1:c:+c);break}return t.status>300?{data:null,status:t.status,headers:t.headers,retry:l,error:new h(t.status,n)}:{data:n,error:null,status:t.status,headers:t.headers,retry:l}});return l()};0&&(module.exports={edenFetch});
|
package/dist/fetch.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-3KYW6H6M.mjs";import"./chunk-Y6SMVGJX.mjs";export{a as edenFetch};
|
package/dist/index.d.mts
CHANGED
package/dist/index.d.ts
CHANGED
package/dist/index.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Eden=(()=>{var
|
|
1
|
+
"use strict";var Eden=(()=>{var F=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)F(n,t,{get:e[t],enumerable:!0})},D=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of P(e))!I.call(n,a)&&a!==t&&F(n,a,{get:()=>e[a],enumerable:!(s=B(e,a))||s.enumerable});return n};var J=n=>D(F({},"__esModule",{value:!0}),n);var V={};M(V,{edenFetch:()=>R,edenTreaty:()=>j});var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[a,r]of Object.entries(t))s+=`${a}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`};var $=typeof FileList>"u",N=n=>$?n instanceof Blob:n instanceof FileList||n instanceof File,U=n=>{if(!n)return!1;for(let e in n){if(N(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>N(t)))return!0}return!1},C=n=>$?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),A=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let r=a.data.toString(),c=r.charCodeAt(0);if(c===47||c===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...a,data:r})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return K(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:c,$headers:w,$transform:m,...v}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let d=e.lastIndexOf("/"),i=e.slice(d+1).toUpperCase(),u=W(n,d===-1?"/":e.slice(0,d),r),l=t.fetcher??fetch,E=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,k=m?Array.isArray(m)?m:[m]:void 0;return k&&(E?E=k.concat(E):E=k),i==="SUBSCRIBE"?new A(u.replace(/^([^]+):\/\//,u.startsWith("https://")?"wss://":"ws://")):(async()=>{let y,L={...t.$fetch?.headers,...c?.headers,...w};if(i!=="GET"&&i!=="HEAD"){y=Object.keys(v).length?v:void 0;let f=typeof y=="object";if(f&&U(y)){let b=new FormData;for(let[x,h]of Object.entries(y))if($)b.append(x,h);else if(h instanceof File)b.append(x,await C(h));else if(h instanceof FileList)for(let T=0;T<h.length;T++)b.append(x,await C(h[T]));else b.append(x,h);y=b}else L["content-type"]=f?"application/json":"text/plain",f&&(y=JSON.stringify(y))}let o=await l(u,{method:i,body:y,...t.$fetch,...c,headers:L}),g;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await o.json();break;default:g=await o.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}let O=o.status>=300||o.status<200?new S(o.status,g):null;if(E)for(let f of E){let p=f({data:g,status:o.status,headers:o.headers,response:o,error:O});p instanceof Promise&&(p=await p),p!=null&&(g=p)}return{data:g,error:O,response:o,status:o.status,headers:o.headers}})()}}),j=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return K(n,s,e)}});var R=(n,e)=>(t,{query:s,params:a,body:r,...c}={})=>{a&&Object.entries(a).forEach(([i,u])=>{t=t.replace(`:${i}`,u)});let w=c.headers?.["Content-Type"];if(!w||w==="application/json")try{r=JSON.stringify(r)}catch{}let m=e?.fetcher||globalThis.fetch,v=s?`?${new URLSearchParams(s).toString()}`:"",d=()=>m(n+t+v,{...c,method:c.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...c.headers}:c.headers,body:r}).then(async i=>{let u;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await i.json();break;default:u=await i.text().then(l=>Number.isNaN(+l)?l==="true"?!0:l==="false"?!1:l:+l);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:d,error:new S(i.status,u)}:{data:u,error:null,status:i.status,headers:i.headers,retry:d}});return d()};return J(V);})();
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var F=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var P=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)F(n,t,{get:e[t],enumerable:!0})},D=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of P(e))!I.call(n,a)&&a!==t&&F(n,a,{get:()=>e[a],enumerable:!(s=B(e,a))||s.enumerable});return n};var J=n=>D(F({},"__esModule",{value:!0}),n);var V={};M(V,{edenFetch:()=>R,edenTreaty:()=>j});module.exports=J(V);var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[a,r]of Object.entries(t))s+=`${a}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`};var $=typeof FileList>"u",N=n=>$?n instanceof Blob:n instanceof FileList||n instanceof File,U=n=>{if(!n)return!1;for(let e in n){if(N(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>N(t)))return!0}return!1},C=n=>$?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),A=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let r=a.data.toString(),c=r.charCodeAt(0);if(c===47||c===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...a,data:r})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return K(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:c,$headers:w,$transform:m,...v}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let d=e.lastIndexOf("/"),i=e.slice(d+1).toUpperCase(),u=W(n,d===-1?"/":e.slice(0,d),r),l=t.fetcher??fetch,E=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,k=m?Array.isArray(m)?m:[m]:void 0;return k&&(E?E=k.concat(E):E=k),i==="SUBSCRIBE"?new A(u.replace(/^([^]+):\/\//,u.startsWith("https://")?"wss://":"ws://")):(async()=>{let y,L={...t.$fetch?.headers,...c?.headers,...w};if(i!=="GET"&&i!=="HEAD"){y=Object.keys(v).length?v:void 0;let f=typeof y=="object";if(f&&U(y)){let b=new FormData;for(let[x,h]of Object.entries(y))if($)b.append(x,h);else if(h instanceof File)b.append(x,await C(h));else if(h instanceof FileList)for(let T=0;T<h.length;T++)b.append(x,await C(h[T]));else b.append(x,h);y=b}else L["content-type"]=f?"application/json":"text/plain",f&&(y=JSON.stringify(y))}let o=await l(u,{method:i,body:y,...t.$fetch,...c,headers:L}),g;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":g=await o.json();break;default:g=await o.text().then(f=>Number.isNaN(+f)?f==="true"?!0:f==="false"?!1:f:+f)}let O=o.status>=300||o.status<200?new S(o.status,g):null;if(E)for(let f of E){let p=f({data:g,status:o.status,headers:o.headers,response:o,error:O});p instanceof Promise&&(p=await p),p!=null&&(g=p)}return{data:g,error:O,response:o,status:o.status,headers:o.headers}})()}}),j=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return K(n,s,e)}});var R=(n,e)=>(t,{query:s,params:a,body:r,...c}={})=>{a&&Object.entries(a).forEach(([i,u])=>{t=t.replace(`:${i}`,u)});let w=c.headers?.["Content-Type"];if(!w||w==="application/json")try{r=JSON.stringify(r)}catch{}let m=e?.fetcher||globalThis.fetch,v=s?`?${new URLSearchParams(s).toString()}`:"",d=()=>m(n+t+v,{...c,method:c.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...c.headers}:c.headers,body:r}).then(async i=>{let u;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await i.json();break;default:u=await i.text().then(l=>Number.isNaN(+l)?l==="true"?!0:l==="false"?!1:l:+l);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:d,error:new S(i.status,u)}:{data:u,error:null,status:i.status,headers:i.headers,retry:d}});return d()};0&&(module.exports={edenFetch,edenTreaty});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as e}from"./chunk-
|
|
1
|
+
import{b as e}from"./chunk-2G5RO3ND.mjs";import{a as t}from"./chunk-3KYW6H6M.mjs";import"./chunk-Y6SMVGJX.mjs";export{t as edenFetch,e as edenTreaty};
|
package/dist/treaty/types.d.ts
CHANGED
|
@@ -18,18 +18,28 @@ type AnySchema = {
|
|
|
18
18
|
params: unknown;
|
|
19
19
|
response: any;
|
|
20
20
|
};
|
|
21
|
+
type MaybeArray<T> = T | T[];
|
|
21
22
|
export declare namespace EdenTreaty {
|
|
22
|
-
type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
23
|
+
export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
23
24
|
schema: infer Schema extends Record<string, any>;
|
|
24
25
|
} ? UnionToIntersect<Sign<Schema>> : 'Please install Elysia before using Eden';
|
|
25
|
-
|
|
26
|
+
type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
|
|
27
|
+
export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
|
|
28
|
+
data: any;
|
|
29
|
+
error: any;
|
|
30
|
+
response: Response;
|
|
31
|
+
status: number;
|
|
32
|
+
headers: Headers;
|
|
33
|
+
} : UnwrapPromise<T>) => UnwrapPromise<T> | void>;
|
|
34
|
+
export interface Config {
|
|
26
35
|
/**
|
|
27
36
|
* Default options to pass to fetch
|
|
28
37
|
*/
|
|
29
38
|
$fetch?: RequestInit;
|
|
30
39
|
fetcher?: typeof fetch;
|
|
40
|
+
transform?: Transform;
|
|
31
41
|
}
|
|
32
|
-
type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
|
|
42
|
+
export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
|
|
33
43
|
infer Prefix extends string | number,
|
|
34
44
|
...infer Rest extends (string | number)[]
|
|
35
45
|
] ? {
|
|
@@ -65,12 +75,17 @@ export declare namespace EdenTreaty {
|
|
|
65
75
|
$params: undefined;
|
|
66
76
|
$headers: undefined;
|
|
67
77
|
$query: undefined;
|
|
68
|
-
} extends Params ? (params?: Prettify<Params
|
|
78
|
+
} extends Params ? (params?: Prettify<Params & {
|
|
79
|
+
$transform?: EdenTreaty.Transform<Response>;
|
|
80
|
+
}>) => Response : (params: Prettify<Params & {
|
|
81
|
+
$transform?: EdenTreaty.Transform<Response>;
|
|
82
|
+
}>) => Response : never : never;
|
|
69
83
|
} : {};
|
|
70
|
-
interface OnMessage<Data = unknown> extends MessageEvent {
|
|
84
|
+
export interface OnMessage<Data = unknown> extends MessageEvent {
|
|
71
85
|
data: Data;
|
|
72
86
|
rawData: MessageEvent['data'];
|
|
73
87
|
}
|
|
74
|
-
type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
|
|
88
|
+
export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
|
|
89
|
+
export {};
|
|
75
90
|
}
|
|
76
91
|
export {};
|
package/dist/treaty.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Elysia, InputSchema } from 'elysia';
|
|
2
|
-
import { U as UnionToIntersect, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-
|
|
2
|
+
import { U as UnionToIntersect, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-d1b334ad.js';
|
|
3
3
|
|
|
4
4
|
/// <reference lib="dom" />
|
|
5
5
|
|
|
@@ -18,18 +18,28 @@ type AnySchema = {
|
|
|
18
18
|
params: unknown;
|
|
19
19
|
response: any;
|
|
20
20
|
};
|
|
21
|
+
type MaybeArray<T> = T | T[];
|
|
21
22
|
declare namespace EdenTreaty {
|
|
22
|
-
type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
23
|
+
export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
23
24
|
schema: infer Schema extends Record<string, any>;
|
|
24
25
|
} ? UnionToIntersect<Sign<Schema>> : 'Please install Elysia before using Eden';
|
|
25
|
-
|
|
26
|
+
type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
|
|
27
|
+
export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
|
|
28
|
+
data: any;
|
|
29
|
+
error: any;
|
|
30
|
+
response: Response;
|
|
31
|
+
status: number;
|
|
32
|
+
headers: Headers;
|
|
33
|
+
} : UnwrapPromise<T>) => UnwrapPromise<T> | void>;
|
|
34
|
+
export interface Config {
|
|
26
35
|
/**
|
|
27
36
|
* Default options to pass to fetch
|
|
28
37
|
*/
|
|
29
38
|
$fetch?: RequestInit;
|
|
30
39
|
fetcher?: typeof fetch;
|
|
40
|
+
transform?: Transform;
|
|
31
41
|
}
|
|
32
|
-
type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
|
|
42
|
+
export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
|
|
33
43
|
infer Prefix extends string | number,
|
|
34
44
|
...infer Rest extends (string | number)[]
|
|
35
45
|
] ? {
|
|
@@ -65,13 +75,18 @@ declare namespace EdenTreaty {
|
|
|
65
75
|
$params: undefined;
|
|
66
76
|
$headers: undefined;
|
|
67
77
|
$query: undefined;
|
|
68
|
-
} extends Params ? (params?: Prettify<Params
|
|
78
|
+
} extends Params ? (params?: Prettify<Params & {
|
|
79
|
+
$transform?: EdenTreaty.Transform<Response>;
|
|
80
|
+
}>) => Response : (params: Prettify<Params & {
|
|
81
|
+
$transform?: EdenTreaty.Transform<Response>;
|
|
82
|
+
}>) => Response : never : never;
|
|
69
83
|
} : {};
|
|
70
|
-
interface OnMessage<Data = unknown> extends MessageEvent {
|
|
84
|
+
export interface OnMessage<Data = unknown> extends MessageEvent {
|
|
71
85
|
data: Data;
|
|
72
86
|
rawData: MessageEvent['data'];
|
|
73
87
|
}
|
|
74
|
-
type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
|
|
88
|
+
export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
|
|
89
|
+
export {};
|
|
75
90
|
}
|
|
76
91
|
|
|
77
92
|
declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
|
package/dist/treaty.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Elysia, InputSchema } from 'elysia';
|
|
2
|
-
import { U as UnionToIntersect, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-
|
|
2
|
+
import { U as UnionToIntersect, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-d1b334ad.js';
|
|
3
3
|
|
|
4
4
|
/// <reference lib="dom" />
|
|
5
5
|
|
|
@@ -18,18 +18,28 @@ type AnySchema = {
|
|
|
18
18
|
params: unknown;
|
|
19
19
|
response: any;
|
|
20
20
|
};
|
|
21
|
+
type MaybeArray<T> = T | T[];
|
|
21
22
|
declare namespace EdenTreaty {
|
|
22
|
-
type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
23
|
+
export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
23
24
|
schema: infer Schema extends Record<string, any>;
|
|
24
25
|
} ? UnionToIntersect<Sign<Schema>> : 'Please install Elysia before using Eden';
|
|
25
|
-
|
|
26
|
+
type UnwrapPromise<T> = T extends Promise<infer A> ? A : T;
|
|
27
|
+
export type Transform<T = unknown> = MaybeArray<(response: unknown extends T ? {
|
|
28
|
+
data: any;
|
|
29
|
+
error: any;
|
|
30
|
+
response: Response;
|
|
31
|
+
status: number;
|
|
32
|
+
headers: Headers;
|
|
33
|
+
} : UnwrapPromise<T>) => UnwrapPromise<T> | void>;
|
|
34
|
+
export interface Config {
|
|
26
35
|
/**
|
|
27
36
|
* Default options to pass to fetch
|
|
28
37
|
*/
|
|
29
38
|
$fetch?: RequestInit;
|
|
30
39
|
fetcher?: typeof fetch;
|
|
40
|
+
transform?: Transform;
|
|
31
41
|
}
|
|
32
|
-
type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
|
|
42
|
+
export type Sign<Schema extends Record<string, Record<string, unknown>>, Paths extends (string | number)[] = Split<keyof Schema & string>, Carry extends string = ''> = Paths extends [
|
|
33
43
|
infer Prefix extends string | number,
|
|
34
44
|
...infer Rest extends (string | number)[]
|
|
35
45
|
] ? {
|
|
@@ -65,13 +75,18 @@ declare namespace EdenTreaty {
|
|
|
65
75
|
$params: undefined;
|
|
66
76
|
$headers: undefined;
|
|
67
77
|
$query: undefined;
|
|
68
|
-
} extends Params ? (params?: Prettify<Params
|
|
78
|
+
} extends Params ? (params?: Prettify<Params & {
|
|
79
|
+
$transform?: EdenTreaty.Transform<Response>;
|
|
80
|
+
}>) => Response : (params: Prettify<Params & {
|
|
81
|
+
$transform?: EdenTreaty.Transform<Response>;
|
|
82
|
+
}>) => Response : never : never;
|
|
69
83
|
} : {};
|
|
70
|
-
interface OnMessage<Data = unknown> extends MessageEvent {
|
|
84
|
+
export interface OnMessage<Data = unknown> extends MessageEvent {
|
|
71
85
|
data: Data;
|
|
72
86
|
rawData: MessageEvent['data'];
|
|
73
87
|
}
|
|
74
|
-
type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
|
|
88
|
+
export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
|
|
89
|
+
export {};
|
|
75
90
|
}
|
|
76
91
|
|
|
77
92
|
declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
|
package/dist/treaty.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Eden=(()=>{var
|
|
1
|
+
"use strict";var Eden=(()=>{var x=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)x(n,t,{get:e[t],enumerable:!0})},P=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of C(e))!I.call(n,a)&&a!==t&&x(n,a,{get:()=>e[a],enumerable:!(s=B(e,a))||s.enumerable});return n};var j=n=>P(x({},"__esModule",{value:!0}),n);var V={};M(V,{EdenWS:()=>v,edenTreaty:()=>J});var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[a,r]of Object.entries(t))s+=`${a}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`};var A=typeof FileList>"u",O=n=>A?n instanceof Blob:n instanceof FileList||n instanceof File,D=n=>{if(!n)return!1;for(let e in n){if(O(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>O(t)))return!0}return!1},F=n=>A?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),v=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let r=a.data.toString(),y=r.charCodeAt(0);if(y===47||y===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...a,data:r})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return K(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:y,$headers:N,$transform:h,...$}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let g=e.lastIndexOf("/"),m=e.slice(g+1).toUpperCase(),b=W(n,g===-1?"/":e.slice(0,g),r),R=t.fetcher??fetch,d=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,w=h?Array.isArray(h)?h:[h]:void 0;return w&&(d?d=w.concat(d):d=w),m==="SUBSCRIBE"?new v(b.replace(/^([^]+):\/\//,b.startsWith("https://")?"wss://":"ws://")):(async()=>{let f,L={...t.$fetch?.headers,...y?.headers,...N};if(m!=="GET"&&m!=="HEAD"){f=Object.keys($).length?$:void 0;let o=typeof f=="object";if(o&&D(f)){let p=new FormData;for(let[E,u]of Object.entries(f))if(A)p.append(E,u);else if(u instanceof File)p.append(E,await F(u));else if(u instanceof FileList)for(let k=0;k<u.length;k++)p.append(E,await F(u[k]));else p.append(E,u);f=p}else L["content-type"]=o?"application/json":"text/plain",o&&(f=JSON.stringify(f))}let i=await R(b,{method:m,body:f,...t.$fetch,...y,headers:L}),l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(o=>Number.isNaN(+o)?o==="true"?!0:o==="false"?!1:o:+o)}let T=i.status>=300||i.status<200?new S(i.status,l):null;if(d)for(let o of d){let c=o({data:l,status:i.status,headers:i.headers,response:i,error:T});c instanceof Promise&&(c=await c),c!=null&&(l=c)}return{data:l,error:T,response:i,status:i.status,headers:i.headers}})()}}),J=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return K(n,s,e)}});return j(V);})();
|
package/dist/treaty.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var x=Object.defineProperty;var B=Object.getOwnPropertyDescriptor;var C=Object.getOwnPropertyNames;var I=Object.prototype.hasOwnProperty;var M=(n,e)=>{for(var t in e)x(n,t,{get:e[t],enumerable:!0})},P=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of C(e))!I.call(n,a)&&a!==t&&x(n,a,{get:()=>e[a],enumerable:!(s=B(e,a))||s.enumerable});return n};var j=n=>P(x({},"__esModule",{value:!0}),n);var V={};M(V,{EdenWS:()=>v,edenTreaty:()=>J});module.exports=j(V);var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[a,r]of Object.entries(t))s+=`${a}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`};var A=typeof FileList>"u",O=n=>A?n instanceof Blob:n instanceof FileList||n instanceof File,D=n=>{if(!n)return!1;for(let e in n){if(O(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>O(t)))return!0}return!1},F=n=>A?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),v=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,a=>{if(e==="message"){let r=a.data.toString(),y=r.charCodeAt(0);if(y===47||y===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...a,data:r})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(s,a,r){return K(n,`${e}/${a.toString()}`,t)},apply(s,a,[{$query:r,$fetch:y,$headers:N,$transform:h,...$}={$fetch:void 0,$headers:void 0,$query:void 0,$transform:void 0}]=[{}]){let g=e.lastIndexOf("/"),m=e.slice(g+1).toUpperCase(),b=W(n,g===-1?"/":e.slice(0,g),r),R=t.fetcher??fetch,d=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,w=h?Array.isArray(h)?h:[h]:void 0;return w&&(d?d=w.concat(d):d=w),m==="SUBSCRIBE"?new v(b.replace(/^([^]+):\/\//,b.startsWith("https://")?"wss://":"ws://")):(async()=>{let f,L={...t.$fetch?.headers,...y?.headers,...N};if(m!=="GET"&&m!=="HEAD"){f=Object.keys($).length?$:void 0;let o=typeof f=="object";if(o&&D(f)){let p=new FormData;for(let[E,u]of Object.entries(f))if(A)p.append(E,u);else if(u instanceof File)p.append(E,await F(u));else if(u instanceof FileList)for(let k=0;k<u.length;k++)p.append(E,await F(u[k]));else p.append(E,u);f=p}else L["content-type"]=o?"application/json":"text/plain",o&&(f=JSON.stringify(f))}let i=await R(b,{method:m,body:f,...t.$fetch,...y,headers:L}),l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(o=>Number.isNaN(+o)?o==="true"?!0:o==="false"?!1:o:+o)}let T=i.status>=300||i.status<200?new S(i.status,l):null;if(d)for(let o of d){let c=o({data:l,status:i.status,headers:i.headers,response:i,error:T});c instanceof Promise&&(c=await c),c!=null&&(l=c)}return{data:l,error:T,response:i,status:i.status,headers:i.headers}})()}}),J=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return K(n,s,e)}});0&&(module.exports={EdenWS,edenTreaty});
|
package/dist/treaty.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"./chunk-
|
|
1
|
+
import{a,b}from"./chunk-2G5RO3ND.mjs";import"./chunk-Y6SMVGJX.mjs";export{a as EdenWS,b as edenTreaty};
|
|
@@ -14,7 +14,7 @@ type MapError<T extends Record<number, unknown>> = [
|
|
|
14
14
|
] extends [infer A extends number] ? {
|
|
15
15
|
[K in A]: EdenFetchError<K, T[K]>;
|
|
16
16
|
}[A] : false;
|
|
17
|
-
type UnionToIntersect<U> = (U extends
|
|
17
|
+
type UnionToIntersect<U> = (U extends any ? (arg: U) => any : never) extends (arg: infer I) => void ? I : never;
|
|
18
18
|
type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
19
19
|
type IsNever<T> = [T] extends [never] ? true : false;
|
|
20
20
|
type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
|
package/dist/types.d.ts
CHANGED
|
@@ -9,7 +9,8 @@ export type MapError<T extends Record<number, unknown>> = [
|
|
|
9
9
|
] extends [infer A extends number] ? {
|
|
10
10
|
[K in A]: EdenFetchError<K, T[K]>;
|
|
11
11
|
}[A] : false;
|
|
12
|
-
export type UnionToIntersect<U> = (U extends
|
|
12
|
+
export type UnionToIntersect<U> = (U extends any ? (arg: U) => any : never) extends (arg: infer I) => void ? I : never;
|
|
13
|
+
export type UnionToTuple<T> = UnionToIntersect<T extends any ? (t: T) => T : never> extends (_: any) => infer W ? [...UnionToTuple<Exclude<T, W>>, W] : [];
|
|
13
14
|
export type IsAny<T> = 0 extends 1 & T ? true : false;
|
|
14
15
|
export type IsNever<T> = [T] extends [never] ? true : false;
|
|
15
16
|
export type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elysiajs/eden",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
4
4
|
"description": "Fully type-safe Elysia client",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "saltyAom",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"@sinclair/typebox": "^0.31.6",
|
|
64
64
|
"@types/node": "^18.15.5",
|
|
65
65
|
"bun-types": "^1.0.1",
|
|
66
|
-
"elysia": "^0.7.
|
|
66
|
+
"elysia": "^0.7.15",
|
|
67
67
|
"esbuild": "^0.19.3",
|
|
68
68
|
"eslint": "^8.26.0",
|
|
69
69
|
"rimraf": "^4.4.1",
|
package/src/fetch/index.ts
CHANGED
package/src/treaty/index.ts
CHANGED
|
@@ -165,20 +165,22 @@ const createProxy = (
|
|
|
165
165
|
target,
|
|
166
166
|
_,
|
|
167
167
|
[
|
|
168
|
-
{ $query, $fetch, $headers, ...bodyObj } = {
|
|
168
|
+
{ $query, $fetch, $headers, $transform, ...bodyObj } = {
|
|
169
169
|
$fetch: undefined,
|
|
170
170
|
$headers: undefined,
|
|
171
|
-
$query: undefined
|
|
171
|
+
$query: undefined,
|
|
172
|
+
$transform: undefined
|
|
172
173
|
}
|
|
173
174
|
]: {
|
|
174
175
|
[x: string]: any
|
|
175
176
|
$fetch?: RequestInit
|
|
176
177
|
$headers?: HeadersInit
|
|
177
178
|
$query?: Record<string, string>
|
|
179
|
+
$transform?: EdenTreaty.Transform
|
|
178
180
|
}[] = [{}]
|
|
179
181
|
) {
|
|
180
182
|
const i = path.lastIndexOf('/'),
|
|
181
|
-
method = path.slice(i + 1),
|
|
183
|
+
method = path.slice(i + 1).toUpperCase(),
|
|
182
184
|
url = composePath(
|
|
183
185
|
domain,
|
|
184
186
|
i === -1 ? '/' : path.slice(0, i),
|
|
@@ -186,8 +188,24 @@ const createProxy = (
|
|
|
186
188
|
)
|
|
187
189
|
|
|
188
190
|
const fetcher = config.fetcher ?? fetch
|
|
191
|
+
let transforms = config.transform
|
|
192
|
+
? Array.isArray(config.transform)
|
|
193
|
+
? config.transform
|
|
194
|
+
: [config.transform]
|
|
195
|
+
: undefined
|
|
196
|
+
|
|
197
|
+
const $transforms = $transform
|
|
198
|
+
? Array.isArray($transform)
|
|
199
|
+
? $transform
|
|
200
|
+
: [$transform]
|
|
201
|
+
: undefined
|
|
202
|
+
|
|
203
|
+
if ($transforms) {
|
|
204
|
+
if (transforms) transforms = $transforms.concat(transforms)
|
|
205
|
+
else transforms = $transforms as any
|
|
206
|
+
}
|
|
189
207
|
|
|
190
|
-
if (method === '
|
|
208
|
+
if (method === 'SUBSCRIBE')
|
|
191
209
|
return new EdenWS(
|
|
192
210
|
url.replace(
|
|
193
211
|
/^([^]+):\/\//,
|
|
@@ -271,21 +289,31 @@ const createProxy = (
|
|
|
271
289
|
})
|
|
272
290
|
}
|
|
273
291
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
data
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
292
|
+
const error =
|
|
293
|
+
response.status >= 300 || response.status < 200
|
|
294
|
+
? new EdenFetchError(response.status, data)
|
|
295
|
+
: null
|
|
296
|
+
|
|
297
|
+
if (transforms)
|
|
298
|
+
for (const transform of transforms) {
|
|
299
|
+
let temp = transform({
|
|
300
|
+
data,
|
|
301
|
+
status: response.status,
|
|
302
|
+
headers: response.headers,
|
|
303
|
+
response,
|
|
304
|
+
error
|
|
305
|
+
})
|
|
306
|
+
if (temp instanceof Promise) temp = await temp
|
|
307
|
+
|
|
308
|
+
if (temp !== undefined && temp !== null) data = temp
|
|
281
309
|
}
|
|
282
310
|
|
|
283
311
|
return {
|
|
284
312
|
data,
|
|
285
|
-
|
|
313
|
+
error,
|
|
286
314
|
response: response,
|
|
287
|
-
|
|
288
|
-
|
|
315
|
+
status: response.status,
|
|
316
|
+
headers: response.headers
|
|
289
317
|
}
|
|
290
318
|
}
|
|
291
319
|
|
package/src/treaty/types.ts
CHANGED
|
@@ -42,6 +42,8 @@ type AnySchema = {
|
|
|
42
42
|
response: any
|
|
43
43
|
}
|
|
44
44
|
|
|
45
|
+
type MaybeArray<T> = T | T[]
|
|
46
|
+
|
|
45
47
|
export namespace EdenTreaty {
|
|
46
48
|
export type Create<App extends Elysia<any, any, any, any, any, any>> =
|
|
47
49
|
App extends {
|
|
@@ -50,17 +52,39 @@ export namespace EdenTreaty {
|
|
|
50
52
|
? UnionToIntersect<Sign<Schema>>
|
|
51
53
|
: 'Please install Elysia before using Eden'
|
|
52
54
|
|
|
55
|
+
type SplitKeys<T> = T extends [infer First, ...infer Rest]
|
|
56
|
+
? [First, Rest]
|
|
57
|
+
: T extends [infer First, ...infer Rest][number]
|
|
58
|
+
? [First, Rest]
|
|
59
|
+
: never
|
|
60
|
+
|
|
61
|
+
type UnwrapPromise<T> = T extends Promise<infer A> ? A : T
|
|
62
|
+
|
|
63
|
+
export type Transform<T = unknown> = MaybeArray<
|
|
64
|
+
(
|
|
65
|
+
response: unknown extends T
|
|
66
|
+
? {
|
|
67
|
+
data: any
|
|
68
|
+
error: any
|
|
69
|
+
response: Response
|
|
70
|
+
status: number
|
|
71
|
+
headers: Headers
|
|
72
|
+
}
|
|
73
|
+
: UnwrapPromise<T>
|
|
74
|
+
) => UnwrapPromise<T> | void
|
|
75
|
+
>
|
|
76
|
+
|
|
53
77
|
export interface Config {
|
|
54
78
|
/**
|
|
55
79
|
* Default options to pass to fetch
|
|
56
80
|
*/
|
|
57
81
|
$fetch?: RequestInit
|
|
58
82
|
fetcher?: typeof fetch
|
|
83
|
+
transform?: Transform
|
|
59
84
|
}
|
|
60
85
|
|
|
61
86
|
export type Sign<
|
|
62
87
|
Schema extends Record<string, Record<string, unknown>>,
|
|
63
|
-
// @ts-ignore
|
|
64
88
|
Paths extends (string | number)[] = Split<keyof Schema & string>,
|
|
65
89
|
Carry extends string = ''
|
|
66
90
|
> = Paths extends [
|
|
@@ -134,8 +158,20 @@ export namespace EdenTreaty {
|
|
|
134
158
|
$headers: undefined
|
|
135
159
|
$query: undefined
|
|
136
160
|
} extends Params
|
|
137
|
-
? (
|
|
138
|
-
|
|
161
|
+
? (
|
|
162
|
+
params?: Prettify<
|
|
163
|
+
Params & {
|
|
164
|
+
$transform?: EdenTreaty.Transform<Response>
|
|
165
|
+
}
|
|
166
|
+
>
|
|
167
|
+
) => Response
|
|
168
|
+
: (
|
|
169
|
+
params: Prettify<
|
|
170
|
+
Params & {
|
|
171
|
+
$transform?: EdenTreaty.Transform<Response>
|
|
172
|
+
}
|
|
173
|
+
>
|
|
174
|
+
) => Response
|
|
139
175
|
: never
|
|
140
176
|
: never
|
|
141
177
|
}
|
package/src/types.ts
CHANGED
|
@@ -26,11 +26,17 @@ export type MapError<T extends Record<number, unknown>> = [
|
|
|
26
26
|
: false
|
|
27
27
|
|
|
28
28
|
export type UnionToIntersect<U> = (
|
|
29
|
-
U extends
|
|
30
|
-
) extends (arg: infer I) =>
|
|
29
|
+
U extends any ? (arg: U) => any : never
|
|
30
|
+
) extends (arg: infer I) => void
|
|
31
31
|
? I
|
|
32
32
|
: never
|
|
33
33
|
|
|
34
|
+
export type UnionToTuple<T> = UnionToIntersect<
|
|
35
|
+
T extends any ? (t: T) => T : never
|
|
36
|
+
> extends (_: any) => infer W
|
|
37
|
+
? [...UnionToTuple<Exclude<T, W>>, W]
|
|
38
|
+
: []
|
|
39
|
+
|
|
34
40
|
export type IsAny<T> = 0 extends 1 & T ? true : false
|
|
35
41
|
|
|
36
42
|
export type IsNever<T> = [T] extends [never] ? true : false
|
package/dist/chunk-BYO7CHLQ.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as S}from"./chunk-Y6SMVGJX.mjs";var k=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let r="";for(let[o,s]of Object.entries(t))r+=`${o}=${s}&`;return`${n}${e}?${r.slice(0,-1)}`};var v=typeof FileList>"u",x=n=>v?n instanceof Blob:n instanceof FileList||n instanceof File,F=n=>{if(!n)return!1;for(let e in n){if(x(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>x(t)))return!0}return!1},$=n=>v?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),b=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,r){return this.addEventListener(e,t,r)}off(e,t,r){return this.ws.removeEventListener(e,t,r),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,r){return this.ws.addEventListener(e,o=>{if(e==="message"){let s=o.data.toString(),d=s.charCodeAt(0);if(d===47||d===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...o,data:s})}else t(o)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},L=(n,e="",t)=>new Proxy(()=>{},{get(r,o,s){return L(n,`${e}/${o.toString()}`,t)},apply(r,o,[{$query:s,$fetch:d,$headers:W,...m}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){let h=e.lastIndexOf("/"),u=e.slice(h+1),g=k(n,h===-1?"/":e.slice(0,h),s),A=t.fetcher??fetch;return u==="subscribe"?new b(g.replace(/^([^]+):\/\//,g.startsWith("https://")?"wss://":"ws://")):(async()=>{let c,w={...t.$fetch?.headers,...d?.headers,...W};if(u!=="GET"&&u!=="HEAD"){c=Object.keys(m).length?m:void 0;let a=typeof c=="object";if(a&&F(c)){let y=new FormData;for(let[p,f]of Object.entries(c))if(v)y.append(p,f);else if(f instanceof File)y.append(p,await $(f));else if(f instanceof FileList)for(let E=0;E<f.length;E++)y.append(p,await $(f[E]));else y.append(p,f);c=y}else w["content-type"]=a?"application/json":"text/plain",a&&(c=JSON.stringify(c))}let i=await A(g,{method:u,body:c,...t.$fetch,...d,headers:w}),l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(a=>Number.isNaN(+a)?a==="true"?!0:a==="false"?!1:a:+a)}return i.status>300?{data:l,error:new S(i.status,await l),status:i.status,raw:i,headers:i.headers}:{data:l,status:i.status,response:i,headers:i.headers,error:null}})()}}),M=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return L(n,r,e)}});export{b as a,M as b};
|
package/dist/chunk-V6QCRD5H.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as y}from"./chunk-Y6SMVGJX.mjs";var E=(p,u)=>(s,{query:i,params:h,body:a,...n}={})=>{h&&Object.entries(h).forEach(([e,t])=>{s=s.replace(`:${e}`,t)});let o=n.headers?.["Content-Type"];if(!o||o==="application/json")try{a=JSON.stringify(a)}catch{}let f=u?.fetcher||globalThis.fetch,l=i?`?${new URLSearchParams(i).toString()}`:"",c=()=>f(p+s+l,{...n,headers:a?{"content-type":"application/json",...n.headers}:n.headers,body:a}).then(async e=>{let t;switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":t=await e.json();break;default:t=await e.text().then(r=>Number.isNaN(+r)?r==="true"?!0:r==="false"?!1:r:+r);break}return e.status>300?{data:null,status:e.status,headers:e.headers,retry:c,error:new y(e.status,t)}:{data:t,error:null,status:e.status,headers:e.headers,retry:c}});return c()};export{E as a};
|