@eggjs/router 3.0.6 → 4.0.0-beta.16

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.
@@ -1,7 +0,0 @@
1
- import { Router } from './Router.js';
2
- export type * from './types.js';
3
- export * from './Layer.js';
4
- export * from './Router.js';
5
- export * from './EggRouter.js';
6
- export declare const KoaRouter: typeof Router;
7
- export default Router;
@@ -1,24 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
- };
16
- Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.KoaRouter = void 0;
18
- const Router_js_1 = require("./Router.js");
19
- __exportStar(require("./Layer.js"), exports);
20
- __exportStar(require("./Router.js"), exports);
21
- __exportStar(require("./EggRouter.js"), exports);
22
- exports.KoaRouter = Router_js_1.Router;
23
- exports.default = Router_js_1.Router;
24
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBcUM7QUFHckMsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QixpREFBK0I7QUFFbEIsUUFBQSxTQUFTLEdBQUcsa0JBQU0sQ0FBQztBQUNoQyxrQkFBZSxrQkFBTSxDQUFDIn0=
@@ -1,3 +0,0 @@
1
- {
2
- "type": "commonjs"
3
- }
@@ -1,18 +0,0 @@
1
- export type Next = () => Promise<void>;
2
- export type MiddlewareFunc = (ctx: any, next: Next) => Promise<void> | void;
3
- export type MiddlewareFuncWithParamProperty = MiddlewareFunc & {
4
- param?: string;
5
- };
6
- export type ParamMiddlewareFunc = (param: string, ctx: any, next: Next) => Promise<void> | void;
7
- export type MiddlewareFuncWithRouter<T> = MiddlewareFunc & {
8
- router: T;
9
- };
10
- export interface ResourcesController {
11
- index?: MiddlewareFunc;
12
- new?: MiddlewareFunc;
13
- create?: MiddlewareFunc;
14
- show?: MiddlewareFunc;
15
- edit?: MiddlewareFunc;
16
- update?: MiddlewareFunc;
17
- destroy?: MiddlewareFunc;
18
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -1,104 +0,0 @@
1
- import { RegisterOptions, Router, RouterMethod, RouterOptions } from './Router.js';
2
- import { MiddlewareFunc, ResourcesController } from './types.js';
3
- interface Application {
4
- controller: Record<string, any>;
5
- }
6
- /**
7
- * FIXME: move these patch into @eggjs/router
8
- */
9
- export declare class EggRouter extends Router {
10
- readonly app: Application;
11
- /**
12
- * @class
13
- * @param {Object} opts - Router options.
14
- * @param {Application} app - Application object.
15
- */
16
- constructor(opts: RouterOptions, app: Application);
17
- verb(method: RouterMethod | RouterMethod[], nameOrPath: string | RegExp | (string | RegExp)[], pathOrMiddleware: string | RegExp | (string | RegExp)[] | MiddlewareFunc, ...middleware: (MiddlewareFunc | string)[]): this;
18
- head(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
19
- head(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
20
- options(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
21
- options(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
22
- get(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
23
- get(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
24
- put(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
25
- put(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
26
- patch(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
27
- patch(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
28
- post(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
29
- post(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
30
- delete(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
31
- delete(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
32
- all(path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
33
- all(name: string, path: string | RegExp | (string | RegExp)[], ...middlewares: (MiddlewareFunc | string)[]): Router;
34
- register(path: string | RegExp | (string | RegExp)[], methods: string[], middleware: MiddlewareFunc | string | (MiddlewareFunc | string | ResourcesController)[], opts?: RegisterOptions): import("./Layer.js").Layer | import("./Layer.js").Layer[];
35
- /**
36
- * restful router api
37
- * @param {String} name - Router name
38
- * @param {String} prefix - url prefix
39
- * @param {Function} middleware - middleware or controller
40
- * @example
41
- * ```js
42
- * app.resources('/posts', 'posts')
43
- * app.resources('posts', '/posts', 'posts')
44
- * app.resources('posts', '/posts', app.role.can('user'), app.controller.posts)
45
- * app.resources('posts', '/posts', middleware1, middleware2, app.controller.posts)
46
- * ```
47
- *
48
- * Examples:
49
- *
50
- * ```js
51
- * app.resources('/posts', 'posts')
52
- * ```
53
- *
54
- * yield router mapping
55
- *
56
- * Method | Path | Route Name | Controller.Action
57
- * -------|-----------------|----------------|-----------------------------
58
- * GET | /posts | posts | app.controller.posts.index
59
- * GET | /posts/new | new_post | app.controller.posts.new
60
- * GET | /posts/:id | post | app.controller.posts.show
61
- * GET | /posts/:id/edit | edit_post | app.controller.posts.edit
62
- * POST | /posts | posts | app.controller.posts.create
63
- * PATCH | /posts/:id | post | app.controller.posts.update
64
- * DELETE | /posts/:id | post | app.controller.posts.destroy
65
- *
66
- * app.router.url can generate url based on arguments
67
- * ```js
68
- * app.router.url('posts')
69
- * => /posts
70
- * app.router.url('post', { id: 1 })
71
- * => /posts/1
72
- * app.router.url('new_post')
73
- * => /posts/new
74
- * app.router.url('edit_post', { id: 1 })
75
- * => /posts/1/edit
76
- * ```
77
- * @return {Router} return route object.
78
- * @since 1.0.0
79
- */
80
- resources(prefix: string, controller: string | ResourcesController): Router;
81
- resources(prefix: string, middleware: MiddlewareFunc, controller: string | ResourcesController): Router;
82
- resources(name: string, prefix: string, controller: string | ResourcesController): Router;
83
- resources(name: string, prefix: string, middleware: MiddlewareFunc, controller: string | ResourcesController): Router;
84
- resources(nameOrPath: string | RegExp, ...middleware: (MiddlewareFunc | string | ResourcesController)[]): Router;
85
- /**
86
- * @param {String} name - Router name
87
- * @param {Object} params - more parameters
88
- * @example
89
- * ```js
90
- * router.url('edit_post', { id: 1, name: 'foo', page: 2 })
91
- * => /posts/1/edit?name=foo&page=2
92
- * router.url('posts', { name: 'foo&1', page: 2 })
93
- * => /posts?name=foo%261&page=2
94
- * ```
95
- * @return {String} url by path name and query params.
96
- * @since 1.0.0
97
- */
98
- url(name: string, params?: Record<string, string | number | (string | number)[]>): string;
99
- /**
100
- * @alias to url()
101
- */
102
- pathFor(name: string, params?: Record<string, string | number | (string | number)[]>): string;
103
- }
104
- export {};
@@ -1,237 +0,0 @@
1
- import assert from 'node:assert';
2
- import { encodeURIComponent as safeEncodeURIComponent } from 'utility';
3
- import inflection from 'inflection';
4
- import methods from 'methods';
5
- import { isGeneratorFunction } from 'is-type-of';
6
- import { Router } from './Router.js';
7
- const REST_MAP = {
8
- index: {
9
- suffix: '',
10
- method: 'GET',
11
- },
12
- new: {
13
- namePrefix: 'new_',
14
- member: true,
15
- suffix: 'new',
16
- method: 'GET',
17
- },
18
- create: {
19
- suffix: '',
20
- method: 'POST',
21
- },
22
- show: {
23
- member: true,
24
- suffix: ':id',
25
- method: 'GET',
26
- },
27
- edit: {
28
- member: true,
29
- namePrefix: 'edit_',
30
- suffix: ':id/edit',
31
- method: 'GET',
32
- },
33
- update: {
34
- member: true,
35
- namePrefix: '',
36
- suffix: ':id',
37
- method: ['PATCH', 'PUT'],
38
- },
39
- destroy: {
40
- member: true,
41
- namePrefix: 'destroy_',
42
- suffix: ':id',
43
- method: 'DELETE',
44
- },
45
- };
46
- /**
47
- * FIXME: move these patch into @eggjs/router
48
- */
49
- export class EggRouter extends Router {
50
- app;
51
- /**
52
- * @class
53
- * @param {Object} opts - Router options.
54
- * @param {Application} app - Application object.
55
- */
56
- constructor(opts, app) {
57
- super(opts);
58
- this.app = app;
59
- }
60
- verb(method, nameOrPath, pathOrMiddleware, ...middleware) {
61
- const { path, middlewares, options } = this._formatRouteParams(nameOrPath, pathOrMiddleware, middleware);
62
- if (typeof method === 'string') {
63
- method = [method];
64
- }
65
- this.register(path, method, middlewares, options);
66
- return this;
67
- }
68
- head(nameOrPath, pathOrMiddleware, ...middlewares) {
69
- return this.verb('head', nameOrPath, pathOrMiddleware, ...middlewares);
70
- }
71
- options(nameOrPath, pathOrMiddleware, ...middlewares) {
72
- return this.verb('options', nameOrPath, pathOrMiddleware, ...middlewares);
73
- }
74
- get(nameOrPath, pathOrMiddleware, ...middlewares) {
75
- return this.verb('get', nameOrPath, pathOrMiddleware, ...middlewares);
76
- }
77
- put(nameOrPath, pathOrMiddleware, ...middlewares) {
78
- return this.verb('put', nameOrPath, pathOrMiddleware, ...middlewares);
79
- }
80
- patch(nameOrPath, pathOrMiddleware, ...middlewares) {
81
- return this.verb('patch', nameOrPath, pathOrMiddleware, ...middlewares);
82
- }
83
- post(nameOrPath, pathOrMiddleware, ...middlewares) {
84
- return this.verb('post', nameOrPath, pathOrMiddleware, ...middlewares);
85
- }
86
- delete(nameOrPath, pathOrMiddleware, ...middlewares) {
87
- return this.verb('delete', nameOrPath, pathOrMiddleware, ...middlewares);
88
- }
89
- all(nameOrPath, pathOrMiddleware, ...middlewares) {
90
- return this.verb(methods, nameOrPath, pathOrMiddleware, ...middlewares);
91
- }
92
- register(path, methods, middleware, opts) {
93
- // patch register to support bind ctx function middleware and string controller
94
- middleware = Array.isArray(middleware) ? middleware : [middleware];
95
- for (const mw of middleware) {
96
- if (isGeneratorFunction(mw)) {
97
- throw new TypeError(methods.toString() + ' `' + path + '`: Please use async function instead of generator function');
98
- }
99
- }
100
- const middlewares = convertMiddlewares(middleware, this.app);
101
- return super.register(path, methods, middlewares, opts);
102
- }
103
- resources(nameOrPath, pathOrMiddleware, ...middleware) {
104
- const { path, middlewares, options } = this._formatRouteParams(nameOrPath, pathOrMiddleware, middleware);
105
- // last argument is Controller object
106
- const controller = resolveController(middlewares.pop(), this.app);
107
- for (const key in REST_MAP) {
108
- const action = controller[key];
109
- if (!action)
110
- continue;
111
- const opts = REST_MAP[key];
112
- let routeName;
113
- if (opts.member) {
114
- routeName = inflection.singularize(options.name ?? '');
115
- }
116
- else {
117
- routeName = inflection.pluralize(options.name ?? '');
118
- }
119
- if (opts.namePrefix) {
120
- routeName = opts.namePrefix + routeName;
121
- }
122
- const prefix = path.replace(/\/$/, '');
123
- const urlPath = opts.suffix ? `${prefix}/${opts.suffix}` : prefix;
124
- const method = Array.isArray(opts.method) ? opts.method : [opts.method];
125
- this.register(urlPath, method, middlewares.concat(action), { name: routeName });
126
- }
127
- return this;
128
- }
129
- /**
130
- * @param {String} name - Router name
131
- * @param {Object} params - more parameters
132
- * @example
133
- * ```js
134
- * router.url('edit_post', { id: 1, name: 'foo', page: 2 })
135
- * => /posts/1/edit?name=foo&page=2
136
- * router.url('posts', { name: 'foo&1', page: 2 })
137
- * => /posts?name=foo%261&page=2
138
- * ```
139
- * @return {String} url by path name and query params.
140
- * @since 1.0.0
141
- */
142
- url(name, params) {
143
- const route = this.route(name);
144
- if (!route)
145
- return '';
146
- const args = params;
147
- let url = route.path;
148
- assert(!(url instanceof RegExp), `Can't get the url for regExp ${url} for by name '${name}'`);
149
- const queries = [];
150
- if (typeof args === 'object' && args !== null) {
151
- const replacedParams = [];
152
- url = url.replace(/:([a-zA-Z_]\w*)/g, ($0, key) => {
153
- if (key in args) {
154
- const values = args[key];
155
- replacedParams.push(key);
156
- return safeEncodeURIComponent(Array.isArray(values) ? String(values[0]) : String(values));
157
- }
158
- return $0;
159
- });
160
- for (const key in args) {
161
- if (replacedParams.includes(key)) {
162
- continue;
163
- }
164
- const values = args[key];
165
- const encodedKey = safeEncodeURIComponent(key);
166
- if (Array.isArray(values)) {
167
- for (const val of values) {
168
- queries.push(`${encodedKey}=${safeEncodeURIComponent(String(val))}`);
169
- }
170
- }
171
- else {
172
- queries.push(`${encodedKey}=${safeEncodeURIComponent(String(values))}`);
173
- }
174
- }
175
- }
176
- if (queries.length > 0) {
177
- const queryStr = queries.join('&');
178
- if (!url.includes('?')) {
179
- url = `${url}?${queryStr}`;
180
- }
181
- else {
182
- url = `${url}&${queryStr}`;
183
- }
184
- }
185
- return url;
186
- }
187
- /**
188
- * @alias to url()
189
- */
190
- pathFor(name, params) {
191
- return this.url(name, params);
192
- }
193
- }
194
- /**
195
- * resolve controller from string to function
196
- * @param {String|Function} controller input controller
197
- * @param {Application} app egg application instance
198
- */
199
- function resolveController(controller, app) {
200
- if (typeof controller === 'string') {
201
- // resolveController('foo.bar.Home', app)
202
- const actions = controller.split('.');
203
- let obj = app.controller;
204
- actions.forEach(key => {
205
- obj = obj[key];
206
- if (!obj)
207
- throw new Error(`app.controller.${controller} not exists`);
208
- });
209
- controller = obj;
210
- }
211
- // ensure controller is exists
212
- if (!controller)
213
- throw new Error('controller not exists');
214
- return controller;
215
- }
216
- /**
217
- * 1. ensure controller(last argument) support string
218
- * - [url, controller]: app.get('/home', 'home');
219
- * - [name, url, controller(string)]: app.get('posts', '/posts', 'posts.list');
220
- * - [name, url, controller]: app.get('posts', '/posts', app.controller.posts.list);
221
- * - [name, url(regexp), controller]: app.get('regRouter', /\/home\/index/, 'home.index');
222
- * - [name, url, middleware, [...], controller]: `app.get(/user/:id', hasLogin, canGetUser, 'user.show');`
223
- *
224
- * 2. bind ctx to controller `this`
225
- *
226
- * @param {Array} middlewares middlewares and controller(last middleware)
227
- * @param {Application} app egg application instance
228
- */
229
- function convertMiddlewares(middlewares, app) {
230
- // ensure controller is resolved
231
- const controller = resolveController(middlewares.pop(), app);
232
- function wrappedController(ctx, next) {
233
- return controller.apply(ctx, [ctx, next]);
234
- }
235
- return [...middlewares, wrappedController];
236
- }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRWdnUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0VnZ1JvdXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLE1BQU0sTUFBTSxhQUFhLENBQUM7QUFDakMsT0FBTyxFQUFFLGtCQUFrQixJQUFJLHNCQUFzQixFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ3ZFLE9BQU8sVUFBVSxNQUFNLFlBQVksQ0FBQztBQUNwQyxPQUFPLE9BQU8sTUFBTSxTQUFTLENBQUM7QUFDOUIsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ2pELE9BQU8sRUFBbUIsTUFBTSxFQUErQixNQUFNLGFBQWEsQ0FBQztBQVVuRixNQUFNLFFBQVEsR0FBbUM7SUFDL0MsS0FBSyxFQUFFO1FBQ0wsTUFBTSxFQUFFLEVBQUU7UUFDVixNQUFNLEVBQUUsS0FBSztLQUNkO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsVUFBVSxFQUFFLE1BQU07UUFDbEIsTUFBTSxFQUFFLElBQUk7UUFDWixNQUFNLEVBQUUsS0FBSztRQUNiLE1BQU0sRUFBRSxLQUFLO0tBQ2Q7SUFDRCxNQUFNLEVBQUU7UUFDTixNQUFNLEVBQUUsRUFBRTtRQUNWLE1BQU0sRUFBRSxNQUFNO0tBQ2Y7SUFDRCxJQUFJLEVBQUU7UUFDSixNQUFNLEVBQUUsSUFBSTtRQUNaLE1BQU0sRUFBRSxLQUFLO1FBQ2IsTUFBTSxFQUFFLEtBQUs7S0FDZDtJQUNELElBQUksRUFBRTtRQUNKLE1BQU0sRUFBRSxJQUFJO1FBQ1osVUFBVSxFQUFFLE9BQU87UUFDbkIsTUFBTSxFQUFFLFVBQVU7UUFDbEIsTUFBTSxFQUFFLEtBQUs7S0FDZDtJQUNELE1BQU0sRUFBRTtRQUNOLE1BQU0sRUFBRSxJQUFJO1FBQ1osVUFBVSxFQUFFLEVBQUU7UUFDZCxNQUFNLEVBQUUsS0FBSztRQUNiLE1BQU0sRUFBRSxDQUFFLE9BQU8sRUFBRSxLQUFLLENBQUU7S0FDM0I7SUFDRCxPQUFPLEVBQUU7UUFDUCxNQUFNLEVBQUUsSUFBSTtRQUNaLFVBQVUsRUFBRSxVQUFVO1FBQ3RCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsTUFBTSxFQUFFLFFBQVE7S0FDakI7Q0FDRixDQUFDO0FBTUY7O0dBRUc7QUFDSCxNQUFNLE9BQU8sU0FBVSxTQUFRLE1BQU07SUFDMUIsR0FBRyxDQUFjO0lBRTFCOzs7O09BSUc7SUFDSCxZQUFZLElBQW1CLEVBQUUsR0FBZ0I7UUFDL0MsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ1osSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLENBQUM7SUFDakIsQ0FBQztJQUVELElBQUksQ0FBQyxNQUFxQyxFQUN4QyxVQUFpRCxFQUNqRCxnQkFBd0UsRUFDeEUsR0FBRyxVQUF1QztRQUMxQyxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsVUFBVSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3pHLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDL0IsTUFBTSxHQUFHLENBQUUsTUFBTSxDQUFFLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDbEQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBS0QsSUFBSSxDQUFDLFVBQWlELEVBQ3BELGdCQUF3RSxFQUN4RSxHQUFHLFdBQXdDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDekUsQ0FBQztJQUdELE9BQU8sQ0FBQyxVQUFpRCxFQUN2RCxnQkFBd0UsRUFDeEUsR0FBRyxXQUF3QztRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFHRCxHQUFHLENBQUMsVUFBaUQsRUFDbkQsZ0JBQXdFLEVBQ3hFLEdBQUcsV0FBd0M7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBR0QsR0FBRyxDQUFDLFVBQWlELEVBQ25ELGdCQUF3RSxFQUN4RSxHQUFHLFdBQXdDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUdELEtBQUssQ0FBQyxVQUFpRCxFQUNyRCxnQkFBd0UsRUFDeEUsR0FBRyxXQUF3QztRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFHRCxJQUFJLENBQUMsVUFBaUQsRUFDcEQsZ0JBQXdFLEVBQ3hFLEdBQUcsV0FBd0M7UUFDM0MsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsR0FBRyxXQUFXLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBR0QsTUFBTSxDQUFDLFVBQWlELEVBQ3RELGdCQUF3RSxFQUN4RSxHQUFHLFdBQXdDO1FBQzNDLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLEdBQUcsV0FBVyxDQUFDLENBQUM7SUFDM0UsQ0FBQztJQUdELEdBQUcsQ0FBQyxVQUFpRCxFQUNuRCxnQkFBd0UsRUFDeEUsR0FBRyxXQUF3QztRQUMzQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsRUFBRSxHQUFHLFdBQVcsQ0FBQyxDQUFDO0lBQzFFLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBMkMsRUFDbEQsT0FBaUIsRUFDakIsVUFBdUYsRUFDdkYsSUFBc0I7UUFDdEIsK0VBQStFO1FBQy9FLFVBQVUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUUsVUFBVSxDQUFFLENBQUM7UUFDckUsS0FBSyxNQUFNLEVBQUUsSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUM1QixJQUFJLG1CQUFtQixDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzVCLE1BQU0sSUFBSSxTQUFTLENBQ2pCLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxJQUFJLEdBQUcsSUFBSSxHQUFHLDREQUE0RCxDQUNoRyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFDRCxNQUFNLFdBQVcsR0FBRyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzdELE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBb0RELFNBQVMsQ0FBQyxVQUEyQixFQUFFLGdCQUF3RSxFQUM3RyxHQUFHLFVBQTZEO1FBQ2hFLE1BQU0sRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxDQUFDLENBQUM7UUFDekcscUNBQXFDO1FBQ3JDLE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLEVBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDbkUsS0FBSyxNQUFNLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUMzQixNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFtQixDQUFDO1lBQ2pELElBQUksQ0FBQyxNQUFNO2dCQUFFLFNBQVM7WUFFdEIsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQzNCLElBQUksU0FBUyxDQUFDO1lBQ2QsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2hCLFNBQVMsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDekQsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLENBQUM7WUFDdkQsQ0FBQztZQUNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNwQixTQUFTLEdBQUcsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7WUFDMUMsQ0FBQztZQUNELE1BQU0sTUFBTSxHQUFJLElBQWUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsTUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDO1lBQ2xFLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUUsQ0FBQztZQUMxRSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsV0FBVyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSCxHQUFHLENBQUMsSUFBWSxFQUFFLE1BQThEO1FBQzlFLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsSUFBSSxDQUFDLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUV0QixNQUFNLElBQUksR0FBRyxNQUFNLENBQUM7UUFDcEIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUVyQixNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxNQUFNLENBQUMsRUFBRSxnQ0FBZ0MsR0FBRyxpQkFBaUIsSUFBSSxHQUFHLENBQUMsQ0FBQztRQUU5RixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUM7UUFDbkIsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLElBQUksSUFBSSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQzlDLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQztZQUNwQyxHQUFHLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRTtnQkFDaEQsSUFBSSxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7b0JBQ2hCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekIsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDekIsT0FBTyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO2dCQUM1RixDQUFDO2dCQUNELE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7WUFFSCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixJQUFJLGNBQWMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztvQkFDakMsU0FBUztnQkFDWCxDQUFDO2dCQUNELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztnQkFDekIsTUFBTSxVQUFVLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxDQUFDLENBQUM7Z0JBQy9DLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO29CQUMxQixLQUFLLE1BQU0sR0FBRyxJQUFJLE1BQU0sRUFBRSxDQUFDO3dCQUN6QixPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxJQUFJLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztvQkFDdkUsQ0FBQztnQkFDSCxDQUFDO3FCQUFNLENBQUM7b0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsSUFBSSxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQzFFLENBQUM7WUFDSCxDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ3ZCLEdBQUcsR0FBRyxHQUFHLEdBQUcsSUFBSSxRQUFRLEVBQUUsQ0FBQztZQUM3QixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sR0FBRyxHQUFHLEdBQUcsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQzdCLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRUQ7O09BRUc7SUFDSCxPQUFPLENBQUMsSUFBWSxFQUFFLE1BQThEO1FBQ2xGLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILFNBQVMsaUJBQWlCLENBQUMsVUFBeUQsRUFBRSxHQUFnQjtJQUNwRyxJQUFJLE9BQU8sVUFBVSxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQ25DLHlDQUF5QztRQUN6QyxNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3RDLElBQUksR0FBRyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUM7UUFDekIsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUNwQixHQUFHLEdBQUcsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2YsSUFBSSxDQUFDLEdBQUc7Z0JBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsVUFBVSxhQUFhLENBQUMsQ0FBQztRQUN2RSxDQUFDLENBQUMsQ0FBQztRQUNILFVBQVUsR0FBRyxHQUFVLENBQUM7SUFDMUIsQ0FBQztJQUNELDhCQUE4QjtJQUM5QixJQUFJLENBQUMsVUFBVTtRQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUMxRCxPQUFPLFVBQWlCLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILFNBQVMsa0JBQWtCLENBQUMsV0FBOEQsRUFBRSxHQUFnQjtJQUMxRyxnQ0FBZ0M7SUFDaEMsTUFBTSxVQUFVLEdBQUcsaUJBQWlCLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQzlELFNBQVMsaUJBQWlCLENBQUMsR0FBUSxFQUFFLElBQVU7UUFDN0MsT0FBTyxVQUFVLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFFLEdBQUcsRUFBRSxJQUFJLENBQUUsQ0FBQyxDQUFDO0lBQzlDLENBQUM7SUFDRCxPQUFPLENBQUUsR0FBRyxXQUErQixFQUFFLGlCQUFpQixDQUFFLENBQUM7QUFDbkUsQ0FBQyJ9
@@ -1,114 +0,0 @@
1
- import { type Key } from 'path-to-regexp';
2
- import type { MiddlewareFunc, MiddlewareFuncWithParamProperty, ParamMiddlewareFunc } from './types.js';
3
- export interface LayerOptions {
4
- prefix?: string;
5
- /** route name */
6
- name?: string;
7
- /** case sensitive (default: false) */
8
- sensitive?: boolean;
9
- /** require the trailing slash (default: false) */
10
- strict?: boolean;
11
- ignoreCaptures?: boolean;
12
- end?: boolean;
13
- }
14
- export interface LayerURLOptions {
15
- query?: string | object;
16
- }
17
- export declare class Layer {
18
- readonly opts: LayerOptions;
19
- readonly name?: string;
20
- readonly methods: string[];
21
- readonly stack: MiddlewareFuncWithParamProperty[];
22
- path: string | RegExp;
23
- regexp: RegExp;
24
- paramNames: Key[];
25
- /**
26
- * Initialize a new routing Layer with given `method`, `path`, and `middleware`.
27
- *
28
- * @param {String|RegExp} path Path string or regular expression.
29
- * @param {Array} methods Array of HTTP verbs.
30
- * @param {Array|Function} middlewares Layer callback/middleware or series of.
31
- * @param {Object=} opts optional params
32
- * @param {String=} opts.name route name
33
- * @param {String=} opts.sensitive case sensitive (default: false)
34
- * @param {String=} opts.strict require the trailing slash (default: false)
35
- * @private
36
- */
37
- constructor(path: string | RegExp, methods: string[], middlewares: MiddlewareFunc | MiddlewareFunc[], opts?: LayerOptions | string);
38
- /**
39
- * Returns whether request `path` matches route.
40
- *
41
- * @param {String} path path string
42
- * @return {Boolean} matched or not
43
- * @private
44
- */
45
- match(path: string): boolean;
46
- /**
47
- * Returns map of URL parameters for given `path` and `paramNames`.
48
- *
49
- * @param {String} _path path string
50
- * @param {Array.<String>} captures captures strings
51
- * @param {Object=} [existingParams] existing params
52
- * @return {Object} params object
53
- * @private
54
- */
55
- params(_path: string, captures: Array<string>, existingParams?: Record<string, string>): Record<string, string>;
56
- /**
57
- * Returns array of regexp url path captures.
58
- *
59
- * @param {String} path path string
60
- * @return {Array.<String>} captures strings
61
- * @private
62
- */
63
- captures(path: string): Array<string>;
64
- /**
65
- * Generate URL for route using given `params`.
66
- *
67
- * @example
68
- *
69
- * ```javascript
70
- * var route = new Layer(['GET'], '/users/:id', fn);
71
- *
72
- * route.url(123); // => "/users/123"
73
- * route.url('123'); // => "/users/123"
74
- * route.url({ id: 123 }); // => "/users/123"
75
- * ```
76
- *
77
- * @param {Object} params url parameters
78
- * @param {Object} paramsOrOptions optional parameters
79
- * @return {String} url string
80
- * @private
81
- */
82
- url(params?: string | number | object, ...paramsOrOptions: (string | number | object | LayerURLOptions)[]): string;
83
- /**
84
- * Run validations on route named parameters.
85
- *
86
- * @example
87
- *
88
- * ```javascript
89
- * router
90
- * .param('user', function (id, ctx, next) {
91
- * ctx.user = users[id];
92
- * if (!user) return ctx.status = 404;
93
- * next();
94
- * })
95
- * .get('/users/:user', function (ctx, next) {
96
- * ctx.body = ctx.user;
97
- * });
98
- * ```
99
- *
100
- * @param {String} param param string
101
- * @param {Function} fn middleware function
102
- * @return {Layer} layer instance
103
- * @private
104
- */
105
- param(param: string, fn: ParamMiddlewareFunc): Layer;
106
- /**
107
- * Prefix route path.
108
- *
109
- * @param {String} prefix prefix string
110
- * @return {Layer} layer instance
111
- * @private
112
- */
113
- setPrefix(prefix: string): Layer;
114
- }