@expressots/adapter-express 0.0.1-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +107 -0
  3. package/lib/CHANGELOG.md +8 -0
  4. package/lib/README.md +107 -0
  5. package/lib/cjs/adapter-express/application-express.interface.js +2 -0
  6. package/lib/cjs/adapter-express/application-express.js +147 -0
  7. package/lib/cjs/adapter-express/express-utils/base-middleware.js +19 -0
  8. package/lib/cjs/adapter-express/express-utils/constants.js +46 -0
  9. package/lib/cjs/adapter-express/express-utils/content/httpContent.js +12 -0
  10. package/lib/cjs/adapter-express/express-utils/decorators.js +110 -0
  11. package/lib/cjs/adapter-express/express-utils/httpResponseMessage.js +31 -0
  12. package/lib/cjs/adapter-express/express-utils/index.js +17 -0
  13. package/lib/cjs/adapter-express/express-utils/interfaces.js +2 -0
  14. package/lib/cjs/adapter-express/express-utils/inversify-express-server.js +300 -0
  15. package/lib/cjs/adapter-express/express-utils/utils.js +58 -0
  16. package/lib/cjs/adapter-express/index.js +21 -0
  17. package/lib/cjs/index.js +17 -0
  18. package/lib/cjs/types/adapter-express/application-express.d.ts +70 -0
  19. package/lib/cjs/types/adapter-express/application-express.d.ts.map +1 -0
  20. package/lib/cjs/types/adapter-express/application-express.interface.d.ts +29 -0
  21. package/lib/cjs/types/adapter-express/application-express.interface.d.ts.map +1 -0
  22. package/lib/cjs/types/adapter-express/express-utils/base-middleware.d.ts +9 -0
  23. package/lib/cjs/types/adapter-express/express-utils/base-middleware.d.ts.map +1 -0
  24. package/lib/cjs/types/adapter-express/express-utils/constants.d.ts +39 -0
  25. package/lib/cjs/types/adapter-express/express-utils/constants.d.ts.map +1 -0
  26. package/lib/cjs/types/adapter-express/express-utils/content/httpContent.d.ts +8 -0
  27. package/lib/cjs/types/adapter-express/express-utils/content/httpContent.d.ts.map +1 -0
  28. package/lib/cjs/types/adapter-express/express-utils/decorators.d.ts +24 -0
  29. package/lib/cjs/types/adapter-express/express-utils/decorators.d.ts.map +1 -0
  30. package/lib/cjs/types/adapter-express/express-utils/httpResponseMessage.d.ts +16 -0
  31. package/lib/cjs/types/adapter-express/express-utils/httpResponseMessage.d.ts.map +1 -0
  32. package/lib/cjs/types/adapter-express/express-utils/index.d.ts +2 -0
  33. package/lib/cjs/types/adapter-express/express-utils/index.d.ts.map +1 -0
  34. package/lib/cjs/types/adapter-express/express-utils/interfaces.d.ts +76 -0
  35. package/lib/cjs/types/adapter-express/express-utils/interfaces.d.ts.map +1 -0
  36. package/lib/cjs/types/adapter-express/express-utils/inversify-express-server.d.ts +60 -0
  37. package/lib/cjs/types/adapter-express/express-utils/inversify-express-server.d.ts.map +1 -0
  38. package/lib/cjs/types/adapter-express/express-utils/utils.d.ts +10 -0
  39. package/lib/cjs/types/adapter-express/express-utils/utils.d.ts.map +1 -0
  40. package/lib/cjs/types/adapter-express/index.d.ts +4 -0
  41. package/lib/cjs/types/adapter-express/index.d.ts.map +1 -0
  42. package/lib/cjs/types/index.d.ts +2 -0
  43. package/lib/cjs/types/index.d.ts.map +1 -0
  44. package/lib/esm/adapter-express/application-express.interface.js +2 -0
  45. package/lib/esm/adapter-express/application-express.js +135 -0
  46. package/lib/esm/adapter-express/express-utils/base-middleware.js +22 -0
  47. package/lib/esm/adapter-express/express-utils/constants.js +46 -0
  48. package/lib/esm/adapter-express/express-utils/content/httpContent.js +10 -0
  49. package/lib/esm/adapter-express/express-utils/decorators.js +110 -0
  50. package/lib/esm/adapter-express/express-utils/httpResponseMessage.js +33 -0
  51. package/lib/esm/adapter-express/express-utils/index.js +17 -0
  52. package/lib/esm/adapter-express/express-utils/interfaces.js +2 -0
  53. package/lib/esm/adapter-express/express-utils/inversify-express-server.js +293 -0
  54. package/lib/esm/adapter-express/express-utils/utils.js +58 -0
  55. package/lib/esm/adapter-express/index.js +21 -0
  56. package/lib/esm/index.mjs +17 -0
  57. package/lib/esm/types/adapter-express/application-express.d.ts +70 -0
  58. package/lib/esm/types/adapter-express/application-express.d.ts.map +1 -0
  59. package/lib/esm/types/adapter-express/application-express.interface.d.ts +29 -0
  60. package/lib/esm/types/adapter-express/application-express.interface.d.ts.map +1 -0
  61. package/lib/esm/types/adapter-express/express-utils/base-middleware.d.ts +9 -0
  62. package/lib/esm/types/adapter-express/express-utils/base-middleware.d.ts.map +1 -0
  63. package/lib/esm/types/adapter-express/express-utils/constants.d.ts +39 -0
  64. package/lib/esm/types/adapter-express/express-utils/constants.d.ts.map +1 -0
  65. package/lib/esm/types/adapter-express/express-utils/content/httpContent.d.ts +8 -0
  66. package/lib/esm/types/adapter-express/express-utils/content/httpContent.d.ts.map +1 -0
  67. package/lib/esm/types/adapter-express/express-utils/decorators.d.ts +24 -0
  68. package/lib/esm/types/adapter-express/express-utils/decorators.d.ts.map +1 -0
  69. package/lib/esm/types/adapter-express/express-utils/httpResponseMessage.d.ts +16 -0
  70. package/lib/esm/types/adapter-express/express-utils/httpResponseMessage.d.ts.map +1 -0
  71. package/lib/esm/types/adapter-express/express-utils/index.d.ts +2 -0
  72. package/lib/esm/types/adapter-express/express-utils/index.d.ts.map +1 -0
  73. package/lib/esm/types/adapter-express/express-utils/interfaces.d.ts +76 -0
  74. package/lib/esm/types/adapter-express/express-utils/interfaces.d.ts.map +1 -0
  75. package/lib/esm/types/adapter-express/express-utils/inversify-express-server.d.ts +60 -0
  76. package/lib/esm/types/adapter-express/express-utils/inversify-express-server.d.ts.map +1 -0
  77. package/lib/esm/types/adapter-express/express-utils/utils.d.ts +10 -0
  78. package/lib/esm/types/adapter-express/express-utils/utils.d.ts.map +1 -0
  79. package/lib/esm/types/adapter-express/index.d.ts +4 -0
  80. package/lib/esm/types/adapter-express/index.d.ts.map +1 -0
  81. package/lib/esm/types/index.d.ts +2 -0
  82. package/lib/esm/types/index.d.ts.map +1 -0
  83. package/lib/package.json +153 -0
  84. package/package.json +153 -0
