@asteby/metacore-webhooks 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +92 -0
  3. package/dist/components/create-dialog.d.ts +24 -0
  4. package/dist/components/create-dialog.d.ts.map +1 -0
  5. package/dist/components/create-dialog.js +134 -0
  6. package/dist/components/create-dialog.js.map +1 -0
  7. package/dist/components/index.d.ts +9 -0
  8. package/dist/components/index.d.ts.map +1 -0
  9. package/dist/components/index.js +5 -0
  10. package/dist/components/index.js.map +1 -0
  11. package/dist/components/logs-dialog.d.ts +16 -0
  12. package/dist/components/logs-dialog.d.ts.map +1 -0
  13. package/dist/components/logs-dialog.js +58 -0
  14. package/dist/components/logs-dialog.js.map +1 -0
  15. package/dist/components/stats-bar.d.ts +12 -0
  16. package/dist/components/stats-bar.d.ts.map +1 -0
  17. package/dist/components/stats-bar.js +42 -0
  18. package/dist/components/stats-bar.js.map +1 -0
  19. package/dist/components/webhooks-list.d.ts +16 -0
  20. package/dist/components/webhooks-list.d.ts.map +1 -0
  21. package/dist/components/webhooks-list.js +64 -0
  22. package/dist/components/webhooks-list.js.map +1 -0
  23. package/dist/hooks.d.ts +51 -0
  24. package/dist/hooks.d.ts.map +1 -0
  25. package/dist/hooks.js +136 -0
  26. package/dist/hooks.js.map +1 -0
  27. package/dist/i18n.d.ts +13 -0
  28. package/dist/i18n.d.ts.map +1 -0
  29. package/dist/i18n.js +11 -0
  30. package/dist/i18n.js.map +1 -0
  31. package/dist/index.d.ts +9 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +5 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/types.d.ts +138 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +9 -0
  38. package/dist/types.js.map +1 -0
  39. package/dist/webhooks-manager.d.ts +18 -0
  40. package/dist/webhooks-manager.d.ts.map +1 -0
  41. package/dist/webhooks-manager.js +90 -0
  42. package/dist/webhooks-manager.js.map +1 -0
  43. package/package.json +81 -0
