Socket
Socket
Sign inDemoInstall

@typescript-tea/core

Package Overview
Dependencies
0
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 0.5.0 to 0.5.1

src/__tests__/helpers/mock-effect-manager.ts

14

CHANGELOG.md

@@ -8,4 +8,16 @@ # Change Log

## [Unreleased](https://github.com/typescript-tea/core/compare/v0.4.0...master)
## [Unreleased](https://github.com/typescript-tea/core/compare/v0.5.1...master)
## [0.5.1](https://github.com/typescript-tea/core/compare/v0.5.0...0.5.1) - 2021-05-23
### Fixed
- Always call all effect managers so they get updated subscriptions even if there are no subscriptions anymore. See PR [#8](https://github.com/typescript-tea/core/pull/8) and See PR [#9](https://github.com/typescript-tea/core/pull/9).
## [0.5.0](https://github.com/typescript-tea/core/compare/v0.4.0...0.5.0) - 2020-10-22
### Added
- Add internal dummy field to preserve generic parameter of `Cmd<Action>` and `Sub<Action>`.
## [0.4.0](https://github.com/typescript-tea/core/compare/v0.3.0...0.4.0) - 2020-04-24

@@ -12,0 +24,0 @@

@@ -26,2 +26,3 @@ /**

* This field is only needed in order to preserve the generic type paramter Action
* @ignore
*/

@@ -28,0 +29,0 @@ readonly __$$dummy_tag?: Action;

2

dist/core.js

@@ -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),c=t.update,f=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(c(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),i={};t&&e(u,i,!0,t),n&&e(u,i,!1,n);for(var c=0,l=Object.keys(i);c<l.length;c++){var v=l[c],h=i[v],d=h.cmds,m=h.subs,_=u(v);p[v]=_.onEffects(y,b(v),d,m,p[v])}o(f({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 c=o,f={__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=f,exports.Program=c,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=[];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;
//# 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 u=o;switch(u.type){case"Batched":return void u.list.flatMap(function(o){return e(r,n,t,o,i)});case"Mapped":return void e(r,n,t,u.original,i?function(r){return i(u.actionMapper(r))}:u.actionMapper);default:throw new Error("Invalid result type "+u)}}else{var a=r(o.home);n[o.home]||(n[o.home]={cmds:[],subs:[]}),(t?n[o.home].cmds:n[o.home].subs).push(i?(t?a.mapCmd:a.mapSub)(i,o):o)}}var o={__proto__:null,run:function(n,t,o,i){void 0===i&&(i=[]);var u,a=r(i),c=n.update,f=n.view,s=n.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(c(r,u))}var b=function(r){return function(n){w(function(r){return function(n){if(v){var t=a(r),e=b(r);p[r]=t.onSelfAction(y,e,n,p[r])}}}(r),n)}},y=function(r){w(_,r)};function w(r,n){v&&(d.push({dispatch:r,action:n}),m())}function g(r){u=r[0];var n=r[1],t=s&&s(u),i={};n&&e(a,i,!0,n),t&&e(a,i,!1,t);for(var c=0,l=Object.keys(i);c<l.length;c++){var v=l[c],h=i[v],d=h.cmds,m=h.subs,_=a(v);p[v]=_.onEffects(y,b(v),d,m,p[v])}o(f({state:u,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)))}}(),v=!0,g(n.init(t)),m(),function(){v&&(v=!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()}}())}}},i=new Map;function u(r){return{type:"Ok",value:r}}function a(r){return{type:"Err",error:r}}var c=o,f={__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)}},p={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},l={__proto__:null,Ok:u,Err:a,mapError:function(r,n){switch(n.type){case"Ok":return u(n.value);case"Err":return a(r(n.error));default:throw new Error("Invalid result type "+n)}}};export{s as Cmd,f as Dispatch,c as Program,l as Result,p 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=[];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};
//# 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 u=o;switch(u.type){case"Batched":return void u.list.flatMap(function(o){return e(r,n,t,o,i)});case"Mapped":return void e(r,n,t,u.original,i?function(r){return i(u.actionMapper(r))}:u.actionMapper);default:throw new Error("Invalid result type "+u)}}else{var a=r(o.home);n[o.home]||(n[o.home]={cmds:[],subs:[]}),(t?n[o.home].cmds:n[o.home].subs).push(i?(t?a.mapCmd:a.mapSub)(i,o):o)}}var o={__proto__:null,run:function(n,t,o,i){void 0===i&&(i=[]);var u,a=r(i),c=n.update,f=n.view,s=n.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(c(r,u))}var b=function(r){return function(n){w(function(r){return function(n){if(v){var t=a(r),e=b(r);p[r]=t.onSelfAction(y,e,n,p[r])}}}(r),n)}},y=function(r){w(_,r)};function w(r,n){v&&(d.push({dispatch:r,action:n}),m())}function g(r){u=r[0];var n=r[1],t=s&&s(u),i={};n&&e(a,i,!0,n),t&&e(a,i,!1,t);for(var c=0,l=Object.keys(i);c<l.length;c++){var v=l[c],h=i[v],d=h.cmds,m=h.subs,_=a(v);p[v]=_.onEffects(y,b(v),d,m,p[v])}o(f({state:u,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)))}}(),v=!0,g(n.init(t)),m(),function(){v&&(v=!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()}}())}}},i=new Map;function u(r){return{type:"Ok",value:r}}function a(r){return{type:"Err",error:r}}var c=o,f={__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)}},p={__proto__:null,batch:function(r){return n(r)},map:function(r,n){return t(r,n)}},l={__proto__:null,Ok:u,Err:a,mapError:function(r,n){switch(n.type){case"Ok":return u(n.value);case"Err":return a(r(n.error));default:throw new Error("Invalid result type "+n)}}};export{s as Cmd,f as Dispatch,c as Program,l as Result,p 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=[];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};
//# sourceMappingURL=core.modern.js.map

@@ -1,2 +0,2 @@

!function(r,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((r=r||self).core={})}(this,function(r){function t(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 n(r){return{home:"__internal",type:"Batched",list:r.filter(function(r){return void 0!==r})}}function e(r,t){return void 0===t?void 0:{home:"__internal",type:"Mapped",actionMapper:r,original:t}}function o(r,t,n,e,i){if(void 0===i&&(i=void 0),"__internal"===e.home){var u=e;switch(u.type){case"Batched":return void u.list.flatMap(function(e){return o(r,t,n,e,i)});case"Mapped":return void o(r,t,n,u.original,i?function(r){return i(u.actionMapper(r))}:u.actionMapper);default:throw new Error("Invalid result type "+u)}}else{var a=r(e.home);t[e.home]||(t[e.home]={cmds:[],subs:[]}),(n?t[e.home].cmds:t[e.home].subs).push(i?(n?a.mapCmd:a.mapSub)(i,e):e)}}var i={__proto__:null,run:function(r,n,e,i){void 0===i&&(i=[]);var u,a=t(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,u))}var y=function(r){return function(t){w(function(r){return function(t){if(d){var n=a(r),e=y(r);p[r]=n.onSelfAction(b,e,t,p[r])}}}(r),t)}},b=function(r){w(_,r)};function w(r,t){d&&(h.push({dispatch:r,action:t}),m())}function g(r){u=r[0];var t=r[1],n=s&&s(u),i={};t&&o(a,i,!0,t),n&&o(a,i,!1,n);for(var f=0,l=Object.keys(i);f<l.length;f++){var d=l[f],v=i[d],h=v.cmds,m=v.subs,_=a(d);p[d]=_.onEffects(b,y(d),h,m,p[d])}e(c({state:u,dispatch:b}))}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(b,y(e.home)))}}(),d=!0,g(r.init(n)),m(),function(){d&&(d=!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()}}())}}},u=new Map;function a(r){return{type:"Ok",value:r}}function f(r){return{type:"Err",error:r}}var c=i,s={__proto__:null,map:function(r,t){var n=u.get(t),e=n&&n.get(r);if(e)return e;var o=function(n){return t(r(n))};return n||(n=new Map,u.set(t,n)),n.set(r,o),o}},p={__proto__:null,batch:function(r){return n(r)},map:function(r,t){return e(r,t)}},l={__proto__:null,Ok:a,Err:f,mapError:function(r,t){switch(t.type){case"Ok":return a(t.value);case"Err":return f(r(t.error));default:throw new Error("Invalid result type "+t)}}};r.Cmd={__proto__:null,batch:function(r){return n(r)},map:function(r,t){return e(r,t)}},r.Dispatch=s,r.Program=c,r.Result=l,r.Sub=p,r.createGetEffectManager=t});
!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});
//# sourceMappingURL=core.umd.js.map

