MCPcopy Create free account
hub / github.com/effect-app/libs / filterStatement

Function filterStatement

packages/infra/src/Store/codeFilter.ts:13–61  ·  view source on GitHub ↗
(x: any, p: FilterR)

Source from the content-addressed store, hash-verified

11const vAsArr = (v: string) => v as unknown as any[]
12
13const 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
63export const codeFilterStatement = <E>(p: FilterR, x: E) => filterStatement(x, p)
64

Callers 1

codeFilterStatementFunction · 0.85

Calls 9

getFunction · 0.90
lowerThanFunction · 0.90
lowerThanExclusiveFunction · 0.90
greaterThanFunction · 0.90
greaterThanExclusiveFunction · 0.90
compareFunction · 0.90
assertUnreachableFunction · 0.90
vAsArrFunction · 0.85
someMethod · 0.80

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…