(x: any, p: FilterR)
| 11 | const vAsArr = (v: string) => v as unknown as any[] |
| 12 | |
| 13 | const filterStatement = (x: any, p: FilterR) => { |
| 14 | const k = get(x, p.path) |
| 15 | switch (p.op) { |
| 16 | case "in": |
| 17 | return p.value.includes(k) |
| 18 | case "notIn": |
| 19 | return !p.value.includes(k) |
| 20 | case "lt": |
| 21 | return lowerThan(k, p.value) |
| 22 | case "lte": |
| 23 | return lowerThanExclusive(k, p.value) |
| 24 | case "gt": |
| 25 | return greaterThan(k, p.value) |
| 26 | case "gte": |
| 27 | return greaterThanExclusive(k, p.value) |
| 28 | case "includes": |
| 29 | return (k as Array<string>).includes(p.value) |
| 30 | case "notIncludes": |
| 31 | return !(k as Array<string>).includes(p.value) |
| 32 | case "includes-any": |
| 33 | return (vAsArr(p.value)).some((_) => (k as Array<string>)?.includes(_)) |
| 34 | case "notIncludes-any": |
| 35 | return !(vAsArr(p.value)).some((_) => (k as Array<string>)?.includes(_)) |
| 36 | case "includes-all": |
| 37 | return (vAsArr(p.value)).every((_) => (k as Array<string>)?.includes(_)) |
| 38 | case "notIncludes-all": |
| 39 | return !(vAsArr(p.value)).every((_) => (k as Array<string>)?.includes(_)) |
| 40 | case "contains": |
| 41 | return (k as string).toLowerCase().includes(p.value.toLowerCase()) |
| 42 | case "endsWith": |
| 43 | return (k as string).toLowerCase().endsWith(p.value.toLowerCase()) |
| 44 | case "startsWith": |
| 45 | return (k as string).toLowerCase().startsWith(p.value.toLowerCase()) |
| 46 | case "notContains": |
| 47 | return !(k as string).toLowerCase().includes(p.value.toLowerCase()) |
| 48 | case "notEndsWith": |
| 49 | return !(k as string).toLowerCase().endsWith(p.value.toLowerCase()) |
| 50 | case "notStartsWith": |
| 51 | return !(k as string).toLowerCase().startsWith(p.value.toLowerCase()) |
| 52 | case "neq": |
| 53 | return !compare(k, p.value) |
| 54 | case "eq": |
| 55 | case undefined: |
| 56 | return compare(k, p.value) |
| 57 | default: { |
| 58 | return assertUnreachable(p.op) |
| 59 | } |
| 60 | } |
| 61 | } |
| 62 | |
| 63 | export const codeFilterStatement = <E>(p: FilterR, x: E) => filterStatement(x, p) |
| 64 |
no test coverage detected
searching dependent graphs…