redux-resource
Version:
Resource management for Redux.
2 lines (1 loc) • 9.75 kB
JavaScript
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r(e.ReduxResource={})}(this,function(e){"use strict";function C(e,r,t){return r in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var g="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},U=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var i in t)Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i])}return e};function y(n,e,r){if(!e)return n;var u=void 0===r||r,o=Object.assign({},n);if(Array.isArray(e))e.forEach(function(e){var r="object"===(void 0===e?"undefined":g(e)),t=r?e.id:e;if(t||0===t){var i=r?e:{id:e};if(!!!n[t])return o[t]=i,o;var s=void 0;if(u)s=Object.assign({},o[t],i);else s=i;o[t]=s}});else for(var t in e){var i=e[t];if(!!n[t]){var s=void 0;if(u)s=Object.assign({},o[t],i);else s=U({},i);o[t]=s}else o[t]=i}return o}function o(a,e){var d=e.initialResourceMeta;return function(E,e){if("UPDATE_RESOURCES"!==e.type&&"DELETE_RESOURCES"!==e.type)return E;var c=e.resources&&e.resources[a],f=e.meta&&e.meta[a],r=e.lists&&e.lists[a];if("UPDATE_RESOURCES"===e.type){var t=void 0;t="boolean"==typeof e.mergeResources?e.mergeResources:"object"!==g(e.mergeResources)||e.mergeResources[a];var i=void 0;i="boolean"==typeof e.mergeMeta?e.mergeMeta:"object"!==g(e.mergeMeta)||e.mergeMeta[a];var s=y(E.resources,c,t),n=void 0;n=Array.isArray(f)?E.meta:function(e,r,t){if(!r)return e;var i=void 0===t||t,s=Object.assign({},e);for(var n in r){var u=r[n];if(!!e[n]){var o=void 0;if(i)o=Object.assign({},s[n],u);else o=u;s[n]=o}else s[n]=u}return s}(E.meta,f,i);var u=E.lists;return r&&(u=U({},E.lists,r)),U({},E,e.resourceSliceAttributes,{resources:s,meta:n,lists:u})}var o=function(){var r=void 0,e=(r=c&&c.map?c.map(function(e){return"object"===(void 0===e?"undefined":g(e))?e.id:e}):Object.keys(c||{}))&&r.length;if(!e)return{v:E};var t,i={},s=E.meta,n=E.lists;for(var u in n){i[u]=n[u].filter(function(e){return!r.includes(e)})}var o=r.reduce(function(e,r){return e[r]=U({},O,d,(f||{})[r],{deleteStatus:_.SUCCEEDED}),e},{});t=U({},s,o);var a=Object.assign({},E.resources);return e&&r.forEach(function(e){delete a[e]}),{v:U({},E,{meta:t,lists:i,resources:a})}}();return"object"===(void 0===o?"undefined":g(o))?o.v:void 0}}var _={IDLE:"IDLE",PENDING:"PENDING",FAILED:"FAILED",SUCCEEDED:"SUCCEEDED"},O={createStatus:_.IDLE,readStatus:_.IDLE,updateStatus:_.IDLE,deleteStatus:_.IDLE};function m(e){var r=e.resources,s=e.newMeta,t=e.meta,i=e.mergeMeta,n=e.initialResourceMeta,u=void 0===n?{}:n,o=U({},t);if(!r)return t;var a=void 0===i||i,E=Array.isArray(r)?r:Object.values(r);return E.length&&E.forEach(function(e){var r="object"===(void 0===e?"undefined":g(e))?e.id:e;if(!(!r&&0!==r||"string"!=typeof r&&"number"!=typeof r)){var t=o[r],i=void 0;i=t?U({},u,t):u,o[r]=U({},a?i:u,s)}}),o}function r(v,l){return function(e,r){var t=(2<arguments.length&&void 0!==arguments[2]?arguments[2]:{}).initialResourceMeta,i=r.resources,s=r.mergeMeta,n=void 0,u=void 0;r.request&&"string"==typeof r.request&&(n=u=r.request),r.requestKey&&"string"==typeof r.requestKey&&(n=r.requestKey),r.requestName&&"string"==typeof r.requestName&&(u=r.requestName);var o=void 0;o=i?i.map(function(e){return"object"===(void 0===e?"undefined":g(e))?e.id:e}):[];var a,E=v+"Status",c=void 0,f=void 0;if(!n&&!o.length)return e;if(n){var d=U({},e.requests[n]||{},r.requestProperties,{requestKey:n,resourceType:r.resourceType||r.resourceName,status:l});u&&(d.requestName=u),c=U({},e.requests,C({},n,d))}else c=e.requests;return a=U({},e.lists),f=o.length?m({meta:e.meta,newMeta:C({},E,l),resources:o,mergeMeta:s,initialResourceMeta:U({},O,t)}):e.meta,U({},e,{requests:c,lists:a,meta:f})}}function i(e,r,t,i){var s=t.initialResourceMeta,n=r.resources,u=void 0===n,o=n&&n.length,a=void 0,E=void 0;r.request&&"string"==typeof r.request&&(a=E=r.request),r.requestKey&&"string"==typeof r.requestKey&&(a=r.requestKey),r.requestName&&"string"==typeof r.requestName&&(E=r.requestName);var c=void 0;if(r.list&&"string"==typeof r.list&&(c=r.list),!o&&!a&&!c)return e;var f=y(e.resources,n,r.mergeResources),d=m({resources:n,meta:e.meta,newMeta:i,mergeMeta:r.mergeMeta,initialResourceMeta:s}),v=void 0;if(a){var l=U({},e.requests[a]||{},r.requestProperties,{resourceType:r.resourceType||r.resourceName,requestKey:a,status:_.SUCCEEDED});E&&(l.requestName=E);var D=void 0;o&&(D=n.map(function(e){return"object"===(void 0===e?"undefined":g(e))?e.id:e})),l.ids=D||[],v=U({},e.requests,C({},a,l))}else v=e.requests;var S=void 0;if(c){var R=e.lists[c]||[],p=void 0;!1===r.mergeListIds?o?p=n.map(function(e){return"object"===(void 0===e?"undefined":g(e))?e.id:e}):u||(p=[]):o&&(p=Array.prototype.slice.call(R),n.forEach(function(e){var r="object"===(void 0===e?"undefined":g(e))?e.id:e;p.includes(r)||p.push(r)})),S=U({},e.lists,C({},c,p||R))}else S=e.lists;return U({},e,{resources:f,meta:d,requests:v,lists:S})}var t=r("read",_.PENDING),s=r("read",_.FAILED),n=r("read",_.IDLE);var u={CREATE_RESOURCES_PENDING:r("create",_.PENDING),CREATE_RESOURCES_FAILED:r("create",_.FAILED),CREATE_RESOURCES_SUCCEEDED:function(e,r,t){return i(e,r,t,{readStatus:_.SUCCEEDED,createStatus:_.SUCCEEDED})},CREATE_RESOURCES_IDLE:r("create",_.IDLE),READ_RESOURCES_PENDING:t,READ_RESOURCES_FAILED:s,READ_RESOURCES_SUCCEEDED:function(e,r,t){return i(e,r,t,{readStatus:_.SUCCEEDED})},READ_RESOURCES_IDLE:n,UPDATE_RESOURCES_PENDING:r("update",_.PENDING),UPDATE_RESOURCES_FAILED:r("update",_.FAILED),UPDATE_RESOURCES_SUCCEEDED:function(e,r,t){return i(e,r,t,{updateStatus:_.SUCCEEDED})},UPDATE_RESOURCES_IDLE:r("update",_.IDLE),DELETE_RESOURCES_PENDING:r("delete",_.PENDING),DELETE_RESOURCES_FAILED:r("delete",_.FAILED),DELETE_RESOURCES_SUCCEEDED:function(e,r,t){var i=t.initialResourceMeta,s=r.resources,n=void 0,u=void 0;r.request&&"string"==typeof r.request&&(n=u=r.request),r.requestKey&&"string"==typeof r.requestKey&&(n=r.requestKey),r.requestName&&"string"==typeof r.requestName&&(u=r.requestName);var o=void 0;s&&s.map&&(o=s.map(function(e){return"object"===(void 0===e?"undefined":g(e))?e.id:e}));var a=o&&o.length;if(!a&&!n)return e;var E=void 0,c={},f={},d=e.meta,v=e.requests,l=e.lists;if(n){var D=U({},v[n]||{},r.requestProperties,{requestKey:n,resourceType:r.resourceType||r.resourceName,status:_.SUCCEEDED,ids:o||[]});u&&(D.requestName=u),f=U({},v,C({},n,D))}else f=v;for(var S in l){var R=l[S],p=void 0;a&&R?p=R.filter(function(e){return!o.includes(e)}):R&&(p=R),c[S]=p}if(a){var y=o.reduce(function(e,r){return e[r]=U({},O,i,{deleteStatus:_.SUCCEEDED}),e},{});E=U({},d,y)}else E=d;var m=Object.assign({},e.resources);return a&&o.forEach(function(e){delete m[e]}),U({},e,{meta:E,lists:c,requests:f,resources:m})},DELETE_RESOURCES_IDLE:r("delete",_.IDLE)};function a(s){var n={initialResourceMeta:U({},O,(1<arguments.length&&void 0!==arguments[1]?arguments[1]:{}).initialResourceMeta||{})};return function(e,r){var t=u[r.type],i=r.resourceType||r.resourceName;return i!==s?e:t&&i===s?t(e,r,n):e}}function E(e){var r;return C(r={},e+"_RESOURCES_PENDING",e+"_RESOURCES_PENDING"),C(r,e+"_RESOURCES_SUCCEEDED",e+"_RESOURCES_SUCCEEDED"),C(r,e+"_RESOURCES_FAILED",e+"_RESOURCES_FAILED"),C(r,e+"_RESOURCES_IDLE",e+"_RESOURCES_IDLE"),r}var c={UPDATE_RESOURCES:"UPDATE_RESOURCES",DELETE_RESOURCES:"DELETE_RESOURCES"},f=E("CREATE"),d=E("READ"),v=E("UPDATE"),l=E("DELETE"),D=U({},f,d,v,l),S=(U({},D,c),U({},D,c));function R(e,r,t){for(var i=function(e){for(var r=[],t=0,i=void 0,s=void 0,n=void 0,u=void 0;t<e.length;)i=e.indexOf(".",t),s=e.indexOf("[",t),t=-1===i&&-1===s?(r.push(e.slice(t,e.length)),e.length):-1===s||-1!==i&&i<s?(r.push(e.slice(t,i)),i+1):(t<s&&(r.push(e.slice(t,s)),t=s),'"'!==(n=e.slice(s+1,s+2))&&"'"!==n?(-1===(u=e.indexOf("]",s))&&(u=e.length),r.push(e.slice(t+1,u)),"."===e.slice(u+1,u+2)?u+2:u+1):(-1===(u=e.indexOf(n+"]",s))&&(u=e.length),r.push(e.slice(t+2,u)),"."===e.slice(u+2,u+3)?u+3:u+2));return r}(r),s=void 0,n=e,u=0;u<i.length;u++){var o=n[i[u]];if(void 0===o){s=_.IDLE;break}u===i.length-1&&(s=o),n=o}var a=s===_.IDLE,E=!!t;return{idle:a&&!E,pending:s===_.PENDING||a&&E,failed:s===_.FAILED,succeeded:s===_.SUCCEEDED}}function p(e){return e.reduce(function(e,r){return e[r.id]=r,e},{})}e.resourceReducer=function(r){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=t.plugins,i=void 0===e?[]:e,s=t.initialState,n=U({},{resources:{},meta:{},requests:{},lists:{}},void 0===s?{}:s,{resourceType:r}),u=i.concat(a,o).map(function(e){return e(r,t)});return function(e,r){var t=0<arguments.length&&void 0!==e?e:n,i=r;return function(r){return function(e,t){return r.reduceRight(function(e,r){return r(e,t)},e)}}(u)(t,i)}},e.actionTypes=S,e.requestStatuses=_,e.setResourceMeta=m,e.upsertResources=y,e.getStatus=function(r,e,t){if(!Array.isArray(e))return R(r,e,t);for(var i=e.map(function(e){return R(r,e,t)}),s=!0,n=!1,u=!1,o=!1,a=0,E=0,c=0;c<i.length;c++){var f=i[c];if(f.failed){u=!(s=!1);break}f.pending?E++:f.succeeded&&a++}return!u&&0<E?n=!(s=!1):a===i.length&&(o=!(s=!1)),{idle:s,pending:n,failed:u,succeeded:o}},e.getResources=function(r,e,t){var i=void 0;t&&t.byId&&(i=t.byId);var s=i?{}:[];if(!r)return s;var n=r.resources,u=void 0;if("function"==typeof e||!e){var o=e||function(){return!0},a=Object.values(n).filter(function(e){return o(e,r.meta[e.id],r)});return i?p(a):a}if("string"==typeof e){var E=r.lists[e];if(!E)return s;u=E}else u=e;if(!u||!u.length)return s;var c=u.map(function(e){return n[e]}).filter(Boolean);return i?p(c):c},Object.defineProperty(e,"__esModule",{value:!0})});