@elysiajs/eden 0.6.3 → 0.6.5

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.
Files changed (56) hide show
  1. package/dist/chunk-FY4RFSUV.mjs +1 -0
  2. package/dist/chunk-G4C5WHQF.mjs +1 -0
  3. package/dist/chunk-TUC2YNFX.mjs +1 -0
  4. package/dist/chunk-X77HNZQV.mjs +1 -0
  5. package/dist/chunk-Y6SMVGJX.mjs +1 -0
  6. package/dist/errors.d.ts +5 -0
  7. package/dist/fetch/index.d.ts +4 -0
  8. package/dist/fetch/types.d.ts +47 -0
  9. package/dist/fetch.global.js +1 -0
  10. package/dist/fetch.js +1 -1
  11. package/dist/fetch.mjs +1 -52
  12. package/dist/fn/index.d.ts +4 -0
  13. package/dist/fn/types.d.ts +27 -0
  14. package/dist/fn/utils.d.ts +13 -0
  15. package/dist/fn.global.js +1 -0
  16. package/dist/fn.js +1 -1
  17. package/dist/fn.mjs +1 -93
  18. package/dist/index.d.ts +3 -0
  19. package/dist/index.global.js +1 -0
  20. package/dist/index.js +1 -25
  21. package/dist/index.mjs +1 -9
  22. package/dist/treaty/index.d.ts +17 -0
  23. package/dist/treaty/types.d.ts +75 -0
  24. package/dist/treaty/utils.d.ts +1 -0
  25. package/dist/treaty.global.js +1 -0
  26. package/dist/treaty.js +1 -1
  27. package/dist/treaty.mjs +1 -173
  28. package/dist/types.d.ts +25 -0
  29. package/package.json +9 -8
  30. package/src/fetch/types.ts +5 -5
  31. package/src/index.ts +0 -25
  32. package/src/treaty/index.ts +4 -2
  33. package/tsup.config.ts +21 -0
  34. package/dist/errors-5a40996f.mjs +0 -14
  35. package/dist/errors-a2cfc56a.js +0 -1
  36. package/dist/errors.js +0 -10
  37. package/dist/errors.js.map +0 -1
  38. package/dist/fetch/index.js +0 -67
  39. package/dist/fetch/index.js.map +0 -1
  40. package/dist/fetch/types.js +0 -2
  41. package/dist/fetch/types.js.map +0 -1
  42. package/dist/fn/index.js +0 -35
  43. package/dist/fn/index.js.map +0 -1
  44. package/dist/fn/types.js +0 -2
  45. package/dist/fn/types.js.map +0 -1
  46. package/dist/fn/utils.js +0 -59
  47. package/dist/fn/utils.js.map +0 -1
  48. package/dist/index.js.map +0 -1
  49. package/dist/treaty/index.js +0 -205
  50. package/dist/treaty/index.js.map +0 -1
  51. package/dist/treaty/types.js +0 -2
  52. package/dist/treaty/types.js.map +0 -1
  53. package/dist/treaty/utils.js +0 -13
  54. package/dist/treaty/utils.js.map +0 -1
  55. package/dist/types.js +0 -2
  56. package/dist/types.js.map +0 -1
