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.3.0 to 0.4.0

19

CHANGELOG.md

@@ -0,1 +1,20 @@

# Change Log
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased](https://github.com/typescript-tea/core/compare/v0.3.0...master)
- Add `setup()` to `EffectManger`. This makes it possible for setup code to exist outside of core. For example code for setting up listening to popstate for navigation.
- Add generic `Init` type to `init()` function and `Program.run()` instead of passing current url. This makes it possible to pass any type of data from the outside into the init() function of the program (a litle similar to Elm's flags). Since you can pass anything, tt is still possible to pass current url.
- Remove `onUrlChange` from `Program`. This can instead be passed as creation parameter to a navigation effect manager.
## [0.3.0](https://github.com/typescript-tea/core/compare/v0.2.0...v0.3.0) - 2020-03-04
### Changed
- Internal refactoring.
## [0.2.0](https://github.com/typescript-tea/core/compare/v0.1.0...v0.2.0) - 2020-02-26

@@ -2,0 +21,0 @@

2

dist/core.js

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

function t(t){var n=function(t){return Object.fromEntries(t.map(function(t){return[t.home,t]}))}(t);return function(t){var r=n[t];if(!r)throw new Error("Could not find effect manager '"+t+"'. Make sure it was passed to the runtime.");return r}}function n(t){return{home:"__internal",type:"Batched",list:t.filter(function(t){return void 0!==t})}}function r(t,n){return void 0===n?void 0:{home:"__internal",type:"Mapped",actionMapper:t,original:n}}function e(t,n,r,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(t,n,r,o,i)});case"Mapped":return void e(t,n,r,a.original,i?function(t){return i(a.actionMapper(t))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=t(o.home);n[o.home]||(n[o.home]={cmds:[],subs:[]}),(r?n[o.home].cmds:n[o.home].subs).push(i?(r?u.mapCmd:u.mapSub)(i,o):o)}}function o(){return window.location.pathname}var i={__proto__:null,run:function(n,r,i){var a,u=t(i||[]),c=n.update,s=n.view,p=n.subscriptions,f={},d=!0,l=!1,h=[];function v(t){d&&g(c(t,a))}var m=function(t){return function(n){w(function(t){return function(n){if(d){var r=u(t),e=m(t);f[t]=r.onSelfAction(_,e,n,f[t])}}}(t),n)}},_=function(t){w(v,t)};function w(t,n){d&&(h.push({dispatch:t,action:n}),function(){if(d&&!l){for(l=!0;h.length>0;){var t=h.shift();t.dispatch(t.action)}l=!1}}())}function g(t){a=t[0];var n=t[1],o=p&&p(a),i={};n&&e(u,i,!0,n),o&&e(u,i,!1,o);for(var c=0,d=Object.keys(i);c<d.length;c++){var l=d[c],h=i[l],v=h.cmds,w=h.subs,g=u(l);f[l]=g.onEffects(_,m(l),v,w,f[l])}r(s({state:a,dispatch:_}))}function E(){n.onUrlChange&&_(n.onUrlChange(o()))}return window.addEventListener("popstate",E),window.navigator.userAgent.indexOf("Trident")<0||window.addEventListener("hashchange",E),g(n.init(o(),E)),function(){d&&(d=!1,window.removeEventListener("popstate",E))}}},a=new Map;function u(t){return{type:"Ok",value:t}}function c(t){return{type:"Err",error:t}}var s=i,p={__proto__:null,map:function(t,n){var r=a.get(n),e=r&&r.get(t);if(e)return e;var o=function(r){return n(t(r))};return r||(r=new Map,a.set(n,r)),r.set(t,o),o}},f={__proto__:null,batch:n,map:r},d={__proto__:null,Ok:u,Err:c,mapError:function(t,n){switch(n.type){case"Ok":return u(n.value);case"Err":return c(t(n.error));default:throw new Error("Invalid result type "+n)}}};exports.Cmd={__proto__:null,batch:n,map:r},exports.Dispatch=p,exports.Program=s,exports.Result=d,exports.Sub=f,exports.createGetEffectManager=t;
function r(r){var t=function(r){return Object.fromEntries(r.map(function(r){return[r.home,r]}))}(r);return function(r){var e=t[r];if(!e)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return e}}function t(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 n(r,t,e,o,a){if(void 0===a&&(a=void 0),"__internal"===o.home){var i=o;switch(i.type){case"Batched":return void i.list.flatMap(function(o){return n(r,t,e,o,a)});case"Mapped":return void n(r,t,e,i.original,a?function(r){return a(i.actionMapper(r))}:i.actionMapper);default:throw new Error("Invalid result type "+i)}}else{var u=r(o.home);t[o.home]||(t[o.home]={cmds:[],subs:[]}),(e?t[o.home].cmds:t[o.home].subs).push(a?(e?u.mapCmd:u.mapSub)(a,o):o)}}var o={__proto__:null,run:function(t,e,o,a){void 0===a&&(a=[]);var i,u=r(a),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,i))}var b=function(r){return function(t){w(function(r){return function(t){if(v){var e=u(r),n=b(r);p[r]=e.onSelfAction(y,n,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){i=r[0];var t=r[1],e=s&&s(i),a={};t&&n(u,a,!0,t),e&&n(u,a,!1,e);for(var c=0,l=Object.keys(a);c<l.length;c++){var v=l[c],h=a[v],d=h.cmds,m=h.subs,_=u(v);p[v]=_.onEffects(y,b(v),d,m,p[v])}o(f({state:i,dispatch:y}))}return function(){var r=a,t=Array.isArray(r),e=0;for(r=t?r:r[Symbol.iterator]();;){var n;if(t){if(e>=r.length)break;n=r[e++]}else{if((e=r.next()).done)break;n=e.value}l.push(n.setup(y,b(n.home)))}}(),v=!0,g(t.init(e)),m(),function(){v&&(v=!1,function(){var r=l,t=Array.isArray(r),e=0;for(r=t?r:r[Symbol.iterator]();;){var n;if(t){if(e>=r.length)break;n=r[e++]}else{if((e=r.next()).done)break;n=e.value}n()}}())}}},a=new Map;function i(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 e=a.get(t),n=e&&e.get(r);if(n)return n;var o=function(e){return t(r(e))};return e||(e=new Map,a.set(t,e)),e.set(r,o),o}},s={__proto__:null,batch:t,map:e},p={__proto__:null,Ok:i,Err:u,mapError:function(r,t){switch(t.type){case"Ok":return i(t.value);case"Err":return u(r(t.error));default:throw new Error("Invalid result type "+t)}}};exports.Cmd={__proto__:null,batch:t,map:e},exports.Dispatch=f,exports.Program=c,exports.Result=p,exports.Sub=s,exports.createGetEffectManager=r;
//# sourceMappingURL=core.js.map

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

function n(n){var t=function(n){return Object.fromEntries(n.map(function(n){return[n.home,n]}))}(n);return function(n){var r=t[n];if(!r)throw new Error("Could not find effect manager '"+n+"'. Make sure it was passed to the runtime.");return r}}function t(n){return{home:"__internal",type:"Batched",list:n.filter(function(n){return void 0!==n})}}function r(n,t){return void 0===t?void 0:{home:"__internal",type:"Mapped",actionMapper:n,original:t}}function e(n,t,r,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(n,t,r,o,i)});case"Mapped":return void e(n,t,r,a.original,i?function(n){return i(a.actionMapper(n))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=n(o.home);t[o.home]||(t[o.home]={cmds:[],subs:[]}),(r?t[o.home].cmds:t[o.home].subs).push(i?(r?u.mapCmd:u.mapSub)(i,o):o)}}function o(){return window.location.pathname}var i={__proto__:null,run:function(t,r,i){var a,u=n(i||[]),c=t.update,f=t.view,p=t.subscriptions,s={},d=!0,l=!1,h=[];function v(n){d&&g(c(n,a))}var _=function(n){return function(t){w(function(n){return function(t){if(d){var r=u(n),e=_(n);s[n]=r.onSelfAction(m,e,t,s[n])}}}(n),t)}},m=function(n){w(v,n)};function w(n,t){d&&(h.push({dispatch:n,action:t}),function(){if(d&&!l){for(l=!0;h.length>0;){var n=h.shift();n.dispatch(n.action)}l=!1}}())}function g(n){a=n[0];var t=n[1],o=p&&p(a),i={};t&&e(u,i,!0,t),o&&e(u,i,!1,o);for(var c=0,d=Object.keys(i);c<d.length;c++){var l=d[c],h=i[l],v=h.cmds,w=h.subs,g=u(l);s[l]=g.onEffects(m,_(l),v,w,s[l])}r(f({state:a,dispatch:m}))}function E(){t.onUrlChange&&m(t.onUrlChange(o()))}return window.addEventListener("popstate",E),window.navigator.userAgent.indexOf("Trident")<0||window.addEventListener("hashchange",E),g(t.init(o(),E)),function(){d&&(d=!1,window.removeEventListener("popstate",E))}}},a=new Map;function u(n){return{type:"Ok",value:n}}function c(n){return{type:"Err",error:n}}var f=i,p={__proto__:null,map:function(n,t){var r=a.get(t),e=r&&r.get(n);if(e)return e;var o=function(r){return t(n(r))};return r||(r=new Map,a.set(t,r)),r.set(n,o),o}},s={__proto__:null,batch:t,map:r},d={__proto__:null,batch:t,map:r},l={__proto__:null,Ok:u,Err:c,mapError:function(n,t){switch(t.type){case"Ok":return u(t.value);case"Err":return c(n(t.error));default:throw new Error("Invalid result type "+t)}}};export{s as Cmd,p as Dispatch,f as Program,l as Result,d as Sub,n as createGetEffectManager};
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:t,map:n},p={__proto__:null,batch:t,map:n},l={__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)}}};export{s as Cmd,f as Dispatch,c as Program,l as Result,p as Sub,r as createGetEffectManager};
//# sourceMappingURL=core.m.js.map

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