@@ -18,2 +18,3 @@ /**

* This field is only needed in order to preserve the generic type paramter Action
* @ignore
*/

@@ -20,0 +21,0 @@ readonly __$$dummy_tag?: Action;

{
"name": "@typescript-tea/core",
"version": "0.5.0",
"version": "0.5.1",
"description": "The Elm Architecture for typescript",

@@ -42,3 +42,3 @@ "main": "dist/core.js",

"microbundle": "^0.12.0-next.8",
"prettier": "^2.1.2",
"prettier": "^2.3.0",
"rimraf": "^3.0.0",

@@ -54,2 +54,3 @@ "ts-jest": "^26.4.1",

"test-coverage": "jest --coverage",
"test:work": "jest src/__tests__/program.test.ts",
"lint": "eslint './src/**/*.ts{,x}' --ext .js,.ts,.tsx -f visualstudio",

@@ -56,0 +57,0 @@ "dist": "yarn build && rimraf dist && microbundle src/index.ts",

@@ -0,2 +1,6 @@

/* eslint-disable functional/prefer-readonly-type */
import { Program, run } from "../program";
import { createMockEffectManager } from "./helpers/mock-effect-manager";
import { createMockProgram } from "./helpers/mock-program";
import { createMockRender } from "./helpers/mock-render";

@@ -34,19 +38,65 @@ beforeAll(() => {

test("View can dispatch", (done) => {
const render = (): void => {
// Do nothing
};
const program: Program<undefined, number, string, string> = {
init: () => [0],
update: () => [1],
view: ({ dispatch, state }) => {
if (state === 0) {
dispatch("increment");
} else {
expect(state).toEqual(1);
done();
}
return "view";
},
};
run(program, undefined, render, []);
// Create mocks
const mp = createMockProgram();
const mr = createMockRender();
// Setup mokcs
mp.update.mockImplementationOnce(() => [1]);
mp.view
.mockImplementationOnce(({ dispatch }) => dispatch("increment"))
.mockImplementationOnce(({ state }) => {
expect(state).toEqual(1);
done();
});
// Run
run(mp, undefined, mr, []);
});
test("onEffects is called when subscriptions is not undefined", (done) => {
// Create mocks
const emHome = "mock1" as const;
const me = createMockEffectManager(emHome);
const mp = createMockProgram();
const mr = createMockRender();
// Setup mocks
mp.update.mockImplementationOnce(() => [1]);
mp.subscriptions.mockReturnValue({ home: emHome, type: "nisse" });
mp.view
.mockImplementationOnce(({ dispatch }) => dispatch("increment"))
.mockImplementationOnce(({ state }) => {
expect(state).toEqual(1);
expect(me.onEffects.mock.calls.length).toBe(2);
done();
});
me.onEffects.mockReturnValueOnce(0);
// Run
run(mp, undefined, mr, [me]);
});
/**
* onEffects must be called with undefined subscriptions becuase
* the previous call may have had subscriptions so teh effect
* manager must know to clear those subscriptions when undefined
* is returned from program.subscription().
*/
test("onEffects is called when subscriptions is undefined", (done) => {
// Create mocks
const emHome = "mock1" as const;
const me = createMockEffectManager(emHome);
const mp = createMockProgram();
const mr = createMockRender();
// Setup mocks
mp.update.mockImplementationOnce(() => [1]);
mp.subscriptions.mockReturnValueOnce(undefined);
mp.view.mockImplementationOnce(({ state }) => {
expect(state).toEqual(0);
expect(me.onEffects.mock.calls.length).toBe(1);
// cmds passed to onEffects() should be an empty array
expect(me.onEffects.mock.calls[0][2]).toStrictEqual([]);
// subs passed to onEffects() should be an empty array
expect(me.onEffects.mock.calls[0][3]).toStrictEqual([]);
done();
});
me.onEffects.mockReturnValueOnce(0);
// Run
run(mp, undefined, mr, [me]);
});

@@ -31,2 +31,3 @@ /**

* This field is only needed in order to preserve the generic type paramter Action
* @ignore
*/

@@ -33,0 +34,0 @@ readonly __$$dummy_tag?: Action;

@@ -57,9 +57,16 @@ import { Cmd } from "./cmd";

const dispatchManager = (home: string) => (action: Action): void => {
if (isRunning) {
const manager = getEffectManager(home);
const enqueueSelfAction = enqueueManagerAction(home);
managerStates[home] = manager.onSelfAction(enqueueProgramAction, enqueueSelfAction, action, managerStates[home]);
}
};
const dispatchManager =
(home: string) =>
(action: Action): void => {
if (isRunning) {
const manager = getEffectManager(home);
const enqueueSelfAction = enqueueManagerAction(home);
managerStates[home] = manager.onSelfAction(
enqueueProgramAction,
enqueueSelfAction,
action,
managerStates[home]
);
}
};

@@ -72,5 +79,7 @@ function dispatchApp(action: Action): void {

const enqueueManagerAction = (home: string) => (action: unknown): void => {
enqueueRaw(dispatchManager(home), action);
};
const enqueueManagerAction =
(home: string) =>
(action: unknown): void => {
enqueueRaw(dispatchManager(home), action);
};

@@ -95,4 +104,6 @@ const enqueueProgramAction = (action: Action): void => {

sub && gatherEffects(getEffectManager, gatheredEffects, false, sub); // eslint-disable-line @typescript-eslint/no-unused-expressions,no-unused-expressions
for (const home of Object.keys(gatheredEffects)) {
const { cmds, subs } = gatheredEffects[home];
// Always call all effect managers so they get updated subscriptions even if there are no subscriptions anymore
for (const em of effectManagers) {
const home = em.home;
const { cmds, subs } = gatheredEffects[home] ?? { cmds: [], subs: [] };
const manager = getEffectManager(home);

@@ -99,0 +110,0 @@ managerStates[home] = manager.onEffects(

@@ -33,2 +33,3 @@ /**

* This field is only needed in order to preserve the generic type paramter Action
* @ignore
*/

@@ -35,0 +36,0 @@ readonly __$$dummy_tag?: Action;

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

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc