@stacksjs/bun-router 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/dist/chunk-4wd1d6ay.js +416 -0
  2. package/dist/{chunk-nf3kv7kv.js → chunk-8rrs7556.js} +1 -1
  3. package/dist/{chunk-3y4gaz7v.js → chunk-m4aaj9ay.js} +1 -1
  4. package/dist/cli.js +30 -59
  5. package/dist/container/index.js +1 -1
  6. package/dist/index.js +12 -12
  7. package/dist/request/macros.d.ts +13 -0
  8. package/package.json +9 -1
  9. package/dist/chunk-03m2j6h7.js +0 -2
  10. package/dist/chunk-08cw7ejr.js +0 -3
  11. package/dist/chunk-0e4g0fyv.js +0 -62
  12. package/dist/chunk-0mmn02yw.js +0 -2
  13. package/dist/chunk-126c9qm3.js +0 -2
  14. package/dist/chunk-12p13817.js +0 -2
  15. package/dist/chunk-14v65c37.js +0 -4
  16. package/dist/chunk-1b6a7t3v.js +0 -231
  17. package/dist/chunk-1wenkmk0.js +0 -2
  18. package/dist/chunk-2152npfd.js +0 -2
  19. package/dist/chunk-26w23krx.js +0 -2
  20. package/dist/chunk-2g8m379z.js +0 -10
  21. package/dist/chunk-2rr178et.js +0 -1654
  22. package/dist/chunk-2w8f3swz.js +0 -29
  23. package/dist/chunk-4r1x4afz.js +0 -12
  24. package/dist/chunk-4wyw66zk.js +0 -2
  25. package/dist/chunk-4z5sf8ag.js +0 -2
  26. package/dist/chunk-58tfvayh.js +0 -4
  27. package/dist/chunk-5be9x5cq.js +0 -3
  28. package/dist/chunk-5dp83qcx.js +0 -397
  29. package/dist/chunk-5f0d9j9a.js +0 -2
  30. package/dist/chunk-5z52b0fc.js +0 -28
  31. package/dist/chunk-5zrnk2kq.js +0 -4
  32. package/dist/chunk-6bbmkwng.js +0 -3
  33. package/dist/chunk-6dmqtdnq.js +0 -2
  34. package/dist/chunk-6e91956t.js +0 -3
  35. package/dist/chunk-6rv8w5jk.js +0 -2
  36. package/dist/chunk-6x1feysm.js +0 -3
  37. package/dist/chunk-7qnxdedn.js +0 -321
  38. package/dist/chunk-7y72hm1x.js +0 -2
  39. package/dist/chunk-8hbhfh6b.js +0 -194
  40. package/dist/chunk-8kfzygg5.js +0 -3
  41. package/dist/chunk-8wpj3fqe.js +0 -351
  42. package/dist/chunk-8wydx2we.js +0 -2
  43. package/dist/chunk-8zjnjvv7.js +0 -2
  44. package/dist/chunk-9805tt8n.js +0 -341
  45. package/dist/chunk-988h4bzr.js +0 -2
  46. package/dist/chunk-9b6a58ac.js +0 -2
  47. package/dist/chunk-a8fcaywb.js +0 -2
  48. package/dist/chunk-bfjwn7yg.js +0 -2
  49. package/dist/chunk-bp2522mm.js +0 -2
  50. package/dist/chunk-brpgjyqg.js +0 -3
  51. package/dist/chunk-bswe62q4.js +0 -48
  52. package/dist/chunk-c3v796c8.js +0 -943
  53. package/dist/chunk-ccqmwdry.js +0 -2
  54. package/dist/chunk-ck0crwnx.js +0 -2
  55. package/dist/chunk-cqgkxcb4.js +0 -2
  56. package/dist/chunk-dntnakjy.js +0 -2
  57. package/dist/chunk-dxg045wj.js +0 -5
  58. package/dist/chunk-e3qej0jr.js +0 -4
  59. package/dist/chunk-ettdpnrw.js +0 -60
  60. package/dist/chunk-ezqwq17j.js +0 -185
  61. package/dist/chunk-ezx3qsez.js +0 -2
  62. package/dist/chunk-f72nnjy4.js +0 -15413
  63. package/dist/chunk-fna5n0ey.js +0 -246
  64. package/dist/chunk-fqhckdt8.js +0 -2
  65. package/dist/chunk-fr6hbx25.js +0 -2
  66. package/dist/chunk-g9cwng6w.js +0 -3
  67. package/dist/chunk-gd3za5x0.js +0 -2
  68. package/dist/chunk-gf28608k.js +0 -2
  69. package/dist/chunk-h1dj6v8q.js +0 -3
  70. package/dist/chunk-hjxe7k2g.js +0 -2
  71. package/dist/chunk-hrkgznbn.js +0 -2
  72. package/dist/chunk-j6h5v0br.js +0 -2
  73. package/dist/chunk-kjtjbcq4.js +0 -71
  74. package/dist/chunk-mgb01qdv.js +0 -14
  75. package/dist/chunk-n24c9whp.js +0 -2
  76. package/dist/chunk-n2j24b0h.js +0 -4540
  77. package/dist/chunk-nhmtg01n.js +0 -84
  78. package/dist/chunk-p0qhpnqh.js +0 -70
  79. package/dist/chunk-p0w1x8y2.js +0 -3
  80. package/dist/chunk-p3dk1w2w.js +0 -216
  81. package/dist/chunk-q4e9pxs7.js +0 -3
  82. package/dist/chunk-q5dv1kyy.js +0 -2
  83. package/dist/chunk-qnqgf9tq.js +0 -2
  84. package/dist/chunk-qvwy1808.js +0 -898
  85. package/dist/chunk-r18f77vc.js +0 -12
  86. package/dist/chunk-r63za1mr.js +0 -2
  87. package/dist/chunk-rft8gw92.js +0 -7851
  88. package/dist/chunk-ryvmyskt.js +0 -4211
  89. package/dist/chunk-sa6mx308.js +0 -2
  90. package/dist/chunk-sw0chtw4.js +0 -4
  91. package/dist/chunk-va0pc7hx.js +0 -2
  92. package/dist/chunk-vcp8dnjq.js +0 -412
  93. package/dist/chunk-vg1erq1q.js +0 -2
  94. package/dist/chunk-vsh4390q.js +0 -358
  95. package/dist/chunk-w0jv49ch.js +0 -11
  96. package/dist/chunk-wm805tte.js +0 -35
  97. package/dist/chunk-xg9xscqz.js +0 -1
  98. package/dist/chunk-xj9h6mc9.js +0 -2
  99. package/dist/chunk-ytvzwrq3.js +0 -51
  100. package/dist/chunk-zde7ebc4.js +0 -288
  101. package/dist/chunk-zmqsv2xy.js +0 -2
