@nvent-addon/app 0.5.15 → 1.0.0-alpha.10

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 (95) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +3 -2
  3. package/dist/runtime/app/components/DashboardCard.d.vue.ts +1 -1
  4. package/dist/runtime/app/components/DashboardCard.vue.d.ts +1 -1
  5. package/dist/runtime/app/composables/useWorkers.d.ts +57 -0
  6. package/dist/runtime/app/composables/useWorkers.js +42 -0
  7. package/dist/runtime/app/pages/dashboard.vue +1 -654
  8. package/dist/runtime/app/pages/index.vue +25 -41
  9. package/dist/runtime/app/pages/workers.vue +458 -0
  10. package/dist/runtime/server/api/_workers/index.get.d.ts +8 -0
  11. package/dist/runtime/server/api/_workers/index.get.js +14 -0
  12. package/package.json +13 -12
  13. package/dist/runtime/app/components/ComponentRouter.d.vue.ts +0 -46
  14. package/dist/runtime/app/components/ComponentRouter.vue +0 -26
  15. package/dist/runtime/app/components/ComponentRouter.vue.d.ts +0 -46
  16. package/dist/runtime/app/components/ComponentShell.d.vue.ts +0 -23
  17. package/dist/runtime/app/components/ComponentShell.vue +0 -97
  18. package/dist/runtime/app/components/ComponentShell.vue.d.ts +0 -23
  19. package/dist/runtime/app/components/ConfirmDialog.d.vue.ts +0 -33
  20. package/dist/runtime/app/components/ConfirmDialog.vue +0 -120
  21. package/dist/runtime/app/components/ConfirmDialog.vue.d.ts +0 -33
  22. package/dist/runtime/app/composables/useComponentRouter.d.ts +0 -46
  23. package/dist/runtime/app/composables/useComponentRouter.js +0 -248
  24. package/dist/runtime/app/pages/flows/[name].vue +0 -750
  25. package/dist/runtime/app/pages/flows/index.d.vue.ts +0 -3
  26. package/dist/runtime/app/pages/flows/index.vue +0 -381
  27. package/dist/runtime/app/pages/flows/index.vue.d.ts +0 -3
  28. package/dist/runtime/app/pages/queues/index.d.vue.ts +0 -3
  29. package/dist/runtime/app/pages/queues/index.vue +0 -236
  30. package/dist/runtime/app/pages/queues/index.vue.d.ts +0 -3
  31. package/dist/runtime/app/pages/queues/job.d.vue.ts +0 -3
  32. package/dist/runtime/app/pages/queues/job.vue +0 -261
  33. package/dist/runtime/app/pages/queues/job.vue.d.ts +0 -3
  34. package/dist/runtime/app/pages/queues/jobs.d.vue.ts +0 -3
  35. package/dist/runtime/app/pages/queues/jobs.vue +0 -595
  36. package/dist/runtime/app/pages/queues/jobs.vue.d.ts +0 -3
  37. package/dist/runtime/app/pages/settings/scheduler.d.vue.ts +0 -3
  38. package/dist/runtime/app/pages/settings/scheduler.vue +0 -310
  39. package/dist/runtime/app/pages/settings/scheduler.vue.d.ts +0 -3
  40. package/dist/runtime/app/pages/triggers/[name]/edit.d.vue.ts +0 -3
  41. package/dist/runtime/app/pages/triggers/[name]/edit.vue +0 -429
  42. package/dist/runtime/app/pages/triggers/[name]/edit.vue.d.ts +0 -3
  43. package/dist/runtime/app/pages/triggers/[name].d.vue.ts +0 -3
  44. package/dist/runtime/app/pages/triggers/[name].vue +0 -870
  45. package/dist/runtime/app/pages/triggers/[name].vue.d.ts +0 -3
  46. package/dist/runtime/app/pages/triggers/index.d.vue.ts +0 -3
  47. package/dist/runtime/app/pages/triggers/index.vue +0 -525
  48. package/dist/runtime/app/pages/triggers/index.vue.d.ts +0 -3
  49. package/dist/runtime/app/pages/triggers/new.d.vue.ts +0 -3
  50. package/dist/runtime/app/pages/triggers/new.vue +0 -610
  51. package/dist/runtime/app/pages/triggers/new.vue.d.ts +0 -3
  52. package/dist/runtime/server/api/_flows/[name]/clear-history.delete.d.ts +0 -10
  53. package/dist/runtime/server/api/_flows/[name]/clear-history.delete.js +0 -49
  54. package/dist/runtime/server/api/_flows/[name]/runs/[runId]/cancel.post.d.ts +0 -2
  55. package/dist/runtime/server/api/_flows/[name]/runs/[runId]/cancel.post.js +0 -21
  56. package/dist/runtime/server/api/_flows/[name]/runs/[runId]/restart.post.d.ts +0 -2
  57. package/dist/runtime/server/api/_flows/[name]/runs/[runId]/restart.post.js +0 -21
  58. package/dist/runtime/server/api/_flows/[name]/runs.get.d.ts +0 -17
  59. package/dist/runtime/server/api/_flows/[name]/runs.get.js +0 -64
  60. package/dist/runtime/server/api/_flows/[name]/start.post.d.ts +0 -2
  61. package/dist/runtime/server/api/_flows/[name]/start.post.js +0 -9
  62. package/dist/runtime/server/api/_flows/index.get.d.ts +0 -7
  63. package/dist/runtime/server/api/_flows/index.get.js +0 -5
  64. package/dist/runtime/server/api/_flows/recent-runs.get.d.ts +0 -15
  65. package/dist/runtime/server/api/_flows/recent-runs.get.js +0 -67
  66. package/dist/runtime/server/api/_flows/ws.d.ts +0 -80
  67. package/dist/runtime/server/api/_flows/ws.js +0 -309
  68. package/dist/runtime/server/api/_queues/[name]/job/[id].get.d.ts +0 -2
  69. package/dist/runtime/server/api/_queues/[name]/job/[id].get.js +0 -14
  70. package/dist/runtime/server/api/_queues/[name]/job/index.get.d.ts +0 -2
  71. package/dist/runtime/server/api/_queues/[name]/job/index.get.js +0 -39
  72. package/dist/runtime/server/api/_queues/index.get.d.ts +0 -2
  73. package/dist/runtime/server/api/_queues/index.get.js +0 -106
  74. package/dist/runtime/server/api/_queues/ws.d.ts +0 -48
  75. package/dist/runtime/server/api/_queues/ws.js +0 -215
  76. package/dist/runtime/server/api/_scheduler/jobs.get.d.ts +0 -19
  77. package/dist/runtime/server/api/_scheduler/jobs.get.js +0 -36
  78. package/dist/runtime/server/api/_triggers/[name]/events.get.d.ts +0 -6
  79. package/dist/runtime/server/api/_triggers/[name]/events.get.js +0 -43
  80. package/dist/runtime/server/api/_triggers/[name]/index.get.d.ts +0 -6
  81. package/dist/runtime/server/api/_triggers/[name]/index.get.js +0 -76
  82. package/dist/runtime/server/api/_triggers/[name].delete.d.ts +0 -7
  83. package/dist/runtime/server/api/_triggers/[name].delete.js +0 -37
  84. package/dist/runtime/server/api/_triggers/[name].patch.d.ts +0 -7
  85. package/dist/runtime/server/api/_triggers/[name].patch.js +0 -117
  86. package/dist/runtime/server/api/_triggers/index.get.d.ts +0 -6
  87. package/dist/runtime/server/api/_triggers/index.get.js +0 -44
  88. package/dist/runtime/server/api/_triggers/index.post.d.ts +0 -7
  89. package/dist/runtime/server/api/_triggers/index.post.js +0 -124
  90. package/dist/runtime/server/api/_triggers/stats.get.d.ts +0 -6
  91. package/dist/runtime/server/api/_triggers/stats.get.js +0 -41
  92. package/dist/runtime/server/api/_triggers/ws.d.ts +0 -74
  93. package/dist/runtime/server/api/_triggers/ws.js +0 -315
  94. /package/dist/runtime/app/pages/{flows/[name].d.vue.ts → workers.d.vue.ts} +0 -0
  95. /package/dist/runtime/app/pages/{flows/[name].vue.d.ts → workers.vue.d.ts} +0 -0
