![]() | Name | Last modified | Size | Description |
---|---|---|---|---|
![]() | Parent Directory | - | ||
![]() | dist/ | 2 years ago | - | |
![]() | LICENSE | 40 years ago | 9.9K | |
![]() | NOTICE | 40 years ago | 584 | |
![]() | README.md | 40 years ago | 2.5K | d7c1522 post receive test [كارل مبارك] |
![]() | package.json | 2 years ago | 3.5K |
This package contains classes and functions that helps to create parsers, conditions AST, interpreters and translators.
npm i @ucast/core
# or
yarn add @ucast/core
# or
pnpm add @ucast/core
Parser is a function that translates conditions from any language into conditions AST. For example, MongoQueryParser
parses MongoQuery into AST which then can be interpreted by JavaScriptInterpreter
that returns a boolean value based on passed in object.
Abstract Syntax Tree of any condition. What is condition?
x > 4
is a condition, x === 4
is a condition as well, { x: { $eq: 4 } }
is a MongoQuery condition.
There are few types of AST nodes that allow us to represent any condition:
x > 4
, x
is a field, 4
is a value and >
is operator$where
operator and in SQL it's EXISTS
).An interpreter is a function that interprets conditions AST in a specific way. For example, it can:
WHERE
statementCombines Parser and Interpreter and returns a factory function:
const parse = (query) => /* to conditions AST */
const interpreter = createInterpreter({ /* condition interpreters */ });
const translate = (query, ...args) => interpreter.bind(null, parse(query));
Want to file a bug, contribute some code, or improve documentation? Excellent! Read up on guidelines for contributing