package/dist/treaty.js CHANGED
@@ -1 +1 @@
1
- "use strict";var A=Object.defineProperty;var k=(r,e,t)=>e in r?A(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t;var b=(r,e,t)=>(k(r,typeof e!="symbol"?e+"":e,t),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const j=require("./errors-a2cfc56a.js"),P=(r,e,t)=>{if(r.endsWith("/")||(r+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${r}${e}`;let n="";for(const[o,s]of Object.entries(t))n+=`${o}=${s}&`;return`${r}${e}?${n.slice(0,-1)}`},g=typeof FileList>"u",x=r=>g?r instanceof Blob:r instanceof FileList||r instanceof File,T=r=>{if(!r)return!1;for(const e in r){if(x(r[e]))return!0;if(Array.isArray(r[e])&&r[e].find(t=>x(t)))return!0}return!1},L=r=>g?r:new Promise(e=>{const t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:r.type}))},t.readAsArrayBuffer(r)});class N{constructor(e){b(this,"ws");b(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,o=>{if(e==="message"){let s=o.data.toString();const l=s.charCodeAt(0);if(l===47||l===123)try{s=JSON.parse(s)}catch{}else Number.isNaN(+s)?s==="true"?s=!0:s==="fase"&&(s=!1):s=+s;t({...o,data:s})}else t(o)},n),this}removeEventListener(e,t,n){return this.off(e,t,n),this}close(){return this.ws.close(),this}}const O=(r,e="",t)=>new Proxy(()=>{},{get(n,o,s){return O(r,`${e}/${o.toString()}`,t)},apply(n,o,[{$query:s,$fetch:l,$headers:$,...E}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){const v=e.lastIndexOf("/"),h=e.slice(v+1),w=P(r,e.slice(0,v),s);return h==="subscribe"?new N(w.replace(/^([^]+):\/\//,w.startsWith("https://")?"wss://":"ws://")):(async()=>{var S,m;let c;const F={...(S=t.$fetch)==null?void 0:S.headers,...l==null?void 0:l.headers,...$};if(h!=="GET"&&h!=="HEAD"){c=Object.keys(E).length?E:void 0;const a=typeof c=="object";if(a&&T(c)){const d=new FormData;for(const[y,f]of Object.entries(c))if(g)d.append(y,f);else if(f instanceof File)d.append(y,await L(f));else if(f instanceof FileList)for(let p=0;p<f.length;p++)d.append(y,await L(f[p]));else d.append(y,f);c=d}else F["content-type"]=a?"application/json":"text/plain",a&&(c=JSON.stringify(c))}const i=await(t.fetcher??fetch)(w,{method:h,body:c,...t.$fetch,...l,headers:F});let u;switch((m=i.headers.get("Content-Type"))==null?void 0:m.split(";")[0]){case"application/json":u=await i.json();break;default:u=await i.text().then(a=>Number.isNaN(+a)?a==="true"?!0:a==="false"?!1:a:+a)}return i.status>300?{data:u,error:new j.EdenFetchError(i.status,await u),status:i.status,raw:i,headers:i.headers}:{data:u,status:i.status,response:i,headers:i.headers,error:null}})()}}),B=(r,e={fetcher:fetch})=>new Proxy({},{get(t,n){return O(r,n,e)}});exports.EdenWS=N;exports.edenTreaty=B;
1
+ "use strict";var v=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var F=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var N=(s,e)=>{for(var t in e)v(s,t,{get:e[t],enumerable:!0})},R=(s,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of F(e))!K.call(s,i)&&i!==t&&v(s,i,{get:()=>e[i],enumerable:!(n=O(e,i))||n.enumerable});return s};var M=s=>R(v({},"__esModule",{value:!0}),s);var P={};N(P,{EdenWS:()=>g,edenTreaty:()=>B});module.exports=M(P);var h=class extends Error{status;value;constructor(e,t){super(),this.status=e,this.value=t}};var x=(s,e,t)=>{if(s.endsWith("/")||(s+="/"),e==="index"&&(e=""),!t||!Object.keys(t).length)return`${s}${e}`;let n="";for(let[i,r]of Object.entries(t))n+=`${i}=${r}&`;return`${s}${e}?${n.slice(0,-1)}`};var S=typeof FileList>"u",$=s=>S?s instanceof Blob:s instanceof FileList||s instanceof File,j=s=>{if(!s)return!1;for(let e in s){if($(s[e]))return!0;if(Array.isArray(s[e])&&s[e].find(t=>$(t)))return!0}return!1},T=s=>S?s:new Promise(e=>{let t=new FileReader;t.onload=()=>{e(new Blob([t.result],{type:s.type}))},t.readAsArrayBuffer(s)}),g=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,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,i=>{if(e==="message"){let r=i.data.toString(),u=r.charCodeAt(0);if(u===47||u===123)try{r=JSON.parse(r)}catch{}else Number.isNaN(+r)?r==="true"?r=!0:r==="fase"&&(r=!1):r=+r;t({...i,data:r})}else t(i)},n),this}removeEventListener(e,t,n){return this.off(e,t,n),this}close(){return this.ws.close(),this}},L=(s,e="",t)=>new Proxy(()=>{},{get(n,i,r){return L(s,`${e}/${i.toString()}`,t)},apply(n,i,[{$query:r,$fetch:u,$headers:W,...w}={$fetch:void 0,$headers:void 0,$query:void 0}]=[{}]){let E=e.lastIndexOf("/"),y=e.slice(E+1),b=x(s,E===-1?"/":e.slice(0,E),r),A=t.fetcher??fetch;return y==="subscribe"?new g(b.replace(/^([^]+):\/\//,b.startsWith("https://")?"wss://":"ws://")):(async()=>{let c,k={...t.$fetch?.headers,...u?.headers,...W};if(y!=="GET"&&y!=="HEAD"){c=Object.keys(w).length?w:void 0;let o=typeof c=="object";if(o&&j(c)){let l=new FormData;for(let[p,f]of Object.entries(c))if(S)l.append(p,f);else if(f instanceof File)l.append(p,await T(f));else if(f instanceof FileList)for(let m=0;m<f.length;m++)l.append(p,await T(f[m]));else l.append(p,f);c=l}else k["content-type"]=o?"application/json":"text/plain",o&&(c=JSON.stringify(c))}let a=await A(b,{method:y,body:c,...t.$fetch,...u,headers:k}),d;switch(a.headers.get("Content-Type")?.split(";")[0]){case"application/json":d=await a.json();break;default:d=await a.text().then(o=>Number.isNaN(+o)?o==="true"?!0:o==="false"?!1:o:+o)}return a.status>300?{data:d,error:new h(a.status,await d),status:a.status,raw:a,headers:a.headers}:{data:d,status:a.status,response:a,headers:a.headers,error:null}})()}}),B=(s,e={fetcher:fetch})=>new Proxy({},{get(t,n){return L(s,n,e)}});0&&(module.exports={EdenWS,edenTreaty});
package/dist/treaty.mjs CHANGED
@@ -1,173 +1 @@
1
- var A = Object.defineProperty;
2
- var O = (s, e, t) => e in s ? A(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
- var b = (s, e, t) => (O(s, typeof e != "symbol" ? e + "" : e, t), t);
4
- import { E as k } from "./errors-5a40996f.mjs";
5
- const j = (s, e, t) => {
6
- if (s.endsWith("/") || (s += "/"), e === "index" && (e = ""), !t || !Object.keys(t).length)
7
- return `${s}${e}`;
8
- let n = "";
9
- for (const [o, r] of Object.entries(t))
10
- n += `${o}=${r}&`;
11
- return `${s}${e}?${n.slice(0, -1)}`;
12
- }, g = typeof FileList > "u", L = (s) => g ? s instanceof Blob : s instanceof FileList || s instanceof File, B = (s) => {
13
- if (!s)
14
- return !1;
15
- for (const e in s) {
16
- if (L(s[e]))
17
- return !0;
18
- if (Array.isArray(s[e]) && s[e].find((t) => L(t)))
19
- return !0;
20
- }
21
- return !1;
22
- }, N = (s) => g ? s : new Promise((e) => {
23
- const t = new FileReader();
24
- t.onload = () => {
25
- e(new Blob([t.result], { type: s.type }));
26
- }, t.readAsArrayBuffer(s);
27
- });
28
- class P {
29
- constructor(e) {
30
- b(this, "ws");
31
- b(this, "url");
32
- this.ws = new WebSocket(e), this.url = e;
33
- }
34
- send(e) {
35
- return Array.isArray(e) ? (e.forEach((t) => this.send(t)), this) : (this.ws.send(
36
- typeof e == "object" ? JSON.stringify(e) : e.toString()
37
- ), this);
38
- }
39
- on(e, t, n) {
40
- return this.addEventListener(e, t, n);
41
- }
42
- off(e, t, n) {
43
- return this.ws.removeEventListener(e, t, n), this;
44
- }
45
- subscribe(e, t) {
46
- return this.addEventListener("message", e, t);
47
- }
48
- addEventListener(e, t, n) {
49
- return this.ws.addEventListener(
50
- e,
51
- (o) => {
52
- if (e === "message") {
53
- let r = o.data.toString();
54
- const c = r.charCodeAt(0);
55
- if (c === 47 || c === 123)
56
- try {
57
- r = JSON.parse(r);
58
- } catch {
59
- }
60
- else
61
- Number.isNaN(+r) ? r === "true" ? r = !0 : r === "fase" && (r = !1) : r = +r;
62
- t({
63
- ...o,
64
- data: r
65
- });
66
- } else
67
- t(o);
68
- },
69
- n
70
- ), this;
71
- }
72
- removeEventListener(e, t, n) {
73
- return this.off(e, t, n), this;
74
- }
75
- close() {
76
- return this.ws.close(), this;
77
- }
78
- }
79
- const S = (s, e = "", t) => new Proxy(() => {
80
- }, {
81
- get(n, o, r) {
82
- return S(s, `${e}/${o.toString()}`, t);
83
- },
84
- apply(n, o, [
85
- { $query: r, $fetch: c, $headers: $, ...E } = {
86
- $fetch: void 0,
87
- $headers: void 0,
88
- $query: void 0
89
- }
90
- ] = [{}]) {
91
- const F = e.lastIndexOf("/"), h = e.slice(F + 1), w = j(s, e.slice(0, F), r);
92
- return h === "subscribe" ? new P(
93
- w.replace(
94
- /^([^]+):\/\//,
95
- w.startsWith("https://") ? "wss://" : "ws://"
96
- )
97
- ) : (async () => {
98
- var m, x;
99
- let f;
100
- const v = {
101
- ...(m = t.$fetch) == null ? void 0 : m.headers,
102
- ...c == null ? void 0 : c.headers,
103
- ...$
104
- };
105
- if (h !== "GET" && h !== "HEAD") {
106
- f = Object.keys(E).length ? E : void 0;
107
- const a = typeof f == "object";
108
- if (a && B(f)) {
109
- const d = new FormData();
110
- for (const [y, l] of Object.entries(f))
111
- if (g)
112
- d.append(y, l);
113
- else if (l instanceof File)
114
- d.append(
115
- y,
116
- await N(l)
117
- );
118
- else if (l instanceof FileList)
119
- for (let p = 0; p < l.length; p++)
120
- d.append(
121
- y,
122
- await N(l[p])
123
- );
124
- else
125
- d.append(y, l);
126
- f = d;
127
- } else
128
- v["content-type"] = a ? "application/json" : "text/plain", a && (f = JSON.stringify(f));
129
- }
130
- const i = await (t.fetcher ?? fetch)(w, {
131
- method: h,
132
- body: f,
133
- ...t.$fetch,
134
- ...c,
135
- headers: v
136
- });
137
- let u;
138
- switch ((x = i.headers.get("Content-Type")) == null ? void 0 : x.split(";")[0]) {
139
- case "application/json":
140
- u = await i.json();
141
- break;
142
- default:
143
- u = await i.text().then((a) => Number.isNaN(+a) ? a === "true" ? !0 : a === "false" ? !1 : a : +a);
144
- }
145
- return i.status > 300 ? {
146
- data: u,
147
- error: new k(i.status, await u),
148
- status: i.status,
149
- raw: i,
150
- headers: i.headers
151
- } : {
152
- data: u,
153
- status: i.status,
154
- response: i,
155
- headers: i.headers,
156
- error: null
157
- };
158
- })();
159
- }
160
- }), C = (s, e = {
161
- fetcher: fetch
162
- }) => new Proxy(
163
- {},
164
- {
165
- get(t, n) {
166
- return S(s, n, e);
167
- }
168
- }
169
- );
170
- export {
171
- P as EdenWS,
172
- C as edenTreaty
173
- };
1
+ import{a,b}from"./chunk-FY4RFSUV.mjs";import"./chunk-Y6SMVGJX.mjs";export{a as EdenWS,b as edenTreaty};
@@ -0,0 +1,25 @@
1
+ import type { EdenFetchError } from './errors';
2
+ type Range<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
3
+ type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc['length']]>;
4
+ type ErrorRange = Range<300, 599>;
5
+ export type MapError<T extends Record<number, unknown>> = [
6
+ {
7
+ [K in keyof T]-?: K extends ErrorRange ? K : never;
8
+ }[keyof T]
9
+ ] extends [infer A extends number] ? {
10
+ [K in A]: EdenFetchError<K, T[K]>;
11
+ }[A] : false;
12
+ export type UnionToIntersect<U> = (U extends unknown ? (arg: U) => 0 : never) extends (arg: infer I) => 0 ? I : never;
13
+ export type IsAny<T> = 0 extends 1 & T ? true : false;
14
+ export type IsNever<T> = [T] extends [never] ? true : false;
15
+ export type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
16
+ export type AnyTypedRoute = {
17
+ body: unknown;
18
+ headers: Record<string, any> | undefined;
19
+ query: Record<string, any> | undefined;
20
+ params: Record<string, any> | undefined;
21
+ response: Record<string, unknown> & {
22
+ '200': unknown;
23
+ };
24
+ };
25
+ export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elysiajs/eden",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "description": "Fully type-safe Elysia client",
5
5
  "author": {
6
6
  "name": "saltyAom",
@@ -52,9 +52,9 @@
52
52
  "bugs": "https://github.com/elysiajs/elysia-eden/issues",
53
53
  "license": "MIT",
54
54
  "scripts": {
55
- "dev": "bun run --hot example/index.ts",
56
- "test": "bun wiptest",
57
- "build": "vite build && tsc",
55
+ "dev": "bun run --watch example/index.ts",
56
+ "test": "bun test",
57
+ "build": "tsup",
58
58
  "release": "npm run build && npm run test && npm publish --access public"
59
59
  },
60
60
  "peerDependencies": {
@@ -70,12 +70,13 @@
70
70
  "@elysiajs/fn": "^0.6.1",
71
71
  "@sinclair/typebox": "^0.26.8",
72
72
  "@types/node": "^18.15.5",
73
- "elysia": "0.6.10",
73
+ "bun-types": "^1.0.1",
74
+ "elysia": "0.6.22",
75
+ "esbuild": "^0.19.2",
74
76
  "eslint": "^8.26.0",
75
77
  "rimraf": "^4.4.1",
76
- "typescript": "^5.0.4",
77
- "vite": "^4.4.9",
78
- "vite-plugin-dts": "^2.3.0"
78
+ "tsup": "^7.2.0",
79
+ "typescript": "^5.0.4"
79
80
  },
80
81
  "dependencies": {
81
82
  "superjson": "^1.12.2"
@@ -19,17 +19,17 @@ export namespace EdenFetch {
19
19
 
20
20
  export type Fn<Schema extends Record<string, any>> = <
21
21
  Endpoint extends keyof Schema,
22
- Method extends Extract<keyof Schema[Endpoint], string>,
23
- Route extends Schema[Endpoint][Method]
22
+ Method extends Uppercase<Extract<keyof Schema[Endpoint], string>>,
23
+ Route extends Schema[Endpoint][Lowercase<Method>]
24
24
  >(
25
25
  endpoint: Endpoint,
26
26
  options: Omit<RequestInit, 'body' | 'method' | 'headers'> &
27
- ('get' extends Method
27
+ ('GET' extends Method
28
28
  ? {
29
- method?: Uppercase<Method>
29
+ method?: Method
30
30
  }
31
31
  : {
32
- method: Uppercase<Method>
32
+ method: Method
33
33
  }) &
34
34
  (IsNever<keyof Route['params']> extends true
35
35
  ? {
package/src/index.ts CHANGED
@@ -7,28 +7,3 @@ import type { EdenFn } from './fn'
7
7
  export { edenTreaty } from './treaty'
8
8
  export { edenFetch } from './fetch'
9
9
  export { edenFn } from './fn'
10
-
11
- // @ts-ignore
12
- // export const eden: Eden = (domain: string) => ({
13
- // treaty(config) {
14
- // return import('./treaty').then((x) => x.edenTreaty(domain, config))
15
- // },
16
- // fn(config) {
17
- // return import('./fn').then((x) => x.edenFn(domain, config))
18
- // },
19
- // fetch(config) {
20
- // return import('./fetch').then((x) => x.edenFetch(domain, config))
21
- // }
22
- // })
23
-
24
- // type Eden = (domain: string) => {
25
- // treaty<App extends Elysia<any>>(
26
- // config?: EdenTreaty.Config
27
- // ): EdenTreaty.Create<App>
28
-
29
- // fetch<App extends Elysia<any>>(
30
- // config?: EdenFetch.Config
31
- // ): EdenFetch.Create<App>
32
-
33
- // fn<App extends Elysia<any>>(config?: EdenFn.Config): EdenFn.Create<App>
34
- // }
@@ -179,7 +179,9 @@ const createProxy = (
179
179
  ) {
180
180
  const i = path.lastIndexOf('/'),
181
181
  method = path.slice(i + 1),
182
- url = composePath(domain, path.slice(0, i), $query)
182
+ url = composePath(domain, i === -1 ? '/' : path.slice(0, i), $query)
183
+
184
+ const fetcher = config.fetcher ?? fetch
183
185
 
184
186
  if (method === 'subscribe')
185
187
  return new EdenWS(
@@ -240,7 +242,7 @@ const createProxy = (
240
242
  }
241
243
  }
242
244
 
243
- const response = await (config.fetcher ?? fetch)(url, {
245
+ const response = await fetcher(url, {
244
246
  method,
245
247
  body,
246
248
  ...config.$fetch,
package/tsup.config.ts ADDED
@@ -0,0 +1,21 @@
1
+ import { defineConfig } from 'tsup'
2
+ import { resolve } from 'path'
3
+ import { exec } from 'child_process'
4
+
5
+ export default defineConfig({
6
+ entry: {
7
+ index: resolve(__dirname, 'src/index.ts'),
8
+ treaty: resolve(__dirname, 'src/treaty/index.ts'),
9
+ fetch: resolve(__dirname, 'src/fetch/index.ts'),
10
+ fn: resolve(__dirname, 'src/fn/index.ts')
11
+ },
12
+ format: ['cjs', 'esm', 'iife'],
13
+ globalName: 'Eden',
14
+ minify: true,
15
+ external: ['elysia', 'superjson'],
16
+ async onSuccess() {
17
+ exec('tsc --emitDeclarationOnly --declaration', {
18
+ cwd: resolve(__dirname, 'dist')
19
+ })
20
+ }
21
+ })
@@ -1,14 +0,0 @@
1
- var u = Object.defineProperty;
2
- var o = (r, s, t) => s in r ? u(r, s, { enumerable: !0, configurable: !0, writable: !0, value: t }) : r[s] = t;
3
- var e = (r, s, t) => (o(r, typeof s != "symbol" ? s + "" : s, t), t);
4
- class E extends Error {
5
- constructor(t, a) {
6
- super();
7
- e(this, "status");
8
- e(this, "value");
9
- this.status = t, this.value = a;
10
- }
11
- }
12
- export {
13
- E
14
- };
@@ -1 +0,0 @@
1
- "use strict";var c=Object.defineProperty;var a=(t,r,s)=>r in t?c(t,r,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[r]=s;var e=(t,r,s)=>(a(t,typeof r!="symbol"?r+"":r,s),s);class o extends Error{constructor(s,u){super();e(this,"status");e(this,"value");this.status=s,this.value=u}}exports.EdenFetchError=o;
package/dist/errors.js DELETED
@@ -1,10 +0,0 @@
1
- export class EdenFetchError extends Error {
2
- status;
3
- value;
4
- constructor(status, value) {
5
- super();
6
- this.status = status;
7
- this.value = value;
8
- }
9
- }
10
- //# sourceMappingURL=errors.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,cAGX,SAAQ,KAAK;IACX,MAAM,CAAQ;IACd,KAAK,CAAO;IAEZ,YAAY,MAAc,EAAE,KAAY;QACpC,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;IACtB,CAAC;CACJ"}
@@ -1,67 +0,0 @@
1
- import { EdenFetchError } from '../errors';
2
- export const edenFetch = (server, config) =>
3
- // @ts-ignore
4
- (endpoint, { query, params, body, ...options } = {}) => {
5
- if (params)
6
- Object.entries(params).forEach(([key, value]) => {
7
- endpoint = endpoint.replace(`:${key}`, value);
8
- });
9
- const contentType = options.headers?.['Content-Type'];
10
- if (!contentType || contentType === 'application/json')
11
- try {
12
- body = JSON.stringify(body);
13
- }
14
- catch (error) {
15
- //
16
- }
17
- const fetch = config?.fetcher || globalThis.fetch;
18
- const queryStr = query
19
- ? `?${new URLSearchParams(query).toString()}`
20
- : '';
21
- // @ts-ignore
22
- const execute = () => fetch(server + endpoint + queryStr, {
23
- ...options,
24
- headers: body
25
- ? {
26
- 'content-type': 'application/json',
27
- ...options.headers
28
- }
29
- : options.headers,
30
- body: body
31
- }).then(async (res) => {
32
- let data;
33
- switch (res.headers.get('Content-Type')?.split(';')[0]) {
34
- case 'application/json':
35
- data = await res.json();
36
- break;
37
- default:
38
- data = await res.text().then((d) => {
39
- if (!Number.isNaN(+d))
40
- return +d;
41
- if (d === 'true')
42
- return true;
43
- if (d === 'false')
44
- return false;
45
- return d;
46
- });
47
- break;
48
- }
49
- if (res.status > 300)
50
- return {
51
- data: null,
52
- status: res.status,
53
- headers: res.headers,
54
- retry: execute,
55
- error: new EdenFetchError(res.status, data)
56
- };
57
- return {
58
- data,
59
- error: null,
60
- status: res.status,
61
- headers: res.headers,
62
- retry: execute
63
- };
64
- });
65
- return execute();
66
- };
67
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fetch/index.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/fetch/types.ts"],"names":[],"mappings":""}
package/dist/fn/index.js DELETED
@@ -1,35 +0,0 @@
1
- import { Signal } from './utils';
2
- const createProxy = (domain, procedures, signal) =>
3
- // eslint-disable-next-line @typescript-eslint/no-empty-function
4
- new Proxy((..._) => { }, {
5
- get(target, key, value) {
6
- return createProxy(domain, [...procedures, key], signal);
7
- },
8
- apply(target, _, params) {
9
- const param = params[0];
10
- const procedure = procedures[0];
11
- if (procedures.length === 1) {
12
- if (procedure in Object.prototype ||
13
- procedure in Promise.prototype)
14
- return target(...params);
15
- switch (procedure) {
16
- case 'toJSON':
17
- return target(...params);
18
- case '$set':
19
- return signal.setConfig(param);
20
- case '$clone':
21
- return createProxy(domain, [], signal.clone(param));
22
- }
23
- }
24
- return signal.run(procedures, params).then((result) => {
25
- if (result instanceof Error)
26
- throw result;
27
- return result;
28
- });
29
- }
30
- });
31
- export const edenFn = (domain, config) =>
32
- // eslint-disable-next-line @typescript-eslint/ban-ts-comment
33
- // @ts-ignore
34
- createProxy(domain, [], new Signal(domain, config));
35
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fn/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAKhC,MAAM,WAAW,GAAG,CAChB,MAAc,EACd,UAAoB,EACpB,MAAc,EACS,EAAE;AACzB,gEAAgE;AAChE,IAAI,KAAK,CAAC,CAAC,GAAG,CAAQ,EAAE,EAAE,GAAE,CAAC,EAAE;IAC3B,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK;QAClB,OAAO,WAAW,CAAC,MAAM,EAAE,CAAC,GAAG,UAAU,EAAE,GAAa,CAAC,EAAE,MAAM,CAAC,CAAA;IACtE,CAAC;IACD,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,MAAM;QACnB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAA;QACvB,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;QAE/B,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,IACI,SAAS,IAAI,MAAM,CAAC,SAAS;gBAC7B,SAAS,IAAI,OAAO,CAAC,SAAS;gBAE9B,OAAO,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;YAE5B,QAAQ,SAAS,EAAE;gBACf,KAAK,QAAQ;oBACT,OAAO,MAAM,CAAC,GAAG,MAAM,CAAC,CAAA;gBAE5B,KAAK,MAAM;oBACP,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBAElC,KAAK,QAAQ;oBACT,OAAO,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAA;aAC1D;SACJ;QAED,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YAClD,IAAI,MAAM,YAAY,KAAK;gBAAE,MAAM,MAAM,CAAA;YAEzC,OAAO,MAAM,CAAA;QACjB,CAAC,CAAC,CAAA;IACN,CAAC;CACJ,CAAQ,CAAA;AAEb,MAAM,CAAC,MAAM,MAAM,GAAG,CAClB,MAAc,EACd,MAAsB,EACJ,EAAE;AACpB,6DAA6D;AAC7D,aAAa;AACb,WAAW,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA"}
package/dist/fn/types.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/fn/types.ts"],"names":[],"mappings":""}
package/dist/fn/utils.js DELETED
@@ -1,59 +0,0 @@
1
- export class Signal {
2
- url;
3
- config;
4
- pendings = [];
5
- operation = null;
6
- isFetching = false;
7
- sJson;
8
- constructor(url, config = {}) {
9
- this.url = url;
10
- this.config = config;
11
- this.sJson = import('superjson').then((superJson) => {
12
- return {
13
- serialize: superJson.serialize,
14
- deserialize: superJson.deserialize
15
- };
16
- });
17
- }
18
- setConfig(config) {
19
- this.config = config;
20
- }
21
- clone(config) {
22
- return new Signal(this.url, config ?? this.config);
23
- }
24
- async run(procedure, params) {
25
- const current = +this.pendings.length;
26
- this.pendings.push(params !== undefined
27
- ? { n: procedure, p: params }
28
- : { n: procedure });
29
- if (this.isFetching)
30
- return this.operation?.then((x) => x[current]);
31
- this.isFetching = true;
32
- this.operation = new Promise((resolve) => {
33
- setTimeout(async () => {
34
- const requests = [...this.pendings];
35
- this.pendings = [];
36
- const { serialize, deserialize } = await this.sJson;
37
- const fetch = this.config?.fetcher || globalThis.fetch;
38
- const results = await fetch(`${this.url}${this.config.fn ?? '/~fn'}`, {
39
- method: 'POST',
40
- ...this.config.fetch,
41
- headers: {
42
- 'content-type': 'elysia/fn',
43
- ...this.config.fetch?.headers
44
- },
45
- body: JSON.stringify(serialize(requests))
46
- });
47
- if (results.status === 200)
48
- resolve(results.json().then((x) => deserialize(x)));
49
- else
50
- resolve(Array(requests.length).fill(new Error(await results.text())));
51
- }, 33);
52
- });
53
- const result = await this.operation.then((results) => results[current]);
54
- this.operation = null;
55
- this.isFetching = false;
56
- return result;
57
- }
58
- }
59
- //# sourceMappingURL=utils.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/fn/utils.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,MAAM;IACP,GAAG,CAAQ;IACX,MAAM,CAAe;IAErB,QAAQ,GAAqD,EAAE,CAAA;IAC/D,SAAS,GAA0B,IAAI,CAAA;IACvC,UAAU,GAAG,KAAK,CAAA;IAElB,KAAK,CAGX;IAEF,YAAY,GAAW,EAAE,SAAwB,EAAE;QAC/C,IAAI,CAAC,GAAG,GAAG,GAAG,CAAA;QACd,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QAEpB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YAChD,OAAO;gBACH,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,WAAW,EAAE,SAAS,CAAC,WAAW;aACrC,CAAA;QACL,CAAC,CAAC,CAAA;IACN,CAAC;IAED,SAAS,CAAC,MAAqB;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,MAAsB;QACxB,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAA;IACtD,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,SAAmB,EAAE,MAAW;QACtC,MAAM,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAA;QACrC,IAAI,CAAC,QAAQ,CAAC,IAAI,CACd,MAAM,KAAK,SAAS;YAChB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,MAAM,EAAE;YAC7B,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,CACzB,CAAA;QAED,IAAI,IAAI,CAAC,UAAU;YAAE,OAAO,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;QACnE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAA;QAEtB,IAAI,CAAC,SAAS,GAAG,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACrC,UAAU,CAAC,KAAK,IAAI,EAAE;gBAClB,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAA;gBACnC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAA;gBAElB,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAA;gBAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,UAAU,CAAC,KAAK,CAAA;gBACtD,MAAM,OAAO,GAAG,MAAM,KAAK,CACvB,GAAG,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,EAAE,EACxC;oBACI,MAAM,EAAE,MAAM;oBACd,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK;oBACpB,OAAO,EAAE;wBACL,cAAc,EAAE,WAAW;wBAC3B,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO;qBAChC;oBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;iBAC5C,CACJ,CAAA;gBAED,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG;oBACtB,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,CAAQ,CAAC,CAAC,CAAC,CAAA;;oBAE1D,OAAO,CACH,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CACvB,IAAI,KAAK,CAAC,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC,CAClC,CACJ,CAAA;YACT,CAAC,EAAE,EAAE,CAAC,CAAA;QACV,CAAC,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QAEvE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;QACrB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAA;QAEvB,OAAO,MAAM,CAAA;IACjB,CAAC;CACJ"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAA;AAE7B,aAAa;AACb,mDAAmD;AACnD,uBAAuB;AACvB,8EAA8E;AAC9E,SAAS;AACT,mBAAmB;AACnB,sEAAsE;AACtE,SAAS;AACT,sBAAsB;AACtB,4EAA4E;AAC5E,QAAQ;AACR,KAAK;AAEL,oCAAoC;AACpC,uCAAuC;AACvC,qCAAqC;AACrC,gCAAgC;AAEhC,sCAAsC;AACtC,oCAAoC;AACpC,+BAA+B;AAE/B,8EAA8E;AAC9E,IAAI"}