feat: add exclude event filters

This commit is contained in:
Carl-Gerhard Lindesvärd
2026-02-18 11:47:35 +01:00
parent 03c18b37ec
commit 7e2d93db45
6 changed files with 263 additions and 7 deletions

View File

@@ -186,8 +186,26 @@ function matchEventFilters(
case 'regex': {
return value
.map((val) => stripLeadingAndTrailingSlashes(String(val)))
.some((val) => new RegExp(val).test(propertyValue));
.some((val) => {
try {
return new RegExp(val).test(propertyValue);
} catch {
return false;
}
});
}
case 'isNull':
return propertyValue === '';
case 'isNotNull':
return propertyValue !== '';
case 'gt':
return value.some((val) => Number(propertyValue) > Number(val));
case 'lt':
return value.some((val) => Number(propertyValue) < Number(val));
case 'gte':
return value.some((val) => Number(propertyValue) >= Number(val));
case 'lte':
return value.some((val) => Number(propertyValue) <= Number(val));
default:
return false;
}

View File

@@ -465,9 +465,15 @@ export const zProjectFilterProfileId = z.object({
});
export type IProjectFilterProfileId = z.infer<typeof zProjectFilterProfileId>;
export const zProjectFilterEvent = zChartEvent.extend({
type: z.literal('event'),
});
export type IProjectFilterEvent = z.infer<typeof zProjectFilterEvent>;
export const zProjectFilters = z.discriminatedUnion('type', [
zProjectFilterIp,
zProjectFilterProfileId,
zProjectFilterEvent,
]);
export type IProjectFilters = z.infer<typeof zProjectFilters>;