migrate filtering expressions to safer CEL and add a query builder

This commit is contained in:
Athou
2026-02-15 10:20:50 +01:00
parent 08bfcded7f
commit d444a7080d
46 changed files with 862 additions and 590 deletions

View File

@@ -19,6 +19,7 @@
"@mantine/notifications": "^8.3.14",
"@mantine/spotlight": "^8.3.14",
"@monaco-editor/react": "^4.7.0",
"@react-querybuilder/mantine": "^8.14.0",
"@reduxjs/toolkit": "^2.11.2",
"axios": "^1.13.5",
"dayjs": "^1.11.19",
@@ -33,6 +34,7 @@
"react-draggable": "^4.5.0",
"react-icons": "^5.5.0",
"react-infinite-scroller": "^1.2.6",
"react-querybuilder": "^8.14.0",
"react-redux": "^9.2.0",
"react-router-dom": "^7.13.0",
"react-swipeable": "^7.0.2",
@@ -1707,6 +1709,23 @@
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/dates": {
"version": "8.3.14",
"resolved": "https://registry.npmjs.org/@mantine/dates/-/dates-8.3.14.tgz",
"integrity": "sha512-NdStRo2ZQ55MoMF5B9vjhpBpHRDHF1XA9Dkb1kKSdNuLlaFXKlvoaZxj/3LfNPpn7Nqlns78nWt4X8/cgC2YIg==",
"license": "MIT",
"peer": true,
"dependencies": {
"clsx": "^2.1.1"
},
"peerDependencies": {
"@mantine/core": "8.3.14",
"@mantine/hooks": "8.3.14",
"dayjs": ">=1.0.0",
"react": "^18.x || ^19.x",
"react-dom": "^18.x || ^19.x"
}
},
"node_modules/@mantine/form": {
"version": "8.3.14",
"resolved": "https://registry.npmjs.org/@mantine/form/-/form-8.3.14.tgz",
@@ -1813,6 +1832,48 @@
"react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/@react-querybuilder/core": {
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/@react-querybuilder/core/-/core-8.14.0.tgz",
"integrity": "sha512-j1pIY0Yyn/dXu9ZST/DVY7TqRmIO1hY/mZ8653DaeHaDzUF37tOdkm/NQDU9RfM0KXIWsJY5zlvYAR1DypZ+7g==",
"license": "MIT",
"dependencies": {
"@ts-jison/lexer": "0.4.1-alpha.1",
"@ts-jison/parser": "0.4.1-alpha.1",
"immer": "^11.1.3",
"numeric-quantity": "^2.1.0"
},
"peerDependencies": {
"drizzle-orm": ">=0.38.0",
"json-logic-js": ">=2",
"sequelize": ">=6"
},
"peerDependenciesMeta": {
"drizzle-orm": {
"optional": true
},
"json-logic-js": {
"optional": true
},
"sequelize": {
"optional": true
}
}
},
"node_modules/@react-querybuilder/mantine": {
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/@react-querybuilder/mantine/-/mantine-8.14.0.tgz",
"integrity": "sha512-bfoLRBI4x4PbgdlM25f0kPmxz3SjASTGKCE5mZWc5UmfI6P0lbhCXe5t30LJHXvGG+tUeTfloeacaESB9TD9MA==",
"license": "MIT",
"peerDependencies": {
"@mantine/core": ">=7",
"@mantine/dates": ">=7",
"@mantine/hooks": ">=7",
"dayjs": ">=1",
"react": ">=18",
"react-querybuilder": "8.14.0"
}
},
"node_modules/@reduxjs/toolkit": {
"version": "2.11.2",
"resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.11.2.tgz",
@@ -2305,6 +2366,31 @@
"@testing-library/dom": ">=7.21.4"
}
},
"node_modules/@ts-jison/common": {
"version": "0.4.1-alpha.1",
"resolved": "https://registry.npmjs.org/@ts-jison/common/-/common-0.4.1-alpha.1.tgz",
"integrity": "sha512-SDbHzq+UMD+V3ciKVBHwCEgVqSeyQPTCjOsd/ZNTGySUVg4x3EauR9ZcEfdVFAsYRR38XWgDI+spq5LDY46KvQ==",
"license": "MIT"
},
"node_modules/@ts-jison/lexer": {
"version": "0.4.1-alpha.1",
"resolved": "https://registry.npmjs.org/@ts-jison/lexer/-/lexer-0.4.1-alpha.1.tgz",
"integrity": "sha512-5C1Wr+wixAzn2MOFtgy7KbT6N6j9mhmbjAtyvOqZKsikKtNOQj22MM5HxT+ooRexG2NbtxnDSXYdhHR1Lg58ow==",
"license": "MIT",
"dependencies": {
"@ts-jison/common": "^0.4.1-alpha.1"
}
},
"node_modules/@ts-jison/parser": {
"version": "0.4.1-alpha.1",
"resolved": "https://registry.npmjs.org/@ts-jison/parser/-/parser-0.4.1-alpha.1.tgz",
"integrity": "sha512-xNj+qOez/7dju44LlYiTlCjxMzW5oek9EckUAElfln/GBK9vgMSk0swWcnacMr0TYbGjUQuXvL2wEgmDf5WajQ==",
"license": "MIT",
"dependencies": {
"@ts-jison/common": "^0.4.1-alpha.1",
"@ts-jison/lexer": "^0.4.1-alpha.1"
}
},
"node_modules/@types/aria-query": {
"version": "5.0.4",
"resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz",
@@ -4843,6 +4929,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/numeric-quantity": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/numeric-quantity/-/numeric-quantity-2.1.0.tgz",
"integrity": "sha512-oDkQ8nFuNVA+unEg1jd6dAS+O7eLXWWzsa4ViI0S0yFi6654GK0s74o8bF8uLRQdWIz/qFF1GABNFPfwAGQUsg==",
"license": "MIT",
"engines": {
"node": ">=16"
}
},
"node_modules/object-assign": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
@@ -5275,6 +5370,21 @@
"react-dom": "^0.14 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0"
}
},
"node_modules/react-querybuilder": {
"version": "8.14.0",
"resolved": "https://registry.npmjs.org/react-querybuilder/-/react-querybuilder-8.14.0.tgz",
"integrity": "sha512-uwJn1XT4A6reuxjPmRLUnvewhC4PZksZU4XSxCJgqwR37r2A1/REvxEgv+zVQGVFcd4dUIZs1E++WDabOWVlmA==",
"license": "MIT",
"dependencies": {
"@react-querybuilder/core": "^8.14.0",
"@reduxjs/toolkit": "^2.11.2",
"immer": "^11.1.3",
"react-redux": "^9.2.0"
},
"peerDependencies": {
"react": ">=18"
}
},
"node_modules/react-redux": {
"version": "9.2.0",
"resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.2.0.tgz",