UNPKG

3.58 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4exports.__esModule = true;
5exports.createConfig = createConfig;
6var _joi = _interopRequireDefault(require("joi"));
7const DEFAULT_LIMIT = `100kb`;
8
9// similar to `GatsbyFunctionBodyParserConfig` and `IGatsbyFunctionConfigProcessed`
10// from index.d.ts, just with fields required (not optional).
11// `createConfig()` will fill in defaults
12
13const defaultBodyParserOptions = {
14 limit: DEFAULT_LIMIT
15};
16const defaultUrlEncoded = {
17 extended: true
18};
19const defaultConfig = {
20 bodyParser: {
21 text: defaultBodyParserOptions,
22 raw: defaultBodyParserOptions,
23 json: defaultBodyParserOptions,
24 urlencoded: {
25 ...defaultBodyParserOptions,
26 ...defaultUrlEncoded
27 }
28 }
29};
30let warnings = [];
31function bodyParserConfigFailover(property, expectedType) {
32 return function actualFailover(_, {
33 original
34 }) {
35 warnings.push({
36 property: `bodyParser.${property}`,
37 original,
38 expectedType,
39 replacedWith: defaultConfig.bodyParser[property]
40 });
41 return defaultConfig.bodyParser[property];
42 };
43}
44const functionConfigSchema = _joi.default.object().keys({
45 bodyParser: _joi.default.object().keys({
46 json: _joi.default.object().keys({
47 type: _joi.default.string(),
48 limit: _joi.default.alternatives(_joi.default.string(), _joi.default.number())
49 }).default(defaultConfig.bodyParser.json).failover(bodyParserConfigFailover(`json`, `{\n type?: string\n limit?: string | number\n}`)).unknown(false),
50 text: _joi.default.object().keys({
51 type: _joi.default.string(),
52 limit: _joi.default.alternatives(_joi.default.string(), _joi.default.number())
53 }).unknown(false).default(defaultConfig.bodyParser.text).failover(bodyParserConfigFailover(`text`, `{\n type?: string\n limit?: string | number\n}`)),
54 raw: _joi.default.object().keys({
55 type: _joi.default.string(),
56 limit: _joi.default.alternatives(_joi.default.string(), _joi.default.number())
57 }).unknown(false).default(defaultConfig.bodyParser.raw).failover(bodyParserConfigFailover(`raw`, `{\n type?: string\n limit?: string | number\n}`)),
58 urlencoded: _joi.default.object().keys({
59 type: _joi.default.string(),
60 limit: _joi.default.alternatives(_joi.default.string(), _joi.default.number()),
61 extended: _joi.default.boolean().required()
62 }).unknown(false).default(defaultConfig.bodyParser.urlencoded).failover(bodyParserConfigFailover(`urlencoded`, `{\n type?: string\n limit: string | number\n extended: boolean\n}`))
63 }).unknown(false).default(defaultConfig.bodyParser).failover((_, {
64 original
65 }) => {
66 warnings.push({
67 property: `bodyParser`,
68 original,
69 expectedType: `{\n text?: GatsbyFunctionBodyParserCommonMiddlewareConfig\n json?: GatsbyFunctionBodyParserCommonMiddlewareConfig\n raw?: GatsbyFunctionBodyParserCommonMiddlewareConfig\n urlencoded?: GatsbyFunctionBodyParserUrlencodedConfig\n}`,
70 replacedWith: defaultConfig.bodyParser
71 });
72 return defaultConfig.bodyParser;
73 })
74}).unknown(false).default(defaultConfig).failover((_, {
75 original
76}) => {
77 warnings.push({
78 property: null,
79 original,
80 expectedType: `{\n bodyParser?: GatsbyFunctionBodyParserConfig\n}`,
81 replacedWith: defaultConfig
82 });
83 return defaultConfig;
84});
85function createConfig(userConfig) {
86 warnings = [];
87 const {
88 value
89 } = functionConfigSchema.validate(userConfig);
90 const config = value;
91 return {
92 config,
93 warnings
94 };
95}
96//# sourceMappingURL=config.js.map
\No newline at end of file