@cookbook/dot-notation
TypeScript icon, indicating that this package has built-in type declarations

2.0.1 • Public • Published

@cookbook/dot-notation

Object readings and complex transformations made easy by using dot.notation.syntax[]

NPM Version CI Status Downloads Stats GitHub stars Known Vulnerabilities GitHub issues Awesome install size gzip size

Demo

Play around with dot-notation and experience the magic!

Edit @cookbook/dot-notation

Installation

npm install @cookbook/dot-notation --save
#or
yarn add @cookbook/dot-notation

How to use

Picking a value

import { pick } from '@cookbook/dot-notation';

const source = {
  person: {
    name: {
      firstName: 'John',
      lastName: 'Doe'
    },
    address: [
      {
        street: 'Infinite Loop',
        city: 'Cupertino',
        state: 'CA',
        postalCode: 95014,
        country: 'United States'
      },
    ]
  }
};

pick(source, 'person.name');
//output { firstName: 'John', lastName: 'Doe' }

pick(source, 'person.address[0].street');
//output "Infinite Loop"

Parsing an object

Conventional parsing

import { parse } from '@cookbook/dot-notation';

const source = {
  'person.name.firstName': 'John',
  'person.name.lastName': 'Doe',
  'person.address[].street': 'Infinite Loop',
  'person.address[].city': 'Cupertino',
  'person.address[].postalCode': 95014,
};

parse(source);

/* output
{
  person: {
    name: {
      firstName: 'John',
      lastName: 'Doe',
    },
    address: [
      {
        street: 'Infinite Loop',
        city: 'Cupertino',
        postalCode: 95014,
      },
    ],
  },
}
*/

With nested array

where [n] represents the array index position to insert the element

import { parse } from '@cookbook/dot-notation';

const source = {
  '[0].street': 'Infinite Loop',
  '[0].city': 'Cupertino',
  '[0].postalCode': 95014,
  '[1].street': '1600 Amphitheatre',
  '[1].city': 'Mountain View',
  '[1].postalCode': 94043,
  '[2][0]': 'hobbies',
  '[2][1][0]': ['coding'],
  '[2][1][1]': ['gaming'],
};

parse(source);

/* output
[
 {
  "postalCode": 95014,
  "city": "Cupertino",
  "street": "Infinite Loop"
 },
 {
  "postalCode": 94043,
  "city": "Mountain View",
  "street": "1600 Amphitheatre"
 },
 [
  "hobbies",
  [["coding"],["gaming"]]
 ]
]
*/

Parsing single key

import { parseKey } from '@cookbook/dot-notation';

const path = 'person.name';
const value = 'John Doe';

parseKey(path, value);

/* output
{
  person: {
    name: 'John Doe',
  },
}
*/

Readme

Keywords

Package Sidebar

Install

npm i @cookbook/dot-notation

Weekly Downloads

212

Version

2.0.1

License

MIT

Unpacked Size

58.3 kB

Total Files

50

Last publish

Collaborators

  • themgoncalves