@@ -335,4 +335,17 @@ export declare const RequestHelpers: {
335
335
  */
336
336
  parseCookies: (cookieHeader: string) => Record<string, string>;
337
337
  };
338
+ /**
339
+ * `request.query`, built once per request.
340
+ *
341
+ * `EnhancedRequest` declares `query` as a non-optional
342
+ * `Record<string, string | string[]>`, and on the server path nothing ever
343
+ * assigned it - so `req.query.a` type-checked and then threw
344
+ * `undefined is not an object`. A declared property that does not exist is the
345
+ * worst version of a type-versus-runtime gap: not a wrong value, a 500.
346
+ *
347
+ * A repeated key (`?a=1&a=2`) becomes an array, which is what the declared type
348
+ * has always promised.
349
+ */
350
+ export declare function getParsedQuery(req: EnhancedRequest): Record<string, string | string[]>;
338
351
  export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@stacksjs/bun-router",
3
3
  "type": "module",
4
- "version": "0.1.6",
4
+ "version": "0.1.8",
5
5
  "description": "A fast, type-safe router for Bun.",
6
6
  "author": "Chris Breuer <chris@stacksjs.org>",
7
7
  "license": "MIT",
@@ -95,5 +95,13 @@
95
95
  "dependencies": {
96
96
  "@stacksjs/clapp": "^0.2.0",
97
97
  "ts-rate-limiter": "^0.4.2"
98
+ },
99
+ "peerDependencies": {
100
+ "@stacksjs/stx": ">=0.2.227"
101
+ },
102
+ "peerDependenciesMeta": {
103
+ "@stacksjs/stx": {
104
+ "optional": true
105
+ }
98
106
  }
99
107
  }
