@crikey/json-pointer v0.0.2
@crikey/json-pointer
Functions for handling JSON pointers rfc6901 and relative-json-pointer
See @crikey/json-pointer for full documentation.
API
Types
Contains types used to represent JSON pointers and segments
Guards
Contains typescript guards for identifying type information.
is_pointerReturns true if value is aPointeris_absoluteReturns true if value is anAbsolutePointeris_relativeReturns true if value is aRelativePointeris_relative_pureReturns true if value is aRelativeOnlyPointerorRelativePurePointeris_relative_irefReturns true if value is aRelativeIRefPointeris_relative_onlyReturns true if value is aRelativeOnlyPointer
Error classes
Classes used when throwing errors
pointer-decoding-errorError class thrown for pointer decoding errorspointer-encoding-errorError class thrown for pointer encoding errors
Creation
Functions used for creating paths from their constituent parts
pointerCreate aPointerfrom an optionalrelativenumber and a series of decoded segmentsabsoluteCreate anAbsolutePointerfrom a series of decoded segmentsrelativeCreate aRelativePointerfrom arelativenumber and a series of decoded segmentsrelative_irefCreate aRelativeIRefPointerfrom arelativenumberpointer_encodedCreate aPointerfrom an optionalrelativenumber and a series of encoded segmentsabsolute_encodedCreate anAbsolutePointerfrom a series of encoded segmentsrelative_encodedCreate aRelativePointerfrom arelativenumber and a series of encoded segments
Joining
Combining pointer components and segments
join_pointerJoin twoPointers togetherjoin_segmentsAppend decoded segments onto an existingPointerjoin_irefAppend an index reference onto aRelativeOnlyPointerjoin_encoded_segmentsAppend encoded segments onto an existingPointer
Encoding
Encode and decode path segments
segment_encodeEncode a given string segmentsegment_decodeDecode a given string segment
Splitting
Split paths into their constituent components/segments
splitSplit aPointerinto its constituent parts, decoding each segmentsplit_pureSplit aPurePointerinto its constituent parts, decoding each segmentsplit_absoluteSplit aAbsolutePointerinto its constituent parts, decoding each segmentsplit_relativeSplit aRelativePointerinto its constituent parts, decoding each segmentsplit_relative_pureSplit aRelativePurePointerinto its constituent parts, decoding each segmentsplit_relative_irefSplit aRelativeIRefPointerinto its constituent parts, decoding each segmentsplit_encodedSplit aPointerinto its constituent parts, leaving segments encodedsplit_encoded_pureSplit aPurePointerinto its constituent parts, leaving segments encodedsplit_encoded_absoluteSplit aAbsolutePointerinto its constituent parts, leaving segments encodedsplit_encoded_relativeSplit aRelativePointerinto its constituent parts, leaving segments encodedsplit_encoded_relative_pureSplit aRelativePurePointerinto its constituent parts, leaving segments encodedsplit_encoded_relative_irefSplit aRelativeIRefPointerinto its constituent parts, leaving segments encoded
Installation
# pnpm
$ pnpm add @crikey/json-pointer
# npm
$ npm add @crikey/json-pointer
# yarn
$ yarn add @crikey/json-pointerExample Usage
Guards
console.log(is_pointer('xyz')); // false
console.log(is_pointer('/xyz')); // true
console.log(is_pointer('123/xyz')); // true
console.log(is_absolute('123/xyz')); // false
console.log(is_relative('123/xyz')); // trueCreating
console.log(pointer('x','y','z')); // '/x/y/z'
console.log(pointer('~/')); // '/~0~1'
console.log(pointer(undefined,'x','y','z')); // '/x/y/z'
console.log(pointer(123,'x','y','z')); // '123/x/y/z'
console.log(relative(123,'x','y','z')); // '123/x/y/z'Joining
console.log(join_pointer('/a/b/c', '/x/y/z')); // '/x/y/z'
console.log(join_pointer('/a/b/c', '1/x/y/z')); // '/a/b/x/y/z'
console.log(join_segments('/a/b/c', 'x', 'y', 'z')); // '/a/b/c/x/y/z'
console.log(join_segments('/a/b/c', '~')); // '/a/b/c/~0'Splitting
console.log(split('/a/b/c')); // { segments: ['a', 'b', 'c'] }
console.log(split('123/a/b/c')); // { relative: 123, segments: ['a', 'b', 'c'] }
console.log(split('123#')); // { relative: 123, iref: true }