UNPKG

2.15 kBJavaScriptView Raw
1"use strict";
2// Copyright IBM Corp. and LoopBack contributors 2018,2019. 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.JsonBodyParser = void 0;
8const tslib_1 = require("tslib");
9const core_1 = require("@loopback/core");
10const body_parser_1 = require("body-parser");
11const type_is_1 = require("type-is");
12const keys_1 = require("../keys");
13const parse_json_1 = require("../parse-json");
14const body_parser_helpers_1 = require("./body-parser.helpers");
15let JsonBodyParser = class JsonBodyParser {
16 constructor(options = {}) {
17 var _a, _b;
18 this.name = body_parser_helpers_1.builtinParsers.json;
19 const jsonOptions = (0, body_parser_helpers_1.getParserOptions)('json', options);
20 const prohibitedKeys = [
21 '__proto__',
22 'constructor.prototype',
23 ...((_b = (_a = options.validation) === null || _a === void 0 ? void 0 : _a.prohibitedKeys) !== null && _b !== void 0 ? _b : []),
24 ];
25 jsonOptions.reviver = (0, parse_json_1.sanitizeJsonParse)(jsonOptions.reviver, prohibitedKeys);
26 this.jsonParser = (0, body_parser_1.json)(jsonOptions);
27 }
28 supports(mediaType) {
29 return !!(0, type_is_1.is)(mediaType, '*/json', '*/*+json');
30 }
31 async parse(request) {
32 let body = await (0, body_parser_helpers_1.invokeBodyParserMiddleware)(this.jsonParser, request);
33 // https://github.com/expressjs/body-parser/blob/master/lib/types/json.js#L71-L76
34 const contentLength = request.get('content-length');
35 if (contentLength != null && +contentLength === 0) {
36 body = undefined;
37 }
38 return { value: body };
39 }
40};
41JsonBodyParser = tslib_1.__decorate([
42 tslib_1.__param(0, (0, core_1.inject)(keys_1.RestBindings.REQUEST_BODY_PARSER_OPTIONS, { optional: true })),
43 tslib_1.__metadata("design:paramtypes", [Object])
44], JsonBodyParser);
45exports.JsonBodyParser = JsonBodyParser;
46//# sourceMappingURL=body-parser.json.js.map
\No newline at end of file