@happyvertical/smrt-jobs 0.51.39 → 0.53.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.
- package/dist/chunks/{runner-jgI4uv4n.js → runner-lBwPelRQ.js} +2 -2
- package/dist/chunks/{runner-jgI4uv4n.js.map → runner-lBwPelRQ.js.map} +1 -1
- package/dist/index.js +1 -1
- package/dist/manifest.json +1 -1
- package/dist/runner.js +1 -1
- package/dist/smrt-knowledge.json +4 -4
- package/dist/svelte/components/JobList.svelte +98 -11
- package/dist/svelte/components/JobList.svelte.d.ts +23 -1
- package/dist/svelte/components/JobList.svelte.d.ts.map +1 -1
- package/dist/svelte/components/__tests__/JobList.sort.test.js +63 -0
- package/package.json +12 -12
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { A as SmrtJobEventCollection, B as isBackgroundEligibleMethod, C as DEFAULT_RETENTION_SWEEP_INTERVAL_MS, D as startRetentionSweeper, E as registerJobRetentionTasks, F as TenantJobCapExceededError, I as assertWithinTenantCreationCap, L as backgroundEligible, M as SmrtJobCollection, N as DEFAULT_TENANT_JOB_CAP, O as unregisterJobRetentionTasks, P as MAX_JOB_RETRIES, R as clampRetries, S as DEFAULT_JOB_RETENTION, T as JOB_EVENTS_RETENTION_TASK, V as markBackgroundEligible, _ as requestMcpTaskInput, a as isRunnerExecutionContext, b as redactErrorForPersistence, c as SmrtWorkerCollection, d as McpTaskNotFoundError, f as McpTaskStore, g as requestMcpTaskContinuation, h as getMcpTaskMarker, i as getActiveJobExecutionContext, j as SmrtJob, k as SmrtJobEvent, l as MCP_TASKS_EXTENSION, m as createMcpTaskResult, n as TaskRunner, o as DEFAULT_TASK_HEARTBEAT_INTERVAL_MS, p as McpTaskSuspendedError, r as createTaskRunner, s as SmrtWorker, t as JobTimeoutError, u as McpTaskCancelledError, v as taskFromJob, w as JOBS_RETENTION_TASK, x as redactErrorMessage, y as JobContextLogger, z as getBackgroundEligibleMethods } from "./chunks/runner-
|
|
1
|
+
import { A as SmrtJobEventCollection, B as isBackgroundEligibleMethod, C as DEFAULT_RETENTION_SWEEP_INTERVAL_MS, D as startRetentionSweeper, E as registerJobRetentionTasks, F as TenantJobCapExceededError, I as assertWithinTenantCreationCap, L as backgroundEligible, M as SmrtJobCollection, N as DEFAULT_TENANT_JOB_CAP, O as unregisterJobRetentionTasks, P as MAX_JOB_RETRIES, R as clampRetries, S as DEFAULT_JOB_RETENTION, T as JOB_EVENTS_RETENTION_TASK, V as markBackgroundEligible, _ as requestMcpTaskInput, a as isRunnerExecutionContext, b as redactErrorForPersistence, c as SmrtWorkerCollection, d as McpTaskNotFoundError, f as McpTaskStore, g as requestMcpTaskContinuation, h as getMcpTaskMarker, i as getActiveJobExecutionContext, j as SmrtJob, k as SmrtJobEvent, l as MCP_TASKS_EXTENSION, m as createMcpTaskResult, n as TaskRunner, o as DEFAULT_TASK_HEARTBEAT_INTERVAL_MS, p as McpTaskSuspendedError, r as createTaskRunner, s as SmrtWorker, t as JobTimeoutError, u as McpTaskCancelledError, v as taskFromJob, w as JOBS_RETENTION_TASK, x as redactErrorMessage, y as JobContextLogger, z as getBackgroundEligibleMethods } from "./chunks/runner-lBwPelRQ.js";
|
|
2
2
|
import { c as unregisterLiveWorker, i as registerLiveWorker, n as isWorkerAlive, t as createWorkerKey } from "./chunks/worker-liveness-C1Gjnhax.js";
|
|
3
3
|
import { ObjectRegistry, SmrtCollection, SmrtObject, detectEngine, field, smrt } from "@happyvertical/smrt-core";
|
|
4
4
|
import { createLogger } from "@happyvertical/logger";
|
package/dist/manifest.json
CHANGED
package/dist/runner.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as isRunnerExecutionContext, i as getActiveJobExecutionContext, n as TaskRunner, r as createTaskRunner, t as JobTimeoutError } from "./chunks/runner-
|
|
1
|
+
import { a as isRunnerExecutionContext, i as getActiveJobExecutionContext, n as TaskRunner, r as createTaskRunner, t as JobTimeoutError } from "./chunks/runner-lBwPelRQ.js";
|
|
2
2
|
export { JobTimeoutError, TaskRunner, TaskRunner as default, createTaskRunner, getActiveJobExecutionContext, isRunnerExecutionContext };
|
package/dist/smrt-knowledge.json
CHANGED
|
@@ -3,12 +3,12 @@
|
|
|
3
3
|
"sensitiveFieldsExcluded": true,
|
|
4
4
|
"generatedAt": "1970-01-01T00:00:00.000Z",
|
|
5
5
|
"packageName": "@happyvertical/smrt-jobs",
|
|
6
|
-
"packageVersion": "0.
|
|
6
|
+
"packageVersion": "0.53.0",
|
|
7
7
|
"sourceManifestPath": "dist/manifest.json",
|
|
8
8
|
"agentDocPath": "AGENTS.md",
|
|
9
9
|
"sourceHashes": {
|
|
10
|
-
"manifest": "
|
|
11
|
-
"packageJson": "
|
|
10
|
+
"manifest": "49bff17e896241beec9ac61a3c84da1283c8b847e5d8a6a2575662248f534ae4",
|
|
11
|
+
"packageJson": "1929e9b9610946e39b936ce2e1de64ec9ff203de2d4f69ac9f5ddb56a7b0122c",
|
|
12
12
|
"agents": "7870bffefb854829e1b4b14220a3bc02b9dc7f454256a57282b92bcf8da9ddcc"
|
|
13
13
|
},
|
|
14
14
|
"exports": [
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
"@sveltejs/package": "^2.5.8",
|
|
36
36
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
37
37
|
"@types/node": "24.13.6",
|
|
38
|
-
"svelte": "^5.57.
|
|
38
|
+
"svelte": "^5.57.0",
|
|
39
39
|
"svelte-check": "^4.7.6",
|
|
40
40
|
"typescript": "6.0.3",
|
|
41
41
|
"vite": "8.1.4",
|
|
@@ -1,7 +1,22 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
/**
|
|
3
|
-
* JobList - Display a filterable, sortable list of background jobs
|
|
3
|
+
* JobList - Display a filterable, sortable list of background jobs.
|
|
4
|
+
*
|
|
5
|
+
* Sorting follows the list-sort contract (`@happyvertical/smrt-ui/data`):
|
|
6
|
+
* every column header toggles its column ascending/descending (dates and
|
|
7
|
+
* counts start with the largest). Rows keep the order they are supplied in
|
|
8
|
+
* until the host passes `sort` or the person activates a header, so a host
|
|
9
|
+
* that already orders its jobs is not silently reordered. A parent that pages
|
|
10
|
+
* on the server passes `sort` + `onSortChange` and supplies rows already in
|
|
11
|
+
* that order.
|
|
4
12
|
*/
|
|
13
|
+
import {
|
|
14
|
+
type ListSort,
|
|
15
|
+
type ListSortSpec,
|
|
16
|
+
SortableHeader,
|
|
17
|
+
sortListRows,
|
|
18
|
+
toggleListSort,
|
|
19
|
+
} from '@happyvertical/smrt-ui/data';
|
|
5
20
|
import { useI18n } from '@happyvertical/smrt-ui/i18n';
|
|
6
21
|
import type { Snippet } from 'svelte';
|
|
7
22
|
import { M } from '../i18n.js';
|
|
@@ -33,8 +48,32 @@ export interface Props {
|
|
|
33
48
|
onCancel?: (job: JobData) => void;
|
|
34
49
|
/** Empty state snippet */
|
|
35
50
|
empty?: Snippet;
|
|
51
|
+
/**
|
|
52
|
+
* Current order. Omitted: rows render as supplied (headers show no sort)
|
|
53
|
+
* until a header is activated.
|
|
54
|
+
*/
|
|
55
|
+
sort?: ListSort;
|
|
56
|
+
/**
|
|
57
|
+
* Called when a header is activated. When given, the parent owns the order
|
|
58
|
+
* (e.g. a server-sorted list) and `jobs` are rendered as supplied.
|
|
59
|
+
*/
|
|
60
|
+
onSortChange?: (sort: ListSort) => void;
|
|
36
61
|
}
|
|
37
62
|
|
|
63
|
+
const JOB_LIST_SORT: ListSortSpec = {
|
|
64
|
+
columns: [
|
|
65
|
+
'status',
|
|
66
|
+
'queue',
|
|
67
|
+
'objectType',
|
|
68
|
+
'method',
|
|
69
|
+
{ id: 'priority', firstDirection: 'desc' },
|
|
70
|
+
{ id: 'attempts', firstDirection: 'desc' },
|
|
71
|
+
{ id: 'createdAt', firstDirection: 'desc' },
|
|
72
|
+
{ id: 'runAt', firstDirection: 'desc' },
|
|
73
|
+
],
|
|
74
|
+
default: { columnId: 'createdAt', direction: 'desc' },
|
|
75
|
+
};
|
|
76
|
+
|
|
38
77
|
let {
|
|
39
78
|
jobs = [],
|
|
40
79
|
loading = false,
|
|
@@ -46,8 +85,34 @@ let {
|
|
|
46
85
|
onRetry,
|
|
47
86
|
onCancel,
|
|
48
87
|
empty,
|
|
88
|
+
sort = $bindable<ListSort | undefined>(undefined),
|
|
89
|
+
onSortChange,
|
|
49
90
|
}: Props = $props();
|
|
50
91
|
|
|
92
|
+
function sortValue(job: JobData, columnId: string) {
|
|
93
|
+
const value = job[columnId as keyof JobData];
|
|
94
|
+
return value instanceof Date ||
|
|
95
|
+
typeof value === 'string' ||
|
|
96
|
+
typeof value === 'number'
|
|
97
|
+
? value
|
|
98
|
+
: null;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const rows = $derived(
|
|
102
|
+
onSortChange || !sort ? jobs : sortListRows(jobs, sort, sortValue),
|
|
103
|
+
);
|
|
104
|
+
|
|
105
|
+
function handleSort(columnId: string) {
|
|
106
|
+
// With no sort yet, the clicked column starts at its first direction.
|
|
107
|
+
const next = toggleListSort(
|
|
108
|
+
sort ?? { columnId: '', direction: 'asc' },
|
|
109
|
+
columnId,
|
|
110
|
+
JOB_LIST_SORT,
|
|
111
|
+
);
|
|
112
|
+
if (onSortChange) onSortChange(next);
|
|
113
|
+
else sort = next;
|
|
114
|
+
}
|
|
115
|
+
|
|
51
116
|
// Handle row click
|
|
52
117
|
function handleRowClick(job: JobData) {
|
|
53
118
|
onJobClick?.(job);
|
|
@@ -103,6 +168,18 @@ function setIndeterminate(node: HTMLInputElement, value: boolean) {
|
|
|
103
168
|
},
|
|
104
169
|
};
|
|
105
170
|
}
|
|
171
|
+
|
|
172
|
+
// Sortable header columns (labels routed through i18n where keyed).
|
|
173
|
+
const sortColumns = $derived([
|
|
174
|
+
{ id: 'status', label: 'Status' },
|
|
175
|
+
{ id: 'queue', label: 'Queue' },
|
|
176
|
+
{ id: 'objectType', label: 'Object' },
|
|
177
|
+
{ id: 'method', label: 'Method' },
|
|
178
|
+
{ id: 'priority', label: 'Priority' },
|
|
179
|
+
{ id: 'attempts', label: 'Attempts' },
|
|
180
|
+
{ id: 'createdAt', label: 'Created' },
|
|
181
|
+
{ id: 'runAt', label: t(M['jobs.job_list.run_at']) },
|
|
182
|
+
]);
|
|
106
183
|
</script>
|
|
107
184
|
|
|
108
185
|
<div class="job-list-container">
|
|
@@ -121,14 +198,16 @@ function setIndeterminate(node: HTMLInputElement, value: boolean) {
|
|
|
121
198
|
/>
|
|
122
199
|
</th>
|
|
123
200
|
{/if}
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
201
|
+
{#each sortColumns as column (column.id)}
|
|
202
|
+
<SortableHeader
|
|
203
|
+
class="job-list__cell job-list__cell--sortable"
|
|
204
|
+
columnId={column.id}
|
|
205
|
+
label={column.label}
|
|
206
|
+
{sort}
|
|
207
|
+
spec={JOB_LIST_SORT}
|
|
208
|
+
onSort={handleSort}
|
|
209
|
+
/>
|
|
210
|
+
{/each}
|
|
132
211
|
{#if showActions}
|
|
133
212
|
<th class="job-list__cell">Actions</th>
|
|
134
213
|
{/if}
|
|
@@ -158,7 +237,7 @@ function setIndeterminate(node: HTMLInputElement, value: boolean) {
|
|
|
158
237
|
</td>
|
|
159
238
|
</tr>
|
|
160
239
|
{:else}
|
|
161
|
-
{#each
|
|
240
|
+
{#each rows as job (job.id)}
|
|
162
241
|
{@const isSelected = selected.has(job.id)}
|
|
163
242
|
<tr
|
|
164
243
|
class="job-list__row"
|
|
@@ -249,7 +328,9 @@ function setIndeterminate(node: HTMLInputElement, value: boolean) {
|
|
|
249
328
|
background: var(--smrt-color-surface-container, #f3f4f6);
|
|
250
329
|
}
|
|
251
330
|
|
|
252
|
-
|
|
331
|
+
/* Sortable headers are SortableHeader's own <th>: :global, and their
|
|
332
|
+
control carries the padding. */
|
|
333
|
+
.job-list__head :global(th) {
|
|
253
334
|
padding: var(--smrt-spacing-sm, 0.5rem) var(--smrt-spacing-md, 1rem);
|
|
254
335
|
font-weight: var(--smrt-typography-weight-semibold, 600);
|
|
255
336
|
text-align: left;
|
|
@@ -257,6 +338,12 @@ function setIndeterminate(node: HTMLInputElement, value: boolean) {
|
|
|
257
338
|
border-bottom: 1px solid var(--smrt-color-outline-variant, #c4c6cf);
|
|
258
339
|
}
|
|
259
340
|
|
|
341
|
+
.job-list__head :global(th.sortable-header) {
|
|
342
|
+
padding: 0;
|
|
343
|
+
--sortable-header-padding: var(--smrt-spacing-sm, 0.5rem)
|
|
344
|
+
var(--smrt-spacing-md, 1rem);
|
|
345
|
+
}
|
|
346
|
+
|
|
260
347
|
.job-list__body tr {
|
|
261
348
|
border-bottom: 1px solid var(--smrt-color-outline-variant, #c4c6cf);
|
|
262
349
|
transition: background-color var(--smrt-duration-short2, 150ms) var(--smrt-easing-standard, ease);
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JobList - Display a filterable, sortable list of background jobs.
|
|
3
|
+
*
|
|
4
|
+
* Sorting follows the list-sort contract (`@happyvertical/smrt-ui/data`):
|
|
5
|
+
* every column header toggles its column ascending/descending (dates and
|
|
6
|
+
* counts start with the largest). Rows keep the order they are supplied in
|
|
7
|
+
* until the host passes `sort` or the person activates a header, so a host
|
|
8
|
+
* that already orders its jobs is not silently reordered. A parent that pages
|
|
9
|
+
* on the server passes `sort` + `onSortChange` and supplies rows already in
|
|
10
|
+
* that order.
|
|
11
|
+
*/
|
|
12
|
+
import { type ListSort } from '@happyvertical/smrt-ui/data';
|
|
1
13
|
import type { Snippet } from 'svelte';
|
|
2
14
|
import type { JobData } from './types.js';
|
|
3
15
|
export interface Props {
|
|
@@ -21,8 +33,18 @@ export interface Props {
|
|
|
21
33
|
onCancel?: (job: JobData) => void;
|
|
22
34
|
/** Empty state snippet */
|
|
23
35
|
empty?: Snippet;
|
|
36
|
+
/**
|
|
37
|
+
* Current order. Omitted: rows render as supplied (headers show no sort)
|
|
38
|
+
* until a header is activated.
|
|
39
|
+
*/
|
|
40
|
+
sort?: ListSort;
|
|
41
|
+
/**
|
|
42
|
+
* Called when a header is activated. When given, the parent owns the order
|
|
43
|
+
* (e.g. a server-sorted list) and `jobs` are rendered as supplied.
|
|
44
|
+
*/
|
|
45
|
+
onSortChange?: (sort: ListSort) => void;
|
|
24
46
|
}
|
|
25
|
-
declare const JobList: import("svelte").Component<Props, {}, "selected">;
|
|
47
|
+
declare const JobList: import("svelte").Component<Props, {}, "sort" | "selected">;
|
|
26
48
|
type JobList = ReturnType<typeof JobList>;
|
|
27
49
|
export default JobList;
|
|
28
50
|
//# sourceMappingURL=JobList.svelte.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"JobList.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/JobList.svelte.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"JobList.svelte.d.ts","sourceRoot":"","sources":["../../../src/svelte/components/JobList.svelte.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;GAUG;AACH,OAAO,EACL,KAAK,QAAQ,EAKd,MAAM,6BAA6B,CAAC;AAErC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAItC,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,YAAY,CAAC;AAI9D,MAAM,WAAW,KAAK;IACpB,sBAAsB;IACtB,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,oBAAoB;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sBAAsB;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,uBAAuB;IACvB,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,0BAA0B;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,sCAAsC;IACtC,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IACpD,mCAAmC;IACnC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACpC,qCAAqC;IACrC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IACjC,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;IAClC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACzC;AAyOD,QAAA,MAAM,OAAO,4DAAwC,CAAC;AACtD,KAAK,OAAO,GAAG,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;AAC1C,eAAe,OAAO,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
// @vitest-environment jsdom
|
|
2
|
+
/**
|
|
3
|
+
* JobList ordering: rows keep the order they are supplied in until the host
|
|
4
|
+
* passes a `sort` or the person activates a header — adding header sorting
|
|
5
|
+
* must not silently reorder an existing host's list.
|
|
6
|
+
*/
|
|
7
|
+
import { render, screen, userEvent } from '@happyvertical/smrt-vitest/svelte';
|
|
8
|
+
import { describe, expect, it } from 'vitest';
|
|
9
|
+
import JobList from '../JobList.svelte';
|
|
10
|
+
function job(id, createdAt, queue = 'default') {
|
|
11
|
+
return {
|
|
12
|
+
id,
|
|
13
|
+
queue,
|
|
14
|
+
objectType: 'Thing',
|
|
15
|
+
objectId: null,
|
|
16
|
+
method: 'run',
|
|
17
|
+
args: {},
|
|
18
|
+
status: 'pending',
|
|
19
|
+
priority: 0,
|
|
20
|
+
attempts: 0,
|
|
21
|
+
maxAttempts: 3,
|
|
22
|
+
timeout: 0,
|
|
23
|
+
timeoutBehavior: 'fail',
|
|
24
|
+
runAt: createdAt,
|
|
25
|
+
startedAt: null,
|
|
26
|
+
completedAt: null,
|
|
27
|
+
lastError: null,
|
|
28
|
+
resultPointer: null,
|
|
29
|
+
workerId: null,
|
|
30
|
+
createdAt,
|
|
31
|
+
updatedAt: createdAt,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// Supplied oldest first, as a host that orders by queue position might.
|
|
35
|
+
const jobs = [
|
|
36
|
+
job('a', '2026-09-01T00:00:00Z', 'q-a'),
|
|
37
|
+
job('b', '2026-09-03T00:00:00Z', 'q-b'),
|
|
38
|
+
job('c', '2026-09-02T00:00:00Z', 'q-c'),
|
|
39
|
+
];
|
|
40
|
+
const queues = () => Array.from(document.querySelectorAll('.job-list__cell--queue')).map((cell) => cell.textContent?.trim());
|
|
41
|
+
describe('JobList ordering', () => {
|
|
42
|
+
it('renders rows in the supplied order when no sort is given', () => {
|
|
43
|
+
render(JobList, { props: { jobs, showActions: false } });
|
|
44
|
+
expect(queues()).toEqual(['q-a', 'q-b', 'q-c']);
|
|
45
|
+
});
|
|
46
|
+
it('sorts when the host passes a sort', () => {
|
|
47
|
+
render(JobList, {
|
|
48
|
+
props: {
|
|
49
|
+
jobs,
|
|
50
|
+
showActions: false,
|
|
51
|
+
sort: { columnId: 'createdAt', direction: 'desc' },
|
|
52
|
+
},
|
|
53
|
+
});
|
|
54
|
+
expect(queues()).toEqual(['q-b', 'q-c', 'q-a']);
|
|
55
|
+
});
|
|
56
|
+
it('sorts once the person activates a header', async () => {
|
|
57
|
+
render(JobList, { props: { jobs, showActions: false } });
|
|
58
|
+
await userEvent.click(screen.getByRole('button', { name: /Queue/ }));
|
|
59
|
+
expect(queues()).toEqual(['q-a', 'q-b', 'q-c']);
|
|
60
|
+
await userEvent.click(screen.getByRole('button', { name: /Queue/ }));
|
|
61
|
+
expect(queues()).toEqual(['q-c', 'q-b', 'q-a']);
|
|
62
|
+
});
|
|
63
|
+
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@happyvertical/smrt-jobs",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.53.0",
|
|
4
4
|
"smrtJsdoc": "strict",
|
|
5
5
|
"description": "Background job processing for SMRT objects with persistence and scheduling",
|
|
6
6
|
"author": "HappyVertical",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
}
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"svelte": "^5.57.
|
|
46
|
+
"svelte": "^5.57.0"
|
|
47
47
|
},
|
|
48
48
|
"peerDependenciesMeta": {
|
|
49
49
|
"svelte": {
|
|
@@ -51,18 +51,18 @@
|
|
|
51
51
|
}
|
|
52
52
|
},
|
|
53
53
|
"dependencies": {
|
|
54
|
-
"@happyvertical/jobs": "^0.
|
|
55
|
-
"@happyvertical/logger": "^0.
|
|
56
|
-
"@happyvertical/smrt-config": "0.
|
|
57
|
-
"@happyvertical/smrt-core": "0.
|
|
58
|
-
"@happyvertical/smrt-tenancy": "0.
|
|
59
|
-
"@happyvertical/smrt-types": "0.
|
|
60
|
-
"@happyvertical/smrt-ui": "0.
|
|
61
|
-
"@happyvertical/sql": "^0.
|
|
62
|
-
"@happyvertical/utils": "^0.
|
|
54
|
+
"@happyvertical/jobs": "^0.98.0",
|
|
55
|
+
"@happyvertical/logger": "^0.98.0",
|
|
56
|
+
"@happyvertical/smrt-config": "0.53.0",
|
|
57
|
+
"@happyvertical/smrt-core": "0.53.0",
|
|
58
|
+
"@happyvertical/smrt-tenancy": "0.53.0",
|
|
59
|
+
"@happyvertical/smrt-types": "0.53.0",
|
|
60
|
+
"@happyvertical/smrt-ui": "0.53.0",
|
|
61
|
+
"@happyvertical/sql": "^0.98.0",
|
|
62
|
+
"@happyvertical/utils": "^0.98.0"
|
|
63
63
|
},
|
|
64
64
|
"devDependencies": {
|
|
65
|
-
"@happyvertical/smrt-vitest": "0.
|
|
65
|
+
"@happyvertical/smrt-vitest": "0.53.0",
|
|
66
66
|
"@sveltejs/package": "^2.5.8",
|
|
67
67
|
"@sveltejs/vite-plugin-svelte": "^7.3.0",
|
|
68
68
|
"@types/node": "24.13.6",
|