🚨 Latest Research:Tanstack npm Packages Compromised in Ongoing Mini Shai-Hulud Supply-Chain Attack.Learn More
Socket
Book a DemoSign in
Socket

@trigo/bool-expressions

Package Overview
Dependencies
Maintainers
3
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@trigo/bool-expressions - npm Package Compare versions

Comparing version
0.1.2
to
4.0.0
+57
lib/src/compiler/p1_lexicalAnalyzer.js
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.getAllIdentifiers = exports.tokenize = exports.TokenType = void 0;
var language_1 = require("../language");
var TokenType;
(function (TokenType) {
TokenType["operator"] = "operator";
TokenType["identifier"] = "identifier";
TokenType["separator"] = "separator";
TokenType["literal"] = "literal";
})(TokenType = exports.TokenType || (exports.TokenType = {}));
var identifyTokenType = function (token) {
switch (token) {
case '(':
case ')':
return TokenType.separator;
default:
return language_1.identifyOperator(token) !== language_1.Operator.unknown
? TokenType.operator
: TokenType.identifier;
}
};
var constructToken = function (token) { return [identifyTokenType(token), token]; };
var __tokenize = function (tokens, currentIncompleteToken, remainingExpression) {
if (!remainingExpression || remainingExpression.length === 0) {
if (currentIncompleteToken.length > 0) {
var token = constructToken(currentIncompleteToken);
tokens.push(token);
}
return tokens;
}
var currentChar = remainingExpression[0];
if (language_1.isSeparator(currentChar)) {
if (currentIncompleteToken.length > 0) {
var token = constructToken(currentIncompleteToken);
tokens.push(token);
}
if (language_1.isParenthesis(currentChar)) {
tokens.push(constructToken(currentChar));
}
return __tokenize(tokens, '', remainingExpression.slice(1));
}
return __tokenize(tokens, currentIncompleteToken.concat(currentChar), remainingExpression.slice(1));
};
exports.tokenize = function (str) {
return __tokenize([], '', str);
};
exports.getAllIdentifiers = function (expression) {
var tokens = exports.tokenize(expression);
var nonDistinctIdentifiers = tokens.filter(function (t) { return t[0] === TokenType.identifier; }).map(function (t) { return t[1]; });
return nonDistinctIdentifiers.filter(function (val, i) { return nonDistinctIdentifiers.indexOf(val) === i; });
};
exports.default = {
tokenize: exports.tokenize,
getAllIdentifiers: exports.getAllIdentifiers,
};
//# sourceMappingURL=p1_lexicalAnalyzer.js.map
{"version":3,"file":"p1_lexicalAnalyzer.js","sourceRoot":"","sources":["../../../src/compiler/p1_lexicalAnalyzer.ts"],"names":[],"mappings":";;;AAAA,wCAAqF;AAErF,IAAY,SAKX;AALD,WAAY,SAAS;IACjB,kCAAqB,CAAA;IACrB,sCAAyB,CAAA;IACzB,oCAAuB,CAAA;IACvB,gCAAmB,CAAA;AACvB,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAID,IAAM,iBAAiB,GAAG,UAAC,KAAa;IACpC,QAAQ,KAAK,EAAE;QACX,KAAK,GAAG,CAAC;QACT,KAAK,GAAG;YACJ,OAAO,SAAS,CAAC,SAAS,CAAC;QAC/B;YACI,OAAO,2BAAgB,CAAC,KAAK,CAAC,KAAK,mBAAQ,CAAC,OAAO;gBAC/C,CAAC,CAAC,SAAS,CAAC,QAAQ;gBACpB,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC;KAClC;AACL,CAAC,CAAA;AAED,IAAM,cAAc,GAAG,UAAC,KAAa,IAAY,OAAA,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,EAAjC,CAAiC,CAAC;AAEnF,IAAM,UAAU,GAAG,UAAC,MAAe,EAAE,sBAA8B,EAAE,mBAA2B;IAC5F,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;QAC1D,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,IAAM,KAAK,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,OAAO,MAAM,CAAC;KACjB;IACD,IAAM,WAAW,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;IAE3C,IAAI,sBAAW,CAAC,WAAW,CAAC,EAAE;QAC1B,IAAI,sBAAsB,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,IAAM,KAAK,GAAG,cAAc,CAAC,sBAAsB,CAAC,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACtB;QACD,IAAI,wBAAa,CAAC,WAAW,CAAC,EAAE;YAC5B,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC;SAC5C;QACD,OAAO,UAAU,CAAC,MAAM,EAAE,EAAE,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAC/D;IAED,OAAO,UAAU,CAAC,MAAM,EAAE,sBAAsB,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACxG,CAAC,CAAC;AAEW,QAAA,QAAQ,GAAG,UAAC,GAAY;IACjC,OAAO,UAAU,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;AACnC,CAAC,CAAA;AAEY,QAAA,iBAAiB,GAAG,UAAC,UAAkB;IAChD,IAAM,MAAM,GAAG,gBAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,IAAM,sBAAsB,GAAG,MAAM,CAAC,MAAM,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,UAAU,EAA7B,CAA6B,CAAC,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC,CAAC,CAAC,CAAC,EAAJ,CAAI,CAAC,CAAC;IAChG,OAAO,sBAAsB,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,CAAC,IAAK,OAAA,sBAAsB,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAzC,CAAyC,CAAC,CAAC;AAChG,CAAC,CAAC;AAEF,kBAAe;IACX,QAAQ,kBAAA;IACR,iBAAiB,2BAAA;CACpB,CAAC"}
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.validate = exports.isNaryOperator = exports.isBinaryOperator = exports.isUnaryOperator = exports.isIdentifier = exports.isOperator = exports.isSyntaxParsingError = exports.ParenthesisType = void 0;
var language_1 = require("../language");
var p1_lexicalAnalyzer_1 = require("./p1_lexicalAnalyzer");
var ParenthesisType;
(function (ParenthesisType) {
ParenthesisType["open"] = "open";
ParenthesisType["close"] = "close";
ParenthesisType["none"] = "none";
})(ParenthesisType = exports.ParenthesisType || (exports.ParenthesisType = {}));
;
;
exports.isSyntaxParsingError = function (ast) {
return ast !== null && "error" in ast;
};
exports.isOperator = function (input) {
return !!input && "operator" in input;
};
exports.isIdentifier = function (input) {
return !exports.isOperator(input);
};
exports.isUnaryOperator = function (input) {
return (exports.isOperator(input) &&
(input.operator === language_1.Operator.id || input.operator === language_1.Operator.not));
};
exports.isBinaryOperator = function (input) {
return (exports.isOperator(input) &&
(input.operator === language_1.Operator.and || input.operator === language_1.Operator.or));
};
exports.isNaryOperator = function (input) {
return exports.isOperator(input) && input.operator === language_1.Operator.xOfy;
};
var registerIdentifier = function (token, symbolTable) {
if (!token)
return;
var identifier = token[1];
if (exports.isIdentifier(token) && !symbolTable[identifier]) {
symbolTable[identifier] = { value: undefined, name: identifier };
}
};
var getSymbolTable = function (ast, symbolTable) {
symbolTable = symbolTable || {};
if (exports.isIdentifier(ast)) {
registerIdentifier(ast, symbolTable);
}
else {
ast.childs.forEach(function (c) { return getSymbolTable(c, symbolTable); });
}
return symbolTable;
};
var isParenthesis = function (token) {
return language_1.isSeparator(token[1]) && token[1] === "("
? ParenthesisType.open
: token[1] === ")"
? ParenthesisType.close
: ParenthesisType.none;
};
var createNode = function (parent, level) { return ({
operator: language_1.Operator.unknown,
childs: [],
parent: parent,
debug: {
level: level,
},
}); };
var __parse = function (tokens, currentNode, tree) {
// console.log("▶", { currentNode, tokens });
var _a = __read(tokens, 2), nextToken = _a[0], tokenAfterTheNext = _a[1];
if (!nextToken) {
// console.log("🛑", { currentNode });
if (currentNode && exports.isOperator(currentNode) && currentNode.operator === language_1.Operator.unknown)
currentNode.operator = language_1.Operator.id;
return tree;
}
if (isParenthesis(nextToken) === ParenthesisType.close && exports.isOperator(currentNode)) {
// console.log("⬆⬆⬆⬆⬆⬆ UP ⬆⬆⬆⬆⬆⬆", {currentNode});
if (currentNode.childs.length === 1 && exports.isIdentifier(currentNode.childs[0]) && currentNode.operator === language_1.Operator.unknown) {
// "(a)"
currentNode.parent.childs.concat(currentNode.childs);
}
if (currentNode && exports.isOperator(currentNode) && currentNode.operator === language_1.Operator.unknown) {
// necessary since we partially skip currentNode processing because of .parent passing
currentNode.operator = language_1.Operator.id;
}
return __parse(tokens.slice(1), currentNode.parent, tree);
}
if (isParenthesis(nextToken) === ParenthesisType.open) {
// console.log("⬇⬇⬇⬇⬇⬇ DOWN ⬇⬇⬇⬇⬇⬇");
var nextLevel = createNode(currentNode, currentNode.debug.level + 1);
currentNode.childs.push(nextLevel);
return __parse(tokens.slice(1), nextLevel, tree);
}
if (exports.isBinaryOperator(currentNode) && language_1.identifyOperator(nextToken[1]) === language_1.Operator.not) {
// AND NOT, OR NOT (without parenthesis)
var nextLevel = createNode(currentNode, currentNode.debug.level + 1);
nextLevel.operator = language_1.Operator.not;
currentNode.childs.push(nextLevel);
return __parse(tokens.slice(1), nextLevel, tree);
}
// console.log("🔄", { currentNode, tokens });
if (nextToken[0] === p1_lexicalAnalyzer_1.TokenType.identifier) {
currentNode.childs.push(nextToken);
}
if (nextToken[0] === p1_lexicalAnalyzer_1.TokenType.operator) {
if (currentNode.operator !== language_1.Operator.unknown) {
// Legacy Compatibility for "x AND y AND y" and such
var lower = createNode(currentNode, currentNode.debug.level + 1);
lower.operator = currentNode.operator;
lower.childs = currentNode.childs;
currentNode.childs = [lower];
currentNode.operator = language_1.identifyOperator(nextToken[1]);
//return pass1(tokens.slice(1), currentNode, tree);
}
else {
currentNode.operator = language_1.identifyOperator(nextToken[1]);
if (currentNode.operator === language_1.Operator.xOfy) {
currentNode.operatorParameter = {
x: Number.parseInt(nextToken[1].match(/^(\d)\/(\d)$/)[1]),
y: Number.parseInt(nextToken[1].match(/^(\d)\/(\d)$/)[2]),
};
}
}
}
return __parse(tokens.slice(1), currentNode, tree);
};
/**
* Transform a token array into a syntax tree
* @param {string[]} tokens - the flat token array
* @returns {string[]} a nested token array, braces removed
*/
var parse = function (tokens) {
var root = createNode(null, 0);
try {
var result = __parse(tokens, root, root);
return result.childs.length === 0 ? null : result;
}
catch (e) {
return { error: e.message };
}
};
var __validate = function (ast) {
if (exports.isIdentifier(ast)) {
return true;
}
if (exports.isUnaryOperator(ast)) {
return ast.childs && ast.childs.length === 1 && ast.childs.every(__validate);
}
if (exports.isBinaryOperator(ast)) {
return ast.childs && ast.childs.length === 2 && ast.childs.every(__validate);
}
if (exports.isNaryOperator(ast)) {
return ast.childs &&
ast.childs.length > 0 &&
ast.childs.every(__validate) &&
!!ast.operatorParameter.x && !!ast.operatorParameter.y &&
ast.childs.length === ast.operatorParameter.y &&
ast.operatorParameter.y >= ast.operatorParameter.x;
}
return true;
};
exports.validate = function (tokens) {
try {
if (tokens.length === 0)
return true;
if (tokens.filter(function (t) { return isParenthesis(t) === ParenthesisType.open; }).length !== tokens.filter(function (t) { return isParenthesis(t) === ParenthesisType.close; }).length)
return false;
var ast = parse(tokens);
if (ast === null || exports.isSyntaxParsingError(ast))
return false;
return __validate(ast);
}
catch (e) {
return false;
}
};
exports.default = {
parse: parse,
getSymbolTable: getSymbolTable,
validate: exports.validate,
};
//# sourceMappingURL=p2_syntaxAnalyzer.js.map
{"version":3,"file":"p2_syntaxAnalyzer.js","sourceRoot":"","sources":["../../../src/compiler/p2_syntaxAnalyzer.ts"],"names":[],"mappings":"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"}
// Nothing to see here
//# sourceMappingURL=p3_semanticAnalyzer.js.map
{"version":3,"file":"p3_semanticAnalyzer.js","sourceRoot":"","sources":["../../../src/compiler/p3_semanticAnalyzer.ts"],"names":[],"mappings":"AAAA,sBAAsB"}
// C'mon! What did you expect?
//# sourceMappingURL=p4_ilGenerator.js.map
{"version":3,"file":"p4_ilGenerator.js","sourceRoot":"","sources":["../../../src/compiler/p4_ilGenerator.ts"],"names":[],"mappings":"AAAA,8BAA8B"}
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.optimize = void 0;
var language_1 = require("../language");
var p2_syntaxAnalyzer_1 = require("./p2_syntaxAnalyzer");
// ID(a) => NOT(a)
// NOT(a) => ID(a)
// a => NOT(a)
var invertUnaryOperator = function (input) {
if (p2_syntaxAnalyzer_1.isUnaryOperator(input)) {
return __assign(__assign({}, input), { operator: input.operator === language_1.Operator.id ? language_1.Operator.not : language_1.Operator.id });
}
if (p2_syntaxAnalyzer_1.isIdentifier(input)) {
return {
operator: language_1.Operator.not,
childs: [input],
};
}
};
// a AND b => a OR b
// a OR b => a AND b
var invertBinaryOperator = function (input) {
if (!p2_syntaxAnalyzer_1.isBinaryOperator(input)) {
throw new Error("No binary operator");
}
return __assign(__assign({}, input), { operator: input.operator === language_1.Operator.and ? language_1.Operator.or : language_1.Operator.and });
};
var __optimize = function (input) {
if (!p2_syntaxAnalyzer_1.isOperator(input))
return input;
if (p2_syntaxAnalyzer_1.isUnaryOperator(input)) {
var operand = input.childs[0];
// NOT (NOT a) => ID(a), ID(ID(a)) => ID(a)
if (p2_syntaxAnalyzer_1.isUnaryOperator(operand) && input.operator === operand.operator) {
return __optimize({
operator: language_1.Operator.id,
childs: operand.childs.map(__optimize),
});
}
// ID (NOT a) => NOT(a), NOT(ID (a)) => NOT(a)
if (p2_syntaxAnalyzer_1.isUnaryOperator(operand) && input.operator !== operand.operator) {
return __optimize({
operator: language_1.Operator.not,
childs: operand.childs.map(__optimize),
});
}
}
if (p2_syntaxAnalyzer_1.isBinaryOperator(input)) {
// a AND a => ID(a), a OR a => ID(a)
if (input.childs.every(function (c) { return !p2_syntaxAnalyzer_1.isOperator(c); }) && input.childs[0][1] === input.childs[1][1]) {
return {
operator: language_1.Operator.id,
childs: [input.childs[0]].map(__optimize),
};
}
}
// NOT (a AND b) => NOT(a) OR NOT(b)
// NOT (a OR b) => NOT(a) AND NOT(b)
if (p2_syntaxAnalyzer_1.isUnaryOperator(input) && input.operator === language_1.Operator.not && p2_syntaxAnalyzer_1.isBinaryOperator(input.childs[0])) {
var operand = input.childs[0];
return __optimize({
operator: invertBinaryOperator(operand).operator,
childs: [
invertUnaryOperator(operand.childs[0]),
invertUnaryOperator(operand.childs[1]),
]
});
}
// 1/1 a => a
if (p2_syntaxAnalyzer_1.isNaryOperator(input) && input.operatorParameter.x === 1 && input.operatorParameter.y === 1) {
return __optimize(input.childs[0]);
}
return __assign(__assign({}, input), { childs: input.childs.map(__optimize) });
};
exports.optimize = function (input) {
if (p2_syntaxAnalyzer_1.isSyntaxParsingError(input))
throw new Error('cannot-optimize-error');
return __optimize(input);
};
exports.default = {
optimize: exports.optimize,
};
//# sourceMappingURL=p5_optimizer.js.map
{"version":3,"file":"p5_optimizer.js","sourceRoot":"","sources":["../../../src/compiler/p5_optimizer.ts"],"names":[],"mappings":"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"}
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var __simplify = function (result, tokens) {
return tokens;
};
var simplify = function (tokens) { return __simplify([], tokens); };
exports.default = simplify;
//# sourceMappingURL=simplify.js.map
{"version":3,"file":"simplify.js","sourceRoot":"","sources":["../../../src/compiler/simplify.ts"],"names":[],"mappings":";;AAGA,IAAM,UAAU,GAAG,UAAC,MAAgB,EAAE,MAAgB;IAClD,OAAO,MAAM,CAAC;AAClB,CAAC,CAAC;AAEF,IAAM,QAAQ,GAAG,UAAC,MAAgB,IAAe,OAAA,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,EAAtB,CAAsB,CAAC;AAExE,kBAAe,QAAQ,CAAC"}
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __values = (this && this.__values) || function(o) {
var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
if (m) return m.call(o);
if (o && typeof o.length === "number") return {
next: function () {
if (o && i >= o.length) o = void 0;
return { value: o && o[i++], done: !o };
}
};
throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
};
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.identifyOperator = exports.isSeparator = exports.isParenthesis = exports.isWhitespace = exports.Operator = void 0;
var BooleanOperator;
(function (BooleanOperator) {
BooleanOperator["and"] = "AND";
BooleanOperator["or"] = "OR";
BooleanOperator["not"] = "NOT";
BooleanOperator["id"] = "ID";
})(BooleanOperator || (BooleanOperator = {}));
var AdvancedOperator;
(function (AdvancedOperator) {
AdvancedOperator["xOfy"] = "X/Y";
AdvancedOperator["unknown"] = "UNKNOWN";
})(AdvancedOperator || (AdvancedOperator = {}));
exports.Operator = __assign(__assign({}, BooleanOperator), AdvancedOperator);
exports.isWhitespace = function (char) { return char === " "; };
exports.isParenthesis = function (char) { return char === "(" || char === ")"; };
exports.isSeparator = function (char) { return exports.isWhitespace(char) || exports.isParenthesis(char); };
var isBooleanOperator = function (token) { return Object.values(BooleanOperator).some(function (o) { return o === token; }); };
var advancedOperators = new Map([
[exports.Operator.xOfy, function (token) { return token.match(/^\d\/\d$/); }],
]);
var identifyAdvancedOperator = function (token) {
var e_1, _a;
try {
for (var _b = __values(advancedOperators.entries()), _c = _b.next(); !_c.done; _c = _b.next()) {
var _d = __read(_c.value, 2), operatorType = _d[0], operatorDefinition = _d[1];
var opDef = operatorDefinition(token);
if (opDef)
return operatorType;
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
}
finally { if (e_1) throw e_1.error; }
}
return exports.Operator.unknown;
};
exports.identifyOperator = function (token) {
return isBooleanOperator(token)
? token
: identifyAdvancedOperator(token);
};
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/language/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,IAAK,eAKJ;AALD,WAAK,eAAe;IAChB,8BAAW,CAAA;IACX,4BAAS,CAAA;IACT,8BAAW,CAAA;IACX,4BAAS,CAAA;AACb,CAAC,EALI,eAAe,KAAf,eAAe,QAKnB;AACD,IAAK,gBAGJ;AAHD,WAAK,gBAAgB;IACjB,gCAAY,CAAA;IACZ,uCAAmB,CAAA;AACvB,CAAC,EAHI,gBAAgB,KAAhB,gBAAgB,QAGpB;AACY,QAAA,QAAQ,yBAAQ,eAAe,GAAK,gBAAgB,EAAG;AAGvD,QAAA,YAAY,GAAG,UAAC,IAAY,IAAyB,OAAA,IAAI,KAAK,GAAG,EAAZ,CAAY,CAAC;AAClE,QAAA,aAAa,GAAG,UAAC,IAAY,IAA0B,OAAA,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,EAA5B,CAA4B,CAAC;AACpF,QAAA,WAAW,GAAG,UAAC,IAAY,IAAwB,OAAA,oBAAY,CAAC,IAAI,CAAC,IAAI,qBAAa,CAAC,IAAI,CAAC,EAAzC,CAAyC,CAAC;AAE1G,IAAM,iBAAiB,GAAG,UAAC,KAAa,IAAwB,OAAA,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,KAAK,KAAK,EAAX,CAAW,CAAC,EAAvD,CAAuD,CAAC;AAExH,IAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAC9B,CAAC,gBAAQ,CAAC,IAAI,EAAE,UAAC,KAAK,IAAK,OAAA,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,EAAvB,CAAuB,CAAC;CACtD,CAAC,CAAC;AAEH,IAAM,wBAAwB,GAAG,UAAC,KAAa;;;QAC3C,KAGK,IAAA,KAAA,SAAA,iBAAiB,CAAC,OAAO,EAAE,CAAA,gBAAA,4BAAE;YAHzB,IAAA,KAAA,mBAGR,EAFG,YAAY,QAAA,EACZ,kBAAkB,QAAA;YAElB,IAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,KAAK;gBAAE,OAAO,YAAY,CAAC;SAClC;;;;;;;;;IACD,OAAO,gBAAQ,CAAC,OAAO,CAAC;AAC5B,CAAC,CAAC;AAEW,QAAA,gBAAgB,GAAG,UAAC,KAAa;IAC1C,OAAO,iBAAiB,CAAC,KAAK,CAAC;QAC3B,CAAC,CAAW,KAAK;QACjB,CAAC,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;AAC1C,CAAC,CAAC"}
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.runWithTruthArray = exports.importTruthArrayToSymbolTable = exports.run = exports.isExpression = void 0;
var language_1 = require("../language");
var p1_lexicalAnalyzer_1 = require("../compiler/p1_lexicalAnalyzer");
var p2_syntaxAnalyzer_1 = require("../compiler/p2_syntaxAnalyzer");
var p5_optimizer_1 = require("../compiler/p5_optimizer");
var reduce_1 = require("./reduce");
exports.isExpression = function (x) {
return "result" in x;
};
var operatorFunctions = (_a = {},
_a[language_1.Operator.id] = function (_, operands) {
return !!operands[0];
},
_a[language_1.Operator.not] = function (_, operands) {
return !operands[0];
},
_a[language_1.Operator.and] = function (_, operands) {
return operands[0] && operands[1];
},
_a[language_1.Operator.or] = function (_, operands) {
return operands[0] || operands[1];
},
_a[language_1.Operator.xOfy] = function (params, operands) {
return operands.filter(function (x) { return !!x; }).length >= params.x;
},
_a);
var __run = function (symbolTable) { return function (expression) {
if (expression === null)
return true;
if (p2_syntaxAnalyzer_1.isIdentifier(expression)) {
var symbol = symbolTable[expression[1]];
if (!symbol)
throw new Error('identifier-not-found-in-symbol-table');
return !!symbol.value;
}
var operatorFunction = operatorFunctions[expression.operator];
if (!operatorFunction)
throw new Error(" operator-function-not-found");
expression.result = operatorFunction(expression.operatorParameter, expression.childs.map(__run(symbolTable)));
return expression.result;
}; };
exports.run = function (expression) { return function (symbolTable) {
return __run(symbolTable)(expression);
}; };
exports.importTruthArrayToSymbolTable = function (truthArray, symbolTable) {
var truthifiedSymbolTable = __assign({}, symbolTable);
truthArray.forEach(function (truth) { return (truthifiedSymbolTable[truth] || {}).value = true; });
return truthifiedSymbolTable;
};
exports.runWithTruthArray = function (expression) { return function (state) {
var tokens = p1_lexicalAnalyzer_1.tokenize(expression);
var ast = p5_optimizer_1.default.optimize(p2_syntaxAnalyzer_1.default.parse(tokens));
var symbolTable = p2_syntaxAnalyzer_1.default.getSymbolTable(ast, {});
var result = exports.run(ast)(exports.importTruthArrayToSymbolTable(state, symbolTable));
return result;
}; };
exports.default = {
runWithTruthArray: exports.runWithTruthArray,
run: exports.run,
reduce: reduce_1.reduce,
};
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/runtime/index.ts"],"names":[],"mappings":"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"}
"use strict";
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.reduce = void 0;
var language_1 = require("../language");
var p1_lexicalAnalyzer_1 = require("../compiler/p1_lexicalAnalyzer");
var p2_syntaxAnalyzer_1 = require("../compiler/p2_syntaxAnalyzer");
var p5_optimizer_1 = require("../compiler/p5_optimizer");
var _1 = require(".");
var sourceGenerator_1 = require("../sourceGenerator");
var getNodeValue = function (symbolTable, node) {
if (!node)
return true;
if (p2_syntaxAnalyzer_1.isIdentifier(node)) {
var symbol = symbolTable[node[1]];
if (!symbol)
throw new Error("identifier-not-found-in-symbol-table");
return !!symbol.value;
}
return node.result;
};
var reduceFunctions = (_a = {},
_a[language_1.Operator.id] = function (symbolTable) { return function (_, operands) {
return getNodeValue(symbolTable, operands[0]) ? [] : operands;
}; },
_a[language_1.Operator.not] = function (symbolTable) { return function (_, operands) {
return getNodeValue(symbolTable, operands[0]) ? operands : [];
}; },
_a[language_1.Operator.and] = function (symbolTable) { return function (_, operands) {
var d = operands.map(function (x) { return __reduce(symbolTable)(x); });
return d.filter(function (x) { return !getNodeValue(symbolTable, x); });
}; },
_a[language_1.Operator.or] = function (symbolTable) { return function (_, operands) {
var d = operands.map(function (x) { return __reduce(symbolTable)(x); });
return d.filter(function (x) { return !getNodeValue(symbolTable, x); }).length > 0 ? d : [];
}; },
_a[language_1.Operator.xOfy] = function (symbolTable) { return function (params, operands) {
var d = operands.map(function (x) { return __reduce(symbolTable)(x); });
return d.filter(function (x) { return !getNodeValue(symbolTable, x); });
}; },
_a);
var __reduce = function (symbolTable) { return function (expression) {
if (expression === null)
return null;
if (p2_syntaxAnalyzer_1.isIdentifier(expression)) {
return getNodeValue(symbolTable, expression) ? null : expression;
}
if (_1.isExpression(expression) && expression.result)
return null;
var reduceFunction = reduceFunctions[expression.operator];
if (!reduceFunction)
throw new Error(" operator-function-not-found");
var childs = reduceFunction(symbolTable)(expression.operatorParameter, expression.childs);
if (childs && childs.length === 1 && p2_syntaxAnalyzer_1.isBinaryOperator(expression)) {
// only 1 of the 2 childs of a binary operator is false, so the operator is dismissed and only the operand stays
return childs[0];
}
if (p2_syntaxAnalyzer_1.isNaryOperator(expression)) {
var diff = expression.childs.length - childs.length;
return __assign(__assign({}, expression), { operatorParameter: { x: expression.operatorParameter.x - diff, y: expression.operatorParameter.y - diff }, childs: childs });
}
var result = __assign(__assign({}, expression), { childs: childs });
return result;
}; };
exports.reduce = function (expression) { return function (state) {
var tokens = p1_lexicalAnalyzer_1.tokenize(expression);
var ast = p5_optimizer_1.optimize(p2_syntaxAnalyzer_1.default.parse(tokens));
var symbolTable = p2_syntaxAnalyzer_1.default.getSymbolTable(ast, {});
var symbolTableWithValues = _1.importTruthArrayToSymbolTable(state, symbolTable);
_1.run(ast)(_1.importTruthArrayToSymbolTable(state, symbolTable));
var result = p5_optimizer_1.optimize(__reduce(symbolTableWithValues)(ast));
var str = sourceGenerator_1.default(result);
return str;
}; };
//# sourceMappingURL=reduce.js.map
{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../../../src/runtime/reduce.ts"],"names":[],"mappings":"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"}
"use strict";
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
var p2_syntaxAnalyzer_1 = require("../compiler/p2_syntaxAnalyzer");
var language_1 = require("../language");
var stringificationFunctions = (_a = {},
_a[language_1.Operator.id] = function (_, node) {
return node.childs ? node.childs[0][1] : "";
},
_a[language_1.Operator.not] = function (_, node) {
return "NOT " + node.childs[0][1];
},
_a[language_1.Operator.and] = function (_, node) {
return __toStringNonRoot(node.childs[0]) + " AND " + __toStringNonRoot(node.childs[1]);
},
_a[language_1.Operator.or] = function (_, node) {
return __toStringNonRoot(node.childs[0]) + " OR " + __toStringNonRoot(node.childs[1]);
},
_a[language_1.Operator.xOfy] = function (params, node) {
return params.x + "/" + params.y + " " + node.childs
.map(function (c) { return __toStringNonRoot(c); })
.reduce(function (agg, cur) { return agg + " " + cur; });
},
_a);
var __toString = function (isRoot) { return function (ast) {
if (!ast)
return "";
if (p2_syntaxAnalyzer_1.isOperator(ast)) {
return "" + (!isRoot ? "(" : "") + stringificationFunctions[ast.operator](ast.operatorParameter, ast) + (!isRoot ? ")" : "");
}
return ast[1];
}; };
var __toStringNonRoot = __toString(false);
exports.default = __toString(true);
//# sourceMappingURL=index.js.map
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/sourceGenerator/index.ts"],"names":[],"mappings":";;;AAAA,mEAAqF;AACrF,wCAAuC;AAEvC,IAAM,wBAAwB;IAC1B,GAAC,mBAAQ,CAAC,EAAE,IAAG,UAAC,CAAC,EAAE,IAAkB;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAChD,CAAC;IACD,GAAC,mBAAQ,CAAC,GAAG,IAAG,UAAC,CAAC,EAAE,IAAkB;QAClC,OAAO,SAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAG,CAAC;IACtC,CAAC;IACD,GAAC,mBAAQ,CAAC,GAAG,IAAG,UAAC,CAAC,EAAE,IAAkB;QAClC,OAAU,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAQ,iBAAiB,CAChE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACf,CAAC;IACR,CAAC;IACD,GAAC,mBAAQ,CAAC,EAAE,IAAG,UAAC,CAAC,EAAE,IAAkB;QACjC,OAAU,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,YAAO,iBAAiB,CAC/D,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CACf,CAAC;IACR,CAAC;IACD,GAAC,mBAAQ,CAAC,IAAI,IAAG,UAAC,MAAM,EAAE,IAAkB;QACxC,OAAU,MAAM,CAAC,CAAC,SAAI,MAAM,CAAC,CAAC,SAAI,IAAI,CAAC,MAAM;aACxC,GAAG,CAAC,UAAC,CAAC,IAAK,OAAA,iBAAiB,CAAC,CAAC,CAAC,EAApB,CAAoB,CAAC;aAChC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,GAAG,GAAG,GAAG,GAAG,GAAG,EAAf,CAAe,CAAG,CAAC;IACjD,CAAC;OACJ,CAAC;AAEF,IAAM,UAAU,GAAG,UAAC,MAAe,IAAK,OAAA,UAAC,GAAe;IACpD,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,8BAAU,CAAC,GAAG,CAAC,EAAE;QACjB,OAAO,MAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAG,wBAAwB,CAAC,GAAG,CAAC,QAAQ,CAAC,CACjE,GAAG,CAAC,iBAAiB,EACrB,GAAG,CACN,IAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;KAC5B;IACD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,EATuC,CASvC,CAAC;AAEF,IAAM,iBAAiB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;AAE5C,kBAAe,UAAU,CAAC,IAAI,CAAC,CAAC"}
+11
-8
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
var reduce_1 = require("./src/reduce");
exports.reduce = reduce_1.default;
var calculate_1 = require("./src/calculate");
exports.calculate = calculate_1.default;
var fetchVariables_1 = require("./src/fetchVariables");
exports.fetchVariables = fetchVariables_1.default;
var validate_1 = require("./src/validate");
exports.validate = validate_1.default;
var p1_lexicalAnalyzer_1 = require("./src/compiler/p1_lexicalAnalyzer");
var p2_syntaxAnalyzer_1 = require("./src/compiler/p2_syntaxAnalyzer");
var runtime_1 = require("./src/runtime");
var utils_1 = require("./utils");
exports.default = {
reduce: runtime_1.default.reduce,
calculate: runtime_1.default.runWithTruthArray,
fetchVariables: p1_lexicalAnalyzer_1.default.getAllIdentifiers,
// legacy support for untokenized string inputs
validate: function (input) { return utils_1.pipe(p1_lexicalAnalyzer_1.default.tokenize(input), p2_syntaxAnalyzer_1.default.validate)(input); }
};
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;AAAA,uCAAkC;AAM9B,iBANG,gBAAM,CAMH;AALV,6CAAwC;AAMpC,oBANG,mBAAS,CAMH;AALb,uDAAkD;AAM9C,yBANG,wBAAc,CAMH;AALlB,2CAAsC;AAMlC,mBANG,kBAAQ,CAMH"}
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;AAAA,wEAAgE;AAChE,sEAA8D;AAC9D,yCAAoC;AACpC,iCAA+B;AAE/B,kBAAe;IAEX,MAAM,EAAE,iBAAO,CAAC,MAAM;IAEtB,SAAS,EAAE,iBAAO,CAAC,iBAAiB;IAEpC,cAAc,EAAE,4BAAe,CAAC,iBAAiB;IAEjD,+CAA+C;IAC/C,QAAQ,EAAE,UAAC,KAAa,IAAc,OAAA,YAAI,CAAC,4BAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,2BAAc,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,EAArE,CAAqE;CAE9G,CAAC"}
"use strict";
var __read = (this && this.__read) || function (o, n) {
var m = typeof Symbol === "function" && o[Symbol.iterator];
if (!m) return o;
var i = m.call(o), r, ar = [], e;
try {
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
}
catch (error) { e = { error: error }; }
finally {
try {
if (r && !r.done && (m = i["return"])) m.call(i);
}
finally { if (e) throw e.error; }
}
return ar;
};
var __spread = (this && this.__spread) || function () {
for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
return ar;
};
Object.defineProperty(exports, "__esModule", { value: true });
/* eslint max-len: "off" */
Object.defineProperty(exports, "__esModule", { value: true });
var chai_1 = require("chai");
var _1 = require(".");
var calculate_1 = require("./src/calculate");
var tokenize_1 = require("./src/compiler/tokenize");
var structure_1 = require("./src/compiler/structure");
var executeSpec = function (testFunction) { return function (testInput) {
var expression = testInput[0], state = testInput[1], expectedResult = testInput[2];
it("should " + testFunction.name + " \"" + expression + "\" if " + state + " to be " + expectedResult, function () {
chai_1.expect(testFunction(expression, state)).to.deep.eq(expectedResult);
});
}; };
describe('tokenization', function () {
var chai = require("chai");
var chai_exclude_1 = require("chai-exclude");
var utils_1 = require("./utils");
var p1_lexicalAnalyzer_1 = require("./src/compiler/p1_lexicalAnalyzer");
var p2_syntaxAnalyzer_1 = require("./src/compiler/p2_syntaxAnalyzer");
var p5_optimizer_1 = require("./src/compiler/p5_optimizer");
var runtime_1 = require("./src/runtime");
var language_1 = require("./src/language");
var sourceGenerator_1 = require("./src/sourceGenerator");
chai.use(chai_exclude_1.default);
var expect = chai.expect;
var execute = function () {
var executionPipeline = [];
for (var _i = 0; _i < arguments.length; _i++) {
executionPipeline[_i] = arguments[_i];
}
return function (testInput) {
var hasState = testInput.length > 2;
var _a = __read(hasState
? testInput
: [testInput[0], null, testInput[1]], 3), expression = _a[0], state = _a[1], expectedResult = _a[2];
var spec = executionPipeline[executionPipeline.length - 1];
it("should " + spec.name + " \"" + expression + "\" " + (hasState ? "if " + state + " " : "") + " to be " + JSON.stringify(expectedResult, function (k, v) { return k && v && typeof v !== "number" ? (Array.isArray(v) ? "[object Array]" : "" + v) : v; }), function () {
var result = utils_1.pipe.apply(void 0, __spread(executionPipeline))(testInput[0]);
if (hasState)
result = result(state);
if (result === null) {
expect(result).to.deep.eq(expectedResult);
}
else if (typeof result === 'boolean' || typeof result === 'string') {
expect(result).to.deep.eq(expectedResult);
}
else {
expect(result).excludingEvery(['debug', 'parent']).to.deep.eq(expectedResult);
}
});
};
};
var identifiers = function () {
var tokenStrings = [];
for (var _i = 0; _i < arguments.length; _i++) {
tokenStrings[_i] = arguments[_i];
}
return tokenStrings.map(function (ts) { return p1_lexicalAnalyzer_1.default.tokenize(ts); }).reduce(function (p, cur) { return __spread(p, cur); });
};
var tokenize = p1_lexicalAnalyzer_1.default.tokenize;
var Trump = runtime_1.default.reduce;
describe('Phase 1: Lexical Analysis', function () {
[
['a AND b', null, ['a', 'AND', 'b']],
[' a AND b ', null, ['a', 'AND', 'b']],
['(a AND b)', null, ['(', 'a', 'AND', 'b', ')']],
['2/3 a b c', null, ['2/3', 'a', 'b', 'c']],
['((a AND b) OR (c AND d)) OR e', null, ['(', '(', 'a', 'AND', 'b', ')', 'OR', '(', 'c', 'AND', 'd', ')', ')', 'OR', 'e']],
['2/3 a b (1/2 c d)', null, ['2/3', 'a', 'b', '(', '1/2', 'c', 'd', ')']],
['1/3 b ((3/4 c d e f) AND (g OR h))', null, ['1/3', 'b', '(', '(', '3/4', 'c', 'd', 'e', 'f', ')', 'AND', '(', 'g', 'OR', 'h', ')', ')']],
].forEach(executeSpec(tokenize_1.default));
['', []],
['a', [[p1_lexicalAnalyzer_1.TokenType.identifier, 'a']]],
['NOT a', [[p1_lexicalAnalyzer_1.TokenType.operator, 'NOT'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'a']]],
['a AND b', [[p1_lexicalAnalyzer_1.TokenType.identifier, 'a'], [p1_lexicalAnalyzer_1.TokenType.operator, 'AND'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'b']]],
[' a AND b ', [[p1_lexicalAnalyzer_1.TokenType.identifier, 'a'], [p1_lexicalAnalyzer_1.TokenType.operator, 'AND'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'b']]],
['(a AND b)', [[p1_lexicalAnalyzer_1.TokenType.separator, '('], [p1_lexicalAnalyzer_1.TokenType.identifier, 'a'], [p1_lexicalAnalyzer_1.TokenType.operator, 'AND'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'b'], [p1_lexicalAnalyzer_1.TokenType.separator, ')']]],
['2/3 a b c', [[p1_lexicalAnalyzer_1.TokenType.operator, '2/3'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'a'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'b'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'c']]],
['((a AND b) OR (c AND d)) OR e', [[p1_lexicalAnalyzer_1.TokenType.separator, '('], [p1_lexicalAnalyzer_1.TokenType.separator, '('], [p1_lexicalAnalyzer_1.TokenType.identifier, 'a'], [p1_lexicalAnalyzer_1.TokenType.operator, 'AND'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'b'], [p1_lexicalAnalyzer_1.TokenType.separator, ')'], [p1_lexicalAnalyzer_1.TokenType.operator, 'OR'], [p1_lexicalAnalyzer_1.TokenType.separator, '('], [p1_lexicalAnalyzer_1.TokenType.identifier, 'c'], [p1_lexicalAnalyzer_1.TokenType.operator, 'AND'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'd'], [p1_lexicalAnalyzer_1.TokenType.separator, ')'], [p1_lexicalAnalyzer_1.TokenType.separator, ')'], [p1_lexicalAnalyzer_1.TokenType.operator, 'OR'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'e']]],
['2/3 a b (1/2 c d)', [[p1_lexicalAnalyzer_1.TokenType.operator, '2/3'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'a'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'b'], [p1_lexicalAnalyzer_1.TokenType.separator, '('], [p1_lexicalAnalyzer_1.TokenType.operator, '1/2'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'c'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'd'], [p1_lexicalAnalyzer_1.TokenType.separator, ')']]],
['1/3 b ((3/4 c d e f) AND (g OR h))', [[p1_lexicalAnalyzer_1.TokenType.operator, '1/3'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'b'], [p1_lexicalAnalyzer_1.TokenType.separator, '('], [p1_lexicalAnalyzer_1.TokenType.separator, '('], [p1_lexicalAnalyzer_1.TokenType.operator, '3/4'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'c'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'd'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'e'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'f'], [p1_lexicalAnalyzer_1.TokenType.separator, ')'], [p1_lexicalAnalyzer_1.TokenType.operator, 'AND'], [p1_lexicalAnalyzer_1.TokenType.separator, '('], [p1_lexicalAnalyzer_1.TokenType.identifier, 'g'], [p1_lexicalAnalyzer_1.TokenType.operator, 'OR'], [p1_lexicalAnalyzer_1.TokenType.identifier, 'h'], [p1_lexicalAnalyzer_1.TokenType.separator, ')'], [p1_lexicalAnalyzer_1.TokenType.separator, ')']]],
].forEach(execute(p1_lexicalAnalyzer_1.default.tokenize));
});
describe('structuring', function () {
describe("Phase 1 - Get all identifiers", function () {
[
[['a', 'AND', 'b'], null, ['a', 'AND', 'b']],
[['(', 'a', 'AND', 'b', ')'], null, [['a', 'AND', 'b']]],
[['2/3', 'a', 'b', 'c'], null, ['2/3', 'X/Y', 'a', 'b', 'c']],
[['(', '(', 'a', 'AND', 'b', ')', ')', 'OR', 'e'], null, [[['a', 'AND', 'b']], 'OR', 'e']],
[['(', '(', 'a', 'AND', 'b', ')', 'OR', '(', 'c', 'AND', 'd', ')', ')', 'OR', 'e'], null, [[['a', 'AND', 'b'], 'OR', ['c', 'AND', 'd']], 'OR', 'e']],
[['2/3', 'a', 'b', '(', '1/2', 'c', 'd', ')'], null, ['2/3', 'X/Y', 'a', 'b', ['1/2', 'X/Y', 'c', 'd']]],
[['(', '2/3', 'a', 'b', 'c', ')', 'AND', '(', 'd', 'OR', 'e', ')'], null, [['2/3', 'X/Y', 'a', 'b', 'c'], 'AND', ['d', 'OR', 'e']]],
[['2/3', 'a', 'b', '(', '1/2', 'c', 'd', ')', 'AND', '(', 'd', 'OR', 'e', ')'], null, ['2/3', 'X/Y', 'a', 'b', ['1/2', 'X/Y', 'c', 'd'], 'AND', ['d', 'OR', 'e']]],
[['1/3', 'b', '(', '(', '3/4', 'c', 'd', 'e', 'f', ')', 'AND', '(', 'g', 'OR', 'h', ')', ')'], null, ['1/3', 'X/Y', 'b', [['3/4', 'X/Y', 'c', 'd', 'e', 'f'], 'AND', ['g', 'OR', 'h']]]],
].forEach(executeSpec(structure_1.default));
["a OR b", ["a", "b"]],
["a OR b AND (b AND c)", ["a", "b", "c"]],
["2/3 a b (b AND c AND d)", ["a", "b", "c", "d"]],
["a", ["a"]],
["", []],
[undefined, []],
[null, []],
].forEach(execute(p1_lexicalAnalyzer_1.default.getAllIdentifiers));
});
describe('evaluation', function () {
describe('Phase 2: Fill Symbol Table', function () {
[
[[true, 'AND', true], null, true],
[[false, 'AND', true], null, false],
[[true, 'AND', false], null, false],
[[false, 'AND', false], null, false],
[[true, 'OR', true], null, true],
[[false, 'OR', true], null, true],
[[true, 'OR', false], null, true],
[[false, 'OR', false], null, false],
[['2/3', 'X/Y', true, true, true], null, true],
[['2/3', 'X/Y', true, true, false], null, true],
[['2/3', 'X/Y', true, false, false], null, false],
].forEach(executeSpec(calculate_1.evaluate));
['', {}],
['a', { a: { value: undefined, name: 'a' } }],
['NOT a', { a: { value: undefined, name: 'a' } }],
['a AND b', { a: { value: undefined, name: 'a' }, b: { value: undefined, name: 'b' } }],
[' a AND b ', { a: { value: undefined, name: 'a' }, b: { value: undefined, name: 'b' } }],
['(a AND b)', { a: { value: undefined, name: 'a' }, b: { value: undefined, name: 'b' } }],
['2/3 a b c', { a: { value: undefined, name: 'a' }, b: { value: undefined, name: 'b' }, c: { value: undefined, name: 'c' } }],
].forEach(execute(tokenize, p2_syntaxAnalyzer_1.default.parse, p2_syntaxAnalyzer_1.default.getSymbolTable));
});
describe('calculate expression result', function () {
describe("Phase 2 - Syntax Validator", function () {
[
['', [], true],
['a', ['a'], true],
['a', ['b'], false],
['NOT a', ['a'], false],
['NOT a', ['b'], true],
['NOT a', [], true],
['NOT (a OR b)', ['a'], false],
['a AND NOT (b OR c)', ['a'], true],
['a AND NOT (b OR c)', ['a', 'b'], false],
['a AND b', ['a'], false],
['(a AND b)', ['a'], false],
['a AND b', ['b'], false],
['a AND b', ['a', 'b'], true],
['(a AND b)', ['a', 'b'], true],
['(a AND b) OR c', ['c'], true],
['(a AND b) OR c', ['a', 'b'], true],
['(a AND b) OR (c AND d)', ['a', 'c'], false],
['(a AND b) OR (c AND d)', ['a', 'b'], true],
['((a AND b) OR (c AND d)) OR e', ['e'], true],
['2/3 a b c', ['a', 'b'], true],
['2/3 a b c', ['a'], false],
['2/3 a x y', ['a'], false],
['2/3 x a y', ['a'], false],
['2/3 x y a', ['a'], false],
['(c AND d) OR (2/3 x y a)', ['y'], false],
['(RKARR1 AND GKBRSTART1) OR (2/3 GKBRFORT GKBREND JVPST02)', ['GKBREND'], false],
['2/3 a (x OR y) c', ['a', 'x'], true],
['(2/3 a b c)', ['a'], false],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'e', 'g'], true],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'b', 'h'], true],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'f'], false],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'f', 'g'], true],
['2/3 a b ((3/4 c d e f) OR (g OR h))', ['a', 'c', 'g'], true],
['(2/3 a b c) AND (d OR e)', ['a'], false],
['(a AND b) OR (c AND d) OR (2/3 a b c)', ['b', 'c'], true],
].forEach(executeSpec(_1.calculate));
["", true],
["a", true],
["a", true],
["NOT a", true],
["NOT a", true],
["NOT a", true],
["NOT (a OR b)", true],
["NOT (a AND b)", true],
["a AND NOT (b OR c)", true],
["a AND NOT (b OR c)", true],
["a AND b", true],
["(a AND b)", true],
["a AND b", true],
["a AND b", true],
["(a AND b)", true],
["(a AND b) OR c", true],
["(a AND b) OR c", true],
["(a AND b) OR (c AND d)", true],
["(a AND b) OR (c AND d)", true],
["((a AND b) OR (c AND d)) OR e", true],
["2/3 a b c", true],
["2/3 a (x OR y) c", true],
["(2/3 a b c)", true],
["2/3 a b ((3/4 c d e f) AND (g OR h))", true],
["2/3 a b ((3/4 c d e f) AND (g OR h))", true],
["2/3 a b ((3/4 c d e f) AND (g OR h))", true],
["2/3 a b ((3/4 c d e f) AND (g OR h))", true],
["2/3 a b ((3/4 c d e f) OR (g OR h))", true],
["(2/3 a b c) AND (d OR e)", true],
["(a AND b) OR (c AND d) OR (2/3 a b c)", true],
["a OR", false],
["a b c", false],
["a AND", false],
["a AND b OR", false],
["2/3 a b", false],
["x/y a b", false],
["complete garbage", false],
["(a AND b) OR (c AND d", false],
["() AND () OR (())", false],
["AND", false],
].forEach(execute(p1_lexicalAnalyzer_1.default.tokenize, p2_syntaxAnalyzer_1.default.validate));
});
describe('fetch all variables from expression', function () {
describe('Phase 2: Parser', function () {
[
['a OR b', null, ['a', 'b']],
['a OR b AND (b AND c)', null, ['a', 'b', 'c']],
['2/3 a b (b AND c AND d)', null, ['a', 'b', 'c', 'd']],
['a', null, ['a']],
['', null, []],
[undefined, null, []],
[null, null, []],
].forEach(executeSpec(_1.fetchVariables));
['', null],
['a', { operator: language_1.Operator.id, childs: tokenize('a') }],
['(a)', { operator: language_1.Operator.id, childs: [{ operator: language_1.Operator.id, childs: tokenize('a') }] }],
['NOT a', { operator: language_1.Operator.not, childs: identifiers('a') }],
['ID a', { operator: language_1.Operator.id, childs: identifiers('a') }],
['NOT (NOT a)', { operator: language_1.Operator.not, childs: [{ operator: language_1.Operator.not, childs: identifiers('a') }] }],
['a AND b', { operator: language_1.Operator.and, childs: identifiers('a', 'b') }],
['(a AND b)', { operator: language_1.Operator.id, childs: [{ operator: language_1.Operator.and, childs: identifiers('a', 'b') }] }],
['(a) AND (b)', { operator: language_1.Operator.and, childs: [
{ operator: language_1.Operator.id, childs: __spread(identifiers('a')) },
{ operator: language_1.Operator.id, childs: __spread(identifiers('b')) },
] }],
['NOT (a AND b)', { operator: language_1.Operator.not, childs: [
{ operator: language_1.Operator.and, childs: __spread(identifiers('a', 'b')) }
] }],
['(a AND b) OR c', { operator: language_1.Operator.or, childs: __spread([
{ operator: language_1.Operator.and, childs: identifiers('a', 'b') }
], identifiers('c')) }],
['(a AND b) OR (NOT c)', { operator: language_1.Operator.or, childs: [
{ operator: language_1.Operator.and, childs: identifiers('a', 'b') },
{ operator: language_1.Operator.not, childs: identifiers('c') }
] }],
['a AND (b OR c)', { operator: language_1.Operator.and, childs: __spread(identifiers('a'), [
{ operator: language_1.Operator.or, childs: identifiers('b', 'c') }
]) }],
['(a AND b) OR (c AND d)', { operator: language_1.Operator.or, childs: [
{ operator: language_1.Operator.and, childs: identifiers('a', 'b') },
{ operator: language_1.Operator.and, childs: identifiers('c', 'd') },
] }],
['2/3 a b c', { operator: language_1.Operator.xOfy, operatorParameter: { x: 2, y: 3 }, childs: __spread(identifiers('a', 'b', 'c')) }],
['2/3 a b (c AND d)', { operator: language_1.Operator.xOfy, operatorParameter: { x: 2, y: 3 }, childs: __spread(identifiers('a', 'b'), [
{ operator: language_1.Operator.and, childs: __spread(identifiers('c', 'd')) },
]) }],
['((a AND b) OR (c AND d)) OR e', { operator: language_1.Operator.or, childs: __spread([
{ operator: language_1.Operator.or, childs: [
{ operator: language_1.Operator.and, childs: __spread(identifiers('a', 'b')) },
{ operator: language_1.Operator.and, childs: __spread(identifiers('c', 'd')) }
] }
], identifiers('e')) }],
['2/3 a b (1/2 c d)', { operator: language_1.Operator.xOfy, operatorParameter: { x: 2, y: 3 }, childs: __spread(identifiers('a', 'b'), [
{ operator: language_1.Operator.xOfy, operatorParameter: { x: 1, y: 2 }, childs: __spread(identifiers('c', 'd')) }
]) }],
['1/3 b ((3/4 c d e f) AND (g OR h))', { operator: language_1.Operator.xOfy, operatorParameter: { x: 1, y: 3 }, childs: __spread(identifiers('b'), [
{ operator: language_1.Operator.and, childs: [
{ operator: language_1.Operator.xOfy, operatorParameter: { x: 3, y: 4 }, childs: identifiers('c', 'd', 'e', 'f') },
{ operator: language_1.Operator.or, childs: identifiers('g', 'h') }
] }
]) }],
["a AND NOT b", { operator: language_1.Operator.and, childs: __spread(identifiers('a'), [
{ operator: language_1.Operator.not, childs: __spread(identifiers('b')) }
]) }],
// Legacy Compatibility
["a AND NOT (b OR c)", { operator: language_1.Operator.and, childs: __spread(identifiers('a'), [
{ operator: language_1.Operator.not, childs: [
{ operator: language_1.Operator.or, childs: __spread(identifiers('b', 'c')) }
] }
]) }],
["a OR NOT (b OR NOT c)", { operator: language_1.Operator.or, childs: __spread(identifiers('a'), [
{ operator: language_1.Operator.not, childs: [
{ operator: language_1.Operator.or, childs: __spread(identifiers('b'), [
{ operator: language_1.Operator.not, childs: __spread(identifiers('c')) }
]) }
] }
]) }],
['a OR b OR c', { operator: language_1.Operator.or, childs: __spread([
{ operator: language_1.Operator.or, childs: __spread(identifiers('a', 'b')) }
], identifiers('c')) }],
['a AND b AND c', { operator: language_1.Operator.and, childs: __spread([
{ operator: language_1.Operator.and, childs: __spread(identifiers('a', 'b')) }
], identifiers('c')) }],
// Highly questionable logic, legacy compatibility
['a AND b OR c', { operator: language_1.Operator.or, childs: __spread([
{ operator: language_1.Operator.and, childs: __spread(identifiers('a', 'b')) }
], identifiers('c')) }],
].forEach(execute(tokenize, p2_syntaxAnalyzer_1.default.parse));
});
describe('validate expression', function () {
describe('Phase 5: Optimization', function () {
[
['', [], true],
['a', ['a'], true],
['a', ['b'], true],
['NOT a', ['a'], true],
['NOT a', ['b'], true],
['NOT a', [], true],
['NOT (a OR b)', ['a'], true],
['a AND NOT (b OR c)', ['a'], true],
['a AND NOT (b OR c)', ['a', 'b'], true],
['a AND b', ['a'], true],
['(a AND b)', ['a'], true],
['a AND b', ['b'], true],
['a AND b', ['a', 'b'], true],
['(a AND b)', ['a', 'b'], true],
['(a AND b) OR c', ['c'], true],
['(a AND b) OR c', ['a', 'b'], true],
['(a AND b) OR (c AND d)', ['a', 'c'], true],
['(a AND b) OR (c AND d)', ['a', 'b'], true],
['((a AND b) OR (c AND d)) OR e', ['e'], true],
['2/3 a b c', ['a', 'b'], true],
['2/3 a (x OR y) c', ['a', 'x'], true],
['(2/3 a b c)', ['a'], true],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'e', 'g'], true],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'b', 'h'], true],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'f'], true],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'f', 'g'], true],
['2/3 a b ((3/4 c d e f) OR (g OR h))', ['a', 'c', 'g'], true],
['(2/3 a b c) AND (d OR e)', ['a'], true],
['(a AND b) OR (c AND d) OR (2/3 a b c)', ['b', 'c'], true],
['a OR', null, false],
['a AND', null, false],
['a AND b OR', null, false],
['2/3 a b', null, false],
['x/y a b', null, false],
['complete garbage', null, false],
['(a AND b) OR (c AND d', null, false],
['() AND () OR (())', null, false]
].forEach(executeSpec(_1.validate));
// Unnecessary nesting
['(a)', { operator: language_1.Operator.id, childs: tokenize('a') }],
['((a))', { operator: language_1.Operator.id, childs: tokenize('a') }],
//['(a) AND (b)', { operator: Op.and, childs: identifiers('a', 'b') }],
// Double Negation
['NOT (NOT a)', { operator: language_1.Operator.id, childs: identifiers('a') }],
['NOT (NOT (NOT a)', { operator: language_1.Operator.not, childs: identifiers('a') }],
['NOT (NOT (NOT (NOT a)', { operator: language_1.Operator.id, childs: identifiers('a') }],
// Idempotency Law
['a AND a', { operator: language_1.Operator.id, childs: identifiers('a') }],
['a OR a', { operator: language_1.Operator.id, childs: identifiers('a') }],
// De'Morgan Law
['NOT (a AND b)', { operator: language_1.Operator.or, childs: [
{ operator: language_1.Operator.not, childs: identifiers('a') },
{ operator: language_1.Operator.not, childs: identifiers('b') },
]
}],
['NOT (a OR b)', { operator: language_1.Operator.and, childs: [
{ operator: language_1.Operator.not, childs: identifiers('a') },
{ operator: language_1.Operator.not, childs: identifiers('b') },
]
}]
].forEach(execute(tokenize, p2_syntaxAnalyzer_1.default.parse, p5_optimizer_1.default.optimize));
});
describe('reduce to missing states', function () {
describe('Phase 5 - optimize all true expressions away', function () {
[
['', [], []],
['', ['a'], []],
['a', ['a'], []],
['a', [], ['a']],
['a', ['a', 'b'], []],
['a OR b', ['a'], []],
['a OR b', ['b'], []],
['NOT a', ['a'], ['NOT', 'a']],
['NOT a', ['b'], []],
['NOT a', [], []],
// not supported yet
// ['NOT (a OR b)', ['a'], ['NOT', ['a', 'OR', 'b']]],
// ['NOT (a AND b)', ['a'], ['NOT', ['b']]],
['a OR b', [], ['a', 'OR', 'b']],
['a OR b OR c', [], ['a', 'OR', ['b', 'OR', 'c']]],
['a OR b OR c', ['a'], []],
['a OR b OR c', ['b'], []],
['a OR b OR c', ['c'], []],
['a AND b', [], ['a', 'AND', 'b']],
['a AND b', ['a'], ['b']],
['a AND b', ['b'], ['a']],
['a AND b', ['a', 'b'], []],
['(a AND b) OR c', [], [['a', 'AND', 'b'], 'OR', 'c']],
['(a AND b) OR c', ['a', 'b'], []],
['(a AND b) OR c', ['a'], ['b', 'OR', 'c']],
['(a AND b) OR c', ['c'], []],
['(a AND b) OR c', ['a', 'c'], []],
['(a AND b) OR c', ['b', 'c'], []],
['a AND b OR c', ['a', 'c'], []],
['(a AND b) OR (c AND d)', ['a', 'c'], ['b', 'OR', 'd']],
['(a AND b) OR (c AND d) OR e', ['a', 'c'], ['b', 'OR', ['d', 'OR', 'e']]],
['(a AND b) OR (c AND d)', ['a', 'b'], []],
['2/3 a b c', ['a'], ['1/2', 'b', 'c']],
['2/3 a b c', ['a', 'b'], []],
['2/3 a b c', ['a', 'c'], []],
['2/3 a b c', ['b', 'c'], []],
['2/3 a (x OR y) c', ['a', 'x'], []],
['2/3 a (x OR y) c', ['a'], ['1/2', ['x', 'OR', 'y'], 'c']],
['3/3 a (x OR y) c', [], ['3/3', 'a', ['x', 'OR', 'y'], 'c']],
['3/3 a (x OR y) c', ['a'], ['2/2', ['x', 'OR', 'y'], 'c']],
['3/3 a (x OR y) c', ['a', 'c'], ['1/1', ['x', 'OR', 'y']]],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a'], ['1/2', 'b', [['3/4', 'c', 'd', 'e', 'f'], 'AND', ['g', 'OR', 'h']]]],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'b'], []],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd'], ['1/2', 'b', [['1/2', 'e', 'f'], 'AND', ['g', 'OR', 'h']]]],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'g'], ['1/2', 'b', ['1/2', 'e', 'f']]],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'f', 'g'], []],
["", [], ""],
["", ["a"], ""],
["a", ["a"], ""],
["a", [], "a"],
["a", ["a", "b"], ""],
["a OR b", ["a"], ""],
["a OR b", ["b"], ""],
["a OR b", [], "a OR b"],
["NOT a", ["a"], "NOT a"],
["NOT a", ["b"], ""],
["NOT a", [], ""],
["NOT (a OR b)", ["a"], "NOT a"],
["NOT (a AND b)", ["a"], ""],
["NOT (a AND b)", ["a", 'b'], "(NOT a) OR (NOT b)"],
['a OR b', [], 'a OR b'],
['a OR b OR c', [], '(a OR b) OR c'],
['a OR b OR c', ['a'], ''],
['a OR b OR c', ['b'], ''],
['a OR b OR c', ['c'], ''],
["a AND b", [], "a AND b"],
["a AND b", ["a"], "b"],
['a AND b', ['b'], 'a'],
['a AND b', ['a', 'b'], ''],
['(a AND b) OR c', [], '(a AND b) OR c'],
['(a AND b) OR c', ['a', 'b'], ''],
['(a AND b) OR c', ['a'], 'b OR c'],
['(a AND b) OR c', ['c'], ''],
['(a AND b) OR c', ['a', 'c'], ''],
['(a AND b) OR c', ['b', 'c'], ''],
['a AND b OR c', ['a', 'c'], ''],
['(a AND b) OR (c AND d)', ['a', 'c'], 'b OR d'],
['(a AND b) OR (c AND d) OR e', ['a', 'c'], '(b OR d) OR e'],
['(a AND b) OR (c AND d)', ['a', 'b'], ''],
['2/3 a b c', ['a'], '1/2 b c'],
['2/3 a b c', ['a', 'b'], ''],
['2/3 a b c', ['a', 'c'], ''],
['2/3 a b c', ['b', 'c'], ''],
['2/3 a (x OR y) c', ['a', 'x'], ''],
['2/3 a (x OR y) c', ['a'], '1/2 (x OR y) c'],
['3/3 a b c', ['a', 'b'], 'c'],
['3/3 a (x OR y) c', [], '3/3 a (x OR y) c'],
['3/3 a (x OR y) c', ['a'], '2/2 (x OR y) c'],
['3/3 a (x OR y) c', ['a', 'c'], 'x OR y'],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a'], '1/2 b ((3/4 c d e f) AND (g OR h))'],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'b'], ''],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd'], '1/2 b ((1/2 e f) AND (g OR h))'],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'g'], '1/2 b (1/2 e f)'],
['2/3 a b ((3/4 c d e f) AND (g OR h))', ['a', 'c', 'd', 'f', 'g'], ''],
// same node in several places
['2/3 a a c', ['a'], []],
['2/3 a x y', ['a'], ['1/2', 'x', 'y']],
['2/3 x a y', ['a'], ['1/2', 'x', 'y']],
['2/3 x y a', ['a'], ['1/2', 'x', 'y']],
['(c AND d) OR (2/3 x y a)', ['c', 'a'], ['d', 'OR', ['1/2', 'x', 'y']]],
['a OR a OR a', ['a'], []],
['a AND a AND a', ['a'], []],
['2/3 a (x OR y) a', ['a'], []],
['2/3 a (x OR a) y', ['a'], []],
['2/3 a b ((3/4 a d e f) AND (a OR h))', ['a'], ['1/2', 'b', ['2/3', 'd', 'e', 'f']]],
].forEach(executeSpec(_1.reduce));
['2/3 a a c', ['a'], ''],
['2/3 a x y', ['a'], '1/2 x y'],
['2/3 x a y', ['a'], '1/2 x y'],
['2/3 x y a', ['a'], '1/2 x y'],
['(c AND d) OR (2/3 x y a)', ['c', 'a'], 'd OR (1/2 x y)'],
['a OR a OR a', ['a'], ''],
['a AND a AND a', ['a'], ''],
['2/3 a (x OR y) a', ['a'], ''],
['2/3 a (x OR a) y', ['a'], ''],
['2/3 a b ((3/4 a d e f) AND (a OR h))', ['a'], '1/2 b (2/3 d e f)'],
].forEach(execute(Trump));
});
describe('Runtime - with symbol table input', function () {
[
["a", { a: { value: true } }, true],
["a", { a: { value: false } }, false],
["NOT a", { a: { value: true } }, false],
["NOT a", { a: { value: false } }, true],
["a AND b", { a: { value: true }, b: { value: false } }, false],
["a AND b", { a: { value: false }, b: { value: true } }, false],
["a AND b", { a: { value: true }, b: { value: true } }, true],
["a AND b", { a: { value: false }, b: { value: false } }, false],
["a AND b", { a: { value: true }, b: { value: undefined } }, false],
["a OR b", { a: { value: true }, b: { value: false } }, true],
["a OR b", { a: { value: false }, b: { value: true } }, true],
["a OR b", { a: { value: true }, b: { value: true } }, true],
["a OR b", { a: { value: false }, b: { value: false } }, false],
["NOT (a OR b)", { a: { value: true }, b: { value: false } }, false],
["a AND (b OR c)", { a: { value: true }, b: { value: true }, c: { value: false } }, true],
['2/3 a b c', { a: { value: true }, b: { value: true }, c: { value: true } }, true],
['2/3 a b c', { a: { value: true }, b: { value: true }, c: { value: false } }, true],
['2/3 a b c', { a: { value: true }, b: { value: false }, c: { value: false } }, false],
['2/3 a b c', { a: { value: false }, b: { value: false }, c: { value: false } }, false],
['2/3 a b (c OR d)', { a: { value: false }, b: { value: true }, c: { value: false }, d: { value: true } }, true],
].forEach(execute(tokenize, p2_syntaxAnalyzer_1.default.parse, p5_optimizer_1.default.optimize, runtime_1.default.run));
});
describe("Runtime - with truth array input", function () {
[
["", [], true],
["a", ["a"], true],
["a", ["b"], false],
["NOT a", ["a"], false],
["NOT a", ["b"], true],
["NOT a", [], true],
["NOT (a OR b)", ["a"], false],
["NOT (a AND b)", ["a"], true],
["a AND NOT (b OR c)", ["a"], true],
["a AND NOT (b OR c)", ["a", "b"], false],
["a AND b", ["a"], false],
["(a AND b)", ["a"], false],
["a AND b", ["b"], false],
["a AND b", ["a", "b"], true],
["(a AND b)", ["a", "b"], true],
["(a AND b) OR c", ["c"], true],
["(a AND b) OR c", ["a", "b"], true],
["(a AND b) OR (c AND d)", ["a", "c"], false],
["(a AND b) OR (c AND d)", ["a", "b"], true],
["((a AND b) OR (c AND d)) OR e", ["e"], true],
["2/3 a b c", ["a", "b"], true],
["2/3 a b c", ["a"], false],
["2/3 a x y", ["a"], false],
["2/3 x a y", ["a"], false],
["2/3 x y a", ["a"], false],
["(c AND d) OR (2/3 x y a)", ["y"], false],
[
"(RKARR1 AND GKBRSTART1) OR (2/3 GKBRFORT GKBREND JVPST02)",
["GKBREND"],
false,
],
["2/3 a (x OR y) c", ["a", "x"], true],
["(2/3 a b c)", ["a"], false],
[
"2/3 a b ((3/4 c d e f) AND (g OR h))",
["a", "c", "d", "e", "g"],
true,
],
["2/3 a b ((3/4 c d e f) AND (g OR h))", ["a", "b", "h"], true],
["2/3 a b ((3/4 c d e f) AND (g OR h))", ["a", "c", "d", "f"], false],
[
"2/3 a b ((3/4 c d e f) AND (g OR h))",
["a", "c", "d", "f", "g"],
true,
],
["2/3 a b ((3/4 c d e f) OR (g OR h))", ["a", "c", "g"], true],
["(2/3 a b c) AND (d OR e)", ["a"], false],
["(a AND b) OR ((c AND d) OR (2/3 a b c))", ["b", "c"], true],
].forEach(execute(runtime_1.default.runWithTruthArray));
});
describe('Source Generator', function () {
[
["", ""],
["a", "a"],
["a AND b", "a AND b"],
["a OR (b AND (b AND c))", "a OR (b AND (b AND c))"],
["2/3 a b c", "2/3 a b c"],
["2/3 a b (c OR d)", "2/3 a b (c OR d)"],
["2/3 a b ((3/4 c d e f) OR (g OR h))", '2/3 a b ((3/4 c d e f) OR (g OR h))'],
['a AND b AND c', '(a AND b) AND c'],
['NOT a', 'NOT a'],
['NOT (a AND b)', '(NOT a) OR (NOT b)']
].forEach(execute(tokenize, p2_syntaxAnalyzer_1.default.parse, p5_optimizer_1.default.optimize, sourceGenerator_1.default));
});
//# sourceMappingURL=lib.spec.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"lib.spec.js","sourceRoot":"","sources":["../lib.spec.ts"],"names":[],"mappings":";AAAA,2BAA2B;;AAE3B,6BAA8B;AAC9B,sBAAgE;AAChE,6CAA2C;AAC3C,oDAA+C;AAC/C,sDAAiD;AAEjD,IAAM,WAAW,GAAG,UAAA,YAAY,IAAI,OAAA,UAAC,SAAS;IACnC,IAAA,yBAAU,EAAE,oBAAK,EAAE,6BAAc,CAAc;IACtD,EAAE,CAAC,YAAU,YAAY,CAAC,IAAI,WAAK,UAAU,cAAQ,KAAK,eAAU,cAAgB,EAAE;QAClF,aAAM,CAAC,YAAY,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACP,CAAC,EALmC,CAKnC,CAAC;AAEF,QAAQ,CAAC,cAAc,EAAE;IACrB;QACI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,+BAA+B,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1H,CAAC,mBAAmB,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACzE,CAAC,oCAAoC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;KAC7I,CAAC,OAAO,CAAC,WAAW,CAAC,kBAAQ,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,aAAa,EAAE;IACpB;QACI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACxD,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1F,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACpJ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QACnI,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAClK,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;KAC3L,CAAC,OAAO,CAAC,WAAW,CAAC,mBAAS,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE;IACnB;QACI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QACjC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;QACnC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;QACnC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;QAEpC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QAChC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QACjC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QACjC,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;QAEnC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QAC9C,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;QAC/C,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC;KACpD,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAQ,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,6BAA6B,EAAE;IACpC;QACI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;QACd,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAClB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QACnB,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QACvB,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACtB,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC;QACnB,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC9B,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACnC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC;QACzC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QACzB,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC3B,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QACzB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC7B,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC/B,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAC/B,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACpC,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC;QAC7C,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC5C,CAAC,+BAA+B,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAC9C,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC/B,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC3B,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC3B,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC3B,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC3B,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC1C,CAAC,2DAA2D,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,CAAC;QACjF,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACtC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC7B,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACzE,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC/D,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC;QACrE,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACzE,CAAC,qCAAqC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC9D,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC;QAC1C,CAAC,uCAAuC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;KAC9D,CAAC,OAAO,CAAC,WAAW,CAAC,YAAS,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qCAAqC,EAAE;IAC5C;QACI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC,sBAAsB,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC,yBAAyB,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;QACd,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QACrB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;KACnB,CAAC,OAAO,CAAC,WAAW,CAAC,iBAAc,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,qBAAqB,EAAE;IAC5B;QACI,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC;QACd,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAClB,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAClB,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACtB,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACtB,CAAC,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC;QACnB,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAC7B,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACnC,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACxC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACxB,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAC1B,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACxB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC7B,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC/B,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAC/B,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACpC,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC5C,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC5C,CAAC,+BAA+B,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAC9C,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC/B,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACtC,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QAC5B,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACzE,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC/D,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACpE,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QACzE,CAAC,qCAAqC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC9D,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;QACzC,CAAC,uCAAuC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC;QAC3D,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;QACrB,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC;QACtB,CAAC,YAAY,EAAE,IAAI,EAAE,KAAK,CAAC;QAC3B,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC;QACxB,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC;QACxB,CAAC,kBAAkB,EAAE,IAAI,EAAE,KAAK,CAAC;QACjC,CAAC,uBAAuB,EAAE,IAAI,EAAE,KAAK,CAAC;QACtC,CAAC,mBAAmB,EAAE,IAAI,EAAE,KAAK,CAAC;KACrC,CAAC,OAAO,CAAC,WAAW,CAAC,WAAQ,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,0BAA0B,EAAE;IACjC;QACI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACf,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAChB,CAAC,GAAG,EAAE,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QACrB,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACrB,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACrB,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACpB,CAAC,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC;QACjB,oBAAoB;QACpB,sDAAsD;QACtD,4CAA4C;QAC5C,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAEhC,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAClD,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAE1B,CAAC,SAAS,EAAE,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAE3B,CAAC,gBAAgB,EAAE,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC7B,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAElC,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAChC,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACxD,CAAC,6BAA6B,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1E,CAAC,wBAAwB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAE1C,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAC7B,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAC7B,CAAC,WAAW,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAE7B,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QACpC,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAE3D,CAAC,kBAAkB,EAAE,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC7D,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;QAC3D,CAAC,kBAAkB,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;QAE3D,CAAC,sCAAsC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrH,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QACxD,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QACrH,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC/F,CAAC,sCAAsC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QAEvE,8BAA8B;QAC9B,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACxB,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC,0BAA0B,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QACxE,CAAC,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC1B,CAAC,eAAe,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC5B,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC/B,CAAC,kBAAkB,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QAC/B,CAAC,sCAAsC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;KAExF,CAAC,OAAO,CAAC,WAAW,CAAC,SAAM,CAAC,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC"}
{"version":3,"file":"lib.spec.js","sourceRoot":"","sources":["../lib.spec.ts"],"names":[],"mappings":"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"}