@@ -0,0 +1,300 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ Object.defineProperty(exports, "__esModule", { value: true });
35
+ exports.InversifyExpressServer = void 0;
36
+ /* eslint-disable @typescript-eslint/no-unused-vars */
37
+ const express_1 = __importStar(require("express"));
38
+ const base_middleware_1 = require("./base-middleware");
39
+ const utils_1 = require("./utils");
40
+ const constants_1 = require("./constants");
41
+ const httpResponseMessage_1 = require("./httpResponseMessage");
42
+ class InversifyExpressServer {
43
+ /**
44
+ * Wrapper for the express server.
45
+ *
46
+ * @param container Container loaded with all controllers and their dependencies.
47
+ * @param customRouter optional express.Router custom router
48
+ * @param routingConfig optional interfaces.RoutingConfig routing config
49
+ * @param customApp optional express.Application custom app
50
+ * @param authProvider optional interfaces.AuthProvider auth provider
51
+ * @param forceControllers optional boolean setting to force controllers (defaults do true)
52
+ */
53
+ constructor(container, customRouter, routingConfig, customApp, authProvider, forceControllers = true) {
54
+ this._container = container;
55
+ this._forceControllers = forceControllers;
56
+ this._router = customRouter || (0, express_1.Router)();
57
+ this._routingConfig = routingConfig || {
58
+ rootPath: constants_1.DEFAULT_ROUTING_ROOT_PATH,
59
+ };
60
+ this._app = customApp || (0, express_1.default)();
61
+ if (authProvider) {
62
+ this._AuthProvider = authProvider;
63
+ container.bind(constants_1.TYPE.AuthProvider).to(this._AuthProvider);
64
+ }
65
+ }
66
+ /**
67
+ * Sets the configuration function to be applied to the application.
68
+ * Note that the config function is not actually executed until a call to
69
+ * InversifyExpresServer.build().
70
+ *
71
+ * This method is chainable.
72
+ *
73
+ * @param fn Function in which app-level middleware can be registered.
74
+ */
75
+ setConfig(fn) {
76
+ this._configFn = fn;
77
+ return this;
78
+ }
79
+ /**
80
+ * Sets the error handler configuration function to be applied to the application.
81
+ * Note that the error config function is not actually executed until a call to
82
+ * InversifyExpressServer.build().
83
+ *
84
+ * This method is chainable.
85
+ *
86
+ * @param fn Function in which app-level error handlers can be registered.
87
+ */
88
+ setErrorConfig(fn) {
89
+ this._errorConfigFn = fn;
90
+ return this;
91
+ }
92
+ /**
93
+ * Applies all routes and configuration to the server, returning the express application.
94
+ */
95
+ build() {
96
+ // The very first middleware to be invoked
97
+ // it creates a new httpContext and attaches it to the
98
+ // current request as metadata using Reflect
99
+ this._app.all("*", (req, res, next) => {
100
+ void (() => __awaiter(this, void 0, void 0, function* () {
101
+ const httpContext = yield this._createHttpContext(req, res, next);
102
+ Reflect.defineMetadata(constants_1.METADATA_KEY.httpContext, httpContext, req);
103
+ next();
104
+ }))();
105
+ });
106
+ // register server-level middleware before anything else
107
+ if (this._configFn) {
108
+ this._configFn.apply(undefined, [this._app]);
109
+ }
110
+ this.registerControllers();
111
+ // register error handlers after controllers
112
+ if (this._errorConfigFn) {
113
+ this._errorConfigFn.apply(undefined, [this._app]);
114
+ }
115
+ return this._app;
116
+ }
117
+ registerControllers() {
118
+ // Fake HttpContext is needed during registration
119
+ this._container.bind(constants_1.TYPE.HttpContext).toConstantValue({});
120
+ const constructors = (0, utils_1.getControllersFromMetadata)();
121
+ constructors.forEach((constructor) => {
122
+ const { name } = constructor;
123
+ if (this._container.isBoundNamed(constants_1.TYPE.Controller, name)) {
124
+ throw new Error((0, constants_1.DUPLICATED_CONTROLLER_NAME)(name));
125
+ }
126
+ this._container
127
+ .bind(constants_1.TYPE.Controller)
128
+ .to(constructor)
129
+ .whenTargetNamed(name);
130
+ });
131
+ const controllers = (0, utils_1.getControllersFromContainer)(this._container, this._forceControllers);
132
+ controllers.forEach((controller) => {
133
+ const controllerMetadata = (0, utils_1.getControllerMetadata)(controller.constructor);
134
+ const methodMetadata = (0, utils_1.getControllerMethodMetadata)(controller.constructor);
135
+ const parameterMetadata = (0, utils_1.getControllerParameterMetadata)(controller.constructor);
136
+ if (controllerMetadata && methodMetadata) {
137
+ const controllerMiddleware = this.resolveMidleware(...controllerMetadata.middleware);
138
+ methodMetadata.forEach((metadata) => {
139
+ let paramList = [];
140
+ if (parameterMetadata) {
141
+ paramList = parameterMetadata[metadata.key] || [];
142
+ }
143
+ const handler = this.handlerFactory(controllerMetadata.target.name, metadata.key, paramList);
144
+ const routeMiddleware = this.resolveMidleware(...metadata.middleware);
145
+ this._router[metadata.method](`${controllerMetadata.path}${metadata.path}`, ...controllerMiddleware, ...routeMiddleware, handler);
146
+ });
147
+ }
148
+ });
149
+ this._app.use(this._routingConfig.rootPath, this._router);
150
+ }
151
+ resolveMidleware(...middleware) {
152
+ return middleware.map((middlewareItem) => {
153
+ if (!this._container.isBound(middlewareItem)) {
154
+ return middlewareItem;
155
+ }
156
+ const middlewareInstance = this._container.get(middlewareItem);
157
+ if (middlewareInstance instanceof base_middleware_1.BaseMiddleware) {
158
+ return (req, res, next) => {
159
+ const mReq = this._container.get(middlewareItem);
160
+ mReq.httpContext = this._getHttpContext(req);
161
+ mReq.handler(req, res, next);
162
+ };
163
+ }
164
+ return middlewareInstance;
165
+ });
166
+ }
167
+ copyHeadersTo(headers, target) {
168
+ for (const name of Object.keys(headers)) {
169
+ const headerValue = headers[name];
170
+ target.append(name, typeof headerValue === "number" ? headerValue.toString() : headerValue);
171
+ }
172
+ }
173
+ handleHttpResponseMessage(message, res) {
174
+ return __awaiter(this, void 0, void 0, function* () {
175
+ this.copyHeadersTo(message.headers, res);
176
+ if (message.content !== undefined) {
177
+ this.copyHeadersTo(message.content.headers, res);
178
+ res
179
+ .status(message.statusCode)
180
+ // If the content is a number, ensure we change it to a string, else our content is
181
+ // treated as a statusCode rather than as the content of the Response
182
+ .send(yield message.content.readAsync());
183
+ }
184
+ else {
185
+ res.sendStatus(message.statusCode);
186
+ }
187
+ });
188
+ }
189
+ handlerFactory(controllerName, key, parameterMetadata) {
190
+ return (req, res, next) => __awaiter(this, void 0, void 0, function* () {
191
+ try {
192
+ const args = this.extractParameters(req, res, next, parameterMetadata);
193
+ const httpContext = this._getHttpContext(req);
194
+ httpContext.container.bind(constants_1.TYPE.HttpContext).toConstantValue(httpContext);
195
+ // invoke controller's action
196
+ const value = yield httpContext.container.getNamed(constants_1.TYPE.Controller, controllerName)[key](...args);
197
+ if (value instanceof httpResponseMessage_1.HttpResponseMessage) {
198
+ yield this.handleHttpResponseMessage(value, res);
199
+ }
200
+ else if ((0, utils_1.instanceOfIHttpActionResult)(value)) {
201
+ const httpResponseMessage = yield value.executeAsync();
202
+ yield this.handleHttpResponseMessage(httpResponseMessage, res);
203
+ }
204
+ else if (value instanceof Function) {
205
+ value();
206
+ }
207
+ else if (!res.headersSent) {
208
+ if (value === undefined) {
209
+ res.status(204);
210
+ }
211
+ res.send(value);
212
+ }
213
+ }
214
+ catch (err) {
215
+ next(err);
216
+ }
217
+ });
218
+ }
219
+ _getHttpContext(req) {
220
+ return Reflect.getMetadata(constants_1.METADATA_KEY.httpContext, req);
221
+ }
222
+ _createHttpContext(req, res, next) {
223
+ return __awaiter(this, void 0, void 0, function* () {
224
+ const principal = yield this._getCurrentUser(req, res, next);
225
+ return {
226
+ // We use a childContainer for each request so we can be
227
+ // sure that the binding is unique for each HTTP request
228
+ container: this._container.createChild(),
229
+ request: req,
230
+ response: res,
231
+ user: principal,
232
+ };
233
+ });
234
+ }
235
+ _getCurrentUser(req, res, next) {
236
+ return __awaiter(this, void 0, void 0, function* () {
237
+ if (this._AuthProvider !== undefined) {
238
+ const authProvider = this._container.get(constants_1.TYPE.AuthProvider);
239
+ return authProvider.getUser(req, res, next);
240
+ }
241
+ return Promise.resolve({
242
+ details: null,
243
+ isAuthenticated: () => Promise.resolve(false),
244
+ isInRole: (_role) => Promise.resolve(false),
245
+ isResourceOwner: (_resourceId) => Promise.resolve(false),
246
+ });
247
+ });
248
+ }
249
+ extractParameters(req, res, next, params) {
250
+ const args = [];
251
+ if (!params || !params.length) {
252
+ return [req, res, next];
253
+ }
254
+ params.forEach(({ type, index, parameterName, injectRoot }) => {
255
+ switch (type) {
256
+ case constants_1.PARAMETER_TYPE.REQUEST:
257
+ args[index] = req;
258
+ break;
259
+ case constants_1.PARAMETER_TYPE.NEXT:
260
+ args[index] = next;
261
+ break;
262
+ case constants_1.PARAMETER_TYPE.PARAMS:
263
+ args[index] = this.getParam(req, "params", injectRoot, parameterName);
264
+ break;
265
+ case constants_1.PARAMETER_TYPE.QUERY:
266
+ args[index] = this.getParam(req, "query", injectRoot, parameterName);
267
+ break;
268
+ case constants_1.PARAMETER_TYPE.BODY:
269
+ args[index] = req.body;
270
+ break;
271
+ case constants_1.PARAMETER_TYPE.HEADERS:
272
+ args[index] = this.getParam(req, "headers", injectRoot, parameterName);
273
+ break;
274
+ case constants_1.PARAMETER_TYPE.COOKIES:
275
+ args[index] = this.getParam(req, "cookies", injectRoot, parameterName);
276
+ break;
277
+ case constants_1.PARAMETER_TYPE.PRINCIPAL:
278
+ args[index] = this._getPrincipal(req);
279
+ break;
280
+ default:
281
+ args[index] = res;
282
+ break; // response
283
+ }
284
+ });
285
+ args.push(req, res, next);
286
+ return args;
287
+ }
288
+ getParam(source, paramType, injectRoot, name) {
289
+ const key = paramType === "headers" ? name === null || name === void 0 ? void 0 : name.toLowerCase() : name;
290
+ const param = source[paramType];
291
+ if (injectRoot) {
292
+ return param;
293
+ }
294
+ return param && key ? param[key] : undefined;
295
+ }
296
+ _getPrincipal(req) {
297
+ return this._getHttpContext(req).user;
298
+ }
299
+ }
300
+ exports.InversifyExpressServer = InversifyExpressServer;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.instanceOfIHttpActionResult = exports.cleanUpMetadata = exports.getControllerParameterMetadata = exports.getControllerMethodMetadata = exports.getControllerMetadata = exports.getControllersFromMetadata = exports.getControllersFromContainer = void 0;
4
+ const constants_1 = require("./constants");
5
+ function getControllersFromContainer(container, forceControllers) {
6
+ if (container.isBound(constants_1.TYPE.Controller)) {
7
+ return container.getAll(constants_1.TYPE.Controller);
8
+ }
9
+ if (forceControllers) {
10
+ throw new Error(constants_1.NO_CONTROLLERS_FOUND);
11
+ }
12
+ else {
13
+ return [];
14
+ }
15
+ }
16
+ exports.getControllersFromContainer = getControllersFromContainer;
17
+ function getControllersFromMetadata() {
18
+ const arrayOfControllerMetadata = Reflect.getMetadata(constants_1.METADATA_KEY.controller, Reflect) || [];
19
+ return arrayOfControllerMetadata.map((metadata) => metadata.target);
20
+ }
21
+ exports.getControllersFromMetadata = getControllersFromMetadata;
22
+ function getControllerMetadata(constructor) {
23
+ const controllerMetadata = Reflect.getOwnMetadata(constants_1.METADATA_KEY.controller, constructor);
24
+ return controllerMetadata;
25
+ }
26
+ exports.getControllerMetadata = getControllerMetadata;
27
+ function getControllerMethodMetadata(constructor) {
28
+ const methodMetadata = Reflect.getOwnMetadata(constants_1.METADATA_KEY.controllerMethod, constructor);
29
+ const genericMetadata = Reflect.getMetadata(constants_1.METADATA_KEY.controllerMethod, Reflect.getPrototypeOf(constructor));
30
+ if (genericMetadata !== undefined && methodMetadata !== undefined) {
31
+ return methodMetadata.concat(genericMetadata);
32
+ }
33
+ if (genericMetadata !== undefined) {
34
+ return genericMetadata;
35
+ }
36
+ return methodMetadata;
37
+ }
38
+ exports.getControllerMethodMetadata = getControllerMethodMetadata;
39
+ function getControllerParameterMetadata(constructor) {
40
+ const parameterMetadata = Reflect.getOwnMetadata(constants_1.METADATA_KEY.controllerParameter, constructor);
41
+ const genericMetadata = Reflect.getMetadata(constants_1.METADATA_KEY.controllerParameter, Reflect.getPrototypeOf(constructor));
42
+ if (genericMetadata !== undefined && parameterMetadata !== undefined) {
43
+ return Object.assign(Object.assign({}, parameterMetadata), genericMetadata);
44
+ }
45
+ if (genericMetadata !== undefined) {
46
+ return genericMetadata;
47
+ }
48
+ return parameterMetadata;
49
+ }
50
+ exports.getControllerParameterMetadata = getControllerParameterMetadata;
51
+ function cleanUpMetadata() {
52
+ Reflect.defineMetadata(constants_1.METADATA_KEY.controller, [], Reflect);
53
+ }
54
+ exports.cleanUpMetadata = cleanUpMetadata;
55
+ function instanceOfIHttpActionResult(value) {
56
+ return value != null && typeof value.executeAsync === "function";
57
+ }
58
+ exports.instanceOfIHttpActionResult = instanceOfIHttpActionResult;
@@ -0,0 +1,21 @@
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.ServerEnvironment = exports.AppExpress = void 0;
18
+ __exportStar(require("./express-utils"), exports);
19
+ var application_express_1 = require("./application-express");
20
+ Object.defineProperty(exports, "AppExpress", { enumerable: true, get: function () { return application_express_1.AppExpress; } });
21
+ Object.defineProperty(exports, "ServerEnvironment", { enumerable: true, get: function () { return application_express_1.ServerEnvironment; } });
@@ -0,0 +1,17 @@
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
+ __exportStar(require("./adapter-express"), exports);
@@ -0,0 +1,70 @@
1
+ import express from "express";
2
+ import { Container } from "inversify";
3
+ import { IApplicationMessageToConsole, RenderTemplateOptions, ApplicationBase } from "@expressots/core";
4
+ import { IApplicationExpress } from "./application-express.interface";
5
+ /**
6
+ * Enum representing possible server environments.
7
+ */
8
+ declare enum ServerEnvironment {
9
+ Development = "development",
10
+ Production = "production"
11
+ }
12
+ /**
13
+ * The Application class provides a way to configure and manage an Express application.
14
+ * @provide Application
15
+ */
16
+ declare class ApplicationExpress extends ApplicationBase implements IApplicationExpress {
17
+ private app;
18
+ private port;
19
+ private environment;
20
+ private container;
21
+ private middlewares;
22
+ protected configureServices(): void | Promise<void>;
23
+ protected postServerInitialization(): void | Promise<void>;
24
+ protected serverShutdown(): void | Promise<void>;
25
+ /**
26
+ * Handles process exit by calling serverShutdown and then exiting the process.
27
+ */
28
+ private handleExit;
29
+ /**
30
+ * Create and configure the Express application.
31
+ * @param container - The InversifyJS container.
32
+ * @param middlewares - An array of Express middlewares to be applied.
33
+ * @returns The configured Application instance.
34
+ */
35
+ create(container: Container, middlewares?: Array<express.RequestHandler>): Promise<ApplicationExpress>;
36
+ /**
37
+ * Start listening on the given port and environment.
38
+ * @param port - The port number to listen on.
39
+ * @param environment - The server environment.
40
+ * @param consoleMessage - Optional message to display in the console.
41
+ */
42
+ listen(port: number, environment: ServerEnvironment, consoleMessage?: IApplicationMessageToConsole): Promise<void>;
43
+ /**
44
+ * Configures the application's view engine based on the provided configuration options.
45
+ *
46
+ * @public
47
+ * @method setEngine
48
+ * @template T - A generic type extending from RenderTemplateOptions.
49
+ *
50
+ * @param {T} options - An object of type T (must be an object that extends RenderTemplateOptions)
51
+ * that provides the configuration options for setting the view engine.
52
+ * This includes the extension name, view path, and the engine function itself.
53
+ */
54
+ setEngine<T extends RenderTemplateOptions>(options: T): void;
55
+ /**
56
+ * Verifies if the current environment is development.
57
+ *
58
+ * @returns A boolean value indicating whether the current environment is development or not.
59
+ */
60
+ protected isDevelopment(): boolean;
61
+ /**
62
+ * Verifies if the current environment is production.
63
+ *
64
+ * @returns A boolean value indicating whether the current environment is production or not.
65
+ *
66
+ */
67
+ get ExpressApp(): express.Application;
68
+ }
69
+ export { ApplicationExpress as AppExpress, ServerEnvironment };
70
+ //# sourceMappingURL=application-express.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-express.d.ts","sourceRoot":"","sources":["../../../../src/adapter-express/application-express.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,OAAO,EAEL,4BAA4B,EAK5B,qBAAqB,EACrB,eAAe,EAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAGtE;;GAEG;AACH,aAAK,iBAAiB;IACpB,WAAW,gBAAgB;IAC3B,UAAU,eAAe;CAC1B;AAED;;;GAGG;AACH,cACM,kBAAmB,SAAQ,eAAgB,YAAW,mBAAmB;IAC7E,OAAO,CAAC,GAAG,CAAsB;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,WAAW,CAAoB;IACvC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,WAAW,CAAqC;IAExD,SAAS,CAAC,iBAAiB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IACnD,SAAS,CAAC,wBAAwB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1D,SAAS,CAAC,cAAc,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAEhD;;OAEG;IACH,OAAO,CAAC,UAAU;IAKlB;;;;;OAKG;IACU,MAAM,CACjB,SAAS,EAAE,SAAS,EACpB,WAAW,GAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAM,GAC9C,OAAO,CAAC,kBAAkB,CAAC;IA0B9B;;;;;OAKG;IACU,MAAM,CACjB,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,iBAAiB,EAC9B,cAAc,CAAC,EAAE,4BAA4B,GAC5C,OAAO,CAAC,IAAI,CAAC;IAmBhB;;;;;;;;;;OAUG;IACI,SAAS,CAAC,CAAC,SAAS,qBAAqB,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI;IASnE;;;;OAIG;IACH,SAAS,CAAC,aAAa,IAAI,OAAO;IAWlC;;;;;OAKG;IACH,IAAW,UAAU,IAAI,OAAO,CAAC,WAAW,CAE3C;CACF;AAED,OAAO,EAAE,kBAAkB,IAAI,UAAU,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { IApplicationMessageToConsole, RenderTemplateOptions } from "@expressots/core";
2
+ import { ServerEnvironment } from "./application-express";
3
+ /**
4
+ * Interface representing the Application class for Expressjs
5
+ * @interface IApplicationExpress
6
+ */
7
+ interface IApplicationExpress {
8
+ /**
9
+ * Start listening on the given port and environment.
10
+ * @param port - The port number to listen on.
11
+ * @param environment - The server environment.
12
+ * @param consoleMessage - Optional message to display in the console.
13
+ */
14
+ listen(port: number, environment: ServerEnvironment, consoleMessage?: IApplicationMessageToConsole): Promise<void> | void;
15
+ /**
16
+ * Configures the application's view engine based on the provided configuration options.
17
+ *
18
+ * @public
19
+ * @method setEngine
20
+ * @template T - A generic type extending from RenderTemplateOptions.
21
+ *
22
+ * @param {T} options - An object of type T (must be an object that extends RenderTemplateOptions)
23
+ * that provides the configuration options for setting the view engine.
24
+ * This includes the extension name, view path, and the engine function itself.
25
+ */
26
+ setEngine<T extends RenderTemplateOptions>(options: T): void;
27
+ }
28
+ export { IApplicationExpress };
29
+ //# sourceMappingURL=application-express.interface.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"application-express.interface.d.ts","sourceRoot":"","sources":["../../../../src/adapter-express/application-express.interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACvF,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D;;;GAGG;AACH,UAAU,mBAAmB;IAC3B;;;;;OAKG;IACH,MAAM,CACJ,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,iBAAiB,EAC9B,cAAc,CAAC,EAAE,4BAA4B,GAC5C,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAExB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,CAAC,SAAS,qBAAqB,EAAE,OAAO,EAAE,CAAC,GAAG,IAAI,CAAC;CAC9D;AAED,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { NextFunction, Request, Response } from "express";
2
+ import { interfaces as inversifyInterfaces } from "inversify";
3
+ import type { HttpContext } from "./interfaces";
4
+ export declare abstract class BaseMiddleware implements BaseMiddleware {
5
+ httpContext: HttpContext;
6
+ protected bind<T>(serviceIdentifier: inversifyInterfaces.ServiceIdentifier<T>): inversifyInterfaces.BindingToSyntax<T>;
7
+ abstract handler(req: Request, res: Response, next: NextFunction): void;
8
+ }
9
+ //# sourceMappingURL=base-middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-middleware.d.ts","sourceRoot":"","sources":["../../../../../src/adapter-express/express-utils/base-middleware.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAc,UAAU,IAAI,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,8BACsB,cAAe,YAAW,cAAc;IAGrD,WAAW,EAAG,WAAW,CAAC;IAEjC,SAAS,CAAC,IAAI,CAAC,CAAC,EACd,iBAAiB,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAC1D,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC;aAIzB,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,GAAG,IAAI;CAC/E"}
@@ -0,0 +1,39 @@
1
+ export declare const TYPE: {
2
+ AuthProvider: symbol;
3
+ Controller: symbol;
4
+ HttpContext: symbol;
5
+ };
6
+ export declare const METADATA_KEY: {
7
+ controller: string;
8
+ controllerMethod: string;
9
+ controllerParameter: string;
10
+ httpContext: string;
11
+ };
12
+ export declare enum PARAMETER_TYPE {
13
+ REQUEST = 0,
14
+ RESPONSE = 1,
15
+ PARAMS = 2,
16
+ QUERY = 3,
17
+ BODY = 4,
18
+ HEADERS = 5,
19
+ COOKIES = 6,
20
+ NEXT = 7,
21
+ PRINCIPAL = 8
22
+ }
23
+ export declare enum HTTP_VERBS_ENUM {
24
+ all = "ALL",
25
+ connect = "CONNECT",
26
+ delete = "DELETE",
27
+ get = "GET",
28
+ head = "HEAD",
29
+ options = "OPTIONS",
30
+ patch = "PATCH",
31
+ post = "POST",
32
+ propfind = "PROPFIND",
33
+ put = "PUT",
34
+ trace = "TRACE"
35
+ }
36
+ export declare const DUPLICATED_CONTROLLER_NAME: (name: string) => string;
37
+ export declare const NO_CONTROLLERS_FOUND: string;
38
+ export declare const DEFAULT_ROUTING_ROOT_PATH = "/";
39
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../src/adapter-express/express-utils/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI;;;;CAIhB,CAAC;AAEF,eAAO,MAAM,YAAY;;;;;CAKxB,CAAC;AAEF,oBAAY,cAAc;IACxB,OAAO,IAAA;IACP,QAAQ,IAAA;IACR,MAAM,IAAA;IACN,KAAK,IAAA;IACL,IAAI,IAAA;IACJ,OAAO,IAAA;IACP,OAAO,IAAA;IACP,IAAI,IAAA;IACJ,SAAS,IAAA;CACV;AAED,oBAAY,eAAe;IACzB,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,MAAM,WAAW;IACjB,GAAG,QAAQ;IACX,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,GAAG,QAAQ;IACX,KAAK,UAAU;CAChB;AAED,eAAO,MAAM,0BAA0B,SAAU,MAAM,KAAG,MACJ,CAAC;AAEvD,eAAO,MAAM,oBAAoB,QAGL,CAAC;AAE7B,eAAO,MAAM,yBAAyB,MAAM,CAAC"}
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ import type { OutgoingHttpHeaders } from "node:http";
3
+ export declare abstract class HttpContent {
4
+ private _headers;
5
+ get headers(): OutgoingHttpHeaders;
6
+ abstract readAsync(): Promise<string | Record<string, unknown> | Record<string, unknown>[]>;
7
+ }
8
+ //# sourceMappingURL=httpContent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpContent.d.ts","sourceRoot":"","sources":["../../../../../../src/adapter-express/express-utils/content/httpContent.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAErD,8BAAsB,WAAW;IAC/B,OAAO,CAAC,QAAQ,CAA2B;IAE3C,IAAW,OAAO,IAAI,mBAAmB,CAExC;aAEe,SAAS,IAAI,OAAO,CAElC,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAC7D;CACF"}
@@ -0,0 +1,24 @@
1
+ import "reflect-metadata";
2
+ import { PARAMETER_TYPE, HTTP_VERBS_ENUM } from "./constants";
3
+ import type { Controller, HandlerDecorator, Middleware } from "./interfaces";
4
+ export declare const injectHttpContext: (target: import("inversify/lib/annotation/decorator_utils").DecoratorTarget<unknown>, targetKey?: string | symbol, indexOrPropertyDescriptor?: number | TypedPropertyDescriptor<any>) => void;
5
+ export declare function controller(path: string, ...middleware: Array<Middleware>): (target: NewableFunction) => void;
6
+ export declare function all(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
7
+ export declare function Get(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
8
+ export declare function Post(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
9
+ export declare function Put(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
10
+ export declare function Patch(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
11
+ export declare function Head(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
12
+ export declare function Delete(path: string, ...middleware: Array<Middleware>): HandlerDecorator;
13
+ export declare function httpMethod(method: keyof typeof HTTP_VERBS_ENUM, path: string, ...middleware: Array<Middleware>): HandlerDecorator;
14
+ export declare const request: () => ParameterDecorator;
15
+ export declare const response: () => ParameterDecorator;
16
+ export declare const param: (paramName?: string) => ParameterDecorator;
17
+ export declare const query: (queryParamName?: string) => ParameterDecorator;
18
+ export declare const body: () => ParameterDecorator;
19
+ export declare const headers: (headerName?: string) => ParameterDecorator;
20
+ export declare const cookies: (cookieName?: string) => ParameterDecorator;
21
+ export declare const next: () => ParameterDecorator;
22
+ export declare const Principal: () => ParameterDecorator;
23
+ export declare function params(type: PARAMETER_TYPE, parameterName?: string): (target: unknown | Controller, methodName: string | symbol, index: number) => void;
24
+ //# sourceMappingURL=decorators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decorators.d.ts","sourceRoot":"","sources":["../../../../../src/adapter-express/express-utils/decorators.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAsB,cAAc,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,KAAK,EACV,UAAU,EAKV,gBAAgB,EAChB,UAAU,EAEX,MAAM,cAAc,CAAC;AAEtB,eAAO,MAAM,iBAAiB,+LAA2B,CAAC;AAE1D,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,YACvD,eAAe,KAAG,IAAI,CAiBvC;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAEpF;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAEpF;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAErF;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAEpF;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAEtF;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAErF;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,gBAAgB,CAEvF;AAED,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,OAAO,eAAe,EACpC,IAAI,EAAE,MAAM,EACZ,GAAG,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAC/B,gBAAgB,CAuBlB;AAKD,eAAO,MAAM,OAAO,EAAE,MAAM,kBAAkE,CAAC;AAE/F,eAAO,MAAM,QAAQ,EAAE,MAAM,kBAAmE,CAAC;AAEjG,eAAO,MAAM,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,KAAK,kBAE3C,CAAC;AAEF,eAAO,MAAM,KAAK,EAAE,CAAC,cAAc,CAAC,EAAE,MAAM,KAAK,kBAEhD,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,MAAM,kBAA+D,CAAC;AAEzF,eAAO,MAAM,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,kBAE9C,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,MAAM,KAAK,kBAE9C,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,MAAM,kBAA+D,CAAC;AAEzF,eAAO,MAAM,SAAS,EAAE,MAAM,kBAAoE,CAAC;AAQnG,wBAAgB,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,aAAa,CAAC,EAAE,MAAM,YACjD,OAAO,GAAG,UAAU,cAAc,MAAM,GAAG,MAAM,SAAS,MAAM,KAAG,IAAI,CA8BxF"}
@@ -0,0 +1,16 @@
1
+ /// <reference types="node" />
2
+ import type { OutgoingHttpHeaders } from "node:http";
3
+ import { HttpContent } from "./content/httpContent";
4
+ export declare class HttpResponseMessage {
5
+ private _content;
6
+ private _headers;
7
+ get headers(): OutgoingHttpHeaders;
8
+ set headers(headers: OutgoingHttpHeaders);
9
+ get content(): HttpContent;
10
+ set content(value: HttpContent);
11
+ private _statusCode;
12
+ get statusCode(): number;
13
+ set statusCode(code: number);
14
+ constructor(statusCode?: number);
15
+ }
16
+ //# sourceMappingURL=httpResponseMessage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"httpResponseMessage.d.ts","sourceRoot":"","sources":["../../../../../src/adapter-express/express-utils/httpResponseMessage.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAe;IAE/B,OAAO,CAAC,QAAQ,CAA2B;IAE3C,IAAW,OAAO,IAAI,mBAAmB,CAExC;IAED,IAAW,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAE9C;IAED,IAAW,OAAO,IAAI,WAAW,CAEhC;IAED,IAAW,OAAO,CAAC,KAAK,EAAE,WAAW,EAEpC;IAED,OAAO,CAAC,WAAW,CAAU;IAE7B,IAAW,UAAU,IAAI,MAAM,CAE9B;IAED,IAAW,UAAU,CAAC,IAAI,EAAE,MAAM,EAMjC;gBAEW,UAAU,SAAM;CAG7B"}
@@ -0,0 +1,2 @@
1
+ export * from "./decorators";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/adapter-express/express-utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC"}