@elysiajs/eden 1.4.3 → 1.4.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.
package/bun.lock CHANGED
@@ -1,5 +1,6 @@
1
1
  {
2
2
  "lockfileVersion": 1,
3
+ "configVersion": 0,
3
4
  "workspaces": {
4
5
  "": {
5
6
  "name": "@elysiajs/eden",
@@ -7,7 +8,7 @@
7
8
  "@elysiajs/cors": "1.3.3",
8
9
  "@types/bun": "^1.2.20",
9
10
  "@types/node": "^24.3.0",
10
- "elysia": "^1.4.10",
11
+ "elysia": "^1.4.15",
11
12
  "esbuild": "^0.25.9",
12
13
  "eslint": "^9.34.0",
13
14
  "expect-type": "^1.2.2",
@@ -17,11 +18,13 @@
17
18
  "vite": "^7.1.3",
18
19
  },
19
20
  "peerDependencies": {
20
- "elysia": ">= 1.4.0-exp.0",
21
+ "elysia": ">= 1.4.0",
21
22
  },
22
23
  },
23
24
  },
24
25
  "packages": {
26
+ "@borewit/text-codec": ["@borewit/text-codec@0.1.1", "", {}, "sha512-5L/uBxmjaCIX5h8Z+uu+kA9BQLkc/Wl06UGR5ajNRxu+/XjonB5i8JpgFMrPj3LXTCPA0pv8yxUvbUi+QthGGA=="],
27
+
25
28
  "@elysiajs/cors": ["@elysiajs/cors@1.3.3", "", { "peerDependencies": { "elysia": ">= 1.3.0" } }, "sha512-mYIU6PyMM6xIJuj7d27Vt0/wuzVKIEnFPjcvlkyd7t/m9xspAG37cwNjFxVOnyvY43oOd2I/oW2DB85utXpA2Q=="],
26
29
 
27
30
  "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.9", "", { "os": "aix", "cpu": "ppc64" }, "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA=="],
@@ -162,6 +165,10 @@
162
165
 
163
166
  "@sinclair/typebox": ["@sinclair/typebox@0.34.33", "", {}, "sha512-5HAV9exOMcXRUxo+9iYB5n09XxzCXnfy4VTNW4xnDv+FgjzAGY989C28BIdljKqmF+ZltUwujE3aossvcVtq6g=="],
164
167
 
168
+ "@tokenizer/inflate": ["@tokenizer/inflate@0.3.1", "", { "dependencies": { "debug": "^4.4.1", "fflate": "^0.8.2", "token-types": "^6.0.0" } }, "sha512-4oeoZEBQdLdt5WmP/hx1KZ6D3/Oid/0cUb2nk4F0pTDAWy+KCH3/EnAkZF/bvckWo8I33EqBm01lIPgmgc8rCA=="],
169
+
170
+ "@tokenizer/token": ["@tokenizer/token@0.3.0", "", {}, "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A=="],
171
+
165
172
  "@types/bun": ["@types/bun@1.2.20", "", { "dependencies": { "bun-types": "1.2.20" } }, "sha512-dX3RGzQ8+KgmMw7CsW4xT5ITBSCrSbfHc36SNT31EOUg/LA9JWq0VDdEXDRSe1InVWpd2yLUM1FUF/kEOyTzYA=="],
166
173
 
167
174
  "@types/estree": ["@types/estree@1.0.7", "", {}, "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ=="],
@@ -226,7 +233,7 @@
226
233
 
227
234
  "eastasianwidth": ["eastasianwidth@0.2.0", "", {}, "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA=="],
228
235
 
229
- "elysia": ["elysia@1.4.10", "", { "dependencies": { "cookie": "^1.0.2", "exact-mirror": "0.2.2", "fast-decode-uri-component": "^1.0.1" }, "peerDependencies": { "@sinclair/typebox": ">= 0.34.0 < 1", "file-type": ">= 20.0.0", "openapi-types": ">= 12.0.0", "typescript": ">= 5.0.0" }, "optionalPeers": ["file-type", "typescript"] }, "sha512-PiW+s5TFaAUrFXuMX43v46VYiRszRrn7je5D62V+QJXXoQxPgIH9HjUSKmdk0fU3rz50y7EuP/mxMdsfLc81lg=="],
236
+ "elysia": ["elysia@1.4.15", "", { "dependencies": { "cookie": "^1.0.2", "exact-mirror": "0.2.2", "fast-decode-uri-component": "^1.0.1", "memoirist": "^0.4.0" }, "peerDependencies": { "@sinclair/typebox": ">= 0.34.0 < 1", "@types/bun": ">= 1.2.0", "file-type": ">= 20.0.0", "openapi-types": ">= 12.0.0", "typescript": ">= 5.0.0" }, "optionalPeers": ["@types/bun", "typescript"] }, "sha512-RaDqqZdLuC4UJetfVRQ4Z5aVpGgEtQ+pZnsbI4ZzEaf3l/MzuHcqSVoL/Fue3d6qE4RV9HMB2rAZaHyPIxkyzg=="],
230
237
 
231
238
  "emoji-regex": ["emoji-regex@9.2.2", "", {}, "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg=="],
232
239
 
@@ -264,8 +271,12 @@
264
271
 
265
272
  "fdir": ["fdir@6.5.0", "", { "peerDependencies": { "picomatch": "^3 || ^4" }, "optionalPeers": ["picomatch"] }, "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg=="],
266
273
 
274
+ "fflate": ["fflate@0.8.2", "", {}, "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="],
275
+
267
276
  "file-entry-cache": ["file-entry-cache@8.0.0", "", { "dependencies": { "flat-cache": "^4.0.0" } }, "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ=="],
268
277
 
278
+ "file-type": ["file-type@21.1.0", "", { "dependencies": { "@tokenizer/inflate": "^0.3.1", "strtok3": "^10.3.1", "token-types": "^6.0.0", "uint8array-extras": "^1.4.0" } }, "sha512-boU4EHmP3JXkwDo4uhyBhTt5pPstxB6eEXKJBu2yu2l7aAMMm7QQYQEzssJmKReZYrFdFOJS8koVo6bXIBGDqA=="],
279
+
269
280
  "find-up": ["find-up@5.0.0", "", { "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" } }, "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng=="],
270
281
 
271
282
  "fix-dts-default-cjs-exports": ["fix-dts-default-cjs-exports@1.0.1", "", { "dependencies": { "magic-string": "^0.30.17", "mlly": "^1.7.4", "rollup": "^4.34.8" } }, "sha512-pVIECanWFC61Hzl2+oOCtoJ3F17kglZC/6N94eRWycFgBH35hHx0Li604ZIzhseh97mf2p0cv7vVrOZGoqhlEg=="],
@@ -286,6 +297,8 @@
286
297
 
287
298
  "has-flag": ["has-flag@4.0.0", "", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
288
299
 
300
+ "ieee754": ["ieee754@1.2.1", "", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
301
+
289
302
  "ignore": ["ignore@5.3.2", "", {}, "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g=="],
290
303
 
291
304
  "import-fresh": ["import-fresh@3.3.1", "", { "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" } }, "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ=="],
@@ -332,6 +345,8 @@
332
345
 
333
346
  "magic-string": ["magic-string@0.30.18", "", { "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.5" } }, "sha512-yi8swmWbO17qHhwIBNeeZxTceJMeBvWJaId6dyvTSOwTipqeHhMhOrz6513r1sOKnpvQ7zkhlG8tPrpilwTxHQ=="],
334
347
 
348
+ "memoirist": ["memoirist@0.4.0", "", {}, "sha512-zxTgA0mSYELa66DimuNQDvyLq36AwDlTuVRbnQtB+VuTcKWm5Qc4z3WkSpgsFWHNhexqkIooqpv4hdcqrX5Nmg=="],
349
+
335
350
  "minimatch": ["minimatch@3.1.2", "", { "dependencies": { "brace-expansion": "^1.1.7" } }, "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw=="],
336
351
 
337
352
  "minipass": ["minipass@7.1.2", "", {}, "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw=="],
@@ -412,6 +427,8 @@
412
427
 
413
428
  "strip-json-comments": ["strip-json-comments@3.1.1", "", {}, "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig=="],
414
429
 
430
+ "strtok3": ["strtok3@10.3.4", "", { "dependencies": { "@tokenizer/token": "^0.3.0" } }, "sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg=="],
431
+
415
432
  "sucrase": ["sucrase@3.35.0", "", { "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "ts-interface-checker": "^0.1.9" }, "bin": { "sucrase": "bin/sucrase", "sucrase-node": "bin/sucrase-node" } }, "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA=="],
416
433
 
417
434
  "supports-color": ["supports-color@7.2.0", "", { "dependencies": { "has-flag": "^4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
@@ -424,6 +441,8 @@
424
441
 
425
442
  "tinyglobby": ["tinyglobby@0.2.14", "", { "dependencies": { "fdir": "^6.4.4", "picomatch": "^4.0.2" } }, "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ=="],
426
443
 
444
+ "token-types": ["token-types@6.1.1", "", { "dependencies": { "@borewit/text-codec": "^0.1.0", "@tokenizer/token": "^0.3.0", "ieee754": "^1.2.1" } }, "sha512-kh9LVIWH5CnL63Ipf0jhlBIy0UsrMj/NJDfpsy1SqOXlLKEVyXXYrnFxFT1yOOYVGBSApeVnjPw/sBz5BfEjAQ=="],
445
+
427
446
  "tr46": ["tr46@1.0.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA=="],
428
447
 
429
448
  "tree-kill": ["tree-kill@1.2.2", "", { "bin": { "tree-kill": "cli.js" } }, "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A=="],
@@ -438,6 +457,8 @@
438
457
 
439
458
  "ufo": ["ufo@1.6.1", "", {}, "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA=="],
440
459
 
460
+ "uint8array-extras": ["uint8array-extras@1.5.0", "", {}, "sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A=="],
461
+
441
462
  "undici-types": ["undici-types@7.10.0", "", {}, "sha512-t5Fy/nfn+14LuOc2KNYg75vZqClpAiqscVvMygNnlsHBFpSXdJaYtXMcdNLpl/Qvc3P2cB3s6lOV51nqsFq4ag=="],
442
463
 
443
464
  "uri-js": ["uri-js@4.4.1", "", { "dependencies": { "punycode": "^2.1.0" } }, "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg=="],
@@ -466,6 +487,8 @@
466
487
 
467
488
  "@jridgewell/trace-mapping/@jridgewell/sourcemap-codec": ["@jridgewell/sourcemap-codec@1.5.0", "", {}, "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ=="],
468
489
 
490
+ "@tokenizer/inflate/debug": ["debug@4.4.3", "", { "dependencies": { "ms": "^2.1.3" } }, "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA=="],
491
+
469
492
  "glob/minimatch": ["minimatch@10.0.3", "", { "dependencies": { "@isaacs/brace-expansion": "^5.0.0" } }, "sha512-IPZ167aShDZZUMdRk66cyQAW3qr0WzbHkPdMYa8bzZhlHhO3jALbKdxcaak7W9FfT2rZNpQuUu4Od7ILEpXSaw=="],
470
493
 
471
494
  "import-fresh/resolve-from": ["resolve-from@4.0.0", "", {}, "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="],
@@ -0,0 +1,6 @@
1
+ import{a as W,b as M,c as A,d as q}from"./chunk-QSLHAOSM.mjs";var F=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,f=>{if(t==="message"){let o=q(f);n({...f,data:o})}else n(f)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var J=["get","post","put","delete","patch","options","head","connect","subscribe"],D=["localhost","127.0.0.1","0.0.0.0"],K=typeof FileList>"u",I=e=>K?e instanceof Blob:e instanceof FileList||e instanceof File,P=e=>{if(!e)return!1;for(let t in e)if(I(e[t])||Array.isArray(e[t])&&e[t].find(I))return!0;return!1},C=e=>K?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),b=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let f of e)if(!Array.isArray(f))s=b(f,t,n,s);else{let o=f[0];if(typeof o=="string")s[o.toLowerCase()]=f[1];else for(let[i,h]of o)s[i.toLowerCase()]=h}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return b(e,t,n,s);let f=e(t,n);return f?b(f,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((o,i)=>{s[i.toLowerCase()]=o}),s;for(let[o,i]of Object.entries(e))s[o.toLowerCase()]=i;return s;default:return s}};async function*U(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:f,value:o}=await n.read();if(f)break;let i=typeof o=="string"?o:s.decode(o);i.includes(`
2
+
3
+ `)?yield*_(i):yield A(i)}}finally{n.releaseLock()}}function*_(e){let t=e.split(`
4
+
5
+ `);for(let n of t){if(n.indexOf(":")<=0){n&&(yield A(n));continue}let s=n.split(`
6
+ `),f={};for(let o of s){let i=o.indexOf(":");if(i>0){let h=o.slice(0,i).trim(),L=o.slice(i+1).trim();f[h]=A(L)}}yield f}}var x=(e,t,n=[],s)=>new Proxy(()=>{},{get(f,o){return x(e,t,o==="index"?n:[...n,o],s)},apply(f,o,[i,h]){if(!i||h||typeof i=="object"&&Object.keys(i).length!==1||J.includes(n.at(-1))){let L=[...n],k=L.pop(),v="/"+L.join("/"),{fetcher:N=fetch,headers:R,onRequest:g,onResponse:E,fetch:H}=t,m=k==="get"||k==="head"||k==="subscribe";R=b(R,v,h);let T=m?i?.query:h?.query,O="";if(T){let r=(w,u)=>{O+=(O?"&":"?")+`${encodeURIComponent(w)}=${encodeURIComponent(u)}`};for(let[w,u]of Object.entries(T)){if(Array.isArray(u)){for(let y of u)r(w,y);continue}if(u!=null){if(typeof u=="object"){r(w,JSON.stringify(u));continue}r(w,`${u}`)}}}if(k==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||D.find(w=>e.includes(w))?"ws://":"wss://")+v+O;return new F(r)}return(async()=>{let r={method:k?.toUpperCase(),body:i,...H,headers:R};r.headers={...R,...b(m?i?.headers:h?.headers,v,r)};let w=m&&typeof i=="object"?i.fetch:h?.fetch;if(r={...r,...w},m&&delete r.body,g){Array.isArray(g)||(g=[g]);for(let l of g){let a=await l(v,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...b(a.headers,v,r)}})}}if(m&&delete r.body,P(i)){let l=new FormData;for(let[a,c]of Object.entries(r.body)){if(Array.isArray(c)){for(let d=0;d<c.length;d++){let j=c[d];l.append(a,j instanceof File?await C(j):j)}continue}if(K){if(Array.isArray(c))for(let d of c)l.append(a,d);else l.append(a,c);continue}if(c instanceof File){l.append(a,await C(c));continue}if(c instanceof FileList){for(let d=0;d<c.length;d++)l.append(a,await C(c[d]));continue}l.append(a,c)}r.body=l}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(m&&delete r.body,g){Array.isArray(g)||(g=[g]);for(let l of g){let a=await l(v,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...b(a.headers,v,r)}})}}h?.headers?.["content-type"]&&(r.headers["content-type"]=h?.headers["content-type"]);let u=e+v+O,y=await(s?.handle(new Request(u,r))??N(u,r)),p=null,S=null;if(E){Array.isArray(E)||(E=[E]);for(let l of E)try{let a=await l(y.clone());if(a!=null){p=a;break}}catch(a){a instanceof W?S=a:S=new W(422,a);break}}if(p!==null)return{data:p,error:S,response:y,status:y.status,headers:y.headers};switch(y.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":p=U(y);break;case"application/json":p=JSON.parse(await y.text(),(a,c)=>{if(typeof c!="string")return c;let d=M(c);return d||c});break;case"application/octet-stream":p=await y.arrayBuffer();break;case"multipart/form-data":let l=await y.formData();p={},l.forEach((a,c)=>{p[c]=a});break;default:p=await y.text().then(A)}return(y.status>=300||y.status<200)&&(S=new W(y.status,p),p=null),{data:p,error:S,response:y,status:y.status,headers:y.headers}})()}return typeof i=="object"?x(e,t,[...n,Object.values(i)[0]],s):x(e,t,n)}}),Q=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(D.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),x(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."),x("http://e.ly",t,[],e));export{U as a,Q as b};
package/dist/fetch.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Elysia } from 'elysia';
2
- import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-C41kuZ-K.mjs';
2
+ import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-BdHMTa_C.mjs';
3
3
 