@@ -0,0 +1,90 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { toast } from 'sonner';
4
+ import { Plus, Shield } from 'lucide-react';
5
+ import { Button } from '@asteby/metacore-ui/primitives';
6
+ import { cn } from '@asteby/metacore-ui/lib';
7
+ import { CreateDialog, DEFAULT_EVENT_PRESETS } from './components/create-dialog';
8
+ import { LogsDialog } from './components/logs-dialog';
9
+ import { StatsBar } from './components/stats-bar';
10
+ import { WebhooksList } from './components/webhooks-list';
11
+ import { useWebhooks } from './hooks';
12
+ import { defaultTranslate } from './i18n';
13
+ /**
14
+ * Top-level component orchestrating the webhooks UX. Wire it with any
15
+ * axios-compatible client plus the scope (`device` | `organization`).
16
+ */
17
+ export function WebhooksManager(props) {
18
+ const { t = defaultTranslate, className, hideHeader, hidePayloadReference, eventPresets = DEFAULT_EVENT_PRESETS, enableTest = true, enableReplay = false, devices = [], ...rest } = props;
19
+ const config = {
20
+ ...rest,
21
+ eventPresets,
22
+ enableTest,
23
+ enableReplay,
24
+ devices,
25
+ };
26
+ const { webhooks, stats, isLoading, create, update, remove, test, basePath, } = useWebhooks(config);
27
+ const [showCreate, setShowCreate] = useState(false);
28
+ const [logsTarget, setLogsTarget] = useState(null);
29
+ const handleDelete = (id) => {
30
+ if (typeof window !== 'undefined' && !window.confirm(t('webhooks.confirm.delete', '¿Eliminar este webhook?')))
31
+ return;
32
+ remove.mutate(id, {
33
+ onSuccess: () => toast.success(t('webhooks.toast.deleted', 'Webhook eliminado')),
34
+ onError: () => toast.error(t('webhooks.toast.delete_error', 'Error al eliminar webhook')),
35
+ });
36
+ };
37
+ const handleToggle = (id, nextStatus) => {
38
+ update.mutate({ id, patch: { status: nextStatus } }, {
39
+ onSuccess: () => toast.success(nextStatus === 'active'
40
+ ? t('webhooks.toast.activated', 'Webhook activado')
41
+ : t('webhooks.toast.paused', 'Webhook pausado')),
42
+ onError: () => toast.error(t('webhooks.toast.update_error', 'Error al actualizar webhook')),
43
+ });
44
+ };
45
+ const handleTest = (id) => {
46
+ test.mutate(id, {
47
+ onSuccess: () => toast.success(t('webhooks.toast.test_sent', 'Evento de prueba enviado')),
48
+ onError: () => toast.error(t('webhooks.toast.test_error', 'Error al enviar evento de prueba')),
49
+ });
50
+ };
51
+ return (_jsxs("div", { className: cn('space-y-6', className), children: [!hideHeader && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-lg font-semibold", children: t('webhooks.header.title', 'Webhooks') }), _jsx("p", { className: "text-sm text-muted-foreground", children: config.scope === 'organization'
52
+ ? t('webhooks.header.subtitle_org', 'Recibe eventos de toda la organización en tiempo real.')
53
+ : t('webhooks.header.subtitle_device', 'Recibe eventos del dispositivo en tiempo real.') })] }), _jsxs(Button, { onClick: () => setShowCreate(true), className: "gap-2 bg-violet-600 hover:bg-violet-700", children: [_jsx(Plus, { className: "h-4 w-4" }), t('webhooks.header.new', 'Nuevo webhook')] })] })), _jsx(StatsBar, { stats: stats, t: t }), _jsx(WebhooksList, { webhooks: webhooks, isLoading: isLoading, onDelete: handleDelete, onToggle: handleToggle, onTest: enableTest ? handleTest : undefined, onViewLogs: (wh) => setLogsTarget(wh), enableTest: enableTest, showDeviceChip: config.scope === 'device', t: t }), !hidePayloadReference && _jsx(PayloadReference, { t: t }), _jsx(CreateDialog, { open: showCreate, onOpenChange: setShowCreate, showDeviceSelector: config.scope === 'device', devices: devices, defaultDeviceId: config.deviceId, eventPresets: eventPresets, t: t, onSubmit: async (payload) => {
54
+ const res = await create.mutateAsync(payload);
55
+ return { secret: res.data.secret };
56
+ } }), _jsx(LogsDialog, { open: !!logsTarget, onOpenChange: (open) => {
57
+ if (!open)
58
+ setLogsTarget(null);
59
+ }, webhookId: logsTarget?.id ?? null, webhookName: logsTarget?.name ?? '', apiClient: config.apiClient, basePath: basePath, enableReplay: enableReplay, t: t })] }));
60
+ }
61
+ /** Small docs block rendered below the list. */
62
+ function PayloadReference({ t }) {
63
+ const headers = [
64
+ { header: 'Content-Type', value: 'application/json' },
65
+ { header: 'X-Webhook-ID', value: t('webhooks.docs.h_id', 'UUID del webhook') },
66
+ { header: 'X-Webhook-Event', value: t('webhooks.docs.h_event', 'Tipo de evento') },
67
+ { header: 'X-Webhook-Timestamp', value: t('webhooks.docs.h_ts', 'Unix timestamp') },
68
+ { header: 'X-Webhook-Signature', value: t('webhooks.docs.h_sig', 'HMAC-SHA256 signature') },
69
+ { header: 'X-Webhook-Delivery', value: t('webhooks.docs.h_delivery', 'ID único de entrega') },
70
+ ];
71
+ return (_jsxs("div", { className: "rounded-xl border bg-card/40 overflow-hidden", children: [_jsxs("div", { className: "px-4 py-3 border-b bg-muted/20 flex items-center gap-2", children: [_jsx(Shield, { className: "h-4 w-4 text-violet-500" }), _jsx("span", { className: "text-sm font-semibold", children: t('webhooks.docs.title', 'Formato del payload') })] }), _jsxs("div", { className: "p-4 space-y-4", children: [_jsxs("div", { children: [_jsx("h4", { className: "text-xs font-semibold text-muted-foreground mb-2", children: t('webhooks.docs.headers', 'Headers que recibirás:') }), _jsx("div", { className: "space-y-1", children: headers.map((h) => (_jsxs("div", { className: "flex items-center gap-2 text-xs", children: [_jsx("code", { className: "font-mono text-primary font-semibold", children: h.header }), _jsxs("span", { className: "text-muted-foreground", children: ["\u2014 ", h.value] })] }, h.header))) })] }), _jsxs("div", { children: [_jsx("h4", { className: "text-xs font-semibold text-muted-foreground mb-2", children: t('webhooks.docs.body', 'Body (JSON):') }), _jsx("pre", { className: "text-[11px] font-mono text-muted-foreground p-3 rounded-lg bg-muted/20 overflow-x-auto", children: `{
72
+ "id": "uuid-unique-event-id",
73
+ "type": "message.incoming",
74
+ "timestamp": "2026-02-10T22:47:42Z",
75
+ "device_id": "uuid-device-id",
76
+ "org_id": "uuid-organization-id",
77
+ "data": {
78
+ "message_id": "uuid",
79
+ "conversation_id": "uuid",
80
+ "content": "Hola!",
81
+ "content_type": "text",
82
+ "sender_type": "contact",
83
+ "contact": {
84
+ "name": "Juan Pérez",
85
+ "phone": "+521234567890"
86
+ }
87
+ }
88
+ }` })] })] })] }));
89
+ }
90
+ //# sourceMappingURL=webhooks-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks-manager.js","sourceRoot":"","sources":["../src/webhooks-manager.tsx"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@asteby/metacore-webhooks",
3
+ "version": "2.0.0",
4
+ "description": "Metacore webhooks management UI — list, create, logs, test/replay, signing secrets",
5
+ "license": "Apache-2.0",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "https://github.com/asteby/metacore-sdk",
9
+ "directory": "packages/webhooks"
10
+ },
11
+ "type": "module",
12
+ "main": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "files": [
15
+ "dist",
16
+ "README.md"
17
+ ],
18
+ "exports": {
19
+ ".": {
20
+ "types": "./dist/index.d.ts",
21
+ "import": "./dist/index.js"
22
+ },
23
+ "./components": {
24
+ "types": "./dist/components/index.d.ts",
25
+ "import": "./dist/components/index.js"
26
+ },
27
+ "./hooks": {
28
+ "types": "./dist/hooks.d.ts",
29
+ "import": "./dist/hooks.js"
30
+ }
31
+ },
32
+ "peerDependencies": {
33
+ "react": ">=18",
34
+ "react-dom": ">=18",
35
+ "@tanstack/react-query": ">=5",
36
+ "react-hook-form": ">=7",
37
+ "react-i18next": ">=13",
38
+ "sonner": ">=1.7",
39
+ "date-fns": ">=3",
40
+ "lucide-react": ">=0.460",
41
+ "@asteby/metacore-ui": "^0.3.0"
42
+ },
43
+ "peerDependenciesMeta": {
44
+ "react-i18next": {
45
+ "optional": true
46
+ },
47
+ "date-fns": {
48
+ "optional": true
49
+ },
50
+ "react-hook-form": {
51
+ "optional": true
52
+ }
53
+ },
54
+ "dependencies": {
55
+ "@hookform/resolvers": "^3.9.0",
56
+ "zod": "^4.3.0"
57
+ },
58
+ "devDependencies": {
59
+ "@tanstack/react-query": "^5.95.0",
60
+ "@types/react": "^19.0.0",
61
+ "@types/react-dom": "^19.0.0",
62
+ "date-fns": "^4.1.0",
63
+ "lucide-react": "^0.460.0",
64
+ "react": "^19.2.4",
65
+ "react-dom": "^19.2.4",
66
+ "react-hook-form": "^7.72.0",
67
+ "react-i18next": "^15.1.0",
68
+ "sonner": "^1.7.0",
69
+ "typescript": "^5.6.0",
70
+ "@asteby/metacore-ui": "0.3.0"
71
+ },
72
+ "publishConfig": {
73
+ "access": "public"
74
+ },
75
+ "scripts": {
76
+ "build": "tsc -p tsconfig.json",
77
+ "dev": "tsc -w -p tsconfig.json",
78
+ "typecheck": "tsc -p tsconfig.json --noEmit",
79
+ "clean": "rm -rf dist"
80
+ }
81
+ }