From 3b73fb9a0e9ce4f6aac0d445e26d4043d364df33 Mon Sep 17 00:00:00 2001 From: charles Date: Wed, 10 Sep 2025 13:37:51 +0200 Subject: [PATCH 1/2] make regex validation filter optional --- src/modules/QueryBuilder.ts | 2 +- src/types.ts | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/QueryBuilder.ts b/src/modules/QueryBuilder.ts index 7eb74f1..d2ae70e 100644 --- a/src/modules/QueryBuilder.ts +++ b/src/modules/QueryBuilder.ts @@ -116,7 +116,7 @@ export class QueryBuilder { if (typeof filter.value !== 'string') throw new Error(QueryBuilderErrors.NOT_A_STRING) // throw error if regex is invalid - if (!isValidRegex(filter.value)) + if (filter.validateRegex !== false && !isValidRegex(filter.value)) throw new Error(QueryBuilderErrors.INVALID_REGEX) return { [filter.field]: { diff --git a/src/types.ts b/src/types.ts index 5061dab..26b5ff8 100644 --- a/src/types.ts +++ b/src/types.ts @@ -902,6 +902,7 @@ export type EvaluationFilter = { field: string operator: EvaluationQueryOperatorEnum.REGEX value: string + validateRegex?: boolean } export type QueryBuilderQuery = From 225843cdb5fc59f520f0a4f69205bc8decb4eb57 Mon Sep 17 00:00:00 2001 From: charles Date: Thu, 11 Sep 2025 10:48:44 +0200 Subject: [PATCH 2/2] Add test --- src/modules/QueryBuilder.spec.ts | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/modules/QueryBuilder.spec.ts b/src/modules/QueryBuilder.spec.ts index 8cdf90b..f2376b7 100644 --- a/src/modules/QueryBuilder.spec.ts +++ b/src/modules/QueryBuilder.spec.ts @@ -831,6 +831,20 @@ describe('QueryBuilder', () => { }) ).toThrow(QueryBuilderErrors.INVALID_REGEX) }) + it('should not throw an error if regex string is invalid if validateRegex is false', () => { + expect( + builder.build({ + operator: EvaluationQueryOperatorEnum.REGEX, + value: '[', + field: foobar, + validateRegex: false, + }) + ).toEqual({ + foobar: { + [EvaluationQueryOperatorEnum.REGEX]: '[', + }, + }) + }) it('simple test', () => { expect( builder.build({