fix: preserve hwlab refresh render evidence
This commit is contained in:
@@ -457,16 +457,73 @@ function compactRefreshEvidence(value: unknown): Record<string, unknown> | null
|
||||
jobName: stringOrNull(refresh.jobName),
|
||||
namespace: stringOrNull(refresh.namespace),
|
||||
status: stringOrNull(refresh.status),
|
||||
pipeline: stringOrNull(refresh.pipeline),
|
||||
pipeline: stringOrNull(refresh.pipeline) ?? stringOrNull(asOptionalRecord(refresh.apply)?.pipelineName) ?? stringOrNull(asOptionalRecord(refresh.render)?.pipelineName),
|
||||
sourceCommit: stringOrNull(refresh.sourceCommit),
|
||||
sourceStageRef: stringOrNull(refresh.sourceStageRef),
|
||||
elapsedMs: numberOrNull(refresh.elapsedMs),
|
||||
render: compactRefreshRender(asOptionalRecord(refresh.render)),
|
||||
apply: compactRefreshApply(asOptionalRecord(refresh.apply)),
|
||||
sourceAuthority: stringOrNull(refresh.sourceAuthority),
|
||||
statusAuthority: stringOrNull(refresh.statusAuthority),
|
||||
parsedDownstreamCliOutput: false,
|
||||
};
|
||||
}
|
||||
|
||||
function compactRefreshRender(value: Record<string, unknown> | null): Record<string, unknown> | null {
|
||||
if (value === null) return null;
|
||||
return {
|
||||
pipelineName: stringOrNull(value.pipelineName),
|
||||
taskCount: numberOrNull(value.taskCount),
|
||||
runtimeReadyTask: compactRefreshRuntimeReady(asOptionalRecord(value.runtimeReadyTask)),
|
||||
};
|
||||
}
|
||||
|
||||
function compactRefreshApply(value: Record<string, unknown> | null): Record<string, unknown> | null {
|
||||
if (value === null) return null;
|
||||
return {
|
||||
pipelineName: stringOrNull(value.pipelineName),
|
||||
namespace: stringOrNull(value.namespace),
|
||||
resourceVersion: stringOrNull(value.resourceVersion),
|
||||
annotations: compactStringMap(asOptionalRecord(value.annotations)),
|
||||
labels: compactStringMap(asOptionalRecord(value.labels)),
|
||||
degradedReason: stringOrNull(value.degradedReason),
|
||||
};
|
||||
}
|
||||
|
||||
function compactRefreshRuntimeReady(value: Record<string, unknown> | null): Record<string, unknown> | null {
|
||||
if (value === null) return null;
|
||||
return {
|
||||
present: booleanOrNull(value.present),
|
||||
name: stringOrNull(value.name),
|
||||
runAfter: compactStringArray(value.runAfter, 4),
|
||||
when: compactWhenList(value.when, 4),
|
||||
};
|
||||
}
|
||||
|
||||
function compactWhenList(value: unknown, limit: number): Array<Record<string, unknown>> {
|
||||
return Array.isArray(value)
|
||||
? value
|
||||
.map((item) => asOptionalRecord(item))
|
||||
.filter((item): item is Record<string, unknown> => item !== null)
|
||||
.slice(0, limit)
|
||||
.map((item) => ({
|
||||
input: stringOrNull(item.input),
|
||||
operator: stringOrNull(item.operator),
|
||||
values: compactStringArray(item.values, 4),
|
||||
}))
|
||||
: [];
|
||||
}
|
||||
|
||||
function compactStringMap(value: Record<string, unknown> | null): Record<string, string> | null {
|
||||
if (value === null) return null;
|
||||
const output: Record<string, string> = {};
|
||||
for (const [key, item] of Object.entries(value).slice(0, 8)) {
|
||||
const text = stringOrNull(item);
|
||||
if (text !== null) output[key] = text;
|
||||
}
|
||||
return Object.keys(output).length === 0 ? null : output;
|
||||
}
|
||||
|
||||
function arrayRecords(value: unknown): Record<string, unknown>[] {
|
||||
return Array.isArray(value) ? value.filter((item): item is Record<string, unknown> => typeof item === "object" && item !== null && !Array.isArray(item)) : [];
|
||||
}
|
||||
@@ -555,6 +612,14 @@ function numberOrNull(value: unknown): number | null {
|
||||
return typeof value === "number" && Number.isFinite(value) ? value : null;
|
||||
}
|
||||
|
||||
function booleanOrNull(value: unknown): boolean | null {
|
||||
return value === true ? true : value === false ? false : null;
|
||||
}
|
||||
|
||||
function compactStringArray(value: unknown, limit: number): string[] {
|
||||
return Array.isArray(value) ? value.map((item) => stringOrNull(item)).filter((item): item is string => item !== null).slice(0, limit) : [];
|
||||
}
|
||||
|
||||
function shortSha(value: string | null): string {
|
||||
if (value === null) return "-";
|
||||
return value.length > 12 ? value.slice(0, 12) : value;
|
||||
|
||||
Reference in New Issue
Block a user