function n(n){var t=function(n){return Object.fromEntries(n.map(function(n){return[n.home,n]}))}(n);return function(n){var r=t[n];if(!r)throw new Error("Could not find effect manager '"+n+"'. Make sure it was passed to the runtime.");return r}}function t(n){return{home:"__internal",type:"Batched",list:n.filter(function(n){return void 0!==n})}}function r(n,t){return void 0===t?void 0:{home:"__internal",type:"Mapped",actionMapper:n,original:t}}function e(n,t,r,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(n,t,r,o,i)});case"Mapped":return void e(n,t,r,a.original,i?function(n){return i(a.actionMapper(n))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=n(o.home);t[o.home]||(t[o.home]={cmds:[],subs:[]}),(r?t[o.home].cmds:t[o.home].subs).push(i?(r?u.mapCmd:u.mapSub)(i,o):o)}}function o(){return window.location.pathname}var i={__proto__:null,run:function(t,r,i){var a,u=n(i||[]),c=t.update,f=t.view,p=t.subscriptions,s={},d=!0,l=!1,h=[];function v(n){d&&g(c(n,a))}var _=function(n){return function(t){w(function(n){return function(t){if(d){var r=u(n),e=_(n);s[n]=r.onSelfAction(m,e,t,s[n])}}}(n),t)}},m=function(n){w(v,n)};function w(n,t){d&&(h.push({dispatch:n,action:t}),function(){if(d&&!l){for(l=!0;h.length>0;){var n=h.shift();n.dispatch(n.action)}l=!1}}())}function g(n){a=n[0];var t=n[1],o=p&&p(a),i={};t&&e(u,i,!0,t),o&&e(u,i,!1,o);for(var c=0,d=Object.keys(i);c<d.length;c++){var l=d[c],h=i[l],v=h.cmds,w=h.subs,g=u(l);s[l]=g.onEffects(m,_(l),v,w,s[l])}r(f({state:a,dispatch:m}))}function E(){t.onUrlChange&&m(t.onUrlChange(o()))}return window.addEventListener("popstate",E),window.navigator.userAgent.indexOf("Trident")<0||window.addEventListener("hashchange",E),g(t.init(o(),E)),function(){d&&(d=!1,window.removeEventListener("popstate",E))}}},a=new Map;function u(n){return{type:"Ok",value:n}}function c(n){return{type:"Err",error:n}}var f=i,p={__proto__:null,map:function(n,t){var r=a.get(t),e=r&&r.get(n);if(e)return e;var o=function(r){return t(n(r))};return r||(r=new Map,a.set(t,r)),r.set(n,o),o}},s={__proto__:null,batch:t,map:r},d={__proto__:null,batch:t,map:r},l={__proto__:null,Ok:u,Err:c,mapError:function(n,t){switch(t.type){case"Ok":return u(t.value);case"Err":return c(n(t.error));default:throw new Error("Invalid result type "+t)}}};export{s as Cmd,p as Dispatch,f as Program,l as Result,d as Sub,n as createGetEffectManager};
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:t,map:n},p={__proto__:null,batch:t,map:n},l={__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)}}};export{s as Cmd,f as Dispatch,c as Program,l as Result,p as Sub,r as createGetEffectManager};
//# sourceMappingURL=core.modern.js.map

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

