@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,310 +0,0 @@
1
- <template>
2
- <div class="h-full flex flex-col overflow-hidden">
3
- <!-- Header -->
4
- <div class="border-b border-gray-200 dark:border-gray-800 px-6 py-3 shrink-0">
5
- <div class="flex items-center justify-between">
6
- <div class="flex items-center gap-4">
7
- <h1 class="text-lg font-semibold">
8
- Scheduler
9
- </h1>
10
- </div>
11
- </div>
12
- </div>
13
-
14
- <!-- Main Content -->
15
- <div class="flex-1 min-h-0 overflow-y-auto">
16
- <div class="max-w-7xl mx-auto p-6">
17
- <!-- Stats Overview -->
18
- <div class="grid grid-cols-1 md:grid-cols-3 gap-4 mb-6">
19
- <StatCard
20
- icon="i-lucide-briefcase"
21
- :count="stats.total"
22
- label="Total Jobs"
23
- variant="blue"
24
- />
25
- <StatCard
26
- icon="i-lucide-play-circle"
27
- :count="stats.active"
28
- label="Active Jobs"
29
- variant="emerald"
30
- />
31
- <StatCard
32
- icon="i-lucide-timer"
33
- :count="lastRunText"
34
- label="Last Run"
35
- variant="purple"
36
- />
37
- </div>
38
-
39
- <!-- Jobs List -->
40
- <UCard>
41
- <template #header>
42
- <div class="flex items-center justify-between">
43
- <div class="flex items-center gap-3">
44
- <UIcon
45
- name="i-lucide-list"
46
- class="text-gray-500"
47
- />
48
- <h3 class="text-lg font-semibold">
49
- Scheduled Jobs
50
- </h3>
51
- </div>
52
- <UButton
53
- icon="i-lucide-refresh-cw"
54
- size="sm"
55
- color="gray"
56
- variant="ghost"
57
- :loading="loading"
58
- @click="loadJobs"
59
- >
60
- Refresh
61
- </UButton>
62
- </div>
63
- </template>
64
-
65
- <div
66
- v-if="loading && jobs.length === 0"
67
- class="text-center py-8"
68
- >
69
- <UIcon
70
- name="i-lucide-loader-2"
71
- class="w-8 h-8 animate-spin text-gray-400 mx-auto mb-2"
72
- />
73
- <p class="text-gray-600 dark:text-gray-400">
74
- Loading jobs...
75
- </p>
76
- </div>
77
-
78
- <div
79
- v-else-if="jobs.length === 0"
80
- class="text-center py-8"
81
- >
82
- <UIcon
83
- name="i-lucide-inbox"
84
- class="w-12 h-12 text-gray-400 mx-auto mb-2"
85
- />
86
- <p class="text-gray-600 dark:text-gray-400">
87
- No scheduled jobs found
88
- </p>
89
- </div>
90
-
91
- <div
92
- v-else
93
- class="space-y-2"
94
- >
95
- <div
96
- v-for="job in jobs"
97
- :key="job.id"
98
- class="p-4 rounded-lg border border-gray-200 dark:border-gray-800 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"
99
- >
100
- <div class="flex items-start justify-between">
101
- <div class="flex-1">
102
- <div class="flex items-center gap-3 mb-2">
103
- <UBadge
104
- :color="getJobTypeColor(job.type)"
105
- variant="subtle"
106
- size="xs"
107
- >
108
- {{ job.type }}
109
- </UBadge>
110
- <UBadge
111
- v-if="isJobActive(job)"
112
- color="emerald"
113
- variant="subtle"
114
- size="xs"
115
- >
116
- <div class="flex items-center gap-1">
117
- <div class="w-1.5 h-1.5 rounded-full bg-emerald-500 animate-pulse" />
118
- <span>Active</span>
119
- </div>
120
- </UBadge>
121
- <UBadge
122
- v-else-if="job.enabled === false"
123
- color="gray"
124
- variant="subtle"
125
- size="xs"
126
- >
127
- Disabled
128
- </UBadge>
129
- <h4 class="font-semibold text-gray-900 dark:text-white">
130
- {{ job.name || job.id }}
131
- </h4>
132
- </div>
133
-
134
- <div class="grid grid-cols-2 md:grid-cols-4 gap-4 text-sm">
135
- <div>
136
- <span class="text-gray-500 dark:text-gray-400">ID:</span>
137
- <span class="ml-1 font-mono text-xs text-gray-700 dark:text-gray-300">
138
- {{ job.id }}
139
- </span>
140
- </div>
141
-
142
- <div v-if="job.interval">
143
- <span class="text-gray-500 dark:text-gray-400">Interval:</span>
144
- <span class="ml-1 font-medium text-gray-700 dark:text-gray-300">
145
- {{ formatInterval(job.interval) }}
146
- </span>
147
- </div>
148
-
149
- <div v-if="job.cron">
150
- <span class="text-gray-500 dark:text-gray-400">Cron:</span>
151
- <span class="ml-1 font-mono text-xs text-gray-700 dark:text-gray-300">
152
- {{ job.cron }}
153
- </span>
154
- </div>
155
-
156
- <div v-if="job.executeAt">
157
- <span class="text-gray-500 dark:text-gray-400">Execute At:</span>
158
- <span class="ml-1 text-gray-700 dark:text-gray-300">
159
- {{ formatDate(job.executeAt) }}
160
- </span>
161
- </div>
162
-
163
- <div v-if="job.lastRun">
164
- <span class="text-gray-500 dark:text-gray-400">Last Run:</span>
165
- <span
166
- class="ml-1 text-gray-700 dark:text-gray-300"
167
- :title="formatDate(job.lastRun)"
168
- >
169
- {{ formatRelativeTime(job.lastRun) }}
170
- </span>
171
- </div>
172
-
173
- <div v-if="job.nextRun">
174
- <span class="text-gray-500 dark:text-gray-400">Next Run:</span>
175
- <span
176
- class="ml-1 text-gray-700 dark:text-gray-300"
177
- :class="{ 'text-emerald-600 dark:text-emerald-400 font-medium': isJobDueSoon(job) }"
178
- :title="formatDate(job.nextRun)"
179
- >
180
- {{ formatRelativeTime(job.nextRun, true) }}
181
- </span>
182
- </div>
183
-
184
- <div v-if="job.runCount !== void 0">
185
- <span class="text-gray-500 dark:text-gray-400">Executions:</span>
186
- <span class="ml-1 text-gray-700 dark:text-gray-300">
187
- {{ job.runCount }}
188
- </span>
189
- </div>
190
-
191
- <div v-if="job.failCount">
192
- <span class="text-gray-500 dark:text-gray-400">Failures:</span>
193
- <span class="ml-1 text-red-600 dark:text-red-400 font-medium">
194
- {{ job.failCount }}
195
- </span>
196
- </div>
197
- </div>
198
-
199
- <div
200
- v-if="job.metadata"
201
- class="mt-3 pt-3 border-t border-gray-200 dark:border-gray-800"
202
- >
203
- <details class="text-xs">
204
- <summary class="cursor-pointer text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300">
205
- Metadata
206
- </summary>
207
- <pre class="mt-2 p-2 bg-gray-100 dark:bg-gray-900 rounded text-xs overflow-auto">{{ JSON.stringify(job.metadata, null, 2) }}</pre>
208
- </details>
209
- </div>
210
- </div>
211
- </div>
212
- </div>
213
- </div>
214
- </UCard>
215
- </div>
216
- </div>
217
- </div>
218
- </template>
219
-
220
- <script setup>
221
- import { ref, computed, onMounted, onUnmounted } from "#imports";
222
- import StatCard from "../../components/StatCard.vue";
223
- const jobs = ref([]);
224
- const stats = ref({
225
- total: 0,
226
- active: 0
227
- });
228
- const loading = ref(false);
229
- const lastRunText = computed(() => {
230
- if (!stats.value.lastRun) return "Never";
231
- return formatRelativeTime(stats.value.lastRun);
232
- });
233
- async function loadJobs() {
234
- loading.value = true;
235
- try {
236
- const response = await $fetch("/api/_scheduler/jobs");
237
- jobs.value = response.jobs || [];
238
- stats.value = response.stats || { total: 0, active: 0 };
239
- } catch (error) {
240
- console.error("Failed to load scheduler jobs:", error);
241
- } finally {
242
- loading.value = false;
243
- }
244
- }
245
- function getJobTypeColor(type) {
246
- switch (type) {
247
- case "interval":
248
- return "blue";
249
- case "cron":
250
- return "purple";
251
- case "one-time":
252
- return "green";
253
- default:
254
- return "gray";
255
- }
256
- }
257
- function formatInterval(ms) {
258
- const seconds = Math.floor(ms / 1e3);
259
- const minutes = Math.floor(seconds / 60);
260
- const hours = Math.floor(minutes / 60);
261
- const days = Math.floor(hours / 24);
262
- if (days > 0) return `${days}d`;
263
- if (hours > 0) return `${hours}h`;
264
- if (minutes > 0) return `${minutes}m`;
265
- return `${seconds}s`;
266
- }
267
- function formatDate(timestamp) {
268
- return new Date(timestamp).toLocaleString();
269
- }
270
- function formatRelativeTime(timestamp, future = false) {
271
- const now = Date.now();
272
- const diff = future ? timestamp - now : now - timestamp;
273
- const seconds = Math.floor(Math.abs(diff) / 1e3);
274
- const minutes = Math.floor(seconds / 60);
275
- const hours = Math.floor(minutes / 60);
276
- const days = Math.floor(hours / 24);
277
- if (future) {
278
- if (diff < 0) return "Overdue";
279
- if (seconds < 60) return "Now";
280
- if (minutes < 60) return `in ${minutes}m`;
281
- if (hours < 24) return `in ${hours}h`;
282
- return `in ${days}d`;
283
- }
284
- if (seconds < 60) return "Just now";
285
- if (minutes < 60) return `${minutes}m ago`;
286
- if (hours < 24) return `${hours}h ago`;
287
- return `${days}d ago`;
288
- }
289
- function isJobActive(job) {
290
- if (job.enabled === false) return false;
291
- if (job.type === "one-time") {
292
- return job.executeAt ? job.executeAt > Date.now() : false;
293
- }
294
- return true;
295
- }
296
- function isJobDueSoon(job) {
297
- if (!job.nextRun) return false;
298
- const diff = job.nextRun - Date.now();
299
- return diff > 0 && diff < 5 * 60 * 1e3;
300
- }
301
- onMounted(() => {
302
- loadJobs();
303
- });
304
- const refreshInterval = setInterval(() => {
305
- loadJobs();
306
- }, 3e4);
307
- onUnmounted(() => {
308
- clearInterval(refreshInterval);
309
- });
310
- </script>
@@ -1,3 +0,0 @@
1
- declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
- declare const _default: typeof __VLS_export;
3
- export default _default;
@@ -1,3 +0,0 @@
1
- declare const __VLS_export: import("vue").DefineComponent<{}, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
2
- declare const _default: typeof __VLS_export;
3
- export default _default;