@dudousxd/nestjs-durable-dashboard 0.40.0 → 0.42.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/client/durable-client.d.ts +50 -2
- package/dist/client/durable-client.d.ts.map +1 -1
- package/dist/client/durable-client.js +52 -3
- package/dist/client/durable-client.js.map +1 -1
- package/dist/client/run-origin.d.ts +114 -0
- package/dist/client/run-origin.d.ts.map +1 -0
- package/dist/client/run-origin.js +157 -0
- package/dist/client/run-origin.js.map +1 -0
- package/dist/client/summarize-health.d.ts +11 -0
- package/dist/client/summarize-health.d.ts.map +1 -1
- package/dist/client/summarize-health.js +24 -0
- package/dist/client/summarize-health.js.map +1 -1
- package/dist/server/index.cjs +131 -12
- package/dist/server/index.cjs.map +1 -1
- package/dist/server/index.d.cts +47 -7
- package/dist/server/index.d.ts +47 -7
- package/dist/server/index.js +131 -12
- package/dist/server/index.js.map +1 -1
- package/dist/spa/assets/bench-nv8gmn-b.js +2 -0
- package/dist/spa/assets/{index-cv874oA3.js → index-BcYcSsB3.js} +1 -1
- package/dist/spa/assets/index-CNsLLxcS.css +1 -0
- package/dist/spa/assets/index-CTKdGcMe.js +80 -0
- package/dist/spa/assets/preview-GbzTsAP8.js +1 -0
- package/dist/spa/bench.html +14 -0
- package/dist/spa/index.html +3 -3
- package/dist/spa/preview.html +3 -3
- package/package.json +3 -2
- package/dist/spa/assets/index-BEIPxEnJ.js +0 -80
- package/dist/spa/assets/index-Ck6guUlr.css +0 -1
- package/dist/spa/assets/preview-ae5pIZMH.js +0 -1
|
@@ -67,6 +67,10 @@ export interface RunDisplayState {
|
|
|
67
67
|
status: RunDisplayStatus;
|
|
68
68
|
detail?: string;
|
|
69
69
|
}
|
|
70
|
+
/** Statuses that keep a singleton slot / queue behind it (mirrors the engine's `admit()` scan). Also
|
|
71
|
+
* the query the console sends to fetch a suspended run's in-flight SIBLINGS, so the set it is placed
|
|
72
|
+
* against is the same one the engine admits against. */
|
|
73
|
+
export declare const SINGLETON_INFLIGHT_STATUSES: RunStatus[];
|
|
70
74
|
/** Strip the route-by-handler `@partition` suffix so a run's `workflow` matches its `GroupHealth.group`
|
|
71
75
|
* base token (queues are `<name>@<tenant>` on tenants, bare `<name>` on the control plane). */
|
|
72
76
|
export declare function baseGroup(group: string): string;
|
|
@@ -172,8 +176,51 @@ declare global {
|
|
|
172
176
|
__DURABLE_API__?: string;
|
|
173
177
|
}
|
|
174
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* The later-added run facets, kept in one options bag rather than growing `runs()`'s positional tail
|
|
181
|
+
* to five arguments. Both are OMITTED by default, and that default is load-bearing: the console has
|
|
182
|
+
* always listed every tenant's runs (core: "read paths are NOT namespace-scoped"), so scoping is
|
|
183
|
+
* something an operator opts into, never something the client imposes.
|
|
184
|
+
*/
|
|
185
|
+
export interface RunFilterOptions {
|
|
186
|
+
/** Tenant / worker-pool partition — `WorkflowRun.namespace`, exact match. Absent = all tenants. */
|
|
187
|
+
namespace?: string | undefined;
|
|
188
|
+
/**
|
|
189
|
+
* The package that declared the workflow — `WorkflowRun.origin`, exact match. Absent = all origins.
|
|
190
|
+
* `null` selects the UNATTRIBUTED runs instead (the server's `unattributed` param): a run with no
|
|
191
|
+
* origin matches no string value at all, so absence needs its own spelling. See `run-origin.ts`.
|
|
192
|
+
*/
|
|
193
|
+
origin?: string | null | undefined;
|
|
194
|
+
}
|
|
195
|
+
/** How much of the list to fetch. Absent bounds mean the whole listing — which on a busy control
|
|
196
|
+
* plane is megabytes and thousands of rows, so the console always sends a `limit`. */
|
|
197
|
+
export interface RunPageOptions {
|
|
198
|
+
limit?: number | undefined;
|
|
199
|
+
offset?: number | undefined;
|
|
200
|
+
/** Match ANY of these statuses (`status IN (...)`), for a caller that wants a set rather than the
|
|
201
|
+
* single `status` argument — e.g. the in-flight runs a singleton leader is chosen among. */
|
|
202
|
+
statuses?: RunStatus[] | undefined;
|
|
203
|
+
}
|
|
204
|
+
/** One `(status, origin)` count from `GET runs/facets` — mirrors core's `RunFacetRow`. `origin` is
|
|
205
|
+
* `null` for runs carrying none. */
|
|
206
|
+
export interface RunFacetRow {
|
|
207
|
+
status: RunStatus;
|
|
208
|
+
origin: string | null;
|
|
209
|
+
count: number;
|
|
210
|
+
}
|
|
175
211
|
export declare const durableClient: {
|
|
176
|
-
|
|
212
|
+
/**
|
|
213
|
+
* A page of the run list. The server returns LIST ROWS: `input`, `output` and `error` are omitted
|
|
214
|
+
* (only the detail view renders them, and on a large deployment they are most of the bytes), which
|
|
215
|
+
* is why the three are optional on {@link WorkflowRun}.
|
|
216
|
+
*/
|
|
217
|
+
runs(status?: RunStatus, tag?: string, attr?: string[], opts?: RunFilterOptions & RunPageOptions): Promise<WorkflowRun[]>;
|
|
218
|
+
/**
|
|
219
|
+
* `(status, origin)` counts for the runs matching the same tag/tenant/attribute predicates as
|
|
220
|
+
* {@link runs} — the console's chips, counted over the WHOLE matching set rather than over the page
|
|
221
|
+
* it happens to be showing. `status`/`origin` are not sent: they are the axes being counted.
|
|
222
|
+
*/
|
|
223
|
+
facets(tag?: string, attr?: string[], namespace?: string): Promise<RunFacetRow[]>;
|
|
177
224
|
run(id: string): Promise<RunDetail>;
|
|
178
225
|
/** Per-group worker health (queue backlog + live worker heartbeats) for the Workers panel. */
|
|
179
226
|
workers(): Promise<GroupHealth[]>;
|
|
@@ -185,7 +232,7 @@ export declare const durableClient: {
|
|
|
185
232
|
runId: string;
|
|
186
233
|
}>;
|
|
187
234
|
/** Bulk retry/cancel every run matching a filter. Returns how many matched + were acted on. */
|
|
188
|
-
bulk(action: "retry" | "cancel", filter: {
|
|
235
|
+
bulk(action: "retry" | "cancel", filter: RunFilterOptions & {
|
|
189
236
|
status?: RunStatus | undefined;
|
|
190
237
|
tag?: string | undefined;
|
|
191
238
|
attr?: string[] | undefined;
|
|
@@ -211,5 +258,6 @@ export declare const durableClient: {
|
|
|
211
258
|
streamRun(id: string, onEvent: (event: EngineEvent) => void): () => void;
|
|
212
259
|
};
|
|
213
260
|
export { type SubProcess, groupSubProcesses } from './group-subprocesses.js';
|
|
261
|
+
export { ALL_ORIGINS, type EmptyRunsNotice, type OriginFacet, type OriginFilter, UNKNOWN_ORIGIN, UNKNOWN_ORIGIN_TITLE, emptyRunsNotice, filterByOrigin, isUnknownOrigin, knownOrigin, matchesOrigin, originFacets, originFilterKey, originLabel, sameOriginFilter, unknownOriginCount, } from './run-origin.js';
|
|
214
262
|
export { type CompensationSummary, compensationDisplayName, compensationSummary, splitCompensations, } from './split-compensations.js';
|
|
215
263
|
//# sourceMappingURL=durable-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-client.d.ts","sourceRoot":"","sources":["../../src/client/durable-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,IAAI,eAAe,EAC9B,SAAS,IAAI,aAAa,EAC1B,UAAU,IAAI,cAAc,EAC5B,cAAc,IAAI,kBAAkB,EACpC,SAAS,IAAI,aAAa,EAC1B,QAAQ,IAAI,YAAY,EACxB,SAAS,EACT,SAAS,EACV,MAAM,+BAA+B,CAAC;AAUvC,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,EAClB,KAAK,kBAAkB,GACxB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC;AACtC,MAAM,MAAM,QAAQ,GAAG,YAAY,CAAC;AAEpC;qGACqG;AACrG,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,eAAe,GAAG,QAAQ,CAAC;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;+EAC+E;AAC/E,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAExC,uGAAuG;AACvG,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC;AAEtC,MAAM,MAAM,cAAc,GAAG,IAAI,CAC/B,SAAS,CAAC,kBAAkB,CAAC,EAC7B,QAAQ,GAAG,YAAY,GAAG,OAAO,CAClC,GAAG;IACF;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;6DAEyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG;IAC9E;;;;;OAKG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,4EAA4E;IAC5E,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,CAAC;AAEF,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,WAAW,CAAC;IACjB,QAAQ,EAAE,cAAc,EAAE,CAAC;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;4EAE4E;AAC5E,eAAO,MAAM,gBAAgB,QAAiB,CAAC;AAE/C;;4FAE4F;AAC5F,wBAAgB,cAAc,CAAC,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAMzE;AAED;;;2GAG2G;AAC3G,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE5F;;6FAE6F;AAC7F,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"durable-client.d.ts","sourceRoot":"","sources":["../../src/client/durable-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,8 +21,11 @@ export function isStalePending(cp, nowMs) {
|
|
|
21
21
|
: new Date(cp.startedAt).getTime();
|
|
22
22
|
return nowMs - dispatchedAt > STALE_PENDING_MS;
|
|
23
23
|
}
|
|
24
|
-
/** Statuses that keep a singleton slot / queue behind it (mirrors the engine's `admit()` scan).
|
|
25
|
-
|
|
24
|
+
/** Statuses that keep a singleton slot / queue behind it (mirrors the engine's `admit()` scan). Also
|
|
25
|
+
* the query the console sends to fetch a suspended run's in-flight SIBLINGS, so the set it is placed
|
|
26
|
+
* against is the same one the engine admits against. */
|
|
27
|
+
export const SINGLETON_INFLIGHT_STATUSES = ['running', 'suspended', 'cancelling'];
|
|
28
|
+
const SINGLETON_INFLIGHT = new Set(SINGLETON_INFLIGHT_STATUSES);
|
|
26
29
|
/** Strip the route-by-handler `@partition` suffix so a run's `workflow` matches its `GroupHealth.group`
|
|
27
30
|
* base token (queues are `<name>@<tenant>` on tenants, bare `<name>` on the control plane). */
|
|
28
31
|
export function baseGroup(group) {
|
|
@@ -215,7 +218,12 @@ async function http(path, init) {
|
|
|
215
218
|
return (await res.json());
|
|
216
219
|
}
|
|
217
220
|
export const durableClient = {
|
|
218
|
-
|
|
221
|
+
/**
|
|
222
|
+
* A page of the run list. The server returns LIST ROWS: `input`, `output` and `error` are omitted
|
|
223
|
+
* (only the detail view renders them, and on a large deployment they are most of the bytes), which
|
|
224
|
+
* is why the three are optional on {@link WorkflowRun}.
|
|
225
|
+
*/
|
|
226
|
+
runs(status, tag, attr, opts) {
|
|
219
227
|
const q = new URLSearchParams();
|
|
220
228
|
if (status)
|
|
221
229
|
q.set('status', status);
|
|
@@ -224,9 +232,39 @@ export const durableClient = {
|
|
|
224
232
|
// Each `attr` is a `key:op:value` predicate; repeated params are ANDed server-side.
|
|
225
233
|
for (const a of attr ?? [])
|
|
226
234
|
q.append('attr', a);
|
|
235
|
+
if (opts?.namespace)
|
|
236
|
+
q.set('namespace', opts.namespace);
|
|
237
|
+
// `null` is the unattributed bucket, which has its own param — see `RunFilterOptions.origin`.
|
|
238
|
+
if (opts?.origin === null)
|
|
239
|
+
q.set('unattributed', 'true');
|
|
240
|
+
else if (opts?.origin)
|
|
241
|
+
q.set('origin', opts.origin);
|
|
242
|
+
// Repeated `status` params are ORed server-side into `RunQuery.statuses`.
|
|
243
|
+
for (const st of opts?.statuses ?? [])
|
|
244
|
+
q.append('status', st);
|
|
245
|
+
if (opts?.limit !== undefined)
|
|
246
|
+
q.set('limit', String(opts.limit));
|
|
247
|
+
if (opts?.offset !== undefined)
|
|
248
|
+
q.set('offset', String(opts.offset));
|
|
227
249
|
const qs = q.toString();
|
|
228
250
|
return http(qs ? `/runs?${qs}` : '/runs');
|
|
229
251
|
},
|
|
252
|
+
/**
|
|
253
|
+
* `(status, origin)` counts for the runs matching the same tag/tenant/attribute predicates as
|
|
254
|
+
* {@link runs} — the console's chips, counted over the WHOLE matching set rather than over the page
|
|
255
|
+
* it happens to be showing. `status`/`origin` are not sent: they are the axes being counted.
|
|
256
|
+
*/
|
|
257
|
+
facets(tag, attr, namespace) {
|
|
258
|
+
const q = new URLSearchParams();
|
|
259
|
+
if (tag)
|
|
260
|
+
q.set('tag', tag);
|
|
261
|
+
for (const a of attr ?? [])
|
|
262
|
+
q.append('attr', a);
|
|
263
|
+
if (namespace)
|
|
264
|
+
q.set('namespace', namespace);
|
|
265
|
+
const qs = q.toString();
|
|
266
|
+
return http(qs ? `/runs/facets?${qs}` : '/runs/facets');
|
|
267
|
+
},
|
|
230
268
|
run(id) {
|
|
231
269
|
return http(`/runs/${encodeURIComponent(id)}`);
|
|
232
270
|
},
|
|
@@ -258,6 +296,14 @@ export const durableClient = {
|
|
|
258
296
|
q.set('tag', filter.tag);
|
|
259
297
|
for (const a of filter.attr ?? [])
|
|
260
298
|
q.append('attr', a);
|
|
299
|
+
// Every facet the operator can see MUST be sent: a bulk retry/cancel that is scoped more widely
|
|
300
|
+
// than the list it was launched from would act on runs the operator never looked at.
|
|
301
|
+
if (filter.namespace)
|
|
302
|
+
q.set('namespace', filter.namespace);
|
|
303
|
+
if (filter.origin === null)
|
|
304
|
+
q.set('unattributed', 'true');
|
|
305
|
+
else if (filter.origin)
|
|
306
|
+
q.set('origin', filter.origin);
|
|
261
307
|
const qs = q.toString();
|
|
262
308
|
return http(`/bulk/${action}${qs ? `?${qs}` : ''}`, {
|
|
263
309
|
method: 'POST',
|
|
@@ -296,6 +342,9 @@ export const durableClient = {
|
|
|
296
342
|
// pipeline-runs view) reconstruct sub-processes from a step's events the exact same way the
|
|
297
343
|
// dashboard does — by run identity (`subId`/`name`), treating `phase` events as a sub's lifecycle.
|
|
298
344
|
export { groupSubProcesses } from './group-subprocesses.js';
|
|
345
|
+
// Re-export the origin facet so external consumers (e.g. flip's embedded pipeline-runs view) spell
|
|
346
|
+
// an unattributed run the exact same way this console does — `unknown`, never "app" and never blank.
|
|
347
|
+
export { ALL_ORIGINS, UNKNOWN_ORIGIN, UNKNOWN_ORIGIN_TITLE, emptyRunsNotice, filterByOrigin, isUnknownOrigin, knownOrigin, matchesOrigin, originFacets, originFilterKey, originLabel, sameOriginFilter, unknownOriginCount, } from './run-origin.js';
|
|
299
348
|
// Re-export the canonical saga-compensation split so external consumers (e.g. flip) separate a
|
|
300
349
|
// run's body from its undo checkpoints the exact same way the dashboard does — by `seq < 0`.
|
|
301
350
|
export { compensationDisplayName, compensationSummary, splitCompensations, } from './split-compensations.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-client.js","sourceRoot":"","sources":["../../src/client/durable-client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"durable-client.js","sourceRoot":"","sources":["../../src/client/durable-client.ts"],"names":[],"mappings":"AAWA,+FAA+F;AAC/F,+FAA+F;AAC/F,iGAAiG;AACjG,oGAAoG;AACpG,qGAAqG;AAErG,gGAAgG;AAChG,8EAA8E;AAC9E,OAAO,EACL,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,EACjB,yBAAyB,EACzB,kBAAkB,GAEnB,MAAM,sBAAsB,CAAC;AA2D9B;;4EAE4E;AAC5E,MAAM,CAAC,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAEzD;;4FAE4F;AAC5F,MAAM,UAAU,cAAc,CAAC,EAAkB,EAAE,KAAa;IAC9D,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAClE,MAAM,YAAY,GAAG,EAAE,CAAC,UAAU;QAChC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE;QACnC,CAAC,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK,GAAG,YAAY,GAAG,gBAAgB,CAAC;AACjD,CAAC;AAgBD;;yDAEyD;AACzD,MAAM,CAAC,MAAM,2BAA2B,GAAgB,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AAC/F,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAY,2BAA2B,CAAC,CAAC;AAE3E;gGACgG;AAChG,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChD,CAAC;AAED;;;;;;;0GAO0G;AAC1G,SAAS,cAAc,CAAC,KAAa,EAAE,MAA8B;IACnE,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9B,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,OAAO,UAAU,IAAI,CAAC,SAAS,CAAC;AAClC,CAAC;AAED;2GAC2G;AAC3G,SAAS,WAAW,CAAC,KAAa;IAChC,IAAI,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,WAAW,KAAK,EAAE,CAAC;IACvD,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;IAC/E,OAAO,UAAU,KAAK,EAAE,CAAC;AAC3B,CAAC;AAED;;sFAEsF;AACtF,MAAM,UAAU,eAAe,CAC7B,GAAgB,EAChB,IAA4B;IAE5B,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,QAAQ,GAAG,IAAI;SAClB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;SACxE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtF,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC;AACrB,CAAC;AAED,qGAAqG;AACrG,SAAS,aAAa,CAAC,OAAmB;IACxC,OAAO,GAAG,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;AACzC,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc,CAC5B,GAAgB,EAChB,GAIC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;QAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvD,CAAC;QACD,mGAAmG;QACnG,oGAAoG;QACpG,mGAAmG;QACnG,mDAAmD;QACnD,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QACvD,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC;QACnC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;IAChF,CAAC;IAED,+FAA+F;IAC/F,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IAC5F,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAChG,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO;YAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAC5D,gGAAgG;QAChG,mGAAmG;QACnG,IAAI,OAAO,CAAC,WAAW,IAAI,cAAc,CAAC,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACzE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAC/B,CAAC;IAED,qGAAqG;IACrG,IAAI,GAAG,CAAC,OAAO;QAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;IAEnF,mGAAmG;IACnG,oGAAoG;IACpG,kGAAkG;IAClG,mGAAmG;IACnG,kGAAkG;IAClG,IAAI,cAAc,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC;QAC1C,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;IACvD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAgB,EAAE,QAA2B;IAC5E,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAClD,uFAAuF;IACvF,IAAI,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;QAAE,OAAO,SAAS,CAAC;IAC9F,IAAI,GAAG,CAAC,MAAM,IAAI,IAAI;QAAE,OAAO,UAAU,CAAC,CAAC,4BAA4B;IACvE,IAAI,QAAQ;QAAE,OAAO,UAAU,CAAC,CAAC,kEAAkE;IACnG,OAAO,SAAS,CAAC,CAAC,oFAAoF;AACxG,CAAC;AAuFD;;sFAEsF;AACtF,SAAS,MAAM;IACb,OAAO,CAAC,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,gBAAgB,CAAC,IAAI,UAAU,CAAC;AAClF,CAAC;AAED,SAAS,OAAO;IACd,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,MAAM,CAAC,eAAe;QAAE,OAAO,MAAM,CAAC,eAAe,CAAC;IAC3F,OAAO,GAAG,MAAM,EAAE,MAAM,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,aAAa,CAAC,GAAa;IACxC,IAAI,CAAC;QACH,MAAM,IAAI,GAAY,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACvC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACrF,MAAM,IAAI,GAAI,IAA2B,CAAC,IAAI,CAAC;QAC/C,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QACtF,MAAM,KAAK,GAAI,IAA4B,CAAC,KAAK,CAAC;QAClD,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACzB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;YACzD,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,qBAAqB,CAAC,KAAoC;IACjE,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO;IAC1C,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC;IACtB,IAAI,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACvF,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,GAAG,IAAI,mBAAmB,QAAQ,EAAE,CAAC;QAC5D,OAAO;IACT,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,IAAI,CAAI,IAAY,EAAE,IAAkB;IACrD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,EAAE,IAAI,CAAC,CAAC;IAChD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,qBAAqB,CAAC,MAAM,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC;QAChD,sFAAsF;QACtF,oFAAoF;QACpF,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAM,CAAC;AACjC,CAAC;AAqCD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B;;;;OAIG;IACH,IAAI,CACF,MAAkB,EAClB,GAAY,EACZ,IAAe,EACf,IAAwC;QAExC,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACpC,IAAI,GAAG;YAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3B,oFAAoF;QACpF,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;YAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,IAAI,EAAE,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxD,8FAA8F;QAC9F,IAAI,IAAI,EAAE,MAAM,KAAK,IAAI;YAAE,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;aACpD,IAAI,IAAI,EAAE,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,0EAA0E;QAC1E,KAAK,MAAM,EAAE,IAAI,IAAI,EAAE,QAAQ,IAAI,EAAE;YAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC9D,IAAI,IAAI,EAAE,KAAK,KAAK,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAClE,IAAI,IAAI,EAAE,MAAM,KAAK,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACrE,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAgB,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC3D,CAAC;IACD;;;;OAIG;IACH,MAAM,CAAC,GAAY,EAAE,IAAe,EAAE,SAAkB;QACtD,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,GAAG;YAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC3B,KAAK,MAAM,CAAC,IAAI,IAAI,IAAI,EAAE;YAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChD,IAAI,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;QAC7C,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAgB,EAAE,CAAC,CAAC,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;IACzE,CAAC;IACD,GAAG,CAAC,EAAU;QACZ,OAAO,IAAI,CAAY,SAAS,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,8FAA8F;IAC9F,OAAO;QACL,OAAO,IAAI,CAAgB,UAAU,CAAC,CAAC;IACzC,CAAC;IACD,qGAAqG;IACrG,QAAQ;QACN,OAAO,IAAI,CAAkB,WAAW,CAAC,CAAC;IAC5C,CAAC;IACD,KAAK,CAAC,EAAU;QACd,OAAO,IAAI,CAAc,SAAS,kBAAkB,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxF,CAAC;IACD,iGAAiG;IACjG,cAAc,CAAC,EAAU,EAAE,KAAc;QACvC,OAAO,IAAI,CAAoB,SAAS,kBAAkB,CAAC,EAAE,CAAC,mBAAmB,EAAE;YACjF,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC;SAChC,CAAC,CAAC;IACL,CAAC;IACD,+FAA+F;IAC/F,IAAI,CACF,MAA0B,EAC1B,MAIC;QAED,MAAM,CAAC,GAAG,IAAI,eAAe,EAAE,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,MAAM,CAAC,GAAG;YAAE,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE;YAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvD,gGAAgG;QAChG,qFAAqF;QACrF,IAAI,MAAM,CAAC,SAAS;YAAE,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI;YAAE,CAAC,CAAC,GAAG,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;aACrD,IAAI,MAAM,CAAC,MAAM;YAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QACvD,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,CAAuC,SAAS,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE;YACxF,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IACD,MAAM,CAAC,EAAU,EAAE,IAA+B;QAChD,MAAM,EAAE,GAAG,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAc,SAAS,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,QAAQ,CAAC,EAAU;QACjB,OAAO,IAAI,CAAc,SAAS,kBAAkB,CAAC,EAAE,CAAC,WAAW,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC3F,CAAC;IACD;qGACiG;IACjG,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CACT,SAAS,kBAAkB,CAAC,EAAE,CAAC,aAAa,EAC5C,EAAE,MAAM,EAAE,MAAM,EAAE,CACnB,CAAC;IACJ,CAAC;IACD;;;OAGG;IACH,SAAS,CAAC,EAAU,EAAE,OAAqC;QACzD,MAAM,MAAM,GAAG,IAAI,WAAW,CAAC,GAAG,OAAO,EAAE,SAAS,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACrF,MAAM,CAAC,SAAS,GAAG,CAAC,GAAG,EAAE,EAAE;YACzB,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAgB,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC,CAAC;QACF,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;CACF,CAAC;AAEF,0FAA0F;AAC1F,4FAA4F;AAC5F,mGAAmG;AACnG,OAAO,EAAmB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7E,mGAAmG;AACnG,qGAAqG;AACrG,OAAO,EACL,WAAW,EAIX,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,eAAe,EACf,WAAW,EACX,aAAa,EACb,YAAY,EACZ,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAEzB,+FAA+F;AAC/F,6FAA6F;AAC7F,OAAO,EAEL,uBAAuB,EACvB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { WorkflowRun } from './durable-client.js';
|
|
2
|
+
/**
|
|
3
|
+
* Which package's code produced a run — the `WorkflowRun.origin` axis, as the facet an operator
|
|
4
|
+
* picks in the console.
|
|
5
|
+
*
|
|
6
|
+
* Three cases, and the third is why this is a union instead of a plain `string | undefined`:
|
|
7
|
+
*
|
|
8
|
+
* - `all` — the DEFAULT. Every origin, attributed or not. Core's `RunQuery.origin` docblock is
|
|
9
|
+
* explicit that a facet built on it must keep this option, because an exact-match origin filter
|
|
10
|
+
* hides every unattributed run.
|
|
11
|
+
* - `origin` — one concrete package (`@dudousxd/nestjs-catalog-pipeline`).
|
|
12
|
+
* - `unknown` — runs with NO recorded origin. `RunQuery.origin` is an exact-match string and so
|
|
13
|
+
* cannot express "absent", which is exactly why this case is applied here, over the run list the
|
|
14
|
+
* console already holds, instead of being pushed down to the store.
|
|
15
|
+
*/
|
|
16
|
+
export type OriginFilter = {
|
|
17
|
+
kind: 'all';
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'unknown';
|
|
20
|
+
} | {
|
|
21
|
+
kind: 'origin';
|
|
22
|
+
origin: string;
|
|
23
|
+
};
|
|
24
|
+
/** The default facet: every origin, including runs that carry none. */
|
|
25
|
+
export declare const ALL_ORIGINS: OriginFilter;
|
|
26
|
+
/** How an absent origin is spelled in the UI. Never "app", never blank — see {@link originLabel}. */
|
|
27
|
+
export declare const UNKNOWN_ORIGIN = "unknown";
|
|
28
|
+
/**
|
|
29
|
+
* The run's origin if it has a usable one, else `undefined` — the single place "unknown" is decided.
|
|
30
|
+
*
|
|
31
|
+
* `undefined` is the shape core documents (a run created before the field existed, a registration
|
|
32
|
+
* path that carries no origin, or a package that could not be resolved with confidence); a blank or
|
|
33
|
+
* whitespace-only string folds in here too, because a store column that defaults to `''` instead of
|
|
34
|
+
* NULL would otherwise read as a real package whose name is nothing.
|
|
35
|
+
*/
|
|
36
|
+
export declare function knownOrigin(origin: string | undefined): string | undefined;
|
|
37
|
+
/** Whether a run carries no usable origin — UNKNOWN. See {@link knownOrigin}. */
|
|
38
|
+
export declare function isUnknownOrigin(origin: string | undefined): boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Short display label for an origin: the package name without its npm scope
|
|
41
|
+
* (`@dudousxd/nestjs-catalog-pipeline` → `nestjs-catalog-pipeline`), so a sidebar chip is readable at
|
|
42
|
+
* 10px. Every call site pairs it with the FULL string as a `title`, so nothing is lost. An absent
|
|
43
|
+
* origin renders as {@link UNKNOWN_ORIGIN} — an operator must be able to see that a run is
|
|
44
|
+
* unattributed, and folding it into a real package name would be a lie.
|
|
45
|
+
*/
|
|
46
|
+
export declare function originLabel(origin: string | undefined): string;
|
|
47
|
+
/** Facet equality — the selected chip is found by value, not by identity. */
|
|
48
|
+
export declare function sameOriginFilter(a: OriginFilter, b: OriginFilter): boolean;
|
|
49
|
+
/** A stable React key / test handle for a facet (`origin:@scope/pkg`, `all`, `unknown`). */
|
|
50
|
+
export declare function originFilterKey(filter: OriginFilter): string;
|
|
51
|
+
/** Does this run belong to the selected facet? `all` matches everything, including unattributed runs. */
|
|
52
|
+
export declare function matchesOrigin(run: Pick<WorkflowRun, 'origin'>, filter: OriginFilter): boolean;
|
|
53
|
+
/** The runs in the selected facet, in their existing order. */
|
|
54
|
+
export declare function filterByOrigin<T extends Pick<WorkflowRun, 'origin'>>(runs: readonly T[], filter: OriginFilter): T[];
|
|
55
|
+
/** One selectable origin chip: what to show, what it means, and how many runs it covers. */
|
|
56
|
+
export interface OriginFacet {
|
|
57
|
+
filter: OriginFilter;
|
|
58
|
+
/** Short chip text — the scope-less package name, `all`, or `unknown`. */
|
|
59
|
+
label: string;
|
|
60
|
+
/** Full text for the chip's `title`: the unabbreviated package, or what unknown actually means. */
|
|
61
|
+
title: string;
|
|
62
|
+
count: number;
|
|
63
|
+
}
|
|
64
|
+
/** What the `unknown` chip's tooltip says — the one place the absent case is explained in prose. */
|
|
65
|
+
export declare const UNKNOWN_ORIGIN_TITLE = "Runs with no recorded origin: started before origins were stamped, or registered through a path whose declaring package could not be resolved. Not attributed to any library.";
|
|
66
|
+
/**
|
|
67
|
+
* The origin chips for a run list: `all` first, then every attributed package (alphabetical), then
|
|
68
|
+
* `unknown` LAST and only when there is something in it.
|
|
69
|
+
*
|
|
70
|
+
* Built from `(origin, count)` pairs rather than from runs, because the console's list is a PAGE:
|
|
71
|
+
* counting the rows it happens to hold would make every chip report the page size instead of the
|
|
72
|
+
* deployment. The pairs come from the server's `runs/facets` aggregate, so the unattributed bucket
|
|
73
|
+
* stays visible and countable while a package is selected — the property this facet exists for.
|
|
74
|
+
*/
|
|
75
|
+
export declare function originFacetsFromCounts(counts: readonly {
|
|
76
|
+
origin: string | null | undefined;
|
|
77
|
+
count: number;
|
|
78
|
+
}[]): OriginFacet[];
|
|
79
|
+
/** {@link originFacetsFromCounts} over a run list — one count per run. For callers that hold the
|
|
80
|
+
* whole set (tests, an unpaginated embedder), not for the console's paged list. */
|
|
81
|
+
export declare function originFacets(runs: readonly Pick<WorkflowRun, 'origin'>[]): OriginFacet[];
|
|
82
|
+
/** How many of these runs carry no origin — the size of the unattributed bucket. */
|
|
83
|
+
export declare function unknownOriginCount(runs: readonly Pick<WorkflowRun, 'origin'>[]): number;
|
|
84
|
+
/** The unattributed bucket's size straight from the server's facet counts — the paged console's
|
|
85
|
+
* {@link unknownOriginCount}, which cannot count runs it never fetched. */
|
|
86
|
+
export declare function unknownCountFromFacets(counts: readonly {
|
|
87
|
+
origin: string | null | undefined;
|
|
88
|
+
count: number;
|
|
89
|
+
}[]): number;
|
|
90
|
+
/** What an empty run list should say, and whether to offer a jump to the unattributed runs. */
|
|
91
|
+
export interface EmptyRunsNotice {
|
|
92
|
+
message: string;
|
|
93
|
+
/** When set, the list offers "show unclassified" — this many runs carry no origin. */
|
|
94
|
+
unclassified?: number;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Why the list is empty, in the operator's terms.
|
|
98
|
+
*
|
|
99
|
+
* The case this exists for: an operator filters by a package, sees nothing, and cannot tell "no run
|
|
100
|
+
* matched" from "these runs are unattributable, and an exact-match origin filter can never match
|
|
101
|
+
* them". So a package filter that comes back empty NAMES the unattributed bucket and offers to open
|
|
102
|
+
* it, and an empty `unknown` facet says in words that everything here is attributed rather than
|
|
103
|
+
* looking like a filter that swallowed the runs.
|
|
104
|
+
*
|
|
105
|
+
* `unknownCount` is counted over the runs BEFORE the origin facet is applied — otherwise it would be
|
|
106
|
+
* zero in exactly the case it exists for.
|
|
107
|
+
*/
|
|
108
|
+
export declare function emptyRunsNotice(opts: {
|
|
109
|
+
/** Whether any filter at all (status, tag, attrs, namespace, origin) is narrowing the list. */
|
|
110
|
+
anyFilter: boolean;
|
|
111
|
+
origin: OriginFilter;
|
|
112
|
+
unknownCount: number;
|
|
113
|
+
}): EmptyRunsNotice;
|
|
114
|
+
//# sourceMappingURL=run-origin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-origin.d.ts","sourceRoot":"","sources":["../../src/client/run-origin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,YAAY,GACpB;IAAE,IAAI,EAAE,KAAK,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,uEAAuE;AACvE,eAAO,MAAM,WAAW,EAAE,YAA8B,CAAC;AAEzD,qGAAqG;AACrG,eAAO,MAAM,cAAc,YAAY,CAAC;AAExC;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG1E;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEnE;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAO9D;AAED,6EAA6E;AAC7E,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,OAAO,CAI1E;AAED,4FAA4F;AAC5F,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAE5D;AAED,yGAAyG;AACzG,wBAAgB,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAK7F;AAED,+DAA+D;AAC/D,wBAAgB,cAAc,CAAC,CAAC,SAAS,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAClE,IAAI,EAAE,SAAS,CAAC,EAAE,EAClB,MAAM,EAAE,YAAY,GACnB,CAAC,EAAE,CAEL;AAED,4FAA4F;AAC5F,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,YAAY,CAAC;IACrB,0EAA0E;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,oGAAoG;AACpG,eAAO,MAAM,oBAAoB,kLACgJ,CAAC;AAElL;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GACtE,WAAW,EAAE,CAsCf;AAED;oFACoF;AACpF,wBAAgB,YAAY,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,WAAW,EAAE,CAExF;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,SAAS,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,GAAG,MAAM,CAEvF;AAED;4EAC4E;AAC5E,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,SAAS;IAAE,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,GACtE,MAAM,CAER;AAED,+FAA+F;AAC/F,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,+FAA+F;IAC/F,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,eAAe,CAiBlB"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/** The default facet: every origin, including runs that carry none. */
|
|
2
|
+
export const ALL_ORIGINS = { kind: 'all' };
|
|
3
|
+
/** How an absent origin is spelled in the UI. Never "app", never blank — see {@link originLabel}. */
|
|
4
|
+
export const UNKNOWN_ORIGIN = 'unknown';
|
|
5
|
+
/**
|
|
6
|
+
* The run's origin if it has a usable one, else `undefined` — the single place "unknown" is decided.
|
|
7
|
+
*
|
|
8
|
+
* `undefined` is the shape core documents (a run created before the field existed, a registration
|
|
9
|
+
* path that carries no origin, or a package that could not be resolved with confidence); a blank or
|
|
10
|
+
* whitespace-only string folds in here too, because a store column that defaults to `''` instead of
|
|
11
|
+
* NULL would otherwise read as a real package whose name is nothing.
|
|
12
|
+
*/
|
|
13
|
+
export function knownOrigin(origin) {
|
|
14
|
+
const trimmed = origin?.trim();
|
|
15
|
+
return trimmed ? trimmed : undefined;
|
|
16
|
+
}
|
|
17
|
+
/** Whether a run carries no usable origin — UNKNOWN. See {@link knownOrigin}. */
|
|
18
|
+
export function isUnknownOrigin(origin) {
|
|
19
|
+
return knownOrigin(origin) === undefined;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Short display label for an origin: the package name without its npm scope
|
|
23
|
+
* (`@dudousxd/nestjs-catalog-pipeline` → `nestjs-catalog-pipeline`), so a sidebar chip is readable at
|
|
24
|
+
* 10px. Every call site pairs it with the FULL string as a `title`, so nothing is lost. An absent
|
|
25
|
+
* origin renders as {@link UNKNOWN_ORIGIN} — an operator must be able to see that a run is
|
|
26
|
+
* unattributed, and folding it into a real package name would be a lie.
|
|
27
|
+
*/
|
|
28
|
+
export function originLabel(origin) {
|
|
29
|
+
const known = knownOrigin(origin);
|
|
30
|
+
if (known === undefined)
|
|
31
|
+
return UNKNOWN_ORIGIN;
|
|
32
|
+
const slash = known.lastIndexOf('/');
|
|
33
|
+
if (slash === -1)
|
|
34
|
+
return known;
|
|
35
|
+
// `@scope/` with nothing after it isn't a package name we can shorten — keep it whole.
|
|
36
|
+
return known.slice(slash + 1) || known;
|
|
37
|
+
}
|
|
38
|
+
/** Facet equality — the selected chip is found by value, not by identity. */
|
|
39
|
+
export function sameOriginFilter(a, b) {
|
|
40
|
+
if (a.kind !== b.kind)
|
|
41
|
+
return false;
|
|
42
|
+
if (a.kind === 'origin' && b.kind === 'origin')
|
|
43
|
+
return a.origin === b.origin;
|
|
44
|
+
return true;
|
|
45
|
+
}
|
|
46
|
+
/** A stable React key / test handle for a facet (`origin:@scope/pkg`, `all`, `unknown`). */
|
|
47
|
+
export function originFilterKey(filter) {
|
|
48
|
+
return filter.kind === 'origin' ? `origin:${filter.origin}` : filter.kind;
|
|
49
|
+
}
|
|
50
|
+
/** Does this run belong to the selected facet? `all` matches everything, including unattributed runs. */
|
|
51
|
+
export function matchesOrigin(run, filter) {
|
|
52
|
+
if (filter.kind === 'all')
|
|
53
|
+
return true;
|
|
54
|
+
const known = knownOrigin(run.origin);
|
|
55
|
+
if (filter.kind === 'unknown')
|
|
56
|
+
return known === undefined;
|
|
57
|
+
return known === filter.origin;
|
|
58
|
+
}
|
|
59
|
+
/** The runs in the selected facet, in their existing order. */
|
|
60
|
+
export function filterByOrigin(runs, filter) {
|
|
61
|
+
return filter.kind === 'all' ? [...runs] : runs.filter((r) => matchesOrigin(r, filter));
|
|
62
|
+
}
|
|
63
|
+
/** What the `unknown` chip's tooltip says — the one place the absent case is explained in prose. */
|
|
64
|
+
export const UNKNOWN_ORIGIN_TITLE = 'Runs with no recorded origin: started before origins were stamped, or registered through a path whose declaring package could not be resolved. Not attributed to any library.';
|
|
65
|
+
/**
|
|
66
|
+
* The origin chips for a run list: `all` first, then every attributed package (alphabetical), then
|
|
67
|
+
* `unknown` LAST and only when there is something in it.
|
|
68
|
+
*
|
|
69
|
+
* Built from `(origin, count)` pairs rather than from runs, because the console's list is a PAGE:
|
|
70
|
+
* counting the rows it happens to hold would make every chip report the page size instead of the
|
|
71
|
+
* deployment. The pairs come from the server's `runs/facets` aggregate, so the unattributed bucket
|
|
72
|
+
* stays visible and countable while a package is selected — the property this facet exists for.
|
|
73
|
+
*/
|
|
74
|
+
export function originFacetsFromCounts(counts) {
|
|
75
|
+
const known = new Map();
|
|
76
|
+
let unknown = 0;
|
|
77
|
+
let total = 0;
|
|
78
|
+
for (const entry of counts) {
|
|
79
|
+
total += entry.count;
|
|
80
|
+
const origin = knownOrigin(entry.origin ?? undefined);
|
|
81
|
+
if (origin === undefined) {
|
|
82
|
+
unknown += entry.count;
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
known.set(origin, (known.get(origin) ?? 0) + entry.count);
|
|
86
|
+
}
|
|
87
|
+
const facets = [
|
|
88
|
+
{
|
|
89
|
+
filter: ALL_ORIGINS,
|
|
90
|
+
label: 'all',
|
|
91
|
+
title: 'Every origin, including runs that have none',
|
|
92
|
+
count: total,
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
for (const origin of [...known.keys()].sort()) {
|
|
96
|
+
facets.push({
|
|
97
|
+
filter: { kind: 'origin', origin },
|
|
98
|
+
label: originLabel(origin),
|
|
99
|
+
title: origin,
|
|
100
|
+
count: known.get(origin) ?? 0,
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (unknown > 0) {
|
|
104
|
+
facets.push({
|
|
105
|
+
filter: { kind: 'unknown' },
|
|
106
|
+
label: UNKNOWN_ORIGIN,
|
|
107
|
+
title: UNKNOWN_ORIGIN_TITLE,
|
|
108
|
+
count: unknown,
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
return facets;
|
|
112
|
+
}
|
|
113
|
+
/** {@link originFacetsFromCounts} over a run list — one count per run. For callers that hold the
|
|
114
|
+
* whole set (tests, an unpaginated embedder), not for the console's paged list. */
|
|
115
|
+
export function originFacets(runs) {
|
|
116
|
+
return originFacetsFromCounts(runs.map((r) => ({ origin: r.origin, count: 1 })));
|
|
117
|
+
}
|
|
118
|
+
/** How many of these runs carry no origin — the size of the unattributed bucket. */
|
|
119
|
+
export function unknownOriginCount(runs) {
|
|
120
|
+
return runs.reduce((n, r) => n + (isUnknownOrigin(r.origin) ? 1 : 0), 0);
|
|
121
|
+
}
|
|
122
|
+
/** The unattributed bucket's size straight from the server's facet counts — the paged console's
|
|
123
|
+
* {@link unknownOriginCount}, which cannot count runs it never fetched. */
|
|
124
|
+
export function unknownCountFromFacets(counts) {
|
|
125
|
+
return counts.reduce((n, c) => n + (isUnknownOrigin(c.origin ?? undefined) ? c.count : 0), 0);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Why the list is empty, in the operator's terms.
|
|
129
|
+
*
|
|
130
|
+
* The case this exists for: an operator filters by a package, sees nothing, and cannot tell "no run
|
|
131
|
+
* matched" from "these runs are unattributable, and an exact-match origin filter can never match
|
|
132
|
+
* them". So a package filter that comes back empty NAMES the unattributed bucket and offers to open
|
|
133
|
+
* it, and an empty `unknown` facet says in words that everything here is attributed rather than
|
|
134
|
+
* looking like a filter that swallowed the runs.
|
|
135
|
+
*
|
|
136
|
+
* `unknownCount` is counted over the runs BEFORE the origin facet is applied — otherwise it would be
|
|
137
|
+
* zero in exactly the case it exists for.
|
|
138
|
+
*/
|
|
139
|
+
export function emptyRunsNotice(opts) {
|
|
140
|
+
if (!opts.anyFilter)
|
|
141
|
+
return { message: 'No runs yet.' };
|
|
142
|
+
if (opts.origin.kind === 'unknown') {
|
|
143
|
+
return {
|
|
144
|
+
message: opts.unknownCount > 0
|
|
145
|
+
? 'No unclassified runs match the other filters.'
|
|
146
|
+
: 'Every run here has a recorded origin — none are unclassified.',
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
if (opts.origin.kind === 'origin' && opts.unknownCount > 0) {
|
|
150
|
+
return {
|
|
151
|
+
message: `No runs from ${originLabel(opts.origin.origin)} match these filters.`,
|
|
152
|
+
unclassified: opts.unknownCount,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return { message: 'No runs match these filters.' };
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=run-origin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-origin.js","sourceRoot":"","sources":["../../src/client/run-origin.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,17 @@ export interface HealthSummary {
|
|
|
15
15
|
/** True when `starved` is empty — the whole fleet is draining. */
|
|
16
16
|
allDraining: boolean;
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* The WORKFLOW queues that are stalled — backlog with no worker anywhere consuming it — by base name,
|
|
20
|
+
* ignoring the `@partition` suffix queues carry on a tenant (they aggregate across tenants, same rule
|
|
21
|
+
* as `deriveRunState`'s `groupIsStalled`).
|
|
22
|
+
*
|
|
23
|
+
* Read off worker health rather than off the run list, which matters now the console lists a PAGE: a
|
|
24
|
+
* banner derived from the runs on screen would go quiet the moment the stalled runs scrolled past the
|
|
25
|
+
* page boundary, which is exactly when an operator most needs to see it. A stalled queue has queued
|
|
26
|
+
* work by definition, so nothing is lost by not consulting the runs.
|
|
27
|
+
*/
|
|
28
|
+
export declare function stalledWorkflows(groups: readonly GroupHealth[]): string[];
|
|
18
29
|
/**
|
|
19
30
|
* Reduce the (potentially ~40-queue) `GroupHealth` list to the one actionable signal: which
|
|
20
31
|
* queues have backlog with nobody consuming it. `Array.prototype.sort` is stable (ES2019+), so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarize-health.d.ts","sourceRoot":"","sources":["../../src/client/summarize-health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,qFAAqF;AACrF,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB;0FACsF;IACtF,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,uGAAuG;IACvG,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAyBpE"}
|
|
1
|
+
{"version":3,"file":"summarize-health.d.ts","sourceRoot":"","sources":["../../src/client/summarize-health.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,qFAAqF;AACrF,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB;0FACsF;IACtF,aAAa,EAAE,MAAM,CAAC;IACtB,qFAAqF;IACrF,SAAS,EAAE,MAAM,CAAC;IAClB,uGAAuG;IACvG,WAAW,EAAE,MAAM,CAAC;IACpB,oFAAoF;IACpF,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,kEAAkE;IAClE,WAAW,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,EAAE,CAUzE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,aAAa,CAyBpE"}
|
|
@@ -1,4 +1,28 @@
|
|
|
1
1
|
import { baseHandlerName } from './queue-partition.js';
|
|
2
|
+
/**
|
|
3
|
+
* The WORKFLOW queues that are stalled — backlog with no worker anywhere consuming it — by base name,
|
|
4
|
+
* ignoring the `@partition` suffix queues carry on a tenant (they aggregate across tenants, same rule
|
|
5
|
+
* as `deriveRunState`'s `groupIsStalled`).
|
|
6
|
+
*
|
|
7
|
+
* Read off worker health rather than off the run list, which matters now the console lists a PAGE: a
|
|
8
|
+
* banner derived from the runs on screen would go quiet the moment the stalled runs scrolled past the
|
|
9
|
+
* page boundary, which is exactly when an operator most needs to see it. A stalled queue has queued
|
|
10
|
+
* work by definition, so nothing is lost by not consulting the runs.
|
|
11
|
+
*/
|
|
12
|
+
export function stalledWorkflows(groups) {
|
|
13
|
+
const backlog = new Set();
|
|
14
|
+
const served = new Set();
|
|
15
|
+
for (const group of groups) {
|
|
16
|
+
if (group.kind !== 'workflow')
|
|
17
|
+
continue;
|
|
18
|
+
const base = baseHandlerName(group.group);
|
|
19
|
+
if (group.depth > 0)
|
|
20
|
+
backlog.add(base);
|
|
21
|
+
if (group.liveWorkers.length > 0)
|
|
22
|
+
served.add(base);
|
|
23
|
+
}
|
|
24
|
+
return [...backlog].filter((name) => !served.has(name)).sort();
|
|
25
|
+
}
|
|
2
26
|
/**
|
|
3
27
|
* Reduce the (potentially ~40-queue) `GroupHealth` list to the one actionable signal: which
|
|
4
28
|
* queues have backlog with nobody consuming it. `Array.prototype.sort` is stable (ES2019+), so
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarize-health.js","sourceRoot":"","sources":["../../src/client/summarize-health.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAmBvD;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAqB;IACnD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,oGAAoG;IACpG,qGAAqG;IACrG,uFAAuF;IACvF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM;SACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;SACpE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,aAAa,EAAE,aAAa,CAAC,IAAI;QACjC,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,OAAO;QACP,WAAW,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;KAClC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"summarize-health.js","sourceRoot":"","sources":["../../src/client/summarize-health.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAmBvD;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA8B;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACxC,MAAM,IAAI,GAAG,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,KAAK,CAAC,KAAK,GAAG,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,MAAqB;IACnD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,oGAAoG;IACpG,qGAAqG;IACrG,uFAAuF;IACvF,MAAM,aAAa,GAAG,IAAI,GAAG,EAAU,CAAC;IACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;IACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,WAAW;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC3E,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;YAAE,aAAa,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;aAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;YAAE,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,OAAO,GAAG,MAAM;SACnB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC,CAAC;SACpE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAErC,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,MAAM;QACzB,aAAa,EAAE,aAAa,CAAC,IAAI;QACjC,SAAS,EAAE,SAAS,CAAC,IAAI;QACzB,WAAW,EAAE,WAAW,CAAC,IAAI;QAC7B,OAAO;QACP,WAAW,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;KAClC,CAAC;AACJ,CAAC"}
|