!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n=n||self).core={})}(this,function(n){function t(n){var t=function(n){return Object.fromEntries(n.map(function(n){return[n.home,n]}))}(n);return function(n){var e=t[n];if(!e)throw new Error("Could not find effect manager '"+n+"'. Make sure it was passed to the runtime.");return e}}function e(n){return{home:"__internal",type:"Batched",list:n.filter(function(n){return void 0!==n})}}function r(n,t){return void 0===t?void 0:{home:"__internal",type:"Mapped",actionMapper:n,original:t}}function o(n,t,e,r,i){if(void 0===i&&(i=void 0),"__internal"===r.home){var a=r;switch(a.type){case"Batched":return void a.list.flatMap(function(r){return o(n,t,e,r,i)});case"Mapped":return void o(n,t,e,a.original,i?function(n){return i(a.actionMapper(n))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=n(r.home);t[r.home]||(t[r.home]={cmds:[],subs:[]}),(e?t[r.home].cmds:t[r.home].subs).push(i?(e?u.mapCmd:u.mapSub)(i,r):r)}}function i(){return window.location.pathname}var a={__proto__:null,run:function(n,e,r){var a,u=t(r||[]),c=n.update,f=n.view,p=n.subscriptions,s={},d=!0,l=!1,h=[];function v(n){d&&g(c(n,a))}var m=function(n){return function(t){w(function(n){return function(t){if(d){var e=u(n),r=m(n);s[n]=e.onSelfAction(_,r,t,s[n])}}}(n),t)}},_=function(n){w(v,n)};function w(n,t){d&&(h.push({dispatch:n,action:t}),function(){if(d&&!l){for(l=!0;h.length>0;){var n=h.shift();n.dispatch(n.action)}l=!1}}())}function g(n){a=n[0];var t=n[1],r=p&&p(a),i={};t&&o(u,i,!0,t),r&&o(u,i,!1,r);for(var c=0,d=Object.keys(i);c<d.length;c++){var l=d[c],h=i[l],v=h.cmds,w=h.subs,g=u(l);s[l]=g.onEffects(_,m(l),v,w,s[l])}e(f({state:a,dispatch:_}))}function E(){n.onUrlChange&&_(n.onUrlChange(i()))}return window.addEventListener("popstate",E),window.navigator.userAgent.indexOf("Trident")<0||window.addEventListener("hashchange",E),g(n.init(i(),E)),function(){d&&(d=!1,window.removeEventListener("popstate",E))}}},u=new Map;function c(n){return{type:"Ok",value:n}}function f(n){return{type:"Err",error:n}}var p=a,s={__proto__:null,map:function(n,t){var e=u.get(t),r=e&&e.get(n);if(r)return r;var o=function(e){return t(n(e))};return e||(e=new Map,u.set(t,e)),e.set(n,o),o}},d={__proto__:null,batch:e,map:r},l={__proto__:null,Ok:c,Err:f,mapError:function(n,t){switch(t.type){case"Ok":return c(t.value);case"Err":return f(n(t.error));default:throw new Error("Invalid result type "+t)}}};n.Cmd={__proto__:null,batch:e,map:r},n.Dispatch=s,n.Program=p,n.Result=l,n.Sub=d,n.createGetEffectManager=t});
!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 e=t[r];if(!e)throw new Error("Could not find effect manager '"+r+"'. Make sure it was passed to the runtime.");return e}}function e(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 o(r,t,e,n,i){if(void 0===i&&(i=void 0),"__internal"===n.home){var a=n;switch(a.type){case"Batched":return void a.list.flatMap(function(n){return o(r,t,e,n,i)});case"Mapped":return void o(r,t,e,a.original,i?function(r){return i(a.actionMapper(r))}:a.actionMapper);default:throw new Error("Invalid result type "+a)}}else{var u=r(n.home);t[n.home]||(t[n.home]={cmds:[],subs:[]}),(e?t[n.home].cmds:t[n.home].subs).push(i?(e?u.mapCmd:u.mapSub)(i,n):n)}}var i={__proto__:null,run:function(r,e,n,i){void 0===i&&(i=[]);var a,u=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,a))}var y=function(r){return function(t){w(function(r){return function(t){if(d){var e=u(r),n=y(r);p[r]=e.onSelfAction(b,n,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){a=r[0];var t=r[1],e=s&&s(a),i={};t&&o(u,i,!0,t),e&&o(u,i,!1,e);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,_=u(d);p[d]=_.onEffects(b,y(d),h,m,p[d])}n(c({state:a,dispatch:b}))}return function(){var r=i,t=Array.isArray(r),e=0;for(r=t?r:r[Symbol.iterator]();;){var n;if(t){if(e>=r.length)break;n=r[e++]}else{if((e=r.next()).done)break;n=e.value}l.push(n.setup(b,y(n.home)))}}(),d=!0,g(r.init(e)),m(),function(){d&&(d=!1,function(){var r=l,t=Array.isArray(r),e=0;for(r=t?r:r[Symbol.iterator]();;){var n;if(t){if(e>=r.length)break;n=r[e++]}else{if((e=r.next()).done)break;n=e.value}n()}}())}}},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,t){var e=a.get(t),n=e&&e.get(r);if(n)return n;var o=function(e){return t(r(e))};return e||(e=new Map,a.set(t,e)),e.set(r,o),o}},p={__proto__:null,batch:e,map:n},l={__proto__:null,Ok:u,Err:f,mapError:function(r,t){switch(t.type){case"Ok":return u(t.value);case"Err":return f(r(t.error));default:throw new Error("Invalid result type "+t)}}};r.Cmd={__proto__:null,batch:e,map:n},r.Dispatch=s,r.Program=c,r.Result=l,r.Sub=p,r.createGetEffectManager=t});
//# sourceMappingURL=core.umd.js.map

