mirror of
https://github.com/4gray/iptvnator.git
synced 2026-10-10 10:06:15 -08:00
* docs(performance): plan Xtream benchmark * feat(xtream-mock-server): add deterministic 100k fixture * style(xtream-mock-server): apply repository formatting * fix(xtream-mock-server): harden performance fixture data * feat(xtream-mock-server): add performance control plane * docs(performance): correct Xtream capture plan * fix(xtream-mock-server): harden performance controls * fix(xtream-mock-server): harden control lifecycle * feat(performance): add Xtream preload markers * feat(performance): trace Xtream main phases * feat(performance): mark Xtream store publications * feat(performance): trace Xtream database phases * feat(performance): trace Xtream delete cancellation * feat(performance): capture Xtream phase attribution * feat(performance): mark Sources Xtream refresh * test(performance): define Xtream benchmark evidence contracts * test(performance): add Xtream benchmark runner * test(performance): surface failure evidence writes * test(performance): align database read clock * test(performance): preserve capture failure contracts
56 lines
1.8 KiB
TypeScript
56 lines
1.8 KiB
TypeScript
import { join } from 'node:path';
|
|
|
|
import {
|
|
serializeXtreamArtifactForPersistence,
|
|
type XtreamDiagnosticArtifactEvidence,
|
|
} from './xtream-diagnostic-artifacts';
|
|
import { writeXtreamExclusiveArtifact } from './xtream-exclusive-artifact-writer';
|
|
import { persistThenValidateXtreamIteration } from './xtream-benchmark-report';
|
|
import { XTREAM_SYNTHETIC_CREDENTIALS } from './xtream-scenario-driver';
|
|
import type {
|
|
XtreamArtifactSafetyContext,
|
|
XtreamRawIterationResult,
|
|
XtreamValidatedIterationResult,
|
|
} from './xtream-summary-contract';
|
|
|
|
export interface PersistedXtreamIteration {
|
|
readonly diagnosticEvidence: XtreamDiagnosticArtifactEvidence | null;
|
|
readonly iteration: XtreamValidatedIterationResult;
|
|
}
|
|
|
|
export function createXtreamArtifactSafetyContext(
|
|
controlToken: string
|
|
): XtreamArtifactSafetyContext {
|
|
return Object.freeze({
|
|
controlToken,
|
|
syntheticCredentials: XTREAM_SYNTHETIC_CREDENTIALS,
|
|
});
|
|
}
|
|
|
|
export async function writeXtreamSafeJson(
|
|
absolutePath: string,
|
|
value: unknown,
|
|
safety: XtreamArtifactSafetyContext
|
|
): Promise<void> {
|
|
const serialized = serializeXtreamArtifactForPersistence(value, safety);
|
|
await writeXtreamExclusiveArtifact(absolutePath, serialized);
|
|
}
|
|
|
|
export async function persistXtreamIteration(
|
|
iterationDirectory: string,
|
|
raw: XtreamRawIterationResult,
|
|
diagnosticEvidence: XtreamDiagnosticArtifactEvidence | null,
|
|
safety: XtreamArtifactSafetyContext
|
|
): Promise<PersistedXtreamIteration> {
|
|
const iteration = await persistThenValidateXtreamIteration(
|
|
raw,
|
|
safety,
|
|
(serialized) =>
|
|
writeXtreamExclusiveArtifact(
|
|
join(iterationDirectory, 'result.json'),
|
|
serialized
|
|
)
|
|
);
|
|
return Object.freeze({ diagnosticEvidence, iteration });
|
|
}
|