UNPKG

@loopback/express

Version:

Integrate with Express and expose middleware infrastructure for sequence and interceptors

63 lines 3.15 kB
"use strict"; // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved. // Node module: @loopback/express // This file is licensed under the MIT License. // License text available at https://opensource.org/licenses/MIT Object.defineProperty(exports, "__esModule", { value: true }); exports.InvokeMiddlewareProvider = void 0; const tslib_1 = require("tslib"); const core_1 = require("@loopback/core"); const debug_1 = tslib_1.__importDefault(require("debug")); const keys_1 = require("../keys"); const middleware_1 = require("../middleware"); const types_1 = require("../types"); const debug = (0, debug_1.default)('loopback:rest:middleware'); /** * Extension point for middleware to be run as part of the sequence actions */ let InvokeMiddlewareProvider = class InvokeMiddlewareProvider { static value(binding, defaultOptions = { chain: types_1.DEFAULT_MIDDLEWARE_CHAIN, orderedGroups: ['cors', 'apiSpec', keys_1.DEFAULT_MIDDLEWARE_GROUP], }) { debug('Binding', binding); debug('Default options', defaultOptions); const invokeMiddlewareFn = (middlewareCtx, optionsOrHandlers) => { var _a; if (Array.isArray(optionsOrHandlers)) { return this.action(middlewareCtx, optionsOrHandlers); } const options = optionsOrHandlers; let chain = options === null || options === void 0 ? void 0 : options.chain; const orderedGroups = options === null || options === void 0 ? void 0 : options.orderedGroups; chain = (_a = chain !== null && chain !== void 0 ? chain : binding === null || binding === void 0 ? void 0 : binding.tagMap[core_1.CoreTags.EXTENSION_POINT]) !== null && _a !== void 0 ? _a : defaultOptions.chain; const middlewareOptions = { ...options, chain, orderedGroups: orderedGroups !== null && orderedGroups !== void 0 ? orderedGroups : defaultOptions.orderedGroups, }; debug('Invoke middleware with', middlewareOptions); return this.action(middlewareCtx, middlewareOptions); }; return invokeMiddlewareFn; } static async action(middlewareCtx, optionsOrHandlers) { if (Array.isArray(optionsOrHandlers)) { return (0, middleware_1.invokeExpressMiddleware)(middlewareCtx, ...optionsOrHandlers); } return (0, middleware_1.invokeMiddleware)(middlewareCtx, optionsOrHandlers); } }; exports.InvokeMiddlewareProvider = InvokeMiddlewareProvider; tslib_1.__decorate([ tslib_1.__param(0, core_1.inject.binding()), tslib_1.__param(1, (0, core_1.config)()), tslib_1.__metadata("design:type", Function), tslib_1.__metadata("design:paramtypes", [core_1.Binding, Object]), tslib_1.__metadata("design:returntype", Function) ], InvokeMiddlewareProvider, "value", null); exports.InvokeMiddlewareProvider = InvokeMiddlewareProvider = tslib_1.__decorate([ (0, core_1.extensionPoint)(types_1.DEFAULT_MIDDLEWARE_CHAIN) ], InvokeMiddlewareProvider); //# sourceMappingURL=invoke-middleware.provider.js.map