@snipsonian/observable-state
Version:
Observable-state snippets (redux-like)
19 lines (18 loc) • 788 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createAsyncEntityInitialState = void 0;
const isSet_1 = require("@snipsonian/core/cjs/is/isSet");
const types_1 = require("./types");
function createAsyncEntityInitialState({ data, operations = [types_1.AsyncOperation.fetch], } = {}) {
const baseEntity = {
data: (0, isSet_1.default)(data) ? data : null,
};
if (!operations || operations.length === 0) {
return baseEntity;
}
return operations.reduce((accumulator, operation) => (Object.assign(Object.assign({}, accumulator), { [operation]: {
status: types_1.AsyncStatus.Initial,
error: null,
} })), baseEntity);
}
exports.createAsyncEntityInitialState = createAsyncEntityInitialState;