From 1a7983399c94a77267e1b31e84f1de6d47c9488a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kevin=20Gr=C3=BCneberg?= Date: Mon, 27 Oct 2025 21:42:18 +0800 Subject: [PATCH] perf: precompile RegExp Instead of allocating a new object and always creating a new regular expression, we can precompile it. --- packages/core/postgrest-js/src/PostgrestFilterBuilder.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/core/postgrest-js/src/PostgrestFilterBuilder.ts b/packages/core/postgrest-js/src/PostgrestFilterBuilder.ts index 0a6350416..395a8fc1e 100644 --- a/packages/core/postgrest-js/src/PostgrestFilterBuilder.ts +++ b/packages/core/postgrest-js/src/PostgrestFilterBuilder.ts @@ -30,6 +30,8 @@ export type IsStringOperator = Path extends `${string}->>${ ? true : false +const PostgrestReservedCharsRegexp = new RegExp('[,()]') + // Match relationship filters with `table.column` syntax and resolve underlying // column value. If not matched, fallback to generic type. // TODO: Validate the relationship itself ala select-query-parser. Currently we @@ -316,7 +318,7 @@ export default class PostgrestFilterBuilder< .map((s) => { // handle postgrest reserved characters // https://postgrest.org/en/v7.0.0/api.html#reserved-characters - if (typeof s === 'string' && new RegExp('[,()]').test(s)) return `"${s}"` + if (typeof s === 'string' && PostgrestReservedCharsRegexp.test(s)) return `"${s}"` else return `${s}` }) .join(',')