@gjv/redux-slice-factory
Version:
Generic factory functions for common slice data structures
3 lines (2 loc) • 5.5 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0});var e,t,r=require("@reduxjs/toolkit"),n=(e=require("lodash.merge"))&&"object"==typeof e&&"default"in e?e.default:e;!function(e){e.Settled="Settled",e.Requesting="Requesting",e.Failed="Failed"}(t||(t={}));var a=t;function o(){return(o=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e}).apply(this,arguments)}var l=function(e){var t,r,n,o;return void 0===e&&(e={}),{status:null!=(t=e.status)?t:a.Settled,error:null!=(r=e.error)?r:null,lastModified:null!=(n=e.lastModified)?n:null,lastHydrated:null!=(o=e.lastHydrated)?o:null}},u=function(e){return void 0===e&&(e=new Date),e.toISOString()};exports.StatusEnum=a,exports.createEntitySlice=function(e){var t,n,c,i=e.name,s=e.selectSliceState,d=e.selectShouldRequest,f=void 0===d?function(e,t){return t&&null===e.lastHydrated}:d,S=e.selectCanRequest,y=void 0===S?function(e){return e.status!==a.Requesting&&null===e.error&&null===e.lastModified}:S,p=e.initialState,v=void 0===p?{}:p,m=e.createTimestamp,M=void 0===m?u:m,O=function(e,t){e.ids=t.ids,e.entities=t.entities},q=function(e,t){e.lastModified=t},x=function(e,t){O(e,t),q(e,M())},h=function(e,t){O(e,t),q(e,null),function(e,t){e.lastHydrated=t}(e,M())},R=r.createEntityAdapter({selectId:e.selectId,sortComparer:e.sortComparer}),g=(void 0===(t=R.getInitialState(v))&&(t={}),o({},l(t),{ids:null!=(n=t.ids)?n:[],entities:null!=(c=t.entities)?c:{}})),H=r.createSlice({name:i,initialState:g,reducers:{addOne:function(e,t){var r=R.addOne(e,t.payload);x(e,r)},addMany:function(e,t){var r=R.addMany(e,t.payload);x(e,r)},hydrateOne:function(e,t){var r=R.upsertOne(e,t.payload);h(e,r)},hydrateMany:function(e,t){var r=R.upsertMany(e,t.payload);h(e,r)},hydrateAll:function(e,t){var r=R.setAll(e,t.payload);h(e,r)},updateOne:function(e,t){var r=R.updateOne(e,t.payload);x(e,r)},updateMany:function(e,t){var r=R.updateMany(e,t.payload);x(e,r)},upsertOne:function(e,t){var r=R.upsertOne(e,t.payload);x(e,r)},upsertMany:function(e,t){var r=R.upsertMany(e,t.payload);x(e,r)},removeOne:function(e,t){var r=R.removeOne(e,t.payload);x(e,r)},removeMany:function(e,t){var r=R.removeMany(e,t.payload);x(e,r)},removeAll:function(e){var t=R.removeAll(e);x(e,t)},reset:function(){return g},setAll:function(e,t){var r=R.setAll(e,t.payload);x(e,r)},setError:function(e,t){!function(e,t){e.error=null===t?null:t}(e,t.payload)},setStatus:function(e,t){!function(e,t){e.status=t}(e,t.payload)},setMetaState:function(e,t){var n,a;e.status=null!=(n=r.createNextState(e.status,(function(){return t.payload.status})))?n:e.status,e.error=null!=(a=r.createNextState(e.error,(function(){return t.payload.error})))?a:e.error}}}),A=R.getSelectors((function(e){return s(e)})),E={selectIds:A.selectIds,selectEntities:A.selectEntities,selectAll:A.selectAll,selectTotal:A.selectTotal,selectById:A.selectById,selectSliceState:r.createSelector([s],(function(e){return e})),selectStatus:r.createSelector([s],(function(e){return e.status})),selectError:r.createSelector([s],(function(e){return e.error})),selectLastModified:r.createSelector([s],(function(e){return e.lastModified})),selectLastHydrated:r.createSelector([s],(function(e){return e.lastHydrated})),selectCanRequest:r.createSelector([s],(function(e){return y(e)})),selectShouldRequest:r.createSelector([s],(function(e){return f(e,y(e))}))};return{name:H.name,reducer:H.reducer,actions:H.actions,selectors:E}},exports.createModelSlice=function(e){var t,a=e.name,c=e.handleUpdate,i=void 0===c?function(e,t){return n(e,t)}:c,s=e.selectSliceState,d=e.selectCanRequest,f=void 0===d?function(e){return"Requesting"!==e.status&&null===e.error&&null===e.lastModified}:d,S=e.selectShouldRequest,y=void 0===S?function(e,t){return t&&null===e.lastHydrated}:S,p=e.initialState,v=e.createTimestamp,m=void 0===v?u:v,M=(void 0===(t=void 0===p?{}:p)&&(t={}),o({},l(t),{model:t.model})),O=r.createSlice({name:a,initialState:M,reducers:{hydrate:function(e,t){e.model=r.createNextState(e.model,(function(){return t.payload})),e.lastModified=null,e.lastHydrated=m()},update:function(e,t){e.model=r.createNextState(e.model,(function(){return i(e.model,t.payload)})),e.lastModified=m()},reset:function(){return M},set:function(e,t){e.model=r.createNextState(e.model,(function(){return t.payload})),e.lastModified=m()},setError:function(e,t){e.error=r.createNextState(e.error,(function(){return t.payload}))},setStatus:function(e,t){e.status=r.createNextState(e.status,(function(){return t.payload}))},setMetaState:function(e,t){var n,a;e.status=null!=(n=r.createNextState(e.status,(function(){return t.payload.status})))?n:e.status,e.error=null!=(a=r.createNextState(e.error,(function(){return t.payload.error})))?a:e.error}}}),q={selectSliceState:r.createSelector([s],(function(e){return e})),selectModel:r.createSelector([s],(function(e){return e.model})),selectStatus:r.createSelector([s],(function(e){return e.status})),selectError:r.createSelector([s],(function(e){return e.error})),selectLastModified:r.createSelector([s],(function(e){return e.lastModified})),selectLastHydrated:r.createSelector([s],(function(e){return e.lastHydrated})),selectCanRequest:r.createSelector([s],(function(e){return f(e)})),selectShouldRequest:r.createSelector([s],(function(e){return y(e,f(e))}))};return{name:O.name,reducer:O.reducer,actions:O.actions,selectors:q}};
//# sourceMappingURL=redux-slice-factory.cjs.production.min.js.map