@zakgolba/jsonptr
v1.1.0
Published
Read and write values to locations referenced by JSON pointers as described in RFC 6901
Maintainers
Readme
jsonptr
Read and write values to locations referenced by JSON pointers as described in RFC 6901.
Usage
Installation
# If you're using npm
npm install @zakgolba/jsonptr --save
# If you're using yarn
yarn add @zakgolba/jsonptrAPI Documentation
assign(operand: object, pointer: string, value: any): boolean
Attempts to write a value to the location that the pointer references.
If the value is stored successfully, the cached pointers for the target provided will be invalidated.
Returns a boolean that represents whether or not the value was able to be written to the location that the pointer references.
import jsonptr from "@zakgolba/jsonptr";
const data = { hello: {} };
jsonptr.assign(data, "/hello/world", "Hello, world!");
console.log(data.hello.world);
// => Hello, world!
console.log(jsonptr.assign(data, "/invalid/reference", "Hello, world!"));
// => falsecompile(tokens: Iterable<string>): string
Compiles and returns a JSON pointer from an iterable of unescaped tokens.
import jsonptr from "@zakgolba/jsonptr";
console.log(jsonptr.compile(["hello", "world"]));
// => /hello/world
console.log(jsonptr.compile(["hello/world", "pointer"]));
// => /hello~1world/pointerderef(operand: object, pointer: string): unknown
Attempts to read and return the value at the location that the pointer references.
import jsonptr from "@zakgolba/jsonptr";
const data = { hello: { world: "Hello, world!" } };
console.log(jsonptr.deref(data, "/hello/world"));
// => Hello, world!
console.log(jsonptr.deref(data, "/this/points/nowhere"));
// => undefinedparse(pointer: string): IterableIterator<string>
Lazily parses and unescapes each token in the provided pointer.
import jsonptr from "@zakgolba/jsonptr";
console.log([...jsonptr.parse("/hello/world")]);
// => ["hello", "world"]
for (const token of jsonptr.parse("/hello~1world/pointer")) {
console.log(token);
}
// => hello/world
// => pointerLicense
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
