UNPKG

typed-serverless

Version:

Helps you write a consistent Serverless Framework configuration in TypeScript

36 lines (35 loc) 1.25 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.traverseObject = void 0; /** * Traverse objects by visiting every node on a recursive walk. */ function traverseObject(object, visitor, visited = new Set(), key = null, path = [], parent = null) { if (visited.has(object)) return; visited.add(object); // only visit if its not our root object if (key && (Array.isArray(parent) || typeof parent === 'object') && parent !== null) { if (!visitor(object, parent, key, path)) return; // check if our object was changed by visitor... const newObject = parent[key]; if (newObject !== object && !visited.has(newObject)) { // visit our new object instead traverseObject(newObject, visitor, visited, key, path, parent); return; } } if (Array.isArray(object) || typeof object === 'object') { for (const key in object) { const node = object[key]; traverseObject(node, visitor, visited, key, [...path, key], object); } } else { traverseObject(object, visitor, visited, key, path, parent); } } exports.traverseObject = traverseObject;