BlackDice/b3-chief

View on GitHub
src/ExecutionToolbox.js

Summary

Maintainability
A
0 mins
Test Coverage
import { init } from 'stampit'

import { STATUS } from './const'

const ExecutionToolbox = init(initializeToolbox).statics({ reset: resetToolbox })

function initializeToolbox({ onError }) {
    return {
        status: Object.freeze(STATUS),
        timestamp: createTimestampTool(),
        error(...args) {
            onError(...args)
            return STATUS.ERROR
        },
    }
}

const bReset = Symbol('reset toolbox')

function createTimestampTool() {
    let currentTimestamp = null
    const timestamp = (isReset) => {
        if (isReset === bReset || currentTimestamp === null) {
            currentTimestamp = Date.now()
        }
        return currentTimestamp
    }
    return timestamp
}

export function resetToolbox(toolbox) {
    toolbox.timestamp(bReset)
}

export default ExecutionToolbox