@visulima/connect 3.0.24 → 3.0.26

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 (49) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/adapter/express.d.cts +7 -0
  3. package/dist/adapter/express.d.mts +7 -0
  4. package/dist/adapter/express.d.ts +7 -0
  5. package/dist/adapter/with-zod.d.cts +8 -0
  6. package/dist/adapter/with-zod.d.mts +8 -0
  7. package/dist/adapter/with-zod.d.ts +8 -0
  8. package/dist/edge.d.cts +30 -0
  9. package/dist/edge.d.mts +30 -0
  10. package/dist/edge.d.ts +30 -0
  11. package/dist/index.cjs +22 -1
  12. package/dist/index.d.cts +12 -128
  13. package/dist/index.d.mts +12 -128
  14. package/dist/index.d.ts +12 -128
  15. package/dist/index.mjs +6 -1
  16. package/dist/node.d.cts +33 -0
  17. package/dist/node.d.mts +33 -0
  18. package/dist/node.d.ts +33 -0
  19. package/dist/packem_shared/EdgeRouter-B-e2l9un.cjs +96 -0
  20. package/dist/packem_shared/EdgeRouter-CdtQHTwm.mjs +90 -0
  21. package/dist/packem_shared/Router-ChnTdYfl.mjs +135 -0
  22. package/dist/packem_shared/Router-Eg_OPxIL.cjs +139 -0
  23. package/dist/packem_shared/createRouter-C8hDVJcV.cjs +102 -0
  24. package/dist/packem_shared/createRouter-_G1XhaP4.mjs +96 -0
  25. package/dist/packem_shared/expressWrapper-CTExfWvM.cjs +10 -0
  26. package/dist/packem_shared/expressWrapper-spfs58is.mjs +8 -0
  27. package/dist/packem_shared/sendJson-DwLYLDbt.mjs +7 -0
  28. package/dist/packem_shared/sendJson-pJY2tT2n.cjs +9 -0
  29. package/dist/packem_shared/withZod-HYgoC7AX.mjs +18 -0
  30. package/dist/packem_shared/withZod-ULTsdyM5.cjs +24 -0
  31. package/dist/router.d.cts +21 -0
  32. package/dist/router.d.mts +21 -0
  33. package/dist/router.d.ts +21 -0
  34. package/dist/utils/send-json.d.cts +9 -0
  35. package/dist/utils/send-json.d.mts +9 -0
  36. package/dist/utils/send-json.d.ts +9 -0
  37. package/package.json +1 -1
  38. package/dist/packem_shared/EdgeRouter-DkYqae6k.mjs +0 -1
  39. package/dist/packem_shared/EdgeRouter-KIBlNPX3.cjs +0 -1
  40. package/dist/packem_shared/Router-Dg3J0bWq.mjs +0 -1
  41. package/dist/packem_shared/Router-fcD22mVn.cjs +0 -1
  42. package/dist/packem_shared/createRouter-Bp84h_yy.mjs +0 -1
  43. package/dist/packem_shared/createRouter-CcKo5sWT.cjs +0 -1
  44. package/dist/packem_shared/expressWrapper-CnZ-5oTw.cjs +0 -1
  45. package/dist/packem_shared/expressWrapper-D-d31tgs.mjs +0 -1
  46. package/dist/packem_shared/sendJson-l4jM19lK.cjs +0 -1
  47. package/dist/packem_shared/sendJson-zUtTFUYn.mjs +0 -1
  48. package/dist/packem_shared/withZod-CvygheEk.cjs +0 -1
  49. package/dist/packem_shared/withZod-wmNwBerD.mjs +0 -1
