diff --git a/packages/backend/src/apps/formatter/actions/text/index.js b/packages/backend/src/apps/formatter/actions/text/index.js index 2c059289..b2c7ee60 100644 --- a/packages/backend/src/apps/formatter/actions/text/index.js +++ b/packages/backend/src/apps/formatter/actions/text/index.js @@ -14,6 +14,7 @@ import stringToBase64 from './transformers/string-to-base64.js'; import encodeUri from './transformers/encode-uri.js'; import trimWhitespace from './transformers/trim-whitespace.js'; import useDefaultValue from './transformers/use-default-value.js'; +import parseStringifiedJson from './transformers/parse-stringified-json.js'; const transformers = { base64ToString, @@ -30,6 +31,7 @@ const transformers = { encodeUri, trimWhitespace, useDefaultValue, + parseStringifiedJson, }; export default defineAction({ @@ -62,6 +64,7 @@ export default defineAction({ { label: 'Encode URI', value: 'encodeUri' }, { label: 'Trim Whitespace', value: 'trimWhitespace' }, { label: 'Use Default Value', value: 'useDefaultValue' }, + { label: 'Parse stringified JSON', value: 'parseStringifiedJson' }, ], additionalFields: { type: 'query', diff --git a/packages/backend/src/apps/formatter/actions/text/transformers/parse-stringified-json.js b/packages/backend/src/apps/formatter/actions/text/transformers/parse-stringified-json.js new file mode 100644 index 00000000..26cedb3f --- /dev/null +++ b/packages/backend/src/apps/formatter/actions/text/transformers/parse-stringified-json.js @@ -0,0 +1,7 @@ +const parseStringifiedJson = ($) => { + const input = $.step.parameters.input; + + return JSON.parse(input); +}; + +export default parseStringifiedJson; diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.js b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.js index bb38179f..a9e48258 100644 --- a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.js +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/index.js @@ -12,6 +12,7 @@ import stringToBase64 from './text/string-to-base64.js'; import encodeUri from './text/encode-uri.js'; import trimWhitespace from './text/trim-whitespace.js'; import useDefaultValue from './text/use-default-value.js'; +import parseStringifiedJson from './text/parse-stringified-json.js'; import performMathOperation from './numbers/perform-math-operation.js'; import randomNumber from './numbers/random-number.js'; import formatNumber from './numbers/format-number.js'; @@ -38,6 +39,7 @@ const options = { formatNumber, formatPhoneNumber, formatDateTime, + parseStringifiedJson, }; export default { diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/parse-stringified-json.js b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/parse-stringified-json.js new file mode 100644 index 00000000..e4de0edc --- /dev/null +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/parse-stringified-json.js @@ -0,0 +1,12 @@ +const useDefaultValue = [ + { + label: 'Input', + key: 'input', + type: 'string', + required: true, + description: 'Stringified JSON you want to parse.', + variables: true, + }, +]; + +export default useDefaultValue;