mirror of
https://github.com/ReCloudStudio/WebHooker.git
synced 2026-09-22 16:11:29 +00:00
feat(filters): JSONPath field filters, operators, AST groups, fragments, and test-match
Add a field filter type reading any payload value by JSONPath with array expansion, 12 comparison operators (eq/ne/contains/startsWith/endsWith/regex/gt/gte/lt/lte/in/exists), a visual AST builder (all/any/not) in the route editor, chip-based multi-value input, a stateless POST /admin/api/test-match dry-run, and named filter fragments stored in D1 (d1_fragments, migration 0010) inlined into route ASTs on insert.
This commit is contained in:
parent
c955db03c3
commit
c090281cb2
30 changed files with 1793 additions and 422 deletions
|
|
@ -19,6 +19,9 @@ import {
|
|||
adminAudit,
|
||||
adminApiMetrics,
|
||||
adminApiDelivery,
|
||||
adminApiTestMatch,
|
||||
adminGroupFragmentsGet,
|
||||
adminGroupFragmentsPut,
|
||||
} from "../../../lib/web/admin";
|
||||
|
||||
export default defineEventHandler((event) => {
|
||||
|
|
@ -36,24 +39,24 @@ export default defineEventHandler((event) => {
|
|||
}
|
||||
if (seg[0] === "logs" && seg.length === 1 && method === "GET") return adminApiLogs(event);
|
||||
if (seg[0] === "logs" && seg.length === 2 && method === "GET")
|
||||
return adminApiLogsById(event, Number(seg[1]));
|
||||
return adminApiLogsById(event, Number(seg[1]!));
|
||||
if (seg[0] === "groups" && seg[2] === "routes" && seg.length === 3) {
|
||||
if (method === "GET") return adminGroupRoutesGet(event, seg[1]);
|
||||
if (method === "PUT") return adminGroupRoutesPut(event, seg[1]);
|
||||
if (method === "GET") return adminGroupRoutesGet(event, seg[1]!);
|
||||
if (method === "PUT") return adminGroupRoutesPut(event, seg[1]!);
|
||||
}
|
||||
if (seg[0] === "groups" && seg[2] === "invites" && seg.length === 3) {
|
||||
if (method === "GET") return adminGroupInvitesGet(event, seg[1]);
|
||||
if (method === "POST") return adminGroupInvitesPost(event, seg[1]);
|
||||
if (method === "GET") return adminGroupInvitesGet(event, seg[1]!);
|
||||
if (method === "POST") return adminGroupInvitesPost(event, seg[1]!);
|
||||
}
|
||||
if (seg[0] === "invites" && seg.length === 2 && method === "DELETE")
|
||||
return adminInviteDelete(event, seg[1]);
|
||||
return adminInviteDelete(event, seg[1]!);
|
||||
if (
|
||||
seg[0] === "groups" &&
|
||||
seg[2] === "rename" &&
|
||||
seg.length === 3 &&
|
||||
(method === "POST" || method === "PUT")
|
||||
)
|
||||
return adminGroupRename(event, seg[1]);
|
||||
return adminGroupRename(event, seg[1]!);
|
||||
if (
|
||||
seg[0] === "groups" &&
|
||||
seg[2] === "webhook" &&
|
||||
|
|
@ -61,15 +64,21 @@ export default defineEventHandler((event) => {
|
|||
seg.length === 4 &&
|
||||
method === "POST"
|
||||
)
|
||||
return adminGroupWebhookRegenerate(event, seg[1]);
|
||||
return adminGroupWebhookRegenerate(event, seg[1]!);
|
||||
if (seg[0] === "groups" && seg[2] === "webhook" && seg.length === 3) {
|
||||
if (method === "GET") return adminGroupWebhookGet(event, seg[1]);
|
||||
if (method === "DELETE") return adminGroupWebhookDelete(event, seg[1]);
|
||||
if (method === "GET") return adminGroupWebhookGet(event, seg[1]!);
|
||||
if (method === "DELETE") return adminGroupWebhookDelete(event, seg[1]!);
|
||||
}
|
||||
if (seg[0] === "audit" && seg.length === 1 && method === "GET") return adminAudit(event);
|
||||
if (seg[0] === "metrics" && seg.length === 1 && method === "GET") return adminApiMetrics(event);
|
||||
if (seg[0] === "delivery" && seg.length === 2 && method === "GET")
|
||||
return adminApiDelivery(event, seg[1]);
|
||||
return adminApiDelivery(event, seg[1]!);
|
||||
if (seg[0] === "test-match" && seg.length === 1 && method === "POST")
|
||||
return adminApiTestMatch(event);
|
||||
if (seg[0] === "groups" && seg[2] === "fragments" && seg.length === 3) {
|
||||
if (method === "GET") return adminGroupFragmentsGet(event, seg[1]!);
|
||||
if (method === "PUT") return adminGroupFragmentsPut(event, seg[1]!);
|
||||
}
|
||||
|
||||
setResponseStatus(event, 404);
|
||||
return { error: "Not found" };
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue