All files / json-crdt/__bench__/util traces.ts

100% Statements 17/17
100% Branches 1/1
100% Functions 3/3
100% Lines 17/17

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 372x 2x 2x     2x 14x 14x 14x 14x     2x 2x   2x                   2x   14x   14x 14x 14x   14x      
import * as fs from 'fs';
import * as path from 'path';
import * as zlib from 'zlib';
import type {SequentialTrace, SequentialTraceName} from './types';
 
const loadTrace = (filename: SequentialTraceName) => {
  const buf = fs.readFileSync(filename);
  const text = zlib.gunzipSync(buf).toString();
  const json = JSON.parse(text);
  return json;
};
 
const cache = {} as Record<SequentialTraceName, SequentialTrace>;
const rootFolder = path.resolve(__dirname, '..', '..', '..', '..');
 
export const sequentialTraceNames: SequentialTraceName[] = [
  'automerge-paper',
  'friendsforever_flat',
  'rustcode',
  'seph-blog1',
  'sveltecomponent',
  'json-crdt-patch',
  'json-crdt-blog-post',
];
 
export const traces = {
  filename: (name: SequentialTraceName) =>
    path.resolve(rootFolder, 'node_modules', 'editing-traces', 'sequential_traces', `${name}.json.gz`),
  get: (name: SequentialTraceName) => {
    if (!cache[name]) {
      const filename = traces.filename(name);
      cache[name] = loadTrace(filename as SequentialTraceName);
    }
    return cache[name];
  },
};