Skip to main content

Class: JSONPathEnvironment

Defined in: src/path/environment.ts:79

A configuration object from which JSONPath queries can be evaluated.

An environment is where you'd register custom function extensions or set the maximum recursion depth limit, for example.

Constructors​

new JSONPathEnvironment()​

new JSONPathEnvironment(options): JSONPathEnvironment

Defined in: src/path/environment.ts:129

Parameters​

options​

JSONPathEnvironmentOptions = {}

Environment configuration options.

Returns​

JSONPathEnvironment

Properties​

functionRegister​

functionRegister: Map<string, FilterFunction>

Defined in: src/path/environment.ts:122

A map of function names to objects implementing the FilterFunction interface. You are free to set or delete custom filter functions directly.


keysPattern​

readonly keysPattern: RegExp

Defined in: src/path/environment.ts:116

The pattern to use for the non-standard keys selector.


maxIntIndex​

readonly maxIntIndex: number

Defined in: src/path/environment.ts:94

The maximum number allowed when indexing or slicing an array. Defaults to 2**53 -1.


maxRecursionDepth​

readonly maxRecursionDepth: number

Defined in: src/path/environment.ts:106

The maximum number of objects and/or arrays the recursive descent selector can visit before a JSONPathRecursionLimitError is thrown.


minIntIndex​

readonly minIntIndex: number

Defined in: src/path/environment.ts:100

The minimum number allowed when indexing or slicing an array. Defaults to -(2**53) -1.


nondeterministic​

readonly nondeterministic: boolean

Defined in: src/path/environment.ts:111

If true, enable nondeterministic ordering when iterating JSON object data.


strict​

readonly strict: boolean

Defined in: src/path/environment.ts:88

Indicates if the environment should to be strict about its compliance with JSONPath standards.

Defaults to true. Setting strict to false currently has no effect. If/when we add non-standard features, the environment's strictness will control their availability.

Methods​

checkWellTypedness()​

checkWellTypedness(token, args): FilterExpression[]

Defined in: src/path/environment.ts:219

Check the well-typedness of a function's arguments at compile-time.

This method is called by the parser when parsing function calls. It is expected to throw a JSONPathTypeError if the function's parameters are not well-typed.

Override this if you want to deviate from the JSONPath Spec's function extension type system.

Parameters​

token​

Token

The Token starting the function call. Token.value will contain the name of the function.

args​

FilterExpression[]

One FilterExpression for each argument.

Returns​

FilterExpression[]


compile()​

compile(path): JSONPathQuery

Defined in: src/path/environment.ts:145

Parameters​

path​

string

A JSONPath query to parse.

Returns​

JSONPathQuery

A new JSONPathQuery object, bound to this environment.


entries()​

entries(obj): [string, JSONValue][]

Defined in: src/path/environment.ts:300

Return an array of key/values of the enumerable properties in obj.

If you want to introduce some nondeterminism to iterating JSON-like objects, do it here. The wildcard selector, descendent segment and filter selector all use this.environment.entries.

Parameters​

obj​

A JSON-like object.

Returns​

[string, JSONValue][]


lazyQuery()​

lazyQuery(path, value): IterableIterator<JSONPathNode>

Defined in: src/path/environment.ts:172

A lazy version of query which is faster and more memory efficient when querying some large datasets.

Parameters​

path​

string

A JSONPath query to parse and evaluate against value.

value​

JSONValue

Data to which path will be applied.

Returns​

IterableIterator<JSONPathNode>

A sequence of JSONPathNode objects resulting from applying path to value.


match()​

match(path, value): undefined | JSONPathNode

Defined in: src/path/environment.ts:188

Return a JSONPathNode instance for the first object found in value matching path.

Parameters​

path​

string

A JSONPath query.

value​

JSONValue

JSON-like data to which the query path will be applied.

Returns​

undefined | JSONPathNode

The first node in value matching path, or undefined if there are no matches.


query()​

query(path, value): JSONPathNodeList

Defined in: src/path/environment.ts:159

Parameters​

path​

string

A JSONPath query to parse and evaluate against value.

value​

JSONValue

Data to which path will be applied.

Returns​

JSONPathNodeList

The JSONPathNodeList resulting from applying path to value.


setupFilterFunctions()​

protected setupFilterFunctions(): void

Defined in: src/path/environment.ts:196

A hook for setting up the function register. You are encouraged to override this method in classes extending JSONPathEnvironment.

Returns​

void