From 04bbeaa68cf53af82ce633f369d6eb579c44d80d Mon Sep 17 00:00:00 2001 From: Oliwia Rogala Date: Tue, 21 May 2024 12:56:49 +0200 Subject: [PATCH] fix(config): define missing default options and their types (#9949) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Refs #9945 --- Co-authored-by: VladimĂ­r Gorej --- src/core/config/defaults.js | 10 +++++++- src/core/config/type-cast/mappings.js | 24 +++++++++++++++++++ .../config/type-cast/type-casters/function.js | 7 ++++++ .../type-casters/nullable-function.js | 7 ++++++ .../config/type-cast/type-casters/sorter.js | 7 ++++++ src/core/plugins/request-snippets/fn.js | 5 ++-- 6 files changed, 57 insertions(+), 3 deletions(-) create mode 100644 src/core/config/type-cast/type-casters/function.js create mode 100644 src/core/config/type-cast/type-casters/nullable-function.js create mode 100644 src/core/config/type-cast/type-casters/sorter.js diff --git a/src/core/config/defaults.js b/src/core/config/defaults.js index bee47f04..8fe7a53a 100644 --- a/src/core/config/defaults.js +++ b/src/core/config/defaults.js @@ -23,7 +23,10 @@ const defaultOptions = Object.freeze({ displayRequestDuration: false, deepLinking: false, tryItOutEnabled: false, - requestInterceptor: (a) => a, + requestInterceptor: (request) => { + request.curlOptions = [] + return request + }, responseInterceptor: (a) => a, showMutatedRequest: true, defaultModelRendering: "example", @@ -80,6 +83,11 @@ const defaultOptions = Object.freeze({ activated: true, theme: "agate", }, + operationsSorter: null, + tagsSorter: null, + onComplete: null, + modelPropertyMacro: null, + parameterMacro: null, }) export default defaultOptions diff --git a/src/core/config/type-cast/mappings.js b/src/core/config/type-cast/mappings.js index b085f5ec..b025fb12 100644 --- a/src/core/config/type-cast/mappings.js +++ b/src/core/config/type-cast/mappings.js @@ -5,16 +5,21 @@ import arrayTypeCaster from "./type-casters/array" import booleanTypeCaster from "./type-casters/boolean" import domNodeTypeCaster from "./type-casters/dom-node" import filterTypeCaster from "./type-casters/filter" +import functionTypeCaster from "./type-casters/function" import nullableArrayTypeCaster from "./type-casters/nullable-array" +import nullableFunctionTypeCaster from "./type-casters/nullable-function" import nullableStringTypeCaster from "./type-casters/nullable-string" import numberTypeCaster from "./type-casters/number" import objectTypeCaster from "./type-casters/object" +import sorterTypeCaster from "./type-casters/sorter" import stringTypeCaster from "./type-casters/string" import syntaxHighlightTypeCaster from "./type-casters/syntax-highlight" import undefinedStringTypeCaster from "./type-casters/undefined-string" import defaultOptions from "../defaults" const mappings = { + components: { typeCaster: objectTypeCaster }, + configs: { typeCaster: objectTypeCaster }, configUrl: { typeCaster: nullableStringTypeCaster }, deepLinking: { typeCaster: booleanTypeCaster, @@ -41,12 +46,20 @@ const mappings = { dom_id: { typeCaster: nullableStringTypeCaster }, domNode: { typeCaster: domNodeTypeCaster }, filter: { typeCaster: filterTypeCaster }, + fn: { typeCaster: objectTypeCaster }, + initialState: { typeCaster: objectTypeCaster }, layout: { typeCaster: stringTypeCaster }, maxDisplayedTags: { typeCaster: numberTypeCaster, defaultValue: defaultOptions.maxDisplayedTags, }, + modelPropertyMacro: { typeCaster: nullableFunctionTypeCaster }, oauth2RedirectUrl: { typeCaster: undefinedStringTypeCaster }, + onComplete: { typeCaster: nullableFunctionTypeCaster }, + operationsSorter: { + typeCaster: sorterTypeCaster, + }, + paramaterMacro: { typeCaster: nullableFunctionTypeCaster }, persistAuthorization: { typeCaster: booleanTypeCaster, defaultValue: defaultOptions.persistAuthorization, @@ -59,6 +72,10 @@ const mappings = { typeCaster: arrayTypeCaster, defaultValue: defaultOptions.presets, }, + requestInterceptor: { + typeCaster: functionTypeCaster, + defaultValue: defaultOptions.requestInterceptor, + }, requestSnippets: { typeCaster: objectTypeCaster, defaultValue: defaultOptions.requestSnippets, @@ -67,6 +84,10 @@ const mappings = { typeCaster: booleanTypeCaster, defaultValue: defaultOptions.requestSnippetsEnabled, }, + responseInterceptor: { + typeCaster: functionTypeCaster, + defaultValue: defaultOptions.responseInterceptor, + }, showCommonExtensions: { typeCaster: booleanTypeCaster, defaultValue: defaultOptions.showCommonExtensions, @@ -93,6 +114,9 @@ const mappings = { defaultValue: defaultOptions.syntaxHighlight.activated, }, "syntaxHighlight.theme": { typeCaster: stringTypeCaster }, + tagsSorter: { + typeCaster: sorterTypeCaster, + }, tryItOutEnabled: { typeCaster: booleanTypeCaster, defaultValue: defaultOptions.tryItOutEnabled, diff --git a/src/core/config/type-cast/type-casters/function.js b/src/core/config/type-cast/type-casters/function.js new file mode 100644 index 00000000..35ace3cf --- /dev/null +++ b/src/core/config/type-cast/type-casters/function.js @@ -0,0 +1,7 @@ +/** + * @prettier + */ +const functionTypeCaster = (value, defaultValue) => + typeof value === "function" ? value : defaultValue + +export default functionTypeCaster diff --git a/src/core/config/type-cast/type-casters/nullable-function.js b/src/core/config/type-cast/type-casters/nullable-function.js new file mode 100644 index 00000000..23832ae1 --- /dev/null +++ b/src/core/config/type-cast/type-casters/nullable-function.js @@ -0,0 +1,7 @@ +/** + * @prettier + */ +const nullableFunctionTypeCaster = (value) => + typeof value === "function" ? value : null + +export default nullableFunctionTypeCaster diff --git a/src/core/config/type-cast/type-casters/sorter.js b/src/core/config/type-cast/type-casters/sorter.js new file mode 100644 index 00000000..5773a717 --- /dev/null +++ b/src/core/config/type-cast/type-casters/sorter.js @@ -0,0 +1,7 @@ +/** + * @prettier + */ +const sorterTypeCaster = (value) => + typeof value === "function" || typeof value === "string" ? value : null + +export default sorterTypeCaster diff --git a/src/core/plugins/request-snippets/fn.js b/src/core/plugins/request-snippets/fn.js index 8fe7f539..4e71454c 100644 --- a/src/core/plugins/request-snippets/fn.js +++ b/src/core/plugins/request-snippets/fn.js @@ -1,4 +1,4 @@ -import { Map } from "immutable" +import { List, Map } from "immutable" import win from "../../window" @@ -83,7 +83,8 @@ const curlify = (request, escape, newLine, ext = "") => { let headers = request.get("headers") curlified += "curl" + ext - if (request.has("curlOptions")) { + const curlOptions = request.get("curlOptions") + if (List.isList(curlOptions) && !curlOptions.isEmpty()) { addWords(...request.get("curlOptions")) }