@elysiajs/eden 0.8.1 → 1.0.0-beta.1
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-R27QELXO.mjs +1 -0
- package/dist/chunk-VMCNRAXS.mjs +1 -0
- package/dist/chunk-YTAZNCPF.mjs +1 -0
- package/dist/fetch/index.d.ts +1 -1
- package/dist/fetch/types.d.ts +12 -14
- package/dist/fetch.d.mts +13 -14
- package/dist/fetch.d.ts +13 -14
- package/dist/fetch.global.js +1 -1
- package/dist/fetch.js +1 -1
- package/dist/fetch.mjs +1 -1
- package/dist/index.d.mts +68 -2
- package/dist/index.d.ts +68 -2
- package/dist/index.global.js +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/dist/treaty/index.d.ts +1 -1
- package/dist/treaty/types.d.ts +58 -61
- package/dist/treaty.d.mts +59 -62
- package/dist/treaty.d.ts +59 -62
- 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 -0
- package/dist/treaty2/types.d.ts +64 -0
- package/dist/treaty2/ws.d.ts +14 -0
- package/dist/{types-d1b334ad.d.ts → types-BQi-Ff9p.d.ts} +22 -1
- package/dist/types.d.ts +19 -7
- package/package.json +69 -77
- package/dist/chunk-3IC43ZE4.mjs +0 -1
- package/dist/chunk-3KYW6H6M.mjs +0 -1
- package/dist/chunk-Y6SMVGJX.mjs +0 -1
- package/src/errors.ts +0 -16
- package/src/fetch/index.ts +0 -82
- package/src/fetch/types.ts +0 -81
- package/src/index.ts +0 -7
- package/src/treaty/index.ts +0 -380
- package/src/treaty/types.ts +0 -219
- package/src/treaty/utils.ts +0 -18
- package/src/types.ts +0 -58
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var n=class extends Error{constructor(r,s){super(s+"");this.status=r;this.value=s}};var o=(t,e,r)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!r||!Object.keys(r).length)return`${t}${e}`;let s="";for(let[i,u]of Object.entries(r))s+=`${i}=${u}&`;return`${t}${e}?${s.slice(0,-1)}`},l=t=>t.trim().length!==0&&!Number.isNaN(Number(t));export{n as a,o as b,l as c};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as W,b as K,c as x}from"./chunk-R27QELXO.mjs";var R=typeof FileList>"u",$=n=>R?n instanceof Blob:n instanceof FileList||n instanceof File,J=n=>{if(!n)return!1;for(let e in n){if($(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>$(t)))return!0}return!1},T=n=>R?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{let s=new File([t.result],n.name,{lastModified:n.lastModified,type:n.type});e(s)},t.readAsArrayBuffer(n)}),F=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,l=>{if(e==="message"){let r=l.data.toString(),u=r.charCodeAt(0);if(u===47||u===123)try{r=JSON.parse(r)}catch{}else x(r)?r=+r:r==="true"?r=!0:r==="false"&&(r=!1);t({...l,data:r})}else t(l)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},M=(n,e="",t)=>new Proxy(()=>{},{get(s,l,r){return M(n,`${e}/${l.toString()}`,t)},apply(s,l,[r,u={}]=[{},{}]){let f=r!==void 0&&(typeof r!="object"||Array.isArray(r))?r:void 0,{$query:I,$fetch:O,$headers:j,$transform:E,getRaw:C,...P}=r??{};f??=P;let S=e.lastIndexOf("/"),g=e.slice(S+1).toUpperCase(),b=K(n,S===-1?"/":e.slice(0,S),Object.assign(u.query??{},I)),q=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,v=E?Array.isArray(E)?E:[E]:void 0;return v&&(p?p=v.concat(p):p=v),g==="SUBSCRIBE"?new F(b.replace(/^([^]+):\/\//,b.startsWith("https://")?"wss://":"ws://")):(async N=>{let c,L={...t.$fetch?.headers,...O?.headers,...u.headers,...j};if(g!=="GET"&&g!=="HEAD"){c=Object.keys(f).length||Array.isArray(f)?f:void 0;let a=typeof c=="object"||Array.isArray(f);if(a&&J(c)){let h=new FormData;for(let[m,o]of Object.entries(c))if(R)h.append(m,o);else if(o instanceof File)h.append(m,await T(o));else if(o instanceof FileList)for(let d=0;d<o.length;d++)h.append(m,await T(o[d]));else if(Array.isArray(o))for(let d=0;d<o.length;d++){let k=o[d];h.append(m,k instanceof File?await T(k):k)}else h.append(m,o);c=h}else L["content-type"]=a?"application/json":"text/plain",c=a?JSON.stringify(c):f}let i=await q(b,{method:g,body:c,...t.$fetch,...u.fetch,...O,headers:L}),w;if(N.getRaw)return i;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":w=await i.json();break;default:w=await i.text().then(a=>x(a)?+a:a==="true"?!0:a==="false"?!1:a)}let D=i.status>=300||i.status<200?new W(i.status,w):null,A={data:w,error:D,response:i,status:i.status,headers:i.headers};if(p)for(let a of p){let y=a(A);y instanceof Promise&&(y=await y),y!=null&&(A=y)}return A})({getRaw:C})}}),G=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return M(n,s,e)}});export{F as a,G as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as p,c as y}from"./chunk-R27QELXO.mjs";var g=(f,u)=>(s,{query:i,params:h,body:n,...r}={})=>{h&&Object.entries(h).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 l=u?.fetcher||globalThis.fetch,d=i?`?${new URLSearchParams(i).toString()}`:"",c=()=>l(f+s+d,{...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=>y(a)?parseInt(a):a==="true"?!0:a==="false"?!1:a);break}return e.status>300?{data:null,status:e.status,headers:e.headers,retry:c,error:new p(e.status,t)}:{data:t,error:null,status:e.status,headers:e.headers,retry:c}});return c()};export{g as a};
|
package/dist/fetch/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { Elysia } from 'elysia';
|
|
2
2
|
import type { EdenFetch } from './types';
|
|
3
3
|
export type { EdenFetch } from './types';
|
|
4
|
-
export declare const edenFetch: <App extends Elysia<any, any, any, any, any, any
|
|
4
|
+
export declare const edenFetch: <App extends Elysia<any, any, any, any, any, any>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
package/dist/fetch/types.d.ts
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import type { Elysia } from 'elysia';
|
|
2
2
|
import type { EdenFetchError } from '../errors';
|
|
3
|
-
import type { MapError, IsUnknown, IsNever } from '../types';
|
|
4
|
-
type Prettify<T> = {
|
|
5
|
-
[K in keyof T]: T[K];
|
|
6
|
-
} & {};
|
|
3
|
+
import type { MapError, IsUnknown, IsNever, Prettify, TreatyToPath } from '../types';
|
|
7
4
|
export declare namespace EdenFetch {
|
|
8
5
|
type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
9
|
-
|
|
10
|
-
} ? EdenFetch.Fn<Schema
|
|
11
|
-
interface Config {
|
|
6
|
+
_routes: infer Schema extends Record<string, unknown>;
|
|
7
|
+
} ? EdenFetch.Fn<TreatyToPath<Schema>> : 'Please install Elysia before using Eden';
|
|
8
|
+
interface Config extends RequestInit {
|
|
12
9
|
fetcher?: typeof globalThis.fetch;
|
|
13
10
|
}
|
|
14
11
|
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 ? {
|
|
15
12
|
method?: Method;
|
|
16
13
|
} : {
|
|
17
14
|
method: Method;
|
|
18
|
-
}) & (IsNever<Route['params']> extends true ? {
|
|
15
|
+
}) & (IsNever<keyof Route['params']> extends true ? {
|
|
19
16
|
params?: Record<never, string>;
|
|
20
17
|
} : {
|
|
21
18
|
params: Route['params'];
|
|
@@ -31,16 +28,17 @@ export declare namespace EdenFetch {
|
|
|
31
28
|
body: Route['body'];
|
|
32
29
|
} : {
|
|
33
30
|
body?: unknown;
|
|
34
|
-
})) => Promise<Prettify<
|
|
35
|
-
data: Awaited<Route['response'][
|
|
31
|
+
})) => Promise<Prettify<{
|
|
32
|
+
data: Awaited<Route['response'][200]>;
|
|
36
33
|
error: null;
|
|
34
|
+
status: number;
|
|
35
|
+
headers: Record<string, unknown>;
|
|
36
|
+
retry(): Promise<void>;
|
|
37
37
|
} | {
|
|
38
38
|
data: null;
|
|
39
39
|
error: MapError<Route['response']> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string>;
|
|
40
|
-
}) & {
|
|
41
40
|
status: number;
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
headers: Record<string, unknown>;
|
|
42
|
+
retry(): Promise<void>;
|
|
44
43
|
}>>;
|
|
45
44
|
}
|
|
46
|
-
export {};
|
package/dist/fetch.d.mts
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import { Elysia } from 'elysia';
|
|
2
|
-
import { a as IsNever, I as IsUnknown, M as MapError, E as EdenFetchError } from './types-
|
|
2
|
+
import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-BQi-Ff9p.js';
|
|
3
3
|
|
|
4
|
-
type Prettify<T> = {
|
|
5
|
-
[K in keyof T]: T[K];
|
|
6
|
-
} & {};
|
|
7
4
|
declare namespace EdenFetch {
|
|
8
5
|
type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
9
|
-
|
|
10
|
-
} ? EdenFetch.Fn<Schema
|
|
11
|
-
interface Config {
|
|
6
|
+
_routes: infer Schema extends Record<string, unknown>;
|
|
7
|
+
} ? EdenFetch.Fn<TreatyToPath<Schema>> : 'Please install Elysia before using Eden';
|
|
8
|
+
interface Config extends RequestInit {
|
|
12
9
|
fetcher?: typeof globalThis.fetch;
|
|
13
10
|
}
|
|
14
11
|
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 ? {
|
|
15
12
|
method?: Method;
|
|
16
13
|
} : {
|
|
17
14
|
method: Method;
|
|
18
|
-
}) & (IsNever<Route['params']> extends true ? {
|
|
15
|
+
}) & (IsNever<keyof Route['params']> extends true ? {
|
|
19
16
|
params?: Record<never, string>;
|
|
20
17
|
} : {
|
|
21
18
|
params: Route['params'];
|
|
@@ -31,19 +28,21 @@ declare namespace EdenFetch {
|
|
|
31
28
|
body: Route['body'];
|
|
32
29
|
} : {
|
|
33
30
|
body?: unknown;
|
|
34
|
-
})) => Promise<Prettify<
|
|
35
|
-
data: Awaited<Route['response'][
|
|
31
|
+
})) => Promise<Prettify<{
|
|
32
|
+
data: Awaited<Route['response'][200]>;
|
|
36
33
|
error: null;
|
|
34
|
+
status: number;
|
|
35
|
+
headers: Record<string, unknown>;
|
|
36
|
+
retry(): Promise<void>;
|
|
37
37
|
} | {
|
|
38
38
|
data: null;
|
|
39
39
|
error: MapError<Route['response']> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string>;
|
|
40
|
-
}) & {
|
|
41
40
|
status: number;
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
headers: Record<string, unknown>;
|
|
42
|
+
retry(): Promise<void>;
|
|
44
43
|
}>>;
|
|
45
44
|
}
|
|
46
45
|
|
|
47
|
-
declare const edenFetch: <App extends Elysia<any, any, any, any, any, any
|
|
46
|
+
declare const edenFetch: <App extends Elysia<any, any, any, any, any, any>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
|
48
47
|
|
|
49
48
|
export { EdenFetch, edenFetch };
|
package/dist/fetch.d.ts
CHANGED
|
@@ -1,21 +1,18 @@
|
|
|
1
1
|
import { Elysia } from 'elysia';
|
|
2
|
-
import { a as IsNever, I as IsUnknown, M as MapError, E as EdenFetchError } from './types-
|
|
2
|
+
import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-BQi-Ff9p.js';
|
|
3
3
|
|
|
4
|
-
type Prettify<T> = {
|
|
5
|
-
[K in keyof T]: T[K];
|
|
6
|
-
} & {};
|
|
7
4
|
declare namespace EdenFetch {
|
|
8
5
|
type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
9
|
-
|
|
10
|
-
} ? EdenFetch.Fn<Schema
|
|
11
|
-
interface Config {
|
|
6
|
+
_routes: infer Schema extends Record<string, unknown>;
|
|
7
|
+
} ? EdenFetch.Fn<TreatyToPath<Schema>> : 'Please install Elysia before using Eden';
|
|
8
|
+
interface Config extends RequestInit {
|
|
12
9
|
fetcher?: typeof globalThis.fetch;
|
|
13
10
|
}
|
|
14
11
|
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 ? {
|
|
15
12
|
method?: Method;
|
|
16
13
|
} : {
|
|
17
14
|
method: Method;
|
|
18
|
-
}) & (IsNever<Route['params']> extends true ? {
|
|
15
|
+
}) & (IsNever<keyof Route['params']> extends true ? {
|
|
19
16
|
params?: Record<never, string>;
|
|
20
17
|
} : {
|
|
21
18
|
params: Route['params'];
|
|
@@ -31,19 +28,21 @@ declare namespace EdenFetch {
|
|
|
31
28
|
body: Route['body'];
|
|
32
29
|
} : {
|
|
33
30
|
body?: unknown;
|
|
34
|
-
})) => Promise<Prettify<
|
|
35
|
-
data: Awaited<Route['response'][
|
|
31
|
+
})) => Promise<Prettify<{
|
|
32
|
+
data: Awaited<Route['response'][200]>;
|
|
36
33
|
error: null;
|
|
34
|
+
status: number;
|
|
35
|
+
headers: Record<string, unknown>;
|
|
36
|
+
retry(): Promise<void>;
|
|
37
37
|
} | {
|
|
38
38
|
data: null;
|
|
39
39
|
error: MapError<Route['response']> extends infer Errors ? IsNever<Errors> extends true ? EdenFetchError<number, string> : Errors : EdenFetchError<number, string>;
|
|
40
|
-
}) & {
|
|
41
40
|
status: number;
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
headers: Record<string, unknown>;
|
|
42
|
+
retry(): Promise<void>;
|
|
44
43
|
}>>;
|
|
45
44
|
}
|
|
46
45
|
|
|
47
|
-
declare const edenFetch: <App extends Elysia<any, any, any, any, any, any
|
|
46
|
+
declare const edenFetch: <App extends Elysia<any, any, any, any, any, any>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
|
48
47
|
|
|
49
48
|
export { EdenFetch, edenFetch };
|
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 x=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var E=(e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})},$=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of x(t))!b.call(e,s)&&s!==n&&p(e,s,{get:()=>t[s],enumerable:!(a=m(t,s))||a.enumerable});return e};var S=e=>$(p({},"__esModule",{value:!0}),e);var N={};E(N,{edenFetch:()=>j});var l=class extends Error{constructor(n,a){super(a+"");this.status=n;this.value=a}};var y=e=>e.trim().length!==0&&!Number.isNaN(Number(e));var j=(e,t)=>(n,{query:a,params:s,body:u,...c}={})=>{s&&Object.entries(s).forEach(([r,i])=>{n=n.replace(`:${r}`,i)});let f=c.headers?.["Content-Type"];if(!f||f==="application/json")try{u=JSON.stringify(u)}catch{}let d=t?.fetcher||globalThis.fetch,g=a?`?${new URLSearchParams(a).toString()}`:"",h=()=>d(e+n+g,{...c,method:c.method?.toUpperCase()||"GET",headers:u?{"content-type":"application/json",...c.headers}:c.headers,body:u}).then(async r=>{let i;switch(r.headers.get("Content-Type")?.split(";")[0]){case"application/json":i=await r.json();break;default:i=await r.text().then(o=>y(o)?parseInt(o):o==="true"?!0:o==="false"?!1:o);break}return r.status>300?{data:null,status:r.status,headers:r.headers,retry:h,error:new l(r.status,i)}:{data:i,error:null,status:r.status,headers:r.headers,retry:h}});return h()};return S(N);})();
|
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 x=Object.getOwnPropertyNames;var b=Object.prototype.hasOwnProperty;var E=(e,t)=>{for(var n in t)p(e,n,{get:t[n],enumerable:!0})},$=(e,t,n,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of x(t))!b.call(e,s)&&s!==n&&p(e,s,{get:()=>t[s],enumerable:!(a=m(t,s))||a.enumerable});return e};var S=e=>$(p({},"__esModule",{value:!0}),e);var N={};E(N,{edenFetch:()=>j});module.exports=S(N);var l=class extends Error{constructor(n,a){super(a+"");this.status=n;this.value=a}};var y=e=>e.trim().length!==0&&!Number.isNaN(Number(e));var j=(e,t)=>(n,{query:a,params:s,body:u,...c}={})=>{s&&Object.entries(s).forEach(([r,i])=>{n=n.replace(`:${r}`,i)});let f=c.headers?.["Content-Type"];if(!f||f==="application/json")try{u=JSON.stringify(u)}catch{}let d=t?.fetcher||globalThis.fetch,g=a?`?${new URLSearchParams(a).toString()}`:"",h=()=>d(e+n+g,{...c,method:c.method?.toUpperCase()||"GET",headers:u?{"content-type":"application/json",...c.headers}:c.headers,body:u}).then(async r=>{let i;switch(r.headers.get("Content-Type")?.split(";")[0]){case"application/json":i=await r.json();break;default:i=await r.text().then(o=>y(o)?parseInt(o):o==="true"?!0:o==="false"?!1:o);break}return r.status>300?{data:null,status:r.status,headers:r.headers,retry:h,error:new l(r.status,i)}:{data:i,error:null,status:r.status,headers:r.headers,retry:h}});return h()};0&&(module.exports={edenFetch});
|
package/dist/fetch.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a}from"./chunk-
|
|
1
|
+
import{a}from"./chunk-YTAZNCPF.mjs";import"./chunk-R27QELXO.mjs";export{a as edenFetch};
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,70 @@
|
|
|
1
1
|
export { edenTreaty } from './treaty.mjs';
|
|
2
|
+
import { Elysia } from 'elysia';
|
|
3
|
+
import { P as Prettify } from './types-BQi-Ff9p.js';
|
|
2
4
|
export { edenFetch } from './fetch.mjs';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
|
|
6
|
+
/// <reference lib="dom" />
|
|
7
|
+
|
|
8
|
+
type Files = File | FileList;
|
|
9
|
+
type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
|
|
10
|
+
[K in keyof RecordType]: RecordType[K] extends Blob | Blob[] ? Files : RecordType[K];
|
|
11
|
+
} & {};
|
|
12
|
+
type MaybeArray<T> = T | T[];
|
|
13
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
14
|
+
declare namespace EdenTreaty2 {
|
|
15
|
+
interface TreatyParam {
|
|
16
|
+
fetch?: RequestInit;
|
|
17
|
+
}
|
|
18
|
+
export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
19
|
+
_routes: infer Schema extends Record<string, any>;
|
|
20
|
+
} ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
|
|
21
|
+
export type Sign<in out Route extends Record<string, any>> = {
|
|
22
|
+
[K in keyof Route as K extends '' ? 'index' : K extends `:${string}` ? never : K]: Route[K] extends {
|
|
23
|
+
body: infer Body;
|
|
24
|
+
headers: infer Headers;
|
|
25
|
+
query: infer Query;
|
|
26
|
+
response: infer Response extends Record<number, unknown>;
|
|
27
|
+
} ? (undefined extends Headers ? {
|
|
28
|
+
headers?: Record<string, unknown>;
|
|
29
|
+
} : {
|
|
30
|
+
headers: Headers;
|
|
31
|
+
}) & (undefined extends Query ? {
|
|
32
|
+
query?: Record<string, unknown>;
|
|
33
|
+
} : {
|
|
34
|
+
query: Query;
|
|
35
|
+
}) extends infer Param ? {} extends Param ? undefined extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : never : keyof Route[K] extends `:${infer Param}` ? (params: {
|
|
36
|
+
[param in Param]: string;
|
|
37
|
+
}) => Prettify<Prettify<Sign<Route[K]>> & Sign<Route[K][`:${Param}`]>> : Prettify<Sign<Route[K]>>;
|
|
38
|
+
};
|
|
39
|
+
export interface Config extends Omit<RequestInit, 'headers'> {
|
|
40
|
+
fetcher?: typeof fetch;
|
|
41
|
+
headers?: RequestInit['headers'] | MaybeArray<(path: string, options: RequestInit) => RequestInit['headers'] | void>;
|
|
42
|
+
onRequest?: MaybeArray<(path: string, options: FetchRequestInit) => MaybePromise<unknown>>;
|
|
43
|
+
onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
|
|
44
|
+
}
|
|
45
|
+
type TreatyResponse<Response extends Record<number, unknown>> = {
|
|
46
|
+
data: Response[200];
|
|
47
|
+
error: null;
|
|
48
|
+
} | {
|
|
49
|
+
data: null;
|
|
50
|
+
error: 200 extends keyof Response ? {
|
|
51
|
+
status: unknown;
|
|
52
|
+
value: unknown;
|
|
53
|
+
} : {
|
|
54
|
+
[Status in keyof Response as Status extends 200 ? never : Status]: {
|
|
55
|
+
status: Status;
|
|
56
|
+
value: Response[Status];
|
|
57
|
+
};
|
|
58
|
+
}[Exclude<keyof Response, 200>];
|
|
59
|
+
};
|
|
60
|
+
export interface OnMessage<Data = unknown> extends MessageEvent {
|
|
61
|
+
data: Data;
|
|
62
|
+
rawData: MessageEvent['data'];
|
|
63
|
+
}
|
|
64
|
+
export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
|
|
65
|
+
export { };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare const treaty: <const App extends Elysia<any, any, any, any, any, any>>(domain: string | App, config?: EdenTreaty2.Config) => EdenTreaty2.Create<App>;
|
|
69
|
+
|
|
70
|
+
export { treaty };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,70 @@
|
|
|
1
1
|
export { edenTreaty } from './treaty.js';
|
|
2
|
+
import { Elysia } from 'elysia';
|
|
3
|
+
import { P as Prettify } from './types-BQi-Ff9p.js';
|
|
2
4
|
export { edenFetch } from './fetch.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
+
|
|
6
|
+
/// <reference lib="dom" />
|
|
7
|
+
|
|
8
|
+
type Files = File | FileList;
|
|
9
|
+
type ReplaceBlobWithFiles<in out RecordType extends Record<string, unknown>> = {
|
|
10
|
+
[K in keyof RecordType]: RecordType[K] extends Blob | Blob[] ? Files : RecordType[K];
|
|
11
|
+
} & {};
|
|
12
|
+
type MaybeArray<T> = T | T[];
|
|
13
|
+
type MaybePromise<T> = T | Promise<T>;
|
|
14
|
+
declare namespace EdenTreaty2 {
|
|
15
|
+
interface TreatyParam {
|
|
16
|
+
fetch?: RequestInit;
|
|
17
|
+
}
|
|
18
|
+
export type Create<App extends Elysia<any, any, any, any, any, any>> = App extends {
|
|
19
|
+
_routes: infer Schema extends Record<string, any>;
|
|
20
|
+
} ? Prettify<Sign<Schema>> : 'Please install Elysia before using Eden';
|
|
21
|
+
export type Sign<in out Route extends Record<string, any>> = {
|
|
22
|
+
[K in keyof Route as K extends '' ? 'index' : K extends `:${string}` ? never : K]: Route[K] extends {
|
|
23
|
+
body: infer Body;
|
|
24
|
+
headers: infer Headers;
|
|
25
|
+
query: infer Query;
|
|
26
|
+
response: infer Response extends Record<number, unknown>;
|
|
27
|
+
} ? (undefined extends Headers ? {
|
|
28
|
+
headers?: Record<string, unknown>;
|
|
29
|
+
} : {
|
|
30
|
+
headers: Headers;
|
|
31
|
+
}) & (undefined extends Query ? {
|
|
32
|
+
query?: Record<string, unknown>;
|
|
33
|
+
} : {
|
|
34
|
+
query: Query;
|
|
35
|
+
}) extends infer Param ? {} extends Param ? undefined extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : (body: Body extends Record<string, unknown> ? ReplaceBlobWithFiles<Body> : Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<Response>> : never : keyof Route[K] extends `:${infer Param}` ? (params: {
|
|
36
|
+
[param in Param]: string;
|
|
37
|
+
}) => Prettify<Prettify<Sign<Route[K]>> & Sign<Route[K][`:${Param}`]>> : Prettify<Sign<Route[K]>>;
|
|
38
|
+
};
|
|
39
|
+
export interface Config extends Omit<RequestInit, 'headers'> {
|
|
40
|
+
fetcher?: typeof fetch;
|
|
41
|
+
headers?: RequestInit['headers'] | MaybeArray<(path: string, options: RequestInit) => RequestInit['headers'] | void>;
|
|
42
|
+
onRequest?: MaybeArray<(path: string, options: FetchRequestInit) => MaybePromise<unknown>>;
|
|
43
|
+
onResponse?: MaybeArray<(response: Response) => MaybePromise<unknown>>;
|
|
44
|
+
}
|
|
45
|
+
type TreatyResponse<Response extends Record<number, unknown>> = {
|
|
46
|
+
data: Response[200];
|
|
47
|
+
error: null;
|
|
48
|
+
} | {
|
|
49
|
+
data: null;
|
|
50
|
+
error: 200 extends keyof Response ? {
|
|
51
|
+
status: unknown;
|
|
52
|
+
value: unknown;
|
|
53
|
+
} : {
|
|
54
|
+
[Status in keyof Response as Status extends 200 ? never : Status]: {
|
|
55
|
+
status: Status;
|
|
56
|
+
value: Response[Status];
|
|
57
|
+
};
|
|
58
|
+
}[Exclude<keyof Response, 200>];
|
|
59
|
+
};
|
|
60
|
+
export interface OnMessage<Data = unknown> extends MessageEvent {
|
|
61
|
+
data: Data;
|
|
62
|
+
rawData: MessageEvent['data'];
|
|
63
|
+
}
|
|
64
|
+
export type WSEvent<K extends keyof WebSocketEventMap, Data = unknown> = K extends 'message' ? OnMessage<Data> : WebSocketEventMap[K];
|
|
65
|
+
export { };
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
declare const treaty: <const App extends Elysia<any, any, any, any, any, any>>(domain: string | App, config?: EdenTreaty2.Config) => EdenTreaty2.Create<App>;
|
|
69
|
+
|
|
70
|
+
export { treaty };
|
package/dist/index.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Eden=(()=>{var
|
|
1
|
+
"use strict";var Eden=(()=>{var C=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var ee=Object.prototype.hasOwnProperty;var te=(t,e)=>{for(var n in e)C(t,n,{get:e[n],enumerable:!0})},ne=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of Z(e))!ee.call(t,c)&&c!==n&&C(t,c,{get:()=>e[c],enumerable:!(s=Y(e,c))||s.enumerable});return t};var re=t=>ne(C({},"__esModule",{value:!0}),t);var oe={};te(oe,{edenFetch:()=>z,edenTreaty:()=>_,treaty:()=>V});var S=class extends Error{constructor(n,s){super(s+"");this.status=n;this.value=s}};var B=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let s="";for(let[c,r]of Object.entries(n))s+=`${c}=${r}&`;return`${t}${e}?${s.slice(0,-1)}`},v=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var q=typeof FileList>"u",H=t=>q?t instanceof Blob:t instanceof FileList||t instanceof File,se=t=>{if(!t)return!1;for(let e in t){if(H(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>H(n)))return!0}return!1},I=t=>q?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(s)},n.readAsArrayBuffer(t)}),P=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,s){return this.addEventListener(e,n,s)}off(e,n,s){return this.ws.removeEventListener(e,n,s),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let r=c.data.toString(),i=r.charCodeAt(0);if(i===47||i===123)try{r=JSON.parse(r)}catch{}else v(r)?r=+r:r==="true"?r=!0:r==="false"&&(r=!1);n({...c,data:r})}else n(c)},s),this}removeEventListener(e,n,s){return this.off(e,n,s),this}close(){return this.ws.close(),this}},U=(t,e="",n)=>new Proxy(()=>{},{get(s,c,r){return U(t,`${e}/${c.toString()}`,n)},apply(s,c,[r,i={}]=[{},{}]){let u=r!==void 0&&(typeof r!="object"||Array.isArray(r))?r:void 0,{$query:L,$fetch:E,$headers:x,$transform:a,getRaw:p,...d}=r??{};u??=d;let R=e.lastIndexOf("/"),b=e.slice(R+1).toUpperCase(),A=B(t,R===-1?"/":e.slice(0,R),Object.assign(i.query??{},L)),h=n.fetcher??fetch,l=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,F=a?Array.isArray(a)?a:[a]:void 0;return F&&(l?l=F.concat(l):l=F),b==="SUBSCRIBE"?new P(A.replace(/^([^]+):\/\//,A.startsWith("https://")?"wss://":"ws://")):(async o=>{let f,m={...n.$fetch?.headers,...E?.headers,...i.headers,...x};if(b!=="GET"&&b!=="HEAD"){f=Object.keys(u).length||Array.isArray(u)?u:void 0;let g=typeof f=="object"||Array.isArray(u);if(g&&se(f)){let W=new FormData;for(let[j,w]of Object.entries(f))if(q)W.append(j,w);else if(w instanceof File)W.append(j,await I(w));else if(w instanceof FileList)for(let O=0;O<w.length;O++)W.append(j,await I(w[O]));else if(Array.isArray(w))for(let O=0;O<w.length;O++){let N=w[O];W.append(j,N instanceof File?await I(N):N)}else W.append(j,w);f=W}else m["content-type"]=g?"application/json":"text/plain",f=g?JSON.stringify(f):u}let y=await h(A,{method:b,body:f,...n.$fetch,...i.fetch,...E,headers:m}),k;if(o.getRaw)return y;switch(y.headers.get("Content-Type")?.split(";")[0]){case"application/json":k=await y.json();break;default:k=await y.text().then(g=>v(g)?+g:g==="true"?!0:g==="false"?!1:g)}let X=y.status>=300||y.status<200?new S(y.status,k):null,M={data:k,error:X,response:y,status:y.status,headers:y.headers};if(l)for(let g of l){let T=g(M);T instanceof Promise&&(T=await T),T!=null&&(M=T)}return M})({getRaw:p})}}),_=(t,e={fetcher:fetch})=>new Proxy({},{get(n,s){return U(t,s,e)}});var $=class{constructor(e){this.url=e;this.ws=new WebSocket(e)}ws;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,s){return this.addEventListener(e,n,s)}off(e,n,s){return this.ws.removeEventListener(e,n,s),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let r=c.data.toString(),i=r.charCodeAt(0);if(i===47||i===123)try{r=JSON.parse(r)}catch{}else v(r)?r=+r:r==="true"?r=!0:r==="false"&&(r=!1);n({...c,data:r})}else n(c)},s),this}removeEventListener(e,n,s){return this.off(e,n,s),this}close(){return this.ws.close(),this}};var ae=["get","post","put","delete","patch","options","head","connect","subscribe"],D=typeof FileList>"u",G=t=>D?t instanceof Blob:t instanceof FileList||t instanceof File,ie=t=>{if(!t)return!1;for(let e in t)if(G(t[e])||Array.isArray(t[e])&&t[e].find(G))return!0;return!1},J=t=>D?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(s)},n.readAsArrayBuffer(t)}),K=(t,e,n=[],s)=>new Proxy(()=>{},{get(c,r){return K(t,e,[...n,r],s)},apply(c,r,[i,u]){return!i||u||typeof i=="object"&&Object.keys(i).length!==1||ae.includes(n.at(-1))?(async()=>{let L=n.pop(),E="/"+n.join("/");if(L==="subscribe")return new $(t.replace(/^([^]+):\/\//,t.startsWith("https://")?"wss://":"ws://")+E);let{fetcher:x=fetch,headers:a,onRequest:p,onResponse:d,...R}=e;if(typeof a=="function"&&!(a instanceof Headers))a=a(E,u)??void 0;else if(Array.isArray(a)&&a.every(o=>typeof o=="function"))for(let o of a)a=o(E,u)??void 0;else if(a instanceof Headers){a={};for(let[o,f]of Object.entries(a))a[o]=f}let b=(a instanceof Headers?a.get("content-type"):Array.isArray(a)?a.find(o=>Array.isArray(o)&&o[0]==="headers"?o[1]:!1):typeof a=="function"?a(E,u):a?.contentType)||u?.headers?.contentType;if(!b)if(typeof i=="object")b="application/json",i=JSON.stringify(i);else if(ie(i)){let o=new FormData;for(let[f,m]of Object.entries(i)){if(D){o.append(f,m);continue}if(m instanceof File){o.append(f,await J(m));continue}if(m instanceof FileList){for(let y=0;y<m.length;y++)o.append(f,await J(m[y]));continue}if(Array.isArray(m)){for(let y=0;y<m.length;y++){let k=m[y];o.append(f,k instanceof File?await J(k):k)}continue}o.append(f,m)}i=o}else b="text/plain";let A={method:L,body:i,...R,headers:{...a,"content-type":b}};if(p){Array.isArray(p)||(p=[p]);for(let o of p){let f=await o(E,A);typeof f=="object"&&Object.assign(A,f)}}let h=await(s?.handle(new Request(t+E,A))??x(t+E,A)),l,F;if(d){Array.isArray(d)||(d=[d]);for(let o of d)try{if(l=await o(h.clone()),l!==void 0)break}catch(f){f instanceof S?F=f:F=new S(500,f);break}}if(l===void 0)if(h.status>=300||h.status<200)new S(h.status,l);else switch(h.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await h.json();break;case"application/octet-stream":l=await h.arrayBuffer();break;default:l=await h.text().then(o=>v(o)?+o:o==="true"?!0:o==="false"?!1:o)}return{data:l,error:F,response:h,status:h.status,headers:h.headers}})():typeof i=="object"?K(t,e,[...n,Object.values(i)[0]],s):K(t,e,n)}}),V=(t,e={})=>typeof t=="string"?(t.includes("://")||(t=(["localhost","127.0.0.1","0.0.0.0"].find(n=>t.includes(n))?"http://":"https://")+t),t.endsWith("/")&&(t=t.slice(0,-1)),K(t,e)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),K("http://e.ly",e,[],t));var z=(t,e)=>(n,{query:s,params:c,body:r,...i}={})=>{c&&Object.entries(c).forEach(([a,p])=>{n=n.replace(`:${a}`,p)});let u=i.headers?.["Content-Type"];if(!u||u==="application/json")try{r=JSON.stringify(r)}catch{}let L=e?.fetcher||globalThis.fetch,E=s?`?${new URLSearchParams(s).toString()}`:"",x=()=>L(t+n+E,{...i,method:i.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...i.headers}:i.headers,body:r}).then(async a=>{let p;switch(a.headers.get("Content-Type")?.split(";")[0]){case"application/json":p=await a.json();break;default:p=await a.text().then(d=>v(d)?parseInt(d):d==="true"?!0:d==="false"?!1:d);break}return a.status>300?{data:null,status:a.status,headers:a.headers,retry:x,error:new S(a.status,p)}:{data:p,error:null,status:a.status,headers:a.headers,retry:x}});return x()};return re(oe);})();
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var C=Object.defineProperty;var Y=Object.getOwnPropertyDescriptor;var Z=Object.getOwnPropertyNames;var ee=Object.prototype.hasOwnProperty;var te=(t,e)=>{for(var n in e)C(t,n,{get:e[n],enumerable:!0})},ne=(t,e,n,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let c of Z(e))!ee.call(t,c)&&c!==n&&C(t,c,{get:()=>e[c],enumerable:!(s=Y(e,c))||s.enumerable});return t};var re=t=>ne(C({},"__esModule",{value:!0}),t);var oe={};te(oe,{edenFetch:()=>z,edenTreaty:()=>_,treaty:()=>V});module.exports=re(oe);var S=class extends Error{constructor(n,s){super(s+"");this.status=n;this.value=s}};var B=(t,e,n)=>{if(t.endsWith("/")||(t+="/"),e==="index"&&(e=""),!n||!Object.keys(n).length)return`${t}${e}`;let s="";for(let[c,r]of Object.entries(n))s+=`${c}=${r}&`;return`${t}${e}?${s.slice(0,-1)}`},v=t=>t.trim().length!==0&&!Number.isNaN(Number(t));var q=typeof FileList>"u",H=t=>q?t instanceof Blob:t instanceof FileList||t instanceof File,se=t=>{if(!t)return!1;for(let e in t){if(H(t[e]))return!0;if(Array.isArray(t[e])&&t[e].find(n=>H(n)))return!0}return!1},I=t=>q?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(s)},n.readAsArrayBuffer(t)}),P=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,s){return this.addEventListener(e,n,s)}off(e,n,s){return this.ws.removeEventListener(e,n,s),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let r=c.data.toString(),i=r.charCodeAt(0);if(i===47||i===123)try{r=JSON.parse(r)}catch{}else v(r)?r=+r:r==="true"?r=!0:r==="false"&&(r=!1);n({...c,data:r})}else n(c)},s),this}removeEventListener(e,n,s){return this.off(e,n,s),this}close(){return this.ws.close(),this}},U=(t,e="",n)=>new Proxy(()=>{},{get(s,c,r){return U(t,`${e}/${c.toString()}`,n)},apply(s,c,[r,i={}]=[{},{}]){let u=r!==void 0&&(typeof r!="object"||Array.isArray(r))?r:void 0,{$query:L,$fetch:E,$headers:x,$transform:a,getRaw:p,...d}=r??{};u??=d;let R=e.lastIndexOf("/"),b=e.slice(R+1).toUpperCase(),A=B(t,R===-1?"/":e.slice(0,R),Object.assign(i.query??{},L)),h=n.fetcher??fetch,l=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,F=a?Array.isArray(a)?a:[a]:void 0;return F&&(l?l=F.concat(l):l=F),b==="SUBSCRIBE"?new P(A.replace(/^([^]+):\/\//,A.startsWith("https://")?"wss://":"ws://")):(async o=>{let f,m={...n.$fetch?.headers,...E?.headers,...i.headers,...x};if(b!=="GET"&&b!=="HEAD"){f=Object.keys(u).length||Array.isArray(u)?u:void 0;let g=typeof f=="object"||Array.isArray(u);if(g&&se(f)){let W=new FormData;for(let[j,w]of Object.entries(f))if(q)W.append(j,w);else if(w instanceof File)W.append(j,await I(w));else if(w instanceof FileList)for(let O=0;O<w.length;O++)W.append(j,await I(w[O]));else if(Array.isArray(w))for(let O=0;O<w.length;O++){let N=w[O];W.append(j,N instanceof File?await I(N):N)}else W.append(j,w);f=W}else m["content-type"]=g?"application/json":"text/plain",f=g?JSON.stringify(f):u}let y=await h(A,{method:b,body:f,...n.$fetch,...i.fetch,...E,headers:m}),k;if(o.getRaw)return y;switch(y.headers.get("Content-Type")?.split(";")[0]){case"application/json":k=await y.json();break;default:k=await y.text().then(g=>v(g)?+g:g==="true"?!0:g==="false"?!1:g)}let X=y.status>=300||y.status<200?new S(y.status,k):null,M={data:k,error:X,response:y,status:y.status,headers:y.headers};if(l)for(let g of l){let T=g(M);T instanceof Promise&&(T=await T),T!=null&&(M=T)}return M})({getRaw:p})}}),_=(t,e={fetcher:fetch})=>new Proxy({},{get(n,s){return U(t,s,e)}});var $=class{constructor(e){this.url=e;this.ws=new WebSocket(e)}ws;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,s){return this.addEventListener(e,n,s)}off(e,n,s){return this.ws.removeEventListener(e,n,s),this}subscribe(e,n){return this.addEventListener("message",e,n)}addEventListener(e,n,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let r=c.data.toString(),i=r.charCodeAt(0);if(i===47||i===123)try{r=JSON.parse(r)}catch{}else v(r)?r=+r:r==="true"?r=!0:r==="false"&&(r=!1);n({...c,data:r})}else n(c)},s),this}removeEventListener(e,n,s){return this.off(e,n,s),this}close(){return this.ws.close(),this}};var ae=["get","post","put","delete","patch","options","head","connect","subscribe"],D=typeof FileList>"u",G=t=>D?t instanceof Blob:t instanceof FileList||t instanceof File,ie=t=>{if(!t)return!1;for(let e in t)if(G(t[e])||Array.isArray(t[e])&&t[e].find(G))return!0;return!1},J=t=>D?t:new Promise(e=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],t.name,{lastModified:t.lastModified,type:t.type});e(s)},n.readAsArrayBuffer(t)}),K=(t,e,n=[],s)=>new Proxy(()=>{},{get(c,r){return K(t,e,[...n,r],s)},apply(c,r,[i,u]){return!i||u||typeof i=="object"&&Object.keys(i).length!==1||ae.includes(n.at(-1))?(async()=>{let L=n.pop(),E="/"+n.join("/");if(L==="subscribe")return new $(t.replace(/^([^]+):\/\//,t.startsWith("https://")?"wss://":"ws://")+E);let{fetcher:x=fetch,headers:a,onRequest:p,onResponse:d,...R}=e;if(typeof a=="function"&&!(a instanceof Headers))a=a(E,u)??void 0;else if(Array.isArray(a)&&a.every(o=>typeof o=="function"))for(let o of a)a=o(E,u)??void 0;else if(a instanceof Headers){a={};for(let[o,f]of Object.entries(a))a[o]=f}let b=(a instanceof Headers?a.get("content-type"):Array.isArray(a)?a.find(o=>Array.isArray(o)&&o[0]==="headers"?o[1]:!1):typeof a=="function"?a(E,u):a?.contentType)||u?.headers?.contentType;if(!b)if(typeof i=="object")b="application/json",i=JSON.stringify(i);else if(ie(i)){let o=new FormData;for(let[f,m]of Object.entries(i)){if(D){o.append(f,m);continue}if(m instanceof File){o.append(f,await J(m));continue}if(m instanceof FileList){for(let y=0;y<m.length;y++)o.append(f,await J(m[y]));continue}if(Array.isArray(m)){for(let y=0;y<m.length;y++){let k=m[y];o.append(f,k instanceof File?await J(k):k)}continue}o.append(f,m)}i=o}else b="text/plain";let A={method:L,body:i,...R,headers:{...a,"content-type":b}};if(p){Array.isArray(p)||(p=[p]);for(let o of p){let f=await o(E,A);typeof f=="object"&&Object.assign(A,f)}}let h=await(s?.handle(new Request(t+E,A))??x(t+E,A)),l,F;if(d){Array.isArray(d)||(d=[d]);for(let o of d)try{if(l=await o(h.clone()),l!==void 0)break}catch(f){f instanceof S?F=f:F=new S(500,f);break}}if(l===void 0)if(h.status>=300||h.status<200)new S(h.status,l);else switch(h.headers.get("Content-Type")?.split(";")[0]){case"application/json":l=await h.json();break;case"application/octet-stream":l=await h.arrayBuffer();break;default:l=await h.text().then(o=>v(o)?+o:o==="true"?!0:o==="false"?!1:o)}return{data:l,error:F,response:h,status:h.status,headers:h.headers}})():typeof i=="object"?K(t,e,[...n,Object.values(i)[0]],s):K(t,e,n)}}),V=(t,e={})=>typeof t=="string"?(t.includes("://")||(t=(["localhost","127.0.0.1","0.0.0.0"].find(n=>t.includes(n))?"http://":"https://")+t),t.endsWith("/")&&(t=t.slice(0,-1)),K(t,e)):(typeof window<"u"&&console.warn("Elysia instance server found on client side, this is not recommended for security reason. Use generic type instead."),K("http://e.ly",e,[],t));var z=(t,e)=>(n,{query:s,params:c,body:r,...i}={})=>{c&&Object.entries(c).forEach(([a,p])=>{n=n.replace(`:${a}`,p)});let u=i.headers?.["Content-Type"];if(!u||u==="application/json")try{r=JSON.stringify(r)}catch{}let L=e?.fetcher||globalThis.fetch,E=s?`?${new URLSearchParams(s).toString()}`:"",x=()=>L(t+n+E,{...i,method:i.method?.toUpperCase()||"GET",headers:r?{"content-type":"application/json",...i.headers}:i.headers,body:r}).then(async a=>{let p;switch(a.headers.get("Content-Type")?.split(";")[0]){case"application/json":p=await a.json();break;default:p=await a.text().then(d=>v(d)?parseInt(d):d==="true"?!0:d==="false"?!1:d);break}return a.status>300?{data:null,status:a.status,headers:a.headers,retry:x,error:new S(a.status,p)}:{data:p,error:null,status:a.status,headers:a.headers,retry:x}});return x()};0&&(module.exports={edenFetch,edenTreaty,treaty});
|
package/dist/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as
|
|
1
|
+
import{b as j}from"./chunk-VMCNRAXS.mjs";import{a as M}from"./chunk-YTAZNCPF.mjs";import{a as S,c as A}from"./chunk-R27QELXO.mjs";var b=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(r=>this.send(r)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,r,f){return this.addEventListener(t,r,f)}off(t,r,f){return this.ws.removeEventListener(t,r,f),this}subscribe(t,r){return this.addEventListener("message",t,r)}addEventListener(t,r,f){return this.ws.addEventListener(t,d=>{if(t==="message"){let a=d.data.toString(),i=a.charCodeAt(0);if(i===47||i===123)try{a=JSON.parse(a)}catch{}else A(a)?a=+a:a==="true"?a=!0:a==="false"&&(a=!1);r({...d,data:a})}else r(d)},f),this}removeEventListener(t,r,f){return this.off(t,r,f),this}close(){return this.ws.close(),this}};var R=["get","post","put","delete","patch","options","head","connect","subscribe"],W=typeof FileList>"u",L=e=>W?e instanceof Blob:e instanceof FileList||e instanceof File,N=e=>{if(!e)return!1;for(let t in e)if(L(e[t])||Array.isArray(e[t])&&e[t].find(L))return!0;return!1},T=e=>W?e:new Promise(t=>{let r=new FileReader;r.onload=()=>{let f=new File([r.result],e.name,{lastModified:e.lastModified,type:e.type});t(f)},r.readAsArrayBuffer(e)}),v=(e,t,r=[],f)=>new Proxy(()=>{},{get(d,a){return v(e,t,[...r,a],f)},apply(d,a,[i,h]){return!i||h||typeof i=="object"&&Object.keys(i).length!==1||R.includes(r.at(-1))?(async()=>{let x=r.pop(),l="/"+r.join("/");if(x==="subscribe")return new b(e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":"ws://")+l);let{fetcher:O=fetch,headers:s,onRequest:E,onResponse:m,...K}=t;if(typeof s=="function"&&!(s instanceof Headers))s=s(l,h)??void 0;else if(Array.isArray(s)&&s.every(n=>typeof n=="function"))for(let n of s)s=n(l,h)??void 0;else if(s instanceof Headers){s={};for(let[n,o]of Object.entries(s))s[n]=o}let w=(s instanceof Headers?s.get("content-type"):Array.isArray(s)?s.find(n=>Array.isArray(n)&&n[0]==="headers"?n[1]:!1):typeof s=="function"?s(l,h):s?.contentType)||h?.headers?.contentType;if(!w)if(typeof i=="object")w="application/json",i=JSON.stringify(i);else if(N(i)){let n=new FormData;for(let[o,y]of Object.entries(i)){if(W){n.append(o,y);continue}if(y instanceof File){n.append(o,await T(y));continue}if(y instanceof FileList){for(let u=0;u<y.length;u++)n.append(o,await T(y[u]));continue}if(Array.isArray(y)){for(let u=0;u<y.length;u++){let F=y[u];n.append(o,F instanceof File?await T(F):F)}continue}n.append(o,y)}i=n}else w="text/plain";let g={method:x,body:i,...K,headers:{...s,"content-type":w}};if(E){Array.isArray(E)||(E=[E]);for(let n of E){let o=await n(l,g);typeof o=="object"&&Object.assign(g,o)}}let c=await(f?.handle(new Request(e+l,g))??O(e+l,g)),p,k;if(m){Array.isArray(m)||(m=[m]);for(let n of m)try{if(p=await n(c.clone()),p!==void 0)break}catch(o){o instanceof S?k=o:k=new S(500,o);break}}if(p===void 0)if(c.status>=300||c.status<200)new S(c.status,p);else switch(c.headers.get("Content-Type")?.split(";")[0]){case"application/json":p=await c.json();break;case"application/octet-stream":p=await c.arrayBuffer();break;default:p=await c.text().then(n=>A(n)?+n:n==="true"?!0:n==="false"?!1:n)}return{data:p,error:k,response:c,status:c.status,headers:c.headers}})():typeof i=="object"?v(e,t,[...r,Object.values(i)[0]],f):v(e,t,r)}}),C=(e,t={})=>typeof e=="string"?(e.includes("://")||(e=(["localhost","127.0.0.1","0.0.0.0"].find(r=>e.includes(r))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1)),v(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."),v("http://e.ly",t,[],e));export{M as edenFetch,j as edenTreaty,C as treaty};
|
package/dist/treaty/index.d.ts
CHANGED
|
@@ -13,4 +13,4 @@ export declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
|
|
|
13
13
|
removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
|
|
14
14
|
close(): this;
|
|
15
15
|
}
|
|
16
|
-
export declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any
|
|
16
|
+
export declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
|