@marinoscar/platform-web 0.1.0-next.19 → 0.1.0-next.21
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 +21 -0
- package/README.md +5 -3
- 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/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/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 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/webhooks/headless/hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { WEBHOOK_SCOPE_BASE_PATHS, WEBHOOK_SCOPE_PERMISSIONS, createWebhooksApi, webhooksBasePath, } from './client.js';
|
|
2
|
+
export type { WebhookDeliveriesQuery, WebhooksApi } from './client.js';
|
|
3
|
+
export { WEBHOOK_ALL_EVENTS, groupWebhookEventCatalog, isWebhookEventSelected, searchWebhookEventGroups, toggleAllWebhookEvents, toggleWebhookEvent, toggleWebhookGroup, unknownWebhookSubscriptions, webhookEntryCovers, webhookGroupSelectionState, } from './event-selection.js';
|
|
4
|
+
export type { WebhookEventGroup } from './event-selection.js';
|
|
5
|
+
export { WEBHOOK_DISABLED_REASON_LABELS, formatWebhookDuration, isHttpsWebhookUrl, webhookDeliveryStatusLabel, webhookDeliveryStatusTone, webhookEndpointStatus, webhookUrlHost, } from './format.js';
|
|
6
|
+
export type { WebhookEndpointStatus, WebhookStatusTone } from './format.js';
|
|
7
|
+
export { useWebhookDeliveries, useWebhookDelivery, useWebhookEndpoint, useWebhookEndpoints, useWebhookEventCatalog, useWebhookMutations, useWebhooksApi, webhookErrorMessage, } from './hooks.js';
|
|
8
|
+
export type { WebhookDeliveriesState, WebhookDeliveryState, WebhookEndpointState, WebhookEndpointsState, WebhookEventCatalogState, WebhookMutations, } from './hooks.js';
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/webhooks/headless/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,GACf,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC;AACpB,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// `@marinoscar/platform-web/webhooks/headless`: the webhooks client, hooks and
|
|
2
|
+
// pure helpers (issue #1046): endpoints, deliveries and the event catalog of
|
|
3
|
+
// one scope (`user`, `org`, `system`), the event picker's model and status in
|
|
4
|
+
// words. No UI. Documented in ../README.md.
|
|
5
|
+
export { WEBHOOK_SCOPE_BASE_PATHS, WEBHOOK_SCOPE_PERMISSIONS, createWebhooksApi, webhooksBasePath, } from './client.js';
|
|
6
|
+
export { WEBHOOK_ALL_EVENTS, groupWebhookEventCatalog, isWebhookEventSelected, searchWebhookEventGroups, toggleAllWebhookEvents, toggleWebhookEvent, toggleWebhookGroup, unknownWebhookSubscriptions, webhookEntryCovers, webhookGroupSelectionState, } from './event-selection.js';
|
|
7
|
+
export { WEBHOOK_DISABLED_REASON_LABELS, formatWebhookDuration, isHttpsWebhookUrl, webhookDeliveryStatusLabel, webhookDeliveryStatusTone, webhookEndpointStatus, webhookUrlHost, } from './format.js';
|
|
8
|
+
export { useWebhookDeliveries, useWebhookDelivery, useWebhookEndpoint, useWebhookEndpoints, useWebhookEventCatalog, useWebhookMutations, useWebhooksApi, webhookErrorMessage, } from './hooks.js';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/webhooks/headless/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6EAA6E;AAC7E,8EAA8E;AAC9E,4CAA4C;AAE5C,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,2BAA2B,EAC3B,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,8BAA8B,EAC9B,qBAAqB,EACrB,iBAAiB,EACjB,0BAA0B,EAC1B,yBAAyB,EACzB,qBAAqB,EACrB,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ReactElement } from 'react';
|
|
2
|
+
import type { WebhookDeliveryDetail, WebhookScope } from '@marinoscar/platform-contract/webhooks';
|
|
3
|
+
/**
|
|
4
|
+
* The props of {@link WebhookDeliveryDrawer}.
|
|
5
|
+
*
|
|
6
|
+
* @stability experimental
|
|
7
|
+
*/
|
|
8
|
+
export interface WebhookDeliveryDrawerProps {
|
|
9
|
+
/** The scope whose routes to read. */
|
|
10
|
+
scope: WebhookScope;
|
|
11
|
+
/** The delivery to show; `null` closes the drawer. */
|
|
12
|
+
deliveryId: string | null;
|
|
13
|
+
/** Whether to offer Redeliver (the viewer holds the scope's write permission). */
|
|
14
|
+
canWrite: boolean;
|
|
15
|
+
/** Queues the delivery again; resolves `true` on success. */
|
|
16
|
+
onRedeliver: (delivery: WebhookDeliveryDetail) => Promise<boolean>;
|
|
17
|
+
/** Whether a redelivery is in flight. */
|
|
18
|
+
redelivering?: boolean;
|
|
19
|
+
/** Closes the drawer. */
|
|
20
|
+
onClose: () => void;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The delivery detail drawer.
|
|
24
|
+
*
|
|
25
|
+
* @param props - see {@link WebhookDeliveryDrawerProps}.
|
|
26
|
+
* @returns the drawer.
|
|
27
|
+
*
|
|
28
|
+
* @extensionPoint component
|
|
29
|
+
* @stability experimental
|
|
30
|
+
*/
|
|
31
|
+
export declare function WebhookDeliveryDrawer({ scope, deliveryId, canWrite, onRedeliver, redelivering, onClose, }: WebhookDeliveryDrawerProps): ReactElement;
|
|
32
|
+
//# sourceMappingURL=WebhookDeliveryDrawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookDeliveryDrawer.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookDeliveryDrawer.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,wCAAwC,CAAC;AAMlG;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,sCAAsC;IACtC,KAAK,EAAE,YAAY,CAAC;IACpB,sDAAsD;IACtD,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,kFAAkF;IAClF,QAAQ,EAAE,OAAO,CAAC;IAClB,6DAA6D;IAC7D,WAAW,EAAE,CAAC,QAAQ,EAAE,qBAAqB,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,yCAAyC;IACzC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,yBAAyB;IACzB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA+CD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,UAAU,EACV,QAAQ,EACR,WAAW,EACX,YAAY,EACZ,OAAO,GACR,EAAE,0BAA0B,GAAG,YAAY,CAmH3C"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// One delivery in detail (issue #1046): what was sent, what came back
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// The body exactly as sent (pretty-printed), the request headers (the API
|
|
7
|
+
// never returns the signature), the response's first KiB, and Redeliver for a
|
|
8
|
+
// viewer holding the scope's write permission.
|
|
9
|
+
// =============================================================================
|
|
10
|
+
import CloseIcon from '@mui/icons-material/Close';
|
|
11
|
+
import ReplayIcon from '@mui/icons-material/Replay';
|
|
12
|
+
import { Alert, Box, Button, Divider, Drawer, IconButton, Skeleton, Stack, Table, TableBody, TableCell, TableRow, Typography, } from '@mui/material';
|
|
13
|
+
import { useDisplayTimeZone } from '../../core/index.js';
|
|
14
|
+
import { formatWebhookDuration, useWebhookDelivery } from '../headless/index.js';
|
|
15
|
+
import { DeliveryStatusChip, when } from './parts.js';
|
|
16
|
+
function pretty(value) {
|
|
17
|
+
if (typeof value === 'string') {
|
|
18
|
+
try {
|
|
19
|
+
return JSON.stringify(JSON.parse(value), null, 2);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
return JSON.stringify(value, null, 2) ?? '';
|
|
26
|
+
}
|
|
27
|
+
function Code({ label, children }) {
|
|
28
|
+
return (_jsx(Box, { component: "pre", "aria-label": label, tabIndex: 0, sx: {
|
|
29
|
+
m: 0,
|
|
30
|
+
p: 1.5,
|
|
31
|
+
bgcolor: 'action.hover',
|
|
32
|
+
borderRadius: 1,
|
|
33
|
+
fontFamily: 'monospace',
|
|
34
|
+
fontSize: 13,
|
|
35
|
+
overflowX: 'auto',
|
|
36
|
+
whiteSpace: 'pre',
|
|
37
|
+
maxHeight: 320,
|
|
38
|
+
}, children: children }));
|
|
39
|
+
}
|
|
40
|
+
function Row({ label, children }) {
|
|
41
|
+
return (_jsxs(TableRow, { children: [_jsx(TableCell, { component: "th", scope: "row", sx: { fontWeight: 600, width: '40%', pl: 0 }, children: label }), _jsx(TableCell, { sx: { pr: 0, wordBreak: 'break-word' }, children: children })] }));
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The delivery detail drawer.
|
|
45
|
+
*
|
|
46
|
+
* @param props - see {@link WebhookDeliveryDrawerProps}.
|
|
47
|
+
* @returns the drawer.
|
|
48
|
+
*
|
|
49
|
+
* @extensionPoint component
|
|
50
|
+
* @stability experimental
|
|
51
|
+
*/
|
|
52
|
+
export function WebhookDeliveryDrawer({ scope, deliveryId, canWrite, onRedeliver, redelivering, onClose, }) {
|
|
53
|
+
useDisplayTimeZone();
|
|
54
|
+
const { delivery, isLoading, error, refresh } = useWebhookDelivery(scope, deliveryId);
|
|
55
|
+
const headers = delivery ? Object.entries(delivery.requestHeaders) : [];
|
|
56
|
+
const redeliver = async () => {
|
|
57
|
+
if (!delivery)
|
|
58
|
+
return;
|
|
59
|
+
if (await onRedeliver(delivery))
|
|
60
|
+
await refresh();
|
|
61
|
+
};
|
|
62
|
+
return (_jsx(Drawer, { anchor: "right", open: deliveryId !== null, onClose: onClose, slotProps: { paper: { sx: { width: { xs: '100%', sm: 560 } }, role: 'dialog', 'aria-label': 'Delivery details' } }, children: _jsxs(Box, { sx: { p: 2 }, children: [_jsxs(Stack, { direction: "row", spacing: 1, sx: { mb: 2, alignItems: 'center' }, children: [_jsx(Typography, { variant: "h6", component: "h2", sx: { flexGrow: 1 }, children: "Delivery" }), _jsx(IconButton, { onClick: onClose, "aria-label": "Close delivery details", sx: { width: 44, height: 44 }, children: _jsx(CloseIcon, {}) })] }), error ? _jsx(Alert, { severity: "error", children: error }) : null, isLoading && !delivery ? (_jsxs(Stack, { spacing: 1, "aria-label": "Loading the delivery", children: [_jsx(Skeleton, { variant: "rounded", height: 32 }), _jsx(Skeleton, { variant: "rounded", height: 160 })] })) : null, delivery ? (_jsxs(Stack, { spacing: 2, children: [_jsx(Table, { size: "small", "aria-label": "Delivery summary", children: _jsxs(TableBody, { children: [_jsx(Row, { label: "Status", children: _jsx(DeliveryStatusChip, { status: delivery.status }) }), _jsx(Row, { label: "Event", children: _jsx(Box, { component: "span", sx: { fontFamily: 'monospace' }, children: delivery.eventKey }) }), _jsx(Row, { label: "Event id", children: _jsx(Box, { component: "span", sx: { fontFamily: 'monospace' }, children: delivery.eventId }) }), _jsx(Row, { label: "Created", children: when(delivery.createdAt) }), _jsx(Row, { label: "Attempt", children: delivery.attempt }), _jsx(Row, { label: "HTTP status", children: delivery.responseStatus ?? '—' }), _jsx(Row, { label: "Duration", children: formatWebhookDuration(delivery.durationMs) || '—' }), delivery.errorCode ? _jsx(Row, { label: "Error", children: delivery.errorCode }) : null, delivery.nextAttemptAt ? _jsx(Row, { label: "Next attempt", children: when(delivery.nextAttemptAt) }) : null, delivery.deliveredAt ? _jsx(Row, { label: "Delivered", children: when(delivery.deliveredAt) }) : null] }) }), canWrite ? (_jsx(Box, { children: _jsx(Button, { variant: "outlined", startIcon: _jsx(ReplayIcon, {}), onClick: () => void redeliver(), disabled: redelivering, sx: { minHeight: 44 }, children: "Redeliver" }) })) : null, _jsx(Divider, {}), _jsx(Typography, { variant: "subtitle1", component: "h3", children: "Payload" }), _jsx(Code, { label: "Payload", children: pretty(delivery.payload) }), _jsx(Typography, { variant: "subtitle1", component: "h3", children: "Request headers" }), headers.length === 0 ? (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "None recorded." })) : (_jsx(Table, { size: "small", "aria-label": "Request headers", children: _jsx(TableBody, { children: headers.map(([name, value]) => (_jsx(Row, { label: name, children: _jsx(Box, { component: "span", sx: { fontFamily: 'monospace' }, children: value }) }, name))) }) })), _jsx(Typography, { variant: "body2", color: "text.secondary", children: "The signature header is never shown here." }), _jsx(Typography, { variant: "subtitle1", component: "h3", children: "Response" }), delivery.responseSnippet ? (_jsx(Code, { label: "Response", children: delivery.responseSnippet })) : (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "No response body recorded." }))] })) : null] }) }));
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=WebhookDeliveryDrawer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookDeliveryDrawer.js","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookDeliveryDrawer.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
import type { WebhookDelivery, WebhookEndpoint, WebhookScope } from '@marinoscar/platform-contract/webhooks';
|
|
3
|
+
import { type TableSlots } from '../../core/index.js';
|
|
4
|
+
import { type DataTableColumn } from '../../datatable/index.js';
|
|
5
|
+
export interface WebhookEndpointDetailProps {
|
|
6
|
+
scope: WebhookScope;
|
|
7
|
+
endpoint: WebhookEndpoint;
|
|
8
|
+
canWrite: boolean;
|
|
9
|
+
busy: boolean;
|
|
10
|
+
/** Bumped by the page after a test or a redelivery, to reload the deliveries. */
|
|
11
|
+
reloadKey: number;
|
|
12
|
+
slots?: Pick<TableSlots<WebhookDelivery, DataTableColumn<WebhookDelivery>>, 'Columns' | 'RowActions' | 'DetailPanel' | 'Toolbar'>;
|
|
13
|
+
onBack: () => void;
|
|
14
|
+
onEdit: () => void;
|
|
15
|
+
onSendTest: () => void;
|
|
16
|
+
onRotate: () => void;
|
|
17
|
+
onDelete: () => void;
|
|
18
|
+
onOpenDelivery: (delivery: WebhookDelivery) => void;
|
|
19
|
+
}
|
|
20
|
+
export declare function WebhookEndpointDetail({ scope, endpoint, canWrite, busy, reloadKey, slots, onBack, onEdit, onSendTest, onRotate, onDelete, onOpenDelivery, }: WebhookEndpointDetailProps): ReactElement;
|
|
21
|
+
//# sourceMappingURL=WebhookEndpointDetail.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookEndpointDetail.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEndpointDetail.tsx"],"names":[],"mappings":"AA+BA,OAAO,EAAwC,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAGhF,OAAO,KAAK,EACV,eAAe,EAEf,eAAe,EACf,YAAY,EACb,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAA2C,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAa,KAAK,eAAe,EAA2B,MAAM,0BAA0B,CAAC;AAUpG,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,iFAAiF;IACjF,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC,EAAE,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,SAAS,CAAC,CAAC;IAClI,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,cAAc,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,IAAI,CAAC;CACrD;AAED,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,SAAS,EACT,KAAK,EACL,MAAM,EACN,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,cAAc,GACf,EAAE,0BAA0B,GAAG,YAAY,CAuN3C"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// One endpoint (issue #1046): its settings, its actions and its deliveries
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// Internal to `WebhooksPage`, which owns the writes and the dialogs: this view
|
|
7
|
+
// draws the endpoint and the server-paginated deliveries table, and reports
|
|
8
|
+
// which action the user picked.
|
|
9
|
+
// =============================================================================
|
|
10
|
+
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
|
|
11
|
+
import DeleteOutlineIcon from '@mui/icons-material/DeleteOutlined';
|
|
12
|
+
import EditOutlinedIcon from '@mui/icons-material/EditOutlined';
|
|
13
|
+
import KeyOutlinedIcon from '@mui/icons-material/KeyOutlined';
|
|
14
|
+
import RefreshIcon from '@mui/icons-material/Refresh';
|
|
15
|
+
import SendOutlinedIcon from '@mui/icons-material/SendOutlined';
|
|
16
|
+
import VisibilityOutlinedIcon from '@mui/icons-material/VisibilityOutlined';
|
|
17
|
+
import { Alert, Box, Button, Card, CardContent, Chip, FormControl, InputLabel, MenuItem, Select, Stack, TextField, Typography, } from '@mui/material';
|
|
18
|
+
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
19
|
+
import { WEBHOOK_DELIVERIES_PAGE_SIZE_DEFAULT, WEBHOOK_DELIVERY_STATUSES } from '@marinoscar/platform-contract/webhooks';
|
|
20
|
+
import { useDisplayTimeZone, useTableSlotColumns } from '../../core/index.js';
|
|
21
|
+
import { DataTable } from '../../datatable/index.js';
|
|
22
|
+
import { WEBHOOK_ALL_EVENTS, formatWebhookDuration, useWebhookDeliveries, webhookDeliveryStatusLabel, webhookEndpointStatus, } from '../headless/index.js';
|
|
23
|
+
import { DeliveryStatusChip, EndpointStatusChip, when } from './parts.js';
|
|
24
|
+
export function WebhookEndpointDetail({ scope, endpoint, canWrite, busy, reloadKey, slots, onBack, onEdit, onSendTest, onRotate, onDelete, onOpenDelivery, }) {
|
|
25
|
+
useDisplayTimeZone();
|
|
26
|
+
const [page, setPage] = useState(0);
|
|
27
|
+
const [pageSize, setPageSize] = useState(WEBHOOK_DELIVERIES_PAGE_SIZE_DEFAULT);
|
|
28
|
+
const [status, setStatus] = useState('');
|
|
29
|
+
const [eventInput, setEventInput] = useState('');
|
|
30
|
+
const [eventKey, setEventKey] = useState('');
|
|
31
|
+
useEffect(() => {
|
|
32
|
+
const timer = setTimeout(() => {
|
|
33
|
+
setEventKey(eventInput.trim());
|
|
34
|
+
setPage(0);
|
|
35
|
+
}, 300);
|
|
36
|
+
return () => clearTimeout(timer);
|
|
37
|
+
}, [eventInput]);
|
|
38
|
+
const { deliveries, total, isLoading, error, refresh } = useWebhookDeliveries(scope, endpoint.id, {
|
|
39
|
+
page: page + 1,
|
|
40
|
+
pageSize,
|
|
41
|
+
...(status ? { status } : {}),
|
|
42
|
+
...(eventKey ? { eventKey } : {}),
|
|
43
|
+
});
|
|
44
|
+
// Only a bump of the key reloads; `refresh` changes with the filters, which reload on their own.
|
|
45
|
+
const refreshRef = useRef(refresh);
|
|
46
|
+
refreshRef.current = refresh;
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
if (reloadKey > 0)
|
|
49
|
+
void refreshRef.current();
|
|
50
|
+
}, [reloadKey]);
|
|
51
|
+
const baseColumns = useMemo(() => [
|
|
52
|
+
{ id: 'createdAt', label: 'Time', priority: 'primary', render: (row) => when(row.createdAt), value: (row) => row.createdAt },
|
|
53
|
+
{
|
|
54
|
+
id: 'eventKey',
|
|
55
|
+
label: 'Event',
|
|
56
|
+
priority: 'primary',
|
|
57
|
+
render: (row) => (_jsx(Box, { component: "span", sx: { fontFamily: 'monospace' }, children: row.eventKey })),
|
|
58
|
+
value: (row) => row.eventKey,
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'status',
|
|
62
|
+
label: 'Status',
|
|
63
|
+
priority: 'secondary',
|
|
64
|
+
render: (row) => _jsx(DeliveryStatusChip, { status: row.status }),
|
|
65
|
+
value: (row) => webhookDeliveryStatusLabel(row.status),
|
|
66
|
+
},
|
|
67
|
+
{ id: 'responseStatus', label: 'HTTP status', priority: 'secondary', value: (row) => row.responseStatus ?? '—' },
|
|
68
|
+
{
|
|
69
|
+
id: 'durationMs',
|
|
70
|
+
label: 'Duration',
|
|
71
|
+
priority: 'detail',
|
|
72
|
+
value: (row) => formatWebhookDuration(row.durationMs) || '—',
|
|
73
|
+
},
|
|
74
|
+
{ id: 'attempt', label: 'Attempt', priority: 'detail', value: (row) => row.attempt },
|
|
75
|
+
], []);
|
|
76
|
+
const columns = useTableSlotColumns(baseColumns, slots);
|
|
77
|
+
const rowActions = useMemo(() => [{ id: 'view', label: 'View delivery', icon: _jsx(VisibilityOutlinedIcon, {}), onClick: onOpenDelivery }], [onOpenDelivery]);
|
|
78
|
+
const status_ = webhookEndpointStatus(endpoint);
|
|
79
|
+
const allEvents = endpoint.eventKeys.includes(WEBHOOK_ALL_EVENTS);
|
|
80
|
+
const Toolbar = slots?.Toolbar;
|
|
81
|
+
const rotationActive = endpoint.previousSecretUntil !== null && Date.parse(endpoint.previousSecretUntil) > Date.now();
|
|
82
|
+
return (_jsxs(Stack, { spacing: 2, children: [_jsx(Box, { children: _jsx(Button, { startIcon: _jsx(ArrowBackIcon, {}), onClick: onBack, sx: { minHeight: 44 }, children: "All endpoints" }) }), _jsx(Card, { variant: "outlined", children: _jsxs(CardContent, { children: [_jsxs(Stack, { direction: { xs: 'column', sm: 'row' }, spacing: 1, sx: { mb: 1, alignItems: { sm: 'center' } }, children: [_jsx(Typography, { variant: "h5", component: "h2", sx: { flexGrow: 1, wordBreak: 'break-word' }, children: endpoint.name }), _jsx(EndpointStatusChip, { endpoint: endpoint })] }), status_.hint ? (_jsx(Alert, { severity: status_.tone === 'error' ? 'error' : 'warning', sx: { mb: 2 }, children: status_.hint })) : null, _jsx(Typography, { variant: "body2", sx: { fontFamily: 'monospace', wordBreak: 'break-all' }, children: endpoint.url }), endpoint.description ? (_jsx(Typography, { variant: "body2", color: "text.secondary", sx: { mt: 1 }, children: endpoint.description })) : null, _jsx(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { mt: 1.5, flexWrap: 'wrap' }, "aria-label": "Subscribed events", children: allEvents ? (_jsx(Chip, { size: "small", label: "All events" })) : (endpoint.eventKeys.map((key) => _jsx(Chip, { size: "small", label: key, sx: { fontFamily: 'monospace' } }, key))) }), _jsxs(Typography, { variant: "body2", color: "text.secondary", sx: { mt: 1.5 }, children: ["Last success: ", when(endpoint.lastSuccessAt), " \u00B7 Last delivery: ", when(endpoint.lastDeliveryAt), endpoint.consecutiveFailures > 0 ? ` · ${endpoint.consecutiveFailures} failures in a row` : ''] }), _jsxs(Typography, { variant: "body2", color: "text.secondary", children: ["Secret version ", endpoint.secretVersion, rotationActive ? ` · the previous secret is still accepted until ${when(endpoint.previousSecretUntil)}` : ''] }), canWrite ? (_jsxs(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { mt: 2, flexWrap: 'wrap' }, children: [_jsx(Button, { variant: "contained", startIcon: _jsx(SendOutlinedIcon, {}), onClick: onSendTest, disabled: busy, sx: { minHeight: 44 }, children: "Send test event" }), _jsx(Button, { variant: "outlined", startIcon: _jsx(EditOutlinedIcon, {}), onClick: onEdit, disabled: busy, sx: { minHeight: 44 }, children: "Edit" }), _jsx(Button, { variant: "outlined", startIcon: _jsx(KeyOutlinedIcon, {}), onClick: onRotate, disabled: busy, sx: { minHeight: 44 }, children: "Rotate secret" }), _jsx(Button, { variant: "outlined", color: "error", startIcon: _jsx(DeleteOutlineIcon, {}), onClick: onDelete, disabled: busy, sx: { minHeight: 44 }, children: "Delete" })] })) : null] }) }), _jsx(Card, { variant: "outlined", children: _jsxs(CardContent, { children: [_jsxs(Stack, { direction: { xs: 'column', sm: 'row' }, spacing: 1, sx: { mb: 2, alignItems: { sm: 'center' } }, children: [_jsx(Typography, { variant: "h6", component: "h3", sx: { flexGrow: 1 }, children: "Deliveries" }), _jsx(Button, { startIcon: _jsx(RefreshIcon, {}), onClick: () => void refresh(), sx: { minHeight: 44 }, children: "Refresh" })] }), _jsxs(Stack, { direction: { xs: 'column', sm: 'row' }, spacing: 2, sx: { mb: 2 }, children: [_jsxs(FormControl, { size: "small", sx: { minWidth: 180 }, children: [_jsx(InputLabel, { id: "webhook-delivery-status-label", children: "Status" }), _jsxs(Select, { labelId: "webhook-delivery-status-label", label: "Status", value: status, onChange: (event) => {
|
|
83
|
+
setStatus(event.target.value);
|
|
84
|
+
setPage(0);
|
|
85
|
+
}, children: [_jsx(MenuItem, { value: "", children: "Any status" }), WEBHOOK_DELIVERY_STATUSES.map((value) => (_jsx(MenuItem, { value: value, children: webhookDeliveryStatusLabel(value) }, value)))] })] }), _jsx(TextField, { size: "small", label: "Event key", placeholder: "nodes.node.offline", value: eventInput, onChange: (event) => setEventInput(event.target.value) })] }), Toolbar ? _jsx(Toolbar, {}) : null, error ? (_jsx(Alert, { severity: "error", sx: { mb: 2 }, children: error })) : null, _jsx(DataTable, { tableId: `webhook-deliveries-${scope}`, ariaLabel: "Deliveries", columns: columns, rows: deliveries, rowId: (row) => row.id, loading: isLoading, rowActions: rowActions, emptyState: _jsxs(Typography, { variant: "body2", color: "text.secondary", sx: { p: 2 }, children: ["No deliveries yet.", canWrite ? ' Send a test event to try the endpoint.' : ''] }), pagination: {
|
|
86
|
+
page,
|
|
87
|
+
pageSize,
|
|
88
|
+
total,
|
|
89
|
+
pageSizeOptions: [10, 20, 50, 100],
|
|
90
|
+
onPaginationChange: (next) => {
|
|
91
|
+
setPage(next.page);
|
|
92
|
+
setPageSize(next.pageSize);
|
|
93
|
+
},
|
|
94
|
+
}, disableExport: true })] }) })] }));
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=WebhookEndpointDetail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookEndpointDetail.js","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEndpointDetail.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
import type { CreateWebhookEndpointInput, WebhookEndpoint } from '@marinoscar/platform-contract/webhooks';
|
|
3
|
+
import { type WebhookEventGroup } from '../headless/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* The props of {@link WebhookEndpointDialog}.
|
|
6
|
+
*
|
|
7
|
+
* @stability experimental
|
|
8
|
+
*/
|
|
9
|
+
export interface WebhookEndpointDialogProps {
|
|
10
|
+
/** Whether the dialog is open. */
|
|
11
|
+
open: boolean;
|
|
12
|
+
/** The endpoint to edit, or `null` to create one. */
|
|
13
|
+
endpoint: WebhookEndpoint | null;
|
|
14
|
+
/** The grouped event catalog. */
|
|
15
|
+
groups: readonly WebhookEventGroup[];
|
|
16
|
+
/** Whether the catalog is still loading. */
|
|
17
|
+
catalogLoading?: boolean;
|
|
18
|
+
/** A catalog load failure, in words. */
|
|
19
|
+
catalogError?: string | null;
|
|
20
|
+
/** Whether a save is in flight. */
|
|
21
|
+
saving?: boolean;
|
|
22
|
+
/** The API's refusal of the last save, in words. */
|
|
23
|
+
error?: string | null;
|
|
24
|
+
/** Saves the form; the caller closes the dialog once the API accepted it. */
|
|
25
|
+
onSubmit: (input: CreateWebhookEndpointInput) => void;
|
|
26
|
+
/** Closes without saving. */
|
|
27
|
+
onClose: () => void;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The create and edit form of a webhook endpoint.
|
|
31
|
+
*
|
|
32
|
+
* @param props - see {@link WebhookEndpointDialogProps}.
|
|
33
|
+
* @returns the dialog.
|
|
34
|
+
*
|
|
35
|
+
* @extensionPoint component
|
|
36
|
+
* @stability experimental
|
|
37
|
+
*/
|
|
38
|
+
export declare function WebhookEndpointDialog({ open, endpoint, groups, catalogLoading, catalogError, saving, error, onSubmit, onClose, }: WebhookEndpointDialogProps): ReactElement;
|
|
39
|
+
//# sourceMappingURL=WebhookEndpointDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookEndpointDialog.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEndpointDialog.tsx"],"names":[],"mappings":"AAwBA,OAAO,EAAuB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAO/D,OAAO,KAAK,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAE1G,OAAO,EAA4C,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAGxG;;;;GAIG;AACH,MAAM,WAAW,0BAA0B;IACzC,kCAAkC;IAClC,IAAI,EAAE,OAAO,CAAC;IACd,qDAAqD;IACrD,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,iCAAiC;IACjC,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,4CAA4C;IAC5C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,wCAAwC;IACxC,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,mCAAmC;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,oDAAoD;IACpD,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,QAAQ,EAAE,CAAC,KAAK,EAAE,0BAA0B,KAAK,IAAI,CAAC;IACtD,6BAA6B;IAC7B,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAWD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,EACpC,IAAI,EACJ,QAAQ,EACR,MAAM,EACN,cAAc,EACd,YAAY,EACZ,MAAM,EACN,KAAK,EACL,QAAQ,EACR,OAAO,GACR,EAAE,0BAA0B,GAAG,YAAY,CAiH3C"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Create or edit a webhook endpoint (issue #1046)
|
|
4
|
+
// =============================================================================
|
|
5
|
+
//
|
|
6
|
+
// Name, URL (with an https hint: the API refuses plain http unless the
|
|
7
|
+
// deployment allows it, and refuses private addresses), description, enabled
|
|
8
|
+
// and the events. The form checks only what helps the user type (required
|
|
9
|
+
// fields, a parsable URL, at least one event); the API validates everything.
|
|
10
|
+
// =============================================================================
|
|
11
|
+
import { Alert, Button, Dialog, DialogActions, DialogContent, DialogTitle, FormControlLabel, Stack, Switch, TextField, useMediaQuery, } from '@mui/material';
|
|
12
|
+
import { useTheme } from '@mui/material/styles';
|
|
13
|
+
import { useEffect, useState } from 'react';
|
|
14
|
+
import { WEBHOOK_DESCRIPTION_MAX, WEBHOOK_NAME_MAX, WEBHOOK_URL_MAX, } from '@marinoscar/platform-contract/webhooks';
|
|
15
|
+
import { isHttpsWebhookUrl, webhookEndpointStatus } from '../headless/index.js';
|
|
16
|
+
import { WebhookEventPicker } from './WebhookEventPicker.js';
|
|
17
|
+
function parsesAsHttpUrl(value) {
|
|
18
|
+
try {
|
|
19
|
+
const url = new URL(value);
|
|
20
|
+
return url.protocol === 'https:' || url.protocol === 'http:';
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The create and edit form of a webhook endpoint.
|
|
28
|
+
*
|
|
29
|
+
* @param props - see {@link WebhookEndpointDialogProps}.
|
|
30
|
+
* @returns the dialog.
|
|
31
|
+
*
|
|
32
|
+
* @extensionPoint component
|
|
33
|
+
* @stability experimental
|
|
34
|
+
*/
|
|
35
|
+
export function WebhookEndpointDialog({ open, endpoint, groups, catalogLoading, catalogError, saving, error, onSubmit, onClose, }) {
|
|
36
|
+
const theme = useTheme();
|
|
37
|
+
const fullScreen = useMediaQuery(theme.breakpoints.down('sm'));
|
|
38
|
+
const [name, setName] = useState('');
|
|
39
|
+
const [url, setUrl] = useState('');
|
|
40
|
+
const [description, setDescription] = useState('');
|
|
41
|
+
const [enabled, setEnabled] = useState(true);
|
|
42
|
+
const [eventKeys, setEventKeys] = useState([]);
|
|
43
|
+
const [touched, setTouched] = useState(false);
|
|
44
|
+
useEffect(() => {
|
|
45
|
+
if (!open)
|
|
46
|
+
return;
|
|
47
|
+
setName(endpoint?.name ?? '');
|
|
48
|
+
setUrl(endpoint?.url ?? '');
|
|
49
|
+
setDescription(endpoint?.description ?? '');
|
|
50
|
+
setEnabled(endpoint?.enabled ?? true);
|
|
51
|
+
setEventKeys(endpoint ? [...endpoint.eventKeys] : []);
|
|
52
|
+
setTouched(false);
|
|
53
|
+
}, [open, endpoint]);
|
|
54
|
+
const nameError = name.trim() === '' ? 'Give the endpoint a name.' : null;
|
|
55
|
+
const urlError = !parsesAsHttpUrl(url.trim()) ? 'Enter the full URL, starting with https://.' : null;
|
|
56
|
+
const eventsError = eventKeys.length === 0 ? 'Choose at least one event.' : null;
|
|
57
|
+
const invalid = nameError !== null || urlError !== null || eventsError !== null;
|
|
58
|
+
const platformDisabled = endpoint && !endpoint.enabled && endpoint.disabledReason ? webhookEndpointStatus(endpoint) : null;
|
|
59
|
+
const submit = () => {
|
|
60
|
+
setTouched(true);
|
|
61
|
+
if (invalid)
|
|
62
|
+
return;
|
|
63
|
+
const trimmed = description.trim();
|
|
64
|
+
onSubmit({
|
|
65
|
+
name: name.trim(),
|
|
66
|
+
url: url.trim(),
|
|
67
|
+
description: trimmed === '' ? null : trimmed,
|
|
68
|
+
enabled,
|
|
69
|
+
eventKeys,
|
|
70
|
+
});
|
|
71
|
+
};
|
|
72
|
+
const urlHelp = touched && urlError
|
|
73
|
+
? urlError
|
|
74
|
+
: url.trim() !== '' && parsesAsHttpUrl(url.trim()) && !isHttpsWebhookUrl(url.trim())
|
|
75
|
+
? 'Use https:// - plain http is refused unless this deployment allows it for development.'
|
|
76
|
+
: 'An https:// URL on the public internet. Private and internal addresses are refused.';
|
|
77
|
+
return (_jsxs(Dialog, { open: open, onClose: onClose, maxWidth: "md", fullWidth: true, fullScreen: fullScreen, "aria-labelledby": "webhook-endpoint-title", children: [_jsx(DialogTitle, { id: "webhook-endpoint-title", children: endpoint ? 'Edit endpoint' : 'New endpoint' }), _jsx(DialogContent, { children: _jsxs(Stack, { spacing: 2, sx: { pt: 1 }, children: [error ? _jsx(Alert, { severity: "error", children: error }) : null, _jsx(TextField, { label: "Name", required: true, value: name, onChange: (event) => setName(event.target.value), error: touched && nameError !== null, helperText: touched ? nameError : null, slotProps: { htmlInput: { maxLength: WEBHOOK_NAME_MAX } }, fullWidth: true }), _jsx(TextField, { label: "URL", required: true, type: "url", value: url, onChange: (event) => setUrl(event.target.value), placeholder: "https://receiver.example.test/hook", error: touched && urlError !== null, helperText: urlHelp, slotProps: { htmlInput: { maxLength: WEBHOOK_URL_MAX } }, fullWidth: true }), _jsx(TextField, { label: "Description", value: description, onChange: (event) => setDescription(event.target.value), multiline: true, minRows: 2, slotProps: { htmlInput: { maxLength: WEBHOOK_DESCRIPTION_MAX } }, fullWidth: true }), _jsx(FormControlLabel, { control: _jsx(Switch, { checked: enabled, onChange: (event) => setEnabled(event.target.checked) }), label: "Enabled" }), platformDisabled && enabled ? (_jsxs(Alert, { severity: "info", children: [platformDisabled.label, ". Saving with Enabled on switches it back on and resets the failure count."] })) : null, catalogError ? _jsx(Alert, { severity: "error", children: catalogError }) : null, catalogLoading ? null : (_jsx(WebhookEventPicker, { groups: groups, value: eventKeys, onChange: setEventKeys, error: touched ? eventsError : null }))] }) }), _jsxs(DialogActions, { children: [_jsx(Button, { onClick: onClose, sx: { minHeight: 44 }, children: "Cancel" }), _jsx(Button, { variant: "contained", onClick: submit, disabled: saving, sx: { minHeight: 44 }, children: endpoint ? 'Save' : 'Create endpoint' })] })] }));
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=WebhookEndpointDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookEndpointDialog.js","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEndpointDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
import { type WebhookEventGroup } from '../headless/index.js';
|
|
3
|
+
/**
|
|
4
|
+
* The props of {@link WebhookEventPicker}.
|
|
5
|
+
*
|
|
6
|
+
* @stability experimental
|
|
7
|
+
*/
|
|
8
|
+
export interface WebhookEventPickerProps {
|
|
9
|
+
/** The grouped catalog (`useWebhookEventCatalog(scope).groups`). */
|
|
10
|
+
groups: readonly WebhookEventGroup[];
|
|
11
|
+
/** The subscription: exact keys, `group.*` wildcards or `*`. */
|
|
12
|
+
value: readonly string[];
|
|
13
|
+
/** Receives the new subscription. */
|
|
14
|
+
onChange: (next: string[]) => void;
|
|
15
|
+
/** Disables every control. */
|
|
16
|
+
disabled?: boolean;
|
|
17
|
+
/** Shown under the picker when the selection is invalid. */
|
|
18
|
+
error?: string | null;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* The webhook event picker.
|
|
22
|
+
*
|
|
23
|
+
* @param props - see {@link WebhookEventPickerProps}.
|
|
24
|
+
* @returns the picker.
|
|
25
|
+
*
|
|
26
|
+
* @extensionPoint component
|
|
27
|
+
* @stability experimental
|
|
28
|
+
*/
|
|
29
|
+
export declare function WebhookEventPicker({ groups, value, onChange, disabled, error }: WebhookEventPickerProps): ReactElement;
|
|
30
|
+
//# sourceMappingURL=WebhookEventPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookEventPicker.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEventPicker.tsx"],"names":[],"mappings":"AAgBA,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAE7D,OAAO,EASL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAE9B;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,oEAAoE;IACpE,MAAM,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrC,gEAAgE;IAChE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,qCAAqC;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnC,8BAA8B;IAC9B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,4DAA4D;IAC5D,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,uBAAuB,GAAG,YAAY,CAkHtH"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// The event picker (issue #1046): the catalog grouped, searchable, with
|
|
4
|
+
// "every event" (`*`) and "every event in this group" (`group.*`)
|
|
5
|
+
// =============================================================================
|
|
6
|
+
import { Alert, Box, Checkbox, Chip, FormControlLabel, FormGroup, Stack, TextField, Typography, } from '@mui/material';
|
|
7
|
+
import { useMemo, useState } from 'react';
|
|
8
|
+
import { WEBHOOK_ALL_EVENTS, isWebhookEventSelected, searchWebhookEventGroups, toggleAllWebhookEvents, toggleWebhookEvent, toggleWebhookGroup, unknownWebhookSubscriptions, webhookGroupSelectionState, } from '../headless/index.js';
|
|
9
|
+
/**
|
|
10
|
+
* The webhook event picker.
|
|
11
|
+
*
|
|
12
|
+
* @param props - see {@link WebhookEventPickerProps}.
|
|
13
|
+
* @returns the picker.
|
|
14
|
+
*
|
|
15
|
+
* @extensionPoint component
|
|
16
|
+
* @stability experimental
|
|
17
|
+
*/
|
|
18
|
+
export function WebhookEventPicker({ groups, value, onChange, disabled, error }) {
|
|
19
|
+
const [query, setQuery] = useState('');
|
|
20
|
+
const visible = useMemo(() => searchWebhookEventGroups(groups, query), [groups, query]);
|
|
21
|
+
const all = value.includes(WEBHOOK_ALL_EVENTS);
|
|
22
|
+
const unknown = useMemo(() => unknownWebhookSubscriptions(value, groups), [value, groups]);
|
|
23
|
+
const fullGroup = (name) => groups.find((group) => group.group === name);
|
|
24
|
+
return (_jsxs(Box, { component: "fieldset", sx: { border: 0, p: 0, m: 0, minWidth: 0 }, children: [_jsx(Typography, { component: "legend", variant: "subtitle2", sx: { mb: 1 }, children: "Events" }), _jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: all, onChange: () => onChange(toggleAllWebhookEvents(value)), disabled: disabled }), label: "All events, including ones added later" }), _jsx(TextField, { label: "Search events", size: "small", fullWidth: true, value: query, onChange: (event) => setQuery(event.target.value), disabled: disabled, sx: { my: 1 } }), groups.length === 0 ? (_jsx(Typography, { variant: "body2", color: "text.secondary", children: "No events are available to you at this scope." })) : visible.length === 0 ? (_jsxs(Typography, { variant: "body2", color: "text.secondary", children: ["No event matches \u201C", query, "\u201D."] })) : (_jsx(Stack, { spacing: 1.5, sx: { maxHeight: 360, overflowY: 'auto', pr: 1 }, children: visible.map((shown) => {
|
|
25
|
+
const group = fullGroup(shown.group);
|
|
26
|
+
const state = webhookGroupSelectionState(value, group);
|
|
27
|
+
const groupLabel = group.wildcard
|
|
28
|
+
? `All ${group.group} events (${group.wildcard})`
|
|
29
|
+
: `All ${group.group} events`;
|
|
30
|
+
return (_jsxs(Box, { role: "group", "aria-label": group.group, children: [_jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: state === 'all', indeterminate: state === 'some', onChange: () => onChange(toggleWebhookGroup(value, group, groups)), disabled: disabled || all }), label: _jsx(Typography, { sx: { fontWeight: 600 }, children: groupLabel }) }), _jsx(FormGroup, { sx: { pl: 4 }, children: shown.entries.map((entry) => (_jsx(FormControlLabel, { control: _jsx(Checkbox, { checked: isWebhookEventSelected(value, entry.key), onChange: () => onChange(toggleWebhookEvent(value, entry.key, groups)), disabled: disabled || all, slotProps: { input: { 'aria-label': entry.label } } }), label: _jsxs(Box, { children: [_jsx(Typography, { variant: "body2", children: entry.label }), _jsx(Typography, { variant: "caption", color: "text.secondary", sx: { fontFamily: 'monospace' }, children: entry.key }), entry.description ? (_jsx(Typography, { variant: "caption", color: "text.secondary", sx: { display: 'block' }, children: entry.description })) : null] }), sx: { alignItems: 'flex-start', '& .MuiCheckbox-root': { pt: 0.5 } } }, entry.key))) })] }, group.group));
|
|
31
|
+
}) })), unknown.length > 0 ? (_jsxs(Box, { sx: { mt: 1 }, children: [_jsx(Typography, { variant: "body2", color: "text.secondary", children: "Also subscribed to events not listed here:" }), _jsx(Stack, { direction: "row", spacing: 1, useFlexGap: true, sx: { mt: 0.5, flexWrap: 'wrap' }, children: unknown.map((entry) => (_jsx(Chip, { label: entry, size: "small", onDelete: disabled ? undefined : () => onChange(value.filter((item) => item !== entry)) }, entry))) })] })) : null, error ? (_jsx(Alert, { severity: "error", sx: { mt: 1 }, children: error })) : null] }));
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=WebhookEventPicker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookEventPicker.js","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookEventPicker.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ReactElement } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* The props of {@link WebhookSecretDialog}.
|
|
4
|
+
*
|
|
5
|
+
* @stability experimental
|
|
6
|
+
*/
|
|
7
|
+
export interface WebhookSecretDialogProps {
|
|
8
|
+
/** The secret to show; `null` closes the dialog. */
|
|
9
|
+
secret: string | null;
|
|
10
|
+
/** Why it is shown: a new endpoint, or a rotation. */
|
|
11
|
+
reason: 'created' | 'rotated';
|
|
12
|
+
/** After a rotation: until when the previous secret is still accepted. */
|
|
13
|
+
previousSecretValidUntil?: string | null;
|
|
14
|
+
/** Closes the dialog (the caller drops the secret). */
|
|
15
|
+
onClose: () => void;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* The one-time display of a webhook signing secret, with a copy button.
|
|
19
|
+
*
|
|
20
|
+
* @param props - see {@link WebhookSecretDialogProps}.
|
|
21
|
+
* @returns the dialog.
|
|
22
|
+
*
|
|
23
|
+
* @extensionPoint component
|
|
24
|
+
* @stability experimental
|
|
25
|
+
*/
|
|
26
|
+
export declare function WebhookSecretDialog({ secret, reason, previousSecretValidUntil, onClose }: WebhookSecretDialogProps): ReactElement;
|
|
27
|
+
//# sourceMappingURL=WebhookSecretDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"WebhookSecretDialog.d.ts","sourceRoot":"","sources":["../../../src/webhooks/ui/WebhookSecretDialog.tsx"],"names":[],"mappings":"AA2BA,OAAO,EAAY,KAAK,YAAY,EAAE,MAAM,OAAO,CAAC;AAIpD;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,oDAAoD;IACpD,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,sDAAsD;IACtD,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,0EAA0E;IAC1E,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,uDAAuD;IACvD,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,wBAAwB,EAAE,OAAO,EAAE,EAAE,wBAAwB,GAAG,YAAY,CAsEjI"}
|