JSFiddle - React, Tailwind, and code Playground

by adelura

JavaScript

const CONFIGS = Object.freeze({
            feature: {
                messageCentre: {
                    enabled: Symbol("foo")
                }
            }
        });

        function getKeysForPath(path, level = CONFIGS) {
            if (path.length === 0) {
                return level;
            }

            path = path.slice();
            let key = path.shift();

            return getKeysForPath(path, level[key]);
        }

        function findPath(value, path = [], level = CONFIGS) {
            for (let key in level) {
                if (level[key] === value) {
                    path.push(key);

                    return path;
                } else {
                    let _path = path.slice();
                    _path.push(key);

                    let __p = findPath(value, _path, level[key]);

                    if (__p) {
                        return __p;
                    }
                }
            }

            return null;
        }