@typescript-tea/core
Advanced tools
Comparing version 0.5.1 to 0.6.0
@@ -8,4 +8,10 @@ # Change Log | ||
## [Unreleased](https://github.com/typescript-tea/core/compare/v0.5.1...master) | ||
## [Unreleased](https://github.com/typescript-tea/core/compare/v0.6.0...master) | ||
## [0.6.0](https://github.com/typescript-tea/core/compare/v0.5.1...0.6.0) - 2022-07-05 | ||
### Added | ||
- Do not call view()/render() when state has not changed (#14) | ||
## [0.5.1](https://github.com/typescript-tea/core/compare/v0.5.0...0.5.1) - 2021-05-23 | ||
@@ -12,0 +18,0 @@ |
@@ -1,2 +0,2 @@ | ||
function r(r){var t=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var n=t[r];if(!n)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return n}}function t(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function n(r,t){return void 0===t?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:t}}function e(r,t,n,o,i){if(void 0===i&&(i=void 0),"__internal"===o.home){var a=o;switch(a.type){case"Batched":return void a.list.flatMap(function(o){return e(r,t,n,o,i)});case"Mapped":return void e(r,t,n,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(o.home);t[o.home]||(t[o.home]={cmds:[],subs:[]}),(n?t[o.home].cmds:t[o.home].subs).push(i?(n?u.mapCmd:u.mapSub)(i,o):o)}}var o={__proto__:null,run:function(t,n,o,i){void 0===i&&(i=[]);var a,u=r(i),f=t.update,c=t.view,s=t.subscriptions,p={},l=[],v=!1,h=!1,d=[];function m(){if(v&&!h){for(h=!0;d.length>0;){var r=d.shift();r.dispatch(r.action)}h=!1}}function _(r){v&&g(f(r,a))}var b=function(r){return function(t){w(function(r){return function(t){if(v){var n=u(r),e=b(r);p[r]=n.onSelfAction(y,e,t,p[r])}}}(r),t)}},y=function(r){w(_,r)};function w(r,t){v&&(d.push({dispatch:r,action:t}),m())}function g(r){a=r[0];var t=r[1],n=s&&s(a),f={};t&&e(u,f,!0,t),n&&e(u,f,!1,n);var l=i,v=Array.isArray(l),h=0;for(l=v?l:l[Symbol.iterator]();;){var d,m;if(v){if(h>=l.length)break;m=l[h++]}else{if((h=l.next()).done)break;m=h.value}var _=m.home,w=null!=(d=f[_])?d:{cmds:[],subs:[]},g=w.cmds,k=w.subs,E=u(_);p[_]=E.onEffects(y,b(_),g,k,p[_])}o(c({state:a,dispatch:y}))}return function(){var r=i,t=Array.isArray(r),n=0;for(r=t?r:r[Symbol.iterator]();;){var e;if(t){if(n>=r.length)break;e=r[n++]}else{if((n=r.next()).done)break;e=n.value}l.push(e.setup(y,b(e.home)))}}(),v=!0,g(t.init(n)),m(),function(){v&&(v=!1,function(){var r=l,t=Array.isArray(r),n=0;for(r=t?r:r[Symbol.iterator]();;){var e;if(t){if(n>=r.length)break;e=r[n++]}else{if((n=r.next()).done)break;e=n.value}e()}}())}}},i=new Map;function a(r){return{type:"Ok",value:r}}function u(r){return{type:"Err",error:r}}var f=o,c={__proto__:null,map:function(r,t){var n=i.get(t),e=n&&n.get(r);if(e)return e;var o=function(n){return t(r(n))};return n||(n=new Map,i.set(t,n)),n.set(r,o),o}},s={__proto__:null,batch:function(r){return t(r)},map:function(r,t){return n(r,t)}},p={__proto__:null,Ok:a,Err:u,mapError:function(r,t){switch(t.type){case"Ok":return a(t.value);case"Err":return u(r(t.error));default:throw new Error("Invalid result type "+t)}}};exports.Cmd={__proto__:null,batch:function(r){return t(r)},map:function(r,t){return n(r,t)}},exports.Dispatch=c,exports.Program=f,exports.Result=p,exports.Sub=s,exports.createGetEffectManager=r; | ||
function r(r){var t=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var n=t[r];if(!n)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return n}}function t(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function n(r,t){return void 0===t?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:t}}function e(r,t,n,o,i){if(void 0===i&&(i=void 0),"__internal"===o.home){var a=o;switch(a.type){case"Batched":return void a.list.flatMap(function(o){return e(r,t,n,o,i)});case"Mapped":return void e(r,t,n,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(o.home);t[o.home]||(t[o.home]={cmds:[],subs:[]}),(n?t[o.home].cmds:t[o.home].subs).push(i?(n?u.mapCmd:u.mapSub)(i,o):o)}}var o={__proto__:null,run:function(t,n,o,i){void 0===i&&(i=[]);var a,u=r(i),f=t.update,c=t.view,s=t.subscriptions,p={},l=[],v=!1,h=!1,d=[],m={};function _(){if(v&&!h){for(h=!0;d.length>0;){var r=d.shift();r.dispatch(r.action)}h=!1}}function b(r){v&&k(f(r,a))}var y=function(r){return function(t){g(function(r){return function(t){if(v){var n=u(r),e=y(r);p[r]=n.onSelfAction(w,e,t,p[r])}}}(r),t)}},w=function(r){g(b,r)};function g(r,t){v&&(d.push({dispatch:r,action:t}),_())}function k(r){a=r[0];var t=r[1],n=s&&s(a),f={};t&&e(u,f,!0,t),n&&e(u,f,!1,n);var l=i,v=Array.isArray(l),h=0;for(l=v?l:l[Symbol.iterator]();;){var d,_;if(v){if(h>=l.length)break;_=l[h++]}else{if((h=l.next()).done)break;_=h.value}var b=_.home,g=null!=(d=f[b])?d:{cmds:[],subs:[]},k=g.cmds,E=g.subs,M=u(b);p[b]=M.onEffects(w,y(b),k,E,p[b])}a!==m&&(m=a,o(c({state:a,dispatch:w})))}return function(){var r=i,t=Array.isArray(r),n=0;for(r=t?r:r[Symbol.iterator]();;){var e;if(t){if(n>=r.length)break;e=r[n++]}else{if((n=r.next()).done)break;e=n.value}l.push(e.setup(w,y(e.home)))}}(),v=!0,k(t.init(n)),_(),function(){v&&(v=!1,function(){var r=l,t=Array.isArray(r),n=0;for(r=t?r:r[Symbol.iterator]();;){var e;if(t){if(n>=r.length)break;e=r[n++]}else{if((n=r.next()).done)break;e=n.value}e()}}())}}},i=new Map;function a(r){return{type:"Ok",value:r}}function u(r){return{type:"Err",error:r}}var f=o,c={__proto__:null,map:function(r,t){var n=i.get(t),e=n&&n.get(r);if(e)return e;var o=function(n){return t(r(n))};return n||(n=new Map,i.set(t,n)),n.set(r,o),o}},s={__proto__:null,batch:function(r){return t(r)},map:function(r,t){return n(r,t)}},p={__proto__:null,Ok:a,Err:u,mapError:function(r,t){switch(t.type){case"Ok":return a(t.value);case"Err":return u(r(t.error));default:throw new Error("Invalid result type "+t)}}};exports.Cmd={__proto__:null,batch:function(r){return t(r)},map:function(r,t){return n(r,t)}},exports.Dispatch=c,exports.Program=f,exports.Result=p,exports.Sub=s,exports.createGetEffectManager=r; | ||
//# sourceMappingURL=core.js.map |
@@ -1,2 +0,2 @@ | ||
function r(r){var n=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var t=n[r];if(!t)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return t}}function n(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function t(r,n){return void 0===n?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:n}}function e(r,n,t,o,i){if(void 0===i&&(i=void 0),"__internal"===o.home){var a=o;switch(a.type){case"Batched":return void a.list.flatMap(function(o){return e(r,n,t,o,i)});case"Mapped":return void e(r,n,t,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(o.home);n[o.home]||(n[o.home]={cmds:[],subs:[]}),(t?n[o.home].cmds:n[o.home].subs).push(i?(t?u.mapCmd:u.mapSub)(i,o):o)}}var o={__proto__:null,run:function(n,t,o,i){void 0===i&&(i=[]);var a,u=r(i),f=n.update,c=n.view,s=n.subscriptions,l={},p=[],v=!1,h=!1,d=[];function m(){if(v&&!h){for(h=!0;d.length>0;){var r=d.shift();r.dispatch(r.action)}h=!1}}function _(r){v&&k(f(r,a))}var b=function(r){return function(n){w(function(r){return function(n){if(v){var t=u(r),e=b(r);l[r]=t.onSelfAction(y,e,n,l[r])}}}(r),n)}},y=function(r){w(_,r)};function w(r,n){v&&(d.push({dispatch:r,action:n}),m())}function k(r){a=r[0];var n=r[1],t=s&&s(a),f={};n&&e(u,f,!0,n),t&&e(u,f,!1,t);var p=i,v=Array.isArray(p),h=0;for(p=v?p:p[Symbol.iterator]();;){var d,m;if(v){if(h>=p.length)break;m=p[h++]}else{if((h=p.next()).done)break;m=h.value}var _=m.home,w=null!=(d=f[_])?d:{cmds:[],subs:[]},k=w.cmds,g=w.subs,E=u(_);l[_]=E.onEffects(y,b(_),k,g,l[_])}o(c({state:a,dispatch:y}))}return function(){var r=i,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}p.push(e.setup(y,b(e.home)))}}(),v=!0,k(n.init(t)),m(),function(){v&&(v=!1,function(){var r=p,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}e()}}())}}},i=new Map;function a(r){return{type:"Ok",value:r}}function u(r){return{type:"Err",error:r}}var f=o,c={__proto__:null,map:function(r,n){var t=i.get(n),e=t&&t.get(r);if(e)return e;var o=function(t){return n(r(t))};return t||(t=new Map,i.set(n,t)),t.set(r,o),o}},s={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},l={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},p={__proto__:null,Ok:a,Err:u,mapError:function(r,n){switch(n.type){case"Ok":return a(n.value);case"Err":return u(r(n.error));default:throw new Error("Invalid result type "+n)}}};export{s as Cmd,c as Dispatch,f as Program,p as Result,l as Sub,r as createGetEffectManager}; | ||
function r(r){var n=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var t=n[r];if(!t)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return t}}function n(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function t(r,n){return void 0===n?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:n}}function e(r,n,t,o,i){if(void 0===i&&(i=void 0),"__internal"===o.home){var a=o;switch(a.type){case"Batched":return void a.list.flatMap(function(o){return e(r,n,t,o,i)});case"Mapped":return void e(r,n,t,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(o.home);n[o.home]||(n[o.home]={cmds:[],subs:[]}),(t?n[o.home].cmds:n[o.home].subs).push(i?(t?u.mapCmd:u.mapSub)(i,o):o)}}var o={__proto__:null,run:function(n,t,o,i){void 0===i&&(i=[]);var a,u=r(i),f=n.update,c=n.view,s=n.subscriptions,l={},p=[],v=!1,h=!1,d=[],m={};function _(){if(v&&!h){for(h=!0;d.length>0;){var r=d.shift();r.dispatch(r.action)}h=!1}}function b(r){v&&g(f(r,a))}var y=function(r){return function(n){k(function(r){return function(n){if(v){var t=u(r),e=y(r);l[r]=t.onSelfAction(w,e,n,l[r])}}}(r),n)}},w=function(r){k(b,r)};function k(r,n){v&&(d.push({dispatch:r,action:n}),_())}function g(r){a=r[0];var n=r[1],t=s&&s(a),f={};n&&e(u,f,!0,n),t&&e(u,f,!1,t);var p=i,v=Array.isArray(p),h=0;for(p=v?p:p[Symbol.iterator]();;){var d,_;if(v){if(h>=p.length)break;_=p[h++]}else{if((h=p.next()).done)break;_=h.value}var b=_.home,k=null!=(d=f[b])?d:{cmds:[],subs:[]},g=k.cmds,E=k.subs,M=u(b);l[b]=M.onEffects(w,y(b),g,E,l[b])}a!==m&&(m=a,o(c({state:a,dispatch:w})))}return function(){var r=i,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}p.push(e.setup(w,y(e.home)))}}(),v=!0,g(n.init(t)),_(),function(){v&&(v=!1,function(){var r=p,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}e()}}())}}},i=new Map;function a(r){return{type:"Ok",value:r}}function u(r){return{type:"Err",error:r}}var f=o,c={__proto__:null,map:function(r,n){var t=i.get(n),e=t&&t.get(r);if(e)return e;var o=function(t){return n(r(t))};return t||(t=new Map,i.set(n,t)),t.set(r,o),o}},s={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},l={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},p={__proto__:null,Ok:a,Err:u,mapError:function(r,n){switch(n.type){case"Ok":return a(n.value);case"Err":return u(r(n.error));default:throw new Error("Invalid result type "+n)}}};export{s as Cmd,c as Dispatch,f as Program,p as Result,l as Sub,r as createGetEffectManager}; | ||
//# sourceMappingURL=core.m.js.map |
@@ -1,2 +0,2 @@ | ||
function r(r){var n=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var t=n[r];if(!t)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return t}}function n(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function t(r,n){return void 0===n?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:n}}function e(r,n,t,o,i){if(void 0===i&&(i=void 0),"__internal"===o.home){var a=o;switch(a.type){case"Batched":return void a.list.flatMap(function(o){return e(r,n,t,o,i)});case"Mapped":return void e(r,n,t,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(o.home);n[o.home]||(n[o.home]={cmds:[],subs:[]}),(t?n[o.home].cmds:n[o.home].subs).push(i?(t?u.mapCmd:u.mapSub)(i,o):o)}}var o={__proto__:null,run:function(n,t,o,i){void 0===i&&(i=[]);var a,u=r(i),f=n.update,c=n.view,s=n.subscriptions,l={},p=[],v=!1,h=!1,d=[];function m(){if(v&&!h){for(h=!0;d.length>0;){var r=d.shift();r.dispatch(r.action)}h=!1}}function _(r){v&&k(f(r,a))}var b=function(r){return function(n){w(function(r){return function(n){if(v){var t=u(r),e=b(r);l[r]=t.onSelfAction(y,e,n,l[r])}}}(r),n)}},y=function(r){w(_,r)};function w(r,n){v&&(d.push({dispatch:r,action:n}),m())}function k(r){a=r[0];var n=r[1],t=s&&s(a),f={};n&&e(u,f,!0,n),t&&e(u,f,!1,t);var p=i,v=Array.isArray(p),h=0;for(p=v?p:p[Symbol.iterator]();;){var d,m;if(v){if(h>=p.length)break;m=p[h++]}else{if((h=p.next()).done)break;m=h.value}var _=m.home,w=null!=(d=f[_])?d:{cmds:[],subs:[]},k=w.cmds,g=w.subs,E=u(_);l[_]=E.onEffects(y,b(_),k,g,l[_])}o(c({state:a,dispatch:y}))}return function(){var r=i,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}p.push(e.setup(y,b(e.home)))}}(),v=!0,k(n.init(t)),m(),function(){v&&(v=!1,function(){var r=p,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}e()}}())}}},i=new Map;function a(r){return{type:"Ok",value:r}}function u(r){return{type:"Err",error:r}}var f=o,c={__proto__:null,map:function(r,n){var t=i.get(n),e=t&&t.get(r);if(e)return e;var o=function(t){return n(r(t))};return t||(t=new Map,i.set(n,t)),t.set(r,o),o}},s={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},l={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},p={__proto__:null,Ok:a,Err:u,mapError:function(r,n){switch(n.type){case"Ok":return a(n.value);case"Err":return u(r(n.error));default:throw new Error("Invalid result type "+n)}}};export{s as Cmd,c as Dispatch,f as Program,p as Result,l as Sub,r as createGetEffectManager}; | ||
function r(r){var n=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var t=n[r];if(!t)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return t}}function n(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function t(r,n){return void 0===n?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:n}}function e(r,n,t,o,i){if(void 0===i&&(i=void 0),"__internal"===o.home){var a=o;switch(a.type){case"Batched":return void a.list.flatMap(function(o){return e(r,n,t,o,i)});case"Mapped":return void e(r,n,t,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(o.home);n[o.home]||(n[o.home]={cmds:[],subs:[]}),(t?n[o.home].cmds:n[o.home].subs).push(i?(t?u.mapCmd:u.mapSub)(i,o):o)}}var o={__proto__:null,run:function(n,t,o,i){void 0===i&&(i=[]);var a,u=r(i),f=n.update,c=n.view,s=n.subscriptions,l={},p=[],v=!1,h=!1,d=[],m={};function _(){if(v&&!h){for(h=!0;d.length>0;){var r=d.shift();r.dispatch(r.action)}h=!1}}function b(r){v&&g(f(r,a))}var y=function(r){return function(n){k(function(r){return function(n){if(v){var t=u(r),e=y(r);l[r]=t.onSelfAction(w,e,n,l[r])}}}(r),n)}},w=function(r){k(b,r)};function k(r,n){v&&(d.push({dispatch:r,action:n}),_())}function g(r){a=r[0];var n=r[1],t=s&&s(a),f={};n&&e(u,f,!0,n),t&&e(u,f,!1,t);var p=i,v=Array.isArray(p),h=0;for(p=v?p:p[Symbol.iterator]();;){var d,_;if(v){if(h>=p.length)break;_=p[h++]}else{if((h=p.next()).done)break;_=h.value}var b=_.home,k=null!=(d=f[b])?d:{cmds:[],subs:[]},g=k.cmds,E=k.subs,M=u(b);l[b]=M.onEffects(w,y(b),g,E,l[b])}a!==m&&(m=a,o(c({state:a,dispatch:w})))}return function(){var r=i,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}p.push(e.setup(w,y(e.home)))}}(),v=!0,g(n.init(t)),_(),function(){v&&(v=!1,function(){var r=p,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}e()}}())}}},i=new Map;function a(r){return{type:"Ok",value:r}}function u(r){return{type:"Err",error:r}}var f=o,c={__proto__:null,map:function(r,n){var t=i.get(n),e=t&&t.get(r);if(e)return e;var o=function(t){return n(r(t))};return t||(t=new Map,i.set(n,t)),t.set(r,o),o}},s={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},l={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},p={__proto__:null,Ok:a,Err:u,mapError:function(r,n){switch(n.type){case"Ok":return a(n.value);case"Err":return u(r(n.error));default:throw new Error("Invalid result type "+n)}}};export{s as Cmd,c as Dispatch,f as Program,p as Result,l as Sub,r as createGetEffectManager}; | ||
//# sourceMappingURL=core.modern.js.map |
@@ -1,2 +0,2 @@ | ||
!function(r,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((r=r||self).core={})}(this,function(r){function n(r){var n=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var t=n[r];if(!t)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return t}}function t(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function e(r,n){return void 0===n?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:n}}function o(r,n,t,e,i){if(void 0===i&&(i=void 0),"__internal"===e.home){var a=e;switch(a.type){case"Batched":return void a.list.flatMap(function(e){return o(r,n,t,e,i)});case"Mapped":return void o(r,n,t,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(e.home);n[e.home]||(n[e.home]={cmds:[],subs:[]}),(t?n[e.home].cmds:n[e.home].subs).push(i?(t?u.mapCmd:u.mapSub)(i,e):e)}}var i={__proto__:null,run:function(r,t,e,i){void 0===i&&(i=[]);var a,u=n(i),f=r.update,c=r.view,s=r.subscriptions,p={},l=[],d=!1,v=!1,h=[];function m(){if(d&&!v){for(v=!0;h.length>0;){var r=h.shift();r.dispatch(r.action)}v=!1}}function _(r){d&&g(f(r,a))}var b=function(r){return function(n){w(function(r){return function(n){if(d){var t=u(r),e=b(r);p[r]=t.onSelfAction(y,e,n,p[r])}}}(r),n)}},y=function(r){w(_,r)};function w(r,n){d&&(h.push({dispatch:r,action:n}),m())}function g(r){a=r[0];var n=r[1],t=s&&s(a),f={};n&&o(u,f,!0,n),t&&o(u,f,!1,t);var l=i,d=Array.isArray(l),v=0;for(l=d?l:l[Symbol.iterator]();;){var h,m;if(d){if(v>=l.length)break;m=l[v++]}else{if((v=l.next()).done)break;m=v.value}var _=m.home,w=null!=(h=f[_])?h:{cmds:[],subs:[]},g=w.cmds,k=w.subs,E=u(_);p[_]=E.onEffects(y,b(_),g,k,p[_])}e(c({state:a,dispatch:y}))}return function(){var r=i,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}l.push(e.setup(y,b(e.home)))}}(),d=!0,g(r.init(t)),m(),function(){d&&(d=!1,function(){var r=l,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}e()}}())}}},a=new Map;function u(r){return{type:"Ok",value:r}}function f(r){return{type:"Err",error:r}}var c=i,s={__proto__:null,map:function(r,n){var t=a.get(n),e=t&&t.get(r);if(e)return e;var o=function(t){return n(r(t))};return t||(t=new Map,a.set(n,t)),t.set(r,o),o}},p={__proto__:null,batch:function(r){return t(r)},map:function(r,n){return e(r,n)}},l={__proto__:null,Ok:u,Err:f,mapError:function(r,n){switch(n.type){case"Ok":return u(n.value);case"Err":return f(r(n.error));default:throw new Error("Invalid result type "+n)}}};r.Cmd={__proto__:null,batch:function(r){return t(r)},map:function(r,n){return e(r,n)}},r.Dispatch=s,r.Program=c,r.Result=l,r.Sub=p,r.createGetEffectManager=n}); | ||
!function(r,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((r=r||self).core={})}(this,function(r){function n(r){var n=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var t=n[r];if(!t)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return t}}function t(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function e(r,n){return void 0===n?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:n}}function o(r,n,t,e,i){if(void 0===i&&(i=void 0),"__internal"===e.home){var a=e;switch(a.type){case"Batched":return void a.list.flatMap(function(e){return o(r,n,t,e,i)});case"Mapped":return void o(r,n,t,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(e.home);n[e.home]||(n[e.home]={cmds:[],subs:[]}),(t?n[e.home].cmds:n[e.home].subs).push(i?(t?u.mapCmd:u.mapSub)(i,e):e)}}var i={__proto__:null,run:function(r,t,e,i){void 0===i&&(i=[]);var a,u=n(i),f=r.update,c=r.view,s=r.subscriptions,p={},l=[],d=!1,v=!1,h=[],m={};function _(){if(d&&!v){for(v=!0;h.length>0;){var r=h.shift();r.dispatch(r.action)}v=!1}}function b(r){d&&k(f(r,a))}var y=function(r){return function(n){g(function(r){return function(n){if(d){var t=u(r),e=y(r);p[r]=t.onSelfAction(w,e,n,p[r])}}}(r),n)}},w=function(r){g(b,r)};function g(r,n){d&&(h.push({dispatch:r,action:n}),_())}function k(r){a=r[0];var n=r[1],t=s&&s(a),f={};n&&o(u,f,!0,n),t&&o(u,f,!1,t);var l=i,d=Array.isArray(l),v=0;for(l=d?l:l[Symbol.iterator]();;){var h,_;if(d){if(v>=l.length)break;_=l[v++]}else{if((v=l.next()).done)break;_=v.value}var b=_.home,g=null!=(h=f[b])?h:{cmds:[],subs:[]},k=g.cmds,E=g.subs,M=u(b);p[b]=M.onEffects(w,y(b),k,E,p[b])}a!==m&&(m=a,e(c({state:a,dispatch:w})))}return function(){var r=i,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}l.push(e.setup(w,y(e.home)))}}(),d=!0,k(r.init(t)),_(),function(){d&&(d=!1,function(){var r=l,n=Array.isArray(r),t=0;for(r=n?r:r[Symbol.iterator]();;){var e;if(n){if(t>=r.length)break;e=r[t++]}else{if((t=r.next()).done)break;e=t.value}e()}}())}}},a=new Map;function u(r){return{type:"Ok",value:r}}function f(r){return{type:"Err",error:r}}var c=i,s={__proto__:null,map:function(r,n){var t=a.get(n),e=t&&t.get(r);if(e)return e;var o=function(t){return n(r(t))};return t||(t=new Map,a.set(n,t)),t.set(r,o),o}},p={__proto__:null,batch:function(r){return t(r)},map:function(r,n){return e(r,n)}},l={__proto__:null,Ok:u,Err:f,mapError:function(r,n){switch(n.type){case"Ok":return u(n.value);case"Err":return f(r(n.error));default:throw new Error("Invalid result type "+n)}}};r.Cmd={__proto__:null,batch:function(r){return t(r)},map:function(r,n){return e(r,n)}},r.Dispatch=s,r.Program=c,r.Result=l,r.Sub=p,r.createGetEffectManager=n}); | ||
//# sourceMappingURL=core.umd.js.map |
{ | ||
"name": "@typescript-tea/core", | ||
"version": "0.5.1", | ||
"version": "0.6.0", | ||
"description": "The Elm Architecture for typescript", | ||
@@ -5,0 +5,0 @@ "main": "dist/core.js", |
@@ -76,3 +76,3 @@ /* eslint-disable functional/prefer-readonly-type */ | ||
* onEffects must be called with undefined subscriptions becuase | ||
* the previous call may have had subscriptions so teh effect | ||
* the previous call may have had subscriptions so the effect | ||
* manager must know to clear those subscriptions when undefined | ||
@@ -103,1 +103,50 @@ * is returned from program.subscription(). | ||
}); | ||
/** | ||
* If state has not changed then calling render is not useful. | ||
* In some circumstances there are actions that happen that | ||
* the application does not want to handle. In those cases the application | ||
* returns the old state, however calling view() and render() in that case | ||
* will case uncecessary overheadas it will be called with the same state as before | ||
* and therefor return the same result as before sinc view must be a pure function. | ||
*/ | ||
test("Do not call view/render if state has not changed", () => { | ||
// Create mocks | ||
const mp = createMockProgram(); | ||
const mr = createMockRender(); | ||
// Setup mocks | ||
mp.init.mockImplementation(() => [1]); | ||
mp.update.mockImplementation(() => [1]); | ||
mp.view.mockImplementationOnce(({ state, dispatch }) => { | ||
expect(state).toEqual(1); | ||
dispatch("action"); | ||
}); | ||
// Run | ||
run(mp, undefined, mr, []); | ||
expect(mp.init).toBeCalledTimes(1); | ||
expect(mp.update).toBeCalledTimes(1); | ||
expect(mp.view).toBeCalledTimes(1); | ||
expect(mr).toBeCalledTimes(1); | ||
}); | ||
/** | ||
* When the state changes, view()/render() should be called. | ||
*/ | ||
test("Do call view/render if state has changed", () => { | ||
// Create mocks | ||
const mp = createMockProgram(); | ||
const mr = createMockRender(); | ||
// Setup mocks | ||
mp.init.mockImplementation(() => [1]); | ||
mp.update.mockImplementation(() => [2]); | ||
mp.view.mockImplementationOnce(({ state, dispatch }) => { | ||
expect(state).toEqual(1); | ||
dispatch("action"); | ||
}); | ||
// Run | ||
run(mp, undefined, mr, []); | ||
expect(mp.init).toBeCalledTimes(1); | ||
expect(mp.update).toBeCalledTimes(1); | ||
expect(mp.view).toBeCalledTimes(2); | ||
expect(mr).toBeCalledTimes(2); | ||
}); |
@@ -44,2 +44,4 @@ import { Cmd } from "./cmd"; | ||
}> = []; | ||
// Init to an object that the appliction has no reference to so intial change always runs | ||
let prevState = {}; | ||
@@ -116,3 +118,6 @@ function processActions(): void { | ||
} | ||
render(view({ state, dispatch: enqueueProgramAction })); | ||
if (state !== prevState) { | ||
prevState = state; | ||
render(view({ state, dispatch: enqueueProgramAction })); | ||
} | ||
} | ||
@@ -119,0 +124,0 @@ |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
171752
1116