@burdenoff/microfe-bigconsole 2026.1007.10 → 2026.1007.11

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.
Files changed (26) hide show
  1. package/dist/bigconsole/assistant/displayCopy.d.ts +33 -0
  2. package/dist/bigconsole/assistant/displayCopy.d.ts.map +1 -0
  3. package/dist/bigconsole/assistant/pageContext.d.ts +14 -0
  4. package/dist/bigconsole/assistant/pageContext.d.ts.map +1 -1
  5. package/dist/bigconsole/assistant/pageContext.js +6 -1
  6. package/dist/bigconsole/assistant/pageContext.js.map +1 -1
  7. package/dist/bigconsole/components/datasink/DataSinkCard.d.ts.map +1 -1
  8. package/dist/bigconsole/components/datasink/DataSinkCard.js +28 -27
  9. package/dist/bigconsole/components/datasink/DataSinkCard.js.map +1 -1
  10. package/dist/bigconsole/constants/backendErrors.js +96 -0
  11. package/dist/bigconsole/constants/backendErrors.js.map +1 -0
  12. package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts +23 -0
  13. package/dist/bigconsole/hooks/useDataSinkAlerts.d.ts.map +1 -1
  14. package/dist/bigconsole/hooks/useDataSinkAlerts.js +138 -113
  15. package/dist/bigconsole/hooks/useDataSinkAlerts.js.map +1 -1
  16. package/dist/bigconsole/pages/DataSinkAlertsPage.d.ts.map +1 -1
  17. package/dist/bigconsole/pages/DataSinkAlertsPage.js +53 -53
  18. package/dist/bigconsole/pages/DataSinkAlertsPage.js.map +1 -1
  19. package/dist/bigconsole/utils/backendError.d.ts +18 -0
  20. package/dist/bigconsole/utils/backendError.d.ts.map +1 -1
  21. package/dist/bigconsole/utils/backendError.js +44 -0
  22. package/dist/bigconsole/utils/backendError.js.map +1 -0
  23. package/dist/bigconsole/workflowOpen.d.ts.map +1 -1
  24. package/dist/bigconsole/workflowOpen.js +15 -14
  25. package/dist/bigconsole/workflowOpen.js.map +1 -1
  26. package/package.json +3 -3
@@ -1,221 +1,246 @@
1
1
  import { BigConsoleDataSinkAlertChannelsDocument as e, BigConsoleDataSinkAlertExecutionsDocument as t, BigConsoleDataSinkAlertsDocument as n, BigConsoleDeleteDataSinkAlertDocument as r, BigConsolePreviewDataSinkAlertDocument as i, BigConsoleUpsertDataSinkAlertDocument as a } from "../../generated/wspace-operations.js";
2
- import { useBigConsole as o } from "../context/BigConsoleContext.js";
2
+ import { BACKEND_ERROR_MESSAGES as o } from "../constants/backendErrors.js";
3
+ import { graphQLErrorCodes as s } from "../utils/backendError.js";
4
+ import { useBigConsole as c } from "../context/BigConsoleContext.js";
3
5
  import "../context/index.js";
4
- import { useCallback as s, useEffect as c, useLayoutEffect as l, useRef as u, useState as d } from "react";
5
- import { useApolloClient as f } from "@apollo/client/react";
6
+ import { useCallback as l, useEffect as u, useLayoutEffect as d, useRef as f, useState as p } from "react";
7
+ import { useApolloClient as m } from "@apollo/client/react";
6
8
  //#region src/bigconsole/hooks/useDataSinkAlerts.ts
