From 21cac2d9bac5a57c7dddad5fc3ce00e80629d868 Mon Sep 17 00:00:00 2001 From: Phuoc Hiep Date: Sat, 28 Feb 2026 00:09:35 +0700 Subject: [PATCH 01/38] fix: Use contains operator for merchant filter in advanced search Switch merchant filter from : (eq) to *: (contains) operator to preserve partial-matching UX when backend starts respecting eq vs contains distinction. Changes: - Add *: operator support to parser grammar (baseRules.peggy) - Regenerate searchParser.js and autocompleteParser.js - Update buildQueryStringFromFilterFormValues to use *: for merchant - Update unit test expectations Fixes https://github.com/Expensify/App/issues/80823 --- src/libs/SearchParser/autocompleteParser.js | 3269 ++++++------------- src/libs/SearchParser/baseRules.peggy | 5 +- src/libs/SearchParser/searchParser.js | 1706 +++++----- src/libs/SearchQueryUtils.ts | 6 +- tests/unit/Search/SearchQueryUtilsTest.ts | 4 +- 5 files changed, 1828 insertions(+), 3162 deletions(-) diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index e70056f0d519..aed140261dfa 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -1,7 +1,7 @@ 'worklet' class peg$SyntaxError{} -// @generated by Peggy 4.0.3. +// @generated by Peggy 5.0.6. // // https://peggyjs.org/ @@ -11,598 +11,494 @@ class peg$SyntaxError{} // To make changes, edit the corresponding *.peggy files only. // Use the `generate-search-parser` and `generate-autocomplete-parser` scripts to regenerate parsers after modifications. -function peg$subclass(child, parent) { - function C() { this.constructor = child; } - C.prototype = parent.prototype; - child.prototype = new C(); -} - -function temporary(message, expected, found, location) { - var self = Error.call(this, message); - // istanbul ignore next Check is a necessary evil to support older environments - if (Object.setPrototypeOf) { - Object.setPrototypeOf(self, peg$SyntaxError.prototype); - } - self.expected = expected; - self.found = found; - self.location = location; - self.name = "SyntaxError"; - return self; -} - - - -function peg$padEnd(str, targetLength, padString) { - padString = padString || " "; - if (str.length > targetLength) { return str; } - targetLength -= str.length; - padString += padString.repeat(targetLength); - return str + padString.slice(0, targetLength); -} +class peg$SyntaxError extends SyntaxError { + constructor(message, expected, found, location) { + super(message); + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + } + + format(sources) { + let str = "Error: " + this.message; + if (this.location) { + let src = null; + const st = sources.find(s => s.source === this.location.source); + if (st) { + src = st.text.split(/\r\n|\n|\r/g); + } + const s = this.location.start; + const offset_s = (this.location.source && (typeof this.location.source.offset === "function")) + ? this.location.source.offset(s) + : s; + const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; + if (src) { + const e = this.location.end; + const filler = "".padEnd(offset_s.line.toString().length, " "); + const line = src[s.line - 1]; + const last = s.line === e.line ? e.column : line.length + 1; + const hatLen = (last - s.column) || 1; + str += "\n --> " + loc + "\n" + + filler + " |\n" + + offset_s.line + " | " + line + "\n" + + filler + " | " + "".padEnd(s.column - 1, " ") + + "".padEnd(hatLen, "^"); + } else { + str += "\n at " + loc; + } + } + return str; + } + + static buildMessage(expected, found) { + function hex(ch) { + return ch.codePointAt(0).toString(16).toUpperCase(); + } + + const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode") + ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu") + : null; + function unicodeEscape(s) { + if (nonPrintable) { + return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}"); + } + return s; + } + + function literalEscape(s) { + return unicodeEscape(s + .replace(/\\/g, "\\\\") + .replace(/"/g, "\\\"") + .replace(/\0/g, "\\0") + .replace(/\t/g, "\\t") + .replace(/\n/g, "\\n") + .replace(/\r/g, "\\r") + .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch)) + .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); + } + + function classEscape(s) { + return unicodeEscape(s + .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, ch => "\\x0" + hex(ch)) + .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); + } + + const DESCRIBE_EXPECTATION_FNS = { + literal(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, -peg$SyntaxError.prototype.format = function(sources) { - var str = "Error: " + this.message; - if (this.location) { - var src = null; - var k; - for (k = 0; k < sources.length; k++) { - if (sources[k].source === this.location.source) { - src = sources[k].text.split(/\r\n|\n|\r/g); - break; - } - } - var s = this.location.start; - var offset_s = (this.location.source && (typeof this.location.source.offset === "function")) - ? this.location.source.offset(s) - : s; - var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; - if (src) { - var e = this.location.end; - var filler = peg$padEnd("", offset_s.line.toString().length, ' '); - var line = src[s.line - 1]; - var last = s.line === e.line ? e.column : line.length + 1; - var hatLen = (last - s.column) || 1; - str += "\n --> " + loc + "\n" - + filler + " |\n" - + offset_s.line + " | " + line + "\n" - + filler + " | " + peg$padEnd("", s.column - 1, ' ') - + peg$padEnd("", hatLen, "^"); - } else { - str += "\n at " + loc; - } - } - return str; -}; + class(expectation) { + const escapedParts = expectation.parts.map( + part => (Array.isArray(part) + ? classEscape(part[0]) + "-" + classEscape(part[1]) + : classEscape(part)) + ); -peg$SyntaxError.buildMessage = function(expected, found) { - var DESCRIBE_EXPECTATION_FNS = { - literal: function(expectation) { - return "\"" + literalEscape(expectation.text) + "\""; - }, - - class: function(expectation) { - var escapedParts = expectation.parts.map(function(part) { - return Array.isArray(part) - ? classEscape(part[0]) + "-" + classEscape(part[1]) - : classEscape(part); - }); + return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : ""); + }, - return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]"; - }, + any() { + return "any character"; + }, - any: function() { - return "any character"; - }, + end() { + return "end of input"; + }, - end: function() { - return "end of input"; - }, + other(expectation) { + return expectation.description; + }, + }; - other: function(expectation) { - return expectation.description; + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); } - }; - - function hex(ch) { - return ch.charCodeAt(0).toString(16).toUpperCase(); - } - function literalEscape(s) { - return s - .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(ch) { return "\\x0" + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); - } - - function classEscape(s) { - return s - .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(ch) { return "\\x0" + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); - } + function describeExpected(expected) { + const descriptions = expected.map(describeExpectation); + descriptions.sort(); - function describeExpectation(expectation) { - return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); - } + if (descriptions.length > 0) { + let j = 1; + for (let i = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } + } + descriptions.length = j; + } - function describeExpected(expected) { - var descriptions = expected.map(describeExpectation); - var i, j; + switch (descriptions.length) { + case 1: + return descriptions[0]; - descriptions.sort(); + case 2: + return descriptions[0] + " or " + descriptions[1]; - if (descriptions.length > 0) { - for (i = 1, j = 1; i < descriptions.length; i++) { - if (descriptions[i - 1] !== descriptions[i]) { - descriptions[j] = descriptions[i]; - j++; - } + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; } - descriptions.length = j; } - switch (descriptions.length) { - case 1: - return descriptions[0]; - - case 2: - return descriptions[0] + " or " + descriptions[1]; - - default: - return descriptions.slice(0, -1).join(", ") - + ", or " - + descriptions[descriptions.length - 1]; + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; } - } - function describeFound(found) { - return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; } - - return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; -}; +} function peg$parse(input, options) { options = options !== undefined ? options : {}; - var peg$FAILED = {}; - var peg$source = options.grammarSource; - - var peg$startRuleFunctions = { query: peg$parsequery }; - var peg$startRuleFunction = peg$parsequery; - - var peg$c0 = "-"; - var peg$c1 = "report-field"; - var peg$c2 = "reportfield"; - var peg$c3 = ","; - var peg$c4 = "date"; - var peg$c5 = "amount"; - var peg$c6 = "merchant"; - var peg$c7 = "description"; - var peg$c8 = "reportid"; - var peg$c9 = "report-id"; - var peg$c10 = "keyword"; - var peg$c11 = "in"; - var peg$c12 = "currency"; - var peg$c13 = "groupCurrency"; - var peg$c14 = "group-currency"; - var peg$c15 = "tag"; - var peg$c16 = "category"; - var peg$c17 = "to"; - var peg$c18 = "exporter"; - var peg$c19 = "payer"; - var peg$c20 = "taxrate"; - var peg$c21 = "tax-rate"; - var peg$c22 = "cardID"; - var peg$c23 = "card"; - var peg$c24 = "from"; - var peg$c25 = "attendee"; - var peg$c26 = "expenseType"; - var peg$c27 = "expense-type"; - var peg$c28 = "withdrawalType"; - var peg$c29 = "withdrawal-type"; - var peg$c30 = "withdrawalid"; - var peg$c31 = "withdrawal-id"; - var peg$c32 = "billable"; - var peg$c33 = "reimbursable"; - var peg$c34 = "type"; - var peg$c35 = "status"; - var peg$c36 = "sortBy"; - var peg$c37 = "sort-by"; - var peg$c38 = "sortOrder"; - var peg$c39 = "sort-order"; - var peg$c40 = "policyID"; - var peg$c41 = "workspace"; - var peg$c42 = "submitted"; - var peg$c43 = "approved"; - var peg$c44 = "paid"; - var peg$c45 = "exported"; - var peg$c46 = "posted"; - var peg$c47 = "withdrawn"; - var peg$c48 = "groupby"; - var peg$c49 = "group-by"; - var peg$c50 = "limit"; - var peg$c51 = "feed"; - var peg$c52 = "title"; - var peg$c53 = "assignee"; - var peg$c54 = "createdby"; - var peg$c55 = "created-by"; - var peg$c56 = "action"; - var peg$c57 = "total"; - var peg$c58 = "has"; - var peg$c59 = "is"; - var peg$c60 = "purchaseamount"; - var peg$c61 = "purchase-amount"; - var peg$c62 = "purchasecurrency"; - var peg$c63 = "purchase-currency"; - var peg$c64 = "columns"; - var peg$c65 = "view"; - var peg$c66 = "per-diem"; - var peg$c67 = "drafts"; - var peg$c68 = "draft"; - var peg$c69 = "original-amount"; - var peg$c70 = "tax"; - var peg$c71 = "policy-name"; - var peg$c72 = "bank-account"; - var peg$c73 = "long-report-id"; - var peg$c74 = "exported-to"; - var peg$c75 = "exportedto"; - var peg$c76 = "exchange-rate"; - var peg$c77 = "reimbursable-total"; - var peg$c78 = "non-reimbursable-total"; - var peg$c79 = "group-from"; - var peg$c80 = "group-expenses"; - var peg$c81 = "group-total"; - var peg$c82 = "group-card"; - var peg$c83 = "group-feed"; - var peg$c84 = "group-bank-account"; - var peg$c85 = "group-withdrawn"; - var peg$c86 = "group-withdrawal-id"; - var peg$c87 = "group-category"; - var peg$c88 = "group-tag"; - var peg$c89 = "group-merchant"; - var peg$c90 = "group-month"; - var peg$c91 = "group-week"; - var peg$c92 = "group-year"; - var peg$c93 = "group-quarter"; - var peg$c94 = "!="; - var peg$c95 = ">="; - var peg$c96 = ">"; - var peg$c97 = "<="; - var peg$c98 = "<"; - var peg$c99 = "\u201C"; - var peg$c100 = "\u201D"; - var peg$c101 = "\""; - - var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; - var peg$r1 = /^[:=]/; - var peg$r2 = /^[^ ,\t\n\r\xA0]/; - var peg$r3 = /^[ \t\r\n\xA0]/; - var peg$r4 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; - var peg$r5 = /^["\u201C-\u201D]/; - var peg$r6 = /^[^"\u201D\u201C\r\n]/; - var peg$r7 = /^[ \t\n\r\xA0a-zA-Z0-9]/; - var peg$r8 = /^[a-zA-Z0-9]/; - var peg$r9 = /^[ \t\n\r\xA0]/; - var peg$r10 = /^[ \t\n\r\xA0a-zA-Z]/; - var peg$r11 = /^[,]/; - var peg$r12 = /^[ \t\n\r\xA0,]/; - - var peg$e0 = peg$literalExpectation("-", false); - var peg$e1 = peg$literalExpectation("report-field", true); - var peg$e2 = peg$literalExpectation("reportfield", true); - var peg$e3 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false); - var peg$e4 = peg$anyExpectation(); - var peg$e5 = peg$literalExpectation(",", false); - var peg$e6 = peg$otherExpectation("key"); - var peg$e7 = peg$literalExpectation("date", true); - var peg$e8 = peg$literalExpectation("amount", true); - var peg$e9 = peg$literalExpectation("merchant", true); - var peg$e10 = peg$literalExpectation("description", true); - var peg$e11 = peg$literalExpectation("reportid", true); - var peg$e12 = peg$literalExpectation("report-id", true); - var peg$e13 = peg$literalExpectation("keyword", true); - var peg$e14 = peg$literalExpectation("in", true); - var peg$e15 = peg$literalExpectation("currency", true); - var peg$e16 = peg$literalExpectation("groupCurrency", false); - var peg$e17 = peg$literalExpectation("group-currency", true); - var peg$e18 = peg$literalExpectation("tag", true); - var peg$e19 = peg$literalExpectation("category", true); - var peg$e20 = peg$literalExpectation("to", true); - var peg$e21 = peg$literalExpectation("exporter", true); - var peg$e22 = peg$literalExpectation("payer", true); - var peg$e23 = peg$literalExpectation("taxRate", true); - var peg$e24 = peg$literalExpectation("tax-rate", true); - var peg$e25 = peg$literalExpectation("cardID", false); - var peg$e26 = peg$literalExpectation("card", true); - var peg$e27 = peg$literalExpectation("from", true); - var peg$e28 = peg$literalExpectation("attendee", true); - var peg$e29 = peg$literalExpectation("expenseType", false); - var peg$e30 = peg$literalExpectation("expense-type", true); - var peg$e31 = peg$literalExpectation("withdrawalType", false); - var peg$e32 = peg$literalExpectation("withdrawal-type", true); - var peg$e33 = peg$literalExpectation("withdrawalID", true); - var peg$e34 = peg$literalExpectation("withdrawal-id", true); - var peg$e35 = peg$literalExpectation("billable", true); - var peg$e36 = peg$literalExpectation("reimbursable", true); - var peg$e37 = peg$literalExpectation("type", true); - var peg$e38 = peg$literalExpectation("status", true); - var peg$e39 = peg$literalExpectation("sortBy", false); - var peg$e40 = peg$literalExpectation("sort-by", true); - var peg$e41 = peg$literalExpectation("sortOrder", false); - var peg$e42 = peg$literalExpectation("sort-order", true); - var peg$e43 = peg$literalExpectation("policyID", false); - var peg$e44 = peg$literalExpectation("workspace", true); - var peg$e45 = peg$literalExpectation("submitted", true); - var peg$e46 = peg$literalExpectation("approved", true); - var peg$e47 = peg$literalExpectation("paid", true); - var peg$e48 = peg$literalExpectation("exported", true); - var peg$e49 = peg$literalExpectation("posted", true); - var peg$e50 = peg$literalExpectation("withdrawn", true); - var peg$e51 = peg$literalExpectation("groupBy", true); - var peg$e52 = peg$literalExpectation("group-by", true); - var peg$e53 = peg$literalExpectation("limit", true); - var peg$e54 = peg$literalExpectation("feed", true); - var peg$e55 = peg$literalExpectation("title", true); - var peg$e56 = peg$literalExpectation("assignee", true); - var peg$e57 = peg$literalExpectation("createdBy", true); - var peg$e58 = peg$literalExpectation("created-by", true); - var peg$e59 = peg$literalExpectation("action", true); - var peg$e60 = peg$literalExpectation("total", true); - var peg$e61 = peg$literalExpectation("has", true); - var peg$e62 = peg$literalExpectation("is", true); - var peg$e63 = peg$literalExpectation("purchaseAmount", true); - var peg$e64 = peg$literalExpectation("purchase-amount", true); - var peg$e65 = peg$literalExpectation("purchaseCurrency", true); - var peg$e66 = peg$literalExpectation("purchase-currency", true); - var peg$e67 = peg$literalExpectation("columns", true); - var peg$e68 = peg$literalExpectation("view", true); - var peg$e69 = peg$literalExpectation("per-diem", true); - var peg$e70 = peg$literalExpectation("drafts", true); - var peg$e71 = peg$literalExpectation("draft", true); - var peg$e72 = peg$literalExpectation("original-amount", true); - var peg$e73 = peg$literalExpectation("tax", true); - var peg$e74 = peg$literalExpectation("policy-name", true); - var peg$e75 = peg$literalExpectation("bank-account", true); - var peg$e76 = peg$literalExpectation("long-report-id", true); - var peg$e77 = peg$literalExpectation("exported-to", true); - var peg$e78 = peg$classExpectation([":", "="], false, false); - var peg$e79 = peg$literalExpectation("exportedTo", true); - var peg$e80 = peg$literalExpectation("exchange-rate", true); - var peg$e81 = peg$literalExpectation("reimbursable-total", true); - var peg$e82 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e83 = peg$literalExpectation("group-from", true); - var peg$e84 = peg$literalExpectation("group-expenses", true); - var peg$e85 = peg$literalExpectation("group-total", true); - var peg$e86 = peg$literalExpectation("group-card", true); - var peg$e87 = peg$literalExpectation("group-feed", true); - var peg$e88 = peg$literalExpectation("group-bank-account", true); - var peg$e89 = peg$literalExpectation("group-withdrawn", true); - var peg$e90 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e91 = peg$literalExpectation("group-category", true); - var peg$e92 = peg$literalExpectation("group-tag", true); - var peg$e93 = peg$literalExpectation("group-merchant", true); - var peg$e94 = peg$literalExpectation("group-month", true); - var peg$e95 = peg$literalExpectation("group-week", true); - var peg$e96 = peg$literalExpectation("group-year", true); - var peg$e97 = peg$literalExpectation("group-quarter", true); - var peg$e98 = peg$otherExpectation("operator"); - var peg$e99 = peg$literalExpectation("!=", false); - var peg$e100 = peg$literalExpectation(">=", false); - var peg$e101 = peg$literalExpectation(">", false); - var peg$e102 = peg$literalExpectation("<=", false); - var peg$e103 = peg$literalExpectation("<", false); - var peg$e104 = peg$otherExpectation("word"); - var peg$e105 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e106 = peg$otherExpectation("whitespace"); - var peg$e107 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e108 = peg$otherExpectation("quote"); - var peg$e109 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e110 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e111 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e112 = peg$literalExpectation("\u201C", false); - var peg$e113 = peg$literalExpectation("\u201D", false); - var peg$e114 = peg$literalExpectation("\"", false); - var peg$e115 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e116 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e117 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e118 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e119 = peg$classExpectation([","], false, false); - var peg$e120 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); - - var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; - var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; - var peg$f2 = function(neg, key, op, value) { - expectingNestedQuote = false; nameOperator = false; // Reset string parser - - const isNegated = !!neg && !nonNegatableKeys.has(key); - - if (!value) { - autocomplete = { - key, - negated: isNegated, - value: "", - start: location().end.offset, - length: 0, - }; - return; - } + const peg$FAILED = {}; + const peg$source = options.grammarSource; + const peg$startRuleFunctions = { + query: peg$parsequery, + }; + let peg$startRuleFunction = peg$parsequery; + + const peg$c0 = "-"; + const peg$c1 = "report-field"; + const peg$c2 = "reportfield"; + const peg$c3 = ","; + const peg$c4 = "date"; + const peg$c5 = "amount"; + const peg$c6 = "merchant"; + const peg$c7 = "description"; + const peg$c8 = "reportid"; + const peg$c9 = "report-id"; + const peg$c10 = "in"; + const peg$c11 = "currency"; + const peg$c12 = "groupCurrency"; + const peg$c13 = "group-currency"; + const peg$c14 = "tag"; + const peg$c15 = "category"; + const peg$c16 = "to"; + const peg$c17 = "exporter"; + const peg$c18 = "payer"; + const peg$c19 = "taxrate"; + const peg$c20 = "tax-rate"; + const peg$c21 = "cardID"; + const peg$c22 = "card"; + const peg$c23 = "from"; + const peg$c24 = "attendee"; + const peg$c25 = "expenseType"; + const peg$c26 = "expense-type"; + const peg$c27 = "withdrawalType"; + const peg$c28 = "withdrawal-type"; + const peg$c29 = "withdrawalid"; + const peg$c30 = "withdrawal-id"; + const peg$c31 = "billable"; + const peg$c32 = "reimbursable"; + const peg$c33 = "type"; + const peg$c34 = "status"; + const peg$c35 = "policyID"; + const peg$c36 = "workspace"; + const peg$c37 = "submitted"; + const peg$c38 = "approved"; + const peg$c39 = "paid"; + const peg$c40 = "exported"; + const peg$c41 = "posted"; + const peg$c42 = "withdrawn"; + const peg$c43 = "groupby"; + const peg$c44 = "group-by"; + const peg$c45 = "limit"; + const peg$c46 = "feed"; + const peg$c47 = "title"; + const peg$c48 = "assignee"; + const peg$c49 = "createdby"; + const peg$c50 = "created-by"; + const peg$c51 = "action"; + const peg$c52 = "total"; + const peg$c53 = "has"; + const peg$c54 = "is"; + const peg$c55 = "purchaseamount"; + const peg$c56 = "purchase-amount"; + const peg$c57 = "purchasecurrency"; + const peg$c58 = "purchase-currency"; + const peg$c59 = "columns"; + const peg$c60 = "view"; + const peg$c61 = "exportedto"; + const peg$c62 = "exported-to"; + const peg$c63 = "*:"; + const peg$c64 = "!="; + const peg$c65 = ">="; + const peg$c66 = ">"; + const peg$c67 = "<="; + const peg$c68 = "<"; + const peg$c69 = "\u201C"; + const peg$c70 = "\u201D"; + const peg$c71 = "\""; + + const peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; + const peg$r1 = /^[:=]/; + const peg$r2 = /^[^ ,\t\n\r\xA0]/; + const peg$r3 = /^[ \t\r\n\xA0]/; + const peg$r4 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; + const peg$r5 = /^["\u201C-\u201D]/; + const peg$r6 = /^[^"\u201D\u201C\r\n]/; + const peg$r7 = /^[ \t\n\r\xA0a-zA-Z0-9]/; + const peg$r8 = /^[a-zA-Z0-9]/; + const peg$r9 = /^[ \t\n\r\xA0]/; + const peg$r10 = /^[ \t\n\r\xA0a-zA-Z]/; + const peg$r11 = /^[,]/; + const peg$r12 = /^[ \t\n\r\xA0,]/; + + const peg$e0 = peg$literalExpectation("-", false); + const peg$e1 = peg$literalExpectation("report-field", true); + const peg$e2 = peg$literalExpectation("reportfield", true); + const peg$e3 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false, false); + const peg$e4 = peg$anyExpectation(); + const peg$e5 = peg$literalExpectation(",", false); + const peg$e6 = peg$otherExpectation("key"); + const peg$e7 = peg$literalExpectation("date", true); + const peg$e8 = peg$literalExpectation("amount", true); + const peg$e9 = peg$literalExpectation("merchant", true); + const peg$e10 = peg$literalExpectation("description", true); + const peg$e11 = peg$literalExpectation("reportid", true); + const peg$e12 = peg$literalExpectation("report-id", true); + const peg$e13 = peg$literalExpectation("in", true); + const peg$e14 = peg$literalExpectation("currency", true); + const peg$e15 = peg$literalExpectation("groupCurrency", false); + const peg$e16 = peg$literalExpectation("group-currency", true); + const peg$e17 = peg$literalExpectation("tag", true); + const peg$e18 = peg$literalExpectation("category", true); + const peg$e19 = peg$literalExpectation("to", true); + const peg$e20 = peg$literalExpectation("exporter", true); + const peg$e21 = peg$literalExpectation("payer", true); + const peg$e22 = peg$literalExpectation("taxRate", true); + const peg$e23 = peg$literalExpectation("tax-rate", true); + const peg$e24 = peg$literalExpectation("cardID", false); + const peg$e25 = peg$literalExpectation("card", true); + const peg$e26 = peg$literalExpectation("from", true); + const peg$e27 = peg$literalExpectation("attendee", true); + const peg$e28 = peg$literalExpectation("expenseType", false); + const peg$e29 = peg$literalExpectation("expense-type", true); + const peg$e30 = peg$literalExpectation("withdrawalType", false); + const peg$e31 = peg$literalExpectation("withdrawal-type", true); + const peg$e32 = peg$literalExpectation("withdrawalID", true); + const peg$e33 = peg$literalExpectation("withdrawal-id", true); + const peg$e34 = peg$literalExpectation("billable", true); + const peg$e35 = peg$literalExpectation("reimbursable", true); + const peg$e36 = peg$literalExpectation("type", true); + const peg$e37 = peg$literalExpectation("status", true); + const peg$e38 = peg$literalExpectation("policyID", false); + const peg$e39 = peg$literalExpectation("workspace", true); + const peg$e40 = peg$literalExpectation("submitted", true); + const peg$e41 = peg$literalExpectation("approved", true); + const peg$e42 = peg$literalExpectation("paid", true); + const peg$e43 = peg$literalExpectation("exported", true); + const peg$e44 = peg$literalExpectation("posted", true); + const peg$e45 = peg$literalExpectation("withdrawn", true); + const peg$e46 = peg$literalExpectation("groupBy", true); + const peg$e47 = peg$literalExpectation("group-by", true); + const peg$e48 = peg$literalExpectation("limit", true); + const peg$e49 = peg$literalExpectation("feed", true); + const peg$e50 = peg$literalExpectation("title", true); + const peg$e51 = peg$literalExpectation("assignee", true); + const peg$e52 = peg$literalExpectation("createdBy", true); + const peg$e53 = peg$literalExpectation("created-by", true); + const peg$e54 = peg$literalExpectation("action", true); + const peg$e55 = peg$literalExpectation("total", true); + const peg$e56 = peg$literalExpectation("has", true); + const peg$e57 = peg$literalExpectation("is", true); + const peg$e58 = peg$literalExpectation("purchaseAmount", true); + const peg$e59 = peg$literalExpectation("purchase-amount", true); + const peg$e60 = peg$literalExpectation("purchaseCurrency", true); + const peg$e61 = peg$literalExpectation("purchase-currency", true); + const peg$e62 = peg$literalExpectation("columns", true); + const peg$e63 = peg$literalExpectation("view", true); + const peg$e64 = peg$classExpectation([":", "="], false, false, false); + const peg$e65 = peg$literalExpectation("exportedTo", true); + const peg$e66 = peg$literalExpectation("exported-to", true); + const peg$e67 = peg$otherExpectation("operator"); + const peg$e68 = peg$literalExpectation("*:", false); + const peg$e69 = peg$literalExpectation("!=", false); + const peg$e70 = peg$literalExpectation(">=", false); + const peg$e71 = peg$literalExpectation(">", false); + const peg$e72 = peg$literalExpectation("<=", false); + const peg$e73 = peg$literalExpectation("<", false); + const peg$e74 = peg$otherExpectation("word"); + const peg$e75 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false, false); + const peg$e76 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false, false); + const peg$e77 = peg$otherExpectation("quote"); + const peg$e78 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false, false); + const peg$e79 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false, false); + const peg$e80 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false, false); + const peg$e81 = peg$literalExpectation("\u201C", false); + const peg$e82 = peg$literalExpectation("\u201D", false); + const peg$e83 = peg$literalExpectation("\"", false); + const peg$e84 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); + const peg$e85 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); + const peg$e86 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false, false); + const peg$e87 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false, false); + const peg$e88 = peg$classExpectation([","], false, false, false); + const peg$e89 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false, false); + + function peg$f0(ranges) { return { autocomplete, ranges }; } + function peg$f1(filters) { return filters.filter(Boolean).flat(); } + function peg$f2(neg, key, op, value) { + expectingNestedQuote = false; nameOperator = false; // Reset string parser + + const isNegated = !!neg && !nonNegatableKeys.has(key); + + if (!value) { autocomplete = { key, negated: isNegated, - ...value[value.length - 1], + value: "", + start: location().end.offset, + length: 0, }; - return value - .filter((v) => v.length > 0) - .map((v) => ({ - key, - negated: isNegated, - ...v, - })); - }; - var peg$f3 = function(rest) { - const suffix = rest.replaceAll(/^-+/g, ""); - return "reportField-" + (suffix ? suffix : ""); - }; - var peg$f4 = function() { autocomplete = null; }; - var peg$f5 = function(k) { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); - return k; + return; + } + + autocomplete = { + key, + negated: isNegated, + ...value[value.length - 1], }; - var peg$f6 = function(parts, empty) { - const ends = location(); - const value = parts.flat().filter(Boolean); // Filter out undefined values returned by the predicate - if (empty) { - value.push(""); - } - let count = ends.start.offset; - const result = []; - value.forEach((filter) => { - let word = filter; - if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { - word = word.slice(1, -1); - } - result.push({ - value: word, - start: count, - length: filter.length, - }); - count += filter.length + 1; + return value + .filter((v) => v.length > 0) + .map((v) => ({ + key, + negated: isNegated, + ...v, + })); + } + function peg$f3(rest) { + const suffix = rest.replaceAll(/^-+/g, ""); + return "reportField-" + (suffix ? suffix : ""); + } + function peg$f4() { autocomplete = null; } + function peg$f5(k) { + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + return k; + } + function peg$f6(parts, empty) { + const ends = location(); + const value = parts.flat().filter(Boolean); // Filter out undefined values returned by the predicate + if (empty) { + value.push(""); + } + let count = ends.start.offset; + const result = []; + value.forEach((filter) => { + let word = filter; + if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { + word = word.slice(1, -1); + } + result.push({ + value: word, + start: count, + length: filter.length, }); - return result; - }; - var peg$f7 = function() { return "date"; }; - var peg$f8 = function() { return "amount"; }; - var peg$f9 = function() { return "merchant"; }; - var peg$f10 = function() { return "description"; }; - var peg$f11 = function() { return "reportID"; }; - var peg$f12 = function() { return "keyword"; }; - var peg$f13 = function() { return "in"; }; - var peg$f14 = function() { return "currency"; }; - var peg$f15 = function() { return "groupCurrency"; }; - var peg$f16 = function() { return "tag"; }; - var peg$f17 = function() { return "category"; }; - var peg$f18 = function() { return "to"; }; - var peg$f19 = function() { return "exporter"; }; - var peg$f20 = function() { return "payer"; }; - var peg$f21 = function() { return "taxRate"; }; - var peg$f22 = function() { return "cardID"; }; - var peg$f23 = function() { return "from"; }; - var peg$f24 = function() {return "attendee"}; - var peg$f25 = function() { return "expenseType"; }; - var peg$f26 = function() { return "withdrawalType"; }; - var peg$f27 = function() { return "withdrawalID"; }; - var peg$f28 = function() { return "billable"; }; - var peg$f29 = function() { return "reimbursable"; }; - var peg$f30 = function() { return "type"; }; - var peg$f31 = function() { return "status"; }; - var peg$f32 = function() { return "sortBy"; }; - var peg$f33 = function() { return "sortOrder"; }; - var peg$f34 = function() { return "policyID"; }; - var peg$f35 = function() { return "submitted"; }; - var peg$f36 = function() { return "approved"; }; - var peg$f37 = function() { return "paid"; }; - var peg$f38 = function() { return "exported"; }; - var peg$f39 = function() { return "posted"; }; - var peg$f40 = function() { return "withdrawn"; }; - var peg$f41 = function() { return "groupBy"; }; - var peg$f42 = function() { return "limit"; }; - var peg$f43 = function() { return "feed"; }; - var peg$f44 = function() { return "title"; }; - var peg$f45 = function() { return "assignee"; }; - var peg$f46 = function() { return "createdBy"; }; - var peg$f47 = function() { return "action"; }; - var peg$f48 = function() {return "total"; }; - var peg$f49 = function() {return "has"; }; - var peg$f50 = function() {return "is"; }; - var peg$f51 = function() {return "purchaseAmount"}; - var peg$f52 = function() {return "purchaseCurrency"}; - var peg$f53 = function() { - isColumnsContext = true; - return "columns"; -}; - var peg$f54 = function() {return "view"}; - var peg$f55 = function() { return isColumnsContext; }; - var peg$f56 = function() { return "perDiem"; }; - var peg$f57 = function() { return "drafts"; }; - var peg$f58 = function() { return "originalamount"; }; - var peg$f59 = function() { return "taxAmount"; }; - var peg$f60 = function() { return "taxrate"; }; - var peg$f61 = function() { return "policyname"; }; - var peg$f62 = function() { return "withdrawalID"; }; - var peg$f63 = function() { return "bankAccount"; }; - var peg$f64 = function() { return "reportID"; }; - var peg$f65 = function() { return "base62ReportID"; }; - var peg$f66 = function() { return "exportedto"; }; - var peg$f67 = function() { return "exportedTo"; }; - var peg$f68 = function() { return "exportedTo"; }; - var peg$f69 = function() { return "exchangeRate"; }; - var peg$f70 = function() { return "reimbursableTotal"; }; - var peg$f71 = function() { return "nonReimbursableTotal"; }; - var peg$f72 = function() { return "groupFrom"; }; - var peg$f73 = function() { return "groupExpenses"; }; - var peg$f74 = function() { return "groupTotal"; }; - var peg$f75 = function() { return "groupCard"; }; - var peg$f76 = function() { return "groupFeed"; }; - var peg$f77 = function() { return "groupBankAccount"; }; - var peg$f78 = function() { return "groupWithdrawn"; }; - var peg$f79 = function() { return "groupWithdrawalID"; }; - var peg$f80 = function() { return "groupCategory"; }; - var peg$f81 = function() { return "groupTag"; }; - var peg$f82 = function() { return "groupMerchant"; }; - var peg$f83 = function() { return "groupmonth"; }; - var peg$f84 = function() { return "groupweek"; }; - var peg$f85 = function() { return "groupyear"; }; - var peg$f86 = function() { return "groupquarter"; }; - var peg$f87 = function() { return "eq"; }; - var peg$f88 = function() { return "neq"; }; - var peg$f89 = function() { return "gte"; }; - var peg$f90 = function() { return "gt"; }; - var peg$f91 = function() { return "lte"; }; - var peg$f92 = function() { return "lt"; }; - var peg$f93 = function(o) { - if (nameOperator) { - expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found - } - isColumnsContext = false; - return o; - }; - var peg$f94 = function(chars) { return chars.join("").trim(); }; - var peg$f95 = function() { - isColumnsContext = false; - return "and"; -}; - var peg$f96 = function() { return expectingNestedQuote; }; - var peg$f97 = function(start, inner, end) { //handle no-breaking space - return [...start, '"', ...inner, '"', ...end].join(""); - }; - var peg$f98 = function(start) {return "“"}; - var peg$f99 = function(start) {return "”"}; - var peg$f100 = function(start) {return "\""}; - var peg$f101 = function(start, inner, end) { + count += filter.length + 1; + }); + return result; + } + function peg$f7() { return "date"; } + function peg$f8() { return "amount"; } + function peg$f9() { return "merchant"; } + function peg$f10() { return "description"; } + function peg$f11() { return "reportID"; } + function peg$f12() { return "in"; } + function peg$f13() { return "currency"; } + function peg$f14() { return "groupCurrency"; } + function peg$f15() { return "tag"; } + function peg$f16() { return "category"; } + function peg$f17() { return "to"; } + function peg$f18() { return "exporter"; } + function peg$f19() { return "payer"; } + function peg$f20() { return "taxRate"; } + function peg$f21() { return "cardID"; } + function peg$f22() { return "from"; } + function peg$f23() {return "attendee" } + function peg$f24() { return "expenseType"; } + function peg$f25() { return "withdrawalType"; } + function peg$f26() { return "withdrawalID"; } + function peg$f27() { return "billable"; } + function peg$f28() { return "reimbursable"; } + function peg$f29() { return "type"; } + function peg$f30() { return "status"; } + function peg$f31() { return "policyID"; } + function peg$f32() { return "submitted"; } + function peg$f33() { return "approved"; } + function peg$f34() { return "paid"; } + function peg$f35() { return "exported"; } + function peg$f36() { return "posted"; } + function peg$f37() { return "withdrawn"; } + function peg$f38() { return "groupBy"; } + function peg$f39() { return "limit"; } + function peg$f40() { return "feed"; } + function peg$f41() { return "title"; } + function peg$f42() { return "assignee"; } + function peg$f43() { return "createdBy"; } + function peg$f44() { return "action"; } + function peg$f45() {return "total"; } + function peg$f46() {return "has"; } + function peg$f47() {return "is"; } + function peg$f48() {return "purchaseAmount" } + function peg$f49() {return "purchaseCurrency" } + function peg$f50() { + isColumnsContext = true; + return "columns"; + } + function peg$f51() {return "view" } + function peg$f52() { return "exportedTo"; } + function peg$f53() { return "exportedTo"; } + function peg$f54() { return "contains"; } + function peg$f55() { return "eq"; } + function peg$f56() { return "neq"; } + function peg$f57() { return "gte"; } + function peg$f58() { return "gt"; } + function peg$f59() { return "lte"; } + function peg$f60() { return "lt"; } + function peg$f61(o) { + if (nameOperator) { + expectingNestedQuote = (o === "eq" || o === "contains"); + } + isColumnsContext = false; + return o; + } + function peg$f62(chars) { return chars.join("").trim(); } + function peg$f63() { + isColumnsContext = false; + return "and"; + } + function peg$f64() { return expectingNestedQuote; } + function peg$f65(start, inner, end) { //handle no-breaking space + return [...start, '"', ...inner, '"', ...end].join(""); + } + function peg$f66(start) {return "“" } + function peg$f67(start) {return "”" } + function peg$f68(start) {return "\"" } + function peg$f69(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); -}; - var peg$currPos = options.peg$currPos | 0; - var peg$savedPos = peg$currPos; - var peg$posDetailsCache = [{ line: 1, column: 1 }]; - var peg$maxFailPos = peg$currPos; - var peg$maxFailExpected = options.peg$maxFailExpected || []; - var peg$silentFails = options.peg$silentFails | 0; + } + let peg$currPos = options.peg$currPos | 0; + let peg$savedPos = peg$currPos; + const peg$posDetailsCache = [{ line: 1, column: 1 }]; + let peg$maxFailPos = peg$currPos; + let peg$maxFailExpected = options.peg$maxFailExpected || []; + let peg$silentFails = options.peg$silentFails | 0; - var peg$result; + let peg$result; if (options.startRule) { if (!(options.startRule in peg$startRuleFunctions)) { @@ -624,7 +520,7 @@ function peg$parse(input, options) { return { source: peg$source, start: peg$savedPos, - end: peg$currPos + end: peg$currPos, }; } @@ -652,12 +548,20 @@ function peg$parse(input, options) { throw peg$buildSimpleError(message, location); } + function peg$getUnicode(pos = peg$currPos) { + const cp = input.codePointAt(pos); + if (cp === undefined) { + return ""; + } + return String.fromCodePoint(cp); + } + function peg$literalExpectation(text, ignoreCase) { - return { type: "literal", text: text, ignoreCase: ignoreCase }; + return { type: "literal", text, ignoreCase }; } - function peg$classExpectation(parts, inverted, ignoreCase) { - return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + function peg$classExpectation(parts, inverted, ignoreCase, unicode) { + return { type: "class", parts, inverted, ignoreCase, unicode }; } function peg$anyExpectation() { @@ -669,12 +573,12 @@ function peg$parse(input, options) { } function peg$otherExpectation(description) { - return { type: "other", description: description }; + return { type: "other", description }; } function peg$computePosDetails(pos) { - var details = peg$posDetailsCache[pos]; - var p; + let details = peg$posDetailsCache[pos]; + let p; if (details) { return details; @@ -689,7 +593,7 @@ function peg$parse(input, options) { details = peg$posDetailsCache[p]; details = { line: details.line, - column: details.column + column: details.column, }; while (p < pos) { @@ -710,21 +614,21 @@ function peg$parse(input, options) { } function peg$computeLocation(startPos, endPos, offset) { - var startPosDetails = peg$computePosDetails(startPos); - var endPosDetails = peg$computePosDetails(endPos); + const startPosDetails = peg$computePosDetails(startPos); + const endPosDetails = peg$computePosDetails(endPos); - var res = { + const res = { source: peg$source, start: { offset: startPos, line: startPosDetails.line, - column: startPosDetails.column + column: startPosDetails.column, }, end: { offset: endPos, line: endPosDetails.line, - column: endPosDetails.column - } + column: endPosDetails.column, + }, }; if (offset && peg$source && (typeof peg$source.offset === "function")) { res.start = peg$source.offset(res.start); @@ -758,7 +662,7 @@ function peg$parse(input, options) { } function peg$parsequery() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -771,7 +675,7 @@ function peg$parse(input, options) { } function peg$parsefilterList() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = []; @@ -796,7 +700,7 @@ function peg$parse(input, options) { } function peg$parsefilter() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parsedefaultFilter(); @@ -814,7 +718,7 @@ function peg$parse(input, options) { } function peg$parsedefaultFilter() { - var s0, s1, s2, s3, s4, s5, s6, s7; + let s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = peg$parse_(); @@ -853,12 +757,12 @@ function peg$parse(input, options) { } function peg$parsereportFieldDynamic() { - var s0, s1, s2, s3, s4, s5, s6, s7; + let s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c1) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e1); } @@ -866,7 +770,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c2) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e2); } @@ -974,7 +878,7 @@ function peg$parse(input, options) { } function peg$parsefreeTextFilter() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -1001,7 +905,7 @@ function peg$parse(input, options) { } function peg$parseautocompleteKey() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1160,7 +1064,7 @@ function peg$parse(input, options) { } function peg$parsefilterKey() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parseautocompleteKey(); @@ -1174,7 +1078,7 @@ function peg$parse(input, options) { } function peg$parseidentifier() { - var s0, s1, s2, s3, s4; + let s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$currPos; @@ -1236,12 +1140,12 @@ function peg$parse(input, options) { } function peg$parsedate() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c4) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e7); } @@ -1256,12 +1160,12 @@ function peg$parse(input, options) { } function peg$parseamount() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c5) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e8); } @@ -1276,12 +1180,12 @@ function peg$parse(input, options) { } function peg$parsemerchant() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c6) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e9); } @@ -1296,12 +1200,12 @@ function peg$parse(input, options) { } function peg$parsedescription() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c7) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e10); } @@ -1316,11 +1220,11 @@ function peg$parse(input, options) { } function peg$parsereportID() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 8); if (s0.toLowerCase() === peg$c8) { - peg$currPos += 8; + peg$currPos += (8); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e11); } @@ -1329,7 +1233,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e12); } @@ -1344,13 +1248,13 @@ function peg$parse(input, options) { return s0; } - function peg$parsekeyword() { - var s0, s1; + function peg$parsein() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 7); + s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c10) { - peg$currPos += 7; + peg$currPos += (2); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e13); } @@ -1364,13 +1268,13 @@ function peg$parse(input, options) { return s0; } - function peg$parsein() { - var s0, s1; + function peg$parsecurrency() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 2); + s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c11) { - peg$currPos += 2; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -1384,48 +1288,28 @@ function peg$parse(input, options) { return s0; } - function peg$parsecurrency() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c12) { - peg$currPos += 8; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e15); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f14(); - } - s0 = s1; - - return s0; - } - function peg$parsegroupCurrency() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 13) === peg$c13) { - s0 = peg$c13; + if (input.substr(peg$currPos, 13) === peg$c12) { + s0 = peg$c12; peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e16); } + if (peg$silentFails === 0) { peg$fail(peg$e15); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c14) { - peg$currPos += 14; + if (s1.toLowerCase() === peg$c13) { + peg$currPos += (14); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e17); } + if (peg$silentFails === 0) { peg$fail(peg$e16); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f15(); + s1 = peg$f14(); } s0 = s1; } @@ -1434,19 +1318,19 @@ function peg$parse(input, options) { } function peg$parsetag() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c15) { - peg$currPos += 3; + if (s1.toLowerCase() === peg$c14) { + peg$currPos += (3); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e18); } + if (peg$silentFails === 0) { peg$fail(peg$e17); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f16(); + s1 = peg$f15(); } s0 = s1; @@ -1454,19 +1338,19 @@ function peg$parse(input, options) { } function peg$parsecategory() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c16) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c15) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e19); } + if (peg$silentFails === 0) { peg$fail(peg$e18); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f17(); + s1 = peg$f16(); } s0 = s1; @@ -1474,19 +1358,19 @@ function peg$parse(input, options) { } function peg$parseto() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c17) { - peg$currPos += 2; + if (s1.toLowerCase() === peg$c16) { + peg$currPos += (2); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e20); } + if (peg$silentFails === 0) { peg$fail(peg$e19); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f18(); + s1 = peg$f17(); } s0 = s1; @@ -1494,19 +1378,19 @@ function peg$parse(input, options) { } function peg$parseexporter() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c18) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c17) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e21); } + if (peg$silentFails === 0) { peg$fail(peg$e20); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f19(); + s1 = peg$f18(); } s0 = s1; @@ -1514,19 +1398,19 @@ function peg$parse(input, options) { } function peg$parsepayer() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c19) { - peg$currPos += 5; + if (s1.toLowerCase() === peg$c18) { + peg$currPos += (5); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e22); } + if (peg$silentFails === 0) { peg$fail(peg$e21); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f20(); + s1 = peg$f19(); } s0 = s1; @@ -1534,27 +1418,27 @@ function peg$parse(input, options) { } function peg$parsetaxRate() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c20) { - peg$currPos += 7; + if (s0.toLowerCase() === peg$c19) { + peg$currPos += (7); } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e23); } + if (peg$silentFails === 0) { peg$fail(peg$e22); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c20) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e24); } + if (peg$silentFails === 0) { peg$fail(peg$e23); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f21(); + s1 = peg$f20(); } s0 = s1; } @@ -1563,27 +1447,27 @@ function peg$parse(input, options) { } function peg$parsecardID() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 6) === peg$c22) { - s0 = peg$c22; + if (input.substr(peg$currPos, 6) === peg$c21) { + s0 = peg$c21; peg$currPos += 6; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e25); } + if (peg$silentFails === 0) { peg$fail(peg$e24); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c23) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c22) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e26); } + if (peg$silentFails === 0) { peg$fail(peg$e25); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f22(); + s1 = peg$f21(); } s0 = s1; } @@ -1592,19 +1476,19 @@ function peg$parse(input, options) { } function peg$parsefrom() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c24) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c23) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e27); } + if (peg$silentFails === 0) { peg$fail(peg$e26); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f23(); + s1 = peg$f22(); } s0 = s1; @@ -1612,19 +1496,19 @@ function peg$parse(input, options) { } function peg$parseattendee() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c25) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c24) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e28); } + if (peg$silentFails === 0) { peg$fail(peg$e27); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f24(); + s1 = peg$f23(); } s0 = s1; @@ -1632,27 +1516,27 @@ function peg$parse(input, options) { } function peg$parseexpenseType() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 11) === peg$c26) { - s0 = peg$c26; + if (input.substr(peg$currPos, 11) === peg$c25) { + s0 = peg$c25; peg$currPos += 11; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e29); } + if (peg$silentFails === 0) { peg$fail(peg$e28); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c27) { - peg$currPos += 12; + if (s1.toLowerCase() === peg$c26) { + peg$currPos += (12); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e30); } + if (peg$silentFails === 0) { peg$fail(peg$e29); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f25(); + s1 = peg$f24(); } s0 = s1; } @@ -1661,27 +1545,27 @@ function peg$parse(input, options) { } function peg$parsewithdrawalType() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 14) === peg$c28) { - s0 = peg$c28; + if (input.substr(peg$currPos, 14) === peg$c27) { + s0 = peg$c27; peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e31); } + if (peg$silentFails === 0) { peg$fail(peg$e30); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c29) { - peg$currPos += 15; + if (s1.toLowerCase() === peg$c28) { + peg$currPos += (15); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e32); } + if (peg$silentFails === 0) { peg$fail(peg$e31); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f26(); + s1 = peg$f25(); } s0 = s1; } @@ -1690,27 +1574,27 @@ function peg$parse(input, options) { } function peg$parsewithdrawalID() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 12); - if (s0.toLowerCase() === peg$c30) { - peg$currPos += 12; + if (s0.toLowerCase() === peg$c29) { + peg$currPos += (12); } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e33); } + if (peg$silentFails === 0) { peg$fail(peg$e32); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c31) { - peg$currPos += 13; + if (s1.toLowerCase() === peg$c30) { + peg$currPos += (13); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e34); } + if (peg$silentFails === 0) { peg$fail(peg$e33); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f27(); + s1 = peg$f26(); } s0 = s1; } @@ -1719,19 +1603,19 @@ function peg$parse(input, options) { } function peg$parsebillable() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c32) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c31) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e35); } + if (peg$silentFails === 0) { peg$fail(peg$e34); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f28(); + s1 = peg$f27(); } s0 = s1; @@ -1739,19 +1623,19 @@ function peg$parse(input, options) { } function peg$parsereimbursable() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c33) { - peg$currPos += 12; + if (s1.toLowerCase() === peg$c32) { + peg$currPos += (12); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e36); } + if (peg$silentFails === 0) { peg$fail(peg$e35); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f29(); + s1 = peg$f28(); } s0 = s1; @@ -1759,19 +1643,19 @@ function peg$parse(input, options) { } function peg$parsetype() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c34) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c33) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e37); } + if (peg$silentFails === 0) { peg$fail(peg$e36); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f30(); + s1 = peg$f29(); } s0 = s1; @@ -1779,105 +1663,47 @@ function peg$parse(input, options) { } function peg$parsestatus() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c35) { - peg$currPos += 6; + if (s1.toLowerCase() === peg$c34) { + peg$currPos += (6); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e38); } + if (peg$silentFails === 0) { peg$fail(peg$e37); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f31(); + s1 = peg$f30(); } s0 = s1; return s0; } - function peg$parsesortBy() { - var s0, s1; - - if (input.substr(peg$currPos, 6) === peg$c36) { - s0 = peg$c36; - peg$currPos += 6; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e39); } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c37) { - peg$currPos += 7; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e40); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f32(); - } - s0 = s1; - } - - return s0; - } - - function peg$parsesortOrder() { - var s0, s1; - - if (input.substr(peg$currPos, 9) === peg$c38) { - s0 = peg$c38; - peg$currPos += 9; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e41); } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c39) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f33(); - } - s0 = s1; - } - - return s0; - } - function peg$parsepolicyID() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 8) === peg$c40) { - s0 = peg$c40; + if (input.substr(peg$currPos, 8) === peg$c35) { + s0 = peg$c35; peg$currPos += 8; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e43); } + if (peg$silentFails === 0) { peg$fail(peg$e38); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c41) { - peg$currPos += 9; + if (s1.toLowerCase() === peg$c36) { + peg$currPos += (9); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e44); } + if (peg$silentFails === 0) { peg$fail(peg$e39); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f34(); + s1 = peg$f31(); } s0 = s1; } @@ -1886,19 +1712,19 @@ function peg$parse(input, options) { } function peg$parsesubmitted() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c42) { - peg$currPos += 9; + if (s1.toLowerCase() === peg$c37) { + peg$currPos += (9); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e45); } + if (peg$silentFails === 0) { peg$fail(peg$e40); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f35(); + s1 = peg$f32(); } s0 = s1; @@ -1906,19 +1732,19 @@ function peg$parse(input, options) { } function peg$parseapproved() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c43) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c38) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e46); } + if (peg$silentFails === 0) { peg$fail(peg$e41); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f36(); + s1 = peg$f33(); } s0 = s1; @@ -1926,19 +1752,19 @@ function peg$parse(input, options) { } function peg$parsepaid() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c44) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c39) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e47); } + if (peg$silentFails === 0) { peg$fail(peg$e42); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f37(); + s1 = peg$f34(); } s0 = s1; @@ -1946,19 +1772,19 @@ function peg$parse(input, options) { } function peg$parseexported() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c45) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c40) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e48); } + if (peg$silentFails === 0) { peg$fail(peg$e43); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f38(); + s1 = peg$f35(); } s0 = s1; @@ -1966,19 +1792,19 @@ function peg$parse(input, options) { } function peg$parseposted() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c46) { - peg$currPos += 6; + if (s1.toLowerCase() === peg$c41) { + peg$currPos += (6); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e49); } + if (peg$silentFails === 0) { peg$fail(peg$e44); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f39(); + s1 = peg$f36(); } s0 = s1; @@ -1986,19 +1812,19 @@ function peg$parse(input, options) { } function peg$parsewithdrawn() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c47) { - peg$currPos += 9; + if (s1.toLowerCase() === peg$c42) { + peg$currPos += (9); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e50); } + if (peg$silentFails === 0) { peg$fail(peg$e45); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f40(); + s1 = peg$f37(); } s0 = s1; @@ -2006,27 +1832,27 @@ function peg$parse(input, options) { } function peg$parsegroupBy() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c48) { - peg$currPos += 7; + if (s0.toLowerCase() === peg$c43) { + peg$currPos += (7); } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e51); } + if (peg$silentFails === 0) { peg$fail(peg$e46); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c49) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c44) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e52); } + if (peg$silentFails === 0) { peg$fail(peg$e47); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f41(); + s1 = peg$f38(); } s0 = s1; } @@ -2035,19 +1861,19 @@ function peg$parse(input, options) { } function peg$parselimit() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c50) { - peg$currPos += 5; + if (s1.toLowerCase() === peg$c45) { + peg$currPos += (5); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e53); } + if (peg$silentFails === 0) { peg$fail(peg$e48); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f42(); + s1 = peg$f39(); } s0 = s1; @@ -2055,19 +1881,19 @@ function peg$parse(input, options) { } function peg$parsefeed() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c51) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c46) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e54); } + if (peg$silentFails === 0) { peg$fail(peg$e49); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f43(); + s1 = peg$f40(); } s0 = s1; @@ -2075,19 +1901,19 @@ function peg$parse(input, options) { } function peg$parsetitle() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c52) { - peg$currPos += 5; + if (s1.toLowerCase() === peg$c47) { + peg$currPos += (5); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e55); } + if (peg$silentFails === 0) { peg$fail(peg$e50); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f44(); + s1 = peg$f41(); } s0 = s1; @@ -2095,19 +1921,19 @@ function peg$parse(input, options) { } function peg$parseassignee() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c53) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c48) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e56); } + if (peg$silentFails === 0) { peg$fail(peg$e51); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f45(); + s1 = peg$f42(); } s0 = s1; @@ -2115,27 +1941,27 @@ function peg$parse(input, options) { } function peg$parsecreatedBy() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c54) { - peg$currPos += 9; + if (s0.toLowerCase() === peg$c49) { + peg$currPos += (9); } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e57); } + if (peg$silentFails === 0) { peg$fail(peg$e52); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c55) { - peg$currPos += 10; + if (s1.toLowerCase() === peg$c50) { + peg$currPos += (10); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e58); } + if (peg$silentFails === 0) { peg$fail(peg$e53); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f46(); + s1 = peg$f43(); } s0 = s1; } @@ -2144,19 +1970,19 @@ function peg$parse(input, options) { } function peg$parseaction() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c56) { - peg$currPos += 6; + if (s1.toLowerCase() === peg$c51) { + peg$currPos += (6); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e59); } + if (peg$silentFails === 0) { peg$fail(peg$e54); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f47(); + s1 = peg$f44(); } s0 = s1; @@ -2164,1438 +1990,204 @@ function peg$parse(input, options) { } function peg$parsetotal() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c57) { - peg$currPos += 5; + if (s1.toLowerCase() === peg$c52) { + peg$currPos += (5); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e60); } + if (peg$silentFails === 0) { peg$fail(peg$e55); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f48(); - } - s0 = s1; - - return s0; - } - - function peg$parsehas() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c58) { - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e61); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f49(); - } - s0 = s1; - - return s0; - } - - function peg$parseis() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c59) { - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e62); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f50(); - } - s0 = s1; - - return s0; - } - - function peg$parsepurchaseAmount() { - var s0, s1; - - s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c60) { - peg$currPos += 14; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e63); } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c61) { - peg$currPos += 15; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e64); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f51(); - } - s0 = s1; - } - - return s0; - } - - function peg$parsepurchaseCurrency() { - var s0, s1; - - s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c62) { - peg$currPos += 16; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e65); } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c63) { - peg$currPos += 17; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e66); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f52(); - } - s0 = s1; - } - - return s0; - } - - function peg$parsecolumns() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c64) { - peg$currPos += 7; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e67); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f53(); - } - s0 = s1; - - return s0; - } - - function peg$parseview() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c65) { - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e68); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f54(); - } - s0 = s1; - - return s0; - } - - function peg$parsevalues() { - var s0, s1, s2; - - s0 = peg$currPos; - peg$savedPos = peg$currPos; - s1 = peg$f55(); - if (s1) { - s1 = undefined; - } else { - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - s2 = peg$parsecolumnsValues(); - if (s2 !== peg$FAILED) { - s1 = [s1, s2]; - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$parseperDiem(); - if (s0 === peg$FAILED) { - s0 = peg$parsedraft(); - } - } - - return s0; - } - - function peg$parsecolumnsValues() { - var s0; - - s0 = peg$parseoriginalAmount(); - if (s0 === peg$FAILED) { - s0 = peg$parsetaxRateValue(); - if (s0 === peg$FAILED) { - s0 = peg$parsetaxAmount(); - if (s0 === peg$FAILED) { - s0 = peg$parsepolicyName(); - if (s0 === peg$FAILED) { - s0 = peg$parsewithdrawalId(); - if (s0 === peg$FAILED) { - s0 = peg$parsebankAccount(); - if (s0 === peg$FAILED) { - s0 = peg$parsereportId(); - if (s0 === peg$FAILED) { - s0 = peg$parsebase62ReportId(); - if (s0 === peg$FAILED) { - s0 = peg$parseexportedToColumnValue(); - if (s0 === peg$FAILED) { - s0 = peg$parseexchangeRate(); - if (s0 === peg$FAILED) { - s0 = peg$parsereimbursableTotal(); - if (s0 === peg$FAILED) { - s0 = peg$parsenonReimbursableTotal(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupFrom(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupExpenses(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupTotal(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupCard(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupFeed(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupBankAccount(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupWithdrawn(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupWithdrawalId(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupCategory(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupTag(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupMerchant(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupMonth(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupWeek(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupYear(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupQuarter(); - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - - return s0; - } - - function peg$parseperDiem() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c66) { - peg$currPos += 8; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e69); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f56(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsedraft() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c67) { - peg$currPos += 6; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e70); } - } - if (s1 === peg$FAILED) { - s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c68) { - peg$currPos += 5; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e71); } - } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f57(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseoriginalAmount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c69) { - peg$currPos += 15; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e72); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f58(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsetaxAmount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c70) { - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e73); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f59(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsetaxRateValue() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e24); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f60(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsepolicyName() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c71) { - peg$currPos += 11; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e74); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f61(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsewithdrawalId() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c31) { - peg$currPos += 13; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e34); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f62(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsebankAccount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c72) { - peg$currPos += 12; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f63(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsereportId() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c73) { - peg$currPos += 14; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f64(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsebase62ReportId() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c9) { - peg$currPos += 9; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e12); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f65(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseexportedToColumnValue() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c74) { - peg$currPos += 11; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f66(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseexportedToKeyEnd() { - var s0, s1, s2; - - s0 = peg$parsewordBoundary(); - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parse_(); - s2 = input.charAt(peg$currPos); - if (peg$r1.test(s2)) { - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } - } - if (s2 !== peg$FAILED) { - s1 = [s1, s2]; - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - - return s0; - } - - function peg$parseexportedTo() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c75) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parseexportedToKeyEnd(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f67(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c74) { - peg$currPos += 11; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parseexportedToKeyEnd(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f68(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - - return s0; - } - - function peg$parseexchangeRate() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c76) { - peg$currPos += 13; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f69(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsereimbursableTotal() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c77) { - peg$currPos += 18; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f70(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsenonReimbursableTotal() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c78) { - peg$currPos += 22; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f71(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupFrom() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c79) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f72(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupExpenses() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c80) { - peg$currPos += 14; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f73(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupTotal() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c81) { - peg$currPos += 11; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f74(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupCard() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c82) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f75(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupFeed() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c83) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f76(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupBankAccount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c84) { - peg$currPos += 18; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f77(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupWithdrawn() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c85) { - peg$currPos += 15; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f78(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupWithdrawalId() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c86) { - peg$currPos += 19; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f79(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s1 = peg$f45(); } + s0 = s1; return s0; } - function peg$parsegroupCategory() { - var s0, s1, s2, s3; + function peg$parsehas() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c87) { - peg$currPos += 14; + s1 = input.substr(peg$currPos, 3); + if (s1.toLowerCase() === peg$c53) { + peg$currPos += (3); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e56); } } if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f80(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f46(); } + s0 = s1; return s0; } - function peg$parsegroupTag() { - var s0, s1, s2, s3; + function peg$parseis() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c88) { - peg$currPos += 9; + s1 = input.substr(peg$currPos, 2); + if (s1.toLowerCase() === peg$c54) { + peg$currPos += (2); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e57); } } if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f81(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f47(); } + s0 = s1; return s0; } - function peg$parsegroupMerchant() { - var s0, s1, s2, s3; + function peg$parsepurchaseAmount() { + let s0, s1; - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c89) { - peg$currPos += 14; + s0 = input.substr(peg$currPos, 14); + if (s0.toLowerCase() === peg$c55) { + peg$currPos += (14); } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e58); } } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 15); + if (s1.toLowerCase() === peg$c56) { + peg$currPos += (15); } else { - s2 = peg$FAILED; + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e59); } } - if (s2 !== peg$FAILED) { + if (s1 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f82(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s1 = peg$f48(); } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s0 = s1; } return s0; } - function peg$parsegroupMonth() { - var s0, s1, s2, s3; + function peg$parsepurchaseCurrency() { + let s0, s1; - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c90) { - peg$currPos += 11; + s0 = input.substr(peg$currPos, 16); + if (s0.toLowerCase() === peg$c57) { + peg$currPos += (16); } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e60); } } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 17); + if (s1.toLowerCase() === peg$c58) { + peg$currPos += (17); } else { - s2 = peg$FAILED; + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e61); } } - if (s2 !== peg$FAILED) { + if (s1 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f83(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s1 = peg$f49(); } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s0 = s1; } return s0; } - function peg$parsegroupWeek() { - var s0, s1, s2, s3; + function peg$parsecolumns() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c91) { - peg$currPos += 10; + s1 = input.substr(peg$currPos, 7); + if (s1.toLowerCase() === peg$c59) { + peg$currPos += (7); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e62); } } if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f84(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f50(); } + s0 = s1; return s0; } - function peg$parsegroupYear() { - var s0, s1, s2, s3; + function peg$parseview() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c92) { - peg$currPos += 10; + s1 = input.substr(peg$currPos, 4); + if (s1.toLowerCase() === peg$c60) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e63); } } if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; + peg$savedPos = s0; + s1 = peg$f51(); + } + s0 = s1; + + return s0; + } + + function peg$parseexportedToKeyEnd() { + let s0, s1, s2; + + s0 = peg$parsewordBoundary(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + s2 = input.charAt(peg$currPos); + if (peg$r1.test(s2)) { + peg$currPos++; } else { s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e64); } } if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f85(); + s1 = [s1, s2]; + s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; } return s0; } - function peg$parsegroupQuarter() { - var s0, s1, s2, s3; + function peg$parseexportedTo() { + let s0, s1, s2, s3; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c93) { - peg$currPos += 13; + s1 = input.substr(peg$currPos, 10); + if (s1.toLowerCase() === peg$c61) { + peg$currPos += (10); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e65); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; - s3 = peg$parsewordBoundary(); + s3 = peg$parseexportedToKeyEnd(); peg$silentFails--; if (s3 !== peg$FAILED) { peg$currPos = s2; @@ -3605,7 +2197,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f86(); + s0 = peg$f52(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3614,97 +2206,144 @@ function peg$parse(input, options) { peg$currPos = s0; s0 = peg$FAILED; } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 11); + if (s1.toLowerCase() === peg$c62) { + peg$currPos += (11); + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e66); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseexportedToKeyEnd(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f53(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } return s0; } function peg$parseoperator() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; - s1 = input.charAt(peg$currPos); - if (peg$r1.test(s1)) { - peg$currPos++; + if (input.substr(peg$currPos, 2) === peg$c63) { + s1 = peg$c63; + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e68); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f87(); + s1 = peg$f54(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c94) { - s1 = peg$c94; - peg$currPos += 2; + s1 = input.charAt(peg$currPos); + if (peg$r1.test(s1)) { + peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e64); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f88(); + s1 = peg$f55(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c95) { - s1 = peg$c95; + if (input.substr(peg$currPos, 2) === peg$c64) { + s1 = peg$c64; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e69); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f89(); + s1 = peg$f56(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c96; - peg$currPos++; + if (input.substr(peg$currPos, 2) === peg$c65) { + s1 = peg$c65; + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e70); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f90(); + s1 = peg$f57(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c97) { - s1 = peg$c97; - peg$currPos += 2; + if (input.charCodeAt(peg$currPos) === 62) { + s1 = peg$c66; + peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e71); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f91(); + s1 = peg$f58(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c98; - peg$currPos++; + if (input.substr(peg$currPos, 2) === peg$c67) { + s1 = peg$c67; + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e72); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f92(); + s1 = peg$f59(); } s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 60) { + s1 = peg$c68; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e73); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f60(); + } + s0 = s1; + } } } } @@ -3713,20 +2352,20 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e67); } } return s0; } function peg$parsefilterOperator() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f93(s1); + s1 = peg$f61(s1); } s0 = s1; @@ -3734,7 +2373,7 @@ function peg$parse(input, options) { } function peg$parsealphanumeric() { - var s0, s1, s2; + let s0, s1, s2; peg$silentFails++; s0 = peg$currPos; @@ -3744,7 +2383,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -3754,7 +2393,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } } } else { @@ -3762,32 +2401,32 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f94(s1); + s1 = peg$f62(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e74); } } return s0; } function peg$parselogicalAnd() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f95(); + s1 = peg$f63(); s0 = s1; return s0; } function peg$parse_() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = []; @@ -3796,7 +2435,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -3805,22 +2444,20 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } } peg$silentFails--; - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } return s0; } function peg$parsequotedString() { - var s0, s1, s2; + let s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f96(); + s1 = peg$f64(); if (s1) { s1 = undefined; } else { @@ -3847,7 +2484,7 @@ function peg$parse(input, options) { } function peg$parsesimpleQuotedString() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -3857,7 +2494,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3866,7 +2503,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } } s2 = input.charAt(peg$currPos); @@ -3874,7 +2511,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s2 !== peg$FAILED) { s3 = []; @@ -3883,7 +2520,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -3892,7 +2529,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } } s4 = input.charAt(peg$currPos); @@ -3900,7 +2537,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s4 !== peg$FAILED) { s5 = []; @@ -3909,7 +2546,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -3918,11 +2555,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } } peg$savedPos = s0; - s0 = peg$f97(s1, s3, s5); + s0 = peg$f65(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3934,14 +2571,14 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } return s0; } function peg$parsenestedQuotedString() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -3951,7 +2588,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3960,7 +2597,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } } s2 = input.charAt(peg$currPos); @@ -3968,7 +2605,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s2 !== peg$FAILED) { s3 = []; @@ -3977,7 +2614,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -3993,15 +2630,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c99; + s6 = peg$c69; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f98(s1); + s4 = peg$f66(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4024,15 +2661,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c100; + s6 = peg$c70; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f99(s1); + s4 = peg$f67(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4055,15 +2692,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c101; + s6 = peg$c71; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f100(s1); + s4 = peg$f68(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4082,7 +2719,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4098,15 +2735,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c99; + s6 = peg$c69; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f98(s1); + s4 = peg$f66(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4129,15 +2766,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c100; + s6 = peg$c70; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f99(s1); + s4 = peg$f67(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4160,15 +2797,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c101; + s6 = peg$c71; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f100(s1); + s4 = peg$f68(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4184,7 +2821,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f101(s1, s3, s4); + s0 = peg$f69(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4196,14 +2833,14 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } return s0; } function peg$parseclosingQuote() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.charAt(peg$currPos); @@ -4211,7 +2848,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4240,7 +2877,7 @@ function peg$parse(input, options) { } function peg$parsevalidClosingCondition() { - var s0, s1, s2, s3, s4; + let s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = []; @@ -4249,7 +2886,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4258,7 +2895,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } } s2 = []; @@ -4267,7 +2904,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -4276,7 +2913,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } } s3 = []; @@ -4285,7 +2922,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4294,7 +2931,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } } s4 = peg$parseoperator(); @@ -4313,7 +2950,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4322,7 +2959,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } } s2 = peg$currPos; @@ -4369,7 +3006,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } } } @@ -4378,14 +3015,14 @@ function peg$parse(input, options) { } function peg$parsewordBoundary() { - var s0, s1; + let s0, s1; s0 = input.charAt(peg$currPos); if (peg$r12.test(s0)) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -4424,30 +3061,36 @@ function peg$parse(input, options) { peg$result = peg$startRuleFunction(); - if (options.peg$library) { - return /** @type {any} */ ({ - peg$result, - peg$currPos, - peg$FAILED, - peg$maxFailExpected, - peg$maxFailPos - }); - } - if (peg$result !== peg$FAILED && peg$currPos === input.length) { - return peg$result; - } else { + const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length); + function peg$throw() { if (peg$result !== peg$FAILED && peg$currPos < input.length) { peg$fail(peg$endExpectation()); } throw peg$buildStructuredError( peg$maxFailExpected, - peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) ); } + if (options.peg$library) { + return /** @type {any} */ ({ + peg$result, + peg$currPos, + peg$FAILED, + peg$maxFailExpected, + peg$maxFailPos, + peg$success, + peg$throw: peg$success ? undefined : peg$throw, + }); + } + if (peg$success) { + return peg$result; + } else { + peg$throw(); + } } const peg$allowedStartRules = [ diff --git a/src/libs/SearchParser/baseRules.peggy b/src/libs/SearchParser/baseRules.peggy index cc6f3e9fbfcb..ad60a1a0959d 100644 --- a/src/libs/SearchParser/baseRules.peggy +++ b/src/libs/SearchParser/baseRules.peggy @@ -157,7 +157,8 @@ groupQuarter = "group-quarter"i &wordBoundary { return "gr operator "operator" - = (":" / "=") { return "eq"; } + = "*:" { return "contains"; } + / (":" / "=") { return "eq"; } / "!=" { return "neq"; } / ">=" { return "gte"; } / ">" { return "gt"; } @@ -167,7 +168,7 @@ operator "operator" filterOperator = o:operator { if (nameOperator) { - expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found + expectingNestedQuote = (o === "eq" || o === "contains"); } isColumnsContext = false; return o; diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index de8fe4c0aebe..86fef05c3b2f 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -1,4 +1,4 @@ -// @generated by Peggy 4.0.3. +// @generated by Peggy 5.0.6. // // https://peggyjs.org/ @@ -12,624 +12,615 @@ return { operator, left, right }; } -function peg$subclass(child, parent) { - function C() { this.constructor = child; } - C.prototype = parent.prototype; - child.prototype = new C(); -} - -function peg$SyntaxError(message, expected, found, location) { - var self = Error.call(this, message); - // istanbul ignore next Check is a necessary evil to support older environments - if (Object.setPrototypeOf) { - Object.setPrototypeOf(self, peg$SyntaxError.prototype); - } - self.expected = expected; - self.found = found; - self.location = location; - self.name = "SyntaxError"; - return self; -} +class peg$SyntaxError extends SyntaxError { + constructor(message, expected, found, location) { + super(message); + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + } + + format(sources) { + let str = "Error: " + this.message; + if (this.location) { + let src = null; + const st = sources.find(s => s.source === this.location.source); + if (st) { + src = st.text.split(/\r\n|\n|\r/g); + } + const s = this.location.start; + const offset_s = (this.location.source && (typeof this.location.source.offset === "function")) + ? this.location.source.offset(s) + : s; + const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; + if (src) { + const e = this.location.end; + const filler = "".padEnd(offset_s.line.toString().length, " "); + const line = src[s.line - 1]; + const last = s.line === e.line ? e.column : line.length + 1; + const hatLen = (last - s.column) || 1; + str += "\n --> " + loc + "\n" + + filler + " |\n" + + offset_s.line + " | " + line + "\n" + + filler + " | " + "".padEnd(s.column - 1, " ") + + "".padEnd(hatLen, "^"); + } else { + str += "\n at " + loc; + } + } + return str; + } -peg$subclass(peg$SyntaxError, Error); + static buildMessage(expected, found) { + function hex(ch) { + return ch.codePointAt(0).toString(16).toUpperCase(); + } -function peg$padEnd(str, targetLength, padString) { - padString = padString || " "; - if (str.length > targetLength) { return str; } - targetLength -= str.length; - padString += padString.repeat(targetLength); - return str + padString.slice(0, targetLength); -} + const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode") + ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu") + : null; + function unicodeEscape(s) { + if (nonPrintable) { + return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}"); + } + return s; + } -peg$SyntaxError.prototype.format = function(sources) { - var str = "Error: " + this.message; - if (this.location) { - var src = null; - var k; - for (k = 0; k < sources.length; k++) { - if (sources[k].source === this.location.source) { - src = sources[k].text.split(/\r\n|\n|\r/g); - break; - } - } - var s = this.location.start; - var offset_s = (this.location.source && (typeof this.location.source.offset === "function")) - ? this.location.source.offset(s) - : s; - var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; - if (src) { - var e = this.location.end; - var filler = peg$padEnd("", offset_s.line.toString().length, ' '); - var line = src[s.line - 1]; - var last = s.line === e.line ? e.column : line.length + 1; - var hatLen = (last - s.column) || 1; - str += "\n --> " + loc + "\n" - + filler + " |\n" - + offset_s.line + " | " + line + "\n" - + filler + " | " + peg$padEnd("", s.column - 1, ' ') - + peg$padEnd("", hatLen, "^"); - } else { - str += "\n at " + loc; - } - } - return str; -}; + function literalEscape(s) { + return unicodeEscape(s + .replace(/\\/g, "\\\\") + .replace(/"/g, "\\\"") + .replace(/\0/g, "\\0") + .replace(/\t/g, "\\t") + .replace(/\n/g, "\\n") + .replace(/\r/g, "\\r") + .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch)) + .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); + } -peg$SyntaxError.buildMessage = function(expected, found) { - var DESCRIBE_EXPECTATION_FNS = { - literal: function(expectation) { - return "\"" + literalEscape(expectation.text) + "\""; - }, + function classEscape(s) { + return unicodeEscape(s + .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, ch => "\\x0" + hex(ch)) + .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); + } - class: function(expectation) { - var escapedParts = expectation.parts.map(function(part) { - return Array.isArray(part) - ? classEscape(part[0]) + "-" + classEscape(part[1]) - : classEscape(part); - }); + const DESCRIBE_EXPECTATION_FNS = { + literal(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, - return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]"; - }, + class(expectation) { + const escapedParts = expectation.parts.map( + part => (Array.isArray(part) + ? classEscape(part[0]) + "-" + classEscape(part[1]) + : classEscape(part)) + ); - any: function() { - return "any character"; - }, + return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : ""); + }, - end: function() { - return "end of input"; - }, + any() { + return "any character"; + }, - other: function(expectation) { - return expectation.description; - } - }; + end() { + return "end of input"; + }, - function hex(ch) { - return ch.charCodeAt(0).toString(16).toUpperCase(); - } + other(expectation) { + return expectation.description; + }, + }; - function literalEscape(s) { - return s - .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(ch) { return "\\x0" + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); - } + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } - function classEscape(s) { - return s - .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(ch) { return "\\x0" + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); - } + function describeExpected(expected) { + const descriptions = expected.map(describeExpectation); + descriptions.sort(); - function describeExpectation(expectation) { - return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); - } + if (descriptions.length > 0) { + let j = 1; + for (let i = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } + } + descriptions.length = j; + } - function describeExpected(expected) { - var descriptions = expected.map(describeExpectation); - var i, j; + switch (descriptions.length) { + case 1: + return descriptions[0]; - descriptions.sort(); + case 2: + return descriptions[0] + " or " + descriptions[1]; - if (descriptions.length > 0) { - for (i = 1, j = 1; i < descriptions.length; i++) { - if (descriptions[i - 1] !== descriptions[i]) { - descriptions[j] = descriptions[i]; - j++; - } + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; } - descriptions.length = j; } - switch (descriptions.length) { - case 1: - return descriptions[0]; - - case 2: - return descriptions[0] + " or " + descriptions[1]; - - default: - return descriptions.slice(0, -1).join(", ") - + ", or " - + descriptions[descriptions.length - 1]; + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; } - } - function describeFound(found) { - return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; } - - return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; -}; +} function peg$parse(input, options) { options = options !== undefined ? options : {}; - var peg$FAILED = {}; - var peg$source = options.grammarSource; - - var peg$startRuleFunctions = { query: peg$parsequery }; - var peg$startRuleFunction = peg$parsequery; - - var peg$c0 = "-"; - var peg$c1 = "report-field"; - var peg$c2 = "reportfield"; - var peg$c3 = ","; - var peg$c4 = "date"; - var peg$c5 = "amount"; - var peg$c6 = "merchant"; - var peg$c7 = "description"; - var peg$c8 = "reportid"; - var peg$c9 = "report-id"; - var peg$c10 = "keyword"; - var peg$c11 = "in"; - var peg$c12 = "currency"; - var peg$c13 = "groupCurrency"; - var peg$c14 = "group-currency"; - var peg$c15 = "tag"; - var peg$c16 = "category"; - var peg$c17 = "to"; - var peg$c18 = "exporter"; - var peg$c19 = "payer"; - var peg$c20 = "taxrate"; - var peg$c21 = "tax-rate"; - var peg$c22 = "cardID"; - var peg$c23 = "card"; - var peg$c24 = "from"; - var peg$c25 = "attendee"; - var peg$c26 = "expenseType"; - var peg$c27 = "expense-type"; - var peg$c28 = "withdrawalType"; - var peg$c29 = "withdrawal-type"; - var peg$c30 = "withdrawalid"; - var peg$c31 = "withdrawal-id"; - var peg$c32 = "billable"; - var peg$c33 = "reimbursable"; - var peg$c34 = "type"; - var peg$c35 = "status"; - var peg$c36 = "sortBy"; - var peg$c37 = "sort-by"; - var peg$c38 = "sortOrder"; - var peg$c39 = "sort-order"; - var peg$c40 = "policyID"; - var peg$c41 = "workspace"; - var peg$c42 = "submitted"; - var peg$c43 = "approved"; - var peg$c44 = "paid"; - var peg$c45 = "exported"; - var peg$c46 = "posted"; - var peg$c47 = "withdrawn"; - var peg$c48 = "groupby"; - var peg$c49 = "group-by"; - var peg$c50 = "limit"; - var peg$c51 = "feed"; - var peg$c52 = "title"; - var peg$c53 = "assignee"; - var peg$c54 = "createdby"; - var peg$c55 = "created-by"; - var peg$c56 = "action"; - var peg$c57 = "total"; - var peg$c58 = "has"; - var peg$c59 = "is"; - var peg$c60 = "purchaseamount"; - var peg$c61 = "purchase-amount"; - var peg$c62 = "purchasecurrency"; - var peg$c63 = "purchase-currency"; - var peg$c64 = "columns"; - var peg$c65 = "view"; - var peg$c66 = "per-diem"; - var peg$c67 = "drafts"; - var peg$c68 = "draft"; - var peg$c69 = "original-amount"; - var peg$c70 = "tax"; - var peg$c71 = "policy-name"; - var peg$c72 = "bank-account"; - var peg$c73 = "long-report-id"; - var peg$c74 = "exported-to"; - var peg$c75 = "exportedto"; - var peg$c76 = "exchange-rate"; - var peg$c77 = "reimbursable-total"; - var peg$c78 = "non-reimbursable-total"; - var peg$c79 = "group-from"; - var peg$c80 = "group-expenses"; - var peg$c81 = "group-total"; - var peg$c82 = "group-card"; - var peg$c83 = "group-feed"; - var peg$c84 = "group-bank-account"; - var peg$c85 = "group-withdrawn"; - var peg$c86 = "group-withdrawal-id"; - var peg$c87 = "group-category"; - var peg$c88 = "group-tag"; - var peg$c89 = "group-merchant"; - var peg$c90 = "group-month"; - var peg$c91 = "group-week"; - var peg$c92 = "group-year"; - var peg$c93 = "group-quarter"; - var peg$c94 = "!="; - var peg$c95 = ">="; - var peg$c96 = ">"; - var peg$c97 = "<="; - var peg$c98 = "<"; - var peg$c99 = "\u201C"; - var peg$c100 = "\u201D"; - var peg$c101 = "\""; - - var peg$r0 = /^[^ \t\r\n\xA0]/; - var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; - var peg$r2 = /^[:=]/; - var peg$r3 = /^[^ ,\t\n\r\xA0]/; - var peg$r4 = /^[ \t\r\n\xA0]/; - var peg$r5 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; - var peg$r6 = /^["\u201C-\u201D]/; - var peg$r7 = /^[^"\u201D\u201C\r\n]/; - var peg$r8 = /^[ \t\n\r\xA0a-zA-Z0-9]/; - var peg$r9 = /^[a-zA-Z0-9]/; - var peg$r10 = /^[ \t\n\r\xA0]/; - var peg$r11 = /^[ \t\n\r\xA0a-zA-Z]/; - var peg$r12 = /^[,]/; - var peg$r13 = /^[ \t\n\r\xA0,]/; - - var peg$e0 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], true, false); - var peg$e1 = peg$literalExpectation("-", false); - var peg$e2 = peg$literalExpectation("report-field", true); - var peg$e3 = peg$literalExpectation("reportfield", true); - var peg$e4 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false); - var peg$e5 = peg$anyExpectation(); - var peg$e6 = peg$otherExpectation("key"); - var peg$e7 = peg$otherExpectation("default key"); - var peg$e8 = peg$literalExpectation(",", false); - var peg$e9 = peg$literalExpectation("date", true); - var peg$e10 = peg$literalExpectation("amount", true); - var peg$e11 = peg$literalExpectation("merchant", true); - var peg$e12 = peg$literalExpectation("description", true); - var peg$e13 = peg$literalExpectation("reportid", true); - var peg$e14 = peg$literalExpectation("report-id", true); - var peg$e15 = peg$literalExpectation("keyword", true); - var peg$e16 = peg$literalExpectation("in", true); - var peg$e17 = peg$literalExpectation("currency", true); - var peg$e18 = peg$literalExpectation("groupCurrency", false); - var peg$e19 = peg$literalExpectation("group-currency", true); - var peg$e20 = peg$literalExpectation("tag", true); - var peg$e21 = peg$literalExpectation("category", true); - var peg$e22 = peg$literalExpectation("to", true); - var peg$e23 = peg$literalExpectation("exporter", true); - var peg$e24 = peg$literalExpectation("payer", true); - var peg$e25 = peg$literalExpectation("taxRate", true); - var peg$e26 = peg$literalExpectation("tax-rate", true); - var peg$e27 = peg$literalExpectation("cardID", false); - var peg$e28 = peg$literalExpectation("card", true); - var peg$e29 = peg$literalExpectation("from", true); - var peg$e30 = peg$literalExpectation("attendee", true); - var peg$e31 = peg$literalExpectation("expenseType", false); - var peg$e32 = peg$literalExpectation("expense-type", true); - var peg$e33 = peg$literalExpectation("withdrawalType", false); - var peg$e34 = peg$literalExpectation("withdrawal-type", true); - var peg$e35 = peg$literalExpectation("withdrawalID", true); - var peg$e36 = peg$literalExpectation("withdrawal-id", true); - var peg$e37 = peg$literalExpectation("billable", true); - var peg$e38 = peg$literalExpectation("reimbursable", true); - var peg$e39 = peg$literalExpectation("type", true); - var peg$e40 = peg$literalExpectation("status", true); - var peg$e41 = peg$literalExpectation("sortBy", false); - var peg$e42 = peg$literalExpectation("sort-by", true); - var peg$e43 = peg$literalExpectation("sortOrder", false); - var peg$e44 = peg$literalExpectation("sort-order", true); - var peg$e45 = peg$literalExpectation("policyID", false); - var peg$e46 = peg$literalExpectation("workspace", true); - var peg$e47 = peg$literalExpectation("submitted", true); - var peg$e48 = peg$literalExpectation("approved", true); - var peg$e49 = peg$literalExpectation("paid", true); - var peg$e50 = peg$literalExpectation("exported", true); - var peg$e51 = peg$literalExpectation("posted", true); - var peg$e52 = peg$literalExpectation("withdrawn", true); - var peg$e53 = peg$literalExpectation("groupBy", true); - var peg$e54 = peg$literalExpectation("group-by", true); - var peg$e55 = peg$literalExpectation("limit", true); - var peg$e56 = peg$literalExpectation("feed", true); - var peg$e57 = peg$literalExpectation("title", true); - var peg$e58 = peg$literalExpectation("assignee", true); - var peg$e59 = peg$literalExpectation("createdBy", true); - var peg$e60 = peg$literalExpectation("created-by", true); - var peg$e61 = peg$literalExpectation("action", true); - var peg$e62 = peg$literalExpectation("total", true); - var peg$e63 = peg$literalExpectation("has", true); - var peg$e64 = peg$literalExpectation("is", true); - var peg$e65 = peg$literalExpectation("purchaseAmount", true); - var peg$e66 = peg$literalExpectation("purchase-amount", true); - var peg$e67 = peg$literalExpectation("purchaseCurrency", true); - var peg$e68 = peg$literalExpectation("purchase-currency", true); - var peg$e69 = peg$literalExpectation("columns", true); - var peg$e70 = peg$literalExpectation("view", true); - var peg$e71 = peg$literalExpectation("per-diem", true); - var peg$e72 = peg$literalExpectation("drafts", true); - var peg$e73 = peg$literalExpectation("draft", true); - var peg$e74 = peg$literalExpectation("original-amount", true); - var peg$e75 = peg$literalExpectation("tax", true); - var peg$e76 = peg$literalExpectation("policy-name", true); - var peg$e77 = peg$literalExpectation("bank-account", true); - var peg$e78 = peg$literalExpectation("long-report-id", true); - var peg$e79 = peg$literalExpectation("exported-to", true); - var peg$e80 = peg$classExpectation([":", "="], false, false); - var peg$e81 = peg$literalExpectation("exportedTo", true); - var peg$e82 = peg$literalExpectation("exchange-rate", true); - var peg$e83 = peg$literalExpectation("reimbursable-total", true); - var peg$e84 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e85 = peg$literalExpectation("group-from", true); - var peg$e86 = peg$literalExpectation("group-expenses", true); - var peg$e87 = peg$literalExpectation("group-total", true); - var peg$e88 = peg$literalExpectation("group-card", true); - var peg$e89 = peg$literalExpectation("group-feed", true); - var peg$e90 = peg$literalExpectation("group-bank-account", true); - var peg$e91 = peg$literalExpectation("group-withdrawn", true); - var peg$e92 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e93 = peg$literalExpectation("group-category", true); - var peg$e94 = peg$literalExpectation("group-tag", true); - var peg$e95 = peg$literalExpectation("group-merchant", true); - var peg$e96 = peg$literalExpectation("group-month", true); - var peg$e97 = peg$literalExpectation("group-week", true); - var peg$e98 = peg$literalExpectation("group-year", true); - var peg$e99 = peg$literalExpectation("group-quarter", true); - var peg$e100 = peg$otherExpectation("operator"); - var peg$e101 = peg$literalExpectation("!=", false); - var peg$e102 = peg$literalExpectation(">=", false); - var peg$e103 = peg$literalExpectation(">", false); - var peg$e104 = peg$literalExpectation("<=", false); - var peg$e105 = peg$literalExpectation("<", false); - var peg$e106 = peg$otherExpectation("word"); - var peg$e107 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e108 = peg$otherExpectation("whitespace"); - var peg$e109 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e110 = peg$otherExpectation("quote"); - var peg$e111 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e112 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e113 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e114 = peg$literalExpectation("\u201C", false); - var peg$e115 = peg$literalExpectation("\u201D", false); - var peg$e116 = peg$literalExpectation("\"", false); - var peg$e117 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e118 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e119 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e120 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e121 = peg$classExpectation([","], false, false); - var peg$e122 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); - - var peg$f0 = function(filters) { return applyDefaults(filters); }; - var peg$f1 = function(head, tail) { - const allFilters = [head, ...tail.map(([_, filter]) => filter)] - .filter(Boolean) - .filter((filter) => filter.right); - rawFilterList = allFilters.map(createRawFilter).filter(Boolean); - - const filtersWithoutDefaults = allFilters.filter((filter) => !filter.isDefault); - - if (!filtersWithoutDefaults.length) { - return null; - } - - const keywords = filtersWithoutDefaults.filter( - (filter) => - filter.left === "keyword" || filter.right?.left === "keyword" - ); - const nonKeywords = filtersWithoutDefaults.filter( - (filter) => - filter.left !== "keyword" && filter.right?.left !== "keyword" - ); - - const keywordFilter = buildFilter( - "eq", - "keyword", - keywords - .map((filter) => filter.right.replaceAll(/^(['"])(.*)\1$/g, "$2")) - .flat() - ); - if (keywordFilter.right.length > 0) { - nonKeywords.push(keywordFilter); - } - return nonKeywords.reduce((result, filter) => - buildFilter("and", result, filter) - ); - }; - var peg$f2 = function(key, op, value) { - updateDefaultValues(key, value); - return {...buildFilter(op, key, value), isDefault: true}; - }; - var peg$f3 = function(value) { - //handle no-breaking space - let word; - if (Array.isArray(value)) { - word = value.join(""); - } else { - word = value; - } - return buildFilter("eq", "keyword", word); - }; - var peg$f4 = function(neg, field, op, values) { - expectingNestedQuote = false; nameOperator = false; + const peg$FAILED = {}; + const peg$source = options.grammarSource; - const key = field; - let operator = op; + const peg$startRuleFunctions = { + query: peg$parsequery, + }; + let peg$startRuleFunction = peg$parsequery; + + const peg$c0 = "-"; + const peg$c1 = "report-field"; + const peg$c2 = "reportfield"; + const peg$c3 = ","; + const peg$c4 = "date"; + const peg$c5 = "amount"; + const peg$c6 = "merchant"; + const peg$c7 = "description"; + const peg$c8 = "reportid"; + const peg$c9 = "report-id"; + const peg$c10 = "keyword"; + const peg$c11 = "in"; + const peg$c12 = "currency"; + const peg$c13 = "groupCurrency"; + const peg$c14 = "group-currency"; + const peg$c15 = "tag"; + const peg$c16 = "category"; + const peg$c17 = "to"; + const peg$c18 = "exporter"; + const peg$c19 = "payer"; + const peg$c20 = "taxrate"; + const peg$c21 = "tax-rate"; + const peg$c22 = "cardID"; + const peg$c23 = "card"; + const peg$c24 = "from"; + const peg$c25 = "attendee"; + const peg$c26 = "expenseType"; + const peg$c27 = "expense-type"; + const peg$c28 = "withdrawalType"; + const peg$c29 = "withdrawal-type"; + const peg$c30 = "withdrawalid"; + const peg$c31 = "withdrawal-id"; + const peg$c32 = "billable"; + const peg$c33 = "reimbursable"; + const peg$c34 = "type"; + const peg$c35 = "status"; + const peg$c36 = "sortBy"; + const peg$c37 = "sort-by"; + const peg$c38 = "sortOrder"; + const peg$c39 = "sort-order"; + const peg$c40 = "policyID"; + const peg$c41 = "workspace"; + const peg$c42 = "submitted"; + const peg$c43 = "approved"; + const peg$c44 = "paid"; + const peg$c45 = "exported"; + const peg$c46 = "posted"; + const peg$c47 = "withdrawn"; + const peg$c48 = "groupby"; + const peg$c49 = "group-by"; + const peg$c50 = "limit"; + const peg$c51 = "feed"; + const peg$c52 = "title"; + const peg$c53 = "assignee"; + const peg$c54 = "createdby"; + const peg$c55 = "created-by"; + const peg$c56 = "action"; + const peg$c57 = "total"; + const peg$c58 = "has"; + const peg$c59 = "is"; + const peg$c60 = "purchaseamount"; + const peg$c61 = "purchase-amount"; + const peg$c62 = "purchasecurrency"; + const peg$c63 = "purchase-currency"; + const peg$c64 = "columns"; + const peg$c65 = "view"; + const peg$c66 = "per-diem"; + const peg$c67 = "drafts"; + const peg$c68 = "draft"; + const peg$c69 = "original-amount"; + const peg$c70 = "tax"; + const peg$c71 = "policy-name"; + const peg$c72 = "bank-account"; + const peg$c73 = "long-report-id"; + const peg$c74 = "exported-to"; + const peg$c75 = "exportedto"; + const peg$c76 = "exchange-rate"; + const peg$c77 = "reimbursable-total"; + const peg$c78 = "non-reimbursable-total"; + const peg$c79 = "group-from"; + const peg$c80 = "group-expenses"; + const peg$c81 = "group-total"; + const peg$c82 = "group-card"; + const peg$c83 = "group-feed"; + const peg$c84 = "group-bank-account"; + const peg$c85 = "group-withdrawn"; + const peg$c86 = "group-withdrawal-id"; + const peg$c87 = "group-category"; + const peg$c88 = "group-tag"; + const peg$c89 = "group-merchant"; + const peg$c90 = "group-month"; + const peg$c91 = "group-week"; + const peg$c92 = "group-year"; + const peg$c93 = "group-quarter"; + const peg$c94 = "*:"; + const peg$c95 = "!="; + const peg$c96 = ">="; + const peg$c97 = ">"; + const peg$c98 = "<="; + const peg$c99 = "<"; + const peg$c100 = "\u201C"; + const peg$c101 = "\u201D"; + const peg$c102 = "\""; + + const peg$r0 = /^[^ \t\r\n\xA0]/; + const peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; + const peg$r2 = /^[:=]/; + const peg$r3 = /^[^ ,\t\n\r\xA0]/; + const peg$r4 = /^[ \t\r\n\xA0]/; + const peg$r5 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; + const peg$r6 = /^["\u201C-\u201D]/; + const peg$r7 = /^[^"\u201D\u201C\r\n]/; + const peg$r8 = /^[ \t\n\r\xA0a-zA-Z0-9]/; + const peg$r9 = /^[a-zA-Z0-9]/; + const peg$r10 = /^[ \t\n\r\xA0]/; + const peg$r11 = /^[ \t\n\r\xA0a-zA-Z]/; + const peg$r12 = /^[,]/; + const peg$r13 = /^[ \t\n\r\xA0,]/; + + const peg$e0 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], true, false, false); + const peg$e1 = peg$literalExpectation("-", false); + const peg$e2 = peg$literalExpectation("report-field", true); + const peg$e3 = peg$literalExpectation("reportfield", true); + const peg$e4 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false, false); + const peg$e5 = peg$anyExpectation(); + const peg$e6 = peg$otherExpectation("key"); + const peg$e7 = peg$otherExpectation("default key"); + const peg$e8 = peg$literalExpectation(",", false); + const peg$e9 = peg$literalExpectation("date", true); + const peg$e10 = peg$literalExpectation("amount", true); + const peg$e11 = peg$literalExpectation("merchant", true); + const peg$e12 = peg$literalExpectation("description", true); + const peg$e13 = peg$literalExpectation("reportid", true); + const peg$e14 = peg$literalExpectation("report-id", true); + const peg$e15 = peg$literalExpectation("keyword", true); + const peg$e16 = peg$literalExpectation("in", true); + const peg$e17 = peg$literalExpectation("currency", true); + const peg$e18 = peg$literalExpectation("groupCurrency", false); + const peg$e19 = peg$literalExpectation("group-currency", true); + const peg$e20 = peg$literalExpectation("tag", true); + const peg$e21 = peg$literalExpectation("category", true); + const peg$e22 = peg$literalExpectation("to", true); + const peg$e23 = peg$literalExpectation("exporter", true); + const peg$e24 = peg$literalExpectation("payer", true); + const peg$e25 = peg$literalExpectation("taxRate", true); + const peg$e26 = peg$literalExpectation("tax-rate", true); + const peg$e27 = peg$literalExpectation("cardID", false); + const peg$e28 = peg$literalExpectation("card", true); + const peg$e29 = peg$literalExpectation("from", true); + const peg$e30 = peg$literalExpectation("attendee", true); + const peg$e31 = peg$literalExpectation("expenseType", false); + const peg$e32 = peg$literalExpectation("expense-type", true); + const peg$e33 = peg$literalExpectation("withdrawalType", false); + const peg$e34 = peg$literalExpectation("withdrawal-type", true); + const peg$e35 = peg$literalExpectation("withdrawalID", true); + const peg$e36 = peg$literalExpectation("withdrawal-id", true); + const peg$e37 = peg$literalExpectation("billable", true); + const peg$e38 = peg$literalExpectation("reimbursable", true); + const peg$e39 = peg$literalExpectation("type", true); + const peg$e40 = peg$literalExpectation("status", true); + const peg$e41 = peg$literalExpectation("sortBy", false); + const peg$e42 = peg$literalExpectation("sort-by", true); + const peg$e43 = peg$literalExpectation("sortOrder", false); + const peg$e44 = peg$literalExpectation("sort-order", true); + const peg$e45 = peg$literalExpectation("policyID", false); + const peg$e46 = peg$literalExpectation("workspace", true); + const peg$e47 = peg$literalExpectation("submitted", true); + const peg$e48 = peg$literalExpectation("approved", true); + const peg$e49 = peg$literalExpectation("paid", true); + const peg$e50 = peg$literalExpectation("exported", true); + const peg$e51 = peg$literalExpectation("posted", true); + const peg$e52 = peg$literalExpectation("withdrawn", true); + const peg$e53 = peg$literalExpectation("groupBy", true); + const peg$e54 = peg$literalExpectation("group-by", true); + const peg$e55 = peg$literalExpectation("limit", true); + const peg$e56 = peg$literalExpectation("feed", true); + const peg$e57 = peg$literalExpectation("title", true); + const peg$e58 = peg$literalExpectation("assignee", true); + const peg$e59 = peg$literalExpectation("createdBy", true); + const peg$e60 = peg$literalExpectation("created-by", true); + const peg$e61 = peg$literalExpectation("action", true); + const peg$e62 = peg$literalExpectation("total", true); + const peg$e63 = peg$literalExpectation("has", true); + const peg$e64 = peg$literalExpectation("is", true); + const peg$e65 = peg$literalExpectation("purchaseAmount", true); + const peg$e66 = peg$literalExpectation("purchase-amount", true); + const peg$e67 = peg$literalExpectation("purchaseCurrency", true); + const peg$e68 = peg$literalExpectation("purchase-currency", true); + const peg$e69 = peg$literalExpectation("columns", true); + const peg$e70 = peg$literalExpectation("view", true); + const peg$e71 = peg$literalExpectation("per-diem", true); + const peg$e72 = peg$literalExpectation("drafts", true); + const peg$e73 = peg$literalExpectation("draft", true); + const peg$e74 = peg$literalExpectation("original-amount", true); + const peg$e75 = peg$literalExpectation("tax", true); + const peg$e76 = peg$literalExpectation("policy-name", true); + const peg$e77 = peg$literalExpectation("bank-account", true); + const peg$e78 = peg$literalExpectation("long-report-id", true); + const peg$e79 = peg$literalExpectation("exported-to", true); + const peg$e80 = peg$classExpectation([":", "="], false, false, false); + const peg$e81 = peg$literalExpectation("exportedTo", true); + const peg$e82 = peg$literalExpectation("exchange-rate", true); + const peg$e83 = peg$literalExpectation("reimbursable-total", true); + const peg$e84 = peg$literalExpectation("non-reimbursable-total", true); + const peg$e85 = peg$literalExpectation("group-from", true); + const peg$e86 = peg$literalExpectation("group-expenses", true); + const peg$e87 = peg$literalExpectation("group-total", true); + const peg$e88 = peg$literalExpectation("group-card", true); + const peg$e89 = peg$literalExpectation("group-feed", true); + const peg$e90 = peg$literalExpectation("group-bank-account", true); + const peg$e91 = peg$literalExpectation("group-withdrawn", true); + const peg$e92 = peg$literalExpectation("group-withdrawal-id", true); + const peg$e93 = peg$literalExpectation("group-category", true); + const peg$e94 = peg$literalExpectation("group-tag", true); + const peg$e95 = peg$literalExpectation("group-merchant", true); + const peg$e96 = peg$literalExpectation("group-month", true); + const peg$e97 = peg$literalExpectation("group-week", true); + const peg$e98 = peg$literalExpectation("group-year", true); + const peg$e99 = peg$literalExpectation("group-quarter", true); + const peg$e100 = peg$otherExpectation("operator"); + const peg$e101 = peg$literalExpectation("*:", false); + const peg$e102 = peg$literalExpectation("!=", false); + const peg$e103 = peg$literalExpectation(">=", false); + const peg$e104 = peg$literalExpectation(">", false); + const peg$e105 = peg$literalExpectation("<=", false); + const peg$e106 = peg$literalExpectation("<", false); + const peg$e107 = peg$otherExpectation("word"); + const peg$e108 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false, false); + const peg$e109 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false, false); + const peg$e110 = peg$otherExpectation("quote"); + const peg$e111 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false, false); + const peg$e112 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false, false); + const peg$e113 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false, false); + const peg$e114 = peg$literalExpectation("\u201C", false); + const peg$e115 = peg$literalExpectation("\u201D", false); + const peg$e116 = peg$literalExpectation("\"", false); + const peg$e117 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); + const peg$e118 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); + const peg$e119 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false, false); + const peg$e120 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false, false); + const peg$e121 = peg$classExpectation([","], false, false, false); + const peg$e122 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false, false); + + function peg$f0(filters) { return applyDefaults(filters); } + function peg$f1(head, tail) { + const allFilters = [head, ...tail.map(([_, filter]) => filter)] + .filter(Boolean) + .filter((filter) => filter.right); + rawFilterList = allFilters.map(createRawFilter).filter(Boolean); + + const filtersWithoutDefaults = allFilters.filter((filter) => !filter.isDefault); + + if (!filtersWithoutDefaults.length) { + return null; + } - // Apply negation only when "-" is present and the key can be negated - if (neg && !nonNegatableKeys.has(key)) { - if (operator === "eq") { - operator = "neq"; - } + const keywords = filtersWithoutDefaults.filter( + (filter) => + filter.left === "keyword" || filter.right?.left === "keyword" + ); + const nonKeywords = filtersWithoutDefaults.filter( + (filter) => + filter.left !== "keyword" && filter.right?.left !== "keyword" + ); + + const keywordFilter = buildFilter( + "eq", + "keyword", + keywords + .map((filter) => filter.right.replaceAll(/^(['"])(.*)\1$/g, "$2")) + .flat() + ); + if (keywordFilter.right.length > 0) { + nonKeywords.push(keywordFilter); + } + return nonKeywords.reduce((result, filter) => + buildFilter("and", result, filter) + ); + } + function peg$f2(key, op, value) { + updateDefaultValues(key, value); + return {...buildFilter(op, key, value), isDefault: true}; + } + function peg$f3(value) { + //handle no-breaking space + let word; + if (Array.isArray(value)) { + word = value.join(""); + } else { + word = value; + } + return buildFilter("eq", "keyword", word); + } + function peg$f4(neg, field, op, values) { + expectingNestedQuote = false; nameOperator = false; + + const key = field; + let operator = op; + + // Apply negation only when "-" is present and the key can be negated + if (neg && !nonNegatableKeys.has(key)) { + if (operator === "eq") { + operator = "neq"; } + } - return buildFilter(operator, key, values); - }; - var peg$f5 = function(rest) { - const suffix = rest.replaceAll(/^-+/g, ""); - return "reportField-" + (suffix ? suffix : ""); - }; - var peg$f6 = function(k) { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); - return k; - }; - var peg$f7 = function(parts, empty) { - const value = parts.flat().filter(Boolean).map((word) => { - if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { - return word.slice(1, -1); - } - return word; - }); - if (value.length > 1) { - return value.filter((word) => word.length > 0); + return buildFilter(operator, key, values); + } + function peg$f5(rest) { + const suffix = rest.replaceAll(/^-+/g, ""); + return "reportField-" + (suffix ? suffix : ""); + } + function peg$f6(k) { + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + return k; + } + function peg$f7(parts, empty) { + const value = parts.flat().filter(Boolean).map((word) => { + if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { + return word.slice(1, -1); } - return value[0]; - }; - var peg$f8 = function() { return "date"; }; - var peg$f9 = function() { return "amount"; }; - var peg$f10 = function() { return "merchant"; }; - var peg$f11 = function() { return "description"; }; - var peg$f12 = function() { return "reportID"; }; - var peg$f13 = function() { return "keyword"; }; - var peg$f14 = function() { return "in"; }; - var peg$f15 = function() { return "currency"; }; - var peg$f16 = function() { return "groupCurrency"; }; - var peg$f17 = function() { return "tag"; }; - var peg$f18 = function() { return "category"; }; - var peg$f19 = function() { return "to"; }; - var peg$f20 = function() { return "exporter"; }; - var peg$f21 = function() { return "payer"; }; - var peg$f22 = function() { return "taxRate"; }; - var peg$f23 = function() { return "cardID"; }; - var peg$f24 = function() { return "from"; }; - var peg$f25 = function() {return "attendee"}; - var peg$f26 = function() { return "expenseType"; }; - var peg$f27 = function() { return "withdrawalType"; }; - var peg$f28 = function() { return "withdrawalID"; }; - var peg$f29 = function() { return "billable"; }; - var peg$f30 = function() { return "reimbursable"; }; - var peg$f31 = function() { return "type"; }; - var peg$f32 = function() { return "status"; }; - var peg$f33 = function() { return "sortBy"; }; - var peg$f34 = function() { return "sortOrder"; }; - var peg$f35 = function() { return "policyID"; }; - var peg$f36 = function() { return "submitted"; }; - var peg$f37 = function() { return "approved"; }; - var peg$f38 = function() { return "paid"; }; - var peg$f39 = function() { return "exported"; }; - var peg$f40 = function() { return "posted"; }; - var peg$f41 = function() { return "withdrawn"; }; - var peg$f42 = function() { return "groupBy"; }; - var peg$f43 = function() { return "limit"; }; - var peg$f44 = function() { return "feed"; }; - var peg$f45 = function() { return "title"; }; - var peg$f46 = function() { return "assignee"; }; - var peg$f47 = function() { return "createdBy"; }; - var peg$f48 = function() { return "action"; }; - var peg$f49 = function() {return "total"; }; - var peg$f50 = function() {return "has"; }; - var peg$f51 = function() {return "is"; }; - var peg$f52 = function() {return "purchaseAmount"}; - var peg$f53 = function() {return "purchaseCurrency"}; - var peg$f54 = function() { - isColumnsContext = true; - return "columns"; -}; - var peg$f55 = function() {return "view"}; - var peg$f56 = function() { return isColumnsContext; }; - var peg$f57 = function() { return "perDiem"; }; - var peg$f58 = function() { return "drafts"; }; - var peg$f59 = function() { return "originalamount"; }; - var peg$f60 = function() { return "taxAmount"; }; - var peg$f61 = function() { return "taxrate"; }; - var peg$f62 = function() { return "policyname"; }; - var peg$f63 = function() { return "withdrawalID"; }; - var peg$f64 = function() { return "bankAccount"; }; - var peg$f65 = function() { return "reportID"; }; - var peg$f66 = function() { return "base62ReportID"; }; - var peg$f67 = function() { return "exportedto"; }; - var peg$f68 = function() { return "exportedTo"; }; - var peg$f69 = function() { return "exportedTo"; }; - var peg$f70 = function() { return "exchangeRate"; }; - var peg$f71 = function() { return "reimbursableTotal"; }; - var peg$f72 = function() { return "nonReimbursableTotal"; }; - var peg$f73 = function() { return "groupFrom"; }; - var peg$f74 = function() { return "groupExpenses"; }; - var peg$f75 = function() { return "groupTotal"; }; - var peg$f76 = function() { return "groupCard"; }; - var peg$f77 = function() { return "groupFeed"; }; - var peg$f78 = function() { return "groupBankAccount"; }; - var peg$f79 = function() { return "groupWithdrawn"; }; - var peg$f80 = function() { return "groupWithdrawalID"; }; - var peg$f81 = function() { return "groupCategory"; }; - var peg$f82 = function() { return "groupTag"; }; - var peg$f83 = function() { return "groupMerchant"; }; - var peg$f84 = function() { return "groupmonth"; }; - var peg$f85 = function() { return "groupweek"; }; - var peg$f86 = function() { return "groupyear"; }; - var peg$f87 = function() { return "groupquarter"; }; - var peg$f88 = function() { return "eq"; }; - var peg$f89 = function() { return "neq"; }; - var peg$f90 = function() { return "gte"; }; - var peg$f91 = function() { return "gt"; }; - var peg$f92 = function() { return "lte"; }; - var peg$f93 = function() { return "lt"; }; - var peg$f94 = function(o) { - if (nameOperator) { - expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found - } - isColumnsContext = false; - return o; - }; - var peg$f95 = function(chars) { return chars.join("").trim(); }; - var peg$f96 = function() { - isColumnsContext = false; - return "and"; -}; - var peg$f97 = function() { return expectingNestedQuote; }; - var peg$f98 = function(start, inner, end) { //handle no-breaking space - return [...start, '"', ...inner, '"', ...end].join(""); - }; - var peg$f99 = function(start) {return "“"}; - var peg$f100 = function(start) {return "”"}; - var peg$f101 = function(start) {return "\""}; - var peg$f102 = function(start, inner, end) { + return word; + }); + if (value.length > 1) { + return value.filter((word) => word.length > 0); + } + return value[0]; + } + function peg$f8() { return "date"; } + function peg$f9() { return "amount"; } + function peg$f10() { return "merchant"; } + function peg$f11() { return "description"; } + function peg$f12() { return "reportID"; } + function peg$f13() { return "keyword"; } + function peg$f14() { return "in"; } + function peg$f15() { return "currency"; } + function peg$f16() { return "groupCurrency"; } + function peg$f17() { return "tag"; } + function peg$f18() { return "category"; } + function peg$f19() { return "to"; } + function peg$f20() { return "exporter"; } + function peg$f21() { return "payer"; } + function peg$f22() { return "taxRate"; } + function peg$f23() { return "cardID"; } + function peg$f24() { return "from"; } + function peg$f25() {return "attendee" } + function peg$f26() { return "expenseType"; } + function peg$f27() { return "withdrawalType"; } + function peg$f28() { return "withdrawalID"; } + function peg$f29() { return "billable"; } + function peg$f30() { return "reimbursable"; } + function peg$f31() { return "type"; } + function peg$f32() { return "status"; } + function peg$f33() { return "sortBy"; } + function peg$f34() { return "sortOrder"; } + function peg$f35() { return "policyID"; } + function peg$f36() { return "submitted"; } + function peg$f37() { return "approved"; } + function peg$f38() { return "paid"; } + function peg$f39() { return "exported"; } + function peg$f40() { return "posted"; } + function peg$f41() { return "withdrawn"; } + function peg$f42() { return "groupBy"; } + function peg$f43() { return "limit"; } + function peg$f44() { return "feed"; } + function peg$f45() { return "title"; } + function peg$f46() { return "assignee"; } + function peg$f47() { return "createdBy"; } + function peg$f48() { return "action"; } + function peg$f49() {return "total"; } + function peg$f50() {return "has"; } + function peg$f51() {return "is"; } + function peg$f52() {return "purchaseAmount" } + function peg$f53() {return "purchaseCurrency" } + function peg$f54() { + isColumnsContext = true; + return "columns"; + } + function peg$f55() {return "view" } + function peg$f56() { return isColumnsContext; } + function peg$f57() { return "perDiem"; } + function peg$f58() { return "drafts"; } + function peg$f59() { return "originalamount"; } + function peg$f60() { return "taxAmount"; } + function peg$f61() { return "taxrate"; } + function peg$f62() { return "policyname"; } + function peg$f63() { return "withdrawalID"; } + function peg$f64() { return "bankAccount"; } + function peg$f65() { return "reportID"; } + function peg$f66() { return "base62ReportID"; } + function peg$f67() { return "exportedto"; } + function peg$f68() { return "exportedTo"; } + function peg$f69() { return "exportedTo"; } + function peg$f70() { return "exchangeRate"; } + function peg$f71() { return "reimbursableTotal"; } + function peg$f72() { return "nonReimbursableTotal"; } + function peg$f73() { return "groupFrom"; } + function peg$f74() { return "groupExpenses"; } + function peg$f75() { return "groupTotal"; } + function peg$f76() { return "groupCard"; } + function peg$f77() { return "groupFeed"; } + function peg$f78() { return "groupBankAccount"; } + function peg$f79() { return "groupWithdrawn"; } + function peg$f80() { return "groupWithdrawalID"; } + function peg$f81() { return "groupCategory"; } + function peg$f82() { return "groupTag"; } + function peg$f83() { return "groupMerchant"; } + function peg$f84() { return "groupmonth"; } + function peg$f85() { return "groupweek"; } + function peg$f86() { return "groupyear"; } + function peg$f87() { return "groupquarter"; } + function peg$f88() { return "contains"; } + function peg$f89() { return "eq"; } + function peg$f90() { return "neq"; } + function peg$f91() { return "gte"; } + function peg$f92() { return "gt"; } + function peg$f93() { return "lte"; } + function peg$f94() { return "lt"; } + function peg$f95(o) { + if (nameOperator) { + expectingNestedQuote = (o === "eq" || o === "contains"); + } + isColumnsContext = false; + return o; + } + function peg$f96(chars) { return chars.join("").trim(); } + function peg$f97() { + isColumnsContext = false; + return "and"; + } + function peg$f98() { return expectingNestedQuote; } + function peg$f99(start, inner, end) { //handle no-breaking space + return [...start, '"', ...inner, '"', ...end].join(""); + } + function peg$f100(start) {return "“" } + function peg$f101(start) {return "”" } + function peg$f102(start) {return "\"" } + function peg$f103(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); -}; - var peg$currPos = options.peg$currPos | 0; - var peg$savedPos = peg$currPos; - var peg$posDetailsCache = [{ line: 1, column: 1 }]; - var peg$maxFailPos = peg$currPos; - var peg$maxFailExpected = options.peg$maxFailExpected || []; - var peg$silentFails = options.peg$silentFails | 0; + } + let peg$currPos = options.peg$currPos | 0; + let peg$savedPos = peg$currPos; + const peg$posDetailsCache = [{ line: 1, column: 1 }]; + let peg$maxFailPos = peg$currPos; + let peg$maxFailExpected = options.peg$maxFailExpected || []; + let peg$silentFails = options.peg$silentFails | 0; - var peg$result; + let peg$result; if (options.startRule) { if (!(options.startRule in peg$startRuleFunctions)) { @@ -651,7 +642,7 @@ function peg$parse(input, options) { return { source: peg$source, start: peg$savedPos, - end: peg$currPos + end: peg$currPos, }; } @@ -679,12 +670,20 @@ function peg$parse(input, options) { throw peg$buildSimpleError(message, location); } + function peg$getUnicode(pos = peg$currPos) { + const cp = input.codePointAt(pos); + if (cp === undefined) { + return ""; + } + return String.fromCodePoint(cp); + } + function peg$literalExpectation(text, ignoreCase) { - return { type: "literal", text: text, ignoreCase: ignoreCase }; + return { type: "literal", text, ignoreCase }; } - function peg$classExpectation(parts, inverted, ignoreCase) { - return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + function peg$classExpectation(parts, inverted, ignoreCase, unicode) { + return { type: "class", parts, inverted, ignoreCase, unicode }; } function peg$anyExpectation() { @@ -696,12 +695,12 @@ function peg$parse(input, options) { } function peg$otherExpectation(description) { - return { type: "other", description: description }; + return { type: "other", description }; } function peg$computePosDetails(pos) { - var details = peg$posDetailsCache[pos]; - var p; + let details = peg$posDetailsCache[pos]; + let p; if (details) { return details; @@ -716,7 +715,7 @@ function peg$parse(input, options) { details = peg$posDetailsCache[p]; details = { line: details.line, - column: details.column + column: details.column, }; while (p < pos) { @@ -737,21 +736,21 @@ function peg$parse(input, options) { } function peg$computeLocation(startPos, endPos, offset) { - var startPosDetails = peg$computePosDetails(startPos); - var endPosDetails = peg$computePosDetails(endPos); + const startPosDetails = peg$computePosDetails(startPos); + const endPosDetails = peg$computePosDetails(endPos); - var res = { + const res = { source: peg$source, start: { offset: startPos, line: startPosDetails.line, - column: startPosDetails.column + column: startPosDetails.column, }, end: { offset: endPos, line: endPosDetails.line, - column: endPosDetails.column - } + column: endPosDetails.column, + }, }; if (offset && peg$source && (typeof peg$source.offset === "function")) { res.start = peg$source.offset(res.start); @@ -785,7 +784,7 @@ function peg$parse(input, options) { } function peg$parsequery() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -801,7 +800,7 @@ function peg$parse(input, options) { } function peg$parsefilterList() { - var s0, s1, s2, s3, s4, s5; + let s0, s1, s2, s3, s4, s5; s0 = peg$currPos; s1 = peg$parsefilter(); @@ -841,7 +840,7 @@ function peg$parse(input, options) { } function peg$parsefilter() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parsestandardFilter(); @@ -862,7 +861,7 @@ function peg$parse(input, options) { } function peg$parsedefaultFilter() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; s1 = peg$parse_(); @@ -893,7 +892,7 @@ function peg$parse(input, options) { } function peg$parsefreeTextFilter() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -935,7 +934,7 @@ function peg$parse(input, options) { } function peg$parsestandardFilter() { - var s0, s1, s2, s3, s4, s5, s6, s7; + let s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = peg$parse_(); @@ -976,12 +975,12 @@ function peg$parse(input, options) { } function peg$parsereportFieldDynamic() { - var s0, s1, s2, s3, s4, s5, s6, s7; + let s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c1) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e2); } @@ -989,7 +988,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c2) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e3); } @@ -1097,7 +1096,7 @@ function peg$parse(input, options) { } function peg$parsekey() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1238,7 +1237,7 @@ function peg$parse(input, options) { } function peg$parsefilterKey() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parsekey(); @@ -1252,7 +1251,7 @@ function peg$parse(input, options) { } function peg$parsedefaultKey() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1297,7 +1296,7 @@ function peg$parse(input, options) { } function peg$parseidentifier() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; s1 = []; @@ -1420,12 +1419,12 @@ function peg$parse(input, options) { } function peg$parsedate() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c4) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e9); } @@ -1440,12 +1439,12 @@ function peg$parse(input, options) { } function peg$parseamount() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c5) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e10); } @@ -1460,12 +1459,12 @@ function peg$parse(input, options) { } function peg$parsemerchant() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c6) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e11); } @@ -1480,12 +1479,12 @@ function peg$parse(input, options) { } function peg$parsedescription() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c7) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e12); } @@ -1500,11 +1499,11 @@ function peg$parse(input, options) { } function peg$parsereportID() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 8); if (s0.toLowerCase() === peg$c8) { - peg$currPos += 8; + peg$currPos += (8); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e13); } @@ -1513,7 +1512,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -1529,12 +1528,12 @@ function peg$parse(input, options) { } function peg$parsekeyword() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c10) { - peg$currPos += 7; + peg$currPos += (7); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e15); } @@ -1549,12 +1548,12 @@ function peg$parse(input, options) { } function peg$parsein() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c11) { - peg$currPos += 2; + peg$currPos += (2); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e16); } @@ -1569,12 +1568,12 @@ function peg$parse(input, options) { } function peg$parsecurrency() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c12) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e17); } @@ -1589,7 +1588,7 @@ function peg$parse(input, options) { } function peg$parsegroupCurrency() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 13) === peg$c13) { s0 = peg$c13; @@ -1602,7 +1601,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c14) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e19); } @@ -1618,12 +1617,12 @@ function peg$parse(input, options) { } function peg$parsetag() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c15) { - peg$currPos += 3; + peg$currPos += (3); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e20); } @@ -1638,12 +1637,12 @@ function peg$parse(input, options) { } function peg$parsecategory() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c16) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e21); } @@ -1658,12 +1657,12 @@ function peg$parse(input, options) { } function peg$parseto() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c17) { - peg$currPos += 2; + peg$currPos += (2); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e22); } @@ -1678,12 +1677,12 @@ function peg$parse(input, options) { } function peg$parseexporter() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c18) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e23); } @@ -1698,12 +1697,12 @@ function peg$parse(input, options) { } function peg$parsepayer() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c19) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e24); } @@ -1718,11 +1717,11 @@ function peg$parse(input, options) { } function peg$parsetaxRate() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 7); if (s0.toLowerCase() === peg$c20) { - peg$currPos += 7; + peg$currPos += (7); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e25); } @@ -1731,7 +1730,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e26); } @@ -1747,7 +1746,7 @@ function peg$parse(input, options) { } function peg$parsecardID() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 6) === peg$c22) { s0 = peg$c22; @@ -1760,7 +1759,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c23) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e28); } @@ -1776,12 +1775,12 @@ function peg$parse(input, options) { } function peg$parsefrom() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c24) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e29); } @@ -1796,12 +1795,12 @@ function peg$parse(input, options) { } function peg$parseattendee() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c25) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e30); } @@ -1816,7 +1815,7 @@ function peg$parse(input, options) { } function peg$parseexpenseType() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 11) === peg$c26) { s0 = peg$c26; @@ -1829,7 +1828,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c27) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e32); } @@ -1845,7 +1844,7 @@ function peg$parse(input, options) { } function peg$parsewithdrawalType() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 14) === peg$c28) { s0 = peg$c28; @@ -1858,7 +1857,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c29) { - peg$currPos += 15; + peg$currPos += (15); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e34); } @@ -1874,11 +1873,11 @@ function peg$parse(input, options) { } function peg$parsewithdrawalID() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 12); if (s0.toLowerCase() === peg$c30) { - peg$currPos += 12; + peg$currPos += (12); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e35); } @@ -1887,7 +1886,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c31) { - peg$currPos += 13; + peg$currPos += (13); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e36); } @@ -1903,12 +1902,12 @@ function peg$parse(input, options) { } function peg$parsebillable() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c32) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e37); } @@ -1923,12 +1922,12 @@ function peg$parse(input, options) { } function peg$parsereimbursable() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c33) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e38); } @@ -1943,12 +1942,12 @@ function peg$parse(input, options) { } function peg$parsetype() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c34) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e39); } @@ -1963,12 +1962,12 @@ function peg$parse(input, options) { } function peg$parsestatus() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c35) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e40); } @@ -1983,7 +1982,7 @@ function peg$parse(input, options) { } function peg$parsesortBy() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 6) === peg$c36) { s0 = peg$c36; @@ -1996,7 +1995,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c37) { - peg$currPos += 7; + peg$currPos += (7); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e42); } @@ -2012,7 +2011,7 @@ function peg$parse(input, options) { } function peg$parsesortOrder() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 9) === peg$c38) { s0 = peg$c38; @@ -2025,7 +2024,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c39) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e44); } @@ -2041,7 +2040,7 @@ function peg$parse(input, options) { } function peg$parsepolicyID() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 8) === peg$c40) { s0 = peg$c40; @@ -2054,7 +2053,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c41) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e46); } @@ -2070,12 +2069,12 @@ function peg$parse(input, options) { } function peg$parsesubmitted() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c42) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e47); } @@ -2090,12 +2089,12 @@ function peg$parse(input, options) { } function peg$parseapproved() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c43) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e48); } @@ -2110,12 +2109,12 @@ function peg$parse(input, options) { } function peg$parsepaid() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c44) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e49); } @@ -2130,12 +2129,12 @@ function peg$parse(input, options) { } function peg$parseexported() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c45) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e50); } @@ -2150,12 +2149,12 @@ function peg$parse(input, options) { } function peg$parseposted() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c46) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e51); } @@ -2170,12 +2169,12 @@ function peg$parse(input, options) { } function peg$parsewithdrawn() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c47) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e52); } @@ -2190,11 +2189,11 @@ function peg$parse(input, options) { } function peg$parsegroupBy() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 7); if (s0.toLowerCase() === peg$c48) { - peg$currPos += 7; + peg$currPos += (7); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e53); } @@ -2203,7 +2202,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c49) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e54); } @@ -2219,12 +2218,12 @@ function peg$parse(input, options) { } function peg$parselimit() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c50) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e55); } @@ -2239,12 +2238,12 @@ function peg$parse(input, options) { } function peg$parsefeed() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c51) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e56); } @@ -2259,12 +2258,12 @@ function peg$parse(input, options) { } function peg$parsetitle() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c52) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e57); } @@ -2279,12 +2278,12 @@ function peg$parse(input, options) { } function peg$parseassignee() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c53) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e58); } @@ -2299,11 +2298,11 @@ function peg$parse(input, options) { } function peg$parsecreatedBy() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 9); if (s0.toLowerCase() === peg$c54) { - peg$currPos += 9; + peg$currPos += (9); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e59); } @@ -2312,7 +2311,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c55) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e60); } @@ -2328,12 +2327,12 @@ function peg$parse(input, options) { } function peg$parseaction() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c56) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e61); } @@ -2348,12 +2347,12 @@ function peg$parse(input, options) { } function peg$parsetotal() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c57) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e62); } @@ -2368,12 +2367,12 @@ function peg$parse(input, options) { } function peg$parsehas() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c58) { - peg$currPos += 3; + peg$currPos += (3); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e63); } @@ -2388,12 +2387,12 @@ function peg$parse(input, options) { } function peg$parseis() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c59) { - peg$currPos += 2; + peg$currPos += (2); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e64); } @@ -2408,11 +2407,11 @@ function peg$parse(input, options) { } function peg$parsepurchaseAmount() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 14); if (s0.toLowerCase() === peg$c60) { - peg$currPos += 14; + peg$currPos += (14); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e65); } @@ -2421,7 +2420,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c61) { - peg$currPos += 15; + peg$currPos += (15); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e66); } @@ -2437,11 +2436,11 @@ function peg$parse(input, options) { } function peg$parsepurchaseCurrency() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 16); if (s0.toLowerCase() === peg$c62) { - peg$currPos += 16; + peg$currPos += (16); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e67); } @@ -2450,7 +2449,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); if (s1.toLowerCase() === peg$c63) { - peg$currPos += 17; + peg$currPos += (17); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e68); } @@ -2466,12 +2465,12 @@ function peg$parse(input, options) { } function peg$parsecolumns() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c64) { - peg$currPos += 7; + peg$currPos += (7); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e69); } @@ -2486,12 +2485,12 @@ function peg$parse(input, options) { } function peg$parseview() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c65) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e70); } @@ -2506,7 +2505,7 @@ function peg$parse(input, options) { } function peg$parsevalues() { - var s0, s1, s2; + let s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; @@ -2540,7 +2539,7 @@ function peg$parse(input, options) { } function peg$parsecolumnsValues() { - var s0; + let s0; s0 = peg$parseoriginalAmount(); if (s0 === peg$FAILED) { @@ -2626,12 +2625,12 @@ function peg$parse(input, options) { } function peg$parseperDiem() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c66) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e71); } @@ -2663,12 +2662,12 @@ function peg$parse(input, options) { } function peg$parsedraft() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c67) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e72); } @@ -2676,7 +2675,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c68) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e73); } @@ -2709,12 +2708,12 @@ function peg$parse(input, options) { } function peg$parseoriginalAmount() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c69) { - peg$currPos += 15; + peg$currPos += (15); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e74); } @@ -2746,12 +2745,12 @@ function peg$parse(input, options) { } function peg$parsetaxAmount() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c70) { - peg$currPos += 3; + peg$currPos += (3); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e75); } @@ -2783,12 +2782,12 @@ function peg$parse(input, options) { } function peg$parsetaxRateValue() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e26); } @@ -2820,12 +2819,12 @@ function peg$parse(input, options) { } function peg$parsepolicyName() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c71) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e76); } @@ -2857,12 +2856,12 @@ function peg$parse(input, options) { } function peg$parsewithdrawalId() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c31) { - peg$currPos += 13; + peg$currPos += (13); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e36); } @@ -2894,12 +2893,12 @@ function peg$parse(input, options) { } function peg$parsebankAccount() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c72) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e77); } @@ -2931,12 +2930,12 @@ function peg$parse(input, options) { } function peg$parsereportId() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c73) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e78); } @@ -2968,12 +2967,12 @@ function peg$parse(input, options) { } function peg$parsebase62ReportId() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -3005,12 +3004,12 @@ function peg$parse(input, options) { } function peg$parseexportedToColumnValue() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c74) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e79); } @@ -3042,7 +3041,7 @@ function peg$parse(input, options) { } function peg$parseexportedToKeyEnd() { - var s0, s1, s2; + let s0, s1, s2; s0 = peg$parsewordBoundary(); if (s0 === peg$FAILED) { @@ -3068,12 +3067,12 @@ function peg$parse(input, options) { } function peg$parseexportedTo() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c75) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e81); } @@ -3104,7 +3103,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c74) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e79); } @@ -3137,12 +3136,12 @@ function peg$parse(input, options) { } function peg$parseexchangeRate() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c76) { - peg$currPos += 13; + peg$currPos += (13); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e82); } @@ -3174,12 +3173,12 @@ function peg$parse(input, options) { } function peg$parsereimbursableTotal() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); if (s1.toLowerCase() === peg$c77) { - peg$currPos += 18; + peg$currPos += (18); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e83); } @@ -3211,12 +3210,12 @@ function peg$parse(input, options) { } function peg$parsenonReimbursableTotal() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); if (s1.toLowerCase() === peg$c78) { - peg$currPos += 22; + peg$currPos += (22); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e84); } @@ -3248,12 +3247,12 @@ function peg$parse(input, options) { } function peg$parsegroupFrom() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c79) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e85); } @@ -3285,12 +3284,12 @@ function peg$parse(input, options) { } function peg$parsegroupExpenses() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c80) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e86); } @@ -3322,12 +3321,12 @@ function peg$parse(input, options) { } function peg$parsegroupTotal() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c81) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e87); } @@ -3359,12 +3358,12 @@ function peg$parse(input, options) { } function peg$parsegroupCard() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c82) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e88); } @@ -3396,12 +3395,12 @@ function peg$parse(input, options) { } function peg$parsegroupFeed() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c83) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e89); } @@ -3433,12 +3432,12 @@ function peg$parse(input, options) { } function peg$parsegroupBankAccount() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); if (s1.toLowerCase() === peg$c84) { - peg$currPos += 18; + peg$currPos += (18); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e90); } @@ -3470,12 +3469,12 @@ function peg$parse(input, options) { } function peg$parsegroupWithdrawn() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c85) { - peg$currPos += 15; + peg$currPos += (15); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e91); } @@ -3507,12 +3506,12 @@ function peg$parse(input, options) { } function peg$parsegroupWithdrawalId() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); if (s1.toLowerCase() === peg$c86) { - peg$currPos += 19; + peg$currPos += (19); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e92); } @@ -3544,12 +3543,12 @@ function peg$parse(input, options) { } function peg$parsegroupCategory() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c87) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e93); } @@ -3581,12 +3580,12 @@ function peg$parse(input, options) { } function peg$parsegroupTag() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c88) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e94); } @@ -3618,12 +3617,12 @@ function peg$parse(input, options) { } function peg$parsegroupMerchant() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c89) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e95); } @@ -3655,12 +3654,12 @@ function peg$parse(input, options) { } function peg$parsegroupMonth() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c90) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e96); } @@ -3692,12 +3691,12 @@ function peg$parse(input, options) { } function peg$parsegroupWeek() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c91) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e97); } @@ -3729,12 +3728,12 @@ function peg$parse(input, options) { } function peg$parsegroupYear() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c92) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e98); } @@ -3766,12 +3765,12 @@ function peg$parse(input, options) { } function peg$parsegroupQuarter() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c93) { - peg$currPos += 13; + peg$currPos += (13); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e99); } @@ -3803,16 +3802,16 @@ function peg$parse(input, options) { } function peg$parseoperator() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; - s1 = input.charAt(peg$currPos); - if (peg$r2.test(s1)) { - peg$currPos++; + if (input.substr(peg$currPos, 2) === peg$c94) { + s1 = peg$c94; + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -3821,12 +3820,12 @@ function peg$parse(input, options) { s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c94) { - s1 = peg$c94; - peg$currPos += 2; + s1 = input.charAt(peg$currPos); + if (peg$r2.test(s1)) { + peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -3849,9 +3848,9 @@ function peg$parse(input, options) { s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 62) { + if (input.substr(peg$currPos, 2) === peg$c96) { s1 = peg$c96; - peg$currPos++; + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e103); } @@ -3863,9 +3862,9 @@ function peg$parse(input, options) { s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c97) { + if (input.charCodeAt(peg$currPos) === 62) { s1 = peg$c97; - peg$currPos += 2; + peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e104); } @@ -3877,9 +3876,9 @@ function peg$parse(input, options) { s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 60) { + if (input.substr(peg$currPos, 2) === peg$c98) { s1 = peg$c98; - peg$currPos++; + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e105); } @@ -3889,6 +3888,21 @@ function peg$parse(input, options) { s1 = peg$f93(); } s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 60) { + s1 = peg$c99; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e106); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f94(); + } + s0 = s1; + } } } } @@ -3904,13 +3918,13 @@ function peg$parse(input, options) { } function peg$parsefilterOperator() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f94(s1); + s1 = peg$f95(s1); } s0 = s1; @@ -3918,7 +3932,7 @@ function peg$parse(input, options) { } function peg$parsealphanumeric() { - var s0, s1, s2; + let s0, s1, s2; peg$silentFails++; s0 = peg$currPos; @@ -3928,7 +3942,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -3938,7 +3952,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } } } else { @@ -3946,32 +3960,32 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f95(s1); + s1 = peg$f96(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } return s0; } function peg$parselogicalAnd() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f96(); + s1 = peg$f97(); s0 = s1; return s0; } function peg$parse_() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = []; @@ -3993,18 +4007,16 @@ function peg$parse(input, options) { } } peg$silentFails--; - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } return s0; } function peg$parsequotedString() { - var s0, s1, s2; + let s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f97(); + s1 = peg$f98(); if (s1) { s1 = undefined; } else { @@ -4031,7 +4043,7 @@ function peg$parse(input, options) { } function peg$parsesimpleQuotedString() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -4093,7 +4105,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4102,11 +4114,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } } peg$savedPos = s0; - s0 = peg$f98(s1, s3, s5); + s0 = peg$f99(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4125,7 +4137,7 @@ function peg$parse(input, options) { } function peg$parsenestedQuotedString() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -4177,7 +4189,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c99; + s6 = peg$c100; peg$currPos++; } else { s6 = peg$FAILED; @@ -4185,7 +4197,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f99(s1); + s4 = peg$f100(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4208,7 +4220,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c100; + s6 = peg$c101; peg$currPos++; } else { s6 = peg$FAILED; @@ -4216,7 +4228,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f100(s1); + s4 = peg$f101(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4239,7 +4251,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c101; + s6 = peg$c102; peg$currPos++; } else { s6 = peg$FAILED; @@ -4247,7 +4259,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f101(s1); + s4 = peg$f102(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4282,7 +4294,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c99; + s6 = peg$c100; peg$currPos++; } else { s6 = peg$FAILED; @@ -4290,7 +4302,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f99(s1); + s4 = peg$f100(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4313,7 +4325,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c100; + s6 = peg$c101; peg$currPos++; } else { s6 = peg$FAILED; @@ -4321,7 +4333,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f100(s1); + s4 = peg$f101(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4344,7 +4356,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c101; + s6 = peg$c102; peg$currPos++; } else { s6 = peg$FAILED; @@ -4352,7 +4364,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f101(s1); + s4 = peg$f102(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4368,7 +4380,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f102(s1, s3, s4); + s0 = peg$f103(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4387,7 +4399,7 @@ function peg$parse(input, options) { } function peg$parseclosingQuote() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.charAt(peg$currPos); @@ -4424,7 +4436,7 @@ function peg$parse(input, options) { } function peg$parsevalidClosingCondition() { - var s0, s1, s2, s3, s4; + let s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = []; @@ -4562,7 +4574,7 @@ function peg$parse(input, options) { } function peg$parsewordBoundary() { - var s0, s1; + let s0, s1; s0 = input.charAt(peg$currPos); if (peg$r13.test(s0)) { @@ -4715,30 +4727,36 @@ function peg$parse(input, options) { peg$result = peg$startRuleFunction(); - if (options.peg$library) { - return /** @type {any} */ ({ - peg$result, - peg$currPos, - peg$FAILED, - peg$maxFailExpected, - peg$maxFailPos - }); - } - if (peg$result !== peg$FAILED && peg$currPos === input.length) { - return peg$result; - } else { + const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length); + function peg$throw() { if (peg$result !== peg$FAILED && peg$currPos < input.length) { peg$fail(peg$endExpectation()); } throw peg$buildStructuredError( peg$maxFailExpected, - peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) ); } + if (options.peg$library) { + return /** @type {any} */ ({ + peg$result, + peg$currPos, + peg$FAILED, + peg$maxFailExpected, + peg$maxFailPos, + peg$success, + peg$throw: peg$success ? undefined : peg$throw, + }); + } + if (peg$success) { + return peg$result; + } else { + peg$throw(); + } } const peg$allowedStartRules = [ diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index 75d2f61423d8..52d485bebc19 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -713,7 +713,11 @@ function buildQueryStringFromFilterFormValues(filterValues: Partial CONST.SEARCH.SYNTAX_FILTER_KEYS[key] === filterKey); if (keyInCorrectForm) { - return `${prefix}${CONST.SEARCH.SYNTAX_FILTER_KEYS[keyInCorrectForm]}:${sanitizeSearchValue(filterValue as string)}`; + const operator = + filterKey === FILTER_KEYS.MERCHANT + ? operatorToCharMap[CONST.SEARCH.SYNTAX_OPERATORS.CONTAINS] + : operatorToCharMap[CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO]; + return `${prefix}${CONST.SEARCH.SYNTAX_FILTER_KEYS[keyInCorrectForm]}${operator}${sanitizeSearchValue(filterValue as string)}`; } } if ((filterKey === FILTER_KEYS.REPORT_ID || filterKey === FILTER_KEYS.WITHDRAWAL_ID) && filterValue) { diff --git a/tests/unit/Search/SearchQueryUtilsTest.ts b/tests/unit/Search/SearchQueryUtilsTest.ts index 7aac5ba59619..adc8cd651b8c 100644 --- a/tests/unit/Search/SearchQueryUtilsTest.ts +++ b/tests/unit/Search/SearchQueryUtilsTest.ts @@ -180,7 +180,7 @@ describe('SearchQueryUtils', () => { const result = buildQueryStringFromFilterFormValues(filterValues); - expect(result).toEqual('sortBy:date sortOrder:desc type:expense policyID:67890 merchant:Amazon description:Electronics laptop category:electronics,gadgets'); + expect(result).toEqual('sortBy:date sortOrder:desc type:expense policyID:67890 merchant*:Amazon description:Electronics laptop category:electronics,gadgets'); }); test('currencies and categories', () => { @@ -323,7 +323,7 @@ describe('SearchQueryUtils', () => { const result = buildQueryStringFromFilterFormValues(filterValues, {sortBy: 'amount', sortOrder: 'asc', limit: 25}); - expect(result).toEqual('sortBy:amount sortOrder:asc type:expense merchant:Amazon limit:25'); + expect(result).toEqual('sortBy:amount sortOrder:asc type:expense merchant*:Amazon limit:25'); }); test('omits limit when not provided', () => { From 167132a0739222b199831bf52bf96bb7df34ff16 Mon Sep 17 00:00:00 2001 From: Phuoc Hiep Date: Tue, 10 Mar 2026 18:16:00 +0700 Subject: [PATCH 02/38] fix: Use contains operator for merchant filter in advanced search Switch merchant filter from : (eq) to *: (contains) operator to preserve partial-matching UX when backend starts respecting eq vs contains distinction. - Add *: operator support to parser grammar - Update buildQueryStringFromFilterFormValues to use *: for merchant - Update unit test expectations Fixes https://github.com/Expensify/App/issues/80823 --- src/libs/SearchParser/autocompleteParser.js | 3270 ++++++------------- src/libs/SearchParser/baseRules.peggy | 5 +- src/libs/SearchParser/searchParser.js | 1706 +++++----- src/libs/SearchQueryUtils.ts | 9 +- tests/unit/Search/SearchQueryUtilsTest.ts | 4 +- 5 files changed, 1831 insertions(+), 3163 deletions(-) diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index e70056f0d519..8bbd481fb0ab 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -1,7 +1,6 @@ 'worklet' -class peg$SyntaxError{} -// @generated by Peggy 4.0.3. +// @generated by Peggy 5.0.6. // // https://peggyjs.org/ @@ -11,598 +10,494 @@ class peg$SyntaxError{} // To make changes, edit the corresponding *.peggy files only. // Use the `generate-search-parser` and `generate-autocomplete-parser` scripts to regenerate parsers after modifications. -function peg$subclass(child, parent) { - function C() { this.constructor = child; } - C.prototype = parent.prototype; - child.prototype = new C(); -} - -function temporary(message, expected, found, location) { - var self = Error.call(this, message); - // istanbul ignore next Check is a necessary evil to support older environments - if (Object.setPrototypeOf) { - Object.setPrototypeOf(self, peg$SyntaxError.prototype); - } - self.expected = expected; - self.found = found; - self.location = location; - self.name = "SyntaxError"; - return self; -} - - - -function peg$padEnd(str, targetLength, padString) { - padString = padString || " "; - if (str.length > targetLength) { return str; } - targetLength -= str.length; - padString += padString.repeat(targetLength); - return str + padString.slice(0, targetLength); -} +class peg$SyntaxError extends SyntaxError { + constructor(message, expected, found, location) { + super(message); + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + } + + format(sources) { + let str = "Error: " + this.message; + if (this.location) { + let src = null; + const st = sources.find(s => s.source === this.location.source); + if (st) { + src = st.text.split(/\r\n|\n|\r/g); + } + const s = this.location.start; + const offset_s = (this.location.source && (typeof this.location.source.offset === "function")) + ? this.location.source.offset(s) + : s; + const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; + if (src) { + const e = this.location.end; + const filler = "".padEnd(offset_s.line.toString().length, " "); + const line = src[s.line - 1]; + const last = s.line === e.line ? e.column : line.length + 1; + const hatLen = (last - s.column) || 1; + str += "\n --> " + loc + "\n" + + filler + " |\n" + + offset_s.line + " | " + line + "\n" + + filler + " | " + "".padEnd(s.column - 1, " ") + + "".padEnd(hatLen, "^"); + } else { + str += "\n at " + loc; + } + } + return str; + } + + static buildMessage(expected, found) { + function hex(ch) { + return ch.codePointAt(0).toString(16).toUpperCase(); + } + + const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode") + ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu") + : null; + function unicodeEscape(s) { + if (nonPrintable) { + return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}"); + } + return s; + } + + function literalEscape(s) { + return unicodeEscape(s + .replace(/\\/g, "\\\\") + .replace(/"/g, "\\\"") + .replace(/\0/g, "\\0") + .replace(/\t/g, "\\t") + .replace(/\n/g, "\\n") + .replace(/\r/g, "\\r") + .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch)) + .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); + } + + function classEscape(s) { + return unicodeEscape(s + .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, ch => "\\x0" + hex(ch)) + .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); + } + + const DESCRIBE_EXPECTATION_FNS = { + literal(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, -peg$SyntaxError.prototype.format = function(sources) { - var str = "Error: " + this.message; - if (this.location) { - var src = null; - var k; - for (k = 0; k < sources.length; k++) { - if (sources[k].source === this.location.source) { - src = sources[k].text.split(/\r\n|\n|\r/g); - break; - } - } - var s = this.location.start; - var offset_s = (this.location.source && (typeof this.location.source.offset === "function")) - ? this.location.source.offset(s) - : s; - var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; - if (src) { - var e = this.location.end; - var filler = peg$padEnd("", offset_s.line.toString().length, ' '); - var line = src[s.line - 1]; - var last = s.line === e.line ? e.column : line.length + 1; - var hatLen = (last - s.column) || 1; - str += "\n --> " + loc + "\n" - + filler + " |\n" - + offset_s.line + " | " + line + "\n" - + filler + " | " + peg$padEnd("", s.column - 1, ' ') - + peg$padEnd("", hatLen, "^"); - } else { - str += "\n at " + loc; - } - } - return str; -}; + class(expectation) { + const escapedParts = expectation.parts.map( + part => (Array.isArray(part) + ? classEscape(part[0]) + "-" + classEscape(part[1]) + : classEscape(part)) + ); -peg$SyntaxError.buildMessage = function(expected, found) { - var DESCRIBE_EXPECTATION_FNS = { - literal: function(expectation) { - return "\"" + literalEscape(expectation.text) + "\""; - }, - - class: function(expectation) { - var escapedParts = expectation.parts.map(function(part) { - return Array.isArray(part) - ? classEscape(part[0]) + "-" + classEscape(part[1]) - : classEscape(part); - }); + return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : ""); + }, - return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]"; - }, + any() { + return "any character"; + }, - any: function() { - return "any character"; - }, + end() { + return "end of input"; + }, - end: function() { - return "end of input"; - }, + other(expectation) { + return expectation.description; + }, + }; - other: function(expectation) { - return expectation.description; + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); } - }; - - function hex(ch) { - return ch.charCodeAt(0).toString(16).toUpperCase(); - } - function literalEscape(s) { - return s - .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(ch) { return "\\x0" + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); - } - - function classEscape(s) { - return s - .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(ch) { return "\\x0" + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); - } + function describeExpected(expected) { + const descriptions = expected.map(describeExpectation); + descriptions.sort(); - function describeExpectation(expectation) { - return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); - } + if (descriptions.length > 0) { + let j = 1; + for (let i = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } + } + descriptions.length = j; + } - function describeExpected(expected) { - var descriptions = expected.map(describeExpectation); - var i, j; + switch (descriptions.length) { + case 1: + return descriptions[0]; - descriptions.sort(); + case 2: + return descriptions[0] + " or " + descriptions[1]; - if (descriptions.length > 0) { - for (i = 1, j = 1; i < descriptions.length; i++) { - if (descriptions[i - 1] !== descriptions[i]) { - descriptions[j] = descriptions[i]; - j++; - } + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; } - descriptions.length = j; } - switch (descriptions.length) { - case 1: - return descriptions[0]; - - case 2: - return descriptions[0] + " or " + descriptions[1]; - - default: - return descriptions.slice(0, -1).join(", ") - + ", or " - + descriptions[descriptions.length - 1]; + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; } - } - function describeFound(found) { - return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; } - - return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; -}; +} function peg$parse(input, options) { options = options !== undefined ? options : {}; - var peg$FAILED = {}; - var peg$source = options.grammarSource; - - var peg$startRuleFunctions = { query: peg$parsequery }; - var peg$startRuleFunction = peg$parsequery; - - var peg$c0 = "-"; - var peg$c1 = "report-field"; - var peg$c2 = "reportfield"; - var peg$c3 = ","; - var peg$c4 = "date"; - var peg$c5 = "amount"; - var peg$c6 = "merchant"; - var peg$c7 = "description"; - var peg$c8 = "reportid"; - var peg$c9 = "report-id"; - var peg$c10 = "keyword"; - var peg$c11 = "in"; - var peg$c12 = "currency"; - var peg$c13 = "groupCurrency"; - var peg$c14 = "group-currency"; - var peg$c15 = "tag"; - var peg$c16 = "category"; - var peg$c17 = "to"; - var peg$c18 = "exporter"; - var peg$c19 = "payer"; - var peg$c20 = "taxrate"; - var peg$c21 = "tax-rate"; - var peg$c22 = "cardID"; - var peg$c23 = "card"; - var peg$c24 = "from"; - var peg$c25 = "attendee"; - var peg$c26 = "expenseType"; - var peg$c27 = "expense-type"; - var peg$c28 = "withdrawalType"; - var peg$c29 = "withdrawal-type"; - var peg$c30 = "withdrawalid"; - var peg$c31 = "withdrawal-id"; - var peg$c32 = "billable"; - var peg$c33 = "reimbursable"; - var peg$c34 = "type"; - var peg$c35 = "status"; - var peg$c36 = "sortBy"; - var peg$c37 = "sort-by"; - var peg$c38 = "sortOrder"; - var peg$c39 = "sort-order"; - var peg$c40 = "policyID"; - var peg$c41 = "workspace"; - var peg$c42 = "submitted"; - var peg$c43 = "approved"; - var peg$c44 = "paid"; - var peg$c45 = "exported"; - var peg$c46 = "posted"; - var peg$c47 = "withdrawn"; - var peg$c48 = "groupby"; - var peg$c49 = "group-by"; - var peg$c50 = "limit"; - var peg$c51 = "feed"; - var peg$c52 = "title"; - var peg$c53 = "assignee"; - var peg$c54 = "createdby"; - var peg$c55 = "created-by"; - var peg$c56 = "action"; - var peg$c57 = "total"; - var peg$c58 = "has"; - var peg$c59 = "is"; - var peg$c60 = "purchaseamount"; - var peg$c61 = "purchase-amount"; - var peg$c62 = "purchasecurrency"; - var peg$c63 = "purchase-currency"; - var peg$c64 = "columns"; - var peg$c65 = "view"; - var peg$c66 = "per-diem"; - var peg$c67 = "drafts"; - var peg$c68 = "draft"; - var peg$c69 = "original-amount"; - var peg$c70 = "tax"; - var peg$c71 = "policy-name"; - var peg$c72 = "bank-account"; - var peg$c73 = "long-report-id"; - var peg$c74 = "exported-to"; - var peg$c75 = "exportedto"; - var peg$c76 = "exchange-rate"; - var peg$c77 = "reimbursable-total"; - var peg$c78 = "non-reimbursable-total"; - var peg$c79 = "group-from"; - var peg$c80 = "group-expenses"; - var peg$c81 = "group-total"; - var peg$c82 = "group-card"; - var peg$c83 = "group-feed"; - var peg$c84 = "group-bank-account"; - var peg$c85 = "group-withdrawn"; - var peg$c86 = "group-withdrawal-id"; - var peg$c87 = "group-category"; - var peg$c88 = "group-tag"; - var peg$c89 = "group-merchant"; - var peg$c90 = "group-month"; - var peg$c91 = "group-week"; - var peg$c92 = "group-year"; - var peg$c93 = "group-quarter"; - var peg$c94 = "!="; - var peg$c95 = ">="; - var peg$c96 = ">"; - var peg$c97 = "<="; - var peg$c98 = "<"; - var peg$c99 = "\u201C"; - var peg$c100 = "\u201D"; - var peg$c101 = "\""; - - var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; - var peg$r1 = /^[:=]/; - var peg$r2 = /^[^ ,\t\n\r\xA0]/; - var peg$r3 = /^[ \t\r\n\xA0]/; - var peg$r4 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; - var peg$r5 = /^["\u201C-\u201D]/; - var peg$r6 = /^[^"\u201D\u201C\r\n]/; - var peg$r7 = /^[ \t\n\r\xA0a-zA-Z0-9]/; - var peg$r8 = /^[a-zA-Z0-9]/; - var peg$r9 = /^[ \t\n\r\xA0]/; - var peg$r10 = /^[ \t\n\r\xA0a-zA-Z]/; - var peg$r11 = /^[,]/; - var peg$r12 = /^[ \t\n\r\xA0,]/; - - var peg$e0 = peg$literalExpectation("-", false); - var peg$e1 = peg$literalExpectation("report-field", true); - var peg$e2 = peg$literalExpectation("reportfield", true); - var peg$e3 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false); - var peg$e4 = peg$anyExpectation(); - var peg$e5 = peg$literalExpectation(",", false); - var peg$e6 = peg$otherExpectation("key"); - var peg$e7 = peg$literalExpectation("date", true); - var peg$e8 = peg$literalExpectation("amount", true); - var peg$e9 = peg$literalExpectation("merchant", true); - var peg$e10 = peg$literalExpectation("description", true); - var peg$e11 = peg$literalExpectation("reportid", true); - var peg$e12 = peg$literalExpectation("report-id", true); - var peg$e13 = peg$literalExpectation("keyword", true); - var peg$e14 = peg$literalExpectation("in", true); - var peg$e15 = peg$literalExpectation("currency", true); - var peg$e16 = peg$literalExpectation("groupCurrency", false); - var peg$e17 = peg$literalExpectation("group-currency", true); - var peg$e18 = peg$literalExpectation("tag", true); - var peg$e19 = peg$literalExpectation("category", true); - var peg$e20 = peg$literalExpectation("to", true); - var peg$e21 = peg$literalExpectation("exporter", true); - var peg$e22 = peg$literalExpectation("payer", true); - var peg$e23 = peg$literalExpectation("taxRate", true); - var peg$e24 = peg$literalExpectation("tax-rate", true); - var peg$e25 = peg$literalExpectation("cardID", false); - var peg$e26 = peg$literalExpectation("card", true); - var peg$e27 = peg$literalExpectation("from", true); - var peg$e28 = peg$literalExpectation("attendee", true); - var peg$e29 = peg$literalExpectation("expenseType", false); - var peg$e30 = peg$literalExpectation("expense-type", true); - var peg$e31 = peg$literalExpectation("withdrawalType", false); - var peg$e32 = peg$literalExpectation("withdrawal-type", true); - var peg$e33 = peg$literalExpectation("withdrawalID", true); - var peg$e34 = peg$literalExpectation("withdrawal-id", true); - var peg$e35 = peg$literalExpectation("billable", true); - var peg$e36 = peg$literalExpectation("reimbursable", true); - var peg$e37 = peg$literalExpectation("type", true); - var peg$e38 = peg$literalExpectation("status", true); - var peg$e39 = peg$literalExpectation("sortBy", false); - var peg$e40 = peg$literalExpectation("sort-by", true); - var peg$e41 = peg$literalExpectation("sortOrder", false); - var peg$e42 = peg$literalExpectation("sort-order", true); - var peg$e43 = peg$literalExpectation("policyID", false); - var peg$e44 = peg$literalExpectation("workspace", true); - var peg$e45 = peg$literalExpectation("submitted", true); - var peg$e46 = peg$literalExpectation("approved", true); - var peg$e47 = peg$literalExpectation("paid", true); - var peg$e48 = peg$literalExpectation("exported", true); - var peg$e49 = peg$literalExpectation("posted", true); - var peg$e50 = peg$literalExpectation("withdrawn", true); - var peg$e51 = peg$literalExpectation("groupBy", true); - var peg$e52 = peg$literalExpectation("group-by", true); - var peg$e53 = peg$literalExpectation("limit", true); - var peg$e54 = peg$literalExpectation("feed", true); - var peg$e55 = peg$literalExpectation("title", true); - var peg$e56 = peg$literalExpectation("assignee", true); - var peg$e57 = peg$literalExpectation("createdBy", true); - var peg$e58 = peg$literalExpectation("created-by", true); - var peg$e59 = peg$literalExpectation("action", true); - var peg$e60 = peg$literalExpectation("total", true); - var peg$e61 = peg$literalExpectation("has", true); - var peg$e62 = peg$literalExpectation("is", true); - var peg$e63 = peg$literalExpectation("purchaseAmount", true); - var peg$e64 = peg$literalExpectation("purchase-amount", true); - var peg$e65 = peg$literalExpectation("purchaseCurrency", true); - var peg$e66 = peg$literalExpectation("purchase-currency", true); - var peg$e67 = peg$literalExpectation("columns", true); - var peg$e68 = peg$literalExpectation("view", true); - var peg$e69 = peg$literalExpectation("per-diem", true); - var peg$e70 = peg$literalExpectation("drafts", true); - var peg$e71 = peg$literalExpectation("draft", true); - var peg$e72 = peg$literalExpectation("original-amount", true); - var peg$e73 = peg$literalExpectation("tax", true); - var peg$e74 = peg$literalExpectation("policy-name", true); - var peg$e75 = peg$literalExpectation("bank-account", true); - var peg$e76 = peg$literalExpectation("long-report-id", true); - var peg$e77 = peg$literalExpectation("exported-to", true); - var peg$e78 = peg$classExpectation([":", "="], false, false); - var peg$e79 = peg$literalExpectation("exportedTo", true); - var peg$e80 = peg$literalExpectation("exchange-rate", true); - var peg$e81 = peg$literalExpectation("reimbursable-total", true); - var peg$e82 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e83 = peg$literalExpectation("group-from", true); - var peg$e84 = peg$literalExpectation("group-expenses", true); - var peg$e85 = peg$literalExpectation("group-total", true); - var peg$e86 = peg$literalExpectation("group-card", true); - var peg$e87 = peg$literalExpectation("group-feed", true); - var peg$e88 = peg$literalExpectation("group-bank-account", true); - var peg$e89 = peg$literalExpectation("group-withdrawn", true); - var peg$e90 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e91 = peg$literalExpectation("group-category", true); - var peg$e92 = peg$literalExpectation("group-tag", true); - var peg$e93 = peg$literalExpectation("group-merchant", true); - var peg$e94 = peg$literalExpectation("group-month", true); - var peg$e95 = peg$literalExpectation("group-week", true); - var peg$e96 = peg$literalExpectation("group-year", true); - var peg$e97 = peg$literalExpectation("group-quarter", true); - var peg$e98 = peg$otherExpectation("operator"); - var peg$e99 = peg$literalExpectation("!=", false); - var peg$e100 = peg$literalExpectation(">=", false); - var peg$e101 = peg$literalExpectation(">", false); - var peg$e102 = peg$literalExpectation("<=", false); - var peg$e103 = peg$literalExpectation("<", false); - var peg$e104 = peg$otherExpectation("word"); - var peg$e105 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e106 = peg$otherExpectation("whitespace"); - var peg$e107 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e108 = peg$otherExpectation("quote"); - var peg$e109 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e110 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e111 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e112 = peg$literalExpectation("\u201C", false); - var peg$e113 = peg$literalExpectation("\u201D", false); - var peg$e114 = peg$literalExpectation("\"", false); - var peg$e115 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e116 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e117 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e118 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e119 = peg$classExpectation([","], false, false); - var peg$e120 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); - - var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; - var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; - var peg$f2 = function(neg, key, op, value) { - expectingNestedQuote = false; nameOperator = false; // Reset string parser - - const isNegated = !!neg && !nonNegatableKeys.has(key); - - if (!value) { - autocomplete = { - key, - negated: isNegated, - value: "", - start: location().end.offset, - length: 0, - }; - return; - } + const peg$FAILED = {}; + const peg$source = options.grammarSource; + const peg$startRuleFunctions = { + query: peg$parsequery, + }; + let peg$startRuleFunction = peg$parsequery; + + const peg$c0 = "-"; + const peg$c1 = "report-field"; + const peg$c2 = "reportfield"; + const peg$c3 = ","; + const peg$c4 = "date"; + const peg$c5 = "amount"; + const peg$c6 = "merchant"; + const peg$c7 = "description"; + const peg$c8 = "reportid"; + const peg$c9 = "report-id"; + const peg$c10 = "in"; + const peg$c11 = "currency"; + const peg$c12 = "groupCurrency"; + const peg$c13 = "group-currency"; + const peg$c14 = "tag"; + const peg$c15 = "category"; + const peg$c16 = "to"; + const peg$c17 = "exporter"; + const peg$c18 = "payer"; + const peg$c19 = "taxrate"; + const peg$c20 = "tax-rate"; + const peg$c21 = "cardID"; + const peg$c22 = "card"; + const peg$c23 = "from"; + const peg$c24 = "attendee"; + const peg$c25 = "expenseType"; + const peg$c26 = "expense-type"; + const peg$c27 = "withdrawalType"; + const peg$c28 = "withdrawal-type"; + const peg$c29 = "withdrawalid"; + const peg$c30 = "withdrawal-id"; + const peg$c31 = "billable"; + const peg$c32 = "reimbursable"; + const peg$c33 = "type"; + const peg$c34 = "status"; + const peg$c35 = "policyID"; + const peg$c36 = "workspace"; + const peg$c37 = "submitted"; + const peg$c38 = "approved"; + const peg$c39 = "paid"; + const peg$c40 = "exported"; + const peg$c41 = "posted"; + const peg$c42 = "withdrawn"; + const peg$c43 = "groupby"; + const peg$c44 = "group-by"; + const peg$c45 = "limit"; + const peg$c46 = "feed"; + const peg$c47 = "title"; + const peg$c48 = "assignee"; + const peg$c49 = "createdby"; + const peg$c50 = "created-by"; + const peg$c51 = "action"; + const peg$c52 = "total"; + const peg$c53 = "has"; + const peg$c54 = "is"; + const peg$c55 = "purchaseamount"; + const peg$c56 = "purchase-amount"; + const peg$c57 = "purchasecurrency"; + const peg$c58 = "purchase-currency"; + const peg$c59 = "columns"; + const peg$c60 = "view"; + const peg$c61 = "exportedto"; + const peg$c62 = "exported-to"; + const peg$c63 = "*:"; + const peg$c64 = "!="; + const peg$c65 = ">="; + const peg$c66 = ">"; + const peg$c67 = "<="; + const peg$c68 = "<"; + const peg$c69 = "\u201C"; + const peg$c70 = "\u201D"; + const peg$c71 = "\""; + + const peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; + const peg$r1 = /^[:=]/; + const peg$r2 = /^[^ ,\t\n\r\xA0]/; + const peg$r3 = /^[ \t\r\n\xA0]/; + const peg$r4 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; + const peg$r5 = /^["\u201C-\u201D]/; + const peg$r6 = /^[^"\u201D\u201C\r\n]/; + const peg$r7 = /^[ \t\n\r\xA0a-zA-Z0-9]/; + const peg$r8 = /^[a-zA-Z0-9]/; + const peg$r9 = /^[ \t\n\r\xA0]/; + const peg$r10 = /^[ \t\n\r\xA0a-zA-Z]/; + const peg$r11 = /^[,]/; + const peg$r12 = /^[ \t\n\r\xA0,]/; + + const peg$e0 = peg$literalExpectation("-", false); + const peg$e1 = peg$literalExpectation("report-field", true); + const peg$e2 = peg$literalExpectation("reportfield", true); + const peg$e3 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false, false); + const peg$e4 = peg$anyExpectation(); + const peg$e5 = peg$literalExpectation(",", false); + const peg$e6 = peg$otherExpectation("key"); + const peg$e7 = peg$literalExpectation("date", true); + const peg$e8 = peg$literalExpectation("amount", true); + const peg$e9 = peg$literalExpectation("merchant", true); + const peg$e10 = peg$literalExpectation("description", true); + const peg$e11 = peg$literalExpectation("reportid", true); + const peg$e12 = peg$literalExpectation("report-id", true); + const peg$e13 = peg$literalExpectation("in", true); + const peg$e14 = peg$literalExpectation("currency", true); + const peg$e15 = peg$literalExpectation("groupCurrency", false); + const peg$e16 = peg$literalExpectation("group-currency", true); + const peg$e17 = peg$literalExpectation("tag", true); + const peg$e18 = peg$literalExpectation("category", true); + const peg$e19 = peg$literalExpectation("to", true); + const peg$e20 = peg$literalExpectation("exporter", true); + const peg$e21 = peg$literalExpectation("payer", true); + const peg$e22 = peg$literalExpectation("taxRate", true); + const peg$e23 = peg$literalExpectation("tax-rate", true); + const peg$e24 = peg$literalExpectation("cardID", false); + const peg$e25 = peg$literalExpectation("card", true); + const peg$e26 = peg$literalExpectation("from", true); + const peg$e27 = peg$literalExpectation("attendee", true); + const peg$e28 = peg$literalExpectation("expenseType", false); + const peg$e29 = peg$literalExpectation("expense-type", true); + const peg$e30 = peg$literalExpectation("withdrawalType", false); + const peg$e31 = peg$literalExpectation("withdrawal-type", true); + const peg$e32 = peg$literalExpectation("withdrawalID", true); + const peg$e33 = peg$literalExpectation("withdrawal-id", true); + const peg$e34 = peg$literalExpectation("billable", true); + const peg$e35 = peg$literalExpectation("reimbursable", true); + const peg$e36 = peg$literalExpectation("type", true); + const peg$e37 = peg$literalExpectation("status", true); + const peg$e38 = peg$literalExpectation("policyID", false); + const peg$e39 = peg$literalExpectation("workspace", true); + const peg$e40 = peg$literalExpectation("submitted", true); + const peg$e41 = peg$literalExpectation("approved", true); + const peg$e42 = peg$literalExpectation("paid", true); + const peg$e43 = peg$literalExpectation("exported", true); + const peg$e44 = peg$literalExpectation("posted", true); + const peg$e45 = peg$literalExpectation("withdrawn", true); + const peg$e46 = peg$literalExpectation("groupBy", true); + const peg$e47 = peg$literalExpectation("group-by", true); + const peg$e48 = peg$literalExpectation("limit", true); + const peg$e49 = peg$literalExpectation("feed", true); + const peg$e50 = peg$literalExpectation("title", true); + const peg$e51 = peg$literalExpectation("assignee", true); + const peg$e52 = peg$literalExpectation("createdBy", true); + const peg$e53 = peg$literalExpectation("created-by", true); + const peg$e54 = peg$literalExpectation("action", true); + const peg$e55 = peg$literalExpectation("total", true); + const peg$e56 = peg$literalExpectation("has", true); + const peg$e57 = peg$literalExpectation("is", true); + const peg$e58 = peg$literalExpectation("purchaseAmount", true); + const peg$e59 = peg$literalExpectation("purchase-amount", true); + const peg$e60 = peg$literalExpectation("purchaseCurrency", true); + const peg$e61 = peg$literalExpectation("purchase-currency", true); + const peg$e62 = peg$literalExpectation("columns", true); + const peg$e63 = peg$literalExpectation("view", true); + const peg$e64 = peg$classExpectation([":", "="], false, false, false); + const peg$e65 = peg$literalExpectation("exportedTo", true); + const peg$e66 = peg$literalExpectation("exported-to", true); + const peg$e67 = peg$otherExpectation("operator"); + const peg$e68 = peg$literalExpectation("*:", false); + const peg$e69 = peg$literalExpectation("!=", false); + const peg$e70 = peg$literalExpectation(">=", false); + const peg$e71 = peg$literalExpectation(">", false); + const peg$e72 = peg$literalExpectation("<=", false); + const peg$e73 = peg$literalExpectation("<", false); + const peg$e74 = peg$otherExpectation("word"); + const peg$e75 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false, false); + const peg$e76 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false, false); + const peg$e77 = peg$otherExpectation("quote"); + const peg$e78 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false, false); + const peg$e79 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false, false); + const peg$e80 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false, false); + const peg$e81 = peg$literalExpectation("\u201C", false); + const peg$e82 = peg$literalExpectation("\u201D", false); + const peg$e83 = peg$literalExpectation("\"", false); + const peg$e84 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); + const peg$e85 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); + const peg$e86 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false, false); + const peg$e87 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false, false); + const peg$e88 = peg$classExpectation([","], false, false, false); + const peg$e89 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false, false); + + function peg$f0(ranges) { return { autocomplete, ranges }; } + function peg$f1(filters) { return filters.filter(Boolean).flat(); } + function peg$f2(neg, key, op, value) { + expectingNestedQuote = false; nameOperator = false; // Reset string parser + + const isNegated = !!neg && !nonNegatableKeys.has(key); + + if (!value) { autocomplete = { key, negated: isNegated, - ...value[value.length - 1], + value: "", + start: location().end.offset, + length: 0, }; - return value - .filter((v) => v.length > 0) - .map((v) => ({ - key, - negated: isNegated, - ...v, - })); - }; - var peg$f3 = function(rest) { - const suffix = rest.replaceAll(/^-+/g, ""); - return "reportField-" + (suffix ? suffix : ""); - }; - var peg$f4 = function() { autocomplete = null; }; - var peg$f5 = function(k) { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); - return k; + return; + } + + autocomplete = { + key, + negated: isNegated, + ...value[value.length - 1], }; - var peg$f6 = function(parts, empty) { - const ends = location(); - const value = parts.flat().filter(Boolean); // Filter out undefined values returned by the predicate - if (empty) { - value.push(""); - } - let count = ends.start.offset; - const result = []; - value.forEach((filter) => { - let word = filter; - if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { - word = word.slice(1, -1); - } - result.push({ - value: word, - start: count, - length: filter.length, - }); - count += filter.length + 1; + return value + .filter((v) => v.length > 0) + .map((v) => ({ + key, + negated: isNegated, + ...v, + })); + } + function peg$f3(rest) { + const suffix = rest.replaceAll(/^-+/g, ""); + return "reportField-" + (suffix ? suffix : ""); + } + function peg$f4() { autocomplete = null; } + function peg$f5(k) { + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + return k; + } + function peg$f6(parts, empty) { + const ends = location(); + const value = parts.flat().filter(Boolean); // Filter out undefined values returned by the predicate + if (empty) { + value.push(""); + } + let count = ends.start.offset; + const result = []; + value.forEach((filter) => { + let word = filter; + if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { + word = word.slice(1, -1); + } + result.push({ + value: word, + start: count, + length: filter.length, }); - return result; - }; - var peg$f7 = function() { return "date"; }; - var peg$f8 = function() { return "amount"; }; - var peg$f9 = function() { return "merchant"; }; - var peg$f10 = function() { return "description"; }; - var peg$f11 = function() { return "reportID"; }; - var peg$f12 = function() { return "keyword"; }; - var peg$f13 = function() { return "in"; }; - var peg$f14 = function() { return "currency"; }; - var peg$f15 = function() { return "groupCurrency"; }; - var peg$f16 = function() { return "tag"; }; - var peg$f17 = function() { return "category"; }; - var peg$f18 = function() { return "to"; }; - var peg$f19 = function() { return "exporter"; }; - var peg$f20 = function() { return "payer"; }; - var peg$f21 = function() { return "taxRate"; }; - var peg$f22 = function() { return "cardID"; }; - var peg$f23 = function() { return "from"; }; - var peg$f24 = function() {return "attendee"}; - var peg$f25 = function() { return "expenseType"; }; - var peg$f26 = function() { return "withdrawalType"; }; - var peg$f27 = function() { return "withdrawalID"; }; - var peg$f28 = function() { return "billable"; }; - var peg$f29 = function() { return "reimbursable"; }; - var peg$f30 = function() { return "type"; }; - var peg$f31 = function() { return "status"; }; - var peg$f32 = function() { return "sortBy"; }; - var peg$f33 = function() { return "sortOrder"; }; - var peg$f34 = function() { return "policyID"; }; - var peg$f35 = function() { return "submitted"; }; - var peg$f36 = function() { return "approved"; }; - var peg$f37 = function() { return "paid"; }; - var peg$f38 = function() { return "exported"; }; - var peg$f39 = function() { return "posted"; }; - var peg$f40 = function() { return "withdrawn"; }; - var peg$f41 = function() { return "groupBy"; }; - var peg$f42 = function() { return "limit"; }; - var peg$f43 = function() { return "feed"; }; - var peg$f44 = function() { return "title"; }; - var peg$f45 = function() { return "assignee"; }; - var peg$f46 = function() { return "createdBy"; }; - var peg$f47 = function() { return "action"; }; - var peg$f48 = function() {return "total"; }; - var peg$f49 = function() {return "has"; }; - var peg$f50 = function() {return "is"; }; - var peg$f51 = function() {return "purchaseAmount"}; - var peg$f52 = function() {return "purchaseCurrency"}; - var peg$f53 = function() { - isColumnsContext = true; - return "columns"; -}; - var peg$f54 = function() {return "view"}; - var peg$f55 = function() { return isColumnsContext; }; - var peg$f56 = function() { return "perDiem"; }; - var peg$f57 = function() { return "drafts"; }; - var peg$f58 = function() { return "originalamount"; }; - var peg$f59 = function() { return "taxAmount"; }; - var peg$f60 = function() { return "taxrate"; }; - var peg$f61 = function() { return "policyname"; }; - var peg$f62 = function() { return "withdrawalID"; }; - var peg$f63 = function() { return "bankAccount"; }; - var peg$f64 = function() { return "reportID"; }; - var peg$f65 = function() { return "base62ReportID"; }; - var peg$f66 = function() { return "exportedto"; }; - var peg$f67 = function() { return "exportedTo"; }; - var peg$f68 = function() { return "exportedTo"; }; - var peg$f69 = function() { return "exchangeRate"; }; - var peg$f70 = function() { return "reimbursableTotal"; }; - var peg$f71 = function() { return "nonReimbursableTotal"; }; - var peg$f72 = function() { return "groupFrom"; }; - var peg$f73 = function() { return "groupExpenses"; }; - var peg$f74 = function() { return "groupTotal"; }; - var peg$f75 = function() { return "groupCard"; }; - var peg$f76 = function() { return "groupFeed"; }; - var peg$f77 = function() { return "groupBankAccount"; }; - var peg$f78 = function() { return "groupWithdrawn"; }; - var peg$f79 = function() { return "groupWithdrawalID"; }; - var peg$f80 = function() { return "groupCategory"; }; - var peg$f81 = function() { return "groupTag"; }; - var peg$f82 = function() { return "groupMerchant"; }; - var peg$f83 = function() { return "groupmonth"; }; - var peg$f84 = function() { return "groupweek"; }; - var peg$f85 = function() { return "groupyear"; }; - var peg$f86 = function() { return "groupquarter"; }; - var peg$f87 = function() { return "eq"; }; - var peg$f88 = function() { return "neq"; }; - var peg$f89 = function() { return "gte"; }; - var peg$f90 = function() { return "gt"; }; - var peg$f91 = function() { return "lte"; }; - var peg$f92 = function() { return "lt"; }; - var peg$f93 = function(o) { - if (nameOperator) { - expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found - } - isColumnsContext = false; - return o; - }; - var peg$f94 = function(chars) { return chars.join("").trim(); }; - var peg$f95 = function() { - isColumnsContext = false; - return "and"; -}; - var peg$f96 = function() { return expectingNestedQuote; }; - var peg$f97 = function(start, inner, end) { //handle no-breaking space - return [...start, '"', ...inner, '"', ...end].join(""); - }; - var peg$f98 = function(start) {return "“"}; - var peg$f99 = function(start) {return "”"}; - var peg$f100 = function(start) {return "\""}; - var peg$f101 = function(start, inner, end) { + count += filter.length + 1; + }); + return result; + } + function peg$f7() { return "date"; } + function peg$f8() { return "amount"; } + function peg$f9() { return "merchant"; } + function peg$f10() { return "description"; } + function peg$f11() { return "reportID"; } + function peg$f12() { return "in"; } + function peg$f13() { return "currency"; } + function peg$f14() { return "groupCurrency"; } + function peg$f15() { return "tag"; } + function peg$f16() { return "category"; } + function peg$f17() { return "to"; } + function peg$f18() { return "exporter"; } + function peg$f19() { return "payer"; } + function peg$f20() { return "taxRate"; } + function peg$f21() { return "cardID"; } + function peg$f22() { return "from"; } + function peg$f23() {return "attendee" } + function peg$f24() { return "expenseType"; } + function peg$f25() { return "withdrawalType"; } + function peg$f26() { return "withdrawalID"; } + function peg$f27() { return "billable"; } + function peg$f28() { return "reimbursable"; } + function peg$f29() { return "type"; } + function peg$f30() { return "status"; } + function peg$f31() { return "policyID"; } + function peg$f32() { return "submitted"; } + function peg$f33() { return "approved"; } + function peg$f34() { return "paid"; } + function peg$f35() { return "exported"; } + function peg$f36() { return "posted"; } + function peg$f37() { return "withdrawn"; } + function peg$f38() { return "groupBy"; } + function peg$f39() { return "limit"; } + function peg$f40() { return "feed"; } + function peg$f41() { return "title"; } + function peg$f42() { return "assignee"; } + function peg$f43() { return "createdBy"; } + function peg$f44() { return "action"; } + function peg$f45() {return "total"; } + function peg$f46() {return "has"; } + function peg$f47() {return "is"; } + function peg$f48() {return "purchaseAmount" } + function peg$f49() {return "purchaseCurrency" } + function peg$f50() { + isColumnsContext = true; + return "columns"; + } + function peg$f51() {return "view" } + function peg$f52() { return "exportedTo"; } + function peg$f53() { return "exportedTo"; } + function peg$f54() { return "contains"; } + function peg$f55() { return "eq"; } + function peg$f56() { return "neq"; } + function peg$f57() { return "gte"; } + function peg$f58() { return "gt"; } + function peg$f59() { return "lte"; } + function peg$f60() { return "lt"; } + function peg$f61(o) { + if (nameOperator) { + expectingNestedQuote = (o === "eq" || o === "contains"); + } + isColumnsContext = false; + return o; + } + function peg$f62(chars) { return chars.join("").trim(); } + function peg$f63() { + isColumnsContext = false; + return "and"; + } + function peg$f64() { return expectingNestedQuote; } + function peg$f65(start, inner, end) { //handle no-breaking space + return [...start, '"', ...inner, '"', ...end].join(""); + } + function peg$f66(start) {return "“" } + function peg$f67(start) {return "”" } + function peg$f68(start) {return "\"" } + function peg$f69(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); -}; - var peg$currPos = options.peg$currPos | 0; - var peg$savedPos = peg$currPos; - var peg$posDetailsCache = [{ line: 1, column: 1 }]; - var peg$maxFailPos = peg$currPos; - var peg$maxFailExpected = options.peg$maxFailExpected || []; - var peg$silentFails = options.peg$silentFails | 0; + } + let peg$currPos = options.peg$currPos | 0; + let peg$savedPos = peg$currPos; + const peg$posDetailsCache = [{ line: 1, column: 1 }]; + let peg$maxFailPos = peg$currPos; + let peg$maxFailExpected = options.peg$maxFailExpected || []; + let peg$silentFails = options.peg$silentFails | 0; - var peg$result; + let peg$result; if (options.startRule) { if (!(options.startRule in peg$startRuleFunctions)) { @@ -624,7 +519,7 @@ function peg$parse(input, options) { return { source: peg$source, start: peg$savedPos, - end: peg$currPos + end: peg$currPos, }; } @@ -652,12 +547,20 @@ function peg$parse(input, options) { throw peg$buildSimpleError(message, location); } + function peg$getUnicode(pos = peg$currPos) { + const cp = input.codePointAt(pos); + if (cp === undefined) { + return ""; + } + return String.fromCodePoint(cp); + } + function peg$literalExpectation(text, ignoreCase) { - return { type: "literal", text: text, ignoreCase: ignoreCase }; + return { type: "literal", text, ignoreCase }; } - function peg$classExpectation(parts, inverted, ignoreCase) { - return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + function peg$classExpectation(parts, inverted, ignoreCase, unicode) { + return { type: "class", parts, inverted, ignoreCase, unicode }; } function peg$anyExpectation() { @@ -669,12 +572,12 @@ function peg$parse(input, options) { } function peg$otherExpectation(description) { - return { type: "other", description: description }; + return { type: "other", description }; } function peg$computePosDetails(pos) { - var details = peg$posDetailsCache[pos]; - var p; + let details = peg$posDetailsCache[pos]; + let p; if (details) { return details; @@ -689,7 +592,7 @@ function peg$parse(input, options) { details = peg$posDetailsCache[p]; details = { line: details.line, - column: details.column + column: details.column, }; while (p < pos) { @@ -710,21 +613,21 @@ function peg$parse(input, options) { } function peg$computeLocation(startPos, endPos, offset) { - var startPosDetails = peg$computePosDetails(startPos); - var endPosDetails = peg$computePosDetails(endPos); + const startPosDetails = peg$computePosDetails(startPos); + const endPosDetails = peg$computePosDetails(endPos); - var res = { + const res = { source: peg$source, start: { offset: startPos, line: startPosDetails.line, - column: startPosDetails.column + column: startPosDetails.column, }, end: { offset: endPos, line: endPosDetails.line, - column: endPosDetails.column - } + column: endPosDetails.column, + }, }; if (offset && peg$source && (typeof peg$source.offset === "function")) { res.start = peg$source.offset(res.start); @@ -758,7 +661,7 @@ function peg$parse(input, options) { } function peg$parsequery() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -771,7 +674,7 @@ function peg$parse(input, options) { } function peg$parsefilterList() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = []; @@ -796,7 +699,7 @@ function peg$parse(input, options) { } function peg$parsefilter() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parsedefaultFilter(); @@ -814,7 +717,7 @@ function peg$parse(input, options) { } function peg$parsedefaultFilter() { - var s0, s1, s2, s3, s4, s5, s6, s7; + let s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = peg$parse_(); @@ -853,12 +756,12 @@ function peg$parse(input, options) { } function peg$parsereportFieldDynamic() { - var s0, s1, s2, s3, s4, s5, s6, s7; + let s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c1) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e1); } @@ -866,7 +769,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c2) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e2); } @@ -974,7 +877,7 @@ function peg$parse(input, options) { } function peg$parsefreeTextFilter() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -1001,7 +904,7 @@ function peg$parse(input, options) { } function peg$parseautocompleteKey() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1160,7 +1063,7 @@ function peg$parse(input, options) { } function peg$parsefilterKey() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parseautocompleteKey(); @@ -1174,7 +1077,7 @@ function peg$parse(input, options) { } function peg$parseidentifier() { - var s0, s1, s2, s3, s4; + let s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$currPos; @@ -1236,12 +1139,12 @@ function peg$parse(input, options) { } function peg$parsedate() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c4) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e7); } @@ -1256,12 +1159,12 @@ function peg$parse(input, options) { } function peg$parseamount() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c5) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e8); } @@ -1276,12 +1179,12 @@ function peg$parse(input, options) { } function peg$parsemerchant() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c6) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e9); } @@ -1296,12 +1199,12 @@ function peg$parse(input, options) { } function peg$parsedescription() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c7) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e10); } @@ -1316,11 +1219,11 @@ function peg$parse(input, options) { } function peg$parsereportID() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 8); if (s0.toLowerCase() === peg$c8) { - peg$currPos += 8; + peg$currPos += (8); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e11); } @@ -1329,7 +1232,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e12); } @@ -1344,13 +1247,13 @@ function peg$parse(input, options) { return s0; } - function peg$parsekeyword() { - var s0, s1; + function peg$parsein() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 7); + s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c10) { - peg$currPos += 7; + peg$currPos += (2); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e13); } @@ -1364,13 +1267,13 @@ function peg$parse(input, options) { return s0; } - function peg$parsein() { - var s0, s1; + function peg$parsecurrency() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 2); + s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c11) { - peg$currPos += 2; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -1384,48 +1287,28 @@ function peg$parse(input, options) { return s0; } - function peg$parsecurrency() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c12) { - peg$currPos += 8; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e15); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f14(); - } - s0 = s1; - - return s0; - } - function peg$parsegroupCurrency() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 13) === peg$c13) { - s0 = peg$c13; + if (input.substr(peg$currPos, 13) === peg$c12) { + s0 = peg$c12; peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e16); } + if (peg$silentFails === 0) { peg$fail(peg$e15); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c14) { - peg$currPos += 14; + if (s1.toLowerCase() === peg$c13) { + peg$currPos += (14); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e17); } + if (peg$silentFails === 0) { peg$fail(peg$e16); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f15(); + s1 = peg$f14(); } s0 = s1; } @@ -1434,19 +1317,19 @@ function peg$parse(input, options) { } function peg$parsetag() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c15) { - peg$currPos += 3; + if (s1.toLowerCase() === peg$c14) { + peg$currPos += (3); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e18); } + if (peg$silentFails === 0) { peg$fail(peg$e17); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f16(); + s1 = peg$f15(); } s0 = s1; @@ -1454,19 +1337,19 @@ function peg$parse(input, options) { } function peg$parsecategory() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c16) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c15) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e19); } + if (peg$silentFails === 0) { peg$fail(peg$e18); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f17(); + s1 = peg$f16(); } s0 = s1; @@ -1474,19 +1357,19 @@ function peg$parse(input, options) { } function peg$parseto() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c17) { - peg$currPos += 2; + if (s1.toLowerCase() === peg$c16) { + peg$currPos += (2); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e20); } + if (peg$silentFails === 0) { peg$fail(peg$e19); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f18(); + s1 = peg$f17(); } s0 = s1; @@ -1494,19 +1377,19 @@ function peg$parse(input, options) { } function peg$parseexporter() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c18) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c17) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e21); } + if (peg$silentFails === 0) { peg$fail(peg$e20); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f19(); + s1 = peg$f18(); } s0 = s1; @@ -1514,19 +1397,19 @@ function peg$parse(input, options) { } function peg$parsepayer() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c19) { - peg$currPos += 5; + if (s1.toLowerCase() === peg$c18) { + peg$currPos += (5); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e22); } + if (peg$silentFails === 0) { peg$fail(peg$e21); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f20(); + s1 = peg$f19(); } s0 = s1; @@ -1534,27 +1417,27 @@ function peg$parse(input, options) { } function peg$parsetaxRate() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c20) { - peg$currPos += 7; + if (s0.toLowerCase() === peg$c19) { + peg$currPos += (7); } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e23); } + if (peg$silentFails === 0) { peg$fail(peg$e22); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c20) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e24); } + if (peg$silentFails === 0) { peg$fail(peg$e23); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f21(); + s1 = peg$f20(); } s0 = s1; } @@ -1563,27 +1446,27 @@ function peg$parse(input, options) { } function peg$parsecardID() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 6) === peg$c22) { - s0 = peg$c22; + if (input.substr(peg$currPos, 6) === peg$c21) { + s0 = peg$c21; peg$currPos += 6; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e25); } + if (peg$silentFails === 0) { peg$fail(peg$e24); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c23) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c22) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e26); } + if (peg$silentFails === 0) { peg$fail(peg$e25); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f22(); + s1 = peg$f21(); } s0 = s1; } @@ -1592,19 +1475,19 @@ function peg$parse(input, options) { } function peg$parsefrom() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c24) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c23) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e27); } + if (peg$silentFails === 0) { peg$fail(peg$e26); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f23(); + s1 = peg$f22(); } s0 = s1; @@ -1612,19 +1495,19 @@ function peg$parse(input, options) { } function peg$parseattendee() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c25) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c24) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e28); } + if (peg$silentFails === 0) { peg$fail(peg$e27); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f24(); + s1 = peg$f23(); } s0 = s1; @@ -1632,27 +1515,27 @@ function peg$parse(input, options) { } function peg$parseexpenseType() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 11) === peg$c26) { - s0 = peg$c26; + if (input.substr(peg$currPos, 11) === peg$c25) { + s0 = peg$c25; peg$currPos += 11; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e29); } + if (peg$silentFails === 0) { peg$fail(peg$e28); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c27) { - peg$currPos += 12; + if (s1.toLowerCase() === peg$c26) { + peg$currPos += (12); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e30); } + if (peg$silentFails === 0) { peg$fail(peg$e29); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f25(); + s1 = peg$f24(); } s0 = s1; } @@ -1661,27 +1544,27 @@ function peg$parse(input, options) { } function peg$parsewithdrawalType() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 14) === peg$c28) { - s0 = peg$c28; + if (input.substr(peg$currPos, 14) === peg$c27) { + s0 = peg$c27; peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e31); } + if (peg$silentFails === 0) { peg$fail(peg$e30); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c29) { - peg$currPos += 15; + if (s1.toLowerCase() === peg$c28) { + peg$currPos += (15); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e32); } + if (peg$silentFails === 0) { peg$fail(peg$e31); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f26(); + s1 = peg$f25(); } s0 = s1; } @@ -1690,27 +1573,27 @@ function peg$parse(input, options) { } function peg$parsewithdrawalID() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 12); - if (s0.toLowerCase() === peg$c30) { - peg$currPos += 12; + if (s0.toLowerCase() === peg$c29) { + peg$currPos += (12); } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e33); } + if (peg$silentFails === 0) { peg$fail(peg$e32); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c31) { - peg$currPos += 13; + if (s1.toLowerCase() === peg$c30) { + peg$currPos += (13); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e34); } + if (peg$silentFails === 0) { peg$fail(peg$e33); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f27(); + s1 = peg$f26(); } s0 = s1; } @@ -1719,19 +1602,19 @@ function peg$parse(input, options) { } function peg$parsebillable() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c32) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c31) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e35); } + if (peg$silentFails === 0) { peg$fail(peg$e34); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f28(); + s1 = peg$f27(); } s0 = s1; @@ -1739,19 +1622,19 @@ function peg$parse(input, options) { } function peg$parsereimbursable() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c33) { - peg$currPos += 12; + if (s1.toLowerCase() === peg$c32) { + peg$currPos += (12); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e36); } + if (peg$silentFails === 0) { peg$fail(peg$e35); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f29(); + s1 = peg$f28(); } s0 = s1; @@ -1759,19 +1642,19 @@ function peg$parse(input, options) { } function peg$parsetype() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c34) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c33) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e37); } + if (peg$silentFails === 0) { peg$fail(peg$e36); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f30(); + s1 = peg$f29(); } s0 = s1; @@ -1779,105 +1662,47 @@ function peg$parse(input, options) { } function peg$parsestatus() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c35) { - peg$currPos += 6; + if (s1.toLowerCase() === peg$c34) { + peg$currPos += (6); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e38); } + if (peg$silentFails === 0) { peg$fail(peg$e37); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f31(); + s1 = peg$f30(); } s0 = s1; return s0; } - function peg$parsesortBy() { - var s0, s1; - - if (input.substr(peg$currPos, 6) === peg$c36) { - s0 = peg$c36; - peg$currPos += 6; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e39); } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c37) { - peg$currPos += 7; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e40); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f32(); - } - s0 = s1; - } - - return s0; - } - - function peg$parsesortOrder() { - var s0, s1; - - if (input.substr(peg$currPos, 9) === peg$c38) { - s0 = peg$c38; - peg$currPos += 9; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e41); } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c39) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f33(); - } - s0 = s1; - } - - return s0; - } - function peg$parsepolicyID() { - var s0, s1; + let s0, s1; - if (input.substr(peg$currPos, 8) === peg$c40) { - s0 = peg$c40; + if (input.substr(peg$currPos, 8) === peg$c35) { + s0 = peg$c35; peg$currPos += 8; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e43); } + if (peg$silentFails === 0) { peg$fail(peg$e38); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c41) { - peg$currPos += 9; + if (s1.toLowerCase() === peg$c36) { + peg$currPos += (9); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e44); } + if (peg$silentFails === 0) { peg$fail(peg$e39); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f34(); + s1 = peg$f31(); } s0 = s1; } @@ -1886,19 +1711,19 @@ function peg$parse(input, options) { } function peg$parsesubmitted() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c42) { - peg$currPos += 9; + if (s1.toLowerCase() === peg$c37) { + peg$currPos += (9); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e45); } + if (peg$silentFails === 0) { peg$fail(peg$e40); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f35(); + s1 = peg$f32(); } s0 = s1; @@ -1906,19 +1731,19 @@ function peg$parse(input, options) { } function peg$parseapproved() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c43) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c38) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e46); } + if (peg$silentFails === 0) { peg$fail(peg$e41); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f36(); + s1 = peg$f33(); } s0 = s1; @@ -1926,19 +1751,19 @@ function peg$parse(input, options) { } function peg$parsepaid() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c44) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c39) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e47); } + if (peg$silentFails === 0) { peg$fail(peg$e42); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f37(); + s1 = peg$f34(); } s0 = s1; @@ -1946,19 +1771,19 @@ function peg$parse(input, options) { } function peg$parseexported() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c45) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c40) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e48); } + if (peg$silentFails === 0) { peg$fail(peg$e43); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f38(); + s1 = peg$f35(); } s0 = s1; @@ -1966,19 +1791,19 @@ function peg$parse(input, options) { } function peg$parseposted() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c46) { - peg$currPos += 6; + if (s1.toLowerCase() === peg$c41) { + peg$currPos += (6); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e49); } + if (peg$silentFails === 0) { peg$fail(peg$e44); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f39(); + s1 = peg$f36(); } s0 = s1; @@ -1986,19 +1811,19 @@ function peg$parse(input, options) { } function peg$parsewithdrawn() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c47) { - peg$currPos += 9; + if (s1.toLowerCase() === peg$c42) { + peg$currPos += (9); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e50); } + if (peg$silentFails === 0) { peg$fail(peg$e45); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f40(); + s1 = peg$f37(); } s0 = s1; @@ -2006,27 +1831,27 @@ function peg$parse(input, options) { } function peg$parsegroupBy() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c48) { - peg$currPos += 7; + if (s0.toLowerCase() === peg$c43) { + peg$currPos += (7); } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e51); } + if (peg$silentFails === 0) { peg$fail(peg$e46); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c49) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c44) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e52); } + if (peg$silentFails === 0) { peg$fail(peg$e47); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f41(); + s1 = peg$f38(); } s0 = s1; } @@ -2035,19 +1860,19 @@ function peg$parse(input, options) { } function peg$parselimit() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c50) { - peg$currPos += 5; + if (s1.toLowerCase() === peg$c45) { + peg$currPos += (5); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e53); } + if (peg$silentFails === 0) { peg$fail(peg$e48); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f42(); + s1 = peg$f39(); } s0 = s1; @@ -2055,19 +1880,19 @@ function peg$parse(input, options) { } function peg$parsefeed() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c51) { - peg$currPos += 4; + if (s1.toLowerCase() === peg$c46) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e54); } + if (peg$silentFails === 0) { peg$fail(peg$e49); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f43(); + s1 = peg$f40(); } s0 = s1; @@ -2075,19 +1900,19 @@ function peg$parse(input, options) { } function peg$parsetitle() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c52) { - peg$currPos += 5; + if (s1.toLowerCase() === peg$c47) { + peg$currPos += (5); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e55); } + if (peg$silentFails === 0) { peg$fail(peg$e50); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f44(); + s1 = peg$f41(); } s0 = s1; @@ -2095,19 +1920,19 @@ function peg$parse(input, options) { } function peg$parseassignee() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c53) { - peg$currPos += 8; + if (s1.toLowerCase() === peg$c48) { + peg$currPos += (8); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e56); } + if (peg$silentFails === 0) { peg$fail(peg$e51); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f45(); + s1 = peg$f42(); } s0 = s1; @@ -2115,27 +1940,27 @@ function peg$parse(input, options) { } function peg$parsecreatedBy() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c54) { - peg$currPos += 9; + if (s0.toLowerCase() === peg$c49) { + peg$currPos += (9); } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e57); } + if (peg$silentFails === 0) { peg$fail(peg$e52); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c55) { - peg$currPos += 10; + if (s1.toLowerCase() === peg$c50) { + peg$currPos += (10); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e58); } + if (peg$silentFails === 0) { peg$fail(peg$e53); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f46(); + s1 = peg$f43(); } s0 = s1; } @@ -2144,19 +1969,19 @@ function peg$parse(input, options) { } function peg$parseaction() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c56) { - peg$currPos += 6; + if (s1.toLowerCase() === peg$c51) { + peg$currPos += (6); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e59); } + if (peg$silentFails === 0) { peg$fail(peg$e54); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f47(); + s1 = peg$f44(); } s0 = s1; @@ -2164,1438 +1989,204 @@ function peg$parse(input, options) { } function peg$parsetotal() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c57) { - peg$currPos += 5; + if (s1.toLowerCase() === peg$c52) { + peg$currPos += (5); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e60); } + if (peg$silentFails === 0) { peg$fail(peg$e55); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f48(); - } - s0 = s1; - - return s0; - } - - function peg$parsehas() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c58) { - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e61); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f49(); - } - s0 = s1; - - return s0; - } - - function peg$parseis() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c59) { - peg$currPos += 2; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e62); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f50(); - } - s0 = s1; - - return s0; - } - - function peg$parsepurchaseAmount() { - var s0, s1; - - s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c60) { - peg$currPos += 14; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e63); } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c61) { - peg$currPos += 15; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e64); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f51(); - } - s0 = s1; - } - - return s0; - } - - function peg$parsepurchaseCurrency() { - var s0, s1; - - s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c62) { - peg$currPos += 16; - } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e65); } - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c63) { - peg$currPos += 17; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e66); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f52(); - } - s0 = s1; - } - - return s0; - } - - function peg$parsecolumns() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c64) { - peg$currPos += 7; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e67); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f53(); - } - s0 = s1; - - return s0; - } - - function peg$parseview() { - var s0, s1; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c65) { - peg$currPos += 4; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e68); } - } - if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f54(); - } - s0 = s1; - - return s0; - } - - function peg$parsevalues() { - var s0, s1, s2; - - s0 = peg$currPos; - peg$savedPos = peg$currPos; - s1 = peg$f55(); - if (s1) { - s1 = undefined; - } else { - s1 = peg$FAILED; - } - if (s1 !== peg$FAILED) { - s2 = peg$parsecolumnsValues(); - if (s2 !== peg$FAILED) { - s1 = [s1, s2]; - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$parseperDiem(); - if (s0 === peg$FAILED) { - s0 = peg$parsedraft(); - } - } - - return s0; - } - - function peg$parsecolumnsValues() { - var s0; - - s0 = peg$parseoriginalAmount(); - if (s0 === peg$FAILED) { - s0 = peg$parsetaxRateValue(); - if (s0 === peg$FAILED) { - s0 = peg$parsetaxAmount(); - if (s0 === peg$FAILED) { - s0 = peg$parsepolicyName(); - if (s0 === peg$FAILED) { - s0 = peg$parsewithdrawalId(); - if (s0 === peg$FAILED) { - s0 = peg$parsebankAccount(); - if (s0 === peg$FAILED) { - s0 = peg$parsereportId(); - if (s0 === peg$FAILED) { - s0 = peg$parsebase62ReportId(); - if (s0 === peg$FAILED) { - s0 = peg$parseexportedToColumnValue(); - if (s0 === peg$FAILED) { - s0 = peg$parseexchangeRate(); - if (s0 === peg$FAILED) { - s0 = peg$parsereimbursableTotal(); - if (s0 === peg$FAILED) { - s0 = peg$parsenonReimbursableTotal(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupFrom(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupExpenses(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupTotal(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupCard(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupFeed(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupBankAccount(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupWithdrawn(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupWithdrawalId(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupCategory(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupTag(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupMerchant(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupMonth(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupWeek(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupYear(); - if (s0 === peg$FAILED) { - s0 = peg$parsegroupQuarter(); - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - - return s0; - } - - function peg$parseperDiem() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c66) { - peg$currPos += 8; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e69); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f56(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsedraft() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c67) { - peg$currPos += 6; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e70); } - } - if (s1 === peg$FAILED) { - s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c68) { - peg$currPos += 5; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e71); } - } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f57(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseoriginalAmount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c69) { - peg$currPos += 15; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e72); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f58(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsetaxAmount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c70) { - peg$currPos += 3; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e73); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f59(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsetaxRateValue() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e24); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f60(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsepolicyName() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c71) { - peg$currPos += 11; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e74); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f61(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsewithdrawalId() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c31) { - peg$currPos += 13; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e34); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f62(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsebankAccount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c72) { - peg$currPos += 12; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f63(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsereportId() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c73) { - peg$currPos += 14; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f64(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsebase62ReportId() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c9) { - peg$currPos += 9; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e12); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f65(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseexportedToColumnValue() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c74) { - peg$currPos += 11; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f66(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parseexportedToKeyEnd() { - var s0, s1, s2; - - s0 = peg$parsewordBoundary(); - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parse_(); - s2 = input.charAt(peg$currPos); - if (peg$r1.test(s2)) { - peg$currPos++; - } else { - s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } - } - if (s2 !== peg$FAILED) { - s1 = [s1, s2]; - s0 = s1; - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - - return s0; - } - - function peg$parseexportedTo() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c75) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parseexportedToKeyEnd(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f67(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c74) { - peg$currPos += 11; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parseexportedToKeyEnd(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f68(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } - - return s0; - } - - function peg$parseexchangeRate() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c76) { - peg$currPos += 13; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f69(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsereimbursableTotal() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c77) { - peg$currPos += 18; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f70(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsenonReimbursableTotal() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 22); - if (s1.toLowerCase() === peg$c78) { - peg$currPos += 22; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f71(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupFrom() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c79) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f72(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupExpenses() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c80) { - peg$currPos += 14; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f73(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupTotal() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c81) { - peg$currPos += 11; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f74(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupCard() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c82) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f75(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupFeed() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c83) { - peg$currPos += 10; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f76(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupBankAccount() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 18); - if (s1.toLowerCase() === peg$c84) { - peg$currPos += 18; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f77(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupWithdrawn() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c85) { - peg$currPos += 15; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f78(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - - return s0; - } - - function peg$parsegroupWithdrawalId() { - var s0, s1, s2, s3; - - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 19); - if (s1.toLowerCase() === peg$c86) { - peg$currPos += 19; - } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e90); } - } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f79(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s1 = peg$f45(); } + s0 = s1; return s0; } - function peg$parsegroupCategory() { - var s0, s1, s2, s3; + function peg$parsehas() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c87) { - peg$currPos += 14; + s1 = input.substr(peg$currPos, 3); + if (s1.toLowerCase() === peg$c53) { + peg$currPos += (3); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e91); } + if (peg$silentFails === 0) { peg$fail(peg$e56); } } if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f80(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f46(); } + s0 = s1; return s0; } - function peg$parsegroupTag() { - var s0, s1, s2, s3; + function peg$parseis() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c88) { - peg$currPos += 9; + s1 = input.substr(peg$currPos, 2); + if (s1.toLowerCase() === peg$c54) { + peg$currPos += (2); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e92); } + if (peg$silentFails === 0) { peg$fail(peg$e57); } } if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f81(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f47(); } + s0 = s1; return s0; } - function peg$parsegroupMerchant() { - var s0, s1, s2, s3; + function peg$parsepurchaseAmount() { + let s0, s1; - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c89) { - peg$currPos += 14; + s0 = input.substr(peg$currPos, 14); + if (s0.toLowerCase() === peg$c55) { + peg$currPos += (14); } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e93); } + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e58); } } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 15); + if (s1.toLowerCase() === peg$c56) { + peg$currPos += (15); } else { - s2 = peg$FAILED; + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e59); } } - if (s2 !== peg$FAILED) { + if (s1 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f82(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s1 = peg$f48(); } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s0 = s1; } return s0; } - function peg$parsegroupMonth() { - var s0, s1, s2, s3; + function peg$parsepurchaseCurrency() { + let s0, s1; - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c90) { - peg$currPos += 11; + s0 = input.substr(peg$currPos, 16); + if (s0.toLowerCase() === peg$c57) { + peg$currPos += (16); } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e94); } + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e60); } } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 17); + if (s1.toLowerCase() === peg$c58) { + peg$currPos += (17); } else { - s2 = peg$FAILED; + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e61); } } - if (s2 !== peg$FAILED) { + if (s1 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f83(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s1 = peg$f49(); } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + s0 = s1; } return s0; } - function peg$parsegroupWeek() { - var s0, s1, s2, s3; + function peg$parsecolumns() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c91) { - peg$currPos += 10; + s1 = input.substr(peg$currPos, 7); + if (s1.toLowerCase() === peg$c59) { + peg$currPos += (7); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e95); } + if (peg$silentFails === 0) { peg$fail(peg$e62); } } if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f84(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } - } else { - peg$currPos = s0; - s0 = peg$FAILED; + peg$savedPos = s0; + s1 = peg$f50(); } + s0 = s1; return s0; } - function peg$parsegroupYear() { - var s0, s1, s2, s3; + function peg$parseview() { + let s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c92) { - peg$currPos += 10; + s1 = input.substr(peg$currPos, 4); + if (s1.toLowerCase() === peg$c60) { + peg$currPos += (4); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e96); } + if (peg$silentFails === 0) { peg$fail(peg$e63); } } if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parsewordBoundary(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; + peg$savedPos = s0; + s1 = peg$f51(); + } + s0 = s1; + + return s0; + } + + function peg$parseexportedToKeyEnd() { + let s0, s1, s2; + + s0 = peg$parsewordBoundary(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + s2 = input.charAt(peg$currPos); + if (peg$r1.test(s2)) { + peg$currPos++; } else { s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e64); } } if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f85(); + s1 = [s1, s2]; + s0 = s1; } else { peg$currPos = s0; s0 = peg$FAILED; } - } else { - peg$currPos = s0; - s0 = peg$FAILED; } return s0; } - function peg$parsegroupQuarter() { - var s0, s1, s2, s3; + function peg$parseexportedTo() { + let s0, s1, s2, s3; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c93) { - peg$currPos += 13; + s1 = input.substr(peg$currPos, 10); + if (s1.toLowerCase() === peg$c61) { + peg$currPos += (10); } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e97); } + if (peg$silentFails === 0) { peg$fail(peg$e65); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; - s3 = peg$parsewordBoundary(); + s3 = peg$parseexportedToKeyEnd(); peg$silentFails--; if (s3 !== peg$FAILED) { peg$currPos = s2; @@ -3605,7 +2196,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f86(); + s0 = peg$f52(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3614,97 +2205,144 @@ function peg$parse(input, options) { peg$currPos = s0; s0 = peg$FAILED; } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 11); + if (s1.toLowerCase() === peg$c62) { + peg$currPos += (11); + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e66); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseexportedToKeyEnd(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f53(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } return s0; } function peg$parseoperator() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; - s1 = input.charAt(peg$currPos); - if (peg$r1.test(s1)) { - peg$currPos++; + if (input.substr(peg$currPos, 2) === peg$c63) { + s1 = peg$c63; + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e68); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f87(); + s1 = peg$f54(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c94) { - s1 = peg$c94; - peg$currPos += 2; + s1 = input.charAt(peg$currPos); + if (peg$r1.test(s1)) { + peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e99); } + if (peg$silentFails === 0) { peg$fail(peg$e64); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f88(); + s1 = peg$f55(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c95) { - s1 = peg$c95; + if (input.substr(peg$currPos, 2) === peg$c64) { + s1 = peg$c64; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e100); } + if (peg$silentFails === 0) { peg$fail(peg$e69); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f89(); + s1 = peg$f56(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c96; - peg$currPos++; + if (input.substr(peg$currPos, 2) === peg$c65) { + s1 = peg$c65; + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e70); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f90(); + s1 = peg$f57(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c97) { - s1 = peg$c97; - peg$currPos += 2; + if (input.charCodeAt(peg$currPos) === 62) { + s1 = peg$c66; + peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e102); } + if (peg$silentFails === 0) { peg$fail(peg$e71); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f91(); + s1 = peg$f58(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c98; - peg$currPos++; + if (input.substr(peg$currPos, 2) === peg$c67) { + s1 = peg$c67; + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e103); } + if (peg$silentFails === 0) { peg$fail(peg$e72); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f92(); + s1 = peg$f59(); } s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 60) { + s1 = peg$c68; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e73); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f60(); + } + s0 = s1; + } } } } @@ -3713,20 +2351,20 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e98); } + if (peg$silentFails === 0) { peg$fail(peg$e67); } } return s0; } function peg$parsefilterOperator() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f93(s1); + s1 = peg$f61(s1); } s0 = s1; @@ -3734,7 +2372,7 @@ function peg$parse(input, options) { } function peg$parsealphanumeric() { - var s0, s1, s2; + let s0, s1, s2; peg$silentFails++; s0 = peg$currPos; @@ -3744,7 +2382,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -3754,7 +2392,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } } } else { @@ -3762,32 +2400,32 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f94(s1); + s1 = peg$f62(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e104); } + if (peg$silentFails === 0) { peg$fail(peg$e74); } } return s0; } function peg$parselogicalAnd() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f95(); + s1 = peg$f63(); s0 = s1; return s0; } function peg$parse_() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = []; @@ -3796,7 +2434,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -3805,22 +2443,20 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e76); } } } peg$silentFails--; - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } return s0; } function peg$parsequotedString() { - var s0, s1, s2; + let s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f96(); + s1 = peg$f64(); if (s1) { s1 = undefined; } else { @@ -3847,7 +2483,7 @@ function peg$parse(input, options) { } function peg$parsesimpleQuotedString() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -3857,7 +2493,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3866,7 +2502,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } } s2 = input.charAt(peg$currPos); @@ -3874,7 +2510,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s2 !== peg$FAILED) { s3 = []; @@ -3883,7 +2519,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -3892,7 +2528,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } } s4 = input.charAt(peg$currPos); @@ -3900,7 +2536,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s4 !== peg$FAILED) { s5 = []; @@ -3909,7 +2545,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -3918,11 +2554,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e105); } + if (peg$silentFails === 0) { peg$fail(peg$e75); } } } peg$savedPos = s0; - s0 = peg$f97(s1, s3, s5); + s0 = peg$f65(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -3934,14 +2570,14 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } return s0; } function peg$parsenestedQuotedString() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -3951,7 +2587,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -3960,7 +2596,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } } s2 = input.charAt(peg$currPos); @@ -3968,7 +2604,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s2 !== peg$FAILED) { s3 = []; @@ -3977,7 +2613,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -3993,15 +2629,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c99; + s6 = peg$c69; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f98(s1); + s4 = peg$f66(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4024,15 +2660,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c100; + s6 = peg$c70; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f99(s1); + s4 = peg$f67(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4055,15 +2691,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c101; + s6 = peg$c71; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f100(s1); + s4 = peg$f68(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4082,7 +2718,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4098,15 +2734,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c99; + s6 = peg$c69; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e81); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f98(s1); + s4 = peg$f66(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4129,15 +2765,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c100; + s6 = peg$c70; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e82); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f99(s1); + s4 = peg$f67(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4160,15 +2796,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c101; + s6 = peg$c71; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e83); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f100(s1); + s4 = peg$f68(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4184,7 +2820,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f101(s1, s3, s4); + s0 = peg$f69(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4196,14 +2832,14 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } + if (peg$silentFails === 0) { peg$fail(peg$e77); } } return s0; } function peg$parseclosingQuote() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.charAt(peg$currPos); @@ -4211,7 +2847,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e79); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4240,7 +2876,7 @@ function peg$parse(input, options) { } function peg$parsevalidClosingCondition() { - var s0, s1, s2, s3, s4; + let s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = []; @@ -4249,7 +2885,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4258,7 +2894,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e84); } } } s2 = []; @@ -4267,7 +2903,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -4276,7 +2912,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e85); } } } s3 = []; @@ -4285,7 +2921,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4294,7 +2930,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e86); } } } s4 = peg$parseoperator(); @@ -4313,7 +2949,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4322,7 +2958,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e87); } } } s2 = peg$currPos; @@ -4369,7 +3005,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e88); } } } } @@ -4378,14 +3014,14 @@ function peg$parse(input, options) { } function peg$parsewordBoundary() { - var s0, s1; + let s0, s1; s0 = input.charAt(peg$currPos); if (peg$r12.test(s0)) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e89); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -4424,30 +3060,36 @@ function peg$parse(input, options) { peg$result = peg$startRuleFunction(); - if (options.peg$library) { - return /** @type {any} */ ({ - peg$result, - peg$currPos, - peg$FAILED, - peg$maxFailExpected, - peg$maxFailPos - }); - } - if (peg$result !== peg$FAILED && peg$currPos === input.length) { - return peg$result; - } else { + const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length); + function peg$throw() { if (peg$result !== peg$FAILED && peg$currPos < input.length) { peg$fail(peg$endExpectation()); } throw peg$buildStructuredError( peg$maxFailExpected, - peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) ); } + if (options.peg$library) { + return /** @type {any} */ ({ + peg$result, + peg$currPos, + peg$FAILED, + peg$maxFailExpected, + peg$maxFailPos, + peg$success, + peg$throw: peg$success ? undefined : peg$throw, + }); + } + if (peg$success) { + return peg$result; + } else { + peg$throw(); + } } const peg$allowedStartRules = [ diff --git a/src/libs/SearchParser/baseRules.peggy b/src/libs/SearchParser/baseRules.peggy index cc6f3e9fbfcb..ad60a1a0959d 100644 --- a/src/libs/SearchParser/baseRules.peggy +++ b/src/libs/SearchParser/baseRules.peggy @@ -157,7 +157,8 @@ groupQuarter = "group-quarter"i &wordBoundary { return "gr operator "operator" - = (":" / "=") { return "eq"; } + = "*:" { return "contains"; } + / (":" / "=") { return "eq"; } / "!=" { return "neq"; } / ">=" { return "gte"; } / ">" { return "gt"; } @@ -167,7 +168,7 @@ operator "operator" filterOperator = o:operator { if (nameOperator) { - expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found + expectingNestedQuote = (o === "eq" || o === "contains"); } isColumnsContext = false; return o; diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index 897055c3bebd..f38d92cffd86 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -1,4 +1,4 @@ -// @generated by Peggy 4.0.3. +// @generated by Peggy 5.0.6. // // https://peggyjs.org/ @@ -12,624 +12,615 @@ return { operator, left, right }; } -function peg$subclass(child, parent) { - function C() { this.constructor = child; } - C.prototype = parent.prototype; - child.prototype = new C(); -} - -function peg$SyntaxError(message, expected, found, location) { - var self = Error.call(this, message); - // istanbul ignore next Check is a necessary evil to support older environments - if (Object.setPrototypeOf) { - Object.setPrototypeOf(self, peg$SyntaxError.prototype); - } - self.expected = expected; - self.found = found; - self.location = location; - self.name = "SyntaxError"; - return self; -} +class peg$SyntaxError extends SyntaxError { + constructor(message, expected, found, location) { + super(message); + this.expected = expected; + this.found = found; + this.location = location; + this.name = "SyntaxError"; + } + + format(sources) { + let str = "Error: " + this.message; + if (this.location) { + let src = null; + const st = sources.find(s => s.source === this.location.source); + if (st) { + src = st.text.split(/\r\n|\n|\r/g); + } + const s = this.location.start; + const offset_s = (this.location.source && (typeof this.location.source.offset === "function")) + ? this.location.source.offset(s) + : s; + const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; + if (src) { + const e = this.location.end; + const filler = "".padEnd(offset_s.line.toString().length, " "); + const line = src[s.line - 1]; + const last = s.line === e.line ? e.column : line.length + 1; + const hatLen = (last - s.column) || 1; + str += "\n --> " + loc + "\n" + + filler + " |\n" + + offset_s.line + " | " + line + "\n" + + filler + " | " + "".padEnd(s.column - 1, " ") + + "".padEnd(hatLen, "^"); + } else { + str += "\n at " + loc; + } + } + return str; + } -peg$subclass(peg$SyntaxError, Error); + static buildMessage(expected, found) { + function hex(ch) { + return ch.codePointAt(0).toString(16).toUpperCase(); + } -function peg$padEnd(str, targetLength, padString) { - padString = padString || " "; - if (str.length > targetLength) { return str; } - targetLength -= str.length; - padString += padString.repeat(targetLength); - return str + padString.slice(0, targetLength); -} + const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode") + ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu") + : null; + function unicodeEscape(s) { + if (nonPrintable) { + return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}"); + } + return s; + } -peg$SyntaxError.prototype.format = function(sources) { - var str = "Error: " + this.message; - if (this.location) { - var src = null; - var k; - for (k = 0; k < sources.length; k++) { - if (sources[k].source === this.location.source) { - src = sources[k].text.split(/\r\n|\n|\r/g); - break; - } - } - var s = this.location.start; - var offset_s = (this.location.source && (typeof this.location.source.offset === "function")) - ? this.location.source.offset(s) - : s; - var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; - if (src) { - var e = this.location.end; - var filler = peg$padEnd("", offset_s.line.toString().length, ' '); - var line = src[s.line - 1]; - var last = s.line === e.line ? e.column : line.length + 1; - var hatLen = (last - s.column) || 1; - str += "\n --> " + loc + "\n" - + filler + " |\n" - + offset_s.line + " | " + line + "\n" - + filler + " | " + peg$padEnd("", s.column - 1, ' ') - + peg$padEnd("", hatLen, "^"); - } else { - str += "\n at " + loc; - } - } - return str; -}; + function literalEscape(s) { + return unicodeEscape(s + .replace(/\\/g, "\\\\") + .replace(/"/g, "\\\"") + .replace(/\0/g, "\\0") + .replace(/\t/g, "\\t") + .replace(/\n/g, "\\n") + .replace(/\r/g, "\\r") + .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch)) + .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); + } -peg$SyntaxError.buildMessage = function(expected, found) { - var DESCRIBE_EXPECTATION_FNS = { - literal: function(expectation) { - return "\"" + literalEscape(expectation.text) + "\""; - }, + function classEscape(s) { + return unicodeEscape(s + .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, ch => "\\x0" + hex(ch)) + .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); + } - class: function(expectation) { - var escapedParts = expectation.parts.map(function(part) { - return Array.isArray(part) - ? classEscape(part[0]) + "-" + classEscape(part[1]) - : classEscape(part); - }); + const DESCRIBE_EXPECTATION_FNS = { + literal(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, - return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]"; - }, + class(expectation) { + const escapedParts = expectation.parts.map( + part => (Array.isArray(part) + ? classEscape(part[0]) + "-" + classEscape(part[1]) + : classEscape(part)) + ); - any: function() { - return "any character"; - }, + return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : ""); + }, - end: function() { - return "end of input"; - }, + any() { + return "any character"; + }, - other: function(expectation) { - return expectation.description; - } - }; + end() { + return "end of input"; + }, - function hex(ch) { - return ch.charCodeAt(0).toString(16).toUpperCase(); - } + other(expectation) { + return expectation.description; + }, + }; - function literalEscape(s) { - return s - .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(ch) { return "\\x0" + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); - } + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } - function classEscape(s) { - return s - .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(ch) { return "\\x0" + hex(ch); }) - .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); - } + function describeExpected(expected) { + const descriptions = expected.map(describeExpectation); + descriptions.sort(); - function describeExpectation(expectation) { - return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); - } + if (descriptions.length > 0) { + let j = 1; + for (let i = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } + } + descriptions.length = j; + } - function describeExpected(expected) { - var descriptions = expected.map(describeExpectation); - var i, j; + switch (descriptions.length) { + case 1: + return descriptions[0]; - descriptions.sort(); + case 2: + return descriptions[0] + " or " + descriptions[1]; - if (descriptions.length > 0) { - for (i = 1, j = 1; i < descriptions.length; i++) { - if (descriptions[i - 1] !== descriptions[i]) { - descriptions[j] = descriptions[i]; - j++; - } + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; } - descriptions.length = j; } - switch (descriptions.length) { - case 1: - return descriptions[0]; - - case 2: - return descriptions[0] + " or " + descriptions[1]; - - default: - return descriptions.slice(0, -1).join(", ") - + ", or " - + descriptions[descriptions.length - 1]; + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; } - } - function describeFound(found) { - return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; } - - return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; -}; +} function peg$parse(input, options) { options = options !== undefined ? options : {}; - var peg$FAILED = {}; - var peg$source = options.grammarSource; - - var peg$startRuleFunctions = { query: peg$parsequery }; - var peg$startRuleFunction = peg$parsequery; - - var peg$c0 = "-"; - var peg$c1 = "report-field"; - var peg$c2 = "reportfield"; - var peg$c3 = ","; - var peg$c4 = "date"; - var peg$c5 = "amount"; - var peg$c6 = "merchant"; - var peg$c7 = "description"; - var peg$c8 = "reportid"; - var peg$c9 = "report-id"; - var peg$c10 = "keyword"; - var peg$c11 = "in"; - var peg$c12 = "currency"; - var peg$c13 = "groupCurrency"; - var peg$c14 = "group-currency"; - var peg$c15 = "tag"; - var peg$c16 = "category"; - var peg$c17 = "to"; - var peg$c18 = "exporter"; - var peg$c19 = "payer"; - var peg$c20 = "taxrate"; - var peg$c21 = "tax-rate"; - var peg$c22 = "cardID"; - var peg$c23 = "card"; - var peg$c24 = "from"; - var peg$c25 = "attendee"; - var peg$c26 = "expenseType"; - var peg$c27 = "expense-type"; - var peg$c28 = "withdrawalType"; - var peg$c29 = "withdrawal-type"; - var peg$c30 = "withdrawalid"; - var peg$c31 = "withdrawal-id"; - var peg$c32 = "billable"; - var peg$c33 = "reimbursable"; - var peg$c34 = "type"; - var peg$c35 = "status"; - var peg$c36 = "sortBy"; - var peg$c37 = "sort-by"; - var peg$c38 = "sortOrder"; - var peg$c39 = "sort-order"; - var peg$c40 = "policyID"; - var peg$c41 = "workspace"; - var peg$c42 = "submitted"; - var peg$c43 = "approved"; - var peg$c44 = "paid"; - var peg$c45 = "exported"; - var peg$c46 = "posted"; - var peg$c47 = "withdrawn"; - var peg$c48 = "groupby"; - var peg$c49 = "group-by"; - var peg$c50 = "limit"; - var peg$c51 = "feed"; - var peg$c52 = "title"; - var peg$c53 = "assignee"; - var peg$c54 = "createdby"; - var peg$c55 = "created-by"; - var peg$c56 = "action"; - var peg$c57 = "total"; - var peg$c58 = "has"; - var peg$c59 = "is"; - var peg$c60 = "purchaseamount"; - var peg$c61 = "purchase-amount"; - var peg$c62 = "purchasecurrency"; - var peg$c63 = "purchase-currency"; - var peg$c64 = "columns"; - var peg$c65 = "view"; - var peg$c66 = "per-diem"; - var peg$c67 = "drafts"; - var peg$c68 = "draft"; - var peg$c69 = "original-amount"; - var peg$c70 = "tax"; - var peg$c71 = "policy-name"; - var peg$c72 = "bank-account"; - var peg$c73 = "long-report-id"; - var peg$c74 = "exported-to"; - var peg$c75 = "exportedto"; - var peg$c76 = "exchange-rate"; - var peg$c77 = "reimbursable-total"; - var peg$c78 = "non-reimbursable-total"; - var peg$c79 = "group-from"; - var peg$c80 = "group-expenses"; - var peg$c81 = "group-total"; - var peg$c82 = "group-card"; - var peg$c83 = "group-feed"; - var peg$c84 = "group-bank-account"; - var peg$c85 = "group-withdrawn"; - var peg$c86 = "group-withdrawal-id"; - var peg$c87 = "group-category"; - var peg$c88 = "group-tag"; - var peg$c89 = "group-merchant"; - var peg$c90 = "group-month"; - var peg$c91 = "group-week"; - var peg$c92 = "group-year"; - var peg$c93 = "group-quarter"; - var peg$c94 = "!="; - var peg$c95 = ">="; - var peg$c96 = ">"; - var peg$c97 = "<="; - var peg$c98 = "<"; - var peg$c99 = "\u201C"; - var peg$c100 = "\u201D"; - var peg$c101 = "\""; - - var peg$r0 = /^[^ \t\r\n\xA0]/; - var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; - var peg$r2 = /^[:=]/; - var peg$r3 = /^[^ ,\t\n\r\xA0]/; - var peg$r4 = /^[ \t\r\n\xA0]/; - var peg$r5 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; - var peg$r6 = /^["\u201C-\u201D]/; - var peg$r7 = /^[^"\u201D\u201C\r\n]/; - var peg$r8 = /^[ \t\n\r\xA0a-zA-Z0-9]/; - var peg$r9 = /^[a-zA-Z0-9]/; - var peg$r10 = /^[ \t\n\r\xA0]/; - var peg$r11 = /^[ \t\n\r\xA0a-zA-Z]/; - var peg$r12 = /^[,]/; - var peg$r13 = /^[ \t\n\r\xA0,]/; - - var peg$e0 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], true, false); - var peg$e1 = peg$literalExpectation("-", false); - var peg$e2 = peg$literalExpectation("report-field", true); - var peg$e3 = peg$literalExpectation("reportfield", true); - var peg$e4 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false); - var peg$e5 = peg$anyExpectation(); - var peg$e6 = peg$otherExpectation("key"); - var peg$e7 = peg$otherExpectation("default key"); - var peg$e8 = peg$literalExpectation(",", false); - var peg$e9 = peg$literalExpectation("date", true); - var peg$e10 = peg$literalExpectation("amount", true); - var peg$e11 = peg$literalExpectation("merchant", true); - var peg$e12 = peg$literalExpectation("description", true); - var peg$e13 = peg$literalExpectation("reportid", true); - var peg$e14 = peg$literalExpectation("report-id", true); - var peg$e15 = peg$literalExpectation("keyword", true); - var peg$e16 = peg$literalExpectation("in", true); - var peg$e17 = peg$literalExpectation("currency", true); - var peg$e18 = peg$literalExpectation("groupCurrency", false); - var peg$e19 = peg$literalExpectation("group-currency", true); - var peg$e20 = peg$literalExpectation("tag", true); - var peg$e21 = peg$literalExpectation("category", true); - var peg$e22 = peg$literalExpectation("to", true); - var peg$e23 = peg$literalExpectation("exporter", true); - var peg$e24 = peg$literalExpectation("payer", true); - var peg$e25 = peg$literalExpectation("taxRate", true); - var peg$e26 = peg$literalExpectation("tax-rate", true); - var peg$e27 = peg$literalExpectation("cardID", false); - var peg$e28 = peg$literalExpectation("card", true); - var peg$e29 = peg$literalExpectation("from", true); - var peg$e30 = peg$literalExpectation("attendee", true); - var peg$e31 = peg$literalExpectation("expenseType", false); - var peg$e32 = peg$literalExpectation("expense-type", true); - var peg$e33 = peg$literalExpectation("withdrawalType", false); - var peg$e34 = peg$literalExpectation("withdrawal-type", true); - var peg$e35 = peg$literalExpectation("withdrawalID", true); - var peg$e36 = peg$literalExpectation("withdrawal-id", true); - var peg$e37 = peg$literalExpectation("billable", true); - var peg$e38 = peg$literalExpectation("reimbursable", true); - var peg$e39 = peg$literalExpectation("type", true); - var peg$e40 = peg$literalExpectation("status", true); - var peg$e41 = peg$literalExpectation("sortBy", false); - var peg$e42 = peg$literalExpectation("sort-by", true); - var peg$e43 = peg$literalExpectation("sortOrder", false); - var peg$e44 = peg$literalExpectation("sort-order", true); - var peg$e45 = peg$literalExpectation("policyID", false); - var peg$e46 = peg$literalExpectation("workspace", true); - var peg$e47 = peg$literalExpectation("submitted", true); - var peg$e48 = peg$literalExpectation("approved", true); - var peg$e49 = peg$literalExpectation("paid", true); - var peg$e50 = peg$literalExpectation("exported", true); - var peg$e51 = peg$literalExpectation("posted", true); - var peg$e52 = peg$literalExpectation("withdrawn", true); - var peg$e53 = peg$literalExpectation("groupBy", true); - var peg$e54 = peg$literalExpectation("group-by", true); - var peg$e55 = peg$literalExpectation("limit", true); - var peg$e56 = peg$literalExpectation("feed", true); - var peg$e57 = peg$literalExpectation("title", true); - var peg$e58 = peg$literalExpectation("assignee", true); - var peg$e59 = peg$literalExpectation("createdBy", true); - var peg$e60 = peg$literalExpectation("created-by", true); - var peg$e61 = peg$literalExpectation("action", true); - var peg$e62 = peg$literalExpectation("total", true); - var peg$e63 = peg$literalExpectation("has", true); - var peg$e64 = peg$literalExpectation("is", true); - var peg$e65 = peg$literalExpectation("purchaseAmount", true); - var peg$e66 = peg$literalExpectation("purchase-amount", true); - var peg$e67 = peg$literalExpectation("purchaseCurrency", true); - var peg$e68 = peg$literalExpectation("purchase-currency", true); - var peg$e69 = peg$literalExpectation("columns", true); - var peg$e70 = peg$literalExpectation("view", true); - var peg$e71 = peg$literalExpectation("per-diem", true); - var peg$e72 = peg$literalExpectation("drafts", true); - var peg$e73 = peg$literalExpectation("draft", true); - var peg$e74 = peg$literalExpectation("original-amount", true); - var peg$e75 = peg$literalExpectation("tax", true); - var peg$e76 = peg$literalExpectation("policy-name", true); - var peg$e77 = peg$literalExpectation("bank-account", true); - var peg$e78 = peg$literalExpectation("long-report-id", true); - var peg$e79 = peg$literalExpectation("exported-to", true); - var peg$e80 = peg$classExpectation([":", "="], false, false); - var peg$e81 = peg$literalExpectation("exportedTo", true); - var peg$e82 = peg$literalExpectation("exchange-rate", true); - var peg$e83 = peg$literalExpectation("reimbursable-total", true); - var peg$e84 = peg$literalExpectation("non-reimbursable-total", true); - var peg$e85 = peg$literalExpectation("group-from", true); - var peg$e86 = peg$literalExpectation("group-expenses", true); - var peg$e87 = peg$literalExpectation("group-total", true); - var peg$e88 = peg$literalExpectation("group-card", true); - var peg$e89 = peg$literalExpectation("group-feed", true); - var peg$e90 = peg$literalExpectation("group-bank-account", true); - var peg$e91 = peg$literalExpectation("group-withdrawn", true); - var peg$e92 = peg$literalExpectation("group-withdrawal-id", true); - var peg$e93 = peg$literalExpectation("group-category", true); - var peg$e94 = peg$literalExpectation("group-tag", true); - var peg$e95 = peg$literalExpectation("group-merchant", true); - var peg$e96 = peg$literalExpectation("group-month", true); - var peg$e97 = peg$literalExpectation("group-week", true); - var peg$e98 = peg$literalExpectation("group-year", true); - var peg$e99 = peg$literalExpectation("group-quarter", true); - var peg$e100 = peg$otherExpectation("operator"); - var peg$e101 = peg$literalExpectation("!=", false); - var peg$e102 = peg$literalExpectation(">=", false); - var peg$e103 = peg$literalExpectation(">", false); - var peg$e104 = peg$literalExpectation("<=", false); - var peg$e105 = peg$literalExpectation("<", false); - var peg$e106 = peg$otherExpectation("word"); - var peg$e107 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e108 = peg$otherExpectation("whitespace"); - var peg$e109 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); - var peg$e110 = peg$otherExpectation("quote"); - var peg$e111 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); - var peg$e112 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); - var peg$e113 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); - var peg$e114 = peg$literalExpectation("\u201C", false); - var peg$e115 = peg$literalExpectation("\u201D", false); - var peg$e116 = peg$literalExpectation("\"", false); - var peg$e117 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e118 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); - var peg$e119 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); - var peg$e120 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); - var peg$e121 = peg$classExpectation([","], false, false); - var peg$e122 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); - - var peg$f0 = function(filters) { return applyDefaults(filters); }; - var peg$f1 = function(head, tail) { - const allFilters = [head, ...tail.map(([_, filter]) => filter)] - .filter(Boolean) - .filter((filter) => filter.right); - rawFilterList = allFilters.map(createRawFilter).filter(Boolean); - - const filtersWithoutDefaults = allFilters.filter((filter) => !filter.isDefault); - - if (!filtersWithoutDefaults.length) { - return null; - } - - const keywords = filtersWithoutDefaults.filter( - (filter) => - filter.left === "keyword" || filter.right?.left === "keyword" - ); - const nonKeywords = filtersWithoutDefaults.filter( - (filter) => - filter.left !== "keyword" && filter.right?.left !== "keyword" - ); - - const keywordFilter = buildFilter( - "eq", - "keyword", - keywords - .map((filter) => filter.right.replaceAll(/^(['"])(.*)\1$/g, "$2")) - .flat() - ); - if (keywordFilter.right.length > 0) { - nonKeywords.push(keywordFilter); - } - return nonKeywords.reduce((result, filter) => - buildFilter("and", result, filter) - ); - }; - var peg$f2 = function(key, op, value) { - updateDefaultValues(key, value); - return {...buildFilter(op, key, value), isDefault: true}; - }; - var peg$f3 = function(value) { - //handle no-breaking space - let word; - if (Array.isArray(value)) { - word = value.join(""); - } else { - word = value; - } - return buildFilter("eq", "keyword", word); - }; - var peg$f4 = function(neg, field, op, values) { - expectingNestedQuote = false; nameOperator = false; + const peg$FAILED = {}; + const peg$source = options.grammarSource; - const key = field; - let operator = op; + const peg$startRuleFunctions = { + query: peg$parsequery, + }; + let peg$startRuleFunction = peg$parsequery; + + const peg$c0 = "-"; + const peg$c1 = "report-field"; + const peg$c2 = "reportfield"; + const peg$c3 = ","; + const peg$c4 = "date"; + const peg$c5 = "amount"; + const peg$c6 = "merchant"; + const peg$c7 = "description"; + const peg$c8 = "reportid"; + const peg$c9 = "report-id"; + const peg$c10 = "keyword"; + const peg$c11 = "in"; + const peg$c12 = "currency"; + const peg$c13 = "groupCurrency"; + const peg$c14 = "group-currency"; + const peg$c15 = "tag"; + const peg$c16 = "category"; + const peg$c17 = "to"; + const peg$c18 = "exporter"; + const peg$c19 = "payer"; + const peg$c20 = "taxrate"; + const peg$c21 = "tax-rate"; + const peg$c22 = "cardID"; + const peg$c23 = "card"; + const peg$c24 = "from"; + const peg$c25 = "attendee"; + const peg$c26 = "expenseType"; + const peg$c27 = "expense-type"; + const peg$c28 = "withdrawalType"; + const peg$c29 = "withdrawal-type"; + const peg$c30 = "withdrawalid"; + const peg$c31 = "withdrawal-id"; + const peg$c32 = "billable"; + const peg$c33 = "reimbursable"; + const peg$c34 = "type"; + const peg$c35 = "status"; + const peg$c36 = "sortBy"; + const peg$c37 = "sort-by"; + const peg$c38 = "sortOrder"; + const peg$c39 = "sort-order"; + const peg$c40 = "policyID"; + const peg$c41 = "workspace"; + const peg$c42 = "submitted"; + const peg$c43 = "approved"; + const peg$c44 = "paid"; + const peg$c45 = "exported"; + const peg$c46 = "posted"; + const peg$c47 = "withdrawn"; + const peg$c48 = "groupby"; + const peg$c49 = "group-by"; + const peg$c50 = "limit"; + const peg$c51 = "feed"; + const peg$c52 = "title"; + const peg$c53 = "assignee"; + const peg$c54 = "createdby"; + const peg$c55 = "created-by"; + const peg$c56 = "action"; + const peg$c57 = "total"; + const peg$c58 = "has"; + const peg$c59 = "is"; + const peg$c60 = "purchaseamount"; + const peg$c61 = "purchase-amount"; + const peg$c62 = "purchasecurrency"; + const peg$c63 = "purchase-currency"; + const peg$c64 = "columns"; + const peg$c65 = "view"; + const peg$c66 = "per-diem"; + const peg$c67 = "drafts"; + const peg$c68 = "draft"; + const peg$c69 = "original-amount"; + const peg$c70 = "tax"; + const peg$c71 = "policy-name"; + const peg$c72 = "bank-account"; + const peg$c73 = "long-report-id"; + const peg$c74 = "exported-to"; + const peg$c75 = "exportedto"; + const peg$c76 = "exchange-rate"; + const peg$c77 = "reimbursable-total"; + const peg$c78 = "non-reimbursable-total"; + const peg$c79 = "group-from"; + const peg$c80 = "group-expenses"; + const peg$c81 = "group-total"; + const peg$c82 = "group-card"; + const peg$c83 = "group-feed"; + const peg$c84 = "group-bank-account"; + const peg$c85 = "group-withdrawn"; + const peg$c86 = "group-withdrawal-id"; + const peg$c87 = "group-category"; + const peg$c88 = "group-tag"; + const peg$c89 = "group-merchant"; + const peg$c90 = "group-month"; + const peg$c91 = "group-week"; + const peg$c92 = "group-year"; + const peg$c93 = "group-quarter"; + const peg$c94 = "*:"; + const peg$c95 = "!="; + const peg$c96 = ">="; + const peg$c97 = ">"; + const peg$c98 = "<="; + const peg$c99 = "<"; + const peg$c100 = "\u201C"; + const peg$c101 = "\u201D"; + const peg$c102 = "\""; + + const peg$r0 = /^[^ \t\r\n\xA0]/; + const peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; + const peg$r2 = /^[:=]/; + const peg$r3 = /^[^ ,\t\n\r\xA0]/; + const peg$r4 = /^[ \t\r\n\xA0]/; + const peg$r5 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; + const peg$r6 = /^["\u201C-\u201D]/; + const peg$r7 = /^[^"\u201D\u201C\r\n]/; + const peg$r8 = /^[ \t\n\r\xA0a-zA-Z0-9]/; + const peg$r9 = /^[a-zA-Z0-9]/; + const peg$r10 = /^[ \t\n\r\xA0]/; + const peg$r11 = /^[ \t\n\r\xA0a-zA-Z]/; + const peg$r12 = /^[,]/; + const peg$r13 = /^[ \t\n\r\xA0,]/; + + const peg$e0 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], true, false, false); + const peg$e1 = peg$literalExpectation("-", false); + const peg$e2 = peg$literalExpectation("report-field", true); + const peg$e3 = peg$literalExpectation("reportfield", true); + const peg$e4 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false, false); + const peg$e5 = peg$anyExpectation(); + const peg$e6 = peg$otherExpectation("key"); + const peg$e7 = peg$otherExpectation("default key"); + const peg$e8 = peg$literalExpectation(",", false); + const peg$e9 = peg$literalExpectation("date", true); + const peg$e10 = peg$literalExpectation("amount", true); + const peg$e11 = peg$literalExpectation("merchant", true); + const peg$e12 = peg$literalExpectation("description", true); + const peg$e13 = peg$literalExpectation("reportid", true); + const peg$e14 = peg$literalExpectation("report-id", true); + const peg$e15 = peg$literalExpectation("keyword", true); + const peg$e16 = peg$literalExpectation("in", true); + const peg$e17 = peg$literalExpectation("currency", true); + const peg$e18 = peg$literalExpectation("groupCurrency", false); + const peg$e19 = peg$literalExpectation("group-currency", true); + const peg$e20 = peg$literalExpectation("tag", true); + const peg$e21 = peg$literalExpectation("category", true); + const peg$e22 = peg$literalExpectation("to", true); + const peg$e23 = peg$literalExpectation("exporter", true); + const peg$e24 = peg$literalExpectation("payer", true); + const peg$e25 = peg$literalExpectation("taxRate", true); + const peg$e26 = peg$literalExpectation("tax-rate", true); + const peg$e27 = peg$literalExpectation("cardID", false); + const peg$e28 = peg$literalExpectation("card", true); + const peg$e29 = peg$literalExpectation("from", true); + const peg$e30 = peg$literalExpectation("attendee", true); + const peg$e31 = peg$literalExpectation("expenseType", false); + const peg$e32 = peg$literalExpectation("expense-type", true); + const peg$e33 = peg$literalExpectation("withdrawalType", false); + const peg$e34 = peg$literalExpectation("withdrawal-type", true); + const peg$e35 = peg$literalExpectation("withdrawalID", true); + const peg$e36 = peg$literalExpectation("withdrawal-id", true); + const peg$e37 = peg$literalExpectation("billable", true); + const peg$e38 = peg$literalExpectation("reimbursable", true); + const peg$e39 = peg$literalExpectation("type", true); + const peg$e40 = peg$literalExpectation("status", true); + const peg$e41 = peg$literalExpectation("sortBy", false); + const peg$e42 = peg$literalExpectation("sort-by", true); + const peg$e43 = peg$literalExpectation("sortOrder", false); + const peg$e44 = peg$literalExpectation("sort-order", true); + const peg$e45 = peg$literalExpectation("policyID", false); + const peg$e46 = peg$literalExpectation("workspace", true); + const peg$e47 = peg$literalExpectation("submitted", true); + const peg$e48 = peg$literalExpectation("approved", true); + const peg$e49 = peg$literalExpectation("paid", true); + const peg$e50 = peg$literalExpectation("exported", true); + const peg$e51 = peg$literalExpectation("posted", true); + const peg$e52 = peg$literalExpectation("withdrawn", true); + const peg$e53 = peg$literalExpectation("groupBy", true); + const peg$e54 = peg$literalExpectation("group-by", true); + const peg$e55 = peg$literalExpectation("limit", true); + const peg$e56 = peg$literalExpectation("feed", true); + const peg$e57 = peg$literalExpectation("title", true); + const peg$e58 = peg$literalExpectation("assignee", true); + const peg$e59 = peg$literalExpectation("createdBy", true); + const peg$e60 = peg$literalExpectation("created-by", true); + const peg$e61 = peg$literalExpectation("action", true); + const peg$e62 = peg$literalExpectation("total", true); + const peg$e63 = peg$literalExpectation("has", true); + const peg$e64 = peg$literalExpectation("is", true); + const peg$e65 = peg$literalExpectation("purchaseAmount", true); + const peg$e66 = peg$literalExpectation("purchase-amount", true); + const peg$e67 = peg$literalExpectation("purchaseCurrency", true); + const peg$e68 = peg$literalExpectation("purchase-currency", true); + const peg$e69 = peg$literalExpectation("columns", true); + const peg$e70 = peg$literalExpectation("view", true); + const peg$e71 = peg$literalExpectation("per-diem", true); + const peg$e72 = peg$literalExpectation("drafts", true); + const peg$e73 = peg$literalExpectation("draft", true); + const peg$e74 = peg$literalExpectation("original-amount", true); + const peg$e75 = peg$literalExpectation("tax", true); + const peg$e76 = peg$literalExpectation("policy-name", true); + const peg$e77 = peg$literalExpectation("bank-account", true); + const peg$e78 = peg$literalExpectation("long-report-id", true); + const peg$e79 = peg$literalExpectation("exported-to", true); + const peg$e80 = peg$classExpectation([":", "="], false, false, false); + const peg$e81 = peg$literalExpectation("exportedTo", true); + const peg$e82 = peg$literalExpectation("exchange-rate", true); + const peg$e83 = peg$literalExpectation("reimbursable-total", true); + const peg$e84 = peg$literalExpectation("non-reimbursable-total", true); + const peg$e85 = peg$literalExpectation("group-from", true); + const peg$e86 = peg$literalExpectation("group-expenses", true); + const peg$e87 = peg$literalExpectation("group-total", true); + const peg$e88 = peg$literalExpectation("group-card", true); + const peg$e89 = peg$literalExpectation("group-feed", true); + const peg$e90 = peg$literalExpectation("group-bank-account", true); + const peg$e91 = peg$literalExpectation("group-withdrawn", true); + const peg$e92 = peg$literalExpectation("group-withdrawal-id", true); + const peg$e93 = peg$literalExpectation("group-category", true); + const peg$e94 = peg$literalExpectation("group-tag", true); + const peg$e95 = peg$literalExpectation("group-merchant", true); + const peg$e96 = peg$literalExpectation("group-month", true); + const peg$e97 = peg$literalExpectation("group-week", true); + const peg$e98 = peg$literalExpectation("group-year", true); + const peg$e99 = peg$literalExpectation("group-quarter", true); + const peg$e100 = peg$otherExpectation("operator"); + const peg$e101 = peg$literalExpectation("*:", false); + const peg$e102 = peg$literalExpectation("!=", false); + const peg$e103 = peg$literalExpectation(">=", false); + const peg$e104 = peg$literalExpectation(">", false); + const peg$e105 = peg$literalExpectation("<=", false); + const peg$e106 = peg$literalExpectation("<", false); + const peg$e107 = peg$otherExpectation("word"); + const peg$e108 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false, false); + const peg$e109 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false, false); + const peg$e110 = peg$otherExpectation("quote"); + const peg$e111 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false, false); + const peg$e112 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false, false); + const peg$e113 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false, false); + const peg$e114 = peg$literalExpectation("\u201C", false); + const peg$e115 = peg$literalExpectation("\u201D", false); + const peg$e116 = peg$literalExpectation("\"", false); + const peg$e117 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); + const peg$e118 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); + const peg$e119 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false, false); + const peg$e120 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false, false); + const peg$e121 = peg$classExpectation([","], false, false, false); + const peg$e122 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false, false); + + function peg$f0(filters) { return applyDefaults(filters); } + function peg$f1(head, tail) { + const allFilters = [head, ...tail.map(([_, filter]) => filter)] + .filter(Boolean) + .filter((filter) => filter.right); + rawFilterList = allFilters.map(createRawFilter).filter(Boolean); + + const filtersWithoutDefaults = allFilters.filter((filter) => !filter.isDefault); + + if (!filtersWithoutDefaults.length) { + return null; + } - // Apply negation only when "-" is present and the key can be negated - if (neg && !nonNegatableKeys.has(key)) { - if (operator === "eq") { - operator = "neq"; - } + const keywords = filtersWithoutDefaults.filter( + (filter) => + filter.left === "keyword" || filter.right?.left === "keyword" + ); + const nonKeywords = filtersWithoutDefaults.filter( + (filter) => + filter.left !== "keyword" && filter.right?.left !== "keyword" + ); + + const keywordFilter = buildFilter( + "eq", + "keyword", + keywords + .map((filter) => filter.right.replaceAll(/^(['"])(.*)\1$/g, "$2")) + .flat() + ); + if (keywordFilter.right.length > 0) { + nonKeywords.push(keywordFilter); + } + return nonKeywords.reduce((result, filter) => + buildFilter("and", result, filter) + ); + } + function peg$f2(key, op, value) { + updateDefaultValues(key, value); + return {...buildFilter(op, key, value), isDefault: true}; + } + function peg$f3(value) { + //handle no-breaking space + let word; + if (Array.isArray(value)) { + word = value.join(""); + } else { + word = value; + } + return buildFilter("eq", "keyword", word); + } + function peg$f4(neg, field, op, values) { + expectingNestedQuote = false; nameOperator = false; + + const key = field; + let operator = op; + + // Apply negation only when "-" is present and the key can be negated + if (neg && !nonNegatableKeys.has(key)) { + if (operator === "eq") { + operator = "neq"; } + } - return buildFilter(operator, key, values); - }; - var peg$f5 = function(rest) { - const suffix = rest.replaceAll(/^-+/g, ""); - return "reportField-" + (suffix ? suffix : ""); - }; - var peg$f6 = function(k) { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); - return k; - }; - var peg$f7 = function(parts, empty) { - const value = parts.flat().filter(Boolean).map((word) => { - if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { - return word.slice(1, -1); - } - return word; - }); - if (value.length > 1) { - return value.filter((word) => word.length > 0); + return buildFilter(operator, key, values); + } + function peg$f5(rest) { + const suffix = rest.replaceAll(/^-+/g, ""); + return "reportField-" + (suffix ? suffix : ""); + } + function peg$f6(k) { + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + return k; + } + function peg$f7(parts, empty) { + const value = parts.flat().filter(Boolean).map((word) => { + if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { + return word.slice(1, -1); } - return value[0]; - }; - var peg$f8 = function() { return "date"; }; - var peg$f9 = function() { return "amount"; }; - var peg$f10 = function() { return "merchant"; }; - var peg$f11 = function() { return "description"; }; - var peg$f12 = function() { return "reportID"; }; - var peg$f13 = function() { return "keyword"; }; - var peg$f14 = function() { return "in"; }; - var peg$f15 = function() { return "currency"; }; - var peg$f16 = function() { return "groupCurrency"; }; - var peg$f17 = function() { return "tag"; }; - var peg$f18 = function() { return "category"; }; - var peg$f19 = function() { return "to"; }; - var peg$f20 = function() { return "exporter"; }; - var peg$f21 = function() { return "payer"; }; - var peg$f22 = function() { return "taxRate"; }; - var peg$f23 = function() { return "cardID"; }; - var peg$f24 = function() { return "from"; }; - var peg$f25 = function() {return "attendee"}; - var peg$f26 = function() { return "expenseType"; }; - var peg$f27 = function() { return "withdrawalType"; }; - var peg$f28 = function() { return "withdrawalID"; }; - var peg$f29 = function() { return "billable"; }; - var peg$f30 = function() { return "reimbursable"; }; - var peg$f31 = function() { return "type"; }; - var peg$f32 = function() { return "status"; }; - var peg$f33 = function() { return "sortBy"; }; - var peg$f34 = function() { return "sortOrder"; }; - var peg$f35 = function() { return "policyID"; }; - var peg$f36 = function() { return "submitted"; }; - var peg$f37 = function() { return "approved"; }; - var peg$f38 = function() { return "paid"; }; - var peg$f39 = function() { return "exported"; }; - var peg$f40 = function() { return "posted"; }; - var peg$f41 = function() { return "withdrawn"; }; - var peg$f42 = function() { return "groupBy"; }; - var peg$f43 = function() { return "limit"; }; - var peg$f44 = function() { return "feed"; }; - var peg$f45 = function() { return "title"; }; - var peg$f46 = function() { return "assignee"; }; - var peg$f47 = function() { return "createdBy"; }; - var peg$f48 = function() { return "action"; }; - var peg$f49 = function() {return "total"; }; - var peg$f50 = function() {return "has"; }; - var peg$f51 = function() {return "is"; }; - var peg$f52 = function() {return "purchaseAmount"}; - var peg$f53 = function() {return "purchaseCurrency"}; - var peg$f54 = function() { - isColumnsContext = true; - return "columns"; -}; - var peg$f55 = function() {return "view"}; - var peg$f56 = function() { return isColumnsContext; }; - var peg$f57 = function() { return "perDiem"; }; - var peg$f58 = function() { return "drafts"; }; - var peg$f59 = function() { return "originalamount"; }; - var peg$f60 = function() { return "taxAmount"; }; - var peg$f61 = function() { return "taxrate"; }; - var peg$f62 = function() { return "policyname"; }; - var peg$f63 = function() { return "withdrawalID"; }; - var peg$f64 = function() { return "bankAccount"; }; - var peg$f65 = function() { return "reportID"; }; - var peg$f66 = function() { return "base62ReportID"; }; - var peg$f67 = function() { return "exportedto"; }; - var peg$f68 = function() { return "exportedTo"; }; - var peg$f69 = function() { return "exportedTo"; }; - var peg$f70 = function() { return "exchangeRate"; }; - var peg$f71 = function() { return "reimbursableTotal"; }; - var peg$f72 = function() { return "nonReimbursableTotal"; }; - var peg$f73 = function() { return "groupFrom"; }; - var peg$f74 = function() { return "groupExpenses"; }; - var peg$f75 = function() { return "groupTotal"; }; - var peg$f76 = function() { return "groupCard"; }; - var peg$f77 = function() { return "groupFeed"; }; - var peg$f78 = function() { return "groupBankAccount"; }; - var peg$f79 = function() { return "groupWithdrawn"; }; - var peg$f80 = function() { return "groupWithdrawalID"; }; - var peg$f81 = function() { return "groupCategory"; }; - var peg$f82 = function() { return "groupTag"; }; - var peg$f83 = function() { return "groupMerchant"; }; - var peg$f84 = function() { return "groupmonth"; }; - var peg$f85 = function() { return "groupweek"; }; - var peg$f86 = function() { return "groupyear"; }; - var peg$f87 = function() { return "groupquarter"; }; - var peg$f88 = function() { return "eq"; }; - var peg$f89 = function() { return "neq"; }; - var peg$f90 = function() { return "gte"; }; - var peg$f91 = function() { return "gt"; }; - var peg$f92 = function() { return "lte"; }; - var peg$f93 = function() { return "lt"; }; - var peg$f94 = function(o) { - if (nameOperator) { - expectingNestedQuote = (o === "eq"); // Use simple parser if no valid operator is found - } - isColumnsContext = false; - return o; - }; - var peg$f95 = function(chars) { return chars.join("").trim(); }; - var peg$f96 = function() { - isColumnsContext = false; - return "and"; -}; - var peg$f97 = function() { return expectingNestedQuote; }; - var peg$f98 = function(start, inner, end) { //handle no-breaking space - return [...start, '"', ...inner, '"', ...end].join(""); - }; - var peg$f99 = function(start) {return "“"}; - var peg$f100 = function(start) {return "”"}; - var peg$f101 = function(start) {return "\""}; - var peg$f102 = function(start, inner, end) { + return word; + }); + if (value.length > 1) { + return value.filter((word) => word.length > 0); + } + return value[0]; + } + function peg$f8() { return "date"; } + function peg$f9() { return "amount"; } + function peg$f10() { return "merchant"; } + function peg$f11() { return "description"; } + function peg$f12() { return "reportID"; } + function peg$f13() { return "keyword"; } + function peg$f14() { return "in"; } + function peg$f15() { return "currency"; } + function peg$f16() { return "groupCurrency"; } + function peg$f17() { return "tag"; } + function peg$f18() { return "category"; } + function peg$f19() { return "to"; } + function peg$f20() { return "exporter"; } + function peg$f21() { return "payer"; } + function peg$f22() { return "taxRate"; } + function peg$f23() { return "cardID"; } + function peg$f24() { return "from"; } + function peg$f25() {return "attendee" } + function peg$f26() { return "expenseType"; } + function peg$f27() { return "withdrawalType"; } + function peg$f28() { return "withdrawalID"; } + function peg$f29() { return "billable"; } + function peg$f30() { return "reimbursable"; } + function peg$f31() { return "type"; } + function peg$f32() { return "status"; } + function peg$f33() { return "sortBy"; } + function peg$f34() { return "sortOrder"; } + function peg$f35() { return "policyID"; } + function peg$f36() { return "submitted"; } + function peg$f37() { return "approved"; } + function peg$f38() { return "paid"; } + function peg$f39() { return "exported"; } + function peg$f40() { return "posted"; } + function peg$f41() { return "withdrawn"; } + function peg$f42() { return "groupBy"; } + function peg$f43() { return "limit"; } + function peg$f44() { return "feed"; } + function peg$f45() { return "title"; } + function peg$f46() { return "assignee"; } + function peg$f47() { return "createdBy"; } + function peg$f48() { return "action"; } + function peg$f49() {return "total"; } + function peg$f50() {return "has"; } + function peg$f51() {return "is"; } + function peg$f52() {return "purchaseAmount" } + function peg$f53() {return "purchaseCurrency" } + function peg$f54() { + isColumnsContext = true; + return "columns"; + } + function peg$f55() {return "view" } + function peg$f56() { return isColumnsContext; } + function peg$f57() { return "perDiem"; } + function peg$f58() { return "drafts"; } + function peg$f59() { return "originalamount"; } + function peg$f60() { return "taxAmount"; } + function peg$f61() { return "taxrate"; } + function peg$f62() { return "policyname"; } + function peg$f63() { return "withdrawalID"; } + function peg$f64() { return "bankAccount"; } + function peg$f65() { return "reportID"; } + function peg$f66() { return "base62ReportID"; } + function peg$f67() { return "exportedto"; } + function peg$f68() { return "exportedTo"; } + function peg$f69() { return "exportedTo"; } + function peg$f70() { return "exchangeRate"; } + function peg$f71() { return "reimbursableTotal"; } + function peg$f72() { return "nonReimbursableTotal"; } + function peg$f73() { return "groupFrom"; } + function peg$f74() { return "groupExpenses"; } + function peg$f75() { return "groupTotal"; } + function peg$f76() { return "groupCard"; } + function peg$f77() { return "groupFeed"; } + function peg$f78() { return "groupBankAccount"; } + function peg$f79() { return "groupWithdrawn"; } + function peg$f80() { return "groupWithdrawalID"; } + function peg$f81() { return "groupCategory"; } + function peg$f82() { return "groupTag"; } + function peg$f83() { return "groupMerchant"; } + function peg$f84() { return "groupmonth"; } + function peg$f85() { return "groupweek"; } + function peg$f86() { return "groupyear"; } + function peg$f87() { return "groupquarter"; } + function peg$f88() { return "contains"; } + function peg$f89() { return "eq"; } + function peg$f90() { return "neq"; } + function peg$f91() { return "gte"; } + function peg$f92() { return "gt"; } + function peg$f93() { return "lte"; } + function peg$f94() { return "lt"; } + function peg$f95(o) { + if (nameOperator) { + expectingNestedQuote = (o === "eq" || o === "contains"); + } + isColumnsContext = false; + return o; + } + function peg$f96(chars) { return chars.join("").trim(); } + function peg$f97() { + isColumnsContext = false; + return "and"; + } + function peg$f98() { return expectingNestedQuote; } + function peg$f99(start, inner, end) { //handle no-breaking space + return [...start, '"', ...inner, '"', ...end].join(""); + } + function peg$f100(start) {return "“" } + function peg$f101(start) {return "”" } + function peg$f102(start) {return "\"" } + function peg$f103(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); -}; - var peg$currPos = options.peg$currPos | 0; - var peg$savedPos = peg$currPos; - var peg$posDetailsCache = [{ line: 1, column: 1 }]; - var peg$maxFailPos = peg$currPos; - var peg$maxFailExpected = options.peg$maxFailExpected || []; - var peg$silentFails = options.peg$silentFails | 0; + } + let peg$currPos = options.peg$currPos | 0; + let peg$savedPos = peg$currPos; + const peg$posDetailsCache = [{ line: 1, column: 1 }]; + let peg$maxFailPos = peg$currPos; + let peg$maxFailExpected = options.peg$maxFailExpected || []; + let peg$silentFails = options.peg$silentFails | 0; - var peg$result; + let peg$result; if (options.startRule) { if (!(options.startRule in peg$startRuleFunctions)) { @@ -651,7 +642,7 @@ function peg$parse(input, options) { return { source: peg$source, start: peg$savedPos, - end: peg$currPos + end: peg$currPos, }; } @@ -679,12 +670,20 @@ function peg$parse(input, options) { throw peg$buildSimpleError(message, location); } + function peg$getUnicode(pos = peg$currPos) { + const cp = input.codePointAt(pos); + if (cp === undefined) { + return ""; + } + return String.fromCodePoint(cp); + } + function peg$literalExpectation(text, ignoreCase) { - return { type: "literal", text: text, ignoreCase: ignoreCase }; + return { type: "literal", text, ignoreCase }; } - function peg$classExpectation(parts, inverted, ignoreCase) { - return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; + function peg$classExpectation(parts, inverted, ignoreCase, unicode) { + return { type: "class", parts, inverted, ignoreCase, unicode }; } function peg$anyExpectation() { @@ -696,12 +695,12 @@ function peg$parse(input, options) { } function peg$otherExpectation(description) { - return { type: "other", description: description }; + return { type: "other", description }; } function peg$computePosDetails(pos) { - var details = peg$posDetailsCache[pos]; - var p; + let details = peg$posDetailsCache[pos]; + let p; if (details) { return details; @@ -716,7 +715,7 @@ function peg$parse(input, options) { details = peg$posDetailsCache[p]; details = { line: details.line, - column: details.column + column: details.column, }; while (p < pos) { @@ -737,21 +736,21 @@ function peg$parse(input, options) { } function peg$computeLocation(startPos, endPos, offset) { - var startPosDetails = peg$computePosDetails(startPos); - var endPosDetails = peg$computePosDetails(endPos); + const startPosDetails = peg$computePosDetails(startPos); + const endPosDetails = peg$computePosDetails(endPos); - var res = { + const res = { source: peg$source, start: { offset: startPos, line: startPosDetails.line, - column: startPosDetails.column + column: startPosDetails.column, }, end: { offset: endPos, line: endPosDetails.line, - column: endPosDetails.column - } + column: endPosDetails.column, + }, }; if (offset && peg$source && (typeof peg$source.offset === "function")) { res.start = peg$source.offset(res.start); @@ -785,7 +784,7 @@ function peg$parse(input, options) { } function peg$parsequery() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -801,7 +800,7 @@ function peg$parse(input, options) { } function peg$parsefilterList() { - var s0, s1, s2, s3, s4, s5; + let s0, s1, s2, s3, s4, s5; s0 = peg$currPos; s1 = peg$parsefilter(); @@ -841,7 +840,7 @@ function peg$parse(input, options) { } function peg$parsefilter() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parsestandardFilter(); @@ -862,7 +861,7 @@ function peg$parse(input, options) { } function peg$parsedefaultFilter() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; s1 = peg$parse_(); @@ -893,7 +892,7 @@ function peg$parse(input, options) { } function peg$parsefreeTextFilter() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -935,7 +934,7 @@ function peg$parse(input, options) { } function peg$parsestandardFilter() { - var s0, s1, s2, s3, s4, s5, s6, s7; + let s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = peg$parse_(); @@ -976,12 +975,12 @@ function peg$parse(input, options) { } function peg$parsereportFieldDynamic() { - var s0, s1, s2, s3, s4, s5, s6, s7; + let s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c1) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e2); } @@ -989,7 +988,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c2) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e3); } @@ -1097,7 +1096,7 @@ function peg$parse(input, options) { } function peg$parsekey() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1238,7 +1237,7 @@ function peg$parse(input, options) { } function peg$parsefilterKey() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parsekey(); @@ -1252,7 +1251,7 @@ function peg$parse(input, options) { } function peg$parsedefaultKey() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1297,7 +1296,7 @@ function peg$parse(input, options) { } function peg$parseidentifier() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; s1 = []; @@ -1420,12 +1419,12 @@ function peg$parse(input, options) { } function peg$parsedate() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c4) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e9); } @@ -1440,12 +1439,12 @@ function peg$parse(input, options) { } function peg$parseamount() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c5) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e10); } @@ -1460,12 +1459,12 @@ function peg$parse(input, options) { } function peg$parsemerchant() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c6) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e11); } @@ -1480,12 +1479,12 @@ function peg$parse(input, options) { } function peg$parsedescription() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c7) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e12); } @@ -1500,11 +1499,11 @@ function peg$parse(input, options) { } function peg$parsereportID() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 8); if (s0.toLowerCase() === peg$c8) { - peg$currPos += 8; + peg$currPos += (8); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e13); } @@ -1513,7 +1512,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -1529,12 +1528,12 @@ function peg$parse(input, options) { } function peg$parsekeyword() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c10) { - peg$currPos += 7; + peg$currPos += (7); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e15); } @@ -1549,12 +1548,12 @@ function peg$parse(input, options) { } function peg$parsein() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c11) { - peg$currPos += 2; + peg$currPos += (2); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e16); } @@ -1569,12 +1568,12 @@ function peg$parse(input, options) { } function peg$parsecurrency() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c12) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e17); } @@ -1589,7 +1588,7 @@ function peg$parse(input, options) { } function peg$parsegroupCurrency() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 13) === peg$c13) { s0 = peg$c13; @@ -1602,7 +1601,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c14) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e19); } @@ -1618,12 +1617,12 @@ function peg$parse(input, options) { } function peg$parsetag() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c15) { - peg$currPos += 3; + peg$currPos += (3); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e20); } @@ -1638,12 +1637,12 @@ function peg$parse(input, options) { } function peg$parsecategory() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c16) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e21); } @@ -1658,12 +1657,12 @@ function peg$parse(input, options) { } function peg$parseto() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c17) { - peg$currPos += 2; + peg$currPos += (2); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e22); } @@ -1678,12 +1677,12 @@ function peg$parse(input, options) { } function peg$parseexporter() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c18) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e23); } @@ -1698,12 +1697,12 @@ function peg$parse(input, options) { } function peg$parsepayer() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c19) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e24); } @@ -1718,11 +1717,11 @@ function peg$parse(input, options) { } function peg$parsetaxRate() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 7); if (s0.toLowerCase() === peg$c20) { - peg$currPos += 7; + peg$currPos += (7); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e25); } @@ -1731,7 +1730,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e26); } @@ -1747,7 +1746,7 @@ function peg$parse(input, options) { } function peg$parsecardID() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 6) === peg$c22) { s0 = peg$c22; @@ -1760,7 +1759,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c23) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e28); } @@ -1776,12 +1775,12 @@ function peg$parse(input, options) { } function peg$parsefrom() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c24) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e29); } @@ -1796,12 +1795,12 @@ function peg$parse(input, options) { } function peg$parseattendee() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c25) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e30); } @@ -1816,7 +1815,7 @@ function peg$parse(input, options) { } function peg$parseexpenseType() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 11) === peg$c26) { s0 = peg$c26; @@ -1829,7 +1828,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c27) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e32); } @@ -1845,7 +1844,7 @@ function peg$parse(input, options) { } function peg$parsewithdrawalType() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 14) === peg$c28) { s0 = peg$c28; @@ -1858,7 +1857,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c29) { - peg$currPos += 15; + peg$currPos += (15); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e34); } @@ -1874,11 +1873,11 @@ function peg$parse(input, options) { } function peg$parsewithdrawalID() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 12); if (s0.toLowerCase() === peg$c30) { - peg$currPos += 12; + peg$currPos += (12); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e35); } @@ -1887,7 +1886,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c31) { - peg$currPos += 13; + peg$currPos += (13); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e36); } @@ -1903,12 +1902,12 @@ function peg$parse(input, options) { } function peg$parsebillable() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c32) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e37); } @@ -1923,12 +1922,12 @@ function peg$parse(input, options) { } function peg$parsereimbursable() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c33) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e38); } @@ -1943,12 +1942,12 @@ function peg$parse(input, options) { } function peg$parsetype() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c34) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e39); } @@ -1963,12 +1962,12 @@ function peg$parse(input, options) { } function peg$parsestatus() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c35) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e40); } @@ -1983,7 +1982,7 @@ function peg$parse(input, options) { } function peg$parsesortBy() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 6) === peg$c36) { s0 = peg$c36; @@ -1996,7 +1995,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c37) { - peg$currPos += 7; + peg$currPos += (7); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e42); } @@ -2012,7 +2011,7 @@ function peg$parse(input, options) { } function peg$parsesortOrder() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 9) === peg$c38) { s0 = peg$c38; @@ -2025,7 +2024,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c39) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e44); } @@ -2041,7 +2040,7 @@ function peg$parse(input, options) { } function peg$parsepolicyID() { - var s0, s1; + let s0, s1; if (input.substr(peg$currPos, 8) === peg$c40) { s0 = peg$c40; @@ -2054,7 +2053,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c41) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e46); } @@ -2070,12 +2069,12 @@ function peg$parse(input, options) { } function peg$parsesubmitted() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c42) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e47); } @@ -2090,12 +2089,12 @@ function peg$parse(input, options) { } function peg$parseapproved() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c43) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e48); } @@ -2110,12 +2109,12 @@ function peg$parse(input, options) { } function peg$parsepaid() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c44) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e49); } @@ -2130,12 +2129,12 @@ function peg$parse(input, options) { } function peg$parseexported() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c45) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e50); } @@ -2150,12 +2149,12 @@ function peg$parse(input, options) { } function peg$parseposted() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c46) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e51); } @@ -2170,12 +2169,12 @@ function peg$parse(input, options) { } function peg$parsewithdrawn() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c47) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e52); } @@ -2190,11 +2189,11 @@ function peg$parse(input, options) { } function peg$parsegroupBy() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 7); if (s0.toLowerCase() === peg$c48) { - peg$currPos += 7; + peg$currPos += (7); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e53); } @@ -2203,7 +2202,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c49) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e54); } @@ -2219,12 +2218,12 @@ function peg$parse(input, options) { } function peg$parselimit() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c50) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e55); } @@ -2239,12 +2238,12 @@ function peg$parse(input, options) { } function peg$parsefeed() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c51) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e56); } @@ -2259,12 +2258,12 @@ function peg$parse(input, options) { } function peg$parsetitle() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c52) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e57); } @@ -2279,12 +2278,12 @@ function peg$parse(input, options) { } function peg$parseassignee() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c53) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e58); } @@ -2299,11 +2298,11 @@ function peg$parse(input, options) { } function peg$parsecreatedBy() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 9); if (s0.toLowerCase() === peg$c54) { - peg$currPos += 9; + peg$currPos += (9); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e59); } @@ -2312,7 +2311,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c55) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e60); } @@ -2328,12 +2327,12 @@ function peg$parse(input, options) { } function peg$parseaction() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c56) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e61); } @@ -2348,12 +2347,12 @@ function peg$parse(input, options) { } function peg$parsetotal() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c57) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e62); } @@ -2368,12 +2367,12 @@ function peg$parse(input, options) { } function peg$parsehas() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c58) { - peg$currPos += 3; + peg$currPos += (3); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e63); } @@ -2388,12 +2387,12 @@ function peg$parse(input, options) { } function peg$parseis() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c59) { - peg$currPos += 2; + peg$currPos += (2); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e64); } @@ -2408,11 +2407,11 @@ function peg$parse(input, options) { } function peg$parsepurchaseAmount() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 14); if (s0.toLowerCase() === peg$c60) { - peg$currPos += 14; + peg$currPos += (14); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e65); } @@ -2421,7 +2420,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c61) { - peg$currPos += 15; + peg$currPos += (15); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e66); } @@ -2437,11 +2436,11 @@ function peg$parse(input, options) { } function peg$parsepurchaseCurrency() { - var s0, s1; + let s0, s1; s0 = input.substr(peg$currPos, 16); if (s0.toLowerCase() === peg$c62) { - peg$currPos += 16; + peg$currPos += (16); } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e67); } @@ -2450,7 +2449,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); if (s1.toLowerCase() === peg$c63) { - peg$currPos += 17; + peg$currPos += (17); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e68); } @@ -2466,12 +2465,12 @@ function peg$parse(input, options) { } function peg$parsecolumns() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c64) { - peg$currPos += 7; + peg$currPos += (7); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e69); } @@ -2486,12 +2485,12 @@ function peg$parse(input, options) { } function peg$parseview() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c65) { - peg$currPos += 4; + peg$currPos += (4); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e70); } @@ -2506,7 +2505,7 @@ function peg$parse(input, options) { } function peg$parsevalues() { - var s0, s1, s2; + let s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; @@ -2540,7 +2539,7 @@ function peg$parse(input, options) { } function peg$parsecolumnsValues() { - var s0; + let s0; s0 = peg$parseoriginalAmount(); if (s0 === peg$FAILED) { @@ -2626,12 +2625,12 @@ function peg$parse(input, options) { } function peg$parseperDiem() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c66) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e71); } @@ -2663,12 +2662,12 @@ function peg$parse(input, options) { } function peg$parsedraft() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c67) { - peg$currPos += 6; + peg$currPos += (6); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e72); } @@ -2676,7 +2675,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c68) { - peg$currPos += 5; + peg$currPos += (5); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e73); } @@ -2709,12 +2708,12 @@ function peg$parse(input, options) { } function peg$parseoriginalAmount() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c69) { - peg$currPos += 15; + peg$currPos += (15); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e74); } @@ -2746,12 +2745,12 @@ function peg$parse(input, options) { } function peg$parsetaxAmount() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c70) { - peg$currPos += 3; + peg$currPos += (3); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e75); } @@ -2783,12 +2782,12 @@ function peg$parse(input, options) { } function peg$parsetaxRateValue() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c21) { - peg$currPos += 8; + peg$currPos += (8); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e26); } @@ -2820,12 +2819,12 @@ function peg$parse(input, options) { } function peg$parsepolicyName() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c71) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e76); } @@ -2857,12 +2856,12 @@ function peg$parse(input, options) { } function peg$parsewithdrawalId() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c31) { - peg$currPos += 13; + peg$currPos += (13); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e36); } @@ -2894,12 +2893,12 @@ function peg$parse(input, options) { } function peg$parsebankAccount() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c72) { - peg$currPos += 12; + peg$currPos += (12); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e77); } @@ -2931,12 +2930,12 @@ function peg$parse(input, options) { } function peg$parsereportId() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c73) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e78); } @@ -2968,12 +2967,12 @@ function peg$parse(input, options) { } function peg$parsebase62ReportId() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -3005,12 +3004,12 @@ function peg$parse(input, options) { } function peg$parseexportedToColumnValue() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c74) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e79); } @@ -3042,7 +3041,7 @@ function peg$parse(input, options) { } function peg$parseexportedToKeyEnd() { - var s0, s1, s2; + let s0, s1, s2; s0 = peg$parsewordBoundary(); if (s0 === peg$FAILED) { @@ -3068,12 +3067,12 @@ function peg$parse(input, options) { } function peg$parseexportedTo() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c75) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e81); } @@ -3104,7 +3103,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c74) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e79); } @@ -3137,12 +3136,12 @@ function peg$parse(input, options) { } function peg$parseexchangeRate() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c76) { - peg$currPos += 13; + peg$currPos += (13); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e82); } @@ -3174,12 +3173,12 @@ function peg$parse(input, options) { } function peg$parsereimbursableTotal() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); if (s1.toLowerCase() === peg$c77) { - peg$currPos += 18; + peg$currPos += (18); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e83); } @@ -3211,12 +3210,12 @@ function peg$parse(input, options) { } function peg$parsenonReimbursableTotal() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); if (s1.toLowerCase() === peg$c78) { - peg$currPos += 22; + peg$currPos += (22); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e84); } @@ -3248,12 +3247,12 @@ function peg$parse(input, options) { } function peg$parsegroupFrom() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c79) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e85); } @@ -3285,12 +3284,12 @@ function peg$parse(input, options) { } function peg$parsegroupExpenses() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c80) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e86); } @@ -3322,12 +3321,12 @@ function peg$parse(input, options) { } function peg$parsegroupTotal() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c81) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e87); } @@ -3359,12 +3358,12 @@ function peg$parse(input, options) { } function peg$parsegroupCard() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c82) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e88); } @@ -3396,12 +3395,12 @@ function peg$parse(input, options) { } function peg$parsegroupFeed() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c83) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e89); } @@ -3433,12 +3432,12 @@ function peg$parse(input, options) { } function peg$parsegroupBankAccount() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); if (s1.toLowerCase() === peg$c84) { - peg$currPos += 18; + peg$currPos += (18); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e90); } @@ -3470,12 +3469,12 @@ function peg$parse(input, options) { } function peg$parsegroupWithdrawn() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c85) { - peg$currPos += 15; + peg$currPos += (15); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e91); } @@ -3507,12 +3506,12 @@ function peg$parse(input, options) { } function peg$parsegroupWithdrawalId() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); if (s1.toLowerCase() === peg$c86) { - peg$currPos += 19; + peg$currPos += (19); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e92); } @@ -3544,12 +3543,12 @@ function peg$parse(input, options) { } function peg$parsegroupCategory() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c87) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e93); } @@ -3581,12 +3580,12 @@ function peg$parse(input, options) { } function peg$parsegroupTag() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c88) { - peg$currPos += 9; + peg$currPos += (9); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e94); } @@ -3618,12 +3617,12 @@ function peg$parse(input, options) { } function peg$parsegroupMerchant() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c89) { - peg$currPos += 14; + peg$currPos += (14); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e95); } @@ -3655,12 +3654,12 @@ function peg$parse(input, options) { } function peg$parsegroupMonth() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c90) { - peg$currPos += 11; + peg$currPos += (11); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e96); } @@ -3692,12 +3691,12 @@ function peg$parse(input, options) { } function peg$parsegroupWeek() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c91) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e97); } @@ -3729,12 +3728,12 @@ function peg$parse(input, options) { } function peg$parsegroupYear() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c92) { - peg$currPos += 10; + peg$currPos += (10); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e98); } @@ -3766,12 +3765,12 @@ function peg$parse(input, options) { } function peg$parsegroupQuarter() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c93) { - peg$currPos += 13; + peg$currPos += (13); } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e99); } @@ -3803,16 +3802,16 @@ function peg$parse(input, options) { } function peg$parseoperator() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = peg$currPos; - s1 = input.charAt(peg$currPos); - if (peg$r2.test(s1)) { - peg$currPos++; + if (input.substr(peg$currPos, 2) === peg$c94) { + s1 = peg$c94; + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -3821,12 +3820,12 @@ function peg$parse(input, options) { s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c94) { - s1 = peg$c94; - peg$currPos += 2; + s1 = input.charAt(peg$currPos); + if (peg$r2.test(s1)) { + peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e101); } + if (peg$silentFails === 0) { peg$fail(peg$e80); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; @@ -3849,9 +3848,9 @@ function peg$parse(input, options) { s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 62) { + if (input.substr(peg$currPos, 2) === peg$c96) { s1 = peg$c96; - peg$currPos++; + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e103); } @@ -3863,9 +3862,9 @@ function peg$parse(input, options) { s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c97) { + if (input.charCodeAt(peg$currPos) === 62) { s1 = peg$c97; - peg$currPos += 2; + peg$currPos++; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e104); } @@ -3877,9 +3876,9 @@ function peg$parse(input, options) { s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.charCodeAt(peg$currPos) === 60) { + if (input.substr(peg$currPos, 2) === peg$c98) { s1 = peg$c98; - peg$currPos++; + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e105); } @@ -3889,6 +3888,21 @@ function peg$parse(input, options) { s1 = peg$f93(); } s0 = s1; + if (s0 === peg$FAILED) { + s0 = peg$currPos; + if (input.charCodeAt(peg$currPos) === 60) { + s1 = peg$c99; + peg$currPos++; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e106); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f94(); + } + s0 = s1; + } } } } @@ -3904,13 +3918,13 @@ function peg$parse(input, options) { } function peg$parsefilterOperator() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f94(s1); + s1 = peg$f95(s1); } s0 = s1; @@ -3918,7 +3932,7 @@ function peg$parse(input, options) { } function peg$parsealphanumeric() { - var s0, s1, s2; + let s0, s1, s2; peg$silentFails++; s0 = peg$currPos; @@ -3928,7 +3942,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -3938,7 +3952,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } } } else { @@ -3946,32 +3960,32 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f95(s1); + s1 = peg$f96(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e106); } + if (peg$silentFails === 0) { peg$fail(peg$e107); } } return s0; } function peg$parselogicalAnd() { - var s0, s1; + let s0, s1; s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f96(); + s1 = peg$f97(); s0 = s1; return s0; } function peg$parse_() { - var s0, s1; + let s0, s1; peg$silentFails++; s0 = []; @@ -3993,18 +4007,16 @@ function peg$parse(input, options) { } } peg$silentFails--; - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e108); } return s0; } function peg$parsequotedString() { - var s0, s1, s2; + let s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f97(); + s1 = peg$f98(); if (s1) { s1 = undefined; } else { @@ -4031,7 +4043,7 @@ function peg$parse(input, options) { } function peg$parsesimpleQuotedString() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -4093,7 +4105,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -4102,11 +4114,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e107); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } } peg$savedPos = s0; - s0 = peg$f98(s1, s3, s5); + s0 = peg$f99(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4125,7 +4137,7 @@ function peg$parse(input, options) { } function peg$parsenestedQuotedString() { - var s0, s1, s2, s3, s4, s5, s6; + let s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -4177,7 +4189,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c99; + s6 = peg$c100; peg$currPos++; } else { s6 = peg$FAILED; @@ -4185,7 +4197,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f99(s1); + s4 = peg$f100(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4208,7 +4220,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c100; + s6 = peg$c101; peg$currPos++; } else { s6 = peg$FAILED; @@ -4216,7 +4228,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f100(s1); + s4 = peg$f101(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4239,7 +4251,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c101; + s6 = peg$c102; peg$currPos++; } else { s6 = peg$FAILED; @@ -4247,7 +4259,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f101(s1); + s4 = peg$f102(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4282,7 +4294,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c99; + s6 = peg$c100; peg$currPos++; } else { s6 = peg$FAILED; @@ -4290,7 +4302,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f99(s1); + s4 = peg$f100(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4313,7 +4325,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c100; + s6 = peg$c101; peg$currPos++; } else { s6 = peg$FAILED; @@ -4321,7 +4333,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f100(s1); + s4 = peg$f101(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4344,7 +4356,7 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c101; + s6 = peg$c102; peg$currPos++; } else { s6 = peg$FAILED; @@ -4352,7 +4364,7 @@ function peg$parse(input, options) { } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f101(s1); + s4 = peg$f102(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -4368,7 +4380,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f102(s1, s3, s4); + s0 = peg$f103(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -4387,7 +4399,7 @@ function peg$parse(input, options) { } function peg$parseclosingQuote() { - var s0, s1, s2, s3; + let s0, s1, s2, s3; s0 = peg$currPos; s1 = input.charAt(peg$currPos); @@ -4424,7 +4436,7 @@ function peg$parse(input, options) { } function peg$parsevalidClosingCondition() { - var s0, s1, s2, s3, s4; + let s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = []; @@ -4562,7 +4574,7 @@ function peg$parse(input, options) { } function peg$parsewordBoundary() { - var s0, s1; + let s0, s1; s0 = input.charAt(peg$currPos); if (peg$r13.test(s0)) { @@ -4749,30 +4761,36 @@ function peg$parse(input, options) { peg$result = peg$startRuleFunction(); - if (options.peg$library) { - return /** @type {any} */ ({ - peg$result, - peg$currPos, - peg$FAILED, - peg$maxFailExpected, - peg$maxFailPos - }); - } - if (peg$result !== peg$FAILED && peg$currPos === input.length) { - return peg$result; - } else { + const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length); + function peg$throw() { if (peg$result !== peg$FAILED && peg$currPos < input.length) { peg$fail(peg$endExpectation()); } throw peg$buildStructuredError( peg$maxFailExpected, - peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null, peg$maxFailPos < input.length ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) ); } + if (options.peg$library) { + return /** @type {any} */ ({ + peg$result, + peg$currPos, + peg$FAILED, + peg$maxFailExpected, + peg$maxFailPos, + peg$success, + peg$throw: peg$success ? undefined : peg$throw, + }); + } + if (peg$success) { + return peg$result; + } else { + peg$throw(); + } } const peg$allowedStartRules = [ diff --git a/src/libs/SearchQueryUtils.ts b/src/libs/SearchQueryUtils.ts index c8971df55ea6..ec4f17efa6f2 100644 --- a/src/libs/SearchQueryUtils.ts +++ b/src/libs/SearchQueryUtils.ts @@ -688,7 +688,14 @@ function buildQueryStringFromFilterFormValues(filterValues: Partial CONST.SEARCH.SYNTAX_FILTER_KEYS[key] === filterKey); if (keyInCorrectForm) { - return `${prefix}${CONST.SEARCH.SYNTAX_FILTER_KEYS[keyInCorrectForm]}:${sanitizeSearchValue(filterValue as string)}`; + // For merchant filters: + // - Non-negated: use *: (contains) for partial matching + // - Negated: use : (eq) so parser correctly converts to neq operator + const operator = + filterKey === FILTER_KEYS.MERCHANT && !isNegated + ? operatorToCharMap[CONST.SEARCH.SYNTAX_OPERATORS.CONTAINS] + : operatorToCharMap[CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO]; + return `${prefix}${CONST.SEARCH.SYNTAX_FILTER_KEYS[keyInCorrectForm]}${operator}${sanitizeSearchValue(filterValue as string)}`; } } if ((filterKey === FILTER_KEYS.REPORT_ID || filterKey === FILTER_KEYS.WITHDRAWAL_ID) && filterValue) { diff --git a/tests/unit/Search/SearchQueryUtilsTest.ts b/tests/unit/Search/SearchQueryUtilsTest.ts index 444323137e27..9cc14a24a681 100644 --- a/tests/unit/Search/SearchQueryUtilsTest.ts +++ b/tests/unit/Search/SearchQueryUtilsTest.ts @@ -182,7 +182,7 @@ describe('SearchQueryUtils', () => { const result = buildQueryStringFromFilterFormValues(filterValues); - expect(result).toEqual('type:expense policyID:67890 merchant:Amazon description:Electronics laptop category:electronics,gadgets'); + expect(result).toEqual('type:expense policyID:67890 merchant*:Amazon description:Electronics laptop category:electronics,gadgets'); }); test('currencies and categories', () => { @@ -323,7 +323,7 @@ describe('SearchQueryUtils', () => { const result = buildQueryStringFromFilterFormValues(filterValues, {sortBy: 'amount', sortOrder: 'asc', limit: 25}); - expect(result).toEqual('sortBy:amount sortOrder:asc type:expense merchant:Amazon limit:25'); + expect(result).toEqual('sortBy:amount sortOrder:asc type:expense merchant*:Amazon limit:25'); }); test('omits limit when not provided', () => { From 390eed169ff76619626343b14b98caabf10cd0c8 Mon Sep 17 00:00:00 2001 From: Phuoc Hiep Date: Fri, 20 Mar 2026 00:56:35 +0700 Subject: [PATCH 03/38] Regenerate parser files with Peggy 4.0.3 to match package.json Previously generated with Peggy 5.0.6 which caused AssertionError on compile. Regenerated using npm run generate-search-parser and generate-autocomplete-parser with installed Peggy 4.0.3. --- src/libs/SearchParser/autocompleteParser.js | 3232 +++++++++++++------ src/libs/SearchParser/searchParser.js | 1684 +++++----- 2 files changed, 3146 insertions(+), 1770 deletions(-) diff --git a/src/libs/SearchParser/autocompleteParser.js b/src/libs/SearchParser/autocompleteParser.js index 8bbd481fb0ab..ff2b2ebe4878 100644 --- a/src/libs/SearchParser/autocompleteParser.js +++ b/src/libs/SearchParser/autocompleteParser.js @@ -1,6 +1,7 @@ 'worklet' -// @generated by Peggy 5.0.6. +class peg$SyntaxError{} +// @generated by Peggy 4.0.3. // // https://peggyjs.org/ @@ -10,494 +11,601 @@ // To make changes, edit the corresponding *.peggy files only. // Use the `generate-search-parser` and `generate-autocomplete-parser` scripts to regenerate parsers after modifications. -class peg$SyntaxError extends SyntaxError { - constructor(message, expected, found, location) { - super(message); - this.expected = expected; - this.found = found; - this.location = location; - this.name = "SyntaxError"; - } - - format(sources) { - let str = "Error: " + this.message; - if (this.location) { - let src = null; - const st = sources.find(s => s.source === this.location.source); - if (st) { - src = st.text.split(/\r\n|\n|\r/g); - } - const s = this.location.start; - const offset_s = (this.location.source && (typeof this.location.source.offset === "function")) - ? this.location.source.offset(s) - : s; - const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; - if (src) { - const e = this.location.end; - const filler = "".padEnd(offset_s.line.toString().length, " "); - const line = src[s.line - 1]; - const last = s.line === e.line ? e.column : line.length + 1; - const hatLen = (last - s.column) || 1; - str += "\n --> " + loc + "\n" - + filler + " |\n" - + offset_s.line + " | " + line + "\n" - + filler + " | " + "".padEnd(s.column - 1, " ") - + "".padEnd(hatLen, "^"); - } else { - str += "\n at " + loc; - } - } - return str; - } - - static buildMessage(expected, found) { - function hex(ch) { - return ch.codePointAt(0).toString(16).toUpperCase(); - } - - const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode") - ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu") - : null; - function unicodeEscape(s) { - if (nonPrintable) { - return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}"); - } - return s; - } - - function literalEscape(s) { - return unicodeEscape(s - .replace(/\\/g, "\\\\") - .replace(/"/g, "\\\"") - .replace(/\0/g, "\\0") - .replace(/\t/g, "\\t") - .replace(/\n/g, "\\n") - .replace(/\r/g, "\\r") - .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch)) - .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); - } - - function classEscape(s) { - return unicodeEscape(s - .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, ch => "\\x0" + hex(ch)) - .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); - } - - const DESCRIBE_EXPECTATION_FNS = { - literal(expectation) { - return "\"" + literalEscape(expectation.text) + "\""; - }, +function peg$subclass(child, parent) { + function C() { this.constructor = child; } + C.prototype = parent.prototype; + child.prototype = new C(); +} - class(expectation) { - const escapedParts = expectation.parts.map( - part => (Array.isArray(part) - ? classEscape(part[0]) + "-" + classEscape(part[1]) - : classEscape(part)) - ); +function temporary(message, expected, found, location) { + var self = Error.call(this, message); + // istanbul ignore next Check is a necessary evil to support older environments + if (Object.setPrototypeOf) { + Object.setPrototypeOf(self, peg$SyntaxError.prototype); + } + self.expected = expected; + self.found = found; + self.location = location; + self.name = "SyntaxError"; + return self; +} - return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : ""); - }, - any() { - return "any character"; - }, - end() { - return "end of input"; - }, +function peg$padEnd(str, targetLength, padString) { + padString = padString || " "; + if (str.length > targetLength) { return str; } + targetLength -= str.length; + padString += padString.repeat(targetLength); + return str + padString.slice(0, targetLength); +} - other(expectation) { - return expectation.description; - }, - }; +peg$SyntaxError.prototype.format = function(sources) { + var str = "Error: " + this.message; + if (this.location) { + var src = null; + var k; + for (k = 0; k < sources.length; k++) { + if (sources[k].source === this.location.source) { + src = sources[k].text.split(/\r\n|\n|\r/g); + break; + } + } + var s = this.location.start; + var offset_s = (this.location.source && (typeof this.location.source.offset === "function")) + ? this.location.source.offset(s) + : s; + var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; + if (src) { + var e = this.location.end; + var filler = peg$padEnd("", offset_s.line.toString().length, ' '); + var line = src[s.line - 1]; + var last = s.line === e.line ? e.column : line.length + 1; + var hatLen = (last - s.column) || 1; + str += "\n --> " + loc + "\n" + + filler + " |\n" + + offset_s.line + " | " + line + "\n" + + filler + " | " + peg$padEnd("", s.column - 1, ' ') + + peg$padEnd("", hatLen, "^"); + } else { + str += "\n at " + loc; + } + } + return str; +}; - function describeExpectation(expectation) { - return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, + + class: function(expectation) { + var escapedParts = expectation.parts.map(function(part) { + return Array.isArray(part) + ? classEscape(part[0]) + "-" + classEscape(part[1]) + : classEscape(part); + }); + + return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]"; + }, + + any: function() { + return "any character"; + }, + + end: function() { + return "end of input"; + }, + + other: function(expectation) { + return expectation.description; } + }; - function describeExpected(expected) { - const descriptions = expected.map(describeExpectation); - descriptions.sort(); + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } - if (descriptions.length > 0) { - let j = 1; - for (let i = 1; i < descriptions.length; i++) { - if (descriptions[i - 1] !== descriptions[i]) { - descriptions[j] = descriptions[i]; - j++; - } - } - descriptions.length = j; - } + function literalEscape(s) { + return s + .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(ch) { return "\\x0" + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); + } + + function classEscape(s) { + return s + .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(ch) { return "\\x0" + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); + } + + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } - switch (descriptions.length) { - case 1: - return descriptions[0]; + function describeExpected(expected) { + var descriptions = expected.map(describeExpectation); + var i, j; - case 2: - return descriptions[0] + " or " + descriptions[1]; + descriptions.sort(); - default: - return descriptions.slice(0, -1).join(", ") - + ", or " - + descriptions[descriptions.length - 1]; + if (descriptions.length > 0) { + for (i = 1, j = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } } + descriptions.length = j; } - function describeFound(found) { - return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + switch (descriptions.length) { + case 1: + return descriptions[0]; + + case 2: + return descriptions[0] + " or " + descriptions[1]; + + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; } + } - return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; } -} + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; function peg$parse(input, options) { options = options !== undefined ? options : {}; - const peg$FAILED = {}; - const peg$source = options.grammarSource; + var peg$FAILED = {}; + var peg$source = options.grammarSource; + + var peg$startRuleFunctions = { query: peg$parsequery }; + var peg$startRuleFunction = peg$parsequery; + + var peg$c0 = "-"; + var peg$c1 = "report-field"; + var peg$c2 = "reportfield"; + var peg$c3 = ","; + var peg$c4 = "date"; + var peg$c5 = "amount"; + var peg$c6 = "merchant"; + var peg$c7 = "description"; + var peg$c8 = "reportid"; + var peg$c9 = "report-id"; + var peg$c10 = "keyword"; + var peg$c11 = "in"; + var peg$c12 = "currency"; + var peg$c13 = "groupCurrency"; + var peg$c14 = "group-currency"; + var peg$c15 = "tag"; + var peg$c16 = "category"; + var peg$c17 = "to"; + var peg$c18 = "exporter"; + var peg$c19 = "payer"; + var peg$c20 = "taxrate"; + var peg$c21 = "tax-rate"; + var peg$c22 = "cardID"; + var peg$c23 = "card"; + var peg$c24 = "from"; + var peg$c25 = "attendee"; + var peg$c26 = "expenseType"; + var peg$c27 = "expense-type"; + var peg$c28 = "withdrawalType"; + var peg$c29 = "withdrawal-type"; + var peg$c30 = "withdrawalid"; + var peg$c31 = "withdrawal-id"; + var peg$c32 = "billable"; + var peg$c33 = "reimbursable"; + var peg$c34 = "type"; + var peg$c35 = "status"; + var peg$c36 = "sortBy"; + var peg$c37 = "sort-by"; + var peg$c38 = "sortOrder"; + var peg$c39 = "sort-order"; + var peg$c40 = "policyID"; + var peg$c41 = "workspace"; + var peg$c42 = "submitted"; + var peg$c43 = "approved"; + var peg$c44 = "paid"; + var peg$c45 = "exported"; + var peg$c46 = "posted"; + var peg$c47 = "withdrawn"; + var peg$c48 = "groupby"; + var peg$c49 = "group-by"; + var peg$c50 = "limit"; + var peg$c51 = "feed"; + var peg$c52 = "title"; + var peg$c53 = "assignee"; + var peg$c54 = "createdby"; + var peg$c55 = "created-by"; + var peg$c56 = "action"; + var peg$c57 = "total"; + var peg$c58 = "has"; + var peg$c59 = "is"; + var peg$c60 = "purchaseamount"; + var peg$c61 = "purchase-amount"; + var peg$c62 = "purchasecurrency"; + var peg$c63 = "purchase-currency"; + var peg$c64 = "columns"; + var peg$c65 = "view"; + var peg$c66 = "per-diem"; + var peg$c67 = "drafts"; + var peg$c68 = "draft"; + var peg$c69 = "original-amount"; + var peg$c70 = "tax"; + var peg$c71 = "policy-name"; + var peg$c72 = "bank-account"; + var peg$c73 = "long-report-id"; + var peg$c74 = "exported-to"; + var peg$c75 = "exportedto"; + var peg$c76 = "exchange-rate"; + var peg$c77 = "reimbursable-total"; + var peg$c78 = "non-reimbursable-total"; + var peg$c79 = "group-from"; + var peg$c80 = "group-expenses"; + var peg$c81 = "group-total"; + var peg$c82 = "group-card"; + var peg$c83 = "group-feed"; + var peg$c84 = "group-bank-account"; + var peg$c85 = "group-withdrawn"; + var peg$c86 = "group-withdrawal-id"; + var peg$c87 = "group-category"; + var peg$c88 = "group-tag"; + var peg$c89 = "group-merchant"; + var peg$c90 = "group-month"; + var peg$c91 = "group-week"; + var peg$c92 = "group-year"; + var peg$c93 = "group-quarter"; + var peg$c94 = "*:"; + var peg$c95 = "!="; + var peg$c96 = ">="; + var peg$c97 = ">"; + var peg$c98 = "<="; + var peg$c99 = "<"; + var peg$c100 = "\u201C"; + var peg$c101 = "\u201D"; + var peg$c102 = "\""; + + var peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; + var peg$r1 = /^[:=]/; + var peg$r2 = /^[^ ,\t\n\r\xA0]/; + var peg$r3 = /^[ \t\r\n\xA0]/; + var peg$r4 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; + var peg$r5 = /^["\u201C-\u201D]/; + var peg$r6 = /^[^"\u201D\u201C\r\n]/; + var peg$r7 = /^[ \t\n\r\xA0a-zA-Z0-9]/; + var peg$r8 = /^[a-zA-Z0-9]/; + var peg$r9 = /^[ \t\n\r\xA0]/; + var peg$r10 = /^[ \t\n\r\xA0a-zA-Z]/; + var peg$r11 = /^[,]/; + var peg$r12 = /^[ \t\n\r\xA0,]/; + + var peg$e0 = peg$literalExpectation("-", false); + var peg$e1 = peg$literalExpectation("report-field", true); + var peg$e2 = peg$literalExpectation("reportfield", true); + var peg$e3 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false); + var peg$e4 = peg$anyExpectation(); + var peg$e5 = peg$literalExpectation(",", false); + var peg$e6 = peg$otherExpectation("key"); + var peg$e7 = peg$literalExpectation("date", true); + var peg$e8 = peg$literalExpectation("amount", true); + var peg$e9 = peg$literalExpectation("merchant", true); + var peg$e10 = peg$literalExpectation("description", true); + var peg$e11 = peg$literalExpectation("reportid", true); + var peg$e12 = peg$literalExpectation("report-id", true); + var peg$e13 = peg$literalExpectation("keyword", true); + var peg$e14 = peg$literalExpectation("in", true); + var peg$e15 = peg$literalExpectation("currency", true); + var peg$e16 = peg$literalExpectation("groupCurrency", false); + var peg$e17 = peg$literalExpectation("group-currency", true); + var peg$e18 = peg$literalExpectation("tag", true); + var peg$e19 = peg$literalExpectation("category", true); + var peg$e20 = peg$literalExpectation("to", true); + var peg$e21 = peg$literalExpectation("exporter", true); + var peg$e22 = peg$literalExpectation("payer", true); + var peg$e23 = peg$literalExpectation("taxRate", true); + var peg$e24 = peg$literalExpectation("tax-rate", true); + var peg$e25 = peg$literalExpectation("cardID", false); + var peg$e26 = peg$literalExpectation("card", true); + var peg$e27 = peg$literalExpectation("from", true); + var peg$e28 = peg$literalExpectation("attendee", true); + var peg$e29 = peg$literalExpectation("expenseType", false); + var peg$e30 = peg$literalExpectation("expense-type", true); + var peg$e31 = peg$literalExpectation("withdrawalType", false); + var peg$e32 = peg$literalExpectation("withdrawal-type", true); + var peg$e33 = peg$literalExpectation("withdrawalID", true); + var peg$e34 = peg$literalExpectation("withdrawal-id", true); + var peg$e35 = peg$literalExpectation("billable", true); + var peg$e36 = peg$literalExpectation("reimbursable", true); + var peg$e37 = peg$literalExpectation("type", true); + var peg$e38 = peg$literalExpectation("status", true); + var peg$e39 = peg$literalExpectation("sortBy", false); + var peg$e40 = peg$literalExpectation("sort-by", true); + var peg$e41 = peg$literalExpectation("sortOrder", false); + var peg$e42 = peg$literalExpectation("sort-order", true); + var peg$e43 = peg$literalExpectation("policyID", false); + var peg$e44 = peg$literalExpectation("workspace", true); + var peg$e45 = peg$literalExpectation("submitted", true); + var peg$e46 = peg$literalExpectation("approved", true); + var peg$e47 = peg$literalExpectation("paid", true); + var peg$e48 = peg$literalExpectation("exported", true); + var peg$e49 = peg$literalExpectation("posted", true); + var peg$e50 = peg$literalExpectation("withdrawn", true); + var peg$e51 = peg$literalExpectation("groupBy", true); + var peg$e52 = peg$literalExpectation("group-by", true); + var peg$e53 = peg$literalExpectation("limit", true); + var peg$e54 = peg$literalExpectation("feed", true); + var peg$e55 = peg$literalExpectation("title", true); + var peg$e56 = peg$literalExpectation("assignee", true); + var peg$e57 = peg$literalExpectation("createdBy", true); + var peg$e58 = peg$literalExpectation("created-by", true); + var peg$e59 = peg$literalExpectation("action", true); + var peg$e60 = peg$literalExpectation("total", true); + var peg$e61 = peg$literalExpectation("has", true); + var peg$e62 = peg$literalExpectation("is", true); + var peg$e63 = peg$literalExpectation("purchaseAmount", true); + var peg$e64 = peg$literalExpectation("purchase-amount", true); + var peg$e65 = peg$literalExpectation("purchaseCurrency", true); + var peg$e66 = peg$literalExpectation("purchase-currency", true); + var peg$e67 = peg$literalExpectation("columns", true); + var peg$e68 = peg$literalExpectation("view", true); + var peg$e69 = peg$literalExpectation("per-diem", true); + var peg$e70 = peg$literalExpectation("drafts", true); + var peg$e71 = peg$literalExpectation("draft", true); + var peg$e72 = peg$literalExpectation("original-amount", true); + var peg$e73 = peg$literalExpectation("tax", true); + var peg$e74 = peg$literalExpectation("policy-name", true); + var peg$e75 = peg$literalExpectation("bank-account", true); + var peg$e76 = peg$literalExpectation("long-report-id", true); + var peg$e77 = peg$literalExpectation("exported-to", true); + var peg$e78 = peg$classExpectation([":", "="], false, false); + var peg$e79 = peg$literalExpectation("exportedTo", true); + var peg$e80 = peg$literalExpectation("exchange-rate", true); + var peg$e81 = peg$literalExpectation("reimbursable-total", true); + var peg$e82 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e83 = peg$literalExpectation("group-from", true); + var peg$e84 = peg$literalExpectation("group-expenses", true); + var peg$e85 = peg$literalExpectation("group-total", true); + var peg$e86 = peg$literalExpectation("group-card", true); + var peg$e87 = peg$literalExpectation("group-feed", true); + var peg$e88 = peg$literalExpectation("group-bank-account", true); + var peg$e89 = peg$literalExpectation("group-withdrawn", true); + var peg$e90 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e91 = peg$literalExpectation("group-category", true); + var peg$e92 = peg$literalExpectation("group-tag", true); + var peg$e93 = peg$literalExpectation("group-merchant", true); + var peg$e94 = peg$literalExpectation("group-month", true); + var peg$e95 = peg$literalExpectation("group-week", true); + var peg$e96 = peg$literalExpectation("group-year", true); + var peg$e97 = peg$literalExpectation("group-quarter", true); + var peg$e98 = peg$otherExpectation("operator"); + var peg$e99 = peg$literalExpectation("*:", false); + var peg$e100 = peg$literalExpectation("!=", false); + var peg$e101 = peg$literalExpectation(">=", false); + var peg$e102 = peg$literalExpectation(">", false); + var peg$e103 = peg$literalExpectation("<=", false); + var peg$e104 = peg$literalExpectation("<", false); + var peg$e105 = peg$otherExpectation("word"); + var peg$e106 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e107 = peg$otherExpectation("whitespace"); + var peg$e108 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e109 = peg$otherExpectation("quote"); + var peg$e110 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e111 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e112 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e113 = peg$literalExpectation("\u201C", false); + var peg$e114 = peg$literalExpectation("\u201D", false); + var peg$e115 = peg$literalExpectation("\"", false); + var peg$e116 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e117 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e118 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e119 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e120 = peg$classExpectation([","], false, false); + var peg$e121 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + + var peg$f0 = function(ranges) { return { autocomplete, ranges }; }; + var peg$f1 = function(filters) { return filters.filter(Boolean).flat(); }; + var peg$f2 = function(neg, key, op, value) { + expectingNestedQuote = false; nameOperator = false; // Reset string parser + + const isNegated = !!neg && !nonNegatableKeys.has(key); + + if (!value) { + autocomplete = { + key, + negated: isNegated, + value: "", + start: location().end.offset, + length: 0, + }; + return; + } - const peg$startRuleFunctions = { - query: peg$parsequery, - }; - let peg$startRuleFunction = peg$parsequery; - - const peg$c0 = "-"; - const peg$c1 = "report-field"; - const peg$c2 = "reportfield"; - const peg$c3 = ","; - const peg$c4 = "date"; - const peg$c5 = "amount"; - const peg$c6 = "merchant"; - const peg$c7 = "description"; - const peg$c8 = "reportid"; - const peg$c9 = "report-id"; - const peg$c10 = "in"; - const peg$c11 = "currency"; - const peg$c12 = "groupCurrency"; - const peg$c13 = "group-currency"; - const peg$c14 = "tag"; - const peg$c15 = "category"; - const peg$c16 = "to"; - const peg$c17 = "exporter"; - const peg$c18 = "payer"; - const peg$c19 = "taxrate"; - const peg$c20 = "tax-rate"; - const peg$c21 = "cardID"; - const peg$c22 = "card"; - const peg$c23 = "from"; - const peg$c24 = "attendee"; - const peg$c25 = "expenseType"; - const peg$c26 = "expense-type"; - const peg$c27 = "withdrawalType"; - const peg$c28 = "withdrawal-type"; - const peg$c29 = "withdrawalid"; - const peg$c30 = "withdrawal-id"; - const peg$c31 = "billable"; - const peg$c32 = "reimbursable"; - const peg$c33 = "type"; - const peg$c34 = "status"; - const peg$c35 = "policyID"; - const peg$c36 = "workspace"; - const peg$c37 = "submitted"; - const peg$c38 = "approved"; - const peg$c39 = "paid"; - const peg$c40 = "exported"; - const peg$c41 = "posted"; - const peg$c42 = "withdrawn"; - const peg$c43 = "groupby"; - const peg$c44 = "group-by"; - const peg$c45 = "limit"; - const peg$c46 = "feed"; - const peg$c47 = "title"; - const peg$c48 = "assignee"; - const peg$c49 = "createdby"; - const peg$c50 = "created-by"; - const peg$c51 = "action"; - const peg$c52 = "total"; - const peg$c53 = "has"; - const peg$c54 = "is"; - const peg$c55 = "purchaseamount"; - const peg$c56 = "purchase-amount"; - const peg$c57 = "purchasecurrency"; - const peg$c58 = "purchase-currency"; - const peg$c59 = "columns"; - const peg$c60 = "view"; - const peg$c61 = "exportedto"; - const peg$c62 = "exported-to"; - const peg$c63 = "*:"; - const peg$c64 = "!="; - const peg$c65 = ">="; - const peg$c66 = ">"; - const peg$c67 = "<="; - const peg$c68 = "<"; - const peg$c69 = "\u201C"; - const peg$c70 = "\u201D"; - const peg$c71 = "\""; - - const peg$r0 = /^[ \t\r\n\xA0,:=<>!]/; - const peg$r1 = /^[:=]/; - const peg$r2 = /^[^ ,\t\n\r\xA0]/; - const peg$r3 = /^[ \t\r\n\xA0]/; - const peg$r4 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; - const peg$r5 = /^["\u201C-\u201D]/; - const peg$r6 = /^[^"\u201D\u201C\r\n]/; - const peg$r7 = /^[ \t\n\r\xA0a-zA-Z0-9]/; - const peg$r8 = /^[a-zA-Z0-9]/; - const peg$r9 = /^[ \t\n\r\xA0]/; - const peg$r10 = /^[ \t\n\r\xA0a-zA-Z]/; - const peg$r11 = /^[,]/; - const peg$r12 = /^[ \t\n\r\xA0,]/; - - const peg$e0 = peg$literalExpectation("-", false); - const peg$e1 = peg$literalExpectation("report-field", true); - const peg$e2 = peg$literalExpectation("reportfield", true); - const peg$e3 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false, false); - const peg$e4 = peg$anyExpectation(); - const peg$e5 = peg$literalExpectation(",", false); - const peg$e6 = peg$otherExpectation("key"); - const peg$e7 = peg$literalExpectation("date", true); - const peg$e8 = peg$literalExpectation("amount", true); - const peg$e9 = peg$literalExpectation("merchant", true); - const peg$e10 = peg$literalExpectation("description", true); - const peg$e11 = peg$literalExpectation("reportid", true); - const peg$e12 = peg$literalExpectation("report-id", true); - const peg$e13 = peg$literalExpectation("in", true); - const peg$e14 = peg$literalExpectation("currency", true); - const peg$e15 = peg$literalExpectation("groupCurrency", false); - const peg$e16 = peg$literalExpectation("group-currency", true); - const peg$e17 = peg$literalExpectation("tag", true); - const peg$e18 = peg$literalExpectation("category", true); - const peg$e19 = peg$literalExpectation("to", true); - const peg$e20 = peg$literalExpectation("exporter", true); - const peg$e21 = peg$literalExpectation("payer", true); - const peg$e22 = peg$literalExpectation("taxRate", true); - const peg$e23 = peg$literalExpectation("tax-rate", true); - const peg$e24 = peg$literalExpectation("cardID", false); - const peg$e25 = peg$literalExpectation("card", true); - const peg$e26 = peg$literalExpectation("from", true); - const peg$e27 = peg$literalExpectation("attendee", true); - const peg$e28 = peg$literalExpectation("expenseType", false); - const peg$e29 = peg$literalExpectation("expense-type", true); - const peg$e30 = peg$literalExpectation("withdrawalType", false); - const peg$e31 = peg$literalExpectation("withdrawal-type", true); - const peg$e32 = peg$literalExpectation("withdrawalID", true); - const peg$e33 = peg$literalExpectation("withdrawal-id", true); - const peg$e34 = peg$literalExpectation("billable", true); - const peg$e35 = peg$literalExpectation("reimbursable", true); - const peg$e36 = peg$literalExpectation("type", true); - const peg$e37 = peg$literalExpectation("status", true); - const peg$e38 = peg$literalExpectation("policyID", false); - const peg$e39 = peg$literalExpectation("workspace", true); - const peg$e40 = peg$literalExpectation("submitted", true); - const peg$e41 = peg$literalExpectation("approved", true); - const peg$e42 = peg$literalExpectation("paid", true); - const peg$e43 = peg$literalExpectation("exported", true); - const peg$e44 = peg$literalExpectation("posted", true); - const peg$e45 = peg$literalExpectation("withdrawn", true); - const peg$e46 = peg$literalExpectation("groupBy", true); - const peg$e47 = peg$literalExpectation("group-by", true); - const peg$e48 = peg$literalExpectation("limit", true); - const peg$e49 = peg$literalExpectation("feed", true); - const peg$e50 = peg$literalExpectation("title", true); - const peg$e51 = peg$literalExpectation("assignee", true); - const peg$e52 = peg$literalExpectation("createdBy", true); - const peg$e53 = peg$literalExpectation("created-by", true); - const peg$e54 = peg$literalExpectation("action", true); - const peg$e55 = peg$literalExpectation("total", true); - const peg$e56 = peg$literalExpectation("has", true); - const peg$e57 = peg$literalExpectation("is", true); - const peg$e58 = peg$literalExpectation("purchaseAmount", true); - const peg$e59 = peg$literalExpectation("purchase-amount", true); - const peg$e60 = peg$literalExpectation("purchaseCurrency", true); - const peg$e61 = peg$literalExpectation("purchase-currency", true); - const peg$e62 = peg$literalExpectation("columns", true); - const peg$e63 = peg$literalExpectation("view", true); - const peg$e64 = peg$classExpectation([":", "="], false, false, false); - const peg$e65 = peg$literalExpectation("exportedTo", true); - const peg$e66 = peg$literalExpectation("exported-to", true); - const peg$e67 = peg$otherExpectation("operator"); - const peg$e68 = peg$literalExpectation("*:", false); - const peg$e69 = peg$literalExpectation("!=", false); - const peg$e70 = peg$literalExpectation(">=", false); - const peg$e71 = peg$literalExpectation(">", false); - const peg$e72 = peg$literalExpectation("<=", false); - const peg$e73 = peg$literalExpectation("<", false); - const peg$e74 = peg$otherExpectation("word"); - const peg$e75 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false, false); - const peg$e76 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false, false); - const peg$e77 = peg$otherExpectation("quote"); - const peg$e78 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false, false); - const peg$e79 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false, false); - const peg$e80 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false, false); - const peg$e81 = peg$literalExpectation("\u201C", false); - const peg$e82 = peg$literalExpectation("\u201D", false); - const peg$e83 = peg$literalExpectation("\"", false); - const peg$e84 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); - const peg$e85 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); - const peg$e86 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false, false); - const peg$e87 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false, false); - const peg$e88 = peg$classExpectation([","], false, false, false); - const peg$e89 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false, false); - - function peg$f0(ranges) { return { autocomplete, ranges }; } - function peg$f1(filters) { return filters.filter(Boolean).flat(); } - function peg$f2(neg, key, op, value) { - expectingNestedQuote = false; nameOperator = false; // Reset string parser - - const isNegated = !!neg && !nonNegatableKeys.has(key); - - if (!value) { autocomplete = { key, negated: isNegated, - value: "", - start: location().end.offset, - length: 0, + ...value[value.length - 1], }; - return; - } - - autocomplete = { - key, - negated: isNegated, - ...value[value.length - 1], + return value + .filter((v) => v.length > 0) + .map((v) => ({ + key, + negated: isNegated, + ...v, + })); }; - return value - .filter((v) => v.length > 0) - .map((v) => ({ - key, - negated: isNegated, - ...v, - })); - } - function peg$f3(rest) { - const suffix = rest.replaceAll(/^-+/g, ""); - return "reportField-" + (suffix ? suffix : ""); - } - function peg$f4() { autocomplete = null; } - function peg$f5(k) { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); - return k; - } - function peg$f6(parts, empty) { - const ends = location(); - const value = parts.flat().filter(Boolean); // Filter out undefined values returned by the predicate - if (empty) { - value.push(""); - } - let count = ends.start.offset; - const result = []; - value.forEach((filter) => { - let word = filter; - if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { - word = word.slice(1, -1); - } - result.push({ - value: word, - start: count, - length: filter.length, + var peg$f3 = function(rest) { + const suffix = rest.replaceAll(/^-+/g, ""); + return "reportField-" + (suffix ? suffix : ""); + }; + var peg$f4 = function() { autocomplete = null; }; + var peg$f5 = function(k) { + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + return k; + }; + var peg$f6 = function(parts, empty) { + const ends = location(); + const value = parts.flat().filter(Boolean); // Filter out undefined values returned by the predicate + if (empty) { + value.push(""); + } + let count = ends.start.offset; + const result = []; + value.forEach((filter) => { + let word = filter; + if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { + word = word.slice(1, -1); + } + result.push({ + value: word, + start: count, + length: filter.length, + }); + count += filter.length + 1; }); - count += filter.length + 1; - }); - return result; - } - function peg$f7() { return "date"; } - function peg$f8() { return "amount"; } - function peg$f9() { return "merchant"; } - function peg$f10() { return "description"; } - function peg$f11() { return "reportID"; } - function peg$f12() { return "in"; } - function peg$f13() { return "currency"; } - function peg$f14() { return "groupCurrency"; } - function peg$f15() { return "tag"; } - function peg$f16() { return "category"; } - function peg$f17() { return "to"; } - function peg$f18() { return "exporter"; } - function peg$f19() { return "payer"; } - function peg$f20() { return "taxRate"; } - function peg$f21() { return "cardID"; } - function peg$f22() { return "from"; } - function peg$f23() {return "attendee" } - function peg$f24() { return "expenseType"; } - function peg$f25() { return "withdrawalType"; } - function peg$f26() { return "withdrawalID"; } - function peg$f27() { return "billable"; } - function peg$f28() { return "reimbursable"; } - function peg$f29() { return "type"; } - function peg$f30() { return "status"; } - function peg$f31() { return "policyID"; } - function peg$f32() { return "submitted"; } - function peg$f33() { return "approved"; } - function peg$f34() { return "paid"; } - function peg$f35() { return "exported"; } - function peg$f36() { return "posted"; } - function peg$f37() { return "withdrawn"; } - function peg$f38() { return "groupBy"; } - function peg$f39() { return "limit"; } - function peg$f40() { return "feed"; } - function peg$f41() { return "title"; } - function peg$f42() { return "assignee"; } - function peg$f43() { return "createdBy"; } - function peg$f44() { return "action"; } - function peg$f45() {return "total"; } - function peg$f46() {return "has"; } - function peg$f47() {return "is"; } - function peg$f48() {return "purchaseAmount" } - function peg$f49() {return "purchaseCurrency" } - function peg$f50() { - isColumnsContext = true; - return "columns"; - } - function peg$f51() {return "view" } - function peg$f52() { return "exportedTo"; } - function peg$f53() { return "exportedTo"; } - function peg$f54() { return "contains"; } - function peg$f55() { return "eq"; } - function peg$f56() { return "neq"; } - function peg$f57() { return "gte"; } - function peg$f58() { return "gt"; } - function peg$f59() { return "lte"; } - function peg$f60() { return "lt"; } - function peg$f61(o) { - if (nameOperator) { - expectingNestedQuote = (o === "eq" || o === "contains"); - } - isColumnsContext = false; - return o; - } - function peg$f62(chars) { return chars.join("").trim(); } - function peg$f63() { - isColumnsContext = false; - return "and"; - } - function peg$f64() { return expectingNestedQuote; } - function peg$f65(start, inner, end) { //handle no-breaking space - return [...start, '"', ...inner, '"', ...end].join(""); - } - function peg$f66(start) {return "“" } - function peg$f67(start) {return "”" } - function peg$f68(start) {return "\"" } - function peg$f69(start, inner, end) { + return result; + }; + var peg$f7 = function() { return "date"; }; + var peg$f8 = function() { return "amount"; }; + var peg$f9 = function() { return "merchant"; }; + var peg$f10 = function() { return "description"; }; + var peg$f11 = function() { return "reportID"; }; + var peg$f12 = function() { return "keyword"; }; + var peg$f13 = function() { return "in"; }; + var peg$f14 = function() { return "currency"; }; + var peg$f15 = function() { return "groupCurrency"; }; + var peg$f16 = function() { return "tag"; }; + var peg$f17 = function() { return "category"; }; + var peg$f18 = function() { return "to"; }; + var peg$f19 = function() { return "exporter"; }; + var peg$f20 = function() { return "payer"; }; + var peg$f21 = function() { return "taxRate"; }; + var peg$f22 = function() { return "cardID"; }; + var peg$f23 = function() { return "from"; }; + var peg$f24 = function() {return "attendee"}; + var peg$f25 = function() { return "expenseType"; }; + var peg$f26 = function() { return "withdrawalType"; }; + var peg$f27 = function() { return "withdrawalID"; }; + var peg$f28 = function() { return "billable"; }; + var peg$f29 = function() { return "reimbursable"; }; + var peg$f30 = function() { return "type"; }; + var peg$f31 = function() { return "status"; }; + var peg$f32 = function() { return "sortBy"; }; + var peg$f33 = function() { return "sortOrder"; }; + var peg$f34 = function() { return "policyID"; }; + var peg$f35 = function() { return "submitted"; }; + var peg$f36 = function() { return "approved"; }; + var peg$f37 = function() { return "paid"; }; + var peg$f38 = function() { return "exported"; }; + var peg$f39 = function() { return "posted"; }; + var peg$f40 = function() { return "withdrawn"; }; + var peg$f41 = function() { return "groupBy"; }; + var peg$f42 = function() { return "limit"; }; + var peg$f43 = function() { return "feed"; }; + var peg$f44 = function() { return "title"; }; + var peg$f45 = function() { return "assignee"; }; + var peg$f46 = function() { return "createdBy"; }; + var peg$f47 = function() { return "action"; }; + var peg$f48 = function() {return "total"; }; + var peg$f49 = function() {return "has"; }; + var peg$f50 = function() {return "is"; }; + var peg$f51 = function() {return "purchaseAmount"}; + var peg$f52 = function() {return "purchaseCurrency"}; + var peg$f53 = function() { + isColumnsContext = true; + return "columns"; +}; + var peg$f54 = function() {return "view"}; + var peg$f55 = function() { return isColumnsContext; }; + var peg$f56 = function() { return "perDiem"; }; + var peg$f57 = function() { return "drafts"; }; + var peg$f58 = function() { return "originalamount"; }; + var peg$f59 = function() { return "taxAmount"; }; + var peg$f60 = function() { return "taxrate"; }; + var peg$f61 = function() { return "policyname"; }; + var peg$f62 = function() { return "withdrawalID"; }; + var peg$f63 = function() { return "bankAccount"; }; + var peg$f64 = function() { return "reportID"; }; + var peg$f65 = function() { return "base62ReportID"; }; + var peg$f66 = function() { return "exportedto"; }; + var peg$f67 = function() { return "exportedTo"; }; + var peg$f68 = function() { return "exportedTo"; }; + var peg$f69 = function() { return "exchangeRate"; }; + var peg$f70 = function() { return "reimbursableTotal"; }; + var peg$f71 = function() { return "nonReimbursableTotal"; }; + var peg$f72 = function() { return "groupFrom"; }; + var peg$f73 = function() { return "groupExpenses"; }; + var peg$f74 = function() { return "groupTotal"; }; + var peg$f75 = function() { return "groupCard"; }; + var peg$f76 = function() { return "groupFeed"; }; + var peg$f77 = function() { return "groupBankAccount"; }; + var peg$f78 = function() { return "groupWithdrawn"; }; + var peg$f79 = function() { return "groupWithdrawalID"; }; + var peg$f80 = function() { return "groupCategory"; }; + var peg$f81 = function() { return "groupTag"; }; + var peg$f82 = function() { return "groupMerchant"; }; + var peg$f83 = function() { return "groupmonth"; }; + var peg$f84 = function() { return "groupweek"; }; + var peg$f85 = function() { return "groupyear"; }; + var peg$f86 = function() { return "groupquarter"; }; + var peg$f87 = function() { return "contains"; }; + var peg$f88 = function() { return "eq"; }; + var peg$f89 = function() { return "neq"; }; + var peg$f90 = function() { return "gte"; }; + var peg$f91 = function() { return "gt"; }; + var peg$f92 = function() { return "lte"; }; + var peg$f93 = function() { return "lt"; }; + var peg$f94 = function(o) { + if (nameOperator) { + expectingNestedQuote = (o === "eq" || o === "contains"); + } + isColumnsContext = false; + return o; + }; + var peg$f95 = function(chars) { return chars.join("").trim(); }; + var peg$f96 = function() { + isColumnsContext = false; + return "and"; +}; + var peg$f97 = function() { return expectingNestedQuote; }; + var peg$f98 = function(start, inner, end) { //handle no-breaking space + return [...start, '"', ...inner, '"', ...end].join(""); + }; + var peg$f99 = function(start) {return "“"}; + var peg$f100 = function(start) {return "”"}; + var peg$f101 = function(start) {return "\""}; + var peg$f102 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); - } - let peg$currPos = options.peg$currPos | 0; - let peg$savedPos = peg$currPos; - const peg$posDetailsCache = [{ line: 1, column: 1 }]; - let peg$maxFailPos = peg$currPos; - let peg$maxFailExpected = options.peg$maxFailExpected || []; - let peg$silentFails = options.peg$silentFails | 0; +}; + var peg$currPos = options.peg$currPos | 0; + var peg$savedPos = peg$currPos; + var peg$posDetailsCache = [{ line: 1, column: 1 }]; + var peg$maxFailPos = peg$currPos; + var peg$maxFailExpected = options.peg$maxFailExpected || []; + var peg$silentFails = options.peg$silentFails | 0; - let peg$result; + var peg$result; if (options.startRule) { if (!(options.startRule in peg$startRuleFunctions)) { @@ -519,7 +627,7 @@ function peg$parse(input, options) { return { source: peg$source, start: peg$savedPos, - end: peg$currPos, + end: peg$currPos }; } @@ -547,20 +655,12 @@ function peg$parse(input, options) { throw peg$buildSimpleError(message, location); } - function peg$getUnicode(pos = peg$currPos) { - const cp = input.codePointAt(pos); - if (cp === undefined) { - return ""; - } - return String.fromCodePoint(cp); - } - function peg$literalExpectation(text, ignoreCase) { - return { type: "literal", text, ignoreCase }; + return { type: "literal", text: text, ignoreCase: ignoreCase }; } - function peg$classExpectation(parts, inverted, ignoreCase, unicode) { - return { type: "class", parts, inverted, ignoreCase, unicode }; + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; } function peg$anyExpectation() { @@ -572,12 +672,12 @@ function peg$parse(input, options) { } function peg$otherExpectation(description) { - return { type: "other", description }; + return { type: "other", description: description }; } function peg$computePosDetails(pos) { - let details = peg$posDetailsCache[pos]; - let p; + var details = peg$posDetailsCache[pos]; + var p; if (details) { return details; @@ -592,7 +692,7 @@ function peg$parse(input, options) { details = peg$posDetailsCache[p]; details = { line: details.line, - column: details.column, + column: details.column }; while (p < pos) { @@ -613,21 +713,21 @@ function peg$parse(input, options) { } function peg$computeLocation(startPos, endPos, offset) { - const startPosDetails = peg$computePosDetails(startPos); - const endPosDetails = peg$computePosDetails(endPos); + var startPosDetails = peg$computePosDetails(startPos); + var endPosDetails = peg$computePosDetails(endPos); - const res = { + var res = { source: peg$source, start: { offset: startPos, line: startPosDetails.line, - column: startPosDetails.column, + column: startPosDetails.column }, end: { offset: endPos, line: endPosDetails.line, - column: endPosDetails.column, - }, + column: endPosDetails.column + } }; if (offset && peg$source && (typeof peg$source.offset === "function")) { res.start = peg$source.offset(res.start); @@ -661,7 +761,7 @@ function peg$parse(input, options) { } function peg$parsequery() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -674,7 +774,7 @@ function peg$parse(input, options) { } function peg$parsefilterList() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = []; @@ -699,7 +799,7 @@ function peg$parse(input, options) { } function peg$parsefilter() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = peg$parsedefaultFilter(); @@ -717,7 +817,7 @@ function peg$parse(input, options) { } function peg$parsedefaultFilter() { - let s0, s1, s2, s3, s4, s5, s6, s7; + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = peg$parse_(); @@ -756,12 +856,12 @@ function peg$parse(input, options) { } function peg$parsereportFieldDynamic() { - let s0, s1, s2, s3, s4, s5, s6, s7; + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c1) { - peg$currPos += (12); + peg$currPos += 12; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e1); } @@ -769,7 +869,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c2) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e2); } @@ -877,7 +977,7 @@ function peg$parse(input, options) { } function peg$parsefreeTextFilter() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -904,7 +1004,7 @@ function peg$parse(input, options) { } function peg$parseautocompleteKey() { - let s0, s1; + var s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1063,7 +1163,7 @@ function peg$parse(input, options) { } function peg$parsefilterKey() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = peg$parseautocompleteKey(); @@ -1077,7 +1177,7 @@ function peg$parse(input, options) { } function peg$parseidentifier() { - let s0, s1, s2, s3, s4; + var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = peg$currPos; @@ -1139,12 +1239,12 @@ function peg$parse(input, options) { } function peg$parsedate() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c4) { - peg$currPos += (4); + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e7); } @@ -1159,12 +1259,12 @@ function peg$parse(input, options) { } function peg$parseamount() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c5) { - peg$currPos += (6); + peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e8); } @@ -1179,12 +1279,12 @@ function peg$parse(input, options) { } function peg$parsemerchant() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c6) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e9); } @@ -1199,12 +1299,12 @@ function peg$parse(input, options) { } function peg$parsedescription() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c7) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e10); } @@ -1219,11 +1319,11 @@ function peg$parse(input, options) { } function peg$parsereportID() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 8); if (s0.toLowerCase() === peg$c8) { - peg$currPos += (8); + peg$currPos += 8; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e11); } @@ -1232,7 +1332,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += (9); + peg$currPos += 9; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e12); } @@ -1247,13 +1347,13 @@ function peg$parse(input, options) { return s0; } - function peg$parsein() { - let s0, s1; + function peg$parsekeyword() { + var s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 2); + s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c10) { - peg$currPos += (2); + peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e13); } @@ -1267,13 +1367,13 @@ function peg$parse(input, options) { return s0; } - function peg$parsecurrency() { - let s0, s1; + function peg$parsein() { + var s0, s1; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 8); + s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c11) { - peg$currPos += (8); + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -1287,28 +1387,48 @@ function peg$parse(input, options) { return s0; } + function peg$parsecurrency() { + var s0, s1; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 8); + if (s1.toLowerCase() === peg$c12) { + peg$currPos += 8; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e15); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f14(); + } + s0 = s1; + + return s0; + } + function peg$parsegroupCurrency() { - let s0, s1; + var s0, s1; - if (input.substr(peg$currPos, 13) === peg$c12) { - s0 = peg$c12; + if (input.substr(peg$currPos, 13) === peg$c13) { + s0 = peg$c13; peg$currPos += 13; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e15); } + if (peg$silentFails === 0) { peg$fail(peg$e16); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); - if (s1.toLowerCase() === peg$c13) { - peg$currPos += (14); + if (s1.toLowerCase() === peg$c14) { + peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e16); } + if (peg$silentFails === 0) { peg$fail(peg$e17); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f14(); + s1 = peg$f15(); } s0 = s1; } @@ -1317,19 +1437,19 @@ function peg$parse(input, options) { } function peg$parsetag() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c14) { - peg$currPos += (3); + if (s1.toLowerCase() === peg$c15) { + peg$currPos += 3; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e17); } + if (peg$silentFails === 0) { peg$fail(peg$e18); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f15(); + s1 = peg$f16(); } s0 = s1; @@ -1337,19 +1457,19 @@ function peg$parse(input, options) { } function peg$parsecategory() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c15) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c16) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e18); } + if (peg$silentFails === 0) { peg$fail(peg$e19); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f16(); + s1 = peg$f17(); } s0 = s1; @@ -1357,19 +1477,19 @@ function peg$parse(input, options) { } function peg$parseto() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c16) { - peg$currPos += (2); + if (s1.toLowerCase() === peg$c17) { + peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e19); } + if (peg$silentFails === 0) { peg$fail(peg$e20); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f17(); + s1 = peg$f18(); } s0 = s1; @@ -1377,19 +1497,19 @@ function peg$parse(input, options) { } function peg$parseexporter() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c17) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c18) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e20); } + if (peg$silentFails === 0) { peg$fail(peg$e21); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f18(); + s1 = peg$f19(); } s0 = s1; @@ -1397,19 +1517,19 @@ function peg$parse(input, options) { } function peg$parsepayer() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c18) { - peg$currPos += (5); + if (s1.toLowerCase() === peg$c19) { + peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e21); } + if (peg$silentFails === 0) { peg$fail(peg$e22); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f19(); + s1 = peg$f20(); } s0 = s1; @@ -1417,27 +1537,27 @@ function peg$parse(input, options) { } function peg$parsetaxRate() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c19) { - peg$currPos += (7); + if (s0.toLowerCase() === peg$c20) { + peg$currPos += 7; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e22); } + if (peg$silentFails === 0) { peg$fail(peg$e23); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c20) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c21) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e23); } + if (peg$silentFails === 0) { peg$fail(peg$e24); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f20(); + s1 = peg$f21(); } s0 = s1; } @@ -1446,27 +1566,27 @@ function peg$parse(input, options) { } function peg$parsecardID() { - let s0, s1; + var s0, s1; - if (input.substr(peg$currPos, 6) === peg$c21) { - s0 = peg$c21; + if (input.substr(peg$currPos, 6) === peg$c22) { + s0 = peg$c22; peg$currPos += 6; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e24); } + if (peg$silentFails === 0) { peg$fail(peg$e25); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c22) { - peg$currPos += (4); + if (s1.toLowerCase() === peg$c23) { + peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e25); } + if (peg$silentFails === 0) { peg$fail(peg$e26); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f21(); + s1 = peg$f22(); } s0 = s1; } @@ -1475,19 +1595,19 @@ function peg$parse(input, options) { } function peg$parsefrom() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c23) { - peg$currPos += (4); + if (s1.toLowerCase() === peg$c24) { + peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e26); } + if (peg$silentFails === 0) { peg$fail(peg$e27); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f22(); + s1 = peg$f23(); } s0 = s1; @@ -1495,19 +1615,19 @@ function peg$parse(input, options) { } function peg$parseattendee() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c24) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c25) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e27); } + if (peg$silentFails === 0) { peg$fail(peg$e28); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f23(); + s1 = peg$f24(); } s0 = s1; @@ -1515,27 +1635,27 @@ function peg$parse(input, options) { } function peg$parseexpenseType() { - let s0, s1; + var s0, s1; - if (input.substr(peg$currPos, 11) === peg$c25) { - s0 = peg$c25; + if (input.substr(peg$currPos, 11) === peg$c26) { + s0 = peg$c26; peg$currPos += 11; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e28); } + if (peg$silentFails === 0) { peg$fail(peg$e29); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c26) { - peg$currPos += (12); + if (s1.toLowerCase() === peg$c27) { + peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e29); } + if (peg$silentFails === 0) { peg$fail(peg$e30); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f24(); + s1 = peg$f25(); } s0 = s1; } @@ -1544,27 +1664,27 @@ function peg$parse(input, options) { } function peg$parsewithdrawalType() { - let s0, s1; + var s0, s1; - if (input.substr(peg$currPos, 14) === peg$c27) { - s0 = peg$c27; + if (input.substr(peg$currPos, 14) === peg$c28) { + s0 = peg$c28; peg$currPos += 14; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e30); } + if (peg$silentFails === 0) { peg$fail(peg$e31); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c28) { - peg$currPos += (15); + if (s1.toLowerCase() === peg$c29) { + peg$currPos += 15; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e31); } + if (peg$silentFails === 0) { peg$fail(peg$e32); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f25(); + s1 = peg$f26(); } s0 = s1; } @@ -1573,27 +1693,27 @@ function peg$parse(input, options) { } function peg$parsewithdrawalID() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 12); - if (s0.toLowerCase() === peg$c29) { - peg$currPos += (12); + if (s0.toLowerCase() === peg$c30) { + peg$currPos += 12; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e32); } + if (peg$silentFails === 0) { peg$fail(peg$e33); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); - if (s1.toLowerCase() === peg$c30) { - peg$currPos += (13); + if (s1.toLowerCase() === peg$c31) { + peg$currPos += 13; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e33); } + if (peg$silentFails === 0) { peg$fail(peg$e34); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f26(); + s1 = peg$f27(); } s0 = s1; } @@ -1602,19 +1722,19 @@ function peg$parse(input, options) { } function peg$parsebillable() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c31) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c32) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e34); } + if (peg$silentFails === 0) { peg$fail(peg$e35); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f27(); + s1 = peg$f28(); } s0 = s1; @@ -1622,19 +1742,19 @@ function peg$parse(input, options) { } function peg$parsereimbursable() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); - if (s1.toLowerCase() === peg$c32) { - peg$currPos += (12); + if (s1.toLowerCase() === peg$c33) { + peg$currPos += 12; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e35); } + if (peg$silentFails === 0) { peg$fail(peg$e36); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f28(); + s1 = peg$f29(); } s0 = s1; @@ -1642,19 +1762,19 @@ function peg$parse(input, options) { } function peg$parsetype() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c33) { - peg$currPos += (4); + if (s1.toLowerCase() === peg$c34) { + peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e36); } + if (peg$silentFails === 0) { peg$fail(peg$e37); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f29(); + s1 = peg$f30(); } s0 = s1; @@ -1662,47 +1782,105 @@ function peg$parse(input, options) { } function peg$parsestatus() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c34) { - peg$currPos += (6); + if (s1.toLowerCase() === peg$c35) { + peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e37); } + if (peg$silentFails === 0) { peg$fail(peg$e38); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f30(); + s1 = peg$f31(); } s0 = s1; return s0; } + function peg$parsesortBy() { + var s0, s1; + + if (input.substr(peg$currPos, 6) === peg$c36) { + s0 = peg$c36; + peg$currPos += 6; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e39); } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 7); + if (s1.toLowerCase() === peg$c37) { + peg$currPos += 7; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e40); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f32(); + } + s0 = s1; + } + + return s0; + } + + function peg$parsesortOrder() { + var s0, s1; + + if (input.substr(peg$currPos, 9) === peg$c38) { + s0 = peg$c38; + peg$currPos += 9; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e41); } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 10); + if (s1.toLowerCase() === peg$c39) { + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e42); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f33(); + } + s0 = s1; + } + + return s0; + } + function peg$parsepolicyID() { - let s0, s1; + var s0, s1; - if (input.substr(peg$currPos, 8) === peg$c35) { - s0 = peg$c35; + if (input.substr(peg$currPos, 8) === peg$c40) { + s0 = peg$c40; peg$currPos += 8; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e38); } + if (peg$silentFails === 0) { peg$fail(peg$e43); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c36) { - peg$currPos += (9); + if (s1.toLowerCase() === peg$c41) { + peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e39); } + if (peg$silentFails === 0) { peg$fail(peg$e44); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f31(); + s1 = peg$f34(); } s0 = s1; } @@ -1711,19 +1889,19 @@ function peg$parse(input, options) { } function peg$parsesubmitted() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c37) { - peg$currPos += (9); + if (s1.toLowerCase() === peg$c42) { + peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e40); } + if (peg$silentFails === 0) { peg$fail(peg$e45); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f32(); + s1 = peg$f35(); } s0 = s1; @@ -1731,19 +1909,19 @@ function peg$parse(input, options) { } function peg$parseapproved() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c38) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c43) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e41); } + if (peg$silentFails === 0) { peg$fail(peg$e46); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f33(); + s1 = peg$f36(); } s0 = s1; @@ -1751,19 +1929,19 @@ function peg$parse(input, options) { } function peg$parsepaid() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c39) { - peg$currPos += (4); + if (s1.toLowerCase() === peg$c44) { + peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e42); } + if (peg$silentFails === 0) { peg$fail(peg$e47); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f34(); + s1 = peg$f37(); } s0 = s1; @@ -1771,19 +1949,19 @@ function peg$parse(input, options) { } function peg$parseexported() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c40) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c45) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e43); } + if (peg$silentFails === 0) { peg$fail(peg$e48); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f35(); + s1 = peg$f38(); } s0 = s1; @@ -1791,19 +1969,19 @@ function peg$parse(input, options) { } function peg$parseposted() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c41) { - peg$currPos += (6); + if (s1.toLowerCase() === peg$c46) { + peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e44); } + if (peg$silentFails === 0) { peg$fail(peg$e49); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f36(); + s1 = peg$f39(); } s0 = s1; @@ -1811,19 +1989,19 @@ function peg$parse(input, options) { } function peg$parsewithdrawn() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); - if (s1.toLowerCase() === peg$c42) { - peg$currPos += (9); + if (s1.toLowerCase() === peg$c47) { + peg$currPos += 9; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e45); } + if (peg$silentFails === 0) { peg$fail(peg$e50); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f37(); + s1 = peg$f40(); } s0 = s1; @@ -1831,27 +2009,27 @@ function peg$parse(input, options) { } function peg$parsegroupBy() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 7); - if (s0.toLowerCase() === peg$c43) { - peg$currPos += (7); + if (s0.toLowerCase() === peg$c48) { + peg$currPos += 7; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e46); } + if (peg$silentFails === 0) { peg$fail(peg$e51); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c44) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c49) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e47); } + if (peg$silentFails === 0) { peg$fail(peg$e52); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f38(); + s1 = peg$f41(); } s0 = s1; } @@ -1860,19 +2038,19 @@ function peg$parse(input, options) { } function peg$parselimit() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c45) { - peg$currPos += (5); + if (s1.toLowerCase() === peg$c50) { + peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e48); } + if (peg$silentFails === 0) { peg$fail(peg$e53); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f39(); + s1 = peg$f42(); } s0 = s1; @@ -1880,19 +2058,19 @@ function peg$parse(input, options) { } function peg$parsefeed() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c46) { - peg$currPos += (4); + if (s1.toLowerCase() === peg$c51) { + peg$currPos += 4; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e49); } + if (peg$silentFails === 0) { peg$fail(peg$e54); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f40(); + s1 = peg$f43(); } s0 = s1; @@ -1900,19 +2078,19 @@ function peg$parse(input, options) { } function peg$parsetitle() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c47) { - peg$currPos += (5); + if (s1.toLowerCase() === peg$c52) { + peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e50); } + if (peg$silentFails === 0) { peg$fail(peg$e55); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f41(); + s1 = peg$f44(); } s0 = s1; @@ -1920,19 +2098,19 @@ function peg$parse(input, options) { } function peg$parseassignee() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); - if (s1.toLowerCase() === peg$c48) { - peg$currPos += (8); + if (s1.toLowerCase() === peg$c53) { + peg$currPos += 8; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e51); } + if (peg$silentFails === 0) { peg$fail(peg$e56); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f42(); + s1 = peg$f45(); } s0 = s1; @@ -1940,27 +2118,27 @@ function peg$parse(input, options) { } function peg$parsecreatedBy() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 9); - if (s0.toLowerCase() === peg$c49) { - peg$currPos += (9); + if (s0.toLowerCase() === peg$c54) { + peg$currPos += 9; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e52); } + if (peg$silentFails === 0) { peg$fail(peg$e57); } } if (s0 === peg$FAILED) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c50) { - peg$currPos += (10); + if (s1.toLowerCase() === peg$c55) { + peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e53); } + if (peg$silentFails === 0) { peg$fail(peg$e58); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f43(); + s1 = peg$f46(); } s0 = s1; } @@ -1969,19 +2147,19 @@ function peg$parse(input, options) { } function peg$parseaction() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); - if (s1.toLowerCase() === peg$c51) { - peg$currPos += (6); + if (s1.toLowerCase() === peg$c56) { + peg$currPos += 6; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e54); } + if (peg$silentFails === 0) { peg$fail(peg$e59); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f44(); + s1 = peg$f47(); } s0 = s1; @@ -1989,204 +2167,1401 @@ function peg$parse(input, options) { } function peg$parsetotal() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); - if (s1.toLowerCase() === peg$c52) { - peg$currPos += (5); + if (s1.toLowerCase() === peg$c57) { + peg$currPos += 5; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e55); } + if (peg$silentFails === 0) { peg$fail(peg$e60); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f45(); + s1 = peg$f48(); + } + s0 = s1; + + return s0; + } + + function peg$parsehas() { + var s0, s1; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 3); + if (s1.toLowerCase() === peg$c58) { + peg$currPos += 3; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e61); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f49(); + } + s0 = s1; + + return s0; + } + + function peg$parseis() { + var s0, s1; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 2); + if (s1.toLowerCase() === peg$c59) { + peg$currPos += 2; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e62); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f50(); + } + s0 = s1; + + return s0; + } + + function peg$parsepurchaseAmount() { + var s0, s1; + + s0 = input.substr(peg$currPos, 14); + if (s0.toLowerCase() === peg$c60) { + peg$currPos += 14; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e63); } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 15); + if (s1.toLowerCase() === peg$c61) { + peg$currPos += 15; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e64); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f51(); + } + s0 = s1; + } + + return s0; + } + + function peg$parsepurchaseCurrency() { + var s0, s1; + + s0 = input.substr(peg$currPos, 16); + if (s0.toLowerCase() === peg$c62) { + peg$currPos += 16; + } else { + s0 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e65); } + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 17); + if (s1.toLowerCase() === peg$c63) { + peg$currPos += 17; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e66); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f52(); + } + s0 = s1; + } + + return s0; + } + + function peg$parsecolumns() { + var s0, s1; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 7); + if (s1.toLowerCase() === peg$c64) { + peg$currPos += 7; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e67); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f53(); + } + s0 = s1; + + return s0; + } + + function peg$parseview() { + var s0, s1; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 4); + if (s1.toLowerCase() === peg$c65) { + peg$currPos += 4; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e68); } + } + if (s1 !== peg$FAILED) { + peg$savedPos = s0; + s1 = peg$f54(); + } + s0 = s1; + + return s0; + } + + function peg$parsevalues() { + var s0, s1, s2; + + s0 = peg$currPos; + peg$savedPos = peg$currPos; + s1 = peg$f55(); + if (s1) { + s1 = undefined; + } else { + s1 = peg$FAILED; + } + if (s1 !== peg$FAILED) { + s2 = peg$parsecolumnsValues(); + if (s2 !== peg$FAILED) { + s1 = [s1, s2]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$parseperDiem(); + if (s0 === peg$FAILED) { + s0 = peg$parsedraft(); + } + } + + return s0; + } + + function peg$parsecolumnsValues() { + var s0; + + s0 = peg$parseoriginalAmount(); + if (s0 === peg$FAILED) { + s0 = peg$parsetaxRateValue(); + if (s0 === peg$FAILED) { + s0 = peg$parsetaxAmount(); + if (s0 === peg$FAILED) { + s0 = peg$parsepolicyName(); + if (s0 === peg$FAILED) { + s0 = peg$parsewithdrawalId(); + if (s0 === peg$FAILED) { + s0 = peg$parsebankAccount(); + if (s0 === peg$FAILED) { + s0 = peg$parsereportId(); + if (s0 === peg$FAILED) { + s0 = peg$parsebase62ReportId(); + if (s0 === peg$FAILED) { + s0 = peg$parseexportedToColumnValue(); + if (s0 === peg$FAILED) { + s0 = peg$parseexchangeRate(); + if (s0 === peg$FAILED) { + s0 = peg$parsereimbursableTotal(); + if (s0 === peg$FAILED) { + s0 = peg$parsenonReimbursableTotal(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupFrom(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupExpenses(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupTotal(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupCard(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupFeed(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupBankAccount(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupWithdrawn(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupWithdrawalId(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupCategory(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupTag(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupMerchant(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupMonth(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupWeek(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupYear(); + if (s0 === peg$FAILED) { + s0 = peg$parsegroupQuarter(); + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + } + + return s0; + } + + function peg$parseperDiem() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 8); + if (s1.toLowerCase() === peg$c66) { + peg$currPos += 8; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e69); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f56(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsedraft() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 6); + if (s1.toLowerCase() === peg$c67) { + peg$currPos += 6; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e70); } + } + if (s1 === peg$FAILED) { + s1 = input.substr(peg$currPos, 5); + if (s1.toLowerCase() === peg$c68) { + peg$currPos += 5; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e71); } + } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f57(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseoriginalAmount() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 15); + if (s1.toLowerCase() === peg$c69) { + peg$currPos += 15; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e72); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f58(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsetaxAmount() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 3); + if (s1.toLowerCase() === peg$c70) { + peg$currPos += 3; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e73); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f59(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsetaxRateValue() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 8); + if (s1.toLowerCase() === peg$c21) { + peg$currPos += 8; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e24); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f60(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsepolicyName() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 11); + if (s1.toLowerCase() === peg$c71) { + peg$currPos += 11; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e74); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f61(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsewithdrawalId() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 13); + if (s1.toLowerCase() === peg$c31) { + peg$currPos += 13; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e34); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f62(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebankAccount() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 12); + if (s1.toLowerCase() === peg$c72) { + peg$currPos += 12; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e75); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f63(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsereportId() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 14); + if (s1.toLowerCase() === peg$c73) { + peg$currPos += 14; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e76); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f64(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsebase62ReportId() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 9); + if (s1.toLowerCase() === peg$c9) { + peg$currPos += 9; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e12); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f65(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseexportedToColumnValue() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 11); + if (s1.toLowerCase() === peg$c74) { + peg$currPos += 11; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e77); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f66(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parseexportedToKeyEnd() { + var s0, s1, s2; + + s0 = peg$parsewordBoundary(); + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = peg$parse_(); + s2 = input.charAt(peg$currPos); + if (peg$r1.test(s2)) { + peg$currPos++; + } else { + s2 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e78); } + } + if (s2 !== peg$FAILED) { + s1 = [s1, s2]; + s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseexportedTo() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 10); + if (s1.toLowerCase() === peg$c75) { + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e79); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseexportedToKeyEnd(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f67(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + if (s0 === peg$FAILED) { + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 11); + if (s1.toLowerCase() === peg$c74) { + peg$currPos += 11; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e77); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parseexportedToKeyEnd(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f68(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } + + return s0; + } + + function peg$parseexchangeRate() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 13); + if (s1.toLowerCase() === peg$c76) { + peg$currPos += 13; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e80); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f69(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsereimbursableTotal() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 18); + if (s1.toLowerCase() === peg$c77) { + peg$currPos += 18; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e81); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f70(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsenonReimbursableTotal() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 22); + if (s1.toLowerCase() === peg$c78) { + peg$currPos += 22; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e82); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f71(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupFrom() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 10); + if (s1.toLowerCase() === peg$c79) { + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e83); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f72(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupExpenses() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 14); + if (s1.toLowerCase() === peg$c80) { + peg$currPos += 14; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e84); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f73(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupTotal() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 11); + if (s1.toLowerCase() === peg$c81) { + peg$currPos += 11; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e85); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f74(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupCard() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 10); + if (s1.toLowerCase() === peg$c82) { + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e86); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f75(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupFeed() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 10); + if (s1.toLowerCase() === peg$c83) { + peg$currPos += 10; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e87); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f76(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupBankAccount() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 18); + if (s1.toLowerCase() === peg$c84) { + peg$currPos += 18; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e88); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f77(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + + return s0; + } + + function peg$parsegroupWithdrawn() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 15); + if (s1.toLowerCase() === peg$c85) { + peg$currPos += 15; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e89); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f78(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } - s0 = s1; return s0; } - function peg$parsehas() { - let s0, s1; + function peg$parsegroupWithdrawalId() { + var s0, s1, s2, s3; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 3); - if (s1.toLowerCase() === peg$c53) { - peg$currPos += (3); + s1 = input.substr(peg$currPos, 19); + if (s1.toLowerCase() === peg$c86) { + peg$currPos += 19; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e56); } + if (peg$silentFails === 0) { peg$fail(peg$e90); } } if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f46(); + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f79(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } - s0 = s1; return s0; } - function peg$parseis() { - let s0, s1; + function peg$parsegroupCategory() { + var s0, s1, s2, s3; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 2); - if (s1.toLowerCase() === peg$c54) { - peg$currPos += (2); + s1 = input.substr(peg$currPos, 14); + if (s1.toLowerCase() === peg$c87) { + peg$currPos += 14; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e57); } + if (peg$silentFails === 0) { peg$fail(peg$e91); } } if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f47(); + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f80(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } - s0 = s1; return s0; } - function peg$parsepurchaseAmount() { - let s0, s1; + function peg$parsegroupTag() { + var s0, s1, s2, s3; - s0 = input.substr(peg$currPos, 14); - if (s0.toLowerCase() === peg$c55) { - peg$currPos += (14); + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 9); + if (s1.toLowerCase() === peg$c88) { + peg$currPos += 9; } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e58); } + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e92); } } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 15); - if (s1.toLowerCase() === peg$c56) { - peg$currPos += (15); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e59); } + s2 = peg$FAILED; } - if (s1 !== peg$FAILED) { + if (s2 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f48(); + s0 = peg$f81(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; } - s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parsepurchaseCurrency() { - let s0, s1; + function peg$parsegroupMerchant() { + var s0, s1, s2, s3; - s0 = input.substr(peg$currPos, 16); - if (s0.toLowerCase() === peg$c57) { - peg$currPos += (16); + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 14); + if (s1.toLowerCase() === peg$c89) { + peg$currPos += 14; } else { - s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e60); } + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e93); } } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 17); - if (s1.toLowerCase() === peg$c58) { - peg$currPos += (17); + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e61); } + s2 = peg$FAILED; } - if (s1 !== peg$FAILED) { + if (s2 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f49(); + s0 = peg$f82(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; } - s0 = s1; + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parsecolumns() { - let s0, s1; + function peg$parsegroupMonth() { + var s0, s1, s2, s3; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 7); - if (s1.toLowerCase() === peg$c59) { - peg$currPos += (7); + s1 = input.substr(peg$currPos, 11); + if (s1.toLowerCase() === peg$c90) { + peg$currPos += 11; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e62); } + if (peg$silentFails === 0) { peg$fail(peg$e94); } } if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f50(); + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; + } else { + s2 = peg$FAILED; + } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f83(); + } else { + peg$currPos = s0; + s0 = peg$FAILED; + } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } - s0 = s1; return s0; } - function peg$parseview() { - let s0, s1; + function peg$parsegroupWeek() { + var s0, s1, s2, s3; s0 = peg$currPos; - s1 = input.substr(peg$currPos, 4); - if (s1.toLowerCase() === peg$c60) { - peg$currPos += (4); + s1 = input.substr(peg$currPos, 10); + if (s1.toLowerCase() === peg$c91) { + peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e63); } + if (peg$silentFails === 0) { peg$fail(peg$e95); } } if (s1 !== peg$FAILED) { - peg$savedPos = s0; - s1 = peg$f51(); - } - s0 = s1; - - return s0; - } - - function peg$parseexportedToKeyEnd() { - let s0, s1, s2; - - s0 = peg$parsewordBoundary(); - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = peg$parse_(); - s2 = input.charAt(peg$currPos); - if (peg$r1.test(s2)) { - peg$currPos++; + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e64); } } if (s2 !== peg$FAILED) { - s1 = [s1, s2]; - s0 = s1; + peg$savedPos = s0; + s0 = peg$f84(); } else { peg$currPos = s0; s0 = peg$FAILED; } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } - function peg$parseexportedTo() { - let s0, s1, s2, s3; + function peg$parsegroupYear() { + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); - if (s1.toLowerCase() === peg$c61) { - peg$currPos += (10); + if (s1.toLowerCase() === peg$c92) { + peg$currPos += 10; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e65); } + if (peg$silentFails === 0) { peg$fail(peg$e96); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; peg$silentFails++; - s3 = peg$parseexportedToKeyEnd(); + s3 = peg$parsewordBoundary(); peg$silentFails--; if (s3 !== peg$FAILED) { peg$currPos = s2; @@ -2196,7 +3571,7 @@ function peg$parse(input, options) { } if (s2 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f52(); + s0 = peg$f85(); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2205,57 +3580,62 @@ function peg$parse(input, options) { peg$currPos = s0; s0 = peg$FAILED; } - if (s0 === peg$FAILED) { - s0 = peg$currPos; - s1 = input.substr(peg$currPos, 11); - if (s1.toLowerCase() === peg$c62) { - peg$currPos += (11); + + return s0; + } + + function peg$parsegroupQuarter() { + var s0, s1, s2, s3; + + s0 = peg$currPos; + s1 = input.substr(peg$currPos, 13); + if (s1.toLowerCase() === peg$c93) { + peg$currPos += 13; + } else { + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e97); } + } + if (s1 !== peg$FAILED) { + s2 = peg$currPos; + peg$silentFails++; + s3 = peg$parsewordBoundary(); + peg$silentFails--; + if (s3 !== peg$FAILED) { + peg$currPos = s2; + s2 = undefined; } else { - s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e66); } + s2 = peg$FAILED; } - if (s1 !== peg$FAILED) { - s2 = peg$currPos; - peg$silentFails++; - s3 = peg$parseexportedToKeyEnd(); - peg$silentFails--; - if (s3 !== peg$FAILED) { - peg$currPos = s2; - s2 = undefined; - } else { - s2 = peg$FAILED; - } - if (s2 !== peg$FAILED) { - peg$savedPos = s0; - s0 = peg$f53(); - } else { - peg$currPos = s0; - s0 = peg$FAILED; - } + if (s2 !== peg$FAILED) { + peg$savedPos = s0; + s0 = peg$f86(); } else { peg$currPos = s0; s0 = peg$FAILED; } + } else { + peg$currPos = s0; + s0 = peg$FAILED; } return s0; } function peg$parseoperator() { - let s0, s1; + var s0, s1; peg$silentFails++; s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c63) { - s1 = peg$c63; + if (input.substr(peg$currPos, 2) === peg$c94) { + s1 = peg$c94; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e68); } + if (peg$silentFails === 0) { peg$fail(peg$e99); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f54(); + s1 = peg$f87(); } s0 = s1; if (s0 === peg$FAILED) { @@ -2265,81 +3645,81 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e64); } + if (peg$silentFails === 0) { peg$fail(peg$e78); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f55(); + s1 = peg$f88(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c64) { - s1 = peg$c64; + if (input.substr(peg$currPos, 2) === peg$c95) { + s1 = peg$c95; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e69); } + if (peg$silentFails === 0) { peg$fail(peg$e100); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f56(); + s1 = peg$f89(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c65) { - s1 = peg$c65; + if (input.substr(peg$currPos, 2) === peg$c96) { + s1 = peg$c96; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e70); } + if (peg$silentFails === 0) { peg$fail(peg$e101); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f57(); + s1 = peg$f90(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 62) { - s1 = peg$c66; + s1 = peg$c97; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e71); } + if (peg$silentFails === 0) { peg$fail(peg$e102); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f58(); + s1 = peg$f91(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; - if (input.substr(peg$currPos, 2) === peg$c67) { - s1 = peg$c67; + if (input.substr(peg$currPos, 2) === peg$c98) { + s1 = peg$c98; peg$currPos += 2; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e72); } + if (peg$silentFails === 0) { peg$fail(peg$e103); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f59(); + s1 = peg$f92(); } s0 = s1; if (s0 === peg$FAILED) { s0 = peg$currPos; if (input.charCodeAt(peg$currPos) === 60) { - s1 = peg$c68; + s1 = peg$c99; peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e73); } + if (peg$silentFails === 0) { peg$fail(peg$e104); } } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f60(); + s1 = peg$f93(); } s0 = s1; } @@ -2351,20 +3731,20 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e67); } + if (peg$silentFails === 0) { peg$fail(peg$e98); } } return s0; } function peg$parsefilterOperator() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = peg$parseoperator(); if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f61(s1); + s1 = peg$f94(s1); } s0 = s1; @@ -2372,7 +3752,7 @@ function peg$parse(input, options) { } function peg$parsealphanumeric() { - let s0, s1, s2; + var s0, s1, s2; peg$silentFails++; s0 = peg$currPos; @@ -2382,7 +3762,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } if (s2 !== peg$FAILED) { while (s2 !== peg$FAILED) { @@ -2392,7 +3772,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } } } else { @@ -2400,32 +3780,32 @@ function peg$parse(input, options) { } if (s1 !== peg$FAILED) { peg$savedPos = s0; - s1 = peg$f62(s1); + s1 = peg$f95(s1); } s0 = s1; peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e74); } + if (peg$silentFails === 0) { peg$fail(peg$e105); } } return s0; } function peg$parselogicalAnd() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = peg$parse_(); peg$savedPos = s0; - s1 = peg$f63(); + s1 = peg$f96(); s0 = s1; return s0; } function peg$parse_() { - let s0, s1; + var s0, s1; peg$silentFails++; s0 = []; @@ -2434,7 +3814,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -2443,20 +3823,22 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e76); } + if (peg$silentFails === 0) { peg$fail(peg$e108); } } } peg$silentFails--; + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e107); } return s0; } function peg$parsequotedString() { - let s0, s1, s2; + var s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; - s1 = peg$f64(); + s1 = peg$f97(); if (s1) { s1 = undefined; } else { @@ -2483,7 +3865,7 @@ function peg$parse(input, options) { } function peg$parsesimpleQuotedString() { - let s0, s1, s2, s3, s4, s5, s6; + var s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -2493,7 +3875,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -2502,7 +3884,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } } s2 = input.charAt(peg$currPos); @@ -2510,7 +3892,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s2 !== peg$FAILED) { s3 = []; @@ -2519,7 +3901,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -2528,7 +3910,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } } s4 = input.charAt(peg$currPos); @@ -2536,7 +3918,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s4 !== peg$FAILED) { s5 = []; @@ -2545,7 +3927,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } while (s6 !== peg$FAILED) { s5.push(s6); @@ -2554,11 +3936,11 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e75); } + if (peg$silentFails === 0) { peg$fail(peg$e106); } } } peg$savedPos = s0; - s0 = peg$f65(s1, s3, s5); + s0 = peg$f98(s1, s3, s5); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2570,14 +3952,14 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } return s0; } function peg$parsenestedQuotedString() { - let s0, s1, s2, s3, s4, s5, s6; + var s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -2587,7 +3969,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -2596,7 +3978,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e78); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } } s2 = input.charAt(peg$currPos); @@ -2604,7 +3986,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s2 !== peg$FAILED) { s3 = []; @@ -2613,7 +3995,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -2629,15 +4011,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c69; + s6 = peg$c100; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f66(s1); + s4 = peg$f99(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -2660,15 +4042,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c70; + s6 = peg$c101; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f67(s1); + s4 = peg$f100(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -2691,15 +4073,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c71; + s6 = peg$c102; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f68(s1); + s4 = peg$f101(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -2718,7 +4100,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e80); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -2734,15 +4116,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8220) { - s6 = peg$c69; + s6 = peg$c100; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e81); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f66(s1); + s4 = peg$f99(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -2765,15 +4147,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 8221) { - s6 = peg$c70; + s6 = peg$c101; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e82); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f67(s1); + s4 = peg$f100(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -2796,15 +4178,15 @@ function peg$parse(input, options) { } if (s5 !== peg$FAILED) { if (input.charCodeAt(peg$currPos) === 34) { - s6 = peg$c71; + s6 = peg$c102; peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e83); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; - s4 = peg$f68(s1); + s4 = peg$f101(s1); } else { peg$currPos = s4; s4 = peg$FAILED; @@ -2820,7 +4202,7 @@ function peg$parse(input, options) { s4 = peg$parseclosingQuote(); if (s4 !== peg$FAILED) { peg$savedPos = s0; - s0 = peg$f69(s1, s3, s4); + s0 = peg$f102(s1, s3, s4); } else { peg$currPos = s0; s0 = peg$FAILED; @@ -2832,14 +4214,14 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e77); } + if (peg$silentFails === 0) { peg$fail(peg$e109); } } return s0; } function peg$parseclosingQuote() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.charAt(peg$currPos); @@ -2847,7 +4229,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e79); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -2876,7 +4258,7 @@ function peg$parse(input, options) { } function peg$parsevalidClosingCondition() { - let s0, s1, s2, s3, s4; + var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = []; @@ -2885,7 +4267,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -2894,7 +4276,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e84); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } } s2 = []; @@ -2903,7 +4285,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -2912,7 +4294,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e85); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } } s3 = []; @@ -2921,7 +4303,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -2930,7 +4312,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e86); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } } s4 = peg$parseoperator(); @@ -2949,7 +4331,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -2958,7 +4340,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e87); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } } s2 = peg$currPos; @@ -3005,7 +4387,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e88); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } } } @@ -3014,14 +4396,14 @@ function peg$parse(input, options) { } function peg$parsewordBoundary() { - let s0, s1; + var s0, s1; s0 = input.charAt(peg$currPos); if (peg$r12.test(s0)) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e89); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -3060,35 +4442,29 @@ function peg$parse(input, options) { peg$result = peg$startRuleFunction(); - const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length); - function peg$throw() { - if (peg$result !== peg$FAILED && peg$currPos < input.length) { - peg$fail(peg$endExpectation()); - } - - throw peg$buildStructuredError( - peg$maxFailExpected, - peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null, - peg$maxFailPos < input.length - ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) - : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) - ); - } if (options.peg$library) { return /** @type {any} */ ({ peg$result, peg$currPos, peg$FAILED, peg$maxFailExpected, - peg$maxFailPos, - peg$success, - peg$throw: peg$success ? undefined : peg$throw, + peg$maxFailPos }); } - if (peg$success) { + if (peg$result !== peg$FAILED && peg$currPos === input.length) { return peg$result; } else { - peg$throw(); + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); } } diff --git a/src/libs/SearchParser/searchParser.js b/src/libs/SearchParser/searchParser.js index f38d92cffd86..52712ed2731b 100644 --- a/src/libs/SearchParser/searchParser.js +++ b/src/libs/SearchParser/searchParser.js @@ -1,4 +1,4 @@ -// @generated by Peggy 5.0.6. +// @generated by Peggy 4.0.3. // // https://peggyjs.org/ @@ -12,615 +12,627 @@ return { operator, left, right }; } -class peg$SyntaxError extends SyntaxError { - constructor(message, expected, found, location) { - super(message); - this.expected = expected; - this.found = found; - this.location = location; - this.name = "SyntaxError"; - } - - format(sources) { - let str = "Error: " + this.message; - if (this.location) { - let src = null; - const st = sources.find(s => s.source === this.location.source); - if (st) { - src = st.text.split(/\r\n|\n|\r/g); - } - const s = this.location.start; - const offset_s = (this.location.source && (typeof this.location.source.offset === "function")) - ? this.location.source.offset(s) - : s; - const loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; - if (src) { - const e = this.location.end; - const filler = "".padEnd(offset_s.line.toString().length, " "); - const line = src[s.line - 1]; - const last = s.line === e.line ? e.column : line.length + 1; - const hatLen = (last - s.column) || 1; - str += "\n --> " + loc + "\n" - + filler + " |\n" - + offset_s.line + " | " + line + "\n" - + filler + " | " + "".padEnd(s.column - 1, " ") - + "".padEnd(hatLen, "^"); - } else { - str += "\n at " + loc; - } - } - return str; - } - - static buildMessage(expected, found) { - function hex(ch) { - return ch.codePointAt(0).toString(16).toUpperCase(); - } +function peg$subclass(child, parent) { + function C() { this.constructor = child; } + C.prototype = parent.prototype; + child.prototype = new C(); +} - const nonPrintable = Object.prototype.hasOwnProperty.call(RegExp.prototype, "unicode") - ? new RegExp("[\\p{C}\\p{Mn}\\p{Mc}]", "gu") - : null; - function unicodeEscape(s) { - if (nonPrintable) { - return s.replace(nonPrintable, ch => "\\u{" + hex(ch) + "}"); - } - return s; - } +function peg$SyntaxError(message, expected, found, location) { + var self = Error.call(this, message); + // istanbul ignore next Check is a necessary evil to support older environments + if (Object.setPrototypeOf) { + Object.setPrototypeOf(self, peg$SyntaxError.prototype); + } + self.expected = expected; + self.found = found; + self.location = location; + self.name = "SyntaxError"; + return self; +} - function literalEscape(s) { - return unicodeEscape(s - .replace(/\\/g, "\\\\") - .replace(/"/g, "\\\"") - .replace(/\0/g, "\\0") - .replace(/\t/g, "\\t") - .replace(/\n/g, "\\n") - .replace(/\r/g, "\\r") - .replace(/[\x00-\x0F]/g, ch => "\\x0" + hex(ch)) - .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); - } +peg$subclass(peg$SyntaxError, Error); - function classEscape(s) { - return unicodeEscape(s - .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, ch => "\\x0" + hex(ch)) - .replace(/[\x10-\x1F\x7F-\x9F]/g, ch => "\\x" + hex(ch))); - } +function peg$padEnd(str, targetLength, padString) { + padString = padString || " "; + if (str.length > targetLength) { return str; } + targetLength -= str.length; + padString += padString.repeat(targetLength); + return str + padString.slice(0, targetLength); +} - const DESCRIBE_EXPECTATION_FNS = { - literal(expectation) { - return "\"" + literalEscape(expectation.text) + "\""; - }, +peg$SyntaxError.prototype.format = function(sources) { + var str = "Error: " + this.message; + if (this.location) { + var src = null; + var k; + for (k = 0; k < sources.length; k++) { + if (sources[k].source === this.location.source) { + src = sources[k].text.split(/\r\n|\n|\r/g); + break; + } + } + var s = this.location.start; + var offset_s = (this.location.source && (typeof this.location.source.offset === "function")) + ? this.location.source.offset(s) + : s; + var loc = this.location.source + ":" + offset_s.line + ":" + offset_s.column; + if (src) { + var e = this.location.end; + var filler = peg$padEnd("", offset_s.line.toString().length, ' '); + var line = src[s.line - 1]; + var last = s.line === e.line ? e.column : line.length + 1; + var hatLen = (last - s.column) || 1; + str += "\n --> " + loc + "\n" + + filler + " |\n" + + offset_s.line + " | " + line + "\n" + + filler + " | " + peg$padEnd("", s.column - 1, ' ') + + peg$padEnd("", hatLen, "^"); + } else { + str += "\n at " + loc; + } + } + return str; +}; - class(expectation) { - const escapedParts = expectation.parts.map( - part => (Array.isArray(part) - ? classEscape(part[0]) + "-" + classEscape(part[1]) - : classEscape(part)) - ); +peg$SyntaxError.buildMessage = function(expected, found) { + var DESCRIBE_EXPECTATION_FNS = { + literal: function(expectation) { + return "\"" + literalEscape(expectation.text) + "\""; + }, - return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]" + (expectation.unicode ? "u" : ""); - }, + class: function(expectation) { + var escapedParts = expectation.parts.map(function(part) { + return Array.isArray(part) + ? classEscape(part[0]) + "-" + classEscape(part[1]) + : classEscape(part); + }); - any() { - return "any character"; - }, + return "[" + (expectation.inverted ? "^" : "") + escapedParts.join("") + "]"; + }, - end() { - return "end of input"; - }, + any: function() { + return "any character"; + }, - other(expectation) { - return expectation.description; - }, - }; + end: function() { + return "end of input"; + }, - function describeExpectation(expectation) { - return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + other: function(expectation) { + return expectation.description; } + }; + + function hex(ch) { + return ch.charCodeAt(0).toString(16).toUpperCase(); + } - function describeExpected(expected) { - const descriptions = expected.map(describeExpectation); - descriptions.sort(); + function literalEscape(s) { + return s + .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(ch) { return "\\x0" + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); + } - if (descriptions.length > 0) { - let j = 1; - for (let i = 1; i < descriptions.length; i++) { - if (descriptions[i - 1] !== descriptions[i]) { - descriptions[j] = descriptions[i]; - j++; - } - } - descriptions.length = j; - } + function classEscape(s) { + return s + .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(ch) { return "\\x0" + hex(ch); }) + .replace(/[\x10-\x1F\x7F-\x9F]/g, function(ch) { return "\\x" + hex(ch); }); + } - switch (descriptions.length) { - case 1: - return descriptions[0]; + function describeExpectation(expectation) { + return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation); + } + + function describeExpected(expected) { + var descriptions = expected.map(describeExpectation); + var i, j; - case 2: - return descriptions[0] + " or " + descriptions[1]; + descriptions.sort(); - default: - return descriptions.slice(0, -1).join(", ") - + ", or " - + descriptions[descriptions.length - 1]; + if (descriptions.length > 0) { + for (i = 1, j = 1; i < descriptions.length; i++) { + if (descriptions[i - 1] !== descriptions[i]) { + descriptions[j] = descriptions[i]; + j++; + } } + descriptions.length = j; } - function describeFound(found) { - return found ? "\"" + literalEscape(found) + "\"" : "end of input"; + switch (descriptions.length) { + case 1: + return descriptions[0]; + + case 2: + return descriptions[0] + " or " + descriptions[1]; + + default: + return descriptions.slice(0, -1).join(", ") + + ", or " + + descriptions[descriptions.length - 1]; } + } - return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; + function describeFound(found) { + return found ? "\"" + literalEscape(found) + "\"" : "end of input"; } -} + + return "Expected " + describeExpected(expected) + " but " + describeFound(found) + " found."; +}; function peg$parse(input, options) { options = options !== undefined ? options : {}; - const peg$FAILED = {}; - const peg$source = options.grammarSource; - - const peg$startRuleFunctions = { - query: peg$parsequery, - }; - let peg$startRuleFunction = peg$parsequery; - - const peg$c0 = "-"; - const peg$c1 = "report-field"; - const peg$c2 = "reportfield"; - const peg$c3 = ","; - const peg$c4 = "date"; - const peg$c5 = "amount"; - const peg$c6 = "merchant"; - const peg$c7 = "description"; - const peg$c8 = "reportid"; - const peg$c9 = "report-id"; - const peg$c10 = "keyword"; - const peg$c11 = "in"; - const peg$c12 = "currency"; - const peg$c13 = "groupCurrency"; - const peg$c14 = "group-currency"; - const peg$c15 = "tag"; - const peg$c16 = "category"; - const peg$c17 = "to"; - const peg$c18 = "exporter"; - const peg$c19 = "payer"; - const peg$c20 = "taxrate"; - const peg$c21 = "tax-rate"; - const peg$c22 = "cardID"; - const peg$c23 = "card"; - const peg$c24 = "from"; - const peg$c25 = "attendee"; - const peg$c26 = "expenseType"; - const peg$c27 = "expense-type"; - const peg$c28 = "withdrawalType"; - const peg$c29 = "withdrawal-type"; - const peg$c30 = "withdrawalid"; - const peg$c31 = "withdrawal-id"; - const peg$c32 = "billable"; - const peg$c33 = "reimbursable"; - const peg$c34 = "type"; - const peg$c35 = "status"; - const peg$c36 = "sortBy"; - const peg$c37 = "sort-by"; - const peg$c38 = "sortOrder"; - const peg$c39 = "sort-order"; - const peg$c40 = "policyID"; - const peg$c41 = "workspace"; - const peg$c42 = "submitted"; - const peg$c43 = "approved"; - const peg$c44 = "paid"; - const peg$c45 = "exported"; - const peg$c46 = "posted"; - const peg$c47 = "withdrawn"; - const peg$c48 = "groupby"; - const peg$c49 = "group-by"; - const peg$c50 = "limit"; - const peg$c51 = "feed"; - const peg$c52 = "title"; - const peg$c53 = "assignee"; - const peg$c54 = "createdby"; - const peg$c55 = "created-by"; - const peg$c56 = "action"; - const peg$c57 = "total"; - const peg$c58 = "has"; - const peg$c59 = "is"; - const peg$c60 = "purchaseamount"; - const peg$c61 = "purchase-amount"; - const peg$c62 = "purchasecurrency"; - const peg$c63 = "purchase-currency"; - const peg$c64 = "columns"; - const peg$c65 = "view"; - const peg$c66 = "per-diem"; - const peg$c67 = "drafts"; - const peg$c68 = "draft"; - const peg$c69 = "original-amount"; - const peg$c70 = "tax"; - const peg$c71 = "policy-name"; - const peg$c72 = "bank-account"; - const peg$c73 = "long-report-id"; - const peg$c74 = "exported-to"; - const peg$c75 = "exportedto"; - const peg$c76 = "exchange-rate"; - const peg$c77 = "reimbursable-total"; - const peg$c78 = "non-reimbursable-total"; - const peg$c79 = "group-from"; - const peg$c80 = "group-expenses"; - const peg$c81 = "group-total"; - const peg$c82 = "group-card"; - const peg$c83 = "group-feed"; - const peg$c84 = "group-bank-account"; - const peg$c85 = "group-withdrawn"; - const peg$c86 = "group-withdrawal-id"; - const peg$c87 = "group-category"; - const peg$c88 = "group-tag"; - const peg$c89 = "group-merchant"; - const peg$c90 = "group-month"; - const peg$c91 = "group-week"; - const peg$c92 = "group-year"; - const peg$c93 = "group-quarter"; - const peg$c94 = "*:"; - const peg$c95 = "!="; - const peg$c96 = ">="; - const peg$c97 = ">"; - const peg$c98 = "<="; - const peg$c99 = "<"; - const peg$c100 = "\u201C"; - const peg$c101 = "\u201D"; - const peg$c102 = "\""; - - const peg$r0 = /^[^ \t\r\n\xA0]/; - const peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; - const peg$r2 = /^[:=]/; - const peg$r3 = /^[^ ,\t\n\r\xA0]/; - const peg$r4 = /^[ \t\r\n\xA0]/; - const peg$r5 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; - const peg$r6 = /^["\u201C-\u201D]/; - const peg$r7 = /^[^"\u201D\u201C\r\n]/; - const peg$r8 = /^[ \t\n\r\xA0a-zA-Z0-9]/; - const peg$r9 = /^[a-zA-Z0-9]/; - const peg$r10 = /^[ \t\n\r\xA0]/; - const peg$r11 = /^[ \t\n\r\xA0a-zA-Z]/; - const peg$r12 = /^[,]/; - const peg$r13 = /^[ \t\n\r\xA0,]/; - - const peg$e0 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], true, false, false); - const peg$e1 = peg$literalExpectation("-", false); - const peg$e2 = peg$literalExpectation("report-field", true); - const peg$e3 = peg$literalExpectation("reportfield", true); - const peg$e4 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false, false); - const peg$e5 = peg$anyExpectation(); - const peg$e6 = peg$otherExpectation("key"); - const peg$e7 = peg$otherExpectation("default key"); - const peg$e8 = peg$literalExpectation(",", false); - const peg$e9 = peg$literalExpectation("date", true); - const peg$e10 = peg$literalExpectation("amount", true); - const peg$e11 = peg$literalExpectation("merchant", true); - const peg$e12 = peg$literalExpectation("description", true); - const peg$e13 = peg$literalExpectation("reportid", true); - const peg$e14 = peg$literalExpectation("report-id", true); - const peg$e15 = peg$literalExpectation("keyword", true); - const peg$e16 = peg$literalExpectation("in", true); - const peg$e17 = peg$literalExpectation("currency", true); - const peg$e18 = peg$literalExpectation("groupCurrency", false); - const peg$e19 = peg$literalExpectation("group-currency", true); - const peg$e20 = peg$literalExpectation("tag", true); - const peg$e21 = peg$literalExpectation("category", true); - const peg$e22 = peg$literalExpectation("to", true); - const peg$e23 = peg$literalExpectation("exporter", true); - const peg$e24 = peg$literalExpectation("payer", true); - const peg$e25 = peg$literalExpectation("taxRate", true); - const peg$e26 = peg$literalExpectation("tax-rate", true); - const peg$e27 = peg$literalExpectation("cardID", false); - const peg$e28 = peg$literalExpectation("card", true); - const peg$e29 = peg$literalExpectation("from", true); - const peg$e30 = peg$literalExpectation("attendee", true); - const peg$e31 = peg$literalExpectation("expenseType", false); - const peg$e32 = peg$literalExpectation("expense-type", true); - const peg$e33 = peg$literalExpectation("withdrawalType", false); - const peg$e34 = peg$literalExpectation("withdrawal-type", true); - const peg$e35 = peg$literalExpectation("withdrawalID", true); - const peg$e36 = peg$literalExpectation("withdrawal-id", true); - const peg$e37 = peg$literalExpectation("billable", true); - const peg$e38 = peg$literalExpectation("reimbursable", true); - const peg$e39 = peg$literalExpectation("type", true); - const peg$e40 = peg$literalExpectation("status", true); - const peg$e41 = peg$literalExpectation("sortBy", false); - const peg$e42 = peg$literalExpectation("sort-by", true); - const peg$e43 = peg$literalExpectation("sortOrder", false); - const peg$e44 = peg$literalExpectation("sort-order", true); - const peg$e45 = peg$literalExpectation("policyID", false); - const peg$e46 = peg$literalExpectation("workspace", true); - const peg$e47 = peg$literalExpectation("submitted", true); - const peg$e48 = peg$literalExpectation("approved", true); - const peg$e49 = peg$literalExpectation("paid", true); - const peg$e50 = peg$literalExpectation("exported", true); - const peg$e51 = peg$literalExpectation("posted", true); - const peg$e52 = peg$literalExpectation("withdrawn", true); - const peg$e53 = peg$literalExpectation("groupBy", true); - const peg$e54 = peg$literalExpectation("group-by", true); - const peg$e55 = peg$literalExpectation("limit", true); - const peg$e56 = peg$literalExpectation("feed", true); - const peg$e57 = peg$literalExpectation("title", true); - const peg$e58 = peg$literalExpectation("assignee", true); - const peg$e59 = peg$literalExpectation("createdBy", true); - const peg$e60 = peg$literalExpectation("created-by", true); - const peg$e61 = peg$literalExpectation("action", true); - const peg$e62 = peg$literalExpectation("total", true); - const peg$e63 = peg$literalExpectation("has", true); - const peg$e64 = peg$literalExpectation("is", true); - const peg$e65 = peg$literalExpectation("purchaseAmount", true); - const peg$e66 = peg$literalExpectation("purchase-amount", true); - const peg$e67 = peg$literalExpectation("purchaseCurrency", true); - const peg$e68 = peg$literalExpectation("purchase-currency", true); - const peg$e69 = peg$literalExpectation("columns", true); - const peg$e70 = peg$literalExpectation("view", true); - const peg$e71 = peg$literalExpectation("per-diem", true); - const peg$e72 = peg$literalExpectation("drafts", true); - const peg$e73 = peg$literalExpectation("draft", true); - const peg$e74 = peg$literalExpectation("original-amount", true); - const peg$e75 = peg$literalExpectation("tax", true); - const peg$e76 = peg$literalExpectation("policy-name", true); - const peg$e77 = peg$literalExpectation("bank-account", true); - const peg$e78 = peg$literalExpectation("long-report-id", true); - const peg$e79 = peg$literalExpectation("exported-to", true); - const peg$e80 = peg$classExpectation([":", "="], false, false, false); - const peg$e81 = peg$literalExpectation("exportedTo", true); - const peg$e82 = peg$literalExpectation("exchange-rate", true); - const peg$e83 = peg$literalExpectation("reimbursable-total", true); - const peg$e84 = peg$literalExpectation("non-reimbursable-total", true); - const peg$e85 = peg$literalExpectation("group-from", true); - const peg$e86 = peg$literalExpectation("group-expenses", true); - const peg$e87 = peg$literalExpectation("group-total", true); - const peg$e88 = peg$literalExpectation("group-card", true); - const peg$e89 = peg$literalExpectation("group-feed", true); - const peg$e90 = peg$literalExpectation("group-bank-account", true); - const peg$e91 = peg$literalExpectation("group-withdrawn", true); - const peg$e92 = peg$literalExpectation("group-withdrawal-id", true); - const peg$e93 = peg$literalExpectation("group-category", true); - const peg$e94 = peg$literalExpectation("group-tag", true); - const peg$e95 = peg$literalExpectation("group-merchant", true); - const peg$e96 = peg$literalExpectation("group-month", true); - const peg$e97 = peg$literalExpectation("group-week", true); - const peg$e98 = peg$literalExpectation("group-year", true); - const peg$e99 = peg$literalExpectation("group-quarter", true); - const peg$e100 = peg$otherExpectation("operator"); - const peg$e101 = peg$literalExpectation("*:", false); - const peg$e102 = peg$literalExpectation("!=", false); - const peg$e103 = peg$literalExpectation(">=", false); - const peg$e104 = peg$literalExpectation(">", false); - const peg$e105 = peg$literalExpectation("<=", false); - const peg$e106 = peg$literalExpectation("<", false); - const peg$e107 = peg$otherExpectation("word"); - const peg$e108 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false, false); - const peg$e109 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false, false); - const peg$e110 = peg$otherExpectation("quote"); - const peg$e111 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false, false); - const peg$e112 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false, false); - const peg$e113 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false, false); - const peg$e114 = peg$literalExpectation("\u201C", false); - const peg$e115 = peg$literalExpectation("\u201D", false); - const peg$e116 = peg$literalExpectation("\"", false); - const peg$e117 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); - const peg$e118 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false, false); - const peg$e119 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false, false); - const peg$e120 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false, false); - const peg$e121 = peg$classExpectation([","], false, false, false); - const peg$e122 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false, false); - - function peg$f0(filters) { return applyDefaults(filters); } - function peg$f1(head, tail) { - const allFilters = [head, ...tail.map(([_, filter]) => filter)] - .filter(Boolean) - .filter((filter) => filter.right); - rawFilterList = allFilters.map(createRawFilter).filter(Boolean); - - const filtersWithoutDefaults = allFilters.filter((filter) => !filter.isDefault); - - if (!filtersWithoutDefaults.length) { - return null; - } - - const keywords = filtersWithoutDefaults.filter( - (filter) => - filter.left === "keyword" || filter.right?.left === "keyword" - ); - const nonKeywords = filtersWithoutDefaults.filter( - (filter) => - filter.left !== "keyword" && filter.right?.left !== "keyword" - ); - - const keywordFilter = buildFilter( - "eq", - "keyword", - keywords - .map((filter) => filter.right.replaceAll(/^(['"])(.*)\1$/g, "$2")) - .flat() - ); - if (keywordFilter.right.length > 0) { - nonKeywords.push(keywordFilter); - } - return nonKeywords.reduce((result, filter) => - buildFilter("and", result, filter) - ); - } - function peg$f2(key, op, value) { - updateDefaultValues(key, value); - return {...buildFilter(op, key, value), isDefault: true}; - } - function peg$f3(value) { - //handle no-breaking space - let word; - if (Array.isArray(value)) { - word = value.join(""); - } else { - word = value; - } - return buildFilter("eq", "keyword", word); - } - function peg$f4(neg, field, op, values) { - expectingNestedQuote = false; nameOperator = false; + var peg$FAILED = {}; + var peg$source = options.grammarSource; + + var peg$startRuleFunctions = { query: peg$parsequery }; + var peg$startRuleFunction = peg$parsequery; + + var peg$c0 = "-"; + var peg$c1 = "report-field"; + var peg$c2 = "reportfield"; + var peg$c3 = ","; + var peg$c4 = "date"; + var peg$c5 = "amount"; + var peg$c6 = "merchant"; + var peg$c7 = "description"; + var peg$c8 = "reportid"; + var peg$c9 = "report-id"; + var peg$c10 = "keyword"; + var peg$c11 = "in"; + var peg$c12 = "currency"; + var peg$c13 = "groupCurrency"; + var peg$c14 = "group-currency"; + var peg$c15 = "tag"; + var peg$c16 = "category"; + var peg$c17 = "to"; + var peg$c18 = "exporter"; + var peg$c19 = "payer"; + var peg$c20 = "taxrate"; + var peg$c21 = "tax-rate"; + var peg$c22 = "cardID"; + var peg$c23 = "card"; + var peg$c24 = "from"; + var peg$c25 = "attendee"; + var peg$c26 = "expenseType"; + var peg$c27 = "expense-type"; + var peg$c28 = "withdrawalType"; + var peg$c29 = "withdrawal-type"; + var peg$c30 = "withdrawalid"; + var peg$c31 = "withdrawal-id"; + var peg$c32 = "billable"; + var peg$c33 = "reimbursable"; + var peg$c34 = "type"; + var peg$c35 = "status"; + var peg$c36 = "sortBy"; + var peg$c37 = "sort-by"; + var peg$c38 = "sortOrder"; + var peg$c39 = "sort-order"; + var peg$c40 = "policyID"; + var peg$c41 = "workspace"; + var peg$c42 = "submitted"; + var peg$c43 = "approved"; + var peg$c44 = "paid"; + var peg$c45 = "exported"; + var peg$c46 = "posted"; + var peg$c47 = "withdrawn"; + var peg$c48 = "groupby"; + var peg$c49 = "group-by"; + var peg$c50 = "limit"; + var peg$c51 = "feed"; + var peg$c52 = "title"; + var peg$c53 = "assignee"; + var peg$c54 = "createdby"; + var peg$c55 = "created-by"; + var peg$c56 = "action"; + var peg$c57 = "total"; + var peg$c58 = "has"; + var peg$c59 = "is"; + var peg$c60 = "purchaseamount"; + var peg$c61 = "purchase-amount"; + var peg$c62 = "purchasecurrency"; + var peg$c63 = "purchase-currency"; + var peg$c64 = "columns"; + var peg$c65 = "view"; + var peg$c66 = "per-diem"; + var peg$c67 = "drafts"; + var peg$c68 = "draft"; + var peg$c69 = "original-amount"; + var peg$c70 = "tax"; + var peg$c71 = "policy-name"; + var peg$c72 = "bank-account"; + var peg$c73 = "long-report-id"; + var peg$c74 = "exported-to"; + var peg$c75 = "exportedto"; + var peg$c76 = "exchange-rate"; + var peg$c77 = "reimbursable-total"; + var peg$c78 = "non-reimbursable-total"; + var peg$c79 = "group-from"; + var peg$c80 = "group-expenses"; + var peg$c81 = "group-total"; + var peg$c82 = "group-card"; + var peg$c83 = "group-feed"; + var peg$c84 = "group-bank-account"; + var peg$c85 = "group-withdrawn"; + var peg$c86 = "group-withdrawal-id"; + var peg$c87 = "group-category"; + var peg$c88 = "group-tag"; + var peg$c89 = "group-merchant"; + var peg$c90 = "group-month"; + var peg$c91 = "group-week"; + var peg$c92 = "group-year"; + var peg$c93 = "group-quarter"; + var peg$c94 = "*:"; + var peg$c95 = "!="; + var peg$c96 = ">="; + var peg$c97 = ">"; + var peg$c98 = "<="; + var peg$c99 = "<"; + var peg$c100 = "\u201C"; + var peg$c101 = "\u201D"; + var peg$c102 = "\""; + + var peg$r0 = /^[^ \t\r\n\xA0]/; + var peg$r1 = /^[ \t\r\n\xA0,:=<>!]/; + var peg$r2 = /^[:=]/; + var peg$r3 = /^[^ ,\t\n\r\xA0]/; + var peg$r4 = /^[ \t\r\n\xA0]/; + var peg$r5 = /^[^ ,"\u201D\u201C\t\n\r\xA0]/; + var peg$r6 = /^["\u201C-\u201D]/; + var peg$r7 = /^[^"\u201D\u201C\r\n]/; + var peg$r8 = /^[ \t\n\r\xA0a-zA-Z0-9]/; + var peg$r9 = /^[a-zA-Z0-9]/; + var peg$r10 = /^[ \t\n\r\xA0]/; + var peg$r11 = /^[ \t\n\r\xA0a-zA-Z]/; + var peg$r12 = /^[,]/; + var peg$r13 = /^[ \t\n\r\xA0,]/; + + var peg$e0 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], true, false); + var peg$e1 = peg$literalExpectation("-", false); + var peg$e2 = peg$literalExpectation("report-field", true); + var peg$e3 = peg$literalExpectation("reportfield", true); + var peg$e4 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0", ",", ":", "=", "<", ">", "!"], false, false); + var peg$e5 = peg$anyExpectation(); + var peg$e6 = peg$otherExpectation("key"); + var peg$e7 = peg$otherExpectation("default key"); + var peg$e8 = peg$literalExpectation(",", false); + var peg$e9 = peg$literalExpectation("date", true); + var peg$e10 = peg$literalExpectation("amount", true); + var peg$e11 = peg$literalExpectation("merchant", true); + var peg$e12 = peg$literalExpectation("description", true); + var peg$e13 = peg$literalExpectation("reportid", true); + var peg$e14 = peg$literalExpectation("report-id", true); + var peg$e15 = peg$literalExpectation("keyword", true); + var peg$e16 = peg$literalExpectation("in", true); + var peg$e17 = peg$literalExpectation("currency", true); + var peg$e18 = peg$literalExpectation("groupCurrency", false); + var peg$e19 = peg$literalExpectation("group-currency", true); + var peg$e20 = peg$literalExpectation("tag", true); + var peg$e21 = peg$literalExpectation("category", true); + var peg$e22 = peg$literalExpectation("to", true); + var peg$e23 = peg$literalExpectation("exporter", true); + var peg$e24 = peg$literalExpectation("payer", true); + var peg$e25 = peg$literalExpectation("taxRate", true); + var peg$e26 = peg$literalExpectation("tax-rate", true); + var peg$e27 = peg$literalExpectation("cardID", false); + var peg$e28 = peg$literalExpectation("card", true); + var peg$e29 = peg$literalExpectation("from", true); + var peg$e30 = peg$literalExpectation("attendee", true); + var peg$e31 = peg$literalExpectation("expenseType", false); + var peg$e32 = peg$literalExpectation("expense-type", true); + var peg$e33 = peg$literalExpectation("withdrawalType", false); + var peg$e34 = peg$literalExpectation("withdrawal-type", true); + var peg$e35 = peg$literalExpectation("withdrawalID", true); + var peg$e36 = peg$literalExpectation("withdrawal-id", true); + var peg$e37 = peg$literalExpectation("billable", true); + var peg$e38 = peg$literalExpectation("reimbursable", true); + var peg$e39 = peg$literalExpectation("type", true); + var peg$e40 = peg$literalExpectation("status", true); + var peg$e41 = peg$literalExpectation("sortBy", false); + var peg$e42 = peg$literalExpectation("sort-by", true); + var peg$e43 = peg$literalExpectation("sortOrder", false); + var peg$e44 = peg$literalExpectation("sort-order", true); + var peg$e45 = peg$literalExpectation("policyID", false); + var peg$e46 = peg$literalExpectation("workspace", true); + var peg$e47 = peg$literalExpectation("submitted", true); + var peg$e48 = peg$literalExpectation("approved", true); + var peg$e49 = peg$literalExpectation("paid", true); + var peg$e50 = peg$literalExpectation("exported", true); + var peg$e51 = peg$literalExpectation("posted", true); + var peg$e52 = peg$literalExpectation("withdrawn", true); + var peg$e53 = peg$literalExpectation("groupBy", true); + var peg$e54 = peg$literalExpectation("group-by", true); + var peg$e55 = peg$literalExpectation("limit", true); + var peg$e56 = peg$literalExpectation("feed", true); + var peg$e57 = peg$literalExpectation("title", true); + var peg$e58 = peg$literalExpectation("assignee", true); + var peg$e59 = peg$literalExpectation("createdBy", true); + var peg$e60 = peg$literalExpectation("created-by", true); + var peg$e61 = peg$literalExpectation("action", true); + var peg$e62 = peg$literalExpectation("total", true); + var peg$e63 = peg$literalExpectation("has", true); + var peg$e64 = peg$literalExpectation("is", true); + var peg$e65 = peg$literalExpectation("purchaseAmount", true); + var peg$e66 = peg$literalExpectation("purchase-amount", true); + var peg$e67 = peg$literalExpectation("purchaseCurrency", true); + var peg$e68 = peg$literalExpectation("purchase-currency", true); + var peg$e69 = peg$literalExpectation("columns", true); + var peg$e70 = peg$literalExpectation("view", true); + var peg$e71 = peg$literalExpectation("per-diem", true); + var peg$e72 = peg$literalExpectation("drafts", true); + var peg$e73 = peg$literalExpectation("draft", true); + var peg$e74 = peg$literalExpectation("original-amount", true); + var peg$e75 = peg$literalExpectation("tax", true); + var peg$e76 = peg$literalExpectation("policy-name", true); + var peg$e77 = peg$literalExpectation("bank-account", true); + var peg$e78 = peg$literalExpectation("long-report-id", true); + var peg$e79 = peg$literalExpectation("exported-to", true); + var peg$e80 = peg$classExpectation([":", "="], false, false); + var peg$e81 = peg$literalExpectation("exportedTo", true); + var peg$e82 = peg$literalExpectation("exchange-rate", true); + var peg$e83 = peg$literalExpectation("reimbursable-total", true); + var peg$e84 = peg$literalExpectation("non-reimbursable-total", true); + var peg$e85 = peg$literalExpectation("group-from", true); + var peg$e86 = peg$literalExpectation("group-expenses", true); + var peg$e87 = peg$literalExpectation("group-total", true); + var peg$e88 = peg$literalExpectation("group-card", true); + var peg$e89 = peg$literalExpectation("group-feed", true); + var peg$e90 = peg$literalExpectation("group-bank-account", true); + var peg$e91 = peg$literalExpectation("group-withdrawn", true); + var peg$e92 = peg$literalExpectation("group-withdrawal-id", true); + var peg$e93 = peg$literalExpectation("group-category", true); + var peg$e94 = peg$literalExpectation("group-tag", true); + var peg$e95 = peg$literalExpectation("group-merchant", true); + var peg$e96 = peg$literalExpectation("group-month", true); + var peg$e97 = peg$literalExpectation("group-week", true); + var peg$e98 = peg$literalExpectation("group-year", true); + var peg$e99 = peg$literalExpectation("group-quarter", true); + var peg$e100 = peg$otherExpectation("operator"); + var peg$e101 = peg$literalExpectation("*:", false); + var peg$e102 = peg$literalExpectation("!=", false); + var peg$e103 = peg$literalExpectation(">=", false); + var peg$e104 = peg$literalExpectation(">", false); + var peg$e105 = peg$literalExpectation("<=", false); + var peg$e106 = peg$literalExpectation("<", false); + var peg$e107 = peg$otherExpectation("word"); + var peg$e108 = peg$classExpectation([" ", ",", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e109 = peg$otherExpectation("whitespace"); + var peg$e110 = peg$classExpectation([" ", "\t", "\r", "\n", "\xA0"], false, false); + var peg$e111 = peg$otherExpectation("quote"); + var peg$e112 = peg$classExpectation([" ", ",", "\"", "\u201D", "\u201C", "\t", "\n", "\r", "\xA0"], true, false); + var peg$e113 = peg$classExpectation(["\"", ["\u201C", "\u201D"]], false, false); + var peg$e114 = peg$classExpectation(["\"", "\u201D", "\u201C", "\r", "\n"], true, false); + var peg$e115 = peg$literalExpectation("\u201C", false); + var peg$e116 = peg$literalExpectation("\u201D", false); + var peg$e117 = peg$literalExpectation("\"", false); + var peg$e118 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e119 = peg$classExpectation([["a", "z"], ["A", "Z"], ["0", "9"]], false, false); + var peg$e120 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0"], false, false); + var peg$e121 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ["a", "z"], ["A", "Z"]], false, false); + var peg$e122 = peg$classExpectation([","], false, false); + var peg$e123 = peg$classExpectation([" ", "\t", "\n", "\r", "\xA0", ","], false, false); + + var peg$f0 = function(filters) { return applyDefaults(filters); }; + var peg$f1 = function(head, tail) { + const allFilters = [head, ...tail.map(([_, filter]) => filter)] + .filter(Boolean) + .filter((filter) => filter.right); + rawFilterList = allFilters.map(createRawFilter).filter(Boolean); + + const filtersWithoutDefaults = allFilters.filter((filter) => !filter.isDefault); + + if (!filtersWithoutDefaults.length) { + return null; + } + + const keywords = filtersWithoutDefaults.filter( + (filter) => + filter.left === "keyword" || filter.right?.left === "keyword" + ); + const nonKeywords = filtersWithoutDefaults.filter( + (filter) => + filter.left !== "keyword" && filter.right?.left !== "keyword" + ); + + const keywordFilter = buildFilter( + "eq", + "keyword", + keywords + .map((filter) => filter.right.replaceAll(/^(['"])(.*)\1$/g, "$2")) + .flat() + ); + if (keywordFilter.right.length > 0) { + nonKeywords.push(keywordFilter); + } + return nonKeywords.reduce((result, filter) => + buildFilter("and", result, filter) + ); + }; + var peg$f2 = function(key, op, value) { + updateDefaultValues(key, value); + return {...buildFilter(op, key, value), isDefault: true}; + }; + var peg$f3 = function(value) { + //handle no-breaking space + let word; + if (Array.isArray(value)) { + word = value.join(""); + } else { + word = value; + } + return buildFilter("eq", "keyword", word); + }; + var peg$f4 = function(neg, field, op, values) { + expectingNestedQuote = false; nameOperator = false; - const key = field; - let operator = op; + const key = field; + let operator = op; - // Apply negation only when "-" is present and the key can be negated - if (neg && !nonNegatableKeys.has(key)) { - if (operator === "eq") { - operator = "neq"; + // Apply negation only when "-" is present and the key can be negated + if (neg && !nonNegatableKeys.has(key)) { + if (operator === "eq") { + operator = "neq"; + } } - } - return buildFilter(operator, key, values); - } - function peg$f5(rest) { - const suffix = rest.replaceAll(/^-+/g, ""); - return "reportField-" + (suffix ? suffix : ""); - } - function peg$f6(k) { - nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); - return k; - } - function peg$f7(parts, empty) { - const value = parts.flat().filter(Boolean).map((word) => { - if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { - return word.slice(1, -1); + return buildFilter(operator, key, values); + }; + var peg$f5 = function(rest) { + const suffix = rest.replaceAll(/^-+/g, ""); + return "reportField-" + (suffix ? suffix : ""); + }; + var peg$f6 = function(k) { + nameOperator = (k === "from" || k === "to" || k === "payer" || k === "exporter" || k === "attendee" || k === "createdBy" || k === "assignee"); + return k; + }; + var peg$f7 = function(parts, empty) { + const value = parts.flat().filter(Boolean).map((word) => { + if (word.startsWith('"') && word.endsWith('"') && word.length >= 2) { + return word.slice(1, -1); + } + return word; + }); + if (value.length > 1) { + return value.filter((word) => word.length > 0); } - return word; - }); - if (value.length > 1) { - return value.filter((word) => word.length > 0); - } - return value[0]; - } - function peg$f8() { return "date"; } - function peg$f9() { return "amount"; } - function peg$f10() { return "merchant"; } - function peg$f11() { return "description"; } - function peg$f12() { return "reportID"; } - function peg$f13() { return "keyword"; } - function peg$f14() { return "in"; } - function peg$f15() { return "currency"; } - function peg$f16() { return "groupCurrency"; } - function peg$f17() { return "tag"; } - function peg$f18() { return "category"; } - function peg$f19() { return "to"; } - function peg$f20() { return "exporter"; } - function peg$f21() { return "payer"; } - function peg$f22() { return "taxRate"; } - function peg$f23() { return "cardID"; } - function peg$f24() { return "from"; } - function peg$f25() {return "attendee" } - function peg$f26() { return "expenseType"; } - function peg$f27() { return "withdrawalType"; } - function peg$f28() { return "withdrawalID"; } - function peg$f29() { return "billable"; } - function peg$f30() { return "reimbursable"; } - function peg$f31() { return "type"; } - function peg$f32() { return "status"; } - function peg$f33() { return "sortBy"; } - function peg$f34() { return "sortOrder"; } - function peg$f35() { return "policyID"; } - function peg$f36() { return "submitted"; } - function peg$f37() { return "approved"; } - function peg$f38() { return "paid"; } - function peg$f39() { return "exported"; } - function peg$f40() { return "posted"; } - function peg$f41() { return "withdrawn"; } - function peg$f42() { return "groupBy"; } - function peg$f43() { return "limit"; } - function peg$f44() { return "feed"; } - function peg$f45() { return "title"; } - function peg$f46() { return "assignee"; } - function peg$f47() { return "createdBy"; } - function peg$f48() { return "action"; } - function peg$f49() {return "total"; } - function peg$f50() {return "has"; } - function peg$f51() {return "is"; } - function peg$f52() {return "purchaseAmount" } - function peg$f53() {return "purchaseCurrency" } - function peg$f54() { - isColumnsContext = true; - return "columns"; - } - function peg$f55() {return "view" } - function peg$f56() { return isColumnsContext; } - function peg$f57() { return "perDiem"; } - function peg$f58() { return "drafts"; } - function peg$f59() { return "originalamount"; } - function peg$f60() { return "taxAmount"; } - function peg$f61() { return "taxrate"; } - function peg$f62() { return "policyname"; } - function peg$f63() { return "withdrawalID"; } - function peg$f64() { return "bankAccount"; } - function peg$f65() { return "reportID"; } - function peg$f66() { return "base62ReportID"; } - function peg$f67() { return "exportedto"; } - function peg$f68() { return "exportedTo"; } - function peg$f69() { return "exportedTo"; } - function peg$f70() { return "exchangeRate"; } - function peg$f71() { return "reimbursableTotal"; } - function peg$f72() { return "nonReimbursableTotal"; } - function peg$f73() { return "groupFrom"; } - function peg$f74() { return "groupExpenses"; } - function peg$f75() { return "groupTotal"; } - function peg$f76() { return "groupCard"; } - function peg$f77() { return "groupFeed"; } - function peg$f78() { return "groupBankAccount"; } - function peg$f79() { return "groupWithdrawn"; } - function peg$f80() { return "groupWithdrawalID"; } - function peg$f81() { return "groupCategory"; } - function peg$f82() { return "groupTag"; } - function peg$f83() { return "groupMerchant"; } - function peg$f84() { return "groupmonth"; } - function peg$f85() { return "groupweek"; } - function peg$f86() { return "groupyear"; } - function peg$f87() { return "groupquarter"; } - function peg$f88() { return "contains"; } - function peg$f89() { return "eq"; } - function peg$f90() { return "neq"; } - function peg$f91() { return "gte"; } - function peg$f92() { return "gt"; } - function peg$f93() { return "lte"; } - function peg$f94() { return "lt"; } - function peg$f95(o) { - if (nameOperator) { - expectingNestedQuote = (o === "eq" || o === "contains"); - } - isColumnsContext = false; - return o; - } - function peg$f96(chars) { return chars.join("").trim(); } - function peg$f97() { - isColumnsContext = false; - return "and"; - } - function peg$f98() { return expectingNestedQuote; } - function peg$f99(start, inner, end) { //handle no-breaking space - return [...start, '"', ...inner, '"', ...end].join(""); - } - function peg$f100(start) {return "“" } - function peg$f101(start) {return "”" } - function peg$f102(start) {return "\"" } - function peg$f103(start, inner, end) { + return value[0]; + }; + var peg$f8 = function() { return "date"; }; + var peg$f9 = function() { return "amount"; }; + var peg$f10 = function() { return "merchant"; }; + var peg$f11 = function() { return "description"; }; + var peg$f12 = function() { return "reportID"; }; + var peg$f13 = function() { return "keyword"; }; + var peg$f14 = function() { return "in"; }; + var peg$f15 = function() { return "currency"; }; + var peg$f16 = function() { return "groupCurrency"; }; + var peg$f17 = function() { return "tag"; }; + var peg$f18 = function() { return "category"; }; + var peg$f19 = function() { return "to"; }; + var peg$f20 = function() { return "exporter"; }; + var peg$f21 = function() { return "payer"; }; + var peg$f22 = function() { return "taxRate"; }; + var peg$f23 = function() { return "cardID"; }; + var peg$f24 = function() { return "from"; }; + var peg$f25 = function() {return "attendee"}; + var peg$f26 = function() { return "expenseType"; }; + var peg$f27 = function() { return "withdrawalType"; }; + var peg$f28 = function() { return "withdrawalID"; }; + var peg$f29 = function() { return "billable"; }; + var peg$f30 = function() { return "reimbursable"; }; + var peg$f31 = function() { return "type"; }; + var peg$f32 = function() { return "status"; }; + var peg$f33 = function() { return "sortBy"; }; + var peg$f34 = function() { return "sortOrder"; }; + var peg$f35 = function() { return "policyID"; }; + var peg$f36 = function() { return "submitted"; }; + var peg$f37 = function() { return "approved"; }; + var peg$f38 = function() { return "paid"; }; + var peg$f39 = function() { return "exported"; }; + var peg$f40 = function() { return "posted"; }; + var peg$f41 = function() { return "withdrawn"; }; + var peg$f42 = function() { return "groupBy"; }; + var peg$f43 = function() { return "limit"; }; + var peg$f44 = function() { return "feed"; }; + var peg$f45 = function() { return "title"; }; + var peg$f46 = function() { return "assignee"; }; + var peg$f47 = function() { return "createdBy"; }; + var peg$f48 = function() { return "action"; }; + var peg$f49 = function() {return "total"; }; + var peg$f50 = function() {return "has"; }; + var peg$f51 = function() {return "is"; }; + var peg$f52 = function() {return "purchaseAmount"}; + var peg$f53 = function() {return "purchaseCurrency"}; + var peg$f54 = function() { + isColumnsContext = true; + return "columns"; +}; + var peg$f55 = function() {return "view"}; + var peg$f56 = function() { return isColumnsContext; }; + var peg$f57 = function() { return "perDiem"; }; + var peg$f58 = function() { return "drafts"; }; + var peg$f59 = function() { return "originalamount"; }; + var peg$f60 = function() { return "taxAmount"; }; + var peg$f61 = function() { return "taxrate"; }; + var peg$f62 = function() { return "policyname"; }; + var peg$f63 = function() { return "withdrawalID"; }; + var peg$f64 = function() { return "bankAccount"; }; + var peg$f65 = function() { return "reportID"; }; + var peg$f66 = function() { return "base62ReportID"; }; + var peg$f67 = function() { return "exportedto"; }; + var peg$f68 = function() { return "exportedTo"; }; + var peg$f69 = function() { return "exportedTo"; }; + var peg$f70 = function() { return "exchangeRate"; }; + var peg$f71 = function() { return "reimbursableTotal"; }; + var peg$f72 = function() { return "nonReimbursableTotal"; }; + var peg$f73 = function() { return "groupFrom"; }; + var peg$f74 = function() { return "groupExpenses"; }; + var peg$f75 = function() { return "groupTotal"; }; + var peg$f76 = function() { return "groupCard"; }; + var peg$f77 = function() { return "groupFeed"; }; + var peg$f78 = function() { return "groupBankAccount"; }; + var peg$f79 = function() { return "groupWithdrawn"; }; + var peg$f80 = function() { return "groupWithdrawalID"; }; + var peg$f81 = function() { return "groupCategory"; }; + var peg$f82 = function() { return "groupTag"; }; + var peg$f83 = function() { return "groupMerchant"; }; + var peg$f84 = function() { return "groupmonth"; }; + var peg$f85 = function() { return "groupweek"; }; + var peg$f86 = function() { return "groupyear"; }; + var peg$f87 = function() { return "groupquarter"; }; + var peg$f88 = function() { return "contains"; }; + var peg$f89 = function() { return "eq"; }; + var peg$f90 = function() { return "neq"; }; + var peg$f91 = function() { return "gte"; }; + var peg$f92 = function() { return "gt"; }; + var peg$f93 = function() { return "lte"; }; + var peg$f94 = function() { return "lt"; }; + var peg$f95 = function(o) { + if (nameOperator) { + expectingNestedQuote = (o === "eq" || o === "contains"); + } + isColumnsContext = false; + return o; + }; + var peg$f96 = function(chars) { return chars.join("").trim(); }; + var peg$f97 = function() { + isColumnsContext = false; + return "and"; +}; + var peg$f98 = function() { return expectingNestedQuote; }; + var peg$f99 = function(start, inner, end) { //handle no-breaking space + return [...start, '"', ...inner, '"', ...end].join(""); + }; + var peg$f100 = function(start) {return "“"}; + var peg$f101 = function(start) {return "”"}; + var peg$f102 = function(start) {return "\""}; + var peg$f103 = function(start, inner, end) { return [...start, '"', ...inner, '"'].join(""); - } - let peg$currPos = options.peg$currPos | 0; - let peg$savedPos = peg$currPos; - const peg$posDetailsCache = [{ line: 1, column: 1 }]; - let peg$maxFailPos = peg$currPos; - let peg$maxFailExpected = options.peg$maxFailExpected || []; - let peg$silentFails = options.peg$silentFails | 0; +}; + var peg$currPos = options.peg$currPos | 0; + var peg$savedPos = peg$currPos; + var peg$posDetailsCache = [{ line: 1, column: 1 }]; + var peg$maxFailPos = peg$currPos; + var peg$maxFailExpected = options.peg$maxFailExpected || []; + var peg$silentFails = options.peg$silentFails | 0; - let peg$result; + var peg$result; if (options.startRule) { if (!(options.startRule in peg$startRuleFunctions)) { @@ -642,7 +654,7 @@ function peg$parse(input, options) { return { source: peg$source, start: peg$savedPos, - end: peg$currPos, + end: peg$currPos }; } @@ -670,20 +682,12 @@ function peg$parse(input, options) { throw peg$buildSimpleError(message, location); } - function peg$getUnicode(pos = peg$currPos) { - const cp = input.codePointAt(pos); - if (cp === undefined) { - return ""; - } - return String.fromCodePoint(cp); - } - function peg$literalExpectation(text, ignoreCase) { - return { type: "literal", text, ignoreCase }; + return { type: "literal", text: text, ignoreCase: ignoreCase }; } - function peg$classExpectation(parts, inverted, ignoreCase, unicode) { - return { type: "class", parts, inverted, ignoreCase, unicode }; + function peg$classExpectation(parts, inverted, ignoreCase) { + return { type: "class", parts: parts, inverted: inverted, ignoreCase: ignoreCase }; } function peg$anyExpectation() { @@ -695,12 +699,12 @@ function peg$parse(input, options) { } function peg$otherExpectation(description) { - return { type: "other", description }; + return { type: "other", description: description }; } function peg$computePosDetails(pos) { - let details = peg$posDetailsCache[pos]; - let p; + var details = peg$posDetailsCache[pos]; + var p; if (details) { return details; @@ -715,7 +719,7 @@ function peg$parse(input, options) { details = peg$posDetailsCache[p]; details = { line: details.line, - column: details.column, + column: details.column }; while (p < pos) { @@ -736,21 +740,21 @@ function peg$parse(input, options) { } function peg$computeLocation(startPos, endPos, offset) { - const startPosDetails = peg$computePosDetails(startPos); - const endPosDetails = peg$computePosDetails(endPos); + var startPosDetails = peg$computePosDetails(startPos); + var endPosDetails = peg$computePosDetails(endPos); - const res = { + var res = { source: peg$source, start: { offset: startPos, line: startPosDetails.line, - column: startPosDetails.column, + column: startPosDetails.column }, end: { offset: endPos, line: endPosDetails.line, - column: endPosDetails.column, - }, + column: endPosDetails.column + } }; if (offset && peg$source && (typeof peg$source.offset === "function")) { res.start = peg$source.offset(res.start); @@ -784,7 +788,7 @@ function peg$parse(input, options) { } function peg$parsequery() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -800,7 +804,7 @@ function peg$parse(input, options) { } function peg$parsefilterList() { - let s0, s1, s2, s3, s4, s5; + var s0, s1, s2, s3, s4, s5; s0 = peg$currPos; s1 = peg$parsefilter(); @@ -840,7 +844,7 @@ function peg$parse(input, options) { } function peg$parsefilter() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = peg$parsestandardFilter(); @@ -861,7 +865,7 @@ function peg$parse(input, options) { } function peg$parsedefaultFilter() { - let s0, s1, s2, s3, s4, s5, s6; + var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; s1 = peg$parse_(); @@ -892,7 +896,7 @@ function peg$parse(input, options) { } function peg$parsefreeTextFilter() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = peg$parse_(); @@ -934,7 +938,7 @@ function peg$parse(input, options) { } function peg$parsestandardFilter() { - let s0, s1, s2, s3, s4, s5, s6, s7; + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = peg$parse_(); @@ -975,12 +979,12 @@ function peg$parse(input, options) { } function peg$parsereportFieldDynamic() { - let s0, s1, s2, s3, s4, s5, s6, s7; + var s0, s1, s2, s3, s4, s5, s6, s7; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c1) { - peg$currPos += (12); + peg$currPos += 12; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e2); } @@ -988,7 +992,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c2) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e3); } @@ -1096,7 +1100,7 @@ function peg$parse(input, options) { } function peg$parsekey() { - let s0, s1; + var s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1237,7 +1241,7 @@ function peg$parse(input, options) { } function peg$parsefilterKey() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = peg$parsekey(); @@ -1251,7 +1255,7 @@ function peg$parse(input, options) { } function peg$parsedefaultKey() { - let s0, s1; + var s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -1296,7 +1300,7 @@ function peg$parse(input, options) { } function peg$parseidentifier() { - let s0, s1, s2, s3, s4, s5, s6; + var s0, s1, s2, s3, s4, s5, s6; s0 = peg$currPos; s1 = []; @@ -1419,12 +1423,12 @@ function peg$parse(input, options) { } function peg$parsedate() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c4) { - peg$currPos += (4); + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e9); } @@ -1439,12 +1443,12 @@ function peg$parse(input, options) { } function peg$parseamount() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c5) { - peg$currPos += (6); + peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e10); } @@ -1459,12 +1463,12 @@ function peg$parse(input, options) { } function peg$parsemerchant() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c6) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e11); } @@ -1479,12 +1483,12 @@ function peg$parse(input, options) { } function peg$parsedescription() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c7) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e12); } @@ -1499,11 +1503,11 @@ function peg$parse(input, options) { } function peg$parsereportID() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 8); if (s0.toLowerCase() === peg$c8) { - peg$currPos += (8); + peg$currPos += 8; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e13); } @@ -1512,7 +1516,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += (9); + peg$currPos += 9; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -1528,12 +1532,12 @@ function peg$parse(input, options) { } function peg$parsekeyword() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c10) { - peg$currPos += (7); + peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e15); } @@ -1548,12 +1552,12 @@ function peg$parse(input, options) { } function peg$parsein() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c11) { - peg$currPos += (2); + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e16); } @@ -1568,12 +1572,12 @@ function peg$parse(input, options) { } function peg$parsecurrency() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c12) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e17); } @@ -1588,7 +1592,7 @@ function peg$parse(input, options) { } function peg$parsegroupCurrency() { - let s0, s1; + var s0, s1; if (input.substr(peg$currPos, 13) === peg$c13) { s0 = peg$c13; @@ -1601,7 +1605,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c14) { - peg$currPos += (14); + peg$currPos += 14; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e19); } @@ -1617,12 +1621,12 @@ function peg$parse(input, options) { } function peg$parsetag() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c15) { - peg$currPos += (3); + peg$currPos += 3; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e20); } @@ -1637,12 +1641,12 @@ function peg$parse(input, options) { } function peg$parsecategory() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c16) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e21); } @@ -1657,12 +1661,12 @@ function peg$parse(input, options) { } function peg$parseto() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c17) { - peg$currPos += (2); + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e22); } @@ -1677,12 +1681,12 @@ function peg$parse(input, options) { } function peg$parseexporter() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c18) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e23); } @@ -1697,12 +1701,12 @@ function peg$parse(input, options) { } function peg$parsepayer() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c19) { - peg$currPos += (5); + peg$currPos += 5; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e24); } @@ -1717,11 +1721,11 @@ function peg$parse(input, options) { } function peg$parsetaxRate() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 7); if (s0.toLowerCase() === peg$c20) { - peg$currPos += (7); + peg$currPos += 7; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e25); } @@ -1730,7 +1734,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c21) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e26); } @@ -1746,7 +1750,7 @@ function peg$parse(input, options) { } function peg$parsecardID() { - let s0, s1; + var s0, s1; if (input.substr(peg$currPos, 6) === peg$c22) { s0 = peg$c22; @@ -1759,7 +1763,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c23) { - peg$currPos += (4); + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e28); } @@ -1775,12 +1779,12 @@ function peg$parse(input, options) { } function peg$parsefrom() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c24) { - peg$currPos += (4); + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e29); } @@ -1795,12 +1799,12 @@ function peg$parse(input, options) { } function peg$parseattendee() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c25) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e30); } @@ -1815,7 +1819,7 @@ function peg$parse(input, options) { } function peg$parseexpenseType() { - let s0, s1; + var s0, s1; if (input.substr(peg$currPos, 11) === peg$c26) { s0 = peg$c26; @@ -1828,7 +1832,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c27) { - peg$currPos += (12); + peg$currPos += 12; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e32); } @@ -1844,7 +1848,7 @@ function peg$parse(input, options) { } function peg$parsewithdrawalType() { - let s0, s1; + var s0, s1; if (input.substr(peg$currPos, 14) === peg$c28) { s0 = peg$c28; @@ -1857,7 +1861,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c29) { - peg$currPos += (15); + peg$currPos += 15; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e34); } @@ -1873,11 +1877,11 @@ function peg$parse(input, options) { } function peg$parsewithdrawalID() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 12); if (s0.toLowerCase() === peg$c30) { - peg$currPos += (12); + peg$currPos += 12; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e35); } @@ -1886,7 +1890,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c31) { - peg$currPos += (13); + peg$currPos += 13; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e36); } @@ -1902,12 +1906,12 @@ function peg$parse(input, options) { } function peg$parsebillable() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c32) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e37); } @@ -1922,12 +1926,12 @@ function peg$parse(input, options) { } function peg$parsereimbursable() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c33) { - peg$currPos += (12); + peg$currPos += 12; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e38); } @@ -1942,12 +1946,12 @@ function peg$parse(input, options) { } function peg$parsetype() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c34) { - peg$currPos += (4); + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e39); } @@ -1962,12 +1966,12 @@ function peg$parse(input, options) { } function peg$parsestatus() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c35) { - peg$currPos += (6); + peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e40); } @@ -1982,7 +1986,7 @@ function peg$parse(input, options) { } function peg$parsesortBy() { - let s0, s1; + var s0, s1; if (input.substr(peg$currPos, 6) === peg$c36) { s0 = peg$c36; @@ -1995,7 +1999,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c37) { - peg$currPos += (7); + peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e42); } @@ -2011,7 +2015,7 @@ function peg$parse(input, options) { } function peg$parsesortOrder() { - let s0, s1; + var s0, s1; if (input.substr(peg$currPos, 9) === peg$c38) { s0 = peg$c38; @@ -2024,7 +2028,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c39) { - peg$currPos += (10); + peg$currPos += 10; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e44); } @@ -2040,7 +2044,7 @@ function peg$parse(input, options) { } function peg$parsepolicyID() { - let s0, s1; + var s0, s1; if (input.substr(peg$currPos, 8) === peg$c40) { s0 = peg$c40; @@ -2053,7 +2057,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c41) { - peg$currPos += (9); + peg$currPos += 9; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e46); } @@ -2069,12 +2073,12 @@ function peg$parse(input, options) { } function peg$parsesubmitted() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c42) { - peg$currPos += (9); + peg$currPos += 9; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e47); } @@ -2089,12 +2093,12 @@ function peg$parse(input, options) { } function peg$parseapproved() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c43) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e48); } @@ -2109,12 +2113,12 @@ function peg$parse(input, options) { } function peg$parsepaid() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c44) { - peg$currPos += (4); + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e49); } @@ -2129,12 +2133,12 @@ function peg$parse(input, options) { } function peg$parseexported() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c45) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e50); } @@ -2149,12 +2153,12 @@ function peg$parse(input, options) { } function peg$parseposted() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c46) { - peg$currPos += (6); + peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e51); } @@ -2169,12 +2173,12 @@ function peg$parse(input, options) { } function peg$parsewithdrawn() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c47) { - peg$currPos += (9); + peg$currPos += 9; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e52); } @@ -2189,11 +2193,11 @@ function peg$parse(input, options) { } function peg$parsegroupBy() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 7); if (s0.toLowerCase() === peg$c48) { - peg$currPos += (7); + peg$currPos += 7; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e53); } @@ -2202,7 +2206,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c49) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e54); } @@ -2218,12 +2222,12 @@ function peg$parse(input, options) { } function peg$parselimit() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c50) { - peg$currPos += (5); + peg$currPos += 5; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e55); } @@ -2238,12 +2242,12 @@ function peg$parse(input, options) { } function peg$parsefeed() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c51) { - peg$currPos += (4); + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e56); } @@ -2258,12 +2262,12 @@ function peg$parse(input, options) { } function peg$parsetitle() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c52) { - peg$currPos += (5); + peg$currPos += 5; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e57); } @@ -2278,12 +2282,12 @@ function peg$parse(input, options) { } function peg$parseassignee() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c53) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e58); } @@ -2298,11 +2302,11 @@ function peg$parse(input, options) { } function peg$parsecreatedBy() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 9); if (s0.toLowerCase() === peg$c54) { - peg$currPos += (9); + peg$currPos += 9; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e59); } @@ -2311,7 +2315,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c55) { - peg$currPos += (10); + peg$currPos += 10; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e60); } @@ -2327,12 +2331,12 @@ function peg$parse(input, options) { } function peg$parseaction() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c56) { - peg$currPos += (6); + peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e61); } @@ -2347,12 +2351,12 @@ function peg$parse(input, options) { } function peg$parsetotal() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c57) { - peg$currPos += (5); + peg$currPos += 5; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e62); } @@ -2367,12 +2371,12 @@ function peg$parse(input, options) { } function peg$parsehas() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c58) { - peg$currPos += (3); + peg$currPos += 3; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e63); } @@ -2387,12 +2391,12 @@ function peg$parse(input, options) { } function peg$parseis() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 2); if (s1.toLowerCase() === peg$c59) { - peg$currPos += (2); + peg$currPos += 2; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e64); } @@ -2407,11 +2411,11 @@ function peg$parse(input, options) { } function peg$parsepurchaseAmount() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 14); if (s0.toLowerCase() === peg$c60) { - peg$currPos += (14); + peg$currPos += 14; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e65); } @@ -2420,7 +2424,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c61) { - peg$currPos += (15); + peg$currPos += 15; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e66); } @@ -2436,11 +2440,11 @@ function peg$parse(input, options) { } function peg$parsepurchaseCurrency() { - let s0, s1; + var s0, s1; s0 = input.substr(peg$currPos, 16); if (s0.toLowerCase() === peg$c62) { - peg$currPos += (16); + peg$currPos += 16; } else { s0 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e67); } @@ -2449,7 +2453,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 17); if (s1.toLowerCase() === peg$c63) { - peg$currPos += (17); + peg$currPos += 17; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e68); } @@ -2465,12 +2469,12 @@ function peg$parse(input, options) { } function peg$parsecolumns() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 7); if (s1.toLowerCase() === peg$c64) { - peg$currPos += (7); + peg$currPos += 7; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e69); } @@ -2485,12 +2489,12 @@ function peg$parse(input, options) { } function peg$parseview() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = input.substr(peg$currPos, 4); if (s1.toLowerCase() === peg$c65) { - peg$currPos += (4); + peg$currPos += 4; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e70); } @@ -2505,7 +2509,7 @@ function peg$parse(input, options) { } function peg$parsevalues() { - let s0, s1, s2; + var s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; @@ -2539,7 +2543,7 @@ function peg$parse(input, options) { } function peg$parsecolumnsValues() { - let s0; + var s0; s0 = peg$parseoriginalAmount(); if (s0 === peg$FAILED) { @@ -2625,12 +2629,12 @@ function peg$parse(input, options) { } function peg$parseperDiem() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c66) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e71); } @@ -2662,12 +2666,12 @@ function peg$parse(input, options) { } function peg$parsedraft() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 6); if (s1.toLowerCase() === peg$c67) { - peg$currPos += (6); + peg$currPos += 6; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e72); } @@ -2675,7 +2679,7 @@ function peg$parse(input, options) { if (s1 === peg$FAILED) { s1 = input.substr(peg$currPos, 5); if (s1.toLowerCase() === peg$c68) { - peg$currPos += (5); + peg$currPos += 5; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e73); } @@ -2708,12 +2712,12 @@ function peg$parse(input, options) { } function peg$parseoriginalAmount() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c69) { - peg$currPos += (15); + peg$currPos += 15; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e74); } @@ -2745,12 +2749,12 @@ function peg$parse(input, options) { } function peg$parsetaxAmount() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 3); if (s1.toLowerCase() === peg$c70) { - peg$currPos += (3); + peg$currPos += 3; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e75); } @@ -2782,12 +2786,12 @@ function peg$parse(input, options) { } function peg$parsetaxRateValue() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 8); if (s1.toLowerCase() === peg$c21) { - peg$currPos += (8); + peg$currPos += 8; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e26); } @@ -2819,12 +2823,12 @@ function peg$parse(input, options) { } function peg$parsepolicyName() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c71) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e76); } @@ -2856,12 +2860,12 @@ function peg$parse(input, options) { } function peg$parsewithdrawalId() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c31) { - peg$currPos += (13); + peg$currPos += 13; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e36); } @@ -2893,12 +2897,12 @@ function peg$parse(input, options) { } function peg$parsebankAccount() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 12); if (s1.toLowerCase() === peg$c72) { - peg$currPos += (12); + peg$currPos += 12; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e77); } @@ -2930,12 +2934,12 @@ function peg$parse(input, options) { } function peg$parsereportId() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c73) { - peg$currPos += (14); + peg$currPos += 14; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e78); } @@ -2967,12 +2971,12 @@ function peg$parse(input, options) { } function peg$parsebase62ReportId() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c9) { - peg$currPos += (9); + peg$currPos += 9; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e14); } @@ -3004,12 +3008,12 @@ function peg$parse(input, options) { } function peg$parseexportedToColumnValue() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c74) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e79); } @@ -3041,7 +3045,7 @@ function peg$parse(input, options) { } function peg$parseexportedToKeyEnd() { - let s0, s1, s2; + var s0, s1, s2; s0 = peg$parsewordBoundary(); if (s0 === peg$FAILED) { @@ -3067,12 +3071,12 @@ function peg$parse(input, options) { } function peg$parseexportedTo() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c75) { - peg$currPos += (10); + peg$currPos += 10; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e81); } @@ -3103,7 +3107,7 @@ function peg$parse(input, options) { s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c74) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e79); } @@ -3136,12 +3140,12 @@ function peg$parse(input, options) { } function peg$parseexchangeRate() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c76) { - peg$currPos += (13); + peg$currPos += 13; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e82); } @@ -3173,12 +3177,12 @@ function peg$parse(input, options) { } function peg$parsereimbursableTotal() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); if (s1.toLowerCase() === peg$c77) { - peg$currPos += (18); + peg$currPos += 18; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e83); } @@ -3210,12 +3214,12 @@ function peg$parse(input, options) { } function peg$parsenonReimbursableTotal() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 22); if (s1.toLowerCase() === peg$c78) { - peg$currPos += (22); + peg$currPos += 22; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e84); } @@ -3247,12 +3251,12 @@ function peg$parse(input, options) { } function peg$parsegroupFrom() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c79) { - peg$currPos += (10); + peg$currPos += 10; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e85); } @@ -3284,12 +3288,12 @@ function peg$parse(input, options) { } function peg$parsegroupExpenses() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c80) { - peg$currPos += (14); + peg$currPos += 14; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e86); } @@ -3321,12 +3325,12 @@ function peg$parse(input, options) { } function peg$parsegroupTotal() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c81) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e87); } @@ -3358,12 +3362,12 @@ function peg$parse(input, options) { } function peg$parsegroupCard() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c82) { - peg$currPos += (10); + peg$currPos += 10; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e88); } @@ -3395,12 +3399,12 @@ function peg$parse(input, options) { } function peg$parsegroupFeed() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c83) { - peg$currPos += (10); + peg$currPos += 10; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e89); } @@ -3432,12 +3436,12 @@ function peg$parse(input, options) { } function peg$parsegroupBankAccount() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 18); if (s1.toLowerCase() === peg$c84) { - peg$currPos += (18); + peg$currPos += 18; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e90); } @@ -3469,12 +3473,12 @@ function peg$parse(input, options) { } function peg$parsegroupWithdrawn() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 15); if (s1.toLowerCase() === peg$c85) { - peg$currPos += (15); + peg$currPos += 15; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e91); } @@ -3506,12 +3510,12 @@ function peg$parse(input, options) { } function peg$parsegroupWithdrawalId() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 19); if (s1.toLowerCase() === peg$c86) { - peg$currPos += (19); + peg$currPos += 19; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e92); } @@ -3543,12 +3547,12 @@ function peg$parse(input, options) { } function peg$parsegroupCategory() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c87) { - peg$currPos += (14); + peg$currPos += 14; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e93); } @@ -3580,12 +3584,12 @@ function peg$parse(input, options) { } function peg$parsegroupTag() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 9); if (s1.toLowerCase() === peg$c88) { - peg$currPos += (9); + peg$currPos += 9; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e94); } @@ -3617,12 +3621,12 @@ function peg$parse(input, options) { } function peg$parsegroupMerchant() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 14); if (s1.toLowerCase() === peg$c89) { - peg$currPos += (14); + peg$currPos += 14; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e95); } @@ -3654,12 +3658,12 @@ function peg$parse(input, options) { } function peg$parsegroupMonth() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 11); if (s1.toLowerCase() === peg$c90) { - peg$currPos += (11); + peg$currPos += 11; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e96); } @@ -3691,12 +3695,12 @@ function peg$parse(input, options) { } function peg$parsegroupWeek() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c91) { - peg$currPos += (10); + peg$currPos += 10; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e97); } @@ -3728,12 +3732,12 @@ function peg$parse(input, options) { } function peg$parsegroupYear() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 10); if (s1.toLowerCase() === peg$c92) { - peg$currPos += (10); + peg$currPos += 10; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e98); } @@ -3765,12 +3769,12 @@ function peg$parse(input, options) { } function peg$parsegroupQuarter() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.substr(peg$currPos, 13); if (s1.toLowerCase() === peg$c93) { - peg$currPos += (13); + peg$currPos += 13; } else { s1 = peg$FAILED; if (peg$silentFails === 0) { peg$fail(peg$e99); } @@ -3802,7 +3806,7 @@ function peg$parse(input, options) { } function peg$parseoperator() { - let s0, s1; + var s0, s1; peg$silentFails++; s0 = peg$currPos; @@ -3918,7 +3922,7 @@ function peg$parse(input, options) { } function peg$parsefilterOperator() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = peg$parseoperator(); @@ -3932,7 +3936,7 @@ function peg$parse(input, options) { } function peg$parsealphanumeric() { - let s0, s1, s2; + var s0, s1, s2; peg$silentFails++; s0 = peg$currPos; @@ -3973,7 +3977,7 @@ function peg$parse(input, options) { } function peg$parselogicalAnd() { - let s0, s1; + var s0, s1; s0 = peg$currPos; s1 = peg$parse_(); @@ -3985,7 +3989,7 @@ function peg$parse(input, options) { } function peg$parse_() { - let s0, s1; + var s0, s1; peg$silentFails++; s0 = []; @@ -3994,7 +3998,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } while (s1 !== peg$FAILED) { s0.push(s1); @@ -4003,16 +4007,18 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e109); } + if (peg$silentFails === 0) { peg$fail(peg$e110); } } } peg$silentFails--; + s1 = peg$FAILED; + if (peg$silentFails === 0) { peg$fail(peg$e109); } return s0; } function peg$parsequotedString() { - let s0, s1, s2; + var s0, s1, s2; s0 = peg$currPos; peg$savedPos = peg$currPos; @@ -4043,7 +4049,7 @@ function peg$parse(input, options) { } function peg$parsesimpleQuotedString() { - let s0, s1, s2, s3, s4, s5, s6; + var s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -4053,7 +4059,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4062,7 +4068,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } } s2 = input.charAt(peg$currPos); @@ -4070,7 +4076,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4079,7 +4085,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4088,7 +4094,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } } s4 = input.charAt(peg$currPos); @@ -4096,7 +4102,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s4 !== peg$FAILED) { s5 = []; @@ -4130,14 +4136,14 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } return s0; } function peg$parsenestedQuotedString() { - let s0, s1, s2, s3, s4, s5, s6; + var s0, s1, s2, s3, s4, s5, s6; peg$silentFails++; s0 = peg$currPos; @@ -4147,7 +4153,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4156,7 +4162,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e111); } + if (peg$silentFails === 0) { peg$fail(peg$e112); } } } s2 = input.charAt(peg$currPos); @@ -4164,7 +4170,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s2 !== peg$FAILED) { s3 = []; @@ -4173,7 +4179,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4193,7 +4199,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; @@ -4224,7 +4230,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; @@ -4255,7 +4261,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; @@ -4278,7 +4284,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e113); } + if (peg$silentFails === 0) { peg$fail(peg$e114); } } if (s4 === peg$FAILED) { s4 = peg$currPos; @@ -4298,7 +4304,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e114); } + if (peg$silentFails === 0) { peg$fail(peg$e115); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; @@ -4329,7 +4335,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e115); } + if (peg$silentFails === 0) { peg$fail(peg$e116); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; @@ -4360,7 +4366,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s6 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e116); } + if (peg$silentFails === 0) { peg$fail(peg$e117); } } if (s6 !== peg$FAILED) { peg$savedPos = s4; @@ -4392,14 +4398,14 @@ function peg$parse(input, options) { peg$silentFails--; if (s0 === peg$FAILED) { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e110); } + if (peg$silentFails === 0) { peg$fail(peg$e111); } } return s0; } function peg$parseclosingQuote() { - let s0, s1, s2, s3; + var s0, s1, s2, s3; s0 = peg$currPos; s1 = input.charAt(peg$currPos); @@ -4407,7 +4413,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s1 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e112); } + if (peg$silentFails === 0) { peg$fail(peg$e113); } } if (s1 !== peg$FAILED) { s2 = peg$currPos; @@ -4436,7 +4442,7 @@ function peg$parse(input, options) { } function peg$parsevalidClosingCondition() { - let s0, s1, s2, s3, s4; + var s0, s1, s2, s3, s4; s0 = peg$currPos; s1 = []; @@ -4445,7 +4451,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4454,7 +4460,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e117); } + if (peg$silentFails === 0) { peg$fail(peg$e118); } } } s2 = []; @@ -4463,7 +4469,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } while (s3 !== peg$FAILED) { s2.push(s3); @@ -4472,7 +4478,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s3 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e118); } + if (peg$silentFails === 0) { peg$fail(peg$e119); } } } s3 = []; @@ -4481,7 +4487,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } while (s4 !== peg$FAILED) { s3.push(s4); @@ -4490,7 +4496,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s4 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e119); } + if (peg$silentFails === 0) { peg$fail(peg$e120); } } } s4 = peg$parseoperator(); @@ -4509,7 +4515,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } while (s2 !== peg$FAILED) { s1.push(s2); @@ -4518,7 +4524,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s2 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e120); } + if (peg$silentFails === 0) { peg$fail(peg$e121); } } } s2 = peg$currPos; @@ -4565,7 +4571,7 @@ function peg$parse(input, options) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e121); } + if (peg$silentFails === 0) { peg$fail(peg$e122); } } } } @@ -4574,14 +4580,14 @@ function peg$parse(input, options) { } function peg$parsewordBoundary() { - let s0, s1; + var s0, s1; s0 = input.charAt(peg$currPos); if (peg$r13.test(s0)) { peg$currPos++; } else { s0 = peg$FAILED; - if (peg$silentFails === 0) { peg$fail(peg$e122); } + if (peg$silentFails === 0) { peg$fail(peg$e123); } } if (s0 === peg$FAILED) { s0 = peg$currPos; @@ -4761,35 +4767,29 @@ function peg$parse(input, options) { peg$result = peg$startRuleFunction(); - const peg$success = (peg$result !== peg$FAILED && peg$currPos === input.length); - function peg$throw() { - if (peg$result !== peg$FAILED && peg$currPos < input.length) { - peg$fail(peg$endExpectation()); - } - - throw peg$buildStructuredError( - peg$maxFailExpected, - peg$maxFailPos < input.length ? peg$getUnicode(peg$maxFailPos) : null, - peg$maxFailPos < input.length - ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) - : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) - ); - } if (options.peg$library) { return /** @type {any} */ ({ peg$result, peg$currPos, peg$FAILED, peg$maxFailExpected, - peg$maxFailPos, - peg$success, - peg$throw: peg$success ? undefined : peg$throw, + peg$maxFailPos }); } - if (peg$success) { + if (peg$result !== peg$FAILED && peg$currPos === input.length) { return peg$result; } else { - peg$throw(); + if (peg$result !== peg$FAILED && peg$currPos < input.length) { + peg$fail(peg$endExpectation()); + } + + throw peg$buildStructuredError( + peg$maxFailExpected, + peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null, + peg$maxFailPos < input.length + ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1) + : peg$computeLocation(peg$maxFailPos, peg$maxFailPos) + ); } } From c033992b00661b7c3b78f10f4b44ec59ea11f118 Mon Sep 17 00:00:00 2001 From: Phuoc Hiep Date: Thu, 21 May 2026 13:47:33 +0700 Subject: [PATCH 04/38] chore(search): fix parser CI checks --- src/libs/SearchParser/baseRules.peggy | 2 +- tests/unit/Search/SearchQueryUtilsTest.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/libs/SearchParser/baseRules.peggy b/src/libs/SearchParser/baseRules.peggy index 9b7c2dbf5136..27534cf1337c 100644 --- a/src/libs/SearchParser/baseRules.peggy +++ b/src/libs/SearchParser/baseRules.peggy @@ -179,7 +179,7 @@ filterOperator alphanumeric "word" = chars:[^ ,\t\n\r\xA0]+ { return chars.join("").trim(); } //handle no-breaking space -logicalAnd = _ { +logicalAnd = _ { isColumnsContext = false; return "and"; } diff --git a/tests/unit/Search/SearchQueryUtilsTest.ts b/tests/unit/Search/SearchQueryUtilsTest.ts index d867b2fae82f..a2b2973af823 100644 --- a/tests/unit/Search/SearchQueryUtilsTest.ts +++ b/tests/unit/Search/SearchQueryUtilsTest.ts @@ -2920,7 +2920,7 @@ describe('SearchQueryUtils', () => { expect(merchantNode.operator).toBe(CONST.SEARCH.SYNTAX_OPERATORS.CONTAINS); }); - it('should preserve group drilldown merchant exact match', () => { + it('should preserve group drill-down merchant exact match', () => { const queryJSON = buildSearchQueryJSON('type:expense merchant:I'); if (!queryJSON) { throw new Error('Expected queryJSON to be defined'); From 234ff702f184688ad91c126abd43fcdfbebae5bb Mon Sep 17 00:00:00 2001 From: Phuoc Hiep Date: Sat, 27 Jun 2026 05:48:16 +0700 Subject: [PATCH 05/38] feat(search): add merchant match type selector Add an Equal to / Contains match-type selector under the Merchant advanced filter (RHP page and popover). - Default Equal to -> serializes as merchant:value; Contains -> merchant*:value - Restore the operator from the query on reopen so saved searches round-trip - Preserve negated merchant as eq (-merchant:value -> neq) - Add dedicated search.filters.merchant translation keys (en source of truth) - Unit tests for build and round-trip behavior --- .../SearchAdvancedFiltersContent.tsx | 17 ++++-- .../TextInputFilterContent.tsx | 56 +++++++++++++++---- .../TextInputFilterContentPopupWrapper.tsx | 3 +- src/languages/en.ts | 5 ++ src/libs/SearchQueryUtils.ts | 29 ++++++++-- .../TextInputFilterContentPageWrapper.tsx | 3 +- src/types/form/SearchAdvancedFiltersForm.ts | 8 ++- tests/unit/Search/SearchQueryUtilsTest.ts | 51 ++++++++++++++++- 8 files changed, 145 insertions(+), 27 deletions(-) diff --git a/src/components/Search/FilterComponents/AdvancedFilters/SearchAdvancedFiltersContent.tsx b/src/components/Search/FilterComponents/AdvancedFilters/SearchAdvancedFiltersContent.tsx index d4365dbb5518..37792e1245cb 100644 --- a/src/components/Search/FilterComponents/AdvancedFilters/SearchAdvancedFiltersContent.tsx +++ b/src/components/Search/FilterComponents/AdvancedFilters/SearchAdvancedFiltersContent.tsx @@ -3,6 +3,7 @@ import {isAmountFilterKey, isDateFilterKey} from '@libs/SearchUIUtils'; import type {SearchFilter} from '@libs/SearchUIUtils'; import CONST from '@src/CONST'; import type {SearchAdvancedFiltersForm} from '@src/types/form'; +import FILTER_KEYS from '@src/types/form/SearchAdvancedFiltersForm'; import type {FilterComponentsProps} from '..'; import type {AmountFilterContentProps} from './AmountFilterContent'; import type {CommonFilterContentProps} from './CommonFilterContent'; @@ -10,7 +11,7 @@ import type {DateFilterContentProps} from './DateFilterContent'; import type {ReportFieldFilterContentProps} from './ReportFieldFilterContent'; import type {TextInputFilterContentProps} from './TextInputFilterContent'; -type TextInputFilterContentWrapperProps = Pick; +type TextInputFilterContentWrapperProps = Pick; type AmountFilterContentWrapperProps = Pick; type DateFilterContentWrapperProps = Pick; type ReportFieldFilterContentWrapperProps = Pick; @@ -38,9 +39,11 @@ function getFilterFormValue(filter function SearchAdvancedFiltersContent({filterKey, values, policyIDQuery, ready, components, onChange}: SearchAdvancedFiltersContentProps) { const {Text: TextFilter, Amount: AmountFilter, Date: DateFilter, ReportField: ReportFieldFilter, Common: CommonFilter} = components; + const isMerchantFilter = filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.MERCHANT; + const merchantOperator = values?.[FILTER_KEYS.MERCHANT_OPERATOR] ?? CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO; if ( - filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.MERCHANT || + isMerchantFilter || filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.DESCRIPTION || filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.REPORT_ID || filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.KEYWORD || @@ -49,10 +52,16 @@ function SearchAdvancedFiltersContent({filterKey, values, policyIDQuery, ready, ) { return ( onChange({[filterKey]: newValue})} + merchantOperator={isMerchantFilter ? merchantOperator : undefined} + onChange={(newValue, newMerchantOperator) => + onChange({ + [filterKey]: newValue, + ...(isMerchantFilter ? {[FILTER_KEYS.MERCHANT_OPERATOR]: newMerchantOperator ?? CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO} : {}), + }) + } /> ); } diff --git a/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx b/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx index 71082b1d8ad6..a95b43b49c6b 100644 --- a/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx +++ b/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx @@ -2,9 +2,12 @@ import React, {useState} from 'react'; import {View} from 'react-native'; import type {StyleProp, ViewStyle} from 'react-native'; import Button from '@components/Button'; +import RadioButtonWithLabel from '@components/RadioButtonWithLabel'; +import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; -import type CONST from '@src/CONST'; +import CONST from '@src/CONST'; +import type {MerchantMatchType} from '@src/types/form/SearchAdvancedFiltersForm'; import FilterComponents from '..'; type TextInputFilterContentProps = { @@ -19,31 +22,60 @@ type TextInputFilterContentProps = { largeButton?: boolean; autoFocus?: boolean; style?: StyleProp; - onChange: (value: string | undefined) => void; + merchantOperator?: MerchantMatchType; + onChange: (value: string | undefined, merchantOperator?: MerchantMatchType) => void; }; -function TextInputFilterContent({filterKey, value: initialValue, autoFocus, largeButton, style, onChange}: TextInputFilterContentProps) { +function TextInputFilterContent({filterKey, value: initialValue, autoFocus, largeButton, style, merchantOperator: initialMerchantOperator, onChange}: TextInputFilterContentProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const [value, setValue] = useState(initialValue); + const shouldShowMerchantMatchType = filterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.MERCHANT; + const [merchantOperator, setMerchantOperator] = useState(initialMerchantOperator ?? CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO); + const merchantMatchTypeItems: Array<{value: MerchantMatchType; label: string}> = [ + { + value: CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO, + label: translate('search.filters.merchant.equalTo'), + }, + { + value: CONST.SEARCH.SYNTAX_OPERATORS.CONTAINS, + label: translate('search.filters.merchant.contains'), + }, + ]; return ( - setValue(typeof v === 'string' ? v : undefined)} - /> + + setValue(typeof v === 'string' ? v : undefined)} + /> + {shouldShowMerchantMatchType && ( + + {translate('search.filters.merchant.matchType')} + {merchantMatchTypeItems.map((item) => ( + setMerchantOperator(item.value)} + label={item.label} + /> + ))} + + )} + + + ); +} + +export default MerchantFilterContent; +export type {MerchantFilterContentProps}; diff --git a/src/components/Search/FilterComponents/AdvancedFilters/SearchAdvancedFiltersContent.tsx b/src/components/Search/FilterComponents/AdvancedFilters/SearchAdvancedFiltersContent.tsx index fc62ace7f3de..f826386eccf4 100644 --- a/src/components/Search/FilterComponents/AdvancedFilters/SearchAdvancedFiltersContent.tsx +++ b/src/components/Search/FilterComponents/AdvancedFilters/SearchAdvancedFiltersContent.tsx @@ -12,10 +12,12 @@ import React from 'react'; import type {AmountFilterContentProps} from './AmountFilterContent'; import type {DateFilterContentProps} from './DateFilterContent'; +import type {MerchantFilterContentProps} from './MerchantFilterContent'; import type {ReportFieldFilterContentProps} from './ReportFieldFilterContent'; import type {TextInputFilterContentProps} from './TextInputFilterContent'; -type TextInputFilterContentWrapperProps = Pick; +type TextInputFilterContentWrapperProps = Pick; +type MerchantFilterContentWrapperProps = Pick; type AmountFilterContentWrapperProps = Pick; type DateFilterContentWrapperProps = Pick; type ReportFieldFilterContentWrapperProps = Pick; @@ -28,6 +30,7 @@ type SearchAdvancedFiltersContentProps = { values: Partial | undefined; ready?: boolean; components: { + Merchant: React.ComponentType; Text: React.ComponentType; Amount: React.ComponentType; Date: React.ComponentType; @@ -94,24 +97,33 @@ function SearchAdvancedFiltersContent({baseFilterKey, values, ready, components, ); } + if (baseFilterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.MERCHANT) { + const MerchantFilter = components.Merchant; + const isNegated = !!values?.[FILTER_KEYS.MERCHANT_NOT]; + const value = values?.[isNegated ? FILTER_KEYS.MERCHANT_NOT : FILTER_KEYS.MERCHANT]; + const merchantOperator = values?.[FILTER_KEYS.MERCHANT_OPERATOR] ?? CONST.SEARCH.SYNTAX_OPERATORS.CONTAINS; + return ( + + ); + } + if (isTextFilterKey(baseFilterKey)) { const {isNegated, value} = getFilterNegatableValue(baseFilterKey, values); const TextFilter = components.Text; - const isMerchantFilter = baseFilterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.MERCHANT; - const merchantOperator = values?.[FILTER_KEYS.MERCHANT_OPERATOR] ?? CONST.SEARCH.SYNTAX_OPERATORS.CONTAINS; return ( - onChange({ - ...getFilterFormValues(baseFilterKey, newValue, negated), - ...(isMerchantFilter ? {[FILTER_KEYS.MERCHANT_OPERATOR]: newMerchantOperator ?? CONST.SEARCH.SYNTAX_OPERATORS.EQUAL_TO} : {}), - }) - } + onChange={(newValue, negated) => onChange(getFilterFormValues(baseFilterKey, newValue, negated))} /> ); } @@ -133,4 +145,11 @@ function SearchAdvancedFiltersContent({baseFilterKey, values, ready, components, } export default SearchAdvancedFiltersContent; -export type {TextInputFilterContentWrapperProps, AmountFilterContentWrapperProps, DateFilterContentWrapperProps, ReportFieldFilterContentWrapperProps, ListFilterContentWrapperProps}; +export type { + TextInputFilterContentWrapperProps, + MerchantFilterContentWrapperProps, + AmountFilterContentWrapperProps, + DateFilterContentWrapperProps, + ReportFieldFilterContentWrapperProps, + ListFilterContentWrapperProps, +}; diff --git a/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx b/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx index 40d2fc36922a..1cf9f64a4c7e 100644 --- a/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx +++ b/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx @@ -1,5 +1,4 @@ import Button from '@components/ButtonComposed'; -import MerchantMatchTypeSelector from '@components/Search/FilterComponents/MerchantMatchTypeSelector'; import NegatableFilter from '@components/Search/FilterComponents/NegatableFilter'; import useTextFilterValidation from '@components/Search/hooks/useTextFilterValidation'; import type {ReportFieldTextKey, SearchTextFilterKeys} from '@components/Search/types'; @@ -13,7 +12,6 @@ import useThemeStyles from '@hooks/useThemeStyles'; import {FILTER_VIEW_MAP} from '@libs/SearchUIUtils'; import CONST from '@src/CONST'; -import type {MerchantMatchType} from '@src/types/form/SearchAdvancedFiltersForm'; import type {TextInput as RNTextInput, StyleProp, ViewStyle} from 'react-native'; import type {ValueOf} from 'type-fest'; @@ -28,30 +26,18 @@ type TextInputFilterContentProps = { size?: Exclude, typeof CONST.BUTTON_SIZE.SMALL>; autoFocus?: boolean; style?: StyleProp; - merchantOperator?: MerchantMatchType; - onChange: (value: string | undefined, isNegated: boolean, merchantOperator?: MerchantMatchType) => void; + onChange: (value: string | undefined, isNegated: boolean) => void; }; function isTextInput(element: BaseTextInputRef | RNTextInput | null): element is RNTextInput { return !!element && 'isFocused' in element; } -function TextInputFilterContent({ - baseFilterKey, - value: initialValue, - isNegated: initialIsNegated, - autoFocus, - size, - style, - merchantOperator: initialMerchantOperator, - onChange, -}: TextInputFilterContentProps) { +function TextInputFilterContent({baseFilterKey, value: initialValue, isNegated: initialIsNegated, autoFocus, size, style, onChange}: TextInputFilterContentProps) { const {translate} = useLocalize(); const styles = useThemeStyles(); const [value, setValue] = useState(initialValue); const [isNegated, setIsNegated] = useState(initialIsNegated); - const shouldShowMerchantMatchType = baseFilterKey === CONST.SEARCH.SYNTAX_FILTER_KEYS.MERCHANT && !isNegated; - const [merchantOperator, setMerchantOperator] = useState(initialMerchantOperator ?? CONST.SEARCH.SYNTAX_OPERATORS.CONTAINS); const label = translate(FILTER_VIEW_MAP[baseFilterKey].labelKey); const {inputCallbackRef} = useAutoFocusInput(); const error = useTextFilterValidation(baseFilterKey, value); @@ -71,7 +57,7 @@ function TextInputFilterContent({ onChangeText={setValue} accessibilityLabel={label} role={CONST.ROLE.PRESENTATION} - containerStyles={shouldShowMerchantMatchType ? [styles.ph5, styles.mb5] : [styles.ph5]} + containerStyles={[styles.ph5]} /> ); @@ -81,17 +67,8 @@ function TextInputFilterContent({ baseFilterKey={baseFilterKey} isNegated={isNegated} onNegationChange={setIsNegated} - style={shouldShowMerchantMatchType ? styles.flex1 : undefined} > - - {filterInput} - {shouldShowMerchantMatchType && ( - - )} - + {filterInput} - + ); } diff --git a/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx b/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx index 6242f00b45ae..077606301b62 100644 --- a/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx +++ b/src/components/Search/FilterComponents/AdvancedFilters/TextInputFilterContent.tsx @@ -15,7 +15,7 @@ import {FILTER_VIEW_MAP} from '@libs/SearchUIUtils'; import CONST from '@src/CONST'; -import type {ComponentRef} from 'react'; +import type {ComponentRef, ReactNode} from 'react'; import type {TextInput as RNTextInput, StyleProp, ViewStyle} from 'react-native'; import type {ValueOf} from 'type-fest'; @@ -30,6 +30,12 @@ type TextInputFilterContentProps = { autoFocus?: boolean; style?: StyleProp; buttonText?: string; + buttonStyles?: StyleProp; + sentryLabel?: string; + + /** Renders extra controls under the input, inside the scrollable area. Receives the current negation state, so the content can change when the user negates the filter. */ + renderBelowInput?: (isNegated: boolean) => ReactNode; + onChange: (value: string | undefined, isNegated: boolean) => void; }; @@ -37,7 +43,19 @@ function isTextInput(element: BaseTextInputRef | ComponentRef { @@ -59,6 +77,7 @@ function TextInputFilterContent({baseFilterKey, value: initialValue, isNegated: } onChange(value, isNegated); }} + sentryLabel={sentryLabel} > {buttonText ?? translate('common.confirm')} @@ -93,6 +112,7 @@ function TextInputFilterContent({baseFilterKey, value: initialValue, isNegated: containerStyles={[styles.ph5]} /> + {renderBelowInput?.(isNegated)} {shouldButtonBeInScrollView && button} {!shouldButtonBeInScrollView && button} diff --git a/src/components/Search/FilterComponents/MerchantMatchTypeSelector.tsx b/src/components/Search/FilterComponents/MerchantMatchTypeSelector.tsx index 4cf7cf356cb3..cbcf743be352 100644 --- a/src/components/Search/FilterComponents/MerchantMatchTypeSelector.tsx +++ b/src/components/Search/FilterComponents/MerchantMatchTypeSelector.tsx @@ -9,6 +9,8 @@ import Text from '@components/Text'; import useLocalize from '@hooks/useLocalize'; import useThemeStyles from '@hooks/useThemeStyles'; +import variables from '@styles/variables'; + import CONST from '@src/CONST'; import type {MerchantMatchType} from '@src/types/form/SearchAdvancedFiltersForm'; @@ -44,12 +46,15 @@ function MerchantMatchTypeSelector({value, onChange}: MerchantMatchTypeSelectorP {translate('search.filters.merchant.matchType')} - onChange(item.keyForList)} - shouldSingleExecuteRowSelect - /> + {/* Inside a ScrollView a flex list can shrink to zero height when the keyboard is open, so reserve room for every row */} + + onChange(item.keyForList)} + shouldSingleExecuteRowSelect + /> + ); } From 93596d722a8995f995559910839368f74cd95d00 Mon Sep 17 00:00:00 2001 From: Phuoc Hiep Date: Wed, 7 Oct 2026 17:18:08 +0700 Subject: [PATCH 36/38] Load the English locale in SearchSavePageTest The Merchant filter value is now shown through translate as Contains "Coffee Shop". The test loaded no locale, so translate returned key paths and the Merchant text never rendered. Load English before the tests and assert the localized label users see. --- tests/unit/pages/Search/SearchSavePageTest.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/tests/unit/pages/Search/SearchSavePageTest.tsx b/tests/unit/pages/Search/SearchSavePageTest.tsx index 9ca581247845..258c06a1d59e 100644 --- a/tests/unit/pages/Search/SearchSavePageTest.tsx +++ b/tests/unit/pages/Search/SearchSavePageTest.tsx @@ -11,6 +11,7 @@ import * as SearchUIUtils from '@libs/SearchUIUtils'; import SearchSavePage from '@pages/Search/SearchSavePage'; import CONST from '@src/CONST'; +import IntlStore from '@src/languages/IntlStore'; import ONYXKEYS from '@src/ONYXKEYS'; import type {SearchAdvancedFiltersForm} from '@src/types/form'; import type {Card, CardList} from '@src/types/onyx'; @@ -53,16 +54,24 @@ jest.mocked(useOnyx).mockImplementation((key) => { return [undefined, {status: 'loaded'}]; } }); +// Without a loaded locale, translate returns key paths and translated filter values never show the user's text. +beforeAll(() => IntlStore.load(CONST.LOCALES.EN)); beforeEach(() => jest.clearAllMocks()); it.each([[['12']], [['12', '23']], [['123']]])('renders canonical card selection %j exactly', (cardID) => { + // Given a saved search form with cards, feeds, tax rates and a Merchant filter that uses the default "contains" match form = {cardID, feed: ['feed-a', 'feed-b'], taxRate: ['tax-a', 'tax-b'], merchant: 'Coffee Shop'}; + + // When the save page renders the filter summary const output = JSON.stringify(render().toJSON()); + + // Then only the selected card titles, the feed and tax display values, and the localized Merchant label show const expectedDescriptions = cardID.at(0) === '123' ? [false, false, true] : [true, cardID.length === 2, false]; expect(['Selected Alpha', 'Selected Beta', 'Unselected Overlap'].map((text) => output.includes(text))).toEqual(expectedDescriptions); expect(['12', '23', '123'].map((rawID) => output.includes(rawID))).toEqual([false, false, false]); expect(jest.mocked(useFilterFeedValue)).toHaveBeenCalledWith(['feed-a', 'feed-b']); expect(jest.mocked(useFilterTaxRateValue)).toHaveBeenCalledWith(['tax-a', 'tax-b']); - expect(['feed:feed-a|feed-b', 'tax:tax-a|tax-b', 'Coffee Shop'].every((text) => output.includes(text))).toBe(true); + // The output is a JSON string, so the quotes in the Merchant label are escaped. + expect(['feed:feed-a|feed-b', 'tax:tax-a|tax-b', 'Contains \\"Coffee Shop\\"'].every((text) => output.includes(text))).toBe(true); }); it('renders scalar feed and tax values without calling array display hooks', () => { jest.spyOn(SearchUIUtils, 'mapFiltersFormToLabelValueList').mockReturnValueOnce([ From 58f320b9920b51c638929bb48c3606b0f69e7aaf Mon Sep 17 00:00:00 2001 From: Phuoc Hiep Date: Thu, 8 Oct 2026 10:32:05 +0700 Subject: [PATCH 37/38] Render SearchColumnsPage inside OnyxListItemProvider in its test After the main merge, SearchColumnsPage reads the session through usePolicyForMovingExpenses, which needs OnyxListItemProvider. Wrap the render in the provider and return the form only for its own Onyx key. --- tests/ui/SearchColumnsPageTest.tsx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tests/ui/SearchColumnsPageTest.tsx b/tests/ui/SearchColumnsPageTest.tsx index d64d732eb229..5c8b96f9eaea 100644 --- a/tests/ui/SearchColumnsPageTest.tsx +++ b/tests/ui/SearchColumnsPageTest.tsx @@ -1,6 +1,7 @@ import {fireEvent, render, screen} from '@testing-library/react-native'; import type ColumnsSettingsList from '@components/ColumnsSettingsList'; +import OnyxListItemProvider from '@components/OnyxListItemProvider'; import MockText from '@components/Text'; import useOnyx from '@hooks/useOnyx'; @@ -9,6 +10,7 @@ import Navigation from '@libs/Navigation/Navigation'; import {buildFilterFormValuesFromQuery, buildSearchQueryJSON} from '@libs/SearchQueryUtils'; import NAVIGATORS from '@src/NAVIGATORS'; +import ONYXKEYS from '@src/ONYXKEYS'; import SearchColumnsPage from '@src/pages/Search/SearchColumnsPage'; import SCREENS from '@src/SCREENS'; @@ -36,12 +38,16 @@ describe('SearchColumnsPage', () => { } const form = buildFilterFormValuesFromQuery(queryJSON, {}, {}, {}, {}, {}, {}); - (jest.mocked(useOnyx) as jest.Mock).mockReturnValue([form]); + (jest.mocked(useOnyx) as jest.Mock).mockImplementation((key: string) => [key === ONYXKEYS.FORMS.SEARCH_ADVANCED_FILTERS_FORM ? form : undefined]); mockGetRootState.mockReturnValue({ routes: [{name: NAVIGATORS.TAB_NAVIGATOR, params: {screen: NAVIGATORS.SEARCH_FULLSCREEN_NAVIGATOR, params: {screen: SCREENS.SEARCH.ROOT, params: {q: input}}}}], }); - render(); + render( + + + , + ); fireEvent.press(screen.getByText('Save columns')); const [route] = jest.mocked(Navigation.navigate).mock.calls.at(-1) ?? []; From 125ca02caed859fca7ddb4691e2fb5d0dfc21efe Mon Sep 17 00:00:00 2001 From: Phuoc Hiep Date: Wed, 14 Oct 2026 10:21:21 +0700 Subject: [PATCH 38/38] Update main's Spend footer tests for the merchant contains operator --- tests/unit/Search/SearchQueryUtilsTest.ts | 3 ++- tests/unit/SearchParserTest.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/unit/Search/SearchQueryUtilsTest.ts b/tests/unit/Search/SearchQueryUtilsTest.ts index f856517af60a..f94025165124 100644 --- a/tests/unit/Search/SearchQueryUtilsTest.ts +++ b/tests/unit/Search/SearchQueryUtilsTest.ts @@ -2791,7 +2791,8 @@ describe('SearchQueryUtils', () => { // Captured before the footer keys existed. These hashes key saved searches and snapshots, so they must not drift. expect(buildSearchQueryJSON('type:expense')?.hash).toEqual(959171759); expect(buildSearchQueryJSON('type:expense-report')?.hash).toEqual(1657503970); - expect(buildSearchQueryJSON('type:expense merchant:Amazon')?.hash).toEqual(1692688529); + // `merchant:` parses as contains and hashes as `merchant*:`, so this hash differs from the one before the match type existed. + expect(buildSearchQueryJSON('type:expense merchant:Amazon')?.hash).toEqual(1712664595); }); }); diff --git a/tests/unit/SearchParserTest.ts b/tests/unit/SearchParserTest.ts index 5b3f0ed2e5cc..96b4cdc35431 100644 --- a/tests/unit/SearchParserTest.ts +++ b/tests/unit/SearchParserTest.ts @@ -1711,7 +1711,7 @@ const footerSelectionTests = [ right: 'USD', }, right: { - operator: 'eq', + operator: 'contains', left: 'merchant', right: 'Amazon', },