@@ -0,0 +1,96 @@
1
+ import withZod from './withZod-HYgoC7AX.mjs';
2
+ import { Router } from './Router-ChnTdYfl.mjs';
3
+
4
+ const onNoMatch = async (request, response) => {
5
+ response.statusCode = 404;
6
+ response.end(request.method === "HEAD" ? void 0 : `Route ${request.method} ${request.url} not found`);
7
+ };
8
+ const onError = async (error, _request, response) => {
9
+ response.statusCode = 500;
10
+ console.error(error);
11
+ response.end("Internal Server Error");
12
+ };
13
+ const getPathname = (url) => {
14
+ const queryIndex = url.indexOf("?");
15
+ return queryIndex === -1 ? url : url.slice(0, Math.max(0, queryIndex));
16
+ };
17
+ class NodeRouter {
18
+ all = this.add.bind(this, "");
19
+ connect = this.add.bind(this, "CONNECT");
20
+ delete = this.add.bind(this, "DELETE");
21
+ get = this.add.bind(this, "GET");
22
+ head = this.add.bind(this, "HEAD");
23
+ options = this.add.bind(this, "OPTIONS");
24
+ patch = this.add.bind(this, "PATCH");
25
+ post = this.add.bind(this, "POST");
26
+ put = this.add.bind(this, "PUT");
27
+ trace = this.add.bind(this, "TRACE");
28
+ onError;
29
+ onNoMatch;
30
+ router = new Router();
31
+ constructor(options = {}) {
32
+ this.onNoMatch = options.onNoMatch ?? onNoMatch;
33
+ this.onError = options.onError ?? onError;
34
+ }
35
+ clone() {
36
+ const r = new NodeRouter({ onError: this.onError, onNoMatch: this.onNoMatch });
37
+ r.router = this.router.clone();
38
+ return r;
39
+ }
40
+ handler() {
41
+ const { routes } = this.router;
42
+ return async (request, response) => {
43
+ const result = this.router.find(request.method, getPathname(request.url));
44
+ this.prepareRequest(request, result);
45
+ try {
46
+ await (result.fns.length === 0 || result.middleOnly ? this.onNoMatch(request, response, routes) : Router.exec(result.fns, request, response));
47
+ } catch (error) {
48
+ await this.onError(error, request, response, routes);
49
+ }
50
+ };
51
+ }
52
+ async run(request, response) {
53
+ const result = this.router.find(request.method, getPathname(request.url));
54
+ if (result.fns.length === 0) {
55
+ return;
56
+ }
57
+ this.prepareRequest(request, result);
58
+ return await Router.exec(result.fns, request, response);
59
+ }
60
+ use(base, ...fns) {
61
+ if (typeof base === "function" || base instanceof NodeRouter) {
62
+ fns.unshift(base);
63
+ base = "/";
64
+ }
65
+ this.router.use(base, ...fns.map((function_) => function_ instanceof NodeRouter ? function_.router : function_));
66
+ return this;
67
+ }
68
+ add(method, routeOrFunction, zodOrRouteOrFunction, ...fns) {
69
+ if (typeof routeOrFunction === "string" && typeof zodOrRouteOrFunction === "function") {
70
+ fns = [zodOrRouteOrFunction];
71
+ } else if (typeof zodOrRouteOrFunction === "object") {
72
+ if (typeof routeOrFunction === "function") {
73
+ fns = [withZod(zodOrRouteOrFunction, routeOrFunction)];
74
+ } else {
75
+ fns = fns.map(
76
+ (function_) => withZod(zodOrRouteOrFunction, function_)
77
+ );
78
+ }
79
+ } else if (typeof zodOrRouteOrFunction === "function") {
80
+ fns = [zodOrRouteOrFunction];
81
+ }
82
+ this.router.add(method, routeOrFunction, ...fns);
83
+ return this;
84
+ }
85
+ // eslint-disable-next-line class-methods-use-this
86
+ prepareRequest(request, findResult) {
87
+ request.params = {
88
+ ...findResult.params,
89
+ ...request.params
90
+ // original params will take precedence
91
+ };
92
+ }
93
+ }
94
+ const createRouter = (options = {}) => new NodeRouter(options);
95
+
96
+ export { NodeRouter, createRouter, getPathname };
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ const expressWrapper = (function_) => async (request, response, next) => (
4
+ // eslint-disable-next-line compat/compat
5
+ await new Promise((resolve, reject) => {
6
+ function_(request, response, (error) => error ? reject(error) : resolve());
7
+ }).then(next)
8
+ );
9
+
10
+ module.exports = expressWrapper;
@@ -0,0 +1,8 @@
1
+ const expressWrapper = (function_) => async (request, response, next) => (
2
+ // eslint-disable-next-line compat/compat
3
+ await new Promise((resolve, reject) => {
4
+ function_(request, response, (error) => error ? reject(error) : resolve());
5
+ }).then(next)
6
+ );
7
+
8
+ export { expressWrapper as default };
@@ -0,0 +1,7 @@
1
+ const sendJson = (response, statusCode, jsonBody) => {
2
+ response.setHeader("content-type", "application/json; charset=utf-8");
3
+ response.statusCode = statusCode;
4
+ response.end(JSON.stringify(jsonBody, null, 2));
5
+ };
6
+
7
+ export { sendJson as default };
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ const sendJson = (response, statusCode, jsonBody) => {
4
+ response.setHeader("content-type", "application/json; charset=utf-8");
5
+ response.statusCode = statusCode;
6
+ response.end(JSON.stringify(jsonBody, null, 2));
7
+ };
8
+
9
+ module.exports = sendJson;
@@ -0,0 +1,18 @@
1
+ import createHttpError from 'http-errors';
2
+ import { ZodError } from 'zod';
3
+
4
+ const withZod = (schema, handler) => async (request, response, next) => {
5
+ let transformedRequest = request;
6
+ try {
7
+ transformedRequest = await schema.parseAsync(request);
8
+ } catch (error) {
9
+ let { message } = error;
10
+ if (error instanceof ZodError && typeof error.format === "function") {
11
+ message = error.issues.map((issue) => `${issue.path.join("/")} - ${issue.message}`).join("/n");
12
+ }
13
+ throw createHttpError(422, message);
14
+ }
15
+ return handler(transformedRequest, response, next);
16
+ };
17
+
18
+ export { withZod as default };
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ const createHttpError = require('http-errors');
4
+ const zod = require('zod');
5
+
6
+ const _interopDefaultCompat = e => e && typeof e === 'object' && 'default' in e ? e.default : e;
7
+
8
+ const createHttpError__default = /*#__PURE__*/_interopDefaultCompat(createHttpError);
9
+
10
+ const withZod = (schema, handler) => async (request, response, next) => {
11
+ let transformedRequest = request;
12
+ try {
13
+ transformedRequest = await schema.parseAsync(request);
14
+ } catch (error) {
15
+ let { message } = error;
16
+ if (error instanceof zod.ZodError && typeof error.format === "function") {
17
+ message = error.issues.map((issue) => `${issue.path.join("/")} - ${issue.message}`).join("/n");
18
+ }
19
+ throw createHttpError__default(422, message);
20
+ }
21
+ return handler(transformedRequest, response, next);
22
+ };
23
+
24
+ module.exports = withZod;
@@ -0,0 +1,21 @@
1
+ import type { FindResult, FunctionLike, HttpMethod, Nextable, RouteMatch } from "./types.d.d.cts";
2
+ export type Route<H> = {
3
+ fns: (H | Router<H extends FunctionLike ? H : never>)[];
4
+ isMiddleware: boolean;
5
+ method: HttpMethod | "";
6
+ } & ({
7
+ keys: string[] | false;
8
+ pattern: RegExp;
9
+ } | {
10
+ matchAll: true;
11
+ });
12
+ export declare class Router<H extends FunctionLike> {
13
+ base: string;
14
+ routes: Route<Nextable<H>>[];
15
+ static exec<FL extends FunctionLike>(fns: (Nextable<FL> | undefined)[], ...arguments_: Parameters<FL>): Promise<any>;
16
+ constructor(base?: string, routes?: Route<Nextable<H>>[]);
17
+ add(method: HttpMethod | "", route: Nextable<H> | RouteMatch, ...fns: Nextable<H>[]): this;
18
+ clone(base?: string): Router<H>;
19
+ find(method: HttpMethod, pathname: string): FindResult<H>;
20
+ use(base: Nextable<H> | RouteMatch | Router<H>, ...fns: (Nextable<H> | Router<H>)[]): this;
21
+ }
@@ -0,0 +1,21 @@
1
+ import type { FindResult, FunctionLike, HttpMethod, Nextable, RouteMatch } from "./types.d.d.mts";
2
+ export type Route<H> = {
3
+ fns: (H | Router<H extends FunctionLike ? H : never>)[];
4
+ isMiddleware: boolean;
5
+ method: HttpMethod | "";
6
+ } & ({
7
+ keys: string[] | false;
8
+ pattern: RegExp;
9
+ } | {
10
+ matchAll: true;
11
+ });
12
+ export declare class Router<H extends FunctionLike> {
13
+ base: string;
14
+ routes: Route<Nextable<H>>[];
15
+ static exec<FL extends FunctionLike>(fns: (Nextable<FL> | undefined)[], ...arguments_: Parameters<FL>): Promise<any>;
16
+ constructor(base?: string, routes?: Route<Nextable<H>>[]);
17
+ add(method: HttpMethod | "", route: Nextable<H> | RouteMatch, ...fns: Nextable<H>[]): this;
18
+ clone(base?: string): Router<H>;
19
+ find(method: HttpMethod, pathname: string): FindResult<H>;
20
+ use(base: Nextable<H> | RouteMatch | Router<H>, ...fns: (Nextable<H> | Router<H>)[]): this;
21
+ }
@@ -0,0 +1,21 @@
1
+ import type { FindResult, FunctionLike, HttpMethod, Nextable, RouteMatch } from "./types.d.d.ts";
2
+ export type Route<H> = {
3
+ fns: (H | Router<H extends FunctionLike ? H : never>)[];
4
+ isMiddleware: boolean;
5
+ method: HttpMethod | "";
6
+ } & ({
7
+ keys: string[] | false;
8
+ pattern: RegExp;
9
+ } | {
10
+ matchAll: true;
11
+ });
12
+ export declare class Router<H extends FunctionLike> {
13
+ base: string;
14
+ routes: Route<Nextable<H>>[];
15
+ static exec<FL extends FunctionLike>(fns: (Nextable<FL> | undefined)[], ...arguments_: Parameters<FL>): Promise<any>;
16
+ constructor(base?: string, routes?: Route<Nextable<H>>[]);
17
+ add(method: HttpMethod | "", route: Nextable<H> | RouteMatch, ...fns: Nextable<H>[]): this;
18
+ clone(base?: string): Router<H>;
19
+ find(method: HttpMethod, pathname: string): FindResult<H>;
20
+ use(base: Nextable<H> | RouteMatch | Router<H>, ...fns: (Nextable<H> | Router<H>)[]): this;
21
+ }
@@ -0,0 +1,9 @@
1
+ import type { ServerResponse } from "node:http";
2
+ /**
3
+ * Send `JSON` object
4
+ * @param response response object
5
+ * @param statusCode
6
+ * @param jsonBody of data
7
+ */
8
+ declare const sendJson: (response: ServerResponse, statusCode: number, jsonBody: unknown) => void;
9
+ export = sendJson;
@@ -0,0 +1,9 @@
1
+ import type { ServerResponse } from "node:http";
2
+ /**
3
+ * Send `JSON` object
4
+ * @param response response object
5
+ * @param statusCode
6
+ * @param jsonBody of data
7
+ */
8
+ declare const sendJson: (response: ServerResponse, statusCode: number, jsonBody: unknown) => void;
9
+ export default sendJson;
@@ -0,0 +1,9 @@
1
+ import type { ServerResponse } from "node:http";
2
+ /**
3
+ * Send `JSON` object
4
+ * @param response response object
5
+ * @param statusCode
6
+ * @param jsonBody of data
7
+ */
8
+ declare const sendJson: (response: ServerResponse, statusCode: number, jsonBody: unknown) => void;
9
+ export = sendJson;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@visulima/connect",
3
- "version": "3.0.24",
3
+ "version": "3.0.26",
4
4
  "description": "The minimal router and middleware layer for Next.js, Micro, Vercel, or Node.js http/http2 with support for zod validation.",
