Detalhes do pacote

inspect-property

diegozoracky356.3kMIT0.0.7

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

inspect, property, api, methods

readme (leia-me)

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

```javascript 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" } } } }