nvent 0.4.4 → 0.4.5

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 (234) hide show
  1. package/dist/module.d.mts +3 -184
  2. package/dist/module.json +3 -3
  3. package/dist/module.mjs +133 -197
  4. package/dist/runtime/adapters/builtin/file-queue.d.ts +53 -0
  5. package/dist/runtime/adapters/builtin/file-queue.js +435 -0
  6. package/dist/runtime/adapters/builtin/file-store.d.ts +46 -0
  7. package/dist/runtime/adapters/builtin/file-store.js +225 -0
  8. package/dist/runtime/adapters/builtin/file-stream.d.ts +39 -0
  9. package/dist/runtime/adapters/builtin/file-stream.js +56 -0
  10. package/dist/runtime/adapters/builtin/index.d.ts +10 -0
  11. package/dist/runtime/adapters/builtin/index.js +5 -0
  12. package/dist/runtime/adapters/builtin/memory-queue.d.ts +52 -0
  13. package/dist/runtime/adapters/builtin/memory-queue.js +239 -0
  14. package/dist/runtime/adapters/builtin/memory-store.d.ts +57 -0
  15. package/dist/runtime/adapters/builtin/memory-store.js +263 -0
  16. package/dist/runtime/adapters/builtin/memory-stream.d.ts +21 -0
  17. package/dist/runtime/adapters/builtin/memory-stream.js +56 -0
  18. package/dist/runtime/adapters/factory.d.ts +31 -0
  19. package/dist/runtime/adapters/factory.js +100 -0
  20. package/dist/runtime/adapters/index.d.ts +8 -0
  21. package/dist/runtime/adapters/index.js +3 -0
  22. package/dist/runtime/adapters/interfaces/index.d.ts +11 -0
  23. package/dist/runtime/adapters/interfaces/index.js +3 -0
  24. package/dist/runtime/adapters/interfaces/queue.d.ts +150 -0
  25. package/dist/runtime/adapters/interfaces/store.d.ts +233 -0
  26. package/dist/runtime/adapters/interfaces/stream.d.ts +62 -0
  27. package/dist/runtime/adapters/registry.d.ts +85 -0
  28. package/dist/runtime/adapters/registry.js +161 -0
  29. package/dist/runtime/config/index.d.ts +29 -0
  30. package/dist/runtime/config/index.js +167 -0
  31. package/dist/runtime/config/types.d.ts +367 -0
  32. package/dist/runtime/config/types.js +0 -0
  33. package/dist/runtime/events/types.d.ts +116 -0
  34. package/dist/runtime/events/types.js +0 -0
  35. package/dist/runtime/events/utils/stallDetector.d.ts +99 -0
  36. package/dist/runtime/events/utils/stallDetector.js +237 -0
  37. package/dist/runtime/{server-utils/events → events}/wiring/flowWiring.d.ts +3 -8
  38. package/dist/runtime/{server-utils/events → events}/wiring/flowWiring.js +119 -36
  39. package/dist/runtime/events/wiring/registry.d.ts +19 -0
  40. package/dist/runtime/events/wiring/registry.js +33 -0
  41. package/dist/runtime/events/wiring/stateWiring.d.ts +37 -0
  42. package/dist/runtime/events/wiring/stateWiring.js +92 -0
  43. package/dist/runtime/events/wiring/streamWiring.d.ts +32 -0
  44. package/dist/runtime/events/wiring/streamWiring.js +79 -0
  45. package/dist/runtime/server/api/_flows/[name]/clear-history.delete.js +16 -5
  46. package/dist/runtime/server/api/_flows/[name]/runs/[runId]/cancel.post.js +21 -0
  47. package/dist/runtime/server/api/_flows/[name]/runs.get.d.ts +12 -2
  48. package/dist/runtime/server/api/_flows/[name]/runs.get.js +15 -4
  49. package/dist/runtime/server/api/_flows/[name]/schedule.post.js +11 -2
  50. package/dist/runtime/server/api/_flows/[name]/schedules/[id].delete.js +21 -16
  51. package/dist/runtime/server/api/_flows/[name]/schedules.get.js +21 -19
  52. package/dist/runtime/server/api/_flows/ws.js +43 -22
  53. package/dist/runtime/server/api/_queues/[name]/job/[id].get.js +8 -3
  54. package/dist/runtime/server/api/_queues/[name]/job/index.get.js +12 -3
  55. package/dist/runtime/server/api/_queues/index.get.js +66 -23
  56. package/dist/runtime/server/api/_queues/ws.js +14 -4
  57. package/dist/runtime/server/plugins/00.adapters.d.ts +14 -0
  58. package/dist/runtime/server/plugins/00.adapters.js +69 -0
  59. package/dist/runtime/server/plugins/02.workers.js +45 -0
  60. package/dist/runtime/tsconfig.json +8 -0
  61. package/dist/runtime/utils/adapters.d.ts +66 -0
  62. package/dist/runtime/utils/adapters.js +51 -0
  63. package/dist/runtime/utils/defineFunction.d.ts +10 -0
  64. package/dist/runtime/{server-utils/utils/defineQueueWorker.js → utils/defineFunction.js} +4 -4
  65. package/dist/runtime/{server-utils/utils/defineQueueConfig.d.ts → utils/defineFunctionConfig.d.ts} +3 -3
  66. package/dist/runtime/utils/defineFunctionConfig.js +2 -0
  67. package/dist/runtime/utils/registerAdapter.d.ts +59 -0
  68. package/dist/runtime/utils/registerAdapter.js +13 -0
  69. package/dist/runtime/utils/useFlowEngine.d.ts +19 -0
  70. package/dist/runtime/utils/useFlowEngine.js +108 -0
  71. package/dist/runtime/{server-utils/utils → utils}/useNventLogger.js +2 -2
  72. package/dist/runtime/utils/useStreamTopics.d.ts +72 -0
  73. package/dist/runtime/utils/useStreamTopics.js +47 -0
  74. package/dist/runtime/{server-utils/worker/runner/node.d.ts → worker/node/runner.d.ts} +18 -2
  75. package/dist/runtime/{server-utils/worker/runner/node.js → worker/node/runner.js} +44 -17
  76. package/dist/types.d.mts +2 -2
  77. package/package.json +14 -44
  78. package/LICENSE +0 -21
  79. package/README.md +0 -389
  80. package/dist/runtime/app/assets/vueflow.css +0 -1
  81. package/dist/runtime/app/components/ConfirmDialog.d.vue.ts +0 -33
  82. package/dist/runtime/app/components/ConfirmDialog.vue +0 -121
  83. package/dist/runtime/app/components/ConfirmDialog.vue.d.ts +0 -33
  84. package/dist/runtime/app/components/FlowDiagram.d.vue.ts +0 -64
  85. package/dist/runtime/app/components/FlowDiagram.vue +0 -338
  86. package/dist/runtime/app/components/FlowDiagram.vue.d.ts +0 -64
  87. package/dist/runtime/app/components/FlowNodeCard.d.vue.ts +0 -29
  88. package/dist/runtime/app/components/FlowNodeCard.vue +0 -156
  89. package/dist/runtime/app/components/FlowNodeCard.vue.d.ts +0 -29
  90. package/dist/runtime/app/components/FlowRunOverview.d.vue.ts +0 -9
  91. package/dist/runtime/app/components/FlowRunOverview.vue +0 -291
  92. package/dist/runtime/app/components/FlowRunOverview.vue.d.ts +0 -9
  93. package/dist/runtime/app/components/FlowRunStatusBadge.d.vue.ts +0 -14
  94. package/dist/runtime/app/components/FlowRunStatusBadge.vue +0 -60
  95. package/dist/runtime/app/components/FlowRunStatusBadge.vue.d.ts +0 -14
  96. package/dist/runtime/app/components/FlowRunTimeline.d.vue.ts +0 -12
  97. package/dist/runtime/app/components/FlowRunTimeline.vue +0 -127
  98. package/dist/runtime/app/components/FlowRunTimeline.vue.d.ts +0 -12
  99. package/dist/runtime/app/components/FlowScheduleDialog.d.vue.ts +0 -16
  100. package/dist/runtime/app/components/FlowScheduleDialog.vue +0 -226
  101. package/dist/runtime/app/components/FlowScheduleDialog.vue.d.ts +0 -16
  102. package/dist/runtime/app/components/FlowSchedulesList.d.vue.ts +0 -12
  103. package/dist/runtime/app/components/FlowSchedulesList.vue +0 -99
  104. package/dist/runtime/app/components/FlowSchedulesList.vue.d.ts +0 -12
  105. package/dist/runtime/app/components/JobScheduling.d.vue.ts +0 -6
  106. package/dist/runtime/app/components/JobScheduling.vue +0 -203
  107. package/dist/runtime/app/components/JobScheduling.vue.d.ts +0 -6
  108. package/dist/runtime/app/components/ListItem.d.vue.ts +0 -23
  109. package/dist/runtime/app/components/ListItem.vue +0 -70
  110. package/dist/runtime/app/components/ListItem.vue.d.ts +0 -23
  111. package/dist/runtime/app/components/QueueConfigDetails.d.vue.ts +0 -45
  112. package/dist/runtime/app/components/QueueConfigDetails.vue +0 -412
  113. package/dist/runtime/app/components/QueueConfigDetails.vue.d.ts +0 -45
  114. package/dist/runtime/app/components/StatCounter.d.vue.ts +0 -9
  115. package/dist/runtime/app/components/StatCounter.vue +0 -25
  116. package/dist/runtime/app/components/StatCounter.vue.d.ts +0 -9
  117. package/dist/runtime/app/components/TimelineList.d.vue.ts +0 -7
  118. package/dist/runtime/app/components/TimelineList.vue +0 -210
  119. package/dist/runtime/app/components/TimelineList.vue.d.ts +0 -7
  120. package/dist/runtime/app/components/nhealth/component-router.d.vue.ts +0 -46
  121. package/dist/runtime/app/components/nhealth/component-router.vue +0 -26
  122. package/dist/runtime/app/components/nhealth/component-router.vue.d.ts +0 -46
  123. package/dist/runtime/app/components/nhealth/component-shell.d.vue.ts +0 -24
  124. package/dist/runtime/app/components/nhealth/component-shell.vue +0 -89
  125. package/dist/runtime/app/components/nhealth/component-shell.vue.d.ts +0 -24
  126. package/dist/runtime/app/composables/useAnalyzedFlows.d.ts +0 -14
  127. package/dist/runtime/app/composables/useAnalyzedFlows.js +0 -8
  128. package/dist/runtime/app/composables/useComponentRouter.d.ts +0 -38
  129. package/dist/runtime/app/composables/useComponentRouter.js +0 -240
  130. package/dist/runtime/app/composables/useFlowRunTimeline.d.ts +0 -80
  131. package/dist/runtime/app/composables/useFlowRunTimeline.js +0 -68
  132. package/dist/runtime/app/composables/useFlowRuns.d.ts +0 -18
  133. package/dist/runtime/app/composables/useFlowRuns.js +0 -32
  134. package/dist/runtime/app/composables/useFlowRunsInfinite.d.ts +0 -24
  135. package/dist/runtime/app/composables/useFlowRunsInfinite.js +0 -123
  136. package/dist/runtime/app/composables/useFlowRunsPolling.d.ts +0 -9
  137. package/dist/runtime/app/composables/useFlowRunsPolling.js +0 -33
  138. package/dist/runtime/app/composables/useFlowState.d.ts +0 -125
  139. package/dist/runtime/app/composables/useFlowState.js +0 -211
  140. package/dist/runtime/app/composables/useFlowWebSocket.d.ts +0 -27
  141. package/dist/runtime/app/composables/useFlowWebSocket.js +0 -205
  142. package/dist/runtime/app/composables/useFlowsNavigation.d.ts +0 -10
  143. package/dist/runtime/app/composables/useFlowsNavigation.js +0 -58
  144. package/dist/runtime/app/composables/useQueueJobs.d.ts +0 -26
  145. package/dist/runtime/app/composables/useQueueJobs.js +0 -20
  146. package/dist/runtime/app/composables/useQueueUpdates.d.ts +0 -26
  147. package/dist/runtime/app/composables/useQueueUpdates.js +0 -122
  148. package/dist/runtime/app/composables/useQueues.d.ts +0 -45
  149. package/dist/runtime/app/composables/useQueues.js +0 -26
  150. package/dist/runtime/app/composables/useQueuesLive.d.ts +0 -19
  151. package/dist/runtime/app/composables/useQueuesLive.js +0 -143
  152. package/dist/runtime/app/pages/flows/index.d.vue.ts +0 -3
  153. package/dist/runtime/app/pages/flows/index.vue +0 -645
  154. package/dist/runtime/app/pages/flows/index.vue.d.ts +0 -3
  155. package/dist/runtime/app/pages/index.d.vue.ts +0 -3
  156. package/dist/runtime/app/pages/index.vue +0 -34
  157. package/dist/runtime/app/pages/index.vue.d.ts +0 -3
  158. package/dist/runtime/app/pages/queues/index.d.vue.ts +0 -3
  159. package/dist/runtime/app/pages/queues/index.vue +0 -229
  160. package/dist/runtime/app/pages/queues/index.vue.d.ts +0 -3
  161. package/dist/runtime/app/pages/queues/job.d.vue.ts +0 -3
  162. package/dist/runtime/app/pages/queues/job.vue +0 -262
  163. package/dist/runtime/app/pages/queues/job.vue.d.ts +0 -3
  164. package/dist/runtime/app/pages/queues/jobs.d.vue.ts +0 -3
  165. package/dist/runtime/app/pages/queues/jobs.vue +0 -291
  166. package/dist/runtime/app/pages/queues/jobs.vue.d.ts +0 -3
  167. package/dist/runtime/app/plugins/vueflow.client.d.ts +0 -2
  168. package/dist/runtime/app/plugins/vueflow.client.js +0 -11
  169. package/dist/runtime/constants.d.ts +0 -11
  170. package/dist/runtime/constants.js +0 -11
  171. package/dist/runtime/schema.d.ts +0 -37
  172. package/dist/runtime/schema.js +0 -20
  173. package/dist/runtime/server/plugins/00.event-store.d.ts +0 -13
  174. package/dist/runtime/server/plugins/00.event-store.js +0 -16
  175. package/dist/runtime/server/plugins/flow-management.d.ts +0 -13
  176. package/dist/runtime/server/plugins/flow-management.js +0 -65
  177. package/dist/runtime/server/plugins/queue-management.js +0 -27
  178. package/dist/runtime/server/plugins/state-cleanup.d.ts +0 -11
  179. package/dist/runtime/server/plugins/state-cleanup.js +0 -93
  180. package/dist/runtime/server/plugins/worker-management.js +0 -33
  181. package/dist/runtime/server/tsconfig.json +0 -3
  182. package/dist/runtime/server-utils/events/adapters/fileAdapter.d.ts +0 -2
  183. package/dist/runtime/server-utils/events/adapters/fileAdapter.js +0 -382
  184. package/dist/runtime/server-utils/events/adapters/memoryAdapter.d.ts +0 -2
  185. package/dist/runtime/server-utils/events/adapters/memoryAdapter.js +0 -171
  186. package/dist/runtime/server-utils/events/adapters/redis/redisAdapter.d.ts +0 -2
  187. package/dist/runtime/server-utils/events/adapters/redis/redisAdapter.js +0 -348
  188. package/dist/runtime/server-utils/events/adapters/redis/redisPubSubGateway.d.ts +0 -30
  189. package/dist/runtime/server-utils/events/adapters/redis/redisPubSubGateway.js +0 -82
  190. package/dist/runtime/server-utils/events/eventStoreFactory.d.ts +0 -19
  191. package/dist/runtime/server-utils/events/eventStoreFactory.js +0 -44
  192. package/dist/runtime/server-utils/events/streamNames.d.ts +0 -17
  193. package/dist/runtime/server-utils/events/streamNames.js +0 -17
  194. package/dist/runtime/server-utils/events/types.d.ts +0 -63
  195. package/dist/runtime/server-utils/events/wiring/registry.d.ts +0 -10
  196. package/dist/runtime/server-utils/events/wiring/registry.js +0 -24
  197. package/dist/runtime/server-utils/queue/adapters/bullmq.d.ts +0 -18
  198. package/dist/runtime/server-utils/queue/adapters/bullmq.js +0 -164
  199. package/dist/runtime/server-utils/queue/queueFactory.d.ts +0 -3
  200. package/dist/runtime/server-utils/queue/queueFactory.js +0 -10
  201. package/dist/runtime/server-utils/queue/types.d.ts +0 -47
  202. package/dist/runtime/server-utils/state/adapters/redis.d.ts +0 -2
  203. package/dist/runtime/server-utils/state/adapters/redis.js +0 -42
  204. package/dist/runtime/server-utils/state/stateFactory.d.ts +0 -3
  205. package/dist/runtime/server-utils/state/stateFactory.js +0 -17
  206. package/dist/runtime/server-utils/state/types.d.ts +0 -23
  207. package/dist/runtime/server-utils/utils/defineQueueConfig.js +0 -2
  208. package/dist/runtime/server-utils/utils/defineQueueWorker.d.ts +0 -10
  209. package/dist/runtime/server-utils/utils/useEventStore.d.ts +0 -20
  210. package/dist/runtime/server-utils/utils/useEventStore.js +0 -119
  211. package/dist/runtime/server-utils/utils/useFlowEngine.d.ts +0 -9
  212. package/dist/runtime/server-utils/utils/useFlowEngine.js +0 -44
  213. package/dist/runtime/server-utils/utils/useLogs.d.ts +0 -41
  214. package/dist/runtime/server-utils/utils/useLogs.js +0 -74
  215. package/dist/runtime/server-utils/utils/useQueue.d.ts +0 -31
  216. package/dist/runtime/server-utils/utils/useQueue.js +0 -24
  217. package/dist/runtime/server-utils/worker/adapter.d.ts +0 -4
  218. package/dist/runtime/server-utils/worker/adapter.js +0 -66
  219. package/dist/runtime/types.d.ts +0 -132
  220. /package/dist/runtime/{server-utils/events/types.js → adapters/interfaces/queue.js} +0 -0
  221. /package/dist/runtime/{server-utils/queue/types.js → adapters/interfaces/store.js} +0 -0
  222. /package/dist/runtime/{server-utils/state/types.js → adapters/interfaces/stream.js} +0 -0
  223. /package/dist/runtime/{server-utils/events → events}/eventBus.d.ts +0 -0
  224. /package/dist/runtime/{server-utils/events → events}/eventBus.js +0 -0
  225. /package/dist/runtime/server/{plugins/queue-management.d.ts → api/_flows/[name]/runs/[runId]/cancel.post.d.ts} +0 -0
  226. /package/dist/runtime/server/plugins/{00.ws-lifecycle.d.ts → 01.ws-lifecycle.d.ts} +0 -0
  227. /package/dist/runtime/server/plugins/{00.ws-lifecycle.js → 01.ws-lifecycle.js} +0 -0
  228. /package/dist/runtime/server/plugins/{worker-management.d.ts → 02.workers.d.ts} +0 -0
  229. /package/dist/runtime/{server-utils/utils → utils}/useEventManager.d.ts +0 -0
  230. /package/dist/runtime/{server-utils/utils → utils}/useEventManager.js +0 -0
  231. /package/dist/runtime/{server-utils/utils → utils}/useNventLogger.d.ts +0 -0
  232. /package/dist/runtime/{server-utils/utils → utils}/wsPeerManager.d.ts +0 -0
  233. /package/dist/runtime/{server-utils/utils → utils}/wsPeerManager.js +0 -0
  234. /package/dist/runtime/{python → worker/python}/get_config.py +0 -0
