@marinoscar/platform-web 0.1.0-next.18 → 0.1.0-next.20
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/CHANGELOG.md +32 -0
- package/README.md +5 -3
- package/dist/ai/headless/errors.d.ts +7 -0
- package/dist/ai/headless/errors.d.ts.map +1 -1
- package/dist/ai/headless/errors.js +2 -0
- package/dist/ai/headless/errors.js.map +1 -1
- package/dist/ai/headless/types.d.ts +30 -5
- package/dist/ai/headless/types.d.ts.map +1 -1
- package/dist/ai/headless/types.js +22 -10
- package/dist/ai/headless/types.js.map +1 -1
- package/dist/ai/headless/use-ai-usage.d.ts +5 -2
- package/dist/ai/headless/use-ai-usage.d.ts.map +1 -1
- package/dist/ai/headless/use-ai-usage.js +15 -5
- package/dist/ai/headless/use-ai-usage.js.map +1 -1
- package/dist/ai/ui/AiUsagePage.d.ts.map +1 -1
- package/dist/ai/ui/AiUsagePage.js +7 -5
- package/dist/ai/ui/AiUsagePage.js.map +1 -1
- package/dist/ai/ui/shared/AiErrorAlert.d.ts.map +1 -1
- package/dist/ai/ui/shared/AiErrorAlert.js +5 -1
- package/dist/ai/ui/shared/AiErrorAlert.js.map +1 -1
- package/dist/ai/ui/usage/aiUsageFormat.d.ts +9 -6
- package/dist/ai/ui/usage/aiUsageFormat.d.ts.map +1 -1
- package/dist/ai/ui/usage/aiUsageFormat.js +28 -12
- package/dist/ai/ui/usage/aiUsageFormat.js.map +1 -1
- package/dist/ai/ui/user/MyAiUsageSection.d.ts.map +1 -1
- package/dist/ai/ui/user/MyAiUsageSection.js +5 -2
- package/dist/ai/ui/user/MyAiUsageSection.js.map +1 -1
- package/dist/ai/ui/user/aiErrorText.d.ts +4 -1
- package/dist/ai/ui/user/aiErrorText.d.ts.map +1 -1
- package/dist/ai/ui/user/aiErrorText.js +10 -2
- package/dist/ai/ui/user/aiErrorText.js.map +1 -1
- package/dist/alerts/headless/client.d.ts +134 -0
- package/dist/alerts/headless/client.d.ts.map +1 -0
- package/dist/alerts/headless/client.js +105 -0
- package/dist/alerts/headless/client.js.map +1 -0
- package/dist/alerts/headless/format.d.ts +95 -0
- package/dist/alerts/headless/format.d.ts.map +1 -0
- package/dist/alerts/headless/format.js +164 -0
- package/dist/alerts/headless/format.js.map +1 -0
- package/dist/alerts/headless/hooks.d.ts +245 -0
- package/dist/alerts/headless/hooks.d.ts.map +1 -0
- package/dist/alerts/headless/hooks.js +315 -0
- package/dist/alerts/headless/hooks.js.map +1 -0
- package/dist/alerts/headless/index.d.ts +9 -0
- package/dist/alerts/headless/index.d.ts.map +1 -0
- package/dist/alerts/headless/index.js +9 -0
- package/dist/alerts/headless/index.js.map +1 -0
- package/dist/alerts/headless/rule-draft.d.ts +175 -0
- package/dist/alerts/headless/rule-draft.d.ts.map +1 -0
- package/dist/alerts/headless/rule-draft.js +261 -0
- package/dist/alerts/headless/rule-draft.js.map +1 -0
- package/dist/alerts/ui/AlertIncidentDrawer.d.ts +30 -0
- package/dist/alerts/ui/AlertIncidentDrawer.d.ts.map +1 -0
- package/dist/alerts/ui/AlertIncidentDrawer.js +33 -0
- package/dist/alerts/ui/AlertIncidentDrawer.js.map +1 -0
- package/dist/alerts/ui/AlertRuleDialog.d.ts +47 -0
- package/dist/alerts/ui/AlertRuleDialog.d.ts.map +1 -0
- package/dist/alerts/ui/AlertRuleDialog.js +124 -0
- package/dist/alerts/ui/AlertRuleDialog.js.map +1 -0
- package/dist/alerts/ui/AlertRuleTestResult.d.ts +23 -0
- package/dist/alerts/ui/AlertRuleTestResult.d.ts.map +1 -0
- package/dist/alerts/ui/AlertRuleTestResult.js +30 -0
- package/dist/alerts/ui/AlertRuleTestResult.js.map +1 -0
- package/dist/alerts/ui/AlertsPage.d.ts +41 -0
- package/dist/alerts/ui/AlertsPage.d.ts.map +1 -0
- package/dist/alerts/ui/AlertsPage.js +238 -0
- package/dist/alerts/ui/AlertsPage.js.map +1 -0
- package/dist/alerts/ui/FiringAlertsBanner.d.ts +28 -0
- package/dist/alerts/ui/FiringAlertsBanner.d.ts.map +1 -0
- package/dist/alerts/ui/FiringAlertsBanner.js +45 -0
- package/dist/alerts/ui/FiringAlertsBanner.js.map +1 -0
- package/dist/alerts/ui/copy.d.ts +15 -0
- package/dist/alerts/ui/copy.d.ts.map +1 -0
- package/dist/alerts/ui/copy.js +14 -0
- package/dist/alerts/ui/copy.js.map +1 -0
- package/dist/alerts/ui/index.d.ts +14 -0
- package/dist/alerts/ui/index.d.ts.map +1 -0
- package/dist/alerts/ui/index.js +12 -0
- package/dist/alerts/ui/index.js.map +1 -0
- package/dist/alerts/ui/parts.d.ts +26 -0
- package/dist/alerts/ui/parts.d.ts.map +1 -0
- package/dist/alerts/ui/parts.js +27 -0
- package/dist/alerts/ui/parts.js.map +1 -0
- package/dist/alerts/ui/settings.d.ts +27 -0
- package/dist/alerts/ui/settings.d.ts.map +1 -0
- package/dist/alerts/ui/settings.js +37 -0
- package/dist/alerts/ui/settings.js.map +1 -0
- package/dist/core/http/client.d.ts.map +1 -1
- package/dist/core/http/client.js +7 -0
- package/dist/core/http/client.js.map +1 -1
- package/dist/core/http/sse.d.ts.map +1 -1
- package/dist/core/http/sse.js +3 -1
- package/dist/core/http/sse.js.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +1 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/time-zone/format.d.ts +6 -2
- package/dist/core/time-zone/format.d.ts.map +1 -1
- package/dist/core/time-zone/format.js +27 -25
- package/dist/core/time-zone/format.js.map +1 -1
- package/dist/core/time-zone/request.d.ts +17 -0
- package/dist/core/time-zone/request.d.ts.map +1 -0
- package/dist/core/time-zone/request.js +26 -0
- package/dist/core/time-zone/request.js.map +1 -0
- package/dist/datatable/headless/export/exportModel.d.ts +7 -1
- package/dist/datatable/headless/export/exportModel.d.ts.map +1 -1
- package/dist/datatable/headless/export/exportModel.js +10 -2
- package/dist/datatable/headless/export/exportModel.js.map +1 -1
- package/dist/datatable/headless/filter/dateRange.d.ts +40 -0
- package/dist/datatable/headless/filter/dateRange.d.ts.map +1 -0
- package/dist/datatable/headless/filter/dateRange.js +53 -0
- package/dist/datatable/headless/filter/dateRange.js.map +1 -0
- package/dist/datatable/headless/filter/filterTypes.d.ts.map +1 -1
- package/dist/datatable/headless/filter/filterTypes.js +24 -4
- package/dist/datatable/headless/filter/filterTypes.js.map +1 -1
- package/dist/datatable/headless/index.d.ts +2 -0
- package/dist/datatable/headless/index.d.ts.map +1 -1
- package/dist/datatable/headless/index.js +1 -0
- package/dist/datatable/headless/index.js.map +1 -1
- package/dist/db-backup/internal/time-zones.d.ts +3 -0
- package/dist/db-backup/internal/time-zones.d.ts.map +1 -0
- package/dist/db-backup/internal/time-zones.js +24 -0
- package/dist/db-backup/internal/time-zones.js.map +1 -0
- package/dist/db-backup/ui/DbBackupConfigPanel.d.ts +11 -6
- package/dist/db-backup/ui/DbBackupConfigPanel.d.ts.map +1 -1
- package/dist/db-backup/ui/DbBackupConfigPanel.js +18 -11
- package/dist/db-backup/ui/DbBackupConfigPanel.js.map +1 -1
- package/dist/identity/ui/tokens/CreatePatDialog.d.ts +17 -0
- package/dist/identity/ui/tokens/CreatePatDialog.d.ts.map +1 -1
- package/dist/identity/ui/tokens/CreatePatDialog.js +34 -11
- package/dist/identity/ui/tokens/CreatePatDialog.js.map +1 -1
- package/dist/nodes/headless/api.d.ts +3 -1
- package/dist/nodes/headless/api.d.ts.map +1 -1
- package/dist/nodes/headless/api.js +22 -0
- package/dist/nodes/headless/api.js.map +1 -1
- package/dist/nodes/headless/index.d.ts +7 -2
- package/dist/nodes/headless/index.d.ts.map +1 -1
- package/dist/nodes/headless/index.js +4 -1
- package/dist/nodes/headless/index.js.map +1 -1
- package/dist/nodes/headless/node-events.d.ts +43 -0
- package/dist/nodes/headless/node-events.d.ts.map +1 -0
- package/dist/nodes/headless/node-events.js +150 -0
- package/dist/nodes/headless/node-events.js.map +1 -0
- package/dist/nodes/headless/power.d.ts +43 -0
- package/dist/nodes/headless/power.d.ts.map +1 -0
- package/dist/nodes/headless/power.js +74 -0
- package/dist/nodes/headless/power.js.map +1 -0
- package/dist/nodes/headless/types.d.ts +40 -3
- package/dist/nodes/headless/types.d.ts.map +1 -1
- package/dist/nodes/headless/types.js +1 -1
- package/dist/nodes/headless/types.js.map +1 -1
- package/dist/nodes/headless/use-node-events.d.ts +59 -0
- package/dist/nodes/headless/use-node-events.d.ts.map +1 -0
- package/dist/nodes/headless/use-node-events.js +159 -0
- package/dist/nodes/headless/use-node-events.js.map +1 -0
- package/dist/nodes/ui/NodeEventsTimeline.d.ts +39 -0
- package/dist/nodes/ui/NodeEventsTimeline.d.ts.map +1 -0
- package/dist/nodes/ui/NodeEventsTimeline.js +63 -0
- package/dist/nodes/ui/NodeEventsTimeline.js.map +1 -0
- package/dist/nodes/ui/NodePowerBadge.d.ts +27 -0
- package/dist/nodes/ui/NodePowerBadge.d.ts.map +1 -0
- package/dist/nodes/ui/NodePowerBadge.js +48 -0
- package/dist/nodes/ui/NodePowerBadge.js.map +1 -0
- package/dist/nodes/ui/NodeVitalsDialog.d.ts +11 -1
- package/dist/nodes/ui/NodeVitalsDialog.d.ts.map +1 -1
- package/dist/nodes/ui/NodeVitalsDialog.js +14 -5
- package/dist/nodes/ui/NodeVitalsDialog.js.map +1 -1
- package/dist/nodes/ui/WorkersPage.d.ts.map +1 -1
- package/dist/nodes/ui/WorkersPage.js +2 -1
- package/dist/nodes/ui/WorkersPage.js.map +1 -1
- package/dist/nodes/ui/workerVitals.d.ts +17 -1
- package/dist/nodes/ui/workerVitals.d.ts.map +1 -1
- package/dist/nodes/ui/workerVitals.js +43 -0
- package/dist/nodes/ui/workerVitals.js.map +1 -1
- package/dist/nodes/ui/workersTable.d.ts.map +1 -1
- package/dist/nodes/ui/workersTable.js +2 -1
- package/dist/nodes/ui/workersTable.js.map +1 -1
- package/dist/settings/ui/ProfileSettings.d.ts +1 -1
- package/dist/settings/ui/ProfileSettings.d.ts.map +1 -1
- package/dist/settings/ui/UserSettingsSection.d.ts +1 -1
- package/dist/settings/ui/UserSettingsSection.d.ts.map +1 -1
- package/dist/sharing/internal/format.d.ts +10 -1
- package/dist/sharing/internal/format.d.ts.map +1 -1
- package/dist/sharing/internal/format.js +10 -1
- package/dist/sharing/internal/format.js.map +1 -1
- package/dist/telemetry/headless/hooks/useTelemetryDashboard.d.ts +1 -1
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts +11 -0
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.d.ts.map +1 -1
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js +17 -2
- package/dist/telemetry/ui/components/dashboard/metrics/MetricSections.js.map +1 -1
- package/dist/webhooks/headless/client.d.ts +101 -0
- package/dist/webhooks/headless/client.d.ts.map +1 -0
- package/dist/webhooks/headless/client.js +105 -0
- package/dist/webhooks/headless/client.js.map +1 -0
- package/dist/webhooks/headless/event-selection.d.ts +119 -0
- package/dist/webhooks/headless/event-selection.d.ts.map +1 -0
- package/dist/webhooks/headless/event-selection.js +225 -0
- package/dist/webhooks/headless/event-selection.js.map +1 -0
- package/dist/webhooks/headless/format.d.ts +84 -0
- package/dist/webhooks/headless/format.d.ts.map +1 -0
- package/dist/webhooks/headless/format.js +142 -0
- package/dist/webhooks/headless/format.js.map +1 -0
- package/dist/webhooks/headless/hooks.d.ts +199 -0
- package/dist/webhooks/headless/hooks.d.ts.map +1 -0
- package/dist/webhooks/headless/hooks.js +249 -0
- package/dist/webhooks/headless/hooks.js.map +1 -0
- package/dist/webhooks/headless/index.d.ts +9 -0
- package/dist/webhooks/headless/index.d.ts.map +1 -0
- package/dist/webhooks/headless/index.js +9 -0
- package/dist/webhooks/headless/index.js.map +1 -0
- package/dist/webhooks/ui/WebhookDeliveryDrawer.d.ts +32 -0
- package/dist/webhooks/ui/WebhookDeliveryDrawer.d.ts.map +1 -0
- package/dist/webhooks/ui/WebhookDeliveryDrawer.js +64 -0
- package/dist/webhooks/ui/WebhookDeliveryDrawer.js.map +1 -0
- package/dist/webhooks/ui/WebhookEndpointDetail.d.ts +21 -0
- package/dist/webhooks/ui/WebhookEndpointDetail.d.ts.map +1 -0
- package/dist/webhooks/ui/WebhookEndpointDetail.js +96 -0
- package/dist/webhooks/ui/WebhookEndpointDetail.js.map +1 -0
- package/dist/webhooks/ui/WebhookEndpointDialog.d.ts +39 -0
- package/dist/webhooks/ui/WebhookEndpointDialog.d.ts.map +1 -0
- package/dist/webhooks/ui/WebhookEndpointDialog.js +79 -0
- package/dist/webhooks/ui/WebhookEndpointDialog.js.map +1 -0
- package/dist/webhooks/ui/WebhookEventPicker.d.ts +30 -0
- package/dist/webhooks/ui/WebhookEventPicker.d.ts.map +1 -0
- package/dist/webhooks/ui/WebhookEventPicker.js +33 -0
- package/dist/webhooks/ui/WebhookEventPicker.js.map +1 -0
- package/dist/webhooks/ui/WebhookSecretDialog.d.ts +27 -0
- package/dist/webhooks/ui/WebhookSecretDialog.d.ts.map +1 -0
- package/dist/webhooks/ui/WebhookSecretDialog.js +52 -0
- package/dist/webhooks/ui/WebhookSecretDialog.js.map +1 -0
- package/dist/webhooks/ui/WebhookSignatureHelp.d.ts +18 -0
- package/dist/webhooks/ui/WebhookSignatureHelp.d.ts.map +1 -0
- package/dist/webhooks/ui/WebhookSignatureHelp.js +40 -0
- package/dist/webhooks/ui/WebhookSignatureHelp.js.map +1 -0
- package/dist/webhooks/ui/WebhooksPage.d.ts +47 -0
- package/dist/webhooks/ui/WebhooksPage.d.ts.map +1 -0
- package/dist/webhooks/ui/WebhooksPage.js +172 -0
- package/dist/webhooks/ui/WebhooksPage.js.map +1 -0
- package/dist/webhooks/ui/copy.d.ts +24 -0
- package/dist/webhooks/ui/copy.d.ts.map +1 -0
- package/dist/webhooks/ui/copy.js +34 -0
- package/dist/webhooks/ui/copy.js.map +1 -0
- package/dist/webhooks/ui/index.d.ts +15 -0
- package/dist/webhooks/ui/index.d.ts.map +1 -0
- package/dist/webhooks/ui/index.js +12 -0
- package/dist/webhooks/ui/index.js.map +1 -0
- package/dist/webhooks/ui/parts.d.ts +25 -0
- package/dist/webhooks/ui/parts.d.ts.map +1 -0
- package/dist/webhooks/ui/parts.js +28 -0
- package/dist/webhooks/ui/parts.js.map +1 -0
- package/dist/webhooks/ui/settings.d.ts +58 -0
- package/dist/webhooks/ui/settings.d.ts.map +1 -0
- package/dist/webhooks/ui/settings.js +79 -0
- package/dist/webhooks/ui/settings.js.map +1 -0
- package/package.json +18 -2
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
// =============================================================================
|
|
2
|
+
// The alerts hooks (issue #1047): reads with a load state, and the writes
|
|
3
|
+
// =============================================================================
|
|
4
|
+
//
|
|
5
|
+
// A failure becomes a sentence in `error` (a stable refusal code mapped to
|
|
6
|
+
// words, else the API's message); a write resolves with `null` (or `false`)
|
|
7
|
+
// instead of throwing. `useAlertSummary` polls every 30 seconds while the tab
|
|
8
|
+
// is visible, for the dashboard banner.
|
|
9
|
+
// =============================================================================
|
|
10
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
11
|
+
import { ALERT_ERROR_CODES } from '@marinoscar/platform-contract/alerts';
|
|
12
|
+
import { isPlatformApiError, usePlatformApi } from '../../core/index.js';
|
|
13
|
+
import { createAlertsApi, } from './client.js';
|
|
14
|
+
const CODE_MESSAGES = {
|
|
15
|
+
[ALERT_ERROR_CODES.RULE_NOT_FOUND]: 'That alert rule no longer exists.',
|
|
16
|
+
[ALERT_ERROR_CODES.INCIDENT_NOT_FOUND]: 'That incident no longer exists.',
|
|
17
|
+
[ALERT_ERROR_CODES.UNKNOWN_KIND]: 'That rule kind is not available on this deployment.',
|
|
18
|
+
[ALERT_ERROR_CODES.INVALID_CONFIG]: 'The rule configuration is not valid for its kind.',
|
|
19
|
+
[ALERT_ERROR_CODES.STARTER_RULE_PROTECTED]: 'Built-in rules cannot be deleted. Disable the rule instead.',
|
|
20
|
+
};
|
|
21
|
+
/** The default poll interval of {@link useAlertSummary}, in milliseconds. */
|
|
22
|
+
const SUMMARY_POLL_MS = 30_000;
|
|
23
|
+
/**
|
|
24
|
+
* An alerts API failure in words: the refusal code's sentence (`code` or
|
|
25
|
+
* `details.reason`), else the API's message, else `fallback`.
|
|
26
|
+
*
|
|
27
|
+
* @param error - what the call rejected with.
|
|
28
|
+
* @param fallback - the sentence when nothing better is known.
|
|
29
|
+
* @returns the message.
|
|
30
|
+
*
|
|
31
|
+
* @stability experimental
|
|
32
|
+
*/
|
|
33
|
+
export function alertErrorMessage(error, fallback) {
|
|
34
|
+
if (isPlatformApiError(error)) {
|
|
35
|
+
const details = error.details;
|
|
36
|
+
const reason = typeof details?.reason === 'string' ? details.reason : undefined;
|
|
37
|
+
for (const code of [error.code, reason]) {
|
|
38
|
+
if (typeof code === 'string' && CODE_MESSAGES[code])
|
|
39
|
+
return CODE_MESSAGES[code];
|
|
40
|
+
}
|
|
41
|
+
if (typeof error.message === 'string' && error.message !== '')
|
|
42
|
+
return error.message;
|
|
43
|
+
}
|
|
44
|
+
return fallback;
|
|
45
|
+
}
|
|
46
|
+
function useMounted() {
|
|
47
|
+
const mounted = useRef(true);
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
mounted.current = true;
|
|
50
|
+
return () => {
|
|
51
|
+
mounted.current = false;
|
|
52
|
+
};
|
|
53
|
+
}, []);
|
|
54
|
+
return useCallback(() => mounted.current, []);
|
|
55
|
+
}
|
|
56
|
+
/** Runs `load` now and on `refresh`, keeping only the newest answer. */
|
|
57
|
+
function useLoad(load, fallback) {
|
|
58
|
+
const mounted = useMounted();
|
|
59
|
+
const [data, setData] = useState(null);
|
|
60
|
+
const [isLoading, setIsLoading] = useState(load !== null);
|
|
61
|
+
const [error, setError] = useState(null);
|
|
62
|
+
const seq = useRef(0);
|
|
63
|
+
const refresh = useCallback(async () => {
|
|
64
|
+
if (!load)
|
|
65
|
+
return;
|
|
66
|
+
const ticket = ++seq.current;
|
|
67
|
+
setIsLoading(true);
|
|
68
|
+
try {
|
|
69
|
+
const next = await load();
|
|
70
|
+
if (!mounted() || ticket !== seq.current)
|
|
71
|
+
return;
|
|
72
|
+
setData(next);
|
|
73
|
+
setError(null);
|
|
74
|
+
}
|
|
75
|
+
catch (err) {
|
|
76
|
+
if (mounted() && ticket === seq.current)
|
|
77
|
+
setError(alertErrorMessage(err, fallback));
|
|
78
|
+
}
|
|
79
|
+
finally {
|
|
80
|
+
if (mounted() && ticket === seq.current)
|
|
81
|
+
setIsLoading(false);
|
|
82
|
+
}
|
|
83
|
+
}, [load, fallback, mounted]);
|
|
84
|
+
useEffect(() => {
|
|
85
|
+
if (!load) {
|
|
86
|
+
seq.current += 1;
|
|
87
|
+
setData(null);
|
|
88
|
+
setIsLoading(false);
|
|
89
|
+
setError(null);
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
void refresh();
|
|
93
|
+
}, [load, refresh]);
|
|
94
|
+
return { data, isLoading, error, refresh };
|
|
95
|
+
}
|
|
96
|
+
/** Calls `callback` every `intervalMs` while the document is visible. */
|
|
97
|
+
function useVisibleInterval(callback, intervalMs) {
|
|
98
|
+
const ref = useRef(callback);
|
|
99
|
+
ref.current = callback;
|
|
100
|
+
useEffect(() => {
|
|
101
|
+
if (intervalMs <= 0 || typeof document === 'undefined')
|
|
102
|
+
return;
|
|
103
|
+
let timer = null;
|
|
104
|
+
const stop = () => {
|
|
105
|
+
if (timer !== null)
|
|
106
|
+
clearInterval(timer);
|
|
107
|
+
timer = null;
|
|
108
|
+
};
|
|
109
|
+
const start = () => {
|
|
110
|
+
if (timer === null)
|
|
111
|
+
timer = setInterval(() => ref.current(), intervalMs);
|
|
112
|
+
};
|
|
113
|
+
const onVisibility = () => {
|
|
114
|
+
if (document.visibilityState === 'hidden') {
|
|
115
|
+
stop();
|
|
116
|
+
}
|
|
117
|
+
else {
|
|
118
|
+
ref.current();
|
|
119
|
+
start();
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
if (document.visibilityState !== 'hidden')
|
|
123
|
+
start();
|
|
124
|
+
document.addEventListener('visibilitychange', onVisibility);
|
|
125
|
+
return () => {
|
|
126
|
+
stop();
|
|
127
|
+
document.removeEventListener('visibilitychange', onVisibility);
|
|
128
|
+
};
|
|
129
|
+
}, [intervalMs]);
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The alerts client over the host's transport, memoised.
|
|
133
|
+
*
|
|
134
|
+
* @returns the client.
|
|
135
|
+
*
|
|
136
|
+
* @stability experimental
|
|
137
|
+
*/
|
|
138
|
+
export function useAlertsApi() {
|
|
139
|
+
const api = usePlatformApi();
|
|
140
|
+
return useMemo(() => createAlertsApi(api), [api]);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The rules (`GET /admin/alerts/rules`), reloaded when a filter changes.
|
|
144
|
+
*
|
|
145
|
+
* @param query - optional filters.
|
|
146
|
+
* @returns the rules and the load state.
|
|
147
|
+
*
|
|
148
|
+
* @extensionPoint hook
|
|
149
|
+
* @stability experimental
|
|
150
|
+
*/
|
|
151
|
+
export function useAlertRules(query = {}) {
|
|
152
|
+
const client = useAlertsApi();
|
|
153
|
+
const { kind, severity, enabled } = query;
|
|
154
|
+
const load = useCallback(() => client.listRules({
|
|
155
|
+
...(kind ? { kind } : {}),
|
|
156
|
+
...(severity ? { severity } : {}),
|
|
157
|
+
...(enabled === undefined ? {} : { enabled }),
|
|
158
|
+
}), [client, kind, severity, enabled]);
|
|
159
|
+
const { data, isLoading, error, refresh } = useLoad(load, 'Could not load the alert rules.');
|
|
160
|
+
return { rules: data ?? [], isLoading, error, refresh };
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* One rule (`GET /admin/alerts/rules/:id`).
|
|
164
|
+
*
|
|
165
|
+
* @param id - the rule id, or `null` for none.
|
|
166
|
+
* @returns the rule and the load state.
|
|
167
|
+
*
|
|
168
|
+
* @extensionPoint hook
|
|
169
|
+
* @stability experimental
|
|
170
|
+
*/
|
|
171
|
+
export function useAlertRule(id) {
|
|
172
|
+
const client = useAlertsApi();
|
|
173
|
+
const load = useMemo(() => (id ? () => client.getRule(id) : null), [client, id]);
|
|
174
|
+
const { data, isLoading, error, refresh } = useLoad(load, 'Could not load the alert rule.');
|
|
175
|
+
return { rule: data, isLoading, error, refresh };
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* The registered rule kinds (`GET /admin/alerts/kinds`).
|
|
179
|
+
*
|
|
180
|
+
* @param options - `enabled: false` skips the request.
|
|
181
|
+
* @returns the kinds and the load state.
|
|
182
|
+
*
|
|
183
|
+
* @extensionPoint hook
|
|
184
|
+
* @stability experimental
|
|
185
|
+
*/
|
|
186
|
+
export function useAlertKinds(options = {}) {
|
|
187
|
+
const enabled = options.enabled ?? true;
|
|
188
|
+
const client = useAlertsApi();
|
|
189
|
+
const load = useMemo(() => (enabled ? () => client.listKinds() : null), [client, enabled]);
|
|
190
|
+
const { data, isLoading, error } = useLoad(load, 'Could not load the rule kinds.');
|
|
191
|
+
return { kinds: data ?? [], isLoading, error };
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* One page of incidents (`GET /admin/alerts/incidents`), reloaded when the
|
|
195
|
+
* page or a filter changes.
|
|
196
|
+
*
|
|
197
|
+
* @param query - the one-based page, the page size and the filters.
|
|
198
|
+
* @returns the page and the load state.
|
|
199
|
+
*
|
|
200
|
+
* @extensionPoint hook
|
|
201
|
+
* @stability experimental
|
|
202
|
+
*/
|
|
203
|
+
export function useAlertIncidents(query = {}) {
|
|
204
|
+
const client = useAlertsApi();
|
|
205
|
+
const { state, severity, ruleId, page, pageSize } = query;
|
|
206
|
+
const load = useCallback(() => client.listIncidents({
|
|
207
|
+
...(state ? { state } : {}),
|
|
208
|
+
...(severity ? { severity } : {}),
|
|
209
|
+
...(ruleId ? { ruleId } : {}),
|
|
210
|
+
...(page === undefined ? {} : { page }),
|
|
211
|
+
...(pageSize === undefined ? {} : { pageSize }),
|
|
212
|
+
}), [client, state, severity, ruleId, page, pageSize]);
|
|
213
|
+
const { data, isLoading, error, refresh } = useLoad(load, 'Could not load the incidents.');
|
|
214
|
+
return {
|
|
215
|
+
incidents: data?.items ?? [],
|
|
216
|
+
total: data?.total ?? 0,
|
|
217
|
+
totalPages: data?.totalPages ?? 0,
|
|
218
|
+
isLoading,
|
|
219
|
+
error,
|
|
220
|
+
refresh,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* One incident (`GET /admin/alerts/incidents/:id`).
|
|
225
|
+
*
|
|
226
|
+
* @param id - the incident id, or `null` for none.
|
|
227
|
+
* @returns the incident and the load state.
|
|
228
|
+
*
|
|
229
|
+
* @extensionPoint hook
|
|
230
|
+
* @stability experimental
|
|
231
|
+
*/
|
|
232
|
+
export function useAlertIncident(id) {
|
|
233
|
+
const client = useAlertsApi();
|
|
234
|
+
const load = useMemo(() => (id ? () => client.getIncident(id) : null), [client, id]);
|
|
235
|
+
const { data, isLoading, error, refresh } = useLoad(load, 'Could not load the incident.');
|
|
236
|
+
return { incident: data, isLoading, error, refresh };
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* The firing summary (`GET /admin/alerts/summary`), polled every 30 seconds
|
|
240
|
+
* while the tab is visible.
|
|
241
|
+
*
|
|
242
|
+
* @param options - `enabled: false` skips the request (a viewer without
|
|
243
|
+
* `alerts:read`); `intervalMs` changes the poll (0 turns it off).
|
|
244
|
+
* @returns the summary and the load state.
|
|
245
|
+
*
|
|
246
|
+
* @extensionPoint hook
|
|
247
|
+
* @stability experimental
|
|
248
|
+
*/
|
|
249
|
+
export function useAlertSummary(options = {}) {
|
|
250
|
+
const enabled = options.enabled ?? true;
|
|
251
|
+
const intervalMs = options.intervalMs ?? SUMMARY_POLL_MS;
|
|
252
|
+
const client = useAlertsApi();
|
|
253
|
+
const load = useMemo(() => (enabled ? () => client.summary() : null), [client, enabled]);
|
|
254
|
+
const { data, isLoading, error, refresh } = useLoad(load, 'Could not load the alert summary.');
|
|
255
|
+
useVisibleInterval(() => void refresh(), enabled ? intervalMs : 0);
|
|
256
|
+
return { summary: data, isLoading, error, refresh };
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* The metrics the rule editor offers (`GET /admin/telemetry/schema`).
|
|
260
|
+
*
|
|
261
|
+
* @param options - `enabled: false` skips the request.
|
|
262
|
+
* @returns the metrics and the load state.
|
|
263
|
+
*
|
|
264
|
+
* @extensionPoint hook
|
|
265
|
+
* @stability experimental
|
|
266
|
+
*/
|
|
267
|
+
export function useAlertMetricCatalog(options = {}) {
|
|
268
|
+
const enabled = options.enabled ?? true;
|
|
269
|
+
const client = useAlertsApi();
|
|
270
|
+
const load = useMemo(() => (enabled ? () => client.metricCatalog() : null), [client, enabled]);
|
|
271
|
+
const { data, isLoading, error } = useLoad(load, 'The metric list is not available; type a metric name.');
|
|
272
|
+
return { metrics: data ?? [], isLoading, error };
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* The alerts writes, with one shared pending flag and error.
|
|
276
|
+
*
|
|
277
|
+
* @returns the actions and their state.
|
|
278
|
+
*
|
|
279
|
+
* @extensionPoint hook
|
|
280
|
+
* @stability experimental
|
|
281
|
+
*/
|
|
282
|
+
export function useAlertMutations() {
|
|
283
|
+
const client = useAlertsApi();
|
|
284
|
+
const mounted = useMounted();
|
|
285
|
+
const [pendingCount, setPendingCount] = useState(0);
|
|
286
|
+
const [error, setError] = useState(null);
|
|
287
|
+
const run = useCallback(async (call, fallback) => {
|
|
288
|
+
setPendingCount((count) => count + 1);
|
|
289
|
+
setError(null);
|
|
290
|
+
try {
|
|
291
|
+
return await call();
|
|
292
|
+
}
|
|
293
|
+
catch (err) {
|
|
294
|
+
if (mounted())
|
|
295
|
+
setError(alertErrorMessage(err, fallback));
|
|
296
|
+
return null;
|
|
297
|
+
}
|
|
298
|
+
finally {
|
|
299
|
+
if (mounted())
|
|
300
|
+
setPendingCount((count) => count - 1);
|
|
301
|
+
}
|
|
302
|
+
}, [mounted]);
|
|
303
|
+
return {
|
|
304
|
+
create: useCallback((input) => run(() => client.createRule(input), 'The rule could not be created.'), [client, run]),
|
|
305
|
+
update: useCallback((id, patch) => run(() => client.updateRule(id, patch), 'The rule could not be saved.'), [client, run]),
|
|
306
|
+
toggle: useCallback((id, enabled) => run(() => client.updateRule(id, { enabled }), enabled ? 'The rule could not be enabled.' : 'The rule could not be disabled.'), [client, run]),
|
|
307
|
+
remove: useCallback(async (id) => (await run(async () => (await client.deleteRule(id), true), 'The rule could not be deleted.')) === true, [client, run]),
|
|
308
|
+
test: useCallback((id) => run(() => client.testRule(id), 'The rule could not be tested.'), [client, run]),
|
|
309
|
+
acknowledge: useCallback((id) => run(() => client.acknowledge(id), 'The incident could not be acknowledged.'), [client, run]),
|
|
310
|
+
pending: pendingCount > 0,
|
|
311
|
+
error,
|
|
312
|
+
reset: useCallback(() => setError(null), []),
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=hooks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/alerts/headless/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { ALERTS_BASE_PATH, ALERTS_METRIC_CATALOG_PATH, createAlertsApi, metricCatalogFromSchema, } from './client.js';
|
|
2
|
+
export type { AlertIncidentPage, AlertIncidentsQuery, AlertMetricCatalogEntry, AlertRulesQuery, AlertsApi, } from './client.js';
|
|
3
|
+
export { ALERT_AGGREGATION_LABELS, ALERT_COMPARATOR_LABELS, ALERT_SEVERITY_LABELS, ALERT_SEVERITY_TONES, ALERT_STATE_LABELS, ALERT_STATE_TONES, alertFiringTotal, alertKindLabel, alertTopSeverity, formatAlertLabels, formatAlertSeconds, } from './format.js';
|
|
4
|
+
export type { AlertTone } from './format.js';
|
|
5
|
+
export { alertErrorMessage, useAlertIncident, useAlertIncidents, useAlertKinds, useAlertMetricCatalog, useAlertMutations, useAlertRule, useAlertRules, useAlertSummary, useAlertsApi, } from './hooks.js';
|
|
6
|
+
export type { AlertIncidentState, AlertIncidentsState, AlertKindsState, AlertMetricCatalogState, AlertMutations, AlertRuleState, AlertRulesState, AlertSummaryState, } from './hooks.js';
|
|
7
|
+
export { ALERT_FORM_KINDS, alertKindHasNoConfig, alertRuleDraftFromRule, buildAlertRuleConfig, buildAlertRulePayload, emptyAlertRuleDraft, } from './rule-draft.js';
|
|
8
|
+
export type { AlertAttrDraft, AlertRuleDraft, AlertRulePayloadResult, MetricThresholdDraft, NodeEventDraft, } from './rule-draft.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/alerts/headless/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,GACxB,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,uBAAuB,EACvB,eAAe,EACf,SAAS,GACV,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,eAAe,EACf,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,cAAc,EACd,cAAc,EACd,sBAAsB,EACtB,oBAAoB,EACpB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// `@marinoscar/platform-web/alerts/headless`: the alerts client, hooks and pure
|
|
2
|
+
// helpers (issue #1047): rules, kinds, incidents, the firing summary, the
|
|
3
|
+
// metric catalog the rule editor picks from, the editor's draft model and
|
|
4
|
+
// alerts in words. No UI. Documented in ../README.md.
|
|
5
|
+
export { ALERTS_BASE_PATH, ALERTS_METRIC_CATALOG_PATH, createAlertsApi, metricCatalogFromSchema, } from './client.js';
|
|
6
|
+
export { ALERT_AGGREGATION_LABELS, ALERT_COMPARATOR_LABELS, ALERT_SEVERITY_LABELS, ALERT_SEVERITY_TONES, ALERT_STATE_LABELS, ALERT_STATE_TONES, alertFiringTotal, alertKindLabel, alertTopSeverity, formatAlertLabels, formatAlertSeconds, } from './format.js';
|
|
7
|
+
export { alertErrorMessage, useAlertIncident, useAlertIncidents, useAlertKinds, useAlertMetricCatalog, useAlertMutations, useAlertRule, useAlertRules, useAlertSummary, useAlertsApi, } from './hooks.js';
|
|
8
|
+
export { ALERT_FORM_KINDS, alertKindHasNoConfig, alertRuleDraftFromRule, buildAlertRuleConfig, buildAlertRulePayload, emptyAlertRuleDraft, } from './rule-draft.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/alerts/headless/index.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,0EAA0E;AAC1E,0EAA0E;AAC1E,sDAAsD;AAEtD,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,eAAe,EACf,uBAAuB,GACxB,MAAM,aAAa,CAAC;AAQrB,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACrB,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,YAAY,GACb,MAAM,YAAY,CAAC;AAWpB,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import type { AlertAggregation, AlertComparator, AlertFilterOp, AlertRule, AlertSeverity, CreateAlertRule, UpdateAlertRule } from '@marinoscar/platform-contract/alerts';
|
|
2
|
+
/**
|
|
3
|
+
* One key and value pair of the editor (event attributes).
|
|
4
|
+
*
|
|
5
|
+
* @stability experimental
|
|
6
|
+
*/
|
|
7
|
+
export interface AlertAttrDraft {
|
|
8
|
+
/** The attribute name. */
|
|
9
|
+
key: string;
|
|
10
|
+
/** The value, compared as text by the API. */
|
|
11
|
+
value: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* The `metric_threshold` part of a draft.
|
|
15
|
+
*
|
|
16
|
+
* @stability experimental
|
|
17
|
+
*/
|
|
18
|
+
export interface MetricThresholdDraft {
|
|
19
|
+
/** The metric or table name. */
|
|
20
|
+
metric: string;
|
|
21
|
+
/** How the window's points are reduced. */
|
|
22
|
+
aggregation: AlertAggregation;
|
|
23
|
+
/** The window, in seconds. */
|
|
24
|
+
windowSeconds: number;
|
|
25
|
+
/** How the value is compared. */
|
|
26
|
+
comparator: AlertComparator;
|
|
27
|
+
/** The threshold as typed (parsed when the payload is built). */
|
|
28
|
+
threshold: string;
|
|
29
|
+
/** Attribute columns to group by. */
|
|
30
|
+
groupBy: string[];
|
|
31
|
+
/** Attribute filters. */
|
|
32
|
+
filters: Array<{
|
|
33
|
+
/** The attribute (column) to compare. */
|
|
34
|
+
attr: string;
|
|
35
|
+
/** `eq` or `neq`. */
|
|
36
|
+
op: AlertFilterOp;
|
|
37
|
+
/** The value, compared as text. */
|
|
38
|
+
value: string;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The `node_event` part of a draft.
|
|
43
|
+
*
|
|
44
|
+
* @stability experimental
|
|
45
|
+
*/
|
|
46
|
+
export interface NodeEventDraft {
|
|
47
|
+
/** Event types (or a `prefix.*`). */
|
|
48
|
+
eventTypes: string[];
|
|
49
|
+
/** The least severity that counts; `''` for any. */
|
|
50
|
+
minSeverity: AlertSeverity | '';
|
|
51
|
+
/** Only these node ids; empty for every node. */
|
|
52
|
+
nodeIds: string[];
|
|
53
|
+
/** Attributes the event must carry. */
|
|
54
|
+
attrs: AlertAttrDraft[];
|
|
55
|
+
/** Event types that resolve the incident; empty for none. */
|
|
56
|
+
recoveryEventTypes: string[];
|
|
57
|
+
/** Attributes the recovery event must carry. */
|
|
58
|
+
recoveryAttrs: AlertAttrDraft[];
|
|
59
|
+
/** Seconds until an incident resolves on its own. */
|
|
60
|
+
resolveAfterSeconds: number;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The editor's state for one rule.
|
|
64
|
+
*
|
|
65
|
+
* @stability experimental
|
|
66
|
+
*/
|
|
67
|
+
export interface AlertRuleDraft {
|
|
68
|
+
/** The rule name. */
|
|
69
|
+
name: string;
|
|
70
|
+
/** The description; `''` for none. */
|
|
71
|
+
description: string;
|
|
72
|
+
/** Whether the rule is evaluated. */
|
|
73
|
+
enabled: boolean;
|
|
74
|
+
/** The kind id (fixed once the rule exists). */
|
|
75
|
+
kind: string;
|
|
76
|
+
/** The severity of its incidents. */
|
|
77
|
+
severity: AlertSeverity;
|
|
78
|
+
/** Seconds the condition must hold before firing. */
|
|
79
|
+
forSeconds: number;
|
|
80
|
+
/** Minimum seconds between two fires of the same labels. */
|
|
81
|
+
cooldownSeconds: number;
|
|
82
|
+
/** Notification channel ids; empty for every channel. */
|
|
83
|
+
notifyChannels: string[];
|
|
84
|
+
/** Whether webhooks are also emitted. */
|
|
85
|
+
webhook: boolean;
|
|
86
|
+
/** The `metric_threshold` config. */
|
|
87
|
+
metric: MetricThresholdDraft;
|
|
88
|
+
/** The `node_event` config. */
|
|
89
|
+
nodeEvent: NodeEventDraft;
|
|
90
|
+
/** The `verdict` config. */
|
|
91
|
+
verdict: {
|
|
92
|
+
/** The least verdict level that fires. */
|
|
93
|
+
minLevel: 'degraded' | 'critical';
|
|
94
|
+
};
|
|
95
|
+
/** The config of a kind the editor has no form for, as JSON text. */
|
|
96
|
+
rawConfig: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* The result of {@link buildAlertRulePayload}: the body, or the field errors.
|
|
100
|
+
*
|
|
101
|
+
* @stability experimental
|
|
102
|
+
*/
|
|
103
|
+
export type AlertRulePayloadResult<T> = {
|
|
104
|
+
/** The draft is valid. */
|
|
105
|
+
ok: true;
|
|
106
|
+
/** The request body. */
|
|
107
|
+
value: T;
|
|
108
|
+
} | {
|
|
109
|
+
/** The draft is not valid. */
|
|
110
|
+
ok: false;
|
|
111
|
+
/** One sentence per field (`name`, `metric`, `threshold`, `eventTypes`, `config`, ...). */
|
|
112
|
+
errors: Record<string, string>;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* The kinds the editor has a dedicated form for. Any other kind (an app's
|
|
116
|
+
* own, registered with `registerAlertRuleKind`) is edited as JSON.
|
|
117
|
+
*
|
|
118
|
+
* @stability experimental
|
|
119
|
+
*/
|
|
120
|
+
export declare const ALERT_FORM_KINDS: readonly string[];
|
|
121
|
+
/**
|
|
122
|
+
* Whether a kind takes no configuration (`node_offline`, `telemetry_unavailable`).
|
|
123
|
+
*
|
|
124
|
+
* @param kind - the kind id.
|
|
125
|
+
* @returns `true` when the config is always `{}`.
|
|
126
|
+
*
|
|
127
|
+
* @stability experimental
|
|
128
|
+
*/
|
|
129
|
+
export declare function alertKindHasNoConfig(kind: string): boolean;
|
|
130
|
+
/**
|
|
131
|
+
* A blank draft of a kind, with the API's defaults.
|
|
132
|
+
*
|
|
133
|
+
* @param kind - the kind id; default `metric_threshold`.
|
|
134
|
+
* @returns the draft.
|
|
135
|
+
*
|
|
136
|
+
* @stability experimental
|
|
137
|
+
*/
|
|
138
|
+
export declare function emptyAlertRuleDraft(kind?: string): AlertRuleDraft;
|
|
139
|
+
/**
|
|
140
|
+
* The draft of an existing rule, its config spread into the kind's form.
|
|
141
|
+
*
|
|
142
|
+
* @param rule - the rule as the API returned it.
|
|
143
|
+
* @returns the draft.
|
|
144
|
+
*
|
|
145
|
+
* @stability experimental
|
|
146
|
+
*/
|
|
147
|
+
export declare function alertRuleDraftFromRule(rule: AlertRule): AlertRuleDraft;
|
|
148
|
+
/**
|
|
149
|
+
* The config of a draft's kind, checked against the contract's schema.
|
|
150
|
+
*
|
|
151
|
+
* @param draft - the editor state.
|
|
152
|
+
* @returns the config, or the field errors.
|
|
153
|
+
*
|
|
154
|
+
* @stability experimental
|
|
155
|
+
*/
|
|
156
|
+
export declare function buildAlertRuleConfig(draft: AlertRuleDraft): AlertRulePayloadResult<Record<string, unknown>>;
|
|
157
|
+
/**
|
|
158
|
+
* The request body of a draft: `create` for a new rule (with the kind),
|
|
159
|
+
* `update` for an existing one (every editable field, never the kind).
|
|
160
|
+
*
|
|
161
|
+
* @param draft - the editor state.
|
|
162
|
+
* @param mode - `create` or `update`.
|
|
163
|
+
* @returns the body, or the field errors.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* const result = buildAlertRulePayload(draft, 'create');
|
|
168
|
+
* if (result.ok) await alerts.createRule(result.value);
|
|
169
|
+
* ```
|
|
170
|
+
*
|
|
171
|
+
* @stability experimental
|
|
172
|
+
*/
|
|
173
|
+
export declare function buildAlertRulePayload(draft: AlertRuleDraft, mode: 'create'): AlertRulePayloadResult<CreateAlertRule>;
|
|
174
|
+
export declare function buildAlertRulePayload(draft: AlertRuleDraft, mode: 'update'): AlertRulePayloadResult<UpdateAlertRule>;
|
|
175
|
+
//# sourceMappingURL=rule-draft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rule-draft.d.ts","sourceRoot":"","sources":["../../../src/alerts/headless/rule-draft.ts"],"names":[],"mappings":"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"}
|