UNPKG

2.6 kBJavaScriptView Raw
1"use strict";
2// Copyright IBM Corp. and LoopBack contributors 2018,2020. All Rights Reserved.
3// Node module: @loopback/rest
4// This file is licensed under the MIT License.
5// License text available at https://opensource.org/licenses/MIT
6Object.defineProperty(exports, "__esModule", { value: true });
7exports.FindRouteMiddlewareProvider = exports.FindRouteProvider = void 0;
8const tslib_1 = require("tslib");
9const core_1 = require("@loopback/core");
10const express_1 = require("@loopback/express");
11const debug_1 = tslib_1.__importDefault(require("debug"));
12const http_handler_1 = require("../http-handler");
13const keys_1 = require("../keys");
14const sequence_1 = require("../sequence");
15const debug = (0, debug_1.default)('loopback:rest:find-route');
16class FindRouteProvider {
17 static value(context, handler) {
18 const findRoute = request => {
19 const found = handler.findRoute(request);
20 debug('Route found for %s %s', request.method, request.originalUrl, found);
21 found.updateBindings(context);
22 return found;
23 };
24 return findRoute;
25 }
26}
27tslib_1.__decorate([
28 tslib_1.__param(0, (0, core_1.inject)(keys_1.RestBindings.Http.CONTEXT)),
29 tslib_1.__param(1, (0, core_1.inject)(keys_1.RestBindings.HANDLER)),
30 tslib_1.__metadata("design:type", Function),
31 tslib_1.__metadata("design:paramtypes", [core_1.Context,
32 http_handler_1.HttpHandler]),
33 tslib_1.__metadata("design:returntype", Function)
34], FindRouteProvider, "value", null);
35exports.FindRouteProvider = FindRouteProvider;
36let FindRouteMiddlewareProvider = class FindRouteMiddlewareProvider {
37 value() {
38 return async (ctx, next) => {
39 const request = ctx.request;
40 debug('Finding route for %s %s', request.method, request.originalUrl);
41 const handler = await ctx.get(keys_1.RestBindings.HANDLER);
42 const route = handler.findRoute(request);
43 debug('Route found for %s %s', request.method, request.originalUrl, route);
44 route.updateBindings(ctx);
45 ctx.bind(keys_1.RestBindings.Operation.ROUTE).to(route);
46 return next();
47 };
48 }
49};
50FindRouteMiddlewareProvider = tslib_1.__decorate([
51 (0, core_1.injectable)((0, express_1.asMiddleware)({
52 group: sequence_1.RestMiddlewareGroups.FIND_ROUTE,
53 chain: keys_1.RestTags.REST_MIDDLEWARE_CHAIN,
54 }), { scope: core_1.BindingScope.SINGLETON })
55], FindRouteMiddlewareProvider);
56exports.FindRouteMiddlewareProvider = FindRouteMiddlewareProvider;
57//# sourceMappingURL=find-route.provider.js.map
\No newline at end of file