@calmdownval/json-pointers
TypeScript icon, indicating that this package has built-in type declarations

1.0.2 • Public • Published

JSON Pointers

This module uses the ES modules feature and requires Node v8.15.0+. Please refer to Node's documentation to read more on how to enable this functionality in your environment.

Installation

npm i --save @calmdownval/json-pointers

Features

  • both absolute and relative pointers are available
  • relative pointers support referencing of array indexes and object keys
  • parse and toString methods provided
  • encodes and decodes tilda sequences (~0, ~1)
  • can convert between absolute and relative pointers
  • includes tests

Usage

import { AbsolutePointer, RelativePointer } from '@calmdownval/json-pointers';

const object = {
  some: {
    nested: {
      stuff: [ 'foo', 'bar' ],
      lorem: 'ipsum'
    }
  }
}

// create instances using new
const ptr0 = new AbsolutePointer([ 'some', 'nested', 'stuff', 1 ]);
ptr0.unref(object); // returns 'bar'

// or parse from string forms
const ptr1 = AbsolutePointer.parse('/some/nested/lorem');
ptr1.unref(object); // returns 'ipsum'

// regular stringify
ptr0.toString(); // returns '/some/nested/stuff/1'

// get a relative pointer between ptr0 and ptr1
ptr0.getRelativeTo(ptr1); // returns an instance of RelativePointer '2/lorem'

// by entering null path we specify to resolve the index or key
const ptr2 = new RelativePointer(3, null);

// relative pointers require an AbsolutePointer as the point of origin
ptr2.unref(ptr0, object); // returns 'some'

// parsing works the same
const ptr3 = RelativePointer.parse('1/stuff/0');
ptr3.unref(ptr1, object); // returns 'foo'

// get an absolute pointer from an origin
ptr3.getAbsoluteFrom(ptr1); // returns an instance of AbsolutePointer '/some/nested/stuff/1'

Package Sidebar

Install

npm i @calmdownval/json-pointers

Weekly Downloads

24

Version

1.0.2

License

GPL-3.0-or-later

Unpacked Size

44.5 kB

Total Files

9

Last publish

Collaborators

  • calmdownval