itty-router 4.3.0-next.1 → 4.3.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/AutoRouter.d.ts CHANGED
@@ -4,5 +4,5 @@ type AutoRouterOptions = {
4
4
  missing?: RouteHandler;
5
5
  format?: ResponseHandler;
6
6
  } & RouterOptions;
7
- export declare const AutoRouter: ({ format, missing, finally: f, before, ...options }?: AutoRouterOptions) => import("./Router").RouterType<import("IttyRouter").Route, any[]>;
7
+ export declare const AutoRouter: ({ format, missing, finally: f, before, ...options }?: AutoRouterOptions) => import("./Router").RouterType<import("IttyRouter").IRequest, any[]>;
8
8
  export {};
package/AutoRouter.js CHANGED
@@ -1,2 +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});
1
+ "use strict";const r=((r="text/plain; charset=utf-8",e)=>(t,{...o}={})=>{if(void 0===t||t instanceof Response)return t;const a=new Response(e?.(t)??t,o);return a.headers.set("content-type",r),a})("application/json; charset=utf-8",JSON.stringify),e=r=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[r]||"Unknown Error"),t=(t=500,o)=>{if(t instanceof Error){const{message:r,...a}=t;t=t.status||500,o={error:r||e(t),...a}}return o={status:t,..."object"==typeof o?o:{error:o||e(t)}},r(o,{status:t})},o=r=>{r.proxy=new Proxy(r.proxy||r,{get:(e,t)=>void 0!==e[t]?e[t].bind?.(r)||e[t]:e?.params?.[t]})};exports.AutoRouter=({format:e=r,missing:a=(()=>t(404)),finally:n=[],before:s=[],...c}={})=>(({base:r="",routes:e=[],...t}={})=>({__proto__:new Proxy({},{get:(t,o,a,n)=>(t,...s)=>e.push([o.toUpperCase?.(),RegExp(`^${(n=(r+t).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),s,n])&&a}),routes:e,...t,async fetch(r,...o){let a,n,s=new URL(r.url),c=r.query={__proto__:null};for(let[r,e]of s.searchParams)c[r]=c[r]?[].concat(c[r],e):e;r:try{for(let e of t.before||[])if(null!=(a=await e(r.proxy??r,...o)))break r;e:for(let[t,c,f,i]of e)if((t==r.method||"ALL"==t)&&(n=s.pathname.match(c))){r.params=n.groups||{},r.route=i;for(let e of f)if(null!=(a=await e(r.proxy??r,...o)))break e}}catch(e){if(!t.catch)throw e;a=await t.catch(e,r.proxy??r,...o)}try{for(let e of t.finally||[])a=await e(a,r.proxy??r,...o)??a}catch(e){if(!t.catch)throw e;a=await t.catch(e,r.proxy??r,...o)}return a}}))({before:[o,...s],catch:t,finally:[(r,...e)=>r??a(r,...e),e,...n],...c});
2
2
  //# sourceMappingURL=AutoRouter.js.map
package/AutoRouter.js.map CHANGED
@@ -1 +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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"}
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","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 CHANGED
@@ -1,2 +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};
1
+ const r=((r="text/plain; charset=utf-8",e)=>(t,{...o}={})=>{if(void 0===t||t instanceof Response)return t;const a=new Response(e?.(t)??t,o);return a.headers.set("content-type",r),a})("application/json; charset=utf-8",JSON.stringify),e=r=>({400:"Bad Request",401:"Unauthorized",403:"Forbidden",404:"Not Found",500:"Internal Server Error"}[r]||"Unknown Error"),t=(t=500,o)=>{if(t instanceof Error){const{message:r,...a}=t;t=t.status||500,o={error:r||e(t),...a}}return o={status:t,..."object"==typeof o?o:{error:o||e(t)}},r(o,{status:t})},o=r=>{r.proxy=new Proxy(r.proxy||r,{get:(e,t)=>void 0!==e[t]?e[t].bind?.(r)||e[t]:e?.params?.[t]})},a=({format:e=r,missing:a=(()=>t(404)),finally:n=[],before:s=[],...c}={})=>(({base:r="",routes:e=[],...t}={})=>({__proto__:new Proxy({},{get:(t,o,a,n)=>(t,...s)=>e.push([o.toUpperCase?.(),RegExp(`^${(n=(r+t).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),s,n])&&a}),routes:e,...t,async fetch(r,...o){let a,n,s=new URL(r.url),c=r.query={__proto__:null};for(let[r,e]of s.searchParams)c[r]=c[r]?[].concat(c[r],e):e;r:try{for(let e of t.before||[])if(null!=(a=await e(r.proxy??r,...o)))break r;e:for(let[t,c,f,p]of e)if((t==r.method||"ALL"==t)&&(n=s.pathname.match(c))){r.params=n.groups||{},r.route=p;for(let e of f)if(null!=(a=await e(r.proxy??r,...o)))break e}}catch(e){if(!t.catch)throw e;a=await t.catch(e,r.proxy??r,...o)}try{for(let e of t.finally||[])a=await e(a,r.proxy??r,...o)??a}catch(e){if(!t.catch)throw e;a=await t.catch(e,r.proxy??r,...o)}return a}}))({before:[o,...s],catch:t,finally:[(r,...e)=>r??a(r,...e),e,...n],...c});export{a as AutoRouter};
2
2
  //# sourceMappingURL=AutoRouter.mjs.map
@@ -1 +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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"}
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","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/IttyRouter.d.ts CHANGED
@@ -1,6 +1,4 @@
1
- export type GenericTraps = {
2
- [key: string]: any;
3
- };
1
+ export type GenericTraps = Record<string, any>;
4
2
  export type RequestLike = {
5
3
  method: string;
6
4
  url: string;
@@ -22,8 +20,8 @@ export type IttyRouterOptions = {
22
20
  base?: string;
23
21
  routes?: RouteEntry[];
24
22
  } & Record<string, any>;
25
- export type RouteHandler<I = IRequest, A extends any[] = any[]> = {
26
- (request: I, ...args: A): any;
23
+ export type RouteHandler<R = IRequest, Args extends Array<any> = any[]> = {
24
+ (request: R, ...args: Args): any;
27
25
  };
28
26
  export type RouteEntry = [
29
27
  httpMethod: string,
@@ -31,23 +29,23 @@ export type RouteEntry = [
31
29
  handlers: RouteHandler[],
32
30
  path?: string
33
31
  ];
34
- export type Route = <RequestType = IRequest, Args extends any[] = any[], RT = IttyRouterType>(path: string, ...handlers: RouteHandler<RequestType, Args>[]) => RT;
32
+ export type Route<R = IRequest, A extends Array<any> = any[]> = <RequestType = R, Args extends Array<any> = A>(path: string, ...handlers: RouteHandler<RequestType, Args>[]) => IttyRouterType<RequestType, Args>;
35
33
  export type UniversalRoute<RequestType = IRequest, Args extends any[] = any[]> = (path: string, ...handlers: RouteHandler<RequestType, Args>[]) => IttyRouterType<UniversalRoute<RequestType, Args>, Args>;
36
34
  export type Equal<X, Y> = (<T>() => T extends X ? 1 : 2) extends (<T>() => T extends Y ? 1 : 2) ? true : false;
37
35
  export type CustomRoutes<R = Route> = {
38
36
  [key: string]: R;
39
37
  };
40
- export type IttyRouterType<R = Route, Args extends any[] = any[]> = {
38
+ export type IttyRouterType<R = IRequest, A extends any[] = any[], Output = any> = {
41
39
  __proto__: IttyRouterType<R>;
42
40
  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>;
41
+ fetch: <Args extends any[] = A>(request: RequestLike, ...extra: Args) => Promise<Output>;
42
+ all: Route<R, A>;
43
+ delete: Route<R, A>;
44
+ get: Route<R, A>;
45
+ head: Route<R, A>;
46
+ options: Route<R, A>;
47
+ patch: Route<R, A>;
48
+ post: Route<R, A>;
49
+ put: Route<R, A>;
50
+ } & CustomRoutes<Route<R, A>>;
51
+ export declare const IttyRouter: <RequestType = IRequest, Args extends any[] = any[]>({ base, routes, ...other }?: IttyRouterOptions) => IttyRouterType<RequestType, Args>;
package/IttyRouter.js CHANGED
@@ -1,2 +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}}});
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
2
  //# sourceMappingURL=IttyRouter.js.map
package/IttyRouter.js.map CHANGED
@@ -1 +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"}
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":"gCAwE0B,EAGtBA,OAAO,GAAIC,SAAS,MAAOC,GAA6B,MACzD,CACCC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAkBC,IACjD,CAACC,KAAkBC,IACjBV,EAAOW,KACL,CACEL,EAAKM,cACLC,OAAO,KAAKL,GAAQT,EAAOU,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAGvBJ,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 CHANGED
@@ -1,2 +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};
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
2
  //# sourceMappingURL=IttyRouter.mjs.map
@@ -1 +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"}
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":"MAwEaA,EAAa,EAGtBC,OAAO,GAAIC,SAAS,MAAOC,GAA6B,MACzD,CACCC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAkBC,IACjD,CAACC,KAAkBC,IACjBV,EAAOW,KACL,CACEL,EAAKM,cACLC,OAAO,KAAKL,GAAQT,EAAOU,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAGvBJ,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
@@ -60,11 +60,15 @@ An ultra-tiny API microrouter, for use when [size matters](https://github.com/Ti
60
60
  ```js
61
61
  import { AutoRouter } from 'itty-router' // ~1kB
62
62
 
63
- export default AutoRouter()
63
+ const router = AutoRouter()
64
+
65
+ router
64
66
  .get('/hello/:name', ({ name }) => `Hello, ${name}!`)
65
67
  .get('/json', () => [1,2,3])
66
68
  .get('/promises', () => Promise.resolve('foo'))
67
69
 
70
+ export default router
71
+
68
72
  // that's it ^-^
69
73
  ```
70
74
 
@@ -82,6 +86,9 @@ Join us on [Discord](https://discord.gg/53vyrZAu9u)!
82
86
 
83
87
  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
84
88
 
89
+ #### Constant Feedback, Suggestions, Moral Support & Community Building
90
+ - TBD
91
+
85
92
  #### Core Concepts
86
93
 
87
94
  - [@mvasigh](https://github.com/mvasigh) - proxy hack wizard behind itty, coding partner in crime, maker of the entire doc site, etc, etc.
package/Router.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Equal, IRequest, IttyRouterOptions, IttyRouterType, Route, RouteHandler, UniversalRoute } from './IttyRouter';
1
+ import { IRequest, IttyRouterOptions, IttyRouterType, Route, RouteHandler } from './IttyRouter';
2
2
  export type ResponseHandler<ResponseType = any, RequestType = IRequest, Args extends any[] = any[]> = (response: ResponseType, request: RequestType, ...args: Args) => any;
3
3
  export type ErrorHandler<ErrorType = Error, RequestType = IRequest, Args extends any[] = any[]> = (response: ErrorType, request: RequestType, ...args: Args) => any;
4
4
  export type RouterType<R = Route, Args extends any[] = any[]> = {
@@ -11,4 +11,4 @@ export type RouterOptions = {
11
11
  catch?: ErrorHandler;
12
12
  finally?: ResponseHandler[];
13
13
  } & IttyRouterOptions;
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>;
14
+ export declare const Router: <RequestType = IRequest, Args extends any[] = any[]>({ base, routes, ...other }?: RouterOptions) => RouterType<RequestType, Args>;
package/Router.js CHANGED
@@ -1,2 +1,2 @@
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}});
1
+ "use strict";exports.Router=({base:r="",routes:e=[],...t}={})=>({__proto__:new Proxy({},{get:(t,a,o,c)=>(t,...l)=>e.push([a.toUpperCase?.(),RegExp(`^${(c=(r+t).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),l,c])&&o}),routes:e,...t,async fetch(r,...a){let o,c,l=new URL(r.url),p=r.query={__proto__:null};for(let[r,e]of l.searchParams)p[r]=p[r]?[].concat(p[r],e):e;r:try{for(let e of t.before||[])if(null!=(o=await e(r.proxy??r,...a)))break r;e:for(let[t,p,f,h]of e)if((t==r.method||"ALL"==t)&&(c=l.pathname.match(p))){r.params=c.groups||{},r.route=h;for(let e of f)if(null!=(o=await e(r.proxy??r,...a)))break e}}catch(e){if(!t.catch)throw e;o=await t.catch(e,r.proxy??r,...a)}try{for(let e of t.finally||[])o=await e(o,r.proxy??r,...a)??o}catch(e){if(!t.catch)throw e;o=await t.catch(e,r.proxy??r,...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","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"}
1
+ {"version":3,"file":"Router.js","sources":["../src/src/Router.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","t","handler","before","proxy","outer","method","regex","pathname","params","groups","err","catch","finally"],"mappings":"4BA2BsB,EAGlBA,OAAO,GAAIC,SAAS,MAAOC,GAAyB,MACrD,CACCC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAkBC,IACjD,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,iBAGvBJ,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,EAE/DG,EAAG,IACD,IAAK,IAAIC,KAAW3B,EAAM4B,QAAU,GAClC,GAAqE,OAAhEX,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMU,EAGnFI,EAAO,IAAK,IAAKC,EAAQC,EAAOvB,EAAUF,KAASR,EACjD,IAAKgC,GAAUhB,EAAQgB,QAAoB,OAAVA,KAAqBb,EAAQC,EAAIc,SAASf,MAAMc,IAAS,CACxFjB,EAAQmB,OAAShB,EAAMiB,QAAU,CAAA,EACjCpB,EAAQP,MAAQD,EAEhB,IAAK,IAAIoB,KAAWlB,EAClB,GAAqE,OAAhEQ,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMc,CACpF,CACJ,CAAC,MAAOM,GACP,IAAKpC,EAAMqC,MAAO,MAAMD,EACxBnB,QAAiBjB,EAAMqC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAChE,CAED,IACE,IAAK,IAAIW,KAAW3B,EAAMsC,SAAW,GACnCrB,QAAiBU,EAAQV,EAAUF,EAAQc,OAASd,KAAYC,IAASC,CAC5E,CAAC,MAAMmB,GACN,IAAKpC,EAAMqC,MAAO,MAAMD,EACtBnB,QAAiBjB,EAAMqC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAClE,CAED,OAAOC,CACR"}
package/Router.mjs CHANGED
@@ -1,2 +1,2 @@
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};
1
+ const r=({base:r="",routes:e=[],...a}={})=>({__proto__:new Proxy({},{get:(a,t,o,c)=>(a,...l)=>e.push([t.toUpperCase?.(),RegExp(`^${(c=(r+a).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),l,c])&&o}),routes:e,...a,async fetch(r,...t){let o,c,l=new URL(r.url),p=r.query={__proto__:null};for(let[r,e]of l.searchParams)p[r]=p[r]?[].concat(p[r],e):e;r:try{for(let e of a.before||[])if(null!=(o=await e(r.proxy??r,...t)))break r;e:for(let[a,p,f,h]of e)if((a==r.method||"ALL"==a)&&(c=l.pathname.match(p))){r.params=c.groups||{},r.route=h;for(let e of f)if(null!=(o=await e(r.proxy??r,...t)))break e}}catch(e){if(!a.catch)throw e;o=await a.catch(e,r.proxy??r,...t)}try{for(let e of a.finally||[])o=await e(o,r.proxy??r,...t)??o}catch(e){if(!a.catch)throw e;o=await a.catch(e,r.proxy??r,...t)}return o}});export{r 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","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"}
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","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":"MA2BaA,EAAS,EAGlBC,OAAO,GAAIC,SAAS,MAAOC,GAAyB,MACrD,CACCC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAkBC,IACjD,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,iBAGvBJ,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,EAE/DG,EAAG,IACD,IAAK,IAAIC,KAAW3B,EAAM4B,QAAU,GAClC,GAAqE,OAAhEX,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMU,EAGnFI,EAAO,IAAK,IAAKC,EAAQC,EAAOvB,EAAUF,KAASR,EACjD,IAAKgC,GAAUhB,EAAQgB,QAAoB,OAAVA,KAAqBb,EAAQC,EAAIc,SAASf,MAAMc,IAAS,CACxFjB,EAAQmB,OAAShB,EAAMiB,QAAU,CAAA,EACjCpB,EAAQP,MAAQD,EAEhB,IAAK,IAAIoB,KAAWlB,EAClB,GAAqE,OAAhEQ,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMc,CACpF,CACJ,CAAC,MAAOM,GACP,IAAKpC,EAAMqC,MAAO,MAAMD,EACxBnB,QAAiBjB,EAAMqC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAChE,CAED,IACE,IAAK,IAAIW,KAAW3B,EAAMsC,SAAW,GACnCrB,QAAiBU,EAAQV,EAAUF,EAAQc,OAASd,KAAYC,IAASC,CAC5E,CAAC,MAAMmB,GACN,IAAKpC,EAAMqC,MAAO,MAAMD,EACtBnB,QAAiBjB,EAAMqC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAClE,CAED,OAAOC,CACR"}
package/cors.d.ts ADDED
@@ -0,0 +1,12 @@
1
+ export type CorsOptions = {
2
+ credentials?: true;
3
+ origin?: boolean | string | string[] | RegExp | ((origin: string) => string | void);
4
+ maxAge?: number;
5
+ allowMethods?: string | string[];
6
+ allowHeaders?: any;
7
+ exposeHeaders?: string | string[];
8
+ };
9
+ export declare const cors: (options?: CorsOptions) => {
10
+ corsify: (response: Response, request?: Request) => Response;
11
+ preflight: (request: Request) => Response | undefined;
12
+ };
package/cors.js ADDED
@@ -0,0 +1,2 @@
1
+ "use strict";exports.cors=(e={})=>{const{origin:s="*",credentials:o=!1,allowMethods:r="*",allowHeaders:c,exposeHeaders:n,maxAge:t}=e,a={"access-control-allow-headers":c?.join?.(",")??c,"access-control-expose-headers":n?.join?.(",")??n,"access-control-allow-methods":r?.join?.(",")??r,"access-control-max-age":t,"access-control-allow-credentials":o},l=e=>{const r=e?.headers.get("origin");return!0===s?r:s instanceof RegExp?s.test(r)?r:void 0:Array.isArray(s)?s.includes(r)?r:void 0:s instanceof Function?s(r):"*"==s&&o?r:s};return{corsify:(e,s)=>e?.headers?.get("access-control-allow-origin")?e:new Response(e.body,{...e,headers:[...e.headers,["access-control-allow-origin",l(s)],...Object.entries(a)].filter((e=>e[1]))}),preflight:e=>{if("OPTIONS"==e.method)return new Response(null,{status:204,headers:Object.entries({"access-control-allow-origin":l(e),...a}).filter((e=>e[1]))})}}};
2
+ //# sourceMappingURL=cors.js.map
package/cors.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.js","sources":["../src/src/cors.ts"],"sourcesContent":[null],"names":["options","origin","credentials","allowMethods","allowHeaders","exposeHeaders","maxAge","corsHeaders","join","getAccessControlOrigin","request","requestOrigin","headers","get","RegExp","test","undefined","Array","isArray","includes","Function","corsify","response","Response","body","Object","entries","filter","v","preflight","method","status"],"mappings":"0BAUoB,CAACA,EAAuB,MAE1C,MAAMC,OACJA,EAAS,IAAGC,YACZA,GAAc,EAAKC,aACnBA,EAAe,IAAGC,aAClBA,EAAYC,cACZA,EAAaC,OACbA,GACEN,EAGEO,EAAmC,CACvC,+BAAgCH,GAAcI,OAAO,MAAQJ,EAE7D,gCAAiCC,GAAeG,OAAO,MAAQH,EAE/D,+BAAgCF,GAAcK,OAAO,MAAQL,EAC7D,yBAA0BG,EAC1B,mCAAoCJ,GAGhCO,EAA0BC,IAC9B,MAAMC,EAAgBD,GAASE,QAAQC,IAAI,UAG3C,OAAe,IAAXZ,EAAwBU,EAExBV,aAAkBa,OAAeb,EAAOc,KAAKJ,GAAiBA,OAAgBK,EAE9EC,MAAMC,QAAQjB,GAAgBA,EAAOkB,SAASR,GAAiBA,OAAgBK,EAE/Ef,aAAkBmB,SAAiBnB,EAAOU,GAG7B,KAAVV,GAAiBC,EACtBS,EACAV,CAAM,EA+BV,MAAO,CAAEoB,QAhBO,CAACC,EAAoBZ,IAE/BY,GAAUV,SAASC,IAAI,+BAAuCS,EAE3D,IAAIC,SAASD,EAASE,KAAM,IAC9BF,EAEHV,QAAS,IACJU,EAASV,QACZ,CAAC,8BAA+BH,EAAuBC,OACpDe,OAAOC,QAAQnB,IAClBoB,QAAOC,GAAKA,EAAE,OAKFC,UA5BCnB,IACjB,GAAsB,WAAlBA,EAAQoB,OACV,OAAO,IAAIP,SAAS,KAAM,CACxBQ,OAAQ,IACRnB,QAASa,OAAOC,QAAQ,CACtB,8BAA+BjB,EAAuBC,MACnDH,IACFoB,QAAOC,GAAKA,EAAE,MAEpB,EAmB0B"}
package/cors.mjs ADDED
@@ -0,0 +1,2 @@
1
+ const e=(e={})=>{const{origin:o="*",credentials:s=!1,allowMethods:r="*",allowHeaders:n,exposeHeaders:c,maxAge:t}=e,a={"access-control-allow-headers":n?.join?.(",")??n,"access-control-expose-headers":c?.join?.(",")??c,"access-control-allow-methods":r?.join?.(",")??r,"access-control-max-age":t,"access-control-allow-credentials":s},l=e=>{const r=e?.headers.get("origin");return!0===o?r:o instanceof RegExp?o.test(r)?r:void 0:Array.isArray(o)?o.includes(r)?r:void 0:o instanceof Function?o(r):"*"==o&&s?r:o};return{corsify:(e,o)=>e?.headers?.get("access-control-allow-origin")?e:new Response(e.body,{...e,headers:[...e.headers,["access-control-allow-origin",l(o)],...Object.entries(a)].filter((e=>e[1]))}),preflight:e=>{if("OPTIONS"==e.method)return new Response(null,{status:204,headers:Object.entries({"access-control-allow-origin":l(e),...a}).filter((e=>e[1]))})}}};export{e as cors};
2
+ //# sourceMappingURL=cors.mjs.map
package/cors.mjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cors.mjs","sources":["../src/src/cors.ts"],"sourcesContent":[null],"names":["cors","options","origin","credentials","allowMethods","allowHeaders","exposeHeaders","maxAge","corsHeaders","join","getAccessControlOrigin","request","requestOrigin","headers","get","RegExp","test","undefined","Array","isArray","includes","Function","corsify","response","Response","body","Object","entries","filter","v","preflight","method","status"],"mappings":"MAUaA,EAAO,CAACC,EAAuB,MAE1C,MAAMC,OACJA,EAAS,IAAGC,YACZA,GAAc,EAAKC,aACnBA,EAAe,IAAGC,aAClBA,EAAYC,cACZA,EAAaC,OACbA,GACEN,EAGEO,EAAmC,CACvC,+BAAgCH,GAAcI,OAAO,MAAQJ,EAE7D,gCAAiCC,GAAeG,OAAO,MAAQH,EAE/D,+BAAgCF,GAAcK,OAAO,MAAQL,EAC7D,yBAA0BG,EAC1B,mCAAoCJ,GAGhCO,EAA0BC,IAC9B,MAAMC,EAAgBD,GAASE,QAAQC,IAAI,UAG3C,OAAe,IAAXZ,EAAwBU,EAExBV,aAAkBa,OAAeb,EAAOc,KAAKJ,GAAiBA,OAAgBK,EAE9EC,MAAMC,QAAQjB,GAAgBA,EAAOkB,SAASR,GAAiBA,OAAgBK,EAE/Ef,aAAkBmB,SAAiBnB,EAAOU,GAG7B,KAAVV,GAAiBC,EACtBS,EACAV,CAAM,EA+BV,MAAO,CAAEoB,QAhBO,CAACC,EAAoBZ,IAE/BY,GAAUV,SAASC,IAAI,+BAAuCS,EAE3D,IAAIC,SAASD,EAASE,KAAM,IAC9BF,EAEHV,QAAS,IACJU,EAASV,QACZ,CAAC,8BAA+BH,EAAuBC,OACpDe,OAAOC,QAAQnB,IAClBoB,QAAOC,GAAKA,EAAE,OAKFC,UA5BCnB,IACjB,GAAsB,WAAlBA,EAAQoB,OACV,OAAO,IAAIP,SAAS,KAAM,CACxBQ,OAAQ,IACRnB,QAASa,OAAOC,QAAQ,CACtB,8BAA+BjB,EAAuBC,MACnDH,IACFoB,QAAOC,GAAKA,EAAE,MAEpB,EAmB0B"}
package/index.d.ts CHANGED
@@ -14,4 +14,4 @@ export * from './webp';
14
14
  export * from './withContent';
15
15
  export * from './withCookies';
16
16
  export * from './withParams';
17
- export * from './createCors';
17
+ export * from './cors';
package/index.js CHANGED
@@ -1,2 +1,2 @@
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;
1
+ "use strict";const e=({base:e="",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,s,a)=>(r,...n)=>t.push([o.toUpperCase?.(),RegExp(`^${(a=(e+r).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),n,a])&&s}),routes:t,...r,async fetch(e,...o){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 r.before||[])if(null!=(s=await t(e.proxy??e,...o)))break e;t:for(let[r,c,l,p]of t)if((r==e.method||"ALL"==r)&&(a=n.pathname.match(c))){e.params=a.groups||{},e.route=p;for(let t of l)if(null!=(s=await t(e.proxy??e,...o)))break t}}catch(t){if(!r.catch)throw t;s=await r.catch(t,e.proxy??e,...o)}try{for(let t of r.finally||[])s=await t(s,e.proxy??e,...o)??s}catch(t){if(!r.catch)throw t;s=await r.catch(t,e.proxy??e,...o)}return s}}),t=(e="text/plain; charset=utf-8",t)=>(r,{...o}={})=>{if(void 0===r||r instanceof Response)return r;const s=new Response(t?.(r)??r,o);return s.headers.set("content-type",e),s},r=t("application/json; charset=utf-8",JSON.stringify),o=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:r,...s}=e;e=e.status||500,t={error:r||o(e),...s}}return t={status:e,..."object"==typeof t?t:{error:t||o(e)}},r(t,{status:e})},a=e=>{e.proxy=new Proxy(e.proxy||e,{get:(t,r)=>void 0!==t[r]?t[r].bind?.(e)||t[r]:t?.params?.[r]})};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),l=t("text/html"),p=t("image/jpeg"),i=t("image/png"),u=t("image/webp");exports.AutoRouter=({format:t=r,missing:o=(()=>s(404)),finally:n=[],before:c=[],...l}={})=>e({before:[a,...c],catch:s,finally:[(e,...t)=>e??o(e,...t),t,...n],...l}),exports.IttyRouter=({base:e="",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,s,a)=>(r,...n)=>t.push([o.toUpperCase(),RegExp(`^${(a=(e+r).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),n,a])&&s}),routes:t,...r,async fetch(e,...r){let o,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,p]of t)if((n==e.method||"ALL"==n)&&(s=a.pathname.match(c))){e.params=s.groups||{},e.route=p;for(let t of l)if(null!=(o=await t(e.proxy??e,...r)))return o}}}),exports.Router=e,exports.StatusError=n,exports.cors=(e={})=>{const{origin:t="*",credentials:r=!1,allowMethods:o="*",allowHeaders:s,exposeHeaders:a,maxAge:n}=e,c={"access-control-allow-headers":s?.join?.(",")??s,"access-control-expose-headers":a?.join?.(",")??a,"access-control-allow-methods":o?.join?.(",")??o,"access-control-max-age":n,"access-control-allow-credentials":r},l=e=>{const o=e?.headers.get("origin");return!0===t?o:t instanceof RegExp?t.test(o)?o:void 0:Array.isArray(t)?t.includes(o)?o:void 0:t instanceof Function?t(o):"*"==t&&r?o:t};return{corsify:(e,t)=>e?.headers?.get("access-control-allow-origin")?e:new Response(e.body,{...e,headers:[...e.headers,["access-control-allow-origin",l(t)],...Object.entries(c)].filter((e=>e[1]))}),preflight:e=>{if("OPTIONS"==e.method)return new Response(null,{status:204,headers:Object.entries({"access-control-allow-origin":l(e),...c}).filter((e=>e[1]))})}}},exports.createResponse=t,exports.error=s,exports.html=l,exports.jpeg=p,exports.json=r,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=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,r])=>r?(e[t]=r,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/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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"}
1
+ {"version":3,"file":"index.js","sources":["../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/IttyRouter.ts","../src/src/cors.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","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","origin","credentials","allowMethods","allowHeaders","exposeHeaders","maxAge","corsHeaders","join","getAccessControlOrigin","requestOrigin","test","Array","isArray","includes","Function","corsify","entries","filter","preflight","content","clone","formData","cookies","split","map","p","reduce"],"mappings":"mBA2BaA,EAAS,EAGlBC,OAAO,GAAIC,SAAS,MAAOC,GAAyB,MACrD,CACCC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAkBC,IACjD,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,iBAGvBJ,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,EAE/DG,EAAG,IACD,IAAK,IAAIC,KAAW3B,EAAM4B,QAAU,GAClC,GAAqE,OAAhEX,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMU,EAGnFI,EAAO,IAAK,IAAKC,EAAQC,EAAOvB,EAAUF,KAASR,EACjD,IAAKgC,GAAUhB,EAAQgB,QAAoB,OAAVA,KAAqBb,EAAQC,EAAIc,SAASf,MAAMc,IAAS,CACxFjB,EAAQmB,OAAShB,EAAMiB,QAAU,CAAA,EACjCpB,EAAQP,MAAQD,EAEhB,IAAK,IAAIoB,KAAWlB,EAClB,GAAqE,OAAhEQ,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,MAAMc,CACpF,CACJ,CAAC,MAAOM,GACP,IAAKpC,EAAMqC,MAAO,MAAMD,EACxBnB,QAAiBjB,EAAMqC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAChE,CAED,IACE,IAAK,IAAIW,KAAW3B,EAAMsC,SAAW,GACnCrB,QAAiBU,EAAQV,EAAUF,EAAQc,OAASd,KAAYC,IAASC,CAC5E,CAAC,MAAMmB,GACN,IAAKpC,EAAMqC,MAAO,MAAMD,EACtBnB,QAAiBjB,EAAMqC,MAAMD,EAAKrB,EAAQc,OAASd,KAAYC,EAClE,CAED,OAAOC,CACR,ICnFSsB,EACZ,CACEC,EAAS,4BACTC,IAEF,CAACC,MAAWC,GAAY,MACtB,QAAaC,IAATF,GAAsBA,aAAgBG,SAAU,OAAOH,EAE3D,MAAMzB,EAAW,IAAI4B,SAASJ,IAAYC,IAASA,EAAMC,GAEzD,OADA1B,EAAS6B,QAAQC,IAAI,eAAgBP,GAC9BvB,CAAQ,EChBN+B,EAAOT,EAClB,kCACAU,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,KAAYrB,GAAQkB,EAC5BA,EAAIA,EAAEI,QAAU,IAChBH,EAAI,CACFF,MAAOI,GAAWN,EAAWG,MAC1BlB,EAEN,CAOD,OALAmB,EAAI,CACFG,OAAQJ,KACS,iBAANC,EAAiBA,EAAI,CAAEF,MAAOE,GAAKJ,EAAWG,KAGpDN,EAAKO,EAAG,CAAEG,OAAQJ,GAAI,ECpClBK,EAAc5C,IACzBA,EAAQc,MAAQ,IAAI3B,MAAMa,EAAQc,OAASd,EAAS,CAClDZ,IAAK,CAACyD,EAAKvD,SAAuBuC,IAAdgB,EAAIvD,GACNuD,EAAIvD,GAAMwD,OAAO9C,IAAY6C,EAAIvD,GACjCuD,GAAK1B,SAAS7B,IAChC,ECFE,MAAOyD,UAAoBN,MAC/BE,OAGAK,YAAYL,EAAS,IAAKhB,GACxBsB,MAAsB,iBAATtB,EAAoBA,EAAKW,MAAQX,GAC9B,iBAATA,GAAqBuB,OAAOC,OAAOC,KAAMzB,GAChDyB,KAAKT,OAASA,CACf,QCXUU,EAAO7B,EAClB,4BACA8B,QCFWC,EAAO/B,EAAe,aCAtBgC,EAAOhC,EAAe,cCAtBiC,EAAMjC,EAAe,aCArBkC,EAAOlC,EAAe,iCCUT,EACxBC,SAASQ,EACT0B,UAAU,KAAMrB,EAAM,MACtBf,QAASqC,EAAI,GACb/C,SAAS,MACNe,GAA+B,CAAE,IACjC9C,EAAO,CACV+B,OAAQ,CACN+B,KACG/B,GAELS,MAAOgB,EACPf,QAAS,CACP,CAACsC,KAAW5D,IAAS4D,GAAKF,EAAQE,KAAM5D,GACxCwB,KACGmC,MAEFhC,uBC2CqB,EAGtB7C,OAAO,GAAIC,SAAS,MAAOC,GAA6B,MACzD,CACCC,UAAW,IAAIC,MAAM,GAAI,CAEvBC,IAAK,CAACC,EAAaC,EAAcC,EAAkBC,IACjD,CAACC,KAAkBC,IACjBV,EAAOW,KACL,CACEL,EAAKM,cACLC,OAAO,KAAKL,GAAQT,EAAOU,GACxBK,QAAQ,aAAc,OACtBA,QAAQ,oBAAqB,gBAC7BA,QAAQ,kBAAmB,uBAC3BA,QAAQ,MAAO,OACfA,QAAQ,WAAY,iBAGvBJ,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,IAAKQ,EAAQC,EAAOvB,EAAUF,KAASR,EAC1C,IAAKgC,GAAUhB,EAAQgB,QAAoB,OAAVA,KAAqBb,EAAQC,EAAIc,SAASf,MAAMc,IAAS,CACxFjB,EAAQmB,OAAShB,EAAMiB,QAAU,CAAA,EACjCpB,EAAQP,MAAQD,EAChB,IAAK,IAAIoB,KAAWlB,EAClB,GAAqE,OAAhEQ,QAAiBU,EAAQZ,EAAQc,OAASd,KAAYC,IAAgB,OAAOC,CACrF,CACJ,wDC3Ge,CAAC0B,EAAuB,MAE1C,MAAMkC,OACJA,EAAS,IAAGC,YACZA,GAAc,EAAKC,aACnBA,EAAe,IAAGC,aAClBA,EAAYC,cACZA,EAAaC,OACbA,GACEvC,EAGEwC,EAAmC,CACvC,+BAAgCH,GAAcI,OAAO,MAAQJ,EAE7D,gCAAiCC,GAAeG,OAAO,MAAQH,EAE/D,+BAAgCF,GAAcK,OAAO,MAAQL,EAC7D,yBAA0BG,EAC1B,mCAAoCJ,GAGhCO,EAA0BtE,IAC9B,MAAMuE,EAAgBvE,GAAS+B,QAAQ3C,IAAI,UAG3C,OAAe,IAAX0E,EAAwBS,EAExBT,aAAkBjE,OAAeiE,EAAOU,KAAKD,GAAiBA,OAAgB1C,EAE9E4C,MAAMC,QAAQZ,GAAgBA,EAAOa,SAASJ,GAAiBA,OAAgB1C,EAE/EiC,aAAkBc,SAAiBd,EAAOS,GAG7B,KAAVT,GAAiBC,EACtBQ,EACAT,CAAM,EA+BV,MAAO,CAAEe,QAhBO,CAAC3E,EAAoBF,IAE/BE,GAAU6B,SAAS3C,IAAI,+BAAuCc,EAE3D,IAAI4B,SAAS5B,EAASyB,KAAM,IAC9BzB,EAEH6B,QAAS,IACJ7B,EAAS6B,QACZ,CAAC,8BAA+BuC,EAAuBtE,OACpDkD,OAAO4B,QAAQV,IAClBW,QAAOvE,GAAKA,EAAE,OAKFwE,UA5BChF,IACjB,GAAsB,WAAlBA,EAAQgB,OACV,OAAO,IAAIc,SAAS,KAAM,CACxBa,OAAQ,IACRZ,QAASmB,OAAO4B,QAAQ,CACtB,8BAA+BR,EAAuBtE,MACnDoE,IACFW,QAAOvE,GAAKA,EAAE,MAEpB,EAmB0B,qHC9ET,CAACmC,EAAgBf,IACrC,IAAIE,SAAS,KAAM,IAAKF,EAASe,6DCMR5C,MAAOC,IAChCA,EAAQiF,QAAUjF,EAAQ2B,WAChB3B,EAAQkF,QAAQjD,OACnBX,OAAM,IAAMtB,EAAQkF,QAAQC,aAC5B7D,OAAM,IAAMtB,EAAQqD,cACvBxB,CAAS,sBCLagC,IAC1BA,EAAEuB,SAAWvB,EAAE9B,QAAQ3C,IAAI,WAAa,IACrCiG,MAAM,QACNC,KAAKC,GAAsBA,EAAEF,MAAM,WACnCG,QAAO,CAACjD,GAAkBhC,EAAGC,KAAgBA,GAAM+B,EAAEhC,GAAKC,EAAI+B,GAAKA,GAAI,CAAE,EAAC"}
package/index.mjs CHANGED
@@ -1,2 +1,2 @@
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};
1
+ const e=({base:e="",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...n)=>t.push([o.toUpperCase(),RegExp(`^${(s=(e+r).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),n,s])&&a}),routes:t,...r,async fetch(e,...r){let o,a,s=new URL(e.url),n=e.query={__proto__:null};for(let[e,t]of s.searchParams)n[e]=n[e]?[].concat(n[e],t):t;for(let[n,c,l,i]of t)if((n==e.method||"ALL"==n)&&(a=s.pathname.match(c))){e.params=a.groups||{},e.route=i;for(let t of l)if(null!=(o=await t(e.proxy??e,...r)))return o}}}),t=({base:e="",routes:t=[],...r}={})=>({__proto__:new Proxy({},{get:(r,o,a,s)=>(r,...n)=>t.push([o.toUpperCase?.(),RegExp(`^${(s=(e+r).replace(/\/+(\/|$)/g,"$1")).replace(/(\/?\.?):(\w+)\+/g,"($1(?<$2>*))").replace(/(\/?\.?):(\w+)/g,"($1(?<$2>[^$1/]+?))").replace(/\./g,"\\.").replace(/(\/?)\*/g,"($1.*)?")}/*$`),n,s])&&a}),routes:t,...r,async fetch(e,...o){let a,s,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 r.before||[])if(null!=(a=await t(e.proxy??e,...o)))break e;t:for(let[r,c,l,i]of t)if((r==e.method||"ALL"==r)&&(s=n.pathname.match(c))){e.params=s.groups||{},e.route=i;for(let t of l)if(null!=(a=await t(e.proxy??e,...o)))break t}}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}try{for(let t of r.finally||[])a=await t(a,e.proxy??e,...o)??a}catch(t){if(!r.catch)throw t;a=await r.catch(t,e.proxy??e,...o)}return a}}),r=(e="text/plain; charset=utf-8",t)=>(r,{...o}={})=>{if(void 0===r||r instanceof Response)return r;const a=new Response(t?.(r)??r,o);return a.headers.set("content-type",e),a},o=r("application/json; charset=utf-8",JSON.stringify),a=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:r,...o}=e;e=e.status||500,t={error:r||a(e),...o}}return t={status:e,..."object"==typeof t?t:{error:t||a(e)}},o(t,{status:e})},n=e=>{e.proxy=new Proxy(e.proxy||e,{get:(t,r)=>void 0!==t[r]?t[r].bind?.(e)||t[r]:t?.params?.[r]})},c=({format:e=o,missing:r=(()=>s(404)),finally:a=[],before:c=[],...l}={})=>t({before:[n,...c],catch:s,finally:[(e,...t)=>e??r(e,...t),e,...a],...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=r("text/plain; charset=utf-8",String),f=r("text/html"),u=r("image/jpeg"),h=r("image/png"),g=r("image/webp"),d=async e=>{e.content=e.body?await e.clone().json().catch((()=>e.clone().formData())).catch((()=>e.text())):void 0},w=e=>{e.cookies=(e.headers.get("Cookie")||"").split(/;\s*/).map((e=>e.split(/=(.+)/))).reduce(((e,[t,r])=>r?(e[t]=r,e):e),{})},y=(e={})=>{const{origin:t="*",credentials:r=!1,allowMethods:o="*",allowHeaders:a,exposeHeaders:s,maxAge:n}=e,c={"access-control-allow-headers":a?.join?.(",")??a,"access-control-expose-headers":s?.join?.(",")??s,"access-control-allow-methods":o?.join?.(",")??o,"access-control-max-age":n,"access-control-allow-credentials":r},l=e=>{const o=e?.headers.get("origin");return!0===t?o:t instanceof RegExp?t.test(o)?o:void 0:Array.isArray(t)?t.includes(o)?o:void 0:t instanceof Function?t(o):"*"==t&&r?o:t};return{corsify:(e,t)=>e?.headers?.get("access-control-allow-origin")?e:new Response(e.body,{...e,headers:[...e.headers,["access-control-allow-origin",l(t)],...Object.entries(c)].filter((e=>e[1]))}),preflight:e=>{if("OPTIONS"==e.method)return new Response(null,{status:204,headers:Object.entries({"access-control-allow-origin":l(e),...c}).filter((e=>e[1]))})}}};export{c as AutoRouter,e as IttyRouter,t as Router,l as StatusError,y as cors,r as createResponse,s as error,f as html,u as jpeg,o 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/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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"}
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/cors.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","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","cors","origin","credentials","allowMethods","allowHeaders","exposeHeaders","maxAge","corsHeaders","join","getAccessControlOrigin","requestOrigin","test","Array","isArray","includes","Function","corsify","entries","filter","preflight"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "itty-router",
3
- "version": "4.3.0-next.1",
3
+ "version": "4.3.0-next.3",
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",
@@ -16,10 +16,10 @@
16
16
  "require": "./AutoRouter.js",
17
17
  "types": "./AutoRouter.d.ts"
18
18
  },
19
- "./createCors": {
20
- "import": "./createCors.mjs",
21
- "require": "./createCors.js",
22
- "types": "./createCors.d.ts"
19
+ "./cors": {
20
+ "import": "./cors.mjs",
21
+ "require": "./cors.js",
22
+ "types": "./cors.d.ts"
23
23
  },
24
24
  "./createResponse": {
25
25
  "import": "./createResponse.mjs",
package/withContent.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";exports.withContent=async t=>{t.content=await t.clone().json().catch((()=>t.clone().formData())).catch((()=>t.text()))};
1
+ "use strict";exports.withContent=async t=>{t.content=t.body?await t.clone().json().catch((()=>t.clone().formData())).catch((()=>t.text())):void 0};
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","clone","json","catch","formData","text"],"mappings":"iCAO2BA,MAAOC,IAChCA,EAAQC,cAAgBD,EAAQE,QAAQC,OACbC,OAAM,IAAMJ,EAAQE,QAAQG,aAC5BD,OAAM,IAAMJ,EAAQM,QAAO"}
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"}
package/withContent.mjs CHANGED
@@ -1,2 +1,2 @@
1
- const t=async t=>{t.content=await t.clone().json().catch((()=>t.clone().formData())).catch((()=>t.text()))};export{t as withContent};
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};
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","clone","json","catch","formData","text"],"mappings":"MAOaA,EAAcC,MAAOC,IAChCA,EAAQC,cAAgBD,EAAQE,QAAQC,OACbC,OAAM,IAAMJ,EAAQE,QAAQG,aAC5BD,OAAM,IAAMJ,EAAQM,QAAO"}
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"}
package/createCors.d.ts DELETED
@@ -1,11 +0,0 @@
1
- import { IRequest } from './IttyRouter';
2
- export type CorsOptions = {
3
- origins?: string[] | ((origin: string) => boolean);
4
- maxAge?: number;
5
- methods?: string[];
6
- headers?: any;
7
- };
8
- export declare const createCors: (options?: CorsOptions) => {
9
- corsify: (response: Response) => Response;
10
- preflight: (r: IRequest) => Response | undefined;
11
- };
package/createCors.js DELETED
@@ -1,2 +0,0 @@
1
- "use strict";exports.createCors=(e={})=>{const{origins:s=["*"],maxAge:o,methods:t=["GET"],headers:n={}}=e;let r;const c="function"==typeof s?s:e=>s.includes(e)||s.includes("*"),l={"content-type":"application/json","Access-Control-Allow-Methods":t.join(", "),...n};o&&(l["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:s,status:o,body:t}=e;return[101,301,302,308].includes(o)||s.get("access-control-allow-origin")?e:new Response(t,{status:o,headers:{...Object.fromEntries(s),...l,...r,"content-type":s.get("content-type")}})},preflight:e=>{const s=[...new Set(["OPTIONS",...t])],o=e.headers.get("origin")||"";if(r=c(o)&&{"Access-Control-Allow-Origin":o},"OPTIONS"===e.method){const o={...l,"Access-Control-Allow-Methods":s.join(", "),"Access-Control-Allow-Headers":e.headers.get("Access-Control-Request-Headers"),...r};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:s.join(", ")}})}}}};
2
- //# sourceMappingURL=createCors.js.map
package/createCors.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"createCors.js","sources":["../src/src/createCors.ts"],"sourcesContent":[null],"names":["options","origins","maxAge","methods","headers","allowOrigin","isAllowOrigin","origin","includes","rHeaders","join","corsify","response","Error","status","body","get","Response","Object","fromEntries","preflight","r","useMethods","Set","method","reqHeaders","Allow"],"mappings":"gCAU0B,CAACA,EAAuB,MAEhD,MAAMC,QAAEA,EAAU,CAAC,KAAIC,OAAEA,EAAMC,QAAEA,EAAU,CAAC,OAAMC,QAAEA,EAAU,CAAE,GAAKJ,EAErE,IAAIK,EACJ,MAAMC,EAAmC,mBAAZL,EACzBA,EACCM,GAAoBN,EAAQO,SAASD,IAAWN,EAAQO,SAAS,KAGhEC,EAAW,CACf,eAAgB,mBAChB,+BAAgCN,EAAQO,KAAK,SAC1CN,GAIDF,IAAQO,EAAS,0BAA4BP,GA+DjD,MAAO,CAAES,QA5BQC,IACf,IAAKA,EACH,MAAM,IAAIC,MACR,qEAGJ,MAAMT,QAAEA,EAAOU,OAAEA,EAAMC,KAAEA,GAASH,EAGlC,MACE,CAAC,IAAK,IAAK,IAAK,KAAKJ,SAASM,IAC9BV,EAAQY,IAAI,+BAELJ,EAGF,IAAIK,SAASF,EAAM,CACxBD,SACAV,QAAS,IACJc,OAAOC,YAAYf,MACnBK,KACAJ,EACH,eAAgBD,EAAQY,IAAI,kBAE9B,EAIcI,UA5DCC,IAEjB,MAAMC,EAAa,IAAI,IAAIC,IAAI,CAAC,aAAcpB,KACxCI,EAASc,EAAEjB,QAAQY,IAAI,WAAa,GAM1C,GAHAX,EAAcC,EAAcC,IAAW,CAAE,8BAA+BA,GAGvD,YAAbc,EAAEG,OAAsB,CAC1B,MAAMC,EAAa,IACdhB,EACH,+BAAgCa,EAAWZ,KAAK,MAChD,+BAAgCW,EAAEjB,QAAQY,IACxC,qCAECX,GAIL,OAAO,IAAIY,SAAS,KAAM,CACxBb,QACEiB,EAAEjB,QAAQY,IAAI,WACdK,EAAEjB,QAAQY,IAAI,kCACdK,EAAEjB,QAAQY,IAAI,kCACVS,EACA,CAAEC,MAAOJ,EAAWZ,KAAK,QAElC,GAgC0B"}
package/createCors.mjs DELETED
@@ -1,2 +0,0 @@
1
- const e=(e={})=>{const{origins:o=["*"],maxAge:s,methods:t=["GET"],headers:n={}}=e;let r;const c="function"==typeof o?o:e=>o.includes(e)||o.includes("*"),l={"content-type":"application/json","Access-Control-Allow-Methods":t.join(", "),...n};s&&(l["Access-Control-Max-Age"]=s);return{corsify:e=>{if(!e)throw new Error("No fetch handler responded and no upstream to proxy to specified.");const{headers:o,status:s,body:t}=e;return[101,301,302,308].includes(s)||o.get("access-control-allow-origin")?e:new Response(t,{status:s,headers:{...Object.fromEntries(o),...l,...r,"content-type":o.get("content-type")}})},preflight:e=>{const o=[...new Set(["OPTIONS",...t])],s=e.headers.get("origin")||"";if(r=c(s)&&{"Access-Control-Allow-Origin":s},"OPTIONS"===e.method){const s={...l,"Access-Control-Allow-Methods":o.join(", "),"Access-Control-Allow-Headers":e.headers.get("Access-Control-Request-Headers"),...r};return new Response(null,{headers:e.headers.get("Origin")&&e.headers.get("Access-Control-Request-Method")&&e.headers.get("Access-Control-Request-Headers")?s:{Allow:o.join(", ")}})}}}};export{e as createCors};
2
- //# sourceMappingURL=createCors.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"createCors.mjs","sources":["../src/src/createCors.ts"],"sourcesContent":[null],"names":["createCors","options","origins","maxAge","methods","headers","allowOrigin","isAllowOrigin","origin","includes","rHeaders","join","corsify","response","Error","status","body","get","Response","Object","fromEntries","preflight","r","useMethods","Set","method","reqHeaders","Allow"],"mappings":"MAUaA,EAAa,CAACC,EAAuB,MAEhD,MAAMC,QAAEA,EAAU,CAAC,KAAIC,OAAEA,EAAMC,QAAEA,EAAU,CAAC,OAAMC,QAAEA,EAAU,CAAE,GAAKJ,EAErE,IAAIK,EACJ,MAAMC,EAAmC,mBAAZL,EACzBA,EACCM,GAAoBN,EAAQO,SAASD,IAAWN,EAAQO,SAAS,KAGhEC,EAAW,CACf,eAAgB,mBAChB,+BAAgCN,EAAQO,KAAK,SAC1CN,GAIDF,IAAQO,EAAS,0BAA4BP,GA+DjD,MAAO,CAAES,QA5BQC,IACf,IAAKA,EACH,MAAM,IAAIC,MACR,qEAGJ,MAAMT,QAAEA,EAAOU,OAAEA,EAAMC,KAAEA,GAASH,EAGlC,MACE,CAAC,IAAK,IAAK,IAAK,KAAKJ,SAASM,IAC9BV,EAAQY,IAAI,+BAELJ,EAGF,IAAIK,SAASF,EAAM,CACxBD,SACAV,QAAS,IACJc,OAAOC,YAAYf,MACnBK,KACAJ,EACH,eAAgBD,EAAQY,IAAI,kBAE9B,EAIcI,UA5DCC,IAEjB,MAAMC,EAAa,IAAI,IAAIC,IAAI,CAAC,aAAcpB,KACxCI,EAASc,EAAEjB,QAAQY,IAAI,WAAa,GAM1C,GAHAX,EAAcC,EAAcC,IAAW,CAAE,8BAA+BA,GAGvD,YAAbc,EAAEG,OAAsB,CAC1B,MAAMC,EAAa,IACdhB,EACH,+BAAgCa,EAAWZ,KAAK,MAChD,+BAAgCW,EAAEjB,QAAQY,IACxC,qCAECX,GAIL,OAAO,IAAIY,SAAS,KAAM,CACxBb,QACEiB,EAAEjB,QAAQY,IAAI,WACdK,EAAEjB,QAAQY,IAAI,kCACdK,EAAEjB,QAAQY,IAAI,kCACVS,EACA,CAAEC,MAAOJ,EAAWZ,KAAK,QAElC,GAgC0B"}