From bb945e1bb838fb9dcbcd49ca28eae0729305b4e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C4=B1dvan=20Akca?= Date: Sun, 21 Apr 2024 14:30:42 +0200 Subject: [PATCH] feat(formatter): add decode html entities action --- packages/backend/package.json | 1 + .../backend/src/apps/formatter/actions/text/index.js | 3 +++ .../text/transformers/decode-html-entities.js | 8 ++++++++ .../dynamic-fields/list-transform-options/index.js | 2 ++ .../text/decode-html-entities.js | 12 ++++++++++++ yarn.lock | 7 ++++++- 6 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 packages/backend/src/apps/formatter/actions/text/transformers/decode-html-entities.js create mode 100644 packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/decode-html-entities.js diff --git a/packages/backend/package.json b/packages/backend/package.json index b59b7e0f..3b753c2c 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -46,6 +46,7 @@ "graphql-shield": "^7.5.0", "graphql-tools": "^8.2.0", "handlebars": "^4.7.7", + "he": "^1.2.0", "http-errors": "~1.6.3", "http-proxy-agent": "^7.0.0", "https-proxy-agent": "^7.0.1", diff --git a/packages/backend/src/apps/formatter/actions/text/index.js b/packages/backend/src/apps/formatter/actions/text/index.js index d3f0980a..9e34dc09 100644 --- a/packages/backend/src/apps/formatter/actions/text/index.js +++ b/packages/backend/src/apps/formatter/actions/text/index.js @@ -2,6 +2,7 @@ import defineAction from '../../../../helpers/define-action.js'; import base64ToString from './transformers/base64-to-string.js'; import capitalize from './transformers/capitalize.js'; +import decodeHtmlEntities from './transformers/decode-html-entities.js'; import extractEmailAddress from './transformers/extract-email-address.js'; import extractNumber from './transformers/extract-number.js'; import htmlToMarkdown from './transformers/html-to-markdown.js'; @@ -16,6 +17,7 @@ import useDefaultValue from './transformers/use-default-value.js'; const transformers = { base64ToString, capitalize, + decodeHtmlEntities, extractEmailAddress, extractNumber, htmlToMarkdown, @@ -43,6 +45,7 @@ export default defineAction({ options: [ { label: 'Base64 to String', value: 'base64ToString' }, { label: 'Capitalize', value: 'capitalize' }, + { label: 'Decode HTML Entities', value: 'decodeHtmlEntities' }, { label: 'Convert HTML to Markdown', value: 'htmlToMarkdown' }, { label: 'Convert Markdown to HTML', value: 'markdownToHtml' }, { label: 'Extract Email Address', value: 'extractEmailAddress' }, diff --git a/packages/backend/src/apps/formatter/actions/text/transformers/decode-html-entities.js b/packages/backend/src/apps/formatter/actions/text/transformers/decode-html-entities.js new file mode 100644 index 00000000..341ddcbd --- /dev/null +++ b/packages/backend/src/apps/formatter/actions/text/transformers/decode-html-entities.js @@ -0,0 +1,8 @@ +import he from 'he'; + +const decodeHtmlEntities = ($) => { + const input = $.step.parameters.input; + return he.decode(input); +}; + +export default decodeHtmlEntities; 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 f4aab425..7f6bf8b3 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 @@ -1,5 +1,6 @@ import base64ToString from './text/base64-to-string.js'; import capitalize from './text/capitalize.js'; +import decodeHtmlEntities from './text/decode-html-entities.js'; import extractEmailAddress from './text/extract-email-address.js'; import extractNumber from './text/extract-number.js'; import htmlToMarkdown from './text/html-to-markdown.js'; @@ -19,6 +20,7 @@ import formatDateTime from './date-time/format-date-time.js'; const options = { base64ToString, capitalize, + decodeHtmlEntities, extractEmailAddress, extractNumber, htmlToMarkdown, diff --git a/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/decode-html-entities.js b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/decode-html-entities.js new file mode 100644 index 00000000..04998647 --- /dev/null +++ b/packages/backend/src/apps/formatter/dynamic-fields/list-transform-options/text/decode-html-entities.js @@ -0,0 +1,12 @@ +const decodeHtmlEntities = [ + { + label: 'Input', + key: 'input', + type: 'string', + required: true, + description: 'Text that will be decoded.', + variables: true, + }, +]; + +export default decodeHtmlEntities; diff --git a/yarn.lock b/yarn.lock index 7da53300..73db1b22 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8973,11 +8973,16 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -he@1.2.0, he@^1.2.0: +he@1.2.0: version "1.2.0" resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== +he@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" + integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== + hexoid@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/hexoid/-/hexoid-1.0.0.tgz#ad10c6573fb907de23d9ec63a711267d9dc9bc18"