UNPKG

clean-redux

Version:

Utilities for implementing clean architecture using Redux

43 lines 2.03 kB
"use strict"; 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