'use strict'; module.exports = function (cacheName, filterCallback) { let cacheKey = `_cacheFilteredProperties_${cacheName}`; return function getFilteredProperties(node) { if (node._clean === true && node[cacheKey] != null) { return node[cacheKey]; } else { let filteredProperties = Object.keys(node).filter((key) => filterCallback(key, node)); node[cacheKey] = filteredProperties; return filteredProperties; } }; };