@redux-multipurpose/core
Version:
## Installation Redux Multipurpose core is available as a package on NPM:
46 lines • 8.94 kB
JavaScript
import { createAsyncThunk } from '@reduxjs/toolkit';
const DEFAULT_INITIAL_SUBSTATE = { data: null, loading: false, error: null };
export class WsState {
}
let initialState;
export const createWsInitialState = (substates) => {
let state = {};
for (let substate of substates) {
if (typeof substate == 'string')
state[substate] = DEFAULT_INITIAL_SUBSTATE;
else {
let key = Object.keys(substate)[0];
state[key] = Object.assign(Object.assign({}, substate[key]), { loading: substate[key].loading ? substate[key].loading : false, data: substate[key].data ? substate[key].data : null, error: substate[key].error ? substate[key].error : null });
}
}
initialState = state;
return state;
};
////////////////// Actions utils
//Thunk creator helper
export const prepareThunk = (state, id, callback) => {
return createAsyncThunk(state + '/' + id, callback);
};
export const prepareThunkActionReducers = (thunksWithStates) => {
let reducers = {};
for (let storeInfos of thunksWithStates) {
let { thunk, substate, adapter } = storeInfos;
reducers = Object.assign(Object.assign({}, reducers), { [thunk.pending.toString()]: state => {
return Object.assign(Object.assign({}, state), { [substate]: Object.assign(Object.assign({}, initialState[substate]), { loading: true }) });
}, [thunk.fulfilled.toString()]: (state, action) => {
state[substate].loading = false;
if (adapter != null && adapter != undefined) {
adapter.setAll(state[substate].data, action.payload);
if (typeof state[substate].data.available !== 'undefined')
state[substate].data.available = true;
}
else
state[substate].data = action.payload;
}, [thunk.rejected.toString()]: (state, action) => {
state[substate].loading = false;
state[substate].error = action.error;
} });
}
return reducers;
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9yZWR1eC1tdWx0aXB1cnBvc2UvY29yZS9zcmMvbGliL3V0aWxzL3dzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBaUIsZ0JBQWdCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUtuRSxNQUFNLHdCQUF3QixHQUFlLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUV6RixNQUFNLE9BQU8sT0FBTztDQUduQjtBQUVELElBQUksWUFBcUIsQ0FBQztBQUUxQixNQUFNLENBQUMsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLFNBQStCLEVBQUUsRUFBRTtJQUNwRSxJQUFJLEtBQUssR0FBWSxFQUFFLENBQUM7SUFFeEIsS0FBSyxJQUFJLFFBQVEsSUFBSSxTQUFTLEVBQzlCO1FBQ0ksSUFBSSxPQUFPLFFBQVEsSUFBSSxRQUFRO1lBQzNCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyx3QkFBd0IsQ0FBQzthQUUvQztZQUNJLElBQUksR0FBRyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxtQ0FDSCxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQ2hCLE9BQU8sRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQzdELElBQUksRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQ25ELEtBQUssRUFBRSxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFBLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQ3pELENBQUM7U0FDTDtLQUNKO0lBRUQsWUFBWSxHQUFHLEtBQUssQ0FBQztJQUVyQixPQUFPLEtBQUssQ0FBQztBQUNqQixDQUFDLENBQUM7QUFFRixnQ0FBZ0M7QUFFaEMsc0JBQXNCO0FBQ3RCLE1BQU0sQ0FBQyxNQUFNLFlBQVksR0FBRyxDQUFRLEtBQWEsRUFBRSxFQUFVLEVBQUUsUUFBYSxFQUFFLEVBQUU7SUFFNUUsT0FBTyxnQkFBZ0IsQ0FDbkIsS0FBSyxHQUFHLEdBQUcsR0FBRyxFQUFFLEVBQ2hCLFFBQVEsQ0FDWCxDQUFDO0FBQ04sQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sMEJBQTBCLEdBQUcsQ0FBQyxnQkFBb0csRUFBRSxFQUFFO0lBQy9JLElBQUksUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVsQixLQUFLLElBQUksVUFBVSxJQUFJLGdCQUFnQixFQUN2QztRQUNJLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxHQUFHLFVBQVUsQ0FBQztRQUU5QyxRQUFRLG1DQUNELFFBQVEsS0FDWCxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsRUFBRTtnQkFDaEMsdUNBQ08sS0FBSyxLQUNSLENBQUMsUUFBUSxDQUFDLGtDQUNILFlBQVksQ0FBQyxRQUFRLENBQUMsS0FDekIsT0FBTyxFQUFFLElBQUksT0FFbkI7WUFDTixDQUFDLEVBQ0QsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFjLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3JELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUVoQyxJQUFJLE9BQU8sSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLFNBQVMsRUFDM0M7b0JBQ0ksT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFckQsSUFBSSxPQUFPLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxLQUFLLFdBQVc7d0JBQ3JELEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQztpQkFDN0M7O29CQUVHLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxJQUFJLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztZQUM5QyxDQUFDLEVBQ0QsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQzNDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNoQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7WUFDekMsQ0FBQyxHQUNKLENBQUM7S0FDTDtJQUVELE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVudGl0eUFkYXB0ZXIsIGNyZWF0ZUFzeW5jVGh1bmsgfSBmcm9tICdAcmVkdXhqcy90b29sa2l0JztcblxuLy8vLy8vLy8vLy8vLy8vLy8vIFN0YXRlIHV0aWxzXG50eXBlIFdzU3Vic3RhdGUgPSB7IGRhdGE/OiBhbnk7IGxvYWRpbmc/OiBib29sZWFuOyBlcnJvcj86IGFueSB8IG51bGw7IH07XG5cbmNvbnN0IERFRkFVTFRfSU5JVElBTF9TVUJTVEFURTogV3NTdWJzdGF0ZSA9IHsgZGF0YTogbnVsbCwgbG9hZGluZzogZmFsc2UsIGVycm9yOiBudWxsIH07XG5cbmV4cG9ydCBjbGFzcyBXc1N0YXRlXG57XG4gICAgW2tleTogc3RyaW5nXTogV3NTdWJzdGF0ZTtcbn1cblxubGV0IGluaXRpYWxTdGF0ZTogV3NTdGF0ZTtcblxuZXhwb3J0IGNvbnN0IGNyZWF0ZVdzSW5pdGlhbFN0YXRlID0gKHN1YnN0YXRlczogKFdzU3RhdGUgfCBzdHJpbmcpW10pID0+IHtcbiAgICBsZXQgc3RhdGU6IFdzU3RhdGUgPSB7fTtcblxuICAgIGZvciAobGV0IHN1YnN0YXRlIG9mIHN1YnN0YXRlcylcbiAgICB7XG4gICAgICAgIGlmICh0eXBlb2Ygc3Vic3RhdGUgPT0gJ3N0cmluZycpXG4gICAgICAgICAgICBzdGF0ZVtzdWJzdGF0ZV0gPSBERUZBVUxUX0lOSVRJQUxfU1VCU1RBVEU7XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgICAgbGV0IGtleSA9IE9iamVjdC5rZXlzKHN1YnN0YXRlKVswXTtcbiAgICAgICAgICAgIHN0YXRlW2tleV0gPSB7XG4gICAgICAgICAgICAgICAgLi4uc3Vic3RhdGVba2V5XSxcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBzdWJzdGF0ZVtrZXldLmxvYWRpbmc/IHN1YnN0YXRlW2tleV0ubG9hZGluZyA6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGRhdGE6IHN1YnN0YXRlW2tleV0uZGF0YT8gc3Vic3RhdGVba2V5XS5kYXRhIDogbnVsbCxcbiAgICAgICAgICAgICAgICBlcnJvcjogc3Vic3RhdGVba2V5XS5lcnJvcj8gc3Vic3RhdGVba2V5XS5lcnJvciA6IG51bGwsXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgaW5pdGlhbFN0YXRlID0gc3RhdGU7XG5cbiAgICByZXR1cm4gc3RhdGU7XG59O1xuXG4vLy8vLy8vLy8vLy8vLy8vLy8gQWN0aW9ucyB1dGlsc1xuXG4vL1RodW5rIGNyZWF0b3IgaGVscGVyXG5leHBvcnQgY29uc3QgcHJlcGFyZVRodW5rID0gPEEsQixDPihzdGF0ZTogc3RyaW5nLCBpZDogc3RyaW5nLCBjYWxsYmFjazogYW55KSA9Plxue1xuICAgIHJldHVybiBjcmVhdGVBc3luY1RodW5rPEEsQixDPihcbiAgICAgICAgc3RhdGUgKyAnLycgKyBpZCxcbiAgICAgICAgY2FsbGJhY2tcbiAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IHByZXBhcmVUaHVua0FjdGlvblJlZHVjZXJzID0gKHRodW5rc1dpdGhTdGF0ZXM6IHsgdGh1bms6IGFueSwgc3Vic3RhdGU6IHN0cmluZywgYWRhcHRlcjogRW50aXR5QWRhcHRlcjxhbnk+IHwgbnVsbCB8IHVuZGVmaW5lZCB9W10pID0+IHtcbiAgICBsZXQgcmVkdWNlcnMgPSB7fTtcblxuICAgIGZvciAobGV0IHN0b3JlSW5mb3Mgb2YgdGh1bmtzV2l0aFN0YXRlcylcbiAgICB7XG4gICAgICAgIGxldCB7IHRodW5rLCBzdWJzdGF0ZSwgYWRhcHRlciB9ID0gc3RvcmVJbmZvcztcblxuICAgICAgICByZWR1Y2VycyA9IHtcbiAgICAgICAgICAgIC4uLnJlZHVjZXJzLFxuICAgICAgICAgICAgW3RodW5rLnBlbmRpbmcudG9TdHJpbmcoKV06IHN0YXRlID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICAgICAgICAgICAgW3N1YnN0YXRlXToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW5pdGlhbFN0YXRlW3N1YnN0YXRlXSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgW3RodW5rLmZ1bGZpbGxlZC50b1N0cmluZygpXTogKHN0YXRlOiBXc1N0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBzdGF0ZVtzdWJzdGF0ZV0ubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgICAgICAgICAgICAgaWYgKGFkYXB0ZXIgIT0gbnVsbCAmJiBhZGFwdGVyICE9IHVuZGVmaW5lZClcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFkYXB0ZXIuc2V0QWxsKHN0YXRlW3N1YnN0YXRlXS5kYXRhLCBhY3Rpb24ucGF5bG9hZCk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBzdGF0ZVtzdWJzdGF0ZV0uZGF0YS5hdmFpbGFibGUgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGVbc3Vic3RhdGVdLmRhdGEuYXZhaWxhYmxlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZVxuICAgICAgICAgICAgICAgICAgICBzdGF0ZVtzdWJzdGF0ZV0uZGF0YSA9IGFjdGlvbi5wYXlsb2FkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFt0aHVuay5yZWplY3RlZC50b1N0cmluZygpXTogKHN0YXRlLCBhY3Rpb24pID0+IHtcbiAgICAgICAgICAgICAgICBzdGF0ZVtzdWJzdGF0ZV0ubG9hZGluZyA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIHN0YXRlW3N1YnN0YXRlXS5lcnJvciA9IGFjdGlvbi5lcnJvcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmVkdWNlcnM7XG59OyJdfQ==