@e22m4u/ts-rest-router 0.0.2
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/.c8rc +9 -0
- package/.commitlintrc +5 -0
- package/.editorconfig +13 -0
- package/.husky/commit-msg +1 -0
- package/.husky/pre-commit +6 -0
- package/.mocharc.json +5 -0
- package/.prettierrc +7 -0
- package/LICENSE +21 -0
- package/README-ru.md +41 -0
- package/README.md +41 -0
- package/build-cjs.js +16 -0
- package/dist/cjs/index.cjs +692 -0
- package/dist/esm/controller-registry.d.ts +65 -0
- package/dist/esm/controller-registry.js +281 -0
- package/dist/esm/controller-registry.spec.d.ts +1 -0
- package/dist/esm/controller-registry.spec.js +719 -0
- package/dist/esm/debuggable-service.d.ts +18 -0
- package/dist/esm/debuggable-service.js +23 -0
- package/dist/esm/debuggable-service.spec.d.ts +1 -0
- package/dist/esm/debuggable-service.spec.js +16 -0
- package/dist/esm/decorators/action/action-decorator.d.ts +53 -0
- package/dist/esm/decorators/action/action-decorator.js +66 -0
- package/dist/esm/decorators/action/action-decorator.spec.d.ts +1 -0
- package/dist/esm/decorators/action/action-decorator.spec.js +59 -0
- package/dist/esm/decorators/action/action-metadata.d.ts +23 -0
- package/dist/esm/decorators/action/action-metadata.js +5 -0
- package/dist/esm/decorators/action/action-reflector.d.ts +22 -0
- package/dist/esm/decorators/action/action-reflector.js +29 -0
- package/dist/esm/decorators/action/action-reflector.spec.d.ts +1 -0
- package/dist/esm/decorators/action/action-reflector.spec.js +84 -0
- package/dist/esm/decorators/action/index.d.ts +3 -0
- package/dist/esm/decorators/action/index.js +3 -0
- package/dist/esm/decorators/controller/controller-decorator.d.ts +13 -0
- package/dist/esm/decorators/controller/controller-decorator.js +20 -0
- package/dist/esm/decorators/controller/controller-decorator.spec.d.ts +1 -0
- package/dist/esm/decorators/controller/controller-decorator.spec.js +53 -0
- package/dist/esm/decorators/controller/controller-metadata.d.ts +17 -0
- package/dist/esm/decorators/controller/controller-metadata.js +5 -0
- package/dist/esm/decorators/controller/controller-reflector.d.ts +20 -0
- package/dist/esm/decorators/controller/controller-reflector.js +24 -0
- package/dist/esm/decorators/controller/controller-reflector.spec.d.ts +1 -0
- package/dist/esm/decorators/controller/controller-reflector.spec.js +45 -0
- package/dist/esm/decorators/controller/index.d.ts +3 -0
- package/dist/esm/decorators/controller/index.js +3 -0
- package/dist/esm/decorators/index.d.ts +4 -0
- package/dist/esm/decorators/index.js +4 -0
- package/dist/esm/decorators/request-context/index.d.ts +3 -0
- package/dist/esm/decorators/request-context/index.js +3 -0
- package/dist/esm/decorators/request-context/request-context-decorator.d.ts +17 -0
- package/dist/esm/decorators/request-context/request-context-decorator.js +32 -0
- package/dist/esm/decorators/request-context/request-context-decorator.spec.d.ts +1 -0
- package/dist/esm/decorators/request-context/request-context-decorator.spec.js +59 -0
- package/dist/esm/decorators/request-context/request-context-metadata.d.ts +17 -0
- package/dist/esm/decorators/request-context/request-context-metadata.js +5 -0
- package/dist/esm/decorators/request-context/request-context-reflector.d.ts +24 -0
- package/dist/esm/decorators/request-context/request-context-reflector.js +31 -0
- package/dist/esm/decorators/request-context/request-context-reflector.spec.d.ts +1 -0
- package/dist/esm/decorators/request-context/request-context-reflector.spec.js +59 -0
- package/dist/esm/decorators/request-data/index.d.ts +3 -0
- package/dist/esm/decorators/request-data/index.js +3 -0
- package/dist/esm/decorators/request-data/request-data-decorator.d.ts +28 -0
- package/dist/esm/decorators/request-data/request-data-decorator.js +84 -0
- package/dist/esm/decorators/request-data/request-data-decorator.spec.d.ts +1 -0
- package/dist/esm/decorators/request-data/request-data-decorator.spec.js +534 -0
- package/dist/esm/decorators/request-data/request-data-metadata.d.ts +29 -0
- package/dist/esm/decorators/request-data/request-data-metadata.js +16 -0
- package/dist/esm/decorators/request-data/request-data-reflector.d.ts +24 -0
- package/dist/esm/decorators/request-data/request-data-reflector.js +31 -0
- package/dist/esm/decorators/request-data/request-data-reflector.spec.d.ts +1 -0
- package/dist/esm/decorators/request-data/request-data-reflector.spec.js +60 -0
- package/dist/esm/errors/index.d.ts +1 -0
- package/dist/esm/errors/index.js +1 -0
- package/dist/esm/errors/not-a-controller-error.d.ts +12 -0
- package/dist/esm/errors/not-a-controller-error.js +14 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +5 -0
- package/dist/esm/rest-router.d.ts +19 -0
- package/dist/esm/rest-router.js +24 -0
- package/dist/esm/types.d.ts +57 -0
- package/dist/esm/types.js +2 -0
- package/dist/esm/utils/capitalize.d.ts +6 -0
- package/dist/esm/utils/capitalize.js +8 -0
- package/dist/esm/utils/capitalize.spec.d.ts +1 -0
- package/dist/esm/utils/capitalize.spec.js +8 -0
- package/dist/esm/utils/create-debugger.d.ts +11 -0
- package/dist/esm/utils/create-debugger.js +15 -0
- package/dist/esm/utils/create-debugger.spec.d.ts +1 -0
- package/dist/esm/utils/create-debugger.spec.js +8 -0
- package/dist/esm/utils/create-error.d.ts +10 -0
- package/dist/esm/utils/create-error.js +13 -0
- package/dist/esm/utils/create-error.spec.d.ts +1 -0
- package/dist/esm/utils/create-error.spec.js +8 -0
- package/dist/esm/utils/index.d.ts +4 -0
- package/dist/esm/utils/index.js +4 -0
- package/dist/esm/utils/to-camel-case.d.ts +6 -0
- package/dist/esm/utils/to-camel-case.js +11 -0
- package/dist/esm/utils/to-camel-case.spec.d.ts +1 -0
- package/dist/esm/utils/to-camel-case.spec.js +10 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/eslint.config.js +43 -0
- package/package.json +74 -0
- package/src/controller-registry.spec.ts +592 -0
- package/src/controller-registry.ts +355 -0
- package/src/debuggable-service.spec.ts +18 -0
- package/src/debuggable-service.ts +27 -0
- package/src/decorators/action/action-decorator.spec.ts +42 -0
- package/src/decorators/action/action-decorator.ts +100 -0
- package/src/decorators/action/action-metadata.ts +28 -0
- package/src/decorators/action/action-reflector.spec.ts +84 -0
- package/src/decorators/action/action-reflector.ts +38 -0
- package/src/decorators/action/index.ts +3 -0
- package/src/decorators/controller/controller-decorator.spec.ts +41 -0
- package/src/decorators/controller/controller-decorator.ts +29 -0
- package/src/decorators/controller/controller-metadata.ts +21 -0
- package/src/decorators/controller/controller-reflector.spec.ts +45 -0
- package/src/decorators/controller/controller-reflector.ts +28 -0
- package/src/decorators/controller/index.ts +3 -0
- package/src/decorators/index.ts +4 -0
- package/src/decorators/request-context/index.ts +3 -0
- package/src/decorators/request-context/request-context-decorator.spec.ts +41 -0
- package/src/decorators/request-context/request-context-decorator.ts +57 -0
- package/src/decorators/request-context/request-context-metadata.ts +21 -0
- package/src/decorators/request-context/request-context-reflector.spec.ts +77 -0
- package/src/decorators/request-context/request-context-reflector.ts +57 -0
- package/src/decorators/request-data/index.ts +3 -0
- package/src/decorators/request-data/request-data-decorator.spec.ts +477 -0
- package/src/decorators/request-data/request-data-decorator.ts +106 -0
- package/src/decorators/request-data/request-data-metadata.ts +34 -0
- package/src/decorators/request-data/request-data-reflector.spec.ts +78 -0
- package/src/decorators/request-data/request-data-reflector.ts +57 -0
- package/src/errors/index.ts +1 -0
- package/src/errors/not-a-controller-error.ts +15 -0
- package/src/index.ts +5 -0
- package/src/rest-router.ts +31 -0
- package/src/types.ts +59 -0
- package/src/utils/capitalize.spec.ts +9 -0
- package/src/utils/capitalize.ts +8 -0
- package/src/utils/create-debugger.spec.ts +9 -0
- package/src/utils/create-debugger.ts +21 -0
- package/src/utils/create-error.spec.ts +9 -0
- package/src/utils/create-error.ts +19 -0
- package/src/utils/index.ts +4 -0
- package/src/utils/to-camel-case.spec.ts +11 -0
- package/src/utils/to-camel-case.ts +11 -0
- package/tsconfig.json +17 -0
|
@@ -0,0 +1,692 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
9
|
+
var __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// dist/esm/index.js
|
|
32
|
+
var esm_exports = {};
|
|
33
|
+
__export(esm_exports, {
|
|
34
|
+
ACTIONS_METADATA_KEY: () => ACTIONS_METADATA_KEY,
|
|
35
|
+
ActionReflector: () => ActionReflector,
|
|
36
|
+
CONTROLLER_METADATA_KEY: () => CONTROLLER_METADATA_KEY,
|
|
37
|
+
ControllerReflector: () => ControllerReflector,
|
|
38
|
+
ControllerRegistry: () => ControllerRegistry,
|
|
39
|
+
NotAControllerError: () => NotAControllerError,
|
|
40
|
+
REQUEST_CONTEXT_METADATA_KEY: () => REQUEST_CONTEXT_METADATA_KEY,
|
|
41
|
+
REQUEST_DATA_METADATA_KEY: () => REQUEST_DATA_METADATA_KEY,
|
|
42
|
+
RequestContextReflector: () => RequestContextReflector,
|
|
43
|
+
RequestDataReflector: () => RequestDataReflector,
|
|
44
|
+
RequestDataSource: () => RequestDataSource,
|
|
45
|
+
RestRouter: () => RestRouter,
|
|
46
|
+
action: () => action,
|
|
47
|
+
body: () => body,
|
|
48
|
+
bodyParam: () => bodyParam,
|
|
49
|
+
capitalize: () => capitalize,
|
|
50
|
+
controller: () => controller,
|
|
51
|
+
cookie: () => cookie,
|
|
52
|
+
cookies: () => cookies,
|
|
53
|
+
createDebugger: () => createDebugger,
|
|
54
|
+
createError: () => createError,
|
|
55
|
+
del: () => del,
|
|
56
|
+
get: () => get,
|
|
57
|
+
header: () => header,
|
|
58
|
+
headers: () => headers,
|
|
59
|
+
param: () => param,
|
|
60
|
+
params: () => params,
|
|
61
|
+
patch: () => patch,
|
|
62
|
+
post: () => post,
|
|
63
|
+
put: () => put,
|
|
64
|
+
queries: () => queries,
|
|
65
|
+
query: () => query,
|
|
66
|
+
request: () => request,
|
|
67
|
+
requestContext: () => requestContext,
|
|
68
|
+
requestData: () => requestData,
|
|
69
|
+
response: () => response,
|
|
70
|
+
toCamelCase: () => toCamelCase
|
|
71
|
+
});
|
|
72
|
+
module.exports = __toCommonJS(esm_exports);
|
|
73
|
+
|
|
74
|
+
// dist/esm/utils/capitalize.js
|
|
75
|
+
function capitalize(input) {
|
|
76
|
+
return input.charAt(0).toUpperCase() + input.slice(1);
|
|
77
|
+
}
|
|
78
|
+
__name(capitalize, "capitalize");
|
|
79
|
+
|
|
80
|
+
// dist/esm/utils/create-error.js
|
|
81
|
+
var import_js_format = require("@e22m4u/js-format");
|
|
82
|
+
function createError(errorCtor, message, ...args) {
|
|
83
|
+
const interpolatedMessage = (0, import_js_format.format)(message, ...args);
|
|
84
|
+
return new errorCtor(interpolatedMessage);
|
|
85
|
+
}
|
|
86
|
+
__name(createError, "createError");
|
|
87
|
+
|
|
88
|
+
// dist/esm/utils/to-camel-case.js
|
|
89
|
+
function toCamelCase(input) {
|
|
90
|
+
return input.replace(/(^\w|[A-Z]|\b\w)/g, (c) => c.toUpperCase()).replace(/\W+/g, "").replace(/(^\w)/g, (c) => c.toLowerCase());
|
|
91
|
+
}
|
|
92
|
+
__name(toCamelCase, "toCamelCase");
|
|
93
|
+
|
|
94
|
+
// dist/esm/utils/create-debugger.js
|
|
95
|
+
var import_debug = __toESM(require("debug"), 1);
|
|
96
|
+
var import_js_format2 = require("@e22m4u/js-format");
|
|
97
|
+
function createDebugger(name) {
|
|
98
|
+
const debug = (0, import_debug.default)(`tsRestRouter:${name}`);
|
|
99
|
+
return function(message, ...args) {
|
|
100
|
+
const interpolatedMessage = (0, import_js_format2.format)(message, ...args);
|
|
101
|
+
return debug(interpolatedMessage);
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
__name(createDebugger, "createDebugger");
|
|
105
|
+
|
|
106
|
+
// dist/esm/rest-router.js
|
|
107
|
+
var import_js_trie_router3 = require("@e22m4u/js-trie-router");
|
|
108
|
+
|
|
109
|
+
// dist/esm/debuggable-service.js
|
|
110
|
+
var import_js_service = require("@e22m4u/js-service");
|
|
111
|
+
var _DebuggableService = class _DebuggableService extends import_js_service.Service {
|
|
112
|
+
/**
|
|
113
|
+
* Debug.
|
|
114
|
+
*/
|
|
115
|
+
debug;
|
|
116
|
+
/**
|
|
117
|
+
* Constructor.
|
|
118
|
+
*
|
|
119
|
+
* @param container
|
|
120
|
+
*/
|
|
121
|
+
constructor(container) {
|
|
122
|
+
super(container);
|
|
123
|
+
const serviceName = toCamelCase(this.constructor.name);
|
|
124
|
+
this.debug = createDebugger(serviceName);
|
|
125
|
+
this.debug("%v is created.", this.constructor);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
__name(_DebuggableService, "DebuggableService");
|
|
129
|
+
var DebuggableService = _DebuggableService;
|
|
130
|
+
|
|
131
|
+
// dist/esm/controller-registry.js
|
|
132
|
+
var import_js_format4 = require("@e22m4u/js-format");
|
|
133
|
+
var import_js_trie_router2 = require("@e22m4u/js-trie-router");
|
|
134
|
+
var import_ts_data_schema2 = require("@e22m4u/ts-data-schema");
|
|
135
|
+
var import_ts_data_schema3 = require("@e22m4u/ts-data-schema");
|
|
136
|
+
|
|
137
|
+
// dist/esm/decorators/action/action-metadata.js
|
|
138
|
+
var import_ts_reflector = require("@e22m4u/ts-reflector");
|
|
139
|
+
var ACTIONS_METADATA_KEY = new import_ts_reflector.MetadataKey("actionsMetadataKey");
|
|
140
|
+
|
|
141
|
+
// dist/esm/decorators/action/action-reflector.js
|
|
142
|
+
var import_ts_reflector2 = require("@e22m4u/ts-reflector");
|
|
143
|
+
var _ActionReflector = class _ActionReflector {
|
|
144
|
+
/**
|
|
145
|
+
* Set metadata.
|
|
146
|
+
*
|
|
147
|
+
* @param metadata
|
|
148
|
+
* @param target
|
|
149
|
+
* @param propertyKey
|
|
150
|
+
*/
|
|
151
|
+
static setMetadata(metadata, target, propertyKey) {
|
|
152
|
+
const oldMap = import_ts_reflector2.Reflector.getOwnMetadata(ACTIONS_METADATA_KEY, target);
|
|
153
|
+
const newMap = new Map(oldMap);
|
|
154
|
+
newMap.set(propertyKey, metadata);
|
|
155
|
+
import_ts_reflector2.Reflector.defineMetadata(ACTIONS_METADATA_KEY, newMap, target);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get metadata.
|
|
159
|
+
*
|
|
160
|
+
* @param target
|
|
161
|
+
*/
|
|
162
|
+
static getMetadata(target) {
|
|
163
|
+
const metadata = import_ts_reflector2.Reflector.getOwnMetadata(ACTIONS_METADATA_KEY, target);
|
|
164
|
+
return metadata ?? /* @__PURE__ */ new Map();
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
__name(_ActionReflector, "ActionReflector");
|
|
168
|
+
var ActionReflector = _ActionReflector;
|
|
169
|
+
|
|
170
|
+
// dist/esm/decorators/action/action-decorator.js
|
|
171
|
+
var import_js_trie_router = require("@e22m4u/js-trie-router");
|
|
172
|
+
var import_ts_reflector3 = require("@e22m4u/ts-reflector");
|
|
173
|
+
var import_ts_reflector4 = require("@e22m4u/ts-reflector");
|
|
174
|
+
function action(options) {
|
|
175
|
+
return function(target, propertyKey, descriptor) {
|
|
176
|
+
const decoratorType = (0, import_ts_reflector4.getDecoratorTargetType)(target, propertyKey, descriptor);
|
|
177
|
+
if (decoratorType !== import_ts_reflector3.DecoratorTargetType.INSTANCE_METHOD)
|
|
178
|
+
throw new Error("@action decorator is only supported on an instance method.");
|
|
179
|
+
const metadata = {
|
|
180
|
+
...options,
|
|
181
|
+
propertyKey
|
|
182
|
+
};
|
|
183
|
+
ActionReflector.setMetadata(metadata, target.constructor, propertyKey);
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
__name(action, "action");
|
|
187
|
+
var get = /* @__PURE__ */ __name((path, options) => {
|
|
188
|
+
return action({ ...options, path, method: import_js_trie_router.HttpMethod.GET });
|
|
189
|
+
}, "get");
|
|
190
|
+
var post = /* @__PURE__ */ __name((path, options) => {
|
|
191
|
+
return action({ ...options, path, method: import_js_trie_router.HttpMethod.POST });
|
|
192
|
+
}, "post");
|
|
193
|
+
var put = /* @__PURE__ */ __name((path, options) => {
|
|
194
|
+
return action({ ...options, path, method: import_js_trie_router.HttpMethod.PUT });
|
|
195
|
+
}, "put");
|
|
196
|
+
var patch = /* @__PURE__ */ __name((path, options) => {
|
|
197
|
+
return action({ ...options, path, method: import_js_trie_router.HttpMethod.PATCH });
|
|
198
|
+
}, "patch");
|
|
199
|
+
var del = /* @__PURE__ */ __name((path, options) => {
|
|
200
|
+
return action({ ...options, path, method: import_js_trie_router.HttpMethod.DELETE });
|
|
201
|
+
}, "del");
|
|
202
|
+
|
|
203
|
+
// dist/esm/decorators/controller/controller-metadata.js
|
|
204
|
+
var import_ts_reflector5 = require("@e22m4u/ts-reflector");
|
|
205
|
+
var CONTROLLER_METADATA_KEY = new import_ts_reflector5.MetadataKey("controllerMetadataKey");
|
|
206
|
+
|
|
207
|
+
// dist/esm/decorators/controller/controller-decorator.js
|
|
208
|
+
var import_ts_reflector7 = require("@e22m4u/ts-reflector");
|
|
209
|
+
var import_ts_reflector8 = require("@e22m4u/ts-reflector");
|
|
210
|
+
|
|
211
|
+
// dist/esm/decorators/controller/controller-reflector.js
|
|
212
|
+
var import_ts_reflector6 = require("@e22m4u/ts-reflector");
|
|
213
|
+
var _ControllerReflector = class _ControllerReflector {
|
|
214
|
+
/**
|
|
215
|
+
* Set metadata.
|
|
216
|
+
*
|
|
217
|
+
* @param metadata
|
|
218
|
+
* @param target
|
|
219
|
+
*/
|
|
220
|
+
static setMetadata(metadata, target) {
|
|
221
|
+
return import_ts_reflector6.Reflector.defineMetadata(CONTROLLER_METADATA_KEY, metadata, target);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get metadata.
|
|
225
|
+
*
|
|
226
|
+
* @param target
|
|
227
|
+
*/
|
|
228
|
+
static getMetadata(target) {
|
|
229
|
+
return import_ts_reflector6.Reflector.getOwnMetadata(CONTROLLER_METADATA_KEY, target);
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
__name(_ControllerReflector, "ControllerReflector");
|
|
233
|
+
var ControllerReflector = _ControllerReflector;
|
|
234
|
+
|
|
235
|
+
// dist/esm/decorators/controller/controller-decorator.js
|
|
236
|
+
function controller(options) {
|
|
237
|
+
return function(target) {
|
|
238
|
+
const decoratorType = (0, import_ts_reflector8.getDecoratorTargetType)(target);
|
|
239
|
+
if (decoratorType !== import_ts_reflector7.DecoratorTargetType.CONSTRUCTOR)
|
|
240
|
+
throw new Error("@controller decorator is only supported on a class.");
|
|
241
|
+
const metadata = {
|
|
242
|
+
...options,
|
|
243
|
+
className: target.name
|
|
244
|
+
};
|
|
245
|
+
ControllerReflector.setMetadata(metadata, target);
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
__name(controller, "controller");
|
|
249
|
+
|
|
250
|
+
// dist/esm/decorators/request-data/request-data-metadata.js
|
|
251
|
+
var import_ts_reflector9 = require("@e22m4u/ts-reflector");
|
|
252
|
+
var RequestDataSource;
|
|
253
|
+
(function(RequestDataSource2) {
|
|
254
|
+
RequestDataSource2["PARAMS"] = "params";
|
|
255
|
+
RequestDataSource2["QUERY"] = "query";
|
|
256
|
+
RequestDataSource2["HEADERS"] = "headers";
|
|
257
|
+
RequestDataSource2["COOKIE"] = "cookie";
|
|
258
|
+
RequestDataSource2["BODY"] = "body";
|
|
259
|
+
})(RequestDataSource || (RequestDataSource = {}));
|
|
260
|
+
var REQUEST_DATA_METADATA_KEY = new import_ts_reflector9.MetadataKey("requestDataMetadataKey");
|
|
261
|
+
|
|
262
|
+
// dist/esm/decorators/request-data/request-data-decorator.js
|
|
263
|
+
var import_ts_data_schema = require("@e22m4u/ts-data-schema");
|
|
264
|
+
var import_ts_reflector11 = require("@e22m4u/ts-reflector");
|
|
265
|
+
var import_ts_reflector12 = require("@e22m4u/ts-reflector");
|
|
266
|
+
|
|
267
|
+
// dist/esm/decorators/request-data/request-data-reflector.js
|
|
268
|
+
var import_ts_reflector10 = require("@e22m4u/ts-reflector");
|
|
269
|
+
var _RequestDataReflector = class _RequestDataReflector {
|
|
270
|
+
/**
|
|
271
|
+
* Set metadata.
|
|
272
|
+
*
|
|
273
|
+
* @param metadata
|
|
274
|
+
* @param target
|
|
275
|
+
* @param index
|
|
276
|
+
* @param propertyKey
|
|
277
|
+
*/
|
|
278
|
+
static setMetadata(metadata, target, index, propertyKey) {
|
|
279
|
+
const oldMap = import_ts_reflector10.Reflector.getOwnMetadata(REQUEST_DATA_METADATA_KEY, target, propertyKey);
|
|
280
|
+
const newMap = new Map(oldMap);
|
|
281
|
+
newMap.set(index, metadata);
|
|
282
|
+
import_ts_reflector10.Reflector.defineMetadata(REQUEST_DATA_METADATA_KEY, newMap, target, propertyKey);
|
|
283
|
+
}
|
|
284
|
+
/**
|
|
285
|
+
* Get metadata.
|
|
286
|
+
*
|
|
287
|
+
* @param target
|
|
288
|
+
* @param propertyKey
|
|
289
|
+
*/
|
|
290
|
+
static getMetadata(target, propertyKey) {
|
|
291
|
+
const metadata = import_ts_reflector10.Reflector.getOwnMetadata(REQUEST_DATA_METADATA_KEY, target, propertyKey);
|
|
292
|
+
return metadata ?? /* @__PURE__ */ new Map();
|
|
293
|
+
}
|
|
294
|
+
};
|
|
295
|
+
__name(_RequestDataReflector, "RequestDataReflector");
|
|
296
|
+
var RequestDataReflector = _RequestDataReflector;
|
|
297
|
+
|
|
298
|
+
// dist/esm/decorators/request-data/request-data-decorator.js
|
|
299
|
+
function requestData(metadata) {
|
|
300
|
+
return function(target, propertyKey, indexOrDescriptor) {
|
|
301
|
+
const decoratorType = (0, import_ts_reflector12.getDecoratorTargetType)(target, propertyKey, indexOrDescriptor);
|
|
302
|
+
if (decoratorType !== import_ts_reflector11.DecoratorTargetType.INSTANCE_METHOD_PARAMETER)
|
|
303
|
+
throw new Error("@requestData decorator is only supported on an instance method parameter.");
|
|
304
|
+
RequestDataReflector.setMetadata(metadata, target.constructor, indexOrDescriptor, propertyKey);
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
__name(requestData, "requestData");
|
|
308
|
+
function createDataDecorator(source) {
|
|
309
|
+
return function() {
|
|
310
|
+
const schema = { type: import_ts_data_schema.DataType.OBJECT };
|
|
311
|
+
return requestData({ schema, source });
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
__name(createDataDecorator, "createDataDecorator");
|
|
315
|
+
function createPropertyDecorator(source) {
|
|
316
|
+
return function(propertyKey, schemaOrType) {
|
|
317
|
+
const properties = {};
|
|
318
|
+
const rootSchema = { type: import_ts_data_schema.DataType.OBJECT };
|
|
319
|
+
if (typeof schemaOrType === "object") {
|
|
320
|
+
properties[propertyKey] = schemaOrType;
|
|
321
|
+
rootSchema.properties = properties;
|
|
322
|
+
} else if (typeof schemaOrType === "string") {
|
|
323
|
+
properties[propertyKey] = { type: schemaOrType };
|
|
324
|
+
rootSchema.properties = properties;
|
|
325
|
+
}
|
|
326
|
+
return requestData({
|
|
327
|
+
source,
|
|
328
|
+
schema: rootSchema,
|
|
329
|
+
property: propertyKey
|
|
330
|
+
});
|
|
331
|
+
};
|
|
332
|
+
}
|
|
333
|
+
__name(createPropertyDecorator, "createPropertyDecorator");
|
|
334
|
+
var params = createDataDecorator(RequestDataSource.PARAMS);
|
|
335
|
+
var param = createPropertyDecorator(RequestDataSource.PARAMS);
|
|
336
|
+
var queries = createDataDecorator(RequestDataSource.QUERY);
|
|
337
|
+
var query = createPropertyDecorator(RequestDataSource.QUERY);
|
|
338
|
+
var headers = createDataDecorator(RequestDataSource.HEADERS);
|
|
339
|
+
var header = createPropertyDecorator(RequestDataSource.HEADERS);
|
|
340
|
+
var cookies = createDataDecorator(RequestDataSource.COOKIE);
|
|
341
|
+
var cookie = createPropertyDecorator(RequestDataSource.COOKIE);
|
|
342
|
+
var bodyParam = createPropertyDecorator(RequestDataSource.BODY);
|
|
343
|
+
function body(schemaOrType) {
|
|
344
|
+
let schema;
|
|
345
|
+
if (typeof schemaOrType === "object") {
|
|
346
|
+
schema = schemaOrType;
|
|
347
|
+
} else if (typeof schemaOrType === "string") {
|
|
348
|
+
schema = { type: schemaOrType };
|
|
349
|
+
} else {
|
|
350
|
+
schema = { type: import_ts_data_schema.DataType.ANY };
|
|
351
|
+
}
|
|
352
|
+
return requestData({ schema, source: RequestDataSource.BODY });
|
|
353
|
+
}
|
|
354
|
+
__name(body, "body");
|
|
355
|
+
|
|
356
|
+
// dist/esm/decorators/request-context/request-context-metadata.js
|
|
357
|
+
var import_ts_reflector13 = require("@e22m4u/ts-reflector");
|
|
358
|
+
var REQUEST_CONTEXT_METADATA_KEY = new import_ts_reflector13.MetadataKey("requestContextMetadataKey");
|
|
359
|
+
|
|
360
|
+
// dist/esm/decorators/request-context/request-context-decorator.js
|
|
361
|
+
var import_ts_reflector15 = require("@e22m4u/ts-reflector");
|
|
362
|
+
var import_ts_reflector16 = require("@e22m4u/ts-reflector");
|
|
363
|
+
|
|
364
|
+
// dist/esm/decorators/request-context/request-context-reflector.js
|
|
365
|
+
var import_ts_reflector14 = require("@e22m4u/ts-reflector");
|
|
366
|
+
var _RequestContextReflector = class _RequestContextReflector {
|
|
367
|
+
/**
|
|
368
|
+
* Set metadata.
|
|
369
|
+
*
|
|
370
|
+
* @param metadata
|
|
371
|
+
* @param target
|
|
372
|
+
* @param index
|
|
373
|
+
* @param propertyKey
|
|
374
|
+
*/
|
|
375
|
+
static setMetadata(metadata, target, index, propertyKey) {
|
|
376
|
+
const oldMap = import_ts_reflector14.Reflector.getOwnMetadata(REQUEST_CONTEXT_METADATA_KEY, target, propertyKey);
|
|
377
|
+
const newMap = new Map(oldMap);
|
|
378
|
+
newMap.set(index, metadata);
|
|
379
|
+
import_ts_reflector14.Reflector.defineMetadata(REQUEST_CONTEXT_METADATA_KEY, newMap, target, propertyKey);
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Get metadata.
|
|
383
|
+
*
|
|
384
|
+
* @param target
|
|
385
|
+
* @param propertyKey
|
|
386
|
+
*/
|
|
387
|
+
static getMetadata(target, propertyKey) {
|
|
388
|
+
const metadata = import_ts_reflector14.Reflector.getOwnMetadata(REQUEST_CONTEXT_METADATA_KEY, target, propertyKey);
|
|
389
|
+
return metadata ?? /* @__PURE__ */ new Map();
|
|
390
|
+
}
|
|
391
|
+
};
|
|
392
|
+
__name(_RequestContextReflector, "RequestContextReflector");
|
|
393
|
+
var RequestContextReflector = _RequestContextReflector;
|
|
394
|
+
|
|
395
|
+
// dist/esm/decorators/request-context/request-context-decorator.js
|
|
396
|
+
function requestContext(propertyOrMetadata) {
|
|
397
|
+
return function(target, propertyKey, indexOrDescriptor) {
|
|
398
|
+
const decoratorType = (0, import_ts_reflector16.getDecoratorTargetType)(target, propertyKey, indexOrDescriptor);
|
|
399
|
+
if (decoratorType !== import_ts_reflector15.DecoratorTargetType.INSTANCE_METHOD_PARAMETER)
|
|
400
|
+
throw new Error("@requestContext decorator is only supported on an instance method parameter.");
|
|
401
|
+
const metadata = typeof propertyOrMetadata !== "object" ? { property: propertyOrMetadata } : propertyOrMetadata;
|
|
402
|
+
RequestContextReflector.setMetadata(metadata, target.constructor, indexOrDescriptor, propertyKey);
|
|
403
|
+
};
|
|
404
|
+
}
|
|
405
|
+
__name(requestContext, "requestContext");
|
|
406
|
+
function request() {
|
|
407
|
+
return requestContext("req");
|
|
408
|
+
}
|
|
409
|
+
__name(request, "request");
|
|
410
|
+
function response() {
|
|
411
|
+
return requestContext("res");
|
|
412
|
+
}
|
|
413
|
+
__name(response, "response");
|
|
414
|
+
|
|
415
|
+
// dist/esm/errors/not-a-controller-error.js
|
|
416
|
+
var import_js_format3 = require("@e22m4u/js-format");
|
|
417
|
+
var _NotAControllerError = class _NotAControllerError extends import_js_format3.Errorf {
|
|
418
|
+
/**
|
|
419
|
+
* Constructor.
|
|
420
|
+
*
|
|
421
|
+
* @param value
|
|
422
|
+
*/
|
|
423
|
+
constructor(value) {
|
|
424
|
+
super("%v is not a controller, do use @controller decorator on it.", value);
|
|
425
|
+
}
|
|
426
|
+
};
|
|
427
|
+
__name(_NotAControllerError, "NotAControllerError");
|
|
428
|
+
var NotAControllerError = _NotAControllerError;
|
|
429
|
+
|
|
430
|
+
// dist/esm/controller-registry.js
|
|
431
|
+
var _ControllerRegistry = class _ControllerRegistry extends DebuggableService {
|
|
432
|
+
/**
|
|
433
|
+
* Controllers.
|
|
434
|
+
*/
|
|
435
|
+
controllers = /* @__PURE__ */ new Set();
|
|
436
|
+
/**
|
|
437
|
+
* Add controller.
|
|
438
|
+
*
|
|
439
|
+
* @param ctor
|
|
440
|
+
* @param options
|
|
441
|
+
*/
|
|
442
|
+
addController(ctor, options) {
|
|
443
|
+
if (this.hasController(ctor))
|
|
444
|
+
throw new import_js_format4.Errorf("The controller %v is already registered.");
|
|
445
|
+
const controllerMd = ControllerReflector.getMetadata(ctor);
|
|
446
|
+
if (!controllerMd)
|
|
447
|
+
throw new NotAControllerError(ctor);
|
|
448
|
+
this.debug("Adding controller %s.", ctor.name);
|
|
449
|
+
const pathPrefix = this.getPathPrefixByControllerMetadata(controllerMd, options);
|
|
450
|
+
this.debug("Path prefix is %v.", pathPrefix);
|
|
451
|
+
const preHandlers = this.getPreHandlersByControllerMetadata(controllerMd, options);
|
|
452
|
+
this.debug("%v total pre-handlers found.", preHandlers.length);
|
|
453
|
+
const postHandlers = this.getPostHandlersByControllerMetadata(controllerMd, options);
|
|
454
|
+
this.debug("%v total post-handlers found.", postHandlers.length);
|
|
455
|
+
const actionsMd = ActionReflector.getMetadata(ctor);
|
|
456
|
+
this.debug("%v actions found.", actionsMd.size);
|
|
457
|
+
const router = this.getService(import_js_trie_router2.TrieRouter);
|
|
458
|
+
actionsMd.forEach((actionMd, actionName) => {
|
|
459
|
+
this.debug("Adding route for %s.%s.", ctor.name, actionName);
|
|
460
|
+
this.debug("Route path is %v.", actionMd.path);
|
|
461
|
+
const prefixedRoutePath = `${pathPrefix}/${actionMd.path}`.replace(/\/\//g, "/");
|
|
462
|
+
this.debug("Prefixed route path is %v.", prefixedRoutePath);
|
|
463
|
+
const actionPreHandlers = Array.isArray(actionMd.before) ? actionMd.before : actionMd.before ? [actionMd.before] : [];
|
|
464
|
+
this.debug("%v action pre-handlers found.", actionPreHandlers.length);
|
|
465
|
+
const mergedPreHandlers = [...preHandlers, ...actionPreHandlers];
|
|
466
|
+
const actionPostHandlers = Array.isArray(actionMd.after) ? actionMd.after : actionMd.after ? [actionMd.after] : [];
|
|
467
|
+
this.debug("%v action post-handlers found.", actionPostHandlers.length);
|
|
468
|
+
const mergedPostHandlers = [...postHandlers, ...actionPostHandlers];
|
|
469
|
+
const routeHandler = this.createRouteHandler(ctor, actionName);
|
|
470
|
+
router.defineRoute({
|
|
471
|
+
method: actionMd.method,
|
|
472
|
+
path: prefixedRoutePath,
|
|
473
|
+
preHandler: mergedPreHandlers,
|
|
474
|
+
handler: routeHandler,
|
|
475
|
+
postHandler: mergedPostHandlers
|
|
476
|
+
});
|
|
477
|
+
this.debug("Route %s %v is added.", actionMd.method.toUpperCase(), prefixedRoutePath);
|
|
478
|
+
});
|
|
479
|
+
this.controllers.add(ctor);
|
|
480
|
+
return this;
|
|
481
|
+
}
|
|
482
|
+
/**
|
|
483
|
+
* Has controller.
|
|
484
|
+
*
|
|
485
|
+
* @param ctor
|
|
486
|
+
*/
|
|
487
|
+
hasController(ctor) {
|
|
488
|
+
return this.controllers.has(ctor);
|
|
489
|
+
}
|
|
490
|
+
/**
|
|
491
|
+
* Get path prefix by controller metadata.
|
|
492
|
+
*
|
|
493
|
+
* @param controllerMd
|
|
494
|
+
* @param options
|
|
495
|
+
*/
|
|
496
|
+
getPathPrefixByControllerMetadata(controllerMd, options) {
|
|
497
|
+
const rootPathPrefix = (options == null ? void 0 : options.pathPrefix) || "";
|
|
498
|
+
this.debug("Root path prefix is %v.", rootPathPrefix);
|
|
499
|
+
const controllerPathPrefix = controllerMd.path || "";
|
|
500
|
+
this.debug("Controller path prefix is %v.", controllerPathPrefix);
|
|
501
|
+
const mergedPathPrefix = `/${rootPathPrefix}/${controllerPathPrefix}`.replace(/\/\//g, "/").replace(/\/$/, "");
|
|
502
|
+
this.debug("Merged path prefix is %v.", mergedPathPrefix);
|
|
503
|
+
return mergedPathPrefix;
|
|
504
|
+
}
|
|
505
|
+
/**
|
|
506
|
+
* Get pre-handlers by controller metadata.
|
|
507
|
+
*
|
|
508
|
+
* @param controllerMd
|
|
509
|
+
* @param options
|
|
510
|
+
*/
|
|
511
|
+
getPreHandlersByControllerMetadata(controllerMd, options) {
|
|
512
|
+
let rootPreHandlers = [];
|
|
513
|
+
if (options == null ? void 0 : options.before)
|
|
514
|
+
rootPreHandlers = Array.isArray(options == null ? void 0 : options.before) ? options.before : [options.before];
|
|
515
|
+
this.debug("%v root pre-handlers found.", rootPreHandlers.length);
|
|
516
|
+
let ctlPreHandlers = [];
|
|
517
|
+
if (controllerMd.before)
|
|
518
|
+
ctlPreHandlers = Array.isArray(controllerMd.before) ? controllerMd.before : [controllerMd.before];
|
|
519
|
+
this.debug("%v controller pre-handlers found.", ctlPreHandlers.length);
|
|
520
|
+
const mergedPreHandlers = [...rootPreHandlers, ...ctlPreHandlers];
|
|
521
|
+
this.debug("%v merged pre-handlers.", mergedPreHandlers.length);
|
|
522
|
+
return mergedPreHandlers;
|
|
523
|
+
}
|
|
524
|
+
/**
|
|
525
|
+
* Get post-handlers by controller metadata.
|
|
526
|
+
*
|
|
527
|
+
* @param controllerMd
|
|
528
|
+
* @param options
|
|
529
|
+
*/
|
|
530
|
+
getPostHandlersByControllerMetadata(controllerMd, options) {
|
|
531
|
+
let rootPostHandlers = [];
|
|
532
|
+
if (options == null ? void 0 : options.after)
|
|
533
|
+
rootPostHandlers = Array.isArray(options.after) ? options.after : [options.after];
|
|
534
|
+
this.debug("%v root post-handlers found.", rootPostHandlers.length);
|
|
535
|
+
let ctlPostHandlers = [];
|
|
536
|
+
if (controllerMd.after)
|
|
537
|
+
ctlPostHandlers = Array.isArray(controllerMd.after) ? controllerMd.after : [controllerMd.after];
|
|
538
|
+
this.debug("%v controller post-handlers found.", ctlPostHandlers.length);
|
|
539
|
+
const mergedPostHandlers = [...rootPostHandlers, ...ctlPostHandlers];
|
|
540
|
+
this.debug("%v merged post-handlers.", mergedPostHandlers.length);
|
|
541
|
+
return mergedPostHandlers;
|
|
542
|
+
}
|
|
543
|
+
/**
|
|
544
|
+
* Create route handler.
|
|
545
|
+
*
|
|
546
|
+
* @param controllerCtor
|
|
547
|
+
* @param actionName
|
|
548
|
+
* @protected
|
|
549
|
+
*/
|
|
550
|
+
createRouteHandler(controllerCtor, actionName) {
|
|
551
|
+
this.debug("Creating route handler for %s.%s.", controllerCtor.name, actionName);
|
|
552
|
+
const requestContextMetadataMap = RequestContextReflector.getMetadata(controllerCtor, actionName);
|
|
553
|
+
const requestDataMetadataMap = RequestDataReflector.getMetadata(controllerCtor, actionName);
|
|
554
|
+
const argsNumber = controllerCtor.prototype[actionName].length;
|
|
555
|
+
const dataTypeCaster = this.getService(import_ts_data_schema3.DataTypeCaster);
|
|
556
|
+
const dataValidator = this.getService(import_ts_data_schema2.DataValidator);
|
|
557
|
+
return (requestContext2) => {
|
|
558
|
+
this.debug("Executing route handler for %s.%s.", controllerCtor.name, actionName);
|
|
559
|
+
const args = Array(argsNumber).map((value, index) => {
|
|
560
|
+
if (value != null)
|
|
561
|
+
return value;
|
|
562
|
+
const requestContextMd = requestContextMetadataMap.get(index);
|
|
563
|
+
if (requestContextMd != null) {
|
|
564
|
+
this.debug("Argument %v has request context metadata.", index);
|
|
565
|
+
if (requestContextMd.property == null) {
|
|
566
|
+
this.debug("Request context property is not specified.");
|
|
567
|
+
this.debug("Argument %v is set to %v.", index, requestContext2);
|
|
568
|
+
return requestContext2;
|
|
569
|
+
}
|
|
570
|
+
const propName = requestContextMd.property;
|
|
571
|
+
const propValue = requestContext2[propName];
|
|
572
|
+
this.debug("Request context property is %v.", propName);
|
|
573
|
+
this.debug("Argument %v is set to %v.", index, propValue);
|
|
574
|
+
return propValue;
|
|
575
|
+
} else {
|
|
576
|
+
this.debug("No RequestContextMetadata specified for %v argument.", index);
|
|
577
|
+
}
|
|
578
|
+
const requestDataMd = requestDataMetadataMap.get(index);
|
|
579
|
+
if (requestDataMd != null) {
|
|
580
|
+
this.debug("Argument %v has request data metadata.", index);
|
|
581
|
+
let data;
|
|
582
|
+
switch (requestDataMd.source) {
|
|
583
|
+
case RequestDataSource.PARAMS:
|
|
584
|
+
data = requestContext2.params;
|
|
585
|
+
break;
|
|
586
|
+
case RequestDataSource.QUERY:
|
|
587
|
+
data = requestContext2.query;
|
|
588
|
+
break;
|
|
589
|
+
case RequestDataSource.HEADERS:
|
|
590
|
+
data = requestContext2.headers;
|
|
591
|
+
break;
|
|
592
|
+
case RequestDataSource.COOKIE:
|
|
593
|
+
data = requestContext2.cookie;
|
|
594
|
+
break;
|
|
595
|
+
case RequestDataSource.BODY:
|
|
596
|
+
data = requestContext2.body;
|
|
597
|
+
break;
|
|
598
|
+
}
|
|
599
|
+
this.debug("Request data source is %v.", requestDataMd.source);
|
|
600
|
+
if (requestDataMd.schema) {
|
|
601
|
+
data = dataTypeCaster.cast(data, requestDataMd.schema, {
|
|
602
|
+
noTypeCastError: true,
|
|
603
|
+
sourcePath: requestDataMd.source
|
|
604
|
+
});
|
|
605
|
+
this.debug("Data type casting is passed.");
|
|
606
|
+
dataValidator.validate(data, requestDataMd.schema, requestDataMd.source);
|
|
607
|
+
this.debug("Data validation is passed.");
|
|
608
|
+
}
|
|
609
|
+
if (requestDataMd.property == null) {
|
|
610
|
+
this.debug("Request data property is not specified.");
|
|
611
|
+
this.debug("Argument %v is set to %v.", index, data);
|
|
612
|
+
return data;
|
|
613
|
+
}
|
|
614
|
+
const dataAsObject = data;
|
|
615
|
+
const propName = requestDataMd.property;
|
|
616
|
+
const propValue = dataAsObject[propName];
|
|
617
|
+
this.debug("Request data property is %v.", propName);
|
|
618
|
+
this.debug("Argument %v is set to %v.", index, propValue);
|
|
619
|
+
return propValue;
|
|
620
|
+
} else {
|
|
621
|
+
this.debug("No RequestDataMetadata specified for %v argument.", index);
|
|
622
|
+
}
|
|
623
|
+
});
|
|
624
|
+
const controller2 = this.getService(controllerCtor);
|
|
625
|
+
return controller2[actionName](...args);
|
|
626
|
+
};
|
|
627
|
+
}
|
|
628
|
+
};
|
|
629
|
+
__name(_ControllerRegistry, "ControllerRegistry");
|
|
630
|
+
var ControllerRegistry = _ControllerRegistry;
|
|
631
|
+
|
|
632
|
+
// dist/esm/rest-router.js
|
|
633
|
+
var _RestRouter = class _RestRouter extends DebuggableService {
|
|
634
|
+
/**
|
|
635
|
+
* Request listener.
|
|
636
|
+
*/
|
|
637
|
+
get requestListener() {
|
|
638
|
+
return this.getService(import_js_trie_router3.TrieRouter).requestListener;
|
|
639
|
+
}
|
|
640
|
+
/**
|
|
641
|
+
* Add controller.
|
|
642
|
+
*
|
|
643
|
+
* @param ctor
|
|
644
|
+
* @param options
|
|
645
|
+
*/
|
|
646
|
+
addController(ctor, options) {
|
|
647
|
+
this.getService(ControllerRegistry).addController(ctor, options);
|
|
648
|
+
return this;
|
|
649
|
+
}
|
|
650
|
+
};
|
|
651
|
+
__name(_RestRouter, "RestRouter");
|
|
652
|
+
var RestRouter = _RestRouter;
|
|
653
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
654
|
+
0 && (module.exports = {
|
|
655
|
+
ACTIONS_METADATA_KEY,
|
|
656
|
+
ActionReflector,
|
|
657
|
+
CONTROLLER_METADATA_KEY,
|
|
658
|
+
ControllerReflector,
|
|
659
|
+
ControllerRegistry,
|
|
660
|
+
NotAControllerError,
|
|
661
|
+
REQUEST_CONTEXT_METADATA_KEY,
|
|
662
|
+
REQUEST_DATA_METADATA_KEY,
|
|
663
|
+
RequestContextReflector,
|
|
664
|
+
RequestDataReflector,
|
|
665
|
+
RequestDataSource,
|
|
666
|
+
RestRouter,
|
|
667
|
+
action,
|
|
668
|
+
body,
|
|
669
|
+
bodyParam,
|
|
670
|
+
capitalize,
|
|
671
|
+
controller,
|
|
672
|
+
cookie,
|
|
673
|
+
cookies,
|
|
674
|
+
createDebugger,
|
|
675
|
+
createError,
|
|
676
|
+
del,
|
|
677
|
+
get,
|
|
678
|
+
header,
|
|
679
|
+
headers,
|
|
680
|
+
param,
|
|
681
|
+
params,
|
|
682
|
+
patch,
|
|
683
|
+
post,
|
|
684
|
+
put,
|
|
685
|
+
queries,
|
|
686
|
+
query,
|
|
687
|
+
request,
|
|
688
|
+
requestContext,
|
|
689
|
+
requestData,
|
|
690
|
+
response,
|
|
691
|
+
toCamelCase
|
|
692
|
+
});
|