4
4
  declare namespace EdenFetch {
5
5
  type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends {
package/dist/fetch.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Elysia } from 'elysia';
2
- import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-C41kuZ-K.js';
2
+ import { T as TreatyToPath, a as IsNever, I as IsUnknown, P as Prettify, M as MapError, E as EdenFetchError } from './types-BdHMTa_C.js';
3
3
 
4
4
  declare namespace EdenFetch {
5
5
  type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends {
package/dist/index.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { Treaty, treaty } from './treaty2.mjs';
2
2
  export { edenTreaty } from './treaty.mjs';
3
3
  export { edenFetch } from './fetch.mjs';
4
+ export { E as EdenFetchError } from './types-BdHMTa_C.mjs';
4
5
  import 'elysia';
5
- import './types-C41kuZ-K.mjs';
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { Treaty, treaty } from './treaty2.js';
2
2
  export { edenTreaty } from './treaty.js';
3
3
  export { edenFetch } from './fetch.js';
4
+ export { E as EdenFetchError } from './types-BdHMTa_C.js';
4
5
  import 'elysia';
5
- import './types-C41kuZ-K.js';
@@ -1,6 +1,6 @@
1
- "use strict";var Eden=(()=>{var J=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ae=Object.prototype.hasOwnProperty;var ie=(e,t)=>{for(var n in t)J(e,n,{get:t[n],enumerable:!0})},oe=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of se(t))!ae.call(e,a)&&a!==n&&J(e,a,{get:()=>t[a],enumerable:!(r=re(t,a))||r.enumerable});return e};var ce=e=>oe(J({},"__esModule",{value:!0}),e);var Se={};ie(Se,{edenFetch:()=>ne,edenTreaty:()=>te,treaty:()=>z});var R=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var fe=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,de=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,ye=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,ue=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),D=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(fe.test(t)||de.test(t)||ye.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},le=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},pe=e=>JSON.parse(e,(t,n)=>{let r=D(n);return r||n}),L=e=>{if(!e)return e;if(ue(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=D(e);if(t)return t;if(le(e))try{return pe(e)}catch{}return e},I=e=>{let t=e.data.toString();return t==="null"?null:L(t)};var P=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var he=["get","post","put","delete","patch","options","head","connect","subscribe"],Q=["localhost","127.0.0.1","0.0.0.0"],H=typeof FileList>"u",G=e=>H?e instanceof Blob:e instanceof FileList||e instanceof File,ge=e=>{if(!e)return!1;for(let t in e)if(G(e[t])||Array.isArray(e[t])&&e[t].find(G))return!0;return!1},U=e=>H?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),M=(e,t,n={},r={})=>{if(Array.isArray(e)){for(let a of e)if(!Array.isArray(a))r=M(a,t,n,r);else{let s=a[0];if(typeof s=="string")r[s.toLowerCase()]=a[1];else for(let[i,y]of s)r[i.toLowerCase()]=y}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return M(e,t,n,r);let a=e(t,n);return a?M(a,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((s,i)=>{r[i.toLowerCase()]=s}),r;for(let[s,i]of Object.entries(e))r[s.toLowerCase()]=i;return r;default:return r}};async function*Z(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder;try{for(;;){let{done:a,value:s}=await n.read();if(a)break;let i=typeof s=="string"?s:r.decode(s);i.includes(`
1
+ "use strict";var Eden=(()=>{var J=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.prototype.hasOwnProperty;var ae=(e,t)=>{for(var n in t)J(e,n,{get:t[n],enumerable:!0})},ie=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of re(t))!se.call(e,a)&&a!==n&&J(e,a,{get:()=>t[a],enumerable:!(r=ne(t,a))||r.enumerable});return e};var oe=e=>ie(J({},"__esModule",{value:!0}),e);var Se={};ae(Se,{EdenFetchError:()=>x,edenFetch:()=>te,edenTreaty:()=>ee,treaty:()=>Q});var x=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var ce=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,fe=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,de=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,ye=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),D=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(ce.test(t)||fe.test(t)||de.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},ue=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},le=e=>JSON.parse(e,(t,n)=>{let r=D(n);return r||n}),L=e=>{if(!e)return e;if(ye(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=D(e);if(t)return t;if(ue(e))try{return le(e)}catch{}return e},I=e=>{let t=e.data.toString();return t==="null"?null:L(t)};var P=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var pe=["get","post","put","delete","patch","options","head","connect","subscribe"],Z=["localhost","127.0.0.1","0.0.0.0"],H=typeof FileList>"u",G=e=>H?e instanceof Blob:e instanceof FileList||e instanceof File,he=e=>{if(!e)return!1;for(let t in e)if(G(e[t])||Array.isArray(e[t])&&e[t].find(G))return!0;return!1},U=e=>H?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),M=(e,t,n={},r={})=>{if(Array.isArray(e)){for(let a of e)if(!Array.isArray(a))r=M(a,t,n,r);else{let s=a[0];if(typeof s=="string")r[s.toLowerCase()]=a[1];else for(let[i,y]of s)r[i.toLowerCase()]=y}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return M(e,t,n,r);let a=e(t,n);return a?M(a,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((s,i)=>{r[i.toLowerCase()]=s}),r;for(let[s,i]of Object.entries(e))r[s.toLowerCase()]=i;return r;default:return r}};async function*ge(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder;try{for(;;){let{done:a,value:s}=await n.read();if(a)break;let i=typeof s=="string"?s:r.decode(s);i.includes(`
2
2
 
3
3
  `)?yield*me(i):yield L(i)}}finally{n.releaseLock()}}function*me(e){let t=e.split(`
4
4
 
5
5
  `);for(let n of t){if(n.indexOf(":")<=0){n&&(yield L(n));continue}let r=n.split(`
6
- `),a={};for(let s of r){let i=s.indexOf(":");if(i>0){let y=s.slice(0,i).trim(),j=s.slice(i+1).trim();a[y]=L(j)}}yield a}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(a,s){return K(e,t,s==="index"?n:[...n,s],r)},apply(a,s,[i,y]){if(!i||y||typeof i=="object"&&Object.keys(i).length!==1||he.includes(n.at(-1))){let j=[...n],v=j.pop(),w="/"+j.join("/"),{fetcher:A=fetch,headers:T,onRequest:m,onResponse:b,fetch:S}=t,g=v==="get"||v==="head"||v==="subscribe";T=M(T,w,y);let N=g?i?.query:y?.query,x="";if(N){let o=(O,E)=>{x+=(x?"&":"?")+`${encodeURIComponent(O)}=${encodeURIComponent(E)}`};for(let[O,E]of Object.entries(N)){if(Array.isArray(E)){for(let c of E)o(O,c);continue}if(E!=null){if(typeof E=="object"){o(O,JSON.stringify(E));continue}o(O,`${E}`)}}}if(v==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Q.find(O=>e.includes(O))?"ws://":"wss://")+w+x;return new P(o)}return(async()=>{let o={method:v?.toUpperCase(),body:i,...S,headers:T};o.headers={...T,...M(g?i?.headers:y?.headers,w,o)};let O=g&&typeof i=="object"?i.fetch:y?.fetch;if(o={...o,...O},g&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}if(g&&delete o.body,ge(i)){let u=new FormData;for(let[f,d]of Object.entries(o.body)){if(Array.isArray(d)){for(let l=0;l<d.length;l++){let k=d[l];u.append(f,k instanceof File?await U(k):k)}continue}if(H){if(Array.isArray(d))for(let l of d)u.append(f,l);else u.append(f,d);continue}if(d instanceof File){u.append(f,await U(d));continue}if(d instanceof FileList){for(let l=0;l<d.length;l++)u.append(f,await U(d[l]));continue}u.append(f,d)}o.body=u}else typeof i=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(i)):i!=null&&(o.headers["content-type"]="text/plain");if(g&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}y?.headers?.["content-type"]&&(o.headers["content-type"]=y?.headers["content-type"]);let E=e+w+x,c=await(r?.handle(new Request(E,o))??A(E,o)),p=null,h=null;if(b){Array.isArray(b)||(b=[b]);for(let u of b)try{let f=await u(c.clone());if(f!=null){p=f;break}}catch(f){f instanceof R?h=f:h=new R(422,f);break}}if(p!==null)return{data:p,error:h,response:c,status:c.status,headers:c.headers};if(c.headers.get("Transfer-Encoding")==="chunked")p=Z(c);else switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":p=Z(c);break;case"application/json":p=JSON.parse(await c.text(),(f,d)=>{if(typeof d!="string")return d;let l=D(d);return l||d});break;case"application/octet-stream":p=await c.arrayBuffer();break;case"multipart/form-data":let u=await c.formData();p={},u.forEach((f,d)=>{p[d]=f});break;default:p=await c.text().then(L)}return(c.status>=300||c.status<200)&&(h=new R(c.status,p),p=null),{data:p,error:h,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?K(e,t,[...n,Object.values(i)[0]],r):K(e,t,n)}}),z=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(Q.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),K(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."),K("http://e.ly",t,[],e));var X=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${e}${t}?${r.slice(0,-1)}`};var V=typeof FileList>"u",Y=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,Ee=e=>{if(!e)return!1;for(let t in e){if(Y(e[t]))return!0;if(Array.isArray(e[t])&&e[t].find(n=>Y(n)))return!0}return!1},_=e=>V?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),B=class{ws;url;constructor(t){this.ws=new WebSocket(t),this.url=t}send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}},ee=(e,t="",n)=>new Proxy(()=>{},{get(r,a,s){return ee(e,`${t}/${a.toString()}`,n)},apply(r,a,[s,i={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:j,$fetch:v,$headers:w,$transform:A,getRaw:T,...m}=s??{};y??=m;let b=t.lastIndexOf("/"),S=t.slice(b+1).toUpperCase(),g=X(e,b===-1?"/":t.slice(0,b),Object.assign(i.query??{},j)),N=n.fetcher??fetch,x=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=A?Array.isArray(A)?A:[A]:void 0;return o&&(x?x=o.concat(x):x=o),S==="SUBSCRIBE"?new B(g.replace(/^([^]+):\/\//,g.startsWith("https://")?"wss://":"ws://")):(async E=>{let c,p={...n.$fetch?.headers,...v?.headers,...i.headers,...w};if(S!=="GET"&&S!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let l=c&&(typeof c=="object"||Array.isArray(y));if(l&&Ee(c)){let $=new FormData;for(let[C,F]of Object.entries(c))if(V)$.append(C,F);else if(F instanceof File)$.append(C,await _(F));else if(F instanceof FileList)for(let W=0;W<F.length;W++)$.append(C,await _(F[W]));else if(Array.isArray(F))for(let W=0;W<F.length;W++){let q=F[W];$.append(C,q instanceof File?await _(q):q)}else $.append(C,F);c=$}else c!=null&&(p["content-type"]=l?"application/json":"text/plain",c=l?JSON.stringify(c):y)}let h=await N(g,{method:S,body:c,...n.$fetch,...i.fetch,...v,headers:p}),u;if(E.getRaw)return h;switch(h.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await h.json();break;default:u=await h.text().then(L)}let f=h.status>=300||h.status<200?new R(h.status,u):null,d={data:u,error:f,response:h,status:h.status,headers:h.headers};if(x)for(let l of x){let k=l(d);k instanceof Promise&&(k=await k),k!=null&&(d=k)}return d})({getRaw:T})}}),te=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return ee(e,r,t)}});var we=async e=>{switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":return e.json();case"application/octet-stream":return e.arrayBuffer();case"multipart/form-data":{let n=await e.formData(),r={};return n.forEach((a,s)=>{r[s]=a}),r}}return e.text().then(L)},be=async(e,t)=>{let n=await we(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new R(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},ne=(e,t)=>(n,{query:r,params:a,body:s,...i}={})=>{a&&Object.entries(a).forEach(([S,g])=>{n=n.replace(`:${S}`,g)});let y=t?.fetcher||globalThis.fetch,j=r?Object.fromEntries(Object.entries(r).filter(([S,g])=>g!=null)):null,v=j?`?${new URLSearchParams(j).toString()}`:"",w=`${e}${n}${v}`,A=new Headers(i.headers||{}),T=A.get("content-type");if(!(s instanceof FormData)&&!(s instanceof URLSearchParams)&&(!T||T==="application/json"))try{s=JSON.stringify(s),T||A.set("content-type","application/json")}catch{}let m={...i,method:i.method?.toUpperCase()||"GET",headers:A,body:s},b=()=>y(w,m).then(S=>be(S,b));return b()};return ce(Se);})();
6
+ `),a={};for(let s of r){let i=s.indexOf(":");if(i>0){let y=s.slice(0,i).trim(),j=s.slice(i+1).trim();a[y]=L(j)}}yield a}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(a,s){return K(e,t,s==="index"?n:[...n,s],r)},apply(a,s,[i,y]){if(!i||y||typeof i=="object"&&Object.keys(i).length!==1||pe.includes(n.at(-1))){let j=[...n],k=j.pop(),w="/"+j.join("/"),{fetcher:T=fetch,headers:F,onRequest:m,onResponse:b,fetch:S}=t,h=k==="get"||k==="head"||k==="subscribe";F=M(F,w,y);let N=h?i?.query:y?.query,v="";if(N){let o=(O,E)=>{v+=(v?"&":"?")+`${encodeURIComponent(O)}=${encodeURIComponent(E)}`};for(let[O,E]of Object.entries(N)){if(Array.isArray(E)){for(let c of E)o(O,c);continue}if(E!=null){if(typeof E=="object"){o(O,JSON.stringify(E));continue}o(O,`${E}`)}}}if(k==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Z.find(O=>e.includes(O))?"ws://":"wss://")+w+v;return new P(o)}return(async()=>{let o={method:k?.toUpperCase(),body:i,...S,headers:F};o.headers={...F,...M(h?i?.headers:y?.headers,w,o)};let O=h&&typeof i=="object"?i.fetch:y?.fetch;if(o={...o,...O},h&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}if(h&&delete o.body,he(i)){let u=new FormData;for(let[f,d]of Object.entries(o.body)){if(Array.isArray(d)){for(let l=0;l<d.length;l++){let A=d[l];u.append(f,A instanceof File?await U(A):A)}continue}if(H){if(Array.isArray(d))for(let l of d)u.append(f,l);else u.append(f,d);continue}if(d instanceof File){u.append(f,await U(d));continue}if(d instanceof FileList){for(let l=0;l<d.length;l++)u.append(f,await U(d[l]));continue}u.append(f,d)}o.body=u}else typeof i=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(i)):i!=null&&(o.headers["content-type"]="text/plain");if(h&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}y?.headers?.["content-type"]&&(o.headers["content-type"]=y?.headers["content-type"]);let E=e+w+v,c=await(r?.handle(new Request(E,o))??T(E,o)),g=null,p=null;if(b){Array.isArray(b)||(b=[b]);for(let u of b)try{let f=await u(c.clone());if(f!=null){g=f;break}}catch(f){f instanceof x?p=f:p=new x(422,f);break}}if(g!==null)return{data:g,error:p,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":g=ge(c);break;case"application/json":g=JSON.parse(await c.text(),(f,d)=>{if(typeof d!="string")return d;let l=D(d);return l||d});break;case"application/octet-stream":g=await c.arrayBuffer();break;case"multipart/form-data":let u=await c.formData();g={},u.forEach((f,d)=>{g[d]=f});break;default:g=await c.text().then(L)}return(c.status>=300||c.status<200)&&(p=new x(c.status,g),g=null),{data:g,error:p,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?K(e,t,[...n,Object.values(i)[0]],r):K(e,t,n)}}),Q=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(Z.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),K(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."),K("http://e.ly",t,[],e));var z=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${e}${t}?${r.slice(0,-1)}`};var V=typeof FileList>"u",X=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,Ee=e=>{if(!e)return!1;for(let t in e){if(X(e[t]))return!0;if(Array.isArray(e[t])&&e[t].find(n=>X(n)))return!0}return!1},_=e=>V?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),B=class{ws;url;constructor(t){this.ws=new WebSocket(t),this.url=t}send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}},Y=(e,t="",n)=>new Proxy(()=>{},{get(r,a,s){return Y(e,`${t}/${a.toString()}`,n)},apply(r,a,[s,i={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:j,$fetch:k,$headers:w,$transform:T,getRaw:F,...m}=s??{};y??=m;let b=t.lastIndexOf("/"),S=t.slice(b+1).toUpperCase(),h=z(e,b===-1?"/":t.slice(0,b),Object.assign(i.query??{},j)),N=n.fetcher??fetch,v=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=T?Array.isArray(T)?T:[T]:void 0;return o&&(v?v=o.concat(v):v=o),S==="SUBSCRIBE"?new B(h.replace(/^([^]+):\/\//,h.startsWith("https://")?"wss://":"ws://")):(async E=>{let c,g={...n.$fetch?.headers,...k?.headers,...i.headers,...w};if(S!=="GET"&&S!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let l=c&&(typeof c=="object"||Array.isArray(y));if(l&&Ee(c)){let $=new FormData;for(let[C,R]of Object.entries(c))if(V)$.append(C,R);else if(R instanceof File)$.append(C,await _(R));else if(R instanceof FileList)for(let W=0;W<R.length;W++)$.append(C,await _(R[W]));else if(Array.isArray(R))for(let W=0;W<R.length;W++){let q=R[W];$.append(C,q instanceof File?await _(q):q)}else $.append(C,R);c=$}else c!=null&&(g["content-type"]=l?"application/json":"text/plain",c=l?JSON.stringify(c):y)}let p=await N(h,{method:S,body:c,...n.$fetch,...i.fetch,...k,headers:g}),u;if(E.getRaw)return p;switch(p.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await p.json();break;default:u=await p.text().then(L)}let f=p.status>=300||p.status<200?new x(p.status,u):null,d={data:u,error:f,response:p,status:p.status,headers:p.headers};if(v)for(let l of v){let A=l(d);A instanceof Promise&&(A=await A),A!=null&&(d=A)}return d})({getRaw:F})}}),ee=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return Y(e,r,t)}});var we=async e=>{switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":return e.json();case"application/octet-stream":return e.arrayBuffer();case"multipart/form-data":{let n=await e.formData(),r={};return n.forEach((a,s)=>{r[s]=a}),r}}return e.text().then(L)},be=async(e,t)=>{let n=await we(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new x(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},te=(e,t)=>(n,{query:r,params:a,body:s,...i}={})=>{a&&Object.entries(a).forEach(([S,h])=>{n=n.replace(`:${S}`,h)});let y=t?.fetcher||globalThis.fetch,j=r?Object.fromEntries(Object.entries(r).filter(([S,h])=>h!=null)):null,k=j?`?${new URLSearchParams(j).toString()}`:"",w=`${e}${n}${k}`,T=new Headers(i.headers||{}),F=T.get("content-type");if(!(s instanceof FormData)&&!(s instanceof URLSearchParams)&&(!F||F==="application/json"))try{s=JSON.stringify(s),F||T.set("content-type","application/json")}catch{}let m={...i,method:i.method?.toUpperCase()||"GET",headers:T,body:s},b=()=>y(w,m).then(S=>be(S,b));return b()};return oe(Se);})();
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";var J=Object.defineProperty;var re=Object.getOwnPropertyDescriptor;var se=Object.getOwnPropertyNames;var ae=Object.prototype.hasOwnProperty;var ie=(e,t)=>{for(var n in t)J(e,n,{get:t[n],enumerable:!0})},oe=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of se(t))!ae.call(e,a)&&a!==n&&J(e,a,{get:()=>t[a],enumerable:!(r=re(t,a))||r.enumerable});return e};var ce=e=>oe(J({},"__esModule",{value:!0}),e);var Se={};ie(Se,{edenFetch:()=>ne,edenTreaty:()=>te,treaty:()=>z});module.exports=ce(Se);var R=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var fe=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,de=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,ye=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,ue=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),D=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(fe.test(t)||de.test(t)||ye.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},le=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},pe=e=>JSON.parse(e,(t,n)=>{let r=D(n);return r||n}),L=e=>{if(!e)return e;if(ue(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=D(e);if(t)return t;if(le(e))try{return pe(e)}catch{}return e},I=e=>{let t=e.data.toString();return t==="null"?null:L(t)};var P=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var he=["get","post","put","delete","patch","options","head","connect","subscribe"],Q=["localhost","127.0.0.1","0.0.0.0"],H=typeof FileList>"u",G=e=>H?e instanceof Blob:e instanceof FileList||e instanceof File,ge=e=>{if(!e)return!1;for(let t in e)if(G(e[t])||Array.isArray(e[t])&&e[t].find(G))return!0;return!1},U=e=>H?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),M=(e,t,n={},r={})=>{if(Array.isArray(e)){for(let a of e)if(!Array.isArray(a))r=M(a,t,n,r);else{let s=a[0];if(typeof s=="string")r[s.toLowerCase()]=a[1];else for(let[i,y]of s)r[i.toLowerCase()]=y}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return M(e,t,n,r);let a=e(t,n);return a?M(a,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((s,i)=>{r[i.toLowerCase()]=s}),r;for(let[s,i]of Object.entries(e))r[s.toLowerCase()]=i;return r;default:return r}};async function*Z(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder;try{for(;;){let{done:a,value:s}=await n.read();if(a)break;let i=typeof s=="string"?s:r.decode(s);i.includes(`
1
+ "use strict";var J=Object.defineProperty;var ne=Object.getOwnPropertyDescriptor;var re=Object.getOwnPropertyNames;var se=Object.prototype.hasOwnProperty;var ae=(e,t)=>{for(var n in t)J(e,n,{get:t[n],enumerable:!0})},ie=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of re(t))!se.call(e,a)&&a!==n&&J(e,a,{get:()=>t[a],enumerable:!(r=ne(t,a))||r.enumerable});return e};var oe=e=>ie(J({},"__esModule",{value:!0}),e);var Se={};ae(Se,{EdenFetchError:()=>x,edenFetch:()=>te,edenTreaty:()=>ee,treaty:()=>Q});module.exports=oe(Se);var x=class extends Error{constructor(n,r){super(r+"");this.status=n;this.value=r}};var ce=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,fe=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,de=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,ye=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),D=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(ce.test(t)||fe.test(t)||de.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},ue=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},le=e=>JSON.parse(e,(t,n)=>{let r=D(n);return r||n}),L=e=>{if(!e)return e;if(ye(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=D(e);if(t)return t;if(ue(e))try{return le(e)}catch{}return e},I=e=>{let t=e.data.toString();return t==="null"?null:L(t)};var P=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}};var pe=["get","post","put","delete","patch","options","head","connect","subscribe"],Z=["localhost","127.0.0.1","0.0.0.0"],H=typeof FileList>"u",G=e=>H?e instanceof Blob:e instanceof FileList||e instanceof File,he=e=>{if(!e)return!1;for(let t in e)if(G(e[t])||Array.isArray(e[t])&&e[t].find(G))return!0;return!1},U=e=>H?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),M=(e,t,n={},r={})=>{if(Array.isArray(e)){for(let a of e)if(!Array.isArray(a))r=M(a,t,n,r);else{let s=a[0];if(typeof s=="string")r[s.toLowerCase()]=a[1];else for(let[i,y]of s)r[i.toLowerCase()]=y}return r}if(!e)return r;switch(typeof e){case"function":if(e instanceof Headers)return M(e,t,n,r);let a=e(t,n);return a?M(a,t,n,r):r;case"object":if(e instanceof Headers)return e.forEach((s,i)=>{r[i.toLowerCase()]=s}),r;for(let[s,i]of Object.entries(e))r[s.toLowerCase()]=i;return r;default:return r}};async function*ge(e){let t=e.body;if(!t)return;let n=t.getReader(),r=new TextDecoder;try{for(;;){let{done:a,value:s}=await n.read();if(a)break;let i=typeof s=="string"?s:r.decode(s);i.includes(`
2
2
 
3
3
  `)?yield*me(i):yield L(i)}}finally{n.releaseLock()}}function*me(e){let t=e.split(`
4
4
 
5
5
  `);for(let n of t){if(n.indexOf(":")<=0){n&&(yield L(n));continue}let r=n.split(`
6
- `),a={};for(let s of r){let i=s.indexOf(":");if(i>0){let y=s.slice(0,i).trim(),j=s.slice(i+1).trim();a[y]=L(j)}}yield a}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(a,s){return K(e,t,s==="index"?n:[...n,s],r)},apply(a,s,[i,y]){if(!i||y||typeof i=="object"&&Object.keys(i).length!==1||he.includes(n.at(-1))){let j=[...n],v=j.pop(),w="/"+j.join("/"),{fetcher:A=fetch,headers:T,onRequest:m,onResponse:b,fetch:S}=t,g=v==="get"||v==="head"||v==="subscribe";T=M(T,w,y);let N=g?i?.query:y?.query,x="";if(N){let o=(O,E)=>{x+=(x?"&":"?")+`${encodeURIComponent(O)}=${encodeURIComponent(E)}`};for(let[O,E]of Object.entries(N)){if(Array.isArray(E)){for(let c of E)o(O,c);continue}if(E!=null){if(typeof E=="object"){o(O,JSON.stringify(E));continue}o(O,`${E}`)}}}if(v==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Q.find(O=>e.includes(O))?"ws://":"wss://")+w+x;return new P(o)}return(async()=>{let o={method:v?.toUpperCase(),body:i,...S,headers:T};o.headers={...T,...M(g?i?.headers:y?.headers,w,o)};let O=g&&typeof i=="object"?i.fetch:y?.fetch;if(o={...o,...O},g&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}if(g&&delete o.body,ge(i)){let u=new FormData;for(let[f,d]of Object.entries(o.body)){if(Array.isArray(d)){for(let l=0;l<d.length;l++){let k=d[l];u.append(f,k instanceof File?await U(k):k)}continue}if(H){if(Array.isArray(d))for(let l of d)u.append(f,l);else u.append(f,d);continue}if(d instanceof File){u.append(f,await U(d));continue}if(d instanceof FileList){for(let l=0;l<d.length;l++)u.append(f,await U(d[l]));continue}u.append(f,d)}o.body=u}else typeof i=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(i)):i!=null&&(o.headers["content-type"]="text/plain");if(g&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}y?.headers?.["content-type"]&&(o.headers["content-type"]=y?.headers["content-type"]);let E=e+w+x,c=await(r?.handle(new Request(E,o))??A(E,o)),p=null,h=null;if(b){Array.isArray(b)||(b=[b]);for(let u of b)try{let f=await u(c.clone());if(f!=null){p=f;break}}catch(f){f instanceof R?h=f:h=new R(422,f);break}}if(p!==null)return{data:p,error:h,response:c,status:c.status,headers:c.headers};if(c.headers.get("Transfer-Encoding")==="chunked")p=Z(c);else switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":p=Z(c);break;case"application/json":p=JSON.parse(await c.text(),(f,d)=>{if(typeof d!="string")return d;let l=D(d);return l||d});break;case"application/octet-stream":p=await c.arrayBuffer();break;case"multipart/form-data":let u=await c.formData();p={},u.forEach((f,d)=>{p[d]=f});break;default:p=await c.text().then(L)}return(c.status>=300||c.status<200)&&(h=new R(c.status,p),p=null),{data:p,error:h,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?K(e,t,[...n,Object.values(i)[0]],r):K(e,t,n)}}),z=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(Q.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),K(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."),K("http://e.ly",t,[],e));var X=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${e}${t}?${r.slice(0,-1)}`};var V=typeof FileList>"u",Y=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,Ee=e=>{if(!e)return!1;for(let t in e){if(Y(e[t]))return!0;if(Array.isArray(e[t])&&e[t].find(n=>Y(n)))return!0}return!1},_=e=>V?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),B=class{ws;url;constructor(t){this.ws=new WebSocket(t),this.url=t}send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}},ee=(e,t="",n)=>new Proxy(()=>{},{get(r,a,s){return ee(e,`${t}/${a.toString()}`,n)},apply(r,a,[s,i={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:j,$fetch:v,$headers:w,$transform:A,getRaw:T,...m}=s??{};y??=m;let b=t.lastIndexOf("/"),S=t.slice(b+1).toUpperCase(),g=X(e,b===-1?"/":t.slice(0,b),Object.assign(i.query??{},j)),N=n.fetcher??fetch,x=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=A?Array.isArray(A)?A:[A]:void 0;return o&&(x?x=o.concat(x):x=o),S==="SUBSCRIBE"?new B(g.replace(/^([^]+):\/\//,g.startsWith("https://")?"wss://":"ws://")):(async E=>{let c,p={...n.$fetch?.headers,...v?.headers,...i.headers,...w};if(S!=="GET"&&S!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let l=c&&(typeof c=="object"||Array.isArray(y));if(l&&Ee(c)){let $=new FormData;for(let[C,F]of Object.entries(c))if(V)$.append(C,F);else if(F instanceof File)$.append(C,await _(F));else if(F instanceof FileList)for(let W=0;W<F.length;W++)$.append(C,await _(F[W]));else if(Array.isArray(F))for(let W=0;W<F.length;W++){let q=F[W];$.append(C,q instanceof File?await _(q):q)}else $.append(C,F);c=$}else c!=null&&(p["content-type"]=l?"application/json":"text/plain",c=l?JSON.stringify(c):y)}let h=await N(g,{method:S,body:c,...n.$fetch,...i.fetch,...v,headers:p}),u;if(E.getRaw)return h;switch(h.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await h.json();break;default:u=await h.text().then(L)}let f=h.status>=300||h.status<200?new R(h.status,u):null,d={data:u,error:f,response:h,status:h.status,headers:h.headers};if(x)for(let l of x){let k=l(d);k instanceof Promise&&(k=await k),k!=null&&(d=k)}return d})({getRaw:T})}}),te=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return ee(e,r,t)}});var we=async e=>{switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":return e.json();case"application/octet-stream":return e.arrayBuffer();case"multipart/form-data":{let n=await e.formData(),r={};return n.forEach((a,s)=>{r[s]=a}),r}}return e.text().then(L)},be=async(e,t)=>{let n=await we(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new R(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},ne=(e,t)=>(n,{query:r,params:a,body:s,...i}={})=>{a&&Object.entries(a).forEach(([S,g])=>{n=n.replace(`:${S}`,g)});let y=t?.fetcher||globalThis.fetch,j=r?Object.fromEntries(Object.entries(r).filter(([S,g])=>g!=null)):null,v=j?`?${new URLSearchParams(j).toString()}`:"",w=`${e}${n}${v}`,A=new Headers(i.headers||{}),T=A.get("content-type");if(!(s instanceof FormData)&&!(s instanceof URLSearchParams)&&(!T||T==="application/json"))try{s=JSON.stringify(s),T||A.set("content-type","application/json")}catch{}let m={...i,method:i.method?.toUpperCase()||"GET",headers:A,body:s},b=()=>y(w,m).then(S=>be(S,b));return b()};0&&(module.exports={edenFetch,edenTreaty,treaty});
6
+ `),a={};for(let s of r){let i=s.indexOf(":");if(i>0){let y=s.slice(0,i).trim(),j=s.slice(i+1).trim();a[y]=L(j)}}yield a}}var K=(e,t,n=[],r)=>new Proxy(()=>{},{get(a,s){return K(e,t,s==="index"?n:[...n,s],r)},apply(a,s,[i,y]){if(!i||y||typeof i=="object"&&Object.keys(i).length!==1||pe.includes(n.at(-1))){let j=[...n],k=j.pop(),w="/"+j.join("/"),{fetcher:T=fetch,headers:F,onRequest:m,onResponse:b,fetch:S}=t,h=k==="get"||k==="head"||k==="subscribe";F=M(F,w,y);let N=h?i?.query:y?.query,v="";if(N){let o=(O,E)=>{v+=(v?"&":"?")+`${encodeURIComponent(O)}=${encodeURIComponent(E)}`};for(let[O,E]of Object.entries(N)){if(Array.isArray(E)){for(let c of E)o(O,c);continue}if(E!=null){if(typeof E=="object"){o(O,JSON.stringify(E));continue}o(O,`${E}`)}}}if(k==="subscribe"){let o=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||Z.find(O=>e.includes(O))?"ws://":"wss://")+w+v;return new P(o)}return(async()=>{let o={method:k?.toUpperCase(),body:i,...S,headers:F};o.headers={...F,...M(h?i?.headers:y?.headers,w,o)};let O=h&&typeof i=="object"?i.fetch:y?.fetch;if(o={...o,...O},h&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}if(h&&delete o.body,he(i)){let u=new FormData;for(let[f,d]of Object.entries(o.body)){if(Array.isArray(d)){for(let l=0;l<d.length;l++){let A=d[l];u.append(f,A instanceof File?await U(A):A)}continue}if(H){if(Array.isArray(d))for(let l of d)u.append(f,l);else u.append(f,d);continue}if(d instanceof File){u.append(f,await U(d));continue}if(d instanceof FileList){for(let l=0;l<d.length;l++)u.append(f,await U(d[l]));continue}u.append(f,d)}o.body=u}else typeof i=="object"?(o.headers["content-type"]="application/json",o.body=JSON.stringify(i)):i!=null&&(o.headers["content-type"]="text/plain");if(h&&delete o.body,m){Array.isArray(m)||(m=[m]);for(let u of m){let f=await u(w,o);typeof f=="object"&&(o={...o,...f,headers:{...o.headers,...M(f.headers,w,o)}})}}y?.headers?.["content-type"]&&(o.headers["content-type"]=y?.headers["content-type"]);let E=e+w+v,c=await(r?.handle(new Request(E,o))??T(E,o)),g=null,p=null;if(b){Array.isArray(b)||(b=[b]);for(let u of b)try{let f=await u(c.clone());if(f!=null){g=f;break}}catch(f){f instanceof x?p=f:p=new x(422,f);break}}if(g!==null)return{data:g,error:p,response:c,status:c.status,headers:c.headers};switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":g=ge(c);break;case"application/json":g=JSON.parse(await c.text(),(f,d)=>{if(typeof d!="string")return d;let l=D(d);return l||d});break;case"application/octet-stream":g=await c.arrayBuffer();break;case"multipart/form-data":let u=await c.formData();g={},u.forEach((f,d)=>{g[d]=f});break;default:g=await c.text().then(L)}return(c.status>=300||c.status<200)&&(p=new x(c.status,g),g=null),{data:g,error:p,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?K(e,t,[...n,Object.values(i)[0]],r):K(e,t,n)}}),Q=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(Z.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),K(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."),K("http://e.ly",t,[],e));var z=(e,t,n)=>{if(e.endsWith("/")||(e+="/"),t==="index"&&(t=""),!n||!Object.keys(n).length)return`${e}${t}`;let r="";for(let[a,s]of Object.entries(n))r+=`${a}=${s}&`;return`${e}${t}?${r.slice(0,-1)}`};var V=typeof FileList>"u",X=e=>V?e instanceof Blob:e instanceof FileList||e instanceof File,Ee=e=>{if(!e)return!1;for(let t in e){if(X(e[t]))return!0;if(Array.isArray(e[t])&&e[t].find(n=>X(n)))return!0}return!1},_=e=>V?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let r=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(r)},n.readAsArrayBuffer(e)}),B=class{ws;url;constructor(t){this.ws=new WebSocket(t),this.url=t}send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,r){return this.addEventListener(t,n,r)}off(t,n,r){return this.ws.removeEventListener(t,n,r),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,r){return this.ws.addEventListener(t,a=>{if(t==="message"){let s=I(a);n({...a,data:s})}else n(a)},r),this}removeEventListener(t,n,r){return this.off(t,n,r),this}close(){return this.ws.close(),this}},Y=(e,t="",n)=>new Proxy(()=>{},{get(r,a,s){return Y(e,`${t}/${a.toString()}`,n)},apply(r,a,[s,i={}]=[{},{}]){let y=s!==void 0&&(typeof s!="object"||Array.isArray(s))?s:void 0,{$query:j,$fetch:k,$headers:w,$transform:T,getRaw:F,...m}=s??{};y??=m;let b=t.lastIndexOf("/"),S=t.slice(b+1).toUpperCase(),h=z(e,b===-1?"/":t.slice(0,b),Object.assign(i.query??{},j)),N=n.fetcher??fetch,v=n.transform?Array.isArray(n.transform)?n.transform:[n.transform]:void 0,o=T?Array.isArray(T)?T:[T]:void 0;return o&&(v?v=o.concat(v):v=o),S==="SUBSCRIBE"?new B(h.replace(/^([^]+):\/\//,h.startsWith("https://")?"wss://":"ws://")):(async E=>{let c,g={...n.$fetch?.headers,...k?.headers,...i.headers,...w};if(S!=="GET"&&S!=="HEAD"){c=Object.keys(y).length||Array.isArray(y)?y:void 0;let l=c&&(typeof c=="object"||Array.isArray(y));if(l&&Ee(c)){let $=new FormData;for(let[C,R]of Object.entries(c))if(V)$.append(C,R);else if(R instanceof File)$.append(C,await _(R));else if(R instanceof FileList)for(let W=0;W<R.length;W++)$.append(C,await _(R[W]));else if(Array.isArray(R))for(let W=0;W<R.length;W++){let q=R[W];$.append(C,q instanceof File?await _(q):q)}else $.append(C,R);c=$}else c!=null&&(g["content-type"]=l?"application/json":"text/plain",c=l?JSON.stringify(c):y)}let p=await N(h,{method:S,body:c,...n.$fetch,...i.fetch,...k,headers:g}),u;if(E.getRaw)return p;switch(p.headers.get("Content-Type")?.split(";")[0]){case"application/json":u=await p.json();break;default:u=await p.text().then(L)}let f=p.status>=300||p.status<200?new x(p.status,u):null,d={data:u,error:f,response:p,status:p.status,headers:p.headers};if(v)for(let l of v){let A=l(d);A instanceof Promise&&(A=await A),A!=null&&(d=A)}return d})({getRaw:F})}}),ee=(e,t={fetcher:fetch})=>new Proxy({},{get(n,r){return Y(e,r,t)}});var we=async e=>{switch(e.headers.get("Content-Type")?.split(";")[0]){case"application/json":return e.json();case"application/octet-stream":return e.arrayBuffer();case"multipart/form-data":{let n=await e.formData(),r={};return n.forEach((a,s)=>{r[s]=a}),r}}return e.text().then(L)},be=async(e,t)=>{let n=await we(e);return e.status>300?{data:null,status:e.status,headers:e.headers,retry:t,error:new x(e.status,n)}:{data:n,error:null,status:e.status,headers:e.headers,retry:t}},te=(e,t)=>(n,{query:r,params:a,body:s,...i}={})=>{a&&Object.entries(a).forEach(([S,h])=>{n=n.replace(`:${S}`,h)});let y=t?.fetcher||globalThis.fetch,j=r?Object.fromEntries(Object.entries(r).filter(([S,h])=>h!=null)):null,k=j?`?${new URLSearchParams(j).toString()}`:"",w=`${e}${n}${k}`,T=new Headers(i.headers||{}),F=T.get("content-type");if(!(s instanceof FormData)&&!(s instanceof URLSearchParams)&&(!F||F==="application/json"))try{s=JSON.stringify(s),F||T.set("content-type","application/json")}catch{}let m={...i,method:i.method?.toUpperCase()||"GET",headers:T,body:s},b=()=>y(w,m).then(S=>be(S,b));return b()};0&&(module.exports={EdenFetchError,edenFetch,edenTreaty,treaty});
package/dist/index.mjs CHANGED
@@ -1 +1 @@
1
- import{b as r}from"./chunk-EF6Z4LSD.mjs";import{b as e}from"./chunk-ZIS6B6IO.mjs";import{a as t}from"./chunk-4RPCKTWO.mjs";import"./chunk-QSLHAOSM.mjs";export{t as edenFetch,r as edenTreaty,e as treaty};
1
+ import{b as t}from"./chunk-EF6Z4LSD.mjs";import{b as r}from"./chunk-LJDYVDXQ.mjs";import{a as o}from"./chunk-4RPCKTWO.mjs";import{a as e}from"./chunk-QSLHAOSM.mjs";export{e as EdenFetchError,o as edenFetch,t as edenTreaty,r as treaty};
package/dist/treaty.d.mts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Elysia, InputSchema } from 'elysia';
2
- import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-C41kuZ-K.mjs';
2
+ import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-BdHMTa_C.mjs';
3
3
 
4
4
  type Files = File | FileList;
5
5
  type Replace<RecordType, TargetType, GenericType> = {
package/dist/treaty.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { Elysia, InputSchema } from 'elysia';
2
- import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-C41kuZ-K.js';
2
+ import { P as Prettify, I as IsUnknown, M as MapError, a as IsNever, E as EdenFetchError } from './types-BdHMTa_C.js';
3
3
 
4
4
  type Files = File | FileList;
5
5
  type Replace<RecordType, TargetType, GenericType> = {
@@ -1,6 +1,6 @@
1
1
  import type { Elysia, ELYSIA_FORM_DATA } from 'elysia';
2
2
  import { EdenWS } from './ws';
3
- import type { IsNever, Not, Prettify } from '../types';
3
+ import type { IsNever, MaybeEmptyObject, Not, Prettify } from '../types';
4
4
  type And<A extends boolean, B extends boolean> = A extends true ? B extends true ? true : false : false;
5
5
  type ReplaceGeneratorWithAsyncGenerator<in out RecordType extends Record<string, unknown>> = {
6
6
  [K in keyof RecordType]: IsNever<RecordType[K]> extends true ? RecordType[K] : RecordType[K] extends Generator<infer A, infer B, infer C> ? void extends B ? AsyncGenerator<A, B, C> : And<IsNever<A>, void extends B ? false : true> extends true ? B : AsyncGenerator<A, B, C> | B : RecordType[K] extends AsyncGenerator<infer A, infer B, infer C> ? And<Not<IsNever<A>>, void extends B ? true : false> extends true ? AsyncGenerator<A, B, C> : And<IsNever<A>, void extends B ? false : true> extends true ? B : AsyncGenerator<A, B, C> | B : RecordType[K] extends ReadableStream<infer A> ? AsyncGenerator<A, void, unknown> : RecordType[K];
@@ -14,40 +14,16 @@ export declare namespace Treaty {
14
14
  fetch?: RequestInit;
15
15
  }
16
16
  export type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends {
17
- '~Routes': infer Schema extends Record<string, any>;
17
+ '~Routes': infer Schema extends Record<any, any>;
18
18
  } ? Prettify<Sign<Schema>> & CreateParams<Schema> : 'Please install Elysia before using Eden';
19
- export type Sign<in out Route extends Record<string, any>> = {
20
- [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? ({} extends Route['subscribe']['headers'] ? {
21
- headers?: Record<string, unknown>;
22
- } : undefined extends Route['subscribe']['headers'] ? {
23
- headers?: Record<string, unknown>;
24
- } : {
25
- headers: Route['subscribe']['headers'];
26
- }) & ({} extends Route['subscribe']['query'] ? {
27
- query?: Record<string, unknown>;
28
- } : undefined extends Route['subscribe']['query'] ? {
29
- query?: Record<string, unknown>;
30
- } : {
31
- query: Route['subscribe']['query'];
32
- }) extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
19
+ export type Sign<in out Route extends Record<any, any>> = {
20
+ [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? MaybeEmptyObject<Route['subscribe']['headers'], 'headers'> & MaybeEmptyObject<Route['subscribe']['query'], 'query'> extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
33
21
  body: infer Body;
34
22
  headers: infer Headers;
35
23
  params: any;
36
24
  query: infer Query;
37
25
  response: infer Res extends Record<number, unknown>;
38
- } ? ({} extends Headers ? {
39
- headers?: Record<string, unknown>;
40
- } : undefined extends Headers ? {
41
- headers?: Record<string, unknown>;
42
- } : {
43
- headers: Headers;
44
- }) & ({} extends Query ? {
45
- query?: Record<string, unknown>;
46
- } : undefined extends Query ? {
47
- query?: Record<string, unknown>;
48
- } : {
49
- query: Query;
50
- }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
26
+ } ? MaybeEmptyObject<Headers, 'headers'> & MaybeEmptyObject<Query, 'query'> extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
51
27
  };
52
28
  type CreateParams<Route extends Record<string, any>> = Extract<keyof Route, `:${string}`> extends infer Path extends string ? IsNever<Path> extends true ? Prettify<Sign<Route>> : // ! DO NOT USE PRETTIFY ON THIS LINE, OTHERWISE FUNCTION CALLING WILL BE OMITTED
53
29
  (((params: {
@@ -68,7 +44,7 @@ export declare namespace Treaty {
68
44
  error: null;
69
45
  response: Response;
70
46
  status: number;
71
- headers: RequestInit['headers'];
47
+ headers: ResponseInit['headers'];
72
48
  } | {
73
49
  data: null;
74
50
  error: Exclude<keyof Res, SuccessCodeRange> extends never ? {
@@ -84,7 +60,7 @@ export declare namespace Treaty {
84
60
  }[Exclude<keyof Res, SuccessCodeRange>];
85
61
  response: Response;
86
62
  status: number;
87
- headers: RequestInit['headers'];
63
+ headers: ResponseInit['headers'];
88
64
  };
89
65
  export interface OnMessage<Data = unknown> extends MessageEvent {
90
66
  data: Data;
@@ -1,5 +1,5 @@
1
1
  import { InputSchema, Elysia, ELYSIA_FORM_DATA } from 'elysia';
2
- import { P as Prettify, a as IsNever, N as Not } from './types-C41kuZ-K.mjs';
2
+ import { P as Prettify, b as MaybeEmptyObject, a as IsNever, N as Not } from './types-BdHMTa_C.mjs';
3
3
 
4
4
  declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
5
5
  url: string;
@@ -27,40 +27,16 @@ declare namespace Treaty {
27
27
  fetch?: RequestInit;
28
28
  }
29
29
  export type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends {
30
- '~Routes': infer Schema extends Record<string, any>;
30
+ '~Routes': infer Schema extends Record<any, any>;
31
31
  } ? Prettify<Sign<Schema>> & CreateParams<Schema> : 'Please install Elysia before using Eden';
32
- export type Sign<in out Route extends Record<string, any>> = {
33
- [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? ({} extends Route['subscribe']['headers'] ? {
34
- headers?: Record<string, unknown>;
35
- } : undefined extends Route['subscribe']['headers'] ? {
36
- headers?: Record<string, unknown>;
37
- } : {
38
- headers: Route['subscribe']['headers'];
39
- }) & ({} extends Route['subscribe']['query'] ? {
40
- query?: Record<string, unknown>;
41
- } : undefined extends Route['subscribe']['query'] ? {
42
- query?: Record<string, unknown>;
43
- } : {
44
- query: Route['subscribe']['query'];
45
- }) extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
32
+ export type Sign<in out Route extends Record<any, any>> = {
33
+ [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? MaybeEmptyObject<Route['subscribe']['headers'], 'headers'> & MaybeEmptyObject<Route['subscribe']['query'], 'query'> extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
46
34
  body: infer Body;
47
35
  headers: infer Headers;
48
36
  params: any;
49
37
  query: infer Query;
50
38
  response: infer Res extends Record<number, unknown>;
51
- } ? ({} extends Headers ? {
52
- headers?: Record<string, unknown>;
53
- } : undefined extends Headers ? {
54
- headers?: Record<string, unknown>;
55
- } : {
56
- headers: Headers;
57
- }) & ({} extends Query ? {
58
- query?: Record<string, unknown>;
59
- } : undefined extends Query ? {
60
- query?: Record<string, unknown>;
61
- } : {
62
- query: Query;
63
- }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
39
+ } ? MaybeEmptyObject<Headers, 'headers'> & MaybeEmptyObject<Query, 'query'> extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
64
40
  };
65
41
  type CreateParams<Route extends Record<string, any>> = Extract<keyof Route, `:${string}`> extends infer Path extends string ? IsNever<Path> extends true ? Prettify<Sign<Route>> : // ! DO NOT USE PRETTIFY ON THIS LINE, OTHERWISE FUNCTION CALLING WILL BE OMITTED
66
42
  (((params: {
@@ -81,7 +57,7 @@ declare namespace Treaty {
81
57
  error: null;
82
58
  response: Response;
83
59
  status: number;
84
- headers: RequestInit['headers'];
60
+ headers: ResponseInit['headers'];
85
61
  } | {
86
62
  data: null;
87
63
  error: Exclude<keyof Res, SuccessCodeRange> extends never ? {
@@ -97,7 +73,7 @@ declare namespace Treaty {
97
73
  }[Exclude<keyof Res, SuccessCodeRange>];
98
74
  response: Response;
99
75
  status: number;
100
- headers: RequestInit['headers'];
76
+ headers: ResponseInit['headers'];
101
77
  };
102
78
  export interface OnMessage<Data = unknown> extends MessageEvent {
103
79
  data: Data;
package/dist/treaty2.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { InputSchema, Elysia, ELYSIA_FORM_DATA } from 'elysia';
2
- import { P as Prettify, a as IsNever, N as Not } from './types-C41kuZ-K.js';
2
+ import { P as Prettify, b as MaybeEmptyObject, a as IsNever, N as Not } from './types-BdHMTa_C.js';
3
3
 
4
4
  declare class EdenWS<in out Schema extends InputSchema<any> = {}> {
5
5
  url: string;
@@ -27,40 +27,16 @@ declare namespace Treaty {
27
27
  fetch?: RequestInit;
28
28
  }
29
29
  export type Create<App extends Elysia<any, any, any, any, any, any, any>> = App extends {
30
- '~Routes': infer Schema extends Record<string, any>;
30
+ '~Routes': infer Schema extends Record<any, any>;
31
31
  } ? Prettify<Sign<Schema>> & CreateParams<Schema> : 'Please install Elysia before using Eden';
32
- export type Sign<in out Route extends Record<string, any>> = {
33
- [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? ({} extends Route['subscribe']['headers'] ? {
34
- headers?: Record<string, unknown>;
35
- } : undefined extends Route['subscribe']['headers'] ? {
36
- headers?: Record<string, unknown>;
37
- } : {
38
- headers: Route['subscribe']['headers'];
39
- }) & ({} extends Route['subscribe']['query'] ? {
40
- query?: Record<string, unknown>;
41
- } : undefined extends Route['subscribe']['query'] ? {
42
- query?: Record<string, unknown>;
43
- } : {
44
- query: Route['subscribe']['query'];
45
- }) extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
32
+ export type Sign<in out Route extends Record<any, any>> = {
33
+ [K in keyof Route as K extends `:${string}` ? never : K]: K extends 'subscribe' ? MaybeEmptyObject<Route['subscribe']['headers'], 'headers'> & MaybeEmptyObject<Route['subscribe']['query'], 'query'> extends infer Param ? (options?: Param) => EdenWS<Route['subscribe']> : never : Route[K] extends {
46
34
  body: infer Body;
47
35
  headers: infer Headers;
48
36
  params: any;
49
37
  query: infer Query;
50
38
  response: infer Res extends Record<number, unknown>;
51
- } ? ({} extends Headers ? {
52
- headers?: Record<string, unknown>;
53
- } : undefined extends Headers ? {
54
- headers?: Record<string, unknown>;
55
- } : {
56
- headers: Headers;
57
- }) & ({} extends Query ? {
58
- query?: Record<string, unknown>;
59
- } : undefined extends Query ? {
60
- query?: Record<string, unknown>;
61
- } : {
62
- query: Query;
63
- }) extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
39
+ } ? MaybeEmptyObject<Headers, 'headers'> & MaybeEmptyObject<Query, 'query'> extends infer Param ? {} extends Param ? undefined extends Body ? K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : {} extends Body ? (body?: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options?: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : K extends 'get' | 'head' ? (options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : (body: Body, options: Prettify<Param & TreatyParam>) => Promise<TreatyResponse<ReplaceGeneratorWithAsyncGenerator<Res>>> : never : CreateParams<Route[K]>;
64
40
  };
65
41
  type CreateParams<Route extends Record<string, any>> = Extract<keyof Route, `:${string}`> extends infer Path extends string ? IsNever<Path> extends true ? Prettify<Sign<Route>> : // ! DO NOT USE PRETTIFY ON THIS LINE, OTHERWISE FUNCTION CALLING WILL BE OMITTED
66
42
  (((params: {
@@ -81,7 +57,7 @@ declare namespace Treaty {
81
57
  error: null;
82
58
  response: Response;
83
59
  status: number;
84
- headers: RequestInit['headers'];
60
+ headers: ResponseInit['headers'];
85
61
  } | {
86
62
  data: null;
87
63
  error: Exclude<keyof Res, SuccessCodeRange> extends never ? {
@@ -97,7 +73,7 @@ declare namespace Treaty {
97
73
  }[Exclude<keyof Res, SuccessCodeRange>];
98
74
  response: Response;
99
75
  status: number;
100
- headers: RequestInit['headers'];
76
+ headers: ResponseInit['headers'];
101
77
  };
102
78
  export interface OnMessage<Data = unknown> extends MessageEvent {
103
79
  data: Data;
@@ -1,6 +1,6 @@
1
- "use strict";var Eden=(()=>{var j=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var n in t)j(e,n,{get:t[n],enumerable:!0})},B=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of U(t))!V.call(e,o)&&o!==n&&j(e,o,{get:()=>t[o],enumerable:!(s=H(t,o))||s.enumerable});return e};var Z=e=>B(j({},"__esModule",{value:!0}),e);var ie={};$(ie,{streamResponse:()=>C,treaty:()=>re});var k=class extends Error{constructor(n,s){super(s+"");this.status=n;this.value=s}};var G=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,z=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,Q=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,X=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),F=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(G.test(t)||z.test(t)||Q.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},Y=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},ee=e=>JSON.parse(e,(t,n)=>{let s=F(n);return s||n}),E=e=>{if(!e)return e;if(X(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=F(e);if(t)return t;if(Y(e))try{return ee(e)}catch{}return e},q=e=>{let t=e.data.toString();return t==="null"?null:E(t)};var M=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,o=>{if(t==="message"){let c=q(o);n({...o,data:c})}else n(o)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var te=["get","post","put","delete","patch","options","head","connect","subscribe"],J=["localhost","127.0.0.1","0.0.0.0"],K=typeof FileList>"u",I=e=>K?e instanceof Blob:e instanceof FileList||e instanceof File,ne=e=>{if(!e)return!1;for(let t in e)if(I(e[t])||Array.isArray(e[t])&&e[t].find(I))return!0;return!1},N=e=>K?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),S=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let o of e)if(!Array.isArray(o))s=S(o,t,n,s);else{let c=o[0];if(typeof c=="string")s[c.toLowerCase()]=o[1];else for(let[i,g]of c)s[i.toLowerCase()]=g}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return S(e,t,n,s);let o=e(t,n);return o?S(o,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((c,i)=>{s[i.toLowerCase()]=c}),s;for(let[c,i]of Object.entries(e))s[c.toLowerCase()]=i;return s;default:return s}};async function*C(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:o,value:c}=await n.read();if(o)break;let i=typeof c=="string"?c:s.decode(c);i.includes(`
1
+ "use strict";var Eden=(()=>{var j=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var n in t)j(e,n,{get:t[n],enumerable:!0})},B=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of U(t))!V.call(e,o)&&o!==n&&j(e,o,{get:()=>t[o],enumerable:!(s=H(t,o))||s.enumerable});return e};var Z=e=>B(j({},"__esModule",{value:!0}),e);var ie={};$(ie,{streamResponse:()=>J,treaty:()=>re});var k=class extends Error{constructor(n,s){super(s+"");this.status=n;this.value=s}};var G=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,z=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,Q=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,X=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),F=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(G.test(t)||z.test(t)||Q.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},Y=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},ee=e=>JSON.parse(e,(t,n)=>{let s=F(n);return s||n}),A=e=>{if(!e)return e;if(X(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=F(e);if(t)return t;if(Y(e))try{return ee(e)}catch{}return e},D=e=>{let t=e.data.toString();return t==="null"?null:A(t)};var M=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,o=>{if(t==="message"){let c=D(o);n({...o,data:c})}else n(o)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var te=["get","post","put","delete","patch","options","head","connect","subscribe"],I=["localhost","127.0.0.1","0.0.0.0"],C=typeof FileList>"u",q=e=>C?e instanceof Blob:e instanceof FileList||e instanceof File,ne=e=>{if(!e)return!1;for(let t in e)if(q(e[t])||Array.isArray(e[t])&&e[t].find(q))return!0;return!1},N=e=>C?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),S=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let o of e)if(!Array.isArray(o))s=S(o,t,n,s);else{let c=o[0];if(typeof c=="string")s[c.toLowerCase()]=o[1];else for(let[i,g]of c)s[i.toLowerCase()]=g}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return S(e,t,n,s);let o=e(t,n);return o?S(o,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((c,i)=>{s[i.toLowerCase()]=c}),s;for(let[c,i]of Object.entries(e))s[c.toLowerCase()]=i;return s;default:return s}};async function*J(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:o,value:c}=await n.read();if(o)break;let i=typeof c=="string"?c:s.decode(c);i.includes(`
2
2
 
3
- `)?yield*se(i):yield E(i)}}finally{n.releaseLock()}}function*se(e){let t=e.split(`
3
+ `)?yield*se(i):yield A(i)}}finally{n.releaseLock()}}function*se(e){let t=e.split(`
4
4
 
5
- `);for(let n of t){if(n.indexOf(":")<=0){n&&(yield E(n));continue}let s=n.split(`
6
- `),o={};for(let c of s){let i=c.indexOf(":");if(i>0){let g=c.slice(0,i).trim(),T=c.slice(i+1).trim();o[g]=E(T)}}yield o}}var O=(e,t,n=[],s)=>new Proxy(()=>{},{get(o,c){return O(e,t,c==="index"?n:[...n,c],s)},apply(o,c,[i,g]){if(!i||g||typeof i=="object"&&Object.keys(i).length!==1||te.includes(n.at(-1))){let T=[...n],A=T.pop(),m="/"+T.join("/"),{fetcher:P=fetch,headers:L,onRequest:h,onResponse:v,fetch:_}=t,w=A==="get"||A==="head"||A==="subscribe";L=S(L,m,g);let D=w?i?.query:g?.query,R="";if(D){let r=(b,y)=>{R+=(R?"&":"?")+`${encodeURIComponent(b)}=${encodeURIComponent(y)}`};for(let[b,y]of Object.entries(D)){if(Array.isArray(y)){for(let f of y)r(b,f);continue}if(y!=null){if(typeof y=="object"){r(b,JSON.stringify(y));continue}r(b,`${y}`)}}}if(A==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||J.find(b=>e.includes(b))?"ws://":"wss://")+m+R;return new M(r)}return(async()=>{let r={method:A?.toUpperCase(),body:i,..._,headers:L};r.headers={...L,...S(w?i?.headers:g?.headers,m,r)};let b=w&&typeof i=="object"?i.fetch:g?.fetch;if(r={...r,...b},w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}if(w&&delete r.body,ne(i)){let u=new FormData;for(let[a,d]of Object.entries(r.body)){if(Array.isArray(d)){for(let p=0;p<d.length;p++){let W=d[p];u.append(a,W instanceof File?await N(W):W)}continue}if(K){if(Array.isArray(d))for(let p of d)u.append(a,p);else u.append(a,d);continue}if(d instanceof File){u.append(a,await N(d));continue}if(d instanceof FileList){for(let p=0;p<d.length;p++)u.append(a,await N(d[p]));continue}u.append(a,d)}r.body=u}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}g?.headers?.["content-type"]&&(r.headers["content-type"]=g?.headers["content-type"]);let y=e+m+R,f=await(s?.handle(new Request(y,r))??P(y,r)),l=null,x=null;if(v){Array.isArray(v)||(v=[v]);for(let u of v)try{let a=await u(f.clone());if(a!=null){l=a;break}}catch(a){a instanceof k?x=a:x=new k(422,a);break}}if(l!==null)return{data:l,error:x,response:f,status:f.status,headers:f.headers};if(f.headers.get("Transfer-Encoding")==="chunked")l=C(f);else switch(f.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":l=C(f);break;case"application/json":l=JSON.parse(await f.text(),(a,d)=>{if(typeof d!="string")return d;let p=F(d);return p||d});break;case"application/octet-stream":l=await f.arrayBuffer();break;case"multipart/form-data":let u=await f.formData();l={},u.forEach((a,d)=>{l[d]=a});break;default:l=await f.text().then(E)}return(f.status>=300||f.status<200)&&(x=new k(f.status,l),l=null),{data:l,error:x,response:f,status:f.status,headers:f.headers}})()}return typeof i=="object"?O(e,t,[...n,Object.values(i)[0]],s):O(e,t,n)}}),re=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(J.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),O(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."),O("http://e.ly",t,[],e));return Z(ie);})();
5
+ `);for(let n of t){if(n.indexOf(":")<=0){n&&(yield A(n));continue}let s=n.split(`
6
+ `),o={};for(let c of s){let i=c.indexOf(":");if(i>0){let g=c.slice(0,i).trim(),L=c.slice(i+1).trim();o[g]=A(L)}}yield o}}var O=(e,t,n=[],s)=>new Proxy(()=>{},{get(o,c){return O(e,t,c==="index"?n:[...n,c],s)},apply(o,c,[i,g]){if(!i||g||typeof i=="object"&&Object.keys(i).length!==1||te.includes(n.at(-1))){let L=[...n],E=L.pop(),m="/"+L.join("/"),{fetcher:P=fetch,headers:R,onRequest:h,onResponse:v,fetch:_}=t,w=E==="get"||E==="head"||E==="subscribe";R=S(R,m,g);let K=w?i?.query:g?.query,T="";if(K){let r=(b,l)=>{T+=(T?"&":"?")+`${encodeURIComponent(b)}=${encodeURIComponent(l)}`};for(let[b,l]of Object.entries(K)){if(Array.isArray(l)){for(let d of l)r(b,d);continue}if(l!=null){if(typeof l=="object"){r(b,JSON.stringify(l));continue}r(b,`${l}`)}}}if(E==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||I.find(b=>e.includes(b))?"ws://":"wss://")+m+T;return new M(r)}return(async()=>{let r={method:E?.toUpperCase(),body:i,..._,headers:R};r.headers={...R,...S(w?i?.headers:g?.headers,m,r)};let b=w&&typeof i=="object"?i.fetch:g?.fetch;if(r={...r,...b},w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}if(w&&delete r.body,ne(i)){let u=new FormData;for(let[a,f]of Object.entries(r.body)){if(Array.isArray(f)){for(let p=0;p<f.length;p++){let W=f[p];u.append(a,W instanceof File?await N(W):W)}continue}if(C){if(Array.isArray(f))for(let p of f)u.append(a,p);else u.append(a,f);continue}if(f instanceof File){u.append(a,await N(f));continue}if(f instanceof FileList){for(let p=0;p<f.length;p++)u.append(a,await N(f[p]));continue}u.append(a,f)}r.body=u}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}g?.headers?.["content-type"]&&(r.headers["content-type"]=g?.headers["content-type"]);let l=e+m+T,d=await(s?.handle(new Request(l,r))??P(l,r)),y=null,x=null;if(v){Array.isArray(v)||(v=[v]);for(let u of v)try{let a=await u(d.clone());if(a!=null){y=a;break}}catch(a){a instanceof k?x=a:x=new k(422,a);break}}if(y!==null)return{data:y,error:x,response:d,status:d.status,headers:d.headers};switch(d.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":y=J(d);break;case"application/json":y=JSON.parse(await d.text(),(a,f)=>{if(typeof f!="string")return f;let p=F(f);return p||f});break;case"application/octet-stream":y=await d.arrayBuffer();break;case"multipart/form-data":let u=await d.formData();y={},u.forEach((a,f)=>{y[f]=a});break;default:y=await d.text().then(A)}return(d.status>=300||d.status<200)&&(x=new k(d.status,y),y=null),{data:y,error:x,response:d,status:d.status,headers:d.headers}})()}return typeof i=="object"?O(e,t,[...n,Object.values(i)[0]],s):O(e,t,n)}}),re=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(I.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),O(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."),O("http://e.ly",t,[],e));return Z(ie);})();
package/dist/treaty2.js CHANGED
@@ -1,6 +1,6 @@
1
- "use strict";var j=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var n in t)j(e,n,{get:t[n],enumerable:!0})},B=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of U(t))!V.call(e,o)&&o!==n&&j(e,o,{get:()=>t[o],enumerable:!(s=H(t,o))||s.enumerable});return e};var Z=e=>B(j({},"__esModule",{value:!0}),e);var ie={};$(ie,{streamResponse:()=>C,treaty:()=>re});module.exports=Z(ie);var k=class extends Error{constructor(n,s){super(s+"");this.status=n;this.value=s}};var G=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,z=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,Q=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,X=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),F=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(G.test(t)||z.test(t)||Q.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},Y=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},ee=e=>JSON.parse(e,(t,n)=>{let s=F(n);return s||n}),E=e=>{if(!e)return e;if(X(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=F(e);if(t)return t;if(Y(e))try{return ee(e)}catch{}return e},q=e=>{let t=e.data.toString();return t==="null"?null:E(t)};var M=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,o=>{if(t==="message"){let c=q(o);n({...o,data:c})}else n(o)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var te=["get","post","put","delete","patch","options","head","connect","subscribe"],J=["localhost","127.0.0.1","0.0.0.0"],K=typeof FileList>"u",I=e=>K?e instanceof Blob:e instanceof FileList||e instanceof File,ne=e=>{if(!e)return!1;for(let t in e)if(I(e[t])||Array.isArray(e[t])&&e[t].find(I))return!0;return!1},N=e=>K?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),S=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let o of e)if(!Array.isArray(o))s=S(o,t,n,s);else{let c=o[0];if(typeof c=="string")s[c.toLowerCase()]=o[1];else for(let[i,g]of c)s[i.toLowerCase()]=g}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return S(e,t,n,s);let o=e(t,n);return o?S(o,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((c,i)=>{s[i.toLowerCase()]=c}),s;for(let[c,i]of Object.entries(e))s[c.toLowerCase()]=i;return s;default:return s}};async function*C(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:o,value:c}=await n.read();if(o)break;let i=typeof c=="string"?c:s.decode(c);i.includes(`
1
+ "use strict";var j=Object.defineProperty;var H=Object.getOwnPropertyDescriptor;var U=Object.getOwnPropertyNames;var V=Object.prototype.hasOwnProperty;var $=(e,t)=>{for(var n in t)j(e,n,{get:t[n],enumerable:!0})},B=(e,t,n,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of U(t))!V.call(e,o)&&o!==n&&j(e,o,{get:()=>t[o],enumerable:!(s=H(t,o))||s.enumerable});return e};var Z=e=>B(j({},"__esModule",{value:!0}),e);var ie={};$(ie,{streamResponse:()=>J,treaty:()=>re});module.exports=Z(ie);var k=class extends Error{constructor(n,s){super(s+"");this.status=n;this.value=s}};var G=/(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d\.\d+([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))|(\d{4}-[01]\d-[0-3]\dT[0-2]\d:[0-5]\d([+-][0-2]\d:[0-5]\d|Z))/,z=/(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s(?:Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s\d{2}\s\d{4}\s\d{2}:\d{2}:\d{2}\sGMT(?:\+|-)\d{4}\s\([^)]+\)/,Q=/^(?:(?:(?:(?:0?[1-9]|[12][0-9]|3[01])[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:19|20)\d{2})|(?:(?:19|20)\d{2}[/\s-](?:0?[1-9]|1[0-2])[/\s-](?:0?[1-9]|[12][0-9]|3[01]))))(?:\s(?:1[012]|0?[1-9]):[0-5][0-9](?::[0-5][0-9])?(?:\s[AP]M)?)?$/,X=e=>e.trim().length!==0&&!Number.isNaN(Number(e)),F=e=>{if(typeof e!="string")return null;let t=e.replace(/"/g,"");if(G.test(t)||z.test(t)||Q.test(t)){let n=new Date(t);if(!Number.isNaN(n.getTime()))return n}return null},Y=e=>{let t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t===123&&n===125||t===91&&n===93},ee=e=>JSON.parse(e,(t,n)=>{let s=F(n);return s||n}),A=e=>{if(!e)return e;if(X(e))return+e;if(e==="true")return!0;if(e==="false")return!1;let t=F(e);if(t)return t;if(Y(e))try{return ee(e)}catch{}return e},D=e=>{let t=e.data.toString();return t==="null"?null:A(t)};var M=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,o=>{if(t==="message"){let c=D(o);n({...o,data:c})}else n(o)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var te=["get","post","put","delete","patch","options","head","connect","subscribe"],I=["localhost","127.0.0.1","0.0.0.0"],C=typeof FileList>"u",q=e=>C?e instanceof Blob:e instanceof FileList||e instanceof File,ne=e=>{if(!e)return!1;for(let t in e)if(q(e[t])||Array.isArray(e[t])&&e[t].find(q))return!0;return!1},N=e=>C?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),S=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let o of e)if(!Array.isArray(o))s=S(o,t,n,s);else{let c=o[0];if(typeof c=="string")s[c.toLowerCase()]=o[1];else for(let[i,g]of c)s[i.toLowerCase()]=g}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return S(e,t,n,s);let o=e(t,n);return o?S(o,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((c,i)=>{s[i.toLowerCase()]=c}),s;for(let[c,i]of Object.entries(e))s[c.toLowerCase()]=i;return s;default:return s}};async function*J(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:o,value:c}=await n.read();if(o)break;let i=typeof c=="string"?c:s.decode(c);i.includes(`
2
2
 
3
- `)?yield*se(i):yield E(i)}}finally{n.releaseLock()}}function*se(e){let t=e.split(`
3
+ `)?yield*se(i):yield A(i)}}finally{n.releaseLock()}}function*se(e){let t=e.split(`
4
4
 
5
- `);for(let n of t){if(n.indexOf(":")<=0){n&&(yield E(n));continue}let s=n.split(`
6
- `),o={};for(let c of s){let i=c.indexOf(":");if(i>0){let g=c.slice(0,i).trim(),T=c.slice(i+1).trim();o[g]=E(T)}}yield o}}var O=(e,t,n=[],s)=>new Proxy(()=>{},{get(o,c){return O(e,t,c==="index"?n:[...n,c],s)},apply(o,c,[i,g]){if(!i||g||typeof i=="object"&&Object.keys(i).length!==1||te.includes(n.at(-1))){let T=[...n],A=T.pop(),m="/"+T.join("/"),{fetcher:P=fetch,headers:L,onRequest:h,onResponse:v,fetch:_}=t,w=A==="get"||A==="head"||A==="subscribe";L=S(L,m,g);let D=w?i?.query:g?.query,R="";if(D){let r=(b,y)=>{R+=(R?"&":"?")+`${encodeURIComponent(b)}=${encodeURIComponent(y)}`};for(let[b,y]of Object.entries(D)){if(Array.isArray(y)){for(let f of y)r(b,f);continue}if(y!=null){if(typeof y=="object"){r(b,JSON.stringify(y));continue}r(b,`${y}`)}}}if(A==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||J.find(b=>e.includes(b))?"ws://":"wss://")+m+R;return new M(r)}return(async()=>{let r={method:A?.toUpperCase(),body:i,..._,headers:L};r.headers={...L,...S(w?i?.headers:g?.headers,m,r)};let b=w&&typeof i=="object"?i.fetch:g?.fetch;if(r={...r,...b},w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}if(w&&delete r.body,ne(i)){let u=new FormData;for(let[a,d]of Object.entries(r.body)){if(Array.isArray(d)){for(let p=0;p<d.length;p++){let W=d[p];u.append(a,W instanceof File?await N(W):W)}continue}if(K){if(Array.isArray(d))for(let p of d)u.append(a,p);else u.append(a,d);continue}if(d instanceof File){u.append(a,await N(d));continue}if(d instanceof FileList){for(let p=0;p<d.length;p++)u.append(a,await N(d[p]));continue}u.append(a,d)}r.body=u}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}g?.headers?.["content-type"]&&(r.headers["content-type"]=g?.headers["content-type"]);let y=e+m+R,f=await(s?.handle(new Request(y,r))??P(y,r)),l=null,x=null;if(v){Array.isArray(v)||(v=[v]);for(let u of v)try{let a=await u(f.clone());if(a!=null){l=a;break}}catch(a){a instanceof k?x=a:x=new k(422,a);break}}if(l!==null)return{data:l,error:x,response:f,status:f.status,headers:f.headers};if(f.headers.get("Transfer-Encoding")==="chunked")l=C(f);else switch(f.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":l=C(f);break;case"application/json":l=JSON.parse(await f.text(),(a,d)=>{if(typeof d!="string")return d;let p=F(d);return p||d});break;case"application/octet-stream":l=await f.arrayBuffer();break;case"multipart/form-data":let u=await f.formData();l={},u.forEach((a,d)=>{l[d]=a});break;default:l=await f.text().then(E)}return(f.status>=300||f.status<200)&&(x=new k(f.status,l),l=null),{data:l,error:x,response:f,status:f.status,headers:f.headers}})()}return typeof i=="object"?O(e,t,[...n,Object.values(i)[0]],s):O(e,t,n)}}),re=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(J.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),O(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."),O("http://e.ly",t,[],e));0&&(module.exports={streamResponse,treaty});
5
+ `);for(let n of t){if(n.indexOf(":")<=0){n&&(yield A(n));continue}let s=n.split(`
6
+ `),o={};for(let c of s){let i=c.indexOf(":");if(i>0){let g=c.slice(0,i).trim(),L=c.slice(i+1).trim();o[g]=A(L)}}yield o}}var O=(e,t,n=[],s)=>new Proxy(()=>{},{get(o,c){return O(e,t,c==="index"?n:[...n,c],s)},apply(o,c,[i,g]){if(!i||g||typeof i=="object"&&Object.keys(i).length!==1||te.includes(n.at(-1))){let L=[...n],E=L.pop(),m="/"+L.join("/"),{fetcher:P=fetch,headers:R,onRequest:h,onResponse:v,fetch:_}=t,w=E==="get"||E==="head"||E==="subscribe";R=S(R,m,g);let K=w?i?.query:g?.query,T="";if(K){let r=(b,l)=>{T+=(T?"&":"?")+`${encodeURIComponent(b)}=${encodeURIComponent(l)}`};for(let[b,l]of Object.entries(K)){if(Array.isArray(l)){for(let d of l)r(b,d);continue}if(l!=null){if(typeof l=="object"){r(b,JSON.stringify(l));continue}r(b,`${l}`)}}}if(E==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||I.find(b=>e.includes(b))?"ws://":"wss://")+m+T;return new M(r)}return(async()=>{let r={method:E?.toUpperCase(),body:i,..._,headers:R};r.headers={...R,...S(w?i?.headers:g?.headers,m,r)};let b=w&&typeof i=="object"?i.fetch:g?.fetch;if(r={...r,...b},w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}if(w&&delete r.body,ne(i)){let u=new FormData;for(let[a,f]of Object.entries(r.body)){if(Array.isArray(f)){for(let p=0;p<f.length;p++){let W=f[p];u.append(a,W instanceof File?await N(W):W)}continue}if(C){if(Array.isArray(f))for(let p of f)u.append(a,p);else u.append(a,f);continue}if(f instanceof File){u.append(a,await N(f));continue}if(f instanceof FileList){for(let p=0;p<f.length;p++)u.append(a,await N(f[p]));continue}u.append(a,f)}r.body=u}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(w&&delete r.body,h){Array.isArray(h)||(h=[h]);for(let u of h){let a=await u(m,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...S(a.headers,m,r)}})}}g?.headers?.["content-type"]&&(r.headers["content-type"]=g?.headers["content-type"]);let l=e+m+T,d=await(s?.handle(new Request(l,r))??P(l,r)),y=null,x=null;if(v){Array.isArray(v)||(v=[v]);for(let u of v)try{let a=await u(d.clone());if(a!=null){y=a;break}}catch(a){a instanceof k?x=a:x=new k(422,a);break}}if(y!==null)return{data:y,error:x,response:d,status:d.status,headers:d.headers};switch(d.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":y=J(d);break;case"application/json":y=JSON.parse(await d.text(),(a,f)=>{if(typeof f!="string")return f;let p=F(f);return p||f});break;case"application/octet-stream":y=await d.arrayBuffer();break;case"multipart/form-data":let u=await d.formData();y={},u.forEach((a,f)=>{y[f]=a});break;default:y=await d.text().then(A)}return(d.status>=300||d.status<200)&&(x=new k(d.status,y),y=null),{data:y,error:x,response:d,status:d.status,headers:d.headers}})()}return typeof i=="object"?O(e,t,[...n,Object.values(i)[0]],s):O(e,t,n)}}),re=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(I.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),O(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."),O("http://e.ly",t,[],e));0&&(module.exports={streamResponse,treaty});
package/dist/treaty2.mjs CHANGED
@@ -1 +1 @@
1
- import{a,b}from"./chunk-ZIS6B6IO.mjs";import"./chunk-QSLHAOSM.mjs";export{a as streamResponse,b as treaty};
1
+ import{a,b}from"./chunk-LJDYVDXQ.mjs";import"./chunk-QSLHAOSM.mjs";export{a as streamResponse,b as treaty};
@@ -18,6 +18,22 @@ type UnionToIntersect<U> = (U extends any ? (arg: U) => any : never) extends (ar
18
18
  type IsAny<T> = 0 extends 1 & T ? true : false;
19
19
  type IsNever<T> = [T] extends [never] ? true : false;
20
20
  type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
21
+ type IsExactlyUnknown<T> = [T] extends [unknown] ? [unknown] extends [T] ? true : false : false;
22
+ type IsUndefined<T> = [T] extends [undefined] ? true : false;
23
+ type IsMatchingEmptyObject<T> = [T] extends [{}] ? [{}] extends [T] ? true : false : false;
24
+ type MaybeEmptyObject<TObj, TKey extends PropertyKey, TFallback = Record<string, unknown>> = IsUndefined<TObj> extends true ? {
25
+ [K in TKey]?: TFallback;
26
+ } : IsExactlyUnknown<TObj> extends true ? {
27
+ [K in TKey]?: TFallback;
28
+ } : IsMatchingEmptyObject<TObj> extends true ? {
29
+ [K in TKey]?: TObj;
30
+ } : undefined extends TObj ? {
31
+ [K in TKey]?: TObj;
32
+ } : null extends TObj ? {
33
+ [K in TKey]?: TObj;
34
+ } : {
35
+ [K in TKey]: TObj;
36
+ };
21
37
  type AnyTypedRoute = {
22
38
  body?: unknown;
23
39
  headers?: unknown;
@@ -41,4 +57,4 @@ type TreatyToPath<T, Path extends string = ''> = UnionToIntersect<T extends Reco
41
57
  }[keyof T] : {}>;
42
58
  type Not<T> = T extends true ? false : true;
43
59
 
44
- export { EdenFetchError as E, type IsUnknown as I, type MapError as M, type Not as N, type Prettify as P, type TreatyToPath as T, type IsNever as a };
60
+ export { EdenFetchError as E, type IsUnknown as I, type MapError as M, type Not as N, type Prettify as P, type TreatyToPath as T, type IsNever as a, type MaybeEmptyObject as b };
@@ -18,6 +18,22 @@ type UnionToIntersect<U> = (U extends any ? (arg: U) => any : never) extends (ar
18
18
  type IsAny<T> = 0 extends 1 & T ? true : false;
19
19
  type IsNever<T> = [T] extends [never] ? true : false;
20
20
  type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
21
+ type IsExactlyUnknown<T> = [T] extends [unknown] ? [unknown] extends [T] ? true : false : false;
22
+ type IsUndefined<T> = [T] extends [undefined] ? true : false;
23
+ type IsMatchingEmptyObject<T> = [T] extends [{}] ? [{}] extends [T] ? true : false : false;
24
+ type MaybeEmptyObject<TObj, TKey extends PropertyKey, TFallback = Record<string, unknown>> = IsUndefined<TObj> extends true ? {
25
+ [K in TKey]?: TFallback;
26
+ } : IsExactlyUnknown<TObj> extends true ? {
27
+ [K in TKey]?: TFallback;
28
+ } : IsMatchingEmptyObject<TObj> extends true ? {
29
+ [K in TKey]?: TObj;
30
+ } : undefined extends TObj ? {
31
+ [K in TKey]?: TObj;
32
+ } : null extends TObj ? {
33
+ [K in TKey]?: TObj;
34
+ } : {
35
+ [K in TKey]: TObj;
36
+ };
21
37
  type AnyTypedRoute = {
22
38
  body?: unknown;
23
39
  headers?: unknown;
@@ -41,4 +57,4 @@ type TreatyToPath<T, Path extends string = ''> = UnionToIntersect<T extends Reco
41
57
  }[keyof T] : {}>;
42
58
  type Not<T> = T extends true ? false : true;
43
59
 
44
- export { EdenFetchError as E, type IsUnknown as I, type MapError as M, type Not as N, type Prettify as P, type TreatyToPath as T, type IsNever as a };
60
+ export { EdenFetchError as E, type IsUnknown as I, type MapError as M, type Not as N, type Prettify as P, type TreatyToPath as T, type IsNever as a, type MaybeEmptyObject as b };
package/dist/types.d.ts CHANGED
@@ -14,6 +14,22 @@ export type UnionToTuple<T> = UnionToIntersect<T extends any ? (t: T) => T : nev
14
14
  export type IsAny<T> = 0 extends 1 & T ? true : false;
15
15
  export type IsNever<T> = [T] extends [never] ? true : false;
16
16
  export type IsUnknown<T> = IsAny<T> extends true ? false : unknown extends T ? true : false;
17
+ type IsExactlyUnknown<T> = [T] extends [unknown] ? [unknown] extends [T] ? true : false : false;
18
+ type IsUndefined<T> = [T] extends [undefined] ? true : false;
19
+ type IsMatchingEmptyObject<T> = [T] extends [{}] ? [{}] extends [T] ? true : false : false;
20
+ export type MaybeEmptyObject<TObj, TKey extends PropertyKey, TFallback = Record<string, unknown>> = IsUndefined<TObj> extends true ? {
21
+ [K in TKey]?: TFallback;
22
+ } : IsExactlyUnknown<TObj> extends true ? {
23
+ [K in TKey]?: TFallback;
24
+ } : IsMatchingEmptyObject<TObj> extends true ? {
25
+ [K in TKey]?: TObj;
26
+ } : undefined extends TObj ? {
27
+ [K in TKey]?: TObj;
28
+ } : null extends TObj ? {
29
+ [K in TKey]?: TObj;
30
+ } : {
31
+ [K in TKey]: TObj;
32
+ };
17
33
  export type AnyTypedRoute = {
18
34
  body?: unknown;
19
35
  headers?: unknown;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elysiajs/eden",
3
- "version": "1.4.3",
3
+ "version": "1.4.5",
4
4
  "description": "Fully type-safe Elysia client",
5
5
  "author": {
6
6
  "name": "saltyAom",
@@ -53,13 +53,13 @@
53
53
  "release": "npm run build && npm run test && npm publish --access public"
54
54
  },
55
55
  "peerDependencies": {
56
- "elysia": ">= 1.4.0-exp.0"
56
+ "elysia": ">= 1.4.0"
57
57
  },
58
58
  "devDependencies": {
59
59
  "@elysiajs/cors": "1.3.3",
60
60
  "@types/bun": "^1.2.20",
61
61
  "@types/node": "^24.3.0",
62
- "elysia": "^1.4.10",
62
+ "elysia": "^1.4.15",
63
63
  "esbuild": "^0.25.9",
64
64
  "eslint": "^9.34.0",
65
65
  "expect-type": "^1.2.2",
@@ -1,6 +0,0 @@
1
- import{a as W,b as M,c as A,d as q}from"./chunk-QSLHAOSM.mjs";var F=class{constructor(t){this.url=t;this.ws=new WebSocket(t)}ws;send(t){return Array.isArray(t)?(t.forEach(n=>this.send(n)),this):(this.ws.send(typeof t=="object"?JSON.stringify(t):t.toString()),this)}on(t,n,s){return this.addEventListener(t,n,s)}off(t,n,s){return this.ws.removeEventListener(t,n,s),this}subscribe(t,n){return this.addEventListener("message",t,n)}addEventListener(t,n,s){return this.ws.addEventListener(t,l=>{if(t==="message"){let o=q(l);n({...l,data:o})}else n(l)},s),this}removeEventListener(t,n,s){return this.off(t,n,s),this}close(){return this.ws.close(),this}};var P=["get","post","put","delete","patch","options","head","connect","subscribe"],N=["localhost","127.0.0.1","0.0.0.0"],C=typeof FileList>"u",I=e=>C?e instanceof Blob:e instanceof FileList||e instanceof File,U=e=>{if(!e)return!1;for(let t in e)if(I(e[t])||Array.isArray(e[t])&&e[t].find(I))return!0;return!1},T=e=>C?e:new Promise(t=>{let n=new FileReader;n.onload=()=>{let s=new File([n.result],e.name,{lastModified:e.lastModified,type:e.type});t(s)},n.readAsArrayBuffer(e)}),b=(e,t,n={},s={})=>{if(Array.isArray(e)){for(let l of e)if(!Array.isArray(l))s=b(l,t,n,s);else{let o=l[0];if(typeof o=="string")s[o.toLowerCase()]=l[1];else for(let[i,h]of o)s[i.toLowerCase()]=h}return s}if(!e)return s;switch(typeof e){case"function":if(e instanceof Headers)return b(e,t,n,s);let l=e(t,n);return l?b(l,t,n,s):s;case"object":if(e instanceof Headers)return e.forEach((o,i)=>{s[i.toLowerCase()]=o}),s;for(let[o,i]of Object.entries(e))s[o.toLowerCase()]=i;return s;default:return s}};async function*D(e){let t=e.body;if(!t)return;let n=t.getReader(),s=new TextDecoder;try{for(;;){let{done:l,value:o}=await n.read();if(l)break;let i=typeof o=="string"?o:s.decode(o);i.includes(`
2
-
3
- `)?yield*_(i):yield A(i)}}finally{n.releaseLock()}}function*_(e){let t=e.split(`
4
-
5
- `);for(let n of t){if(n.indexOf(":")<=0){n&&(yield A(n));continue}let s=n.split(`
6
- `),l={};for(let o of s){let i=o.indexOf(":");if(i>0){let h=o.slice(0,i).trim(),L=o.slice(i+1).trim();l[h]=A(L)}}yield l}}var x=(e,t,n=[],s)=>new Proxy(()=>{},{get(l,o){return x(e,t,o==="index"?n:[...n,o],s)},apply(l,o,[i,h]){if(!i||h||typeof i=="object"&&Object.keys(i).length!==1||P.includes(n.at(-1))){let L=[...n],k=L.pop(),v="/"+L.join("/"),{fetcher:H=fetch,headers:R,onRequest:g,onResponse:E,fetch:J}=t,m=k==="get"||k==="head"||k==="subscribe";R=b(R,v,h);let K=m?i?.query:h?.query,O="";if(K){let r=(w,d)=>{O+=(O?"&":"?")+`${encodeURIComponent(w)}=${encodeURIComponent(d)}`};for(let[w,d]of Object.entries(K)){if(Array.isArray(d)){for(let c of d)r(w,c);continue}if(d!=null){if(typeof d=="object"){r(w,JSON.stringify(d));continue}r(w,`${d}`)}}}if(k==="subscribe"){let r=e.replace(/^([^]+):\/\//,e.startsWith("https://")?"wss://":e.startsWith("http://")||N.find(w=>e.includes(w))?"ws://":"wss://")+v+O;return new F(r)}return(async()=>{let r={method:k?.toUpperCase(),body:i,...J,headers:R};r.headers={...R,...b(m?i?.headers:h?.headers,v,r)};let w=m&&typeof i=="object"?i.fetch:h?.fetch;if(r={...r,...w},m&&delete r.body,g){Array.isArray(g)||(g=[g]);for(let y of g){let a=await y(v,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...b(a.headers,v,r)}})}}if(m&&delete r.body,U(i)){let y=new FormData;for(let[a,f]of Object.entries(r.body)){if(Array.isArray(f)){for(let p=0;p<f.length;p++){let j=f[p];y.append(a,j instanceof File?await T(j):j)}continue}if(C){if(Array.isArray(f))for(let p of f)y.append(a,p);else y.append(a,f);continue}if(f instanceof File){y.append(a,await T(f));continue}if(f instanceof FileList){for(let p=0;p<f.length;p++)y.append(a,await T(f[p]));continue}y.append(a,f)}r.body=y}else typeof i=="object"?(r.headers["content-type"]="application/json",r.body=JSON.stringify(i)):i!=null&&(r.headers["content-type"]="text/plain");if(m&&delete r.body,g){Array.isArray(g)||(g=[g]);for(let y of g){let a=await y(v,r);typeof a=="object"&&(r={...r,...a,headers:{...r.headers,...b(a.headers,v,r)}})}}h?.headers?.["content-type"]&&(r.headers["content-type"]=h?.headers["content-type"]);let d=e+v+O,c=await(s?.handle(new Request(d,r))??H(d,r)),u=null,S=null;if(E){Array.isArray(E)||(E=[E]);for(let y of E)try{let a=await y(c.clone());if(a!=null){u=a;break}}catch(a){a instanceof W?S=a:S=new W(422,a);break}}if(u!==null)return{data:u,error:S,response:c,status:c.status,headers:c.headers};if(c.headers.get("Transfer-Encoding")==="chunked")u=D(c);else switch(c.headers.get("Content-Type")?.split(";")[0]){case"text/event-stream":u=D(c);break;case"application/json":u=JSON.parse(await c.text(),(a,f)=>{if(typeof f!="string")return f;let p=M(f);return p||f});break;case"application/octet-stream":u=await c.arrayBuffer();break;case"multipart/form-data":let y=await c.formData();u={},y.forEach((a,f)=>{u[f]=a});break;default:u=await c.text().then(A)}return(c.status>=300||c.status<200)&&(S=new W(c.status,u),u=null),{data:u,error:S,response:c,status:c.status,headers:c.headers}})()}return typeof i=="object"?x(e,t,[...n,Object.values(i)[0]],s):x(e,t,n)}}),Q=(e,t={})=>typeof e=="string"?(t.keepDomain||(e.includes("://")||(e=(N.find(n=>e.includes(n))?"http://":"https://")+e),e.endsWith("/")&&(e=e.slice(0,-1))),x(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."),x("http://e.ly",t,[],e));export{D as a,Q as b};