@adonis-agora/durable 0.21.0 → 0.22.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/CHANGELOG.md +54 -0
- package/dist/assets/spa/assets/index-BpH1yTMa.js +81 -0
- package/dist/assets/spa/assets/index-BpH1yTMa.js.map +1 -0
- package/dist/assets/spa/assets/index-CTsYsi6p.css +1 -0
- package/dist/assets/spa/index.html +19 -0
- package/dist/providers/dashboard_provider.d.ts +51 -52
- package/dist/providers/dashboard_provider.d.ts.map +1 -1
- package/dist/providers/dashboard_provider.js +234 -121
- package/dist/providers/dashboard_provider.js.map +1 -1
- package/dist/providers/durable_provider.d.ts.map +1 -1
- package/dist/providers/durable_provider.js +5 -2
- package/dist/providers/durable_provider.js.map +1 -1
- package/dist/src/dashboard/attr-filter.d.ts +8 -0
- package/dist/src/dashboard/attr-filter.d.ts.map +1 -0
- package/dist/src/dashboard/attr-filter.js +35 -0
- package/dist/src/dashboard/attr-filter.js.map +1 -0
- package/dist/src/dashboard/auth.d.ts +55 -10
- package/dist/src/dashboard/auth.d.ts.map +1 -1
- package/dist/src/dashboard/auth.js +50 -11
- package/dist/src/dashboard/auth.js.map +1 -1
- package/dist/src/dashboard/gateway-adapter.d.ts +52 -5
- package/dist/src/dashboard/gateway-adapter.d.ts.map +1 -1
- package/dist/src/dashboard/gateway-adapter.js +48 -6
- package/dist/src/dashboard/gateway-adapter.js.map +1 -1
- package/dist/src/dashboard/handlers.d.ts +56 -8
- package/dist/src/dashboard/handlers.d.ts.map +1 -1
- package/dist/src/dashboard/handlers.js +116 -14
- package/dist/src/dashboard/handlers.js.map +1 -1
- package/dist/src/dashboard/index.d.ts +4 -4
- package/dist/src/dashboard/index.d.ts.map +1 -1
- package/dist/src/dashboard/index.js +3 -3
- package/dist/src/dashboard/index.js.map +1 -1
- package/dist/src/dashboard/spa.d.ts +22 -0
- package/dist/src/dashboard/spa.d.ts.map +1 -0
- package/dist/src/dashboard/spa.js +43 -0
- package/dist/src/dashboard/spa.js.map +1 -0
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/transports/queue-mock-adapter.d.ts +1 -0
- package/dist/src/transports/queue-mock-adapter.d.ts.map +1 -1
- package/dist/src/transports/queue-mock-adapter.js +1 -0
- package/dist/src/transports/queue-mock-adapter.js.map +1 -1
- package/dist/src/workflow-discovery.d.ts +15 -3
- package/dist/src/workflow-discovery.d.ts.map +1 -1
- package/dist/src/workflow-discovery.js +13 -6
- package/dist/src/workflow-discovery.js.map +1 -1
- package/dist/stubs/config/durable_dashboard.stub +19 -0
- package/package.json +18 -17
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { GroupHealth, RunQuery, RunResult, StepCheckpoint, WorkflowRun } from '../index.js';
|
|
1
|
+
import type { EngineEvent, GroupHealth, RunQuery, RunResult, StepCheckpoint, WorkflowRun } from '../index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Framework-light JSON handlers over a {@link DashboardEngine}.
|
|
4
4
|
*
|
|
@@ -11,15 +11,24 @@ import type { GroupHealth, RunQuery, RunResult, StepCheckpoint, WorkflowRun } fr
|
|
|
11
11
|
* leak in, so the handlers are unit-testable against a real in-memory engine
|
|
12
12
|
* with no HTTP server. The provider adapts an AdonisJS `HttpContext` to these
|
|
13
13
|
* shapes.
|
|
14
|
+
*
|
|
15
|
+
* `listRuns`/`getRun`/`retryRun`/`redispatchPendingRun`/`cancelRun`/`health` are the original
|
|
16
|
+
* handlers this file always had (kept response-shape compatible with the legacy static
|
|
17
|
+
* `assets/dashboard.html`, still served as a compat fallback — see `compat.ts`/`compat-view.ts`).
|
|
18
|
+
* `workers`, `topology`, `retryWithInputRun`, `continueRun`, and `bulkAction` are additions that give
|
|
19
|
+
* the new `@adonis-agora/durable-dashboard` React SPA parity with `@dudousxd/nestjs-durable-dashboard`'s
|
|
20
|
+
* `DurableApiController` (fix-and-replay, bulk retry/cancel, breakpoint continue, full worker
|
|
21
|
+
* heartbeats, topology badge). The SSE `runs/:id/stream` route is wired directly in
|
|
22
|
+
* `providers/dashboard_provider.ts` since streaming needs the raw HTTP response, not a JSON `ApiResponse`.
|
|
14
23
|
*/
|
|
15
24
|
/**
|
|
16
25
|
* The bounded read/control surface the JSON handlers drive — declared STRUCTURALLY (a port), not by
|
|
17
26
|
* importing the concrete `WorkflowEngine` class, so the same handlers serve BOTH durable topologies
|
|
18
|
-
* (design §8): a store role passes the real {@link
|
|
19
|
-
*
|
|
20
|
-
* {@link import('../run-gateway/interface.js').RunGateway} (
|
|
21
|
-
* is therefore invisible to the handlers. Mirrors the `RunGatewayEngine` port pattern
|
|
22
|
-
* `StoreRunGateway`.
|
|
27
|
+
* (design §8): a store role passes an adapter over the real {@link
|
|
28
|
+
* import('../engine.js').WorkflowEngine} (`storeDashboardEngine`); a store-less `tenant` pod passes an
|
|
29
|
+
* adapter over its {@link import('../run-gateway/interface.js').RunGateway} (`gatewayDashboardEngine`).
|
|
30
|
+
* Store presence is therefore invisible to the handlers. Mirrors the `RunGatewayEngine` port pattern
|
|
31
|
+
* already used by `StoreRunGateway`.
|
|
23
32
|
*/
|
|
24
33
|
export interface DashboardEngine {
|
|
25
34
|
getRun(runId: string): Promise<WorkflowRun | null>;
|
|
@@ -32,6 +41,17 @@ export interface DashboardEngine {
|
|
|
32
41
|
compensate?: boolean;
|
|
33
42
|
}): Promise<RunResult | null>;
|
|
34
43
|
workerHealth(extra?: string[]): Promise<GroupHealth[]>;
|
|
44
|
+
/** Fix-and-replay: start a fresh linked run from `runId`'s workflow with a corrected `input`. Returns
|
|
45
|
+
* the new run's id, or `null` if `runId` is unknown. Degrades to `null` on a topology that can't
|
|
46
|
+
* perform it yet (a store-less `tenant` pod — see `gateway-adapter.ts`). */
|
|
47
|
+
retryWithInput(runId: string, input: unknown): Promise<{
|
|
48
|
+
runId: string;
|
|
49
|
+
} | null>;
|
|
50
|
+
/** Resume a run paused at a `ctx.breakpoint()`. Returns `null` if the run isn't paused at one, or on
|
|
51
|
+
* a topology that can't perform it yet (see `retryWithInput`). */
|
|
52
|
+
continue(runId: string): Promise<RunResult | null>;
|
|
53
|
+
/** Live lifecycle events for ONE run; returns an unsubscribe fn. */
|
|
54
|
+
subscribe(runId: string, onEvent: (event: EngineEvent) => void): () => void;
|
|
35
55
|
}
|
|
36
56
|
/** The read/control port the handlers operate over (a store engine or a tenant gateway adapter). */
|
|
37
57
|
export interface Deps {
|
|
@@ -53,7 +73,7 @@ export interface ApiResponse {
|
|
|
53
73
|
}
|
|
54
74
|
/** A `200 OK` JSON response. Exported so sibling handlers (e.g. `compat`) share one convention. */
|
|
55
75
|
export declare const ok: (body: unknown) => ApiResponse;
|
|
56
|
-
/** `GET /runs` — list runs filtered by status/workflow/tag, paginated. */
|
|
76
|
+
/** `GET /runs` — list runs filtered by status/workflow/tag/namespace/search-attributes, paginated. */
|
|
57
77
|
export declare function listRuns(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
58
78
|
/** `GET /runs/:id` — a run's detail: the run, its step timeline, and child run ids. */
|
|
59
79
|
export declare function getRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
@@ -72,6 +92,34 @@ export declare function retryRun(deps: Deps, req: ApiRequest): Promise<ApiRespon
|
|
|
72
92
|
export declare function redispatchPendingRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
73
93
|
/** `POST /runs/:id/cancel` — cancel a run. Pass `{ compensate: true }` to undo the saga first. */
|
|
74
94
|
export declare function cancelRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
75
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* `POST /runs/:id/retry-with-input` — fix-and-replay: start a fresh linked run of `runId`'s workflow
|
|
97
|
+
* with a corrected `input`. Body: `{ input: unknown }`. Returns the new run's id; the ORIGINAL run is
|
|
98
|
+
* left untouched (mirrors `@dudousxd/nestjs-durable-dashboard`'s `retryWithInput`).
|
|
99
|
+
*/
|
|
100
|
+
export declare function retryWithInputRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
101
|
+
/**
|
|
102
|
+
* `POST /runs/:id/continue` — resume a run paused at a {@link import('../interfaces.js').WorkflowCtx}
|
|
103
|
+
* breakpoint (the dashboard's "continue" button). `404` if the run isn't paused at one.
|
|
104
|
+
*/
|
|
105
|
+
export declare function continueRun(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
106
|
+
/**
|
|
107
|
+
* `POST /bulk/:action` (`action` = `retry`|`cancel`) — apply an action to every run matching the same
|
|
108
|
+
* filter `listRuns` accepts (status/workflow/tag/namespace/attr), capped at 500 matches. Skips (does
|
|
109
|
+
* not abort on) a run that can't take the action (e.g. already terminal). Mirrors
|
|
110
|
+
* `@dudousxd/nestjs-durable-dashboard`'s `DashboardService.bulk`.
|
|
111
|
+
*/
|
|
112
|
+
export declare function bulkAction(deps: Deps, req: ApiRequest): Promise<ApiResponse>;
|
|
113
|
+
/** `GET /health` — per-group worker health (queue backlog + live worker heartbeats), reduced to a
|
|
114
|
+
* compact shape. Kept for the legacy static dashboard (`assets/dashboard.html`, compat fallback). */
|
|
76
115
|
export declare function health(deps: Deps): Promise<ApiResponse>;
|
|
116
|
+
/** `GET /workers` — full per-group worker health (every live worker's heartbeat, not just a count),
|
|
117
|
+
* for the new SPA's Workers panel (`pivot-by-worker.ts`/`group-by-partition.ts` need per-instance
|
|
118
|
+
* `instanceId`/`lastBeatAt`). Raw `GroupHealth[]`, unwrapped — matches
|
|
119
|
+
* `@dudousxd/nestjs-durable-dashboard`'s `GET /workers` shape byte for byte (minus the `status`
|
|
120
|
+
* telemetry field, which the AdonisJS engine's heartbeat doesn't carry — see `durable-client.ts`). */
|
|
121
|
+
export declare function workers(deps: Deps): Promise<ApiResponse>;
|
|
122
|
+
/** `GET /topology` — this deployment's durable role, for the header badge. Pure/local (no engine
|
|
123
|
+
* round-trip): the role is already known by `dashboard_provider.ts` from `config/durable.ts`. */
|
|
124
|
+
export declare function topology(role: 'standalone' | 'control-plane' | 'tenant', tenant?: string): ApiResponse;
|
|
77
125
|
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/dashboard/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,QAAQ,EACR,SAAS,EAET,cAAc,EACd,WAAW,EACZ,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/dashboard/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,21 @@
|
|
|
1
|
+
import { parseAttrFilters } from './attr-filter.js';
|
|
1
2
|
/** A `200 OK` JSON response. Exported so sibling handlers (e.g. `compat`) share one convention. */
|
|
2
3
|
export const ok = (body) => ({ status: 200, body });
|
|
3
4
|
const notFound = (message) => ({
|
|
4
5
|
status: 404,
|
|
5
6
|
body: { error: message },
|
|
6
7
|
});
|
|
8
|
+
const badRequest = (message) => ({
|
|
9
|
+
status: 400,
|
|
10
|
+
body: { error: message },
|
|
11
|
+
});
|
|
12
|
+
/** The full status union (`interfaces.ts`'s `RunStatus`) — kept in sync so filters/facets never drop a
|
|
13
|
+
* state; a previous version of this list was missing `'blocked'`. */
|
|
7
14
|
const RUN_STATUSES = [
|
|
8
15
|
'pending',
|
|
9
16
|
'running',
|
|
10
17
|
'suspended',
|
|
18
|
+
'blocked',
|
|
11
19
|
'completed',
|
|
12
20
|
'failed',
|
|
13
21
|
'cancelled',
|
|
@@ -33,23 +41,35 @@ function parseStatus(value) {
|
|
|
33
41
|
}
|
|
34
42
|
return undefined;
|
|
35
43
|
}
|
|
36
|
-
/**
|
|
44
|
+
/** Build a {@link RunQuery} from the query params shared by `listRuns` and `bulkAction` — status, tag,
|
|
45
|
+
* attribute predicates (`attr=key:op:value`, repeatable/ANDed), namespace. `origin` is intentionally
|
|
46
|
+
* NOT a query predicate (the engine has no `origin` column — see `durable-client.ts`'s module doc);
|
|
47
|
+
* it is read but ignored, so a client that always sends it (parity with the NestJS API) never 400s. */
|
|
48
|
+
function runFilterFromQuery(query) {
|
|
49
|
+
const status = parseStatus(firstQuery(query.status));
|
|
50
|
+
const workflow = firstQuery(query.workflow);
|
|
51
|
+
const tag = firstQuery(query.tag);
|
|
52
|
+
const namespace = firstQuery(query.namespace);
|
|
53
|
+
const attributes = parseAttrFilters(query.attr);
|
|
54
|
+
const filter = {};
|
|
55
|
+
if (status)
|
|
56
|
+
filter.status = status;
|
|
57
|
+
if (workflow)
|
|
58
|
+
filter.workflow = workflow;
|
|
59
|
+
if (tag)
|
|
60
|
+
filter.tag = tag;
|
|
61
|
+
if (namespace)
|
|
62
|
+
filter.namespace = namespace;
|
|
63
|
+
if (attributes)
|
|
64
|
+
filter.attributes = attributes;
|
|
65
|
+
return filter;
|
|
66
|
+
}
|
|
67
|
+
/** `GET /runs` — list runs filtered by status/workflow/tag/namespace/search-attributes, paginated. */
|
|
37
68
|
export async function listRuns(deps, req) {
|
|
38
69
|
const { engine } = deps;
|
|
39
70
|
const limit = Math.min(intQuery(req.query.limit, 50), 200);
|
|
40
71
|
const offset = intQuery(req.query.offset, 0);
|
|
41
|
-
const
|
|
42
|
-
const workflow = firstQuery(req.query.workflow);
|
|
43
|
-
const tag = firstQuery(req.query.tag);
|
|
44
|
-
// Build the query with only the predicates that are set — exactOptionalPropertyTypes
|
|
45
|
-
// forbids passing an explicit `undefined`.
|
|
46
|
-
const query = { limit, offset };
|
|
47
|
-
if (status)
|
|
48
|
-
query.status = status;
|
|
49
|
-
if (workflow)
|
|
50
|
-
query.workflow = workflow;
|
|
51
|
-
if (tag)
|
|
52
|
-
query.tag = tag;
|
|
72
|
+
const query = { limit, offset, ...runFilterFromQuery(req.query) };
|
|
53
73
|
const runs = await engine.listRuns(query);
|
|
54
74
|
return ok({
|
|
55
75
|
runs: runs.map(summarizeRun),
|
|
@@ -118,7 +138,70 @@ export async function cancelRun(deps, req) {
|
|
|
118
138
|
return notFound(`run ${id} not found`);
|
|
119
139
|
return ok({ result });
|
|
120
140
|
}
|
|
121
|
-
/**
|
|
141
|
+
/**
|
|
142
|
+
* `POST /runs/:id/retry-with-input` — fix-and-replay: start a fresh linked run of `runId`'s workflow
|
|
143
|
+
* with a corrected `input`. Body: `{ input: unknown }`. Returns the new run's id; the ORIGINAL run is
|
|
144
|
+
* left untouched (mirrors `@dudousxd/nestjs-durable-dashboard`'s `retryWithInput`).
|
|
145
|
+
*/
|
|
146
|
+
export async function retryWithInputRun(deps, req) {
|
|
147
|
+
const id = req.params.id;
|
|
148
|
+
if (!id)
|
|
149
|
+
return notFound('run id is required');
|
|
150
|
+
const body = (req.body ?? {});
|
|
151
|
+
const result = await deps.engine.retryWithInput(id, body.input);
|
|
152
|
+
if (!result)
|
|
153
|
+
return notFound(`run ${id} not found`);
|
|
154
|
+
return ok({ result });
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* `POST /runs/:id/continue` — resume a run paused at a {@link import('../interfaces.js').WorkflowCtx}
|
|
158
|
+
* breakpoint (the dashboard's "continue" button). `404` if the run isn't paused at one.
|
|
159
|
+
*/
|
|
160
|
+
export async function continueRun(deps, req) {
|
|
161
|
+
const id = req.params.id;
|
|
162
|
+
if (!id)
|
|
163
|
+
return notFound('run id is required');
|
|
164
|
+
const result = await deps.engine.continue(id);
|
|
165
|
+
if (!result)
|
|
166
|
+
return notFound(`run ${id} is not paused at a breakpoint`);
|
|
167
|
+
return ok({ result });
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* `POST /bulk/:action` (`action` = `retry`|`cancel`) — apply an action to every run matching the same
|
|
171
|
+
* filter `listRuns` accepts (status/workflow/tag/namespace/attr), capped at 500 matches. Skips (does
|
|
172
|
+
* not abort on) a run that can't take the action (e.g. already terminal). Mirrors
|
|
173
|
+
* `@dudousxd/nestjs-durable-dashboard`'s `DashboardService.bulk`.
|
|
174
|
+
*/
|
|
175
|
+
export async function bulkAction(deps, req) {
|
|
176
|
+
const action = req.params.action;
|
|
177
|
+
if (action !== 'retry' && action !== 'cancel') {
|
|
178
|
+
return badRequest("action must be 'retry' or 'cancel'");
|
|
179
|
+
}
|
|
180
|
+
const compensate = firstQuery(req.query.compensate) === 'true';
|
|
181
|
+
const filter = runFilterFromQuery(req.query);
|
|
182
|
+
const runs = await deps.engine.listRuns({ ...filter, limit: 500 });
|
|
183
|
+
let applied = 0;
|
|
184
|
+
for (const run of runs) {
|
|
185
|
+
try {
|
|
186
|
+
if (action === 'retry') {
|
|
187
|
+
const result = await deps.engine.requeue(run.id);
|
|
188
|
+
if (result)
|
|
189
|
+
applied += 1;
|
|
190
|
+
}
|
|
191
|
+
else {
|
|
192
|
+
const result = await deps.engine.cancel(run.id, compensate ? { compensate: true } : undefined);
|
|
193
|
+
if (result)
|
|
194
|
+
applied += 1;
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
catch {
|
|
198
|
+
// Skip a run that can't take the action (e.g. already terminal) — matched still counts it.
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return ok({ matched: runs.length, applied });
|
|
202
|
+
}
|
|
203
|
+
/** `GET /health` — per-group worker health (queue backlog + live worker heartbeats), reduced to a
|
|
204
|
+
* compact shape. Kept for the legacy static dashboard (`assets/dashboard.html`, compat fallback). */
|
|
122
205
|
export async function health(deps) {
|
|
123
206
|
const groups = await deps.engine.workerHealth();
|
|
124
207
|
return ok({
|
|
@@ -131,6 +214,20 @@ export async function health(deps) {
|
|
|
131
214
|
})),
|
|
132
215
|
});
|
|
133
216
|
}
|
|
217
|
+
/** `GET /workers` — full per-group worker health (every live worker's heartbeat, not just a count),
|
|
218
|
+
* for the new SPA's Workers panel (`pivot-by-worker.ts`/`group-by-partition.ts` need per-instance
|
|
219
|
+
* `instanceId`/`lastBeatAt`). Raw `GroupHealth[]`, unwrapped — matches
|
|
220
|
+
* `@dudousxd/nestjs-durable-dashboard`'s `GET /workers` shape byte for byte (minus the `status`
|
|
221
|
+
* telemetry field, which the AdonisJS engine's heartbeat doesn't carry — see `durable-client.ts`). */
|
|
222
|
+
export async function workers(deps) {
|
|
223
|
+
const groups = await deps.engine.workerHealth();
|
|
224
|
+
return ok(groups);
|
|
225
|
+
}
|
|
226
|
+
/** `GET /topology` — this deployment's durable role, for the header badge. Pure/local (no engine
|
|
227
|
+
* round-trip): the role is already known by `dashboard_provider.ts` from `config/durable.ts`. */
|
|
228
|
+
export function topology(role, tenant) {
|
|
229
|
+
return ok(tenant !== undefined ? { role, tenant } : { role });
|
|
230
|
+
}
|
|
134
231
|
/** Compact run shape for the list view. */
|
|
135
232
|
function summarizeRun(run) {
|
|
136
233
|
return {
|
|
@@ -138,6 +235,7 @@ function summarizeRun(run) {
|
|
|
138
235
|
workflow: run.workflow,
|
|
139
236
|
workflowVersion: run.workflowVersion,
|
|
140
237
|
status: run.status,
|
|
238
|
+
namespace: run.namespace,
|
|
141
239
|
tags: run.tags ?? [],
|
|
142
240
|
createdAt: run.createdAt.toISOString(),
|
|
143
241
|
updatedAt: run.updatedAt.toISOString(),
|
|
@@ -174,9 +272,13 @@ function summarizeCheckpoint(cp) {
|
|
|
174
272
|
status: cp.status,
|
|
175
273
|
attempts: cp.attempts,
|
|
176
274
|
workerGroup: cp.workerGroup,
|
|
275
|
+
input: cp.input,
|
|
177
276
|
output: cp.output,
|
|
178
277
|
error: cp.error,
|
|
179
278
|
events: cp.events ?? [],
|
|
279
|
+
// Set only on parallel-fan siblings (`ctx.all`/`ctx.gather`) — the new SPA's `group-parallel-spans`
|
|
280
|
+
// helper needs this to collapse a fan-out into one timeline row.
|
|
281
|
+
parallelGroup: cp.parallelGroup,
|
|
180
282
|
enqueuedAt: cp.enqueuedAt.toISOString(),
|
|
181
283
|
startedAt: cp.startedAt.toISOString(),
|
|
182
284
|
finishedAt: cp.finishedAt.toISOString(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/dashboard/handlers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../../src/dashboard/handlers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export declare const VERSION = "0.
|
|
2
|
+
export declare const VERSION = "0.22.0";
|
|
3
3
|
export { defineConfig, defaultAuthorize, resolveConfig } from './define_config.js';
|
|
4
4
|
export type { AuthorizeHook, DurableDashboardConfig, ResolvedDurableDashboardConfig, } from './define_config.js';
|
|
5
|
-
export { listRuns, getRun, retryRun, redispatchPendingRun, cancelRun, health, ok, } from './handlers.js';
|
|
5
|
+
export { listRuns, getRun, retryRun, retryWithInputRun, continueRun, redispatchPendingRun, cancelRun, bulkAction, health, workers, topology, ok, } from './handlers.js';
|
|
6
6
|
export type { ApiRequest, ApiResponse, Deps, DashboardEngine } from './handlers.js';
|
|
7
7
|
export { renderDashboard } from './html.js';
|
|
8
8
|
export { compat, enumerateLiveFleet, mergeFleets } from './compat.js';
|
|
@@ -12,8 +12,8 @@ export type { RecordedBlock, EngineEventSource } from './diagnostics-recorder.js
|
|
|
12
12
|
export { outcomeClass, outcomeLabel, formatProtocolRange } from './compat-view.js';
|
|
13
13
|
export { gatewayDashboardEngine, dashboardEngineForRole } from './gateway-adapter.js';
|
|
14
14
|
export type { DashboardContainer } from './gateway-adapter.js';
|
|
15
|
-
export { resolveDashboardAuth, performLogin, readSession, sanitizeReturnTo, SESSION_COOKIE_NAME, } from './auth.js';
|
|
16
|
-
export type { DashboardAuthOptions, ResolvedDashboardAuth, LoginHook, LoginOutcome, } from './auth.js';
|
|
15
|
+
export { resolveDashboardAuth, performLogin, performSession, readSession, sanitizeReturnTo, SESSION_COOKIE_NAME, } from './auth.js';
|
|
16
|
+
export type { AuthMode, DashboardAuthOptions, ResolvedDashboardAuth, LoginHook, LoginOutcome, SessionHook, SessionOutcome, } from './auth.js';
|
|
17
17
|
export { signSessionCookie, verifySessionCookie, } from './session_cookie.js';
|
|
18
18
|
export type { DashboardSession, DashboardSessionUser, SignOptions, VerifyOptions, } from './session_cookie.js';
|
|
19
19
|
export { renderLoginPage } from './login_page.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnF,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,MAAM,EACN,EAAE,GACH,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGnF,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EACT,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,eAAO,MAAM,OAAO,WAAW,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnF,YAAY,EACV,aAAa,EACb,sBAAsB,EACtB,8BAA8B,GAC/B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,QAAQ,EACR,EAAE,GACH,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACpF,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGnF,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AACnB,YAAY,EACV,QAAQ,EACR,oBAAoB,EACpB,qBAAqB,EACrB,SAAS,EACT,YAAY,EACZ,WAAW,EACX,cAAc,GACf,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export const VERSION = '0.
|
|
2
|
+
export const VERSION = '0.22.0';
|
|
3
3
|
export { defineConfig, defaultAuthorize, resolveConfig } from './define_config.js';
|
|
4
|
-
export { listRuns, getRun, retryRun, redispatchPendingRun, cancelRun, health, ok, } from './handlers.js';
|
|
4
|
+
export { listRuns, getRun, retryRun, retryWithInputRun, continueRun, redispatchPendingRun, cancelRun, bulkAction, health, workers, topology, ok, } from './handlers.js';
|
|
5
5
|
export { renderDashboard } from './html.js';
|
|
6
6
|
// Fleet health / protocol-compatibility panel (design §7.6, §10).
|
|
7
7
|
export { compat, enumerateLiveFleet, mergeFleets } from './compat.js';
|
|
@@ -10,7 +10,7 @@ export { outcomeClass, outcomeLabel, formatProtocolRange } from './compat-view.j
|
|
|
10
10
|
// Store-less `tenant` dashboard: adapt the RunGateway to the handlers' read/control port (design §8).
|
|
11
11
|
export { gatewayDashboardEngine, dashboardEngineForRole } from './gateway-adapter.js';
|
|
12
12
|
// Built-in `dashboardAuth` login screen (optional; opt-in via `config/durable_dashboard.ts`).
|
|
13
|
-
export { resolveDashboardAuth, performLogin, readSession, sanitizeReturnTo, SESSION_COOKIE_NAME, } from './auth.js';
|
|
13
|
+
export { resolveDashboardAuth, performLogin, performSession, readSession, sanitizeReturnTo, SESSION_COOKIE_NAME, } from './auth.js';
|
|
14
14
|
export { signSessionCookie, verifySessionCookie, } from './session_cookie.js';
|
|
15
15
|
export { renderLoginPage } from './login_page.js';
|
|
16
16
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnF,OAAO,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,oBAAoB,EACpB,SAAS,EACT,MAAM,EACN,EAAE,GACH,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,kEAAkE;AAClE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,sGAAsG;AACtG,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,8FAA8F;AAC9F,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMnF,OAAO,EACL,QAAQ,EACR,MAAM,EACN,QAAQ,EACR,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,SAAS,EACT,UAAU,EACV,MAAM,EACN,OAAO,EACP,QAAQ,EACR,EAAE,GACH,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAE5C,kEAAkE;AAClE,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAEnF,sGAAsG;AACtG,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAGtF,8FAA8F;AAC9F,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,cAAc,EACd,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,WAAW,CAAC;AAUnB,OAAO,EACL,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAO7B,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for mounting/serving the `@adonis-agora/durable-dashboard` React SPA — split out so
|
|
3
|
+
* they're unit-testable without booting AdonisJS. `dashboard_provider.ts` is a thin HTTP shell around
|
|
4
|
+
* these. Mirrors `@adonis-agora/media-dashboard`'s `provider/serve.ts` byte-for-byte in shape, so the
|
|
5
|
+
* two packages' "serve a Vite SPA from an AdonisJS provider" story stays one pattern across the Agora
|
|
6
|
+
* ecosystem.
|
|
7
|
+
*/
|
|
8
|
+
/** Placeholder base Vite bakes into asset URLs (`packages/dashboard/vite.config.ts`); rewritten to the
|
|
9
|
+
* configured dashboard `path` at serve time — the SAME built bundle mounts at any path with no rebuild. */
|
|
10
|
+
export declare const BASE_PLACEHOLDER = "/__DURABLE_DASHBOARD__/";
|
|
11
|
+
export declare const CONTENT_TYPES: Record<string, string>;
|
|
12
|
+
/** Content type for a served asset filename, defaulting to octet-stream. */
|
|
13
|
+
export declare function contentTypeFor(file: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* Rewrite the built `index.html` for serving: point Vite's placeholder base at the configured mount
|
|
16
|
+
* path, and inject the two globals `src/client/durable-client.ts` reads
|
|
17
|
+
* (`window.__DURABLE_BASE__`/`window.__DURABLE_API__`) — the SAME globals
|
|
18
|
+
* `@dudousxd/nestjs-durable-dashboard`'s own UI controller injects, so the SPA's client code (ported
|
|
19
|
+
* verbatim) needs no adaptation for which server it's running against.
|
|
20
|
+
*/
|
|
21
|
+
export declare function renderIndexHtml(html: string, basePath: string, apiBasePath: string): string;
|
|
22
|
+
//# sourceMappingURL=spa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spa.d.ts","sourceRoot":"","sources":["../../../src/dashboard/spa.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;4GAC4G;AAC5G,eAAO,MAAM,gBAAgB,4BAA4B,CAAC;AAE1D,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAchD,CAAC;AAEF,4EAA4E;AAC5E,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGnD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAI3F"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure helpers for mounting/serving the `@adonis-agora/durable-dashboard` React SPA — split out so
|
|
3
|
+
* they're unit-testable without booting AdonisJS. `dashboard_provider.ts` is a thin HTTP shell around
|
|
4
|
+
* these. Mirrors `@adonis-agora/media-dashboard`'s `provider/serve.ts` byte-for-byte in shape, so the
|
|
5
|
+
* two packages' "serve a Vite SPA from an AdonisJS provider" story stays one pattern across the Agora
|
|
6
|
+
* ecosystem.
|
|
7
|
+
*/
|
|
8
|
+
/** Placeholder base Vite bakes into asset URLs (`packages/dashboard/vite.config.ts`); rewritten to the
|
|
9
|
+
* configured dashboard `path` at serve time — the SAME built bundle mounts at any path with no rebuild. */
|
|
10
|
+
export const BASE_PLACEHOLDER = '/__DURABLE_DASHBOARD__/';
|
|
11
|
+
export const CONTENT_TYPES = {
|
|
12
|
+
'.js': 'text/javascript; charset=utf-8',
|
|
13
|
+
'.mjs': 'text/javascript; charset=utf-8',
|
|
14
|
+
'.css': 'text/css; charset=utf-8',
|
|
15
|
+
'.map': 'application/json; charset=utf-8',
|
|
16
|
+
'.json': 'application/json; charset=utf-8',
|
|
17
|
+
'.svg': 'image/svg+xml',
|
|
18
|
+
'.png': 'image/png',
|
|
19
|
+
'.jpg': 'image/jpeg',
|
|
20
|
+
'.jpeg': 'image/jpeg',
|
|
21
|
+
'.gif': 'image/gif',
|
|
22
|
+
'.ico': 'image/x-icon',
|
|
23
|
+
'.woff2': 'font/woff2',
|
|
24
|
+
'.woff': 'font/woff',
|
|
25
|
+
};
|
|
26
|
+
/** Content type for a served asset filename, defaulting to octet-stream. */
|
|
27
|
+
export function contentTypeFor(file) {
|
|
28
|
+
const ext = file.slice(file.lastIndexOf('.'));
|
|
29
|
+
return CONTENT_TYPES[ext] ?? 'application/octet-stream';
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Rewrite the built `index.html` for serving: point Vite's placeholder base at the configured mount
|
|
33
|
+
* path, and inject the two globals `src/client/durable-client.ts` reads
|
|
34
|
+
* (`window.__DURABLE_BASE__`/`window.__DURABLE_API__`) — the SAME globals
|
|
35
|
+
* `@dudousxd/nestjs-durable-dashboard`'s own UI controller injects, so the SPA's client code (ported
|
|
36
|
+
* verbatim) needs no adaptation for which server it's running against.
|
|
37
|
+
*/
|
|
38
|
+
export function renderIndexHtml(html, basePath, apiBasePath) {
|
|
39
|
+
const based = html.split(BASE_PLACEHOLDER).join(`${basePath}/`);
|
|
40
|
+
const inject = `<script>window.__DURABLE_BASE__=${JSON.stringify(basePath)};window.__DURABLE_API__=${JSON.stringify(apiBasePath)};</script>`;
|
|
41
|
+
return based.includes('</head>') ? based.replace('</head>', `${inject}</head>`) : inject + based;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=spa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spa.js","sourceRoot":"","sources":["../../../src/dashboard/spa.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;4GAC4G;AAC5G,MAAM,CAAC,MAAM,gBAAgB,GAAG,yBAAyB,CAAC;AAE1D,MAAM,CAAC,MAAM,aAAa,GAA2B;IACnD,KAAK,EAAE,gCAAgC;IACvC,MAAM,EAAE,gCAAgC;IACxC,MAAM,EAAE,yBAAyB;IACjC,MAAM,EAAE,iCAAiC;IACzC,OAAO,EAAE,iCAAiC;IAC1C,MAAM,EAAE,eAAe;IACvB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,WAAW;IACnB,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,YAAY;IACtB,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,4EAA4E;AAC5E,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,OAAO,aAAa,CAAC,GAAG,CAAC,IAAI,0BAA0B,CAAC;AAC1D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,QAAgB,EAAE,WAAmB;IACjF,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,CAAC;IAChE,MAAM,MAAM,GAAG,mCAAmC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,2BAA2B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC;IAC7I,OAAO,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,MAAM,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAK,CAAC;AACnG,CAAC"}
|
package/dist/src/index.d.ts
CHANGED
package/dist/src/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Keep in sync with this package's `version` in package.json. */
|
|
2
|
-
export const VERSION = '0.
|
|
2
|
+
export const VERSION = '0.22.0';
|
|
3
3
|
// --- engine + core primitives -----------------------------------------------
|
|
4
4
|
export * from './admission.js';
|
|
5
5
|
export * from './control-flow-signal.js';
|
|
@@ -50,6 +50,7 @@ export declare class MockAdapter implements Adapter {
|
|
|
50
50
|
pushMany: () => Promise<never>;
|
|
51
51
|
pushManyOn: () => Promise<never>;
|
|
52
52
|
getJob: () => Promise<never>;
|
|
53
|
+
renewJobs: () => Promise<never>;
|
|
53
54
|
upsertSchedule: () => Promise<never>;
|
|
54
55
|
createSchedule: () => Promise<never>;
|
|
55
56
|
getSchedule: () => Promise<never>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-mock-adapter.d.ts","sourceRoot":"","sources":["../../../src/transports/queue-mock-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE3E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,OAAO;;IACzC,QAAQ,CAAC,OAAO,yBAAgC;IAChD,QAAQ,CAAC,MAAM,2BAAkC;IACjD;8GAC0G;IAC1G,QAAQ,CAAC,WAAW,sBAA6B;IACjD;2FACuF;IACvF,QAAQ,CAAC,OAAO;aAA0B,OAAO;iBAAW,MAAM;SAAQ;IAC1E,QAAQ,SAAM;IACd,SAAS,UAAS;IAElB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAwBnD,GAAG,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIlC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3E;;;;;;OAMG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAmCZ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,SAAS,
|
|
1
|
+
{"version":3,"file":"queue-mock-adapter.d.ts","sourceRoot":"","sources":["../../../src/transports/queue-mock-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE3E;;;;;;GAMG;AACH,qBAAa,WAAY,YAAW,OAAO;;IACzC,QAAQ,CAAC,OAAO,yBAAgC;IAChD,QAAQ,CAAC,MAAM,2BAAkC;IACjD;8GAC0G;IAC1G,QAAQ,CAAC,WAAW,sBAA6B;IACjD;2FACuF;IACvF,QAAQ,CAAC,OAAO;aAA0B,OAAO;iBAAW,MAAM;SAAQ;IAC1E,QAAQ,SAAM;IACd,SAAS,UAAS;IAElB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAIvB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAMtD,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAwBnD,GAAG,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAIlC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKzC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK3C;;;;OAIG;IACG,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3E;;;;;;OAMG;IACG,kBAAkB,CACtB,KAAK,EAAE,MAAM,EACb,gBAAgB,EAAE,MAAM,EACxB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAmCZ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAItC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAIvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAM9B,SAAS,QAeU,OAAO,CAAC,KAAK,CAAC,CAfU;IAC3C,WAAW,QAcQ,OAAO,CAAC,KAAK,CAAC,CAdc;IAC/C,QAAQ,QAaW,OAAO,CAAC,KAAK,CAAC,CAbQ;IACzC,UAAU,QAYS,OAAO,CAAC,KAAK,CAAC,CAZY;IAC7C,MAAM,QAWa,OAAO,CAAC,KAAK,CAAC,CAXI;IACrC,SAAS,QAUU,OAAO,CAAC,KAAK,CAAC,CAVU;IAC3C,cAAc,QASK,OAAO,CAAC,KAAK,CAAC,CAToB;IACrD,cAAc,QAQK,OAAO,CAAC,KAAK,CAAC,CARoB;IACrD,WAAW,QAOQ,OAAO,CAAC,KAAK,CAAC,CAPc;IAC/C,aAAa,QAMM,OAAO,CAAC,KAAK,CAAC,CANkB;IACnD,cAAc,QAKK,OAAO,CAAC,KAAK,CAAC,CALoB;IACrD,cAAc,QAIK,OAAO,CAAC,KAAK,CAAC,CAJoB;IACrD,gBAAgB,QAGG,OAAO,CAAC,KAAK,CAAC,CAHwB;CAQ1D"}
|
|
@@ -146,6 +146,7 @@ export class MockAdapter {
|
|
|
146
146
|
pushMany = this.#unsupported('pushMany');
|
|
147
147
|
pushManyOn = this.#unsupported('pushManyOn');
|
|
148
148
|
getJob = this.#unsupported('getJob');
|
|
149
|
+
renewJobs = this.#unsupported('renewJobs');
|
|
149
150
|
upsertSchedule = this.#unsupported('upsertSchedule');
|
|
150
151
|
createSchedule = this.#unsupported('createSchedule');
|
|
151
152
|
getSchedule = this.#unsupported('getSchedule');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"queue-mock-adapter.js","sourceRoot":"","sources":["../../../src/transports/queue-mock-adapter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"queue-mock-adapter.js","sourceRoot":"","sources":["../../../src/transports/queue-mock-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,14 +17,26 @@ export interface DiscoveredWorkflow {
|
|
|
17
17
|
meta: WorkflowMeta;
|
|
18
18
|
cls: DiscoveredWorkflowClass;
|
|
19
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* A factory that instantiates a workflow class. When provided, it replaces the default `new Ctor()` —
|
|
22
|
+
* the AdonisJS provider passes `(Ctor) => app.container.make(Ctor)` so the container resolves the
|
|
23
|
+
* constructor and dependency injection (constructor params) works, like the `@adonisjs/queue` job
|
|
24
|
+
* factory. May return the instance or a Promise (the container's `make` is async). Defaults to
|
|
25
|
+
* `(Ctor) => new Ctor()` for library-level/tests use.
|
|
26
|
+
*/
|
|
27
|
+
export type WorkflowClassFactory = (ctor: DiscoveredWorkflowClass) => DiscoveredWorkflowClass['prototype'] | Promise<DiscoveredWorkflowClass['prototype']>;
|
|
20
28
|
/**
|
|
21
29
|
* Register a single workflow class on the engine — a `BaseWorkflow` subclass (its `static workflow`
|
|
22
30
|
* config), resolved via {@link workflowMeta}. Instantiates it once and binds its `run(ctx, input)`
|
|
23
31
|
* as the workflow body via `engine.register`. The low-level `engine.register(name, version, fn)`
|
|
24
32
|
* stays the escape hatch — this is the convenience the `app/workflows` convention builds on. No-op
|
|
25
33
|
* (returns `false`) for a non-workflow class (no `static workflow` config).
|
|
34
|
+
*
|
|
35
|
+
* `factory` lets the host resolve the instance via the IoC container (constructor injection); when
|
|
36
|
+
* omitted, the class is instantiated directly with `new Ctor()` (no args). The factory may be async
|
|
37
|
+
* (the Adonis container's `make` resolves async), so this function is async.
|
|
26
38
|
*/
|
|
27
|
-
export declare function registerWorkflowClass(engine: WorkflowEngine, cls: unknown): boolean
|
|
39
|
+
export declare function registerWorkflowClass(engine: WorkflowEngine, cls: unknown, factory?: WorkflowClassFactory): Promise<boolean>;
|
|
28
40
|
/**
|
|
29
41
|
* Pick the module extension a directory scan should import, from the `readdir` entries already in
|
|
30
42
|
* hand — NOT from this library's own compiled file. A consuming app resolves this library as built
|
|
@@ -60,7 +72,7 @@ export declare function discoverWorkflows(dir: string): Promise<DiscoveredWorkfl
|
|
|
60
72
|
* engine. Returns the registered metadata so the caller can log what was wired.
|
|
61
73
|
* Best-effort over a missing directory.
|
|
62
74
|
*/
|
|
63
|
-
export declare function registerWorkflowsFromDir(engine: WorkflowEngine, dir: string): Promise<WorkflowMeta[]>;
|
|
75
|
+
export declare function registerWorkflowsFromDir(engine: WorkflowEngine, dir: string, factory?: WorkflowClassFactory): Promise<WorkflowMeta[]>;
|
|
64
76
|
/**
|
|
65
77
|
* The shape of the build-time barrel generated by the Assembler `init` hook
|
|
66
78
|
* (`@adonis-agora/durable/hooks/workflows`): a map of stable key → lazy module import, e.g.
|
|
@@ -77,5 +89,5 @@ export type WorkflowsBarrel = Record<string, () => Promise<Record<string, unknow
|
|
|
77
89
|
* re-exported from several modules is safe. Returns the registered metadata so the caller can log
|
|
78
90
|
* what was wired.
|
|
79
91
|
*/
|
|
80
|
-
export declare function registerWorkflowsFromBarrel(engine: WorkflowEngine, barrel: WorkflowsBarrel): Promise<WorkflowMeta[]>;
|
|
92
|
+
export declare function registerWorkflowsFromBarrel(engine: WorkflowEngine, barrel: WorkflowsBarrel, factory?: WorkflowClassFactory): Promise<WorkflowMeta[]>;
|
|
81
93
|
//# sourceMappingURL=workflow-discovery.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-discovery.d.ts","sourceRoot":"","sources":["../../src/workflow-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,KAAK,YAAY,EAAmC,MAAM,mBAAmB,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU;IAC9C,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC/D,CAAC;AAEF;2CAC2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,uBAAuB,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,
|
|
1
|
+
{"version":3,"file":"workflow-discovery.d.ts","sourceRoot":"","sources":["../../src/workflow-discovery.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,KAAK,YAAY,EAAmC,MAAM,mBAAmB,CAAC;AAEvF;;;;;;;GAOG;AACH,MAAM,MAAM,uBAAuB,GAAG,UAAU;IAC9C,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC/D,CAAC;AAEF;2CAC2C;AAC3C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;IACnB,GAAG,EAAE,uBAAuB,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,CACjC,IAAI,EAAE,uBAAuB,KAC1B,uBAAuB,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC,CAAC;AAQ1F;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,OAAO,EACZ,OAAO,GAAE,oBAA6C,GACrD,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,CAY9E;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAyBlF;AAED;;;;GAIG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,cAAc,EACtB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,YAAY,EAAE,CAAC,CAIzB;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;AAErF;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAC/C,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,eAAe,EACvB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,YAAY,EAAE,CAAC,CAezB"}
|