UNPKG

node-talisman

Version:

A npm package for running Thoughtwork's Talisman tool

26 lines (18 loc) 656 B
import isObject from "./isObject.js"; const replacePlaceholdersInTargetValue = value => { const replacePlaceholders = placeholders => { return Object.keys(placeholders).reduce((accum, placeholder) => accum.replace(new RegExp(`{${placeholder}}`, 'g'), placeholders[placeholder]), value); }; replacePlaceholders.toString = () => value; return replacePlaceholders; }; const createDeepProxy = obj => new Proxy(obj, { get(target, prop) { const value = target[prop] || prop; if (isObject(value)) { return createDeepProxy(value); } return replacePlaceholdersInTargetValue(value); } }); export default createDeepProxy;