@@ -1,315 +0,0 @@
1
- import {
2
- defineWebSocketHandler,
3
- usePeerManager,
4
- useNventLogger,
5
- useStreamAdapter,
6
- useStoreAdapter,
7
- useStreamTopics,
8
- useTrigger
9
- } from "#imports";
10
- const peerContexts = /* @__PURE__ */ new WeakMap();
11
- function safeSend(peer, data) {
12
- try {
13
- peer.send(JSON.stringify(data));
14
- return true;
15
- } catch {
16
- return false;
17
- }
18
- }
19
- export default defineWebSocketHandler({
20
- async open(peer) {
21
- const logger = useNventLogger("api-triggers-ws");
22
- logger.info("[ws] client connected:", { peerId: peer.id });
23
- const { registerWsPeer } = usePeerManager();
24
- registerWsPeer(peer);
25
- peerContexts.set(peer, {
26
- subscriptions: /* @__PURE__ */ new Map()
27
- });
28
- safeSend(peer, {
29
- type: "connected",
30
- timestamp: Date.now()
31
- });
32
- },
33
- async message(peer, message) {
34
- const logger = useNventLogger("api-triggers-ws");
35
- const context = peerContexts.get(peer);
36
- if (!context) {
37
- logger.error("[ws] no context for peer:", { peerId: peer.id });
38
- return;
39
- }
40
- let data;
41
- try {
42
- data = JSON.parse(message.text());
43
- } catch {
44
- safeSend(peer, {
45
- type: "error",
46
- message: "Invalid JSON"
47
- });
48
- return;
49
- }
50
- const { type, triggerName } = data;
51
- if (type === "subscribe") {
52
- if (!triggerName) {
53
- safeSend(peer, {
54
- type: "error",
55
- message: "Missing triggerName"
56
- });
57
- return;
58
- }
59
- let stream;
60
- let store;
61
- try {
62
- stream = useStreamAdapter();
63
- store = useStoreAdapter();
64
- } catch (err) {
65
- logger.error("[ws] Adapters not initialized yet:", { error: err });
66
- safeSend(peer, {
67
- type: "error",
68
- message: "Server initializing, please retry"
69
- });
70
- return;
71
- }
72
- const existingHandle = context.subscriptions.get(triggerName);
73
- if (existingHandle) {
74
- try {
75
- if (typeof existingHandle === "function") {
76
- await existingHandle();
77
- } else {
78
- await existingHandle.unsubscribe();
79
- }
80
- } catch (err) {
81
- logger.error("[ws] error unsubscribing:", { error: err });
82
- }
83
- }
84
- const { StoreSubjects, StreamTopics } = useStreamTopics();
85
- const streamTopic = StreamTopics.triggerEvents(triggerName);
86
- const storeSubject = StoreSubjects.triggerStream(triggerName);
87
- const handle = await stream.subscribe(streamTopic, async (message2) => {
88
- const event = message2.data?.event;
89
- if (!event) {
90
- logger.warn("[ws] Received message without event data:", message2);
91
- return;
92
- }
93
- safeSend(peer, {
94
- type: "event",
95
- triggerName,
96
- event
97
- });
98
- });
99
- context.subscriptions.set(triggerName, handle);
100
- try {
101
- const historicalEvents = await store.stream.read(storeSubject, {
102
- limit: 100,
103
- order: "asc"
104
- // Forward order to match flows
105
- });
106
- safeSend(peer, {
107
- type: "history",
108
- triggerName,
109
- events: historicalEvents || []
110
- });
111
- } catch (err) {
112
- logger.error("[ws] error sending history:", { error: err });
113
- safeSend(peer, {
114
- type: "error",
115
- message: "Failed to load history"
116
- });
117
- }
118
- safeSend(peer, {
119
- type: "subscribed",
120
- triggerName
121
- });
122
- } else if (type === "unsubscribe") {
123
- if (!triggerName) {
124
- safeSend(peer, {
125
- type: "error",
126
- message: "Missing triggerName"
127
- });
128
- return;
129
- }
130
- const handle = context.subscriptions.get(triggerName);
131
- if (handle) {
132
- try {
133
- if (typeof handle === "function") {
134
- await handle();
135
- } else {
136
- await handle.unsubscribe();
137
- }
138
- context.subscriptions.delete(triggerName);
139
- safeSend(peer, {
140
- type: "unsubscribed",
141
- triggerName
142
- });
143
- } catch (err) {
144
- logger.error("[ws] error unsubscribing:", { error: err });
145
- safeSend(peer, {
146
- type: "error",
147
- message: "Failed to unsubscribe"
148
- });
149
- }
150
- }
151
- } else if (type === "subscribe.stats") {
152
- const statsKey = "stats";
153
- const existingUnsub = context.subscriptions.get(statsKey);
154
- if (existingUnsub) {
155
- safeSend(peer, {
156
- type: "error",
157
- message: "Already subscribed to stats"
158
- });
159
- return;
160
- }
161
- try {
162
- const stream = useStreamAdapter();
163
- const { StreamTopics } = useStreamTopics();
164
- const topic = StreamTopics.triggerStats();
165
- const handle = await stream.subscribe(topic, (message2) => {
166
- safeSend(peer, {
167
- type: "trigger.stats.update",
168
- data: message2,
169
- timestamp: Date.now()
170
- });
171
- });
172
- const unsub = async () => {
173
- try {
174
- await handle.unsubscribe();
175
- } catch (err) {
176
- logger.error("[ws] error in stats unsub:", { error: err });
177
- }
178
- };
179
- context.subscriptions.set(statsKey, unsub);
180
- try {
181
- const trigger = useTrigger();
182
- const allTriggers = trigger.getAllTriggers();
183
- const { getSubscribedFlows, getTriggerStats } = trigger;
184
- if (allTriggers && allTriggers.length > 0) {
185
- for (const triggerEntry of allTriggers) {
186
- const subscribedFlows = getSubscribedFlows(triggerEntry.name);
187
- const stats = await getTriggerStats(triggerEntry.name);
188
- safeSend(peer, {
189
- type: "trigger.stats.initial",
190
- data: {
191
- id: triggerEntry.name,
192
- metadata: {
193
- "name": triggerEntry.name,
194
- "type": triggerEntry.type,
195
- "scope": triggerEntry.scope,
196
- "displayName": triggerEntry.displayName,
197
- "description": triggerEntry.description,
198
- "source": triggerEntry.source,
199
- "status": triggerEntry.status || "active",
200
- "registeredAt": triggerEntry.registeredAt,
201
- "lastActivityAt": triggerEntry.lastActivityAt,
202
- "webhook": triggerEntry.webhook,
203
- "schedule": triggerEntry.schedule,
204
- "config": triggerEntry.config,
205
- "subscribedFlows": subscribedFlows,
206
- "subscriptionCount": subscribedFlows.length,
207
- "stats.totalFires": stats?.totalFires || 0,
208
- "stats.totalFlowsStarted": stats?.totalFlowsStarted || 0,
209
- "stats.activeSubscribers": stats?.activeSubscribers || subscribedFlows.length,
210
- "stats.lastFiredAt": stats?.lastFiredAt
211
- }
212
- },
213
- timestamp: Date.now()
214
- });
215
- }
216
- }
217
- } catch (err) {
218
- logger.error("[ws] error fetching initial trigger stats:", { error: err });
219
- }
220
- safeSend(peer, {
221
- type: "stats.subscribed",
222
- timestamp: Date.now()
223
- });
224
- } catch (err) {
225
- logger.error("[ws] error subscribing to stats:", { error: err });
226
- safeSend(peer, {
227
- type: "error",
228
- message: "Failed to subscribe to stats"
229
- });
230
- }
231
- } else if (type === "unsubscribe.stats") {
232
- const statsKey = "stats";
233
- const unsub = context.subscriptions.get(statsKey);
234
- if (unsub) {
235
- try {
236
- if (typeof unsub === "function") {
237
- await unsub();
238
- } else {
239
- await unsub.unsubscribe();
240
- }
241
- context.subscriptions.delete(statsKey);
242
- safeSend(peer, {
243
- type: "stats.unsubscribed",
244
- timestamp: Date.now()
245
- });
246
- } catch (err) {
247
- logger.error("[ws] error unsubscribing from stats:", { error: err });
248
- safeSend(peer, {
249
- type: "error",
250
- message: "Failed to unsubscribe from stats"
251
- });
252
- }
253
- }
254
- } else if (type === "ping") {
255
- safeSend(peer, {
256
- type: "pong",
257
- timestamp: Date.now()
258
- });
259
- } else {
260
- safeSend(peer, {
261
- type: "error",
262
- message: `Unknown message type: ${type}`
263
- });
264
- }
265
- },
266
- async close(peer, event) {
267
- const logger = useNventLogger("api-triggers-ws");
268
- const isNormalClosure = event?.code === 1e3 || event?.code === 1001;
269
- if (!isNormalClosure) {
270
- logger.info("[ws] client disconnected:", { peerId: peer.id, code: event?.code, reason: event?.reason });
271
- }
272
- const { unregisterWsPeer } = usePeerManager();
273
- unregisterWsPeer(peer);
274
- const context = peerContexts.get(peer);
275
- if (context) {
276
- for (const handleOrUnsub of Array.from(context.subscriptions.values())) {
277
- try {
278
- if (typeof handleOrUnsub === "function") {
279
- await handleOrUnsub();
280
- } else {
281
- await handleOrUnsub.unsubscribe();
282
- }
283
- } catch (err) {
284
- if (!isNormalClosure) {
285
- logger.error("[ws] error unsubscribing on close:", { error: err });
286
- }
287
- }
288
- }
289
- context.subscriptions.clear();
290
- peerContexts.delete(peer);
291
- }
292
- },
293
- async error(peer, error) {
294
- const logger = useNventLogger("api-triggers-ws");
295
- logger.error("[ws] error for peer:", { peerId: peer.id, error });
296
- const { unregisterWsPeer } = usePeerManager();
297
- unregisterWsPeer(peer);
298
- const context = peerContexts.get(peer);
299
- if (context) {
300
- for (const handleOrUnsub of Array.from(context.subscriptions.values())) {
301
- try {
302
- if (typeof handleOrUnsub === "function") {
303
- await handleOrUnsub();
304
- } else {
305
- await handleOrUnsub.unsubscribe();
306
- }
307
- } catch (err) {
308
- logger.error("[ws] error unsubscribing on error:", { error: err });
309
- }
310
- }
311
- context.subscriptions.clear();
312
- peerContexts.delete(peer);
313
- }
314
- }
315
- });