@elysiajs/eden 0.5.4 → 0.5.6

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.
@@ -14,4 +14,6 @@ export declare class EdenWS<Schema extends TypedSchema<any> = TypedSchema> {
14
14
  removeEventListener<K extends keyof WebSocketEventMap>(type: K, listener: (this: WebSocket, ev: WebSocketEventMap[K]) => any, options?: boolean | EventListenerOptions): this;
15
15
  close(): this;
16
16
  }
17
- export declare const edenTreaty: <App extends Elysia<any>>(domain: string, config?: {}) => EdenTreaty.Create<App>;
17
+ export declare const edenTreaty: <App extends Elysia<any>>(domain: string, config?: {
18
+ fetcher?: typeof fetch;
19
+ }) => EdenTreaty.Create<App>;
package/dist/treaty.js CHANGED
@@ -1 +1 @@
1
- "use strict";var O=Object.defineProperty;var m=(r,e,t)=>e in r?O(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var w=(r,e,t)=>(m(r,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("./utils-a2cfc56a.js"),k=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let n="";for(const[f,s]of Object.entries(t))n+=`${f}=${s}&`;return`${r}${e}?${n.slice(0,-1)}`},p=typeof FileList>"u",S=r=>p?r instanceof Blob:r instanceof FileList||r instanceof File,x=r=>{for(let e in r){if(S(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>S(t)))return!0}return!1},E=r=>p?r:new Promise(e=>{const t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:r.type}))},t.readAsArrayBuffer(r)});class F{constructor(e){w(this,"ws");w(this,"url");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,n){return this.addEventListener(e,t,n)}off(e,t,n){return this.ws.removeEventListener(e,t,n),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,n){return this.ws.addEventListener(e,f=>{if(e==="message"){let s=f.data.toString();const i=s.charCodeAt(0);if(i===47||i===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...f,data:s})}else t(f)},n),this}removeEventListener(e,t,n){return this.off(e,t,n),this}close(){return this.ws.close(),this}}const L=(r,e="",t)=>new Proxy(()=>{},{get(n,f,s){return L(r,`${e}/${f.toString()}`)},apply(n,f,[{$query:s,$fetch:i,$body:N,...g}={$fetch:void 0,$query:void 0,$body:void 0}]=[{}]){const h=e.lastIndexOf("/"),b=e.slice(h+1),d=k(r,e.slice(0,h),s);return b==="subscribe"?new F(d.replace(/^([^]+):\/\//,d.startsWith("https://")?"wss://":"ws://")):(async()=>{let c=N??(Object.keys(g).length?g:void 0);const y=typeof c=="object",v=y&&x(c);if(v){const o=new FormData;for(const[a,l]of Object.entries(c))if(p)o.append(a,l);else if(l instanceof File)o.append(a,await E(l));else if(l instanceof FileList)for(let u=0;u<l.length;u++)o.append(a,await E(l[u]));else o.append(a,l);c=o}else y&&(c=JSON.stringify(c));return fetch(d,{method:b,body:c,...i,headers:c?v?i==null?void 0:i.headers:{"content-type":y?"application/json":"text/plain",...i==null?void 0:i.headers}:i==null?void 0:i.headers}).then(async o=>{var l;let a;switch((l=o.headers.get("Content-Type"))==null?void 0:l.split(";")[0]){case"application/json":a=await o.json();break;default:a=await o.text().then(u=>Number.isNaN(+u)?u==="true"?!0:u==="false"?!1:u:+u)}return o.status>300?{data:a,error:new j.EdenFetchError(o.status,await a)}:{data:a,error:null}})})()}}),A=(r,e={})=>new Proxy({},{get(t,n){return L(r,n)}});exports.EdenWS=F;exports.edenTreaty=A;
1
+ "use strict";var O=Object.defineProperty;var m=(r,e,t)=>e in r?O(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var w=(r,e,t)=>(m(r,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("./utils-a2cfc56a.js"),k=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let n="";for(const[f,s]of Object.entries(t))n+=`${f}=${s}&`;return`${r}${e}?${n.slice(0,-1)}`},h=typeof FileList>"u",S=r=>h?r instanceof Blob:r instanceof FileList||r instanceof File,x=r=>{for(let e in r){if(S(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>S(t)))return!0}return!1},E=r=>h?r:new Promise(e=>{const t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:r.type}))},t.readAsArrayBuffer(r)});class F{constructor(e){w(this,"ws");w(this,"url");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,n){return this.addEventListener(e,t,n)}off(e,t,n){return this.ws.removeEventListener(e,t,n),this}subscribe(e,t){return this.addEventListener("message",e,t)}addEventListener(e,t,n){return this.ws.addEventListener(e,f=>{if(e==="message"){let s=f.data.toString();const i=s.charCodeAt(0);if(i===47||i===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...f,data:s})}else t(f)},n),this}removeEventListener(e,t,n){return this.off(e,t,n),this}close(){return this.ws.close(),this}}const L=(r,e="",t)=>new Proxy(()=>{},{get(n,f,s){return L(r,`${e}/${f.toString()}`,t)},apply(n,f,[{$query:s,$fetch:i,$body:N,...p}={$fetch:void 0,$query:void 0,$body:void 0}]=[{}]){const b=e.lastIndexOf("/"),g=e.slice(b+1),d=k(r,e.slice(0,b),s);return g==="subscribe"?new F(d.replace(/^([^]+):\/\//,d.startsWith("https://")?"wss://":"ws://")):(async()=>{let c=N??(Object.keys(p).length?p:void 0);const y=typeof c=="object",v=y&&x(c);if(v){const o=new FormData;for(const[a,l]of Object.entries(c))if(h)o.append(a,l);else if(l instanceof File)o.append(a,await E(l));else if(l instanceof FileList)for(let u=0;u<l.length;u++)o.append(a,await E(l[u]));else o.append(a,l);c=o}else y&&(c=JSON.stringify(c));return(t.fetcher??fetch)(d,{method:g,body:c,...i,headers:c?v?i==null?void 0:i.headers:{"content-type":y?"application/json":"text/plain",...i==null?void 0:i.headers}:i==null?void 0:i.headers}).then(async o=>{var l;let a;switch((l=o.headers.get("Content-Type"))==null?void 0:l.split(";")[0]){case"application/json":a=await o.json();break;default:a=await o.text().then(u=>Number.isNaN(+u)?u==="true"?!0:u==="false"?!1:u:+u)}return o.status>300?{data:a,error:new j.EdenFetchError(o.status,await a)}:{data:a,error:null}})})()}}),A=(r,e={fetcher:fetch})=>new Proxy({},{get(t,n){return L(r,n,e)}});exports.EdenWS=F;exports.edenTreaty=A;
package/dist/treaty.mjs CHANGED
@@ -77,23 +77,23 @@ class A {
77
77
  const m = (r, e = "", t) => new Proxy(() => {
78
78
  }, {
79
79
  get(n, f, s) {
80
- return m(r, `${e}/${f.toString()}`);
80
+ return m(r, `${e}/${f.toString()}`, t);
81
81
  },
82
82
  apply(n, f, [
83
- { $query: s, $fetch: i, $body: L, ...g } = {
83
+ { $query: s, $fetch: i, $body: L, ...h } = {
84
84
  $fetch: void 0,
85
85
  $query: void 0,
86
86
  $body: void 0
87
87
  }
88
88
  ] = [{}]) {
89
- const h = e.lastIndexOf("/"), b = e.slice(h + 1), d = O(r, e.slice(0, h), s);
90
- return b === "subscribe" ? new A(
89
+ const b = e.lastIndexOf("/"), g = e.slice(b + 1), d = O(r, e.slice(0, b), s);
90
+ return g === "subscribe" ? new A(
91
91
  d.replace(
92
92
  /^([^]+):\/\//,
93
93
  d.startsWith("https://") ? "wss://" : "ws://"
94
94
  )
95
95
  ) : (async () => {
96
- let c = L ?? (Object.keys(g).length ? g : void 0);
96
+ let c = L ?? (Object.keys(h).length ? h : void 0);
97
97
  const y = typeof c == "object", v = y && k(c);
98
98
  if (v) {
99
99
  const o = new FormData();
@@ -116,8 +116,8 @@ const m = (r, e = "", t) => new Proxy(() => {
116
116
  c = o;
117
117
  } else
118
118
  y && (c = JSON.stringify(c));
119
- return fetch(d, {
120
- method: b,
119
+ return (t.fetcher ?? fetch)(d, {
120
+ method: g,
121
121
  body: c,
122
122
  // ...config.fetch,
123
123
  ...i,
@@ -142,11 +142,13 @@ const m = (r, e = "", t) => new Proxy(() => {
142
142
  });
143
143
  })();
144
144
  }
145
- }), P = (r, e = {}) => new Proxy(
145
+ }), P = (r, e = {
146
+ fetcher: fetch
147
+ }) => new Proxy(
146
148
  {},
147
149
  {
148
150
  get(t, n) {
149
- return m(r, n);
151
+ return m(r, n, e);
150
152
  }
151
153
  }
152
154
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elysiajs/eden",
3
- "version": "0.5.4",
3
+ "version": "0.5.6",
4
4
  "description": "Fully type-safe Elysia client",
5
5
  "author": {
6
6
  "name": "saltyAom",
@@ -69,7 +69,7 @@
69
69
  },
70
70
  "devDependencies": {
71
71
  "@elysiajs/cors": "0.5.0",
72
- "@elysiajs/fn": "0.5.0",
72
+ "@elysiajs/fn": "^0.5.2",
73
73
  "@sinclair/typebox": "^0.26.8",
74
74
  "@types/node": "^18.15.5",
75
75
  "bun-types": "^0.5.8",
@@ -151,7 +151,7 @@ export class EdenWS<Schema extends TypedSchema<any> = TypedSchema> {
151
151
  const createProxy = (
152
152
  domain: string,
153
153
  path: string = '',
154
- config: {}
154
+ config: EdenTreaty.Config
155
155
  ): Record<string, unknown> =>
156
156
  new Proxy(() => {}, {
157
157
  get(target, key, value) {
@@ -216,7 +216,7 @@ const createProxy = (
216
216
  body = newBody
217
217
  } else if (isObject) body = JSON.stringify(body)
218
218
 
219
- return fetch(url, {
219
+ return (config.fetcher ?? fetch)(url, {
220
220
  method,
221
221
  body,
222
222
  // ...config.fetch,
@@ -263,7 +263,11 @@ const createProxy = (
263
263
 
264
264
  export const edenTreaty = <App extends Elysia<any>>(
265
265
  domain: string,
266
- config: {} = {}
266
+ config: {
267
+ fetcher?: typeof fetch
268
+ } = {
269
+ fetcher: fetch
270
+ }
267
271
  ): EdenTreaty.Create<App> =>
268
272
  new Proxy(
269
273
  {},
@@ -18,7 +18,9 @@ export namespace EdenTreaty {
18
18
  ? EdenTreaty.Sign<Schema>
19
19
  : 'Please install Elysia before using Eden'
20
20
 
21
- export interface Config {}
21
+ export interface Config {
22
+ fetcher?: typeof fetch
23
+ }
22
24
 
23
25
  export type Sign<A> = {
24
26
  [Path in keyof A as Path extends `/${infer Prefix}/${infer _}`
@@ -48,7 +50,9 @@ export namespace EdenTreaty {
48
50
  $fetch?: RequestInit
49
51
  }) => Promise<
50
52
  | {
51
- data: Awaited<Route['response']['200']>
53
+ data: Awaited<
54
+ Route['response']['200']
55
+ >
52
56
  error: null
53
57
  }
54
58
  | {
@@ -73,7 +77,9 @@ export namespace EdenTreaty {
73
77
  $fetch?: RequestInit
74
78
  }) => Promise<
75
79
  | {
76
- data: Awaited<Route['response']['200']>
80
+ data: Awaited<
81
+ Route['response']['200']
82
+ >
77
83
  error: null
78
84
  }
79
85
  | {
@@ -99,7 +105,7 @@ export namespace EdenTreaty {
99
105
  Blob | Blob[],
100
106
  File | FileList
101
107
  > & {
102
- $query?: Record<string, string>
108
+ $query?: Route['query']
103
109
  $fetch?: RequestInit
104
110
  }
105
111
  ) => Promise<
@@ -107,7 +113,7 @@ export namespace EdenTreaty {
107
113
  data: Route['response'] extends {
108
114
  200: infer ReturnedType
109
115
  }
110
- ? ReturnedType
116
+ ? Awaited<ReturnedType>
111
117
  : unknown
112
118
  error: null
113
119
  }
@@ -148,7 +154,9 @@ export namespace EdenTreaty {
148
154
  $fetch?: RequestInit
149
155
  }) => Promise<
150
156
  | {
151
- data: Awaited<Route['response']['200']>
157
+ data: Awaited<
158
+ Route['response']['200']
159
+ >
152
160
  error: null
153
161
  }
154
162
  | {
@@ -173,7 +181,9 @@ export namespace EdenTreaty {
173
181
  $fetch?: RequestInit
174
182
  }) => Promise<
175
183
  | {
176
- data: Awaited<Route['response']['200']>
184
+ data: Awaited<
185
+ Route['response']['200']
186
+ >
177
187
  error: null
178
188
  }
179
189
  | {
@@ -199,7 +209,7 @@ export namespace EdenTreaty {
199
209
  Blob | Blob[],
200
210
  File | FileList
201
211
  > & {
202
- $query?: Record<string, string>
212
+ $query?: Route['query']
203
213
  $fetch?: RequestInit
204
214
  }
205
215
  ) => Promise<
@@ -207,7 +217,7 @@ export namespace EdenTreaty {
207
217
  data: Route['response'] extends {
208
218
  200: infer ReturnedType
209
219
  }
210
- ? ReturnedType
220
+ ? Awaited<ReturnedType>
211
221
  : unknown
212
222
  error: null
213
223
  }