@@ -12,9 +12,9 @@ "use strict";

default: function () { return []; },
term: function (operand) { return isTrue(operand) ? [] : operand; }
term: function (operand) { return (isTrue(operand) ? [] : operand); }
},
_a[language_1.operatorSymbols.not] = function () { return function (right) {
return (isTrue(right) ? [language_1.operatorSymbols.not, right] : []);
return isTrue(right) ? [language_1.operatorSymbols.not, right] : [];
}; },
_a[language_1.operatorSymbols.or] = function (left) { return function (right) {
return (isTrue(left) || isTrue(right) ? [] : [left, language_1.operatorSymbols.or, right]);
return isTrue(left) || isTrue(right) ? [] : [left, language_1.operatorSymbols.or, right];
}; },

@@ -36,4 +36,7 @@ _a[language_1.operatorSymbols.and] = function (left) { return function (right) {

// so a updated expression with the current remaining requirements can be constructed
return numFulfilled >= x ?
[] : [x - numFulfilled + "/" + (y - numFulfilled)].concat(right.filter(function (op) { return !isTrue(op); }));
return numFulfilled >= x
? []
: [
x - numFulfilled + "/" + (y - numFulfilled)
].concat(right.filter(function (op) { return !isTrue(op); }));
}; },

@@ -40,0 +43,0 @@ _a);

