directus
1/**
2* Result for keys with a function (e.g. `year(date_created)`):
3* - Group 1: Function (`year`)
4* - Group 3: Field (`date_created`)
5*
6* If group 3 is undefined, it is a key without a function.
7*/
8const FILTER_KEY_REGEX = /^([^()]+)(\(([^)]+)\))?/;
9
10/**
11* Parses a filter key, returning its field name and function name (if defined) separately.
12*/
13export function parseFilterKey(key: string) {
14const match = key.match(FILTER_KEY_REGEX);
15
16const fieldNameWithFunction = match?.[3]?.trim();
17const fieldName = fieldNameWithFunction || key.trim();
18let functionName;
19
20if (fieldNameWithFunction) {
21functionName = match?.[1]?.trim();
22
23return { fieldName, functionName };
24}
25
26return { fieldName, functionName };
27}
28