UNPKG

2.47 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.SendResponseMiddlewareProvider = exports.SendProvider = void 0;
8const tslib_1 = require("tslib");
9const core_1 = require("@loopback/core");
10const express_1 = require("@loopback/express");
11const keys_1 = require("../keys");
12const sequence_1 = require("../sequence");
13const writer_1 = require("../writer");
14/**
15 * Provides the function that populates the response object with
16 * the results of the operation.
17 *
18 * @returns The handler function that will populate the
19 * response with operation results.
20 */
21let SendProvider = class SendProvider {
22 static value() {
23 return writer_1.writeResultToResponse;
24 }
25};
26SendProvider = tslib_1.__decorate([
27 (0, core_1.injectable)({ scope: core_1.BindingScope.SINGLETON })
28], SendProvider);
29exports.SendProvider = SendProvider;
30let SendResponseMiddlewareProvider = class SendResponseMiddlewareProvider {
31 value() {
32 return async (ctx, next) => {
33 const send = await ctx.get(keys_1.RestBindings.SequenceActions.SEND);
34 const reject = await ctx.get(keys_1.RestBindings.SequenceActions.REJECT);
35 try {
36 /**
37 * Invoke downstream middleware to produce the result
38 */
39 const result = await next();
40 /**
41 * Write the result to HTTP response
42 */
43 send(ctx.response, result);
44 }
45 catch (err) {
46 /**
47 * Write the error to HTTP response
48 */
49 reject(ctx, err);
50 }
51 };
52 }
53};
54SendResponseMiddlewareProvider = tslib_1.__decorate([
55 (0, core_1.injectable)((0, express_1.asMiddleware)({
56 group: sequence_1.RestMiddlewareGroups.SEND_RESPONSE,
57 downstreamGroups: [
58 sequence_1.RestMiddlewareGroups.CORS,
59 sequence_1.RestMiddlewareGroups.INVOKE_METHOD,
60 ],
61 chain: keys_1.RestTags.REST_MIDDLEWARE_CHAIN,
62 }), { scope: core_1.BindingScope.SINGLETON })
63], SendResponseMiddlewareProvider);
64exports.SendResponseMiddlewareProvider = SendResponseMiddlewareProvider;
65//# sourceMappingURL=send.provider.js.map
\No newline at end of file