5
5
  "keywords": [
6
6
  "javascript",
@@ -1 +0,0 @@
1
- var p=Object.defineProperty;var h=(n,t)=>p(n,"name",{value:t,configurable:!0});import c from"./withZod-wmNwBerD.mjs";import{Router as d}from"./Router-Dg3J0bWq.mjs";var f=Object.defineProperty,i=h((n,t)=>f(n,"name",{value:t,configurable:!0}),"r");const l=i(async n=>new Response(n.method==="HEAD"?null:`Route ${n.method} ${n.url} not found`,{status:404}),"onNoMatch"),m=i(async n=>(console.error(n),new Response("Internal Server Error",{status:500})),"onError"),u=i(n=>(n.nextUrl??new URL(n.url)).pathname,"getPathname");class s{static{h(this,"EdgeRouter")}static{i(this,"EdgeRouter")}all=this.add.bind(this,"");connect=this.add.bind(this,"CONNECT");delete=this.add.bind(this,"DELETE");get=this.add.bind(this,"GET");head=this.add.bind(this,"HEAD");options=this.add.bind(this,"OPTIONS");patch=this.add.bind(this,"PATCH");post=this.add.bind(this,"POST");put=this.add.bind(this,"PUT");trace=this.add.bind(this,"TRACE");onError;onNoMatch;router=new d;constructor(t={}){this.onNoMatch=t.onNoMatch??l,this.onError=t.onError??m}clone(){const t=new s({onError:this.onError,onNoMatch:this.onNoMatch});return t.router=this.router.clone(),t}handler(){const{routes:t}=this.router;return async(e,r)=>{const o=this.router.find(e.method,u(e));this.prepareRequest(e,o);try{return await(o.fns.length===0||o.middleOnly?this.onNoMatch(e,r,t):d.exec(o.fns,e,r))}catch(a){return await this.onError(a,e,r,t)}}}async run(t,e){const r=this.router.find(t.method,u(t));if(r.fns.length!==0)return this.prepareRequest(t,r),await d.exec(r.fns,t,e)}use(t,...e){return(typeof t=="function"||t instanceof s)&&(e.unshift(t),t="/"),this.router.use(t,...e.map(r=>r instanceof s?r.router:r)),this}add(t,e,r,...o){return typeof e=="string"&&typeof r=="function"?o=[r]:typeof r=="object"?typeof e=="function"?o=[c(r,e)]:o=o.map(a=>c(r,a)):typeof r=="function"&&(o=[r]),this.router.add(t,e,...o),this}prepareRequest(t,e){t.params={...e.params,...t.params}}}const N=i((n={})=>new s(n),"createEdgeRouter");export{s as EdgeRouter,N as createEdgeRouter,u as getPathname};
@@ -1 +0,0 @@
1
- "use strict";var p=Object.defineProperty;var h=(o,t)=>p(o,"name",{value:t,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("./withZod-CvygheEk.cjs"),d=require("./Router-fcD22mVn.cjs");var l=Object.defineProperty,i=h((o,t)=>l(o,"name",{value:t,configurable:!0}),"r");const f=i(async o=>new Response(o.method==="HEAD"?null:`Route ${o.method} ${o.url} not found`,{status:404}),"onNoMatch"),E=i(async o=>(console.error(o),new Response("Internal Server Error",{status:500})),"onError"),u=i(o=>(o.nextUrl??new URL(o.url)).pathname,"getPathname");class s{static{h(this,"EdgeRouter")}static{i(this,"EdgeRouter")}all=this.add.bind(this,"");connect=this.add.bind(this,"CONNECT");delete=this.add.bind(this,"DELETE");get=this.add.bind(this,"GET");head=this.add.bind(this,"HEAD");options=this.add.bind(this,"OPTIONS");patch=this.add.bind(this,"PATCH");post=this.add.bind(this,"POST");put=this.add.bind(this,"PUT");trace=this.add.bind(this,"TRACE");onError;onNoMatch;router=new d.Router;constructor(t={}){this.onNoMatch=t.onNoMatch??f,this.onError=t.onError??E}clone(){const t=new s({onError:this.onError,onNoMatch:this.onNoMatch});return t.router=this.router.clone(),t}handler(){const{routes:t}=this.router;return async(r,e)=>{const n=this.router.find(r.method,u(r));this.prepareRequest(r,n);try{return await(n.fns.length===0||n.middleOnly?this.onNoMatch(r,e,t):d.Router.exec(n.fns,r,e))}catch(a){return await this.onError(a,r,e,t)}}}async run(t,r){const e=this.router.find(t.method,u(t));if(e.fns.length!==0)return this.prepareRequest(t,e),await d.Router.exec(e.fns,t,r)}use(t,...r){return(typeof t=="function"||t instanceof s)&&(r.unshift(t),t="/"),this.router.use(t,...r.map(e=>e instanceof s?e.router:e)),this}add(t,r,e,...n){return typeof r=="string"&&typeof e=="function"?n=[e]:typeof e=="object"?typeof r=="function"?n=[c(e,r)]:n=n.map(a=>c(e,a)):typeof e=="function"&&(n=[e]),this.router.add(t,r,...n),this}prepareRequest(t,r){t.params={...r.params,...t.params}}}const m=i((o={})=>new s(o),"createEdgeRouter");exports.EdgeRouter=s;exports.createEdgeRouter=m;exports.getPathname=u;
@@ -1 +0,0 @@
1
- var g=Object.defineProperty;var p=(c,e)=>g(c,"name",{value:e,configurable:!0});import{parse as d}from"regexparam";var k=Object.defineProperty,m=p((c,e)=>k(c,"name",{value:e,configurable:!0}),"p");class f{static{p(this,"Router")}constructor(e="/",t=[]){this.base=e,this.routes=t}static{m(this,"Router")}static async exec(e,...t){let r=0;const i=m(()=>{const s=e[++r];return s===void 0?Promise.resolve():s(...t,i)},"next");return e[r](...t,i)}add(e,t,...r){if(typeof t=="function"&&(r.unshift(t),t=""),t==="")this.routes.push({fns:r,isMiddleware:!1,matchAll:!0,method:e});else{const{keys:i,pattern:s}=d(t);this.routes.push({fns:r,isMiddleware:!1,keys:i,method:e,pattern:s})}return this}clone(e){return new f(e,[...this.routes])}find(e,t){let r=!0;const i=[],s={},y=e==="HEAD";for(const n of this.routes){if(n.method!==e&&n.method!==""&&!(y&&n.method==="GET"))continue;let l=!1;if("matchAll"in n)l=!0;else if(n.keys===!1){const o=n.pattern.exec(t);if(o===null)continue;o.groups!==void 0&&Object.keys(o.groups).forEach(a=>{s[a]=o.groups[a]}),l=!0}else if(n.keys.length>0){const o=n.pattern.exec(t);if(o===null)continue;for(let a=0;a<n.keys.length;){const u=n.keys[a];s[u]=o[++a]}l=!0}else n.pattern.test(t)&&(l=!0);l&&(i.push(...n.fns.flatMap(o=>{if(o instanceof f){const{base:a}=o;let u=t.slice(a.length);u.startsWith("/")||(u=`/${u}`);const h=o.find(e,u);return h.middleOnly||(r=!1),Object.assign(s,h.params),h.fns}return o})),n.isMiddleware||(r=!1))}return{fns:i,middleOnly:r,params:s}}use(e,...t){(typeof e=="function"||e instanceof f)&&(t.unshift(e),e="/"),t=t.map(s=>{if(s instanceof f){if(typeof e=="string")return s.clone(e);throw new Error("Mounting a router to RegExp base is not supported")}return s});const{keys:r,pattern:i}=d(e,!0);return this.routes.push({fns:t,isMiddleware:!0,keys:r,method:"",pattern:i}),this}}export{f as Router};
@@ -1 +0,0 @@
1
- "use strict";var g=Object.defineProperty;var p=(f,e)=>g(f,"name",{value:e,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const d=require("regexparam");var b=Object.defineProperty,m=p((f,e)=>b(f,"name",{value:e,configurable:!0}),"p");class l{static{p(this,"Router")}constructor(e="/",t=[]){this.base=e,this.routes=t}static{m(this,"Router")}static async exec(e,...t){let n=0;const i=m(()=>{const s=e[++n];return s===void 0?Promise.resolve():s(...t,i)},"next");return e[n](...t,i)}add(e,t,...n){if(typeof t=="function"&&(n.unshift(t),t=""),t==="")this.routes.push({fns:n,isMiddleware:!1,matchAll:!0,method:e});else{const{keys:i,pattern:s}=d.parse(t);this.routes.push({fns:n,isMiddleware:!1,keys:i,method:e,pattern:s})}return this}clone(e){return new l(e,[...this.routes])}find(e,t){let n=!0;const i=[],s={},y=e==="HEAD";for(const r of this.routes){if(r.method!==e&&r.method!==""&&!(y&&r.method==="GET"))continue;let c=!1;if("matchAll"in r)c=!0;else if(r.keys===!1){const o=r.pattern.exec(t);if(o===null)continue;o.groups!==void 0&&Object.keys(o.groups).forEach(u=>{s[u]=o.groups[u]}),c=!0}else if(r.keys.length>0){const o=r.pattern.exec(t);if(o===null)continue;for(let u=0;u<r.keys.length;){const a=r.keys[u];s[a]=o[++u]}c=!0}else r.pattern.test(t)&&(c=!0);c&&(i.push(...r.fns.flatMap(o=>{if(o instanceof l){const{base:u}=o;let a=t.slice(u.length);a.startsWith("/")||(a=`/${a}`);const h=o.find(e,a);return h.middleOnly||(n=!1),Object.assign(s,h.params),h.fns}return o})),r.isMiddleware||(n=!1))}return{fns:i,middleOnly:n,params:s}}use(e,...t){(typeof e=="function"||e instanceof l)&&(t.unshift(e),e="/"),t=t.map(s=>{if(s instanceof l){if(typeof e=="string")return s.clone(e);throw new Error("Mounting a router to RegExp base is not supported")}return s});const{keys:n,pattern:i}=d.parse(e,!0);return this.routes.push({fns:t,isMiddleware:!0,keys:n,method:"",pattern:i}),this}}exports.Router=l;
@@ -1 +0,0 @@
1
- var f=Object.defineProperty;var h=(n,t)=>f(n,"name",{value:t,configurable:!0});import c from"./withZod-wmNwBerD.mjs";import{Router as d}from"./Router-Dg3J0bWq.mjs";var p=Object.defineProperty,s=h((n,t)=>p(n,"name",{value:t,configurable:!0}),"r");const l=s(async(n,t)=>{t.statusCode=404,t.end(n.method==="HEAD"?void 0:`Route ${n.method} ${n.url} not found`)},"onNoMatch"),m=s(async(n,t,r)=>{r.statusCode=500,console.error(n),r.end("Internal Server Error")},"onError"),u=s(n=>{const t=n.indexOf("?");return t===-1?n:n.slice(0,Math.max(0,t))},"getPathname");class i{static{h(this,"NodeRouter")}static{s(this,"NodeRouter")}all=this.add.bind(this,"");connect=this.add.bind(this,"CONNECT");delete=this.add.bind(this,"DELETE");get=this.add.bind(this,"GET");head=this.add.bind(this,"HEAD");options=this.add.bind(this,"OPTIONS");patch=this.add.bind(this,"PATCH");post=this.add.bind(this,"POST");put=this.add.bind(this,"PUT");trace=this.add.bind(this,"TRACE");onError;onNoMatch;router=new d;constructor(t={}){this.onNoMatch=t.onNoMatch??l,this.onError=t.onError??m}clone(){const t=new i({onError:this.onError,onNoMatch:this.onNoMatch});return t.router=this.router.clone(),t}handler(){const{routes:t}=this.router;return async(r,e)=>{const o=this.router.find(r.method,u(r.url));this.prepareRequest(r,o);try{await(o.fns.length===0||o.middleOnly?this.onNoMatch(r,e,t):d.exec(o.fns,r,e))}catch(a){await this.onError(a,r,e,t)}}}async run(t,r){const e=this.router.find(t.method,u(t.url));if(e.fns.length!==0)return this.prepareRequest(t,e),await d.exec(e.fns,t,r)}use(t,...r){return(typeof t=="function"||t instanceof i)&&(r.unshift(t),t="/"),this.router.use(t,...r.map(e=>e instanceof i?e.router:e)),this}add(t,r,e,...o){return typeof r=="string"&&typeof e=="function"?o=[e]:typeof e=="object"?typeof r=="function"?o=[c(e,r)]:o=o.map(a=>c(e,a)):typeof e=="function"&&(o=[e]),this.router.add(t,r,...o),this}prepareRequest(t,r){t.params={...r.params,...t.params}}}const N=s((n={})=>new i(n),"createRouter");export{i as NodeRouter,N as createRouter,u as getPathname};
@@ -1 +0,0 @@
1
- "use strict";var f=Object.defineProperty;var h=(o,t)=>f(o,"name",{value:t,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("./withZod-CvygheEk.cjs"),d=require("./Router-fcD22mVn.cjs");var l=Object.defineProperty,s=h((o,t)=>l(o,"name",{value:t,configurable:!0}),"r");const p=s(async(o,t)=>{t.statusCode=404,t.end(o.method==="HEAD"?void 0:`Route ${o.method} ${o.url} not found`)},"onNoMatch"),m=s(async(o,t,e)=>{e.statusCode=500,console.error(o),e.end("Internal Server Error")},"onError"),u=s(o=>{const t=o.indexOf("?");return t===-1?o:o.slice(0,Math.max(0,t))},"getPathname");class i{static{h(this,"NodeRouter")}static{s(this,"NodeRouter")}all=this.add.bind(this,"");connect=this.add.bind(this,"CONNECT");delete=this.add.bind(this,"DELETE");get=this.add.bind(this,"GET");head=this.add.bind(this,"HEAD");options=this.add.bind(this,"OPTIONS");patch=this.add.bind(this,"PATCH");post=this.add.bind(this,"POST");put=this.add.bind(this,"PUT");trace=this.add.bind(this,"TRACE");onError;onNoMatch;router=new d.Router;constructor(t={}){this.onNoMatch=t.onNoMatch??p,this.onError=t.onError??m}clone(){const t=new i({onError:this.onError,onNoMatch:this.onNoMatch});return t.router=this.router.clone(),t}handler(){const{routes:t}=this.router;return async(e,r)=>{const n=this.router.find(e.method,u(e.url));this.prepareRequest(e,n);try{await(n.fns.length===0||n.middleOnly?this.onNoMatch(e,r,t):d.Router.exec(n.fns,e,r))}catch(a){await this.onError(a,e,r,t)}}}async run(t,e){const r=this.router.find(t.method,u(t.url));if(r.fns.length!==0)return this.prepareRequest(t,r),await d.Router.exec(r.fns,t,e)}use(t,...e){return(typeof t=="function"||t instanceof i)&&(e.unshift(t),t="/"),this.router.use(t,...e.map(r=>r instanceof i?r.router:r)),this}add(t,e,r,...n){return typeof e=="string"&&typeof r=="function"?n=[r]:typeof r=="object"?typeof e=="function"?n=[c(r,e)]:n=n.map(a=>c(r,a)):typeof r=="function"&&(n=[r]),this.router.add(t,e,...n),this}prepareRequest(t,e){t.params={...e.params,...t.params}}}const E=s((o={})=>new i(o),"createRouter");exports.NodeRouter=i;exports.createRouter=E;exports.getPathname=u;
@@ -1 +0,0 @@
1
- "use strict";var o=Object.defineProperty;var n=(e,r)=>o(e,"name",{value:r,configurable:!0});var p=Object.defineProperty,u=n((e,r)=>p(e,"name",{value:r,configurable:!0}),"n");const v=u(e=>async(r,s,t)=>await new Promise((c,i)=>{e(r,s,a=>a?i(a):c())}).then(t),"expressWrapper");module.exports=v;
@@ -1 +0,0 @@
1
- var u=Object.defineProperty;var n=(e,a)=>u(e,"name",{value:a,configurable:!0});var c=Object.defineProperty,i=n((e,a)=>c(e,"name",{value:a,configurable:!0}),"n");const l=i(e=>async(a,t,s)=>await new Promise((o,p)=>{e(a,t,r=>r?p(r):o())}).then(s),"expressWrapper");export{l as default};
@@ -1 +0,0 @@
1
- "use strict";var r=Object.defineProperty;var n=(e,t)=>r(e,"name",{value:t,configurable:!0});var a=Object.defineProperty,o=n((e,t)=>a(e,"name",{value:t,configurable:!0}),"n");const c=o((e,t,s)=>{e.setHeader("content-type","application/json; charset=utf-8"),e.statusCode=t,e.end(JSON.stringify(s,null,2))},"sendJson");module.exports=c;
@@ -1 +0,0 @@
1
- var r=Object.defineProperty;var n=(e,t)=>r(e,"name",{value:t,configurable:!0});var s=Object.defineProperty,o=n((e,t)=>s(e,"name",{value:t,configurable:!0}),"n");const c=o((e,t,a)=>{e.setHeader("content-type","application/json; charset=utf-8"),e.statusCode=t,e.end(JSON.stringify(a,null,2))},"sendJson");export{c as default};
@@ -1 +0,0 @@
1
- "use strict";var f=Object.defineProperty;var r=(t,e)=>f(t,"name",{value:e,configurable:!0});const p=require("http-errors"),d=require("zod"),l=r(t=>t&&typeof t=="object"&&"default"in t?t.default:t,"_interopDefaultCompat"),y=l(p);var m=Object.defineProperty,h=r((t,e)=>m(t,"name",{value:e,configurable:!0}),"d");const j=h((t,e)=>async(a,i,u)=>{let n=a;try{n=await t.parseAsync(a)}catch(o){let{message:s}=o;throw o instanceof d.ZodError&&typeof o.format=="function"&&(s=o.issues.map(c=>`${c.path.join("/")} - ${c.message}`).join("/n")),y(422,s)}return e(n,i,u)},"withZod");module.exports=j;
@@ -1 +0,0 @@
1
- var c=Object.defineProperty;var i=(e,t)=>c(e,"name",{value:t,configurable:!0});import p from"http-errors";import{ZodError as u}from"zod";var y=Object.defineProperty,d=i((e,t)=>y(e,"name",{value:t,configurable:!0}),"d");const j=d((e,t)=>async(o,f,m)=>{let a=o;try{a=await e.parseAsync(o)}catch(r){let{message:n}=r;throw r instanceof u&&typeof r.format=="function"&&(n=r.issues.map(s=>`${s.path.join("/")} - ${s.message}`).join("/n")),p(422,n)}return t(a,f,m)},"withZod");export{j as default};