{"version":3,"file":"index-browser-umd.min.cjs","sources":["../node_modules/.pnpm/jsep@1.3.9/node_modules/jsep/dist/jsep.js","../node_modules/.pnpm/@jsep-plugin+regex@1.0.3_jsep@1.3.9/node_modules/@jsep-plugin/regex/dist/index.js","../node_modules/.pnpm/@jsep-plugin+assignment@1.2.1_jsep@1.3.9/node_modules/@jsep-plugin/assignment/dist/index.js","../src/Safe-Script.js","../src/jsonpath.js","../src/jsonpath-browser.js"],"sourcesContent":["/**\n * @implements {IHooks}\n */\nclass Hooks {\n\t/**\n\t * @callback HookCallback\n\t * @this {*|Jsep} this\n\t * @param {Jsep} env\n\t * @returns: void\n\t */\n\t/**\n\t * Adds the given callback to the list of callbacks for the given hook.\n\t *\n\t * The callback will be invoked when the hook it is registered for is run.\n\t *\n\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t *\n\t * @param {string|object} name The name of the hook, or an object of callbacks keyed by name\n\t * @param {HookCallback|boolean} callback The callback function which is given environment variables.\n\t * @param {?boolean} [first=false] Will add the hook to the top of the list (defaults to the bottom)\n\t * @public\n\t */\n\tadd(name, callback, first) {\n\t\tif (typeof arguments[0] != 'string') {\n\t\t\t// Multiple hook callbacks, keyed by name\n\t\t\tfor (let name in arguments[0]) {\n\t\t\t\tthis.add(name, arguments[0][name], arguments[1]);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\t(Array.isArray(name) ? name : [name]).forEach(function (name) {\n\t\t\t\tthis[name] = this[name] || [];\n\n\t\t\t\tif (callback) {\n\t\t\t\t\tthis[name][first ? 'unshift' : 'push'](callback);\n\t\t\t\t}\n\t\t\t}, this);\n\t\t}\n\t}\n\n\t/**\n\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t *\n\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t *\n\t * @param {string} name The name of the hook.\n\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t * @public\n\t */\n\trun(name, env) {\n\t\tthis[name] = this[name] || [];\n\t\tthis[name].forEach(function (callback) {\n\t\t\tcallback.call(env && env.context ? env.context : env, env);\n\t\t});\n\t}\n}\n\n/**\n * @implements {IPlugins}\n */\nclass Plugins {\n\tconstructor(jsep) {\n\t\tthis.jsep = jsep;\n\t\tthis.registered = {};\n\t}\n\n\t/**\n\t * @callback PluginSetup\n\t * @this {Jsep} jsep\n\t * @returns: void\n\t */\n\t/**\n\t * Adds the given plugin(s) to the registry\n\t *\n\t * @param {object} plugins\n\t * @param {string} plugins.name The name of the plugin\n\t * @param {PluginSetup} plugins.init The init function\n\t * @public\n\t */\n\tregister(...plugins) {\n\t\tplugins.forEach((plugin) => {\n\t\t\tif (typeof plugin !== 'object' || !plugin.name || !plugin.init) {\n\t\t\t\tthrow new Error('Invalid JSEP plugin format');\n\t\t\t}\n\t\t\tif (this.registered[plugin.name]) {\n\t\t\t\t// already registered. Ignore.\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tplugin.init(this.jsep);\n\t\t\tthis.registered[plugin.name] = plugin;\n\t\t});\n\t}\n}\n\n//     JavaScript Expression Parser (JSEP) 1.3.9\n\nclass Jsep {\n\t/**\n\t * @returns {string}\n\t */\n\tstatic get version() {\n\t\t// To be filled in by the template\n\t\treturn '1.3.9';\n\t}\n\n\t/**\n\t * @returns {string}\n\t */\n\tstatic toString() {\n\t\treturn 'JavaScript Expression Parser (JSEP) v' + Jsep.version;\n\t};\n\n\t// ==================== CONFIG ================================\n\t/**\n\t * @method addUnaryOp\n\t * @param {string} op_name The name of the unary op to add\n\t * @returns {Jsep}\n\t */\n\tstatic addUnaryOp(op_name) {\n\t\tJsep.max_unop_len = Math.max(op_name.length, Jsep.max_unop_len);\n\t\tJsep.unary_ops[op_name] = 1;\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method jsep.addBinaryOp\n\t * @param {string} op_name The name of the binary op to add\n\t * @param {number} precedence The precedence of the binary op (can be a float). Higher number = higher precedence\n\t * @param {boolean} [isRightAssociative=false] whether operator is right-associative\n\t * @returns {Jsep}\n\t */\n\tstatic addBinaryOp(op_name, precedence, isRightAssociative) {\n\t\tJsep.max_binop_len = Math.max(op_name.length, Jsep.max_binop_len);\n\t\tJsep.binary_ops[op_name] = precedence;\n\t\tif (isRightAssociative) {\n\t\t\tJsep.right_associative.add(op_name);\n\t\t}\n\t\telse {\n\t\t\tJsep.right_associative.delete(op_name);\n\t\t}\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method addIdentifierChar\n\t * @param {string} char The additional character to treat as a valid part of an identifier\n\t * @returns {Jsep}\n\t */\n\tstatic addIdentifierChar(char) {\n\t\tJsep.additional_identifier_chars.add(char);\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method addLiteral\n\t * @param {string} literal_name The name of the literal to add\n\t * @param {*} literal_value The value of the literal\n\t * @returns {Jsep}\n\t */\n\tstatic addLiteral(literal_name, literal_value) {\n\t\tJsep.literals[literal_name] = literal_value;\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeUnaryOp\n\t * @param {string} op_name The name of the unary op to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeUnaryOp(op_name) {\n\t\tdelete Jsep.unary_ops[op_name];\n\t\tif (op_name.length === Jsep.max_unop_len) {\n\t\t\tJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\n\t\t}\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllUnaryOps\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllUnaryOps() {\n\t\tJsep.unary_ops = {};\n\t\tJsep.max_unop_len = 0;\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeIdentifierChar\n\t * @param {string} char The additional character to stop treating as a valid part of an identifier\n\t * @returns {Jsep}\n\t */\n\tstatic removeIdentifierChar(char) {\n\t\tJsep.additional_identifier_chars.delete(char);\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeBinaryOp\n\t * @param {string} op_name The name of the binary op to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeBinaryOp(op_name) {\n\t\tdelete Jsep.binary_ops[op_name];\n\n\t\tif (op_name.length === Jsep.max_binop_len) {\n\t\t\tJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\t\t}\n\t\tJsep.right_associative.delete(op_name);\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllBinaryOps\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllBinaryOps() {\n\t\tJsep.binary_ops = {};\n\t\tJsep.max_binop_len = 0;\n\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeLiteral\n\t * @param {string} literal_name The name of the literal to remove\n\t * @returns {Jsep}\n\t */\n\tstatic removeLiteral(literal_name) {\n\t\tdelete Jsep.literals[literal_name];\n\t\treturn Jsep;\n\t}\n\n\t/**\n\t * @method removeAllLiterals\n\t * @returns {Jsep}\n\t */\n\tstatic removeAllLiterals() {\n\t\tJsep.literals = {};\n\n\t\treturn Jsep;\n\t}\n\t// ==================== END CONFIG ============================\n\n\n\t/**\n\t * @returns {string}\n\t */\n\tget char() {\n\t\treturn this.expr.charAt(this.index);\n\t}\n\n\t/**\n\t * @returns {number}\n\t */\n\tget code() {\n\t\treturn this.expr.charCodeAt(this.index);\n\t};\n\n\n\t/**\n\t * @param {string} expr a string with the passed in express\n\t * @returns Jsep\n\t */\n\tconstructor(expr) {\n\t\t// `index` stores the character number we are currently at\n\t\t// All of the gobbles below will modify `index` as we move along\n\t\tthis.expr = expr;\n\t\tthis.index = 0;\n\t}\n\n\t/**\n\t * static top-level parser\n\t * @returns {jsep.Expression}\n\t */\n\tstatic parse(expr) {\n\t\treturn (new Jsep(expr)).parse();\n\t}\n\n\t/**\n\t * Get the longest key length of any object\n\t * @param {object} obj\n\t * @returns {number}\n\t */\n\tstatic getMaxKeyLen(obj) {\n\t\treturn Math.max(0, ...Object.keys(obj).map(k => k.length));\n\t}\n\n\t/**\n\t * `ch` is a character code in the next three functions\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isDecimalDigit(ch) {\n\t\treturn (ch >= 48 && ch <= 57); // 0...9\n\t}\n\n\t/**\n\t * Returns the precedence of a binary operator or `0` if it isn't a binary operator. Can be float.\n\t * @param {string} op_val\n\t * @returns {number}\n\t */\n\tstatic binaryPrecedence(op_val) {\n\t\treturn Jsep.binary_ops[op_val] || 0;\n\t}\n\n\t/**\n\t * Looks for start of identifier\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isIdentifierStart(ch) {\n\t\treturn  (ch >= 65 && ch <= 90) || // A...Z\n\t\t\t(ch >= 97 && ch <= 122) || // a...z\n\t\t\t(ch >= 128 && !Jsep.binary_ops[String.fromCharCode(ch)]) || // any non-ASCII that is not an operator\n\t\t\t(Jsep.additional_identifier_chars.has(String.fromCharCode(ch))); // additional characters\n\t}\n\n\t/**\n\t * @param {number} ch\n\t * @returns {boolean}\n\t */\n\tstatic isIdentifierPart(ch) {\n\t\treturn Jsep.isIdentifierStart(ch) || Jsep.isDecimalDigit(ch);\n\t}\n\n\t/**\n\t * throw error at index of the expression\n\t * @param {string} message\n\t * @throws\n\t */\n\tthrowError(message) {\n\t\tconst error = new Error(message + ' at character ' + this.index);\n\t\terror.index = this.index;\n\t\terror.description = message;\n\t\tthrow error;\n\t}\n\n\t/**\n\t * Run a given hook\n\t * @param {string} name\n\t * @param {jsep.Expression|false} [node]\n\t * @returns {?jsep.Expression}\n\t */\n\trunHook(name, node) {\n\t\tif (Jsep.hooks[name]) {\n\t\t\tconst env = { context: this, node };\n\t\t\tJsep.hooks.run(name, env);\n\t\t\treturn env.node;\n\t\t}\n\t\treturn node;\n\t}\n\n\t/**\n\t * Runs a given hook until one returns a node\n\t * @param {string} name\n\t * @returns {?jsep.Expression}\n\t */\n\tsearchHook(name) {\n\t\tif (Jsep.hooks[name]) {\n\t\t\tconst env = { context: this };\n\t\t\tJsep.hooks[name].find(function (callback) {\n\t\t\t\tcallback.call(env.context, env);\n\t\t\t\treturn env.node;\n\t\t\t});\n\t\t\treturn env.node;\n\t\t}\n\t}\n\n\t/**\n\t * Push `index` up to the next non-space character\n\t */\n\tgobbleSpaces() {\n\t\tlet ch = this.code;\n\t\t// Whitespace\n\t\twhile (ch === Jsep.SPACE_CODE\n\t\t|| ch === Jsep.TAB_CODE\n\t\t|| ch === Jsep.LF_CODE\n\t\t|| ch === Jsep.CR_CODE) {\n\t\t\tch = this.expr.charCodeAt(++this.index);\n\t\t}\n\t\tthis.runHook('gobble-spaces');\n\t}\n\n\t/**\n\t * Top-level method to parse all expressions and returns compound or single node\n\t * @returns {jsep.Expression}\n\t */\n\tparse() {\n\t\tthis.runHook('before-all');\n\t\tconst nodes = this.gobbleExpressions();\n\n\t\t// If there's only one expression just try returning the expression\n\t\tconst node = nodes.length === 1\n\t\t  ? nodes[0]\n\t\t\t: {\n\t\t\t\ttype: Jsep.COMPOUND,\n\t\t\t\tbody: nodes\n\t\t\t};\n\t\treturn this.runHook('after-all', node);\n\t}\n\n\t/**\n\t * top-level parser (but can be reused within as well)\n\t * @param {number} [untilICode]\n\t * @returns {jsep.Expression[]}\n\t */\n\tgobbleExpressions(untilICode) {\n\t\tlet nodes = [], ch_i, node;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tch_i = this.code;\n\n\t\t\t// Expressions can be separated by semicolons, commas, or just inferred without any\n\t\t\t// separators\n\t\t\tif (ch_i === Jsep.SEMCOL_CODE || ch_i === Jsep.COMMA_CODE) {\n\t\t\t\tthis.index++; // ignore separators\n\t\t\t}\n\t\t\telse {\n\t\t\t\t// Try to gobble each expression individually\n\t\t\t\tif (node = this.gobbleExpression()) {\n\t\t\t\t\tnodes.push(node);\n\t\t\t\t\t// If we weren't able to find a binary expression and are out of room, then\n\t\t\t\t\t// the expression passed in probably has too much\n\t\t\t\t}\n\t\t\t\telse if (this.index < this.expr.length) {\n\t\t\t\t\tif (ch_i === untilICode) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tthis.throwError('Unexpected \"' + this.char + '\"');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn nodes;\n\t}\n\n\t/**\n\t * The main parsing function.\n\t * @returns {?jsep.Expression}\n\t */\n\tgobbleExpression() {\n\t\tconst node = this.searchHook('gobble-expression') || this.gobbleBinaryExpression();\n\t\tthis.gobbleSpaces();\n\n\t\treturn this.runHook('after-expression', node);\n\t}\n\n\t/**\n\t * Search for the operation portion of the string (e.g. `+`, `===`)\n\t * Start by taking the longest possible binary operations (3 characters: `===`, `!==`, `>>>`)\n\t * and move down from 3 to 2 to 1 character until a matching binary operation is found\n\t * then, return that binary operation\n\t * @returns {string|boolean}\n\t */\n\tgobbleBinaryOp() {\n\t\tthis.gobbleSpaces();\n\t\tlet to_check = this.expr.substr(this.index, Jsep.max_binop_len);\n\t\tlet tc_len = to_check.length;\n\n\t\twhile (tc_len > 0) {\n\t\t\t// Don't accept a binary op when it is an identifier.\n\t\t\t// Binary ops that start with a identifier-valid character must be followed\n\t\t\t// by a non identifier-part valid character\n\t\t\tif (Jsep.binary_ops.hasOwnProperty(to_check) && (\n\t\t\t\t!Jsep.isIdentifierStart(this.code) ||\n\t\t\t\t(this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))\n\t\t\t)) {\n\t\t\t\tthis.index += tc_len;\n\t\t\t\treturn to_check;\n\t\t\t}\n\t\t\tto_check = to_check.substr(0, --tc_len);\n\t\t}\n\t\treturn false;\n\t}\n\n\t/**\n\t * This function is responsible for gobbling an individual expression,\n\t * e.g. `1`, `1+2`, `a+(b*2)-Math.sqrt(2)`\n\t * @returns {?jsep.BinaryExpression}\n\t */\n\tgobbleBinaryExpression() {\n\t\tlet node, biop, prec, stack, biop_info, left, right, i, cur_biop;\n\n\t\t// First, try to get the leftmost thing\n\t\t// Then, check to see if there's a binary operator operating on that leftmost thing\n\t\t// Don't gobbleBinaryOp without a left-hand-side\n\t\tleft = this.gobbleToken();\n\t\tif (!left) {\n\t\t\treturn left;\n\t\t}\n\t\tbiop = this.gobbleBinaryOp();\n\n\t\t// If there wasn't a binary operator, just return the leftmost node\n\t\tif (!biop) {\n\t\t\treturn left;\n\t\t}\n\n\t\t// Otherwise, we need to start a stack to properly place the binary operations in their\n\t\t// precedence structure\n\t\tbiop_info = { value: biop, prec: Jsep.binaryPrecedence(biop), right_a: Jsep.right_associative.has(biop) };\n\n\t\tright = this.gobbleToken();\n\n\t\tif (!right) {\n\t\t\tthis.throwError(\"Expected expression after \" + biop);\n\t\t}\n\n\t\tstack = [left, biop_info, right];\n\n\t\t// Properly deal with precedence using [recursive descent](http://www.engr.mun.ca/~theo/Misc/exp_parsing.htm)\n\t\twhile ((biop = this.gobbleBinaryOp())) {\n\t\t\tprec = Jsep.binaryPrecedence(biop);\n\n\t\t\tif (prec === 0) {\n\t\t\t\tthis.index -= biop.length;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tbiop_info = { value: biop, prec, right_a: Jsep.right_associative.has(biop) };\n\n\t\t\tcur_biop = biop;\n\n\t\t\t// Reduce: make a binary expression from the three topmost entries.\n\t\t\tconst comparePrev = prev => biop_info.right_a && prev.right_a\n\t\t\t\t? prec > prev.prec\n\t\t\t\t: prec <= prev.prec;\n\t\t\twhile ((stack.length > 2) && comparePrev(stack[stack.length - 2])) {\n\t\t\t\tright = stack.pop();\n\t\t\t\tbiop = stack.pop().value;\n\t\t\t\tleft = stack.pop();\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.BINARY_EXP,\n\t\t\t\t\toperator: biop,\n\t\t\t\t\tleft,\n\t\t\t\t\tright\n\t\t\t\t};\n\t\t\t\tstack.push(node);\n\t\t\t}\n\n\t\t\tnode = this.gobbleToken();\n\n\t\t\tif (!node) {\n\t\t\t\tthis.throwError(\"Expected expression after \" + cur_biop);\n\t\t\t}\n\n\t\t\tstack.push(biop_info, node);\n\t\t}\n\n\t\ti = stack.length - 1;\n\t\tnode = stack[i];\n\n\t\twhile (i > 1) {\n\t\t\tnode = {\n\t\t\t\ttype: Jsep.BINARY_EXP,\n\t\t\t\toperator: stack[i - 1].value,\n\t\t\t\tleft: stack[i - 2],\n\t\t\t\tright: node\n\t\t\t};\n\t\t\ti -= 2;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * An individual part of a binary expression:\n\t * e.g. `foo.bar(baz)`, `1`, `\"abc\"`, `(a % 2)` (because it's in parenthesis)\n\t * @returns {boolean|jsep.Expression}\n\t */\n\tgobbleToken() {\n\t\tlet ch, to_check, tc_len, node;\n\n\t\tthis.gobbleSpaces();\n\t\tnode = this.searchHook('gobble-token');\n\t\tif (node) {\n\t\t\treturn this.runHook('after-token', node);\n\t\t}\n\n\t\tch = this.code;\n\n\t\tif (Jsep.isDecimalDigit(ch) || ch === Jsep.PERIOD_CODE) {\n\t\t\t// Char code 46 is a dot `.` which can start off a numeric literal\n\t\t\treturn this.gobbleNumericLiteral();\n\t\t}\n\n\t\tif (ch === Jsep.SQUOTE_CODE || ch === Jsep.DQUOTE_CODE) {\n\t\t\t// Single or double quotes\n\t\t\tnode = this.gobbleStringLiteral();\n\t\t}\n\t\telse if (ch === Jsep.OBRACK_CODE) {\n\t\t\tnode = this.gobbleArray();\n\t\t}\n\t\telse {\n\t\t\tto_check = this.expr.substr(this.index, Jsep.max_unop_len);\n\t\t\ttc_len = to_check.length;\n\n\t\t\twhile (tc_len > 0) {\n\t\t\t\t// Don't accept an unary op when it is an identifier.\n\t\t\t\t// Unary ops that start with a identifier-valid character must be followed\n\t\t\t\t// by a non identifier-part valid character\n\t\t\t\tif (Jsep.unary_ops.hasOwnProperty(to_check) && (\n\t\t\t\t\t!Jsep.isIdentifierStart(this.code) ||\n\t\t\t\t\t(this.index + to_check.length < this.expr.length && !Jsep.isIdentifierPart(this.expr.charCodeAt(this.index + to_check.length)))\n\t\t\t\t)) {\n\t\t\t\t\tthis.index += tc_len;\n\t\t\t\t\tconst argument = this.gobbleToken();\n\t\t\t\t\tif (!argument) {\n\t\t\t\t\t\tthis.throwError('missing unaryOp argument');\n\t\t\t\t\t}\n\t\t\t\t\treturn this.runHook('after-token', {\n\t\t\t\t\t\ttype: Jsep.UNARY_EXP,\n\t\t\t\t\t\toperator: to_check,\n\t\t\t\t\t\targument,\n\t\t\t\t\t\tprefix: true\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tto_check = to_check.substr(0, --tc_len);\n\t\t\t}\n\n\t\t\tif (Jsep.isIdentifierStart(ch)) {\n\t\t\t\tnode = this.gobbleIdentifier();\n\t\t\t\tif (Jsep.literals.hasOwnProperty(node.name)) {\n\t\t\t\t\tnode = {\n\t\t\t\t\t\ttype: Jsep.LITERAL,\n\t\t\t\t\t\tvalue: Jsep.literals[node.name],\n\t\t\t\t\t\traw: node.name,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\telse if (node.name === Jsep.this_str) {\n\t\t\t\t\tnode = { type: Jsep.THIS_EXP };\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (ch === Jsep.OPAREN_CODE) { // open parenthesis\n\t\t\t\tnode = this.gobbleGroup();\n\t\t\t}\n\t\t}\n\n\t\tif (!node) {\n\t\t\treturn this.runHook('after-token', false);\n\t\t}\n\n\t\tnode = this.gobbleTokenProperty(node);\n\t\treturn this.runHook('after-token', node);\n\t}\n\n\t/**\n\t * Gobble properties of of identifiers/strings/arrays/groups.\n\t * e.g. `foo`, `bar.baz`, `foo['bar'].baz`\n\t * It also gobbles function calls:\n\t * e.g. `Math.acos(obj.angle)`\n\t * @param {jsep.Expression} node\n\t * @returns {jsep.Expression}\n\t */\n\tgobbleTokenProperty(node) {\n\t\tthis.gobbleSpaces();\n\n\t\tlet ch = this.code;\n\t\twhile (ch === Jsep.PERIOD_CODE || ch === Jsep.OBRACK_CODE || ch === Jsep.OPAREN_CODE || ch === Jsep.QUMARK_CODE) {\n\t\t\tlet optional;\n\t\t\tif (ch === Jsep.QUMARK_CODE) {\n\t\t\t\tif (this.expr.charCodeAt(this.index + 1) !== Jsep.PERIOD_CODE) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toptional = true;\n\t\t\t\tthis.index += 2;\n\t\t\t\tthis.gobbleSpaces();\n\t\t\t\tch = this.code;\n\t\t\t}\n\t\t\tthis.index++;\n\n\t\t\tif (ch === Jsep.OBRACK_CODE) {\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.MEMBER_EXP,\n\t\t\t\t\tcomputed: true,\n\t\t\t\t\tobject: node,\n\t\t\t\t\tproperty: this.gobbleExpression()\n\t\t\t\t};\n\t\t\t\tif (!node.property) {\n\t\t\t\t\tthis.throwError('Unexpected \"' + this.char + '\"');\n\t\t\t\t}\n\t\t\t\tthis.gobbleSpaces();\n\t\t\t\tch = this.code;\n\t\t\t\tif (ch !== Jsep.CBRACK_CODE) {\n\t\t\t\t\tthis.throwError('Unclosed [');\n\t\t\t\t}\n\t\t\t\tthis.index++;\n\t\t\t}\n\t\t\telse if (ch === Jsep.OPAREN_CODE) {\n\t\t\t\t// A function call is being made; gobble all the arguments\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.CALL_EXP,\n\t\t\t\t\t'arguments': this.gobbleArguments(Jsep.CPAREN_CODE),\n\t\t\t\t\tcallee: node\n\t\t\t\t};\n\t\t\t}\n\t\t\telse if (ch === Jsep.PERIOD_CODE || optional) {\n\t\t\t\tif (optional) {\n\t\t\t\t\tthis.index--;\n\t\t\t\t}\n\t\t\t\tthis.gobbleSpaces();\n\t\t\t\tnode = {\n\t\t\t\t\ttype: Jsep.MEMBER_EXP,\n\t\t\t\t\tcomputed: false,\n\t\t\t\t\tobject: node,\n\t\t\t\t\tproperty: this.gobbleIdentifier(),\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tif (optional) {\n\t\t\t\tnode.optional = true;\n\t\t\t} // else leave undefined for compatibility with esprima\n\n\t\t\tthis.gobbleSpaces();\n\t\t\tch = this.code;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\t/**\n\t * Parse simple numeric literals: `12`, `3.4`, `.5`. Do this by using a string to\n\t * keep track of everything in the numeric literal and then calling `parseFloat` on that string\n\t * @returns {jsep.Literal}\n\t */\n\tgobbleNumericLiteral() {\n\t\tlet number = '', ch, chCode;\n\n\t\twhile (Jsep.isDecimalDigit(this.code)) {\n\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t}\n\n\t\tif (this.code === Jsep.PERIOD_CODE) { // can start with a decimal marker\n\t\t\tnumber += this.expr.charAt(this.index++);\n\n\t\t\twhile (Jsep.isDecimalDigit(this.code)) {\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\t\t}\n\n\t\tch = this.char;\n\n\t\tif (ch === 'e' || ch === 'E') { // exponent marker\n\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\tch = this.char;\n\n\t\t\tif (ch === '+' || ch === '-') { // exponent sign\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\n\t\t\twhile (Jsep.isDecimalDigit(this.code)) { // exponent itself\n\t\t\t\tnumber += this.expr.charAt(this.index++);\n\t\t\t}\n\n\t\t\tif (!Jsep.isDecimalDigit(this.expr.charCodeAt(this.index - 1)) ) {\n\t\t\t\tthis.throwError('Expected exponent (' + number + this.char + ')');\n\t\t\t}\n\t\t}\n\n\t\tchCode = this.code;\n\n\t\t// Check to make sure this isn't a variable name that start with a number (123abc)\n\t\tif (Jsep.isIdentifierStart(chCode)) {\n\t\t\tthis.throwError('Variable names cannot start with a number (' +\n\t\t\t\tnumber + this.char + ')');\n\t\t}\n\t\telse if (chCode === Jsep.PERIOD_CODE || (number.length === 1 && number.charCodeAt(0) === Jsep.PERIOD_CODE)) {\n\t\t\tthis.throwError('Unexpected period');\n\t\t}\n\n\t\treturn {\n\t\t\ttype: Jsep.LITERAL,\n\t\t\tvalue: parseFloat(number),\n\t\t\traw: number\n\t\t};\n\t}\n\n\t/**\n\t * Parses a string literal, staring with single or double quotes with basic support for escape codes\n\t * e.g. `\"hello world\"`, `'this is\\nJSEP'`\n\t * @returns {jsep.Literal}\n\t */\n\tgobbleStringLiteral() {\n\t\tlet str = '';\n\t\tconst startIndex = this.index;\n\t\tconst quote = this.expr.charAt(this.index++);\n\t\tlet closed = false;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tlet ch = this.expr.charAt(this.index++);\n\n\t\t\tif (ch === quote) {\n\t\t\t\tclosed = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (ch === '\\\\') {\n\t\t\t\t// Check for all of the common escape codes\n\t\t\t\tch = this.expr.charAt(this.index++);\n\n\t\t\t\tswitch (ch) {\n\t\t\t\t\tcase 'n': str += '\\n'; break;\n\t\t\t\t\tcase 'r': str += '\\r'; break;\n\t\t\t\t\tcase 't': str += '\\t'; break;\n\t\t\t\t\tcase 'b': str += '\\b'; break;\n\t\t\t\t\tcase 'f': str += '\\f'; break;\n\t\t\t\t\tcase 'v': str += '\\x0B'; break;\n\t\t\t\t\tdefault : str += ch;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tstr += ch;\n\t\t\t}\n\t\t}\n\n\t\tif (!closed) {\n\t\t\tthis.throwError('Unclosed quote after \"' + str + '\"');\n\t\t}\n\n\t\treturn {\n\t\t\ttype: Jsep.LITERAL,\n\t\t\tvalue: str,\n\t\t\traw: this.expr.substring(startIndex, this.index),\n\t\t};\n\t}\n\n\t/**\n\t * Gobbles only identifiers\n\t * e.g.: `foo`, `_value`, `$x1`\n\t * Also, this function checks if that identifier is a literal:\n\t * (e.g. `true`, `false`, `null`) or `this`\n\t * @returns {jsep.Identifier}\n\t */\n\tgobbleIdentifier() {\n\t\tlet ch = this.code, start = this.index;\n\n\t\tif (Jsep.isIdentifierStart(ch)) {\n\t\t\tthis.index++;\n\t\t}\n\t\telse {\n\t\t\tthis.throwError('Unexpected ' + this.char);\n\t\t}\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tch = this.code;\n\n\t\t\tif (Jsep.isIdentifierPart(ch)) {\n\t\t\t\tthis.index++;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\ttype: Jsep.IDENTIFIER,\n\t\t\tname: this.expr.slice(start, this.index),\n\t\t};\n\t}\n\n\t/**\n\t * Gobbles a list of arguments within the context of a function call\n\t * or array literal. This function also assumes that the opening character\n\t * `(` or `[` has already been gobbled, and gobbles expressions and commas\n\t * until the terminator character `)` or `]` is encountered.\n\t * e.g. `foo(bar, baz)`, `my_func()`, or `[bar, baz]`\n\t * @param {number} termination\n\t * @returns {jsep.Expression[]}\n\t */\n\tgobbleArguments(termination) {\n\t\tconst args = [];\n\t\tlet closed = false;\n\t\tlet separator_count = 0;\n\n\t\twhile (this.index < this.expr.length) {\n\t\t\tthis.gobbleSpaces();\n\t\t\tlet ch_i = this.code;\n\n\t\t\tif (ch_i === termination) { // done parsing\n\t\t\t\tclosed = true;\n\t\t\t\tthis.index++;\n\n\t\t\t\tif (termination === Jsep.CPAREN_CODE && separator_count && separator_count >= args.length){\n\t\t\t\t\tthis.throwError('Unexpected token ' + String.fromCharCode(termination));\n\t\t\t\t}\n\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\telse if (ch_i === Jsep.COMMA_CODE) { // between expressions\n\t\t\t\tthis.index++;\n\t\t\t\tseparator_count++;\n\n\t\t\t\tif (separator_count !== args.length) { // missing argument\n\t\t\t\t\tif (termination === Jsep.CPAREN_CODE) {\n\t\t\t\t\t\tthis.throwError('Unexpected token ,');\n\t\t\t\t\t}\n\t\t\t\t\telse if (termination === Jsep.CBRACK_CODE) {\n\t\t\t\t\t\tfor (let arg = args.length; arg < separator_count; arg++) {\n\t\t\t\t\t\t\targs.push(null);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (args.length !== separator_count && separator_count !== 0) {\n\t\t\t\t// NOTE: `&& separator_count !== 0` allows for either all commas, or all spaces as arguments\n\t\t\t\tthis.throwError('Expected comma');\n\t\t\t}\n\t\t\telse {\n\t\t\t\tconst node = this.gobbleExpression();\n\n\t\t\t\tif (!node || node.type === Jsep.COMPOUND) {\n\t\t\t\t\tthis.throwError('Expected comma');\n\t\t\t\t}\n\n\t\t\t\targs.push(node);\n\t\t\t}\n\t\t}\n\n\t\tif (!closed) {\n\t\t\tthis.throwError('Expected ' + String.fromCharCode(termination));\n\t\t}\n\n\t\treturn args;\n\t}\n\n\t/**\n\t * Responsible for parsing a group of things within parentheses `()`\n\t * that have no identifier in front (so not a function call)\n\t * This function assumes that it needs to gobble the opening parenthesis\n\t * and then tries to gobble everything within that parenthesis, assuming\n\t * that the next thing it should see is the close parenthesis. If not,\n\t * then the expression probably doesn't have a `)`\n\t * @returns {boolean|jsep.Expression}\n\t */\n\tgobbleGroup() {\n\t\tthis.index++;\n\t\tlet nodes = this.gobbleExpressions(Jsep.CPAREN_CODE);\n\t\tif (this.code === Jsep.CPAREN_CODE) {\n\t\t\tthis.index++;\n\t\t\tif (nodes.length === 1) {\n\t\t\t\treturn nodes[0];\n\t\t\t}\n\t\t\telse if (!nodes.length) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn {\n\t\t\t\t\ttype: Jsep.SEQUENCE_EXP,\n\t\t\t\t\texpressions: nodes,\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tthis.throwError('Unclosed (');\n\t\t}\n\t}\n\n\t/**\n\t * Responsible for parsing Array literals `[1, 2, 3]`\n\t * This function assumes that it needs to gobble the opening bracket\n\t * and then tries to gobble the expressions as arguments.\n\t * @returns {jsep.ArrayExpression}\n\t */\n\tgobbleArray() {\n\t\tthis.index++;\n\n\t\treturn {\n\t\t\ttype: Jsep.ARRAY_EXP,\n\t\t\telements: this.gobbleArguments(Jsep.CBRACK_CODE)\n\t\t};\n\t}\n}\n\n// Static fields:\nconst hooks = new Hooks();\nObject.assign(Jsep, {\n\thooks,\n\tplugins: new Plugins(Jsep),\n\n\t// Node Types\n\t// ----------\n\t// This is the full set of types that any JSEP node can be.\n\t// Store them here to save space when minified\n\tCOMPOUND:        'Compound',\n\tSEQUENCE_EXP:    'SequenceExpression',\n\tIDENTIFIER:      'Identifier',\n\tMEMBER_EXP:      'MemberExpression',\n\tLITERAL:         'Literal',\n\tTHIS_EXP:        'ThisExpression',\n\tCALL_EXP:        'CallExpression',\n\tUNARY_EXP:       'UnaryExpression',\n\tBINARY_EXP:      'BinaryExpression',\n\tARRAY_EXP:       'ArrayExpression',\n\n\tTAB_CODE:    9,\n\tLF_CODE:     10,\n\tCR_CODE:     13,\n\tSPACE_CODE:  32,\n\tPERIOD_CODE: 46, // '.'\n\tCOMMA_CODE:  44, // ','\n\tSQUOTE_CODE: 39, // single quote\n\tDQUOTE_CODE: 34, // double quotes\n\tOPAREN_CODE: 40, // (\n\tCPAREN_CODE: 41, // )\n\tOBRACK_CODE: 91, // [\n\tCBRACK_CODE: 93, // ]\n\tQUMARK_CODE: 63, // ?\n\tSEMCOL_CODE: 59, // ;\n\tCOLON_CODE:  58, // :\n\n\n\t// Operations\n\t// ----------\n\t// Use a quickly-accessible map to store all of the unary operators\n\t// Values are set to `1` (it really doesn't matter)\n\tunary_ops: {\n\t\t'-': 1,\n\t\t'!': 1,\n\t\t'~': 1,\n\t\t'+': 1\n\t},\n\n\t// Also use a map for the binary operations but set their values to their\n\t// binary precedence for quick reference (higher number = higher precedence)\n\t// see [Order of operations](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Operator_Precedence)\n\tbinary_ops: {\n\t\t'||': 1, '&&': 2, '|': 3, '^': 4, '&': 5,\n\t\t'==': 6, '!=': 6, '===': 6, '!==': 6,\n\t\t'<': 7, '>': 7, '<=': 7, '>=': 7,\n\t\t'<<': 8, '>>': 8, '>>>': 8,\n\t\t'+': 9, '-': 9,\n\t\t'*': 10, '/': 10, '%': 10\n\t},\n\n\t// sets specific binary_ops as right-associative\n\tright_associative: new Set(),\n\n\t// Additional valid identifier chars, apart from a-z, A-Z and 0-9 (except on the starting char)\n\tadditional_identifier_chars: new Set(['$', '_']),\n\n\t// Literals\n\t// ----------\n\t// Store the values to return for the various literals we may encounter\n\tliterals: {\n\t\t'true': true,\n\t\t'false': false,\n\t\t'null': null\n\t},\n\n\t// Except for `this`, which is special. This could be changed to something like `'self'` as well\n\tthis_str: 'this',\n});\nJsep.max_unop_len = Jsep.getMaxKeyLen(Jsep.unary_ops);\nJsep.max_binop_len = Jsep.getMaxKeyLen(Jsep.binary_ops);\n\n// Backward Compatibility:\nconst jsep = expr => (new Jsep(expr)).parse();\nconst stdClassProps = Object.getOwnPropertyNames(class Test{});\nObject.getOwnPropertyNames(Jsep)\n\t.filter(prop => !stdClassProps.includes(prop) && jsep[prop] === undefined)\n\t.forEach((m) => {\n\t\tjsep[m] = Jsep[m];\n\t});\njsep.Jsep = Jsep; // allows for const { Jsep } = require('jsep');\n\nconst CONDITIONAL_EXP = 'ConditionalExpression';\n\nvar ternary = {\n\tname: 'ternary',\n\n\tinit(jsep) {\n\t\t// Ternary expression: test ? consequent : alternate\n\t\tjsep.hooks.add('after-expression', function gobbleTernary(env) {\n\t\t\tif (env.node && this.code === jsep.QUMARK_CODE) {\n\t\t\t\tthis.index++;\n\t\t\t\tconst test = env.node;\n\t\t\t\tconst consequent = this.gobbleExpression();\n\n\t\t\t\tif (!consequent) {\n\t\t\t\t\tthis.throwError('Expected expression');\n\t\t\t\t}\n\n\t\t\t\tthis.gobbleSpaces();\n\n\t\t\t\tif (this.code === jsep.COLON_CODE) {\n\t\t\t\t\tthis.index++;\n\t\t\t\t\tconst alternate = this.gobbleExpression();\n\n\t\t\t\t\tif (!alternate) {\n\t\t\t\t\t\tthis.throwError('Expected expression');\n\t\t\t\t\t}\n\t\t\t\t\tenv.node = {\n\t\t\t\t\t\ttype: CONDITIONAL_EXP,\n\t\t\t\t\t\ttest,\n\t\t\t\t\t\tconsequent,\n\t\t\t\t\t\talternate,\n\t\t\t\t\t};\n\n\t\t\t\t\t// check for operators of higher priority than ternary (i.e. assignment)\n\t\t\t\t\t// jsep sets || at 1, and assignment at 0.9, and conditional should be between them\n\t\t\t\t\tif (test.operator && jsep.binary_ops[test.operator] <= 0.9) {\n\t\t\t\t\t\tlet newTest = test;\n\t\t\t\t\t\twhile (newTest.right.operator && jsep.binary_ops[newTest.right.operator] <= 0.9) {\n\t\t\t\t\t\t\tnewTest = newTest.right;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tenv.node.test = newTest.right;\n\t\t\t\t\t\tnewTest.right = env.node;\n\t\t\t\t\t\tenv.node = test;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis.throwError('Expected :');\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t},\n};\n\n// Add default plugins:\n\njsep.plugins.register(ternary);\n\nexport { Jsep, jsep as default };\n","const FSLASH_CODE = 47; // '/'\nconst BSLASH_CODE = 92; // '\\\\'\n\nvar index = {\n\tname: 'regex',\n\n\tinit(jsep) {\n\t\t// Regex literal: /abc123/ig\n\t\tjsep.hooks.add('gobble-token', function gobbleRegexLiteral(env) {\n\t\t\tif (this.code === FSLASH_CODE) {\n\t\t\t\tconst patternIndex = ++this.index;\n\n\t\t\t\tlet inCharSet = false;\n\t\t\t\twhile (this.index < this.expr.length) {\n\t\t\t\t\tif (this.code === FSLASH_CODE && !inCharSet) {\n\t\t\t\t\t\tconst pattern = this.expr.slice(patternIndex, this.index);\n\n\t\t\t\t\t\tlet flags = '';\n\t\t\t\t\t\twhile (++this.index < this.expr.length) {\n\t\t\t\t\t\t\tconst code = this.code;\n\t\t\t\t\t\t\tif ((code >= 97 && code <= 122) // a...z\n\t\t\t\t\t\t\t\t|| (code >= 65 && code <= 90) // A...Z\n\t\t\t\t\t\t\t\t|| (code >= 48 && code <= 57)) { // 0-9\n\t\t\t\t\t\t\t\tflags += this.char;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tlet value;\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tvalue = new RegExp(pattern, flags);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcatch (e) {\n\t\t\t\t\t\t\tthis.throwError(e.message);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tenv.node = {\n\t\t\t\t\t\t\ttype: jsep.LITERAL,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\traw: this.expr.slice(patternIndex - 1, this.index),\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\t// allow . [] and () after regex: /regex/.test(a)\n\t\t\t\t\t\tenv.node = this.gobbleTokenProperty(env.node);\n\t\t\t\t\t\treturn env.node;\n\t\t\t\t\t}\n\t\t\t\t\tif (this.code === jsep.OBRACK_CODE) {\n\t\t\t\t\t\tinCharSet = true;\n\t\t\t\t\t}\n\t\t\t\t\telse if (inCharSet && this.code === jsep.CBRACK_CODE) {\n\t\t\t\t\t\tinCharSet = false;\n\t\t\t\t\t}\n\t\t\t\t\tthis.index += this.code === BSLASH_CODE ? 2 : 1;\n\t\t\t\t}\n\t\t\t\tthis.throwError('Unclosed Regex');\n\t\t\t}\n\t\t});\n\t},\n};\n\nexport { index as default };\n","const PLUS_CODE = 43; // +\nconst MINUS_CODE = 45; // -\n\nconst plugin = {\n\tname: 'assignment',\n\n\tassignmentOperators: new Set([\n\t\t'=',\n\t\t'*=',\n\t\t'**=',\n\t\t'/=',\n\t\t'%=',\n\t\t'+=',\n\t\t'-=',\n\t\t'<<=',\n\t\t'>>=',\n\t\t'>>>=',\n\t\t'&=',\n\t\t'^=',\n\t\t'|=',\n\t]),\n\tupdateOperators: [PLUS_CODE, MINUS_CODE],\n\tassignmentPrecedence: 0.9,\n\n\tinit(jsep) {\n\t\tconst updateNodeTypes = [jsep.IDENTIFIER, jsep.MEMBER_EXP];\n\t\tplugin.assignmentOperators.forEach(op => jsep.addBinaryOp(op, plugin.assignmentPrecedence, true));\n\n\t\tjsep.hooks.add('gobble-token', function gobbleUpdatePrefix(env) {\n\t\t\tconst code = this.code;\n\t\t\tif (plugin.updateOperators.some(c => c === code && c === this.expr.charCodeAt(this.index + 1))) {\n\t\t\t\tthis.index += 2;\n\t\t\t\tenv.node = {\n\t\t\t\t\ttype: 'UpdateExpression',\n\t\t\t\t\toperator: code === PLUS_CODE ? '++' : '--',\n\t\t\t\t\targument: this.gobbleTokenProperty(this.gobbleIdentifier()),\n\t\t\t\t\tprefix: true,\n\t\t\t\t};\n\t\t\t\tif (!env.node.argument || !updateNodeTypes.includes(env.node.argument.type)) {\n\t\t\t\t\tthis.throwError(`Unexpected ${env.node.operator}`);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tjsep.hooks.add('after-token', function gobbleUpdatePostfix(env) {\n\t\t\tif (env.node) {\n\t\t\t\tconst code = this.code;\n\t\t\t\tif (plugin.updateOperators.some(c => c === code && c === this.expr.charCodeAt(this.index + 1))) {\n\t\t\t\t\tif (!updateNodeTypes.includes(env.node.type)) {\n\t\t\t\t\t\tthis.throwError(`Unexpected ${env.node.operator}`);\n\t\t\t\t\t}\n\t\t\t\t\tthis.index += 2;\n\t\t\t\t\tenv.node = {\n\t\t\t\t\t\ttype: 'UpdateExpression',\n\t\t\t\t\t\toperator: code === PLUS_CODE ? '++' : '--',\n\t\t\t\t\t\targument: env.node,\n\t\t\t\t\t\tprefix: false,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tjsep.hooks.add('after-expression', function gobbleAssignment(env) {\n\t\t\tif (env.node) {\n\t\t\t\t// Note: Binaries can be chained in a single expression to respect\n\t\t\t\t// operator precedence (i.e. a = b = 1 + 2 + 3)\n\t\t\t\t// Update all binary assignment nodes in the tree\n\t\t\t\tupdateBinariesToAssignments(env.node);\n\t\t\t}\n\t\t});\n\n\t\tfunction updateBinariesToAssignments(node) {\n\t\t\tif (plugin.assignmentOperators.has(node.operator)) {\n\t\t\t\tnode.type = 'AssignmentExpression';\n\t\t\t\tupdateBinariesToAssignments(node.left);\n\t\t\t\tupdateBinariesToAssignments(node.right);\n\t\t\t}\n\t\t\telse if (!node.operator) {\n\t\t\t\tObject.values(node).forEach((val) => {\n\t\t\t\t\tif (val && typeof val === 'object') {\n\t\t\t\t\t\tupdateBinariesToAssignments(val);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t},\n};\n\nexport { plugin as default };\n","/* eslint-disable no-bitwise */\nimport jsep from 'jsep';\nimport jsepRegex from '@jsep-plugin/regex';\nimport jsepAssignment from '@jsep-plugin/assignment';\n\n// register plugins\njsep.plugins.register(jsepRegex, jsepAssignment);\n\nconst SafeEval = {\n    /**\n     * @param {jsep.Expression} ast\n     * @param {Record<string, any>} subs\n     */\n    evalAst (ast, subs) {\n        switch (ast.type) {\n        case 'BinaryExpression':\n        case 'LogicalExpression':\n            return SafeEval.evalBinaryExpression(ast, subs);\n        case 'Compound':\n            return SafeEval.evalCompound(ast, subs);\n        case 'ConditionalExpression':\n            return SafeEval.evalConditionalExpression(ast, subs);\n        case 'Identifier':\n            return SafeEval.evalIdentifier(ast, subs);\n        case 'Literal':\n            return SafeEval.evalLiteral(ast, subs);\n        case 'MemberExpression':\n            return SafeEval.evalMemberExpression(ast, subs);\n        case 'UnaryExpression':\n            return SafeEval.evalUnaryExpression(ast, subs);\n        case 'ArrayExpression':\n            return SafeEval.evalArrayExpression(ast, subs);\n        case 'CallExpression':\n            return SafeEval.evalCallExpression(ast, subs);\n        case 'AssignmentExpression':\n            return SafeEval.evalAssignmentExpression(ast, subs);\n        default:\n            throw SyntaxError('Unexpected expression', ast);\n        }\n    },\n    evalBinaryExpression (ast, subs) {\n        const result = {\n            '||': (a, b) => a || b(),\n            '&&': (a, b) => a && b(),\n            '|': (a, b) => a | b(),\n            '^': (a, b) => a ^ b(),\n            '&': (a, b) => a & b(),\n            // eslint-disable-next-line eqeqeq\n            '==': (a, b) => a == b(),\n            // eslint-disable-next-line eqeqeq\n            '!=': (a, b) => a != b(),\n            '===': (a, b) => a === b(),\n            '!==': (a, b) => a !== b(),\n            '<': (a, b) => a < b(),\n            '>': (a, b) => a > b(),\n            '<=': (a, b) => a <= b(),\n            '>=': (a, b) => a >= b(),\n            '<<': (a, b) => a << b(),\n            '>>': (a, b) => a >> b(),\n            '>>>': (a, b) => a >>> b(),\n            '+': (a, b) => a + b(),\n            '-': (a, b) => a - b(),\n            '*': (a, b) => a * b(),\n            '/': (a, b) => a / b(),\n            '%': (a, b) => a % b()\n        }[ast.operator](\n            SafeEval.evalAst(ast.left, subs),\n            () => SafeEval.evalAst(ast.right, subs)\n        );\n        return result;\n    },\n    evalCompound (ast, subs) {\n        let last;\n        for (let i = 0; i < ast.body.length; i++) {\n            if (\n                ast.body[i].type === 'Identifier' &&\n                ['var', 'let', 'const'].includes(ast.body[i].name) &&\n                ast.body[i + 1] &&\n                ast.body[i + 1].type === 'AssignmentExpression'\n            ) {\n                // var x=2; is detected as\n                // [{Identifier var}, {AssignmentExpression x=2}]\n                // eslint-disable-next-line @stylistic/max-len -- Long\n                // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n                i += 1;\n            }\n            const expr = ast.body[i];\n            last = SafeEval.evalAst(expr, subs);\n        }\n        return last;\n    },\n    evalConditionalExpression (ast, subs) {\n        if (SafeEval.evalAst(ast.test, subs)) {\n            return SafeEval.evalAst(ast.consequent, subs);\n        }\n        return SafeEval.evalAst(ast.alternate, subs);\n    },\n    evalIdentifier (ast, subs) {\n        if (ast.name in subs) {\n            return subs[ast.name];\n        }\n        throw ReferenceError(`${ast.name} is not defined`);\n    },\n    evalLiteral (ast) {\n        return ast.value;\n    },\n    evalMemberExpression (ast, subs) {\n        const prop = ast.computed\n            ? SafeEval.evalAst(ast.property) // `object[property]`\n            : ast.property.name; // `object.property` property is Identifier\n        const obj = SafeEval.evalAst(ast.object, subs);\n        const result = obj[prop];\n        if (typeof result === 'function') {\n            return result.bind(obj); // arrow functions aren't affected by bind.\n        }\n        return result;\n    },\n    evalUnaryExpression (ast, subs) {\n        const result = {\n            '-': (a) => -SafeEval.evalAst(a, subs),\n            '!': (a) => !SafeEval.evalAst(a, subs),\n            '~': (a) => ~SafeEval.evalAst(a, subs),\n            // eslint-disable-next-line no-implicit-coercion\n            '+': (a) => +SafeEval.evalAst(a, subs)\n        }[ast.operator](ast.argument);\n        return result;\n    },\n    evalArrayExpression (ast, subs) {\n        return ast.elements.map((el) => SafeEval.evalAst(el, subs));\n    },\n    evalCallExpression (ast, subs) {\n        const args = ast.arguments.map((arg) => SafeEval.evalAst(arg, subs));\n        const func = SafeEval.evalAst(ast.callee, subs);\n        return func(...args);\n    },\n    evalAssignmentExpression (ast, subs) {\n        if (ast.left.type !== 'Identifier') {\n            throw SyntaxError('Invalid left-hand side in assignment');\n        }\n        const id = ast.left.name;\n        const value = SafeEval.evalAst(ast.right, subs);\n        subs[id] = value;\n        return subs[id];\n    }\n};\n\n/**\n * A replacement for NodeJS' VM.Script which is also {@link https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP | Content Security Policy} friendly.\n */\nclass SafeScript {\n    /**\n     * @param {string} expr Expression to evaluate\n     */\n    constructor (expr) {\n        this.code = expr;\n        this.ast = jsep(this.code);\n    }\n\n    /**\n     * @param {object} context Object whose items will be added\n     *   to evaluation\n     * @returns {EvaluatedResult} Result of evaluated code\n     */\n    runInNewContext (context) {\n        const keyMap = {...context};\n        return SafeEval.evalAst(this.ast, keyMap);\n    }\n}\n\nexport {SafeScript};\n","/* eslint-disable camelcase, unicorn/prefer-string-replace-all,\n  unicorn/prefer-at */\n\nimport {SafeScript} from './Safe-Script.js';\n\n/**\n * @typedef {null|boolean|number|string|object|GenericArray} JSONObject\n */\n\n/**\n * @typedef {any} AnyItem\n */\n\n/**\n * @typedef {any} AnyResult\n */\n\n/**\n * Copies array and then pushes item into it.\n * @param {GenericArray} arr Array to copy and into which to push\n * @param {AnyItem} item Array item to add (to end)\n * @returns {GenericArray} Copy of the original array\n */\nfunction push (arr, item) {\n    arr = arr.slice();\n    arr.push(item);\n    return arr;\n}\n/**\n * Copies array and then unshifts item into it.\n * @param {AnyItem} item Array item to add (to beginning)\n * @param {GenericArray} arr Array to copy and into which to unshift\n * @returns {GenericArray} Copy of the original array\n */\nfunction unshift (item, arr) {\n    arr = arr.slice();\n    arr.unshift(item);\n    return arr;\n}\n\n/**\n * Caught when JSONPath is used without `new` but rethrown if with `new`\n * @extends Error\n */\nclass NewError extends Error {\n    /**\n     * @param {AnyResult} value The evaluated scalar value\n     */\n    constructor (value) {\n        super(\n            'JSONPath should not be called with \"new\" (it prevents return ' +\n            'of (unwrapped) scalar values)'\n        );\n        this.avoidNew = true;\n        this.value = value;\n        this.name = 'NewError';\n    }\n}\n\n/**\n* @typedef {object} ReturnObject\n* @property {string} path\n* @property {JSONObject} value\n* @property {object|GenericArray} parent\n* @property {string} parentProperty\n*/\n\n/**\n* @callback JSONPathCallback\n* @param {string|object} preferredOutput\n* @param {\"value\"|\"property\"} type\n* @param {ReturnObject} fullRetObj\n* @returns {void}\n*/\n\n/**\n* @callback OtherTypeCallback\n* @param {JSONObject} val\n* @param {string} path\n* @param {object|GenericArray} parent\n* @param {string} parentPropName\n* @returns {boolean}\n*/\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n* @callback EvalCallback\n* @param {string} code\n* @param {ContextItem} context\n* @returns {EvaluatedResult}\n*/\n\n/**\n * @typedef {typeof SafeScript} EvalClass\n */\n\n/**\n * @typedef {object} JSONPathOptions\n * @property {JSON} json\n * @property {string|string[]} path\n * @property {\"value\"|\"path\"|\"pointer\"|\"parent\"|\"parentProperty\"|\n *   \"all\"} [resultType=\"value\"]\n * @property {boolean} [flatten=false]\n * @property {boolean} [wrap=true]\n * @property {object} [sandbox={}]\n * @property {EvalCallback|EvalClass|'safe'|'native'|\n *   boolean} [eval = 'safe']\n * @property {object|GenericArray|null} [parent=null]\n * @property {string|null} [parentProperty=null]\n * @property {JSONPathCallback} [callback]\n * @property {OtherTypeCallback} [otherTypeCallback] Defaults to\n *   function which throws on encountering `@other`\n * @property {boolean} [autostart=true]\n */\n\n/**\n * @param {string|JSONPathOptions} opts If a string, will be treated as `expr`\n * @param {string} [expr] JSON path to evaluate\n * @param {JSON} [obj] JSON object to evaluate against\n * @param {JSONPathCallback} [callback] Passed 3 arguments: 1) desired payload\n *     per `resultType`, 2) `\"value\"|\"property\"`, 3) Full returned object with\n *     all payloads\n * @param {OtherTypeCallback} [otherTypeCallback] If `@other()` is at the end\n *   of one's query, this will be invoked with the value of the item, its\n *   path, its parent, and its parent's property name, and it should return\n *   a boolean indicating whether the supplied value belongs to the \"other\"\n *   type or not (or it may handle transformations and return `false`).\n * @returns {JSONPath}\n * @class\n */\nfunction JSONPath (opts, expr, obj, callback, otherTypeCallback) {\n    // eslint-disable-next-line no-restricted-syntax\n    if (!(this instanceof JSONPath)) {\n        try {\n            return new JSONPath(opts, expr, obj, callback, otherTypeCallback);\n        } catch (e) {\n            if (!e.avoidNew) {\n                throw e;\n            }\n            return e.value;\n        }\n    }\n\n    if (typeof opts === 'string') {\n        otherTypeCallback = callback;\n        callback = obj;\n        obj = expr;\n        expr = opts;\n        opts = null;\n    }\n    const optObj = opts && typeof opts === 'object';\n    opts = opts || {};\n    this.json = opts.json || obj;\n    this.path = opts.path || expr;\n    this.resultType = opts.resultType || 'value';\n    this.flatten = opts.flatten || false;\n    this.wrap = Object.hasOwn(opts, 'wrap') ? opts.wrap : true;\n    this.sandbox = opts.sandbox || {};\n    this.eval = opts.eval === undefined ? 'safe' : opts.eval;\n    this.ignoreEvalErrors = (typeof opts.ignoreEvalErrors === 'undefined')\n        ? false\n        : opts.ignoreEvalErrors;\n    this.parent = opts.parent || null;\n    this.parentProperty = opts.parentProperty || null;\n    this.callback = opts.callback || callback || null;\n    this.otherTypeCallback = opts.otherTypeCallback ||\n        otherTypeCallback ||\n        function () {\n            throw new TypeError(\n                'You must supply an otherTypeCallback callback option ' +\n                'with the @other() operator.'\n            );\n        };\n\n    if (opts.autostart !== false) {\n        const args = {\n            path: (optObj ? opts.path : expr)\n        };\n        if (!optObj) {\n            args.json = obj;\n        } else if ('json' in opts) {\n            args.json = opts.json;\n        }\n        const ret = this.evaluate(args);\n        if (!ret || typeof ret !== 'object') {\n            throw new NewError(ret);\n        }\n        return ret;\n    }\n}\n\n// PUBLIC METHODS\nJSONPath.prototype.evaluate = function (\n    expr, json, callback, otherTypeCallback\n) {\n    let currParent = this.parent,\n        currParentProperty = this.parentProperty;\n    let {flatten, wrap} = this;\n\n    this.currResultType = this.resultType;\n    this.currEval = this.eval;\n    this.currSandbox = this.sandbox;\n    callback = callback || this.callback;\n    this.currOtherTypeCallback = otherTypeCallback || this.otherTypeCallback;\n\n    json = json || this.json;\n    expr = expr || this.path;\n    if (expr && typeof expr === 'object' && !Array.isArray(expr)) {\n        if (!expr.path && expr.path !== '') {\n            throw new TypeError(\n                'You must supply a \"path\" property when providing an object ' +\n                'argument to JSONPath.evaluate().'\n            );\n        }\n        if (!(Object.hasOwn(expr, 'json'))) {\n            throw new TypeError(\n                'You must supply a \"json\" property when providing an object ' +\n                'argument to JSONPath.evaluate().'\n            );\n        }\n        ({json} = expr);\n        flatten = Object.hasOwn(expr, 'flatten') ? expr.flatten : flatten;\n        this.currResultType = Object.hasOwn(expr, 'resultType')\n            ? expr.resultType\n            : this.currResultType;\n        this.currSandbox = Object.hasOwn(expr, 'sandbox')\n            ? expr.sandbox\n            : this.currSandbox;\n        wrap = Object.hasOwn(expr, 'wrap') ? expr.wrap : wrap;\n        this.currEval = Object.hasOwn(expr, 'eval')\n            ? expr.eval\n            : this.currEval;\n        callback = Object.hasOwn(expr, 'callback') ? expr.callback : callback;\n        this.currOtherTypeCallback = Object.hasOwn(expr, 'otherTypeCallback')\n            ? expr.otherTypeCallback\n            : this.currOtherTypeCallback;\n        currParent = Object.hasOwn(expr, 'parent') ? expr.parent : currParent;\n        currParentProperty = Object.hasOwn(expr, 'parentProperty')\n            ? expr.parentProperty\n            : currParentProperty;\n        expr = expr.path;\n    }\n    currParent = currParent || null;\n    currParentProperty = currParentProperty || null;\n\n    if (Array.isArray(expr)) {\n        expr = JSONPath.toPathString(expr);\n    }\n    if ((!expr && expr !== '') || !json) {\n        return undefined;\n    }\n\n    const exprList = JSONPath.toPathArray(expr);\n    if (exprList[0] === '$' && exprList.length > 1) {\n        exprList.shift();\n    }\n    this._hasParentSelector = null;\n    const result = this\n        ._trace(\n            exprList, json, ['$'], currParent, currParentProperty, callback\n        )\n        .filter(function (ea) {\n            return ea && !ea.isParentSelector;\n        });\n\n    if (!result.length) {\n        return wrap ? [] : undefined;\n    }\n    if (!wrap && result.length === 1 && !result[0].hasArrExpr) {\n        return this._getPreferredOutput(result[0]);\n    }\n    return result.reduce((rslt, ea) => {\n        const valOrPath = this._getPreferredOutput(ea);\n        if (flatten && Array.isArray(valOrPath)) {\n            rslt = rslt.concat(valOrPath);\n        } else {\n            rslt.push(valOrPath);\n        }\n        return rslt;\n    }, []);\n};\n\n// PRIVATE METHODS\n\nJSONPath.prototype._getPreferredOutput = function (ea) {\n    const resultType = this.currResultType;\n    switch (resultType) {\n    case 'all': {\n        const path = Array.isArray(ea.path)\n            ? ea.path\n            : JSONPath.toPathArray(ea.path);\n        ea.pointer = JSONPath.toPointer(path);\n        ea.path = typeof ea.path === 'string'\n            ? ea.path\n            : JSONPath.toPathString(ea.path);\n        return ea;\n    } case 'value': case 'parent': case 'parentProperty':\n        return ea[resultType];\n    case 'path':\n        return JSONPath.toPathString(ea[resultType]);\n    case 'pointer':\n        return JSONPath.toPointer(ea.path);\n    default:\n        throw new TypeError('Unknown result type');\n    }\n};\n\nJSONPath.prototype._handleCallback = function (fullRetObj, callback, type) {\n    if (callback) {\n        const preferredOutput = this._getPreferredOutput(fullRetObj);\n        fullRetObj.path = typeof fullRetObj.path === 'string'\n            ? fullRetObj.path\n            : JSONPath.toPathString(fullRetObj.path);\n        // eslint-disable-next-line n/callback-return\n        callback(preferredOutput, type, fullRetObj);\n    }\n};\n\n/**\n *\n * @param {string} expr\n * @param {JSONObject} val\n * @param {string} path\n * @param {object|GenericArray} parent\n * @param {string} parentPropName\n * @param {JSONPathCallback} callback\n * @param {boolean} hasArrExpr\n * @param {boolean} literalPriority\n * @returns {ReturnObject|ReturnObject[]}\n */\nJSONPath.prototype._trace = function (\n    expr, val, path, parent, parentPropName, callback, hasArrExpr,\n    literalPriority\n) {\n    // No expr to follow? return path and value as the result of\n    //  this trace branch\n    let retObj;\n    if (!expr.length) {\n        retObj = {\n            path,\n            value: val,\n            parent,\n            parentProperty: parentPropName,\n            hasArrExpr\n        };\n        this._handleCallback(retObj, callback, 'value');\n        return retObj;\n    }\n\n    const loc = expr[0], x = expr.slice(1);\n\n    // We need to gather the return value of recursive trace calls in order to\n    // do the parent sel computation.\n    const ret = [];\n    /**\n     *\n     * @param {ReturnObject|ReturnObject[]} elems\n     * @returns {void}\n     */\n    function addRet (elems) {\n        if (Array.isArray(elems)) {\n            // This was causing excessive stack size in Node (with or\n            //  without Babel) against our performance test:\n            //  `ret.push(...elems);`\n            elems.forEach((t) => {\n                ret.push(t);\n            });\n        } else {\n            ret.push(elems);\n        }\n    }\n    if ((typeof loc !== 'string' || literalPriority) && val &&\n        Object.hasOwn(val, loc)\n    ) { // simple case--directly follow property\n        addRet(this._trace(x, val[loc], push(path, loc), val, loc, callback,\n            hasArrExpr));\n    // eslint-disable-next-line unicorn/prefer-switch -- Part of larger `if`\n    } else if (loc === '*') { // all child properties\n        this._walk(val, (m) => {\n            addRet(this._trace(\n                x, val[m], push(path, m), val, m, callback, true, true\n            ));\n        });\n    } else if (loc === '..') { // all descendent parent properties\n        // Check remaining expression with val's immediate children\n        addRet(\n            this._trace(x, val, path, parent, parentPropName, callback,\n                hasArrExpr)\n        );\n        this._walk(val, (m) => {\n            // We don't join m and x here because we only want parents,\n            //   not scalar values\n            if (typeof val[m] === 'object') {\n                // Keep going with recursive descent on val's\n                //   object children\n                addRet(this._trace(\n                    expr.slice(), val[m], push(path, m), val, m, callback, true\n                ));\n            }\n        });\n    // The parent sel computation is handled in the frame above using the\n    // ancestor object of val\n    } else if (loc === '^') {\n        // This is not a final endpoint, so we do not invoke the callback here\n        this._hasParentSelector = true;\n        return {\n            path: path.slice(0, -1),\n            expr: x,\n            isParentSelector: true\n        };\n    } else if (loc === '~') { // property name\n        retObj = {\n            path: push(path, loc),\n            value: parentPropName,\n            parent,\n            parentProperty: null\n        };\n        this._handleCallback(retObj, callback, 'property');\n        return retObj;\n    } else if (loc === '$') { // root only\n        addRet(this._trace(x, val, path, null, null, callback, hasArrExpr));\n    } else if ((/^(-?\\d*):(-?\\d*):?(\\d*)$/u).test(loc)) { // [start:end:step]  Python slice syntax\n        addRet(\n            this._slice(loc, x, val, path, parent, parentPropName, callback)\n        );\n    } else if (loc.indexOf('?(') === 0) { // [?(expr)] (filtering)\n        if (this.currEval === false) {\n            throw new Error('Eval [?(expr)] prevented in JSONPath expression.');\n        }\n        const safeLoc = loc.replace(/^\\?\\((.*?)\\)$/u, '$1');\n        // check for a nested filter expression\n        const nested = (/@.?([^?]*)[['](\\??\\(.*?\\))(?!.\\)\\])[\\]']/gu).exec(safeLoc);\n        if (nested) {\n            // find if there are matches in the nested expression\n            // add them to the result set if there is at least one match\n            this._walk(val, (m) => {\n                const npath = [nested[2]];\n                const nvalue = nested[1]\n                    ? val[m][nested[1]]\n                    : val[m];\n                const filterResults = this._trace(npath, nvalue, path,\n                    parent, parentPropName, callback, true);\n                if (filterResults.length > 0) {\n                    addRet(this._trace(x, val[m], push(path, m), val,\n                        m, callback, true));\n                }\n            });\n        } else {\n            this._walk(val, (m) => {\n                if (this._eval(safeLoc, val[m], m, path, parent,\n                    parentPropName)) {\n                    addRet(this._trace(x, val[m], push(path, m), val, m,\n                        callback, true));\n                }\n            });\n        }\n    } else if (loc[0] === '(') { // [(expr)] (dynamic property/index)\n        if (this.currEval === false) {\n            throw new Error('Eval [(expr)] prevented in JSONPath expression.');\n        }\n        // As this will resolve to a property name (but we don't know it\n        //  yet), property and parent information is relative to the\n        //  parent of the property to which this expression will resolve\n        addRet(this._trace(unshift(\n            this._eval(\n                loc, val, path[path.length - 1],\n                path.slice(0, -1), parent, parentPropName\n            ),\n            x\n        ), val, path, parent, parentPropName, callback, hasArrExpr));\n    } else if (loc[0] === '@') { // value type: @boolean(), etc.\n        let addType = false;\n        const valueType = loc.slice(1, -2);\n        switch (valueType) {\n        case 'scalar':\n            if (!val || !(['object', 'function'].includes(typeof val))) {\n                addType = true;\n            }\n            break;\n        case 'boolean': case 'string': case 'undefined': case 'function':\n            if (typeof val === valueType) {\n                addType = true;\n            }\n            break;\n        case 'integer':\n            if (Number.isFinite(val) && !(val % 1)) {\n                addType = true;\n            }\n            break;\n        case 'number':\n            if (Number.isFinite(val)) {\n                addType = true;\n            }\n            break;\n        case 'nonFinite':\n            if (typeof val === 'number' && !Number.isFinite(val)) {\n                addType = true;\n            }\n            break;\n        case 'object':\n            if (val && typeof val === valueType) {\n                addType = true;\n            }\n            break;\n        case 'array':\n            if (Array.isArray(val)) {\n                addType = true;\n            }\n            break;\n        case 'other':\n            addType = this.currOtherTypeCallback(\n                val, path, parent, parentPropName\n            );\n            break;\n        case 'null':\n            if (val === null) {\n                addType = true;\n            }\n            break;\n        /* c8 ignore next 2 */\n        default:\n            throw new TypeError('Unknown value type ' + valueType);\n        }\n        if (addType) {\n            retObj = {path, value: val, parent, parentProperty: parentPropName};\n            this._handleCallback(retObj, callback, 'value');\n            return retObj;\n        }\n    // `-escaped property\n    } else if (loc[0] === '`' && val && Object.hasOwn(val, loc.slice(1))) {\n        const locProp = loc.slice(1);\n        addRet(this._trace(\n            x, val[locProp], push(path, locProp), val, locProp, callback,\n            hasArrExpr, true\n        ));\n    } else if (loc.includes(',')) { // [name1,name2,...]\n        const parts = loc.split(',');\n        for (const part of parts) {\n            addRet(this._trace(\n                unshift(part, x), val, path, parent, parentPropName, callback,\n                true\n            ));\n        }\n    // simple case--directly follow property\n    } else if (\n        !literalPriority && val && Object.hasOwn(val, loc)\n    ) {\n        addRet(\n            this._trace(x, val[loc], push(path, loc), val, loc, callback,\n                hasArrExpr, true)\n        );\n    }\n\n    // We check the resulting values for parent selections. For parent\n    // selections we discard the value object and continue the trace with the\n    // current val object\n    if (this._hasParentSelector) {\n        for (let t = 0; t < ret.length; t++) {\n            const rett = ret[t];\n            if (rett && rett.isParentSelector) {\n                const tmp = this._trace(\n                    rett.expr, val, rett.path, parent, parentPropName, callback,\n                    hasArrExpr\n                );\n                if (Array.isArray(tmp)) {\n                    ret[t] = tmp[0];\n                    const tl = tmp.length;\n                    for (let tt = 1; tt < tl; tt++) {\n                        // eslint-disable-next-line @stylistic/max-len -- Long\n                        // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n                        t++;\n                        ret.splice(t, 0, tmp[tt]);\n                    }\n                } else {\n                    ret[t] = tmp;\n                }\n            }\n        }\n    }\n    return ret;\n};\n\nJSONPath.prototype._walk = function (val, f) {\n    if (Array.isArray(val)) {\n        const n = val.length;\n        for (let i = 0; i < n; i++) {\n            f(i);\n        }\n    } else if (val && typeof val === 'object') {\n        Object.keys(val).forEach((m) => {\n            f(m);\n        });\n    }\n};\n\nJSONPath.prototype._slice = function (\n    loc, expr, val, path, parent, parentPropName, callback\n) {\n    if (!Array.isArray(val)) {\n        return undefined;\n    }\n    const len = val.length, parts = loc.split(':'),\n        step = (parts[2] && Number.parseInt(parts[2])) || 1;\n    let start = (parts[0] && Number.parseInt(parts[0])) || 0,\n        end = (parts[1] && Number.parseInt(parts[1])) || len;\n    start = (start < 0) ? Math.max(0, start + len) : Math.min(len, start);\n    end = (end < 0) ? Math.max(0, end + len) : Math.min(len, end);\n    const ret = [];\n    for (let i = start; i < end; i += step) {\n        const tmp = this._trace(\n            unshift(i, expr), val, path, parent, parentPropName, callback, true\n        );\n        // Should only be possible to be an array here since first part of\n        //   ``unshift(i, expr)` passed in above would not be empty, nor `~`,\n        //     nor begin with `@` (as could return objects)\n        // This was causing excessive stack size in Node (with or\n        //  without Babel) against our performance test: `ret.push(...tmp);`\n        tmp.forEach((t) => {\n            ret.push(t);\n        });\n    }\n    return ret;\n};\n\nJSONPath.prototype._eval = function (\n    code, _v, _vname, path, parent, parentPropName\n) {\n    this.currSandbox._$_parentProperty = parentPropName;\n    this.currSandbox._$_parent = parent;\n    this.currSandbox._$_property = _vname;\n    this.currSandbox._$_root = this.json;\n    this.currSandbox._$_v = _v;\n\n    const containsPath = code.includes('@path');\n    if (containsPath) {\n        this.currSandbox._$_path = JSONPath.toPathString(path.concat([_vname]));\n    }\n\n    const scriptCacheKey = this.currEval + 'Script:' + code;\n    if (!JSONPath.cache[scriptCacheKey]) {\n        let script = code\n            .replace(/@parentProperty/gu, '_$_parentProperty')\n            .replace(/@parent/gu, '_$_parent')\n            .replace(/@property/gu, '_$_property')\n            .replace(/@root/gu, '_$_root')\n            .replace(/@([.\\s)[])/gu, '_$_v$1');\n        if (containsPath) {\n            script = script.replace(/@path/gu, '_$_path');\n        }\n        if (\n            this.currEval === 'safe' ||\n            this.currEval === true ||\n            this.currEval === undefined\n        ) {\n            JSONPath.cache[scriptCacheKey] = new this.safeVm.Script(script);\n        } else if (this.currEval === 'native') {\n            JSONPath.cache[scriptCacheKey] = new this.vm.Script(script);\n        } else if (\n            typeof this.currEval === 'function' &&\n            this.currEval.prototype &&\n            Object.hasOwn(this.currEval.prototype, 'runInNewContext')\n        ) {\n            const CurrEval = this.currEval;\n            JSONPath.cache[scriptCacheKey] = new CurrEval(script);\n        } else if (typeof this.currEval === 'function') {\n            JSONPath.cache[scriptCacheKey] = {\n                runInNewContext: (context) => this.currEval(script, context)\n            };\n        } else {\n            throw new TypeError(`Unknown \"eval\" property \"${this.currEval}\"`);\n        }\n    }\n\n    try {\n        return JSONPath.cache[scriptCacheKey].runInNewContext(this.currSandbox);\n    } catch (e) {\n        if (this.ignoreEvalErrors) {\n            return false;\n        }\n        throw new Error('jsonPath: ' + e.message + ': ' + code);\n    }\n};\n\n// PUBLIC CLASS PROPERTIES AND METHODS\n\n// Could store the cache object itself\nJSONPath.cache = {};\n\n/**\n * @param {string[]} pathArr Array to convert\n * @returns {string} The path string\n */\nJSONPath.toPathString = function (pathArr) {\n    const x = pathArr, n = x.length;\n    let p = '$';\n    for (let i = 1; i < n; i++) {\n        if (!(/^(~|\\^|@.*?\\(\\))$/u).test(x[i])) {\n            p += (/^[0-9*]+$/u).test(x[i]) ? ('[' + x[i] + ']') : (\"['\" + x[i] + \"']\");\n        }\n    }\n    return p;\n};\n\n/**\n * @param {string} pointer JSON Path\n * @returns {string} JSON Pointer\n */\nJSONPath.toPointer = function (pointer) {\n    const x = pointer, n = x.length;\n    let p = '';\n    for (let i = 1; i < n; i++) {\n        if (!(/^(~|\\^|@.*?\\(\\))$/u).test(x[i])) {\n            p += '/' + x[i].toString()\n                .replace(/~/gu, '~0')\n                .replace(/\\//gu, '~1');\n        }\n    }\n    return p;\n};\n\n/**\n * @param {string} expr Expression to convert\n * @returns {string[]}\n */\nJSONPath.toPathArray = function (expr) {\n    const {cache} = JSONPath;\n    if (cache[expr]) {\n        return cache[expr].concat();\n    }\n    const subx = [];\n    const normalized = expr\n        // Properties\n        .replace(\n            /@(?:null|boolean|number|string|integer|undefined|nonFinite|scalar|array|object|function|other)\\(\\)/gu,\n            ';$&;'\n        )\n        // Parenthetical evaluations (filtering and otherwise), directly\n        //   within brackets or single quotes\n        .replace(/[['](\\??\\(.*?\\))[\\]'](?!.\\])/gu, function ($0, $1) {\n            return '[#' + (subx.push($1) - 1) + ']';\n        })\n        // Escape periods and tildes within properties\n        .replace(/\\[['\"]([^'\\]]*)['\"]\\]/gu, function ($0, prop) {\n            return \"['\" + prop\n                .replace(/\\./gu, '%@%')\n                .replace(/~/gu, '%%@@%%') +\n                \"']\";\n        })\n        // Properties operator\n        .replace(/~/gu, ';~;')\n        // Split by property boundaries\n        .replace(/['\"]?\\.['\"]?(?![^[]*\\])|\\[['\"]?/gu, ';')\n        // Reinsert periods within properties\n        .replace(/%@%/gu, '.')\n        // Reinsert tildes within properties\n        .replace(/%%@@%%/gu, '~')\n        // Parent\n        .replace(/(?:;)?(\\^+)(?:;)?/gu, function ($0, ups) {\n            return ';' + ups.split('').join(';') + ';';\n        })\n        // Descendents\n        .replace(/;;;|;;/gu, ';..;')\n        // Remove trailing\n        .replace(/;$|'?\\]|'$/gu, '');\n\n    const exprList = normalized.split(';').map(function (exp) {\n        const match = exp.match(/#(\\d+)/u);\n        return !match || !match[1] ? exp : subx[match[1]];\n    });\n    cache[expr] = exprList;\n    return cache[expr].concat();\n};\n\nJSONPath.prototype.safeVm = {\n    Script: SafeScript\n};\n\nexport {JSONPath};\n","import {JSONPath} from './jsonpath.js';\n\n/**\n * @typedef {any} ContextItem\n */\n\n/**\n * @typedef {any} EvaluatedResult\n */\n\n/**\n * @callback ConditionCallback\n * @param {ContextItem} item\n * @returns {boolean}\n */\n\n/**\n * Copy items out of one array into another.\n * @param {GenericArray} source Array with items to copy\n * @param {GenericArray} target Array to which to copy\n * @param {ConditionCallback} conditionCb Callback passed the current item;\n *     will move item if evaluates to `true`\n * @returns {void}\n */\nconst moveToAnotherArray = function (source, target, conditionCb) {\n    const il = source.length;\n    for (let i = 0; i < il; i++) {\n        const item = source[i];\n        if (conditionCb(item)) {\n            // eslint-disable-next-line @stylistic/max-len -- Long\n            // eslint-disable-next-line sonarjs/updated-loop-counter -- Convenient\n            target.push(source.splice(i--, 1)[0]);\n        }\n    }\n};\n\n/**\n * In-browser replacement for NodeJS' VM.Script.\n */\nclass Script {\n    /**\n     * @param {string} expr Expression to evaluate\n     */\n    constructor (expr) {\n        this.code = expr;\n    }\n\n    /**\n     * @param {object} context Object whose items will be added\n     *   to evaluation\n     * @returns {EvaluatedResult} Result of evaluated code\n     */\n    runInNewContext (context) {\n        let expr = this.code;\n        const keys = Object.keys(context);\n        const funcs = [];\n        moveToAnotherArray(keys, funcs, (key) => {\n            return typeof context[key] === 'function';\n        });\n        const values = keys.map((vr) => {\n            return context[vr];\n        });\n\n        const funcString = funcs.reduce((s, func) => {\n            let fString = context[func].toString();\n            if (!(/function/u).test(fString)) {\n                fString = 'function ' + fString;\n            }\n            return 'var ' + func + '=' + fString + ';' + s;\n        }, '');\n\n        expr = funcString + expr;\n\n        // Mitigate http://perfectionkills.com/global-eval-what-are-the-options/#new_function\n        if (!(/(['\"])use strict\\1/u).test(expr) && !keys.includes('arguments')) {\n            expr = 'var arguments = undefined;' + expr;\n        }\n\n        // Remove last semi so `return` will be inserted before\n        //  the previous one instead, allowing for the return\n        //  of a bare ending expression\n        expr = expr.replace(/;\\s*$/u, '');\n\n        // Insert `return`\n        const lastStatementEnd = expr.lastIndexOf(';');\n        const code =\n            lastStatementEnd > -1\n                ? expr.slice(0, lastStatementEnd + 1) +\n                  ' return ' +\n                  expr.slice(lastStatementEnd + 1)\n                : ' return ' + expr;\n\n        // eslint-disable-next-line no-new-func\n        return new Function(...keys, code)(...values);\n    }\n}\n\nJSONPath.prototype.vm = {\n    Script\n};\n\nexport {JSONPath};\n"],"names":["Hooks","_createClass","_classCallCheck","key","value","name","callback","first","arguments","this","add","Array","isArray","forEach","env","call","context","Plugins","jsep","registered","_this","_len","length","plugins","_key","plugin","_typeof","init","Error","Jsep","expr","index","get","charAt","charCodeAt","message","error","description","node","hooks","run","find","ch","code","SPACE_CODE","TAB_CODE","LF_CODE","CR_CODE","runHook","nodes","gobbleExpressions","type","COMPOUND","body","untilICode","ch_i","SEMCOL_CODE","COMMA_CODE","gobbleExpression","push","throwError","searchHook","gobbleBinaryExpression","gobbleSpaces","to_check","substr","max_binop_len","tc_len","binary_ops","hasOwnProperty","isIdentifierStart","isIdentifierPart","biop","prec","stack","biop_info","left","right","i","cur_biop","prev","gobbleToken","gobbleBinaryOp","binaryPrecedence","right_a","right_associative","has","pop","BINARY_EXP","operator","isDecimalDigit","PERIOD_CODE","gobbleNumericLiteral","SQUOTE_CODE","DQUOTE_CODE","gobbleStringLiteral","OBRACK_CODE","gobbleArray","max_unop_len","unary_ops","argument","UNARY_EXP","prefix","gobbleIdentifier","literals","LITERAL","raw","this_str","THIS_EXP","OPAREN_CODE","gobbleGroup","gobbleTokenProperty","QUMARK_CODE","optional","MEMBER_EXP","computed","object","property","CBRACK_CODE","CALL_EXP","gobbleArguments","CPAREN_CODE","callee","chCode","number","parseFloat","str","startIndex","quote","closed","substring","start","IDENTIFIER","slice","termination","args","separator_count","String","fromCharCode","arg","SEQUENCE_EXP","expressions","ARRAY_EXP","elements","version","op_name","Math","max","precedence","isRightAssociative","char","additional_identifier_chars","literal_name","literal_value","getMaxKeyLen","parse","obj","apply","concat","_toConsumableArray","Object","keys","map","k","op_val","assign","COLON_CODE","Set","true","false","null","stdClassProps","getOwnPropertyNames","Test","filter","prop","includes","undefined","m","ternary","test","consequent","alternate","newTest","register","patternIndex","inCharSet","pattern","flags","RegExp","e","assignmentOperators","updateOperators","assignmentPrecedence","updateNodeTypes","updateBinariesToAssignments","values","val","op","addBinaryOp","some","c","_this2","jsepRegex","jsepAssignment","SafeEval","evalAst","ast","subs","evalBinaryExpression","evalCompound","evalConditionalExpression","evalIdentifier","evalLiteral","evalMemberExpression","evalUnaryExpression","evalArrayExpression","evalCallExpression","evalAssignmentExpression","SyntaxError","a","b","last","ReferenceError","result","bind","el","id","SafeScript","keyMap","_objectSpread","arr","item","unshift","NewError","_Error","_callSuper","avoidNew","_inherits","_wrapNativeSuper","JSONPath","opts","otherTypeCallback","optObj","json","path","resultType","flatten","wrap","hasOwn","sandbox","eval","ignoreEvalErrors","parent","parentProperty","TypeError","autostart","ret","evaluate","prototype","currParent","currParentProperty","currResultType","currEval","currSandbox","currOtherTypeCallback","toPathString","exprList","toPathArray","shift","_hasParentSelector","_trace","ea","isParentSelector","hasArrExpr","reduce","rslt","valOrPath","_getPreferredOutput","pointer","toPointer","_handleCallback","fullRetObj","preferredOutput","parentPropName","literalPriority","retObj","_this3","loc","x","addRet","elems","t","_walk","_slice","indexOf","safeLoc","replace","nested","exec","npath","nvalue","_eval","addType","valueType","Number","isFinite","locProp","_step","_iterator","_createForOfIteratorHelper","split","s","n","done","part","err","f","rett","tmp","tl","tt","splice","len","parts","step","parseInt","end","min","_v","_vname","_this4","_$_parentProperty","_$_parent","_$_property","_$_root","_$_v","containsPath","_$_path","scriptCacheKey","cache","script","safeVm","Script","vm","CurrEval","runInNewContext","pathArr","p","toString","subx","$0","$1","ups","join","exp","match","funcs","source","target","conditionCb","il","moveToAnotherArray","vr","funcString","func","fString","lastStatementEnd","lastIndexOf","_construct","Function"],"mappings":"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","x_google_ignoreList":[0,1,2]}