@@ -1,229 +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
- Queues
9
- </h1>
10
- <div
11
- v-if="isConnected"
12
- class="flex items-center gap-1.5 text-xs text-emerald-600 dark:text-emerald-400"
13
- >
14
- <div class="w-2 h-2 rounded-full bg-emerald-500 animate-pulse" />
15
- <span>Live</span>
16
- </div>
17
- <div
18
- v-else-if="isReconnecting"
19
- class="flex items-center gap-1.5 text-xs text-amber-600 dark:text-amber-400"
20
- >
21
- <div class="w-2 h-2 rounded-full bg-amber-500 animate-pulse" />
22
- <span>Reconnecting...</span>
23
- </div>
24
- </div>
25
- <div class="flex items-center gap-3">
26
- <ClientOnly>
27
- <UButton
28
- icon="i-lucide-refresh-cw"
29
- size="xs"
30
- color="neutral"
31
- variant="ghost"
32
- :loading="status === 'pending'"
33
- @click="refresh"
34
- >
35
- Refresh
36
- </UButton>
37
- </ClientOnly>
38
- </div>
39
- </div>
40
- </div>
41
-
42
- <!-- Main Content -->
43
- <div class="flex-1 min-h-0 overflow-hidden flex flex-col">
44
- <div
45
- v-if="!queuesWithLive || queuesWithLive.length === 0"
46
- class="flex-1 flex items-center justify-center text-sm text-gray-400"
47
- >
48
- No queues found
49
- </div>
50
- <template v-else>
51
- <div class="flex-1 min-h-0 p-4 overflow-auto">
52
- <UTable
53
- ref="table"
54
- v-model:pagination="pagination"
55
- :data="queuesWithLive"
56
- :columns="columns"
57
- :loading="status === 'pending'"
58
- :pagination-options="{
59
- getPaginationRowModel: getPaginationRowModel()
60
- }"
61
- :ui="{
62
- base: 'table-fixed border-separate border-spacing-0',
63
- thead: '[&>tr]:bg-elevated/50 [&>tr]:after:content-none',
64
- tbody: '[&>tr]:last:[&>td]:border-b-0',
65
- th: 'py-2 first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r',
66
- td: 'border-b border-default',
67
- separator: 'h-0'
68
- }"
69
- />
70
- </div>
71
-
72
- <div class="flex items-center justify-between gap-3 border-t border-default p-4 mt-4 shrink-0">
73
- <div class="text-sm text-muted">
74
- {{ queuesWithLive.length }} queue{{ queuesWithLive.length === 1 ? "" : "s" }}
75
- </div>
76
- <div class="flex items-center gap-1.5">
77
- <UPagination
78
- :default-page="(table?.tableApi?.getState().pagination.pageIndex || 0) + 1"
79
- :items-per-page="table?.tableApi?.getState().pagination.pageSize"
80
- :total="queuesWithLive.length"
81
- @update:page="(p) => table?.tableApi?.setPageIndex(p - 1)"
82
- />
83
- </div>
84
- </div>
85
- </template>
86
- </div>
87
-
88
- <!-- Config Details Slideover -->
89
- <QueueConfigDetails
90
- v-if="selectedQueueForConfig"
91
- v-model:open="configDetailsOpen"
92
- :queue-name="selectedQueueForConfig.name"
93
- :queue-config="selectedQueueForConfig.config?.queue"
94
- :worker-config="selectedQueueForConfig.config?.worker"
95
- />
96
- </div>
97
- </template>
98
-
99
- <script setup>
100
- import { ref, useTemplateRef, h } from "#imports";
101
- import { getPaginationRowModel } from "@tanstack/table-core";
102
- import { UTable, UButton, UPagination } from "#components";
103
- import { useQueues } from "../../composables/useQueues";
104
- import { useQueuesLive } from "../../composables/useQueuesLive";
105
- import { useComponentRouter } from "../../composables/useComponentRouter";
106
- import QueueConfigDetails from "../../components/QueueConfigDetails.vue";
107
- const UBadgeComponent = resolveComponent("UBadge");
108
- const UButtonComponent = resolveComponent("UButton");
109
- const { queues, refresh, status } = useQueues();
110
- const { queues: queuesWithLive, isConnected, isReconnecting } = useQueuesLive(queues);
111
- const router = useComponentRouter();
112
- const table = useTemplateRef("table");
113
- const pagination = ref({
114
- pageIndex: 0,
115
- pageSize: 10
116
- });
117
- const configDetailsOpen = ref(false);
118
- const selectedQueueForConfig = ref(null);
119
- const openConfigDetails = (queue) => {
120
- selectedQueueForConfig.value = queue;
121
- configDetailsOpen.value = true;
122
- };
123
- const columns = [
124
- {
125
- accessorKey: "name",
126
- header: "Queue Name",
127
- cell: ({ row }) => {
128
- return h("div", {
129
- class: "font-medium text-highlighted cursor-pointer hover:underline",
130
- onClick: () => router.push(`/queues/${row.original.name}/jobs`)
131
- }, row.original.name);
132
- }
133
- },
134
- {
135
- accessorKey: "counts.waiting",
136
- header: "Waiting",
137
- cell: ({ row }) => {
138
- const count = row.original.counts.waiting;
139
- return h("div", {
140
- class: `flex items-center justify-center w-12 h-7 rounded text-sm font-medium ${count > 0 ? "bg-blue-50 dark:bg-blue-950/50 text-blue-600 dark:text-blue-400" : "bg-gray-50 dark:bg-gray-900/50 text-gray-400 dark:text-gray-600"}`
141
- }, String(count));
142
- }
143
- },
144
- {
145
- accessorKey: "counts.active",
146
- header: "Active",
147
- cell: ({ row }) => {
148
- const count = row.original.counts.active;
149
- return h("div", {
150
- class: `flex items-center justify-center w-12 h-7 rounded text-sm font-medium ${count > 0 ? "bg-amber-50 dark:bg-amber-950/50 text-amber-600 dark:text-amber-400" : "bg-gray-50 dark:bg-gray-900/50 text-gray-400 dark:text-gray-600"}`
151
- }, String(count));
152
- }
153
- },
154
- {
155
- accessorKey: "counts.completed",
156
- header: "Completed",
157
- cell: ({ row }) => {
158
- const count = row.original.counts.completed;
159
- return h("div", {
160
- class: `flex items-center justify-center w-12 h-7 rounded text-sm font-medium ${count > 0 ? "bg-emerald-50 dark:bg-emerald-950/50 text-emerald-600 dark:text-emerald-400" : "bg-gray-50 dark:bg-gray-900/50 text-gray-400 dark:text-gray-600"}`
161
- }, String(count));
162
- }
163
- },
164
- {
165
- accessorKey: "counts.failed",
166
- header: "Failed",
167
- cell: ({ row }) => {
168
- const count = row.original.counts.failed;
169
- return h("div", {
170
- class: `flex items-center justify-center w-12 h-7 rounded text-sm font-medium ${count > 0 ? "bg-red-50 dark:bg-red-950/50 text-red-600 dark:text-red-400" : "bg-gray-50 dark:bg-gray-900/50 text-gray-400 dark:text-gray-600"}`
171
- }, String(count));
172
- }
173
- },
174
- {
175
- accessorKey: "counts.delayed",
176
- header: "Delayed",
177
- cell: ({ row }) => {
178
- const count = row.original.counts.delayed;
179
- return h("div", {
180
- class: `flex items-center justify-center w-12 h-7 rounded text-sm font-medium ${count > 0 ? "bg-purple-50 dark:bg-purple-950/50 text-purple-600 dark:text-purple-400" : "bg-gray-50 dark:bg-gray-900/50 text-gray-400 dark:text-gray-600"}`
181
- }, String(count));
182
- }
183
- },
184
- {
185
- accessorKey: "isPaused",
186
- header: "Status",
187
- cell: ({ row }) => {
188
- return h(UBadgeComponent, {
189
- label: row.original.isPaused ? "Paused" : "Running",
190
- color: row.original.isPaused ? "warning" : "success",
191
- variant: "subtle"
192
- });
193
- }
194
- },
195
- {
196
- id: "config",
197
- header: "Config",
198
- cell: ({ row }) => {
199
- return h(UButtonComponent, {
200
- icon: "i-lucide-settings",
201
- size: "xs",
202
- color: "neutral",
203
- variant: "ghost",
204
- square: true,
205
- title: "View configuration",
206
- onClick: () => {
207
- openConfigDetails(row.original);
208
- }
209
- });
210
- }
211
- },
212
- {
213
- id: "actions",
214
- header: "",
215
- cell: ({ row }) => {
216
- return h(UButtonComponent, {
217
- icon: "i-lucide-arrow-right",
218
- size: "xs",
219
- color: "neutral",
220
- variant: "ghost",
221
- square: true,
222
- onClick: () => {
223
- router.push(`/queues/${row.original.name}/jobs`);
224
- }
225
- });
226
- }
227
- }
228
- ];
229
- </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;
@@ -1,262 +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
- <UButton
8
- icon="i-lucide-arrow-left"
9
- size="xs"
10
- color="neutral"
11
- variant="ghost"
12
- @click="back"
13
- />
14
- <div>
15
- <h1 class="text-lg font-semibold">
16
- {{ job?.name || "Job Details" }}
17
- </h1>
18
- <p class="text-xs text-gray-500 font-mono">
19
- {{ job?.id }}
20
- </p>
21
- </div>
22
- </div>
23
- <div class="flex items-center gap-3">
24
- <UBadge
25
- v-if="job?.state"
26
- :label="job.state"
27
- :color="stateColor"
28
- variant="subtle"
29
- class="capitalize"
30
- />
31
- <UButton
32
- icon="i-lucide-refresh-cw"
33
- size="xs"
34
- color="neutral"
35
- variant="ghost"
36
- @click="() => refresh()"
37
- >
38
- Refresh
39
- </UButton>
40
- </div>
41
- </div>
42
- </div>
43
-
44
- <!-- Main Content -->
45
- <div class="flex-1 min-h-0 overflow-y-auto px-6 py-4">
46
- <div
47
- v-if="!job"
48
- class="h-full flex items-center justify-center text-sm text-gray-400"
49
- >
50
- Job not found
51
- </div>
52
- <div
53
- v-else
54
- class="space-y-6"
55
- >
56
- <!-- Job Info Grid -->
57
- <div class="grid grid-cols-1 md:grid-cols-2 gap-4">
58
- <UCard>
59
- <template #header>
60
- <h2 class="text-sm font-semibold">
61
- Job Info
62
- </h2>
63
- </template>
64
- <div class="space-y-3">
65
- <div>
66
- <p class="text-xs text-gray-500">
67
- ID
68
- </p>
69
- <p class="text-sm font-medium font-mono">
70
- {{ job.id }}
71
- </p>
72
- </div>
73
- <div>
74
- <p class="text-xs text-gray-500">
75
- Name
76
- </p>
77
- <p class="text-sm font-medium">
78
- {{ job.name }}
79
- </p>
80
- </div>
81
- <div>
82
- <p class="text-xs text-gray-500">
83
- State
84
- </p>
85
- <p class="text-sm font-medium capitalize">
86
- {{ job.state || "unknown" }}
87
- </p>
88
- </div>
89
- </div>
90
- </UCard>
91
-
92
- <UCard>
93
- <template #header>
94
- <h2 class="text-sm font-semibold">
95
- Timing
96
- </h2>
97
- </template>
98
- <div class="space-y-4">
99
- <!-- Timestamps -->
100
- <div class="grid grid-cols-1 gap-3">
101
- <div class="flex items-center justify-between py-2 border-b border-gray-100 dark:border-gray-800">
102
- <p class="text-xs text-gray-500">
103
- Created
104
- </p>
105
- <p class="text-sm font-medium">
106
- {{ formatDate(job.timestamp) }}
107
- </p>
108
- </div>
109
- <div
110
- v-if="job.processedOn"
111
- class="flex items-center justify-between py-2 border-b border-gray-100 dark:border-gray-800"
112
- >
113
- <p class="text-xs text-gray-500">
114
- Processed
115
- </p>
116
- <p class="text-sm font-medium">
117
- {{ formatDate(job.processedOn) }}
118
- </p>
119
- </div>
120
- <div
121
- v-if="job.finishedOn"
122
- class="flex items-center justify-between py-2"
123
- >
124
- <p class="text-xs text-gray-500">
125
- Finished
126
- </p>
127
- <p class="text-sm font-medium">
128
- {{ formatDate(job.finishedOn) }}
129
- </p>
130
- </div>
131
- </div>
132
-
133
- <!-- Durations -->
134
- <div
135
- v-if="waitDuration || executionDuration"
136
- class="pt-2 mt-2 border-t border-gray-200 dark:border-gray-700"
137
- >
138
- <div class="grid grid-cols-2 gap-3">
139
- <div
140
- v-if="waitDuration"
141
- class="text-center p-3 bg-gray-50 dark:bg-gray-800/50 rounded-lg"
142
- >
143
- <p class="text-xs text-gray-500 mb-1">
144
- Wait Time
145
- </p>
146
- <p class="text-lg font-semibold text-blue-600 dark:text-blue-400">
147
- {{ waitDuration }}
148
- </p>
149
- </div>
150
- <div
151
- v-if="executionDuration"
152
- class="text-center p-3 bg-gray-50 dark:bg-gray-800/50 rounded-lg"
153
- >
154
- <p class="text-xs text-gray-500 mb-1">
155
- {{ job.state === "active" ? "Running" : "Execution" }}
156
- </p>
157
- <p
158
- class="text-lg font-semibold"
159
- :class="job.state === 'active' ? 'text-amber-600 dark:text-amber-400' : 'text-emerald-600 dark:text-emerald-400'"
160
- >
161
- {{ executionDuration }}
162
- </p>
163
- </div>
164
- </div>
165
- </div>
166
- </div>
167
- </UCard>
168
- </div>
169
-
170
- <!-- Job Data -->
171
- <UCard>
172
- <template #header>
173
- <h2 class="text-sm font-semibold">
174
- Job Data
175
- </h2>
176
- </template>
177
- <pre class="text-xs overflow-x-auto bg-gray-50 dark:bg-gray-900 p-4 rounded">{{ JSON.stringify(job.data, null, 2) }}</pre>
178
- </UCard>
179
-
180
- <!-- Return Value -->
181
- <UCard v-if="job.returnvalue">
182
- <template #header>
183
- <h2 class="text-sm font-semibold">
184
- Return Value
185
- </h2>
186
- </template>
187
- <pre class="text-xs overflow-x-auto bg-gray-50 dark:bg-gray-900 p-4 rounded">{{ JSON.stringify(job.returnvalue, null, 2) }}</pre>
188
- </UCard>
189
-
190
- <!-- Error -->
191
- <UCard v-if="job.failedReason">
192
- <template #header>
193
- <h2 class="text-sm font-semibold text-red-500">
194
- Error
195
- </h2>
196
- </template>
197
- <div class="text-sm text-red-600 dark:text-red-400">
198
- {{ job.failedReason }}
199
- </div>
200
- </UCard>
201
- </div>
202
- </div>
203
- </div>
204
- </template>
205
-
206
- <script setup>
207
- import { computed, useFetch } from "#imports";
208
- import { UCard, UButton, UBadge } from "#components";
209
- import { useComponentRouter } from "../../composables/useComponentRouter";
210
- const router = useComponentRouter();
211
- const queueName = computed(() => router.route.value?.params?.name || "");
212
- const jobId = computed(() => router.route.value?.params?.id || "");
213
- const { data: job, refresh } = await useFetch(
214
- () => `/api/_queues/${encodeURIComponent(queueName.value)}/job/${encodeURIComponent(jobId.value)}`,
215
- {
216
- server: false
217
- }
218
- );
219
- const stateColor = computed(() => {
220
- const colorMap = {
221
- waiting: "info",
222
- active: "warning",
223
- completed: "success",
224
- failed: "error",
225
- delayed: "secondary",
226
- paused: "warning"
227
- };
228
- return colorMap[job.value?.state || ""] || "neutral";
229
- });
230
- const waitDuration = computed(() => {
231
- if (!job.value?.timestamp || !job.value?.processedOn) return null;
232
- const waitMs = job.value.processedOn - job.value.timestamp;
233
- return formatDuration(waitMs);
234
- });
235
- const executionDuration = computed(() => {
236
- if (!job.value?.processedOn) return null;
237
- const endTime = job.value.finishedOn || Date.now();
238
- const execMs = endTime - job.value.processedOn;
239
- return formatDuration(execMs);
240
- });
241
- const back = () => {
242
- router.push(`/queues/${queueName.value}/jobs`);
243
- };
244
- const formatDuration = (ms) => {
245
- if (ms < 1e3) return `${ms}ms`;
246
- if (ms < 6e4) return `${(ms / 1e3).toFixed(2)}s`;
247
- if (ms < 36e5) return `${(ms / 6e4).toFixed(2)}m`;
248
- return `${(ms / 36e5).toFixed(2)}h`;
249
- };
250
- const formatDate = (timestamp) => {
251
- if (!timestamp) return "-";
252
- return new Date(timestamp).toLocaleString("de-DE", {
253
- timeZone: "Europe/Berlin",
254
- day: "2-digit",
255
- month: "2-digit",
256
- year: "numeric",
257
- hour: "2-digit",
258
- minute: "2-digit",
259
- second: "2-digit"
260
- });
261
- };
262
- </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;