@shipfox/client-triggers 5.0.0 → 6.0.2
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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +50 -0
- package/dist/components/events-filter-bar.d.ts +3 -4
- package/dist/components/events-filter-bar.d.ts.map +1 -1
- package/dist/components/events-filter-bar.js +8 -16
- package/dist/components/events-filter-bar.js.map +1 -1
- package/dist/components/events-list.d.ts.map +1 -1
- package/dist/components/events-list.js +2 -4
- package/dist/components/events-list.js.map +1 -1
- package/dist/components/events-list.stories.d.ts +1 -16
- package/dist/components/events-list.stories.d.ts.map +1 -1
- package/dist/components/events-list.stories.js +2 -1
- package/dist/components/events-list.stories.js.map +1 -1
- package/dist/components/trigger-event-detail.d.ts +2 -2
- package/dist/components/trigger-event-detail.d.ts.map +1 -1
- package/dist/components/trigger-event-detail.js +7 -7
- package/dist/components/trigger-event-detail.js.map +1 -1
- package/dist/components/trigger-event-detail.stories.d.ts +1 -36
- package/dist/components/trigger-event-detail.stories.d.ts.map +1 -1
- package/dist/components/trigger-event-detail.stories.js +6 -3
- package/dist/components/trigger-event-detail.stories.js.map +1 -1
- package/dist/components/trigger-event-result.d.ts +2 -2
- package/dist/components/trigger-event-result.d.ts.map +1 -1
- package/dist/components/trigger-event-result.js +8 -16
- package/dist/components/trigger-event-result.js.map +1 -1
- package/dist/components/trigger-event-row.d.ts +2 -2
- package/dist/components/trigger-event-row.d.ts.map +1 -1
- package/dist/components/trigger-event-row.js +1 -1
- package/dist/components/trigger-event-row.js.map +1 -1
- package/dist/components/trigger-source-icon.d.ts +8 -6
- package/dist/components/trigger-source-icon.d.ts.map +1 -1
- package/dist/components/trigger-source-icon.js +4 -3
- package/dist/components/trigger-source-icon.js.map +1 -1
- package/dist/components/types.d.ts +3 -4
- package/dist/components/types.d.ts.map +1 -1
- package/dist/components/types.js.map +1 -1
- package/dist/core/trigger-event.d.ts +78 -0
- package/dist/core/trigger-event.d.ts.map +1 -0
- package/dist/core/trigger-event.js +71 -0
- package/dist/core/trigger-event.js.map +1 -0
- package/dist/feature.d.ts +7 -0
- package/dist/feature.d.ts.map +1 -1
- package/dist/feature.js +10 -9
- package/dist/feature.js.map +1 -1
- package/dist/hooks/api/trigger-event-mapper.d.ts +7 -0
- package/dist/hooks/api/trigger-event-mapper.d.ts.map +1 -0
- package/dist/hooks/api/trigger-event-mapper.js +57 -0
- package/dist/hooks/api/trigger-event-mapper.js.map +1 -0
- package/dist/hooks/api/trigger-events.d.ts +15 -138
- package/dist/hooks/api/trigger-events.d.ts.map +1 -1
- package/dist/hooks/api/trigger-events.js +44 -47
- package/dist/hooks/api/trigger-events.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/pages/events-page.d.ts +1 -1
- package/dist/pages/events-page.d.ts.map +1 -1
- package/dist/pages/events-page.js +1 -1
- package/dist/pages/events-page.js.map +1 -1
- package/dist/routes/events-settings.js.map +1 -1
- package/dist/search.d.ts +3 -3
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +3 -4
- package/dist/search.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/src/components/events-filter-bar.tsx +16 -11
- package/src/components/events-list.stories.tsx +3 -2
- package/src/components/events-list.test.tsx +4 -3
- package/src/components/events-list.tsx +2 -12
- package/src/components/trigger-event-detail.stories.tsx +7 -3
- package/src/components/trigger-event-detail.test.tsx +6 -1
- package/src/components/trigger-event-detail.tsx +21 -18
- package/src/components/trigger-event-result.test.ts +6 -6
- package/src/components/trigger-event-result.ts +9 -13
- package/src/components/trigger-event-row.tsx +5 -5
- package/src/components/trigger-source-icon.tsx +9 -7
- package/src/components/types.ts +7 -7
- package/src/core/trigger-event.test.ts +40 -0
- package/src/core/trigger-event.ts +126 -0
- package/src/feature.ts +6 -4
- package/src/hooks/api/trigger-event-mapper.test.ts +88 -0
- package/src/hooks/api/trigger-event-mapper.ts +76 -0
- package/src/hooks/api/trigger-events.test.ts +49 -12
- package/src/hooks/api/trigger-events.ts +96 -56
- package/src/index.ts +1 -0
- package/src/pages/events-page.test.tsx +4 -4
- package/src/pages/events-page.tsx +3 -4
- package/src/routes/events-settings.tsx +1 -1
- package/src/search.ts +4 -5
- package/tsconfig.build.tsbuildinfo +1 -1
- package/vercel.json +5 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export function toTriggerEventSummary(event) {
|
|
2
|
+
return {
|
|
3
|
+
id: event.id,
|
|
4
|
+
eventRef: event.event_ref,
|
|
5
|
+
origin: event.origin,
|
|
6
|
+
workspaceId: event.workspace_id,
|
|
7
|
+
provider: event.provider,
|
|
8
|
+
source: event.source,
|
|
9
|
+
event: event.event,
|
|
10
|
+
deliveryId: event.delivery_id,
|
|
11
|
+
connectionId: event.connection_id,
|
|
12
|
+
outcome: event.outcome,
|
|
13
|
+
matchedCount: event.matched_count,
|
|
14
|
+
receivedAt: event.received_at,
|
|
15
|
+
processedAt: event.processed_at,
|
|
16
|
+
createdAt: event.created_at
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
export function toTriggerEventListPage(response) {
|
|
20
|
+
return {
|
|
21
|
+
events: response.trigger_events.map(toTriggerEventSummary),
|
|
22
|
+
nextCursor: response.next_cursor
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
function toMatchedWorkflowResult(decision) {
|
|
26
|
+
return {
|
|
27
|
+
id: decision.id,
|
|
28
|
+
subscriptionName: decision.subscription_name,
|
|
29
|
+
decision: decision.decision,
|
|
30
|
+
projectId: decision.project_id,
|
|
31
|
+
runId: decision.run_id,
|
|
32
|
+
runName: decision.run_name,
|
|
33
|
+
reason: decision.reason
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
export function toTriggerEventDetail(response) {
|
|
37
|
+
return {
|
|
38
|
+
...toTriggerEventSummary(response),
|
|
39
|
+
connectionName: response.connection_name,
|
|
40
|
+
payload: response.payload,
|
|
41
|
+
decisions: response.decisions.map(toMatchedWorkflowResult)
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function toTriggerEventFacetItem(item) {
|
|
45
|
+
return {
|
|
46
|
+
value: item.value,
|
|
47
|
+
count: item.count
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
export function toTriggerEventFacets(response) {
|
|
51
|
+
return {
|
|
52
|
+
sources: response.sources.map(toTriggerEventFacetItem),
|
|
53
|
+
events: response.events.map(toTriggerEventFacetItem)
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=trigger-event-mapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/api/trigger-event-mapper.ts"],"sourcesContent":["import type {\n TriggerDecisionDto,\n TriggerEventDetailResponseDto,\n TriggerEventFacetItemDto,\n TriggerEventFacetsResponseDto,\n TriggerEventListItemDto,\n TriggerEventListResponseDto,\n} from '@shipfox/api-triggers-dto';\nimport type {\n TriggerEventDetail,\n TriggerEventFacetItem,\n TriggerEventFacets,\n TriggerEventListPage,\n TriggerEventMatchedWorkflowResult,\n TriggerEventSummary,\n} from '#core/trigger-event.js';\n\nexport function toTriggerEventSummary(event: TriggerEventListItemDto): TriggerEventSummary {\n return {\n id: event.id,\n eventRef: event.event_ref,\n origin: event.origin,\n workspaceId: event.workspace_id,\n provider: event.provider,\n source: event.source,\n event: event.event,\n deliveryId: event.delivery_id,\n connectionId: event.connection_id,\n outcome: event.outcome,\n matchedCount: event.matched_count,\n receivedAt: event.received_at,\n processedAt: event.processed_at,\n createdAt: event.created_at,\n };\n}\n\nexport function toTriggerEventListPage(\n response: TriggerEventListResponseDto,\n): TriggerEventListPage {\n return {\n events: response.trigger_events.map(toTriggerEventSummary),\n nextCursor: response.next_cursor,\n };\n}\n\nfunction toMatchedWorkflowResult(decision: TriggerDecisionDto): TriggerEventMatchedWorkflowResult {\n return {\n id: decision.id,\n subscriptionName: decision.subscription_name,\n decision: decision.decision,\n projectId: decision.project_id,\n runId: decision.run_id,\n runName: decision.run_name,\n reason: decision.reason,\n };\n}\n\nexport function toTriggerEventDetail(response: TriggerEventDetailResponseDto): TriggerEventDetail {\n return {\n ...toTriggerEventSummary(response),\n connectionName: response.connection_name,\n payload: response.payload,\n decisions: response.decisions.map(toMatchedWorkflowResult),\n };\n}\n\nfunction toTriggerEventFacetItem(item: TriggerEventFacetItemDto): TriggerEventFacetItem {\n return {value: item.value, count: item.count};\n}\n\nexport function toTriggerEventFacets(response: TriggerEventFacetsResponseDto): TriggerEventFacets {\n return {\n sources: response.sources.map(toTriggerEventFacetItem),\n events: response.events.map(toTriggerEventFacetItem),\n };\n}\n"],"names":["toTriggerEventSummary","event","id","eventRef","event_ref","origin","workspaceId","workspace_id","provider","source","deliveryId","delivery_id","connectionId","connection_id","outcome","matchedCount","matched_count","receivedAt","received_at","processedAt","processed_at","createdAt","created_at","toTriggerEventListPage","response","events","trigger_events","map","nextCursor","next_cursor","toMatchedWorkflowResult","decision","subscriptionName","subscription_name","projectId","project_id","runId","run_id","runName","run_name","reason","toTriggerEventDetail","connectionName","connection_name","payload","decisions","toTriggerEventFacetItem","item","value","count","toTriggerEventFacets","sources"],"mappings":"AAiBA,OAAO,SAASA,sBAAsBC,KAA8B;IAClE,OAAO;QACLC,IAAID,MAAMC,EAAE;QACZC,UAAUF,MAAMG,SAAS;QACzBC,QAAQJ,MAAMI,MAAM;QACpBC,aAAaL,MAAMM,YAAY;QAC/BC,UAAUP,MAAMO,QAAQ;QACxBC,QAAQR,MAAMQ,MAAM;QACpBR,OAAOA,MAAMA,KAAK;QAClBS,YAAYT,MAAMU,WAAW;QAC7BC,cAAcX,MAAMY,aAAa;QACjCC,SAASb,MAAMa,OAAO;QACtBC,cAAcd,MAAMe,aAAa;QACjCC,YAAYhB,MAAMiB,WAAW;QAC7BC,aAAalB,MAAMmB,YAAY;QAC/BC,WAAWpB,MAAMqB,UAAU;IAC7B;AACF;AAEA,OAAO,SAASC,uBACdC,QAAqC;IAErC,OAAO;QACLC,QAAQD,SAASE,cAAc,CAACC,GAAG,CAAC3B;QACpC4B,YAAYJ,SAASK,WAAW;IAClC;AACF;AAEA,SAASC,wBAAwBC,QAA4B;IAC3D,OAAO;QACL7B,IAAI6B,SAAS7B,EAAE;QACf8B,kBAAkBD,SAASE,iBAAiB;QAC5CF,UAAUA,SAASA,QAAQ;QAC3BG,WAAWH,SAASI,UAAU;QAC9BC,OAAOL,SAASM,MAAM;QACtBC,SAASP,SAASQ,QAAQ;QAC1BC,QAAQT,SAASS,MAAM;IACzB;AACF;AAEA,OAAO,SAASC,qBAAqBjB,QAAuC;IAC1E,OAAO;QACL,GAAGxB,sBAAsBwB,SAAS;QAClCkB,gBAAgBlB,SAASmB,eAAe;QACxCC,SAASpB,SAASoB,OAAO;QACzBC,WAAWrB,SAASqB,SAAS,CAAClB,GAAG,CAACG;IACpC;AACF;AAEA,SAASgB,wBAAwBC,IAA8B;IAC7D,OAAO;QAACC,OAAOD,KAAKC,KAAK;QAAEC,OAAOF,KAAKE,KAAK;IAAA;AAC9C;AAEA,OAAO,SAASC,qBAAqB1B,QAAuC;IAC1E,OAAO;QACL2B,SAAS3B,SAAS2B,OAAO,CAACxB,GAAG,CAACmB;QAC9BrB,QAAQD,SAASC,MAAM,CAACE,GAAG,CAACmB;IAC9B;AACF"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
import type
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
to?: string | undefined;
|
|
8
|
-
}
|
|
1
|
+
import { type FetchQueryOptions, type InfiniteData, type UseInfiniteQueryOptions } from '@tanstack/react-query';
|
|
2
|
+
import { type TriggerEventFilters } from '#core/trigger-event.js';
|
|
3
|
+
export type { TriggerEventFilters } from '#core/trigger-event.js';
|
|
4
|
+
type TriggerEventsInfiniteQueryOptions = UseInfiniteQueryOptions<import('#core/trigger-event.js').TriggerEventListPage, Error, InfiniteData<import('#core/trigger-event.js').TriggerEventListPage, string | undefined>, ReturnType<typeof triggerEventsQueryKeys.list>, string | undefined>;
|
|
5
|
+
type TriggerEventQueryOptions = FetchQueryOptions<import('#core/trigger-event.js').TriggerEventDetail, Error, import('#core/trigger-event.js').TriggerEventDetail, ReturnType<typeof triggerEventsQueryKeys.detail>>;
|
|
6
|
+
type TriggerEventFacetsQueryOptions = FetchQueryOptions<import('#core/trigger-event.js').TriggerEventFacets, Error, import('#core/trigger-event.js').TriggerEventFacets, ReturnType<typeof triggerEventsQueryKeys.facets>>;
|
|
9
7
|
export declare const triggerEventsQueryKeys: {
|
|
10
8
|
all: readonly ["trigger-events"];
|
|
11
9
|
lists: (workspaceId: string) => readonly ["trigger-events", "list", string];
|
|
@@ -25,140 +23,19 @@ export declare function listTriggerEvents({ workspaceId, filters, limit, cursor,
|
|
|
25
23
|
limit?: number;
|
|
26
24
|
cursor?: string | undefined;
|
|
27
25
|
signal?: AbortSignal;
|
|
28
|
-
}): Promise<
|
|
29
|
-
trigger_events: {
|
|
30
|
-
id: string;
|
|
31
|
-
event_ref: string;
|
|
32
|
-
origin: "integration" | "manual" | "cron";
|
|
33
|
-
workspace_id: string;
|
|
34
|
-
provider: string | null;
|
|
35
|
-
source: string;
|
|
36
|
-
event: string;
|
|
37
|
-
delivery_id: string | null;
|
|
38
|
-
connection_id: string | null;
|
|
39
|
-
outcome: "received" | "routed" | "discarded" | "failed" | "errored";
|
|
40
|
-
matched_count: number;
|
|
41
|
-
received_at: string;
|
|
42
|
-
processed_at: string | null;
|
|
43
|
-
created_at: string;
|
|
44
|
-
}[];
|
|
45
|
-
next_cursor: string | null;
|
|
46
|
-
}>;
|
|
26
|
+
}): Promise<import("#core/trigger-event.js").TriggerEventListPage>;
|
|
47
27
|
export declare function getTriggerEvent({ id, signal }: {
|
|
48
28
|
id: string;
|
|
49
29
|
signal?: AbortSignal;
|
|
50
|
-
}): Promise<
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
provider: string | null;
|
|
56
|
-
source: string;
|
|
57
|
-
event: string;
|
|
58
|
-
delivery_id: string | null;
|
|
59
|
-
connection_id: string | null;
|
|
60
|
-
outcome: "received" | "routed" | "discarded" | "failed" | "errored";
|
|
61
|
-
matched_count: number;
|
|
62
|
-
received_at: string;
|
|
63
|
-
processed_at: string | null;
|
|
64
|
-
created_at: string;
|
|
65
|
-
connection_name: string | null;
|
|
66
|
-
payload: Record<string, unknown> | null;
|
|
67
|
-
decisions: {
|
|
68
|
-
id: string;
|
|
69
|
-
received_event_id: string;
|
|
70
|
-
subscription_kind: "trigger" | "listener";
|
|
71
|
-
subscription_id: string;
|
|
72
|
-
subscription_name: string;
|
|
73
|
-
workflow_definition_id: string | null;
|
|
74
|
-
project_id: string | null;
|
|
75
|
-
workflow_run_id: string | null;
|
|
76
|
-
job_id: string | null;
|
|
77
|
-
matcher_kind: "on" | "until" | null;
|
|
78
|
-
matcher_ordinal: number | null;
|
|
79
|
-
decision: "triggered" | "filter-error" | "dispatch-error";
|
|
80
|
-
run_id: string | null;
|
|
81
|
-
run_name: string | null;
|
|
82
|
-
reason: string | null;
|
|
83
|
-
created_at: string;
|
|
84
|
-
}[];
|
|
85
|
-
}>;
|
|
86
|
-
export declare function useTriggerEventsInfiniteQuery(workspaceId: string | undefined, filters?: TriggerEventFilters, limit?: number): import("@tanstack/react-query").UseInfiniteQueryResult<import("@tanstack/react-query").InfiniteData<{
|
|
87
|
-
trigger_events: {
|
|
88
|
-
id: string;
|
|
89
|
-
event_ref: string;
|
|
90
|
-
origin: "integration" | "manual" | "cron";
|
|
91
|
-
workspace_id: string;
|
|
92
|
-
provider: string | null;
|
|
93
|
-
source: string;
|
|
94
|
-
event: string;
|
|
95
|
-
delivery_id: string | null;
|
|
96
|
-
connection_id: string | null;
|
|
97
|
-
outcome: "received" | "routed" | "discarded" | "failed" | "errored";
|
|
98
|
-
matched_count: number;
|
|
99
|
-
received_at: string;
|
|
100
|
-
processed_at: string | null;
|
|
101
|
-
created_at: string;
|
|
102
|
-
}[];
|
|
103
|
-
next_cursor: string | null;
|
|
104
|
-
}, unknown>, Error>;
|
|
105
|
-
export declare function useTriggerEventQuery(id: string | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<{
|
|
106
|
-
id: string;
|
|
107
|
-
event_ref: string;
|
|
108
|
-
origin: "integration" | "manual" | "cron";
|
|
109
|
-
workspace_id: string;
|
|
110
|
-
provider: string | null;
|
|
111
|
-
source: string;
|
|
112
|
-
event: string;
|
|
113
|
-
delivery_id: string | null;
|
|
114
|
-
connection_id: string | null;
|
|
115
|
-
outcome: "received" | "routed" | "discarded" | "failed" | "errored";
|
|
116
|
-
matched_count: number;
|
|
117
|
-
received_at: string;
|
|
118
|
-
processed_at: string | null;
|
|
119
|
-
created_at: string;
|
|
120
|
-
connection_name: string | null;
|
|
121
|
-
payload: Record<string, unknown> | null;
|
|
122
|
-
decisions: {
|
|
123
|
-
id: string;
|
|
124
|
-
received_event_id: string;
|
|
125
|
-
subscription_kind: "trigger" | "listener";
|
|
126
|
-
subscription_id: string;
|
|
127
|
-
subscription_name: string;
|
|
128
|
-
workflow_definition_id: string | null;
|
|
129
|
-
project_id: string | null;
|
|
130
|
-
workflow_run_id: string | null;
|
|
131
|
-
job_id: string | null;
|
|
132
|
-
matcher_kind: "on" | "until" | null;
|
|
133
|
-
matcher_ordinal: number | null;
|
|
134
|
-
decision: "triggered" | "filter-error" | "dispatch-error";
|
|
135
|
-
run_id: string | null;
|
|
136
|
-
run_name: string | null;
|
|
137
|
-
reason: string | null;
|
|
138
|
-
created_at: string;
|
|
139
|
-
}[];
|
|
140
|
-
}>, Error>;
|
|
30
|
+
}): Promise<import("#core/trigger-event.js").TriggerEventDetail>;
|
|
31
|
+
export declare function triggerEventsInfiniteQueryOptions(workspaceId: string, filters?: TriggerEventFilters, limit?: number): TriggerEventsInfiniteQueryOptions;
|
|
32
|
+
export declare function useTriggerEventsInfiniteQuery(workspaceId: string | undefined, filters?: TriggerEventFilters, limit?: number): import("@tanstack/react-query").UseInfiniteQueryResult<InfiniteData<import("#core/trigger-event.js").TriggerEventListPage, string | undefined>, Error>;
|
|
33
|
+
export declare function triggerEventQueryOptions(id: string): TriggerEventQueryOptions;
|
|
34
|
+
export declare function useTriggerEventQuery(id: string | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<import("#core/trigger-event.js").TriggerEventDetail>, Error>;
|
|
141
35
|
export declare function getTriggerEventFacets({ workspaceId, signal, }: {
|
|
142
36
|
workspaceId: string;
|
|
143
37
|
signal?: AbortSignal;
|
|
144
|
-
}): Promise<
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
count: number;
|
|
148
|
-
}[];
|
|
149
|
-
events: {
|
|
150
|
-
value: string;
|
|
151
|
-
count: number;
|
|
152
|
-
}[];
|
|
153
|
-
}>;
|
|
154
|
-
export declare function useTriggerEventFacetsQuery(workspaceId: string | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<{
|
|
155
|
-
sources: {
|
|
156
|
-
value: string;
|
|
157
|
-
count: number;
|
|
158
|
-
}[];
|
|
159
|
-
events: {
|
|
160
|
-
value: string;
|
|
161
|
-
count: number;
|
|
162
|
-
}[];
|
|
163
|
-
}>, Error>;
|
|
38
|
+
}): Promise<import("#core/trigger-event.js").TriggerEventFacets>;
|
|
39
|
+
export declare function triggerEventFacetsQueryOptions(workspaceId: string): TriggerEventFacetsQueryOptions;
|
|
40
|
+
export declare function useTriggerEventFacetsQuery(workspaceId: string | undefined): import("@tanstack/react-query").UseQueryResult<NoInfer<import("#core/trigger-event.js").TriggerEventFacets>, Error>;
|
|
164
41
|
//# sourceMappingURL=trigger-events.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trigger-events.d.ts","sourceRoot":"","sources":["../../../src/hooks/api/trigger-events.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"trigger-events.d.ts","sourceRoot":"","sources":["../../../src/hooks/api/trigger-events.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAIjB,KAAK,uBAAuB,EAG7B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,mBAAmB,EACzB,MAAM,wBAAwB,CAAC;AAOhC,YAAY,EAAC,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAEhE,KAAK,iCAAiC,GAAG,uBAAuB,CAC9D,OAAO,wBAAwB,EAAE,oBAAoB,EACrD,KAAK,EACL,YAAY,CAAC,OAAO,wBAAwB,EAAE,oBAAoB,EAAE,MAAM,GAAG,SAAS,CAAC,EACvF,UAAU,CAAC,OAAO,sBAAsB,CAAC,IAAI,CAAC,EAC9C,MAAM,GAAG,SAAS,CACnB,CAAC;AAEF,KAAK,wBAAwB,GAAG,iBAAiB,CAC/C,OAAO,wBAAwB,EAAE,kBAAkB,EACnD,KAAK,EACL,OAAO,wBAAwB,EAAE,kBAAkB,EACnD,UAAU,CAAC,OAAO,sBAAsB,CAAC,MAAM,CAAC,CACjD,CAAC;AAEF,KAAK,8BAA8B,GAAG,iBAAiB,CACrD,OAAO,wBAAwB,EAAE,kBAAkB,EACnD,KAAK,EACL,OAAO,wBAAwB,EAAE,kBAAkB,EACnD,UAAU,CAAC,OAAO,sBAAsB,CAAC,MAAM,CAAC,CACjD,CAAC;AAWF,eAAO,MAAM,sBAAsB;;yBAEZ,MAAM;wBACP,MAAM,WAAW,mBAAmB;;;;;;;iBAM3C,MAAM;0BACG,MAAM;CAC7B,CAAC;AAEF,wBAAsB,iBAAiB,CAAC,EACtC,WAAW,EACX,OAAY,EACZ,KAAU,EACV,MAAM,EACN,MAAM,GACP,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,kEAeA;AAED,wBAAsB,eAAe,CAAC,EAAC,EAAE,EAAE,MAAM,EAAC,EAAE;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAC,gEAOrF;AAED,wBAAgB,iCAAiC,CAC/C,WAAW,EAAE,MAAM,EACnB,OAAO,GAAE,mBAAwB,EACjC,KAAK,SAAK,GACT,iCAAiC,CASnC;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,OAAO,GAAE,mBAAwB,EACjC,KAAK,SAAK,0JAMX;AAED,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,MAAM,GAAG,wBAAwB,CAK7E;AAED,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,SAAS,uHAK1D;AAED,wBAAsB,qBAAqB,CAAC,EAC1C,WAAW,EACX,MAAM,GACP,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,gEAQA;AAED,wBAAgB,8BAA8B,CAC5C,WAAW,EAAE,MAAM,GAClB,8BAA8B,CAMhC;AAED,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,uHAKzE"}
|
|
@@ -1,21 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
].sort() : null;
|
|
7
|
-
}
|
|
8
|
-
function normalizeTriggerEventFiltersForQueryKey(filters) {
|
|
9
|
-
return {
|
|
10
|
-
source: normalizeStringFilter(filters.source),
|
|
11
|
-
event: normalizeStringFilter(filters.event),
|
|
12
|
-
outcome: normalizeStringFilter(filters.outcome),
|
|
13
|
-
from: filters.from ?? null,
|
|
14
|
-
to: filters.to ?? null
|
|
15
|
-
};
|
|
16
|
-
}
|
|
1
|
+
import { triggerEventDetailResponseSchema, triggerEventFacetsResponseSchema, triggerEventListResponseSchema } from '@shipfox/api-triggers-dto';
|
|
2
|
+
import { checkedApiRequest } from '@shipfox/client-api';
|
|
3
|
+
import { infiniteQueryOptions, keepPreviousData, queryOptions, useInfiniteQuery, useQuery } from '@tanstack/react-query';
|
|
4
|
+
import { normalizeTriggerEventFilters, normalizeTriggerEventFilterValues } from '#core/trigger-event.js';
|
|
5
|
+
import { toTriggerEventDetail, toTriggerEventFacets, toTriggerEventListPage } from './trigger-event-mapper.js';
|
|
17
6
|
function setListParam(params, name, values) {
|
|
18
|
-
const normalized =
|
|
7
|
+
const normalized = normalizeTriggerEventFilterValues(values);
|
|
19
8
|
if (normalized) params.set(name, normalized.join(','));
|
|
20
9
|
}
|
|
21
10
|
export const triggerEventsQueryKeys = {
|
|
@@ -30,7 +19,7 @@ export const triggerEventsQueryKeys = {
|
|
|
30
19
|
list: (workspaceId, filters, limit = 50)=>[
|
|
31
20
|
...triggerEventsQueryKeys.lists(workspaceId),
|
|
32
21
|
limit,
|
|
33
|
-
|
|
22
|
+
normalizeTriggerEventFilters(filters)
|
|
34
23
|
],
|
|
35
24
|
detail: (id)=>[
|
|
36
25
|
...triggerEventsQueryKeys.all,
|
|
@@ -54,69 +43,77 @@ export async function listTriggerEvents({ workspaceId, filters = {}, limit = 50,
|
|
|
54
43
|
if (filters.from) params.set('from', filters.from);
|
|
55
44
|
if (filters.to) params.set('to', filters.to);
|
|
56
45
|
setListParam(params, 'outcome', filters.outcome);
|
|
57
|
-
|
|
46
|
+
const response = await checkedApiRequest(triggerEventListResponseSchema, `/trigger-events?${params.toString()}`, {
|
|
58
47
|
signal
|
|
59
48
|
});
|
|
49
|
+
return toTriggerEventListPage(response);
|
|
60
50
|
}
|
|
61
51
|
export async function getTriggerEvent({ id, signal }) {
|
|
62
|
-
|
|
52
|
+
const response = await checkedApiRequest(triggerEventDetailResponseSchema, `/trigger-events/${encodeURIComponent(id)}`, {
|
|
63
53
|
signal
|
|
64
54
|
});
|
|
55
|
+
return toTriggerEventDetail(response);
|
|
65
56
|
}
|
|
66
|
-
export function
|
|
67
|
-
return
|
|
68
|
-
queryKey:
|
|
69
|
-
...triggerEventsQueryKeys.all,
|
|
70
|
-
'list'
|
|
71
|
-
],
|
|
72
|
-
enabled: Boolean(workspaceId),
|
|
57
|
+
export function triggerEventsInfiniteQueryOptions(workspaceId, filters = {}, limit = 50) {
|
|
58
|
+
return infiniteQueryOptions({
|
|
59
|
+
queryKey: triggerEventsQueryKeys.list(workspaceId, filters, limit),
|
|
73
60
|
initialPageParam: undefined,
|
|
74
61
|
queryFn: ({ pageParam, signal })=>listTriggerEvents({
|
|
75
|
-
workspaceId
|
|
62
|
+
workspaceId,
|
|
76
63
|
filters,
|
|
77
64
|
limit,
|
|
78
65
|
cursor: pageParam,
|
|
79
66
|
signal
|
|
80
67
|
}),
|
|
81
|
-
getNextPageParam: (lastPage)=>lastPage.
|
|
68
|
+
getNextPageParam: (lastPage)=>lastPage.nextCursor ?? undefined,
|
|
82
69
|
placeholderData: keepPreviousData
|
|
83
70
|
});
|
|
84
71
|
}
|
|
85
|
-
export function
|
|
86
|
-
return
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
72
|
+
export function useTriggerEventsInfiniteQuery(workspaceId, filters = {}, limit = 50) {
|
|
73
|
+
return useInfiniteQuery({
|
|
74
|
+
...triggerEventsInfiniteQueryOptions(workspaceId ?? '', filters, limit),
|
|
75
|
+
enabled: Boolean(workspaceId)
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
export function triggerEventQueryOptions(id) {
|
|
79
|
+
return queryOptions({
|
|
80
|
+
queryKey: triggerEventsQueryKeys.detail(id),
|
|
92
81
|
queryFn: ({ signal })=>getTriggerEvent({
|
|
93
|
-
id
|
|
82
|
+
id,
|
|
94
83
|
signal
|
|
95
84
|
})
|
|
96
85
|
});
|
|
97
86
|
}
|
|
87
|
+
export function useTriggerEventQuery(id) {
|
|
88
|
+
return useQuery({
|
|
89
|
+
...triggerEventQueryOptions(id ?? ''),
|
|
90
|
+
enabled: Boolean(id)
|
|
91
|
+
});
|
|
92
|
+
}
|
|
98
93
|
export async function getTriggerEventFacets({ workspaceId, signal }) {
|
|
99
94
|
const params = new URLSearchParams({
|
|
100
95
|
workspace_id: workspaceId
|
|
101
96
|
});
|
|
102
|
-
|
|
97
|
+
const response = await checkedApiRequest(triggerEventFacetsResponseSchema, `/trigger-events/facets?${params.toString()}`, {
|
|
103
98
|
signal
|
|
104
99
|
});
|
|
100
|
+
return toTriggerEventFacets(response);
|
|
105
101
|
}
|
|
106
|
-
export function
|
|
107
|
-
return
|
|
108
|
-
queryKey:
|
|
109
|
-
...triggerEventsQueryKeys.all,
|
|
110
|
-
'facets'
|
|
111
|
-
],
|
|
112
|
-
enabled: Boolean(workspaceId),
|
|
102
|
+
export function triggerEventFacetsQueryOptions(workspaceId) {
|
|
103
|
+
return queryOptions({
|
|
104
|
+
queryKey: triggerEventsQueryKeys.facets(workspaceId),
|
|
113
105
|
queryFn: ({ signal })=>getTriggerEventFacets({
|
|
114
|
-
workspaceId
|
|
106
|
+
workspaceId,
|
|
115
107
|
signal
|
|
116
108
|
}),
|
|
117
|
-
// Distinct values change slowly; avoid refetching on every page mount.
|
|
118
109
|
staleTime: 5 * 60 * 1000
|
|
119
110
|
});
|
|
120
111
|
}
|
|
112
|
+
export function useTriggerEventFacetsQuery(workspaceId) {
|
|
113
|
+
return useQuery({
|
|
114
|
+
...triggerEventFacetsQueryOptions(workspaceId ?? ''),
|
|
115
|
+
enabled: Boolean(workspaceId)
|
|
116
|
+
});
|
|
117
|
+
}
|
|
121
118
|
|
|
122
119
|
//# sourceMappingURL=trigger-events.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/hooks/api/trigger-events.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../../src/hooks/api/trigger-events.ts"],"sourcesContent":["import {\n triggerEventDetailResponseSchema,\n triggerEventFacetsResponseSchema,\n triggerEventListResponseSchema,\n} from '@shipfox/api-triggers-dto';\nimport {checkedApiRequest} from '@shipfox/client-api';\nimport {\n type FetchQueryOptions,\n type InfiniteData,\n infiniteQueryOptions,\n keepPreviousData,\n queryOptions,\n type UseInfiniteQueryOptions,\n useInfiniteQuery,\n useQuery,\n} from '@tanstack/react-query';\nimport {\n normalizeTriggerEventFilters,\n normalizeTriggerEventFilterValues,\n type TriggerEventFilters,\n} from '#core/trigger-event.js';\nimport {\n toTriggerEventDetail,\n toTriggerEventFacets,\n toTriggerEventListPage,\n} from './trigger-event-mapper.js';\n\nexport type {TriggerEventFilters} from '#core/trigger-event.js';\n\ntype TriggerEventsInfiniteQueryOptions = UseInfiniteQueryOptions<\n import('#core/trigger-event.js').TriggerEventListPage,\n Error,\n InfiniteData<import('#core/trigger-event.js').TriggerEventListPage, string | undefined>,\n ReturnType<typeof triggerEventsQueryKeys.list>,\n string | undefined\n>;\n\ntype TriggerEventQueryOptions = FetchQueryOptions<\n import('#core/trigger-event.js').TriggerEventDetail,\n Error,\n import('#core/trigger-event.js').TriggerEventDetail,\n ReturnType<typeof triggerEventsQueryKeys.detail>\n>;\n\ntype TriggerEventFacetsQueryOptions = FetchQueryOptions<\n import('#core/trigger-event.js').TriggerEventFacets,\n Error,\n import('#core/trigger-event.js').TriggerEventFacets,\n ReturnType<typeof triggerEventsQueryKeys.facets>\n>;\n\nfunction setListParam(\n params: URLSearchParams,\n name: string,\n values: readonly string[] | undefined,\n) {\n const normalized = normalizeTriggerEventFilterValues(values);\n if (normalized) params.set(name, normalized.join(','));\n}\n\nexport const triggerEventsQueryKeys = {\n all: ['trigger-events'] as const,\n lists: (workspaceId: string) => [...triggerEventsQueryKeys.all, 'list', workspaceId] as const,\n list: (workspaceId: string, filters: TriggerEventFilters, limit = 50) =>\n [\n ...triggerEventsQueryKeys.lists(workspaceId),\n limit,\n normalizeTriggerEventFilters(filters),\n ] as const,\n detail: (id: string) => [...triggerEventsQueryKeys.all, 'detail', id] as const,\n facets: (workspaceId: string) => [...triggerEventsQueryKeys.all, 'facets', workspaceId] as const,\n};\n\nexport async function listTriggerEvents({\n workspaceId,\n filters = {},\n limit = 50,\n cursor,\n signal,\n}: {\n workspaceId: string;\n filters?: TriggerEventFilters;\n limit?: number;\n cursor?: string | undefined;\n signal?: AbortSignal;\n}) {\n const params = new URLSearchParams({workspace_id: workspaceId, limit: String(limit)});\n if (cursor) params.set('cursor', cursor);\n setListParam(params, 'source', filters.source);\n setListParam(params, 'event', filters.event);\n if (filters.from) params.set('from', filters.from);\n if (filters.to) params.set('to', filters.to);\n setListParam(params, 'outcome', filters.outcome);\n\n const response = await checkedApiRequest(\n triggerEventListResponseSchema,\n `/trigger-events?${params.toString()}`,\n {signal},\n );\n return toTriggerEventListPage(response);\n}\n\nexport async function getTriggerEvent({id, signal}: {id: string; signal?: AbortSignal}) {\n const response = await checkedApiRequest(\n triggerEventDetailResponseSchema,\n `/trigger-events/${encodeURIComponent(id)}`,\n {signal},\n );\n return toTriggerEventDetail(response);\n}\n\nexport function triggerEventsInfiniteQueryOptions(\n workspaceId: string,\n filters: TriggerEventFilters = {},\n limit = 50,\n): TriggerEventsInfiniteQueryOptions {\n return infiniteQueryOptions({\n queryKey: triggerEventsQueryKeys.list(workspaceId, filters, limit),\n initialPageParam: undefined as string | undefined,\n queryFn: ({pageParam, signal}) =>\n listTriggerEvents({workspaceId, filters, limit, cursor: pageParam, signal}),\n getNextPageParam: (lastPage) => lastPage.nextCursor ?? undefined,\n placeholderData: keepPreviousData,\n });\n}\n\nexport function useTriggerEventsInfiniteQuery(\n workspaceId: string | undefined,\n filters: TriggerEventFilters = {},\n limit = 50,\n) {\n return useInfiniteQuery({\n ...triggerEventsInfiniteQueryOptions(workspaceId ?? '', filters, limit),\n enabled: Boolean(workspaceId),\n });\n}\n\nexport function triggerEventQueryOptions(id: string): TriggerEventQueryOptions {\n return queryOptions({\n queryKey: triggerEventsQueryKeys.detail(id),\n queryFn: ({signal}) => getTriggerEvent({id, signal}),\n });\n}\n\nexport function useTriggerEventQuery(id: string | undefined) {\n return useQuery({\n ...triggerEventQueryOptions(id ?? ''),\n enabled: Boolean(id),\n });\n}\n\nexport async function getTriggerEventFacets({\n workspaceId,\n signal,\n}: {\n workspaceId: string;\n signal?: AbortSignal;\n}) {\n const params = new URLSearchParams({workspace_id: workspaceId});\n const response = await checkedApiRequest(\n triggerEventFacetsResponseSchema,\n `/trigger-events/facets?${params.toString()}`,\n {signal},\n );\n return toTriggerEventFacets(response);\n}\n\nexport function triggerEventFacetsQueryOptions(\n workspaceId: string,\n): TriggerEventFacetsQueryOptions {\n return queryOptions({\n queryKey: triggerEventsQueryKeys.facets(workspaceId),\n queryFn: ({signal}) => getTriggerEventFacets({workspaceId, signal}),\n staleTime: 5 * 60 * 1000,\n });\n}\n\nexport function useTriggerEventFacetsQuery(workspaceId: string | undefined) {\n return useQuery({\n ...triggerEventFacetsQueryOptions(workspaceId ?? ''),\n enabled: Boolean(workspaceId),\n });\n}\n"],"names":["triggerEventDetailResponseSchema","triggerEventFacetsResponseSchema","triggerEventListResponseSchema","checkedApiRequest","infiniteQueryOptions","keepPreviousData","queryOptions","useInfiniteQuery","useQuery","normalizeTriggerEventFilters","normalizeTriggerEventFilterValues","toTriggerEventDetail","toTriggerEventFacets","toTriggerEventListPage","setListParam","params","name","values","normalized","set","join","triggerEventsQueryKeys","all","lists","workspaceId","list","filters","limit","detail","id","facets","listTriggerEvents","cursor","signal","URLSearchParams","workspace_id","String","source","event","from","to","outcome","response","toString","getTriggerEvent","encodeURIComponent","triggerEventsInfiniteQueryOptions","queryKey","initialPageParam","undefined","queryFn","pageParam","getNextPageParam","lastPage","nextCursor","placeholderData","useTriggerEventsInfiniteQuery","enabled","Boolean","triggerEventQueryOptions","useTriggerEventQuery","getTriggerEventFacets","triggerEventFacetsQueryOptions","staleTime","useTriggerEventFacetsQuery"],"mappings":"AAAA,SACEA,gCAAgC,EAChCC,gCAAgC,EAChCC,8BAA8B,QACzB,4BAA4B;AACnC,SAAQC,iBAAiB,QAAO,sBAAsB;AACtD,SAGEC,oBAAoB,EACpBC,gBAAgB,EAChBC,YAAY,EAEZC,gBAAgB,EAChBC,QAAQ,QACH,wBAAwB;AAC/B,SACEC,4BAA4B,EAC5BC,iCAAiC,QAE5B,yBAAyB;AAChC,SACEC,oBAAoB,EACpBC,oBAAoB,EACpBC,sBAAsB,QACjB,4BAA4B;AA0BnC,SAASC,aACPC,MAAuB,EACvBC,IAAY,EACZC,MAAqC;IAErC,MAAMC,aAAaR,kCAAkCO;IACrD,IAAIC,YAAYH,OAAOI,GAAG,CAACH,MAAME,WAAWE,IAAI,CAAC;AACnD;AAEA,OAAO,MAAMC,yBAAyB;IACpCC,KAAK;QAAC;KAAiB;IACvBC,OAAO,CAACC,cAAwB;eAAIH,uBAAuBC,GAAG;YAAE;YAAQE;SAAY;IACpFC,MAAM,CAACD,aAAqBE,SAA8BC,QAAQ,EAAE,GAClE;eACKN,uBAAuBE,KAAK,CAACC;YAChCG;YACAlB,6BAA6BiB;SAC9B;IACHE,QAAQ,CAACC,KAAe;eAAIR,uBAAuBC,GAAG;YAAE;YAAUO;SAAG;IACrEC,QAAQ,CAACN,cAAwB;eAAIH,uBAAuBC,GAAG;YAAE;YAAUE;SAAY;AACzF,EAAE;AAEF,OAAO,eAAeO,kBAAkB,EACtCP,WAAW,EACXE,UAAU,CAAC,CAAC,EACZC,QAAQ,EAAE,EACVK,MAAM,EACNC,MAAM,EAOP;IACC,MAAMlB,SAAS,IAAImB,gBAAgB;QAACC,cAAcX;QAAaG,OAAOS,OAAOT;IAAM;IACnF,IAAIK,QAAQjB,OAAOI,GAAG,CAAC,UAAUa;IACjClB,aAAaC,QAAQ,UAAUW,QAAQW,MAAM;IAC7CvB,aAAaC,QAAQ,SAASW,QAAQY,KAAK;IAC3C,IAAIZ,QAAQa,IAAI,EAAExB,OAAOI,GAAG,CAAC,QAAQO,QAAQa,IAAI;IACjD,IAAIb,QAAQc,EAAE,EAAEzB,OAAOI,GAAG,CAAC,MAAMO,QAAQc,EAAE;IAC3C1B,aAAaC,QAAQ,WAAWW,QAAQe,OAAO;IAE/C,MAAMC,WAAW,MAAMvC,kBACrBD,gCACA,CAAC,gBAAgB,EAAEa,OAAO4B,QAAQ,IAAI,EACtC;QAACV;IAAM;IAET,OAAOpB,uBAAuB6B;AAChC;AAEA,OAAO,eAAeE,gBAAgB,EAACf,EAAE,EAAEI,MAAM,EAAqC;IACpF,MAAMS,WAAW,MAAMvC,kBACrBH,kCACA,CAAC,gBAAgB,EAAE6C,mBAAmBhB,KAAK,EAC3C;QAACI;IAAM;IAET,OAAOtB,qBAAqB+B;AAC9B;AAEA,OAAO,SAASI,kCACdtB,WAAmB,EACnBE,UAA+B,CAAC,CAAC,EACjCC,QAAQ,EAAE;IAEV,OAAOvB,qBAAqB;QAC1B2C,UAAU1B,uBAAuBI,IAAI,CAACD,aAAaE,SAASC;QAC5DqB,kBAAkBC;QAClBC,SAAS,CAAC,EAACC,SAAS,EAAElB,MAAM,EAAC,GAC3BF,kBAAkB;gBAACP;gBAAaE;gBAASC;gBAAOK,QAAQmB;gBAAWlB;YAAM;QAC3EmB,kBAAkB,CAACC,WAAaA,SAASC,UAAU,IAAIL;QACvDM,iBAAiBlD;IACnB;AACF;AAEA,OAAO,SAASmD,8BACdhC,WAA+B,EAC/BE,UAA+B,CAAC,CAAC,EACjCC,QAAQ,EAAE;IAEV,OAAOpB,iBAAiB;QACtB,GAAGuC,kCAAkCtB,eAAe,IAAIE,SAASC,MAAM;QACvE8B,SAASC,QAAQlC;IACnB;AACF;AAEA,OAAO,SAASmC,yBAAyB9B,EAAU;IACjD,OAAOvB,aAAa;QAClByC,UAAU1B,uBAAuBO,MAAM,CAACC;QACxCqB,SAAS,CAAC,EAACjB,MAAM,EAAC,GAAKW,gBAAgB;gBAACf;gBAAII;YAAM;IACpD;AACF;AAEA,OAAO,SAAS2B,qBAAqB/B,EAAsB;IACzD,OAAOrB,SAAS;QACd,GAAGmD,yBAAyB9B,MAAM,GAAG;QACrC4B,SAASC,QAAQ7B;IACnB;AACF;AAEA,OAAO,eAAegC,sBAAsB,EAC1CrC,WAAW,EACXS,MAAM,EAIP;IACC,MAAMlB,SAAS,IAAImB,gBAAgB;QAACC,cAAcX;IAAW;IAC7D,MAAMkB,WAAW,MAAMvC,kBACrBF,kCACA,CAAC,uBAAuB,EAAEc,OAAO4B,QAAQ,IAAI,EAC7C;QAACV;IAAM;IAET,OAAOrB,qBAAqB8B;AAC9B;AAEA,OAAO,SAASoB,+BACdtC,WAAmB;IAEnB,OAAOlB,aAAa;QAClByC,UAAU1B,uBAAuBS,MAAM,CAACN;QACxC0B,SAAS,CAAC,EAACjB,MAAM,EAAC,GAAK4B,sBAAsB;gBAACrC;gBAAaS;YAAM;QACjE8B,WAAW,IAAI,KAAK;IACtB;AACF;AAEA,OAAO,SAASC,2BAA2BxC,WAA+B;IACxE,OAAOhB,SAAS;QACd,GAAGsD,+BAA+BtC,eAAe,GAAG;QACpDiC,SAASC,QAAQlC;IACnB;AACF"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from './components/trigger-source-icon.js';\nexport * from './hooks/api/trigger-events.js';\nexport * from './pages/events-page.js';\nexport * from './search.js';\n"],"names":[],"mappings":"AAAA,cAAc,sCAAsC;AACpD,cAAc,gCAAgC;AAC9C,cAAc,yBAAyB;AACvC,cAAc,cAAc"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export * from '#core/trigger-event.js';\nexport * from './components/trigger-source-icon.js';\nexport * from './hooks/api/trigger-events.js';\nexport * from './pages/events-page.js';\nexport * from './search.js';\n"],"names":[],"mappings":"AAAA,cAAc,yBAAyB;AACvC,cAAc,sCAAsC;AACpD,cAAc,gCAAgC;AAC9C,cAAc,yBAAyB;AACvC,cAAc,cAAc"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-page.d.ts","sourceRoot":"","sources":["../../src/pages/events-page.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events-page.d.ts","sourceRoot":"","sources":["../../src/pages/events-page.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,mBAAmB,EAAsB,MAAM,wBAAwB,CAAC;AAMrF,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,eAAe,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,mBAAmB,CAAC,KAAK,IAAI,CAAC;CAChE;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EAAC,WAAW,EAAE,OAAO,EAAE,eAAe,EAAC,EAAE,eAAe,+BAuDlF"}
|
|
@@ -13,7 +13,7 @@ import { useTriggerEventFacetsQuery, useTriggerEventsInfiniteQuery } from '#hook
|
|
|
13
13
|
const query = useTriggerEventsInfiniteQuery(workspaceId, filters);
|
|
14
14
|
const facetsQuery = useTriggerEventFacetsQuery(workspaceId);
|
|
15
15
|
const [selectedEventId, setSelectedEventId] = useState();
|
|
16
|
-
const events = useMemo(()=>query.data?.pages.flatMap((page)=>page.
|
|
16
|
+
const events = useMemo(()=>query.data?.pages.flatMap((page)=>page.events) ?? [], [
|
|
17
17
|
query.data
|
|
18
18
|
]);
|
|
19
19
|
useEffect(()=>{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/pages/events-page.tsx"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/pages/events-page.tsx"],"sourcesContent":["import {RelativeTimeProvider} from '@shipfox/react-ui/relative-time';\nimport {Header, Text} from '@shipfox/react-ui/typography';\nimport {cn} from '@shipfox/react-ui/utils';\nimport {useEffect, useMemo, useState} from 'react';\nimport {EventsList} from '#components/events-list.js';\nimport {TriggerEventDetail} from '#components/trigger-event-detail.js';\nimport type {TriggerEventFilters, TriggerEventSummary} from '#core/trigger-event.js';\nimport {\n useTriggerEventFacetsQuery,\n useTriggerEventsInfiniteQuery,\n} from '#hooks/api/trigger-events.js';\n\nexport interface EventsPageProps {\n workspaceId: string;\n filters: TriggerEventFilters;\n onFiltersChange: (patch: Partial<TriggerEventFilters>) => void;\n}\n\n/**\n * Workspace-scoped Events list. Router-agnostic: filters and their setter come in as props\n * (the settings wrapper binds them to the URL), so a story can drive it with local state.\n */\nexport function EventsPage({workspaceId, filters, onFiltersChange}: EventsPageProps) {\n const query = useTriggerEventsInfiniteQuery(workspaceId, filters);\n const facetsQuery = useTriggerEventFacetsQuery(workspaceId);\n const [selectedEventId, setSelectedEventId] = useState<string | undefined>();\n\n const events = useMemo<TriggerEventSummary[]>(\n () => query.data?.pages.flatMap((page) => page.events) ?? [],\n [query.data],\n );\n\n useEffect(() => {\n if (!selectedEventId || query.isPending || query.isFetching || query.isError) return;\n if (!events.some((event) => event.id === selectedEventId)) setSelectedEventId(undefined);\n }, [events, query.isError, query.isFetching, query.isPending, selectedEventId]);\n\n return (\n <RelativeTimeProvider>\n <section className=\"flex min-w-0 flex-col gap-16\" aria-labelledby=\"trigger-events-heading\">\n <div className=\"flex flex-col gap-4\">\n <Header id=\"trigger-events-heading\" variant=\"h3\">\n Events\n </Header>\n <Text size=\"sm\" className=\"text-foreground-neutral-muted\">\n A workspace-wide audit log of trigger events received from integrations, schedules, and\n manual trigger calls.\n </Text>\n </div>\n\n <div className=\"grid min-h-0 gap-16 min-[900px]:grid-cols-[minmax(0,1fr)_minmax(360px,420px)]\">\n <div className={cn('min-w-0', selectedEventId && 'max-[899px]:hidden')}>\n <EventsList\n events={events}\n query={query}\n facets={facetsQuery.data}\n filters={filters}\n onFiltersChange={onFiltersChange}\n workspaceId={workspaceId}\n hasNextPage={query.hasNextPage}\n isFetchingNextPage={query.isFetchingNextPage}\n onLoadMore={() => {\n void query.fetchNextPage();\n }}\n selectedEventId={selectedEventId}\n onSelectEvent={setSelectedEventId}\n />\n </div>\n <TriggerEventDetail\n workspaceId={workspaceId}\n eventId={selectedEventId}\n onBack={() => setSelectedEventId(undefined)}\n />\n </div>\n </section>\n </RelativeTimeProvider>\n );\n}\n"],"names":["RelativeTimeProvider","Header","Text","cn","useEffect","useMemo","useState","EventsList","TriggerEventDetail","useTriggerEventFacetsQuery","useTriggerEventsInfiniteQuery","EventsPage","workspaceId","filters","onFiltersChange","query","facetsQuery","selectedEventId","setSelectedEventId","events","data","pages","flatMap","page","isPending","isFetching","isError","some","event","id","undefined","section","className","aria-labelledby","div","variant","size","facets","hasNextPage","isFetchingNextPage","onLoadMore","fetchNextPage","onSelectEvent","eventId","onBack"],"mappings":";AAAA,SAAQA,oBAAoB,QAAO,kCAAkC;AACrE,SAAQC,MAAM,EAAEC,IAAI,QAAO,+BAA+B;AAC1D,SAAQC,EAAE,QAAO,0BAA0B;AAC3C,SAAQC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAO,QAAQ;AACnD,SAAQC,UAAU,QAAO,6BAA6B;AACtD,SAAQC,kBAAkB,QAAO,sCAAsC;AAEvE,SACEC,0BAA0B,EAC1BC,6BAA6B,QACxB,+BAA+B;AAQtC;;;CAGC,GACD,OAAO,SAASC,WAAW,EAACC,WAAW,EAAEC,OAAO,EAAEC,eAAe,EAAkB;IACjF,MAAMC,QAAQL,8BAA8BE,aAAaC;IACzD,MAAMG,cAAcP,2BAA2BG;IAC/C,MAAM,CAACK,iBAAiBC,mBAAmB,GAAGZ;IAE9C,MAAMa,SAASd,QACb,IAAMU,MAAMK,IAAI,EAAEC,MAAMC,QAAQ,CAACC,OAASA,KAAKJ,MAAM,KAAK,EAAE,EAC5D;QAACJ,MAAMK,IAAI;KAAC;IAGdhB,UAAU;QACR,IAAI,CAACa,mBAAmBF,MAAMS,SAAS,IAAIT,MAAMU,UAAU,IAAIV,MAAMW,OAAO,EAAE;QAC9E,IAAI,CAACP,OAAOQ,IAAI,CAAC,CAACC,QAAUA,MAAMC,EAAE,KAAKZ,kBAAkBC,mBAAmBY;IAChF,GAAG;QAACX;QAAQJ,MAAMW,OAAO;QAAEX,MAAMU,UAAU;QAAEV,MAAMS,SAAS;QAAEP;KAAgB;IAE9E,qBACE,KAACjB;kBACC,cAAA,MAAC+B;YAAQC,WAAU;YAA+BC,mBAAgB;;8BAChE,MAACC;oBAAIF,WAAU;;sCACb,KAAC/B;4BAAO4B,IAAG;4BAAyBM,SAAQ;sCAAK;;sCAGjD,KAACjC;4BAAKkC,MAAK;4BAAKJ,WAAU;sCAAgC;;;;8BAM5D,MAACE;oBAAIF,WAAU;;sCACb,KAACE;4BAAIF,WAAW7B,GAAG,WAAWc,mBAAmB;sCAC/C,cAAA,KAACV;gCACCY,QAAQA;gCACRJ,OAAOA;gCACPsB,QAAQrB,YAAYI,IAAI;gCACxBP,SAASA;gCACTC,iBAAiBA;gCACjBF,aAAaA;gCACb0B,aAAavB,MAAMuB,WAAW;gCAC9BC,oBAAoBxB,MAAMwB,kBAAkB;gCAC5CC,YAAY;oCACV,KAAKzB,MAAM0B,aAAa;gCAC1B;gCACAxB,iBAAiBA;gCACjByB,eAAexB;;;sCAGnB,KAACV;4BACCI,aAAaA;4BACb+B,SAAS1B;4BACT2B,QAAQ,IAAM1B,mBAAmBY;;;;;;;AAM7C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/events-settings.tsx"],"sourcesContent":["import {defineRoute, useActiveWorkspace} from '@shipfox/client-shell/runtime';\nimport {getRouteApi} from '@tanstack/react-router';\nimport type {TriggerEventFilters} from '#
|
|
1
|
+
{"version":3,"sources":["../../src/routes/events-settings.tsx"],"sourcesContent":["import {defineRoute, useActiveWorkspace} from '@shipfox/client-shell/runtime';\nimport {getRouteApi} from '@tanstack/react-router';\nimport type {TriggerEventFilters} from '#core/trigger-event.js';\nimport {EventsPage} from '#pages/events-page.js';\nimport {type TriggerEventsSearch, validateTriggerEventsSearch} from '#search.js';\n\nconst routeApi = getRouteApi('/workspaces/$wid/settings/events');\n\n// Wrapped (not just re-typed) so the search validator's own type is portable outside this\n// package: TanStack Router's `const` generics capture the exact declared function, and a\n// route module consumed from another package (apps/client's composed router) can't print a\n// type that only resolves through this package's internal `#search.js` path.\nfunction validateSearch(search: Record<string, unknown>): TriggerEventsSearch {\n return validateTriggerEventsSearch(search);\n}\n\nexport default defineRoute({\n validateSearch,\n component: () => {\n const workspace = useActiveWorkspace();\n const search = routeApi.useSearch();\n const navigate = routeApi.useNavigate();\n const onFiltersChange = (patch: Partial<TriggerEventFilters>) => {\n void navigate({search: {...search, ...patch}, replace: true});\n };\n return (\n <EventsPage workspaceId={workspace.id} filters={search} onFiltersChange={onFiltersChange} />\n );\n },\n});\n"],"names":["defineRoute","useActiveWorkspace","getRouteApi","EventsPage","validateTriggerEventsSearch","routeApi","validateSearch","search","component","workspace","useSearch","navigate","useNavigate","onFiltersChange","patch","replace","workspaceId","id","filters"],"mappings":";AAAA,SAAQA,WAAW,EAAEC,kBAAkB,QAAO,gCAAgC;AAC9E,SAAQC,WAAW,QAAO,yBAAyB;AAEnD,SAAQC,UAAU,QAAO,wBAAwB;AACjD,SAAkCC,2BAA2B,QAAO,aAAa;AAEjF,MAAMC,WAAWH,YAAY;AAE7B,0FAA0F;AAC1F,yFAAyF;AACzF,2FAA2F;AAC3F,6EAA6E;AAC7E,SAASI,eAAeC,MAA+B;IACrD,OAAOH,4BAA4BG;AACrC;AAEA,eAAeP,YAAY;IACzBM;IACAE,WAAW;QACT,MAAMC,YAAYR;QAClB,MAAMM,SAASF,SAASK,SAAS;QACjC,MAAMC,WAAWN,SAASO,WAAW;QACrC,MAAMC,kBAAkB,CAACC;YACvB,KAAKH,SAAS;gBAACJ,QAAQ;oBAAC,GAAGA,MAAM;oBAAE,GAAGO,KAAK;gBAAA;gBAAGC,SAAS;YAAI;QAC7D;QACA,qBACE,KAACZ;YAAWa,aAAaP,UAAUQ,EAAE;YAAEC,SAASX;YAAQM,iBAAiBA;;IAE7E;AACF,GAAG"}
|
package/dist/search.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { type TriggerEventFilters } from '#core/trigger-event.js';
|
|
2
3
|
/**
|
|
3
|
-
* URL search params for the Events page.
|
|
4
|
-
* read API share one source of truth, and matches the `TriggerEventFilters` shape the data
|
|
4
|
+
* URL search params for the Events page. Matches the `TriggerEventFilters` shape the data
|
|
5
5
|
* hook consumes. Every field uses `.catch(undefined)` so a hand-edited or stale URL drops
|
|
6
6
|
* the bad param rather than throwing inside the router's `validateSearch`.
|
|
7
7
|
*/
|
|
@@ -18,6 +18,6 @@ export declare const triggerEventsSearchSchema: z.ZodObject<{
|
|
|
18
18
|
from: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
19
19
|
to: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
20
20
|
}, z.core.$strip>;
|
|
21
|
-
export type TriggerEventsSearch = z.infer<typeof triggerEventsSearchSchema
|
|
21
|
+
export type TriggerEventsSearch = z.infer<typeof triggerEventsSearchSchema> & TriggerEventFilters;
|
|
22
22
|
export declare function validateTriggerEventsSearch(search: Record<string, unknown>): TriggerEventsSearch;
|
|
23
23
|
//# sourceMappingURL=search.d.ts.map
|
package/dist/search.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../src/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,CAAC,EAAC,MAAM,KAAK,CAAC;AACtB,OAAO,EAAC,KAAK,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AAetF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;iBASpC,CAAC;AAEH,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,GAAG,mBAAmB,CAAC;AAElG,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAEhG"}
|
package/dist/search.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { triggerEventOutcomeSchema } from '@shipfox/api-triggers-dto';
|
|
2
1
|
import { z } from 'zod';
|
|
2
|
+
import { triggerEventOutcomes } from '#core/trigger-event.js';
|
|
3
3
|
const stringListSearchSchema = z.preprocess((value)=>typeof value === 'string' ? [
|
|
4
4
|
value
|
|
5
5
|
] : value, z.array(z.string())).optional().catch(undefined);
|
|
6
6
|
const outcomeListSearchSchema = z.preprocess((value)=>typeof value === 'string' ? [
|
|
7
7
|
value
|
|
8
|
-
] : value, z.array(
|
|
8
|
+
] : value, z.array(z.enum(triggerEventOutcomes))).optional().catch(undefined);
|
|
9
9
|
/**
|
|
10
|
-
* URL search params for the Events page.
|
|
11
|
-
* read API share one source of truth, and matches the `TriggerEventFilters` shape the data
|
|
10
|
+
* URL search params for the Events page. Matches the `TriggerEventFilters` shape the data
|
|
12
11
|
* hook consumes. Every field uses `.catch(undefined)` so a hand-edited or stale URL drops
|
|
13
12
|
* the bad param rather than throwing inside the router's `validateSearch`.
|
|
14
13
|
*/ export const triggerEventsSearchSchema = z.object({
|
package/dist/search.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/search.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"sources":["../src/search.ts"],"sourcesContent":["import {z} from 'zod';\nimport {type TriggerEventFilters, triggerEventOutcomes} from '#core/trigger-event.js';\n\nconst stringListSearchSchema = z\n .preprocess((value) => (typeof value === 'string' ? [value] : value), z.array(z.string()))\n .optional()\n .catch(undefined);\n\nconst outcomeListSearchSchema = z\n .preprocess(\n (value) => (typeof value === 'string' ? [value] : value),\n z.array(z.enum(triggerEventOutcomes)),\n )\n .optional()\n .catch(undefined);\n\n/**\n * URL search params for the Events page. Matches the `TriggerEventFilters` shape the data\n * hook consumes. Every field uses `.catch(undefined)` so a hand-edited or stale URL drops\n * the bad param rather than throwing inside the router's `validateSearch`.\n */\nexport const triggerEventsSearchSchema = z.object({\n source: stringListSearchSchema,\n event: stringListSearchSchema,\n outcome: outcomeListSearchSchema,\n // The read API requires ISO datetimes (`z.string().datetime()`); validate the same here so\n // a hand-edited or stale URL with a non-ISO date drops the param rather than forwarding it\n // and turning the first fetch into a full-page load error.\n from: z.string().datetime().optional().catch(undefined),\n to: z.string().datetime().optional().catch(undefined),\n});\n\nexport type TriggerEventsSearch = z.infer<typeof triggerEventsSearchSchema> & TriggerEventFilters;\n\nexport function validateTriggerEventsSearch(search: Record<string, unknown>): TriggerEventsSearch {\n return triggerEventsSearchSchema.parse(search);\n}\n"],"names":["z","triggerEventOutcomes","stringListSearchSchema","preprocess","value","array","string","optional","catch","undefined","outcomeListSearchSchema","enum","triggerEventsSearchSchema","object","source","event","outcome","from","datetime","to","validateTriggerEventsSearch","search","parse"],"mappings":"AAAA,SAAQA,CAAC,QAAO,MAAM;AACtB,SAAkCC,oBAAoB,QAAO,yBAAyB;AAEtF,MAAMC,yBAAyBF,EAC5BG,UAAU,CAAC,CAACC,QAAW,OAAOA,UAAU,WAAW;QAACA;KAAM,GAAGA,OAAQJ,EAAEK,KAAK,CAACL,EAAEM,MAAM,KACrFC,QAAQ,GACRC,KAAK,CAACC;AAET,MAAMC,0BAA0BV,EAC7BG,UAAU,CACT,CAACC,QAAW,OAAOA,UAAU,WAAW;QAACA;KAAM,GAAGA,OAClDJ,EAAEK,KAAK,CAACL,EAAEW,IAAI,CAACV,wBAEhBM,QAAQ,GACRC,KAAK,CAACC;AAET;;;;CAIC,GACD,OAAO,MAAMG,4BAA4BZ,EAAEa,MAAM,CAAC;IAChDC,QAAQZ;IACRa,OAAOb;IACPc,SAASN;IACT,2FAA2F;IAC3F,2FAA2F;IAC3F,2DAA2D;IAC3DO,MAAMjB,EAAEM,MAAM,GAAGY,QAAQ,GAAGX,QAAQ,GAAGC,KAAK,CAACC;IAC7CU,IAAInB,EAAEM,MAAM,GAAGY,QAAQ,GAAGX,QAAQ,GAAGC,KAAK,CAACC;AAC7C,GAAG;AAIH,OAAO,SAASW,4BAA4BC,MAA+B;IACzE,OAAOT,0BAA0BU,KAAK,CAACD;AACzC"}
|