@synet/signal
Version:
Experimental Fractal Architecture pattern for Synet development
36 lines (30 loc) • 942 B
JavaScript
"use strict";
/**
*
* import { Signal } from '../signal';
*
extend(Signal, {
// Recreate a signal from trace entries
fromTrace<T>(entries: TraceEntry[], finalValue?: T): Signal<T> {
let error: Error | undefined;
// Find the last error in the trace
for (let i = entries.length - 1; i >= 0; i--) {
if (entries[i].error) {
error = entries[i].error;
break;
}
}
return new Signal<T>(error ? undefined : finalValue, error, entries);
},
// Replay a specific step from trace
replayFrom<T>(signal: Signal<T>, stepLabel: string): Signal<T> {
const entries = signal.traceEntries;
const stepIndex = entries.findIndex(e => e.layer === stepLabel);
if (stepIndex === -1) {
return Signal.failure(`Step "${stepLabel}" not found in trace`);
}
// Recreate signal up to that step
return Signal.fromTrace<T>(entries.slice(0, stepIndex));
}
});
*/