@elysiajs/eden 0.7.7 → 0.8.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/.github/FUNDING.yaml +1 -0
- package/.github/workflows/ci.yml +28 -0
- package/README.md +1 -1
- package/dist/chunk-3IC43ZE4.mjs +1 -0
- package/dist/fetch/index.d.ts +1 -1
- package/dist/fetch/types.d.ts +1 -1
- package/dist/fetch.d.mts +2 -2
- package/dist/fetch.d.ts +2 -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/utils.d.ts +1 -0
- package/dist/treaty.d.mts +1 -1
- package/dist/treaty.d.ts +1 -1
- package/dist/treaty.global.js +1 -1
- package/dist/treaty.js +1 -1
- package/dist/treaty.mjs +1 -1
- package/package.json +77 -73
- package/src/fetch/types.ts +1 -1
- package/src/treaty/index.ts +28 -24
- package/src/treaty/utils.ts +3 -0
- package/dist/chunk-NZCTJ6S3.mjs +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
github: SaltyAom
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Build and Test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
name: Build and test code
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
steps:
|
|
13
|
+
- name: Checkout
|
|
14
|
+
uses: actions/checkout@v4
|
|
15
|
+
|
|
16
|
+
- name: Setup bun
|
|
17
|
+
uses: oven-sh/setup-bun@v1
|
|
18
|
+
with:
|
|
19
|
+
bun-version: latest
|
|
20
|
+
|
|
21
|
+
- name: Install packages
|
|
22
|
+
run: bun install
|
|
23
|
+
|
|
24
|
+
- name: Build code
|
|
25
|
+
run: bun run build
|
|
26
|
+
|
|
27
|
+
- name: Test
|
|
28
|
+
run: bun run test
|
package/README.md
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as L}from"./chunk-Y6SMVGJX.mjs";var W=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let s="";for(let[c,r]of Object.entries(t))s+=`${c}=${r}&`;return`${n}${e}?${s.slice(0,-1)}`},k=n=>!Number.isNaN(parseInt(n));var F=typeof FileList>"u",K=n=>F?n instanceof Blob:n instanceof FileList||n instanceof File,J=n=>{if(!n)return!1;for(let e in n){if(K(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>K(t)))return!0}return!1},T=n=>F?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)}),$=class{ws;url;constructor(e){this.ws=new WebSocket(e),this.url=e}send(e){return Array.isArray(e)?(e.forEach(t=>this.send(t)),this):(this.ws.send(typeof e=="object"?JSON.stringify(e):e.toString()),this)}on(e,t,s){return this.addEventListener(e,t,s)}off(e,t,s){return this.ws.removeEventListener(e,t,s),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,s){return this.ws.addEventListener(e,c=>{if(e==="message"){let r=c.data.toString(),u=r.charCodeAt(0);if(u===47||u===123)try{r=JSON.parse(r)}catch{}else k(r)?r=+r:r==="true"?r=!0:r==="false"&&(r=!1);t({...c,data:r})}else t(c)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},j=(n,e="",t)=>new Proxy(()=>{},{get(s,c,r){return j(n,`${e}/${c.toString()}`,t)},apply(s,c,[r,u={}]=[{},{}]){let y=r!==void 0&&(typeof r!="object"||Array.isArray(r))?r:void 0,{$query:I,$fetch:O,$headers:M,$transform:g,getRaw:N,...P}=r??{};y??=P;let w=e.lastIndexOf("/"),E=e.slice(w+1).toUpperCase(),S=W(n,w===-1?"/":e.slice(0,w),Object.assign(u.query??{},I)),C=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,v=g?Array.isArray(g)?g:[g]:void 0;return v&&(p?p=v.concat(p):p=v),E==="SUBSCRIBE"?new $(S.replace(/^([^]+):\/\//,S.startsWith("https://")?"wss://":"ws://")):(async q=>{let f,R={...t.$fetch?.headers,...O?.headers,...u.headers,...M};if(E!=="GET"&&E!=="HEAD"){f=Object.keys(y).length||Array.isArray(y)?y:void 0;let a=typeof f=="object"||Array.isArray(y);if(a&&J(f)){let h=new FormData;for(let[m,o]of Object.entries(f))if(F)h.append(m,o);else if(o instanceof File)h.append(m,await T(o));else if(o instanceof FileList)for(let l=0;l<o.length;l++)h.append(m,await T(o[l]));else if(Array.isArray(o))for(let l=0;l<o.length;l++){let A=o[l];h.append(m,A instanceof File?await T(A):A)}else h.append(m,o);f=h}else R["content-type"]=a?"application/json":"text/plain",f=a?JSON.stringify(f):y}let i=await C(S,{method:E,body:f,...t.$fetch,...u.fetch,...O,headers:R}),b;if(q.getRaw)return i;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":b=await i.json();break;default:b=await i.text().then(a=>k(a)?+a:a==="true"?!0:a==="false"?!1:a)}let D=i.status>=300||i.status<200?new L(i.status,b):null,x={data:b,error:D,response:i,status:i.status,headers:i.headers};if(p)for(let a of p){let d=a(x);d instanceof Promise&&(d=await d),d!=null&&(x=d)}return x})({getRaw:N})}}),_=(n,e={fetcher:fetch})=>new Proxy({},{get(t,s){return j(n,s,e)}});export{$ as a,_ as b};
|
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>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
|
4
|
+
export declare const edenFetch: <App extends Elysia<any, any, any, any, any, any, false>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
package/dist/fetch/types.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ export declare namespace EdenFetch {
|
|
|
15
15
|
method?: Method;
|
|
16
16
|
} : {
|
|
17
17
|
method: Method;
|
|
18
|
-
}) & (IsNever<
|
|
18
|
+
}) & (IsNever<Route['params']> extends true ? {
|
|
19
19
|
params?: Record<never, string>;
|
|
20
20
|
} : {
|
|
21
21
|
params: Route['params'];
|
package/dist/fetch.d.mts
CHANGED
|
@@ -15,7 +15,7 @@ declare namespace EdenFetch {
|
|
|
15
15
|
method?: Method;
|
|
16
16
|
} : {
|
|
17
17
|
method: Method;
|
|
18
|
-
}) & (IsNever<
|
|
18
|
+
}) & (IsNever<Route['params']> extends true ? {
|
|
19
19
|
params?: Record<never, string>;
|
|
20
20
|
} : {
|
|
21
21
|
params: Route['params'];
|
|
@@ -44,6 +44,6 @@ declare namespace EdenFetch {
|
|
|
44
44
|
}>>;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
declare const edenFetch: <App extends Elysia<any, any, any, any, any, any>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
|
47
|
+
declare const edenFetch: <App extends Elysia<any, any, any, any, any, any, false>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
|
48
48
|
|
|
49
49
|
export { EdenFetch, edenFetch };
|
package/dist/fetch.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ declare namespace EdenFetch {
|
|
|
15
15
|
method?: Method;
|
|
16
16
|
} : {
|
|
17
17
|
method: Method;
|
|
18
|
-
}) & (IsNever<
|
|
18
|
+
}) & (IsNever<Route['params']> extends true ? {
|
|
19
19
|
params?: Record<never, string>;
|
|
20
20
|
} : {
|
|
21
21
|
params: Route['params'];
|
|
@@ -44,6 +44,6 @@ declare namespace EdenFetch {
|
|
|
44
44
|
}>>;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
declare const edenFetch: <App extends Elysia<any, any, any, any, any, any>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
|
47
|
+
declare const edenFetch: <App extends Elysia<any, any, any, any, any, any, false>>(server: string, config?: EdenFetch.Config) => EdenFetch.Create<App>;
|
|
48
48
|
|
|
49
49
|
export { EdenFetch, edenFetch };
|
package/dist/index.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Eden=(()=>{var
|
|
1
|
+
"use strict";var Eden=(()=>{var j=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var H=(r,e)=>{for(var t in e)j(r,t,{get:e[t],enumerable:!0})},_=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of B(e))!G.call(r,a)&&a!==t&&j(r,a,{get:()=>e[a],enumerable:!(s=z(e,a))||s.enumerable});return r};var Q=r=>_(j({},"__esModule",{value:!0}),r);var Y={};H(Y,{edenFetch:()=>D,edenTreaty:()=>q});var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var I=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let s="";for(let[a,n]of Object.entries(t))s+=`${a}=${n}&`;return`${r}${e}?${s.slice(0,-1)}`},L=r=>!Number.isNaN(parseInt(r));var C=typeof FileList>"u",M=r=>C?r instanceof Blob:r instanceof FileList||r instanceof File,X=r=>{if(!r)return!1;for(let e in r){if(M(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>M(t)))return!0}return!1},W=r=>C?r:new Promise(e=>{let t=new FileReader;t.onload=()=>{let s=new File([t.result],r.name,{lastModified:r.lastModified,type:r.type});e(s)},t.readAsArrayBuffer(r)}),N=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 n=a.data.toString(),o=n.charCodeAt(0);if(o===47||o===123)try{n=JSON.parse(n)}catch{}else L(n)?n=+n:n==="true"?n=!0:n==="false"&&(n=!1);t({...a,data:n})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},P=(r,e="",t)=>new Proxy(()=>{},{get(s,a,n){return P(r,`${e}/${a.toString()}`,t)},apply(s,a,[n,o={}]=[{},{}]){let f=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:A,$fetch:x,$headers:w,$transform:i,getRaw:d,...p}=n??{};f??=p;let T=e.lastIndexOf("/"),v=e.slice(T+1).toUpperCase(),F=I(r,T===-1?"/":e.slice(0,T),Object.assign(o.query??{},A)),J=t.fetcher??fetch,E=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,$=i?Array.isArray(i)?i:[i]:void 0;return $&&(E?E=$.concat(E):E=$),v==="SUBSCRIBE"?new N(F.replace(/^([^]+):\/\//,F.startsWith("https://")?"wss://":"ws://")):(async U=>{let l,K={...t.$fetch?.headers,...x?.headers,...o.headers,...w};if(v!=="GET"&&v!=="HEAD"){l=Object.keys(f).length||Array.isArray(f)?f:void 0;let c=typeof l=="object"||Array.isArray(f);if(c&&X(l)){let g=new FormData;for(let[b,u]of Object.entries(l))if(C)g.append(b,u);else if(u instanceof File)g.append(b,await W(u));else if(u instanceof FileList)for(let m=0;m<u.length;m++)g.append(b,await W(u[m]));else if(Array.isArray(u))for(let m=0;m<u.length;m++){let R=u[m];g.append(b,R instanceof File?await W(R):R)}else g.append(b,u);l=g}else K["content-type"]=c?"application/json":"text/plain",l=c?JSON.stringify(l):f}let y=await J(F,{method:v,body:l,...t.$fetch,...o.fetch,...x,headers:K}),k;if(U.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(c=>L(c)?+c:c==="true"?!0:c==="false"?!1:c)}let V=y.status>=300||y.status<200?new S(y.status,k):null,O={data:k,error:V,response:y,status:y.status,headers:y.headers};if(E)for(let c of E){let h=c(O);h instanceof Promise&&(h=await h),h!=null&&(O=h)}return O})({getRaw:d})}}),q=(r,e={fetcher:fetch})=>new Proxy({},{get(t,s){return P(r,s,e)}});var D=(r,e)=>(t,{query:s,params:a,body:n,...o}={})=>{a&&Object.entries(a).forEach(([i,d])=>{t=t.replace(`:${i}`,d)});let f=o.headers?.["Content-Type"];if(!f||f==="application/json")try{n=JSON.stringify(n)}catch{}let A=e?.fetcher||globalThis.fetch,x=s?`?${new URLSearchParams(s).toString()}`:"",w=()=>A(r+t+x,{...o,method:o.method?.toUpperCase()||"GET",headers:n?{"content-type":"application/json",...o.headers}:o.headers,body:n}).then(async i=>{let d;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":d=await i.json();break;default:d=await i.text().then(p=>Number.isNaN(+p)?p==="true"?!0:p==="false"?!1:p:+p);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:w,error:new S(i.status,d)}:{data:d,error:null,status:i.status,headers:i.headers,retry:w}});return w()};return Q(Y);})();
|
package/dist/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var j=Object.defineProperty;var z=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var G=Object.prototype.hasOwnProperty;var H=(r,e)=>{for(var t in e)j(r,t,{get:e[t],enumerable:!0})},_=(r,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of B(e))!G.call(r,a)&&a!==t&&j(r,a,{get:()=>e[a],enumerable:!(s=z(e,a))||s.enumerable});return r};var Q=r=>_(j({},"__esModule",{value:!0}),r);var Y={};H(Y,{edenFetch:()=>D,edenTreaty:()=>q});module.exports=Q(Y);var S=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var I=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let s="";for(let[a,n]of Object.entries(t))s+=`${a}=${n}&`;return`${r}${e}?${s.slice(0,-1)}`},L=r=>!Number.isNaN(parseInt(r));var C=typeof FileList>"u",M=r=>C?r instanceof Blob:r instanceof FileList||r instanceof File,X=r=>{if(!r)return!1;for(let e in r){if(M(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>M(t)))return!0}return!1},W=r=>C?r:new Promise(e=>{let t=new FileReader;t.onload=()=>{let s=new File([t.result],r.name,{lastModified:r.lastModified,type:r.type});e(s)},t.readAsArrayBuffer(r)}),N=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 n=a.data.toString(),o=n.charCodeAt(0);if(o===47||o===123)try{n=JSON.parse(n)}catch{}else L(n)?n=+n:n==="true"?n=!0:n==="false"&&(n=!1);t({...a,data:n})}else t(a)},s),this}removeEventListener(e,t,s){return this.off(e,t,s),this}close(){return this.ws.close(),this}},P=(r,e="",t)=>new Proxy(()=>{},{get(s,a,n){return P(r,`${e}/${a.toString()}`,t)},apply(s,a,[n,o={}]=[{},{}]){let f=n!==void 0&&(typeof n!="object"||Array.isArray(n))?n:void 0,{$query:A,$fetch:x,$headers:w,$transform:i,getRaw:d,...p}=n??{};f??=p;let T=e.lastIndexOf("/"),v=e.slice(T+1).toUpperCase(),F=I(r,T===-1?"/":e.slice(0,T),Object.assign(o.query??{},A)),J=t.fetcher??fetch,E=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,$=i?Array.isArray(i)?i:[i]:void 0;return $&&(E?E=$.concat(E):E=$),v==="SUBSCRIBE"?new N(F.replace(/^([^]+):\/\//,F.startsWith("https://")?"wss://":"ws://")):(async U=>{let l,K={...t.$fetch?.headers,...x?.headers,...o.headers,...w};if(v!=="GET"&&v!=="HEAD"){l=Object.keys(f).length||Array.isArray(f)?f:void 0;let c=typeof l=="object"||Array.isArray(f);if(c&&X(l)){let g=new FormData;for(let[b,u]of Object.entries(l))if(C)g.append(b,u);else if(u instanceof File)g.append(b,await W(u));else if(u instanceof FileList)for(let m=0;m<u.length;m++)g.append(b,await W(u[m]));else if(Array.isArray(u))for(let m=0;m<u.length;m++){let R=u[m];g.append(b,R instanceof File?await W(R):R)}else g.append(b,u);l=g}else K["content-type"]=c?"application/json":"text/plain",l=c?JSON.stringify(l):f}let y=await J(F,{method:v,body:l,...t.$fetch,...o.fetch,...x,headers:K}),k;if(U.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(c=>L(c)?+c:c==="true"?!0:c==="false"?!1:c)}let V=y.status>=300||y.status<200?new S(y.status,k):null,O={data:k,error:V,response:y,status:y.status,headers:y.headers};if(E)for(let c of E){let h=c(O);h instanceof Promise&&(h=await h),h!=null&&(O=h)}return O})({getRaw:d})}}),q=(r,e={fetcher:fetch})=>new Proxy({},{get(t,s){return P(r,s,e)}});var D=(r,e)=>(t,{query:s,params:a,body:n,...o}={})=>{a&&Object.entries(a).forEach(([i,d])=>{t=t.replace(`:${i}`,d)});let f=o.headers?.["Content-Type"];if(!f||f==="application/json")try{n=JSON.stringify(n)}catch{}let A=e?.fetcher||globalThis.fetch,x=s?`?${new URLSearchParams(s).toString()}`:"",w=()=>A(r+t+x,{...o,method:o.method?.toUpperCase()||"GET",headers:n?{"content-type":"application/json",...o.headers}:o.headers,body:n}).then(async i=>{let d;switch(i.headers.get("Content-Type")?.split(";")[0]){case"application/json":d=await i.json();break;default:d=await i.text().then(p=>Number.isNaN(+p)?p==="true"?!0:p==="false"?!1:p:+p);break}return i.status>300?{data:null,status:i.status,headers:i.headers,retry:w,error:new S(i.status,d)}:{data:d,error:null,status:i.status,headers:i.headers,retry:w}});return w()};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-3IC43ZE4.mjs";import{a as t}from"./chunk-3KYW6H6M.mjs";import"./chunk-Y6SMVGJX.mjs";export{t as edenFetch,e as edenTreaty};
|
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>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
|
|
16
|
+
export declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any, false>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
|
package/dist/treaty/utils.d.ts
CHANGED
package/dist/treaty.d.mts
CHANGED
|
@@ -116,6 +116,6 @@ declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
|
|
|
116
116
|
removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
|
|
117
117
|
close(): this;
|
|
118
118
|
}
|
|
119
|
-
declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
|
|
119
|
+
declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any, false>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
|
|
120
120
|
|
|
121
121
|
export { EdenTreaty, EdenWS, edenTreaty };
|
package/dist/treaty.d.ts
CHANGED
|
@@ -116,6 +116,6 @@ declare class EdenWS<Schema extends InputSchema<any> = InputSchema> {
|
|
|
116
116
|
removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
|
|
117
117
|
close(): this;
|
|
118
118
|
}
|
|
119
|
-
declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
|
|
119
|
+
declare const edenTreaty: <App extends Elysia<any, any, any, any, any, any, false>>(domain: string, config?: EdenTreaty.Config) => EdenTreaty.Create<App>;
|
|
120
120
|
|
|
121
121
|
export { EdenTreaty, EdenWS, edenTreaty };
|
package/dist/treaty.global.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Eden=(()=>{var
|
|
1
|
+
"use strict";var Eden=(()=>{var $=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var H=(n,e)=>{for(var t in e)$(n,t,{get:e[t],enumerable:!0})},U=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of z(e))!B.call(n,a)&&a!==t&&$(n,a,{get:()=>e[a],enumerable:!(r=V(e,a))||r.enumerable});return n};var G=n=>U($({},"__esModule",{value:!0}),n);var X={};H(X,{EdenWS:()=>w,edenTreaty:()=>Q});var b=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var K=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let r="";for(let[a,s]of Object.entries(t))r+=`${a}=${s}&`;return`${n}${e}?${r.slice(0,-1)}`},O=n=>!Number.isNaN(parseInt(n));var F=typeof FileList>"u",j=n=>F?n instanceof Blob:n instanceof FileList||n instanceof File,_=n=>{if(!n)return!1;for(let e in n){if(j(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>j(t)))return!0}return!1},R=n=>F?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{let r=new File([t.result],n.name,{lastModified:n.lastModified,type:n.type});e(r)},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,a=>{if(e==="message"){let s=a.data.toString(),l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else O(s)?s=+s:s==="true"?s=!0:s==="false"&&(s=!1);t({...a,data:s})}else t(a)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},I=(n,e="",t)=>new Proxy(()=>{},{get(r,a,s){return I(n,`${e}/${a.toString()}`,t)},apply(r,a,[s,l={}]=[{},{}]){let u=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:M,$fetch:L,$headers:N,$transform:g,getRaw:P,...C}=s??{};u??=C;let v=e.lastIndexOf("/"),E=e.slice(v+1).toUpperCase(),x=K(n,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},M)),q=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,k=g?Array.isArray(g)?g:[g]:void 0;return k&&(p?p=k.concat(p):p=k),E==="SUBSCRIBE"?new w(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async D=>{let f,W={...t.$fetch?.headers,...L?.headers,...l.headers,...N};if(E!=="GET"&&E!=="HEAD"){f=Object.keys(u).length||Array.isArray(u)?u:void 0;let i=typeof f=="object"||Array.isArray(u);if(i&&_(f)){let h=new FormData;for(let[m,c]of Object.entries(f))if(F)h.append(m,c);else if(c instanceof File)h.append(m,await R(c));else if(c instanceof FileList)for(let d=0;d<c.length;d++)h.append(m,await R(c[d]));else if(Array.isArray(c))for(let d=0;d<c.length;d++){let T=c[d];h.append(m,T instanceof File?await R(T):T)}else h.append(m,c);f=h}else W["content-type"]=i?"application/json":"text/plain",f=i?JSON.stringify(f):u}let o=await q(x,{method:E,body:f,...t.$fetch,...l.fetch,...L,headers:W}),S;if(D.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":S=await o.json();break;default:S=await o.text().then(i=>O(i)?+i:i==="true"?!0:i==="false"?!1:i)}let J=o.status>=300||o.status<200?new b(o.status,S):null,A={data:S,error:J,response:o,status:o.status,headers:o.headers};if(p)for(let i of p){let y=i(A);y instanceof Promise&&(y=await y),y!=null&&(A=y)}return A})({getRaw:P})}}),Q=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return I(n,r,e)}});return G(X);})();
|
package/dist/treaty.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var
|
|
1
|
+
"use strict";var $=Object.defineProperty;var V=Object.getOwnPropertyDescriptor;var z=Object.getOwnPropertyNames;var B=Object.prototype.hasOwnProperty;var H=(n,e)=>{for(var t in e)$(n,t,{get:e[t],enumerable:!0})},U=(n,e,t,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of z(e))!B.call(n,a)&&a!==t&&$(n,a,{get:()=>e[a],enumerable:!(r=V(e,a))||r.enumerable});return n};var G=n=>U($({},"__esModule",{value:!0}),n);var X={};H(X,{EdenWS:()=>w,edenTreaty:()=>Q});module.exports=G(X);var b=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var K=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let r="";for(let[a,s]of Object.entries(t))r+=`${a}=${s}&`;return`${n}${e}?${r.slice(0,-1)}`},O=n=>!Number.isNaN(parseInt(n));var F=typeof FileList>"u",j=n=>F?n instanceof Blob:n instanceof FileList||n instanceof File,_=n=>{if(!n)return!1;for(let e in n){if(j(n[e]))return!0;if(Array.isArray(n[e])&&n[e].find(t=>j(t)))return!0}return!1},R=n=>F?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{let r=new File([t.result],n.name,{lastModified:n.lastModified,type:n.type});e(r)},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,a=>{if(e==="message"){let s=a.data.toString(),l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else O(s)?s=+s:s==="true"?s=!0:s==="false"&&(s=!1);t({...a,data:s})}else t(a)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},I=(n,e="",t)=>new Proxy(()=>{},{get(r,a,s){return I(n,`${e}/${a.toString()}`,t)},apply(r,a,[s,l={}]=[{},{}]){let u=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:M,$fetch:L,$headers:N,$transform:g,getRaw:P,...C}=s??{};u??=C;let v=e.lastIndexOf("/"),E=e.slice(v+1).toUpperCase(),x=K(n,v===-1?"/":e.slice(0,v),Object.assign(l.query??{},M)),q=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,k=g?Array.isArray(g)?g:[g]:void 0;return k&&(p?p=k.concat(p):p=k),E==="SUBSCRIBE"?new w(x.replace(/^([^]+):\/\//,x.startsWith("https://")?"wss://":"ws://")):(async D=>{let f,W={...t.$fetch?.headers,...L?.headers,...l.headers,...N};if(E!=="GET"&&E!=="HEAD"){f=Object.keys(u).length||Array.isArray(u)?u:void 0;let i=typeof f=="object"||Array.isArray(u);if(i&&_(f)){let h=new FormData;for(let[m,c]of Object.entries(f))if(F)h.append(m,c);else if(c instanceof File)h.append(m,await R(c));else if(c instanceof FileList)for(let d=0;d<c.length;d++)h.append(m,await R(c[d]));else if(Array.isArray(c))for(let d=0;d<c.length;d++){let T=c[d];h.append(m,T instanceof File?await R(T):T)}else h.append(m,c);f=h}else W["content-type"]=i?"application/json":"text/plain",f=i?JSON.stringify(f):u}let o=await q(x,{method:E,body:f,...t.$fetch,...l.fetch,...L,headers:W}),S;if(D.getRaw)return o;switch(o.headers.get("Content-Type")?.split(";")[0]){case"application/json":S=await o.json();break;default:S=await o.text().then(i=>O(i)?+i:i==="true"?!0:i==="false"?!1:i)}let J=o.status>=300||o.status<200?new b(o.status,S):null,A={data:S,error:J,response:o,status:o.status,headers:o.headers};if(p)for(let i of p){let y=i(A);y instanceof Promise&&(y=await y),y!=null&&(A=y)}return A})({getRaw:P})}}),Q=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return I(n,r,e)}});0&&(module.exports={EdenWS,edenTreaty});
|
package/dist/treaty.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b}from"./chunk-
|
|
1
|
+
import{a,b}from"./chunk-3IC43ZE4.mjs";import"./chunk-Y6SMVGJX.mjs";export{a as EdenWS,b as edenTreaty};
|
package/package.json
CHANGED
|
@@ -1,78 +1,82 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
},
|
|
10
|
-
"main": "./dist/index.js",
|
|
11
|
-
"exports": {
|
|
12
|
-
".": {
|
|
13
|
-
"require": "./dist/index.js",
|
|
14
|
-
"import": "./dist/index.mjs",
|
|
15
|
-
"node": "./dist/index.js",
|
|
16
|
-
"default": "./dist/index.js",
|
|
17
|
-
"types": "./dist/index.d.ts"
|
|
2
|
+
"name": "@elysiajs/eden",
|
|
3
|
+
"version": "0.8.1",
|
|
4
|
+
"description": "Fully type-safe Elysia client",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "saltyAom",
|
|
7
|
+
"url": "https://github.com/SaltyAom",
|
|
8
|
+
"email": "saltyaom@gmail.com"
|
|
18
9
|
},
|
|
19
|
-
"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"require": "./dist/index.js",
|
|
14
|
+
"import": "./dist/index.mjs",
|
|
15
|
+
"node": "./dist/index.js",
|
|
16
|
+
"default": "./dist/index.js",
|
|
17
|
+
"types": "./dist/index.d.ts"
|
|
18
|
+
},
|
|
19
|
+
"./treaty": {
|
|
20
|
+
"require": "./dist/treaty.js",
|
|
21
|
+
"import": "./dist/treaty.mjs",
|
|
22
|
+
"node": "./dist/treaty.js",
|
|
23
|
+
"default": "./dist/treaty.js",
|
|
24
|
+
"types": "./dist/treaty/index.d.ts"
|
|
25
|
+
},
|
|
26
|
+
"./fetch": {
|
|
27
|
+
"require": "./dist/fetch.js",
|
|
28
|
+
"import": "./dist/fetch.mjs",
|
|
29
|
+
"node": "./dist/fetch.js",
|
|
30
|
+
"default": "./dist/fetch.js",
|
|
31
|
+
"types": "./dist/fetch/index.d.ts"
|
|
32
|
+
}
|
|
25
33
|
},
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
"
|
|
39
|
-
"
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
"
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
"
|
|
54
|
-
|
|
34
|
+
"types": "./src/index.ts",
|
|
35
|
+
"keywords": [
|
|
36
|
+
"elysia",
|
|
37
|
+
"eden",
|
|
38
|
+
"connector"
|
|
39
|
+
],
|
|
40
|
+
"homepage": "https://github.com/elysiajs/eden",
|
|
41
|
+
"repository": {
|
|
42
|
+
"type": "git",
|
|
43
|
+
"url": "https://github.com/elysiajs/eden"
|
|
44
|
+
},
|
|
45
|
+
"bugs": "https://github.com/elysiajs/eden/issues",
|
|
46
|
+
"license": "MIT",
|
|
47
|
+
"scripts": {
|
|
48
|
+
"dev": "bun run --watch example/index.ts",
|
|
49
|
+
"test": "bun test",
|
|
50
|
+
"build": "rimraf dist && tsup",
|
|
51
|
+
"release": "npm run build && npm run test && npm publish --access public"
|
|
52
|
+
},
|
|
53
|
+
"peerDependencies": {
|
|
54
|
+
"elysia": ">= 0.8.0"
|
|
55
|
+
},
|
|
56
|
+
"peerDependenciesMeta": {
|
|
57
|
+
"@sinclair/typebox": {
|
|
58
|
+
"optional": true
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
"devDependencies": {
|
|
62
|
+
"@elysiajs/cors": "0.7.0",
|
|
63
|
+
"@sinclair/typebox": "^0.31.6",
|
|
64
|
+
"@types/node": "^18.15.5",
|
|
65
|
+
"bun-types": "^1.0.1",
|
|
66
|
+
"elysia": "0.8.0",
|
|
67
|
+
"esbuild": "^0.19.3",
|
|
68
|
+
"eslint": "^8.26.0",
|
|
69
|
+
"rimraf": "^4.4.1",
|
|
70
|
+
"tsup": "^7.2.0",
|
|
71
|
+
"typescript": "^5.2.2"
|
|
72
|
+
},
|
|
73
|
+
"prettier": {
|
|
74
|
+
"semi": false,
|
|
75
|
+
"tabWidth": 4,
|
|
76
|
+
"singleQuote": true,
|
|
77
|
+
"trailingComma": "none"
|
|
78
|
+
},
|
|
79
|
+
"dependencies": {
|
|
80
|
+
"superjson": "^2.2.1"
|
|
55
81
|
}
|
|
56
|
-
},
|
|
57
|
-
"devDependencies": {
|
|
58
|
-
"@elysiajs/cors": "0.7.0",
|
|
59
|
-
"@sinclair/typebox": "^0.31.6",
|
|
60
|
-
"@types/node": "^18.15.5",
|
|
61
|
-
"bun-types": "^1.0.1",
|
|
62
|
-
"elysia": "^0.7.15",
|
|
63
|
-
"esbuild": "^0.19.3",
|
|
64
|
-
"eslint": "^8.26.0",
|
|
65
|
-
"rimraf": "^4.4.1",
|
|
66
|
-
"tsup": "^7.2.0",
|
|
67
|
-
"typescript": "^5.2.2"
|
|
68
|
-
},
|
|
69
|
-
"prettier": {
|
|
70
|
-
"semi": false,
|
|
71
|
-
"tabWidth": 4,
|
|
72
|
-
"singleQuote": true,
|
|
73
|
-
"trailingComma": "none"
|
|
74
|
-
},
|
|
75
|
-
"dependencies": {
|
|
76
|
-
"superjson": "^2.2.1"
|
|
77
|
-
}
|
|
78
82
|
}
|
package/src/fetch/types.ts
CHANGED
package/src/treaty/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Elysia, InputSchema } from 'elysia'
|
|
|
2
2
|
|
|
3
3
|
import { EdenFetchError } from '../errors'
|
|
4
4
|
|
|
5
|
-
import { composePath } from './utils'
|
|
5
|
+
import { composePath, isNumericString } from './utils'
|
|
6
6
|
import type { EdenTreaty } from './types'
|
|
7
7
|
|
|
8
8
|
export type { EdenTreaty } from './types'
|
|
@@ -123,7 +123,7 @@ export class EdenWS<Schema extends InputSchema<any> = InputSchema> {
|
|
|
123
123
|
} catch {
|
|
124
124
|
// Not Empty
|
|
125
125
|
}
|
|
126
|
-
else if (
|
|
126
|
+
else if (isNumericString(data)) data = +data
|
|
127
127
|
else if (data === 'true') data = true
|
|
128
128
|
else if (data === 'false') data = false
|
|
129
129
|
|
|
@@ -191,8 +191,14 @@ const createProxy = (
|
|
|
191
191
|
? initialBody
|
|
192
192
|
: undefined
|
|
193
193
|
|
|
194
|
-
const {
|
|
195
|
-
|
|
194
|
+
const {
|
|
195
|
+
$query,
|
|
196
|
+
$fetch,
|
|
197
|
+
$headers,
|
|
198
|
+
$transform,
|
|
199
|
+
getRaw,
|
|
200
|
+
...restBody
|
|
201
|
+
} = initialBody ?? {}
|
|
196
202
|
|
|
197
203
|
bodyObj ??= restBody
|
|
198
204
|
|
|
@@ -230,7 +236,9 @@ const createProxy = (
|
|
|
230
236
|
)
|
|
231
237
|
)
|
|
232
238
|
|
|
233
|
-
const execute = async <T extends EdenTreaty.ExecuteOptions>(
|
|
239
|
+
const execute = async <T extends EdenTreaty.ExecuteOptions>(
|
|
240
|
+
modifiers: T
|
|
241
|
+
): Promise<EdenTreaty.ExecuteReturnType<T>> => {
|
|
234
242
|
let body: any
|
|
235
243
|
|
|
236
244
|
const headers = {
|
|
@@ -244,8 +252,8 @@ const createProxy = (
|
|
|
244
252
|
body = Object.keys(bodyObj).length
|
|
245
253
|
? bodyObj
|
|
246
254
|
: Array.isArray(bodyObj)
|
|
247
|
-
|
|
248
|
-
|
|
255
|
+
? bodyObj
|
|
256
|
+
: undefined
|
|
249
257
|
|
|
250
258
|
const isObject =
|
|
251
259
|
typeof body === 'object' || Array.isArray(bodyObj)
|
|
@@ -320,7 +328,7 @@ const createProxy = (
|
|
|
320
328
|
|
|
321
329
|
default:
|
|
322
330
|
data = await response.text().then((data) => {
|
|
323
|
-
if (
|
|
331
|
+
if (isNumericString(data)) return +data
|
|
324
332
|
if (data === 'true') return true
|
|
325
333
|
if (data === 'false') return false
|
|
326
334
|
|
|
@@ -333,27 +341,23 @@ const createProxy = (
|
|
|
333
341
|
? new EdenFetchError(response.status, data)
|
|
334
342
|
: null
|
|
335
343
|
|
|
344
|
+
let executeReturn = {
|
|
345
|
+
data,
|
|
346
|
+
error,
|
|
347
|
+
response,
|
|
348
|
+
status: response.status,
|
|
349
|
+
headers: response.headers
|
|
350
|
+
}
|
|
351
|
+
|
|
336
352
|
if (transforms)
|
|
337
353
|
for (const transform of transforms) {
|
|
338
|
-
let temp = transform(
|
|
339
|
-
data,
|
|
340
|
-
status: response.status,
|
|
341
|
-
headers: response.headers,
|
|
342
|
-
response,
|
|
343
|
-
error
|
|
344
|
-
})
|
|
354
|
+
let temp = transform(executeReturn)
|
|
345
355
|
if (temp instanceof Promise) temp = await temp
|
|
346
|
-
|
|
347
|
-
|
|
356
|
+
if (temp !== undefined && temp !== null)
|
|
357
|
+
executeReturn = temp as any
|
|
348
358
|
}
|
|
349
359
|
|
|
350
|
-
return
|
|
351
|
-
data,
|
|
352
|
-
error,
|
|
353
|
-
response: response,
|
|
354
|
-
status: response.status,
|
|
355
|
-
headers: response.headers
|
|
356
|
-
} as any
|
|
360
|
+
return executeReturn as any
|
|
357
361
|
}
|
|
358
362
|
|
|
359
363
|
return execute({ getRaw })
|
package/src/treaty/utils.ts
CHANGED
package/dist/chunk-NZCTJ6S3.mjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a as R}from"./chunk-Y6SMVGJX.mjs";var L=(n,e,t)=>{if(n.endsWith("/")||(n+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${n}${e}`;let r="";for(let[c,s]of Object.entries(t))r+=`${c}=${s}&`;return`${n}${e}?${r.slice(0,-1)}`};var T=typeof FileList>"u",W=n=>T?n instanceof Blob:n instanceof FileList||n instanceof File,q=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},k=n=>T?n:new Promise(e=>{let t=new FileReader;t.onload=()=>{let r=new File([t.result],n.name,{lastModified:n.lastModified,type:n.type});e(r)},t.readAsArrayBuffer(n)}),x=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,c=>{if(e==="message"){let s=c.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==="false"&&(s=!1):s=+s;t({...c,data:s})}else t(c)},r),this}removeEventListener(e,t,r){return this.off(e,t,r),this}close(){return this.ws.close(),this}},K=(n,e="",t)=>new Proxy(()=>{},{get(r,c,s){return K(n,`${e}/${c.toString()}`,t)},apply(r,c,[s,u={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:N,$fetch:$,$headers:j,$transform:g,getRaw:M,...I}=s??{};y??=I;let w=e.lastIndexOf("/"),b=e.slice(w+1).toUpperCase(),S=L(n,w===-1?"/":e.slice(0,w),Object.assign(u.query??{},N)),P=t.fetcher??fetch,p=t.transform?Array.isArray(t.transform)?t.transform:[t.transform]:void 0,v=g?Array.isArray(g)?g:[g]:void 0;return v&&(p?p=v.concat(p):p=v),b==="SUBSCRIBE"?new x(S.replace(/^([^]+):\/\//,S.startsWith("https://")?"wss://":"ws://")):(async C=>{let f,F={...t.$fetch?.headers,...$?.headers,...u.headers,...j};if(b!=="GET"&&b!=="HEAD"){f=Object.keys(y).length||Array.isArray(y)?y:void 0;let i=typeof f=="object"||Array.isArray(y);if(i&&q(f)){let m=new FormData;for(let[E,o]of Object.entries(f))if(T)m.append(E,o);else if(o instanceof File)m.append(E,await k(o));else if(o instanceof FileList)for(let l=0;l<o.length;l++)m.append(E,await k(o[l]));else if(Array.isArray(o))for(let l=0;l<o.length;l++){let A=o[l];m.append(E,A instanceof File?await k(A):A)}else m.append(E,o);f=m}else F["content-type"]=i?"application/json":"text/plain",f=i?JSON.stringify(f):y}let a=await P(S,{method:b,body:f,...t.$fetch,...u.fetch,...$,headers:F}),h;if(C.getRaw)return a;switch(a.headers.get("Content-Type")?.split(";")[0]){case"application/json":h=await a.json();break;default:h=await a.text().then(i=>Number.isNaN(+i)?i==="true"?!0:i==="false"?!1:i:+i)}let O=a.status>=300||a.status<200?new R(a.status,h):null;if(p)for(let i of p){let d=i({data:h,status:a.status,headers:a.headers,response:a,error:O});d instanceof Promise&&(d=await d),d!=null&&(h=d)}return{data:h,error:O,response:a,status:a.status,headers:a.headers}})({getRaw:M})}}),U=(n,e={fetcher:fetch})=>new Proxy({},{get(t,r){return K(n,r,e)}});export{x as a,U as b};
|