From 6d9a1b838228e8a131533d323280c38a15f81d0c Mon Sep 17 00:00:00 2001 From: Andrew Kingston Date: Fri, 25 Jun 2021 15:04:54 +0100 Subject: [PATCH] Remove lodash functions and recursive context mutation in string templates to increase performance --- packages/string-templates/src/index.cjs | 7 +++-- packages/string-templates/src/utilities.js | 32 ---------------------- 2 files changed, 4 insertions(+), 35 deletions(-) diff --git a/packages/string-templates/src/index.cjs b/packages/string-templates/src/index.cjs index 0b4515b815..7dbd788819 100644 --- a/packages/string-templates/src/index.cjs +++ b/packages/string-templates/src/index.cjs @@ -92,8 +92,6 @@ module.exports.processStringSync = (string, context) => { } // take a copy of input incase error const input = string - const clonedContext = removeNull(updateContext(cloneDeep(context))) - // remove any null/undefined properties if (typeof string !== "string") { throw "Cannot process non-string types." } @@ -103,7 +101,10 @@ module.exports.processStringSync = (string, context) => { const template = hbsInstance.compile(string, { strict: false, }) - return processors.postprocess(template(clonedContext)) + return processors.postprocess(template({ + now: new Date().toISOString(), + ...context, + })) } catch (err) { return removeHandlebarsStatements(input) } diff --git a/packages/string-templates/src/utilities.js b/packages/string-templates/src/utilities.js index e94b7f8ee7..d121511d89 100644 --- a/packages/string-templates/src/utilities.js +++ b/packages/string-templates/src/utilities.js @@ -11,38 +11,6 @@ module.exports.swapStrings = (string, start, length, swap) => { return string.slice(0, start) + swap + string.slice(start + length) } -// removes null and undefined -module.exports.removeNull = obj => { - obj = _(obj).omitBy(_.isUndefined).omitBy(_.isNull).value() - for (let [key, value] of Object.entries(obj)) { - // only objects - if (typeof value === "object" && !Array.isArray(value)) { - obj[key] = module.exports.removeNull(value) - } - } - return obj -} - -module.exports.updateContext = obj => { - if (obj.now == null) { - obj.now = new Date().toISOString() - } - function recurse(obj) { - for (let key of Object.keys(obj)) { - if (!obj[key]) { - continue - } - if (obj[key] instanceof Date) { - obj[key] = obj[key].toISOString() - } else if (typeof obj[key] === "object") { - obj[key] = recurse(obj[key]) - } - } - return obj - } - return recurse(obj) -} - module.exports.removeHandlebarsStatements = string => { let regexp = new RegExp(exports.FIND_HBS_REGEX) let matches = string.match(regexp)