json-p3 1.1.1 → 1.2.0

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.
@@ -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 g extends Error{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerError"}}class m extends g{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerResolutionError"}}class v extends m{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerIndexError"}}class w extends m{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerKeyError"}}class y extends g{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerSyntaxError"}}class O extends m{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerTypeError"}}const x=Symbol.for("jsonpointer.undefined");class N{#e;constructor(e){this.tokens=this.parse(e),this.#e=N.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]:x;try{return this.tokens.reduce(this.getItem.bind(this),e)}catch(e){if(e instanceof m&&t!==x)return t;throw e}}resolveWithParent(e){if(!this.tokens.length)return[x,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,x];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 '${N.encode(this.tokens.slice(0,n+1))}'`)}throw new v(`index out of range '${N.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 '${N.encode(this.tokens.slice(0,n+1))}'`)}throw new O(`found primitive value, expected an object '${N.encode(this.tokens.slice(0,n+1))}'`)}_join(e){if(!l(e))throw new O("join() requires string arguments, found "+typeof e);if(e.startsWith("/"))return new N(e);const t=this.tokens.concat(e.split("/").map((e=>e.replaceAll("~1","/").replaceAll("~0","~"))));return new N(N.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 m)return!1;throw e}return!0}parent(){return this.tokens.length?new N(N.encode(this.tokens.slice(0,this.tokens.length-1))):this}to(e){return(l(e)?new S(e):e).to(this)}}const E=/(?<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 N(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 N?n.push(...this.pointer.tokens):n[n.length-1]=`#${n[n.length-1]}`,new N(N.encode(n))}parse(e){const t=E.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 N(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]:x;return new N(e).resolve(t,n)}var R=Object.freeze({__proto__:null,JSONPointer:N,JSONPointerError:g,JSONPointerIndexError:v,JSONPointerKeyError:w,JSONPointerResolutionError:m,JSONPointerSyntaxError:y,JSONPointerTypeError:O,RelativeJSONPointer:S,UNDEFINED:x,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 N(N.encode(this.location.map(String))):new N("")}}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 I(e,t){return u(e)&&Object.hasOwn(e,t)}class _{constructor(e){this.token=e}}class L extends _{}class A extends L{evaluate(){return null}toString(){return"null"}}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 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 M extends _{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 _{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):W(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 D extends _{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 K extends _{constructor(e,t){super(e),this.token=e,this.path=t}}class C extends K{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 K{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 _{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 W(e,t,n){switch(t){case"==":return V(e,n);case"!=":return!V(e,n);case"<":return B(e,n);case">":return B(n,e);case">=":return B(n,e)||V(e,n);case"<=":return B(e,n)||V(e,n);default:return!1}}function V(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:j,FilterExpression:_,FilterExpressionLiteral:L,FunctionExtension:G,InfixExpression:z,JSONPathQuery:K,LogicalExpression:D,NullLiteral:A,NumberLiteral:J,PrefixExpression:M,RelativeQuery:C,RootQuery:U,StringLiteral:F,compare:W});class X{argTypes=[d.NodesType];returnType=d.ValueType;call(e){return e.length}}class Z{argTypes=[d.ValueType];returnType=d.ValueType;call(e){return c(e)||l(e)?e.length:u(e)?Object.keys(e).length:P}}class H 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 Y{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 H(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 H(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.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){this.path=e}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){const[t,n]=function(e){const t=new le(e);return[t,t.tokens]}(e);if(t.run(),n.length&&n[n.length-1].kind===ne.ERROR)throw new a(n[n.length-1].value,n[n.length-1]);return n}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),ge):me;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 ge(e){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.acceptMatchRun(ce)?(e.emit(ne.NAME),de):(e.error(`unexpected descendent selection token '${t}'`),null)}}function me(e){if(e.ignore(),e.ignoreWhitespace())return e.error("unexpected whitespace after dot"),null;const t=e.next();return"*"===t?(e.emit(ne.WILD),de):(e.backup(),e.acceptMatchRun(ce)?(e.emit(ne.NAME),de):(e.error(`unexpected shorthand selector '${t}'`),null))}function ve(e){for(;;){e.ignoreWhitespace();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 Oe;case'"':return xe;default:if(e.backup(),e.acceptMatchRun(ae)){e.emit(ne.INDEX);continue}return e.error(`unexpected token '${t}' in bracketed selection`),null}}}function we(e){for(;;){e.ignoreWhitespace();const t=e.next();switch(t){case"":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 Ne;case'"':return Ee;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.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 Oe=ye("'",ve),xe=ye('"',ve),Ne=ye("'",we),Ee=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)I(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)I(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=[];for(const n of e){t.push(n);for(const e of this.visit(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()}`}visit(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.visit(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.visit(o,t+1))n.push(e)}return n}}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};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};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};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};this.expression.evaluate(r)&&(yield new $(n,t.location.concat(e),t.root))}}toString(){return`?${this.expression.toString()}`}}class Ie 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(", ")}]`}}var _e=Object.freeze({__proto__:null,BracketedSelection:Ie,FilterSelector:Pe,IndexSelector:Te,JSONPathSelector:ke,NameSelector:Se,RecursiveDescentSegment:be,SliceSelector:Re,WildcardSelector:$e});class Le{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 Ie&&1===e.items.length&&(e.items[0]instanceof Se||e.items[0]instanceof Te)))return!1;return!0}}const Ae=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]]),je=new Map([[ne.AND,"&&"],[ne.EQ,"=="],[ne.GE,">="],[ne.GT,">"],[ne.LE,"<="],[ne.LT,"<"],[ne.NE,"!="],[ne.OR,"||"]]),Fe=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]])}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.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.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 Ie(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 D(t,n))}parseBoolean(e){return e.current.kind===ne.FALSE?new j(e.current,!1):new j(e.current,!0)}parseNull(e){return new A(e.current)}parseString(e){return new F(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 M(e.current,"!",this.parseFilterExpression(e,7))}parseInfixExpression(e,t){const n=e.next(),r=Ae.get(n.kind)||1,s=this.parseFilterExpression(e,r),o=je.get(n.kind);if(!o)throw new a(`unknown operator '${n.kind}'`,n);return Fe.has(o)&&(this.throwForNonComparable(t),this.throwForNonComparable(s)),new z(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 Le(this.environment,this.parsePath(e,!0)))}parseRelativeQuery(e){const t=e.next();return new C(t,new Le(this.environment,this.parsePath(e,!0)))}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(;je.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||(Ae.get(n)||1)<t)break;if(!je.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 C)&&!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 Me{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.parser=new Je(this),this.setupFilterFunctions()}compile(e){return new Le(this,this.parser.parse(new se(pe(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 X),this.functionRegister.set("length",new Z),this.functionRegister.set("search",new ee),this.functionRegister.set("match",new Y),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 K&&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 K||o instanceof z))throw new s(`${e.value}() argument ${i} must be of LogicalType`,o.token);break;case d.NodesType:if(!(o instanceof K||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 ze=Object.freeze({__proto__:null,Count:X,FunctionExpressionType:d,Length:Z,Match:Y,Search:ee,Value:te});const De=new Me;function Ke(e,t){return De.query(e,t)}function Ce(e,t){return De.lazyQuery(e,t)}function Ue(e){return De.compile(e)}var Ge=Object.freeze({__proto__:null,DEFAULT_ENVIRONMENT:De,FunctionExpressionType:d,JSONPath:Le,JSONPathEnvironment:Me,JSONPathError:t,JSONPathIndexError:o,JSONPathLexerError:r,JSONPathNode:$,JSONPathNodeList:b,JSONPathRecursionLimitError:h,JSONPathSyntaxError:a,JSONPathTypeError:s,Nothing:P,Token:re,TokenKind:ne,compile:Ue,expressions:q,functions:ze,lazyQuery:Ce,match:function(e,t){return De.match(e,t)},query:Ke,selectors:_e});class Qe extends Error{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPatchError"}}class We extends Qe{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPatchTestFailure"}}class Ve{name="add";constructor(e,t){this.path=e,this.value=t}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===x)return this.value;const s=this.path.tokens.at(-1);if(void 0===s)throw new Qe(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n))if(r===x){if("-"!==s)throw new Qe(`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 Qe(`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 Be{name="remove";constructor(e){this.path=e}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===x)throw new Qe(`can't remove root (${this.name}:${t})`);const s=this.path.tokens.at(-1);if(void 0===s)throw new Qe(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n)){if(r===x)throw new Qe(`can't remove nonexistent item (${this.name}:${t})`);n.splice(Number(s),1)}else{if(!u(n))throw new Qe(`unexpected operation on '${typeof n}' (${this.name}:${t})`);if(r===x)throw new Qe(`can't remove nonexistent property (${this.name}:${t})`);delete n[s]}return e}toObject(){return{op:this.name,path:this.path.toString()}}}class qe{name="replace";constructor(e,t){this.path=e,this.value=t}apply(e,t){const[n,r]=this.path.resolveWithParent(e);if(n===x)return this.value;const s=this.path.tokens.at(-1);if(void 0===s)throw new Qe(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(n)){if(r===x)throw new Qe(`can't replace nonexistent item (${this.name}:${t})`);n.splice(Number(s),1,this.value)}else{if(!u(n))throw new Qe(`unexpected operation on '${typeof n}' (${this.name}:${t})`);if(r===x)throw new Qe(`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 Xe{name="move";constructor(e,t){this.from=e,this.path=t}apply(e,t){if(this.path.isRelativeTo(this.from))throw new Qe(`can't move object to one of its own children (${this.name}:${t})`);const[n,r]=this.from.resolveWithParent(e);if(r===x)throw new Qe(`source object does not exist (${this.name}:${t})`);const s=this.from.tokens.at(-1);if(void 0===s)throw new Qe(`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===x)return r;const a=this.path.tokens.at(-1);if(void 0===a)throw new Qe(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(o))o.splice(Number(a),0,r);else{if(!u(o))throw new Qe(`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 Ze{name="copy";constructor(e,t){this.from=e,this.path=t}apply(e,t){const[n,r]=this.from.resolveWithParent(e);if(r===x)throw new Qe(`source object does not exist (${this.name}:${t})`);const[s]=this.path.resolveWithParent(e);if(s===x)return this.deepCopy(r);const o=this.path.tokens.at(-1);if(void 0===o)throw new Qe(`unexpected operation on 'undefined' (${this.name}:${t})`);if(c(s))s.splice(Number(o),0,this.deepCopy(r));else{if(!u(s))throw new Qe(`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 He{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 We(`test failed (${this.name}:${t})`);return e}toObject(){return{op:this.name,path:this.path.toString(),value:this.value}}}class Ye{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 Ve(this.ensurePointer(e,"add",this.ops.length),t)),this}remove(e){return this.ops.push(new Be(this.ensurePointer(e,"remove",this.ops.length))),this}replace(e,t){return this.ops.push(new qe(this.ensurePointer(e,"replace",this.ops.length),t)),this}move(e,t){return this.ops.push(new Xe(this.ensurePointer(e,"move",this.ops.length),this.ensurePointer(t,"move",this.ops.length))),this}copy(e,t){return this.ops.push(new Ze(this.ensurePointer(e,"copy",this.ops.length),this.ensurePointer(t,"copy",this.ops.length))),this}test(e,t){return this.ops.push(new He(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 m)throw new Qe(`${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 Qe(`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 Qe(`missing property '${t}' (${n}:${r})`);const s=e[t];if(!l(s))throw new Qe(`expected a JSON Pointer string for '${t}', found ${typeof s} (${n}:${r})`);try{return new N(s)}catch(e){if(e instanceof g)throw new Qe(`${e.message} (${n}:${r})`);throw e}}opValue(e,t,n,r){if(!Object.hasOwn(e,t))throw new Qe(`missing property '${t}' (${n}:${r})`);return e[t]}ensurePointer(e,t,n){if(e instanceof N)return e;if(!l(e))throw new Qe(`expected a JSON Pointer string, found ${typeof e} (${t}:${n})`);try{return new N(e)}catch(e){if(e instanceof g)throw new Qe(`${e.message} (${t}:${n})`);throw e}}}function et(e,t){return new Ye(e).apply(t)}var tt=Object.freeze({__proto__:null,JSONPatch:Ye,JSONPatchError:Qe,JSONPatchTestFailure:We,apply:et});return e.DEFAULT_ENVIRONMENT=De,e.FunctionExpressionType=d,e.JSONPatch=Ye,e.JSONPatchError=Qe,e.JSONPatchTestFailure=We,e.JSONPath=Le,e.JSONPathEnvironment=Me,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=N,e.Nothing=P,e.RelativeJSONPointer=S,e.Token=re,e.TokenKind=ne,e.UNDEFINED=x,e.apply=et,e.compile=Ue,e.jsonpatch=tt,e.jsonpath=Ge,e.jsonpointer=R,e.lazyQuery=Ce,e.query=Ke,e.resolve=T,e.version="1.1.1",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 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}({});
2
2
  //# sourceMappingURL=json-p3.iife.min.js.map