Skip to content

Commit

Permalink
Refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
ehmicky committed Jan 9, 2022
1 parent 09c91cd commit cb4bc46
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 21 deletions.
18 changes: 10 additions & 8 deletions src/history/data/contents.js
Original file line number Diff line number Diff line change
@@ -1,19 +1,21 @@
import { UserError } from '../../error/main.js'

// Parse the contents of a rawResult
export const parseRawResult = function (contents) {
// Parse the contents of a rawResult.
// Parsing/serializing rawResults is abstracted away from the main store logic,
// so that stores only need to deal with metadata objects and blob strings.
export const parseRawResult = function (rawResultStr) {
try {
return JSON.parse(contents)
return JSON.parse(rawResultStr)
} catch (error) {
throw new UserError(`History files is invalid JSON: ${error.message}`)
}
}

// Serialize the contents of a rawResult
export const serializeRawResult = function (rawResult) {
const contents = JSON.stringify(rawResult, undefined, 2)
const contentsA = flattenArray(contents)
return `${contentsA}\n`
const rawResultStr = JSON.stringify(rawResult, undefined, 2)
const rawResultStrA = flattenArray(rawResultStr)
return `${rawResultStrA}\n`
}

// Some arrays like `histogram` and `quantiles` are big. `JSON.serialize()`
Expand All @@ -22,8 +24,8 @@ export const serializeRawResult = function (rawResult) {
// - This creates simpler git diffs
// - This creates better git stats when it comes to amount of lines changes
// We only do this for arrays of simple types.
const flattenArray = function (content) {
return content.replace(SIMPLE_ARRAY_REGEXP, flattenArrayItems)
const flattenArray = function (rawResultStr) {
return rawResultStr.replace(SIMPLE_ARRAY_REGEXP, flattenArrayItems)
}

// Matches `[...]` but not `[{ ... }]` nor `[[...]]`
Expand Down
4 changes: 2 additions & 2 deletions src/history/data/fs.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,9 +20,9 @@ export const readRawResult = async function (path) {
}

// Write a rawResult's contents
export const writeRawResult = async function (path, contents) {
export const writeRawResult = async function (path, rawResultStr) {
try {
return await writeFile(path, contents)
return await writeFile(path, rawResultStr)
} catch (error) {
throw new UserError(`History file could not be written: ${error.message}`)
}
Expand Down
7 changes: 5 additions & 2 deletions src/history/data/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { groupMetadata, ungroupMetadata } from '../merge/metadata.js'
import { compressRawResult } from '../normalize/compress.js'
import { loadRawResults, normalizePreviousResults } from '../normalize/load.js'

import { parseRawResult, serializeRawResult } from './contents.js'
import {
addRawResult,
removeRawResult,
Expand All @@ -24,7 +25,8 @@ export const addToHistory = async function (rawResult, { save, cwd }) {

const rawResultA = compressRawResult(rawResult)
const metadatum = getRawResultMetadatum(rawResultA)
await addRawResult(metadatum, rawResultA, cwd)
const rawResultStr = serializeRawResult(rawResultA)
await addRawResult(metadatum, rawResultStr, cwd)
}

// Remove a rawResult
Expand Down Expand Up @@ -90,7 +92,8 @@ const listSortedMetadata = async function ({ cwd }) {
// - Including previous|diff in rawResults preview
const fetchHistory = async function (metadataGroups, { cwd }) {
const metadata = ungroupMetadata(metadataGroups)
const rawResults = await fetchRawResults(metadata, cwd)
const rawResultsStrs = await fetchRawResults(metadata, cwd)
const rawResults = rawResultsStrs.map(parseRawResult)
const history = loadRawResults(rawResults)
return history
}
15 changes: 6 additions & 9 deletions src/history/data/results.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
import pMap from 'p-map'

import { parseRawResult, serializeRawResult } from './contents.js'
import { getReadHistoryDir, getWriteHistoryDir } from './dir.js'
import { parseFilename, serializeFilename } from './filename.js'
import {
Expand Down Expand Up @@ -34,12 +33,12 @@ export const fetchRawResults = async function (metadata, cwd) {
return []
}

const rawResults = await pMap(
const rawResultStrs = await pMap(
metadata,
(metadatum) => fetchRawResult(metadatum, historyDir),
{ concurrency: MAX_CONCURRENCY },
)
return rawResults
return rawResultStrs
}

// How many results can be read at once.
Expand All @@ -52,18 +51,16 @@ const fetchRawResult = async function (metadatum, historyDir) {
const filename = serializeFilename(metadatum)
const path = `${historyDir}/${filename}`
await checkHistoryFile(path)
const contents = await readRawResult(path)
const rawResult = parseRawResult(contents)
return rawResult
const rawResultStr = await readRawResult(path)
return rawResultStr
}

// Save a new rawResult
export const addRawResult = async function (metadatum, rawResult, cwd) {
export const addRawResult = async function (metadatum, rawResultStr, cwd) {
const historyDir = await getWriteHistoryDir(cwd)
const filename = serializeFilename(metadatum)
const path = `${historyDir}/${filename}`
const contents = serializeRawResult(rawResult)
await writeRawResult(path, contents)
await writeRawResult(path, rawResultStr)
}

// Remove a rawResult from the filesystem
Expand Down

0 comments on commit cb4bc46

Please sign in to comment.