@dudousxd/nestjs-durable-dashboard 0.49.0 → 0.50.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.
Files changed (37) hide show
  1. package/dist/client/durable-client.d.ts +21 -1
  2. package/dist/client/durable-client.d.ts.map +1 -1
  3. package/dist/client/durable-client.js +13 -0
  4. package/dist/client/durable-client.js.map +1 -1
  5. package/dist/client/fan-pages.d.ts +8 -0
  6. package/dist/client/fan-pages.d.ts.map +1 -0
  7. package/dist/client/fan-pages.js +16 -0
  8. package/dist/client/fan-pages.js.map +1 -0
  9. package/dist/client/group-parallel-spans.d.ts +39 -4
  10. package/dist/client/group-parallel-spans.d.ts.map +1 -1
  11. package/dist/client/group-parallel-spans.js +65 -1
  12. package/dist/client/group-parallel-spans.js.map +1 -1
  13. package/dist/client/merge-live-events.d.ts +6 -1
  14. package/dist/client/merge-live-events.d.ts.map +1 -1
  15. package/dist/client/merge-live-events.js +15 -0
  16. package/dist/client/merge-live-events.js.map +1 -1
  17. package/dist/client/throttle.d.ts +11 -0
  18. package/dist/client/throttle.d.ts.map +1 -0
  19. package/dist/client/throttle.js +30 -0
  20. package/dist/client/throttle.js.map +1 -0
  21. package/dist/server/index.cjs +44 -4
  22. package/dist/server/index.cjs.map +1 -1
  23. package/dist/server/index.d.cts +11 -3
  24. package/dist/server/index.d.ts +11 -3
  25. package/dist/server/index.js +44 -4
  26. package/dist/server/index.js.map +1 -1
  27. package/dist/spa/assets/{bench-DH4bTOwJ.js → bench-bNSq4C-e.js} +1 -1
  28. package/dist/spa/assets/{index-DCWWFODc.js → index-CMQJ1rjL.js} +1 -1
  29. package/dist/spa/assets/index-CwX0J7uV.js +66 -0
  30. package/dist/spa/assets/index-DYEe8Ag-.css +1 -0
  31. package/dist/spa/assets/{preview-DeC52LPJ.js → preview-CehDLs8M.js} +1 -1
  32. package/dist/spa/bench.html +3 -3
  33. package/dist/spa/index.html +3 -3
  34. package/dist/spa/preview.html +3 -3
  35. package/package.json +2 -2
  36. package/dist/spa/assets/index-LBQc7d3p.css +0 -1
  37. package/dist/spa/assets/index-xUQjm-z_.js +0 -66
@@ -1,5 +1,5 @@
1
1
  import * as _dudousxd_nestjs_durable_core from '@dudousxd/nestjs-durable-core';
2
- import { RunGateway, StateStore, WorkflowEngine, ScheduleListQuery, ScheduleDescription, RunResult, RunQuery, RunListItem, RunFacetQuery, RunFacetRow, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, DurableTopology, GroupHealth, RunDetail, UpdateResult, EngineEvent, AttributeFilter } from '@dudousxd/nestjs-durable-core';
2
+ import { RunGateway, StateStore, WorkflowEngine, ScheduleListQuery, ScheduleDescription, RunResult, RunQuery, RunListItem, RunFacetQuery, RunFacetRow, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, DurableTopology, GroupHealth, RunDetailOptions, RunDetail, FanPageQuery, FanPage, UpdateResult, EngineEvent, AttributeFilter } from '@dudousxd/nestjs-durable-core';
3
3
  export { RunDetail } from '@dudousxd/nestjs-durable-core';
4
4
  import * as rxjs from 'rxjs';
5
5
  import { Observable } from 'rxjs';
