itty-router 4.2.2 → 4.3.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/AutoRouter.d.ts +8 -0
  2. package/AutoRouter.js +2 -0
  3. package/AutoRouter.js.map +1 -0
  4. package/AutoRouter.mjs +2 -0
  5. package/AutoRouter.mjs.map +1 -0
  6. package/IttyRouter.d.ts +53 -0
  7. package/IttyRouter.js +2 -0
  8. package/IttyRouter.js.map +1 -0
  9. package/IttyRouter.mjs +2 -0
  10. package/IttyRouter.mjs.map +1 -0
  11. package/README.md +25 -169
  12. package/Router.d.ts +12 -53
  13. package/Router.js +1 -1
  14. package/Router.js.map +1 -1
  15. package/Router.mjs +1 -1
  16. package/Router.mjs.map +1 -1
  17. package/createCors.d.ts +1 -1
  18. package/createResponse.js +1 -1
  19. package/createResponse.js.map +1 -1
  20. package/createResponse.mjs +1 -1
  21. package/createResponse.mjs.map +1 -1
  22. package/error.js +1 -1
  23. package/error.js.map +1 -1
  24. package/error.mjs +1 -1
  25. package/error.mjs.map +1 -1
  26. package/html.js +1 -1
  27. package/html.js.map +1 -1
  28. package/html.mjs +1 -1
  29. package/html.mjs.map +1 -1
  30. package/index.d.ts +2 -0
  31. package/index.js +1 -1
  32. package/index.js.map +1 -1
  33. package/index.mjs +1 -1
  34. package/index.mjs.map +1 -1
  35. package/jpeg.js +1 -1
  36. package/jpeg.js.map +1 -1
  37. package/jpeg.mjs +1 -1
  38. package/jpeg.mjs.map +1 -1
  39. package/json.js +1 -1
  40. package/json.js.map +1 -1
  41. package/json.mjs +1 -1
  42. package/json.mjs.map +1 -1
  43. package/package.json +11 -1
  44. package/png.js +1 -1
  45. package/png.js.map +1 -1
  46. package/png.mjs +1 -1
  47. package/png.mjs.map +1 -1
  48. package/text.js +1 -1
  49. package/text.js.map +1 -1
  50. package/text.mjs +1 -1
  51. package/text.mjs.map +1 -1
  52. package/webp.js +1 -1
  53. package/webp.js.map +1 -1
  54. package/webp.mjs +1 -1
  55. package/webp.mjs.map +1 -1
  56. package/websocket.js +1 -1
  57. package/websocket.js.map +1 -1
  58. package/websocket.mjs +1 -1
  59. package/websocket.mjs.map +1 -1
  60. package/withContent.d.ts +1 -1
  61. package/withContent.js +1 -1
  62. package/withContent.js.map +1 -1
  63. package/withContent.mjs +1 -1
  64. package/withContent.mjs.map +1 -1
  65. package/withCookies.d.ts +1 -1
  66. package/withParams.d.ts +1 -1
@@ -0,0 +1,8 @@
1
+ import { RouteHandler } from 'IttyRouter';
2
+ import { ResponseHandler, RouterOptions } from './Router';
3
+ type AutoRouterOptions = {
4
+ missing?: RouteHandler;
5
+ format?: ResponseHandler;
6
+ } & RouterOptions;
7
+ export declare const AutoRouter: ({ format, missing, finally: f, before, ...options }?: AutoRouterOptions) => import("./Router").RouterType<import("IttyRouter").Route, any[]>;
8
+ export {};
package/AutoRouter.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";const e=((e="text/plain; charset=utf-8",r)=>(t,{...o}={})=>{if(void 0===t||t instanceof Response)return t;const a=new Response(r?.(t)??t,o);return a.headers.set("content-type",e),a})("application/json; charset=utf-8",JSON.stringify),r=e=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[e]||"Unknown Error"),t=(t=500,o)=>{if(t instanceof Error){const{message:e,...a}=t;t=t.status||500,o={error:e||r(t),...a}}return o={status:t,..."object"==typeof o?o:{error:o||r(t)}},e(o,{status:t})},o=e=>{e.proxy=new Proxy(e.proxy||e,{get:(r,t)=>void 0!==r[t]?r[t].bind?.(e)||r[t]:r?.params?.[t]})};exports.AutoRouter=({format:r=e,missing:a=(()=>t(404)),finally:n=[],before:s=[],...c}={})=>(({base:e="",routes:r=[],...t}={})=>({__proto__:new Proxy({},{get:(t,o,a,n)=>"handle"==o?a.fetch:(t,...s)=>r.push([o.toUpperCase?.(),RegExp(`^${(n=(e+t).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),s,n])&&a}),routes:r,...t,async fetch(e,...o){let a,n,s=new URL(e.url),c=e.query={__proto__:null};for(let[e,r]of s.searchParams)c[e]=c[e]?[].concat(c[e],r):r;e:try{for(let r of t.before||[])if(null!=(a=await r(e.proxy??e,...o)))break e;r:for(let[t,c,f,i]of r)if((t==e.method||"ALL"==t)&&(n=s.pathname.match(c))){e.params=n.groups||{},e.route=i;for(let r of f)if(null!=(a=await r(e.proxy??e,...o)))break r}}catch(r){if(!t.catch)throw r;a=await t.catch(r,e.proxy??e,...o)}try{for(let r of t.finally||[])a=await r(a,e.proxy??e,...o)??a}catch(r){if(!t.catch)throw r;a=await t.catch(r,e.proxy??e,...o)}return a}}))({before:[o,...s],catch:t,finally:[(e,...r)=>e??a(e,...r),r,...n],...c});
2
+ //# sourceMappingURL=AutoRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoRouter.js","sources":["../src/src/Router.ts","../src/src/json.ts","../src/src/createResponse.ts","../src/src/error.ts","../src/src/withParams.ts","../src/src/AutoRouter.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["json","format","transform","body","options","undefined","Response","response","headers","set","createResponse","JSON","stringify","getMessage","code","error","a","b","Error","message","err","status","withParams","request","proxy","Proxy","get","obj","prop","bind","params","missing","finally","f","before","base","routes","other","__proto__","target","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","args","match","url","URL","query","k","v","searchParams","concat","t","handler","outer","method","regex","pathname","groups","catch","Router","r"],"mappings":"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"}
package/AutoRouter.mjs ADDED
@@ -0,0 +1,2 @@
1
+ const e=((e="text/plain; charset=utf-8",r)=>(t,{...o}={})=>{if(void 0===t||t instanceof Response)return t;const a=new Response(r?.(t)??t,o);return a.headers.set("content-type",e),a})("application/json; charset=utf-8",JSON.stringify),r=e=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[e]||"Unknown Error"),t=(t=500,o)=>{if(t instanceof Error){const{message:e,...a}=t;t=t.status||500,o={error:e||r(t),...a}}return o={status:t,..."object"==typeof o?o:{error:o||r(t)}},e(o,{status:t})},o=e=>{e.proxy=new Proxy(e.proxy||e,{get:(r,t)=>void 0!==r[t]?r[t].bind?.(e)||r[t]:r?.params?.[t]})},a=({format:r=e,missing:a=(()=>t(404)),finally:n=[],before:s=[],...c}={})=>(({base:e="",routes:r=[],...t}={})=>({__proto__:new Proxy({},{get:(t,o,a,n)=>"handle"==o?a.fetch:(t,...s)=>r.push([o.toUpperCase?.(),RegExp(`^${(n=(e+t).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),s,n])&&a}),routes:r,...t,async fetch(e,...o){let a,n,s=new URL(e.url),c=e.query={__proto__:null};for(let[e,r]of s.searchParams)c[e]=c[e]?[].concat(c[e],r):r;e:try{for(let r of t.before||[])if(null!=(a=await r(e.proxy??e,...o)))break e;r:for(let[t,c,f,p]of r)if((t==e.method||"ALL"==t)&&(n=s.pathname.match(c))){e.params=n.groups||{},e.route=p;for(let r of f)if(null!=(a=await r(e.proxy??e,...o)))break r}}catch(r){if(!t.catch)throw r;a=await t.catch(r,e.proxy??e,...o)}try{for(let r of t.finally||[])a=await r(a,e.proxy??e,...o)??a}catch(r){if(!t.catch)throw r;a=await t.catch(r,e.proxy??e,...o)}return a}}))({before:[o,...s],catch:t,finally:[(e,...r)=>e??a(e,...r),r,...n],...c});export{a as AutoRouter};
2
+ //# sourceMappingURL=AutoRouter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutoRouter.mjs","sources":["../src/src/Router.ts","../src/src/json.ts","../src/src/createResponse.ts","../src/src/error.ts","../src/src/withParams.ts","../src/src/AutoRouter.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["json","format","transform","body","options","undefined","Response","response","headers","set","createResponse","JSON","stringify","getMessage","code","error","a","b","Error","message","err","status","withParams","request","proxy","Proxy","get","obj","prop","bind","params","AutoRouter","missing","finally","f","before","base","routes","other","__proto__","target","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","args","match","url","URL","query","k","v","searchParams","concat","t","handler","outer","method","regex","pathname","groups","catch","Router","r"],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export type GenericTraps = {
2
+ [key: string]: any;
3
+ };
4
+ export type RequestLike = {
5
+ method: string;
6
+ url: string;
7
+ } & GenericTraps;
8
+ export type IRequestStrict = {
9
+ method: string;
10
+ url: string;
11
+ route: string;
12
+ params: {
13
+ [key: string]: string;
14
+ };
15
+ query: {
16
+ [key: string]: string | string[] | undefined;
17
+ };
18
+ proxy?: any;
19
+ } & Request;
20
+ export type IRequest = IRequestStrict & GenericTraps;
21
+ export type IttyRouterOptions = {
22
+ base?: string;
23
+ routes?: RouteEntry[];
24
+ } & Record<string, any>;
25
+ export type RouteHandler<I = IRequest, A extends any[] = any[]> = {
26
+ (request: I, ...args: A): any;
27
+ };
28
+ export type RouteEntry = [
29
+ httpMethod: string,
30
+ match: RegExp,
31
+ handlers: RouteHandler[],
32
+ path?: string
33
+ ];
34
+ export type Route = <RequestType = IRequest, Args extends any[] = any[], RT = IttyRouterType>(path: string, ...handlers: RouteHandler<RequestType, Args>[]) => RT;
35
+ export type UniversalRoute<RequestType = IRequest, Args extends any[] = any[]> = (path: string, ...handlers: RouteHandler<RequestType, Args>[]) => IttyRouterType<UniversalRoute<RequestType, Args>, Args>;
36
+ export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
37
+ export type CustomRoutes<R = Route> = {
38
+ [key: string]: R;
39
+ };
40
+ export type IttyRouterType<R = Route, Args extends any[] = any[]> = {
41
+ __proto__: IttyRouterType<R>;
42
+ routes: RouteEntry[];
43
+ fetch: <A extends any[] = Args>(request: RequestLike, ...extra: Equal<R, Args> extends true ? A : Args) => Promise<any>;
44
+ all: R;
45
+ delete: R;
46
+ get: R;
47
+ head: R;
48
+ options: R;
49
+ patch: R;
50
+ post: R;
51
+ put: R;
52
+ } & CustomRoutes<R> & Record<string, any>;
53
+ export declare const IttyRouter: <RequestType = IRequest, Args extends any[] = any[], RouteType = Equal<RequestType, IRequest> extends true ? Route : UniversalRoute<RequestType, Args>>({ base, routes, ...other }?: IttyRouterOptions) => IttyRouterType<RouteType, Args>;
package/IttyRouter.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";exports.IttyRouter=({base:e="",routes:r=[],...t}={})=>({__proto__:new Proxy({},{get:(t,o,a,p)=>(t,...l)=>r.push([o.toUpperCase?.(),RegExp(`^${(p=(e+t).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),l,p])&&a}),routes:r,...t,async fetch(e,...t){let o,a,p=new URL(e.url),l=e.query={__proto__:null};for(let[e,r]of p.searchParams)l[e]=l[e]?[].concat(l[e],r):r;for(let[l,s,c,u]of r)if((l==e.method||"ALL"==l)&&(a=p.pathname.match(s))){e.params=a.groups||{},e.route=u;for(let r of c)if(null!=(o=await r(e.proxy??e,...t)))return o}}});
2
+ //# sourceMappingURL=IttyRouter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IttyRouter.js","sources":["../src/src/IttyRouter.ts"],"sourcesContent":[null],"names":["base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","method","regex","pathname","params","groups","handler","proxy"],"mappings":"gCA0E0B,EAItBA,OAAO,GAAIC,SAAS,MAAOC,GAA6B,CAAE,KAE5D,CACEC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAsBC,IAErD,CAACC,KAAkBC,IACjBV,EAAOW,KACL,CACEL,EAAKM,gBACLC,OAAO,KAAKL,GAAQT,EAAOU,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAEvBJ,EACAF,KAECD,IAEXP,YACGC,EACHc,YAAaC,KAAyBC,GACpC,IAAIC,EACAC,EACAC,EAAM,IAAIC,IAAIL,EAAQI,KACtBE,EAA6BN,EAAQM,MAAQ,CAAEpB,UAAW,MAG9D,IAAK,IAAKqB,EAAGC,KAAMJ,EAAIK,aACrBH,EAAMC,GAAKD,EAAMC,GAAM,GAAgBG,OAAOJ,EAAMC,GAAIC,GAAKA,EAG/D,IAAK,IAAKG,EAAQC,EAAOlB,EAAUF,KAASR,EAC1C,IAAK2B,GAAUX,EAAQW,QAAoB,OAAVA,KAAqBR,EAAQC,EAAIS,SAASV,MAAMS,IAAS,CACxFZ,EAAQc,OAASX,EAAMY,QAAU,CAAA,EACjCf,EAAQP,MAAQD,EAChB,IAAK,IAAIwB,KAAWtB,EAClB,GAAqE,OAAhEQ,QAAiBc,EAAQhB,EAAQiB,OAASjB,KAAYC,IAAgB,OAAOC,CACrF,CACJ"}
package/IttyRouter.mjs ADDED
@@ -0,0 +1,2 @@
1
+ const e=({base:e="",routes:r=[],...o}={})=>({__proto__:new Proxy({},{get:(o,t,a,p)=>(o,...l)=>r.push([t.toUpperCase?.(),RegExp(`^${(p=(e+o).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),l,p])&&a}),routes:r,...o,async fetch(e,...o){let t,a,p=new URL(e.url),l=e.query={__proto__:null};for(let[e,r]of p.searchParams)l[e]=l[e]?[].concat(l[e],r):r;for(let[l,c,s,u]of r)if((l==e.method||"ALL"==l)&&(a=p.pathname.match(c))){e.params=a.groups||{},e.route=u;for(let r of s)if(null!=(t=await r(e.proxy??e,...o)))return t}}});export{e as IttyRouter};
2
+ //# sourceMappingURL=IttyRouter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IttyRouter.mjs","sources":["../src/src/IttyRouter.ts"],"sourcesContent":[null],"names":["IttyRouter","base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","method","regex","pathname","params","groups","handler","proxy"],"mappings":"AA0Ea,MAAAA,EAAa,EAItBC,OAAO,GAAIC,SAAS,MAAOC,GAA6B,CAAE,KAE5D,CACEC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAsBC,IAErD,CAACC,KAAkBC,IACjBV,EAAOW,KACL,CACEL,EAAKM,gBACLC,OAAO,KAAKL,GAAQT,EAAOU,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAEvBJ,EACAF,KAECD,IAEXP,YACGC,EACHc,YAAaC,KAAyBC,GACpC,IAAIC,EACAC,EACAC,EAAM,IAAIC,IAAIL,EAAQI,KACtBE,EAA6BN,EAAQM,MAAQ,CAAEpB,UAAW,MAG9D,IAAK,IAAKqB,EAAGC,KAAMJ,EAAIK,aACrBH,EAAMC,GAAKD,EAAMC,GAAM,GAAgBG,OAAOJ,EAAMC,GAAIC,GAAKA,EAG/D,IAAK,IAAKG,EAAQC,EAAOlB,EAAUF,KAASR,EAC1C,IAAK2B,GAAUX,EAAQW,QAAoB,OAAVA,KAAqBR,EAAQC,EAAIS,SAASV,MAAMS,IAAS,CACxFZ,EAAQc,OAASX,EAAMY,QAAU,CAAA,EACjCf,EAAQP,MAAQD,EAChB,IAAK,IAAIwB,KAAWtB,EAClB,GAAqE,OAAhEQ,QAAiBc,EAAQhB,EAAQiB,OAASjB,KAAYC,IAAgB,OAAOC,CACrF,CACJ"}
package/README.md CHANGED
@@ -1,12 +1,10 @@
1
1
  <p align="center">
2
2
  <a href="https://itty.dev/itty-router">
3
- <img src="https://github.com/kwhitley/itty-router/assets/865416/15a90b05-344d-4135-a3f8-52a4d117250e" alt="Itty Router" />
3
+ <img src="https://github.com/kwhitley/itty-router/assets/865416/319e4148-0a2d-4396-b18b-9e1cbb8e27b6" alt="Itty Router" />
4
4
  </a>
5
+ <br /><br />
5
6
  <p>
6
7
 
7
- <h2 align="center"><a href="https://itty.dev/itty-router">v4.x Documentation @ itty.dev</a>
8
- <br /></h2>
9
-
10
8
  <p align="center">
11
9
  <a href="https://npmjs.com/package/itty-router" target="_blank">
12
10
  <img src="https://img.shields.io/npm/v/itty-router.svg?style=flat-square" alt="npm version" />
@@ -26,20 +24,17 @@
26
24
  <a href="https://github.com/kwhitley/itty-router/issues" target="_blank">
27
25
  <img src="https://img.shields.io/github/issues/kwhitley/itty-router?style=flat-square" alt="open issues" />
28
26
  </a>
29
- <a href="" target="_blank">
30
- <img src="" alt="" />
31
- </a>
32
- </p>
33
27
 
34
- <p align="center">
28
+ <br />
29
+
35
30
  <a href="https://discord.gg/53vyrZAu9u" target="_blank">
36
31
  <img src="https://img.shields.io/discord/832353585802903572?label=Discord&logo=Discord&style=flat-square&logoColor=fff" alt="join us on discord" />
37
32
  </a>
38
33
  <a href="https://github.com/kwhitley/itty-router" target="_blank">
39
34
  <img src="https://img.shields.io/github/stars/kwhitley/itty-router?style=social" alt="repo stars" />
40
35
  </a>
41
- <a href="https://www.twitter.com/kevinrwhitley" target="_blank">
42
- <img src="https://img.shields.io/twitter/follow/kevinrwhitley.svg?style=social&label=Follow" alt="follow the author" />
36
+ <a href="https://www.twitter.com/ittydev" target="_blank">
37
+ <img src="https://img.shields.io/twitter/follow/ittydev.svg?style=social&label=Follow" alt="follow ittydev" />
43
38
  </a>
44
39
  <a href="" target="_blank">
45
40
  <img src="" alt="" />
@@ -48,181 +43,41 @@
48
43
 
49
44
  ---
50
45
 
51
- Itty is arguably the smallest (~460 bytes) feature-rich JavaScript router available, while enabling dead-simple API code.
52
-
53
- Designed originally for [Cloudflare Workers](https://itty.dev/itty-router/runtimes#Cloudflare%20Workers), itty can be used in browsers, service workers, edge functions, or runtimes like [Node](https://itty.dev/itty-router/runtimes#Node), [Bun](https://itty.dev/itty-router/runtimes#Bun), etc.!
46
+ An ultra-tiny API microrouter, for use when [size matters](https://github.com/TigersWay/cloudflare-playground) (e.g. [Cloudflare Workers](https://developers.cloudflare.com/workers/)).
54
47
 
55
48
  ## Features
56
49
 
57
- - Tiny. [~460](https://deno.bundlejs.com/?q=itty-router/Router) bytes for the Router itself, or [~1.6k](https://bundlephobia.com/package/itty-router) for the entire library (>100x smaller than [express.js](https://www.npmjs.com/package/express)).
58
- - [Fully-Typed](https://itty.dev/itty-router/typescript).
59
- - Shorter, simpler route code than most modern routers.
60
- - Dead-simple [middleware](https://itty.dev/itty-router/middleware) - use ours or write your own.
61
- - Supports [nested APIs](https://itty.dev/itty-router/nesting).
62
- - Platform agnostic (based on [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)) - use it [anywhere, in any environment](https://itty.dev/itty-router/runtimes).
63
- - Parses [route params](https://itty.dev/itty-router/route-patterns#params),
64
- [optional params](https://itty.dev/itty-router/route-patterns#optional),
65
- [wildcards](https://itty.dev/itty-router/route-patterns#wildcards),
66
- [greedy params](https://itty.dev/itty-router/route-patterns#greedy),
67
- [file formats](https://itty.dev/itty-router/route-patterns#file-formats)
68
- and [query strings](https://itty.dev/itty-router/route-patterns#query).
69
- - Extremely extendable/flexible. We leave you in complete control.
70
-
71
- ## [Full Documentation](https://itty.dev/itty-router)
50
+ - Tiny. We have routers from [~450 bytes](https://itty.dev/itty-router/routers/ittyrouter) to a [~1kB bytes](https://itty.dev/itty-router/routers/autorouter) batteries-included version. For comparison, [express.js](https://www.npmjs.com/package/express) is over 200x as large.
51
+ - Web Standards - Use it [anywhere, in any environment](https://itty.dev/itty-router/runtimes).
52
+ - No assumptions. Return anything you like, pass in any arguments you like.
53
+ - Future-proof. HTTP methods not-yet-invented already work with it.
54
+ - [Route-parsing](https://itty.dev/itty-router/route-patterns) & [query parsing](https://itty.dev/itty-router/route-patterns#query).
55
+ - [Middleware](https://itty.dev/itty-router/middleware) - use ours or write your own.
56
+ - [Nesting](https://itty.dev/itty-router/nesting).
72
57
 
73
- Complete API documentation is available at [itty.dev/itty-router](https://itty.dev/itty-router), or join our [Discord](https://discord.gg/53vyrZAu9u) channel to chat with community members for quick help!
74
-
75
- ## Installation
76
-
77
- ```
78
- npm install itty-router
79
- ```
80
-
81
- ## Example
58
+ ## Example (Cloudflare Worker or Bun)
82
59
 
83
60
  ```js
84
- import {
85
- error, // creates error responses
86
- json, // creates JSON responses
87
- Router, // the ~440 byte router itself
88
- withParams, // middleware: puts params directly on the Request
89
- } from 'itty-router'
90
- import { todos } from './external/todos'
91
-
92
- // create a new Router
93
- const router = Router()
94
-
95
- router
96
- // add some middleware upstream on all routes
97
- .all('*', withParams)
98
-
99
- // GET list of todos
100
- .get('/todos', () => todos)
101
-
102
- // GET single todo, by ID
103
- .get(
104
- '/todos/:id',
105
- ({ id }) => todos.getById(id) || error(404, 'That todo was not found')
106
- )
107
-
108
- // 404 for everything else
109
- .all('*', () => error(404))
110
-
111
- // Example: Cloudflare Worker module syntax
112
- export default {
113
- fetch: (request, ...args) =>
114
- router
115
- .handle(request, ...args)
116
- .then(json) // send as JSON
117
- .catch(error), // catch errors
118
- }
119
- ```
120
-
121
- # What's different about itty? <a name="a-different-kind-of-router"></a>
122
- Itty does a few things very differently from other routers. This allows itty route code to be shorter and more intuitive than most!
123
-
124
- ### 1. Simpler handler/middleware flow.
125
- In itty, you simply return (anything) to exit the flow. If any handler ever returns a thing, that's what the `router.handle` returns. If it doesn't, it's considered middleware, and the next handler is called.
61
+ import { AutoRouter } from 'itty-router' // ~1kB
126
62
 
127
- That's it!
63
+ export default AutoRouter()
64
+ .get('/hello/:name', ({ name }) => `Hello, ${name}!`)
65
+ .get('/json', () => [1,2,3])
66
+ .get('/promises', () => Promise.resolve('foo'))
128
67
 
129
- ```ts
130
- // not middleware: any handler that returns (anything at all)
131
- (request) => [1, 4, 5, 1]
132
-
133
- // middleware: simply doesn't return
134
- const withUser = (request) => {
135
- request.user = 'Halsey'
136
- }
137
-
138
- // a middleware that *might* return
139
- const onlyHalsey = (request) => {
140
- if (request.user !== 'Halsey') {
141
- return error(403, 'Only Halsey is allowed to see this!')
142
- }
143
- }
144
-
145
- // uses middleware, then returns something
146
- route.get('/secure', withUser, onlyHalsey,
147
- ({ user }) => `Hey, ${user} - welcome back!`
148
- )
68
+ // that's it ^-^
149
69
  ```
150
70
 
151
- ### 2. You don't have to build a response in each route handler.
152
- We've been stuck in this pattern for over a decade. Almost every router still expects you to build and return a [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response)... in every single route.
153
-
154
- We think you should be able to do that once, at the end. In most modern APIs for instance, we're serving JSON in the majority of our routes. So why handle that more than once?
155
- ```ts
156
- router
157
- // we can still do it the manual way
158
- .get('/traditional', (request) => json([1, 2, 3]))
159
-
160
- // or defer to later
161
- .get('/easy-mode', (request) => [1, 2, 3])
162
-
163
- // later, when handling a request
164
- router
165
- .handle(request)
166
- .then(json) // we can turn any non-Response into valid JSON.
167
- ```
168
-
169
- ### 3. It's all Promises.
170
- itty `await`s every handler, looking for a return value. If it gets one, it breaks the flow and returns the value. If it doesn't, it continues processing handlers/routes until it does. This means that every handler can either be synchronous or async - it's all the same.
171
-
172
- When paired with the fact that we can simply return raw data and transform it later, this is AWESOME for working with async APIs, database layers, etc. We don't need to transform anything at the route, we can simply return the Promise (to data) itself!
71
+ # [Full Documentation](https://itty.dev/itty-router) @ [itty.dev](https://itty.dev)
173
72
 
174
- Check this out:
175
- ```ts
176
- import { myDatabase } from './somewhere'
177
-
178
- router
179
- // assumes getItems() returns a Promise to some data
180
- .get('/items', () => myDatabase.getItems())
181
-
182
- // later, when handling a request
183
- router
184
- .handle(request)
185
- .then(json) // we can turn any non-Response into valid JSON.
186
- ```
187
-
188
- ### 4. Only one required argument. The rest is up to you.
189
- itty only requires one argument - a Request-like object with the following shape: `{ url, method }` (usually a native [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request)). Because itty is not opinionated about [Response](https://developer.mozilla.org/en-US/docs/Web/API/Response) creation, there is not "response" argument built in. Every other argument you pass to `route.handle` is given to each handler, in the same order.
190
-
191
- > ### This makes itty one of the most platform-agnostic routers, *period*, as it's able to match up to any platform's signature.
192
-
193
- Here's an example using [Cloudflare Worker](https://workers.cloudflare.com/) arguments:
194
- ```ts
195
- router
196
- .get('/my-route', (request, environment, context) => {
197
- // we can access anything here that was passed to `router.handle`.
198
- })
199
-
200
- // Cloudflare gives us 3 arguments: request, environment, and context.
201
- // Passing them to `route.handle` gives every route handler (above) access to each.
202
- export default {
203
- fetch: (request, env, ctx) => router
204
- .handle(request, env, ctx)
205
- .then(json)
206
- .catch(error)
207
- }
208
- ```
73
+ Complete API documentation is available at [itty.dev/itty-router](https://itty.dev/itty-router), or join our [Discord](https://discord.gg/53vyrZAu9u) channel to chat with community members for quick help!
209
74
 
210
75
  ## Join the Discussion!
211
76
 
212
- Have a question? Suggestion? Complaint? Want to send a gift basket?
77
+ Have a question? Suggestion? Idea? Complaint? Want to send a gift basket?
213
78
 
214
79
  Join us on [Discord](https://discord.gg/53vyrZAu9u)!
215
80
 
216
- ## Testing and Contributing
217
-
218
- 1. Fork repo
219
- 1. Install dev dependencies via `yarn`
220
- 1. Start test runner/dev mode `yarn dev`
221
- 1. Add your code and tests if needed - do NOT remove/alter existing tests
222
- 1. Commit files
223
- 1. Submit PR (and fill out the template)
224
- 1. I'll add you to the credits! :)
225
-
226
81
  ## Special Thanks: Contributors
227
82
 
228
83
  These folks are the real heroes, making open source the powerhouse that it is! Help out and get your name added to this list! <3
@@ -244,6 +99,7 @@ These folks are the real heroes, making open source the powerhouse that it is! H
244
99
  - [@technoyes](https://github.com/technoyes) - three kind-of-a-big-deal errors fixed. Imagine the look on my face... thanks man!! :)
245
100
  - [@roojay520](https://github.com/roojay520) - TS interface fixes
246
101
  - [@jahands](https://github.com/jahands) - v4.x TS fixes
102
+ - and many, many others
247
103
 
248
104
  #### Documentation
249
105
 
package/Router.d.ts CHANGED
@@ -1,55 +1,14 @@
1
- export type GenericTraps = {
2
- [key: string]: any;
3
- };
4
- export type RequestLike = {
5
- method: string;
6
- url: string;
7
- } & GenericTraps;
8
- export type IRequestStrict = {
9
- method: string;
10
- url: string;
11
- route: string;
12
- params: {
13
- [key: string]: string;
14
- };
15
- query: {
16
- [key: string]: string | string[] | undefined;
17
- };
18
- proxy?: any;
19
- } & Request;
20
- export type IRequest = IRequestStrict & GenericTraps;
21
- export type RouterOptions = {
22
- base?: string;
23
- routes?: RouteEntry[];
24
- } & Record<string, any>;
25
- export type RouteHandler<I = IRequest, A extends any[] = any[]> = {
26
- (request: I, ...args: A): any;
27
- };
28
- export type RouteEntry = [
29
- httpMethod: string,
30
- match: RegExp,
31
- handlers: RouteHandler[],
32
- path?: string
33
- ];
34
- export type Route = <RequestType = IRequest, Args extends any[] = any[], RT = RouterType>(path: string, ...handlers: RouteHandler<RequestType, Args>[]) => RT;
35
- export type UniversalRoute<RequestType = IRequest, Args extends any[] = any[]> = (path: string, ...handlers: RouteHandler<RequestType, Args>[]) => RouterType<UniversalRoute<RequestType, Args>, Args>;
36
- type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
37
- export type CustomRoutes<R = Route> = {
38
- [key: string]: R;
39
- };
1
+ import { Equal, IRequest, IttyRouterOptions, IttyRouterType, Route, RouteHandler, UniversalRoute } from './IttyRouter';
2
+ export type ResponseHandler<ResponseType = any, RequestType = IRequest, Args extends any[] = any[]> = (response: ResponseType, request: RequestType, ...args: Args) => any;
3
+ export type ErrorHandler<ErrorType = Error, RequestType = IRequest, Args extends any[] = any[]> = (response: ErrorType, request: RequestType, ...args: Args) => any;
40
4
  export type RouterType<R = Route, Args extends any[] = any[]> = {
41
- __proto__: RouterType<R>;
42
- routes: RouteEntry[];
43
- fetch: <A extends any[] = Args>(request: RequestLike, ...extra: Equal<R, Args> extends true ? A : Args) => Promise<any>;
44
- handle: <A extends any[] = Args>(request: RequestLike, ...extra: Equal<R, Args> extends true ? A : Args) => Promise<any>;
45
- all: R;
46
- delete: R;
47
- get: R;
48
- head: R;
49
- options: R;
50
- patch: R;
51
- post: R;
52
- put: R;
53
- } & CustomRoutes<R> & Record<string, any>;
5
+ before?: RouteHandler[];
6
+ catch?: ErrorHandler;
7
+ finally?: ResponseHandler[];
8
+ } & IttyRouterType<R, Args>;
9
+ export type RouterOptions = {
10
+ before?: RouteHandler[];
11
+ catch?: ErrorHandler;
12
+ finally?: ResponseHandler[];
13
+ } & IttyRouterOptions;
54
14
  export declare const Router: <RequestType = IRequest, Args extends any[] = any[], RouteType = Equal<RequestType, IRequest> extends true ? Route : UniversalRoute<RequestType, Args>>({ base, routes, ...other }?: RouterOptions) => RouterType<RouteType, Args>;
55
- export {};
package/Router.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";exports.Router=({base:e="",routes:r=[],...t}={})=>({__proto__:new Proxy({},{get:(t,o,a,p)=>"handle"==o?a.fetch:(t,...l)=>r.push([o.toUpperCase?.(),RegExp(`^${(p=(e+t).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),l,p])&&a}),routes:r,...t,async fetch(e,...t){let o,a,p=new URL(e.url),l=e.query={__proto__:null};for(let[e,r]of p.searchParams)l[e]=l[e]?[].concat(l[e],r):r;for(let[l,c,s,u]of r)if((l==e.method||"ALL"==l)&&(a=p.pathname.match(c))){e.params=a.groups||{},e.route=u;for(let r of s)if(null!=(o=await r(e.proxy??e,...t)))return o}}});
1
+ "use strict";exports.Router=({base:e="",routes:r=[],...t}={})=>({__proto__:new Proxy({},{get:(t,a,o,c)=>"handle"==a?o.fetch:(t,...l)=>r.push([a.toUpperCase?.(),RegExp(`^${(c=(e+t).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),l,c])&&o}),routes:r,...t,async fetch(e,...a){let o,c,l=new URL(e.url),p=e.query={__proto__:null};for(let[e,r]of l.searchParams)p[e]=p[e]?[].concat(p[e],r):r;e:try{for(let r of t.before||[])if(null!=(o=await r(e.proxy??e,...a)))break e;r:for(let[t,p,f,h]of r)if((t==e.method||"ALL"==t)&&(c=l.pathname.match(p))){e.params=c.groups||{},e.route=h;for(let r of f)if(null!=(o=await r(e.proxy??e,...a)))break r}}catch(r){if(!t.catch)throw r;o=await t.catch(r,e.proxy??e,...a)}try{for(let r of t.finally||[])o=await r(o,e.proxy??e,...a)??o}catch(r){if(!t.catch)throw r;o=await t.catch(r,e.proxy??e,...a)}return o}});
2
2
  //# sourceMappingURL=Router.js.map
package/Router.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Router.js","sources":["../src/src/Router.ts"],"sourcesContent":[null],"names":["base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","method","regex","pathname","params","groups","handler","proxy"],"mappings":"4BA2EsB,EAIlBA,OAAO,GAAIC,SAAS,MAAOC,GAAyB,CAAE,KAExD,CACEC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAsBC,IAC7C,UAARF,EAAmBC,EAASE,MAE5B,CAACC,KAAkBC,IACjBX,EAAOY,KACL,CACEN,EAAKO,gBACLC,OAAO,KAAKN,GAAQT,EAAOW,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAEvBJ,EACAH,KAECD,IAEXP,YACGC,EACHe,YAAaC,KAAyBC,GACpC,IAAIC,EAAUC,EAAOC,EAAM,IAAIC,IAAIL,EAAQI,KAAME,EAA6BN,EAAQM,MAAQ,CAAErB,UAAW,MAG3G,IAAK,IAAKsB,EAAGC,KAAMJ,EAAIK,aACrBH,EAAMC,GAAKD,EAAMC,GAAM,GAAgBG,OAAOJ,EAAMC,GAAIC,GAAKA,EAG/D,IAAK,IAAKG,EAAQC,EAAOlB,EAAUH,KAASR,EAC1C,IAAK4B,GAAUX,EAAQW,QAAoB,OAAVA,KAAqBR,EAAQC,EAAIS,SAASV,MAAMS,IAAS,CACxFZ,EAAQc,OAASX,EAAMY,QAAU,CAAA,EACjCf,EAAQP,MAAQF,EAChB,IAAK,IAAIyB,KAAWtB,EAClB,GAAqE,OAAhEQ,QAAiBc,EAAQhB,EAAQiB,OAASjB,KAAYC,IAAgB,OAAOC,CACrF,CACJ"}
1
+ {"version":3,"file":"Router.js","sources":["../src/src/Router.ts"],"sourcesContent":[null],"names":["base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","t","handler","before","proxy","outer","method","regex","pathname","params","groups","err","catch","finally"],"mappings":"4BA6BsB,EAIlBA,OAAO,GAAIC,SAAS,MAAOC,GAAyB,CAAE,KAExD,CACEC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAsBC,IAC7C,UAARF,EAAmBC,EAASE,MAE1B,CAACC,KAAkBC,IACjBX,EAAOY,KACL,CACEN,EAAKO,gBACLC,OAAO,KAAKN,GAAQT,EAAOW,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAEvBJ,EACAH,KAECD,IAEbP,YACGC,EACHe,YAAaC,KAAyBC,GACpC,IAAIC,EACAC,EACAC,EAAM,IAAIC,IAAIL,EAAQI,KACtBE,EAA6BN,EAAQM,MAAQ,CAAErB,UAAW,MAG9D,IAAK,IAAKsB,EAAGC,KAAMJ,EAAIK,aACrBH,EAAMC,GAAKD,EAAMC,GAAM,GAAgBG,OAAOJ,EAAMC,GAAIC,GAAKA,EAE/DG,EAAG,IACD,IAAK,IAAIC,KAAW5B,EAAM6B,QAAU,GAClC,GAAqE,OAAhEX,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMU,EAGnFI,EAAO,IAAK,IAAKC,EAAQC,EAAOvB,EAAUH,KAASR,EACjD,IAAKiC,GAAUhB,EAAQgB,QAAoB,OAAVA,KAAqBb,EAAQC,EAAIc,SAASf,MAAMc,IAAS,CACxFjB,EAAQmB,OAAShB,EAAMiB,QAAU,CAAA,EACjCpB,EAAQP,MAAQF,EAEhB,IAAK,IAAIqB,KAAWlB,EAClB,GAAqE,OAAhEQ,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMc,CACpF,CACJ,CAAC,MAAOM,GACP,IAAKrC,EAAMsC,MAAO,MAAMD,EACxBnB,QAAiBlB,EAAMsC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAChE,CAED,IACE,IAAK,IAAIW,KAAW5B,EAAMuC,SAAW,GACnCrB,QAAiBU,EAAQV,EAAUF,EAAQc,OAASd,KAAYC,IAASC,CAC5E,CAAC,MAAMmB,GACN,IAAKrC,EAAMsC,MAAO,MAAMD,EACtBnB,QAAiBlB,EAAMsC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAClE,CAED,OAAOC,CACR"}
package/Router.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=({base:e="",routes:r=[],...o}={})=>({__proto__:new Proxy({},{get:(o,t,a,p)=>"handle"==t?a.fetch:(o,...l)=>r.push([t.toUpperCase?.(),RegExp(`^${(p=(e+o).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),l,p])&&a}),routes:r,...o,async fetch(e,...o){let t,a,p=new URL(e.url),l=e.query={__proto__:null};for(let[e,r]of p.searchParams)l[e]=l[e]?[].concat(l[e],r):r;for(let[l,c,s,f]of r)if((l==e.method||"ALL"==l)&&(a=p.pathname.match(c))){e.params=a.groups||{},e.route=f;for(let r of s)if(null!=(t=await r(e.proxy??e,...o)))return t}}});export{e as Router};
1
+ const e=({base:e="",routes:r=[],...a}={})=>({__proto__:new Proxy({},{get:(a,t,o,c)=>"handle"==t?o.fetch:(a,...l)=>r.push([t.toUpperCase?.(),RegExp(`^${(c=(e+a).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),l,c])&&o}),routes:r,...a,async fetch(e,...t){let o,c,l=new URL(e.url),p=e.query={__proto__:null};for(let[e,r]of l.searchParams)p[e]=p[e]?[].concat(p[e],r):r;e:try{for(let r of a.before||[])if(null!=(o=await r(e.proxy??e,...t)))break e;r:for(let[a,p,f,h]of r)if((a==e.method||"ALL"==a)&&(c=l.pathname.match(p))){e.params=c.groups||{},e.route=h;for(let r of f)if(null!=(o=await r(e.proxy??e,...t)))break r}}catch(r){if(!a.catch)throw r;o=await a.catch(r,e.proxy??e,...t)}try{for(let r of a.finally||[])o=await r(o,e.proxy??e,...t)??o}catch(r){if(!a.catch)throw r;o=await a.catch(r,e.proxy??e,...t)}return o}});export{e as Router};
2
2
  //# sourceMappingURL=Router.mjs.map
package/Router.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Router.mjs","sources":["../src/src/Router.ts"],"sourcesContent":[null],"names":["Router","base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","method","regex","pathname","params","groups","handler","proxy"],"mappings":"AA2Ea,MAAAA,EAAS,EAIlBC,OAAO,GAAIC,SAAS,MAAOC,GAAyB,CAAE,KAExD,CACEC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAsBC,IAC7C,UAARF,EAAmBC,EAASE,MAE5B,CAACC,KAAkBC,IACjBX,EAAOY,KACL,CACEN,EAAKO,gBACLC,OAAO,KAAKN,GAAQT,EAAOW,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAEvBJ,EACAH,KAECD,IAEXP,YACGC,EACHe,YAAaC,KAAyBC,GACpC,IAAIC,EAAUC,EAAOC,EAAM,IAAIC,IAAIL,EAAQI,KAAME,EAA6BN,EAAQM,MAAQ,CAAErB,UAAW,MAG3G,IAAK,IAAKsB,EAAGC,KAAMJ,EAAIK,aACrBH,EAAMC,GAAKD,EAAMC,GAAM,GAAgBG,OAAOJ,EAAMC,GAAIC,GAAKA,EAG/D,IAAK,IAAKG,EAAQC,EAAOlB,EAAUH,KAASR,EAC1C,IAAK4B,GAAUX,EAAQW,QAAoB,OAAVA,KAAqBR,EAAQC,EAAIS,SAASV,MAAMS,IAAS,CACxFZ,EAAQc,OAASX,EAAMY,QAAU,CAAA,EACjCf,EAAQP,MAAQF,EAChB,IAAK,IAAIyB,KAAWtB,EAClB,GAAqE,OAAhEQ,QAAiBc,EAAQhB,EAAQiB,OAASjB,KAAYC,IAAgB,OAAOC,CACrF,CACJ"}
1
+ {"version":3,"file":"Router.mjs","sources":["../src/src/Router.ts"],"sourcesContent":[null],"names":["Router","base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","t","handler","before","proxy","outer","method","regex","pathname","params","groups","err","catch","finally"],"mappings":"AA6Ba,MAAAA,EAAS,EAIlBC,OAAO,GAAIC,SAAS,MAAOC,GAAyB,CAAE,KAExD,CACEC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAsBC,IAC7C,UAARF,EAAmBC,EAASE,MAE1B,CAACC,KAAkBC,IACjBX,EAAOY,KACL,CACEN,EAAKO,gBACLC,OAAO,KAAKN,GAAQT,EAAOW,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAEvBJ,EACAH,KAECD,IAEbP,YACGC,EACHe,YAAaC,KAAyBC,GACpC,IAAIC,EACAC,EACAC,EAAM,IAAIC,IAAIL,EAAQI,KACtBE,EAA6BN,EAAQM,MAAQ,CAAErB,UAAW,MAG9D,IAAK,IAAKsB,EAAGC,KAAMJ,EAAIK,aACrBH,EAAMC,GAAKD,EAAMC,GAAM,GAAgBG,OAAOJ,EAAMC,GAAIC,GAAKA,EAE/DG,EAAG,IACD,IAAK,IAAIC,KAAW5B,EAAM6B,QAAU,GAClC,GAAqE,OAAhEX,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMU,EAGnFI,EAAO,IAAK,IAAKC,EAAQC,EAAOvB,EAAUH,KAASR,EACjD,IAAKiC,GAAUhB,EAAQgB,QAAoB,OAAVA,KAAqBb,EAAQC,EAAIc,SAASf,MAAMc,IAAS,CACxFjB,EAAQmB,OAAShB,EAAMiB,QAAU,CAAA,EACjCpB,EAAQP,MAAQF,EAEhB,IAAK,IAAIqB,KAAWlB,EAClB,GAAqE,OAAhEQ,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMc,CACpF,CACJ,CAAC,MAAOM,GACP,IAAKrC,EAAMsC,MAAO,MAAMD,EACxBnB,QAAiBlB,EAAMsC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAChE,CAED,IACE,IAAK,IAAIW,KAAW5B,EAAMuC,SAAW,GACnCrB,QAAiBU,EAAQV,EAAUF,EAAQc,OAASd,KAAYC,IAASC,CAC5E,CAAC,MAAMmB,GACN,IAAKrC,EAAMsC,MAAO,MAAMD,EACtBnB,QAAiBlB,EAAMsC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAClE,CAED,OAAOC,CACR"}
package/createCors.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { IRequest } from './Router';
1
+ import { IRequest } from './IttyRouter';
2
2
  export type CorsOptions = {
3
3
  origins?: string[] | ((origin: string) => boolean);
4
4
  maxAge?: number;
package/createResponse.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";exports.createResponse=(e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...r}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...r});
1
+ "use strict";exports.createResponse=(e="text/plain; charset=utf-8",t)=>(s,{...n}={})=>{if(void 0===s||s instanceof Response)return s;const r=new Response(t?.(s)??s,n);return r.headers.set("content-type",e),r};
2
2
  //# sourceMappingURL=createResponse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createResponse.js","sources":["../src/src/createResponse.ts"],"sourcesContent":[null],"names":["format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries"],"mappings":"oCASE,CACEA,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC"}
1
+ {"version":3,"file":"createResponse.js","sources":["../src/src/createResponse.ts"],"sourcesContent":[null],"names":["format","transform","body","options","undefined","Response","response","headers","set"],"mappings":"oCASE,CACEA,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ"}
@@ -1,2 +1,2 @@
1
- const e=(e="text/plain; charset=utf-8",t)=>(n,{headers:s={},...o}={})=>void 0===n||"Response"===n?.constructor.name?n:new Response(t?t(n):n,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...o});export{e as createResponse};
1
+ const e=(e="text/plain; charset=utf-8",t)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const o=new Response(t?.(n)??n,s);return o.headers.set("content-type",e),o};export{e as createResponse};
2
2
  //# sourceMappingURL=createResponse.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"createResponse.mjs","sources":["../src/src/createResponse.ts"],"sourcesContent":[null],"names":["createResponse","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries"],"mappings":"AAQa,MAAAA,EACX,CACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC"}
1
+ {"version":3,"file":"createResponse.mjs","sources":["../src/src/createResponse.ts"],"sourcesContent":[null],"names":["createResponse","format","transform","body","options","undefined","Response","response","headers","set"],"mappings":"MAQcA,EACZ,CACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ"}
package/error.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=((e="text/plain; charset=utf-8",r)=>(t,{headers:s={},...n}={})=>void 0===t||"Response"===t?.constructor.name?t:new Response(r?r(t):t,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...n}))("application/json; charset=utf-8",JSON.stringify),r=e=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[e]||"Unknown Error");exports.error=(t=500,s)=>{if(t instanceof Error){const{message:e,...n}=t;t=t.status||500,s={error:e||r(t),...n}}return s={status:t,..."object"==typeof s?s:{error:s||r(t)}},e(s,{status:t})};
1
+ "use strict";const r=((r="text/plain; charset=utf-8",t)=>(e,{...n}={})=>{if(void 0===e||e instanceof Response)return e;const s=new Response(t?.(e)??e,n);return s.headers.set("content-type",r),s})("application/json; charset=utf-8",JSON.stringify),t=r=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[r]||"Unknown Error");exports.error=(e=500,n)=>{if(e instanceof Error){const{message:r,...s}=e;e=e.status||500,n={error:r||t(e),...s}}return n={status:e,..."object"==typeof n?n:{error:n||t(e)}},r(n,{status:e})};
2
2
  //# sourceMappingURL=error.js.map
package/error.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"error.js","sources":["../src/src/createResponse.ts","../src/src/json.ts","../src/src/error.ts"],"sourcesContent":[null,null,null],"names":["json","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse","JSON","stringify","getMessage","code","a","b","Error","message","err","status","error"],"mappings":"aAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAClB,kCACAC,KAAKC,WCUDC,EAAcC,IAAyB,CAC3C,IAAK,cACL,IAAK,eACL,IAAK,YACL,IAAK,YACL,IAAK,yBACJA,IAAS,+BAEyB,CAACC,EAAI,IAAKC,KAE7C,GAAID,aAAaE,MAAO,CACtB,MAAMC,QAAEA,KAAYC,GAAQJ,EAC5BA,EAAIA,EAAEK,QAAU,IAChBJ,EAAI,CACFK,MAAOH,GAAWL,EAAWE,MAC1BI,EAEN,CAOD,OALAH,EAAI,CACFI,OAAQL,KACS,iBAANC,EAAiBA,EAAI,CAAEK,MAAOL,GAAKH,EAAWE,KAGpDlB,EAAKmB,EAAG,CAAEI,OAAQL,GAAI"}
1
+ {"version":3,"file":"error.js","sources":["../src/src/createResponse.ts","../src/src/json.ts","../src/src/error.ts"],"sourcesContent":[null,null,null],"names":["json","format","transform","body","options","undefined","Response","response","headers","set","createResponse","JSON","stringify","getMessage","code","a","b","Error","message","err","status","error"],"mappings":"aAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAClB,kCACAC,KAAKC,WCUDC,EAAcC,IAAyB,CAC3C,IAAK,cACL,IAAK,eACL,IAAK,YACL,IAAK,YACL,IAAK,yBACJA,IAAS,+BAEyB,CAACC,EAAI,IAAKC,KAE7C,GAAID,aAAaE,MAAO,CACtB,MAAMC,QAAEA,KAAYC,GAAQJ,EAC5BA,EAAIA,EAAEK,QAAU,IAChBJ,EAAI,CACFK,MAAOH,GAAWL,EAAWE,MAC1BI,EAEN,CAOD,OALAH,EAAI,CACFI,OAAQL,KACS,iBAANC,EAAiBA,EAAI,CAAEK,MAAOL,GAAKH,EAAWE,KAGpDf,EAAKgB,EAAG,CAAEI,OAAQL,GAAI"}
package/error.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=((e="text/plain; charset=utf-8",r)=>(t,{headers:n={},...o}={})=>void 0===t||"Response"===t?.constructor.name?t:new Response(r?r(t):t,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...o}))("application/json; charset=utf-8",JSON.stringify),r=e=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[e]||"Unknown Error"),t=(t=500,n)=>{if(t instanceof Error){const{message:e,...o}=t;t=t.status||500,n={error:e||r(t),...o}}return n={status:t,..."object"==typeof n?n:{error:n||r(t)}},e(n,{status:t})};export{t as error};
1
+ const t=((t="text/plain; charset=utf-8",e)=>(r,{...n}={})=>{if(void 0===r||r instanceof Response)return r;const o=new Response(e?.(r)??r,n);return o.headers.set("content-type",t),o})("application/json; charset=utf-8",JSON.stringify),e=t=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[t]||"Unknown Error"),r=(r=500,n)=>{if(r instanceof Error){const{message:t,...o}=r;r=r.status||500,n={error:t||e(r),...o}}return n={status:r,..."object"==typeof n?n:{error:n||e(r)}},t(n,{status:r})};export{r as error};
2
2
  //# sourceMappingURL=error.mjs.map
package/error.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"error.mjs","sources":["../src/src/createResponse.ts","../src/src/json.ts","../src/src/error.ts"],"sourcesContent":[null,null,null],"names":["json","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse","JSON","stringify","getMessage","code","error","a","b","Error","message","err","status"],"mappings":"AAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAClB,kCACAC,KAAKC,WCUDC,EAAcC,IAAyB,CAC3C,IAAK,cACL,IAAK,eACL,IAAK,YACL,IAAK,YACL,IAAK,yBACJA,IAAS,iBAECC,EAAwB,CAACC,EAAI,IAAKC,KAE7C,GAAID,aAAaE,MAAO,CACtB,MAAMC,QAAEA,KAAYC,GAAQJ,EAC5BA,EAAIA,EAAEK,QAAU,IAChBJ,EAAI,CACFF,MAAOI,GAAWN,EAAWG,MAC1BI,EAEN,CAOD,OALAH,EAAI,CACFI,OAAQL,KACS,iBAANC,EAAiBA,EAAI,CAAEF,MAAOE,GAAKJ,EAAWG,KAGpDnB,EAAKoB,EAAG,CAAEI,OAAQL,GAAI"}
1
+ {"version":3,"file":"error.mjs","sources":["../src/src/createResponse.ts","../src/src/json.ts","../src/src/error.ts"],"sourcesContent":[null,null,null],"names":["json","format","transform","body","options","undefined","Response","response","headers","set","createResponse","JSON","stringify","getMessage","code","error","a","b","Error","message","err","status"],"mappings":"AAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAClB,kCACAC,KAAKC,WCUDC,EAAcC,IAAyB,CAC3C,IAAK,cACL,IAAK,eACL,IAAK,YACL,IAAK,YACL,IAAK,yBACJA,IAAS,iBAECC,EAAwB,CAACC,EAAI,IAAKC,KAE7C,GAAID,aAAaE,MAAO,CACtB,MAAMC,QAAEA,KAAYC,GAAQJ,EAC5BA,EAAIA,EAAEK,QAAU,IAChBJ,EAAI,CACFF,MAAOI,GAAWN,EAAWG,MAC1BI,EAEN,CAOD,OALAH,EAAI,CACFI,OAAQL,KACS,iBAANC,EAAiBA,EAAI,CAAEF,MAAOE,GAAKJ,EAAWG,KAGpDhB,EAAKiB,EAAG,CAAEI,OAAQL,GAAI"}
package/html.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=((e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...r}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...r}))("text/html");exports.html=e;
1
+ "use strict";const t=((t="text/plain; charset=utf-8",e)=>(s,{...n}={})=>{if(void 0===s||s instanceof Response)return s;const o=new Response(e?.(s)??s,n);return o.headers.set("content-type",t),o})("text/html");exports.html=t;
2
2
  //# sourceMappingURL=html.js.map
package/html.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"html.js","sources":["../src/src/createResponse.ts","../src/src/html.ts"],"sourcesContent":[null,null],"names":["html","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse"],"mappings":"aAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAAe"}
1
+ {"version":3,"file":"html.js","sources":["../src/src/createResponse.ts","../src/src/html.ts"],"sourcesContent":[null,null],"names":["html","format","transform","body","options","undefined","Response","response","headers","set","createResponse"],"mappings":"aAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAAe"}
package/html.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=((e="text/plain; charset=utf-8",t)=>(n,{headers:s={},...o}={})=>void 0===n||"Response"===n?.constructor.name?n:new Response(t?t(n):n,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...o}))("text/html");export{e as html};
1
+ const e=((e="text/plain; charset=utf-8",t)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const o=new Response(t?.(n)??n,s);return o.headers.set("content-type",e),o})("text/html");export{e as html};
2
2
  //# sourceMappingURL=html.mjs.map
package/html.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"html.mjs","sources":["../src/src/createResponse.ts","../src/src/html.ts"],"sourcesContent":[null,null],"names":["html","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse"],"mappings":"AAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAAe"}
1
+ {"version":3,"file":"html.mjs","sources":["../src/src/createResponse.ts","../src/src/html.ts"],"sourcesContent":[null,null],"names":["html","format","transform","body","options","undefined","Response","response","headers","set","createResponse"],"mappings":"AAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAAe"}
package/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
+ export * from './IttyRouter';
1
2
  export * from './Router';
3
+ export * from './AutoRouter';
2
4
  export * from './StatusError';
3
5
  export * from './createResponse';
4
6
  export * from './error';
package/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";class e extends Error{status;constructor(e=500,t){super("object"==typeof t?t.error:t),"object"==typeof t&&Object.assign(this,t),this.status=e}}const t=(e="text/plain; charset=utf-8",t)=>(o,{headers:s={},...r}={})=>void 0===o||"Response"===o?.constructor.name?o:new Response(t?t(o):o,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...r}),o=t("application/json; charset=utf-8",JSON.stringify),s=e=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[e]||"Unknown Error"),r=t("text/plain; charset=utf-8",String),n=t("text/html"),a=t("image/jpeg"),c=t("image/png"),p=t("image/webp");exports.Router=({base:e="",routes:t=[],...o}={})=>({__proto__:new Proxy({},{get:(o,s,r,n)=>"handle"==s?r.fetch:(o,...a)=>t.push([s.toUpperCase?.(),RegExp(`^${(n=(e+o).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),a,n])&&r}),routes:t,...o,async fetch(e,...o){let s,r,n=new URL(e.url),a=e.query={__proto__:null};for(let[e,t]of n.searchParams)a[e]=a[e]?[].concat(a[e],t):t;for(let[a,c,p,i]of t)if((a==e.method||"ALL"==a)&&(r=n.pathname.match(c))){e.params=r.groups||{},e.route=i;for(let t of p)if(null!=(s=await t(e.proxy??e,...o)))return s}}}),exports.StatusError=e,exports.createCors=(e={})=>{const{origins:t=["*"],maxAge:o,methods:s=["GET"],headers:r={}}=e;let n;const a="function"==typeof t?t:e=>t.includes(e)||t.includes("*"),c={"content-type":"application/json","Access-Control-Allow-Methods":s.join(", "),...r};o&&(c["Access-Control-Max-Age"]=o);return{corsify:e=>{if(!e)throw new Error("No fetch handler responded and no upstream to proxy to specified.");const{headers:t,status:o,body:s}=e;return[101,301,302,308].includes(o)||t.get("access-control-allow-origin")?e:new Response(s,{status:o,headers:{...Object.fromEntries(t),...c,...n,"content-type":t.get("content-type")}})},preflight:e=>{const t=[...new Set(["OPTIONS",...s])],o=e.headers.get("origin")||"";if(n=a(o)&&{"Access-Control-Allow-Origin":o},"OPTIONS"===e.method){const o={...c,"Access-Control-Allow-Methods":t.join(", "),"Access-Control-Allow-Headers":e.headers.get("Access-Control-Request-Headers"),...n};return new Response(null,{headers:e.headers.get("Origin")&&e.headers.get("Access-Control-Request-Method")&&e.headers.get("Access-Control-Request-Headers")?o:{Allow:t.join(", ")}})}}}},exports.createResponse=t,exports.error=(e=500,t)=>{if(e instanceof Error){const{message:o,...r}=e;e=e.status||500,t={error:o||s(e),...r}}return t={status:e,..."object"==typeof t?t:{error:t||s(e)}},o(t,{status:e})},exports.html=n,exports.jpeg=a,exports.json=o,exports.png=c,exports.status=(e,t)=>new Response(null,{...t,status:e}),exports.text=r,exports.webp=p,exports.withContent=async e=>{e.content=e.body?await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text())):void 0},exports.withCookies=e=>{e.cookies=(e.headers.get("Cookie")||"").split(/;\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,o])=>o?(e[t]=o,e):e),{})},exports.withParams=e=>{e.proxy=new Proxy(e.proxy||e,{get:(t,o)=>void 0!==t[o]?t[o].bind?.(e)||t[o]:t?.params?.[o]})};
1
+ "use strict";const e=({base:e="",routes:t=[],...o}={})=>({__proto__:new Proxy({},{get:(o,r,s,a)=>"handle"==r?s.fetch:(o,...n)=>t.push([r.toUpperCase?.(),RegExp(`^${(a=(e+o).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),n,a])&&s}),routes:t,...o,async fetch(e,...r){let s,a,n=new URL(e.url),c=e.query={__proto__:null};for(let[e,t]of n.searchParams)c[e]=c[e]?[].concat(c[e],t):t;e:try{for(let t of o.before||[])if(null!=(s=await t(e.proxy??e,...r)))break e;t:for(let[o,c,p,l]of t)if((o==e.method||"ALL"==o)&&(a=n.pathname.match(c))){e.params=a.groups||{},e.route=l;for(let t of p)if(null!=(s=await t(e.proxy??e,...r)))break t}}catch(t){if(!o.catch)throw t;s=await o.catch(t,e.proxy??e,...r)}try{for(let t of o.finally||[])s=await t(s,e.proxy??e,...r)??s}catch(t){if(!o.catch)throw t;s=await o.catch(t,e.proxy??e,...r)}return s}}),t=(e="text/plain; charset=utf-8",t)=>(o,{...r}={})=>{if(void 0===o||o instanceof Response)return o;const s=new Response(t?.(o)??o,r);return s.headers.set("content-type",e),s},o=t("application/json; charset=utf-8",JSON.stringify),r=e=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[e]||"Unknown Error"),s=(e=500,t)=>{if(e instanceof Error){const{message:o,...s}=e;e=e.status||500,t={error:o||r(e),...s}}return t={status:e,..."object"==typeof t?t:{error:t||r(e)}},o(t,{status:e})},a=e=>{e.proxy=new Proxy(e.proxy||e,{get:(t,o)=>void 0!==t[o]?t[o].bind?.(e)||t[o]:t?.params?.[o]})};class n extends Error{status;constructor(e=500,t){super("object"==typeof t?t.error:t),"object"==typeof t&&Object.assign(this,t),this.status=e}}const c=t("text/plain; charset=utf-8",String),p=t("text/html"),l=t("image/jpeg"),i=t("image/png"),u=t("image/webp");exports.AutoRouter=({format:t=o,missing:r=(()=>s(404)),finally:n=[],before:c=[],...p}={})=>e({before:[a,...c],catch:s,finally:[(e,...t)=>e??r(e,...t),t,...n],...p}),exports.IttyRouter=({base:e="",routes:t=[],...o}={})=>({__proto__:new Proxy({},{get:(o,r,s,a)=>(o,...n)=>t.push([r.toUpperCase?.(),RegExp(`^${(a=(e+o).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),n,a])&&s}),routes:t,...o,async fetch(e,...o){let r,s,a=new URL(e.url),n=e.query={__proto__:null};for(let[e,t]of a.searchParams)n[e]=n[e]?[].concat(n[e],t):t;for(let[n,c,p,l]of t)if((n==e.method||"ALL"==n)&&(s=a.pathname.match(c))){e.params=s.groups||{},e.route=l;for(let t of p)if(null!=(r=await t(e.proxy??e,...o)))return r}}}),exports.Router=e,exports.StatusError=n,exports.createCors=(e={})=>{const{origins:t=["*"],maxAge:o,methods:r=["GET"],headers:s={}}=e;let a;const n="function"==typeof t?t:e=>t.includes(e)||t.includes("*"),c={"content-type":"application/json","Access-Control-Allow-Methods":r.join(", "),...s};o&&(c["Access-Control-Max-Age"]=o);return{corsify:e=>{if(!e)throw new Error("No fetch handler responded and no upstream to proxy to specified.");const{headers:t,status:o,body:r}=e;return[101,301,302,308].includes(o)||t.get("access-control-allow-origin")?e:new Response(r,{status:o,headers:{...Object.fromEntries(t),...c,...a,"content-type":t.get("content-type")}})},preflight:e=>{const t=[...new Set(["OPTIONS",...r])],o=e.headers.get("origin")||"";if(a=n(o)&&{"Access-Control-Allow-Origin":o},"OPTIONS"===e.method){const o={...c,"Access-Control-Allow-Methods":t.join(", "),"Access-Control-Allow-Headers":e.headers.get("Access-Control-Request-Headers"),...a};return new Response(null,{headers:e.headers.get("Origin")&&e.headers.get("Access-Control-Request-Method")&&e.headers.get("Access-Control-Request-Headers")?o:{Allow:t.join(", ")}})}}}},exports.createResponse=t,exports.error=s,exports.html=p,exports.jpeg=l,exports.json=o,exports.png=i,exports.status=(e,t)=>new Response(null,{...t,status:e}),exports.text=c,exports.webp=u,exports.withContent=async e=>{e.content=await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text()))},exports.withCookies=e=>{e.cookies=(e.headers.get("Cookie")||"").split(/;\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,o])=>o?(e[t]=o,e):e),{})},exports.withParams=a;
2
2
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/src/StatusError.ts","../src/src/createResponse.ts","../src/src/json.ts","../src/src/error.ts","../src/src/text.ts","../src/src/html.ts","../src/src/jpeg.ts","../src/src/png.ts","../src/src/webp.ts","../src/src/Router.ts","../src/src/createCors.ts","../src/src/status.ts","../src/src/withContent.ts","../src/src/withCookies.ts","../src/src/withParams.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["StatusError","Error","status","constructor","body","super","error","Object","assign","this","createResponse","format","transform","headers","rest","undefined","name","Response","entries","fromEntries","json","JSON","stringify","getMessage","code","text","String","html","jpeg","png","webp","base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","method","regex","pathname","params","groups","handler","proxy","options","origins","maxAge","methods","allowOrigin","isAllowOrigin","origin","includes","rHeaders","join","corsify","preflight","r","useMethods","Set","reqHeaders","Allow","a","b","message","err","content","clone","catch","formData","cookies","split","map","p","reduce","obj","bind"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/src/IttyRouter.ts","../src/src/Router.ts","../src/src/createResponse.ts","../src/src/json.ts","../src/src/error.ts","../src/src/withParams.ts","../src/src/StatusError.ts","../src/src/text.ts","../src/src/html.ts","../src/src/jpeg.ts","../src/src/png.ts","../src/src/webp.ts","../src/src/AutoRouter.ts","../src/src/createCors.ts","../src/src/status.ts","../src/src/withContent.ts","../src/src/withCookies.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Router","base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","t","handler","before","proxy","outer","method","regex","pathname","params","groups","err","catch","finally","createResponse","format","transform","body","options","undefined","Response","headers","set","json","JSON","stringify","getMessage","code","error","a","b","Error","message","status","withParams","obj","bind","StatusError","constructor","super","Object","assign","this","text","String","html","jpeg","png","webp","missing","f","r","origins","maxAge","methods","allowOrigin","isAllowOrigin","origin","includes","rHeaders","join","corsify","fromEntries","preflight","useMethods","Set","reqHeaders","Allow","content","clone","formData","cookies","split","map","p","reduce"],"mappings":"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"}
package/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=({base:e="",routes:t=[],...o}={})=>({__proto__:new Proxy({},{get:(o,s,r,n)=>"handle"==s?r.fetch:(o,...a)=>t.push([s.toUpperCase?.(),RegExp(`^${(n=(e+o).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),a,n])&&r}),routes:t,...o,async fetch(e,...o){let s,r,n=new URL(e.url),a=e.query={__proto__:null};for(let[e,t]of n.searchParams)a[e]=a[e]?[].concat(a[e],t):t;for(let[a,c,i,l]of t)if((a==e.method||"ALL"==a)&&(r=n.pathname.match(c))){e.params=r.groups||{},e.route=l;for(let t of i)if(null!=(s=await t(e.proxy??e,...o)))return s}}});class t extends Error{status;constructor(e=500,t){super("object"==typeof t?t.error:t),"object"==typeof t&&Object.assign(this,t),this.status=e}}const o=(e="text/plain; charset=utf-8",t)=>(o,{headers:s={},...r}={})=>void 0===o||"Response"===o?.constructor.name?o:new Response(t?t(o):o,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...r}),s=o("application/json; charset=utf-8",JSON.stringify),r=e=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[e]||"Unknown Error"),n=(e=500,t)=>{if(e instanceof Error){const{message:o,...s}=e;e=e.status||500,t={error:o||r(e),...s}}return t={status:e,..."object"==typeof t?t:{error:t||r(e)}},s(t,{status:e})},a=(e,t)=>new Response(null,{...t,status:e}),c=o("text/plain; charset=utf-8",String),i=o("text/html"),l=o("image/jpeg"),p=o("image/png"),d=o("image/webp"),u=async e=>{e.content=e.body?await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text())):void 0},h=e=>{e.cookies=(e.headers.get("Cookie")||"").split(/;\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,o])=>o?(e[t]=o,e):e),{})},g=e=>{e.proxy=new Proxy(e.proxy||e,{get:(t,o)=>void 0!==t[o]?t[o].bind?.(e)||t[o]:t?.params?.[o]})},f=(e={})=>{const{origins:t=["*"],maxAge:o,methods:s=["GET"],headers:r={}}=e;let n;const a="function"==typeof t?t:e=>t.includes(e)||t.includes("*"),c={"content-type":"application/json","Access-Control-Allow-Methods":s.join(", "),...r};o&&(c["Access-Control-Max-Age"]=o);return{corsify:e=>{if(!e)throw new Error("No fetch handler responded and no upstream to proxy to specified.");const{headers:t,status:o,body:s}=e;return[101,301,302,308].includes(o)||t.get("access-control-allow-origin")?e:new Response(s,{status:o,headers:{...Object.fromEntries(t),...c,...n,"content-type":t.get("content-type")}})},preflight:e=>{const t=[...new Set(["OPTIONS",...s])],o=e.headers.get("origin")||"";if(n=a(o)&&{"Access-Control-Allow-Origin":o},"OPTIONS"===e.method){const o={...c,"Access-Control-Allow-Methods":t.join(", "),"Access-Control-Allow-Headers":e.headers.get("Access-Control-Request-Headers"),...n};return new Response(null,{headers:e.headers.get("Origin")&&e.headers.get("Access-Control-Request-Method")&&e.headers.get("Access-Control-Request-Headers")?o:{Allow:t.join(", ")}})}}}};export{e as Router,t as StatusError,f as createCors,o as createResponse,n as error,i as html,l as jpeg,s as json,p as png,a as status,c as text,d as webp,u as withContent,h as withCookies,g as withParams};
1
+ const e=({base:e="",routes:t=[],...o}={})=>({__proto__:new Proxy({},{get:(o,r,s,a)=>(o,...n)=>t.push([r.toUpperCase?.(),RegExp(`^${(a=(e+o).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),n,a])&&s}),routes:t,...o,async fetch(e,...o){let r,s,a=new URL(e.url),n=e.query={__proto__:null};for(let[e,t]of a.searchParams)n[e]=n[e]?[].concat(n[e],t):t;for(let[n,c,l,i]of t)if((n==e.method||"ALL"==n)&&(s=a.pathname.match(c))){e.params=s.groups||{},e.route=i;for(let t of l)if(null!=(r=await t(e.proxy??e,...o)))return r}}}),t=({base:e="",routes:t=[],...o}={})=>({__proto__:new Proxy({},{get:(o,r,s,a)=>"handle"==r?s.fetch:(o,...n)=>t.push([r.toUpperCase?.(),RegExp(`^${(a=(e+o).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),n,a])&&s}),routes:t,...o,async fetch(e,...r){let s,a,n=new URL(e.url),c=e.query={__proto__:null};for(let[e,t]of n.searchParams)c[e]=c[e]?[].concat(c[e],t):t;e:try{for(let t of o.before||[])if(null!=(s=await t(e.proxy??e,...r)))break e;t:for(let[o,c,l,i]of t)if((o==e.method||"ALL"==o)&&(a=n.pathname.match(c))){e.params=a.groups||{},e.route=i;for(let t of l)if(null!=(s=await t(e.proxy??e,...r)))break t}}catch(t){if(!o.catch)throw t;s=await o.catch(t,e.proxy??e,...r)}try{for(let t of o.finally||[])s=await t(s,e.proxy??e,...r)??s}catch(t){if(!o.catch)throw t;s=await o.catch(t,e.proxy??e,...r)}return s}}),o=(e="text/plain; charset=utf-8",t)=>(o,{...r}={})=>{if(void 0===o||o instanceof Response)return o;const s=new Response(t?.(o)??o,r);return s.headers.set("content-type",e),s},r=o("application/json; charset=utf-8",JSON.stringify),s=e=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[e]||"Unknown Error"),a=(e=500,t)=>{if(e instanceof Error){const{message:o,...r}=e;e=e.status||500,t={error:o||s(e),...r}}return t={status:e,..."object"==typeof t?t:{error:t||s(e)}},r(t,{status:e})},n=e=>{e.proxy=new Proxy(e.proxy||e,{get:(t,o)=>void 0!==t[o]?t[o].bind?.(e)||t[o]:t?.params?.[o]})},c=({format:e=r,missing:o=(()=>a(404)),finally:s=[],before:c=[],...l}={})=>t({before:[n,...c],catch:a,finally:[(e,...t)=>e??o(e,...t),e,...s],...l});class l extends Error{status;constructor(e=500,t){super("object"==typeof t?t.error:t),"object"==typeof t&&Object.assign(this,t),this.status=e}}const i=(e,t)=>new Response(null,{...t,status:e}),p=o("text/plain; charset=utf-8",String),f=o("text/html"),u=o("image/jpeg"),h=o("image/png"),g=o("image/webp"),d=async e=>{e.content=await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text()))},w=e=>{e.cookies=(e.headers.get("Cookie")||"").split(/;\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,o])=>o?(e[t]=o,e):e),{})},y=(e={})=>{const{origins:t=["*"],maxAge:o,methods:r=["GET"],headers:s={}}=e;let a;const n="function"==typeof t?t:e=>t.includes(e)||t.includes("*"),c={"content-type":"application/json","Access-Control-Allow-Methods":r.join(", "),...s};o&&(c["Access-Control-Max-Age"]=o);return{corsify:e=>{if(!e)throw new Error("No fetch handler responded and no upstream to proxy to specified.");const{headers:t,status:o,body:r}=e;return[101,301,302,308].includes(o)||t.get("access-control-allow-origin")?e:new Response(r,{status:o,headers:{...Object.fromEntries(t),...c,...a,"content-type":t.get("content-type")}})},preflight:e=>{const t=[...new Set(["OPTIONS",...r])],o=e.headers.get("origin")||"";if(a=n(o)&&{"Access-Control-Allow-Origin":o},"OPTIONS"===e.method){const o={...c,"Access-Control-Allow-Methods":t.join(", "),"Access-Control-Allow-Headers":e.headers.get("Access-Control-Request-Headers"),...a};return new Response(null,{headers:e.headers.get("Origin")&&e.headers.get("Access-Control-Request-Method")&&e.headers.get("Access-Control-Request-Headers")?o:{Allow:t.join(", ")}})}}}};export{c as AutoRouter,e as IttyRouter,t as Router,l as StatusError,y as createCors,o as createResponse,a as error,f as html,u as jpeg,r as json,h as png,i as status,p as text,g as webp,d as withContent,w as withCookies,n as withParams};
2
2
  //# sourceMappingURL=index.mjs.map
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/src/Router.ts","../src/src/StatusError.ts","../src/src/createResponse.ts","../src/src/json.ts","../src/src/error.ts","../src/src/status.ts","../src/src/text.ts","../src/src/html.ts","../src/src/jpeg.ts","../src/src/png.ts","../src/src/webp.ts","../src/src/withContent.ts","../src/src/withCookies.ts","../src/src/withParams.ts","../src/src/createCors.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["Router","base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","fetch","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","method","regex","pathname","params","groups","handler","proxy","StatusError","Error","status","constructor","body","super","error","Object","assign","this","createResponse","format","transform","headers","rest","undefined","name","Response","entries","fromEntries","json","JSON","stringify","getMessage","code","a","b","message","err","options","text","String","html","jpeg","png","webp","withContent","content","clone","catch","formData","withCookies","r","cookies","split","map","p","reduce","withParams","obj","bind","createCors","origins","maxAge","methods","allowOrigin","isAllowOrigin","origin","includes","rHeaders","join","corsify","preflight","useMethods","Set","reqHeaders","Allow"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/src/IttyRouter.ts","../src/src/Router.ts","../src/src/createResponse.ts","../src/src/json.ts","../src/src/error.ts","../src/src/withParams.ts","../src/src/AutoRouter.ts","../src/src/StatusError.ts","../src/src/status.ts","../src/src/text.ts","../src/src/html.ts","../src/src/jpeg.ts","../src/src/png.ts","../src/src/webp.ts","../src/src/withContent.ts","../src/src/withCookies.ts","../src/src/createCors.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null],"names":["IttyRouter","base","routes","other","__proto__","Proxy","get","target","prop","receiver","path","route","handlers","push","toUpperCase","RegExp","replace","async","request","args","response","match","url","URL","query","k","v","searchParams","concat","method","regex","pathname","params","groups","handler","proxy","Router","fetch","t","before","outer","err","catch","finally","createResponse","format","transform","body","options","undefined","Response","headers","set","json","JSON","stringify","getMessage","code","error","a","b","Error","message","status","withParams","obj","bind","AutoRouter","missing","f","r","StatusError","constructor","super","Object","assign","this","text","String","html","jpeg","png","webp","withContent","content","clone","formData","withCookies","cookies","split","map","p","reduce","createCors","origins","maxAge","methods","allowOrigin","isAllowOrigin","origin","includes","rHeaders","join","corsify","fromEntries","preflight","useMethods","Set","reqHeaders","Allow"],"mappings":"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"}
package/jpeg.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=((e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...r}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...r}))("image/jpeg");exports.jpeg=e;
1
+ "use strict";const e=((e="text/plain; charset=utf-8",t)=>(s,{...n}={})=>{if(void 0===s||s instanceof Response)return s;const o=new Response(t?.(s)??s,n);return o.headers.set("content-type",e),o})("image/jpeg");exports.jpeg=e;
2
2
  //# sourceMappingURL=jpeg.js.map
package/jpeg.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jpeg.js","sources":["../src/src/createResponse.ts","../src/src/jpeg.ts"],"sourcesContent":[null,null],"names":["jpeg","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse"],"mappings":"aAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAAe"}
1
+ {"version":3,"file":"jpeg.js","sources":["../src/src/createResponse.ts","../src/src/jpeg.ts"],"sourcesContent":[null,null],"names":["jpeg","format","transform","body","options","undefined","Response","response","headers","set","createResponse"],"mappings":"aAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAAe"}
package/jpeg.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=((e="text/plain; charset=utf-8",t)=>(n,{headers:s={},...o}={})=>void 0===n||"Response"===n?.constructor.name?n:new Response(t?t(n):n,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...o}))("image/jpeg");export{e as jpeg};
1
+ const e=((e="text/plain; charset=utf-8",t)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const o=new Response(t?.(n)??n,s);return o.headers.set("content-type",e),o})("image/jpeg");export{e as jpeg};
2
2
  //# sourceMappingURL=jpeg.mjs.map
package/jpeg.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"jpeg.mjs","sources":["../src/src/createResponse.ts","../src/src/jpeg.ts"],"sourcesContent":[null,null],"names":["jpeg","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse"],"mappings":"AAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAAe"}
1
+ {"version":3,"file":"jpeg.mjs","sources":["../src/src/createResponse.ts","../src/src/jpeg.ts"],"sourcesContent":[null,null],"names":["jpeg","format","transform","body","options","undefined","Response","response","headers","set","createResponse"],"mappings":"AAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAAe"}
package/json.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=((e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...o}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...o}))("application/json; charset=utf-8",JSON.stringify);exports.json=e;
1
+ "use strict";const t=((t="text/plain; charset=utf-8",e)=>(s,{...n}={})=>{if(void 0===s||s instanceof Response)return s;const o=new Response(e?.(s)??s,n);return o.headers.set("content-type",t),o})("application/json; charset=utf-8",JSON.stringify);exports.json=t;
2
2
  //# sourceMappingURL=json.js.map
package/json.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"json.js","sources":["../src/src/createResponse.ts","../src/src/json.ts"],"sourcesContent":[null,null],"names":["json","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse","JSON","stringify"],"mappings":"aAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAClB,kCACAC,KAAKC"}
1
+ {"version":3,"file":"json.js","sources":["../src/src/createResponse.ts","../src/src/json.ts"],"sourcesContent":[null,null],"names":["json","format","transform","body","options","undefined","Response","response","headers","set","createResponse","JSON","stringify"],"mappings":"aAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAClB,kCACAC,KAAKC"}
package/json.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=((e="text/plain; charset=utf-8",t)=>(n,{headers:s={},...o}={})=>void 0===n||"Response"===n?.constructor.name?n:new Response(t?t(n):n,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...o}))("application/json; charset=utf-8",JSON.stringify);export{e as json};
1
+ const t=((t="text/plain; charset=utf-8",e)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const o=new Response(e?.(n)??n,s);return o.headers.set("content-type",t),o})("application/json; charset=utf-8",JSON.stringify);export{t as json};
2
2
  //# sourceMappingURL=json.mjs.map
package/json.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"json.mjs","sources":["../src/src/createResponse.ts","../src/src/json.ts"],"sourcesContent":[null,null],"names":["json","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse","JSON","stringify"],"mappings":"AAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAClB,kCACAC,KAAKC"}
1
+ {"version":3,"file":"json.mjs","sources":["../src/src/createResponse.ts","../src/src/json.ts"],"sourcesContent":[null,null],"names":["json","format","transform","body","options","undefined","Response","response","headers","set","createResponse","JSON","stringify"],"mappings":"AAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAClB,kCACAC,KAAKC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itty-router",
3
- "version": "4.2.2",
3
+ "version": "4.3.0-next.1",
4
4
  "description": "A tiny, zero-dependency router, designed to make beautiful APIs in any environment.",
5
5
  "main": "./index.js",
6
6
  "module": "./index.mjs",
@@ -11,6 +11,11 @@
11
11
  "require": "./index.js",
12
12
  "types": "./index.d.ts"
13
13
  },
14
+ "./AutoRouter": {
15
+ "import": "./AutoRouter.mjs",
16
+ "require": "./AutoRouter.js",
17
+ "types": "./AutoRouter.d.ts"
18
+ },
14
19
  "./createCors": {
15
20
  "import": "./createCors.mjs",
16
21
  "require": "./createCors.js",
@@ -31,6 +36,11 @@
31
36
  "require": "./html.js",
32
37
  "types": "./html.d.ts"
33
38
  },
39
+ "./IttyRouter": {
40
+ "import": "./IttyRouter.mjs",
41
+ "require": "./IttyRouter.js",
42
+ "types": "./IttyRouter.d.ts"
43
+ },
34
44
  "./jpeg": {
35
45
  "import": "./jpeg.mjs",
36
46
  "require": "./jpeg.js",
package/png.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=((e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...r}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...r}))("image/png");exports.png=e;
1
+ "use strict";const e=((e="text/plain; charset=utf-8",t)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const o=new Response(t?.(n)??n,s);return o.headers.set("content-type",e),o})("image/png");exports.png=e;
2
2
  //# sourceMappingURL=png.js.map
package/png.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"png.js","sources":["../src/src/createResponse.ts","../src/src/png.ts"],"sourcesContent":[null,null],"names":["png","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse"],"mappings":"aAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBJQ,CAAe"}
1
+ {"version":3,"file":"png.js","sources":["../src/src/createResponse.ts","../src/src/png.ts"],"sourcesContent":[null,null],"names":["png","format","transform","body","options","undefined","Response","response","headers","set","createResponse"],"mappings":"aAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBAG,CAAe"}
package/png.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=((e="text/plain; charset=utf-8",t)=>(n,{headers:s={},...o}={})=>void 0===n||"Response"===n?.constructor.name?n:new Response(t?t(n):n,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...o}))("image/png");export{e as png};
1
+ const e=((e="text/plain; charset=utf-8",t)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const o=new Response(t?.(n)??n,s);return o.headers.set("content-type",e),o})("image/png");export{e as png};
2
2
  //# sourceMappingURL=png.mjs.map
package/png.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"png.mjs","sources":["../src/src/createResponse.ts","../src/src/png.ts"],"sourcesContent":[null,null],"names":["png","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse"],"mappings":"AAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBJQ,CAAe"}
1
+ {"version":3,"file":"png.mjs","sources":["../src/src/createResponse.ts","../src/src/png.ts"],"sourcesContent":[null,null],"names":["png","format","transform","body","options","undefined","Response","response","headers","set","createResponse"],"mappings":"AAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBAG,CAAe"}
package/text.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=((e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...r}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...r}))("text/plain; charset=utf-8",String);exports.text=e;
1
+ "use strict";const t=((t="text/plain; charset=utf-8",e)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const r=new Response(e?.(n)??n,s);return r.headers.set("content-type",t),r})("text/plain; charset=utf-8",String);exports.text=t;
2
2
  //# sourceMappingURL=text.js.map
package/text.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sources":["../src/src/createResponse.ts","../src/src/text.ts"],"sourcesContent":[null,null],"names":["text","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse","String"],"mappings":"aAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAClB,4BACAC"}
1
+ {"version":3,"file":"text.js","sources":["../src/src/createResponse.ts","../src/src/text.ts"],"sourcesContent":[null,null],"names":["text","format","transform","body","options","undefined","Response","response","headers","set","createResponse","String"],"mappings":"aAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAClB,4BACAC"}
package/text.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=((e="text/plain; charset=utf-8",t)=>(n,{headers:s={},...r}={})=>void 0===n||"Response"===n?.constructor.name?n:new Response(t?t(n):n,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...r}))("text/plain; charset=utf-8",String);export{e as text};
1
+ const t=((t="text/plain; charset=utf-8",e)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const r=new Response(e?.(n)??n,s);return r.headers.set("content-type",t),r})("text/plain; charset=utf-8",String);export{t as text};
2
2
  //# sourceMappingURL=text.mjs.map
package/text.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"text.mjs","sources":["../src/src/createResponse.ts","../src/src/text.ts"],"sourcesContent":[null,null],"names":["text","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse","String"],"mappings":"AAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAClB,4BACAC"}
1
+ {"version":3,"file":"text.mjs","sources":["../src/src/createResponse.ts","../src/src/text.ts"],"sourcesContent":[null,null],"names":["text","format","transform","body","options","undefined","Response","response","headers","set","createResponse","String"],"mappings":"AAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAClB,4BACAC"}
package/webp.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";const e=((e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...r}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...r}))("image/webp");exports.webp=e;
1
+ "use strict";const e=((e="text/plain; charset=utf-8",t)=>(s,{...n}={})=>{if(void 0===s||s instanceof Response)return s;const o=new Response(t?.(s)??s,n);return o.headers.set("content-type",e),o})("image/webp");exports.webp=e;
2
2
  //# sourceMappingURL=webp.js.map
package/webp.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"webp.js","sources":["../src/src/createResponse.ts","../src/src/webp.ts"],"sourcesContent":[null,null],"names":["webp","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse"],"mappings":"aAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAAe"}
1
+ {"version":3,"file":"webp.js","sources":["../src/src/createResponse.ts","../src/src/webp.ts"],"sourcesContent":[null,null],"names":["webp","format","transform","body","options","undefined","Response","response","headers","set","createResponse"],"mappings":"aAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAAe"}
package/webp.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=((e="text/plain; charset=utf-8",t)=>(n,{headers:s={},...o}={})=>void 0===n||"Response"===n?.constructor.name?n:new Response(t?t(n):n,{headers:{"content-type":e,...s.entries?Object.fromEntries(s):s},...o}))("image/webp");export{e as webp};
1
+ const e=((e="text/plain; charset=utf-8",t)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const o=new Response(t?.(n)??n,s);return o.headers.set("content-type",e),o})("image/webp");export{e as webp};
2
2
  //# sourceMappingURL=webp.mjs.map
package/webp.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"webp.mjs","sources":["../src/src/createResponse.ts","../src/src/webp.ts"],"sourcesContent":[null,null],"names":["webp","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse"],"mappings":"AAQO,MCNMA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICvBHQ,CAAe"}
1
+ {"version":3,"file":"webp.mjs","sources":["../src/src/createResponse.ts","../src/src/webp.ts"],"sourcesContent":[null,null],"names":["webp","format","transform","body","options","undefined","Response","response","headers","set","createResponse"],"mappings":"AAQQ,MCNKA,EDOX,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMI,EAAW,IAAID,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADAG,EAASC,QAAQC,IAAI,eAAgBR,GAC9BM,CAAQ,EChBCG,CAAe"}
package/websocket.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";exports.websocket=(e,t={})=>((e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...o}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...o}))()(null,{status:101,webSocket:e,...t});
1
+ "use strict";exports.websocket=(e,t={})=>((e="text/plain; charset=utf-8",t)=>(s,{...n}={})=>{if(void 0===s||s instanceof Response)return s;const o=new Response(t?.(s)??s,n);return o.headers.set("content-type",e),o})()(null,{status:101,webSocket:e,...t});
2
2
  //# sourceMappingURL=websocket.js.map
package/websocket.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.js","sources":["../src/src/websocket.ts","../src/src/createResponse.ts"],"sourcesContent":[null,null],"names":["client","options","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse","status","webSocket"],"mappings":"+BAEyB,CAACA,EAAmBC,EAAkB,CAAA,ICO7D,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,IDtBrBQ,GAAiB,KAAM,CACrBC,OAAQ,IACRC,UAAWhB,KACRC"}
1
+ {"version":3,"file":"websocket.js","sources":["../src/src/websocket.ts","../src/src/createResponse.ts"],"sourcesContent":[null,null],"names":["client","options","format","transform","body","undefined","Response","response","headers","set","createResponse","status","webSocket"],"mappings":"+BAEyB,CAACA,EAAmBC,EAAkB,CAAA,ICO7D,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWH,GAAY,MACtB,QAAaI,IAATD,GAAsBA,aAAgBE,SAAU,OAAOF,EAE3D,MAAMG,EAAW,IAAID,SAASH,IAAYC,IAASA,EAAMH,GAEzD,OADAM,EAASC,QAAQC,IAAI,eAAgBP,GAC9BK,CAAQ,EDfjBG,GAAiB,KAAM,CACrBC,OAAQ,IACRC,UAAWZ,KACRC"}
package/websocket.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const e=(e,t={})=>((e="text/plain; charset=utf-8",t)=>(s,{headers:n={},...o}={})=>void 0===s||"Response"===s?.constructor.name?s:new Response(t?t(s):s,{headers:{"content-type":e,...n.entries?Object.fromEntries(n):n},...o}))()(null,{status:101,webSocket:e,...t});export{e as websocket};
1
+ const e=(e,t={})=>((e="text/plain; charset=utf-8",t)=>(n,{...s}={})=>{if(void 0===n||n instanceof Response)return n;const o=new Response(t?.(n)??n,s);return o.headers.set("content-type",e),o})()(null,{status:101,webSocket:e,...t});export{e as websocket};
2
2
  //# sourceMappingURL=websocket.mjs.map
package/websocket.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"websocket.mjs","sources":["../src/src/createResponse.ts","../src/src/websocket.ts"],"sourcesContent":[null,null],"names":["websocket","client","options","format","transform","body","headers","rest","undefined","constructor","name","Response","entries","Object","fromEntries","createResponse","status","webSocket"],"mappings":"AAQO,MCNMA,EAAY,CAACC,EAAmBC,EAAkB,CAAA,IDO7D,EACEC,EAAS,4BACTC,IAEF,CAACC,GAAQC,UAAU,CAAA,KAAOC,GAAS,CAAA,SACxBC,IAATH,GAAiD,aAA3BA,GAAMI,YAAYC,KACtCL,EACA,IAAIM,SAASP,EAAYA,EAAUC,GAAQA,EAAM,CACnCC,QAAS,CACP,eAAgBH,KACZG,EAAQM,QAENC,OAAOC,YAAYR,GACnBA,MAGLC,ICtBrBQ,GAAiB,KAAM,CACrBC,OAAQ,IACRC,UAAWhB,KACRC"}
1
+ {"version":3,"file":"websocket.mjs","sources":["../src/src/createResponse.ts","../src/src/websocket.ts"],"sourcesContent":[null,null],"names":["websocket","client","options","format","transform","body","undefined","Response","response","headers","set","createResponse","status","webSocket"],"mappings":"AAQQ,MCNKA,EAAY,CAACC,EAAmBC,EAAkB,CAAA,IDO7D,EACEC,EAAS,4BACTC,IAEF,CAACC,MAAWH,GAAY,MACtB,QAAaI,IAATD,GAAsBA,aAAgBE,SAAU,OAAOF,EAE3D,MAAMG,EAAW,IAAID,SAASH,IAAYC,IAASA,EAAMH,GAEzD,OADAM,EAASC,QAAQC,IAAI,eAAgBP,GAC9BK,CAAQ,ECfjBG,GAAiB,KAAM,CACrBC,OAAQ,IACRC,UAAWZ,KACRC"}
package/withContent.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { IRequest, IRequestStrict } from './Router';
1
+ import { IRequest, IRequestStrict } from './IttyRouter';
2
2
  export type HasContent<ContentType> = {
3
3
  content: ContentType;
4
4
  } & IRequestStrict;
package/withContent.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";exports.withContent=async t=>{t.content=t.body?await t.clone().json().catch((()=>t.clone().formData())).catch((()=>t.text())):void 0};
1
+ "use strict";exports.withContent=async t=>{t.content=await t.clone().json().catch((()=>t.clone().formData())).catch((()=>t.text()))};
2
2
  //# sourceMappingURL=withContent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"withContent.js","sources":["../src/src/withContent.ts"],"sourcesContent":[null],"names":["async","request","content","body","clone","json","catch","formData","text","undefined"],"mappings":"iCAO2BA,MAAOC,IAChCA,EAAQC,QAAUD,EAAQE,WAChBF,EAAQG,QAAQC,OACnBC,OAAM,IAAML,EAAQG,QAAQG,aAC5BD,OAAM,IAAML,EAAQO,cACvBC,CAAS"}
1
+ {"version":3,"file":"withContent.js","sources":["../src/src/withContent.ts"],"sourcesContent":[null],"names":["async","request","content","clone","json","catch","formData","text"],"mappings":"iCAO2BA,MAAOC,IAChCA,EAAQC,cAAgBD,EAAQE,QAAQC,OACbC,OAAM,IAAMJ,EAAQE,QAAQG,aAC5BD,OAAM,IAAMJ,EAAQM,QAAO"}
package/withContent.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const t=async t=>{t.content=t.body?await t.clone().json().catch((()=>t.clone().formData())).catch((()=>t.text())):void 0};export{t as withContent};
1
+ const t=async t=>{t.content=await t.clone().json().catch((()=>t.clone().formData())).catch((()=>t.text()))};export{t as withContent};
2
2
  //# sourceMappingURL=withContent.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"withContent.mjs","sources":["../src/src/withContent.ts"],"sourcesContent":[null],"names":["withContent","async","request","content","body","clone","json","catch","formData","text","undefined"],"mappings":"MAOaA,EAAcC,MAAOC,IAChCA,EAAQC,QAAUD,EAAQE,WAChBF,EAAQG,QAAQC,OACnBC,OAAM,IAAML,EAAQG,QAAQG,aAC5BD,OAAM,IAAML,EAAQO,cACvBC,CAAS"}
1
+ {"version":3,"file":"withContent.mjs","sources":["../src/src/withContent.ts"],"sourcesContent":[null],"names":["withContent","async","request","content","clone","json","catch","formData","text"],"mappings":"MAOaA,EAAcC,MAAOC,IAChCA,EAAQC,cAAgBD,EAAQE,QAAQC,OACbC,OAAM,IAAMJ,EAAQE,QAAQG,aAC5BD,OAAM,IAAMJ,EAAQM,QAAO"}
package/withCookies.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { IRequest } from './Router';
1
+ import { IRequest } from './IttyRouter';
2
2
  export declare const withCookies: (r: IRequest) => void;
package/withParams.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { IRequest } from './Router';
1
+ import { IRequest } from './IttyRouter';
2
2
  export declare const withParams: (request: IRequest) => void;