| 123456789101112131415161718192021222324252627282930313233343536373839 | /** * @author Toru Nagashima <https://github.com/mysticatea> * See LICENSE file in root directory for full license. */"use strict"const { CALL, CONSTRUCT, READ } = require("eslint-utils")/** * Enumerate property names of a given object recursively. * @param {object} trackMap The map for APIs to enumerate. * @param {string[]|undefined} path The path to the current map. * @returns {IterableIterator<string>} The property names of the map. */function* enumeratePropertyNames(trackMap, path = []) {    for (const key of Object.keys(trackMap)) {        const value = trackMap[key]        if (typeof value !== "object") {            continue        }        path.push(key)        if (value[CALL]) {            yield `${path.join(".")}()`        }        if (value[CONSTRUCT]) {            yield `new ${path.join(".")}()`        }        if (value[READ]) {            yield path.join(".")        }        yield* enumeratePropertyNames(value, path)        path.pop()    }}module.exports = enumeratePropertyNames
 |