json-p3
Version:
JSONPath, JSON Pointer and JSON Patch
1 lines • 62.5 kB
JavaScript
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 c 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)}}class h extends Error{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="IRegexpError"}}function u(e){return Array.isArray(e)}function l(e){const t=typeof e;return null!==e&&"object"===t||"function"===t}function p(e){return"string"==typeof e}function f(e){return"number"==typeof e}function d(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(!d(e[n],t[n]))return!1;return!0}return!1}if(l(e)&&l(t)){const n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(const r of n)if(!d(e[r],t[r]))return!1;return!0}return!1}let g=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 v extends m{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerResolutionError"}}class w extends v{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerIndexError"}}class x extends v{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 E extends v{constructor(e){super(e),this.message=e,Object.setPrototypeOf(this,new.target.prototype),this.name="JSONPointerTypeError"}}const k=Symbol.for("jsonpointer.undefined");class O{#e;constructor(e){this.tokens=this.parse(e),this.#e=O.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]:k;try{return this.tokens.reduce(this.getItem.bind(this),e)}catch(e){if(e instanceof v&&t!==k)return t;throw e}}resolveWithParent(e){if(!this.tokens.length)return[k,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 w||e instanceof x)return[t,k];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(u(e)){if("length"!==t&&Object.hasOwn(e,t))return e[Number(t)];if(t.startsWith("#")){const r=t.slice(1);if(N.test(r)&&Object.hasOwn(e,r))return Number(r);throw new w(`index out of range '${O.encode(this.tokens.slice(0,n+1))}'`)}throw new w(`index out of range '${O.encode(this.tokens.slice(0,n+1))}'`)}if(l(e)){if(Object.hasOwn(e,t))return e[t];if(t.startsWith("#")&&Object.hasOwn(e,t.slice(1)))return t.slice(1);throw new x(`no such property '${O.encode(this.tokens.slice(0,n+1))}'`)}throw new E(`found primitive value, expected an object '${O.encode(this.tokens.slice(0,n+1))}'`)}_join(e){if(!p(e))throw new E("join() requires string arguments, found "+typeof e);if(e.startsWith("/"))return new O(e);const t=this.tokens.concat(e.split("/").map((e=>e.replaceAll("~1","/").replaceAll("~0","~"))));return new O(O.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 v)return!1;throw e}return!0}parent(){return this.tokens.length?new O(O.encode(this.tokens.slice(0,this.tokens.length-1))):this}to(e){return(p(e)?new T(e):e).to(this)}}const S=/(?<ORIGIN>\d+)(?<INDEX_G>(?<SIGN>[+-])(?<INDEX>\d))?(?<POINTER>.*)/s,N=/(0|[1-9][0-9]*)/;class T{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=p(e)?new O(e):e;if(this.origin>t.tokens.length)throw new w(`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 w(`index offset out of range (${e})`);n[n.length-1]=String(e)}return this.pointer instanceof O?n.push(...this.pointer.tokens):n[n.length-1]=`#${n[n.length-1]}`,new O(O.encode(n))}parse(e){const t=S.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 O(t.groups.POINTER)]}parseInt(e){if(e.startsWith("0")&&e.length>1)throw new y("unexpected leading zero");if(N.test(e))return Number(e);throw new y(`expected an integer, found '${e}'`)}isIntLike(e){return!(void 0!==e&&!f(e))||N.test(e)}}function R(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:k;return new O(e).resolve(t,n)}var $=Object.freeze({__proto__:null,JSONPointer:O,JSONPointerError:m,JSONPointerIndexError:w,JSONPointerKeyError:x,JSONPointerResolutionError:v,JSONPointerSyntaxError:y,JSONPointerTypeError:E,RelativeJSONPointer:T,UNDEFINED:k,resolve:R});const b=/^[\p{ID_Start}_]\p{ID_Continue}*$/u;function P(e){return e.includes("'")&&!e.includes('"')?JSON.stringify(e):_(e)}function _(e){return`'${JSON.stringify(e).slice(1,-1).replaceAll('\\"','"').replaceAll("'","\\'")}'`}function A(e){return b.test(e)?e:null}const I=Symbol.for("jsonpath.nothing");function L(e,t){return l(e)&&Object.hasOwn(e,t)}const C="",K={form:"pretty"};class F{constructor(e,t,n){this.value=e,this.location=t,this.root=n}get path(){return this.getPath({form:"canonical"})}getPath(e){const t={...K,...e};return"$"+this.location.map((e=>p(e)?this.decodeNameLocation(e,t):`[${e}]`)).join("")}toPointer(){return this.location.length?new O(O.encode(this.location.map(String))):new O("")}decodeNameLocation(e,t){const n="canonical"===t.form,r=n?_:P,s=e.startsWith(C);s&&(e=e.slice(1));const o=A(e);return s?n||null==o?`[~${r(e)}]`:`.~${o}`:n||null==o?`[${r(e)}]`:`.${o}`}}class M{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(e){return this.nodes.map((t=>t.getPath(e)))}pointers(){return this.nodes.map((e=>e.toPointer()))}get length(){return this.nodes.length}}class j{constructor(e){this.token=e}}class U extends j{}class z extends U{evaluate(){return null}toString(){return"null"}}class D extends U{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return String(this.value)}}class J extends U{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return _(this.value)}}class G extends U{constructor(e,t){super(e),this.token=e,this.value=t}evaluate(){return this.value}toString(){return String(this.value)}}class Q extends j{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 M?0===t.nodes.length:!Z(t)}throw new s(`unknown operator '${this.operator}'`,this.token)}toString(e){return`${this.operator}${this.right.toString(e)}`}}class V extends j{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 M&&1===t.nodes.length&&(t=t.nodes[0].value);let n=this.right.evaluate(e);return!this.logical&&n instanceof M&&1===n.nodes.length&&(n=n.nodes[0].value),"&&"===this.operator?Z(t)&&Z(n):"||"===this.operator?Z(t)||Z(n):H(t,this.operator,n)}toString(e){return this.logical?`(${this.left.toString(e)} ${this.operator} ${this.right.toString(e)})`:`${this.left.toString(e)} ${this.operator} ${this.right.toString(e)}`}}class W extends j{constructor(e,t){super(e),this.token=e,this.expression=t}evaluate(e){const t=this.expression.evaluate(e);return t instanceof M?t.nodes.length>0:Z(t)}toString(e){return function t(n,r){if(n instanceof V){let s,o,i,a;if("&&"===n.operator)s=5,o="&&",i=t(n.left,s),a=t(n.right,s);else{if("||"!==n.operator)return n.toString(e);s=4,o="||",i=t(n.left,s),a=t(n.right,s)}const c=`${i} ${o} ${a}`;return s<r?`(${c})`:c}if(n instanceof Q){const e=`!${t(n.right,7)}`;return r>7?`(${e})`:e}return n.toString(e)}(this.expression,0)}}class B extends j{constructor(e,t){super(e),this.token=e,this.path=t}}class Y extends B{evaluate(e){return e.lazy?new M(Array.from(this.path.lazyQuery(e.currentValue))):this.path.query(e.currentValue)}toString(e){return`@${this.path.toString(e).slice(1)}`}}class q extends B{evaluate(e){return e.lazy?new M(Array.from(this.path.lazyQuery(e.rootValue))):this.path.query(e.rootValue)}toString(e){return this.path.toString(e)}}class X extends j{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]!==g.NodesType&&e instanceof M?this.unpack_node_list(e):e));return t.call(...n)}toString(e){return`${this.name}(${this.args.map((t=>t.toString(e))).join(", ")})`}unpack_node_list(e){switch(e.length){case 0:return I;case 1:return e.nodes[0].value;default:return e}}}function Z(e){return!(e instanceof M&&e.empty())&&!("boolean"==typeof e&&!1===e)}function H(e,t,n){switch(t){case"==":return ee(e,n);case"!=":return!ee(e,n);case"<":return te(e,n);case">":return te(n,e);case">=":return te(n,e)||ee(e,n);case"<=":return te(e,n)||ee(e,n);default:return!1}}function ee(e,t){if(t instanceof M&&([e,t]=[t,e]),e instanceof M){if(t instanceof M){if(e.empty()&&t.empty())return!0;if(1===e.nodes.length&&1===t.nodes.length)return d(e.nodes[0].value,t.nodes[0].value)}return e.empty()?t===I:1===e.nodes.length&&d(e.nodes[0].value,t)}return e===I&&t===I||d(e,t)}function te(e,t){return!!(p(e)&&p(t)||f(e)&&f(t))&&e<t}var ne=Object.freeze({__proto__:null,BooleanLiteral:D,FilterExpression:j,FilterExpressionLiteral:U,FilterQuery:B,FunctionExtension:X,InfixExpression:V,LogicalExpression:W,NullLiteral:z,NumberLiteral:G,PrefixExpression:Q,RelativeQuery:Y,RootQuery:q,StringLiteral:J,compare:H});class re{argTypes=(()=>[g.NodesType])();returnType=(()=>g.ValueType)();call(e){return e.length}}class se{argTypes=(()=>[g.ValueType])();returnType=(()=>g.ValueType)();call(e){return u(e)||p(e)?e.length:l(e)?Object.keys(e).length:I}}class oe 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){if(this.has(e))this.delete(e);else if(this.size>=this.maxSize){const e=this.first();void 0!==e&&this.delete(e)}return super.set(e,t)}first(){return this.keys().next().value}}function ie(e){let t=!1,n=!1;const r=[];for(const s of e)if(t)r.push(s),t=!1;else switch(s){case".":n?r.push(s):r.push("(?:(?![\r\n])\\P{Cs}|\\p{Cs}\\p{Cs})");break;case"\\":t=!0,r.push(s);break;case"[":n=!0,r.push(s);break;case"]":n=!1,r.push(s);break;default:r.push(s)}return r.join("")}function ae(e){const t=[],n=e.startsWith("^"),r=e.endsWith("$");return n||r||t.push("^(?:"),t.push(ie(e)),n||r||t.push(")$"),t.join("")}function ce(e,t,n,r){var s=Error.call(this,e);return Object.setPrototypeOf&&Object.setPrototypeOf(s,ce.prototype),s.expected=t,s.found=n,s.location=r,s.name="SyntaxError",s}function he(e,t,n){return n=n||" ",e.length>t?e:(t-=e.length,e+(n+=n.repeat(t)).slice(0,t))}!function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(ce,Error),ce.prototype.format=function(e){var t="Error: "+this.message;if(this.location){var n,r=null;for(n=0;n<e.length;n++)if(e[n].source===this.location.source){r=e[n].text.split(/\r\n|\n|\r/g);break}var s=this.location.start,o=this.location.source&&"function"==typeof this.location.source.offset?this.location.source.offset(s):s,i=this.location.source+":"+o.line+":"+o.column;if(r){var a=this.location.end,c=he("",o.line.toString().length," "),h=r[s.line-1],u=(s.line===a.line?a.column:h.length+1)-s.column||1;t+="\n --\x3e "+i+"\n"+c+" |\n"+o.line+" | "+h+"\n"+c+" | "+he("",s.column-1," ")+he("",u,"^")}else t+="\n at "+i}return t},ce.buildMessage=function(e,t){var n={literal:function(e){return'"'+s(e.text)+'"'},class:function(e){var t=e.parts.map((function(e){return Array.isArray(e)?o(e[0])+"-"+o(e[1]):o(e)}));return"["+(e.inverted?"^":"")+t.join("")+"]"},any:function(){return"any character"},end:function(){return"end of input"},other:function(e){return e.description}};function r(e){return e.charCodeAt(0).toString(16).toUpperCase()}function s(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+r(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+r(e)}))}function o(e){return e.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,(function(e){return"\\x0"+r(e)})).replace(/[\x10-\x1F\x7F-\x9F]/g,(function(e){return"\\x"+r(e)}))}function i(e){return n[e.type](e)}return"Expected "+function(e){var t,n,r=e.map(i);if(r.sort(),r.length>0){for(t=1,n=1;t<r.length;t++)r[t-1]!==r[t]&&(r[n]=r[t],n++);r.length=n}switch(r.length){case 1:return r[0];case 2:return r[0]+" or "+r[1];default:return r.slice(0,-1).join(", ")+", or "+r[r.length-1]}}(e)+" but "+function(e){return e?'"'+s(e)+'"':"end of input"}(t)+" found."};const ue={StartRules:["start"],SyntaxError:ce,parse:function(e,t){var n,r,s,o,i={},a=(t=void 0!==t?t:{}).grammarSource,c={start:Ae},h=Ae,u="|",l="{",p=",",f="}",d="(",g=")",m=".",v="\\",w="[",x="^",y="-",E="]",k="\\p{",O="\\P{",S="L",N="M",T="N",R="P",$="Z",b="S",P="C",_=/^[*-+?]/,A=/^[0-9]/,I=/^[(-+\--.?[-\^nrt{-}]/,L=/^[l-mot-u]/,C=/^[cen]/,K=/^[dlo]/,F=/^[c-fios]/,M=/^[lps]/,j=/^[ckmo]/,U=/^[cfn-o]/,z=Re("|",!1),D=$e([["*","+"],"?"],!1,!1),J=Re("{",!1),G=$e([["0","9"]],!1,!1),Q=Re(",",!1),V=Re("}",!1),W=Re("(",!1),B=Re(")",!1),Y={type:"any"},q=Re(".",!1),X=Re("\\",!1),Z=$e([["(","+"],["-","."],"?",["[","^"],"n","r","t",["{","}"]],!1,!1),H=Re("[",!1),ee=Re("^",!1),te=Re("-",!1),ne=Re("]",!1),re=Re("\\p{",!1),se=Re("\\P{",!1),oe=Re("L",!1),ie=$e([["l","m"],"o",["t","u"]],!1,!1),ae=Re("M",!1),he=$e(["c","e","n"],!1,!1),ue=Re("N",!1),le=$e(["d","l","o"],!1,!1),pe=Re("P",!1),fe=$e([["c","f"],"i","o","s"],!1,!1),de=Re("Z",!1),ge=$e(["l","p","s"],!1,!1),me=Re("S",!1),ve=$e(["c","k","m","o"],!1,!1),we=Re("C",!1),xe=$e(["c","f",["n","o"]],!1,!1),ye=function(e){return function(e){return e<"'"||","===e||"-"===e||e>="/"&&e<=">"||e>="@"&&e<="Z"||e>="^"&&e<="z"||e>="~"&&e<=""||e>=""}(e)},Ee=function(e){return function(e){return e<","||e>="."&&e<="Z"||e>="^"&&e<=""||e>=""}(e)},ke=0|t.peg$currPos,Oe=[{line:1,column:1}],Se=ke,Ne=t.peg$maxFailExpected||[],Te=0|t.peg$silentFails;if(t.startRule){if(!(t.startRule in c))throw new Error("Can't start parsing from rule \""+t.startRule+'".');h=c[t.startRule]}function Re(e,t){return{type:"literal",text:e,ignoreCase:t}}function $e(e,t,n){return{type:"class",parts:e,inverted:t,ignoreCase:n}}function be(t){var n,r=Oe[t];if(r)return r;if(t>=Oe.length)n=Oe.length-1;else for(n=t;!Oe[--n];);for(r={line:(r=Oe[n]).line,column:r.column};n<t;)10===e.charCodeAt(n)?(r.line++,r.column=1):r.column++,n++;return Oe[t]=r,r}function Pe(e,t,n){var r=be(e),s=be(t);return{source:a,start:{offset:e,line:r.line,column:r.column},end:{offset:t,line:s.line,column:s.column}}}function _e(e){ke<Se||(ke>Se&&(Se=ke,Ne=[]),Ne.push(e))}function Ae(){return Ie()}function Ie(){var t,n,r,s;for(t=Le(),n=[],r=ke,124===e.charCodeAt(ke)?(s=u,ke++):(s=i,0===Te&&_e(z)),s!==i?r=s=[s,Le()]:(ke=r,r=i);r!==i;)n.push(r),r=ke,124===e.charCodeAt(ke)?(s=u,ke++):(s=i,0===Te&&_e(z)),s!==i?r=s=[s,Le()]:(ke=r,r=i);return t=[t,n]}function Le(){var e,t;for(e=[],t=Ce();t!==i;)e.push(t),t=Ce();return e}function Ce(){var t,n,r;return t=ke,n=function(){var t,n,r,s;t=function(){var t,n;t=ke,e.length>ke?(n=e.charAt(ke),ke++):(n=i,0===Te&&_e(Y));n!==i&&(ye(n)?void 0:i)!==i?t=n:(ke=t,t=i);return t}(),t===i&&(t=function(){var t;46===e.charCodeAt(ke)?(t=m,ke++):(t=i,0===Te&&_e(q));t===i&&(t=Ke())===i&&(t=Fe())===i&&(t=function(){var t,n,r,s,o,a,c;t=ke,91===e.charCodeAt(ke)?(n=w,ke++):(n=i,0===Te&&_e(H));if(n!==i)if(94===e.charCodeAt(ke)?(r=x,ke++):(r=i,0===Te&&_e(ee)),r===i&&(r=null),45===e.charCodeAt(ke)?(s=y,ke++):(s=i,0===Te&&_e(te)),s===i&&(s=Me()),s!==i){for(o=[],a=Me();a!==i;)o.push(a),a=Me();45===e.charCodeAt(ke)?(a=y,ke++):(a=i,0===Te&&_e(te)),a===i&&(a=null),93===e.charCodeAt(ke)?(c=E,ke++):(c=i,0===Te&&_e(ne)),c!==i?t=n=[n,r,s,o,a,c]:(ke=t,t=i)}else ke=t,t=i;else ke=t,t=i;return t}());return t}(),t===i&&(t=ke,40===e.charCodeAt(ke)?(n=d,ke++):(n=i,0===Te&&_e(W)),n!==i&&(r=Ie())!==i?(41===e.charCodeAt(ke)?(s=g,ke++):(s=i,0===Te&&_e(B)),s!==i?t=n=[n,r,s]:(ke=t,t=i)):(ke=t,t=i)));return t}(),n!==i?(r=function(){var t;t=e.charAt(ke),_.test(t)?ke++:(t=i,0===Te&&_e(D));t===i&&(t=function(){var t,n,r,s,o,a,c;t=ke,123===e.charCodeAt(ke)?(n=l,ke++):(n=i,0===Te&&_e(J));if(n!==i){if(r=[],s=e.charAt(ke),A.test(s)?ke++:(s=i,0===Te&&_e(G)),s!==i)for(;s!==i;)r.push(s),s=e.charAt(ke),A.test(s)?ke++:(s=i,0===Te&&_e(G));else r=i;if(r!==i){if(s=ke,44===e.charCodeAt(ke)?(o=p,ke++):(o=i,0===Te&&_e(Q)),o!==i){for(a=[],c=e.charAt(ke),A.test(c)?ke++:(c=i,0===Te&&_e(G));c!==i;)a.push(c),c=e.charAt(ke),A.test(c)?ke++:(c=i,0===Te&&_e(G));s=o=[o,a]}else ke=s,s=i;s===i&&(s=null),125===e.charCodeAt(ke)?(o=f,ke++):(o=i,0===Te&&_e(V)),o!==i?t=n=[n,r,s,o]:(ke=t,t=i)}else ke=t,t=i}else ke=t,t=i;return t}());return t}(),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i),t}function Ke(){var t,n,r;return t=ke,92===e.charCodeAt(ke)?(n=v,ke++):(n=i,0===Te&&_e(X)),n!==i?(r=e.charAt(ke),I.test(r)?ke++:(r=i,0===Te&&_e(Z)),r!==i?t=n=[n,r]:(ke=t,t=i)):(ke=t,t=i),t}function Fe(){var t;return(t=function(){var t,n,r,s;t=ke,e.substr(ke,3)===k?(n=k,ke+=3):(n=i,0===Te&&_e(re));n!==i&&(r=Ue())!==i?(125===e.charCodeAt(ke)?(s=f,ke++):(s=i,0===Te&&_e(V)),s!==i?t=n=[n,r,s]:(ke=t,t=i)):(ke=t,t=i);return t}())===i&&(t=function(){var t,n,r,s;t=ke,e.substr(ke,3)===O?(n=O,ke+=3):(n=i,0===Te&&_e(se));n!==i&&(r=Ue())!==i?(125===e.charCodeAt(ke)?(s=f,ke++):(s=i,0===Te&&_e(V)),s!==i?t=n=[n,r,s]:(ke=t,t=i)):(ke=t,t=i);return t}()),t}function Me(){var t,n,r,s,o;return t=ke,(n=je())!==i?(r=ke,45===e.charCodeAt(ke)?(s=y,ke++):(s=i,0===Te&&_e(te)),s!==i&&(o=je())!==i?r=s=[s,o]:(ke=r,r=i),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i),t===i&&(t=Fe()),t}function je(){var t,n;return t=ke,e.length>ke?(n=e.charAt(ke),ke++):(n=i,0===Te&&_e(Y)),n!==i&&(Ee(n)?void 0:i)!==i?t=n:(ke=t,t=i),t===i&&(t=Ke()),t}function Ue(){var t;return(t=function(){var t,n,r;t=ke,76===e.charCodeAt(ke)?(n=S,ke++):(n=i,0===Te&&_e(oe));n!==i?(r=e.charAt(ke),L.test(r)?ke++:(r=i,0===Te&&_e(ie)),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i);return t}())===i&&(t=function(){var t,n,r;t=ke,77===e.charCodeAt(ke)?(n=N,ke++):(n=i,0===Te&&_e(ae));n!==i?(r=e.charAt(ke),C.test(r)?ke++:(r=i,0===Te&&_e(he)),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i);return t}())===i&&(t=function(){var t,n,r;t=ke,78===e.charCodeAt(ke)?(n=T,ke++):(n=i,0===Te&&_e(ue));n!==i?(r=e.charAt(ke),K.test(r)?ke++:(r=i,0===Te&&_e(le)),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i);return t}())===i&&(t=function(){var t,n,r;t=ke,80===e.charCodeAt(ke)?(n=R,ke++):(n=i,0===Te&&_e(pe));n!==i?(r=e.charAt(ke),F.test(r)?ke++:(r=i,0===Te&&_e(fe)),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i);return t}())===i&&(t=function(){var t,n,r;t=ke,90===e.charCodeAt(ke)?(n=$,ke++):(n=i,0===Te&&_e(de));n!==i?(r=e.charAt(ke),M.test(r)?ke++:(r=i,0===Te&&_e(ge)),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i);return t}())===i&&(t=function(){var t,n,r;t=ke,83===e.charCodeAt(ke)?(n=b,ke++):(n=i,0===Te&&_e(me));n!==i?(r=e.charAt(ke),j.test(r)?ke++:(r=i,0===Te&&_e(ve)),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i);return t}())===i&&(t=function(){var t,n,r;t=ke,67===e.charCodeAt(ke)?(n=P,ke++):(n=i,0===Te&&_e(we));n!==i?(r=e.charAt(ke),U.test(r)?ke++:(r=i,0===Te&&_e(xe)),r===i&&(r=null),t=n=[n,r]):(ke=t,t=i);return t}()),t}if(n=h(),t.peg$library)return{peg$result:n,peg$currPos:ke,peg$FAILED:i,peg$maxFailExpected:Ne,peg$maxFailPos:Se};if(n!==i&&ke===e.length)return n;throw n!==i&&ke<e.length&&_e({type:"end"}),r=Ne,s=Se<e.length?e.charAt(Se):null,o=Se<e.length?Pe(Se,Se+1):Pe(Se,Se),new ce(ce.buildMessage(r,s),r,s,o)}};var le=function(e){try{ue.parse(e,{})}catch(e){if(e instanceof ue.SyntaxError)return!1;throw e}return!0};class pe{argTypes=(()=>[g.ValueType,g.ValueType])();returnType=(()=>g.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.iRegexpCheck=e.iRegexpCheck??!0,this.#t=new oe(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}}if(!p(t)){if(this.throwErrors)throw new h(`match() expected a string pattern, found ${t}`);return!1}if(this.iRegexpCheck&&!le(t)){if(this.throwErrors)throw new h(`pattern ${t} is not a valid I-Regexp pattern`);return!1}try{const n=new RegExp(ae(t),"u");return this.cacheSize>0&&this.#t.set(t,n),n.test(e)}catch(e){if(this.throwErrors)throw e;return!1}}}class fe{argTypes=(()=>[g.ValueType,g.ValueType])();returnType=(()=>g.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.iRegexpCheck=e.iRegexpCheck??!0,this.#t=new oe(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}}if(!p(t)){if(this.throwErrors)throw new h(`match() expected a string pattern, found ${t}`);return!1}if(this.iRegexpCheck&&!le(t)){if(this.throwErrors)throw new h(`pattern ${t} is not a valid I-Regexp pattern`);return!1}try{const n=new RegExp(ie(t),"u");return this.cacheSize>0&&this.#t.set(t,n),!!e.match(n)}catch(e){if(this.throwErrors)throw e;return!1}}}class de{argTypes=(()=>[g.NodesType])();returnType=(()=>g.ValueType)();call(e){return 1===e.length?e.nodes[0].value:I}}let ge=function(e){return e.AND="TOKEN_AND",e.COLON="TOKEN_COLON",e.COMMA="TOKEN_COMMA",e.CURRENT="TOKEN_CURRENT_VALUE",e.CURRENT_KEY="TOKEN_CURRENT_KEY",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.KEY_DOUBLE_QUOTE_STRING="TOKEN_KEY_DOUBLE_QUOTE_STRING",e.KEY_SINGLE_QUOTE_STRING="TOKEN_KEY_SINGLE_QUOTE_STRING",e.KEYS="TOKEN_KEYS",e.KEYS_FILTER="TOKEN_KEYS_FILTER",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 me{constructor(e,t,n,r){this.kind=e,this.value=t,this.index=n,this.input=r}}new me(ge.EOF,"",-1,"");class ve{#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)}expectPeekNot(e,t){const n=this.peek;if(n.kind===e)throw new a(t,n)}}const we=/[eE][+-]?\d+/y,xe=/[a-z][a-z_0-9]*/y,ye=/-?\d+/y,Ee=/-?[0-9]+/y,ke=/[\u0080-\uFFFFa-zA-Z_][\u0080-\uFFFFa-zA-Z0-9_-]*/y,Oe=new Set([" ","\n","\t","\r"]),Se=/[\u0080-\uFFFFa-zA-Z_]/;class Ne{filterLevel=0;funcCallStack=[];bracketStack=[];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=Re;for(;e;)e=e(this)}emit(e){this.tokens.push(new me(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 me(ge.ERROR,e,this.#n,this.path))}this.#n-=1}peek(){const e=this.next();return e&&this.backup(),e}peekMatch(e){const t=this.next();return t&&this.backup(),e.test(t)}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 me(ge.ERROR,e,this.pos,this.path))}return!!this.acceptRun(Oe)&&(this.ignore(),!0)}error(e){this.tokens.push(new me(ge.ERROR,e,this.#n,this.path))}}function Te(e,t){const[n,r]=function(e,t){const n=new Ne(e,t);return[n,n.tokens]}(e,t);if(n.run(),r.length&&r[r.length-1].kind===ge.ERROR)throw new a(r[r.length-1].value,r[r.length-1]);if(0!==n.bracketStack.length){const[e,r]=n.bracketStack[n.bracketStack.length-1];throw new a("unbalanced brackets",new me(ge.ERROR,e,r,t))}return r}function Re(e){const t=e.next();return"$"!==t?(e.backup(),e.error(`expected '$', found '${t}'`),null):(e.emit(ge.ROOT),$e)}function $e(e){e.ignoreWhitespace()&&!e.peek()&&e.error("trailing whitespace");const t=e.next();switch(t){case"":return e.emit(ge.EOF),null;case".":return"."===e.peek()?(e.next(),e.emit(ge.DDOT),be):Pe;case"[":return e.bracketStack.push(["[",e.start]),e.emit(ge.LBRACKET),_e;default:return e.backup(),e.filterLevel?Ae:(e.error(`expected '.', '..' or a bracketed selection, found '${t}'`),null)}}function be(e){if(e.acceptMatchRun(ke))return e.emit(ge.NAME),$e;if(!e.environment.strict){if("~"===e.environment.keysPattern.source&&"~"===e.peek())return e.next(),e.peekMatch(Se)?(e.ignore(),e.acceptMatchRun(ke),e.emit(ge.KEY),$e):(e.emit(ge.KEYS),$e);if(e.acceptMatchRun(e.environment.keysPattern))return e.emit(ge.KEYS),$e}const t=e.next();switch(t){case"":return e.error("bald descendant segment"),null;case"*":return e.emit(ge.WILD),$e;case"[":return e.bracketStack.push(["[",e.start]),e.emit(ge.LBRACKET),_e;default:return e.backup(),e.error(`unexpected descendent selection token '${t}'`),null}}function Pe(e){if(e.ignore(),e.ignoreWhitespace())return e.error("unexpected whitespace after dot"),null;if(!e.environment.strict){if("~"===e.environment.keysPattern.source&&"~"===e.peek())return e.next(),e.peekMatch(Se)?(e.ignore(),e.acceptMatchRun(ke),e.emit(ge.KEY),$e):(e.emit(ge.KEYS),$e);if(e.acceptMatchRun(e.environment.keysPattern))return e.emit(ge.KEYS),$e}if(e.acceptMatchRun(ke))return e.emit(ge.NAME),$e;const t=e.next();return"*"===t?(e.emit(ge.WILD),$e):(e.backup(),e.error(`unexpected shorthand selector '${t}'`),null)}function _e(e){for(;;){if(e.ignoreWhitespace(),e.acceptMatchRun(ye)){e.emit(ge.INDEX);continue}if(!e.environment.strict&&e.acceptMatchRun(e.environment.keysPattern))switch(e.peek()){case"'":return e.ignore(),e.next(),Me(e);case'"':return e.ignore(),e.next(),je(e);case"?":return e.next(),e.emit(ge.KEYS_FILTER),e.filterLevel+=1,Ae;default:e.emit(ge.KEYS);continue}const t=e.next();switch(t){case"]":return 0===e.bracketStack.length||"["!==e.bracketStack[e.bracketStack.length-1][0]?(e.backup(),e.error("unbalanced brackets"),null):(e.bracketStack.pop(),e.emit(ge.RBRACKET),$e);case"":return e.error("unclosed bracketed selection"),null;case"*":e.emit(ge.WILD);continue;case"?":return e.emit(ge.FILTER),e.filterLevel+=1,Ae;case",":e.emit(ge.COMMA);continue;case":":e.emit(ge.COLON);continue;case"'":return Le;case'"':return Ce;default:return e.backup(),e.error(`unexpected token '${t}' in bracketed selection`),null}}}function Ae(e){for(;;){e.ignoreWhitespace();const t=e.next();switch(t){case"":return e.error("unclosed bracketed selection"),null;case"]":return e.filterLevel-=1,e.backup(),_e;case",":if(e.emit(ge.COMMA),e.funcCallStack.length)continue;return e.filterLevel-=1,_e;case"'":return Ke;case'"':return Fe;case"(":e.bracketStack.push(["(",e.start]),e.emit(ge.LPAREN),e.funcCallStack.length&&(e.funcCallStack[e.funcCallStack.length-1]+=1);continue;case")":if(0===e.bracketStack.length||"("!==e.bracketStack[e.bracketStack.length-1][0])return e.backup(),e.error("unbalanced brackets"),null;e.bracketStack.pop(),e.emit(ge.RPAREN),e.funcCallStack.length&&(1===e.funcCallStack[e.funcCallStack.length-1]?e.funcCallStack.pop():e.funcCallStack[e.funcCallStack.length-1]-=1);continue;case"$":return e.emit(ge.ROOT),$e;case"@":return e.emit(ge.CURRENT),$e;case"#":return e.environment.strict?(e.backup(),e.error(`unexpected filter selector token '${t}'`),null):(e.emit(ge.CURRENT_KEY),$e);case".":return e.backup(),$e;case"!":"="===e.peek()?(e.next(),e.emit(ge.NE)):e.emit(ge.NOT);continue;case"=":if("="===e.peek()){e.next(),e.emit(ge.EQ);continue}return e.backup(),e.error(`unexpected filter selector token '${t}'`),null;case"<":"="===e.peek()?(e.next(),e.emit(ge.LE)):e.emit(ge.LT);continue;case">":"="===e.peek()?(e.next(),e.emit(ge.GE)):e.emit(ge.GT);continue;default:if(e.backup(),e.acceptMatchRun(Ee)){if("."===e.peek()&&(e.next(),!e.acceptMatchRun(Ee)))return e.error("a fractional digit is required after a decimal point"),null;e.acceptMatchRun(we),e.emit(ge.NUMBER);continue}if(e.acceptMatchRun(/&&/y)){e.emit(ge.AND);continue}if(e.acceptMatchRun(/\|\|/y)){e.emit(ge.OR);continue}if(e.acceptMatchRun(/true/y)){e.emit(ge.TRUE);continue}if(e.acceptMatchRun(/false/y)){e.emit(ge.FALSE);continue}if(e.acceptMatchRun(/null/y)){e.emit(ge.NULL);continue}if(e.acceptMatchRun(xe)&&"("===e.peek()){e.funcCallStack.push(1),e.emit(ge.FUNCTION),e.bracketStack.push(["(",e.start]),e.next(),e.ignore();continue}}return e.error(`unexpected filter selector token '${t}'`),null}}function Ie(e,t,n){return function(r){if(r.ignore(),r.peek()===e)return r.emit("'"===e?ge.SINGLE_QUOTE_STRING:ge.DOUBLE_QUOTE_STRING),r.next(),r.ignore(),t;for(;;){const s=r.path.slice(r.pos,r.pos+2),o=r.next();if("\\\\"!==s&&s!==`\\${e}`){if("\\"===o&&!s.match(/\\[bfnrtu/]/))return r.error("invalid escape"),null;if(!o)return r.error(`unclosed string starting at index ${r.start}`),null;if(o===e)return r.backup(),r.emit(n),r.next(),r.ignore(),t}else r.next()}}}const Le=Ie("'",_e,ge.SINGLE_QUOTE_STRING),Ce=Ie('"',_e,ge.DOUBLE_QUOTE_STRING),Ke=Ie("'",Ae,ge.SINGLE_QUOTE_STRING),Fe=Ie('"',Ae,ge.DOUBLE_QUOTE_STRING),Me=Ie("'",_e,ge.KEY_SINGLE_QUOTE_STRING),je=Ie('"',_e,ge.KEY_DOUBLE_QUOTE_STRING);class Ue{constructor(e,t){this.environment=e,this.token=t}}class ze extends Ue{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.name=n}resolve(e){const t=[];return!u(e.value)&&L(e.value,this.name)&&t.push(new F(e.value[this.name],e.location.concat(this.name),e.root)),t}*lazyResolve(e){!u(e.value)&&L(e.value,this.name)&&(yield new F(e.value[this.name],e.location.concat(this.name),e.root))}toString(e){const{form:t}={...K,...e};return"canonical"===t?_(this.name):P(this.name)}shorthand(){return A(this.name)}}class De extends Ue{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=[];if(u(e.value)){const n=this.normalizedIndex(e.value.length);n in e.value&&t.push(new F(e.value[n],e.location.concat(n),e.root))}return t}*lazyResolve(e){if(u(e.value)){const t=this.normalizedIndex(e.value.length);t in e.value&&(yield new F(e.value[t],e.location.concat(t),e.root))}}toString(){return String(this.index)}normalizedIndex(e){return this.index<0&&e>=Math.abs(this.index)?e+this.index:this.index}}class Je extends Ue{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=[];if(!u(e.value))return t;for(const[n,r]of this.slice(e.value,this.start,this.stop,this.step))t.push(new F(r,e.location.concat(n),e.root));return t}*lazyResolve(e){if(u(e.value))for(const[t,n]of this.lazySlice(e.value,this.start,this.stop,this.step))yield new F(n,e.location.concat(t),e.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 Ge extends Ue{constructor(e,t){super(e,t),this.environment=e,this.token=t}resolve(e){const t=[];if(e.value instanceof String)return t;if(u(e.value))for(let n=0;n<e.value.length;n++)t.push(new F(e.value[n],e.location.concat(n),e.root));else if(l(e.value))for(const[n,r]of this.environment.entries(e.value))t.push(new F(r,e.location.concat(n),e.root));return t}*lazyResolve(e){if(u(e.value))for(let t=0;t<e.value.length;t++)yield new F(e.value[t],e.location.concat(t),e.root);else if(l(e.value)&&!p(e.value))for(const[t,n]of this.environment.entries(e.value))yield new F(n,e.location.concat(t),e.root)}toString(){return"*"}}class Qe extends Ue{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.expression=n}resolve(e){const t=[];if(e.value instanceof String)return t;if(u(e.value))for(let n=0;n<e.value.length;n++){const r=e.value[n],s={environment:this.environment,currentValue:r,rootValue:e.root,currentKey:n};this.expression.evaluate(s)&&t.push(new F(r,e.location.concat(n),e.root))}else if(l(e.value))for(const[n,r]of this.environment.entries(e.value)){const s={environment:this.environment,currentValue:r,rootValue:e.root,currentKey:n};this.expression.evaluate(s)&&t.push(new F(r,e.location.concat(n),e.root))}return t}*lazyResolve(e){if(u(e.value))for(let t=0;t<e.value.length;t++){const n=e.value[t],r={environment:this.environment,currentValue:n,rootValue:e.root,lazy:!0,currentKey:t};this.expression.evaluate(r)&&(yield new F(n,e.location.concat(t),e.root))}else if(l(e.value)&&!p(e.value))for(const[t,n]of this.environment.entries(e.value)){const r={environment:this.environment,currentValue:n,rootValue:e.root,lazy:!0,currentKey:t};this.expression.evaluate(r)&&(yield new F(n,e.location.concat(t),e.root))}}toString(e){return`?${this.expression.toString(e)}`}}var Ve=Object.freeze({__proto__:null,FilterSelector:Qe,IndexSelector:De,JSONPathSelector:Ue,NameSelector:ze,SliceSelector:Je,WildcardSelector:Ge});class We{constructor(e,t,n){this.environment=e,this.token=t,this.selectors=n}}class Be extends We{resolve(e){const t=[];for(const n of e)for(const e of this.selectors)t.push(...e.resolve(n));return t}*lazyResolve(e){for(const t of e)for(const e of this.selectors)yield*e.resolve(t)}toString(e){const{form:t}={...K,...e};if("pretty"===t&&1===this.selectors.length&&this.selectors[0]instanceof ze){const e=this.selectors[0].shorthand();if(null!=e)return`.${e}`}return`[${this.selectors.map((t=>t.toString(e))).join(", ")}]`}}class Ye extends We{resolve(e){const t=[],n=(this.environment.nondeterministic?this.nondeterministicVisit:this.visit).bind(this);for(const r of e)for(const e of n(r))for(const n of this.selectors)t.push(...n.resolve(e));return t}*lazyResolve(e){for(const t of e)for(const e of this.visit(t))for(const t of this.selectors)yield*t.resolve(e)}toString(e){return`..[${this.selectors.map((t=>t.toString(e))).join(", ")}]`}visit(e){var t=this;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return function*(){if(n>=t.environment.maxRecursionDepth)throw new c("recursion limit reached",t.token);if(yield e,u(e.value))for(let r=0;r<e.value.length;r++){const s=new F(e.value[r],e.location.concat(r),e.root);yield*t.visit(s,n+1)}else if(l(e.value))for(const[r,s]of t.environment.entries(e.value)){const o=new F(s,e.location.concat(r),e.root);yield*t.visit(o,n+1)}}()}nondeterministicVisit(e){var t=this;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;return function*(){let r=Array.from(t.nondeterministicChildren(e)).map((e=>[e,n]));for(yield e;r.length;){const[e,n]=r.shift();if(yield e,n>=t.environment.maxRecursionDepth)throw new c("recursion limit reached",t.token);const s=Math.random()<.5;for(const o of t.nondeterministicChildren(e))if(s){yield o;r=qe(r,Array.from(t.nondeterministicChildren(o)).map((e=>[e,n+2])))}else r.push([o,n+1])}}()}*nondeterministicChildren(e){if(!p(e.value))if(u(e.value))for(let t=0;t<e.value.length;t++)yield new F(e.value[t],e.location.concat(t),e.root);else if(l(e.value))for(const[t,n]of this.environment.entries(e.value))yield new F(n,e.location.concat(t),e.root)}}function qe(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))}class Xe{constructor(e,t){this.environment=e,this.segments=t}query(e){let t=[new F(e,[],e)];for(const e of this.segments)t=e.resolve(t);return new M(t)}lazyQuery(e){let t=[new F(e,[],e)][Symbol.iterator]();for(const e of this.segments)t=e.lazyResolve(t);return t}match(e){const t=this.lazyQuery(e).next();if(!t.done)return t.value}toString(e){return`$${this.segments.map((t=>t.toString(e))).join("")}`}singularQuery(){for(const e of this.segments){if(e instanceof Ye)return!1;if(1!==e.selectors.length||!(e.selectors[0]instanceof ze||e.selectors[0]instanceof De))return!1}return!0}}class Ze extends j{evaluate(e){return e.currentKey??I}toString(){return"#"}}class He extends Ue{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.key=n}resolve(e){const t=[];return e.value instanceof String||u(e.value)||l(e.value)&&L(e.value,this.key)&&t.push(new F(this.key,e.location.concat(`${C}${this.key}`),e.root)),t}*lazyResolve(e){!p(e.value)&&l(e.value)&&L(e.value,this.key)&&(yield new F(this.key,e.location.concat(`${C}${this.key}`),e.root))}toString(e){const{form:t}={...K,...e};return`~${("canonical"===t?_:P)(this.key)}`}}class et extends Ue{constructor(e,t){super(e,t),this.environment=e,this.token=t}resolve(e){const t=[];if(e.value instanceof String||u(e.value))return t;if(l(e.value))for(const[n,r]of this.environment.entries(e.value))t.push(new F(n,e.location.concat(`${C}${n}`),e.root));return t}*lazyResolve(e){if(l(e.value)&&!p(e.value)&&!u(e.value))for(const[t,n]of this.environment.entries(e.value))yield new F(t,e.location.concat(`${C}${t}`),e.root)}toString(){return"~"}}class tt extends Ue{constructor(e,t,n){super(e,t),this.environment=e,this.token=t,this.expression=n}resolve(e){const t=[];if(e.value instanceof String||u(e.value))return t;if(l(e.value))for(const[n,r]of this.environment.entries(e.value)){const s={environment:this.environment,currentValue:r,rootValue:e.root,currentKey:n};this.expression.evaluate(s)&&t.push(new F(n,e.location.concat(`${C}${n}`),e.root))}return t}*lazyResolve(e){if(!(e.value instanceof String||u(e.value))&&l(e.value))for(const[t,n]of this.environment.entries(e.value)){const r={environment:this.environment,currentValue:n,rootValue:e.root,lazy:!0,currentKey:t};this.expression.evaluate(r)&&(yield new F(t,e.location.concat(`${C}${t}`),e.root))}}toString(e){return`~?${this.expression.toString(e)}`}}const nt=new Map([[ge.AND,5],[ge.EQ,6],[ge.GE,6],[ge.GT,6],[ge.LE,6],[ge.LT,6],[ge.NE,6],[ge.NOT,7],[ge.OR,4],[ge.RPAREN,1]]),rt=new Map([[ge.AND,"&&"],[ge.EQ,"=="],[ge.GE,">="],[ge.GT,">"],[ge.LE,"<="],[ge.LT,"<"],[ge.NE,"!="],[ge.OR,"||"]]),st=new Set(["==",">=",">","<=","<","!="]);class ot{constructor(e){this.environment=e,this.tokenMap=new Map([[ge.FALSE,this.parseBoolean],[ge.NUMBER,this.parseNumber],[ge.LPAREN,this.parseGroupedExpression],[ge.NOT,this.parsePrefixExpression],[ge.NULL,this.parseNull],[ge.ROOT,this.parseRootQuery],[ge.CURRENT,this.parseRelativeQuery],[ge.SINGLE_QUOTE_STRING,this.parseString],[ge.DOUBLE_QUOTE_STRING,this.parseString],[ge.TRUE,this.parseBoolean],[ge.FUNCTION,this.parseFunction],[ge.CURRENT_KEY,this.parseCurrentKey]])}parse(e){e.current.kind===ge.ROOT&&e.next();const t=this.parseQuery(e);if(e.current.kind!==ge.EOF)throw new a(`unexpected token '${e.current.kind}'`,e.current);return t}parseQuery(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=[];e:for(;;){switch(e.current.kind){case ge.DDOT:{const t=e.next(),r=this.parseSelectors(e);n.push(new Ye(this.environment,t,r));break}case ge.LBRACKET:case ge.KEY:case ge.KEYS:case ge.NAME:case ge.WILD:{const t=e.current,r=this.parseSelectors(e);n.push(new Be(this.environment,t,r));break}default:t&&e.backup();break e}e.next()}return n}parseSelectors(e){switch(e.current.kind){case ge.NAME:return[new ze(this.environment,e.current,e.current.value)];case ge.WILD:return[new Ge(this.environment,e.current)];case ge.KEY:return[new He(this.environment,e.current,e.current.value)];case ge.KEYS:return[new et(this.environment,e.current)];case ge.LBRACKET:return this.parseBracketedSelection(e);default:return[]}}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 De(this.environment,e.current,Number(e.current.value))}parseSlice(e){const t=e.current,n=[];function r(e){if(e.kind===ge.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(ge.COLON),e.next()):(n.push(void 0),e.expect(ge.COLON),e.next()),r(e.current)?(n.push(Number(e.current.value)),e.next(),e.current.kind===ge.COLON&&e.next()):e.current.kind===ge.COLON&&(n.push(void 0),e.expect(ge.COLON),e.next()),r(e.current)&&(n.push(Number(e.current.value)),e.next()),e.backup(),new Je(this.environment,t,...n)}parseBracketedSelection(e){const t=e.next(),n=[];for(;e.current.kind!==ge.RBRACKET;){switch(e.current.kind){case ge.SINGLE_QUOTE_STRING:case ge.DOUBLE_QUOTE_STRING:n.push(new ze(this.environment,e.current,this.decodeString(e.current)));break;case ge.FILTER:n.push(this.parseFilter(e));break;case ge.INDEX:e.peek.kind===ge.COLON?n.push(this.parseSlice(e)):n.push(this.parseIndex(e));break;case ge.COLON:n.push(this.parseSlice(e));break;case ge.WILD:n.push(new Ge(this.environment,e.current));break;case ge.KEY_SINGLE_QUOTE_STRING:case ge.KEY_DOUBLE_QUOTE_STRING:n.push(new He(this.environment,e.current,this.decodeString(e.current)));break;case ge.KEYS_FILTER:n.push(this.parseFilter(e,!0));break;case ge.KEYS:n.push(new et(this.environment,e.current));break;case ge.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!==ge.RBRACKET&&(e.expectPeek(ge.COMMA),e.next(),e.expectPeekNot(ge.RBRACKET,"unexpected trailing comma")),e.next()}if(!n.length)throw new a("empty bracketed segment",t);return n}parseFilter(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const n=e.next(),r=this.parseFilterExpression(e);if(r instanceof X){const e=this.environment.functionRegister.get(r.name);if(e&&e.returnType===g.ValueType)throw new s(`result of ${r.name}() must be compared`,r.token)}return this.throwForLiteral(r),t?new tt(this.environment,n,new W(n,r)):new Qe(this.environment,n,new W(n,r))}parseBoolean(e){return e.current.kind===ge.FALSE?new D(e.current,!1):new D(e.current,!0)}parseNull(e){return new z(e.current)}parseString(e){return new J(e.current,this.decodeString(e.current))}parseNumber(e){const t=e.current.value;if(t.startsWith("0")&&t.length>1)throw new a(`invalid number literal '${t}'`,e.current);const n=Number(e.current.value);if(isNaN(n))throw new a(`invalid number literal '${t}'`,e.current);return new G(e.current,n)}parsePrefixExpression(e){return e.expect(ge.NOT),e.next(),new Q(e.current,"!",this.parseFilterExpression(e,7))}parseInfixExpression(e,t){const n=e.next(),r=nt.get(n.kind)||1,s=this.parseFilterExpression(e,r),o=rt.get(n.kind);if(!o)throw new a(`unknown operator '${n.kind}'`,n);return st.has(o)?(this.throwForNonComparable(t),this.throwForNonComparable(s)):(this.throwForLiteral(t),this.throwForLiteral(s)),new V(n,t,o,s)}parseGroupedExpression(e){if(e.peek.kind===ge.RPAREN)throw new a("empty paren expression",e.current);e.next();let t=this.parseFilterExpression(e);for(e.next();e.current.kind!==ge.RPAREN;){if(e.current.kind===ge.EOF)throw new a("unbalanced parentheses",e.current);if(!rt.has(e.current.kind))throw new a(`expected an expression, found '${e.current.value}'`,e.current);t=this.parseInfixExpression(e,t)}return e.expect(ge.RPAREN),t}parseRootQuery(e){const t=e.next();return new q(t,new Xe(this.environment,this.parseQuery(e,!0)))}parseRelativeQuery(e){const t=e.next();return new Y(t,new Xe(this.environment,this.parseQuery(e,!0)))}parseCurrentKey(e){return new Ze(e.current)}parseFunction(e){const t=[],n=e.next();for(;e.current.kind!==ge.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(;rt.has(s);)e.next(),r=this.parseInfixExpression(e,r),s=e.peek.kind;if(t.push(r),e.peek.kind!==ge.RPAREN){if(e.peek.kind===ge.RBRACKET)break;e.expectPeek(ge.COMMA),e.next()}e.next()}return e.expect(ge.RPAREN),new X(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 ge.EOF:case ge.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===ge.EOF||n===ge.RBRACKET||(nt.get(n)||1)<t)break;if(!rt.has(n))return r;e.next(),r=this.parseInfixExpression(e,r)}return r}decodeString(e){return this.unescapeString(e.kind===ge.SINGLE_QUOTE_STRING?e.value.replaceAll('"','\\"').replaceAll("\\'","'"):e.value,e)}unescapeString(e,t){const n=[],r=e.length;let s,o=0;for(;o<r;){const r=e[o];if("\\"===r)switch(o+=1,e[o]){case'"':n.push('"');break;case"\\":n.push("\\");break;case"/":n.push("/");break;case"b":n.push("\b");break;case"f":n.push("\f");break;case"n":n.push("\n");break;case"r":n.push("\r");break;case"t":n.push("\t");break;case"u":[s,o]=this.decodeHexChar(e,o,t),n.push(this.stringFromCodePoint(s,t));break;default:throw new a("unknown escape sequence at i