7
- var p = {
9
+ var h = {
8
10
  owner: "",
9
11
  sink: null,
10
12
  channels: [],
11
13
  loading: !1,
12
14
  error: null,
15
+ errorCode: null,
13
16
  channelError: null
14
- }, m = (e) => e instanceof Error ? e.message : "The alert operation failed. Please try again.";
15
- function h(h, g) {
16
- let _ = f(), { currentUser: v, workspaceId: y } = o(), b = `${v?.id ?? ""}|${y ?? ""}|${h}`, x = u(null);
17
- l(() => (x.current = g ? b : null, () => {
18
- x.current = null;
19
- }), [b, g]);
20
- let [S, C] = d(p), [w, T] = d(!1), E = s(() => ({
17
+ }, g = (e) => e instanceof Error ? e.message : "The alert operation failed. Please try again.", _ = "DATASINK_NOT_FOUND", v = new Set([
18
+ _,
19
+ "E_DATASINK_NOT_FOUND",
20
+ "NOT_FOUND"
21
+ ]), y = class extends Error {
22
+ code = _;
23
+ constructor() {
24
+ super("Data sink not found in this workspace."), this.name = "AlertSinkNotFoundError";
25
+ }
26
+ };
27
+ function b(e) {
28
+ return e instanceof y ? e.code : s(e)[0] ?? null;
29
+ }
30
+ function x(e, t) {
31
+ let { error: n, errorCode: r } = t;
32
+ return n === null || r !== null && v.has(r) ? e("bigconsole.alerts.notFound", "Data sink not found.") : r === null ? n : e(`bigconsole.errors.${r}`, o[r] ?? n);
33
+ }
34
+ function S(o, s) {
35
+ let _ = m(), { currentUser: v, workspaceId: x } = c(), S = `${v?.id ?? ""}|${x ?? ""}|${o}`, C = f(null);
36
+ d(() => (C.current = s ? S : null, () => {
37
+ C.current = null;
38
+ }), [S, s]);
39
+ let [w, T] = p(h), [E, D] = p(!1), O = l(() => ({
21
40
  requiredWorkspaceAuth: !0,
22
- requiredWorkspaceId: y,
41
+ requiredWorkspaceId: x,
23
42
  queryDeduplication: !1
24
- }), [y]), D = s(() => g && !!y && !!v?.id && x.current === b, [
25
- g,
26
- y,
43
+ }), [x]), k = l(() => s && !!x && !!v?.id && C.current === S, [
44
+ s,
45
+ x,
27
46
  v?.id,
28
- b
29
- ]), O = s((e) => {
30
- if (!D()) return null;
31
- if (!e || e.id !== h || e.workspaceId !== y) throw Error("Data sink not found in this workspace.");
32
- return C((t) => ({
33
- ...t.owner === b ? t : p,
34
- owner: b,
35
- sink: t.owner === b && t.sink && t.sink.version > e.version ? t.sink : e,
47
+ S
48
+ ]), A = l((e) => {
49
+ if (!k()) return null;
50
+ if (!e || e.id !== o || e.workspaceId !== x) throw new y();
51
+ return T((t) => ({
52
+ ...t.owner === S ? t : h,
53
+ owner: S,
54
+ sink: t.owner === S && t.sink && t.sink.version > e.version ? t.sink : e,
36
55
  loading: !1,
37
- error: null
56
+ error: null,
57
+ errorCode: null
38
58
  })), e;
39
59
  }, [
40
- D,
41
- h,
42
- y,
43
- b
44
- ]), k = s(async () => {
45
- if (D()) {
46
- T(!0), C((e) => ({
47
- ...e.owner === b ? e : p,
48
- owner: b,
60
+ k,
61
+ o,
62
+ x,
63
+ S
64
+ ]), j = l(async () => {
65
+ if (k()) {
66
+ D(!0), T((e) => ({
67
+ ...e.owner === S ? e : h,
68
+ owner: S,
49
69
  loading: !e.sink,
50
- error: null
70
+ error: null,
71
+ errorCode: null
51
72
  }));
52
73
  try {
53
- return O((await _.query({
74
+ return A((await _.query({
54
75
  query: n,
55
- variables: { dataSinkId: h },
76
+ variables: { dataSinkId: o },
56
77
  fetchPolicy: "no-cache",
57
78
  errorPolicy: "none",
58
- context: E()
79
+ context: O()
59
80
  })).data?.getDataSink);
60
81
  } catch (e) {
61
- D() && C((t) => ({
82
+ k() && T((t) => ({
62
83
  ...t,
63
- owner: b,
84
+ owner: S,
64
85
  loading: !1,
65
- error: m(e)
86
+ error: g(e),
87
+ errorCode: b(e)
66
88
  }));
67
89
  } finally {
68
- D() && T(!1);
90
+ k() && D(!1);
69
91
  }
70
92
  }
71
93
  }, [
72
94
  _,
73
- h,
74
- b,
75
- D,
76
- O,
77
- E
78
- ]), A = s(async () => {
79
- if (D()) try {
95
+ o,
96
+ S,
97
+ k,
98
+ A,
99
+ O
100
+ ]), M = l(async () => {
101
+ if (k()) try {
80
102
  let t = await _.query({
81
103
  query: e,
82
- variables: { dataSinkId: h },
104
+ variables: { dataSinkId: o },
83
105
  fetchPolicy: "no-cache",
84
106
  errorPolicy: "none",
85
- context: E()
107
+ context: O()
86
108
  });
87
109
  if (!t.data) throw Error("Delivery channels did not load.");
88
110
  let n = t.data.dataSinkAlertChannels;
89
- D() && C((e) => ({
90
- ...e.owner === b ? e : p,
91
- owner: b,
111
+ k() && T((e) => ({
112
+ ...e.owner === S ? e : h,
113
+ owner: S,
92
114
  channels: n,
93
115
  channelError: null
94
116
  }));
95
117
  } catch (e) {
96
- D() && C((t) => ({
118
+ k() && T((t) => ({
97
119
  ...t,
98
- owner: b,
120
+ owner: S,
99
121
  channels: [],
100
- channelError: m(e)
122
+ channelError: g(e)
101
123
  }));
102
124
  }
103
125
  }, [
104
126
  _,
105
- h,
106
- b,
107
- D,
108
- E
109
- ]);
110
- c(() => {
127
+ o,
128
+ S,
129
+ k,
130
+ O
131
+ ]), N = l(async () => {
132
+ await j() && await M();
133
+ }, [j, M]);
134
+ u(() => {
111
135
  Promise.resolve().then(() => {
112
- D() && (k(), A());
136
+ k() && N();
113
137
  });
114
138
  let e = window.setInterval(() => {
115
- document.visibilityState === "visible" && k();
139
+ document.visibilityState === "visible" && j();
116
140
  }, 1e4);
117
141
  return () => window.clearInterval(e);
118
142
  }, [
119
- D,
120
143
  k,
121
- A
144
+ j,
145
+ N
122
146
  ]);
123
- let j = s(async (e, t) => {
124
- if (!D()) throw Error("Workspace context changed. Reopen the alert.");
125
- return O((await _.mutate({
147
+ let P = l(async (e, t) => {
148
+ if (!k()) throw Error("Workspace context changed. Reopen the alert.");
149
+ return A((await _.mutate({
126
150
  mutation: a,
127
151
  variables: {
128
- dataSinkId: h,
152
+ dataSinkId: o,
129
153
  alert: e,
130
154
  expectedVersion: t
131
155
  },
132
156
  errorPolicy: "none",
133
- context: E()
157
+ context: O()
134
158
  })).data?.upsertDataSinkAlert);
135
159
  }, [
136
160
  _,
137
- h,
138
- D,
139
- O,
140
- E
141
- ]), M = s(async (e, t) => {
142
- if (!D()) throw Error("Workspace context changed. Reopen the alert.");
143
- return O((await _.mutate({
161
+ o,
162
+ k,
163
+ A,
164
+ O
165
+ ]), F = l(async (e, t) => {
166
+ if (!k()) throw Error("Workspace context changed. Reopen the alert.");
167
+ return A((await _.mutate({
144
168
  mutation: r,
145
169
  variables: {
146
- dataSinkId: h,
170
+ dataSinkId: o,
147
171
  alertId: e,
148
172
  expectedVersion: t
149
173
  },
150
174
  errorPolicy: "none",
151
- context: E()
175
+ context: O()
152
176
  })).data?.deleteDataSinkAlert);
153
177
  }, [
154
178
  _,
155
- h,
156
- D,
157
- O,
158
- E
159
- ]), N = s(async (e, t) => {
160
- if (!D()) throw Error("Workspace context changed. Reopen the alert.");
179
+ o,
180
+ k,
181
+ A,
182
+ O
183
+ ]), I = l(async (e, t) => {
184
+ if (!k()) throw Error("Workspace context changed. Reopen the alert.");
161
185
  let n = await _.query({
162
186
  query: i,
163
187
  variables: {
164
- dataSinkId: h,
188
+ dataSinkId: o,
165
189
  condition: e,
166
190
  conditionType: t
167
191
  },
168
192
  fetchPolicy: "no-cache",
169
193
  errorPolicy: "none",
170
- context: E()
194
+ context: O()
171
195
  });
172
- if (!D()) return null;
196
+ if (!k()) return null;
173
197
  if (!n.data) throw Error("Condition preview returned no result.");
174
198
  return n.data.previewDataSinkAlert;
175
199
  }, [
176
200
  _,
177
- h,
178
- D,
179
- E
180
- ]), P = s(async (e, n) => {
181
- if (!D()) return null;
201
+ o,
202
+ k,
203
+ O
204
+ ]), L = l(async (e, n) => {
205
+ if (!k()) return null;
182
206
  let r = await _.query({
183
207
  query: t,
184
208
  variables: {
185
- dataSinkId: h,
209
+ dataSinkId: o,
186
210
  alertId: e,
187
211
  after: n,
188
212
  first: 21
189
213
  },
190
214
  fetchPolicy: "no-cache",
191
215
  errorPolicy: "none",
192
- context: E()
216
+ context: O()
193
217
  });
194
- if (!D()) return null;
218
+ if (!k()) return null;
195
219
  if (!r.data) throw Error("Execution history returned no result.");
196
- return r.data.dataSinkAlertExecutions.filter((e) => e.dataSinkId === h);
220
+ return r.data.dataSinkAlertExecutions.filter((e) => e.dataSinkId === o);
197
221
  }, [
198
222
  _,
199
- h,
200
- D,
201
- E
223
+ o,
224
+ k,
225
+ O
202
226
  ]);
203
227
  return {
204
- ...S.owner === b ? S : {
205
- ...p,
206
- loading: g
228
+ ...w.owner === S ? w : {
229
+ ...h,
230
+ loading: s
207
231
  },
208
- owner: b,
209
- refreshing: w,
210
- reload: k,
211
- reloadChannels: A,
212
- save: j,
213
- remove: M,
214
- preview: N,
215
- history: P
232
+ owner: S,
233
+ refreshing: E,
234
+ reload: j,
235
+ reloadChannels: M,
236
+ reloadSinkThenChannels: N,
237
+ save: P,
238
+ remove: F,
239
+ preview: I,
240
+ history: L
216
241
  };
217
242
  }
218
243
  //#endregion
219
- export { m as alertErrorMessage, h as useDataSinkAlerts };
244
+ export { g as alertErrorMessage, x as describeAlertLoadFailure, S as useDataSinkAlerts };
220
245
 
221
246
  //# sourceMappingURL=useDataSinkAlerts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useDataSinkAlerts.js","names":[],"sources":["../../../src/bigconsole/hooks/useDataSinkAlerts.ts"],"sourcesContent":["import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useBigConsole } from '../context';\nimport {\n BigConsoleDataSinkAlertsDocument,\n BigConsoleDataSinkAlertChannelsDocument,\n BigConsoleDataSinkAlertExecutionsDocument,\n BigConsolePreviewDataSinkAlertDocument,\n BigConsoleUpsertDataSinkAlertDocument,\n BigConsoleDeleteDataSinkAlertDocument,\n type BigConsoleDataSinkAlertsQuery,\n type BigConsoleDataSinkAlertChannelsQuery,\n type BigConsoleDataSinkAlertExecutionsQuery,\n type BigConsolePreviewDataSinkAlertQuery,\n type BigConsoleUpsertDataSinkAlertMutation,\n type BigConsoleDeleteDataSinkAlertMutation,\n} from '../../generated/wspace-operations';\nimport type { DataSinkAlertInput, DataSinkAlertConditionType } from '../../generated/wspace-types';\n\nexport type AlertSink = NonNullable<BigConsoleDataSinkAlertsQuery['getDataSink']>;\nexport type AlertRule = NonNullable<AlertSink['alerts']>[number];\nexport type AlertChannel = BigConsoleDataSinkAlertChannelsQuery['dataSinkAlertChannels'][number];\nexport type AlertExecution = BigConsoleDataSinkAlertExecutionsQuery['dataSinkAlertExecutions'][number];\nexport type AlertPreview = BigConsolePreviewDataSinkAlertQuery['previewDataSinkAlert'];\n\ninterface AlertState {\n owner: string;\n sink: AlertSink | null;\n channels: AlertChannel[];\n loading: boolean;\n error: string | null;\n channelError: string | null;\n}\nconst EMPTY: AlertState = { owner: '', sink: null, channels: [], loading: false, error: null, channelError: null };\nexport const alertErrorMessage = (error: unknown): string =>\n error instanceof Error ? error.message : 'The alert operation failed. Please try again.';\n\n/** Every read and write uses the selected workspace; late requests cannot populate a new owner. */\nexport function useDataSinkAlerts(dataSinkId: string, enabled: boolean) {\n const client = useApolloClient();\n const { currentUser, workspaceId } = useBigConsole();\n const owner = `${currentUser?.id ?? ''}|${workspaceId ?? ''}|${dataSinkId}`;\n const activeOwner = useRef<string | null>(null);\n useLayoutEffect(() => {\n activeOwner.current = enabled ? owner : null;\n return () => {\n activeOwner.current = null;\n };\n }, [owner, enabled]);\n const [state, setState] = useState<AlertState>(EMPTY);\n const [refreshing, setRefreshing] = useState(false);\n const context = useCallback(\n () => ({ requiredWorkspaceAuth: true, requiredWorkspaceId: workspaceId, queryDeduplication: false }),\n [workspaceId]\n );\n const ownsRequest = useCallback(\n () => enabled && !!workspaceId && !!currentUser?.id && activeOwner.current === owner,\n [enabled, workspaceId, currentUser?.id, owner]\n );\n const acceptSink = useCallback(\n (sink: AlertSink | null | undefined) => {\n if (!ownsRequest()) return null;\n if (!sink || sink.id !== dataSinkId || sink.workspaceId !== workspaceId)\n throw new Error('Data sink not found in this workspace.');\n setState((previous) => ({\n ...(previous.owner === owner ? previous : EMPTY),\n owner,\n sink: previous.owner === owner && previous.sink && previous.sink.version > sink.version ? previous.sink : sink,\n loading: false,\n error: null,\n }));\n return sink;\n },\n [ownsRequest, dataSinkId, workspaceId, owner]\n );\n const reload = useCallback(async () => {\n if (!ownsRequest()) return;\n setRefreshing(true);\n setState((previous) => ({\n ...(previous.owner === owner ? previous : EMPTY),\n owner,\n loading: !previous.sink,\n error: null,\n }));\n try {\n const result = await client.query<BigConsoleDataSinkAlertsQuery>({\n query: BigConsoleDataSinkAlertsDocument,\n variables: { dataSinkId },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: context(),\n });\n return acceptSink(result.data?.getDataSink);\n } catch (error) {\n if (ownsRequest())\n setState((previous) => ({ ...previous, owner, loading: false, error: alertErrorMessage(error) }));\n } finally {\n if (ownsRequest()) setRefreshing(false);\n }\n }, [client, dataSinkId, owner, ownsRequest, acceptSink, context]);\n const reloadChannels = useCallback(async () => {\n if (!ownsRequest()) return;\n try {\n const result = await client.query<BigConsoleDataSinkAlertChannelsQuery>({\n query: BigConsoleDataSinkAlertChannelsDocument,\n variables: { dataSinkId },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: context(),\n });\n if (!result.data) throw new Error('Delivery channels did not load.');\n const channels = result.data.dataSinkAlertChannels;\n if (ownsRequest())\n setState((previous) => ({\n ...(previous.owner === owner ? previous : EMPTY),\n owner,\n channels,\n channelError: null,\n }));\n } catch (error) {\n if (ownsRequest())\n setState((previous) => ({ ...previous, owner, channels: [], channelError: alertErrorMessage(error) }));\n }\n }, [client, dataSinkId, owner, ownsRequest, context]);\n useEffect(() => {\n void Promise.resolve().then(() => {\n if (ownsRequest()) {\n void reload();\n void reloadChannels();\n }\n });\n const timer = window.setInterval(() => {\n if (document.visibilityState === 'visible') void reload();\n }, 10000);\n return () => window.clearInterval(timer);\n }, [ownsRequest, reload, reloadChannels]);\n const save = useCallback(\n async (alert: DataSinkAlertInput, expectedVersion: number) => {\n if (!ownsRequest()) throw new Error('Workspace context changed. Reopen the alert.');\n const result = await client.mutate<BigConsoleUpsertDataSinkAlertMutation>({\n mutation: BigConsoleUpsertDataSinkAlertDocument,\n variables: { dataSinkId, alert, expectedVersion },\n errorPolicy: 'none',\n context: context(),\n });\n return acceptSink(result.data?.upsertDataSinkAlert);\n },\n [client, dataSinkId, ownsRequest, acceptSink, context]\n );\n const remove = useCallback(\n async (alertId: string, expectedVersion: number) => {\n if (!ownsRequest()) throw new Error('Workspace context changed. Reopen the alert.');\n const result = await client.mutate<BigConsoleDeleteDataSinkAlertMutation>({\n mutation: BigConsoleDeleteDataSinkAlertDocument,\n variables: { dataSinkId, alertId, expectedVersion },\n errorPolicy: 'none',\n context: context(),\n });\n return acceptSink(result.data?.deleteDataSinkAlert);\n },\n [client, dataSinkId, ownsRequest, acceptSink, context]\n );\n const preview = useCallback(\n async (condition: string, conditionType: DataSinkAlertConditionType) => {\n if (!ownsRequest()) throw new Error('Workspace context changed. Reopen the alert.');\n const result = await client.query<BigConsolePreviewDataSinkAlertQuery>({\n query: BigConsolePreviewDataSinkAlertDocument,\n variables: { dataSinkId, condition, conditionType },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: context(),\n });\n if (!ownsRequest()) return null;\n if (!result.data) throw new Error('Condition preview returned no result.');\n return result.data.previewDataSinkAlert;\n },\n [client, dataSinkId, ownsRequest, context]\n );\n const history = useCallback(\n async (alertId?: string, after?: string) => {\n if (!ownsRequest()) return null;\n const result = await client.query<BigConsoleDataSinkAlertExecutionsQuery>({\n query: BigConsoleDataSinkAlertExecutionsDocument,\n variables: { dataSinkId, alertId, after, first: 21 },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: context(),\n });\n if (!ownsRequest()) return null;\n if (!result.data) throw new Error('Execution history returned no result.');\n return result.data.dataSinkAlertExecutions.filter((row) => row.dataSinkId === dataSinkId);\n },\n [client, dataSinkId, ownsRequest, context]\n );\n return {\n ...(state.owner === owner ? state : { ...EMPTY, loading: enabled }),\n owner,\n refreshing,\n reload,\n reloadChannels,\n save,\n remove,\n preview,\n history,\n };\n}\n"],"mappings":";;;;;;AAiCA,IAAM,IAAoB;CAAE,OAAO;CAAI,MAAM;CAAM,UAAU,EAAE;CAAE,SAAS;CAAO,OAAO;CAAM,cAAc;CAAM,EACrG,KAAqB,MAChC,aAAiB,QAAQ,EAAM,UAAU;AAG3C,SAAgB,EAAkB,GAAoB,GAAkB;CACtE,IAAM,IAAS,GAAiB,EAC1B,EAAE,gBAAa,mBAAgB,GAAe,EAC9C,IAAQ,GAAG,GAAa,MAAM,GAAG,GAAG,KAAe,GAAG,GAAG,KACzD,IAAc,EAAsB,KAAK;AAC/C,UACE,EAAY,UAAU,IAAU,IAAQ,YAC3B;AACX,IAAY,UAAU;KAEvB,CAAC,GAAO,EAAQ,CAAC;CACpB,IAAM,CAAC,GAAO,KAAY,EAAqB,EAAM,EAC/C,CAAC,GAAY,KAAiB,EAAS,GAAM,EAC7C,IAAU,SACP;EAAE,uBAAuB;EAAM,qBAAqB;EAAa,oBAAoB;EAAO,GACnG,CAAC,EAAY,CACd,EACK,IAAc,QACZ,KAAW,CAAC,CAAC,KAAe,CAAC,CAAC,GAAa,MAAM,EAAY,YAAY,GAC/E;EAAC;EAAS;EAAa,GAAa;EAAI;EAAM,CAC/C,EACK,IAAa,GAChB,MAAuC;AACtC,MAAI,CAAC,GAAa,CAAE,QAAO;AAC3B,MAAI,CAAC,KAAQ,EAAK,OAAO,KAAc,EAAK,gBAAgB,EAC1D,OAAU,MAAM,yCAAyC;AAQ3D,SAPA,GAAU,OAAc;GACtB,GAAI,EAAS,UAAU,IAAQ,IAAW;GAC1C;GACA,MAAM,EAAS,UAAU,KAAS,EAAS,QAAQ,EAAS,KAAK,UAAU,EAAK,UAAU,EAAS,OAAO;GAC1G,SAAS;GACT,OAAO;GACR,EAAE,EACI;IAET;EAAC;EAAa;EAAY;EAAa;EAAM,CAC9C,EACK,IAAS,EAAY,YAAY;AAChC,SAAa,EAElB;GADA,EAAc,GAAK,EACnB,GAAU,OAAc;IACtB,GAAI,EAAS,UAAU,IAAQ,IAAW;IAC1C;IACA,SAAS,CAAC,EAAS;IACnB,OAAO;IACR,EAAE;AACH,OAAI;AAQF,WAAO,GAPQ,MAAM,EAAO,MAAqC;KAC/D,OAAO;KACP,WAAW,EAAE,eAAY;KACzB,aAAa;KACb,aAAa;KACb,SAAS,GAAS;KACnB,CAAC,EACuB,MAAM,YAAY;YACpC,GAAO;AACd,IAAI,GAAa,IACf,GAAU,OAAc;KAAE,GAAG;KAAU;KAAO,SAAS;KAAO,OAAO,EAAkB,EAAM;KAAE,EAAE;aAC3F;AACR,IAAI,GAAa,IAAE,EAAc,GAAM;;;IAExC;EAAC;EAAQ;EAAY;EAAO;EAAa;EAAY;EAAQ,CAAC,EAC3D,IAAiB,EAAY,YAAY;AACxC,SAAa,CAClB,KAAI;GACF,IAAM,IAAS,MAAM,EAAO,MAA4C;IACtE,OAAO;IACP,WAAW,EAAE,eAAY;IACzB,aAAa;IACb,aAAa;IACb,SAAS,GAAS;IACnB,CAAC;AACF,OAAI,CAAC,EAAO,KAAM,OAAU,MAAM,kCAAkC;GACpE,IAAM,IAAW,EAAO,KAAK;AAC7B,GAAI,GAAa,IACf,GAAU,OAAc;IACtB,GAAI,EAAS,UAAU,IAAQ,IAAW;IAC1C;IACA;IACA,cAAc;IACf,EAAE;WACE,GAAO;AACd,GAAI,GAAa,IACf,GAAU,OAAc;IAAE,GAAG;IAAU;IAAO,UAAU,EAAE;IAAE,cAAc,EAAkB,EAAM;IAAE,EAAE;;IAEzG;EAAC;EAAQ;EAAY;EAAO;EAAa;EAAQ,CAAC;AACrD,SAAgB;AACT,UAAQ,SAAS,CAAC,WAAW;AAChC,GAAI,GAAa,KACV,GAAQ,EACR,GAAgB;IAEvB;EACF,IAAM,IAAQ,OAAO,kBAAkB;AACrC,GAAI,SAAS,oBAAoB,aAAgB,GAAQ;KACxD,IAAM;AACT,eAAa,OAAO,cAAc,EAAM;IACvC;EAAC;EAAa;EAAQ;EAAe,CAAC;CACzC,IAAM,IAAO,EACX,OAAO,GAA2B,MAA4B;AAC5D,MAAI,CAAC,GAAa,CAAE,OAAU,MAAM,+CAA+C;AAOnF,SAAO,GANQ,MAAM,EAAO,OAA8C;GACxE,UAAU;GACV,WAAW;IAAE;IAAY;IAAO;IAAiB;GACjD,aAAa;GACb,SAAS,GAAS;GACnB,CAAC,EACuB,MAAM,oBAAoB;IAErD;EAAC;EAAQ;EAAY;EAAa;EAAY;EAAQ,CACvD,EACK,IAAS,EACb,OAAO,GAAiB,MAA4B;AAClD,MAAI,CAAC,GAAa,CAAE,OAAU,MAAM,+CAA+C;AAOnF,SAAO,GANQ,MAAM,EAAO,OAA8C;GACxE,UAAU;GACV,WAAW;IAAE;IAAY;IAAS;IAAiB;GACnD,aAAa;GACb,SAAS,GAAS;GACnB,CAAC,EACuB,MAAM,oBAAoB;IAErD;EAAC;EAAQ;EAAY;EAAa;EAAY;EAAQ,CACvD,EACK,IAAU,EACd,OAAO,GAAmB,MAA8C;AACtE,MAAI,CAAC,GAAa,CAAE,OAAU,MAAM,+CAA+C;EACnF,IAAM,IAAS,MAAM,EAAO,MAA2C;GACrE,OAAO;GACP,WAAW;IAAE;IAAY;IAAW;IAAe;GACnD,aAAa;GACb,aAAa;GACb,SAAS,GAAS;GACnB,CAAC;AACF,MAAI,CAAC,GAAa,CAAE,QAAO;AAC3B,MAAI,CAAC,EAAO,KAAM,OAAU,MAAM,wCAAwC;AAC1E,SAAO,EAAO,KAAK;IAErB;EAAC;EAAQ;EAAY;EAAa;EAAQ,CAC3C,EACK,IAAU,EACd,OAAO,GAAkB,MAAmB;AAC1C,MAAI,CAAC,GAAa,CAAE,QAAO;EAC3B,IAAM,IAAS,MAAM,EAAO,MAA8C;GACxE,OAAO;GACP,WAAW;IAAE;IAAY;IAAS;IAAO,OAAO;IAAI;GACpD,aAAa;GACb,aAAa;GACb,SAAS,GAAS;GACnB,CAAC;AACF,MAAI,CAAC,GAAa,CAAE,QAAO;AAC3B,MAAI,CAAC,EAAO,KAAM,OAAU,MAAM,wCAAwC;AAC1E,SAAO,EAAO,KAAK,wBAAwB,QAAQ,MAAQ,EAAI,eAAe,EAAW;IAE3F;EAAC;EAAQ;EAAY;EAAa;EAAQ,CAC3C;AACD,QAAO;EACL,GAAI,EAAM,UAAU,IAAQ,IAAQ;GAAE,GAAG;GAAO,SAAS;GAAS;EAClE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACD"}
1
+ {"version":3,"file":"useDataSinkAlerts.js","names":[],"sources":["../../../src/bigconsole/hooks/useDataSinkAlerts.ts"],"sourcesContent":["import { useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';\nimport { useApolloClient } from '@apollo/client/react';\nimport { useBigConsole } from '../context';\nimport {\n BigConsoleDataSinkAlertsDocument,\n BigConsoleDataSinkAlertChannelsDocument,\n BigConsoleDataSinkAlertExecutionsDocument,\n BigConsolePreviewDataSinkAlertDocument,\n BigConsoleUpsertDataSinkAlertDocument,\n BigConsoleDeleteDataSinkAlertDocument,\n type BigConsoleDataSinkAlertsQuery,\n type BigConsoleDataSinkAlertChannelsQuery,\n type BigConsoleDataSinkAlertExecutionsQuery,\n type BigConsolePreviewDataSinkAlertQuery,\n type BigConsoleUpsertDataSinkAlertMutation,\n type BigConsoleDeleteDataSinkAlertMutation,\n} from '../../generated/wspace-operations';\nimport type { DataSinkAlertInput, DataSinkAlertConditionType } from '../../generated/wspace-types';\nimport { BACKEND_ERROR_MESSAGES } from '../constants/backendErrors';\nimport { graphQLErrorCodes } from '../utils/backendError';\n\nexport type AlertSink = NonNullable<BigConsoleDataSinkAlertsQuery['getDataSink']>;\nexport type AlertRule = NonNullable<AlertSink['alerts']>[number];\nexport type AlertChannel = BigConsoleDataSinkAlertChannelsQuery['dataSinkAlertChannels'][number];\nexport type AlertExecution = BigConsoleDataSinkAlertExecutionsQuery['dataSinkAlertExecutions'][number];\nexport type AlertPreview = BigConsolePreviewDataSinkAlertQuery['previewDataSinkAlert'];\n\ninterface AlertState {\n owner: string;\n sink: AlertSink | null;\n channels: AlertChannel[];\n loading: boolean;\n error: string | null;\n /** The first GraphQL `extensions.code` behind `error`, or the client's own not-found marker. */\n errorCode: string | null;\n channelError: string | null;\n}\nconst EMPTY: AlertState = {\n owner: '',\n sink: null,\n channels: [],\n loading: false,\n error: null,\n errorCode: null,\n channelError: null,\n};\nexport const alertErrorMessage = (error: unknown): string =>\n error instanceof Error ? error.message : 'The alert operation failed. Please try again.';\n\n/**\n * \"This data sink is not here\": the client's own check (`getDataSink` answers\n * `null`, or a sink from another workspace) and the server's codes for it.\n */\nexport const ALERT_SINK_NOT_FOUND = 'DATASINK_NOT_FOUND';\nconst SINK_NOT_FOUND_CODES: ReadonlySet<string> = new Set([ALERT_SINK_NOT_FOUND, 'E_DATASINK_NOT_FOUND', 'NOT_FOUND']);\n\nclass AlertSinkNotFoundError extends Error {\n readonly code = ALERT_SINK_NOT_FOUND;\n constructor() {\n super('Data sink not found in this workspace.');\n this.name = 'AlertSinkNotFoundError';\n }\n}\n\nfunction alertErrorCode(error: unknown): string | null {\n if (error instanceof AlertSinkNotFoundError) return error.code;\n return graphQLErrorCodes(error)[0] ?? null;\n}\n\ntype Translate = (key: string, fallback: string) => string;\n\n/**\n * What the alerts page says when the data sink could not be loaded\n * (BOFF-8060 i18n B3). The server's English never wins over a keyed string:\n *\n * - not found (or nothing recorded) → `bigconsole.alerts.notFound`;\n * - a coded failure → `bigconsole.errors.<CODE>`, the catalog the rest of\n * BigConsole localizes backend errors with;\n * - only an uncoded failure falls back to its raw message, which has no key.\n */\nexport function describeAlertLoadFailure(\n t: Translate,\n failure: { error: string | null; errorCode: string | null }\n): string {\n const { error, errorCode } = failure;\n if (error === null || (errorCode !== null && SINK_NOT_FOUND_CODES.has(errorCode)))\n return t('bigconsole.alerts.notFound', 'Data sink not found.');\n if (errorCode !== null) return t(`bigconsole.errors.${errorCode}`, BACKEND_ERROR_MESSAGES[errorCode] ?? error);\n return error;\n}\n\n/** Every read and write uses the selected workspace; late requests cannot populate a new owner. */\nexport function useDataSinkAlerts(dataSinkId: string, enabled: boolean) {\n const client = useApolloClient();\n const { currentUser, workspaceId } = useBigConsole();\n const owner = `${currentUser?.id ?? ''}|${workspaceId ?? ''}|${dataSinkId}`;\n const activeOwner = useRef<string | null>(null);\n useLayoutEffect(() => {\n activeOwner.current = enabled ? owner : null;\n return () => {\n activeOwner.current = null;\n };\n }, [owner, enabled]);\n const [state, setState] = useState<AlertState>(EMPTY);\n const [refreshing, setRefreshing] = useState(false);\n const context = useCallback(\n () => ({ requiredWorkspaceAuth: true, requiredWorkspaceId: workspaceId, queryDeduplication: false }),\n [workspaceId]\n );\n const ownsRequest = useCallback(\n () => enabled && !!workspaceId && !!currentUser?.id && activeOwner.current === owner,\n [enabled, workspaceId, currentUser?.id, owner]\n );\n const acceptSink = useCallback(\n (sink: AlertSink | null | undefined) => {\n if (!ownsRequest()) return null;\n if (!sink || sink.id !== dataSinkId || sink.workspaceId !== workspaceId) throw new AlertSinkNotFoundError();\n setState((previous) => ({\n ...(previous.owner === owner ? previous : EMPTY),\n owner,\n sink: previous.owner === owner && previous.sink && previous.sink.version > sink.version ? previous.sink : sink,\n loading: false,\n error: null,\n errorCode: null,\n }));\n return sink;\n },\n [ownsRequest, dataSinkId, workspaceId, owner]\n );\n const reload = useCallback(async () => {\n if (!ownsRequest()) return;\n setRefreshing(true);\n setState((previous) => ({\n ...(previous.owner === owner ? previous : EMPTY),\n owner,\n loading: !previous.sink,\n error: null,\n errorCode: null,\n }));\n try {\n const result = await client.query<BigConsoleDataSinkAlertsQuery>({\n query: BigConsoleDataSinkAlertsDocument,\n variables: { dataSinkId },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: context(),\n });\n return acceptSink(result.data?.getDataSink);\n } catch (error) {\n if (ownsRequest())\n setState((previous) => ({\n ...previous,\n owner,\n loading: false,\n error: alertErrorMessage(error),\n errorCode: alertErrorCode(error),\n }));\n } finally {\n if (ownsRequest()) setRefreshing(false);\n }\n }, [client, dataSinkId, owner, ownsRequest, acceptSink, context]);\n const reloadChannels = useCallback(async () => {\n if (!ownsRequest()) return;\n try {\n const result = await client.query<BigConsoleDataSinkAlertChannelsQuery>({\n query: BigConsoleDataSinkAlertChannelsDocument,\n variables: { dataSinkId },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: context(),\n });\n if (!result.data) throw new Error('Delivery channels did not load.');\n const channels = result.data.dataSinkAlertChannels;\n if (ownsRequest())\n setState((previous) => ({\n ...(previous.owner === owner ? previous : EMPTY),\n owner,\n channels,\n channelError: null,\n }));\n } catch (error) {\n if (ownsRequest())\n setState((previous) => ({ ...previous, owner, channels: [], channelError: alertErrorMessage(error) }));\n }\n }, [client, dataSinkId, owner, ownsRequest, context]);\n /**\n * The sink first, its delivery channels only once it exists (BOFF-8060 i18n\n * B3). `dataSinkAlertChannels` answers an unknown sink with the server's\n * English \"DataSink with ID … not found\", which the shell turns into an\n * error toast on top of the page's own keyed not-found message. Asking only\n * for a sink we hold means an unknown id gets the one localized message.\n */\n const reloadSinkThenChannels = useCallback(async () => {\n const sink = await reload();\n if (sink) await reloadChannels();\n }, [reload, reloadChannels]);\n useEffect(() => {\n void Promise.resolve().then(() => {\n if (ownsRequest()) void reloadSinkThenChannels();\n });\n const timer = window.setInterval(() => {\n if (document.visibilityState === 'visible') void reload();\n }, 10000);\n return () => window.clearInterval(timer);\n }, [ownsRequest, reload, reloadSinkThenChannels]);\n const save = useCallback(\n async (alert: DataSinkAlertInput, expectedVersion: number) => {\n if (!ownsRequest()) throw new Error('Workspace context changed. Reopen the alert.');\n const result = await client.mutate<BigConsoleUpsertDataSinkAlertMutation>({\n mutation: BigConsoleUpsertDataSinkAlertDocument,\n variables: { dataSinkId, alert, expectedVersion },\n errorPolicy: 'none',\n context: context(),\n });\n return acceptSink(result.data?.upsertDataSinkAlert);\n },\n [client, dataSinkId, ownsRequest, acceptSink, context]\n );\n const remove = useCallback(\n async (alertId: string, expectedVersion: number) => {\n if (!ownsRequest()) throw new Error('Workspace context changed. Reopen the alert.');\n const result = await client.mutate<BigConsoleDeleteDataSinkAlertMutation>({\n mutation: BigConsoleDeleteDataSinkAlertDocument,\n variables: { dataSinkId, alertId, expectedVersion },\n errorPolicy: 'none',\n context: context(),\n });\n return acceptSink(result.data?.deleteDataSinkAlert);\n },\n [client, dataSinkId, ownsRequest, acceptSink, context]\n );\n const preview = useCallback(\n async (condition: string, conditionType: DataSinkAlertConditionType) => {\n if (!ownsRequest()) throw new Error('Workspace context changed. Reopen the alert.');\n const result = await client.query<BigConsolePreviewDataSinkAlertQuery>({\n query: BigConsolePreviewDataSinkAlertDocument,\n variables: { dataSinkId, condition, conditionType },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: context(),\n });\n if (!ownsRequest()) return null;\n if (!result.data) throw new Error('Condition preview returned no result.');\n return result.data.previewDataSinkAlert;\n },\n [client, dataSinkId, ownsRequest, context]\n );\n const history = useCallback(\n async (alertId?: string, after?: string) => {\n if (!ownsRequest()) return null;\n const result = await client.query<BigConsoleDataSinkAlertExecutionsQuery>({\n query: BigConsoleDataSinkAlertExecutionsDocument,\n variables: { dataSinkId, alertId, after, first: 21 },\n fetchPolicy: 'no-cache',\n errorPolicy: 'none',\n context: context(),\n });\n if (!ownsRequest()) return null;\n if (!result.data) throw new Error('Execution history returned no result.');\n return result.data.dataSinkAlertExecutions.filter((row) => row.dataSinkId === dataSinkId);\n },\n [client, dataSinkId, ownsRequest, context]\n );\n return {\n ...(state.owner === owner ? state : { ...EMPTY, loading: enabled }),\n owner,\n refreshing,\n reload,\n reloadChannels,\n reloadSinkThenChannels,\n save,\n remove,\n preview,\n history,\n };\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"DataSinkAlertsPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/DataSinkAlertsPage.tsx"],"names":[],"mappings":"AAmCA,MAAM,CAAC,OAAO,UAAU,kBAAkB,gCASzC"}
1
+ {"version":3,"file":"DataSinkAlertsPage.d.ts","sourceRoot":"","sources":["../../../src/bigconsole/pages/DataSinkAlertsPage.tsx"],"names":[],"mappings":"AAyCA,MAAM,CAAC,OAAO,UAAU,kBAAkB,gCASzC"}