@sugo/mongodb-queryparams
Version:
Unique Queryparams sintax (Inspired in Elastic Search) that creates queries for MongoDB
98 lines • 2.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Lexer = undefined;
exports.ParserRules = [
{ name: 'SORT$ebnf$1', symbols: [] },
{ name: 'SORT$ebnf$1$subexpression$1', symbols: ['_', 'KEY', 'SEPARATOR', 'DIRECTION'] },
{
name: 'SORT$ebnf$1',
symbols: ['SORT$ebnf$1', 'SORT$ebnf$1$subexpression$1'],
postprocess: function arrpush(d) {
return d[0].concat([d[1]]);
},
},
{
name: 'SORT',
symbols: ['KEY', 'SEPARATOR', 'DIRECTION', 'SORT$ebnf$1'],
postprocess(d) {
function parseSort(raw) {
const [key, dir] = raw.filter((x) => x);
return { [key]: dir };
}
d = d.filter((x) => x);
const result = {};
const first = parseSort([d[0], d[1]]);
const others = d[2].map((o) => {
return parseSort(o);
});
return others.reduce((prev, cur) => Object.assign(prev, cur), first);
},
},
{ name: 'KEY$ebnf$1', symbols: [/[0-9a-zA-Z_$.]/] },
{
name: 'KEY$ebnf$1',
symbols: ['KEY$ebnf$1', /[0-9a-zA-Z_$.]/],
postprocess: function arrpush(d) {
return d[0].concat([d[1]]);
},
},
{
name: 'KEY',
symbols: ['KEY$ebnf$1'],
postprocess(d) {
return d[0].join('');
},
},
{
name: 'DIRECTION$subexpression$1',
symbols: [/[aA]/, /[sS]/, /[cC]/],
postprocess(d) {
return d.join('');
},
},
{
name: 'DIRECTION',
symbols: ['DIRECTION$subexpression$1'],
postprocess() {
return 1;
},
},
{
name: 'DIRECTION$subexpression$2',
symbols: [/[dD]/, /[eE]/, /[sS]/, /[cC]/],
postprocess(d) {
return d.join('');
},
},
{
name: 'DIRECTION',
symbols: ['DIRECTION$subexpression$2'],
postprocess() {
return -1;
},
},
{
name: 'SEPARATOR',
symbols: [{ literal: ':' }],
postprocess() {
return null;
},
},
{ name: '_$ebnf$1', symbols: [{ literal: ' ' }] },
{
name: '_$ebnf$1',
symbols: ['_$ebnf$1', { literal: ' ' }],
postprocess: function arrpush(d) {
return d[0].concat([d[1]]);
},
},
{
name: '_',
symbols: ['_$ebnf$1'],
postprocess() {
return null;
},
},
];
exports.ParserStart = 'SORT';
//# sourceMappingURL=grammar.js.map