@@ -6,6 +6,7 @@ import { Dispatch } from "./dispatch";

*/
export declare type EffectManager<Home = unknown, ProgramAction = unknown, SelfAction = unknown, SelfState = unknown, MyCmd extends LeafEffect<ProgramAction, Home> = LeafEffect<ProgramAction, Home>, MySub extends LeafEffect<ProgramAction, Home> = LeafEffect<ProgramAction, Home>> = {
export declare type EffectManager<Home = string, ProgramAction = unknown, SelfAction = unknown, SelfState = unknown, MyCmd extends LeafEffect<ProgramAction, Home> = LeafEffect<ProgramAction, Home>, MySub extends LeafEffect<ProgramAction, Home> = LeafEffect<ProgramAction, Home>> = {
readonly home: Home;
readonly mapCmd: LeafEffectMapper;
readonly mapSub: LeafEffectMapper;
readonly setup: (dispatchProgram: Dispatch<ProgramAction>, dispatchSelf: Dispatch<SelfAction>) => () => void;
readonly onEffects: (dispatchProgram: Dispatch<ProgramAction>, dispatchSelf: Dispatch<SelfAction>, cmds: ReadonlyArray<MyCmd>, subs: ReadonlyArray<MySub>, state: SelfState) => SelfState;

@@ -12,0 +13,0 @@ readonly onSelfAction: (dispatchProgram: Dispatch<ProgramAction>, dispatchSelf: Dispatch<SelfAction>, action: SelfAction, state: SelfState) => SelfState;

import * as ProgramNs from "./program";
export declare const Program: typeof ProgramNs;
export declare type Program<S, A, V> = ProgramNs.Program<S, A, V>;
export declare type Program<Init, State, Action, View> = ProgramNs.Program<Init, State, Action, View>;
import * as DispatchNs from "./dispatch";

@@ -5,0 +5,0 @@ export declare const Dispatch: typeof DispatchNs;

@@ -8,4 +8,4 @@ import { Cmd } from "./cmd";

*/
export declare type Program<State, Action, View> = {
readonly init: (url: string, key: () => void) => readonly [State, Cmd<Action>?];
export declare type Program<Init, State, Action, View> = {
readonly init: (init: Init) => readonly [State, Cmd<Action>?];
readonly update: (action: Action, state: State) => readonly [State, Cmd<Action>?];

@@ -17,3 +17,2 @@ readonly view: (props: {

readonly subscriptions?: (state: State) => Sub<Action> | undefined;
readonly onUrlChange?: (url: string) => Action;
};

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

*/
export declare function run<S, A, V>(program: Program<S, A, V>, render: (view: V) => void, effectManagers?: ReadonlyArray<EffectManager<unknown, unknown, unknown>>): () => void;
export declare function run<Init, State, Action, View>(program: Program<Init, State, Action, View>, init: Init, render: (view: View) => void, effectManagers?: ReadonlyArray<EffectManager<string, unknown, unknown>>): () => void;
//# sourceMappingURL=program.d.ts.map
{
"name": "@typescript-tea/core",
"version": "0.3.0",
"version": "0.4.0",
"description": "The Elm Architecture for typescript",

@@ -5,0 +5,0 @@ "main": "dist/core.js",

@@ -20,3 +20,3 @@ import { Program, run } from "../program";

test("Run simple program", () => {
const program: Program<string, string, string> = {
const program: Program<undefined, string, string, string> = {
init: () => ["Hello"],

@@ -29,5 +29,5 @@ update: () => ["Hello"],

};
const endProgram = run(program, render, []);
const endProgram = run(program, undefined, render, []);
expect(endProgram).toBeInstanceOf(Function);
expect(globalThis.window.addEventListener).toBeCalled();
// expect(globalThis.window.addEventListener).toBeCalled();
});

@@ -39,3 +39,3 @@

};
const program: Program<number, string, string> = {
const program: Program<undefined, number, string, string> = {
init: () => [0],

@@ -53,3 +53,3 @@ update: () => [1],

};
run(program, render, []);
run(program, undefined, render, []);
});

@@ -8,3 +8,3 @@ import { Dispatch } from "./dispatch";

export type EffectManager<
Home = unknown,
Home = string,
ProgramAction = unknown,

@@ -19,2 +19,3 @@ SelfAction = unknown,

readonly mapSub: LeafEffectMapper;
readonly setup: (dispatchProgram: Dispatch<ProgramAction>, dispatchSelf: Dispatch<SelfAction>) => () => void;
readonly onEffects: (

@@ -38,3 +39,3 @@ dispatchProgram: Dispatch<ProgramAction>,

type ManagersByHome = {
readonly [home: string]: EffectManager<unknown, unknown, unknown>;
readonly [home: string]: EffectManager;
};

@@ -45,3 +46,3 @@ function managersByHome(effectManagers: ReadonlyArray<EffectManager>): ManagersByHome {

const managers = managersByHome(effectManagers);
return function getEffectManager(home: string): EffectManager<unknown> {
return function getEffectManager(home: string): EffectManager {
const managerModule = managers[home];

@@ -48,0 +49,0 @@ if (!managerModule) {

@@ -6,3 +6,3 @@ /* eslint-disable import/first, import/newline-after-import, import/order */

export const Program = ProgramNs;
export type Program<S, A, V> = ProgramNs.Program<S, A, V>;
export type Program<Init, State, Action, View> = ProgramNs.Program<Init, State, Action, View>;

@@ -9,0 +9,0 @@ // Dispatch

@@ -10,8 +10,7 @@ import { Cmd } from "./cmd";

*/
export type Program<State, Action, View> = {
readonly init: (url: string, key: () => void) => readonly [State, Cmd<Action>?];
export type Program<Init, State, Action, View> = {
readonly init: (init: Init) => readonly [State, Cmd<Action>?];
readonly update: (action: Action, state: State) => readonly [State, Cmd<Action>?];
readonly view: (props: { readonly state: State; readonly dispatch: Dispatch<Action> }) => View;
readonly subscriptions?: (state: State) => Sub<Action> | undefined;
readonly onUrlChange?: (url: string) => Action;
};

@@ -25,12 +24,14 @@

*/
export function run<S, A, V>(
program: Program<S, A, V>,
render: (view: V) => void,
effectManagers?: ReadonlyArray<EffectManager<unknown, unknown, unknown>>
export function run<Init, State, Action, View>(
program: Program<Init, State, Action, View>,
init: Init,
render: (view: View) => void,
effectManagers: ReadonlyArray<EffectManager<string, unknown, unknown>> = []
): () => void {
const getEffectManager = createGetEffectManager(effectManagers || []);
const getEffectManager = createGetEffectManager(effectManagers);
const { update, view, subscriptions } = program;
let state: S;
let state: State;
const managerStates: { [home: string]: unknown } = {};
let isRunning = true;
const managerTeardowns: Array<() => void> = [];
let isRunning = false;
let isProcessing = false;

@@ -54,3 +55,3 @@ const actionQueue: Array<{

const dispatchManager = (home: string) => (action: A): void => {
const dispatchManager = (home: string) => (action: Action): void => {
if (isRunning) {

@@ -63,3 +64,3 @@ const manager = getEffectManager(home);

function dispatchApp(action: A): void {
function dispatchApp(action: Action): void {
if (isRunning) {

@@ -74,7 +75,7 @@ change(update(action, state));

const enqueueProgramAction = (action: A): void => {
const enqueueProgramAction = (action: Action): void => {
enqueueRaw(dispatchApp, action);
};
function enqueueRaw(dispatch: Dispatch<A>, action: unknown): void {
function enqueueRaw(dispatch: Dispatch<Action>, action: unknown): void {
if (isRunning) {

@@ -86,7 +87,7 @@ actionQueue.push({ dispatch, action });

function change(change: readonly [S, Cmd<A>?]): void {
function change(change: readonly [State, Cmd<Action>?]): void {
state = change[0];
const cmd = change[1];
const sub = subscriptions && subscriptions(state);
const gatheredEffects: GatheredEffects<A> = {};
const gatheredEffects: GatheredEffects<Action> = {};
cmd && gatherEffects(getEffectManager, gatheredEffects, true, cmd); // eslint-disable-line no-unused-expressions

@@ -109,14 +110,10 @@ sub && gatherEffects(getEffectManager, gatheredEffects, false, sub); // eslint-disable-line no-unused-expressions

function setup(): void {
window.addEventListener("popstate", key);
// eslint-disable-next-line no-unused-expressions
window.navigator.userAgent.indexOf("Trident") < 0 || window.addEventListener("hashchange", key);
for (const em of effectManagers) {
managerTeardowns.push(em.setup(enqueueProgramAction, enqueueManagerAction(em.home)));
}
}
function teardown(): void {
window.removeEventListener("popstate", key);
}
function key(): void {
if (program.onUrlChange) {
enqueueProgramAction(program.onUrlChange(getCurrentUrl()));
for (const mtd of managerTeardowns) {
mtd();
}

@@ -127,4 +124,8 @@ }

change(program.init(getCurrentUrl(), key));
isRunning = true;
change(program.init(init));
processActions();
return function end(): void {

@@ -137,6 +138,1 @@ if (isRunning) {

}
function getCurrentUrl(): string {
// return window.location.href;
return window.location.pathname;
}

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