@@ -164,7 +164,9 @@ declare class DashboardService {
164
164
  * gateway so it works on BOTH topologies: the control plane returns every group; a tenant proxies
165
165
  * to the operator, which scopes the result to the tenant's own `@<tenant>` groups. */
166
166
  workerHealth(): Promise<GroupHealth[]>;
167
- getRunDetail(runId: string): Promise<RunDetail | null>;
167
+ getRunDetail(runId: string, options?: RunDetailOptions): Promise<RunDetail | null>;
168
+ /** A page of one fan's members, or null when the run is unknown or the gateway can't page fans. */
169
+ getFanMembers(runId: string, group: string, query: FanPageQuery): Promise<FanPage | null>;
168
170
  /** Fix-and-replay a dead/failed run with a corrected input — a fresh linked run. Returns its id. */
169
171
  retryWithInput(runId: string, input: unknown): Promise<{
170
172
  runId: string;
@@ -314,7 +316,13 @@ declare class DurableApiController {
314
316
  triggerSchedule(id: string): Promise<_dudousxd_nestjs_durable_core.RunResult>;
315
317
  /** This deployment's durable role (control plane vs tenant) + tenant name — for the header badge. */
316
318
  topology(): _dudousxd_nestjs_durable_core.DurableTopology;
317
- run(id: string): Promise<_dudousxd_nestjs_durable_core.RunDetail>;
319
+ /**
320
+ * A run's detail. Fans wider than {@link FAN_INLINE_MAX} come back as one `FanSummary` each, their
321
+ * members paged by `runs/:id/fans/:group`; `?full=true` returns every checkpoint instead.
322
+ */
323
+ run(id: string, full?: string): Promise<_dudousxd_nestjs_durable_core.RunDetail>;
324
+ /** One page of a summarized fan's members, in seq order. */
325
+ fanMembers(id: string, group: string, offset?: string, limit?: string, failed?: string): Promise<_dudousxd_nestjs_durable_core.FanPage>;
318
326
  /** Server-Sent Events stream of a run's live lifecycle events — the dashboard tails it instead
319
327
  * of polling. Cross-pod when the transport has a control plane (see DashboardService.streamRun). */
320
328
  stream(id: string): rxjs.Observable<{
@@ -1,5 +1,5 @@
1
1
  import * as _dudousxd_nestjs_durable_core from '@dudousxd/nestjs-durable-core';
2
- import { RunGateway, StateStore, WorkflowEngine, ScheduleListQuery, ScheduleDescription, RunResult, RunQuery, RunListItem, RunFacetQuery, RunFacetRow, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, DurableTopology, GroupHealth, RunDetail, UpdateResult, EngineEvent, AttributeFilter } from '@dudousxd/nestjs-durable-core';
2
+ import { RunGateway, StateStore, WorkflowEngine, ScheduleListQuery, ScheduleDescription, RunResult, RunQuery, RunListItem, RunFacetQuery, RunFacetRow, RunValueAxis, RunValueFacetOptions, RunValueFacetRow, DurableTopology, GroupHealth, RunDetailOptions, RunDetail, FanPageQuery, FanPage, UpdateResult, EngineEvent, AttributeFilter } from '@dudousxd/nestjs-durable-core';
3
3
  export { RunDetail } from '@dudousxd/nestjs-durable-core';
4
4
  import * as rxjs from 'rxjs';
5
5
  import { Observable } from 'rxjs';
@@ -164,7 +164,9 @@ declare class DashboardService {
164
164
  * gateway so it works on BOTH topologies: the control plane returns every group; a tenant proxies
165
165
  * to the operator, which scopes the result to the tenant's own `@<tenant>` groups. */
166
166
  workerHealth(): Promise<GroupHealth[]>;
167
- getRunDetail(runId: string): Promise<RunDetail | null>;
167
+ getRunDetail(runId: string, options?: RunDetailOptions): Promise<RunDetail | null>;
168
+ /** A page of one fan's members, or null when the run is unknown or the gateway can't page fans. */
169
+ getFanMembers(runId: string, group: string, query: FanPageQuery): Promise<FanPage | null>;
168
170
  /** Fix-and-replay a dead/failed run with a corrected input — a fresh linked run. Returns its id. */
169
171
  retryWithInput(runId: string, input: unknown): Promise<{
170
172
  runId: string;
@@ -314,7 +316,13 @@ declare class DurableApiController {
314
316
  triggerSchedule(id: string): Promise<_dudousxd_nestjs_durable_core.RunResult>;
315
317
  /** This deployment's durable role (control plane vs tenant) + tenant name — for the header badge. */
316
318
  topology(): _dudousxd_nestjs_durable_core.DurableTopology;
317
- run(id: string): Promise<_dudousxd_nestjs_durable_core.RunDetail>;
319
+ /**
320
+ * A run's detail. Fans wider than {@link FAN_INLINE_MAX} come back as one `FanSummary` each, their
321
+ * members paged by `runs/:id/fans/:group`; `?full=true` returns every checkpoint instead.
322
+ */
323
+ run(id: string, full?: string): Promise<_dudousxd_nestjs_durable_core.RunDetail>;
324
+ /** One page of a summarized fan's members, in seq order. */
325
+ fanMembers(id: string, group: string, offset?: string, limit?: string, failed?: string): Promise<_dudousxd_nestjs_durable_core.FanPage>;
318
326
  /** Server-Sent Events stream of a run's live lifecycle events — the dashboard tails it instead
319
327
  * of polling. Cross-pod when the transport has a control plane (see DashboardService.streamRun). */
320
328
  stream(id: string): rxjs.Observable<{
@@ -155,8 +155,12 @@ var DashboardService = class {
155
155
  async workerHealth() {
156
156
  return this.gateway.workerHealth();
157
157
  }
158
- getRunDetail(runId) {
159
- return this.gateway.getRunDetail(runId);
158
+ getRunDetail(runId, options) {
159
+ return this.gateway.getRunDetail(runId, options);
160
+ }
161
+ /** A page of one fan's members, or null when the run is unknown or the gateway can't page fans. */
162
+ async getFanMembers(runId, group, query) {
163
+ return await this.gateway.getFanMembers?.(runId, group, query) ?? null;
160
164
  }
161
165
  /** Fix-and-replay a dead/failed run with a corrected input — a fresh linked run. Returns its id. */
162
166
  retryWithInput(runId, input) {
@@ -961,6 +965,7 @@ function _ts_param2(paramIndex, decorator) {
961
965
  };
962
966
  }
963
967
  __name(_ts_param2, "_ts_param");
968
+ var FAN_INLINE_MAX = 50;
964
969
  var DurableApiController = class {
965
970
  static {
966
971
  __name(this, "DurableApiController");
@@ -1059,11 +1064,27 @@ var DurableApiController = class {
1059
1064
  topology() {
1060
1065
  return this.dashboard.topology();
1061
1066
  }
1062
- async run(id) {
1063
- const detail = await this.dashboard.getRunDetail(id);
1067
+ /**
1068
+ * A run's detail. Fans wider than {@link FAN_INLINE_MAX} come back as one `FanSummary` each, their
1069
+ * members paged by `runs/:id/fans/:group`; `?full=true` returns every checkpoint instead.
1070
+ */
1071
+ async run(id, full) {
1072
+ const detail = await this.dashboard.getRunDetail(id, full === "true" ? void 0 : {
1073
+ summarizeFansOver: FAN_INLINE_MAX
1074
+ });
1064
1075
  if (!detail) throw new NotFoundException(`run ${id} not found`);
1065
1076
  return detail;
1066
1077
  }
1078
+ /** One page of a summarized fan's members, in seq order. */
1079
+ async fanMembers(id, group, offset, limit, failed) {
1080
+ const page2 = await this.dashboard.getFanMembers(id, group, {
1081
+ offset: offset === void 0 ? void 0 : Number(offset),
1082
+ limit: limit === void 0 ? void 0 : Number(limit),
1083
+ failedOnly: failed === "true"
1084
+ });
1085
+ if (!page2) throw new NotFoundException(`fan ${group} of run ${id} not found`);
1086
+ return page2;
1087
+ }
1067
1088
  /** Server-Sent Events stream of a run's live lifecycle events — the dashboard tails it instead
1068
1089
  * of polling. Cross-pod when the transport has a control plane (see DashboardService.streamRun). */
1069
1090
  stream(id) {
@@ -1218,12 +1239,31 @@ _ts_decorate4([
1218
1239
  _ts_decorate4([
1219
1240
  Get("runs/:id"),
1220
1241
  _ts_param2(0, Param("id")),
1242
+ _ts_param2(1, Query("full")),
1221
1243
  _ts_metadata4("design:type", Function),
1222
1244
  _ts_metadata4("design:paramtypes", [
1245
+ String,
1223
1246
  String
1224
1247
  ]),
1225
1248
  _ts_metadata4("design:returntype", Promise)
1226
1249
  ], DurableApiController.prototype, "run", null);
1250
+ _ts_decorate4([
1251
+ Get("runs/:id/fans/:group"),
1252
+ _ts_param2(0, Param("id")),
1253
+ _ts_param2(1, Param("group")),
1254
+ _ts_param2(2, Query("offset")),
1255
+ _ts_param2(3, Query("limit")),
1256
+ _ts_param2(4, Query("failed")),
1257
+ _ts_metadata4("design:type", Function),
1258
+ _ts_metadata4("design:paramtypes", [
1259
+ String,
1260
+ String,
1261
+ String,
1262
+ String,
1263
+ String
1264
+ ]),
1265
+ _ts_metadata4("design:returntype", Promise)
1266
+ ], DurableApiController.prototype, "fanMembers", null);
1227
1267
  _ts_decorate4([
1228
1268
  Sse("runs/:id/stream"),
1229
1269
  _ts_param2(0, Param("id")),