UNPKG

@snipsonian/observable-state

Version:

Observable-state snippets (redux-like)

15 lines (14 loc) 579 B
import isSet from '@snipsonian/core/es/is/isSet'; import { AsyncOperation, AsyncStatus } from './types'; export function createAsyncEntityInitialState({ data, operations = [AsyncOperation.fetch], } = {}) { const baseEntity = { data: isSet(data) ? data : null, }; if (!operations || operations.length === 0) { return baseEntity; } return operations.reduce((accumulator, operation) => (Object.assign(Object.assign({}, accumulator), { [operation]: { status: AsyncStatus.Initial, error: null, } })), baseEntity); }