json-p3 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/json-p3.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* json-p3 version 1.2.
|
|
2
|
+
* json-p3 version 1.2.1
|
|
3
3
|
* https://github.com/jg-rp/json-p3
|
|
4
4
|
*
|
|
5
5
|
* MIT License
|
|
@@ -1786,7 +1786,7 @@ class NameSelector extends JSONPathSelector {
|
|
|
1786
1786
|
resolve(nodes) {
|
|
1787
1787
|
const rv = [];
|
|
1788
1788
|
for (const node of nodes) {
|
|
1789
|
-
if (hasStringKey(node.value, this.name)) {
|
|
1789
|
+
if (!isArray(node.value) && hasStringKey(node.value, this.name)) {
|
|
1790
1790
|
rv.push(new JSONPathNode(node.value[this.name], node.location.concat(this.name), node.root));
|
|
1791
1791
|
}
|
|
1792
1792
|
}
|
|
@@ -1794,7 +1794,7 @@ class NameSelector extends JSONPathSelector {
|
|
|
1794
1794
|
}
|
|
1795
1795
|
*lazyResolve(nodes) {
|
|
1796
1796
|
for (const node of nodes) {
|
|
1797
|
-
if (hasStringKey(node.value, this.name)) {
|
|
1797
|
+
if (!isArray(node.value) && hasStringKey(node.value, this.name)) {
|
|
1798
1798
|
yield new JSONPathNode(node.value[this.name], node.location.concat(this.name), node.root);
|
|
1799
1799
|
}
|
|
1800
1800
|
}
|
|
@@ -1870,7 +1870,7 @@ class SliceSelector extends JSONPathSelector {
|
|
|
1870
1870
|
*lazyResolve(nodes) {
|
|
1871
1871
|
for (const node of nodes) {
|
|
1872
1872
|
if (!isArray(node.value)) continue;
|
|
1873
|
-
for (const [i, value] of this.
|
|
1873
|
+
for (const [i, value] of this.lazySlice(node.value, this.start, this.stop, this.step)) {
|
|
1874
1874
|
yield new JSONPathNode(value, node.location.concat(i), node.root);
|
|
1875
1875
|
}
|
|
1876
1876
|
}
|
|
@@ -1933,6 +1933,45 @@ class SliceSelector extends JSONPathSelector {
|
|
|
1933
1933
|
}
|
|
1934
1934
|
return slicedArray;
|
|
1935
1935
|
}
|
|
1936
|
+
|
|
1937
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
1938
|
+
*lazySlice(arr, start, stop, step) {
|
|
1939
|
+
if (!arr.length) return;
|
|
1940
|
+
|
|
1941
|
+
// Handle negative and undefined start values
|
|
1942
|
+
if (start === undefined || start === null) {
|
|
1943
|
+
start = step && step < 0 ? arr.length - 1 : 0;
|
|
1944
|
+
} else if (start < 0) {
|
|
1945
|
+
start = Math.max(arr.length + start, 0);
|
|
1946
|
+
} else {
|
|
1947
|
+
start = Math.min(start, arr.length - 1);
|
|
1948
|
+
}
|
|
1949
|
+
|
|
1950
|
+
// Handle negative and undefined stop values
|
|
1951
|
+
if (stop === undefined || stop === null) {
|
|
1952
|
+
stop = step && step < 0 ? -1 : arr.length;
|
|
1953
|
+
} else if (stop < 0) {
|
|
1954
|
+
stop = Math.max(arr.length + stop, -1);
|
|
1955
|
+
} else {
|
|
1956
|
+
stop = Math.min(stop, arr.length);
|
|
1957
|
+
}
|
|
1958
|
+
|
|
1959
|
+
// Perform the slice
|
|
1960
|
+
if (step === undefined) {
|
|
1961
|
+
// Default to a step of 1
|
|
1962
|
+
for (let i = start; i < stop; i += 1) {
|
|
1963
|
+
yield [i, arr[i]];
|
|
1964
|
+
}
|
|
1965
|
+
} else if (step > 0) {
|
|
1966
|
+
for (let i = start; i < stop; i += step) {
|
|
1967
|
+
yield [i, arr[i]];
|
|
1968
|
+
}
|
|
1969
|
+
} else if (step < 0) {
|
|
1970
|
+
for (let i = start; i > stop; i += step) {
|
|
1971
|
+
yield [i, arr[i]];
|
|
1972
|
+
}
|
|
1973
|
+
}
|
|
1974
|
+
}
|
|
1936
1975
|
}
|
|
1937
1976
|
class WildcardSelector extends JSONPathSelector {
|
|
1938
1977
|
constructor(environment, token) {
|
|
@@ -1999,8 +2038,6 @@ class RecursiveDescentSegment extends JSONPathSelector {
|
|
|
1999
2038
|
}
|
|
2000
2039
|
}
|
|
2001
2040
|
}
|
|
2002
|
-
|
|
2003
|
-
// console.log(JSON.stringify(rv.map((n: any) => n.value)));
|
|
2004
2041
|
return this.selector.resolve(rv);
|
|
2005
2042
|
}
|
|
2006
2043
|
*lazyResolve(nodes) {
|
|
@@ -2604,13 +2641,20 @@ class Parser {
|
|
|
2604
2641
|
return new InfixExpression(tok, left, operator, right);
|
|
2605
2642
|
}
|
|
2606
2643
|
parseGroupedExpression(stream) {
|
|
2607
|
-
stream.
|
|
2644
|
+
if (stream.peek.kind === TokenKind.RPAREN) {
|
|
2645
|
+
throw new JSONPathSyntaxError(`empty paren expression`, stream.current);
|
|
2646
|
+
}
|
|
2647
|
+
stream.next(); // eat open paren
|
|
2648
|
+
|
|
2608
2649
|
let expr = this.parseFilterExpression(stream);
|
|
2609
2650
|
stream.next();
|
|
2610
2651
|
while (stream.current.kind !== TokenKind.RPAREN) {
|
|
2611
2652
|
if (stream.current.kind === TokenKind.EOF) {
|
|
2612
2653
|
throw new JSONPathSyntaxError("unbalanced parentheses", stream.current);
|
|
2613
2654
|
}
|
|
2655
|
+
if (!BINARY_OPERATORS.has(stream.current.kind)) {
|
|
2656
|
+
throw new JSONPathSyntaxError(`expected an expression, found '${stream.current.value}'`, stream.current);
|
|
2657
|
+
}
|
|
2614
2658
|
expr = this.parseInfixExpression(stream, expr);
|
|
2615
2659
|
}
|
|
2616
2660
|
stream.expect(TokenKind.RPAREN);
|
|
@@ -2666,7 +2710,7 @@ class Parser {
|
|
|
2666
2710
|
msg = "end of expression";
|
|
2667
2711
|
break;
|
|
2668
2712
|
default:
|
|
2669
|
-
msg = `'${stream.current.value}`;
|
|
2713
|
+
msg = `'${stream.current.value}'`;
|
|
2670
2714
|
}
|
|
2671
2715
|
throw new JSONPathSyntaxError(`unexpected ${msg}`, stream.current);
|
|
2672
2716
|
}
|
|
@@ -3482,7 +3526,7 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
3482
3526
|
apply: apply
|
|
3483
3527
|
});
|
|
3484
3528
|
|
|
3485
|
-
const version = "1.2.
|
|
3529
|
+
const version = "1.2.1";
|
|
3486
3530
|
|
|
3487
3531
|
exports.DEFAULT_ENVIRONMENT = DEFAULT_ENVIRONMENT;
|
|
3488
3532
|
exports.FunctionExpressionType = FunctionExpressionType;
|
package/dist/json-p3.esm.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* json-p3 version 1.2.
|
|
2
|
+
* json-p3 version 1.2.1
|
|
3
3
|
* https://github.com/jg-rp/json-p3
|
|
4
4
|
*
|
|
5
5
|
* MIT License
|
|
@@ -1784,7 +1784,7 @@ class NameSelector extends JSONPathSelector {
|
|
|
1784
1784
|
resolve(nodes) {
|
|
1785
1785
|
const rv = [];
|
|
1786
1786
|
for (const node of nodes) {
|
|
1787
|
-
if (hasStringKey(node.value, this.name)) {
|
|
1787
|
+
if (!isArray(node.value) && hasStringKey(node.value, this.name)) {
|
|
1788
1788
|
rv.push(new JSONPathNode(node.value[this.name], node.location.concat(this.name), node.root));
|
|
1789
1789
|
}
|
|
1790
1790
|
}
|
|
@@ -1792,7 +1792,7 @@ class NameSelector extends JSONPathSelector {
|
|
|
1792
1792
|
}
|
|
1793
1793
|
*lazyResolve(nodes) {
|
|
1794
1794
|
for (const node of nodes) {
|
|
1795
|
-
if (hasStringKey(node.value, this.name)) {
|
|
1795
|
+
if (!isArray(node.value) && hasStringKey(node.value, this.name)) {
|
|
1796
1796
|
yield new JSONPathNode(node.value[this.name], node.location.concat(this.name), node.root);
|
|
1797
1797
|
}
|
|
1798
1798
|
}
|
|
@@ -1868,7 +1868,7 @@ class SliceSelector extends JSONPathSelector {
|
|
|
1868
1868
|
*lazyResolve(nodes) {
|
|
1869
1869
|
for (const node of nodes) {
|
|
1870
1870
|
if (!isArray(node.value)) continue;
|
|
1871
|
-
for (const [i, value] of this.
|
|
1871
|
+
for (const [i, value] of this.lazySlice(node.value, this.start, this.stop, this.step)) {
|
|
1872
1872
|
yield new JSONPathNode(value, node.location.concat(i), node.root);
|
|
1873
1873
|
}
|
|
1874
1874
|
}
|
|
@@ -1931,6 +1931,45 @@ class SliceSelector extends JSONPathSelector {
|
|
|
1931
1931
|
}
|
|
1932
1932
|
return slicedArray;
|
|
1933
1933
|
}
|
|
1934
|
+
|
|
1935
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
1936
|
+
*lazySlice(arr, start, stop, step) {
|
|
1937
|
+
if (!arr.length) return;
|
|
1938
|
+
|
|
1939
|
+
// Handle negative and undefined start values
|
|
1940
|
+
if (start === undefined || start === null) {
|
|
1941
|
+
start = step && step < 0 ? arr.length - 1 : 0;
|
|
1942
|
+
} else if (start < 0) {
|
|
1943
|
+
start = Math.max(arr.length + start, 0);
|
|
1944
|
+
} else {
|
|
1945
|
+
start = Math.min(start, arr.length - 1);
|
|
1946
|
+
}
|
|
1947
|
+
|
|
1948
|
+
// Handle negative and undefined stop values
|
|
1949
|
+
if (stop === undefined || stop === null) {
|
|
1950
|
+
stop = step && step < 0 ? -1 : arr.length;
|
|
1951
|
+
} else if (stop < 0) {
|
|
1952
|
+
stop = Math.max(arr.length + stop, -1);
|
|
1953
|
+
} else {
|
|
1954
|
+
stop = Math.min(stop, arr.length);
|
|
1955
|
+
}
|
|
1956
|
+
|
|
1957
|
+
// Perform the slice
|
|
1958
|
+
if (step === undefined) {
|
|
1959
|
+
// Default to a step of 1
|
|
1960
|
+
for (let i = start; i < stop; i += 1) {
|
|
1961
|
+
yield [i, arr[i]];
|
|
1962
|
+
}
|
|
1963
|
+
} else if (step > 0) {
|
|
1964
|
+
for (let i = start; i < stop; i += step) {
|
|
1965
|
+
yield [i, arr[i]];
|
|
1966
|
+
}
|
|
1967
|
+
} else if (step < 0) {
|
|
1968
|
+
for (let i = start; i > stop; i += step) {
|
|
1969
|
+
yield [i, arr[i]];
|
|
1970
|
+
}
|
|
1971
|
+
}
|
|
1972
|
+
}
|
|
1934
1973
|
}
|
|
1935
1974
|
class WildcardSelector extends JSONPathSelector {
|
|
1936
1975
|
constructor(environment, token) {
|
|
@@ -1997,8 +2036,6 @@ class RecursiveDescentSegment extends JSONPathSelector {
|
|
|
1997
2036
|
}
|
|
1998
2037
|
}
|
|
1999
2038
|
}
|
|
2000
|
-
|
|
2001
|
-
// console.log(JSON.stringify(rv.map((n: any) => n.value)));
|
|
2002
2039
|
return this.selector.resolve(rv);
|
|
2003
2040
|
}
|
|
2004
2041
|
*lazyResolve(nodes) {
|
|
@@ -2602,13 +2639,20 @@ class Parser {
|
|
|
2602
2639
|
return new InfixExpression(tok, left, operator, right);
|
|
2603
2640
|
}
|
|
2604
2641
|
parseGroupedExpression(stream) {
|
|
2605
|
-
stream.
|
|
2642
|
+
if (stream.peek.kind === TokenKind.RPAREN) {
|
|
2643
|
+
throw new JSONPathSyntaxError(`empty paren expression`, stream.current);
|
|
2644
|
+
}
|
|
2645
|
+
stream.next(); // eat open paren
|
|
2646
|
+
|
|
2606
2647
|
let expr = this.parseFilterExpression(stream);
|
|
2607
2648
|
stream.next();
|
|
2608
2649
|
while (stream.current.kind !== TokenKind.RPAREN) {
|
|
2609
2650
|
if (stream.current.kind === TokenKind.EOF) {
|
|
2610
2651
|
throw new JSONPathSyntaxError("unbalanced parentheses", stream.current);
|
|
2611
2652
|
}
|
|
2653
|
+
if (!BINARY_OPERATORS.has(stream.current.kind)) {
|
|
2654
|
+
throw new JSONPathSyntaxError(`expected an expression, found '${stream.current.value}'`, stream.current);
|
|
2655
|
+
}
|
|
2612
2656
|
expr = this.parseInfixExpression(stream, expr);
|
|
2613
2657
|
}
|
|
2614
2658
|
stream.expect(TokenKind.RPAREN);
|
|
@@ -2664,7 +2708,7 @@ class Parser {
|
|
|
2664
2708
|
msg = "end of expression";
|
|
2665
2709
|
break;
|
|
2666
2710
|
default:
|
|
2667
|
-
msg = `'${stream.current.value}`;
|
|
2711
|
+
msg = `'${stream.current.value}'`;
|
|
2668
2712
|
}
|
|
2669
2713
|
throw new JSONPathSyntaxError(`unexpected ${msg}`, stream.current);
|
|
2670
2714
|
}
|
|
@@ -3480,6 +3524,6 @@ var index = /*#__PURE__*/Object.freeze({
|
|
|
3480
3524
|
apply: apply
|
|
3481
3525
|
});
|
|
3482
3526
|
|
|
3483
|
-
const version = "1.2.
|
|
3527
|
+
const version = "1.2.1";
|
|
3484
3528
|
|
|
3485
3529
|
export { DEFAULT_ENVIRONMENT, FunctionExpressionType, JSONPatch, JSONPatchError, JSONPatchTestFailure, JSONPath, JSONPathEnvironment, JSONPathError, JSONPathIndexError, JSONPathLexerError, JSONPathNode, JSONPathNodeList, JSONPathRecursionLimitError, JSONPathSyntaxError, JSONPathTypeError, JSONPointer, Nothing, RelativeJSONPointer, Token, TokenKind, UNDEFINED, apply, compile, index as jsonpatch, index$1 as jsonpath, index$3 as jsonpointer, lazyQuery, query, resolve, version };
|
package/dist/json-p3.iife.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/*
|
|
2
|
-
* json-p3 version 1.2.
|
|
2
|
+
* json-p3 version 1.2.1
|
|
3
3
|
* https://github.com/jg-rp/json-p3
|
|
4
4
|
*
|
|
5
5
|
* MIT License
|
|
@@ -1787,7 +1787,7 @@ var json_p3 = (function (exports) {
|
|
|
1787
1787
|
resolve(nodes) {
|
|
1788
1788
|
const rv = [];
|
|
1789
1789
|
for (const node of nodes) {
|
|
1790
|
-
if (hasStringKey(node.value, this.name)) {
|
|
1790
|
+
if (!isArray(node.value) && hasStringKey(node.value, this.name)) {
|
|
1791
1791
|
rv.push(new JSONPathNode(node.value[this.name], node.location.concat(this.name), node.root));
|
|
1792
1792
|
}
|
|
1793
1793
|
}
|
|
@@ -1795,7 +1795,7 @@ var json_p3 = (function (exports) {
|
|
|
1795
1795
|
}
|
|
1796
1796
|
*lazyResolve(nodes) {
|
|
1797
1797
|
for (const node of nodes) {
|
|
1798
|
-
if (hasStringKey(node.value, this.name)) {
|
|
1798
|
+
if (!isArray(node.value) && hasStringKey(node.value, this.name)) {
|
|
1799
1799
|
yield new JSONPathNode(node.value[this.name], node.location.concat(this.name), node.root);
|
|
1800
1800
|
}
|
|
1801
1801
|
}
|
|
@@ -1871,7 +1871,7 @@ var json_p3 = (function (exports) {
|
|
|
1871
1871
|
*lazyResolve(nodes) {
|
|
1872
1872
|
for (const node of nodes) {
|
|
1873
1873
|
if (!isArray(node.value)) continue;
|
|
1874
|
-
for (const [i, value] of this.
|
|
1874
|
+
for (const [i, value] of this.lazySlice(node.value, this.start, this.stop, this.step)) {
|
|
1875
1875
|
yield new JSONPathNode(value, node.location.concat(i), node.root);
|
|
1876
1876
|
}
|
|
1877
1877
|
}
|
|
@@ -1934,6 +1934,45 @@ var json_p3 = (function (exports) {
|
|
|
1934
1934
|
}
|
|
1935
1935
|
return slicedArray;
|
|
1936
1936
|
}
|
|
1937
|
+
|
|
1938
|
+
// eslint-disable-next-line sonarjs/cognitive-complexity
|
|
1939
|
+
*lazySlice(arr, start, stop, step) {
|
|
1940
|
+
if (!arr.length) return;
|
|
1941
|
+
|
|
1942
|
+
// Handle negative and undefined start values
|
|
1943
|
+
if (start === undefined || start === null) {
|
|
1944
|
+
start = step && step < 0 ? arr.length - 1 : 0;
|
|
1945
|
+
} else if (start < 0) {
|
|
1946
|
+
start = Math.max(arr.length + start, 0);
|
|
1947
|
+
} else {
|
|
1948
|
+
start = Math.min(start, arr.length - 1);
|
|
1949
|
+
}
|
|
1950
|
+
|
|
1951
|
+
// Handle negative and undefined stop values
|
|
1952
|
+
if (stop === undefined || stop === null) {
|
|
1953
|
+
stop = step && step < 0 ? -1 : arr.length;
|
|
1954
|
+
} else if (stop < 0) {
|
|
1955
|
+
stop = Math.max(arr.length + stop, -1);
|
|
1956
|
+
} else {
|
|
1957
|
+
stop = Math.min(stop, arr.length);
|
|
1958
|
+
}
|
|
1959
|
+
|
|
1960
|
+
// Perform the slice
|
|
1961
|
+
if (step === undefined) {
|
|
1962
|
+
// Default to a step of 1
|
|
1963
|
+
for (let i = start; i < stop; i += 1) {
|
|
1964
|
+
yield [i, arr[i]];
|
|
1965
|
+
}
|
|
1966
|
+
} else if (step > 0) {
|
|
1967
|
+
for (let i = start; i < stop; i += step) {
|
|
1968
|
+
yield [i, arr[i]];
|
|
1969
|
+
}
|
|
1970
|
+
} else if (step < 0) {
|
|
1971
|
+
for (let i = start; i > stop; i += step) {
|
|
1972
|
+
yield [i, arr[i]];
|
|
1973
|
+
}
|
|
1974
|
+
}
|
|
1975
|
+
}
|
|
1937
1976
|
}
|
|
1938
1977
|
class WildcardSelector extends JSONPathSelector {
|
|
1939
1978
|
constructor(environment, token) {
|
|
@@ -2000,8 +2039,6 @@ var json_p3 = (function (exports) {
|
|
|
2000
2039
|
}
|
|
2001
2040
|
}
|
|
2002
2041
|
}
|
|
2003
|
-
|
|
2004
|
-
// console.log(JSON.stringify(rv.map((n: any) => n.value)));
|
|
2005
2042
|
return this.selector.resolve(rv);
|
|
2006
2043
|
}
|
|
2007
2044
|
*lazyResolve(nodes) {
|
|
@@ -2605,13 +2642,20 @@ var json_p3 = (function (exports) {
|
|
|
2605
2642
|
return new InfixExpression(tok, left, operator, right);
|
|
2606
2643
|
}
|
|
2607
2644
|
parseGroupedExpression(stream) {
|
|
2608
|
-
stream.
|
|
2645
|
+
if (stream.peek.kind === TokenKind.RPAREN) {
|
|
2646
|
+
throw new JSONPathSyntaxError(`empty paren expression`, stream.current);
|
|
2647
|
+
}
|
|
2648
|
+
stream.next(); // eat open paren
|
|
2649
|
+
|
|
2609
2650
|
let expr = this.parseFilterExpression(stream);
|
|
2610
2651
|
stream.next();
|
|
2611
2652
|
while (stream.current.kind !== TokenKind.RPAREN) {
|
|
2612
2653
|
if (stream.current.kind === TokenKind.EOF) {
|
|
2613
2654
|
throw new JSONPathSyntaxError("unbalanced parentheses", stream.current);
|
|
2614
2655
|
}
|
|
2656
|
+
if (!BINARY_OPERATORS.has(stream.current.kind)) {
|
|
2657
|
+
throw new JSONPathSyntaxError(`expected an expression, found '${stream.current.value}'`, stream.current);
|
|
2658
|
+
}
|
|
2615
2659
|
expr = this.parseInfixExpression(stream, expr);
|
|
2616
2660
|
}
|
|
2617
2661
|
stream.expect(TokenKind.RPAREN);
|
|
@@ -2667,7 +2711,7 @@ var json_p3 = (function (exports) {
|
|
|
2667
2711
|
msg = "end of expression";
|
|
2668
2712
|
break;
|
|
2669
2713
|
default:
|
|
2670
|
-
msg = `'${stream.current.value}`;
|
|
2714
|
+
msg = `'${stream.current.value}'`;
|
|
2671
2715
|
}
|
|
2672
2716
|
throw new JSONPathSyntaxError(`unexpected ${msg}`, stream.current);
|
|
2673
2717
|
}
|
|
@@ -3483,7 +3527,7 @@ var json_p3 = (function (exports) {
|
|
|
3483
3527
|
apply: apply
|
|
3484
3528
|
});
|
|
3485
3529
|
|
|
3486
|
-
const version = "1.2.
|
|
3530
|
+
const version = "1.2.1";
|
|
3487
3531
|
|
|
3488
3532
|
exports.DEFAULT_ENVIRONMENT = DEFAULT_ENVIRONMENT;
|
|
3489
3533
|
exports.FunctionExpressionType = FunctionExpressionType;
|
package/dist/json-p3.iife.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var json_p3=function(e){"use strict";class t extends Error{constructor(e,t){super(e),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathError",this.message=n(e,t)}}function n(e,t){return t.input.length<=9?`${e} ('${t.input}':${t.index})`:t.index>t.input.length-5?`${e} ('${t.input.slice(t.input.length-9)}':${t.index})`:t.index-4<0?`${e} ('${t.input.slice(0,9)}':${t.index})`:`${e} ('${t.input.slice(t.index-4,t.index+5)}':${t.index})`}class r extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathLexerError",this.message=n(e,t)}}class s extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathTypeError",this.message=n(e,t)}}class o extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathIndexError",this.message=n(e,t)}}class i extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="UndefinedFilterFunctionError",this.message=n(e,t)}}class a extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathSyntaxError",this.message=n(e,t)}}class h extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathRecursionLimitError",this.message=n(e,t)}}function c(e){return Array.isArray(e)}function u(e){const t=typeof e;return null!==e&&"object"===t||"function"===t}function l(e){return"string"==typeof e}function p(e){return"number"==typeof e}function f(e,t){if(e===t)return!0;if(Array.isArray(e)){if(Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!f(e[n],t[n]))return!1;return!0}return!1}if(u(e)&&u(t)){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const r of n)if(!f(e[r],t[r]))return!1;return!0}return!1}let d=function(e){return e.ValueType="ValueType",e.LogicalType="LogicalType",e.NodesType="NodesType",e}({});class m extends Error{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerError"}}class g extends m{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerResolutionError"}}class v extends g{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerIndexError"}}class w extends g{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerKeyError"}}class y extends m{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerSyntaxError"}}class x extends g{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerTypeError"}}const O=Symbol.for("jsonpointer.undefined");class E{#e;constructor(e){this.tokens=this.parse(e),this.#e=E.encode(this.tokens)}static encode(e){return e.length?"/"+e.map((e=>e.replaceAll("~","~0").replaceAll("/","~1"))).join("/"):""}resolve(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:O;try{return this.tokens.reduce(this.getItem.bind(this),e)}catch(e){if(e instanceof g&&t!==O)return t;throw e}}resolveWithParent(e){if(!this.tokens.length)return[O,this.resolve(e)];const t=this.tokens.slice(0,this.tokens.length-1).reduce(this.getItem.bind(this),e);try{return[t,this.getItem(t,this.tokens[this.tokens.length-1],this.tokens.length-1)]}catch(e){if(e instanceof v||e instanceof w)return[t,O];throw e}}toString(){return this.#e}isRelativeTo(e){return e.tokens.length<this.tokens.length&&this.tokens.slice(0,e.tokens.length).every(((t,n)=>t===e.tokens[n]))}parse(e){if(e.length&&!e.startsWith("/"))throw new y(`"${e}" pointers must start with a slash or be the empty string`);return e.split("/").map((e=>e.replaceAll("~1","/").replaceAll("~0","~"))).slice(1)}getItem(e,t,n){if(c(e)){if("length"!==t&&Object.hasOwn(e,t))return e[Number(t)];if(t.startsWith("#")){const r=t.slice(1);if(k.test(r)&&Object.hasOwn(e,r))return Number(r);throw new v(`index out of range '${E.encode(this.tokens.slice(0,n+1))}'`)}throw new v(`index out of range '${E.encode(this.tokens.slice(0,n+1))}'`)}if(u(e)){if(Object.hasOwn(e,t))return e[t];if(t.startsWith("#")&&Object.hasOwn(e,t.slice(1)))return t.slice(1);throw new w(`no such property '${E.encode(this.tokens.slice(0,n+1))}'`)}throw new x(`found primitive value, expected an object '${E.encode(this.tokens.slice(0,n+1))}'`)}_join(e){if(!l(e))throw new x("join() requires string arguments, found "+typeof e);if(e.startsWith("/"))return new E(e);const t=this.tokens.concat(e.split("/").map((e=>e.replaceAll("~1","/").replaceAll("~0","~"))));return new E(E.encode(t))}join(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(!t.length)return this;let r=this;for(const e of t)r=r._join(e);return r}exists(e){try{this.resolve(e)}catch(e){if(e instanceof g)return!1;throw e}return!0}parent(){return this.tokens.length?new E(E.encode(this.tokens.slice(0,this.tokens.length-1))):this}to(e){return(l(e)?new S(e):e).to(this)}}const N=/(?<ORIGIN>\d+)(?<INDEX_G>(?<SIGN>[+-])(?<INDEX>\d))?(?<POINTER>.*)/s,k=/(0|[1-9][0-9]*)/;class S{constructor(e){[this.origin,this.index,this.pointer]=this.parse(e)}toString(){const e=this.index>0?"+":"",t=0===this.index?"":`${e}${this.index}`;return`${this.origin}${t}${this.pointer}`}to(e){const t=l(e)?new E(e):e;if(this.origin>t.tokens.length)throw new v(`origin (${this.origin}) exceeds root (${t.tokens.length})`);const n=this.origin<1?t.tokens.slice():t.tokens.slice(0,-this.origin);if(this.index&&n.length&&this.isIntLike(n.at(-1))){const e=Number(n.at(-1))+this.index;if(e<0)throw new v(`index offset out of range (${e})`);n[n.length-1]=String(e)}return this.pointer instanceof E?n.push(...this.pointer.tokens):n[n.length-1]=`#${n[n.length-1]}`,new E(E.encode(n))}parse(e){const t=N.exec(e);if(!t||!t.groups)throw new y("failed to parse relative pointer");const n=this.parseInt(t.groups.ORIGIN);let r=0;if(t.groups.INDEX_G){if(r=this.parseInt(t.groups.INDEX),0===r)throw new y("index offset can't be zero");"-"===t.groups.SIGN&&(r=-r)}return"#"===t.groups.POINTER?[n,r,"#"]:[n,r,new E(t.groups.POINTER)]}parseInt(e){if(e.startsWith("0")&&e.length>1)throw new y("unexpected leading zero");if(k.test(e))return Number(e);throw new y(`expected an integer, found '${e}'`)}isIntLike(e){return!(void 0!==e&&!p(e))||k.test(e)}}function T(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:O;return new E(e).resolve(t,n)}var R=Object.freeze({__proto__:null,JSONPointer:E,JSONPointerError:m,JSONPointerIndexError:v,JSONPointerKeyError:w,JSONPointerResolutionError:g,JSONPointerSyntaxError:y,JSONPointerTypeError:x,RelativeJSONPointer:S,UNDEFINED:O,resolve:T});class ${constructor(e,t,n){this.value=e,this.location=t,this.root=n}get path(){return"$"+this.location.map((e=>l(e)?`['${e}']`:`[${e}]`)).join("")}toPointer(){return this.location.length?new E(E.encode(this.location.map(String))):new E("")}}class b{constructor(e){this.nodes=e}[Symbol.iterator](){return this.nodes[Symbol.iterator]()}empty(){return 0===this.nodes.length}values(){return this.nodes.map((e=>e.value))}valuesOrSingular(){return 1===this.nodes.length?this.nodes[0].value:this.nodes.map((e=>e.value))}locations(){return this.nodes.map((e=>e.location))}paths(){return this.nodes.map((e=>e.path))}pointers(){return this.nodes.map((e=>e.toPointer()))}get length(){return this.nodes.length}}const P=Symbol.for("jsonpath.nothing");function _(e,t){return u(e)&&Object.hasOwn(e,t)}class I{constructor(e){this.token=e}}class L extends I{}class A extends L{evaluate(){return null}toString(){return"null"}}class K extends L{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return String(this.value)}}class M extends L{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return JSON.stringify(this.value)}}class j extends L{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return String(this.value)}}class F extends I{constructor(e,t,n){super(e),this.token=e,this.operator=t,this.right=n}evaluate(e){if("!"===this.operator){const t=this.right.evaluate(e);return t instanceof b?0===t.nodes.length:!Q(t)}throw new s(`unknown operator '${this.operator}'`,this.token)}toString(){return`${this.operator}${this.right.toString()}`}}class J extends I{constructor(e,t,n,r){super(e),this.token=e,this.left=t,this.operator=n,this.right=r,this.logical="&&"===n||"||"===n}evaluate(e){let t=this.left.evaluate(e);!this.logical&&t instanceof b&&1===t.nodes.length&&(t=t.nodes[0].value);let n=this.right.evaluate(e);return!this.logical&&n instanceof b&&1===n.nodes.length&&(n=n.nodes[0].value),"&&"===this.operator?Q(t)&&Q(n):"||"===this.operator?Q(t)||Q(n):V(t,this.operator,n)}toString(){return this.logical?`(${this.left.toString()} ${this.operator} ${this.right.toString()})`:`${this.left.toString()} ${this.operator} ${this.right.toString()}`}}class z extends I{constructor(e,t){super(e),this.token=e,this.expression=t}evaluate(e){const t=this.expression.evaluate(e);return t instanceof b?t.nodes.length>0:Q(t)}toString(){return this.expression.toString()}}class C extends I{constructor(e,t){super(e),this.token=e,this.path=t}}class D extends C{evaluate(e){return e.lazy?new b(Array.from(this.path.lazyQuery(e.currentValue))):this.path.query(e.currentValue)}toString(){return`@${this.path.toString().slice(1)}`}}class U extends C{evaluate(e){return e.lazy?new b(Array.from(this.path.lazyQuery(e.rootValue))):this.path.query(e.rootValue)}toString(){return this.path.toString()}}class G extends I{constructor(e,t,n){super(e),this.token=e,this.name=t,this.args=n}evaluate(e){const t=e.environment.functionRegister.get(this.name);if(!t)throw new i(`filter function '${this.name}' is undefined`,this.token);const n=this.args.map((t=>t.evaluate(e))).map(((e,n)=>t.argTypes[n]!==d.NodesType&&e instanceof b?this.unpack_node_list(e):e));return t.call(...n)}toString(){return`${this.name}(${this.args.map((e=>e.toString())).join(", ")})`}unpack_node_list(e){switch(e.length){case 0:return P;case 1:return e.nodes[0].value;default:return e}}}function Q(e){return!(e instanceof b&&e.empty())&&!("boolean"==typeof e&&!1===e)}function V(e,t,n){switch(t){case"==":return W(e,n);case"!=":return!W(e,n);case"<":return B(e,n);case">":return B(n,e);case">=":return B(n,e)||W(e,n);case"<=":return B(e,n)||W(e,n);default:return!1}}function W(e,t){if(t instanceof b&&([e,t]=[t,e]),e instanceof b){if(t instanceof b){if(e.empty()&&t.empty())return!0;if(1===e.nodes.length&&1===t.nodes.length)return f(e.nodes[0].value,t.nodes[0].value)}return e.empty()?t===P:1===e.nodes.length&&f(e.nodes[0].value,t)}return e===P&&t===P||f(e,t)}function B(e,t){return!!(l(e)&&l(t)||p(e)&&p(t))&&e<t}var q=Object.freeze({__proto__:null,BooleanLiteral:K,FilterExpression:I,FilterExpressionLiteral:L,FunctionExtension:G,InfixExpression:J,JSONPathQuery:C,LogicalExpression:z,NullLiteral:A,NumberLiteral:j,PrefixExpression:F,RelativeQuery:D,RootQuery:U,StringLiteral:M,compare:V});class Y{argTypes=[d.NodesType];returnType=d.ValueType;call(e){return e.length}}class X{argTypes=[d.ValueType];returnType=d.ValueType;call(e){return c(e)||l(e)?e.length:u(e)?Object.keys(e).length:P}}class Z extends Map{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:128,t=arguments.length>1?arguments[1]:void 0;void 0!==t?super(t):super(),this.maxSize=e}get(e){const t=super.get(e);return this.has(e)&&(this.delete(e),this.set(e,t)),t}set(e,t){return this.has(e)?this.delete(e):this.size>=this.maxSize&&this.delete(this.first()),super.set(e,t)}first(){return this.keys().next().value}}class H{argTypes=[d.ValueType,d.ValueType];returnType=d.LogicalType;#t;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=e,this.cacheSize=e.cacheSize??10,this.throwErrors=e.throwErrors??!1,this.#t=new Z(this.cacheSize)}call(e,t){if(this.cacheSize>0){const n=this.#t.get(t);if(n)try{return n.test(e)}catch(e){if(this.throwErrors)throw e;return!1}}try{const n=new RegExp(this.fullMatch(t),"u");return this.cacheSize>0&&this.#t.set(t,n),n.test(e)}catch(e){if(this.throwErrors)throw e;return!1}}fullMatch(e){const t=[];return e.startsWith("^")||t.push("^"),t.push(e),e.endsWith("$")||t.push("$"),t.join("")}}class ee{argTypes=[d.ValueType,d.ValueType];returnType=d.LogicalType;#t;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=e,this.cacheSize=e.cacheSize??10,this.throwErrors=e.throwErrors??!1,this.#t=new Z(this.cacheSize)}call(e,t){if(this.cacheSize>0){const n=this.#t.get(t);if(n)try{return!!e.match(n)}catch(e){if(this.throwErrors)throw e;return!1}}try{const n=new RegExp(t,"u");return this.cacheSize>0&&this.#t.set(t,n),!!e.match(n)}catch(e){if(this.throwErrors)throw e;return!1}}}class te{argTypes=[d.NodesType];returnType=d.ValueType;call(e){return 1===e.length?e.nodes[0].value:P}}let ne=function(e){return e.AND="TOKEN_AND",e.COLON="TOKEN_COLON",e.COMMA="TOKEN_COMMA",e.CURRENT="TOKEN_CURRENT_NODE",e.DDOT="TOKEN_DDOT",e.DOT="TOKEN_DOT",e.DOUBLE_QUOTE_STRING="TOKEN_DOUBLE_QUOTE_STRING",e.EOF="TOKEN_EOF",e.EQ="TOKEN_EQ",e.ERROR="TOKEN_ERROR",e.FALSE="TOKEN_FALSE",e.FILTER="TOKEN_FILTER_START",e.FUNCTION="TOKEN_FUNCTION",e.GE="TOKEN_GE",e.GT="TOKEN_GT",e.INDEX="TOKEN_INDEX",e.KEY="TOKEN_KEY",e.KEYS="TOKEN_KEYS",e.LBRACKET="TOKEN_LBRACKET",e.LE="TOKEN_LE",e.LG="TOKEN_LG",e.LPAREN="TOKEN_LPAREN",e.LT="TOKEN_LT",e.NAME="TOKEN_NAME",e.NE="TOKEN_NE",e.NOT="TOKEN_NOT",e.NULL="TOKEN_NULL",e.NUMBER="NUMBER",e.OR="TOKEN_OR",e.RBRACKET="TOKEN_RBRACKET",e.ROOT="TOKEN_ROOT",e.RPAREN="TOKEN_RPAREN",e.SINGLE_QUOTE_STRING="TOKEN_SINGLE_QUOTE_STRING",e.TRUE="TOKEN_TRUE",e.WILD="TOKEN_WILD",e}({});class re{constructor(e,t,n,r){this.kind=e,this.value=t,this.index=n,this.input=r}}new re(ne.EOF,"",-1,"");class se{#n=0;constructor(e){this.tokens=e}get current(){return this.tokens[this.#n]}get peek(){return this.#n>=this.tokens.length-1?this.tokens[this.tokens.length-1]:this.tokens[this.#n+1]}next(){const e=this.current;return this.#n+=1,e}backup(){this.#n>0&&(this.#n-=1)}expect(e){if(this.current.kind!==e)throw new a(`expected token '${e}', found '${this.current.kind}'`,this.current)}expectPeek(e){const t=this.peek;if(t.kind!==e)throw new a(`expected token '${e}', found '${t.kind}'`,t)}}const oe=/e[+-]?\d+/y,ie=/[a-z][a-z_0-9]*/y,ae=/-?\d+/y,he=/-?[0-9]+/y,ce=/[\u0080-\uFFFFa-zA-Z_][\u0080-\uFFFFa-zA-Z0-9_-]*/y,ue=new Set([" ","\n","\t","\r"]);class le{filterLevel=0;parenStack=[];tokens=[];#r=0;#n=0;constructor(e,t){this.environment=e,this.path=t}get pos(){return this.#n}get start(){return this.#r}run(){let e=fe;for(;e;)e=e(this)}emit(e){this.tokens.push(new re(e,this.path.slice(this.#r,this.#n),this.#r,this.path)),this.#r=this.#n}next(){if(this.#n>=this.path.length)return"";const e=this.path[this.#n];return this.#n+=1,e}ignore(){this.#r=this.#n}backup(){if(this.#n<=this.#r){const e="can't backup beyond start";throw new r(e,new re(ne.ERROR,e,this.#n,this.path))}this.#n-=1}peek(){const e=this.next();return e&&this.backup(),e}accept(e){const t=this.next();return!!e.has(t)||(t&&this.backup(),!1)}acceptMatch(e){const t=this.next();return!!e.test(t)||(t&&this.backup(),!1)}acceptRun(e){let t=!1,n=this.next();for(;e.has(n);)n=this.next(),t=!0;return n&&this.backup(),t}acceptMatchRun(e){e.lastIndex=this.#n;const t=e.exec(this.path);return e.lastIndex=0,!!t&&(this.#n+=t[0].length,!0)}ignoreWhitespace(){if(this.#n!==this.#r){const e=`must emit or ignore before consuming whitespace ('${this.path.slice(this.#r,this.#n)}':${this.pos})`;throw new r(e,new re(ne.ERROR,e,this.pos,this.path))}return!!this.acceptRun(ue)&&(this.ignore(),!0)}error(e){this.tokens.push(new re(ne.ERROR,e,this.#n,this.path))}}function pe(e,t){const[n,r]=function(e,t){const n=new le(e,t);return[n,n.tokens]}(e,t);if(n.run(),r.length&&r[r.length-1].kind===ne.ERROR)throw new a(r[r.length-1].value,r[r.length-1]);return r}function fe(e){const t=e.next();return"$"!==t?(e.backup(),e.error(`expected '$', found '${t}'`),null):(e.emit(ne.ROOT),de)}function de(e){e.ignoreWhitespace()&&!e.peek()&&e.error("trailing whitespace");const t=e.next();switch(t){case"":return e.emit(ne.EOF),null;case".":return"."===e.peek()?(e.next(),e.emit(ne.DDOT),me):ge;case"[":return e.emit(ne.LBRACKET),ve;default:return e.backup(),e.filterLevel?we:(e.error(`expected '.', '..' or a bracketed selection, found '${t}'`),null)}}function me(e){if(e.acceptMatchRun(ce))return e.emit(ne.NAME),de;if(!e.environment.strict&&e.acceptMatchRun(e.environment.keysPattern))return e.emit(ne.KEYS),de;const t=e.next();switch(t){case"":return e.error("bald descendant segment"),null;case"*":return e.emit(ne.WILD),de;case"[":return e.emit(ne.LBRACKET),ve;default:return e.backup(),e.error(`unexpected descendent selection token '${t}'`),null}}function ge(e){if(e.ignore(),e.ignoreWhitespace())return e.error("unexpected whitespace after dot"),null;if(!e.environment.strict&&e.acceptMatchRun(e.environment.keysPattern))return e.emit(ne.KEYS),de;if(e.acceptMatchRun(ce))return e.emit(ne.NAME),de;const t=e.next();return"*"===t?(e.emit(ne.WILD),de):(e.backup(),e.error(`unexpected shorthand selector '${t}'`),null)}function ve(e){for(;;){if(e.ignoreWhitespace(),e.acceptMatchRun(ae)){e.emit(ne.INDEX);continue}if(!e.environment.strict&&e.acceptMatchRun(e.environment.keysPattern)){e.emit(ne.KEYS);continue}const t=e.next();switch(t){case"]":return e.emit(ne.RBRACKET),e.filterLevel?we:de;case"":return e.error("unclosed bracketed selection"),null;case"*":e.emit(ne.WILD);continue;case"?":return e.emit(ne.FILTER),e.filterLevel+=1,we;case",":e.emit(ne.COMMA);continue;case":":e.emit(ne.COLON);continue;case"'":return xe;case'"':return Oe;default:return e.backup(),e.error(`unexpected token '${t}' in bracketed selection`),null}}}function we(e){for(;;){e.ignoreWhitespace();const t=e.next();switch(t){case"":return e.error("unclosed bracketed selection"),null;case"]":return e.filterLevel-=1,1===e.parenStack.length?(e.error("unbalanced parentheses"),null):(e.backup(),ve);case",":if(e.emit(ne.COMMA),e.parenStack.length)continue;return e.filterLevel-=1,ve;case"'":return Ee;case'"':return Ne;case"(":e.emit(ne.LPAREN),e.parenStack.length&&(e.parenStack[e.parenStack.length-1]+=1);continue;case")":e.emit(ne.RPAREN),e.parenStack.length&&(1===e.parenStack[e.parenStack.length-1]?e.parenStack.pop():e.parenStack[e.parenStack.length-1]-=1);continue;case"$":return e.emit(ne.ROOT),de;case"@":return e.emit(ne.CURRENT),de;case"#":return e.emit(ne.KEY),de;case".":return e.backup(),de;case"!":"="===e.peek()?(e.next(),e.emit(ne.NE)):e.emit(ne.NOT);continue;case"=":if("="===e.peek()){e.next(),e.emit(ne.EQ);continue}return e.backup(),e.error(`unexpected filter selector token '${t}'`),null;case"<":"="===e.peek()?(e.next(),e.emit(ne.LE)):e.emit(ne.LT);continue;case">":"="===e.peek()?(e.next(),e.emit(ne.GE)):e.emit(ne.GT);continue;default:if(e.backup(),e.acceptMatchRun(he)){if("."===e.peek()&&(e.next(),!e.acceptMatchRun(he)))return e.error("a fractional digit is required after a decimal point"),null;e.acceptMatchRun(oe),e.emit(ne.NUMBER);continue}if(e.acceptMatchRun(/&&/y)){e.emit(ne.AND);continue}if(e.acceptMatchRun(/\|\|/y)){e.emit(ne.OR);continue}if(e.acceptMatchRun(/true/y)){e.emit(ne.TRUE);continue}if(e.acceptMatchRun(/false/y)){e.emit(ne.FALSE);continue}if(e.acceptMatchRun(/null/y)){e.emit(ne.NULL);continue}if(e.acceptMatchRun(ie)&&"("===e.peek()){e.parenStack.push(1),e.emit(ne.FUNCTION),e.next(),e.ignore();continue}}return e.error(`unexpected filter selector token '${t}'`),null}}function ye(e,t){return function(n){if(n.ignore(),n.peek()===e)return n.emit("'"===e?ne.SINGLE_QUOTE_STRING:ne.DOUBLE_QUOTE_STRING),n.next(),n.ignore(),t;for(;;){const r=n.path.slice(n.pos,n.pos+2),s=n.next();if("\\\\"!==r&&r!==`\\${e}`){if("\\"===s&&!r.match(/\\[bfnrtu/]/))return n.error("invalid escape"),null;if(!s)return n.error(`unclosed string starting at index ${n.start}`),null;if(s===e)return n.backup(),n.emit("'"===e?ne.SINGLE_QUOTE_STRING:ne.DOUBLE_QUOTE_STRING),n.next(),n.ignore(),t}else n.next()}}}const xe=ye("'",ve),Oe=ye('"',ve),Ee=ye("'",we),Ne=ye('"',we);class ke{constructor(e,t){this.environment=e,this.token=t}}class Se extends ke{constructor(e,t,n,r){super(e,t),this.environment=e,this.token=t,this.name=n,this.shorthand=r}resolve(e){const t=[];for(const n of e)_(n.value,this.name)&&t.push(new $(n.value[this.name],n.location.concat(this.name),n.root));return t}*lazyResolve(e){for(const t of e)_(t.value,this.name)&&(yield new $(t.value[this.name],t.location.concat(this.name),t.root))}toString(){return this.shorthand?`['${this.name}']`:`'${this.name}'`}}class Te extends ke{constructor(e,t,n){if(super(e,t),this.environment=e,this.token=t,this.index=n,n<this.environment.minIntIndex||n>this.environment.maxIntIndex)throw new o("index out of range",this.token)}resolve(e){const t=[];for(const n of e)if(c(n.value)){const e=this.normalizedIndex(n.value.length);e in n.value&&t.push(new $(n.value[e],n.location.concat(e),n.root))}return t}*lazyResolve(e){for(const t of e)if(c(t.value)){const e=this.normalizedIndex(t.value.length);e in t.value&&(yield new $(t.value[e],t.location.concat(e),t.root))}}toString(){return String(this.index)}normalizedIndex(e){return this.index<0&&e>=Math.abs(this.index)?e+this.index:this.index}}class Re extends ke{constructor(e,t,n,r,s){super(e,t),this.environment=e,this.token=t,this.start=n,this.stop=r,this.step=s,this.checkRange(n,r,s)}resolve(e){const t=[];for(const n of e)if(c(n.value))for(const[e,r]of this.slice(n.value,this.start,this.stop,this.step))t.push(new $(r,n.location.concat(e),n.root));return t}*lazyResolve(e){for(const t of e)if(c(t.value))for(const[e,n]of this.slice(t.value,this.start,this.stop,this.step))yield new $(n,t.location.concat(e),t.root)}toString(){return`${this.start?this.start:""}:${this.stop?this.stop:""}:${this.step?this.step:"1"}`}checkRange(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(const e of t)if(void 0!==e&&(e<this.environment.minIntIndex||e>this.environment.maxIntIndex))throw new o("index out of range",this.token)}slice(e,t,n,r){if(!e.length)return[];if(t=null==t?r&&r<0?e.length-1:0:t<0?Math.max(e.length+t,0):Math.min(t,e.length-1),n=null==n?r&&r<0?-1:e.length:n<0?Math.max(e.length+n,-1):Math.min(n,e.length),0===r)return[];r||(r=1);const s=[];if(r>0)for(let o=t;o<n;o+=r)s.push([o,e[o]]);else for(let o=t;o>n;o+=r)s.push([o,e[o]]);return s}}class $e extends ke{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super(e,t),this.environment=e,this.token=t,this.shorthand=n}resolve(e){const t=[];for(const n of e)if(!(n.value instanceof String))if(c(n.value))for(let e=0;e<n.value.length;e++)t.push(new $(n.value[e],n.location.concat(e),n.root));else if(u(n.value))for(const[e,r]of this.environment.entries(n.value))t.push(new $(r,n.location.concat(e),n.root));return t}*lazyResolve(e){for(const t of e)if(!(t.value instanceof String))if(c(t.value))for(let e=0;e<t.value.length;e++)yield new $(t.value[e],t.location.concat(e),t.root);else if(u(t.value))for(const[e,n]of this.environment.entries(t.value))yield new $(n,t.location.concat(e),t.root)}toString(){return this.shorthand?"[*]":"*"}}class be extends ke{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.selector=n}resolve(e){const t=[];if(this.environment.nondeterministic)for(const n of e)for(const e of this.nondeterministicVisitor(n))t.push(e);else for(const n of e){t.push(n);for(const e of this.visitor(n))t.push(e)}return this.selector.resolve(t)}*lazyResolve(e){yield*this.selector.lazyResolve(this._lazyResolve(e))}*_lazyResolve(e){for(const t of e){const e=[{node:t,depth:0}];for(yield t;e.length;){const{node:t,depth:n}=e.pop();if(n>=this.environment.maxRecursionDepth)throw new h("recursion limit reached",this.token);if(!(t.value instanceof String))if(c(t.value))for(let r=0;r<t.value.length;r++){const s=new $(t.value[r],t.location.concat(r),t.root);yield s,u(s.value)&&e.push({node:s,depth:n+1})}else if(u(t.value))for(const[r,s]of this.environment.entries(t.value)){const o=new $(s,t.location.concat(r),t.root);yield o,u(o.value)&&e.push({node:o,depth:n+1})}}}}toString(){return`..${this.selector.toString()}`}visitor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(t>=this.environment.maxRecursionDepth)throw new h("recursion limit reached",this.token);const n=[];if(e.value instanceof String)return n;if(c(e.value))for(let r=0;r<e.value.length;r++){const s=new $(e.value[r],e.location.concat(r),e.root);n.push(s);for(const e of this.visitor(s,t+1))n.push(e)}else if(u(e.value))for(const[r,s]of this.environment.entries(e.value)){const o=new $(s,e.location.concat(r),e.root);n.push(o);for(const e of this.visitor(o,t+1))n.push(e)}return n}nondeterministicVisitor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=[e];let r=this.nondeterministicChildren(e).map((e=>[e,t]));for(;r.length;){const[e,t]=r.shift();if(n.push(e),t>=this.environment.maxRecursionDepth)throw new h("recursion limit reached",this.token);const s=Math.random()<.5;for(const o of this.nondeterministicChildren(e))if(s){n.push(o);r=Ie(r,this.nondeterministicChildren(o).map((e=>[e,t+2])))}else r.push([o,t+1])}return n}nondeterministicChildren(e){const t=[];if(e.value instanceof String)return t;if(c(e.value))for(let n=0;n<e.value.length;n++)t.push(new $(e.value[n],e.location.concat(n),e.root));else if(u(e.value))for(const[n,r]of this.environment.entries(e.value))t.push(new $(r,e.location.concat(n),e.root));return t}}class Pe extends ke{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.expression=n}resolve(e){const t=[];for(const n of e)if(!(n.value instanceof String))if(c(n.value))for(let e=0;e<n.value.length;e++){const r=n.value[e],s={environment:this.environment,currentValue:r,rootValue:n.root,currentKey:e};this.expression.evaluate(s)&&t.push(new $(r,n.location.concat(e),n.root))}else if(u(n.value))for(const[e,r]of this.environment.entries(n.value)){const s={environment:this.environment,currentValue:r,rootValue:n.root,currentKey:e};this.expression.evaluate(s)&&t.push(new $(r,n.location.concat(e),n.root))}return t}*lazyResolve(e){for(const t of e)if(!(t.value instanceof String))if(c(t.value))for(let e=0;e<t.value.length;e++){const n=t.value[e],r={environment:this.environment,currentValue:n,rootValue:t.root,lazy:!0,currentKey:e};this.expression.evaluate(r)&&(yield new $(n,t.location.concat(e),t.root))}else if(u(t.value))for(const[e,n]of this.environment.entries(t.value)){const r={environment:this.environment,currentValue:n,rootValue:t.root,lazy:!0,currentKey:e};this.expression.evaluate(r)&&(yield new $(n,t.location.concat(e),t.root))}}toString(){return`?${this.expression.toString()}`}}class _e extends ke{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.items=n}resolve(e){const t=[];for(const n of e)for(const e of this.items)for(const r of e.resolve([n]))t.push(r);return t}*lazyResolve(e){for(const t of e)for(const e of this.items)yield*e.lazyResolve([t])}toString(){return`[${this.items.map((e=>e.toString())).join(", ")}]`}}function Ie(e,t){if(0===e.length)return t;if(0===t.length)return e;const n=[],r=e[Symbol.iterator](),s=t[Symbol.iterator]();for(let t=0;t<e.length;t++)n.push(r);for(let e=0;e<t.length;e++)n.push(s);return function(e){for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}}(n),n.map((e=>e.next().value))}var Le=Object.freeze({__proto__:null,BracketedSelection:_e,FilterSelector:Pe,IndexSelector:Te,JSONPathSelector:ke,NameSelector:Se,RecursiveDescentSegment:be,SliceSelector:Re,WildcardSelector:$e});class Ae{constructor(e,t){this.environment=e,this.selectors=t}query(e){let t=[new $(e,[],e)];for(const e of this.selectors)t=e.resolve(t);return new b(t)}lazyQuery(e){let t=[new $(e,[],e)][Symbol.iterator]();for(const e of this.selectors)t=e.lazyResolve(t);return t}match(e){const t=this.lazyQuery(e).next();if(!t.done)return t.value}toString(){return`$${this.selectors.map((e=>e.toString())).join("")}`}singularQuery(){for(const e of this.selectors)if(!(e instanceof Se||e instanceof _e&&1===e.items.length&&(e.items[0]instanceof Se||e.items[0]instanceof Te)))return!1;return!0}}class Ke extends I{evaluate(e){return e.currentKey??P}toString(){return"#"}}class Me extends ke{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super(e,t),this.environment=e,this.token=t,this.shorthand=n}resolve(e){const t=[];for(const n of e)if(!(n.value instanceof String||c(n.value))&&u(n.value)){let e=0;for(const[r,s]of this.environment.entries(n.value))t.push(new $(r,n.location.concat("[~]",`[${e}]`),n.root)),e++}return t}*lazyResolve(e){for(const t of e)if(!(t.value instanceof String||c(t.value))&&u(t.value)){let e=0;for(const[n,r]of this.environment.entries(t.value))yield new $(n,t.location.concat("[~]",`[${e}]`),t.root),e++}}toString(){return this.shorthand?"[~]":"~"}}const je=new Map([[ne.AND,5],[ne.EQ,6],[ne.GE,6],[ne.GT,6],[ne.LE,6],[ne.LT,6],[ne.NE,6],[ne.NOT,7],[ne.OR,4],[ne.RPAREN,1]]),Fe=new Map([[ne.AND,"&&"],[ne.EQ,"=="],[ne.GE,">="],[ne.GT,">"],[ne.LE,"<="],[ne.LT,"<"],[ne.NE,"!="],[ne.OR,"||"]]),Je=new Set(["==",">=",">","<=","<","!="]);class ze{constructor(e){this.environment=e,this.tokenMap=new Map([[ne.FALSE,this.parseBoolean],[ne.NUMBER,this.parseNumber],[ne.LPAREN,this.parseGroupedExpression],[ne.NOT,this.parsePrefixExpression],[ne.NULL,this.parseNull],[ne.ROOT,this.parseRootQuery],[ne.CURRENT,this.parseRelativeQuery],[ne.SINGLE_QUOTE_STRING,this.parseString],[ne.DOUBLE_QUOTE_STRING,this.parseString],[ne.TRUE,this.parseBoolean],[ne.FUNCTION,this.parseFunction],[ne.KEY,this.parseCurrentKey],[ne.KEY,this.parseCurrentKey]])}parse(e){e.current.kind===ne.ROOT&&e.next();const t=this.parsePath(e);if(e.current.kind!==ne.EOF)throw new a(`unexpected token '${e.current.kind}'`,e.current);return t}parsePath(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=[];for(;;){const r=this.parseSegment(e);if(!r){t&&e.backup();break}n.push(r),e.next()}return n}parseSegment(e){switch(e.current.kind){case ne.NAME:return new Se(this.environment,e.current,e.current.value,!0);case ne.WILD:return new $e(this.environment,e.current,!0);case ne.KEYS:return new Me(this.environment,e.current,!0);case ne.DDOT:{const t=e.current;e.next();const n=this.parseSegment(e);if(!n)throw new a("bald descendant segment",e.current);return new be(this.environment,t,n)}case ne.LBRACKET:return this.parseBracketedSelection(e);default:return null}}parseIndex(e){if(e.current.value.length>1&&e.current.value.startsWith("0")||e.current.value.startsWith("-0"))throw new a("leading zero in index selector",e.current);return new Te(this.environment,e.current,Number(e.current.value))}parseSlice(e){const t=e.current,n=[];function r(e){if(e.kind===ne.INDEX){if(e.value.length>1&&e.value.startsWith("0")||e.value.startsWith("-0"))throw new a("leading zero in index selector",e);return!0}return!1}return r(e.current)?(n.push(Number(e.current.value)),e.next(),e.expect(ne.COLON),e.next()):(n.push(void 0),e.expect(ne.COLON),e.next()),r(e.current)?(n.push(Number(e.current.value)),e.next(),e.current.kind===ne.COLON&&e.next()):e.current.kind===ne.COLON&&(n.push(void 0),e.expect(ne.COLON),e.next()),r(e.current)&&(n.push(Number(e.current.value)),e.next()),e.backup(),new Re(this.environment,t,...n)}parseBracketedSelection(e){const t=e.next(),n=[];for(;e.current.kind!==ne.RBRACKET;){switch(e.current.kind){case ne.SINGLE_QUOTE_STRING:case ne.DOUBLE_QUOTE_STRING:n.push(new Se(this.environment,e.current,this.decodeString(e.current,!0),!1));break;case ne.FILTER:n.push(this.parseFilter(e));break;case ne.INDEX:e.peek.kind===ne.COLON?n.push(this.parseSlice(e)):n.push(this.parseIndex(e));break;case ne.COLON:n.push(this.parseSlice(e));break;case ne.WILD:n.push(new $e(this.environment,e.current));break;case ne.KEYS:n.push(new Me(this.environment,e.current));break;case ne.EOF:throw new a("unexpected end of query",e.current);default:throw new a(`unexpected token in bracketed selection '${e.current.kind}'`,e.current)}e.peek.kind!==ne.RBRACKET&&(e.expectPeek(ne.COMMA),e.next()),e.next()}if(!n.length)throw new a("empty bracketed segment",t);return new _e(this.environment,t,n)}parseFilter(e){const t=e.next(),n=this.parseFilterExpression(e);if(n instanceof G){const e=this.environment.functionRegister.get(n.name);if(e&&e.returnType===d.ValueType)throw new s(`result of ${n.name}() must be compared`,n.token)}return new Pe(this.environment,t,new z(t,n))}parseBoolean(e){return e.current.kind===ne.FALSE?new K(e.current,!1):new K(e.current,!0)}parseNull(e){return new A(e.current)}parseString(e){return new M(e.current,this.decodeString(e.current))}parseNumber(e){return new j(e.current,Number(e.current.value))}parsePrefixExpression(e){return e.expect(ne.NOT),e.next(),new F(e.current,"!",this.parseFilterExpression(e,7))}parseInfixExpression(e,t){const n=e.next(),r=je.get(n.kind)||1,s=this.parseFilterExpression(e,r),o=Fe.get(n.kind);if(!o)throw new a(`unknown operator '${n.kind}'`,n);return Je.has(o)&&(this.throwForNonComparable(t),this.throwForNonComparable(s)),new J(n,t,o,s)}parseGroupedExpression(e){e.next();let t=this.parseFilterExpression(e);for(e.next();e.current.kind!==ne.RPAREN;){if(e.current.kind===ne.EOF)throw new a("unbalanced parentheses",e.current);t=this.parseInfixExpression(e,t)}return e.expect(ne.RPAREN),t}parseRootQuery(e){const t=e.next();return new U(t,new Ae(this.environment,this.parsePath(e,!0)))}parseRelativeQuery(e){const t=e.next();return new D(t,new Ae(this.environment,this.parsePath(e,!0)))}parseCurrentKey(e){return new Ke(e.current)}parseFunction(e){const t=[],n=e.next();for(;e.current.kind!==ne.RPAREN;){const n=this.tokenMap.get(e.current.kind);if(!n)throw new a(`unexpected '${e.current.value}'`,e.current);let r=n.bind(this)(e),s=e.peek.kind;for(;Fe.has(s);)e.next(),r=this.parseInfixExpression(e,r),s=e.peek.kind;if(t.push(r),e.peek.kind!==ne.RPAREN){if(e.peek.kind===ne.RBRACKET)break;e.expectPeek(ne.COMMA),e.next()}e.next()}return e.expect(ne.RPAREN),new G(n,n.value,this.environment.checkWellTypedness(n,t))}parseFilterExpression(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=this.tokenMap.get(e.current.kind);if(!n){let t;switch(e.current.kind){case ne.EOF:case ne.RBRACKET:t="end of expression";break;default:t=`'${e.current.value}`}throw new a(`unexpected ${t}`,e.current)}let r=n.bind(this)(e);for(;;){const n=e.peek.kind;if(n===ne.EOF||n===ne.RBRACKET||(je.get(n)||1)<t)break;if(!Fe.has(n))return r;e.next(),r=this.parseInfixExpression(e,r)}return r}decodeString(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{return JSON.parse(e.kind===ne.SINGLE_QUOTE_STRING?`"${e.value.replaceAll('"','\\"').replaceAll("\\'","'")}"`:`"${e.value}"`)}catch{throw new a(`invalid ${t?"name selector":"string literal"} '${e.value}'`,e)}}throwForNonComparable(e){if((e instanceof U||e instanceof D)&&!e.path.singularQuery())throw new s("non-singular query is not comparable",e.token);if(e instanceof G){const t=this.environment.functionRegister.get(e.name);if(t&&t.returnType!==d.ValueType)throw new s(`result of ${e.name}() is not comparable`,e.token)}}}class Ce{functionRegister=new Map;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.strict=e.strict??!0,this.maxIntIndex=e.maxIntIndex??Math.pow(2,53)-1,this.minIntIndex=e.maxIntIndex??-Math.pow(2,53)-1,this.maxRecursionDepth=e.maxRecursionDepth??50,this.nondeterministic=e.nondeterministic??!1,this.keysPattern=e.keysPattern??/~/y,this.parser=new ze(this),this.setupFilterFunctions()}compile(e){return new Ae(this,this.parser.parse(new se(pe(this,e))))}query(e,t){return this.compile(e).query(t)}lazyQuery(e,t){return this.compile(e).lazyQuery(t)}match(e,t){return this.compile(e).match(t)}setupFilterFunctions(){this.functionRegister.set("count",new Y),this.functionRegister.set("length",new X),this.functionRegister.set("search",new ee),this.functionRegister.set("match",new H),this.functionRegister.set("value",new te)}checkWellTypedness(e,t){const n=this.functionRegister.get(e.value);if(!n)throw new i(`no such function '${e.value}'`,e);if(t.length!==n.argTypes.length)throw new s(`${e.value}() takes ${n.argTypes.length} argument${1===n.argTypes.length?"":"s"}, ${t.length} given`,e);for(const[r,o,i]of n.argTypes.map(((e,n)=>[e,t[n],n])))switch(r){case d.ValueType:if(!(o instanceof L||o instanceof Ke||o instanceof C&&o.path.singularQuery()||o instanceof G&&this.functionRegister.get(o.name)?.returnType===d.ValueType))throw new s(`${e.value}() argument ${i} must be of ValueType`,o.token);break;case d.LogicalType:if(!(o instanceof C||o instanceof J))throw new s(`${e.value}() argument ${i} must be of LogicalType`,o.token);break;case d.NodesType:if(!(o instanceof C||o instanceof G&&this.functionRegister.get(o.name)?.returnType===d.NodesType))throw new s(`${e.value}() argument ${i} must be of NodesType`,o.token)}return t}entries(e){return this.nondeterministic?function(e){for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e}(Object.entries(e)):Object.entries(e)}}var De=Object.freeze({__proto__:null,Count:Y,FunctionExpressionType:d,Length:X,Match:H,Search:ee,Value:te});const Ue=new Ce;function Ge(e,t){return Ue.query(e,t)}function Qe(e,t){return Ue.lazyQuery(e,t)}function Ve(e){return Ue.compile(e)}var We=Object.freeze({__proto__:null,DEFAULT_ENVIRONMENT:Ue,FunctionExpressionType:d,JSONPath:Ae,JSONPathEnvironment:Ce,JSONPathError:t,JSONPathIndexError:o,JSONPathLexerError:r,JSONPathNode:$,JSONPathNodeList:b,JSONPathRecursionLimitError:h,JSONPathSyntaxError:a,JSONPathTypeError:s,Nothing:P,Token:re,TokenKind:ne,compile:Ve,expressions:q,functions:De,lazyQuery:Qe,match:function(e,t){return Ue.match(e,t)},query:Ge,selectors:Le});class Be extends Error{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPatchError"}}class qe extends Be{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPatchTestFailure"}}class Ye{name="add";constructor(e,t){this.path=e,this.value=t}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===O)return this.value;const s=this.path.tokens.at(-1);if(void 0===s)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n))if(r===O){if("-"!==s)throw new Be(`index out of range (${this.name}:${t})`);n.push(this.value)}else n.splice(Number(s),0,this.value);else{if(!u(n))throw new Be(`unexpected operation on '${typeof n}' (${this.name}:${t})`);n[s]=this.value}return e}toObject(){return{op:this.name,path:this.path.toString(),value:this.value}}}class Xe{name="remove";constructor(e){this.path=e}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===O)throw new Be(`can't remove root (${this.name}:${t})`);const s=this.path.tokens.at(-1);if(void 0===s)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n)){if(r===O)throw new Be(`can't remove nonexistent item (${this.name}:${t})`);n.splice(Number(s),1)}else{if(!u(n))throw new Be(`unexpected operation on '${typeof n}' (${this.name}:${t})`);if(r===O)throw new Be(`can't remove nonexistent property (${this.name}:${t})`);delete n[s]}return e}toObject(){return{op:this.name,path:this.path.toString()}}}class Ze{name="replace";constructor(e,t){this.path=e,this.value=t}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===O)return this.value;const s=this.path.tokens.at(-1);if(void 0===s)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n)){if(r===O)throw new Be(`can't replace nonexistent item (${this.name}:${t})`);n.splice(Number(s),1,this.value)}else{if(!u(n))throw new Be(`unexpected operation on '${typeof n}' (${this.name}:${t})`);if(r===O)throw new Be(`can't replace nonexistent property (${this.name}:${t})`);n[s]=this.value}return e}toObject(){return{op:this.name,path:this.path.toString(),value:this.value}}}class He{name="move";constructor(e,t){this.from=e,this.path=t}apply(e,t){if(this.path.isRelativeTo(this.from))throw new Be(`can't move object to one of its own children (${this.name}:${t})`);const[n,r]=this.from.resolveWithParent(e);if(r===O)throw new Be(`source object does not exist (${this.name}:${t})`);const s=this.from.tokens.at(-1);if(void 0===s)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);c(n)?n.splice(Number(s),1):u(n)&&delete n[s];const[o,i]=this.path.resolveWithParent(e);if(o===O)return r;const a=this.path.tokens.at(-1);if(void 0===a)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(o))o.splice(Number(a),0,r);else{if(!u(o))throw new Be(`unexpected operation on '${typeof parent}' (${this.name}:${t})`);o[a]=r}return e}toObject(){return{op:this.name,from:this.from.toString(),path:this.path.toString()}}}class et{name="copy";constructor(e,t){this.from=e,this.path=t}apply(e,t){const[n,r]=this.from.resolveWithParent(e);if(r===O)throw new Be(`source object does not exist (${this.name}:${t})`);const[s]=this.path.resolveWithParent(e);if(s===O)return this.deepCopy(r);const o=this.path.tokens.at(-1);if(void 0===o)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(s))s.splice(Number(o),0,this.deepCopy(r));else{if(!u(s))throw new Be(`unexpected operation on '${typeof parent}' (${this.name}:${t})`);s[o]=this.deepCopy(r)}return e}toObject(){return{op:this.name,from:this.from.toString(),path:this.path.toString()}}deepCopy(e){return JSON.parse(JSON.stringify(e))}}class tt{name="test";constructor(e,t){this.path=e,this.value=t}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(!f(r,this.value))throw new qe(`test failed (${this.name}:${t})`);return e}toObject(){return{op:this.name,path:this.path.toString(),value:this.value}}}class nt{ops=[];constructor(e){e&&this.build(e)}*[Symbol.iterator](){for(const e of this.ops)yield e.toObject()}add(e,t){return this.ops.push(new Ye(this.ensurePointer(e,"add",this.ops.length),t)),this}remove(e){return this.ops.push(new Xe(this.ensurePointer(e,"remove",this.ops.length))),this}replace(e,t){return this.ops.push(new Ze(this.ensurePointer(e,"replace",this.ops.length),t)),this}move(e,t){return this.ops.push(new He(this.ensurePointer(e,"move",this.ops.length),this.ensurePointer(t,"move",this.ops.length))),this}copy(e,t){return this.ops.push(new et(this.ensurePointer(e,"copy",this.ops.length),this.ensurePointer(t,"copy",this.ops.length))),this}test(e,t){return this.ops.push(new tt(this.ensurePointer(e,"test",this.ops.length),t)),this}apply(e){let t=e;for(let e=0;e<this.ops.length;e++){const n=this.ops[e];try{t=n.apply(t,e)}catch(t){if(t instanceof g)throw new Be(`${t.message} (${n.name}:${e})`);throw t}}return t}toArray(){return this.ops.map((e=>e.toObject()))}build(e){for(let t=0;t<e.length;t++){const n=e[t];switch(n.op){case"add":this.add(this.opPointer(n,"path","add",t),this.opValue(n,"value","add",t));break;case"remove":this.remove(this.opPointer(n,"path","remove",t));break;case"replace":this.replace(this.opPointer(n,"path","replace",t),this.opValue(n,"value","replace",t));break;case"move":this.move(this.opPointer(n,"from","move",t),this.opPointer(n,"path","move",t));break;case"copy":this.copy(this.opPointer(n,"from","copy",t),this.opPointer(n,"path","copy",t));break;case"test":this.test(this.opPointer(n,"path","test",t),this.opValue(n,"value","test",t));break;default:throw new Be(`expected 'op' to be one of 'add', 'remove', 'replace', 'move', 'copy' or 'test' (${n.op}:${t})`)}}}opPointer(e,t,n,r){if(!Object.hasOwn(e,t))throw new Be(`missing property '${t}' (${n}:${r})`);const s=e[t];if(!l(s))throw new Be(`expected a JSON Pointer string for '${t}', found ${typeof s} (${n}:${r})`);try{return new E(s)}catch(e){if(e instanceof m)throw new Be(`${e.message} (${n}:${r})`);throw e}}opValue(e,t,n,r){if(!Object.hasOwn(e,t))throw new Be(`missing property '${t}' (${n}:${r})`);return e[t]}ensurePointer(e,t,n){if(e instanceof E)return e;if(!l(e))throw new Be(`expected a JSON Pointer string, found ${typeof e} (${t}:${n})`);try{return new E(e)}catch(e){if(e instanceof m)throw new Be(`${e.message} (${t}:${n})`);throw e}}}function rt(e,t){return new nt(e).apply(t)}var st=Object.freeze({__proto__:null,JSONPatch:nt,JSONPatchError:Be,JSONPatchTestFailure:qe,apply:rt});return e.DEFAULT_ENVIRONMENT=Ue,e.FunctionExpressionType=d,e.JSONPatch=nt,e.JSONPatchError=Be,e.JSONPatchTestFailure=qe,e.JSONPath=Ae,e.JSONPathEnvironment=Ce,e.JSONPathError=t,e.JSONPathIndexError=o,e.JSONPathLexerError=r,e.JSONPathNode=$,e.JSONPathNodeList=b,e.JSONPathRecursionLimitError=h,e.JSONPathSyntaxError=a,e.JSONPathTypeError=s,e.JSONPointer=E,e.Nothing=P,e.RelativeJSONPointer=S,e.Token=re,e.TokenKind=ne,e.UNDEFINED=O,e.apply=rt,e.compile=Ve,e.jsonpatch=st,e.jsonpath=We,e.jsonpointer=R,e.lazyQuery=Qe,e.query=Ge,e.resolve=T,e.version="1.2.0",e}({});
|
|
1
|
+
var json_p3=function(e){"use strict";class t extends Error{constructor(e,t){super(e),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathError",this.message=n(e,t)}}function n(e,t){return t.input.length<=9?`${e} ('${t.input}':${t.index})`:t.index>t.input.length-5?`${e} ('${t.input.slice(t.input.length-9)}':${t.index})`:t.index-4<0?`${e} ('${t.input.slice(0,9)}':${t.index})`:`${e} ('${t.input.slice(t.index-4,t.index+5)}':${t.index})`}class r extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathLexerError",this.message=n(e,t)}}class s extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathTypeError",this.message=n(e,t)}}class o extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathIndexError",this.message=n(e,t)}}class i extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="UndefinedFilterFunctionError",this.message=n(e,t)}}class a extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathSyntaxError",this.message=n(e,t)}}class h extends t{constructor(e,t){super(e,t),this.message=e,this.token=t,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPathRecursionLimitError",this.message=n(e,t)}}function c(e){return Array.isArray(e)}function u(e){const t=typeof e;return null!==e&&"object"===t||"function"===t}function l(e){return"string"==typeof e}function p(e){return"number"==typeof e}function f(e,t){if(e===t)return!0;if(Array.isArray(e)){if(Array.isArray(t)){if(e.length!==t.length)return!1;for(let n=0;n<e.length;n++)if(!f(e[n],t[n]))return!1;return!0}return!1}if(u(e)&&u(t)){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const r of n)if(!f(e[r],t[r]))return!1;return!0}return!1}let d=function(e){return e.ValueType="ValueType",e.LogicalType="LogicalType",e.NodesType="NodesType",e}({});class m extends Error{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerError"}}class g extends m{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerResolutionError"}}class v extends g{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerIndexError"}}class w extends g{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerKeyError"}}class y extends m{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerSyntaxError"}}class x extends g{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerTypeError"}}const O=Symbol.for("jsonpointer.undefined");class E{#e;constructor(e){this.tokens=this.parse(e),this.#e=E.encode(this.tokens)}static encode(e){return e.length?"/"+e.map((e=>e.replaceAll("~","~0").replaceAll("/","~1"))).join("/"):""}resolve(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:O;try{return this.tokens.reduce(this.getItem.bind(this),e)}catch(e){if(e instanceof g&&t!==O)return t;throw e}}resolveWithParent(e){if(!this.tokens.length)return[O,this.resolve(e)];const t=this.tokens.slice(0,this.tokens.length-1).reduce(this.getItem.bind(this),e);try{return[t,this.getItem(t,this.tokens[this.tokens.length-1],this.tokens.length-1)]}catch(e){if(e instanceof v||e instanceof w)return[t,O];throw e}}toString(){return this.#e}isRelativeTo(e){return e.tokens.length<this.tokens.length&&this.tokens.slice(0,e.tokens.length).every(((t,n)=>t===e.tokens[n]))}parse(e){if(e.length&&!e.startsWith("/"))throw new y(`"${e}" pointers must start with a slash or be the empty string`);return e.split("/").map((e=>e.replaceAll("~1","/").replaceAll("~0","~"))).slice(1)}getItem(e,t,n){if(c(e)){if("length"!==t&&Object.hasOwn(e,t))return e[Number(t)];if(t.startsWith("#")){const r=t.slice(1);if(k.test(r)&&Object.hasOwn(e,r))return Number(r);throw new v(`index out of range '${E.encode(this.tokens.slice(0,n+1))}'`)}throw new v(`index out of range '${E.encode(this.tokens.slice(0,n+1))}'`)}if(u(e)){if(Object.hasOwn(e,t))return e[t];if(t.startsWith("#")&&Object.hasOwn(e,t.slice(1)))return t.slice(1);throw new w(`no such property '${E.encode(this.tokens.slice(0,n+1))}'`)}throw new x(`found primitive value, expected an object '${E.encode(this.tokens.slice(0,n+1))}'`)}_join(e){if(!l(e))throw new x("join() requires string arguments, found "+typeof e);if(e.startsWith("/"))return new E(e);const t=this.tokens.concat(e.split("/").map((e=>e.replaceAll("~1","/").replaceAll("~0","~"))));return new E(E.encode(t))}join(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];if(!t.length)return this;let r=this;for(const e of t)r=r._join(e);return r}exists(e){try{this.resolve(e)}catch(e){if(e instanceof g)return!1;throw e}return!0}parent(){return this.tokens.length?new E(E.encode(this.tokens.slice(0,this.tokens.length-1))):this}to(e){return(l(e)?new S(e):e).to(this)}}const N=/(?<ORIGIN>\d+)(?<INDEX_G>(?<SIGN>[+-])(?<INDEX>\d))?(?<POINTER>.*)/s,k=/(0|[1-9][0-9]*)/;class S{constructor(e){[this.origin,this.index,this.pointer]=this.parse(e)}toString(){const e=this.index>0?"+":"",t=0===this.index?"":`${e}${this.index}`;return`${this.origin}${t}${this.pointer}`}to(e){const t=l(e)?new E(e):e;if(this.origin>t.tokens.length)throw new v(`origin (${this.origin}) exceeds root (${t.tokens.length})`);const n=this.origin<1?t.tokens.slice():t.tokens.slice(0,-this.origin);if(this.index&&n.length&&this.isIntLike(n.at(-1))){const e=Number(n.at(-1))+this.index;if(e<0)throw new v(`index offset out of range (${e})`);n[n.length-1]=String(e)}return this.pointer instanceof E?n.push(...this.pointer.tokens):n[n.length-1]=`#${n[n.length-1]}`,new E(E.encode(n))}parse(e){const t=N.exec(e);if(!t||!t.groups)throw new y("failed to parse relative pointer");const n=this.parseInt(t.groups.ORIGIN);let r=0;if(t.groups.INDEX_G){if(r=this.parseInt(t.groups.INDEX),0===r)throw new y("index offset can't be zero");"-"===t.groups.SIGN&&(r=-r)}return"#"===t.groups.POINTER?[n,r,"#"]:[n,r,new E(t.groups.POINTER)]}parseInt(e){if(e.startsWith("0")&&e.length>1)throw new y("unexpected leading zero");if(k.test(e))return Number(e);throw new y(`expected an integer, found '${e}'`)}isIntLike(e){return!(void 0!==e&&!p(e))||k.test(e)}}function T(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:O;return new E(e).resolve(t,n)}var R=Object.freeze({__proto__:null,JSONPointer:E,JSONPointerError:m,JSONPointerIndexError:v,JSONPointerKeyError:w,JSONPointerResolutionError:g,JSONPointerSyntaxError:y,JSONPointerTypeError:x,RelativeJSONPointer:S,UNDEFINED:O,resolve:T});class ${constructor(e,t,n){this.value=e,this.location=t,this.root=n}get path(){return"$"+this.location.map((e=>l(e)?`['${e}']`:`[${e}]`)).join("")}toPointer(){return this.location.length?new E(E.encode(this.location.map(String))):new E("")}}class b{constructor(e){this.nodes=e}[Symbol.iterator](){return this.nodes[Symbol.iterator]()}empty(){return 0===this.nodes.length}values(){return this.nodes.map((e=>e.value))}valuesOrSingular(){return 1===this.nodes.length?this.nodes[0].value:this.nodes.map((e=>e.value))}locations(){return this.nodes.map((e=>e.location))}paths(){return this.nodes.map((e=>e.path))}pointers(){return this.nodes.map((e=>e.toPointer()))}get length(){return this.nodes.length}}const P=Symbol.for("jsonpath.nothing");function _(e,t){return u(e)&&Object.hasOwn(e,t)}class I{constructor(e){this.token=e}}class L extends I{}class A extends L{evaluate(){return null}toString(){return"null"}}class K extends L{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return String(this.value)}}class M extends L{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return JSON.stringify(this.value)}}class j extends L{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return String(this.value)}}class F extends I{constructor(e,t,n){super(e),this.token=e,this.operator=t,this.right=n}evaluate(e){if("!"===this.operator){const t=this.right.evaluate(e);return t instanceof b?0===t.nodes.length:!Q(t)}throw new s(`unknown operator '${this.operator}'`,this.token)}toString(){return`${this.operator}${this.right.toString()}`}}class z extends I{constructor(e,t,n,r){super(e),this.token=e,this.left=t,this.operator=n,this.right=r,this.logical="&&"===n||"||"===n}evaluate(e){let t=this.left.evaluate(e);!this.logical&&t instanceof b&&1===t.nodes.length&&(t=t.nodes[0].value);let n=this.right.evaluate(e);return!this.logical&&n instanceof b&&1===n.nodes.length&&(n=n.nodes[0].value),"&&"===this.operator?Q(t)&&Q(n):"||"===this.operator?Q(t)||Q(n):V(t,this.operator,n)}toString(){return this.logical?`(${this.left.toString()} ${this.operator} ${this.right.toString()})`:`${this.left.toString()} ${this.operator} ${this.right.toString()}`}}class J extends I{constructor(e,t){super(e),this.token=e,this.expression=t}evaluate(e){const t=this.expression.evaluate(e);return t instanceof b?t.nodes.length>0:Q(t)}toString(){return this.expression.toString()}}class C extends I{constructor(e,t){super(e),this.token=e,this.path=t}}class D extends C{evaluate(e){return e.lazy?new b(Array.from(this.path.lazyQuery(e.currentValue))):this.path.query(e.currentValue)}toString(){return`@${this.path.toString().slice(1)}`}}class U extends C{evaluate(e){return e.lazy?new b(Array.from(this.path.lazyQuery(e.rootValue))):this.path.query(e.rootValue)}toString(){return this.path.toString()}}class G extends I{constructor(e,t,n){super(e),this.token=e,this.name=t,this.args=n}evaluate(e){const t=e.environment.functionRegister.get(this.name);if(!t)throw new i(`filter function '${this.name}' is undefined`,this.token);const n=this.args.map((t=>t.evaluate(e))).map(((e,n)=>t.argTypes[n]!==d.NodesType&&e instanceof b?this.unpack_node_list(e):e));return t.call(...n)}toString(){return`${this.name}(${this.args.map((e=>e.toString())).join(", ")})`}unpack_node_list(e){switch(e.length){case 0:return P;case 1:return e.nodes[0].value;default:return e}}}function Q(e){return!(e instanceof b&&e.empty())&&!("boolean"==typeof e&&!1===e)}function V(e,t,n){switch(t){case"==":return W(e,n);case"!=":return!W(e,n);case"<":return B(e,n);case">":return B(n,e);case">=":return B(n,e)||W(e,n);case"<=":return B(e,n)||W(e,n);default:return!1}}function W(e,t){if(t instanceof b&&([e,t]=[t,e]),e instanceof b){if(t instanceof b){if(e.empty()&&t.empty())return!0;if(1===e.nodes.length&&1===t.nodes.length)return f(e.nodes[0].value,t.nodes[0].value)}return e.empty()?t===P:1===e.nodes.length&&f(e.nodes[0].value,t)}return e===P&&t===P||f(e,t)}function B(e,t){return!!(l(e)&&l(t)||p(e)&&p(t))&&e<t}var q=Object.freeze({__proto__:null,BooleanLiteral:K,FilterExpression:I,FilterExpressionLiteral:L,FunctionExtension:G,InfixExpression:z,JSONPathQuery:C,LogicalExpression:J,NullLiteral:A,NumberLiteral:j,PrefixExpression:F,RelativeQuery:D,RootQuery:U,StringLiteral:M,compare:V});class Y{argTypes=[d.NodesType];returnType=d.ValueType;call(e){return e.length}}class X{argTypes=[d.ValueType];returnType=d.ValueType;call(e){return c(e)||l(e)?e.length:u(e)?Object.keys(e).length:P}}class Z extends Map{constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:128,t=arguments.length>1?arguments[1]:void 0;void 0!==t?super(t):super(),this.maxSize=e}get(e){const t=super.get(e);return this.has(e)&&(this.delete(e),this.set(e,t)),t}set(e,t){return this.has(e)?this.delete(e):this.size>=this.maxSize&&this.delete(this.first()),super.set(e,t)}first(){return this.keys().next().value}}class H{argTypes=[d.ValueType,d.ValueType];returnType=d.LogicalType;#t;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=e,this.cacheSize=e.cacheSize??10,this.throwErrors=e.throwErrors??!1,this.#t=new Z(this.cacheSize)}call(e,t){if(this.cacheSize>0){const n=this.#t.get(t);if(n)try{return n.test(e)}catch(e){if(this.throwErrors)throw e;return!1}}try{const n=new RegExp(this.fullMatch(t),"u");return this.cacheSize>0&&this.#t.set(t,n),n.test(e)}catch(e){if(this.throwErrors)throw e;return!1}}fullMatch(e){const t=[];return e.startsWith("^")||t.push("^"),t.push(e),e.endsWith("$")||t.push("$"),t.join("")}}class ee{argTypes=[d.ValueType,d.ValueType];returnType=d.LogicalType;#t;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.options=e,this.cacheSize=e.cacheSize??10,this.throwErrors=e.throwErrors??!1,this.#t=new Z(this.cacheSize)}call(e,t){if(this.cacheSize>0){const n=this.#t.get(t);if(n)try{return!!e.match(n)}catch(e){if(this.throwErrors)throw e;return!1}}try{const n=new RegExp(t,"u");return this.cacheSize>0&&this.#t.set(t,n),!!e.match(n)}catch(e){if(this.throwErrors)throw e;return!1}}}class te{argTypes=[d.NodesType];returnType=d.ValueType;call(e){return 1===e.length?e.nodes[0].value:P}}let ne=function(e){return e.AND="TOKEN_AND",e.COLON="TOKEN_COLON",e.COMMA="TOKEN_COMMA",e.CURRENT="TOKEN_CURRENT_NODE",e.DDOT="TOKEN_DDOT",e.DOT="TOKEN_DOT",e.DOUBLE_QUOTE_STRING="TOKEN_DOUBLE_QUOTE_STRING",e.EOF="TOKEN_EOF",e.EQ="TOKEN_EQ",e.ERROR="TOKEN_ERROR",e.FALSE="TOKEN_FALSE",e.FILTER="TOKEN_FILTER_START",e.FUNCTION="TOKEN_FUNCTION",e.GE="TOKEN_GE",e.GT="TOKEN_GT",e.INDEX="TOKEN_INDEX",e.KEY="TOKEN_KEY",e.KEYS="TOKEN_KEYS",e.LBRACKET="TOKEN_LBRACKET",e.LE="TOKEN_LE",e.LG="TOKEN_LG",e.LPAREN="TOKEN_LPAREN",e.LT="TOKEN_LT",e.NAME="TOKEN_NAME",e.NE="TOKEN_NE",e.NOT="TOKEN_NOT",e.NULL="TOKEN_NULL",e.NUMBER="NUMBER",e.OR="TOKEN_OR",e.RBRACKET="TOKEN_RBRACKET",e.ROOT="TOKEN_ROOT",e.RPAREN="TOKEN_RPAREN",e.SINGLE_QUOTE_STRING="TOKEN_SINGLE_QUOTE_STRING",e.TRUE="TOKEN_TRUE",e.WILD="TOKEN_WILD",e}({});class re{constructor(e,t,n,r){this.kind=e,this.value=t,this.index=n,this.input=r}}new re(ne.EOF,"",-1,"");class se{#n=0;constructor(e){this.tokens=e}get current(){return this.tokens[this.#n]}get peek(){return this.#n>=this.tokens.length-1?this.tokens[this.tokens.length-1]:this.tokens[this.#n+1]}next(){const e=this.current;return this.#n+=1,e}backup(){this.#n>0&&(this.#n-=1)}expect(e){if(this.current.kind!==e)throw new a(`expected token '${e}', found '${this.current.kind}'`,this.current)}expectPeek(e){const t=this.peek;if(t.kind!==e)throw new a(`expected token '${e}', found '${t.kind}'`,t)}}const oe=/e[+-]?\d+/y,ie=/[a-z][a-z_0-9]*/y,ae=/-?\d+/y,he=/-?[0-9]+/y,ce=/[\u0080-\uFFFFa-zA-Z_][\u0080-\uFFFFa-zA-Z0-9_-]*/y,ue=new Set([" ","\n","\t","\r"]);class le{filterLevel=0;parenStack=[];tokens=[];#r=0;#n=0;constructor(e,t){this.environment=e,this.path=t}get pos(){return this.#n}get start(){return this.#r}run(){let e=fe;for(;e;)e=e(this)}emit(e){this.tokens.push(new re(e,this.path.slice(this.#r,this.#n),this.#r,this.path)),this.#r=this.#n}next(){if(this.#n>=this.path.length)return"";const e=this.path[this.#n];return this.#n+=1,e}ignore(){this.#r=this.#n}backup(){if(this.#n<=this.#r){const e="can't backup beyond start";throw new r(e,new re(ne.ERROR,e,this.#n,this.path))}this.#n-=1}peek(){const e=this.next();return e&&this.backup(),e}accept(e){const t=this.next();return!!e.has(t)||(t&&this.backup(),!1)}acceptMatch(e){const t=this.next();return!!e.test(t)||(t&&this.backup(),!1)}acceptRun(e){let t=!1,n=this.next();for(;e.has(n);)n=this.next(),t=!0;return n&&this.backup(),t}acceptMatchRun(e){e.lastIndex=this.#n;const t=e.exec(this.path);return e.lastIndex=0,!!t&&(this.#n+=t[0].length,!0)}ignoreWhitespace(){if(this.#n!==this.#r){const e=`must emit or ignore before consuming whitespace ('${this.path.slice(this.#r,this.#n)}':${this.pos})`;throw new r(e,new re(ne.ERROR,e,this.pos,this.path))}return!!this.acceptRun(ue)&&(this.ignore(),!0)}error(e){this.tokens.push(new re(ne.ERROR,e,this.#n,this.path))}}function pe(e,t){const[n,r]=function(e,t){const n=new le(e,t);return[n,n.tokens]}(e,t);if(n.run(),r.length&&r[r.length-1].kind===ne.ERROR)throw new a(r[r.length-1].value,r[r.length-1]);return r}function fe(e){const t=e.next();return"$"!==t?(e.backup(),e.error(`expected '$', found '${t}'`),null):(e.emit(ne.ROOT),de)}function de(e){e.ignoreWhitespace()&&!e.peek()&&e.error("trailing whitespace");const t=e.next();switch(t){case"":return e.emit(ne.EOF),null;case".":return"."===e.peek()?(e.next(),e.emit(ne.DDOT),me):ge;case"[":return e.emit(ne.LBRACKET),ve;default:return e.backup(),e.filterLevel?we:(e.error(`expected '.', '..' or a bracketed selection, found '${t}'`),null)}}function me(e){if(e.acceptMatchRun(ce))return e.emit(ne.NAME),de;if(!e.environment.strict&&e.acceptMatchRun(e.environment.keysPattern))return e.emit(ne.KEYS),de;const t=e.next();switch(t){case"":return e.error("bald descendant segment"),null;case"*":return e.emit(ne.WILD),de;case"[":return e.emit(ne.LBRACKET),ve;default:return e.backup(),e.error(`unexpected descendent selection token '${t}'`),null}}function ge(e){if(e.ignore(),e.ignoreWhitespace())return e.error("unexpected whitespace after dot"),null;if(!e.environment.strict&&e.acceptMatchRun(e.environment.keysPattern))return e.emit(ne.KEYS),de;if(e.acceptMatchRun(ce))return e.emit(ne.NAME),de;const t=e.next();return"*"===t?(e.emit(ne.WILD),de):(e.backup(),e.error(`unexpected shorthand selector '${t}'`),null)}function ve(e){for(;;){if(e.ignoreWhitespace(),e.acceptMatchRun(ae)){e.emit(ne.INDEX);continue}if(!e.environment.strict&&e.acceptMatchRun(e.environment.keysPattern)){e.emit(ne.KEYS);continue}const t=e.next();switch(t){case"]":return e.emit(ne.RBRACKET),e.filterLevel?we:de;case"":return e.error("unclosed bracketed selection"),null;case"*":e.emit(ne.WILD);continue;case"?":return e.emit(ne.FILTER),e.filterLevel+=1,we;case",":e.emit(ne.COMMA);continue;case":":e.emit(ne.COLON);continue;case"'":return xe;case'"':return Oe;default:return e.backup(),e.error(`unexpected token '${t}' in bracketed selection`),null}}}function we(e){for(;;){e.ignoreWhitespace();const t=e.next();switch(t){case"":return e.error("unclosed bracketed selection"),null;case"]":return e.filterLevel-=1,1===e.parenStack.length?(e.error("unbalanced parentheses"),null):(e.backup(),ve);case",":if(e.emit(ne.COMMA),e.parenStack.length)continue;return e.filterLevel-=1,ve;case"'":return Ee;case'"':return Ne;case"(":e.emit(ne.LPAREN),e.parenStack.length&&(e.parenStack[e.parenStack.length-1]+=1);continue;case")":e.emit(ne.RPAREN),e.parenStack.length&&(1===e.parenStack[e.parenStack.length-1]?e.parenStack.pop():e.parenStack[e.parenStack.length-1]-=1);continue;case"$":return e.emit(ne.ROOT),de;case"@":return e.emit(ne.CURRENT),de;case"#":return e.emit(ne.KEY),de;case".":return e.backup(),de;case"!":"="===e.peek()?(e.next(),e.emit(ne.NE)):e.emit(ne.NOT);continue;case"=":if("="===e.peek()){e.next(),e.emit(ne.EQ);continue}return e.backup(),e.error(`unexpected filter selector token '${t}'`),null;case"<":"="===e.peek()?(e.next(),e.emit(ne.LE)):e.emit(ne.LT);continue;case">":"="===e.peek()?(e.next(),e.emit(ne.GE)):e.emit(ne.GT);continue;default:if(e.backup(),e.acceptMatchRun(he)){if("."===e.peek()&&(e.next(),!e.acceptMatchRun(he)))return e.error("a fractional digit is required after a decimal point"),null;e.acceptMatchRun(oe),e.emit(ne.NUMBER);continue}if(e.acceptMatchRun(/&&/y)){e.emit(ne.AND);continue}if(e.acceptMatchRun(/\|\|/y)){e.emit(ne.OR);continue}if(e.acceptMatchRun(/true/y)){e.emit(ne.TRUE);continue}if(e.acceptMatchRun(/false/y)){e.emit(ne.FALSE);continue}if(e.acceptMatchRun(/null/y)){e.emit(ne.NULL);continue}if(e.acceptMatchRun(ie)&&"("===e.peek()){e.parenStack.push(1),e.emit(ne.FUNCTION),e.next(),e.ignore();continue}}return e.error(`unexpected filter selector token '${t}'`),null}}function ye(e,t){return function(n){if(n.ignore(),n.peek()===e)return n.emit("'"===e?ne.SINGLE_QUOTE_STRING:ne.DOUBLE_QUOTE_STRING),n.next(),n.ignore(),t;for(;;){const r=n.path.slice(n.pos,n.pos+2),s=n.next();if("\\\\"!==r&&r!==`\\${e}`){if("\\"===s&&!r.match(/\\[bfnrtu/]/))return n.error("invalid escape"),null;if(!s)return n.error(`unclosed string starting at index ${n.start}`),null;if(s===e)return n.backup(),n.emit("'"===e?ne.SINGLE_QUOTE_STRING:ne.DOUBLE_QUOTE_STRING),n.next(),n.ignore(),t}else n.next()}}}const xe=ye("'",ve),Oe=ye('"',ve),Ee=ye("'",we),Ne=ye('"',we);class ke{constructor(e,t){this.environment=e,this.token=t}}class Se extends ke{constructor(e,t,n,r){super(e,t),this.environment=e,this.token=t,this.name=n,this.shorthand=r}resolve(e){const t=[];for(const n of e)!c(n.value)&&_(n.value,this.name)&&t.push(new $(n.value[this.name],n.location.concat(this.name),n.root));return t}*lazyResolve(e){for(const t of e)!c(t.value)&&_(t.value,this.name)&&(yield new $(t.value[this.name],t.location.concat(this.name),t.root))}toString(){return this.shorthand?`['${this.name}']`:`'${this.name}'`}}class Te extends ke{constructor(e,t,n){if(super(e,t),this.environment=e,this.token=t,this.index=n,n<this.environment.minIntIndex||n>this.environment.maxIntIndex)throw new o("index out of range",this.token)}resolve(e){const t=[];for(const n of e)if(c(n.value)){const e=this.normalizedIndex(n.value.length);e in n.value&&t.push(new $(n.value[e],n.location.concat(e),n.root))}return t}*lazyResolve(e){for(const t of e)if(c(t.value)){const e=this.normalizedIndex(t.value.length);e in t.value&&(yield new $(t.value[e],t.location.concat(e),t.root))}}toString(){return String(this.index)}normalizedIndex(e){return this.index<0&&e>=Math.abs(this.index)?e+this.index:this.index}}class Re extends ke{constructor(e,t,n,r,s){super(e,t),this.environment=e,this.token=t,this.start=n,this.stop=r,this.step=s,this.checkRange(n,r,s)}resolve(e){const t=[];for(const n of e)if(c(n.value))for(const[e,r]of this.slice(n.value,this.start,this.stop,this.step))t.push(new $(r,n.location.concat(e),n.root));return t}*lazyResolve(e){for(const t of e)if(c(t.value))for(const[e,n]of this.lazySlice(t.value,this.start,this.stop,this.step))yield new $(n,t.location.concat(e),t.root)}toString(){return`${this.start?this.start:""}:${this.stop?this.stop:""}:${this.step?this.step:"1"}`}checkRange(){for(var e=arguments.length,t=new Array(e),n=0;n<e;n++)t[n]=arguments[n];for(const e of t)if(void 0!==e&&(e<this.environment.minIntIndex||e>this.environment.maxIntIndex))throw new o("index out of range",this.token)}slice(e,t,n,r){if(!e.length)return[];if(t=null==t?r&&r<0?e.length-1:0:t<0?Math.max(e.length+t,0):Math.min(t,e.length-1),n=null==n?r&&r<0?-1:e.length:n<0?Math.max(e.length+n,-1):Math.min(n,e.length),0===r)return[];r||(r=1);const s=[];if(r>0)for(let o=t;o<n;o+=r)s.push([o,e[o]]);else for(let o=t;o>n;o+=r)s.push([o,e[o]]);return s}*lazySlice(e,t,n,r){if(e.length)if(t=null==t?r&&r<0?e.length-1:0:t<0?Math.max(e.length+t,0):Math.min(t,e.length-1),n=null==n?r&&r<0?-1:e.length:n<0?Math.max(e.length+n,-1):Math.min(n,e.length),void 0===r)for(let r=t;r<n;r+=1)yield[r,e[r]];else if(r>0)for(let s=t;s<n;s+=r)yield[s,e[s]];else if(r<0)for(let s=t;s>n;s+=r)yield[s,e[s]]}}class $e extends ke{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super(e,t),this.environment=e,this.token=t,this.shorthand=n}resolve(e){const t=[];for(const n of e)if(!(n.value instanceof String))if(c(n.value))for(let e=0;e<n.value.length;e++)t.push(new $(n.value[e],n.location.concat(e),n.root));else if(u(n.value))for(const[e,r]of this.environment.entries(n.value))t.push(new $(r,n.location.concat(e),n.root));return t}*lazyResolve(e){for(const t of e)if(!(t.value instanceof String))if(c(t.value))for(let e=0;e<t.value.length;e++)yield new $(t.value[e],t.location.concat(e),t.root);else if(u(t.value))for(const[e,n]of this.environment.entries(t.value))yield new $(n,t.location.concat(e),t.root)}toString(){return this.shorthand?"[*]":"*"}}class be extends ke{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.selector=n}resolve(e){const t=[];if(this.environment.nondeterministic)for(const n of e)for(const e of this.nondeterministicVisitor(n))t.push(e);else for(const n of e){t.push(n);for(const e of this.visitor(n))t.push(e)}return this.selector.resolve(t)}*lazyResolve(e){yield*this.selector.lazyResolve(this._lazyResolve(e))}*_lazyResolve(e){for(const t of e){const e=[{node:t,depth:0}];for(yield t;e.length;){const{node:t,depth:n}=e.pop();if(n>=this.environment.maxRecursionDepth)throw new h("recursion limit reached",this.token);if(!(t.value instanceof String))if(c(t.value))for(let r=0;r<t.value.length;r++){const s=new $(t.value[r],t.location.concat(r),t.root);yield s,u(s.value)&&e.push({node:s,depth:n+1})}else if(u(t.value))for(const[r,s]of this.environment.entries(t.value)){const o=new $(s,t.location.concat(r),t.root);yield o,u(o.value)&&e.push({node:o,depth:n+1})}}}}toString(){return`..${this.selector.toString()}`}visitor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;if(t>=this.environment.maxRecursionDepth)throw new h("recursion limit reached",this.token);const n=[];if(e.value instanceof String)return n;if(c(e.value))for(let r=0;r<e.value.length;r++){const s=new $(e.value[r],e.location.concat(r),e.root);n.push(s);for(const e of this.visitor(s,t+1))n.push(e)}else if(u(e.value))for(const[r,s]of this.environment.entries(e.value)){const o=new $(s,e.location.concat(r),e.root);n.push(o);for(const e of this.visitor(o,t+1))n.push(e)}return n}nondeterministicVisitor(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=[e];let r=this.nondeterministicChildren(e).map((e=>[e,t]));for(;r.length;){const[e,t]=r.shift();if(n.push(e),t>=this.environment.maxRecursionDepth)throw new h("recursion limit reached",this.token);const s=Math.random()<.5;for(const o of this.nondeterministicChildren(e))if(s){n.push(o);r=Ie(r,this.nondeterministicChildren(o).map((e=>[e,t+2])))}else r.push([o,t+1])}return n}nondeterministicChildren(e){const t=[];if(e.value instanceof String)return t;if(c(e.value))for(let n=0;n<e.value.length;n++)t.push(new $(e.value[n],e.location.concat(n),e.root));else if(u(e.value))for(const[n,r]of this.environment.entries(e.value))t.push(new $(r,e.location.concat(n),e.root));return t}}class Pe extends ke{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.expression=n}resolve(e){const t=[];for(const n of e)if(!(n.value instanceof String))if(c(n.value))for(let e=0;e<n.value.length;e++){const r=n.value[e],s={environment:this.environment,currentValue:r,rootValue:n.root,currentKey:e};this.expression.evaluate(s)&&t.push(new $(r,n.location.concat(e),n.root))}else if(u(n.value))for(const[e,r]of this.environment.entries(n.value)){const s={environment:this.environment,currentValue:r,rootValue:n.root,currentKey:e};this.expression.evaluate(s)&&t.push(new $(r,n.location.concat(e),n.root))}return t}*lazyResolve(e){for(const t of e)if(!(t.value instanceof String))if(c(t.value))for(let e=0;e<t.value.length;e++){const n=t.value[e],r={environment:this.environment,currentValue:n,rootValue:t.root,lazy:!0,currentKey:e};this.expression.evaluate(r)&&(yield new $(n,t.location.concat(e),t.root))}else if(u(t.value))for(const[e,n]of this.environment.entries(t.value)){const r={environment:this.environment,currentValue:n,rootValue:t.root,lazy:!0,currentKey:e};this.expression.evaluate(r)&&(yield new $(n,t.location.concat(e),t.root))}}toString(){return`?${this.expression.toString()}`}}class _e extends ke{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.items=n}resolve(e){const t=[];for(const n of e)for(const e of this.items)for(const r of e.resolve([n]))t.push(r);return t}*lazyResolve(e){for(const t of e)for(const e of this.items)yield*e.lazyResolve([t])}toString(){return`[${this.items.map((e=>e.toString())).join(", ")}]`}}function Ie(e,t){if(0===e.length)return t;if(0===t.length)return e;const n=[],r=e[Symbol.iterator](),s=t[Symbol.iterator]();for(let t=0;t<e.length;t++)n.push(r);for(let e=0;e<t.length;e++)n.push(s);return function(e){for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}}(n),n.map((e=>e.next().value))}var Le=Object.freeze({__proto__:null,BracketedSelection:_e,FilterSelector:Pe,IndexSelector:Te,JSONPathSelector:ke,NameSelector:Se,RecursiveDescentSegment:be,SliceSelector:Re,WildcardSelector:$e});class Ae{constructor(e,t){this.environment=e,this.selectors=t}query(e){let t=[new $(e,[],e)];for(const e of this.selectors)t=e.resolve(t);return new b(t)}lazyQuery(e){let t=[new $(e,[],e)][Symbol.iterator]();for(const e of this.selectors)t=e.lazyResolve(t);return t}match(e){const t=this.lazyQuery(e).next();if(!t.done)return t.value}toString(){return`$${this.selectors.map((e=>e.toString())).join("")}`}singularQuery(){for(const e of this.selectors)if(!(e instanceof Se||e instanceof _e&&1===e.items.length&&(e.items[0]instanceof Se||e.items[0]instanceof Te)))return!1;return!0}}class Ke extends I{evaluate(e){return e.currentKey??P}toString(){return"#"}}class Me extends ke{constructor(e,t){let n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];super(e,t),this.environment=e,this.token=t,this.shorthand=n}resolve(e){const t=[];for(const n of e)if(!(n.value instanceof String||c(n.value))&&u(n.value)){let e=0;for(const[r,s]of this.environment.entries(n.value))t.push(new $(r,n.location.concat("[~]",`[${e}]`),n.root)),e++}return t}*lazyResolve(e){for(const t of e)if(!(t.value instanceof String||c(t.value))&&u(t.value)){let e=0;for(const[n,r]of this.environment.entries(t.value))yield new $(n,t.location.concat("[~]",`[${e}]`),t.root),e++}}toString(){return this.shorthand?"[~]":"~"}}const je=new Map([[ne.AND,5],[ne.EQ,6],[ne.GE,6],[ne.GT,6],[ne.LE,6],[ne.LT,6],[ne.NE,6],[ne.NOT,7],[ne.OR,4],[ne.RPAREN,1]]),Fe=new Map([[ne.AND,"&&"],[ne.EQ,"=="],[ne.GE,">="],[ne.GT,">"],[ne.LE,"<="],[ne.LT,"<"],[ne.NE,"!="],[ne.OR,"||"]]),ze=new Set(["==",">=",">","<=","<","!="]);class Je{constructor(e){this.environment=e,this.tokenMap=new Map([[ne.FALSE,this.parseBoolean],[ne.NUMBER,this.parseNumber],[ne.LPAREN,this.parseGroupedExpression],[ne.NOT,this.parsePrefixExpression],[ne.NULL,this.parseNull],[ne.ROOT,this.parseRootQuery],[ne.CURRENT,this.parseRelativeQuery],[ne.SINGLE_QUOTE_STRING,this.parseString],[ne.DOUBLE_QUOTE_STRING,this.parseString],[ne.TRUE,this.parseBoolean],[ne.FUNCTION,this.parseFunction],[ne.KEY,this.parseCurrentKey],[ne.KEY,this.parseCurrentKey]])}parse(e){e.current.kind===ne.ROOT&&e.next();const t=this.parsePath(e);if(e.current.kind!==ne.EOF)throw new a(`unexpected token '${e.current.kind}'`,e.current);return t}parsePath(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=[];for(;;){const r=this.parseSegment(e);if(!r){t&&e.backup();break}n.push(r),e.next()}return n}parseSegment(e){switch(e.current.kind){case ne.NAME:return new Se(this.environment,e.current,e.current.value,!0);case ne.WILD:return new $e(this.environment,e.current,!0);case ne.KEYS:return new Me(this.environment,e.current,!0);case ne.DDOT:{const t=e.current;e.next();const n=this.parseSegment(e);if(!n)throw new a("bald descendant segment",e.current);return new be(this.environment,t,n)}case ne.LBRACKET:return this.parseBracketedSelection(e);default:return null}}parseIndex(e){if(e.current.value.length>1&&e.current.value.startsWith("0")||e.current.value.startsWith("-0"))throw new a("leading zero in index selector",e.current);return new Te(this.environment,e.current,Number(e.current.value))}parseSlice(e){const t=e.current,n=[];function r(e){if(e.kind===ne.INDEX){if(e.value.length>1&&e.value.startsWith("0")||e.value.startsWith("-0"))throw new a("leading zero in index selector",e);return!0}return!1}return r(e.current)?(n.push(Number(e.current.value)),e.next(),e.expect(ne.COLON),e.next()):(n.push(void 0),e.expect(ne.COLON),e.next()),r(e.current)?(n.push(Number(e.current.value)),e.next(),e.current.kind===ne.COLON&&e.next()):e.current.kind===ne.COLON&&(n.push(void 0),e.expect(ne.COLON),e.next()),r(e.current)&&(n.push(Number(e.current.value)),e.next()),e.backup(),new Re(this.environment,t,...n)}parseBracketedSelection(e){const t=e.next(),n=[];for(;e.current.kind!==ne.RBRACKET;){switch(e.current.kind){case ne.SINGLE_QUOTE_STRING:case ne.DOUBLE_QUOTE_STRING:n.push(new Se(this.environment,e.current,this.decodeString(e.current,!0),!1));break;case ne.FILTER:n.push(this.parseFilter(e));break;case ne.INDEX:e.peek.kind===ne.COLON?n.push(this.parseSlice(e)):n.push(this.parseIndex(e));break;case ne.COLON:n.push(this.parseSlice(e));break;case ne.WILD:n.push(new $e(this.environment,e.current));break;case ne.KEYS:n.push(new Me(this.environment,e.current));break;case ne.EOF:throw new a("unexpected end of query",e.current);default:throw new a(`unexpected token in bracketed selection '${e.current.kind}'`,e.current)}e.peek.kind!==ne.RBRACKET&&(e.expectPeek(ne.COMMA),e.next()),e.next()}if(!n.length)throw new a("empty bracketed segment",t);return new _e(this.environment,t,n)}parseFilter(e){const t=e.next(),n=this.parseFilterExpression(e);if(n instanceof G){const e=this.environment.functionRegister.get(n.name);if(e&&e.returnType===d.ValueType)throw new s(`result of ${n.name}() must be compared`,n.token)}return new Pe(this.environment,t,new J(t,n))}parseBoolean(e){return e.current.kind===ne.FALSE?new K(e.current,!1):new K(e.current,!0)}parseNull(e){return new A(e.current)}parseString(e){return new M(e.current,this.decodeString(e.current))}parseNumber(e){return new j(e.current,Number(e.current.value))}parsePrefixExpression(e){return e.expect(ne.NOT),e.next(),new F(e.current,"!",this.parseFilterExpression(e,7))}parseInfixExpression(e,t){const n=e.next(),r=je.get(n.kind)||1,s=this.parseFilterExpression(e,r),o=Fe.get(n.kind);if(!o)throw new a(`unknown operator '${n.kind}'`,n);return ze.has(o)&&(this.throwForNonComparable(t),this.throwForNonComparable(s)),new z(n,t,o,s)}parseGroupedExpression(e){if(e.peek.kind===ne.RPAREN)throw new a("empty paren expression",e.current);e.next();let t=this.parseFilterExpression(e);for(e.next();e.current.kind!==ne.RPAREN;){if(e.current.kind===ne.EOF)throw new a("unbalanced parentheses",e.current);if(!Fe.has(e.current.kind))throw new a(`expected an expression, found '${e.current.value}'`,e.current);t=this.parseInfixExpression(e,t)}return e.expect(ne.RPAREN),t}parseRootQuery(e){const t=e.next();return new U(t,new Ae(this.environment,this.parsePath(e,!0)))}parseRelativeQuery(e){const t=e.next();return new D(t,new Ae(this.environment,this.parsePath(e,!0)))}parseCurrentKey(e){return new Ke(e.current)}parseFunction(e){const t=[],n=e.next();for(;e.current.kind!==ne.RPAREN;){const n=this.tokenMap.get(e.current.kind);if(!n)throw new a(`unexpected '${e.current.value}'`,e.current);let r=n.bind(this)(e),s=e.peek.kind;for(;Fe.has(s);)e.next(),r=this.parseInfixExpression(e,r),s=e.peek.kind;if(t.push(r),e.peek.kind!==ne.RPAREN){if(e.peek.kind===ne.RBRACKET)break;e.expectPeek(ne.COMMA),e.next()}e.next()}return e.expect(ne.RPAREN),new G(n,n.value,this.environment.checkWellTypedness(n,t))}parseFilterExpression(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;const n=this.tokenMap.get(e.current.kind);if(!n){let t;switch(e.current.kind){case ne.EOF:case ne.RBRACKET:t="end of expression";break;default:t=`'${e.current.value}'`}throw new a(`unexpected ${t}`,e.current)}let r=n.bind(this)(e);for(;;){const n=e.peek.kind;if(n===ne.EOF||n===ne.RBRACKET||(je.get(n)||1)<t)break;if(!Fe.has(n))return r;e.next(),r=this.parseInfixExpression(e,r)}return r}decodeString(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];try{return JSON.parse(e.kind===ne.SINGLE_QUOTE_STRING?`"${e.value.replaceAll('"','\\"').replaceAll("\\'","'")}"`:`"${e.value}"`)}catch{throw new a(`invalid ${t?"name selector":"string literal"} '${e.value}'`,e)}}throwForNonComparable(e){if((e instanceof U||e instanceof D)&&!e.path.singularQuery())throw new s("non-singular query is not comparable",e.token);if(e instanceof G){const t=this.environment.functionRegister.get(e.name);if(t&&t.returnType!==d.ValueType)throw new s(`result of ${e.name}() is not comparable`,e.token)}}}class Ce{functionRegister=new Map;constructor(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};this.strict=e.strict??!0,this.maxIntIndex=e.maxIntIndex??Math.pow(2,53)-1,this.minIntIndex=e.maxIntIndex??-Math.pow(2,53)-1,this.maxRecursionDepth=e.maxRecursionDepth??50,this.nondeterministic=e.nondeterministic??!1,this.keysPattern=e.keysPattern??/~/y,this.parser=new Je(this),this.setupFilterFunctions()}compile(e){return new Ae(this,this.parser.parse(new se(pe(this,e))))}query(e,t){return this.compile(e).query(t)}lazyQuery(e,t){return this.compile(e).lazyQuery(t)}match(e,t){return this.compile(e).match(t)}setupFilterFunctions(){this.functionRegister.set("count",new Y),this.functionRegister.set("length",new X),this.functionRegister.set("search",new ee),this.functionRegister.set("match",new H),this.functionRegister.set("value",new te)}checkWellTypedness(e,t){const n=this.functionRegister.get(e.value);if(!n)throw new i(`no such function '${e.value}'`,e);if(t.length!==n.argTypes.length)throw new s(`${e.value}() takes ${n.argTypes.length} argument${1===n.argTypes.length?"":"s"}, ${t.length} given`,e);for(const[r,o,i]of n.argTypes.map(((e,n)=>[e,t[n],n])))switch(r){case d.ValueType:if(!(o instanceof L||o instanceof Ke||o instanceof C&&o.path.singularQuery()||o instanceof G&&this.functionRegister.get(o.name)?.returnType===d.ValueType))throw new s(`${e.value}() argument ${i} must be of ValueType`,o.token);break;case d.LogicalType:if(!(o instanceof C||o instanceof z))throw new s(`${e.value}() argument ${i} must be of LogicalType`,o.token);break;case d.NodesType:if(!(o instanceof C||o instanceof G&&this.functionRegister.get(o.name)?.returnType===d.NodesType))throw new s(`${e.value}() argument ${i} must be of NodesType`,o.token)}return t}entries(e){return this.nondeterministic?function(e){for(let t=e.length-1;t>0;t--){const n=Math.floor(Math.random()*(t+1));[e[t],e[n]]=[e[n],e[t]]}return e}(Object.entries(e)):Object.entries(e)}}var De=Object.freeze({__proto__:null,Count:Y,FunctionExpressionType:d,Length:X,Match:H,Search:ee,Value:te});const Ue=new Ce;function Ge(e,t){return Ue.query(e,t)}function Qe(e,t){return Ue.lazyQuery(e,t)}function Ve(e){return Ue.compile(e)}var We=Object.freeze({__proto__:null,DEFAULT_ENVIRONMENT:Ue,FunctionExpressionType:d,JSONPath:Ae,JSONPathEnvironment:Ce,JSONPathError:t,JSONPathIndexError:o,JSONPathLexerError:r,JSONPathNode:$,JSONPathNodeList:b,JSONPathRecursionLimitError:h,JSONPathSyntaxError:a,JSONPathTypeError:s,Nothing:P,Token:re,TokenKind:ne,compile:Ve,expressions:q,functions:De,lazyQuery:Qe,match:function(e,t){return Ue.match(e,t)},query:Ge,selectors:Le});class Be extends Error{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPatchError"}}class qe extends Be{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPatchTestFailure"}}class Ye{name="add";constructor(e,t){this.path=e,this.value=t}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===O)return this.value;const s=this.path.tokens.at(-1);if(void 0===s)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n))if(r===O){if("-"!==s)throw new Be(`index out of range (${this.name}:${t})`);n.push(this.value)}else n.splice(Number(s),0,this.value);else{if(!u(n))throw new Be(`unexpected operation on '${typeof n}' (${this.name}:${t})`);n[s]=this.value}return e}toObject(){return{op:this.name,path:this.path.toString(),value:this.value}}}class Xe{name="remove";constructor(e){this.path=e}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===O)throw new Be(`can't remove root (${this.name}:${t})`);const s=this.path.tokens.at(-1);if(void 0===s)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n)){if(r===O)throw new Be(`can't remove nonexistent item (${this.name}:${t})`);n.splice(Number(s),1)}else{if(!u(n))throw new Be(`unexpected operation on '${typeof n}' (${this.name}:${t})`);if(r===O)throw new Be(`can't remove nonexistent property (${this.name}:${t})`);delete n[s]}return e}toObject(){return{op:this.name,path:this.path.toString()}}}class Ze{name="replace";constructor(e,t){this.path=e,this.value=t}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===O)return this.value;const s=this.path.tokens.at(-1);if(void 0===s)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n)){if(r===O)throw new Be(`can't replace nonexistent item (${this.name}:${t})`);n.splice(Number(s),1,this.value)}else{if(!u(n))throw new Be(`unexpected operation on '${typeof n}' (${this.name}:${t})`);if(r===O)throw new Be(`can't replace nonexistent property (${this.name}:${t})`);n[s]=this.value}return e}toObject(){return{op:this.name,path:this.path.toString(),value:this.value}}}class He{name="move";constructor(e,t){this.from=e,this.path=t}apply(e,t){if(this.path.isRelativeTo(this.from))throw new Be(`can't move object to one of its own children (${this.name}:${t})`);const[n,r]=this.from.resolveWithParent(e);if(r===O)throw new Be(`source object does not exist (${this.name}:${t})`);const s=this.from.tokens.at(-1);if(void 0===s)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);c(n)?n.splice(Number(s),1):u(n)&&delete n[s];const[o,i]=this.path.resolveWithParent(e);if(o===O)return r;const a=this.path.tokens.at(-1);if(void 0===a)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(o))o.splice(Number(a),0,r);else{if(!u(o))throw new Be(`unexpected operation on '${typeof parent}' (${this.name}:${t})`);o[a]=r}return e}toObject(){return{op:this.name,from:this.from.toString(),path:this.path.toString()}}}class et{name="copy";constructor(e,t){this.from=e,this.path=t}apply(e,t){const[n,r]=this.from.resolveWithParent(e);if(r===O)throw new Be(`source object does not exist (${this.name}:${t})`);const[s]=this.path.resolveWithParent(e);if(s===O)return this.deepCopy(r);const o=this.path.tokens.at(-1);if(void 0===o)throw new Be(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(s))s.splice(Number(o),0,this.deepCopy(r));else{if(!u(s))throw new Be(`unexpected operation on '${typeof parent}' (${this.name}:${t})`);s[o]=this.deepCopy(r)}return e}toObject(){return{op:this.name,from:this.from.toString(),path:this.path.toString()}}deepCopy(e){return JSON.parse(JSON.stringify(e))}}class tt{name="test";constructor(e,t){this.path=e,this.value=t}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(!f(r,this.value))throw new qe(`test failed (${this.name}:${t})`);return e}toObject(){return{op:this.name,path:this.path.toString(),value:this.value}}}class nt{ops=[];constructor(e){e&&this.build(e)}*[Symbol.iterator](){for(const e of this.ops)yield e.toObject()}add(e,t){return this.ops.push(new Ye(this.ensurePointer(e,"add",this.ops.length),t)),this}remove(e){return this.ops.push(new Xe(this.ensurePointer(e,"remove",this.ops.length))),this}replace(e,t){return this.ops.push(new Ze(this.ensurePointer(e,"replace",this.ops.length),t)),this}move(e,t){return this.ops.push(new He(this.ensurePointer(e,"move",this.ops.length),this.ensurePointer(t,"move",this.ops.length))),this}copy(e,t){return this.ops.push(new et(this.ensurePointer(e,"copy",this.ops.length),this.ensurePointer(t,"copy",this.ops.length))),this}test(e,t){return this.ops.push(new tt(this.ensurePointer(e,"test",this.ops.length),t)),this}apply(e){let t=e;for(let e=0;e<this.ops.length;e++){const n=this.ops[e];try{t=n.apply(t,e)}catch(t){if(t instanceof g)throw new Be(`${t.message} (${n.name}:${e})`);throw t}}return t}toArray(){return this.ops.map((e=>e.toObject()))}build(e){for(let t=0;t<e.length;t++){const n=e[t];switch(n.op){case"add":this.add(this.opPointer(n,"path","add",t),this.opValue(n,"value","add",t));break;case"remove":this.remove(this.opPointer(n,"path","remove",t));break;case"replace":this.replace(this.opPointer(n,"path","replace",t),this.opValue(n,"value","replace",t));break;case"move":this.move(this.opPointer(n,"from","move",t),this.opPointer(n,"path","move",t));break;case"copy":this.copy(this.opPointer(n,"from","copy",t),this.opPointer(n,"path","copy",t));break;case"test":this.test(this.opPointer(n,"path","test",t),this.opValue(n,"value","test",t));break;default:throw new Be(`expected 'op' to be one of 'add', 'remove', 'replace', 'move', 'copy' or 'test' (${n.op}:${t})`)}}}opPointer(e,t,n,r){if(!Object.hasOwn(e,t))throw new Be(`missing property '${t}' (${n}:${r})`);const s=e[t];if(!l(s))throw new Be(`expected a JSON Pointer string for '${t}', found ${typeof s} (${n}:${r})`);try{return new E(s)}catch(e){if(e instanceof m)throw new Be(`${e.message} (${n}:${r})`);throw e}}opValue(e,t,n,r){if(!Object.hasOwn(e,t))throw new Be(`missing property '${t}' (${n}:${r})`);return e[t]}ensurePointer(e,t,n){if(e instanceof E)return e;if(!l(e))throw new Be(`expected a JSON Pointer string, found ${typeof e} (${t}:${n})`);try{return new E(e)}catch(e){if(e instanceof m)throw new Be(`${e.message} (${t}:${n})`);throw e}}}function rt(e,t){return new nt(e).apply(t)}var st=Object.freeze({__proto__:null,JSONPatch:nt,JSONPatchError:Be,JSONPatchTestFailure:qe,apply:rt});return e.DEFAULT_ENVIRONMENT=Ue,e.FunctionExpressionType=d,e.JSONPatch=nt,e.JSONPatchError=Be,e.JSONPatchTestFailure=qe,e.JSONPath=Ae,e.JSONPathEnvironment=Ce,e.JSONPathError=t,e.JSONPathIndexError=o,e.JSONPathLexerError=r,e.JSONPathNode=$,e.JSONPathNodeList=b,e.JSONPathRecursionLimitError=h,e.JSONPathSyntaxError=a,e.JSONPathTypeError=s,e.JSONPointer=E,e.Nothing=P,e.RelativeJSONPointer=S,e.Token=re,e.TokenKind=ne,e.UNDEFINED=O,e.apply=rt,e.compile=Ve,e.jsonpatch=st,e.jsonpath=We,e.jsonpointer=R,e.lazyQuery=Qe,e.query=Ge,e.resolve=T,e.version="1.2.1",e}({});
|
|
2
2
|
//# sourceMappingURL=json-p3.iife.min.js.map
|