chore: improved schema

This commit is contained in:
Morten Olsen
2025-12-10 20:45:02 +01:00
parent d02102977a
commit 0646390d52
16 changed files with 920 additions and 118 deletions

View File

@@ -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);
};
}