clean-redux
Version:
Utilities for implementing clean architecture using Redux
43 lines • 2.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.usecasesToAutoDispatchThunks = exports.thunksToAutoDispatchThunks = exports.thunkToAutoDispatchThunk = void 0;
require("minimal-polyfills/Object.fromEntries");
var WeakMap_1 = require("minimal-polyfills/WeakMap");
var objectKeys_1 = require("tsafe/objectKeys");
/** NOTE: Always returns the same ref for a given dispatch, no need to useMemo */
function thunkToAutoDispatchThunk(params) {
var dispatch = params.dispatch, thunk = params.thunk;
return function (params) { return dispatch(thunk(params)); };
}
exports.thunkToAutoDispatchThunk = thunkToAutoDispatchThunk;
function thunksToAutoDispatchThunks(params) {
var dispatch = params.dispatch, thunks = params.thunks;
return Object.fromEntries((0, objectKeys_1.objectKeys)(thunks).map(function (name) { return [
name,
thunkToAutoDispatchThunk({ "thunk": thunks[name], dispatch: dispatch }),
]; }));
}
exports.thunksToAutoDispatchThunks = thunksToAutoDispatchThunks;
var wordId = "Thunks";
function usecasesToAutoDispatchThunks(usecases) {
var autoDispatchThunksByDispatch = new WeakMap_1.Polyfill();
return {
"getAutoDispatchThunks": function (dispatch) {
var autoDispatchThunks = autoDispatchThunksByDispatch.get(dispatch);
if (autoDispatchThunks !== undefined) {
return autoDispatchThunks;
}
autoDispatchThunks = Object.fromEntries(usecases.map(function (_a) {
var name = _a.name, thunks = _a.thunks;
return [
"".concat(name).concat(wordId),
thunksToAutoDispatchThunks({ thunks: thunks, dispatch: dispatch }),
];
}));
autoDispatchThunksByDispatch.set(dispatch, autoDispatchThunks);
return autoDispatchThunks;
},
};
}
exports.usecasesToAutoDispatchThunks = usecasesToAutoDispatchThunks;
//# sourceMappingURL=usecasesToAutoDispatchThunks.js.map