MCPcopy Create free account
hub / github.com/code-pushup/cli / recoverFromContent

Function recoverFromContent

packages/utils/src/lib/wal.ts:104–139  ·  view source on GitHub ↗
(
  content: string,
  decode: Codec<T>['decode'],
)

Source from the content-addressed store, hash-verified

102 * @returns Recovery result with records, errors, and partial tail
103 */
104export function recoverFromContent<T>(
105 content: string,
106 decode: Codec<T>['decode'],
107): RecoverResult<T> {
108 const lines = content.split('\n');
109 const clean = content.endsWith('\n');
110
111 const out = lines.slice(0, -1).reduce(
112 (a, l, i) => {
113 if (!l) {
114 return a;
115 }
116 try {
117 return {
118 ...a,
119 records: [...a.records, decode(l)],
120 };
121 } catch (error) {
122 return {
123 ...a,
124 errors: [
125 ...a.errors,
126 { lineNo: i + 1, line: l, error: error as Error },
127 ],
128 };
129 }
130 },
131 { records: [] as T[], errors: [] as RecoverResult<T>['errors'] },
132 );
133
134 const tail = lines.at(-1);
135 return {
136 ...out,
137 partialTail: clean || !tail ? null : tail,
138 };
139}
140
141/**
142 * Write-Ahead Log implementation for crash-safe append-only logging.

Callers 2

recoverMethod · 0.85
wal.unit.test.tsFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected