From b9b966c8a1eda72447992872b9fa445ea5ace76c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1n=20Ovejero?= Date: Thu, 19 Jan 2023 12:20:43 +0100 Subject: [PATCH] :zap: Adjust some implementations --- packages/workflow/package.json | 1 + packages/workflow/src/Extensions/ArrayExtensions.ts | 3 ++- packages/workflow/src/Extensions/ObjectExtensions.ts | 2 +- packages/workflow/src/Extensions/StringExtensions.ts | 7 ++----- .../test/ExpressionExtensions/StringExtensions.test.ts | 10 ---------- pnpm-lock.yaml | 3 ++- 6 files changed, 8 insertions(+), 18 deletions(-) diff --git a/packages/workflow/package.json b/packages/workflow/package.json index c6c4ea6a10c..6c9bfd80018 100644 --- a/packages/workflow/package.json +++ b/packages/workflow/package.json @@ -61,6 +61,7 @@ "lodash.set": "^4.3.2", "luxon": "~2.3.0", "recast": "^0.21.5", + "title-case": "^3.0.3", "transliteration": "^2.3.5", "xml2js": "^0.4.23" } diff --git a/packages/workflow/src/Extensions/ArrayExtensions.ts b/packages/workflow/src/Extensions/ArrayExtensions.ts index 34004097c08..a48f58c2fcc 100644 --- a/packages/workflow/src/Extensions/ArrayExtensions.ts +++ b/packages/workflow/src/Extensions/ArrayExtensions.ts @@ -199,8 +199,9 @@ export function average(value: unknown[]) { } function compact(value: unknown[]): unknown[] { + console.log('value[4]', value[4]); return value - .filter((v) => v !== null && v !== undefined) + .filter((v) => v !== null && v !== undefined && v !== 'nil' && v !== '') .map((v) => { if (typeof v === 'object' && v !== null) { return oCompact(v); diff --git a/packages/workflow/src/Extensions/ObjectExtensions.ts b/packages/workflow/src/Extensions/ObjectExtensions.ts index b3ef5dde57b..cf589ab4ac2 100644 --- a/packages/workflow/src/Extensions/ObjectExtensions.ts +++ b/packages/workflow/src/Extensions/ObjectExtensions.ts @@ -71,7 +71,7 @@ export function compact(value: object): object { // eslint-disable-next-line @typescript-eslint/no-explicit-any const newObj: any = {}; for (const [key, val] of Object.entries(value)) { - if (val !== null && val !== undefined) { + if (val !== null && val !== undefined && val !== 'nil' && val !== '') { if (typeof val === 'object') { // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument newObj[key] = compact(val); diff --git a/packages/workflow/src/Extensions/StringExtensions.ts b/packages/workflow/src/Extensions/StringExtensions.ts index 422efe2c75d..780499a2b64 100644 --- a/packages/workflow/src/Extensions/StringExtensions.ts +++ b/packages/workflow/src/Extensions/StringExtensions.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/unbound-method */ // import { createHash } from 'crypto'; +import { titleCase } from 'title-case'; import * as ExpressionError from '../ExpressionError'; import type { ExtensionMap } from './Extensions'; import CryptoJS from 'crypto-js'; @@ -189,10 +190,6 @@ function replaceSpecialChars(value: string) { return transliterate(value, { unknown: '?' }); } -function toTitleCase(value: string) { - return value.replace(/\w\S*/g, (v) => v.charAt(0).toLocaleUpperCase() + v.slice(1)); -} - function toSentenceCase(value: string) { let current = value.slice(); let buffer = ''; @@ -270,7 +267,7 @@ export const stringExtensions: ExtensionMap = { toWholeNumber: toInt, toSentenceCase, toSnakeCase, - toTitleCase, + toTitleCase: titleCase, urlDecode, urlEncode, quote, diff --git a/packages/workflow/test/ExpressionExtensions/StringExtensions.test.ts b/packages/workflow/test/ExpressionExtensions/StringExtensions.test.ts index 2b87a9d004a..b0fe0197bfa 100644 --- a/packages/workflow/test/ExpressionExtensions/StringExtensions.test.ts +++ b/packages/workflow/test/ExpressionExtensions/StringExtensions.test.ts @@ -143,16 +143,6 @@ describe('Data Transformation Functions', () => { expect(evaluate('={{ "i am a test".toSentenceCase() }}')).toEqual('I am a test'); }); - test('.toTitleCase should work on a string', () => { - expect( - evaluate( - '={{ "i am a test! i have multiple types of Punctuation. or do i?".toTitleCase() }}', - ), - ).toEqual('I Am A Test! I Have Multiple Types Of Punctuation. Or Do I?'); - expect(evaluate('={{ "i am a test!".toTitleCase() }}')).toEqual('I Am A Test!'); - expect(evaluate('={{ "i am a test".toTitleCase() }}')).toEqual('I Am A Test'); - }); - test('.extractUrl should work on a string', () => { expect( evaluate( diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 3d148b43253..46bc6cf4dee 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -905,6 +905,7 @@ importers: lodash.set: ^4.3.2 luxon: ~2.3.0 recast: ^0.21.5 + title-case: ^3.0.3 transliteration: ^2.3.5 xml2js: ^0.4.23 dependencies: @@ -918,6 +919,7 @@ importers: lodash.set: 4.3.2 luxon: 2.3.2 recast: 0.21.5 + title-case: 3.0.3 transliteration: 2.3.5 xml2js: 0.4.23 devDependencies: @@ -20433,7 +20435,6 @@ packages: resolution: {integrity: sha512-e1zGYRvbffpcHIrnuqT0Dh+gEJtDaxDSoG4JAIpq4oDFyooziLBIiYQv0GBT4FUAnUop5uZ1hiIAj7oAF6sOCA==} dependencies: tslib: 2.4.0 - dev: true /tlds/1.231.0: resolution: {integrity: sha512-L7UQwueHSkGxZHQBXHVmXW64oi+uqNtzFt2x6Ssk7NVnpIbw16CRs4eb/jmKOZ9t2JnqZ/b3Cfvo97lnXqKrhw==}