chore: improved schema
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { createToken, Lexer, EmbeddedActionsParser } from 'chevrotain';
|
||||
import type { ZodType } from 'zod';
|
||||
|
||||
import type { QueryFilter, QueryCondition } from './query-parser.schemas.js';
|
||||
import { type QueryFilter, type QueryCondition, queryFilterSchema } from './query-parser.schemas.js';
|
||||
|
||||
// ----------------- Lexer -----------------
|
||||
|
||||
@@ -426,7 +427,10 @@ class QueryParserParser extends EmbeddedActionsParser {
|
||||
return this.SUBRULE(this.#orExpression);
|
||||
});
|
||||
|
||||
public parse = (input: string): QueryFilter => {
|
||||
public parse = <T extends typeof queryFilterSchema>(
|
||||
input: string,
|
||||
schema: T = queryFilterSchema as unknown as T,
|
||||
): QueryFilter => {
|
||||
const lexResult = QueryLexer.tokenize(input);
|
||||
|
||||
if (lexResult.errors.length > 0) {
|
||||
@@ -450,7 +454,7 @@ class QueryParserParser extends EmbeddedActionsParser {
|
||||
throw new Error(`Parse error: ${error.message}`);
|
||||
}
|
||||
|
||||
return result;
|
||||
return schema.parse(result);
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user