diff --git a/packages/hoppscotch-common/src/helpers/functional/json.ts b/packages/hoppscotch-common/src/helpers/functional/json.ts index 79cf9cba4..2bf63ea88 100644 --- a/packages/hoppscotch-common/src/helpers/functional/json.ts +++ b/packages/hoppscotch-common/src/helpers/functional/json.ts @@ -1,13 +1,24 @@ import * as O from "fp-ts/Option" import { flow } from "fp-ts/function" +type SafeParseJSON = { + (str: string, convertToArray: true): O.Option> + (str: string, convertToArray?: false): O.Option> +} + /** * Checks and Parses JSON string * @param str Raw JSON data to be parsed * @returns Option type with some(JSON data) or none */ -export const safeParseJSON = (str: string): O.Option => - O.tryCatch(() => JSON.parse(str)) +export const safeParseJSON: SafeParseJSON = (str, convertToArray = false) => + O.tryCatch(() => { + const data = JSON.parse(str) + if (convertToArray) { + return Array.isArray(data) ? data : [data] + } + return data + }) /** * Checks if given string is a JSON string diff --git a/packages/hoppscotch-common/src/helpers/import-export/import/hoppEnv.ts b/packages/hoppscotch-common/src/helpers/import-export/import/hoppEnv.ts index 0e961b72a..bf58fc301 100644 --- a/packages/hoppscotch-common/src/helpers/import-export/import/hoppEnv.ts +++ b/packages/hoppscotch-common/src/helpers/import-export/import/hoppEnv.ts @@ -18,7 +18,7 @@ const hoppEnvSchema = z.object({ }) export const hoppEnvImporter = (content: string) => { - const parsedContent = safeParseJSON(content) + const parsedContent = safeParseJSON(content, true) // parse json from the environments string if (O.isNone(parsedContent)) {