inspect-property

0.0.7 • Public • Published

inspect-property

Build Status npm npm

Inspects a Property and returns useful informations about it (e.g. nested properties, function inspection, property descriptor, value, type, constructor)

Installation

npm install inspect-property

Usage

inspectProperty(o, propertyName, { delimiter = '.', inspectFunction = true, inspectProperties = true, enumerability, inherited} = {} );

o: Object || Property || Value to be inspected.

propertyName: When passing as inspectProperty(parentObject, 'childPropertyName'), propertyDescriptor will be returned. Note that childPropertyName must be a string.

delimiter What will be used as a delimiter for the nested properties at properties keys. Default is ',' e.g. 'a.b.c'

inspectFunction If functions should be inspected. See inspect-function for details about the function inspection.

inspectProperties When set to false, properties will be a simple {key: value} object, without any inspection. The default value is true, returning {key: inspectProperty(value)}.

path An array representing the current property path. e.g. from the above example it will be [ 'a', 'b', 'c' ] for the 'c' property

parent The parent object of the current property. e.g. from the above example it will be the object { c: 'cValue' } for the 'c' property

enumerability: When inspecting nested properties, defines how it should look up regarding enumerability. The options are:

  • 'enumerable' (default)
  • 'nonenumerable'
  • 'all'

inherited: Determines if it should look up on the prototype chain when inspecting nested properties. The options are:

  • true (default)
  • false

Example

const inspectProperty = require('../');
 
const data = {
    a: {
        b: {
            c: (z = 'DefaultX', k) => z+k
        },
        d: 3,
        f: {
            g: 'h'
        }
    }
};
 
const result = inspectProperty(data);
 
////////////
// RESULT //
////////////
// Below is a JSON.stringify(result), so functions references are ommitted
 
{
    "value": {
        "a": {
            "b": {},
            "d": 3,
            "f": {
                "g": "h"
            }
        }
    },
    "type": "object",
    "constructor": {
        "name": "Object"
    },
    "properties": {
        "a": {
            "value": {
                "b": {},
                "d": 3,
                "f": {
                    "g": "h"
                }
            },
            "type": "object",
            "constructor": {
                "name": "Object"
            },
            "properties": {
                "b": {},
                "d": 3,
                "f": {
                    "g": "h"
                },
                "f.g": "h"
            }
        },
        "a.b": {
            "value": {},
            "type": "object",
            "constructor": {
                "name": "Object"
            },
            "properties": {}
        },
        "a.b.c": {
            "type": "function",
            "constructor": {
                "name": "Function"
            },
            "functionInspection": {
                "name": "c",
                "signature": "c(z = 'DefaultX', k);",
                "parameters": [
                    {
                        "parameter": "z",
                        "defaultValue": "DefaultX",
                        "declaration": "z = 'DefaultX'"
                    },
                    {
                        "parameter": "k",
                        "declaration": "k"
                    }
                ],
                "parametersNames": [
                    "z",
                    "k"
                ]
            },
            "properties": {}
        },
        "a.d": {
            "value": 3,
            "type": "number",
            "constructor": {
                "name": "Number"
            }
        },
        "a.f": {
            "value": {
                "g": "h"
            },
            "type": "object",
            "constructor": {
                "name": "Object"
            },
            "properties": {
                "g": "h"
            }
        },
        "a.f.g": {
            "value": "h",
            "type": "string",
            "constructor": {
                "name": "String"
            }
        }
    }
}

Package Sidebar

Install

npm i inspect-property

Weekly Downloads

60,364

Version

0.0.7

License

MIT

Unpacked Size

12.2 kB

Total Files

7

Last publish

Collaborators

  • diegozoracky