diff --git a/.dccache b/.dccache index f6e55e5..0e5ae5d 100644 --- a/.dccache +++ b/.dccache @@ -1 +1 @@ -[{"/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/register.js":"1","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/source.js":"2","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/dist/valyrian.lite.js":"3","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/dist/valyrian.min.js":"4","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/lib/index-old.js":"5","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/lib/index.ts":"6","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/hooks.js":"7","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.js":"8","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.sw.tpl.js":"9","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/request.js":"10","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/router.js":"11","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/signals.js":"12","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/store.js":"13","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/sw.js":"14","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/v-model.js":"15","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/hyperscript.test.js":"16","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/iterations.test.js":"17","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/mount_n_update.test.js":"18","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/directives_test.js":"19","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hooks_test.js":"20","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hyperscript_test.js":"21","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/keyed_test.js":"22","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/lifecycle_test.js":"23","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/mount_n_update_test.js":"24","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/node_test.js":"25","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/request_test.js":"26","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/router_test.js":"27","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/signals_test.js":"28","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/store_test.js":"29","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/utils/tree-adapter.js":"30"},[688,1617422138186.5078,"31"],[306,1616825108555.1147,"32"],[5511,1616825095291.283,"33"],[5601,1619653418514.3186,"34"],[14148,1614725354934.1553,"35"],[19967,1619650803442.944,"36"],[2711,1614312312585.8137,"37"],[9953,1617415452958.3203,"38"],[4083,1601561152283.9846,"39"],[4221,1614252184732.3354,"40"],[6630,1607402317220.4155,"41"],[4083,1601561161489.3032,"42"],[2041,1601561163851.908,"43"],[448,1601561166242.2478,"44"],[3182,1601561182841.262,"45"],[1482,1619652328838.7742,"46"],[2559,1614986276132.9998,"47"],[8221,1619653192165.162,"48"],[14550,1619651208081.9885,"49"],[5492,1616826188153.037,"50"],[2791,1616826188096.7952,"51"],[2478,1616826186628.4065,"52"],[3854,1616826186616.3247,"53"],[8671,1619650888412.6794,"54"],[7378,1619654368076.149,"55"],[8772,1616826187324.6958,"56"],[9996,1616826187980.2695,"57"],[5703,1616826186628.4065,"58"],[4355,1616826187195.9941,"59"],[14845,1602043898530.3389,"60"],"31bff5a8431e32a68275fe4e83ed7607a6132a9db824f5fc2aadc622a5934e4b","19413710bd8e336b582a291813142fc3093fc0adb44b1aacb9bac9bf51d7a1ce","d4df20560495961b3ab9405dbd162e5846b2d3e66a94f307bf08ae51ed89625c","886788eaf65d7bf40a15ae748362df60669d257f30447af25a83c78aa76b8e9f","6aa7b21dc8aa28b129933eadeff2632a4b52d5e9d977660a3767bf3ae2cc5aa5","8920f4da5a696c9aa33e5af02971a375b843e87cd77f3070ddd428871b3b7e5f","2f9c50259a30ee02d28e21cba4bae4e844a118092e1c48239181dfe5e27647f6","8ab4366c6ebe9bd33572aa16e928c708609fec868c486ec3eddfc89bc0f77ea8","9e41c42d425160d207ad8dbe2eddd6c2bf432338665826d07c897e0f2b44a14d","2e2986dbf0786e8d84ef7ffa3eb34e891d636c82ace995a45fd29944429c60b8","7908598f1046f367c3ce6c02bf9b44970e333b35c449b43363f96dceb1008958","8d1fe0d59ee427d044a50a05fef348508a6e3c0470fe1fc027b1414ca488edb9","a950855c17dfc2667d895f978f7374e977e2631344198066f5972e92d0994289","74dd7dfefb006f754a7c5b13d8086b36990b440c16ce5b60b2b661188ac91c6c","ba3588cbe7fe65446cbdc8b9ffed65283c602fef940cb68d5fba025bb1aaad58","7b843fdc12dc95e3285059a9552a340a776e8134e50f79c5f2239fee5a356b66","3fe7303903dc5d4031d325600e7d5f6b44ebe1835805af8f1c3b17481f6e1b93","426f0fa1900c9abd9d90e28cebe0cd2d5ac49176a7e376aec5b278d81fbb9a30","4509d29952f10c5c50a38c11315cfd70b6bbeb384663d259c11e9908755e8a77","d29af28903e17822e2124745feba6bd75c795abdb59b8b1768f79d10f4e2cfdb","40995000796dfc72a75a56f6c8a91a82bf7e69a58a3b9ac87a995ba90f05f5d0","682192795f6b060c66a1be5f61a7f9e1e9df373cf8cfed97face6d61ceeb13cc","ab3b54754e1dd3c4e3d4c07dfe45082705fffd50de4c09e50fae42383819586f","74a22512172724fbcd202b243b458b17c2b80788c400cfd03c788356b545a7c8","95b5d786979d8b6fe27c40e3a91a8bc2eb62aecc8519ccb679adc64170f2d898","41ebedb1c6159aa84df02d07c4e86fbed45dd005e6c1d5cb83204cf61080e10c","3f8a5325d2a53f10b134a0d201a43c0a73d01b5b9eb4f95cb8a13ee0958d8bad","cf8d15f6c280171af4626c7b7031435598c1b1db0eeb5ae6ce7f0988d1eb3936","24b75a991dd9d43aaf12333fc3b5080631ec8e5e68e0ccca7bb01b41b4bf81b6","9c0dd2ed2e6b14a644c8a2c1b28761b16f7253b182307a3f1b9fb529088b602c"] \ No newline at end of file +[{"/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/register.js":"1","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/source.js":"2","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/dist/valyrian.min.js":"3","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/hyperscript.test.js":"4","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/index-old.js":"5","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/iterations.test.js":"6","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/bench/mount_n_update.test.js":"7","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/lib/index.ts":"8","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/hooks.js":"9","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.js":"10","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/node.sw.tpl.js":"11","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/request.js":"12","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/router.js":"13","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/signals.js":"14","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/store.js":"15","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/sw.js":"16","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/v-model.js":"17","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/directives_test.js":"18","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hooks_test.js":"19","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/hyperscript_test.js":"20","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/keyed_test.js":"21","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/lifecycle_test.js":"22","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/mount_n_update_test.js":"23","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/node_test.js":"24","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/request_test.js":"25","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/router_test.js":"26","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/signals_test.js":"27","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/test/store_test.js":"28","/home/masquerade-circus/NodeJs/ownprojects/valyrian.js/plugins/utils/tree-adapter.js":"29"},[688,1617422138186.5078,"30"],[497,1619659597825.1243,"31"],[5609,1619658729019.0378,"32"],[1481,1619654764922.4663,"33"],[14148,1619654764922.4663,"34"],[2559,1619654764922.4663,"35"],[8221,1619654764922.4663,"36"],[20020,1619658102216.602,"37"],[2711,1619654764922.4663,"38"],[10475,1619659875228.1045,"39"],[4083,1601561152283.9846,"40"],[4221,1619654764926.437,"41"],[6630,1607402317220.4155,"42"],[4083,1601561161489.3032,"43"],[2041,1601561163851.908,"44"],[448,1601561166242.2478,"45"],[3182,1601561182841.262,"46"],[14550,1619654764926.437,"47"],[5492,1619654764926.437,"48"],[2791,1619654764926.437,"49"],[2478,1619654764926.437,"50"],[3854,1619654764926.437,"51"],[9107,1619658183230.6724,"52"],[7378,1619654764926.437,"53"],[8772,1619654764926.437,"54"],[9996,1619654764926.437,"55"],[5703,1619654764926.437,"56"],[4355,1619654764926.437,"57"],[14845,1602043898530.3389,"58"],"31bff5a8431e32a68275fe4e83ed7607a6132a9db824f5fc2aadc622a5934e4b","5bf71f613f53fb778178dede05d898fde311786179c56a251f3dfb92c9e3dfc8","a0de0e0c8a4c98ca2cab73d490d28d4129b2511a280dda3a038d2a4ccb65e247","47f0786340f25505cced19f4efee5fc9edebe5166a53ed5725e7cff755f2f233","6aa7b21dc8aa28b129933eadeff2632a4b52d5e9d977660a3767bf3ae2cc5aa5","3fe7303903dc5d4031d325600e7d5f6b44ebe1835805af8f1c3b17481f6e1b93","426f0fa1900c9abd9d90e28cebe0cd2d5ac49176a7e376aec5b278d81fbb9a30","fdb30402ae294f37965cccc1ab0a363f4338688e72c391c8055fc13aca7fc126","2f9c50259a30ee02d28e21cba4bae4e844a118092e1c48239181dfe5e27647f6","103b6f81405ff9da875cdc14315a4765c26c7b887bb1a6e12ab7183327e0703b","9e41c42d425160d207ad8dbe2eddd6c2bf432338665826d07c897e0f2b44a14d","2e2986dbf0786e8d84ef7ffa3eb34e891d636c82ace995a45fd29944429c60b8","7908598f1046f367c3ce6c02bf9b44970e333b35c449b43363f96dceb1008958","8d1fe0d59ee427d044a50a05fef348508a6e3c0470fe1fc027b1414ca488edb9","a950855c17dfc2667d895f978f7374e977e2631344198066f5972e92d0994289","74dd7dfefb006f754a7c5b13d8086b36990b440c16ce5b60b2b661188ac91c6c","ba3588cbe7fe65446cbdc8b9ffed65283c602fef940cb68d5fba025bb1aaad58","4509d29952f10c5c50a38c11315cfd70b6bbeb384663d259c11e9908755e8a77","d29af28903e17822e2124745feba6bd75c795abdb59b8b1768f79d10f4e2cfdb","40995000796dfc72a75a56f6c8a91a82bf7e69a58a3b9ac87a995ba90f05f5d0","682192795f6b060c66a1be5f61a7f9e1e9df373cf8cfed97face6d61ceeb13cc","ab3b54754e1dd3c4e3d4c07dfe45082705fffd50de4c09e50fae42383819586f","81d6b93cf911da0f3566fc33f79358ecb1d0827c7965d911a96110c00aa62c92","95b5d786979d8b6fe27c40e3a91a8bc2eb62aecc8519ccb679adc64170f2d898","41ebedb1c6159aa84df02d07c4e86fbed45dd005e6c1d5cb83204cf61080e10c","3f8a5325d2a53f10b134a0d201a43c0a73d01b5b9eb4f95cb8a13ee0958d8bad","cf8d15f6c280171af4626c7b7031435598c1b1db0eeb5ae6ce7f0988d1eb3936","24b75a991dd9d43aaf12333fc3b5080631ec8e5e68e0ccca7bb01b41b4bf81b6","9c0dd2ed2e6b14a644c8a2c1b28761b16f7253b182307a3f1b9fb529088b602c"] \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 3cb6d59..bc5de49 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,8 @@ ### [5.0.9](https://github.com/Masquerade-Circus/valyrian.js/compare/5.0.8...5.0.9) (2021-04-29) - ### Miscellaneous Chores -* **main:** remove unused minified file. Ignore .dccache ([d702115](https://github.com/Masquerade-Circus/valyrian.js/commit/d702115a13d65e74975433f1f49b13ea7f44fb33)) +* **main:** remove unused minified file. Ignore .dccache ([d702115](https://github.com/Masquerade-Circus/valyrian.js/commit/d702115a13d65e74975433f1f49b13ea7f44fb33)) ### [5.0.8](https://github.com/Masquerade-Circus/valyrian.js/compare/5.0.7...5.0.8) (2020-12-08) diff --git a/dist/valyrian.min.js b/dist/valyrian.min.js index 8ab1072..8ebee09 100644 --- a/dist/valyrian.min.js +++ b/dist/valyrian.min.js @@ -1 +1 @@ -(()=>{var e=class{constructor(e,o=null,n){this.props=o||{},this.children=n,this.name=e}},o=class{constructor(e){this.dom=e}},n=class{constructor(e,o=null,n){this.props=o,this.children=n,this.component=e}},t=void 0,d=null,r=Array.isArray,l="function",p="v-once",i=(e,o=!1)=>o?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e),s=n=>{if(1===n.nodeType){let o={};[].forEach.call(n.attributes,e=>o[e.nodeName]=e.nodeValue);let t=new e(n.nodeName,o,[]);t.dom=n;for(let e=0,o=n.childNodes.length;e{for(let n=0,t=o.children.length;n{let o=i("div");return o.innerHTML=e.trim(),[].map.call(o.childNodes,e=>s(e))};(m?global:window).v=function f(){function h(o,t=null,...d){return"string"==typeof o?new e(o,t,d):new n(o,t,d)}h.isMounted=!1,h.isNode=m;let v,g,w,y=d,N=["key","data",p,"oncreate","onupdate","onremove","onbeforeupdate"];h.reservedWords=N;let V={parentVnode:t,oldParentVnode:t,component:t};h.current=V;let C=new Map;h.usePlugin=(e,o={})=>!C.has(e)&&C.set(e,!0)&&e(h,o);let b={};function x(e){let o=e.target,n=`__on${e.type}`;for(;o;){if(o[n])return o[n](e,o),void(e.defaultPrevented||h.update());o=o.parentNode}}h.trust=u;let S=[];h.onCleanup=e=>{let o=h.current.parentVnode;o.onCleanup||(o.onCleanup=[]),o.onCleanup.push(e),-1===S.indexOf(o)&&S.push(o)};let M=e=>{for(let o in e.props){let n=e.props[o];if(!(o in e.props))return;-1!==N.indexOf(o)?L[o]&&L[o](n,e):typeof n===l?(o=`__${o}`,b[o]||(y.addEventListener(o.slice(4),x),b[o]=!0),e.dom[o]=n):o in e.dom&&!e.isSVG?e.dom[o]!=n&&(e.dom[o]=n):e.dom.setAttribute(o,n)}},A=(e,o,n)=>{if(e in o.props){let t=o.props[e];-1!==N.indexOf(e)?L[e]&&L[e](t,o,n):typeof t===l?(b[e=`__${e}`]||(y.addEventListener(e.slice(4),x),b[e]=!0),o.dom[e]=t):e in o.dom&&!o.isSVG?o.dom[e]!=t&&(o.dom[e]=t):(!n||t!==n.props[e])&&(!1===t?o.dom.removeAttribute(e):o.dom.setAttribute(e,t))}};h.updateProperty=A;let G=(e,o)=>{for(let n in e.props){if(!(n in e.props))return;A(n,e,o)}},O=(e,o)=>{for(let n in o.props)-1===N.indexOf(n)&&!(n in e.props)&&(o===a||typeof o.props[n]!==l)&&(n in e.dom?e.dom[n]=t:e.dom.removeAttribute(n))},T=(e,o,n)=>{n?o.replaceChild(e,n):o.appendChild(e)},_=(e,o,n,t)=>{let d=e.childNodes[n];t?(o.dom=t.dom,p in o.props||o.props.onbeforeupdate&&!1===o.props.onbeforeupdate(o,t)?(o.children=t.children,o.dom!==d&&T(o.dom,e,d)):(O(o,t),G(o,t),o.dom!==d&&T(o.dom,e,d),h.isMounted?o.props.onupdate&&o.props.onupdate(o,t):o.props.oncreate&&o.props.oncreate(o),E(o,t))):(o.dom=i(o.name,o.isSVG),M(o),o.dom!==d&&T(o.dom,e,d),o.props.oncreate&&o.props.oncreate(o),E(o))},E=(l,s=a)=>{let m=r(l.children)?l.children:[l.children],u=s.children;V.parentVnode=l,V.oldParentVnode=s;for(let o=0;o0){for(let o=u.length;o--;)u[o]instanceof e&&c(u[o]);l.dom.textContent=""}}else if(u.length&&m[0]instanceof e&&"key"in m[0].props){let e=u.map(e=>e.props.key),o=m.map(e=>e.props.key);for(let n=0,t=o.length;n=e.length?-1:n;-1!==o?(u[o].processed=!0,_(l.dom,d,r,u[o])):_(l.dom,d,r)}}let n=u.length;for(;n--;)if(!u[n].processed){let e=u[n];c(e),e.dom&&e.dom.parentNode&&e.dom.parentNode.removeChild(e.dom)}}else{let n=u.length,t=m.length;for(;n-- >t;){let o=u[n];o instanceof e&&c(o),o.dom&&o.dom.parentNode&&o.dom.parentNode.removeChild(o.dom)}for(n=0;n{if(v)return w&&((()=>{for(let e=S.length;e--;)for(let o of S[e].onCleanup)o();S=[]})(),g=v,v=new e(v.name,v.props,[h(w,o,...n)]),v.dom=g.dom,v.isSVG="svg"===v.name,E(v,g),h.isMounted=!0),h.isNode&&v.dom.innerHTML},h.mount=(e,o,n=null,...t)=>(y=h.isNode?i(e):document.querySelectorAll(e)[0],v=s(y),w=o,h.update(n,...t)),h.unMount=()=>{y=d,w=()=>"";let e=h.update();return h.isMounted=!1,e};let L={};h.directive=(e,o)=>{let n=`v-${e}`;-1===N.indexOf(n)&&(N.push(n),L[n]=o)};let P=o=>(n,t,d)=>{if(o?n:!n){let o=document.createTextNode("");d&&d.dom&&d.dom.parentNode&&(d instanceof e&&c(d),d.dom.parentNode.replaceChild(o,d.dom)),t.name="#text",t.children=[],t.props={},t.dom=o}};return h.directive("if",P(!1)),h.directive("unless",P(!0)),h.directive("for",(e,o)=>o.children=e.map(o.children[0])),h.directive("show",(e,o)=>o.dom.style.display=e?"":"none"),h.directive("class",(e,o)=>{for(let n in e)o.dom.classList.toggle(n,e[n])}),h.directive("html",(e,o)=>o.children=u(e)),h.newInstance=f,h}()})(); \ No newline at end of file +(()=>{var e=class{constructor(e,o=null,n){this.props=o||{},this.children=n,this.name=e}},o=class{constructor(e){this.dom=e}},n=class{constructor(e,o=null,n){this.props=o,this.children=n,this.component=e}},t=void 0,d=null,r=Array.isArray,l="function",p="v-once",i=(e,o=!1)=>o?document.createElementNS("http://www.w3.org/2000/svg",e):document.createElement(e),s=n=>{if(1===n.nodeType){let o={};[].forEach.call(n.attributes,e=>o[e.nodeName]=e.nodeValue);let t=new e(n.nodeName,o,[]);t.dom=n;for(let e=0,o=n.childNodes.length;e{for(let n=0,t=o.children.length;n{let o=i("div");return o.innerHTML=e.trim(),[].map.call(o.childNodes,e=>s(e))};(m?global:window).v=function f(){function h(o,t=null,...d){return"string"==typeof o?new e(o,t,d):new n(o,t,d)}h.isMounted=!1,h.isNode=m;let v,g,w,y=d,N=["key","data",p,"oncreate","onupdate","onremove","onbeforeupdate"];h.reservedWords=N;let V={parentVnode:t,oldParentVnode:t,component:t};h.current=V;let C=new Map;h.usePlugin=(e,o={})=>!C.has(e)&&C.set(e,!0)&&e(h,o);let b={};function x(e){let o=e.target,n=`__on${e.type}`;for(;o;){if(o[n])return o[n](e,o),void(e.defaultPrevented||h.update());o=o.parentNode}}h.trust=u;let S=[];h.onCleanup=e=>{let o=h.current.parentVnode;o.onCleanup||(o.onCleanup=[]),o.onCleanup.push(e),-1===S.indexOf(o)&&S.push(o)};let M=e=>{for(let o in e.props){let n=e.props[o];if(!(o in e.props))return;-1!==N.indexOf(o)?L[o]&&L[o](n,e):typeof n===l?(o=`__${o}`,b[o]||(y.addEventListener(o.slice(4),x),b[o]=!0),e.dom[o]=n):o in e.dom&&!e.isSVG?e.dom[o]!=n&&(e.dom[o]=n):!1!==n&&e.dom.setAttribute(o,n)}},A=(e,o,n)=>{if(e in o.props){let t=o.props[e];-1!==N.indexOf(e)?L[e]&&L[e](t,o,n):typeof t===l?(b[e=`__${e}`]||(y.addEventListener(e.slice(4),x),b[e]=!0),o.dom[e]=t):e in o.dom&&!o.isSVG?o.dom[e]!=t&&(o.dom[e]=t):(!n||t!==n.props[e])&&(!1===t?o.dom.removeAttribute(e):o.dom.setAttribute(e,t))}};h.updateProperty=A;let G=(e,o)=>{for(let n in e.props){if(!(n in e.props))return;A(n,e,o)}},O=(e,o)=>{for(let n in o.props)-1===N.indexOf(n)&&!(n in e.props)&&(o===a||typeof o.props[n]!==l)&&(n in e.dom?e.dom[n]=t:e.dom.removeAttribute(n))},T=(e,o,n)=>{n?o.replaceChild(e,n):o.appendChild(e)},_=(e,o,n,t)=>{let d=e.childNodes[n];t?(o.dom=t.dom,p in o.props||o.props.onbeforeupdate&&!1===o.props.onbeforeupdate(o,t)?(o.children=t.children,o.dom!==d&&T(o.dom,e,d)):(O(o,t),G(o,t),o.dom!==d&&T(o.dom,e,d),h.isMounted?o.props.onupdate&&o.props.onupdate(o,t):o.props.oncreate&&o.props.oncreate(o),E(o,t))):(o.dom=i(o.name,o.isSVG),M(o),o.dom!==d&&T(o.dom,e,d),o.props.oncreate&&o.props.oncreate(o),E(o))},E=(l,s=a)=>{let m=r(l.children)?l.children:[l.children],u=s.children;V.parentVnode=l,V.oldParentVnode=s;for(let o=0;o0){for(let o=u.length;o--;)u[o]instanceof e&&c(u[o]);l.dom.textContent=""}}else if(u.length&&m[0]instanceof e&&"key"in m[0].props){let e=u.map(e=>e.props.key),o=m.map(e=>e.props.key);for(let n=0,t=o.length;n=e.length?-1:n;-1!==o?(u[o].processed=!0,_(l.dom,d,r,u[o])):_(l.dom,d,r)}}let n=u.length;for(;n--;)if(!u[n].processed){let e=u[n];c(e),e.dom&&e.dom.parentNode&&e.dom.parentNode.removeChild(e.dom)}}else{let n=u.length,t=m.length;for(;n-- >t;){let o=u[n];o instanceof e&&c(o),o.dom&&o.dom.parentNode&&o.dom.parentNode.removeChild(o.dom)}for(n=0;n{if(v)return w&&((()=>{for(let e=S.length;e--;)for(let o of S[e].onCleanup)o();S=[]})(),g=v,v=new e(v.name,v.props,[h(w,o,...n)]),v.dom=g.dom,v.isSVG="svg"===v.name,E(v,g),h.isMounted=!0),h.isNode&&v.dom.innerHTML},h.mount=(e,o,n=null,...t)=>(y=h.isNode?i(e):document.querySelectorAll(e)[0],v=s(y),w=o,h.update(n,...t)),h.unMount=()=>{y=d,w=()=>"";let e=h.update();return h.isMounted=!1,e};let L={};h.directive=(e,o)=>{let n=`v-${e}`;-1===N.indexOf(n)&&(N.push(n),L[n]=o)};let P=o=>(n,t,d)=>{if(o?n:!n){let o=document.createTextNode("");d&&d.dom&&d.dom.parentNode&&(d instanceof e&&c(d),d.dom.parentNode.replaceChild(o,d.dom)),t.name="#text",t.children=[],t.props={},t.dom=o}};return h.directive("if",P(!1)),h.directive("unless",P(!0)),h.directive("for",(e,o)=>o.children=e.map(o.children[0])),h.directive("show",(e,o)=>o.dom.style.display=e?"":"none"),h.directive("class",(e,o)=>{for(let n in e)o.dom.classList.toggle(n,e[n])}),h.directive("html",(e,o)=>o.children=u(e)),h.newInstance=f,h}()})(); \ No newline at end of file diff --git a/lib/index.ts b/lib/index.ts index 7b0aaa0..918ab70 100644 --- a/lib/index.ts +++ b/lib/index.ts @@ -233,7 +233,7 @@ function valyrian(): Valyrian { if ((newNode.dom as DomElement)[name] != value) { (newNode.dom as DomElement)[name] = value; } - } else { + } else if (value !== false) { (newNode.dom as DomElement).setAttribute(name, value as string); } } diff --git a/package.json b/package.json index a626df4..d133357 100644 --- a/package.json +++ b/package.json @@ -80,6 +80,7 @@ "expect": "^26.6.2", "faker": "^5.5.3", "fastify": "^3.15.0", + "gzip-size": "^6.0.0", "mocha": "^8.3.2", "node-dev": "^6.7.0", "nyc": "^15.1.0", diff --git a/plugins/node.js b/plugins/node.js index 6faf163..56bbd2d 100644 --- a/plugins/node.js +++ b/plugins/node.js @@ -1,3 +1,4 @@ +/* eslint-disable sonarjs/cognitive-complexity */ let fs = require("fs"); let path = require("path"); require("ts-node/register"); @@ -60,7 +61,7 @@ function fileMethodFactory() { bundle: true, sourcemap: "external", write: false, - minify: true, + minify: options.compact, outdir: "out", target: ["es2020"], jsxFactory: "v", @@ -68,23 +69,29 @@ function fileMethodFactory() { ...(options.esbuild || {}) }); - let result2 = await terser.minify(result.outputFiles[1].text, { - sourceMap: { - content: result.outputFiles[0].text.toString() - }, - compress: { - booleans_as_integers: false - }, - output: { - wrap_func_args: false - }, - ecma: 2020, - ...(options.terser || {}) - }); + if (options.compact) { + let result2 = await terser.minify(result.outputFiles[1].text, { + sourceMap: { + content: result.outputFiles[0].text.toString() + }, + compress: { + booleans_as_integers: false + }, + output: { + wrap_func_args: false + }, + ecma: 2020, + ...(options.terser || {}) + }); - let mapBase64 = Buffer.from(result2.map.toString()).toString("base64"); - let suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`; - contents = { raw: result2.code, map: suffix, file }; + let mapBase64 = Buffer.from(result2.map.toString()).toString("base64"); + let suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`; + contents = { raw: result2.code, map: suffix, file }; + } else { + let mapBase64 = Buffer.from(result.outputFiles[0].text.toString()).toString("base64"); + let suffix = `//# sourceMappingURL=data:application/json;charset=utf-8;base64,${mapBase64}`; + contents = { raw: result.outputFiles[1].text, map: suffix, file }; + } } else if (/(css|scss|styl)/.test(ext)) { let result = new CleanCSS({ sourceMap: true, diff --git a/source.js b/source.js index 1ab1078..2df3aae 100644 --- a/source.js +++ b/source.js @@ -1,12 +1,16 @@ require("./register"); let { inline } = require("./plugins/node"); let { writeFileSync } = require("fs"); +const gzipSize = require("gzip-size"); async function run() { inline.extensions("ts"); - await inline.ts("./lib/index.ts", { outputOptions: { compact: true } }); + await inline.ts("./lib/index.ts", { compact: true }); + let contents = inline.ts()[0].raw; + writeFileSync("./dist/valyrian.min.js", contents); - writeFileSync("./dist/valyrian.min.js", inline.ts()[0].raw); + console.log("Size:", contents.length); + console.log("Gzip:", gzipSize.sync(contents)); } run(); diff --git a/test/mount_n_update_test.js b/test/mount_n_update_test.js index 4599918..20d015e 100644 --- a/test/mount_n_update_test.js +++ b/test/mount_n_update_test.js @@ -157,6 +157,22 @@ describe("Mount and update", () => { }); }); + it("Should not add property if it is set to false on first render", () => { + let disabled = false; + let Component = () =>
Hello world
; + + let result = {}; + + result.before = v.mount("body", Component); + disabled = true; + result.after = v.update(); + + expect(result).toEqual({ + before: "
Hello world
", + after: '
Hello world
' + }); + }); + it("Should handle different types of data", () => { let date = new Date(); diff --git a/yarn.lock b/yarn.lock index 1d77002..30673d4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2437,6 +2437,11 @@ duplexer3@^0.1.4: resolved "https://registry.yarnpkg.com/duplexer3/-/duplexer3-0.1.4.tgz#ee01dd1cac0ed3cbc7fdbea37dc0a8f1ce002ce2" integrity sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI= +duplexer@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + dynamic-dedupe@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/dynamic-dedupe/-/dynamic-dedupe-0.3.0.tgz#06e44c223f5e4e94d78ef9db23a6515ce2f962a1" @@ -3476,6 +3481,13 @@ growly@^1.3.0: resolved "https://registry.yarnpkg.com/growly/-/growly-1.3.0.tgz#f10748cbe76af964b7c96c93c6bcc28af120c081" integrity sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE= +gzip-size@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/gzip-size/-/gzip-size-6.0.0.tgz#065367fd50c239c0671cbcbad5be3e2eeb10e462" + integrity sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q== + dependencies: + duplexer "^0.1.2" + handlebars@^4.7.6: version "4.7.7" resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1"