@@ -1,2 +0,0 @@
1
- // @bun
2
- import{Pe as a,Qe as b,Re as c,Se as d,Te as e,Ue as f,Ve as g}from"./chunk-8wpj3fqe.js";import"./chunk-nf3kv7kv.js";export{b as createKeepAliveCache,d as generateKeepAliveCSS,e as generateKeepAliveRuntime,f as onActivated,g as onDeactivated,a as processKeepAliveDirectives,c as shouldCacheComponent};
@@ -1,3 +0,0 @@
1
- // @bun
2
- import{qs as F}from"./chunk-h1dj6v8q.js";import{Zu as C}from"./chunk-nf3kv7kv.js";import v from"fs";import d from"path";import A from"crypto";var R=new Set(["webp","avif","jpeg","png"]),S=new Set(["cover","contain","fill","inside","outside"]),D=new Set([".jpg",".jpeg",".png",".webp",".avif",".gif"]),k=4096,U=80,N="cover";async function L(e,t){let a=t.routePath??"/_stx/img",p=new URL(e.url);if(p.pathname!==a)return null;let s=M(p,t);if(!s.ok)return new Response(s.error,{status:s.status,headers:{"Content-Type":"text/plain"}});let{srcFsPath:i,srcUrl:g,width:l,height:n,format:r,quality:c,fit:h}=s,m;try{m=v.statSync(i)}catch{return new Response(`Source image not found: ${g}`,{status:404,headers:{"Content-Type":"text/plain"}})}if(!m.isFile())return new Response("Not a file",{status:404,headers:{"Content-Type":"text/plain"}});let w=t.cacheDir??".stx/cache/img";await v.promises.mkdir(w,{recursive:!0});let b=`${i}:${m.mtimeMs}:${m.size}`,x=`${l}x${n}:${r}:${c}:${h}`,f=A.createHash("sha256").update(`${b}|${x}`).digest("hex").slice(0,16),o=d.join(w,`${f}.${r}`),u={"Content-Type":F(r),"Cache-Control":"public, max-age=31536000, immutable",ETag:`"${f}"`,"X-Stx-Image-Cache":"HIT"};if(e.headers.get("if-none-match")===`"${f}"`)return new Response(null,{status:304,headers:u});let T=Bun.file(o);if(await T.exists())return new Response(T,{headers:u});try{let y=Buffer.from(await Bun.file(i).arrayBuffer()),{resizeAndConvert:I}=await q(),P=await I(y,{width:l,height:n,format:r,quality:c,fit:h});return await Bun.write(o,P),u["X-Stx-Image-Cache"]="MISS",new Response(new Uint8Array(P),{headers:u})}catch(y){let I=y.message;return new Response(`Image processing failed: ${I}`,{status:500,headers:{"Content-Type":"text/plain"}})}}function H(e){return async(t)=>await L(t,e)??new Response("Not Found",{status:404,headers:{"Content-Type":"text/plain"}})}function M(e,t){let a=e.searchParams.get("src");if(!a)return{ok:!1,error:"Missing required param: src",status:400};if(!a.startsWith("/"))return{ok:!1,error:"src must be an absolute URL path (start with /)",status:400};if(a.startsWith("//"))return{ok:!1,error:"src must be a local path",status:400};let p=d.extname(a).toLowerCase();if(!D.has(p))return{ok:!1,error:`Unsupported source extension: ${p}`,status:400};let s=d.resolve(t.publicDir),i=d.resolve(s,a.slice(1));if(!i.startsWith(`${s}${d.sep}`)&&i!==s)return{ok:!1,error:"src is outside publicDir",status:400};let g=t.maxWidth??k,l=t.maxHeight??k,n=e.searchParams.get("w"),r=e.searchParams.get("h"),c=n?Number.parseInt(n,10):0,h=r?Number.parseInt(r,10):0;if(n&&(!Number.isFinite(c)||c<=0))return{ok:!1,error:"Invalid w (must be positive integer)",status:400};if(r&&(!Number.isFinite(h)||h<=0))return{ok:!1,error:"Invalid h (must be positive integer)",status:400};if(!n&&!r)return{ok:!1,error:"At least one of w or h is required",status:400};let m=Math.min(c||g,g),w=Math.min(h||l,l),b=e.searchParams.get("f")||"webp";if(!R.has(b))return{ok:!1,error:`Invalid f (must be one of: ${[...R].join(", ")})`,status:400};let x=b,f=e.searchParams.get("q"),o=f?Number.parseInt(f,10):t.defaultQuality??U;if(!Number.isFinite(o)||o<1||o>100)return{ok:!1,error:"Invalid q (must be 1-100)",status:400};let u=e.searchParams.get("fit")||t.defaultFit||N;if(!S.has(u))return{ok:!1,error:`Invalid fit (must be one of: ${[...S].join(", ")})`,status:400};return{ok:!0,srcFsPath:i,srcUrl:a,width:m,height:w,format:x,quality:o,fit:u}}async function q(){return await import("./chunk-cqgkxcb4.js")}
3
- export{L as m,H as n};