@lightdash/common 0.2354.0 → 0.2355.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/.tsbuildinfo +1 -1
- package/dist/cjs/types/filterGrammar.d.ts +1 -1
- package/dist/cjs/types/filterGrammar.d.ts.map +1 -1
- package/dist/cjs/types/filterGrammar.js +4 -4
- package/dist/cjs/types/filterGrammar.js.map +1 -1
- package/dist/esm/.tsbuildinfo +1 -1
- package/dist/esm/types/filterGrammar.d.ts +1 -1
- package/dist/esm/types/filterGrammar.d.ts.map +1 -1
- package/dist/esm/types/filterGrammar.js +4 -4
- package/dist/esm/types/filterGrammar.js.map +1 -1
- package/dist/types/.tsbuildinfo +1 -1
- package/dist/types/types/filterGrammar.d.ts +1 -1
- package/dist/types/types/filterGrammar.d.ts.map +1 -1
- package/dist/types/types/filterGrammar.js +4 -4
- package/dist/types/types/filterGrammar.js.map +1 -1
- package/package.json +1 -1
|
@@ -12,7 +12,7 @@ export type ParsedFilter = {
|
|
|
12
12
|
date_interval?: string;
|
|
13
13
|
};
|
|
14
14
|
declare const filterGrammar = "ROOT\n= EXPRESSION / EMPTY_STRING\nEMPTY_STRING = '' {\n return {\n type: 'equals',\n values: [],\n is: true,\n }\n }\n\nEXPRESSION\n= BETWEEN_DATE / BETWEEN_NUMERICAL / NUMERICAL / DATE_RESTRICTION / LIST / TERM\n\nBETWEEN_DATE = SPACE_SYMBOL* (\"between\"i / \"BETWEEN\") SPACE_SYMBOL+ min:DATE_STRING SPACE_SYMBOL+ (\"and\"i / \"AND\") SPACE_SYMBOL+ max:DATE_STRING {\n return {\n type: 'inBetween',\n values: [min, max],\n is: true\n }\n }\n\nBETWEEN_NUMERICAL = SPACE_SYMBOL* (\"between\"i / \"BETWEEN\") SPACE_SYMBOL+ min:NUMBER SPACE_SYMBOL+ (\"and\"i / \"AND\") SPACE_SYMBOL+ max:NUMBER {\n return {\n type: 'inBetween',\n values: [min, max],\n is: true\n }\n }\n\nNUMERICAL = SPACE_SYMBOL* operator:OPERATOR SPACE_SYMBOL* value:NUMBER {\n return {\n type: operator,\n values: [value]\n }\n }\n\nOPERATOR = '>=' / '<=' / '>' / '<'\n\nDATE_STRING\n = quotation_mark date:ISO_DATE quotation_mark { return date }\n / ISO_DATE\n\nISO_DATE\n = year:YEAR \"-\" month:MONTH \"-\" day:DAY time:(\"T\" TIME \"Z\"?)? {\n return text();\n }\n\nYEAR = [0-9][0-9][0-9][0-9]\nMONTH = (\"0\" [1-9]) / (\"1\" [0-2])\nDAY = (\"0\" [1-9]) / ([1-2] [0-9]) / (\"3\" [0-1])\nTIME = [0-9][0-9] \":\" [0-9][0-9] \":\" [0-9][0-9] (\".\" [0-9]+)?\n\nDATE_RESTRICTION = SPACE_SYMBOL* operator:DATE_OPERATOR SPACE_SYMBOL* value:NUMBER SPACE_SYMBOL* interval:DATE_INTERVAL {\n return {\n type: operator,\n values: [value],\n date_interval: interval\n }\n }\n\nDATE_OPERATOR = 'inThePast' / 'inTheNext'\nDATE_INTERVAL = 'milliseconds' / 'seconds' / 'minutes' / 'hours' / 'days' / 'weeks' / 'months' / 'years'\n\nNUMBER\n = '-'? FLOAT ([Ee] [+-]? INTEGER)?\n { return Number(text()) }\n\nFLOAT\n = INTEGER '.'? INTEGER?\n\nINTEGER\n = [0-9]+\n\nLIST\n= left:TERM COMMA right:EXPRESSION {\n return {\n type: ',',\n left: left,\n right: right\n }\n}\n\nTERM\n= not:(NOT)? term:(PCT / KEYWORDS / MATCH) {\n term.is = not ? false : true\n return term\n }\n\n\n\nKEYWORDS = (\"EMPTY\" / \"empty\") {\n return {\n type: 'blank',\n }\n}\n/ (\"NULL\" / \"null\") {\n return {\n type: 'null',\n }\n}\nMATCH\n= quotation_mark sequence:(char / COMMA / UNDERSCORE / CARET)+ quotation_mark {\n return {\n type:'equals',\n values: [sequence.join('')]\n }\n }\n / sequence:(char / COMMA / UNDERSCORE / CARET)+ {\n return {\n type:'equals',\n values: [sequence.join('')]\n }\n}\nPCT\n= CONTAINS / STARTS_WITH / ENDS_WITH\nCONTAINS\n= PCT_SYMBOL value:(char / UNDERSCORE)+ PCT_SYMBOL !(string / PCT_SYMBOL / UNDERSCORE) {\n return {\n type: 'include',\n values: [value.join('')]\n }\n}\nSTARTS_WITH\n= value:(char / UNDERSCORE)+ PCT_SYMBOL !(string / PCT_SYMBOL / UNDERSCORE) {\n return {\n type: 'startsWith',\n values: [value.join('')]\n }\n}\nENDS_WITH\n= PCT_SYMBOL value:(char / UNDERSCORE)+ !(PCT_SYMBOL ) {\nreturn {\n type: 'endsWith',\n values: [value.join('')]\n }\n}\nNOT = '!'\nCOMMA = COMMA_SYMBOL\nraw_string \"string\"\n= str:char_sequence { return str }\nstring \"string\"\n= str:char_sequence { return str ? str.trim():str}\n/* ----- 7. Strings ----- */\nchar_sequence \"string\"\n= quotation_mark chars:(valid_char / escaped_quotation_mark)* quotation_mark {\n return '\"' + chars.join(\"\") + '\"'\n}\n/\nchars:char+ {return chars.join('') }\nchar \"character\"\n= ESCAPE_CARET\n/ escape symbol:SYMBOLS { return symbol}\n/ escape\nsequence:(\n '\"'\n / \"\\\\\"\n / \"/\"\n / \"b\" { return \"\\b\"; }\n / \"f\" { return \"\\f\"; }\n / \"n\" { return \"\\n\"; }\n / \"r\" { return \"\\r\"; }\n / \"t\" { return \"\\t\"; }\n / \"u\" digits:$(HEXDIG HEXDIG HEXDIG HEXDIG) {\n return String.fromCharCode(parseInt(digits, 16));\n }\n)\n{ return sequence }\n/ unescaped\n/ NOT_SYMBOL\n/* Returns a single space for double escaped space at the end, or before a comma\nto reverse escapeWithDoubleLastEscape */\nESCAPE_CARET\n= CARET (SPACE_SYMBOL ! FOLLOWING_SPACE_END / ESCAPED_DOUBLE_SPACE) {\n return \" \"\n}\n/\nCARET symbol:(PCT_SYMBOL / UNDERSCORE / COMMA_SYMBOL / CARET / NOT_SYMBOL) {\n return symbol\n}\nSYMBOLS = PCT_SYMBOL / COMMA_SYMBOL / NOT_SYMBOL / UNDERSCORE / CARET\nPCT_SYMBOL \t\t = '%'\nUNDERSCORE \t\t = '_'\nCOMMA_SYMBOL \t = \",\"\nNOT_SYMBOL\t \t = \"-\"\nSPACE_SYMBOL = \" \"\nFOLLOWING_SPACE_END = \"^ \" (&COMMA_SYMBOL / !.)\nESCAPED_DOUBLE_SPACE = \" ^ \"\nCARET \t \t\t = \"^\"\nescape \t = \"\\\\\"\nescaped_quotation_mark = '\\\\\"'\nquotation_mark \t = '\"'\nunescaped \t = !SYMBOLS char:char_range { return char;}\nvalid_char = char:char_range { return char;}\nchar_range = [^\\0-\\x1F\\x22\\x5C]\nHEXDIG = [0-9a-f]i\n\n\n";
|
|
15
|
-
export declare const parseOperator: (operator: string, isTrue: boolean) => FilterOperator;
|
|
15
|
+
export declare const parseOperator: (operator: string, isTrue: boolean, fieldName: string) => FilterOperator;
|
|
16
16
|
export declare const parseFilters: (rawFilters: Record<string, AnyType>[] | undefined) => MetricFilterRule[];
|
|
17
17
|
export declare const parseModelRequiredFilters: ({ requiredFilters, defaultFilters, }: {
|
|
18
18
|
requiredFilters: RequiredFilter[] | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterGrammar.d.ts","sourceRoot":"","sources":["../../../src/types/filterGrammar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EACH,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC/B,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,cAAc,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG;IACA,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,aAAa,m4JAqMlB,CAAC;AAEF,eAAO,MAAM,aAAa,aACZ,MAAM,UACR,OAAO,
|
|
1
|
+
{"version":3,"file":"filterGrammar.d.ts","sourceRoot":"","sources":["../../../src/types/filterGrammar.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,OAAO,CAAC;AAErC,OAAO,EACH,cAAc,EACd,KAAK,gBAAgB,EACrB,KAAK,uBAAuB,EAC/B,MAAM,UAAU,CAAC;AAElB,MAAM,MAAM,cAAc,GAAG;IACzB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B,GAAG;IACA,QAAQ,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,OAAO,EAAE,CAAC;IAClB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF,QAAA,MAAM,aAAa,m4JAqMlB,CAAC;AAEF,eAAO,MAAM,aAAa,aACZ,MAAM,UACR,OAAO,aACJ,MAAM,KAClB,cAkCF,CAAC;AAEF,eAAO,MAAM,YAAY,eACT,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,KAClD,gBAAgB,EAmElB,CAAC;AAEF,eAAO,MAAM,yBAAyB,yCAGnC;IACC,eAAe,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;IAC9C,cAAc,EAAE,cAAc,EAAE,GAAG,SAAS,CAAC;CAChD,KAAG,uBAAuB,EAuG1B,CAAC;AAEF,eAAe,aAAa,CAAC"}
|
|
@@ -200,7 +200,7 @@ HEXDIG = [0-9a-f]i
|
|
|
200
200
|
|
|
201
201
|
|
|
202
202
|
`;
|
|
203
|
-
export const parseOperator = (operator, isTrue) => {
|
|
203
|
+
export const parseOperator = (operator, isTrue, fieldName) => {
|
|
204
204
|
switch (operator) {
|
|
205
205
|
case FilterOperator.EQUALS:
|
|
206
206
|
return isTrue ? FilterOperator.EQUALS : FilterOperator.NOT_EQUALS;
|
|
@@ -230,7 +230,7 @@ export const parseOperator = (operator, isTrue) => {
|
|
|
230
230
|
case 'NULL':
|
|
231
231
|
return isTrue ? FilterOperator.NULL : FilterOperator.NOT_NULL;
|
|
232
232
|
default:
|
|
233
|
-
throw new UnexpectedServerError(
|
|
233
|
+
throw new UnexpectedServerError(`${fieldName} uses invalid filter operator type ${operator}`);
|
|
234
234
|
}
|
|
235
235
|
};
|
|
236
236
|
export const parseFilters = (rawFilters) => {
|
|
@@ -260,7 +260,7 @@ export const parseFilters = (rawFilters) => {
|
|
|
260
260
|
{
|
|
261
261
|
id: uuidv4(),
|
|
262
262
|
target: { fieldRef: key },
|
|
263
|
-
operator: parseOperator(parsedFilter.type, !!parsedFilter.is),
|
|
263
|
+
operator: parseOperator(parsedFilter.type, !!parsedFilter.is, key),
|
|
264
264
|
values: parsedFilter.values || [1],
|
|
265
265
|
...(parsedFilter.date_interval
|
|
266
266
|
? {
|
|
@@ -350,7 +350,7 @@ export const parseModelRequiredFilters = ({ requiredFilters, defaultFilters, })
|
|
|
350
350
|
{
|
|
351
351
|
id: uuidv4(),
|
|
352
352
|
target: filterTarget,
|
|
353
|
-
operator: parseOperator(parsedFilter.type, !!parsedFilter.is),
|
|
353
|
+
operator: parseOperator(parsedFilter.type, !!parsedFilter.is, key),
|
|
354
354
|
values: parsedFilter.values || [1],
|
|
355
355
|
...(parsedFilter.date_interval
|
|
356
356
|
? {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"filterGrammar.js","sourceRoot":"","sources":["../../../src/types/filterGrammar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,OAAO,CAAC;AAC7B,OAAO,EAAE,EAAE,IAAI,MAAM,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EACH,cAAc,GAGjB,MAAM,UAAU,CAAC;AAelB,MAAM,aAAa,GAAG;;;;eAIP,cAAc,CAAC,MAAM;;;;;;;;;;;iBAWnB,cAAc,CAAC,UAAU;;;;;;;;iBAQzB,cAAc,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBAgFvB,cAAc,CAAC,MAAM;;;;;;gBAMxB,cAAc,CAAC,MAAM;;;;;;;;;eAStB,cAAc,CAAC,OAAO;;;;;;;eAOtB,cAAc,CAAC,WAAW;;;;;;;cAO3B,cAAc,CAAC,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiErC,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG,CACzB,QAAgB,EAChB,MAAe,
|
|
1
|
+
{"version":3,"file":"filterGrammar.js","sourceRoot":"","sources":["../../../src/types/filterGrammar.ts"],"names":[],"mappings":"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"}
|