Sha256: b615ee657399ae4a75bad7d629d2e12b33233b956c3cea42ff51528a5d58f7ad

Contents?: true

Size: 1.02 KB

Versions: 44

Compression:

Stored size: 1.02 KB

Contents

/**
 * @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

Version data entries

44 entries across 44 versions & 2 rubygems

Version Path
decidim-0.26.8 packages/eslint-config/node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-18.0.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.21.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.20.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.19.1 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.19.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.18.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.17.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.16.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.15.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.14.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.13.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.12.2 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.12.1 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.12.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.11.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.10.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.9.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.8.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js
govuk_publishing_components-17.7.0 node_modules/eslint-plugin-node/lib/util/enumerate-property-names.js