@visulima/connect 4.0.0-alpha.2 → 4.0.0-alpha.21
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/CHANGELOG.md +121 -0
- package/LICENSE.md +1 -1
- package/dist/index.cjs +1 -22
- package/dist/index.d.cts +107 -12
- package/dist/index.d.mts +107 -12
- package/dist/index.d.ts +107 -12
- package/dist/index.mjs +1 -6
- package/dist/packem_shared/EdgeRouter-BcLsFhoc.mjs +1 -0
- package/dist/packem_shared/EdgeRouter-C2WRZNVK.cjs +1 -0
- package/dist/packem_shared/Router-CtUe2eVq.cjs +1 -0
- package/dist/packem_shared/Router-ZvrvfK8e.mjs +1 -0
- package/dist/packem_shared/createRouter-DgHlwXny.cjs +1 -0
- package/dist/packem_shared/createRouter-DrcL8lRU.mjs +1 -0
- package/dist/packem_shared/expressWrapper-BMEaodw_.mjs +1 -0
- package/dist/packem_shared/expressWrapper-C745BRwk.cjs +1 -0
- package/dist/packem_shared/sendJson-CIEUTdsi.mjs +1 -0
- package/dist/packem_shared/sendJson-CnJbUMZT.cjs +1 -0
- package/dist/packem_shared/withZod-B5rDrse4.mjs +1 -0
- package/dist/packem_shared/withZod-CQOb0zZR.cjs +1 -0
- package/package.json +40 -40
- package/dist/adapter/express.d.cts +0 -7
- package/dist/adapter/express.d.mts +0 -7
- package/dist/adapter/express.d.ts +0 -7
- package/dist/adapter/with-zod.d.cts +0 -8
- package/dist/adapter/with-zod.d.mts +0 -8
- package/dist/adapter/with-zod.d.ts +0 -8
- package/dist/edge.d.cts +0 -30
- package/dist/edge.d.mts +0 -30
- package/dist/edge.d.ts +0 -30
- package/dist/node.d.cts +0 -33
- package/dist/node.d.mts +0 -33
- package/dist/node.d.ts +0 -33
- package/dist/packem_shared/EdgeRouter-B-e2l9un.cjs +0 -96
- package/dist/packem_shared/EdgeRouter-CdtQHTwm.mjs +0 -90
- package/dist/packem_shared/Router-ChnTdYfl.mjs +0 -135
- package/dist/packem_shared/Router-Eg_OPxIL.cjs +0 -139
- package/dist/packem_shared/createRouter-C8hDVJcV.cjs +0 -102
- package/dist/packem_shared/createRouter-_G1XhaP4.mjs +0 -96
- package/dist/packem_shared/expressWrapper-CTExfWvM.cjs +0 -10
- package/dist/packem_shared/expressWrapper-spfs58is.mjs +0 -8
- package/dist/packem_shared/sendJson-DwLYLDbt.mjs +0 -7
- package/dist/packem_shared/sendJson-pJY2tT2n.cjs +0 -9
- package/dist/packem_shared/withZod-HYgoC7AX.mjs +0 -18
- package/dist/packem_shared/withZod-ULTsdyM5.cjs +0 -24
- package/dist/router.d.cts +0 -21
- package/dist/router.d.mts +0 -21
- package/dist/router.d.ts +0 -21
- package/dist/utils/send-json.d.cts +0 -9
- package/dist/utils/send-json.d.mts +0 -9
- package/dist/utils/send-json.d.ts +0 -9
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,124 @@
|
|
|
1
|
+
## @visulima/connect [4.0.0-alpha.21](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.20...@visulima/connect@4.0.0-alpha.21) (2026-05-14)
|
|
2
|
+
|
|
3
|
+
## @visulima/connect [4.0.0-alpha.20](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.19...@visulima/connect@4.0.0-alpha.20) (2026-05-11)
|
|
4
|
+
|
|
5
|
+
## @visulima/connect [4.0.0-alpha.19](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.18...@visulima/connect@4.0.0-alpha.19) (2026-05-11)
|
|
6
|
+
|
|
7
|
+
## @visulima/connect [4.0.0-alpha.18](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.17...@visulima/connect@4.0.0-alpha.18) (2026-05-10)
|
|
8
|
+
|
|
9
|
+
## @visulima/connect [4.0.0-alpha.17](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.16...@visulima/connect@4.0.0-alpha.17) (2026-05-10)
|
|
10
|
+
|
|
11
|
+
## @visulima/connect [4.0.0-alpha.16](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.15...@visulima/connect@4.0.0-alpha.16) (2026-05-07)
|
|
12
|
+
|
|
13
|
+
## @visulima/connect [4.0.0-alpha.15](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.14...@visulima/connect@4.0.0-alpha.15) (2026-05-07)
|
|
14
|
+
|
|
15
|
+
## @visulima/connect [4.0.0-alpha.14](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.13...@visulima/connect@4.0.0-alpha.14) (2026-05-06)
|
|
16
|
+
|
|
17
|
+
## @visulima/connect [4.0.0-alpha.13](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.12...@visulima/connect@4.0.0-alpha.13) (2026-05-06)
|
|
18
|
+
|
|
19
|
+
### Miscellaneous Chores
|
|
20
|
+
|
|
21
|
+
* **connect:** apply lint cleanup from agent batch ([cad7f98](https://github.com/visulima/visulima/commit/cad7f9857c6c86b0d196e9353f094bdc93594f22))
|
|
22
|
+
|
|
23
|
+
## @visulima/connect [4.0.0-alpha.12](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.11...@visulima/connect@4.0.0-alpha.12) (2026-05-04)
|
|
24
|
+
|
|
25
|
+
## @visulima/connect [4.0.0-alpha.11](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.10...@visulima/connect@4.0.0-alpha.11) (2026-04-30)
|
|
26
|
+
|
|
27
|
+
### Miscellaneous Chores
|
|
28
|
+
|
|
29
|
+
* **connect:** upgrade packem to 2.0.0-alpha.76 ([7e3a33b](https://github.com/visulima/visulima/commit/7e3a33b6668284452fd51af3c99d2af3be2e61d5))
|
|
30
|
+
* re-sort workspace package.json files via vis sort-package-json ([f625696](https://github.com/visulima/visulima/commit/f625696cfac974325774b3243e1a83c3d23acbd7))
|
|
31
|
+
|
|
32
|
+
## @visulima/connect [4.0.0-alpha.10](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.9...@visulima/connect@4.0.0-alpha.10) (2026-04-22)
|
|
33
|
+
|
|
34
|
+
### Bug Fixes
|
|
35
|
+
|
|
36
|
+
* Remove JSR configuration generation script and generated jsr.json files ([#616](https://github.com/visulima/visulima/issues/616)) ([533744b](https://github.com/visulima/visulima/commit/533744b103b74896941db5b727173e617a27a63b))
|
|
37
|
+
|
|
38
|
+
### Miscellaneous Chores
|
|
39
|
+
|
|
40
|
+
* bump engines.node to ^22.14.0 || >=24.10.0 ([c3d0931](https://github.com/visulima/visulima/commit/c3d0931d1504e4f21ebf50ea680cfa7ce4ba15ce))
|
|
41
|
+
* fixed jsr.json ([5d85e51](https://github.com/visulima/visulima/commit/5d85e5179de38e284ec433b14d77c71a1619c8d6))
|
|
42
|
+
|
|
43
|
+
## @visulima/connect [4.0.0-alpha.9](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.8...@visulima/connect@4.0.0-alpha.9) (2026-04-15)
|
|
44
|
+
|
|
45
|
+
### Bug Fixes
|
|
46
|
+
|
|
47
|
+
* **api:** resolve eslint and type-safety issues across api packages ([3601491](https://github.com/visulima/visulima/commit/3601491261de56b5cfad87c97daafd458e4ee3b6))
|
|
48
|
+
* **connect:** cast onNoMatch/onError defaults through unknown for stricter handler types ([d1bfb2e](https://github.com/visulima/visulima/commit/d1bfb2eeb0b0760b9e4a4536bd6a58301f7628db))
|
|
49
|
+
|
|
50
|
+
## @visulima/connect [4.0.0-alpha.8](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.7...@visulima/connect@4.0.0-alpha.8) (2026-04-08)
|
|
51
|
+
|
|
52
|
+
### Bug Fixes
|
|
53
|
+
|
|
54
|
+
* **connect:** properly fix eslint errors in code ([5266ef1](https://github.com/visulima/visulima/commit/5266ef1ee416732409b8bff352247fc972929634))
|
|
55
|
+
* **connect:** remove remaining eslint suppressions with proper code fixes ([bc69936](https://github.com/visulima/visulima/commit/bc69936bd0508def799d95a1772a5792fb57949c))
|
|
56
|
+
* **connect:** resolve eslint errors ([49abc96](https://github.com/visulima/visulima/commit/49abc96b7cccbedb47507adda539cdf715dfc7a9))
|
|
57
|
+
|
|
58
|
+
### Miscellaneous Chores
|
|
59
|
+
|
|
60
|
+
* **api:** remove empty dependency objects from package.json ([f6bfc85](https://github.com/visulima/visulima/commit/f6bfc85c48c973ff8ea0a7db5951794ae0ea3efb))
|
|
61
|
+
* **connect:** add tsconfig.eslint.json for type-aware linting ([d8e6ae1](https://github.com/visulima/visulima/commit/d8e6ae1cfe5ce82d228054feb35b7fa4a4503211))
|
|
62
|
+
* **connect:** apply prettier formatting ([8ecf930](https://github.com/visulima/visulima/commit/8ecf93071cb0087a8c49520cc594a753dba5e39d))
|
|
63
|
+
* **connect:** migrate .prettierrc.cjs to prettier.config.js ([949d441](https://github.com/visulima/visulima/commit/949d44166d9ce6f66044d87eb0bdd0a8b85c03ed))
|
|
64
|
+
|
|
65
|
+
## @visulima/connect [4.0.0-alpha.7](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.6...@visulima/connect@4.0.0-alpha.7) (2026-03-26)
|
|
66
|
+
|
|
67
|
+
### Features
|
|
68
|
+
|
|
69
|
+
* **web:** auto-generate packages page from workspace metadata ([623e520](https://github.com/visulima/visulima/commit/623e5207693a7fe720f5f2f179593a3654c880e3))
|
|
70
|
+
|
|
71
|
+
### Miscellaneous Chores
|
|
72
|
+
|
|
73
|
+
* update homepage URLs to visulima.com/packages/ format ([be42968](https://github.com/visulima/visulima/commit/be42968129df85fb074224435e33135ff44cab91))
|
|
74
|
+
|
|
75
|
+
## @visulima/connect [4.0.0-alpha.6](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.5...@visulima/connect@4.0.0-alpha.6) (2026-03-26)
|
|
76
|
+
|
|
77
|
+
### Bug Fixes
|
|
78
|
+
|
|
79
|
+
* **connect:** use workspace:* for internal [@visulima](https://github.com/visulima) deps ([7edea03](https://github.com/visulima/visulima/commit/7edea03b564d19f7393f01138b74ac1239562dd9))
|
|
80
|
+
* **web:** enhance copy-package-docs with asset copying, link rewriting, and broken link removal ([05e481f](https://github.com/visulima/visulima/commit/05e481f8280ba889d241a645f29c573554822f3d))
|
|
81
|
+
* **web:** improve build setup with incremental stats caching and prod install ([fe33e75](https://github.com/visulima/visulima/commit/fe33e75827586779b4b3a0c6d57b39f889ee6207))
|
|
82
|
+
|
|
83
|
+
### Miscellaneous Chores
|
|
84
|
+
|
|
85
|
+
* **connect:** migrate deps to pnpm catalogs ([30a087b](https://github.com/visulima/visulima/commit/30a087b2f08bfe17b733cf0bdd969f1638189fca))
|
|
86
|
+
* **connect:** update dependencies ([a9ec468](https://github.com/visulima/visulima/commit/a9ec4689533c84c075519c2622f48854ceb05a0d))
|
|
87
|
+
|
|
88
|
+
### Code Refactoring
|
|
89
|
+
|
|
90
|
+
* **docs:** migrate Nextra components to fumadocs-ui, remove Nextra stripping ([484878f](https://github.com/visulima/visulima/commit/484878f01879363ef5e9a0282904dc4627d6060c))
|
|
91
|
+
|
|
92
|
+
## @visulima/connect [4.0.0-alpha.5](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.4...@visulima/connect@4.0.0-alpha.5) (2026-03-06)
|
|
93
|
+
|
|
94
|
+
### Bug Fixes
|
|
95
|
+
|
|
96
|
+
* **connect:** update packem to 2.0.0-alpha.54 ([840996e](https://github.com/visulima/visulima/commit/840996e2d727531c4bf9b27b5f10d709740b0280))
|
|
97
|
+
|
|
98
|
+
### Miscellaneous Chores
|
|
99
|
+
|
|
100
|
+
* **api:** update dependencies ([f3b6f7c](https://github.com/visulima/visulima/commit/f3b6f7c956e8ae2c0da67773b3790f159c07de29))
|
|
101
|
+
* **connect:** update dependencies ([02fa39c](https://github.com/visulima/visulima/commit/02fa39cba26804aa95eef0a69e08bc7d365ff282))
|
|
102
|
+
* **connect:** update dependencies ([bd628b3](https://github.com/visulima/visulima/commit/bd628b38c9b2bc0f6fed5af5f19d4dbace9f7c21))
|
|
103
|
+
* update lock file maintenance ([d83e716](https://github.com/visulima/visulima/commit/d83e71697b75d24704185b66bb521a934d2db02d))
|
|
104
|
+
* year update ([47f4105](https://github.com/visulima/visulima/commit/47f410596ce7190cfea36a073db32e0cec50bbcd))
|
|
105
|
+
|
|
106
|
+
## @visulima/connect [4.0.0-alpha.4](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.3...@visulima/connect@4.0.0-alpha.4) (2025-12-27)
|
|
107
|
+
|
|
108
|
+
### Bug Fixes
|
|
109
|
+
|
|
110
|
+
* **connect:** update package files ([f5594b5](https://github.com/visulima/visulima/commit/f5594b54b2e9dc440fa3ea09efa361ca2030b125))
|
|
111
|
+
|
|
112
|
+
### Miscellaneous Chores
|
|
113
|
+
|
|
114
|
+
* fixed project.json names and schema path ([964722f](https://github.com/visulima/visulima/commit/964722f691db205c7edb9aa6db29e849a647500b))
|
|
115
|
+
|
|
116
|
+
## @visulima/connect [4.0.0-alpha.3](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.2...@visulima/connect@4.0.0-alpha.3) (2025-12-11)
|
|
117
|
+
|
|
118
|
+
### Bug Fixes
|
|
119
|
+
|
|
120
|
+
* update package OG images across multiple packages ([f08e4dd](https://github.com/visulima/visulima/commit/f08e4dd2b105ccb29c8412020a9c2be36d6c1e9e))
|
|
121
|
+
|
|
1
122
|
## @visulima/connect [4.0.0-alpha.2](https://github.com/visulima/visulima/compare/@visulima/connect@4.0.0-alpha.1...@visulima/connect@4.0.0-alpha.2) (2025-12-06)
|
|
2
123
|
|
|
3
124
|
### Bug Fixes
|
package/LICENSE.md
CHANGED
package/dist/index.cjs
CHANGED
|
@@ -1,22 +1 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
4
|
-
|
|
5
|
-
const expressWrapper = require('./packem_shared/expressWrapper-CTExfWvM.cjs');
|
|
6
|
-
const withZod = require('./packem_shared/withZod-ULTsdyM5.cjs');
|
|
7
|
-
const EdgeRouter = require('./packem_shared/EdgeRouter-B-e2l9un.cjs');
|
|
8
|
-
const createRouter = require('./packem_shared/createRouter-C8hDVJcV.cjs');
|
|
9
|
-
const Router = require('./packem_shared/Router-Eg_OPxIL.cjs');
|
|
10
|
-
const sendJson = require('./packem_shared/sendJson-pJY2tT2n.cjs');
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
exports.expressWrapper = expressWrapper;
|
|
15
|
-
exports.withZod = withZod;
|
|
16
|
-
exports.EdgeRouter = EdgeRouter.EdgeRouter;
|
|
17
|
-
exports.createEdgeRouter = EdgeRouter.createEdgeRouter;
|
|
18
|
-
exports.NodeRouter = createRouter.NodeRouter;
|
|
19
|
-
exports.createNodeRouter = createRouter.createRouter;
|
|
20
|
-
exports.createRouter = createRouter.createRouter;
|
|
21
|
-
exports.Router = Router.Router;
|
|
22
|
-
exports.sendJson = sendJson;
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("./packem_shared/expressWrapper-C745BRwk.cjs"),o=require("./packem_shared/withZod-CQOb0zZR.cjs"),r=require("./packem_shared/EdgeRouter-C2WRZNVK.cjs"),e=require("./packem_shared/createRouter-DgHlwXny.cjs"),u=require("./packem_shared/Router-CtUe2eVq.cjs"),d=require("./packem_shared/sendJson-CnJbUMZT.cjs");exports.expressWrapper=t;exports.withZod=o;exports.EdgeRouter=r.EdgeRouter;exports.createEdgeRouter=r.createEdgeRouter;exports.NodeRouter=e.NodeRouter;exports.createNodeRouter=e.createRouter;exports.createRouter=e.createRouter;exports.Router=u.Router;exports.sendJson=d;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,12 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import * as z from 'zod';
|
|
3
|
+
type HttpMethod = "CONNECT" | "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT" | "TRACE";
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- base function type requires `any` for variance compatibility
|
|
5
|
+
type FunctionLike = (...arguments_: any[]) => any;
|
|
6
|
+
type RouteMatch = RegExp | string;
|
|
7
|
+
type ValueOrPromise<T> = Promise<T> | T;
|
|
8
|
+
type NextHandler = () => ValueOrPromise<unknown>;
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- must return `any` to match arbitrary handler signatures
|
|
10
|
+
type Nextable<H extends FunctionLike> = (...arguments_: [...Parameters<H>, NextHandler]) => ValueOrPromise<any>;
|
|
11
|
+
interface FindResult<H extends FunctionLike> {
|
|
12
|
+
fns: Nextable<H>[];
|
|
13
|
+
middleOnly: boolean;
|
|
14
|
+
params: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
type RoutesExtendedRequestHandler<Request extends object, Context, RResponse, Routes> = (request: Request, response: Context, routes: Routes) => ValueOrPromise<RResponse | undefined>;
|
|
17
|
+
interface HandlerOptions<Handler extends FunctionLike> {
|
|
18
|
+
onError?: (error: unknown, ...arguments_: Parameters<Handler>) => ReturnType<Handler>;
|
|
19
|
+
onNoMatch?: Handler;
|
|
20
|
+
}
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject requires `any` for generic parameter compatibility
|
|
22
|
+
type RouteShortcutMethod<This, Schema extends z.ZodObject<any>, H extends FunctionLike> = (route: Nextable<H> | RouteMatch, zodSchemaOrRouteOrFns?: Nextable<H> | RouteMatch | Schema | string, ...fns: Nextable<H>[]) => This;
|
|
23
|
+
type Route<H> = {
|
|
24
|
+
fns: (H | Router<H extends FunctionLike ? H : never>)[];
|
|
25
|
+
isMiddleware: boolean;
|
|
26
|
+
method: HttpMethod | "";
|
|
27
|
+
} & ({
|
|
28
|
+
keys: string[] | false;
|
|
29
|
+
pattern: RegExp;
|
|
30
|
+
} | {
|
|
31
|
+
matchAll: true;
|
|
32
|
+
});
|
|
33
|
+
declare class Router<H extends FunctionLike> {
|
|
34
|
+
base: string;
|
|
35
|
+
routes: Route<Nextable<H>>[];
|
|
36
|
+
static exec<FL extends FunctionLike>(fns: (Nextable<FL> | undefined)[], ...arguments_: Parameters<FL>): Promise<unknown>;
|
|
37
|
+
private static extractRegExpParams;
|
|
38
|
+
private static extractKeyedParams;
|
|
39
|
+
private static isMethodMatch;
|
|
40
|
+
private static matchRoute;
|
|
41
|
+
private static resolveRouteFns;
|
|
42
|
+
constructor(base?: string, routes?: Route<Nextable<H>>[]);
|
|
43
|
+
add(method: HttpMethod | "", route: Nextable<H> | RouteMatch, ...fns: Nextable<H>[]): this;
|
|
44
|
+
clone(base?: string): Router<H>;
|
|
45
|
+
find(method: HttpMethod, pathname: string): FindResult<H>;
|
|
46
|
+
use(base: Nextable<H> | RouteMatch | Router<H>, ...fns: (Nextable<H> | Router<H>)[]): this;
|
|
47
|
+
}
|
|
48
|
+
type RequestHandler$1<Request extends IncomingMessage, Response extends ServerResponse> = (request: Request, response: Response) => ValueOrPromise<void>;
|
|
49
|
+
declare class NodeRouter<Request extends IncomingMessage = IncomingMessage, Response extends ServerResponse = ServerResponse, Schema extends z.ZodObject<any> = z.ZodObject<any>> {
|
|
50
|
+
private static prepareRequest;
|
|
51
|
+
all: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
52
|
+
connect: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
53
|
+
delete: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
54
|
+
get: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
55
|
+
head: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
56
|
+
options: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
57
|
+
patch: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
58
|
+
post: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
59
|
+
put: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
60
|
+
trace: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
61
|
+
private readonly onError;
|
|
62
|
+
private readonly onNoMatch;
|
|
63
|
+
private router;
|
|
64
|
+
constructor(options?: HandlerOptions<RoutesExtendedRequestHandler<Request, Response, Response, Route<Nextable<FunctionLike>>[]>>);
|
|
65
|
+
clone(): NodeRouter<Request, Response, Schema>;
|
|
66
|
+
handler(): (request: Request, response: Response) => Promise<void>;
|
|
67
|
+
run(request: Request, response: Response): Promise<unknown>;
|
|
68
|
+
use(base: Nextable<RequestHandler$1<Request, Response>> | NodeRouter<Request, Response, Schema> | RouteMatch, ...fns: (Nextable<RequestHandler$1<Request, Response>> | NodeRouter<Request, Response, Schema>)[]): this;
|
|
69
|
+
private add;
|
|
70
|
+
}
|
|
71
|
+
declare const createRouter: <Request extends IncomingMessage, Response extends ServerResponse, Schema extends z.ZodObject<any> = z.ZodObject<any>>(options?: HandlerOptions<RoutesExtendedRequestHandler<Request, Response, Response, Route<Nextable<FunctionLike>>[]>>) => NodeRouter<Request, Response, Schema>;
|
|
72
|
+
type NextFunction = (error?: Error) => void;
|
|
73
|
+
declare const expressWrapper: <Request extends IncomingMessage, Response extends ServerResponse>(function_: ExpressRequestHandler<Request, Response>) => Nextable<RequestHandler$1<Request, Response>>;
|
|
74
|
+
type ExpressRequestHandler<Request, Response> = (request: Request, response: Response, next: NextFunction) => void;
|
|
75
|
+
declare const withZod: (schema: z.ZodObject<any>, handler: Nextable<FunctionLike>) => (request: unknown, response: unknown, next: NextHandler) => Promise<unknown>;
|
|
76
|
+
type RequestHandler<R extends Request, Context> = (request: R, context_: Context) => ValueOrPromise<Response | undefined>;
|
|
77
|
+
declare class EdgeRouter<R extends Request = Request, Context = unknown, RResponse extends Response = Response, Schema extends z.ZodObject<any> = z.ZodObject<any>> {
|
|
78
|
+
private static prepareRequest;
|
|
79
|
+
all: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
80
|
+
connect: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
81
|
+
delete: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
82
|
+
get: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
83
|
+
head: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
84
|
+
options: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
85
|
+
patch: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
86
|
+
post: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
87
|
+
put: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
88
|
+
trace: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
89
|
+
private readonly onError;
|
|
90
|
+
private readonly onNoMatch;
|
|
91
|
+
private router;
|
|
92
|
+
constructor(options?: HandlerOptions<RoutesExtendedRequestHandler<R, Context, RResponse, Route<Nextable<FunctionLike>>[]>>);
|
|
93
|
+
clone(): EdgeRouter<R, Context, RResponse, Schema>;
|
|
94
|
+
handler(): (request: R, context_: Context) => Promise<RResponse | undefined>;
|
|
95
|
+
run(request: R, context_: Context): Promise<unknown>;
|
|
96
|
+
use(base: EdgeRouter<R, Context> | Nextable<RequestHandler<R, Context>> | RouteMatch, ...fns: (EdgeRouter<R, Context> | Nextable<RequestHandler<R, Context>>)[]): this;
|
|
97
|
+
private add;
|
|
98
|
+
}
|
|
99
|
+
declare const createEdgeRouter: <R extends Request, Context>(options?: HandlerOptions<RoutesExtendedRequestHandler<R, Context, Response, Route<Nextable<FunctionLike>>[]>>) => EdgeRouter<R, Context>;
|
|
100
|
+
/**
|
|
101
|
+
* Send `JSON` object.
|
|
102
|
+
* @param response Response object.
|
|
103
|
+
* @param statusCode The HTTP status code.
|
|
104
|
+
* @param jsonBody The body of data.
|
|
105
|
+
*/
|
|
106
|
+
declare const sendJson: (response: ServerResponse, statusCode: number, jsonBody: unknown) => void;
|
|
107
|
+
export { type RequestHandler as EdgeRequestHandler, EdgeRouter, type ExpressRequestHandler, type FindResult, type FunctionLike, type HandlerOptions, type HttpMethod, type NextHandler, type Nextable, type RequestHandler$1 as NodeRequestHandler, NodeRouter, type Route, type RouteShortcutMethod, Router, type ValueOrPromise, createEdgeRouter, createRouter as createNodeRouter, createRouter, expressWrapper, sendJson, withZod };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,12 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import * as z from 'zod';
|
|
3
|
+
type HttpMethod = "CONNECT" | "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT" | "TRACE";
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- base function type requires `any` for variance compatibility
|
|
5
|
+
type FunctionLike = (...arguments_: any[]) => any;
|
|
6
|
+
type RouteMatch = RegExp | string;
|
|
7
|
+
type ValueOrPromise<T> = Promise<T> | T;
|
|
8
|
+
type NextHandler = () => ValueOrPromise<unknown>;
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- must return `any` to match arbitrary handler signatures
|
|
10
|
+
type Nextable<H extends FunctionLike> = (...arguments_: [...Parameters<H>, NextHandler]) => ValueOrPromise<any>;
|
|
11
|
+
interface FindResult<H extends FunctionLike> {
|
|
12
|
+
fns: Nextable<H>[];
|
|
13
|
+
middleOnly: boolean;
|
|
14
|
+
params: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
type RoutesExtendedRequestHandler<Request extends object, Context, RResponse, Routes> = (request: Request, response: Context, routes: Routes) => ValueOrPromise<RResponse | undefined>;
|
|
17
|
+
interface HandlerOptions<Handler extends FunctionLike> {
|
|
18
|
+
onError?: (error: unknown, ...arguments_: Parameters<Handler>) => ReturnType<Handler>;
|
|
19
|
+
onNoMatch?: Handler;
|
|
20
|
+
}
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject requires `any` for generic parameter compatibility
|
|
22
|
+
type RouteShortcutMethod<This, Schema extends z.ZodObject<any>, H extends FunctionLike> = (route: Nextable<H> | RouteMatch, zodSchemaOrRouteOrFns?: Nextable<H> | RouteMatch | Schema | string, ...fns: Nextable<H>[]) => This;
|
|
23
|
+
type Route<H> = {
|
|
24
|
+
fns: (H | Router<H extends FunctionLike ? H : never>)[];
|
|
25
|
+
isMiddleware: boolean;
|
|
26
|
+
method: HttpMethod | "";
|
|
27
|
+
} & ({
|
|
28
|
+
keys: string[] | false;
|
|
29
|
+
pattern: RegExp;
|
|
30
|
+
} | {
|
|
31
|
+
matchAll: true;
|
|
32
|
+
});
|
|
33
|
+
declare class Router<H extends FunctionLike> {
|
|
34
|
+
base: string;
|
|
35
|
+
routes: Route<Nextable<H>>[];
|
|
36
|
+
static exec<FL extends FunctionLike>(fns: (Nextable<FL> | undefined)[], ...arguments_: Parameters<FL>): Promise<unknown>;
|
|
37
|
+
private static extractRegExpParams;
|
|
38
|
+
private static extractKeyedParams;
|
|
39
|
+
private static isMethodMatch;
|
|
40
|
+
private static matchRoute;
|
|
41
|
+
private static resolveRouteFns;
|
|
42
|
+
constructor(base?: string, routes?: Route<Nextable<H>>[]);
|
|
43
|
+
add(method: HttpMethod | "", route: Nextable<H> | RouteMatch, ...fns: Nextable<H>[]): this;
|
|
44
|
+
clone(base?: string): Router<H>;
|
|
45
|
+
find(method: HttpMethod, pathname: string): FindResult<H>;
|
|
46
|
+
use(base: Nextable<H> | RouteMatch | Router<H>, ...fns: (Nextable<H> | Router<H>)[]): this;
|
|
47
|
+
}
|
|
48
|
+
type RequestHandler$1<Request extends IncomingMessage, Response extends ServerResponse> = (request: Request, response: Response) => ValueOrPromise<void>;
|
|
49
|
+
declare class NodeRouter<Request extends IncomingMessage = IncomingMessage, Response extends ServerResponse = ServerResponse, Schema extends z.ZodObject<any> = z.ZodObject<any>> {
|
|
50
|
+
private static prepareRequest;
|
|
51
|
+
all: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
52
|
+
connect: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
53
|
+
delete: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
54
|
+
get: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
55
|
+
head: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
56
|
+
options: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
57
|
+
patch: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
58
|
+
post: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
59
|
+
put: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
60
|
+
trace: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
61
|
+
private readonly onError;
|
|
62
|
+
private readonly onNoMatch;
|
|
63
|
+
private router;
|
|
64
|
+
constructor(options?: HandlerOptions<RoutesExtendedRequestHandler<Request, Response, Response, Route<Nextable<FunctionLike>>[]>>);
|
|
65
|
+
clone(): NodeRouter<Request, Response, Schema>;
|
|
66
|
+
handler(): (request: Request, response: Response) => Promise<void>;
|
|
67
|
+
run(request: Request, response: Response): Promise<unknown>;
|
|
68
|
+
use(base: Nextable<RequestHandler$1<Request, Response>> | NodeRouter<Request, Response, Schema> | RouteMatch, ...fns: (Nextable<RequestHandler$1<Request, Response>> | NodeRouter<Request, Response, Schema>)[]): this;
|
|
69
|
+
private add;
|
|
70
|
+
}
|
|
71
|
+
declare const createRouter: <Request extends IncomingMessage, Response extends ServerResponse, Schema extends z.ZodObject<any> = z.ZodObject<any>>(options?: HandlerOptions<RoutesExtendedRequestHandler<Request, Response, Response, Route<Nextable<FunctionLike>>[]>>) => NodeRouter<Request, Response, Schema>;
|
|
72
|
+
type NextFunction = (error?: Error) => void;
|
|
73
|
+
declare const expressWrapper: <Request extends IncomingMessage, Response extends ServerResponse>(function_: ExpressRequestHandler<Request, Response>) => Nextable<RequestHandler$1<Request, Response>>;
|
|
74
|
+
type ExpressRequestHandler<Request, Response> = (request: Request, response: Response, next: NextFunction) => void;
|
|
75
|
+
declare const withZod: (schema: z.ZodObject<any>, handler: Nextable<FunctionLike>) => (request: unknown, response: unknown, next: NextHandler) => Promise<unknown>;
|
|
76
|
+
type RequestHandler<R extends Request, Context> = (request: R, context_: Context) => ValueOrPromise<Response | undefined>;
|
|
77
|
+
declare class EdgeRouter<R extends Request = Request, Context = unknown, RResponse extends Response = Response, Schema extends z.ZodObject<any> = z.ZodObject<any>> {
|
|
78
|
+
private static prepareRequest;
|
|
79
|
+
all: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
80
|
+
connect: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
81
|
+
delete: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
82
|
+
get: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
83
|
+
head: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
84
|
+
options: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
85
|
+
patch: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
86
|
+
post: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
87
|
+
put: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
88
|
+
trace: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
89
|
+
private readonly onError;
|
|
90
|
+
private readonly onNoMatch;
|
|
91
|
+
private router;
|
|
92
|
+
constructor(options?: HandlerOptions<RoutesExtendedRequestHandler<R, Context, RResponse, Route<Nextable<FunctionLike>>[]>>);
|
|
93
|
+
clone(): EdgeRouter<R, Context, RResponse, Schema>;
|
|
94
|
+
handler(): (request: R, context_: Context) => Promise<RResponse | undefined>;
|
|
95
|
+
run(request: R, context_: Context): Promise<unknown>;
|
|
96
|
+
use(base: EdgeRouter<R, Context> | Nextable<RequestHandler<R, Context>> | RouteMatch, ...fns: (EdgeRouter<R, Context> | Nextable<RequestHandler<R, Context>>)[]): this;
|
|
97
|
+
private add;
|
|
98
|
+
}
|
|
99
|
+
declare const createEdgeRouter: <R extends Request, Context>(options?: HandlerOptions<RoutesExtendedRequestHandler<R, Context, Response, Route<Nextable<FunctionLike>>[]>>) => EdgeRouter<R, Context>;
|
|
100
|
+
/**
|
|
101
|
+
* Send `JSON` object.
|
|
102
|
+
* @param response Response object.
|
|
103
|
+
* @param statusCode The HTTP status code.
|
|
104
|
+
* @param jsonBody The body of data.
|
|
105
|
+
*/
|
|
106
|
+
declare const sendJson: (response: ServerResponse, statusCode: number, jsonBody: unknown) => void;
|
|
107
|
+
export { type RequestHandler as EdgeRequestHandler, EdgeRouter, type ExpressRequestHandler, type FindResult, type FunctionLike, type HandlerOptions, type HttpMethod, type NextHandler, type Nextable, type RequestHandler$1 as NodeRequestHandler, NodeRouter, type Route, type RouteShortcutMethod, Router, type ValueOrPromise, createEdgeRouter, createRouter as createNodeRouter, createRouter, expressWrapper, sendJson, withZod };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,12 +1,107 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
1
|
+
import { IncomingMessage, ServerResponse } from 'node:http';
|
|
2
|
+
import * as z from 'zod';
|
|
3
|
+
type HttpMethod = "CONNECT" | "DELETE" | "GET" | "HEAD" | "OPTIONS" | "PATCH" | "POST" | "PUT" | "TRACE";
|
|
4
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- base function type requires `any` for variance compatibility
|
|
5
|
+
type FunctionLike = (...arguments_: any[]) => any;
|
|
6
|
+
type RouteMatch = RegExp | string;
|
|
7
|
+
type ValueOrPromise<T> = Promise<T> | T;
|
|
8
|
+
type NextHandler = () => ValueOrPromise<unknown>;
|
|
9
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- must return `any` to match arbitrary handler signatures
|
|
10
|
+
type Nextable<H extends FunctionLike> = (...arguments_: [...Parameters<H>, NextHandler]) => ValueOrPromise<any>;
|
|
11
|
+
interface FindResult<H extends FunctionLike> {
|
|
12
|
+
fns: Nextable<H>[];
|
|
13
|
+
middleOnly: boolean;
|
|
14
|
+
params: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
type RoutesExtendedRequestHandler<Request extends object, Context, RResponse, Routes> = (request: Request, response: Context, routes: Routes) => ValueOrPromise<RResponse | undefined>;
|
|
17
|
+
interface HandlerOptions<Handler extends FunctionLike> {
|
|
18
|
+
onError?: (error: unknown, ...arguments_: Parameters<Handler>) => ReturnType<Handler>;
|
|
19
|
+
onNoMatch?: Handler;
|
|
20
|
+
}
|
|
21
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- ZodObject requires `any` for generic parameter compatibility
|
|
22
|
+
type RouteShortcutMethod<This, Schema extends z.ZodObject<any>, H extends FunctionLike> = (route: Nextable<H> | RouteMatch, zodSchemaOrRouteOrFns?: Nextable<H> | RouteMatch | Schema | string, ...fns: Nextable<H>[]) => This;
|
|
23
|
+
type Route<H> = {
|
|
24
|
+
fns: (H | Router<H extends FunctionLike ? H : never>)[];
|
|
25
|
+
isMiddleware: boolean;
|
|
26
|
+
method: HttpMethod | "";
|
|
27
|
+
} & ({
|
|
28
|
+
keys: string[] | false;
|
|
29
|
+
pattern: RegExp;
|
|
30
|
+
} | {
|
|
31
|
+
matchAll: true;
|
|
32
|
+
});
|
|
33
|
+
declare class Router<H extends FunctionLike> {
|
|
34
|
+
base: string;
|
|
35
|
+
routes: Route<Nextable<H>>[];
|
|
36
|
+
static exec<FL extends FunctionLike>(fns: (Nextable<FL> | undefined)[], ...arguments_: Parameters<FL>): Promise<unknown>;
|
|
37
|
+
private static extractRegExpParams;
|
|
38
|
+
private static extractKeyedParams;
|
|
39
|
+
private static isMethodMatch;
|
|
40
|
+
private static matchRoute;
|
|
41
|
+
private static resolveRouteFns;
|
|
42
|
+
constructor(base?: string, routes?: Route<Nextable<H>>[]);
|
|
43
|
+
add(method: HttpMethod | "", route: Nextable<H> | RouteMatch, ...fns: Nextable<H>[]): this;
|
|
44
|
+
clone(base?: string): Router<H>;
|
|
45
|
+
find(method: HttpMethod, pathname: string): FindResult<H>;
|
|
46
|
+
use(base: Nextable<H> | RouteMatch | Router<H>, ...fns: (Nextable<H> | Router<H>)[]): this;
|
|
47
|
+
}
|
|
48
|
+
type RequestHandler$1<Request extends IncomingMessage, Response extends ServerResponse> = (request: Request, response: Response) => ValueOrPromise<void>;
|
|
49
|
+
declare class NodeRouter<Request extends IncomingMessage = IncomingMessage, Response extends ServerResponse = ServerResponse, Schema extends z.ZodObject<any> = z.ZodObject<any>> {
|
|
50
|
+
private static prepareRequest;
|
|
51
|
+
all: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
52
|
+
connect: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
53
|
+
delete: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
54
|
+
get: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
55
|
+
head: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
56
|
+
options: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
57
|
+
patch: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
58
|
+
post: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
59
|
+
put: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
60
|
+
trace: RouteShortcutMethod<this, Schema, RequestHandler$1<Request, Response>>;
|
|
61
|
+
private readonly onError;
|
|
62
|
+
private readonly onNoMatch;
|
|
63
|
+
private router;
|
|
64
|
+
constructor(options?: HandlerOptions<RoutesExtendedRequestHandler<Request, Response, Response, Route<Nextable<FunctionLike>>[]>>);
|
|
65
|
+
clone(): NodeRouter<Request, Response, Schema>;
|
|
66
|
+
handler(): (request: Request, response: Response) => Promise<void>;
|
|
67
|
+
run(request: Request, response: Response): Promise<unknown>;
|
|
68
|
+
use(base: Nextable<RequestHandler$1<Request, Response>> | NodeRouter<Request, Response, Schema> | RouteMatch, ...fns: (Nextable<RequestHandler$1<Request, Response>> | NodeRouter<Request, Response, Schema>)[]): this;
|
|
69
|
+
private add;
|
|
70
|
+
}
|
|
71
|
+
declare const createRouter: <Request extends IncomingMessage, Response extends ServerResponse, Schema extends z.ZodObject<any> = z.ZodObject<any>>(options?: HandlerOptions<RoutesExtendedRequestHandler<Request, Response, Response, Route<Nextable<FunctionLike>>[]>>) => NodeRouter<Request, Response, Schema>;
|
|
72
|
+
type NextFunction = (error?: Error) => void;
|
|
73
|
+
declare const expressWrapper: <Request extends IncomingMessage, Response extends ServerResponse>(function_: ExpressRequestHandler<Request, Response>) => Nextable<RequestHandler$1<Request, Response>>;
|
|
74
|
+
type ExpressRequestHandler<Request, Response> = (request: Request, response: Response, next: NextFunction) => void;
|
|
75
|
+
declare const withZod: (schema: z.ZodObject<any>, handler: Nextable<FunctionLike>) => (request: unknown, response: unknown, next: NextHandler) => Promise<unknown>;
|
|
76
|
+
type RequestHandler<R extends Request, Context> = (request: R, context_: Context) => ValueOrPromise<Response | undefined>;
|
|
77
|
+
declare class EdgeRouter<R extends Request = Request, Context = unknown, RResponse extends Response = Response, Schema extends z.ZodObject<any> = z.ZodObject<any>> {
|
|
78
|
+
private static prepareRequest;
|
|
79
|
+
all: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
80
|
+
connect: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
81
|
+
delete: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
82
|
+
get: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
83
|
+
head: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
84
|
+
options: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
85
|
+
patch: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
86
|
+
post: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
87
|
+
put: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
88
|
+
trace: RouteShortcutMethod<this, Schema, RequestHandler<R, Context>>;
|
|
89
|
+
private readonly onError;
|
|
90
|
+
private readonly onNoMatch;
|
|
91
|
+
private router;
|
|
92
|
+
constructor(options?: HandlerOptions<RoutesExtendedRequestHandler<R, Context, RResponse, Route<Nextable<FunctionLike>>[]>>);
|
|
93
|
+
clone(): EdgeRouter<R, Context, RResponse, Schema>;
|
|
94
|
+
handler(): (request: R, context_: Context) => Promise<RResponse | undefined>;
|
|
95
|
+
run(request: R, context_: Context): Promise<unknown>;
|
|
96
|
+
use(base: EdgeRouter<R, Context> | Nextable<RequestHandler<R, Context>> | RouteMatch, ...fns: (EdgeRouter<R, Context> | Nextable<RequestHandler<R, Context>>)[]): this;
|
|
97
|
+
private add;
|
|
98
|
+
}
|
|
99
|
+
declare const createEdgeRouter: <R extends Request, Context>(options?: HandlerOptions<RoutesExtendedRequestHandler<R, Context, Response, Route<Nextable<FunctionLike>>[]>>) => EdgeRouter<R, Context>;
|
|
100
|
+
/**
|
|
101
|
+
* Send `JSON` object.
|
|
102
|
+
* @param response Response object.
|
|
103
|
+
* @param statusCode The HTTP status code.
|
|
104
|
+
* @param jsonBody The body of data.
|
|
105
|
+
*/
|
|
106
|
+
declare const sendJson: (response: ServerResponse, statusCode: number, jsonBody: unknown) => void;
|
|
107
|
+
export { type RequestHandler as EdgeRequestHandler, EdgeRouter, type ExpressRequestHandler, type FindResult, type FunctionLike, type HandlerOptions, type HttpMethod, type NextHandler, type Nextable, type RequestHandler$1 as NodeRequestHandler, NodeRouter, type Route, type RouteShortcutMethod, Router, type ValueOrPromise, createEdgeRouter, createRouter as createNodeRouter, createRouter, expressWrapper, sendJson, withZod };
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export { default as withZod } from './packem_shared/withZod-HYgoC7AX.mjs';
|
|
3
|
-
export { EdgeRouter, createEdgeRouter } from './packem_shared/EdgeRouter-CdtQHTwm.mjs';
|
|
4
|
-
export { NodeRouter, createRouter as createNodeRouter, createRouter } from './packem_shared/createRouter-_G1XhaP4.mjs';
|
|
5
|
-
export { Router } from './packem_shared/Router-ChnTdYfl.mjs';
|
|
6
|
-
export { default as sendJson } from './packem_shared/sendJson-DwLYLDbt.mjs';
|
|
1
|
+
import{default as o}from"./packem_shared/expressWrapper-BMEaodw_.mjs";import{default as a}from"./packem_shared/withZod-B5rDrse4.mjs";import{EdgeRouter as d,createEdgeRouter as f}from"./packem_shared/EdgeRouter-BcLsFhoc.mjs";import{NodeRouter as s,createRouter as x,createRouter as R}from"./packem_shared/createRouter-DrcL8lRU.mjs";import{Router as c}from"./packem_shared/Router-ZvrvfK8e.mjs";import{default as g}from"./packem_shared/sendJson-CIEUTdsi.mjs";export{d as EdgeRouter,s as NodeRouter,c as Router,f as createEdgeRouter,x as createNodeRouter,R as createRouter,o as expressWrapper,g as sendJson,a as withZod};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var l=Object.defineProperty;var d=(n,t)=>l(n,"name",{value:t,configurable:!0});import u from"./withZod-B5rDrse4.mjs";import{Router as c}from"./Router-ZvrvfK8e.mjs";var m=Object.defineProperty,h=d((n,t)=>m(n,"name",{value:t,configurable:!0}),"R");const E=h(n=>new Response(n.method==="HEAD"?void 0:`Route ${n.method} ${n.url} not found`,{status:404}),"onNoMatch"),b=h(n=>(globalThis.console.error(n),new Response("Internal Server Error",{status:500})),"onError"),p=h(n=>(n.nextUrl??new URL(n.url)).pathname,"getPathname");class i{static{d(this,"EdgeRouter")}static{h(this,"EdgeRouter")}static prepareRequest(t,r){t.params={...r.params,...t.params}}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 c;constructor(t={}){this.onNoMatch=t.onNoMatch??E,this.onError=t.onError??b}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 s=p(r),o=r.method,a=this.router.find(o,s);i.prepareRequest(r,a);try{return await(a.fns.length===0||a.middleOnly?this.onNoMatch(r,e,t):c.exec(a.fns,r,e))}catch(f){return await this.onError(f,r,e,t)}}}async run(t,r){const e=p(t),s=t.method,o=this.router.find(s,e);if(o.fns.length!==0)return i.prepareRequest(t,o),c.exec(o.fns,t,r)}use(t,...r){let e;return typeof t=="function"||t instanceof i?(r.unshift(t),e="/"):e=t,this.router.use(e,...r.map(s=>s instanceof i?s.router:s)),this}add(t,r,e,...s){let o;return typeof r=="string"&&typeof e=="function"?o=[e]:typeof e=="object"?o=typeof r=="function"?[u(e,r)]:s.map(a=>u(e,a)):typeof e=="function"?o=[e]:o=s,this.router.add(t,r,...o),this}}const T=h((n={})=>new i(n),"createEdgeRouter");export{i as EdgeRouter,T as createEdgeRouter,p as getPathname};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var f=Object.defineProperty;var d=(o,t)=>f(o,"name",{value:t,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("./withZod-CQOb0zZR.cjs"),u=require("./Router-CtUe2eVq.cjs");var E=Object.defineProperty,h=d((o,t)=>E(o,"name",{value:t,configurable:!0}),"R");const b=h(o=>new Response(o.method==="HEAD"?void 0:`Route ${o.method} ${o.url} not found`,{status:404}),"onNoMatch"),m=h(o=>(globalThis.console.error(o),new Response("Internal Server Error",{status:500})),"onError"),c=h(o=>(o.nextUrl??new URL(o.url)).pathname,"getPathname");class i{static{d(this,"EdgeRouter")}static{h(this,"EdgeRouter")}static prepareRequest(t,e){t.params={...e.params,...t.params}}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 u.Router;constructor(t={}){this.onNoMatch=t.onNoMatch??b,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 s=c(e),n=e.method,a=this.router.find(n,s);i.prepareRequest(e,a);try{return await(a.fns.length===0||a.middleOnly?this.onNoMatch(e,r,t):u.Router.exec(a.fns,e,r))}catch(p){return await this.onError(p,e,r,t)}}}async run(t,e){const r=c(t),s=t.method,n=this.router.find(s,r);if(n.fns.length!==0)return i.prepareRequest(t,n),u.Router.exec(n.fns,t,e)}use(t,...e){let r;return typeof t=="function"||t instanceof i?(e.unshift(t),r="/"):r=t,this.router.use(r,...e.map(s=>s instanceof i?s.router:s)),this}add(t,e,r,...s){let n;return typeof e=="string"&&typeof r=="function"?n=[r]:typeof r=="object"?n=typeof e=="function"?[l(r,e)]:s.map(a=>l(r,a)):typeof r=="function"?n=[r]:n=s,this.router.add(t,e,...n),this}}const R=h((o={})=>new i(o),"createEdgeRouter");exports.EdgeRouter=i;exports.createEdgeRouter=R;exports.getPathname=c;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var g=Object.defineProperty;var l=(u,t)=>g(u,"name",{value:t,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const h=require("regexparam");var y=Object.defineProperty,d=l((u,t)=>y(u,"name",{value:t,configurable:!0}),"c");class o{static{l(this,"Router")}constructor(t="/",s=[]){this.base=t,this.routes=s}base;routes;static{d(this,"Router")}static exec(t,...s){let e=0;const n=d(()=>{e+=1;const r=t[e];return r===void 0?Promise.resolve():r(...s,n)},"next");return t[e](...s,n)}static extractRegExpParams(t){const s={};if(t.groups===void 0)return s;for(const e of Object.keys(t.groups))s[e]=t.groups[e];return s}static extractKeyedParams(t,s){const e={};for(const[n,r]of s.entries())e[r]=t[n+1];return e}static isMethodMatch(t,s,e){return t===s||t===""||e&&t==="GET"}static matchRoute(t,s){if("matchAll"in t)return{matched:!0,params:{}};if(t.keys===!1){const e=t.pattern.exec(s);return e===null?{matched:!1}:{matched:!0,params:o.extractRegExpParams(e)}}if(t.keys.length>0){const e=t.pattern.exec(s);return e===null?{matched:!1}:{matched:!0,params:o.extractKeyedParams(e,t.keys)}}return t.pattern.test(s)?{matched:!0,params:{}}:{matched:!1}}static resolveRouteFns(t,s,e,n){return t.flatMap(r=>{if(r instanceof o){const{base:c}=r;let a=e.slice(c.length);a.startsWith("/")||(a=`/${a}`);const i=r.find(s,a);return n(i.params,i.middleOnly),i.fns}return[r]})}add(t,s,...e){let n;if(typeof s=="function"?(e.unshift(s),n=""):n=s,n==="")this.routes.push({fns:e,isMiddleware:!1,matchAll:!0,method:t});else{const{keys:r,pattern:c}=h.parse(n);this.routes.push({fns:e,isMiddleware:!1,keys:r,method:t,pattern:c})}return this}clone(t){return new o(t,[...this.routes])}find(t,s){let e=!0;const n=[],r={},c=t==="HEAD";for(let a=0;a<this.routes.length;a+=1){const i=this.routes[a];if(!o.isMethodMatch(i.method,t,c))continue;const f=o.matchRoute(i,s);f.matched&&(Object.assign(r,f.params),n.push(...o.resolveRouteFns(i.fns,t,s,(p,m)=>{Object.assign(r,p),m||(e=!1)})),i.isMiddleware||(e=!1))}return{fns:n,middleOnly:e,params:r}}use(t,...s){let e;typeof t=="function"||t instanceof o?(s.unshift(t),e="/"):e=t;const n=s.map(a=>{if(a instanceof o){if(typeof e=="string")return a.clone(e);throw new Error("Mounting a router to RegExp base is not supported")}return a}),{keys:r,pattern:c}=h.parse(e,!0);return this.routes.push({fns:n,isMiddleware:!0,keys:r,method:"",pattern:c}),this}}exports.Router=o;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var y=Object.defineProperty;var f=(u,t)=>y(u,"name",{value:t,configurable:!0});import{parse as h}from"regexparam";var g=Object.defineProperty,d=f((u,t)=>g(u,"name",{value:t,configurable:!0}),"c");class o{static{f(this,"Router")}constructor(t="/",s=[]){this.base=t,this.routes=s}base;routes;static{d(this,"Router")}static exec(t,...s){let e=0;const n=d(()=>{e+=1;const r=t[e];return r===void 0?Promise.resolve():r(...s,n)},"next");return t[e](...s,n)}static extractRegExpParams(t){const s={};if(t.groups===void 0)return s;for(const e of Object.keys(t.groups))s[e]=t.groups[e];return s}static extractKeyedParams(t,s){const e={};for(const[n,r]of s.entries())e[r]=t[n+1];return e}static isMethodMatch(t,s,e){return t===s||t===""||e&&t==="GET"}static matchRoute(t,s){if("matchAll"in t)return{matched:!0,params:{}};if(t.keys===!1){const e=t.pattern.exec(s);return e===null?{matched:!1}:{matched:!0,params:o.extractRegExpParams(e)}}if(t.keys.length>0){const e=t.pattern.exec(s);return e===null?{matched:!1}:{matched:!0,params:o.extractKeyedParams(e,t.keys)}}return t.pattern.test(s)?{matched:!0,params:{}}:{matched:!1}}static resolveRouteFns(t,s,e,n){return t.flatMap(r=>{if(r instanceof o){const{base:c}=r;let a=e.slice(c.length);a.startsWith("/")||(a=`/${a}`);const i=r.find(s,a);return n(i.params,i.middleOnly),i.fns}return[r]})}add(t,s,...e){let n;if(typeof s=="function"?(e.unshift(s),n=""):n=s,n==="")this.routes.push({fns:e,isMiddleware:!1,matchAll:!0,method:t});else{const{keys:r,pattern:c}=h(n);this.routes.push({fns:e,isMiddleware:!1,keys:r,method:t,pattern:c})}return this}clone(t){return new o(t,[...this.routes])}find(t,s){let e=!0;const n=[],r={},c=t==="HEAD";for(let a=0;a<this.routes.length;a+=1){const i=this.routes[a];if(!o.isMethodMatch(i.method,t,c))continue;const l=o.matchRoute(i,s);l.matched&&(Object.assign(r,l.params),n.push(...o.resolveRouteFns(i.fns,t,s,(p,m)=>{Object.assign(r,p),m||(e=!1)})),i.isMiddleware||(e=!1))}return{fns:n,middleOnly:e,params:r}}use(t,...s){let e;typeof t=="function"||t instanceof o?(s.unshift(t),e="/"):e=t;const n=s.map(a=>{if(a instanceof o){if(typeof e=="string")return a.clone(e);throw new Error("Mounting a router to RegExp base is not supported")}return a}),{keys:r,pattern:c}=h(e,!0);return this.routes.push({fns:n,isMiddleware:!0,keys:r,method:"",pattern:c}),this}}export{o as Router};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var p=Object.defineProperty;var d=(o,t)=>p(o,"name",{value:t,configurable:!0});Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("./withZod-CQOb0zZR.cjs"),u=require("./Router-CtUe2eVq.cjs");var b=Object.defineProperty,h=d((o,t)=>b(o,"name",{value:t,configurable:!0}),"u");const m=h((o,t)=>{t.statusCode=404,t.end(o.method==="HEAD"?void 0:`Route ${String(o.method)} ${String(o.url)} not found`)},"onNoMatch"),E=h((o,t,e)=>{e.statusCode=500,globalThis.console.error(o),e.end("Internal Server Error")},"onError"),c=h(o=>{const t=o.indexOf("?");return t===-1?o:o.slice(0,Math.max(0,t))},"getPathname");class s{static{d(this,"NodeRouter")}static{h(this,"NodeRouter")}static prepareRequest(t,e){t.params={...e.params,...t.params}}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 u.Router;constructor(t={}){this.onNoMatch=t.onNoMatch??m,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(e,r)=>{const i=c(e.url),n=e.method,a=this.router.find(n,i);s.prepareRequest(e,a);try{await(a.fns.length===0||a.middleOnly?this.onNoMatch(e,r,t):u.Router.exec(a.fns,e,r))}catch(f){await this.onError(f,e,r,t)}}}async run(t,e){const r=c(t.url),i=t.method,n=this.router.find(i,r);if(n.fns.length!==0)return s.prepareRequest(t,n),u.Router.exec(n.fns,t,e)}use(t,...e){let r;return typeof t=="function"||t instanceof s?(e.unshift(t),r="/"):r=t,this.router.use(r,...e.map(i=>i instanceof s?i.router:i)),this}add(t,e,r,...i){let n;return typeof e=="string"&&typeof r=="function"?n=[r]:typeof r=="object"?n=typeof e=="function"?[l(r,e)]:i.map(a=>l(r,a)):typeof r=="function"?n=[r]:n=i,this.router.add(t,e,...n),this}}const g=h((o={})=>new s(o),"createRouter");exports.NodeRouter=s;exports.createRouter=g;exports.getPathname=c;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var l=Object.defineProperty;var d=(e,t)=>l(e,"name",{value:t,configurable:!0});import u from"./withZod-B5rDrse4.mjs";import{Router as c}from"./Router-ZvrvfK8e.mjs";var m=Object.defineProperty,h=d((e,t)=>m(e,"name",{value:t,configurable:!0}),"u");const E=h((e,t)=>{t.statusCode=404,t.end(e.method==="HEAD"?void 0:`Route ${String(e.method)} ${String(e.url)} not found`)},"onNoMatch"),b=h((e,t,r)=>{r.statusCode=500,globalThis.console.error(e),r.end("Internal Server Error")},"onError"),f=h(e=>{const t=e.indexOf("?");return t===-1?e:e.slice(0,Math.max(0,t))},"getPathname");class s{static{d(this,"NodeRouter")}static{h(this,"NodeRouter")}static prepareRequest(t,r){t.params={...r.params,...t.params}}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 c;constructor(t={}){this.onNoMatch=t.onNoMatch??E,this.onError=t.onError??b}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,o)=>{const i=f(r.url),n=r.method,a=this.router.find(n,i);s.prepareRequest(r,a);try{await(a.fns.length===0||a.middleOnly?this.onNoMatch(r,o,t):c.exec(a.fns,r,o))}catch(p){await this.onError(p,r,o,t)}}}async run(t,r){const o=f(t.url),i=t.method,n=this.router.find(i,o);if(n.fns.length!==0)return s.prepareRequest(t,n),c.exec(n.fns,t,r)}use(t,...r){let o;return typeof t=="function"||t instanceof s?(r.unshift(t),o="/"):o=t,this.router.use(o,...r.map(i=>i instanceof s?i.router:i)),this}add(t,r,o,...i){let n;return typeof r=="string"&&typeof o=="function"?n=[o]:typeof o=="object"?n=typeof r=="function"?[u(o,r)]:i.map(a=>u(o,a)):typeof o=="function"?n=[o]:n=i,this.router.add(t,r,...n),this}}const M=h((e={})=>new s(e),"createRouter");export{s as NodeRouter,M as createRouter,f as getPathname};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var p=Object.defineProperty;var n=(e,a)=>p(e,"name",{value:a,configurable:!0});var c=Object.defineProperty,u=n((e,a)=>c(e,"name",{value:a,configurable:!0}),"r");const l=u(e=>async(a,s,t)=>(await new Promise((i,o)=>{e(a,s,r=>{r?o(r):i()})}),t()),"expressWrapper");export{l as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var o=Object.defineProperty;var s=(e,r)=>o(e,"name",{value:r,configurable:!0});var p=Object.defineProperty,u=s((e,r)=>p(e,"name",{value:r,configurable:!0}),"r");const v=u(e=>async(r,t,i)=>(await new Promise((n,c)=>{e(r,t,a=>{a?c(a):n()})}),i()),"expressWrapper");module.exports=v;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r=Object.defineProperty;var n=(e,t)=>r(e,"name",{value:t,configurable:!0});var o=Object.defineProperty,s=n((e,t)=>o(e,"name",{value:t,configurable:!0}),"n");const i=s((e,t,a)=>{e.setHeader("content-type","application/json; charset=utf-8"),e.statusCode=t,e.end(JSON.stringify(a,void 0,2))},"sendJson");export{i as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";var s=Object.defineProperty;var n=(e,t)=>s(e,"name",{value:t,configurable:!0});var a=Object.defineProperty,o=n((e,t)=>a(e,"name",{value:t,configurable:!0}),"n");const i=o((e,t,r)=>{e.setHeader("content-type","application/json; charset=utf-8"),e.statusCode=t,e.end(JSON.stringify(r,void 0,2))},"sendJson");module.exports=i;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f=Object.defineProperty;var n=(t,a)=>f(t,"name",{value:a,configurable:!0});import p from"http-errors";import*as u from"zod";var y=Object.defineProperty,d=n((t,a)=>y(t,"name",{value:a,configurable:!0}),"a");const w=d((t,a)=>async(s,c,i)=>{let o;try{o=await t.parseAsync(s)}catch(e){const m=e instanceof u.ZodError&&typeof e.format=="function"?e.issues.map(r=>`${r.path.join("/")} - ${r.message}`).join("/n"):e.message;throw p(422,m)}return a(o,c,i)},"withZod");export{w as default};
|