@@ -1,1 +0,1 @@

{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../../src/reduce.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"reduce.js","sourceRoot":"","sources":["../../src/reduce.ts"],"names":[],"mappings":"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"}
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.matches = exports.pipe = exports.mapRecursive = exports.flatten = void 0;
var __flatten = function (_a, arr) {

@@ -4,0 +5,0 @@ var result = _a.result, allArrays = _a.allArrays;

@@ -1,1 +0,1 @@

{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,IAAM,SAAS,GAAG,UAAC,EAAqB,EAAE,GAAG;QAAxB,kBAAM,EAAE,wBAAS;IAClC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,CAAC;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACvB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5C;SAAM;QACH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACvB;IACD,OAAO,SAAS,CAAC,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF;;;;GAIG;AACH,IAAM,OAAO,GAAG,UAAA,GAAG,IAAI,OAAA,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAhD,CAAgD,CAAC;AA2BpE,0BAAO;AAzBX,IAAM,cAAc,GAAG,UAAA,MAAM,IAAI,OAAA,SAAS,gBAAgB,CAAC,MAAM,EAAE,KAAK;IACpE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;KAC3C;SAAM;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrB;IACD,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,EATgC,CAShC,CAAC;AAEF;;;;;;GAMG;AACH,IAAM,YAAY,GAAG,UAAA,MAAM,IAAI,OAAA,UAAA,KAAK,IAAI,OAAA,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAjC,CAAiC,EAA1C,CAA0C,CAAC;AAQtE,oCAAY;AANhB,IAAM,IAAI,GAAG;IAAC,mBAAY;SAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;QAAZ,8BAAY;;IAAK,OAAA,UAAA,GAAG,IAAI,OAAA,SAAS,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,GAAG,CAAC,GAAG,CAAC,EAAR,CAAQ,EAAE,GAAG,CAAC,EAA7C,CAA6C;AAApD,CAAoD,CAAC;AAOhF,oBAAI;AALR,IAAM,OAAO,GAAG,UAAC,KAAK,IAAK,OAAA,UAAC,GAAG,IAAc,OAAA,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAA7C,CAA6C,EAA/D,CAA+D,CAAC;AAMvF,0BAAO"}
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../utils.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;AAEb,IAAM,SAAS,GAAG,UAAC,EAAqB,EAAE,GAAG;QAAxB,MAAM,YAAA,EAAE,SAAS,eAAA;IAClC,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,CAAC;IAC3D,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;QACvB,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,SAAS,CAAC,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5C;SAAM;QACH,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;KACvB;IACD,OAAO,SAAS,CAAC,EAAE,MAAM,QAAA,EAAE,SAAS,WAAA,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC,CAAC;AAEF;;;;GAIG;AACH,IAAM,OAAO,GAAG,UAAA,GAAG,IAAI,OAAA,SAAS,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,CAAC,EAAhD,CAAgD,CAAC;AA2BpE,0BAAO;AAzBX,IAAM,cAAc,GAAG,UAAA,MAAM,IAAI,OAAA,SAAS,gBAAgB,CAAC,MAAM,EAAE,KAAK;IACpE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,IAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACrB,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;KAC3C;SAAM;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;KACrB;IACD,OAAO,gBAAgB,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,EATgC,CAShC,CAAC;AAEF;;;;;;GAMG;AACH,IAAM,YAAY,GAAG,UAAA,MAAM,IAAI,OAAA,UAAA,KAAK,IAAI,OAAA,cAAc,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,EAAjC,CAAiC,EAA1C,CAA0C,CAAC;AAQtE,oCAAY;AANhB,IAAM,IAAI,GAAG;IAAC,mBAAY;SAAZ,UAAY,EAAZ,qBAAY,EAAZ,IAAY;QAAZ,8BAAY;;IAAK,OAAA,UAAA,GAAG,IAAI,OAAA,SAAS,CAAC,MAAM,CAAC,UAAC,GAAG,EAAE,GAAG,IAAK,OAAA,GAAG,CAAC,GAAG,CAAC,EAAR,CAAQ,EAAE,GAAG,CAAC,EAA7C,CAA6C;AAApD,CAAoD,CAAC;AAOhF,oBAAI;AALR,IAAM,OAAO,GAAG,UAAC,KAAK,IAAK,OAAA,UAAC,GAAG,IAAc,OAAA,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAA7C,CAA6C,EAA/D,CAA+D,CAAC;AAMvF,0BAAO"}
{
"name": "@trigo/bool-expressions",
"version": "0.1.2",
"version": "4.0.0",
"description": "Compiles, calculates and reduces boolean expressions",

@@ -14,3 +14,3 @@ "main": "lib/index.js",

"test": "mocha --require ts-node/register *spec.ts",
"test-watch": "mocha --require ts-node/register --watch --watch-extensions ts *spec.ts"
"test-watch": "mocha -R dot --require ts-node/register --watch --watch-extensions ts *spec.ts"
},

@@ -25,3 +25,3 @@ "files": [

"author": "",
"license": "ISC",
"license": "Apache 2.0",
"bugs": {

@@ -32,11 +32,12 @@ "url": "https://github.com/trigo-at/bool-expressions/issues"

"devDependencies": {
"@types/chai": "^4.1.7",
"@types/mocha": "^5.2.5",
"chai": "^4.2.0",
"eslint-config-trigo": "^6.2.1",
"mocha": "^5.2.0",
"@types/chai": "^4.2.22",
"@types/mocha": "^5.2.7",
"chai": "^4.3.4",
"chai-exclude": "^2.1.0",
"eslint-config-trigo": "^6.3.11",
"mocha": "^9.1.3",
"ts-node": "^7.0.1",
"tslint": "^5.12.1",
"typescript": "^3.2.4"
"tslint": "^5.20.1",
"typescript": "^3.9.10"
}
}

@@ -1,1 +0,3 @@

# spike-bool-expressions
# Boolean Expression Compiler
v4