@elysiajs/eden 0.7.3 → 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/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 +21 -6
- package/dist/treaty.d.ts +21 -6
- package/dist/treaty.global.js +1 -1
- package/dist/treaty.js +1 -1
- package/dist/treaty.mjs +1 -1
- package/package.json +2 -2
- package/src/treaty/index.ts +40 -12
- package/src/treaty/types.ts +33 -2
- package/dist/chunk-6KKDNR4U.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};
|
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
|
@@ -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
|
@@ -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};
|
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/treaty/index.ts
CHANGED
|
@@ -165,16 +165,18 @@ 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('/'),
|
|
@@ -186,6 +188,22 @@ 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
208
|
if (method === 'SUBSCRIBE')
|
|
191
209
|
return new EdenWS(
|
|
@@ -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 {
|
|
@@ -56,12 +58,29 @@ export namespace EdenTreaty {
|
|
|
56
58
|
? [First, Rest]
|
|
57
59
|
: never
|
|
58
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
|
+
|
|
59
77
|
export interface Config {
|
|
60
78
|
/**
|
|
61
79
|
* Default options to pass to fetch
|
|
62
80
|
*/
|
|
63
81
|
$fetch?: RequestInit
|
|
64
82
|
fetcher?: typeof fetch
|
|
83
|
+
transform?: Transform
|
|
65
84
|
}
|
|
66
85
|
|
|
67
86
|
export type Sign<
|
|
@@ -139,8 +158,20 @@ export namespace EdenTreaty {
|
|
|
139
158
|
$headers: undefined
|
|
140
159
|
$query: undefined
|
|
141
160
|
} extends Params
|
|
142
|
-
? (
|
|
143
|
-
|
|
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
|
|
144
175
|
: never
|
|
145
176
|
: never
|
|
146
177
|
}
|
package/dist/chunk-6KKDNR4U.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as w}from"./chunk-Y6SMVGJX.mjs";var k=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let r="";for(let[o,s]of Object.entries(t))r+=`${o}=${s}&`;return`${n}${e}?${r.slice(0,-1)}`};var S=typeof FileList>"u",x=n=>S?n instanceof Blob:n instanceof FileList||n instanceof File,F=n=>{if(!n)return!1;for(let e in n){if(x(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>x(t)))return!0}return!1},$=n=>S?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:n.type}))},t.readAsArrayBuffer(n)}),v=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,r){return this.addEventListener(e,t,r)}off(e,t,r){return this.ws.removeEventListener(e,t,r),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,r){return this.ws.addEventListener(e,o=>{if(e==="message"){let s=o.data.toString(),d=s.charCodeAt(0);if(d===47||d===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...o,data:s})}else t(o)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},L=(n,e="",t)=>new Proxy(()=>{},{get(r,o,s){return L(n,`${e}/${o.toString()}`,t)},apply(r,o,[{$query:s,$fetch:d,$headers:W,...b}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){let h=e.lastIndexOf("/"),u=e.slice(h+1).toUpperCase(),E=k(n,h===-1?"/":e.slice(0,h),s),A=t.fetcher??fetch;return u==="SUBSCRIBE"?new v(E.replace(/^([^]+):\/\//,E.startsWith("https://")?"wss://":"ws://")):(async()=>{let c,m={...t.$fetch?.headers,...d?.headers,...W};if(u!=="GET"&&u!=="HEAD"){c=Object.keys(b).length?b:void 0;let a=typeof c=="object";if(a&&F(c)){let y=new FormData;for(let[p,f]of Object.entries(c))if(S)y.append(p,f);else if(f instanceof File)y.append(p,await $(f));else if(f instanceof FileList)for(let g=0;g<f.length;g++)y.append(p,await $(f[g]));else y.append(p,f);c=y}else m["content-type"]=a?"application/json":"text/plain",a&&(c=JSON.stringify(c))}let i=await A(E,{method:u,body:c,...t.$fetch,...d,headers:m}),l;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await i.json();break;default:l=await i.text().then(a=>Number.isNaN(+a)?a==="true"?!0:a==="false"?!1:a:+a)}return i.status>300?{data:l,error:new w(i.status,await l),status:i.status,raw:i,headers:i.headers}:{data:l,status:i.status,response:i,headers:i.headers,error:null}})()}}),B=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return L(n,r,e)}});export{v as a,B as b};
|