{"version":3,"sources":["jsdelivr-header.js","/npm/@cucumber/tag-expressions@8.1.0/dist/cjs/src/index.js"],"names":[],"mappings":"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","file":"/npm/@cucumber/tag-expressions@8.1.0/dist/cjs/src/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@cucumber/tag-expressions@8.1.0/dist/cjs/src/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = parse;\nvar OPERAND = 'operand';\nvar OPERATOR = 'operator';\nvar PREC = {\n    '(': -2,\n    ')': -1,\n    or: 0,\n    and: 1,\n    not: 2,\n};\nvar ASSOC = {\n    or: 'left',\n    and: 'left',\n    not: 'right',\n};\n/**\n * Parses infix boolean expression (using Dijkstra's Shunting Yard algorithm)\n * and builds a tree of expressions. The root node of the expression is returned.\n *\n * This expression can be evaluated by passing in an array of literals that resolve to true\n */\nfunction parse(infix) {\n    var tokens = tokenize(infix);\n    if (tokens.length === 0) {\n        return new True();\n    }\n    var expressions = [];\n    var operators = [];\n    var expectedTokenType = OPERAND;\n    tokens.forEach(function (token) {\n        if (isUnary(token)) {\n            check(expectedTokenType, OPERAND);\n            operators.push(token);\n            expectedTokenType = OPERAND;\n        }\n        else if (isBinary(token)) {\n            check(expectedTokenType, OPERATOR);\n            while (operators.length > 0 &&\n                isOp(peek(operators)) &&\n                ((ASSOC[token] === 'left' && PREC[token] <= PREC[peek(operators)]) ||\n                    (ASSOC[token] === 'right' && PREC[token] < PREC[peek(operators)]))) {\n                pushExpr(operators.pop(), expressions);\n            }\n            operators.push(token);\n            expectedTokenType = OPERAND;\n        }\n        else if ('(' === token) {\n            check(expectedTokenType, OPERAND);\n            operators.push(token);\n            expectedTokenType = OPERAND;\n        }\n        else if (')' === token) {\n            check(expectedTokenType, OPERATOR);\n            while (operators.length > 0 && peek(operators) !== '(') {\n                pushExpr(operators.pop(), expressions);\n            }\n            if (operators.length === 0) {\n                throw new Error(\"Tag expression \\\"\".concat(infix, \"\\\" could not be parsed because of syntax error: Unmatched ).\"));\n            }\n            if (peek(operators) === '(') {\n                operators.pop();\n            }\n            expectedTokenType = OPERATOR;\n        }\n        else {\n            check(expectedTokenType, OPERAND);\n            pushExpr(token, expressions);\n            expectedTokenType = OPERATOR;\n        }\n    });\n    while (operators.length > 0) {\n        if (peek(operators) === '(') {\n            throw new Error(\"Tag expression \\\"\".concat(infix, \"\\\" could not be parsed because of syntax error: Unmatched (.\"));\n        }\n        pushExpr(operators.pop(), expressions);\n    }\n    return expressions.pop();\n    function check(expectedTokenType, tokenType) {\n        if (expectedTokenType !== tokenType) {\n            throw new Error(\"Tag expression \\\"\".concat(infix, \"\\\" could not be parsed because of syntax error: Expected \").concat(expectedTokenType, \".\"));\n        }\n    }\n    function pushExpr(token, stack) {\n        if (token === 'and') {\n            var rightAndExpr = popOperand(stack);\n            stack.push(new And(popOperand(stack), rightAndExpr));\n        }\n        else if (token === 'or') {\n            var rightOrExpr = popOperand(stack);\n            stack.push(new Or(popOperand(stack), rightOrExpr));\n        }\n        else if (token === 'not') {\n            stack.push(new Not(popOperand(stack)));\n        }\n        else {\n            stack.push(new Literal(token));\n        }\n    }\n    function popOperand(stack) {\n        if (stack.length === 0) {\n            throw new Error(\"Tag expression \\\"\".concat(infix, \"\\\" could not be parsed because of syntax error: Expected operand.\"));\n        }\n        return stack.pop();\n    }\n}\nfunction tokenize(expr) {\n    var tokens = [];\n    var isEscaped = false;\n    var token = [];\n    for (var i = 0; i < expr.length; i++) {\n        var c = expr.charAt(i);\n        if (isEscaped) {\n            if (c === '(' || c === ')' || c === '\\\\' || /\\s/.test(c)) {\n                token.push(c);\n                isEscaped = false;\n            }\n            else {\n                throw new Error(\"Tag expression \\\"\".concat(expr, \"\\\" could not be parsed because of syntax error: Illegal escape before \\\"\").concat(c, \"\\\".\"));\n            }\n        }\n        else if (c === '\\\\') {\n            isEscaped = true;\n        }\n        else if (c === '(' || c === ')' || /\\s/.test(c)) {\n            if (token.length > 0) {\n                tokens.push(token.join(''));\n                token = [];\n            }\n            if (!/\\s/.test(c)) {\n                tokens.push(c);\n            }\n        }\n        else {\n            token.push(c);\n        }\n    }\n    if (token.length > 0) {\n        tokens.push(token.join(''));\n    }\n    return tokens;\n}\nfunction isUnary(token) {\n    return 'not' === token;\n}\nfunction isBinary(token) {\n    return 'or' === token || 'and' === token;\n}\nfunction isOp(token) {\n    return ASSOC[token] !== undefined;\n}\nfunction peek(stack) {\n    return stack[stack.length - 1];\n}\nvar Literal = /** @class */ (function () {\n    function Literal(value) {\n        this.value = value;\n    }\n    Literal.prototype.evaluate = function (variables) {\n        return variables.indexOf(this.value) !== -1;\n    };\n    Literal.prototype.toString = function () {\n        return this.value\n            .replace(/\\\\/g, '\\\\\\\\')\n            .replace(/\\(/g, '\\\\(')\n            .replace(/\\)/g, '\\\\)')\n            .replace(/\\s/g, '\\\\ ');\n    };\n    return Literal;\n}());\nvar Or = /** @class */ (function () {\n    function Or(leftExpr, rightExpr) {\n        this.leftExpr = leftExpr;\n        this.rightExpr = rightExpr;\n    }\n    Or.prototype.evaluate = function (variables) {\n        return this.leftExpr.evaluate(variables) || this.rightExpr.evaluate(variables);\n    };\n    Or.prototype.toString = function () {\n        return '( ' + this.leftExpr.toString() + ' or ' + this.rightExpr.toString() + ' )';\n    };\n    return Or;\n}());\nvar And = /** @class */ (function () {\n    function And(leftExpr, rightExpr) {\n        this.leftExpr = leftExpr;\n        this.rightExpr = rightExpr;\n    }\n    And.prototype.evaluate = function (variables) {\n        return this.leftExpr.evaluate(variables) && this.rightExpr.evaluate(variables);\n    };\n    And.prototype.toString = function () {\n        return '( ' + this.leftExpr.toString() + ' and ' + this.rightExpr.toString() + ' )';\n    };\n    return And;\n}());\nvar Not = /** @class */ (function () {\n    function Not(expr) {\n        this.expr = expr;\n    }\n    Not.prototype.evaluate = function (variables) {\n        return !this.expr.evaluate(variables);\n    };\n    Not.prototype.toString = function () {\n        if (this.expr instanceof And || this.expr instanceof Or) {\n            // -- HINT: Binary Operators already have already '( ... )'.\n            return 'not ' + this.expr.toString();\n        }\n        // -- OTHERWISE:\n        return 'not ( ' + this.expr.toString() + ' )';\n    };\n    return Not;\n}());\nvar True = /** @class */ (function () {\n    function True() {\n    }\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    True.prototype.evaluate = function (variables) {\n        return true;\n    };\n    True.prototype.toString = function () {\n        return '';\n    };\n    return True;\n}());\n"]}