1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 | exports.__esModule = true;
|
5 | exports.createConfig = createConfig;
|
6 | var _joi = _interopRequireDefault(require("joi"));
|
7 | const DEFAULT_LIMIT = `100kb`;
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 | const defaultBodyParserOptions = {
|
14 | limit: DEFAULT_LIMIT
|
15 | };
|
16 | const defaultUrlEncoded = {
|
17 | extended: true
|
18 | };
|
19 | const defaultConfig = {
|
20 | bodyParser: {
|
21 | text: defaultBodyParserOptions,
|
22 | raw: defaultBodyParserOptions,
|
23 | json: defaultBodyParserOptions,
|
24 | urlencoded: {
|
25 | ...defaultBodyParserOptions,
|
26 | ...defaultUrlEncoded
|
27 | }
|
28 | }
|
29 | };
|
30 | let warnings = [];
|
31 | function 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 | }
|
44 | const 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 | });
|
85 | function 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 |
|
\ | No newline at end of file |