npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

hoist-props

v0.2.0

Published

Property access minification without mangling

Downloads

13

Readme

Hoist yer members, matey!

This uses the lovely acorn and magic-string libraries to find all of your long property accesses, like document.createDocumentFragment(), create smaller variables with the property names hoisted to the top of the scope, and replaces them with something like document[a](). At the top of the scope, you'll end up with var a='createDocumentFragment';, but anywhere in that scope, you'll have a much shorter reference.

I don't know if this is a good idea. It may have performance implications that I haven't run across. It may already be implemented in the closure compiler or something like it. All I know is that it can save ~15% on a big funky code base.

What

This uses acorn to get an AST of the source and tries to find all of the top-level scopes (functions). This works out very well for IIFE and UMD libraries. I have not tested it on anything else, but I can't really think of a good reason to apply this until everything is already bundled and uglified.

After the top-level scopes are gathered, this uses an acorn simple walker to find all of the identifiers, declarations, and member expressions to record what short names are already used and stats on which members are referenced the most. It then walks through the members and gets a savings estimate on each one by factoring in the size of the new access (.foozle becomes [aa]), the number of times it would apply, and the cost of the hoist (var aa='foozle';). I used the doubled identifier because most minified code has a fair number of single char identifiers used already. This will try single char identifiers first. Anything with a savings of more than 3 chars is paired up with a new identifier, and the AST is traversed again replacing member accesses that have a new identifier with the bracketed form. Finally, all of the new hoisted names are added just inside the body of the scope, after 'use strict'; if it's there.

Usage

CLI:

# stdin and stdout
cat someSrc.min.js | hoist-props > someSrc.min.min.js
# in and out files - --input and --output also work
hoist-props -i someSrc.min.js -o someSrc.min.min.js
# in and out files and an out map - --map also works
hoist-props -i someSrc.min.js -o someSrc.min.min.js -m 
# mix and match as desired

API:

const hoist = require('hoist-props');
const result = host(sourceString);
console.log(result.code); // the code
console.log(result.map); // the sourcemap

Example

Here's the svelte TodoMVC minified bundle before:

!function(){"use strict";function e(e,t,n){("items"in t&&"object"==typeof e.items||e.items!==n.items)&&(e.numActive=t.numActive=l.computed.numActive(e.items)),("items"in t&&"object"==typeof e.items||e.items!==n.items)&&(e.numCompleted=t.numCompleted=l.computed.numCompleted(e.items))}function t(e,t,a){var r=document.createElement("header");r.className="header";var d=document.createElement("h1"),o=document.createTextNode("todos");d.appendChild(o),r.appendChild(d);var i=document.createTextNode("\n\t");r.appendChild(i);var c=document.createElement("input");t.refs.newTodo=c,c.className="new-todo";var m=l.events.enter.call(t,c,function(e){t.newTodo(this.value)});c.placeholder="What needs to be done?",c.autofocus=!0,r.appendChild(c),a.appendChild(r);var u=document.createTextNode("\n\n");a.appendChild(u);var s=document.createComment("#if items.length > 0");a.appendChild(s);var p=e.items.length>0?n(e,t,a,s):null;return{update:function(e,r){r.items.length>0?p?p.update(e,r):p=n(r,t,a,s):p&&(p.teardown(!0),p=null)},teardown:function(e){e&&r.parentNode.removeChild(r),o.parentNode.removeChild(o),i.parentNode.removeChild(i),t.refs.newTodo===c&&(t.refs.newTodo=null),m.teardown(),u.parentNode.removeChild(u),p&&p.teardown(e),e&&s.parentNode.removeChild(s)}}}function n(e,t,n,d){function o(e){t.toggleAll(this.checked)}var i=document.createElement("section");i.className="main";var l=document.createElement("input");l.className="toggle-all",l.type="checkbox",l.addEventListener("change",o,!1),l.checked=e.numCompleted===e.items.length,i.appendChild(l);var c=document.createTextNode("\n\t\t");i.appendChild(c);var m=document.createElement("label");m.htmlFor="toggle-all";var u=document.createTextNode("Mark all as complete");m.appendChild(u),i.appendChild(m);var s=document.createTextNode("\n\n\t\t");i.appendChild(s);var p=document.createElement("ul");p.className="todo-list";var v=document.createComment("#each items");p.appendChild(v);for(var h=e.items,f=document.createDocumentFragment(),C=[],N=0;N<h.length;N+=1)C[N]=r(e,h,h[N],N,t,f);v.parentNode.insertBefore(f,v),i.appendChild(p);var g=document.createTextNode("\n\n\t\t");i.appendChild(g);var _=document.createElement("footer");_.className="footer";var w=document.createElement("span");w.className="todo-count";var E=document.createElement("strong"),x=document.createTextNode(e.numActive);E.appendChild(x),w.appendChild(E);var T=document.createTextNode(" ");w.appendChild(T);var k=document.createTextNode(1===e.numActive?"item":"items");w.appendChild(k);var b=document.createTextNode(" left");w.appendChild(b),_.appendChild(w);var B=document.createTextNode("\n\n\t\t\t");_.appendChild(B);var L=document.createElement("ul");L.className="filters";var y=document.createElement("li"),F=document.createElement("a");F.className="all"===e.currentFilter?"selected":"",F.href="#/";var A=document.createTextNode("All");F.appendChild(A),y.appendChild(F),L.appendChild(y);var O=document.createTextNode("\n\t\t\t\t");L.appendChild(O);var j=document.createElement("li"),S=document.createElement("a");S.className="active"===e.currentFilter?"selected":"",S.href="#/active";var I=document.createTextNode("Active");S.appendChild(I),j.appendChild(S),L.appendChild(j);var J=document.createTextNode("\n\t\t\t\t");L.appendChild(J);var q=document.createElement("li"),D=document.createElement("a");D.className="completed"===e.currentFilter?"selected":"",D.href="#/completed";var H=document.createTextNode("Completed");D.appendChild(H),q.appendChild(D),L.appendChild(q),_.appendChild(L);var M=document.createTextNode("\n\n\t\t\t");_.appendChild(M);var W=document.createComment("#if numCompleted");_.appendChild(W);var z=e.numCompleted?a(e,t,_,W):null;return i.appendChild(_),d.parentNode.insertBefore(i,d),{update:function(e,n){l.checked=n.numCompleted===n.items.length;for(var d=n.items,o=0;o<d.length;o+=1)C[o]?C[o].update(e,n,d,d[o],o):C[o]=r(n,d,d[o],o,t,f);for(var o=d.length;o<C.length;o+=1)C[o].teardown(!0);v.parentNode.insertBefore(f,v),C.length=d.length,x.data=n.numActive,k.data=1===n.numActive?"item":"items",F.className="all"===n.currentFilter?"selected":"",S.className="active"===n.currentFilter?"selected":"",D.className="completed"===n.currentFilter?"selected":"",n.numCompleted?z?z.update(e,n):z=a(n,t,_,W):z&&(z.teardown(!0),z=null)},teardown:function(e){e&&i.parentNode.removeChild(i),l.removeEventListener("change",o,!1),c.parentNode.removeChild(c),u.parentNode.removeChild(u),s.parentNode.removeChild(s);for(var t=0;t<C.length;t+=1)C[t].teardown(e);e&&v.parentNode.removeChild(v),g.parentNode.removeChild(g),T.parentNode.removeChild(T),b.parentNode.removeChild(b),B.parentNode.removeChild(B),A.parentNode.removeChild(A),O.parentNode.removeChild(O),I.parentNode.removeChild(I),J.parentNode.removeChild(J),H.parentNode.removeChild(H),M.parentNode.removeChild(M),z&&z.teardown(e)}}}function a(e,t,n,a){function r(e){t.clearCompleted()}var d=document.createElement("button");d.className="clear-completed",d.addEventListener("click",r,!1);var o=document.createTextNode("Clear completed");return d.appendChild(o),a.parentNode.insertBefore(d,a),{update:function(e,t){},teardown:function(e){d.removeEventListener("click",r,!1),e&&d.parentNode.removeChild(d),o.parentNode.removeChild(o)}}}function r(e,t,n,a,r,o){var i=document.createComment("#if filter(item, currentFilter)");o.appendChild(i);var c=l.helpers.filter(n,e.currentFilter)?d(e,t,n,a,r,o,i):null;return{update:function(e,t,n,a,m){var a=n[m];l.helpers.filter(a,t.currentFilter)?c?c.update(e,t,n,a,m):c=d(t,n,a,m,r,o,i):c&&(c.teardown(!0),c=null)},teardown:function(e){c&&c.teardown(e),e&&i.parentNode.removeChild(i)}}}function d(e,t,n,a,r,d,i){function l(){v=!0;var e=this.__svelte.eachBlock_0_value,t=this.__svelte.index;e[t].completed=p.checked,r.set({items:r.get("items")}),v=!1}function c(e){var t=this.__svelte.eachBlock_0_value,n=this.__svelte.index;t[n];r.edit(n)}function m(e){var t=this.__svelte.eachBlock_0_value,n=this.__svelte.index;t[n];r.remove(n)}var u=document.createElement("li");u.className=""+(n.completed?"completed":"")+" "+(e.editing===a?"editing":"");var s=document.createElement("div");s.className="view";var p=document.createElement("input");p.className="toggle",p.type="checkbox";var v=!1;p.addEventListener("change",l,!1),p.checked=n.completed,p.__svelte={eachBlock_0_value:t,index:a},s.appendChild(p);var h=document.createTextNode("\n\t\t\t\t\t\t\t");s.appendChild(h);var f=document.createElement("label");f.addEventListener("dblclick",c,!1),f.__svelte={eachBlock_0_value:t,index:a};var C=document.createTextNode(n.description);f.appendChild(C),s.appendChild(f);var N=document.createTextNode("\n\t\t\t\t\t\t\t");s.appendChild(N);var g=document.createElement("button");g.addEventListener("click",m,!1),g.className="destroy",g.__svelte={eachBlock_0_value:t,index:a},s.appendChild(g),u.appendChild(s);var _=document.createTextNode("\n\n\t\t\t\t\t\t");u.appendChild(_);var w=document.createComment("#if editing === index");u.appendChild(w);var E=e.editing===a?o(e,t,n,a,r,u,w):null;return i.parentNode.insertBefore(u,i),{update:function(e,t,n,a,d){u.className=""+(a.completed?"completed":"")+" "+(t.editing===d?"editing":""),v||(p.checked=a.completed),p.__svelte.eachBlock_0_value=n,p.__svelte.index=d,f.__svelte.eachBlock_0_value=n,f.__svelte.index=d,C.data=a.description,g.__svelte.eachBlock_0_value=n,g.__svelte.index=d,t.editing===d?E?E.update(e,t,n,a,d):E=o(t,n,a,d,r,u,w):E&&(E.teardown(!0),E=null)},teardown:function(e){e&&u.parentNode.removeChild(u),p.removeEventListener("change",l,!1),h.parentNode.removeChild(h),f.removeEventListener("dblclick",c,!1),N.parentNode.removeChild(N),g.removeEventListener("click",m,!1),_.parentNode.removeChild(_),E&&E.teardown(e)}}}function o(e,t,n,a,r,d,o){function i(e){r.submit(this.value)}var c=document.createElement("input");c.value=n.description,c.id="edit",c.className="edit";var m=l.events.enter.call(r,c,function(e){r.blur(this)});c.addEventListener("blur",i,!1);var u=l.events.escape.call(r,c,function(e){r.cancel()});return c.autofocus=!0,o.parentNode.insertBefore(c,o),c.focus(),{update:function(e,t,n,a,r){c.value=a.description},teardown:function(e){m.teardown(),c.removeEventListener("blur",i,!1),u.teardown(),e&&c.parentNode.removeChild(c)}}}function i(n){function a(e,t,n){for(var a in e)if(a in t){var d=t[a],o=n[a];if(d!==o||"object"==typeof d){var i=e[a];if(i)for(var l=0;l<i.length;l+=1){var c=i[l];c.__calling||(c.__calling=!0,c.call(r,d,o),c.__calling=!1)}}}}var r=this;this.refs={};var d=Object.assign(l.data(),n.data);e(d,d,{});var o={immediate:Object.create(null),deferred:Object.create(null)},i=Object.create(null);this.fire=function(e,t){var n=this,a=e in i&&i[e].slice();if(a)for(var r=0;r<a.length;r+=1)a[r].call(n,t)},this.get=function(e){return d[e]},this.set=function(t){var n=d;d=Object.assign({},n,t),e(d,t,n),a(o.immediate,t,n),c&&c.update(t,d),a(o.deferred,t,n)},this.observe=function(e,t,n){void 0===n&&(n={});var a=n.defer?o.deferred:o.immediate;return(a[e]||(a[e]=[])).push(t),n.init!==!1&&(t.__calling=!0,t.call(r,d[e]),t.__calling=!1),{cancel:function(){var n=a[e].indexOf(t);~n&&a[e].splice(n,1)}}},this.on=function(e,t){var n=i[e]||(i[e]=[]);return n.push(t),{cancel:function(){var e=n.indexOf(t);~e&&n.splice(e,1)}}},this.teardown=function(e){this.fire("teardown"),c.teardown(e!==!1),c=null,d={}};var c=t(d,this,n.target);n.parent?n.parent.__renderHooks.push({fn:l.onrender,context:this}):l.onrender.call(this)}var l=function(){function e(e){return function(t,n){function a(t){t.which===e&&n.call(this,t)}return t.addEventListener("keydown",a,!1),{teardown:function(){t.removeEventListener("keydown",a,!1)}}}}var t,n=13,a=27;try{t=JSON.parse(localStorage.getItem("todos-svelte"))||[]}catch(e){t=[]}return{data:function(){return{currentFilter:"all",items:t}},computed:{numActive:function(e){return e.filter(function(e){return!e.completed}).length},numCompleted:function(e){return e.filter(function(e){return e.completed}).length}},helpers:{filter:function(e,t){return"all"===t||("completed"===t?e.completed:"active"===t?!e.completed:void 0)}},onrender:function(){var e=this,t=function(){var t="all";"#/active"===window.location.hash?t="active":"#/completed"===window.location.hash&&(t="completed"),e.set({currentFilter:t})};window.addEventListener("hashchange",t),t(),this.observe("items",function(e){try{localStorage.setItem("todos-svelte",JSON.stringify(e))}catch(e){}})},methods:{blur:function(e){e.blur()},cancel:function(){this.set({editing:null})},clearCompleted:function(){var e=this.get("items").filter(function(e){return!e.completed});this.set({items:e})},edit:function(e){this.set({editing:e})},newTodo:function(e){var t=this.get("items");t.push({description:e,completed:!1}),this.set({items:t}),this.refs.newTodo.value=""},remove:function(e){var t=this.get("items");t.splice(e,1),this.set({items:t})},submit:function(e){var t=this.get("items"),n=this.get("editing");t[n].description=e,this.set({items:t,editing:null})},toggleAll:function(e){var t=this.get("items");t.forEach(function(t){t.completed=e}),this.set({items:t})}},events:{enter:e(n),escape:e(a)}}}();i.prototype=l.methods,window.todomvc=new i({target:document.querySelector(".todoapp")})}();
//# sourceMappingURL=bundle.js.map

...and after:

!function(){"use strict";var G='appendChild';var K='createTextNode';var P='parentNode';var Q='createElement';var R='removeChild';var U='className';var V='removeEventListener';var X='addEventListener';var Y='currentFilter';var Z='__svelte';var $='eachBlock_0_value';var aa='teardown';var ab='completed';var ac='numCompleted';var ad='insertBefore';var ae='length';var af='createComment';var ag='numActive';var ah='description';var ai='items';var aj='__calling';var ak='checked';var al='newTodo';function e(e,t,n){("items"in t&&"object"==typeof e[ai]||e[ai]!==n[ai])&&(e[ag]=t[ag]=l.computed[ag](e[ai])),("items"in t&&"object"==typeof e[ai]||e[ai]!==n[ai])&&(e[ac]=t[ac]=l.computed[ac](e[ai]))}function t(e,t,a){var r=document[Q]("header");r[U]="header";var d=document[Q]("h1"),o=document[K]("todos");d[G](o),r[G](d);var i=document[K]("\n\t");r[G](i);var c=document[Q]("input");t.refs[al]=c,c[U]="new-todo";var m=l.events.enter.call(t,c,function(e){t[al](this.value)});c.placeholder="What needs to be done?",c.autofocus=!0,r[G](c),a[G](r);var u=document[K]("\n\n");a[G](u);var s=document[af]("#if items.length > 0");a[G](s);var p=e[ai][ae]>0?n(e,t,a,s):null;return{update:function(e,r){r[ai][ae]>0?p?p.update(e,r):p=n(r,t,a,s):p&&(p[aa](!0),p=null)},teardown:function(e){e&&r[P][R](r),o[P][R](o),i[P][R](i),t.refs[al]===c&&(t.refs[al]=null),m[aa](),u[P][R](u),p&&p[aa](e),e&&s[P][R](s)}}}function n(e,t,n,d){function o(e){t.toggleAll(this[ak])}var i=document[Q]("section");i[U]="main";var l=document[Q]("input");l[U]="toggle-all",l.type="checkbox",l[X]("change",o,!1),l[ak]=e[ac]===e[ai][ae],i[G](l);var c=document[K]("\n\t\t");i[G](c);var m=document[Q]("label");m.htmlFor="toggle-all";var u=document[K]("Mark all as complete");m[G](u),i[G](m);var s=document[K]("\n\n\t\t");i[G](s);var p=document[Q]("ul");p[U]="todo-list";var v=document[af]("#each items");p[G](v);for(var h=e[ai],f=document.createDocumentFragment(),C=[],N=0;N<h[ae];N+=1)C[N]=r(e,h,h[N],N,t,f);v[P][ad](f,v),i[G](p);var g=document[K]("\n\n\t\t");i[G](g);var _=document[Q]("footer");_[U]="footer";var w=document[Q]("span");w[U]="todo-count";var E=document[Q]("strong"),x=document[K](e[ag]);E[G](x),w[G](E);var T=document[K](" ");w[G](T);var k=document[K](1===e[ag]?"item":"items");w[G](k);var b=document[K](" left");w[G](b),_[G](w);var B=document[K]("\n\n\t\t\t");_[G](B);var L=document[Q]("ul");L[U]="filters";var y=document[Q]("li"),F=document[Q]("a");F[U]="all"===e[Y]?"selected":"",F.href="#/";var A=document[K]("All");F[G](A),y[G](F),L[G](y);var O=document[K]("\n\t\t\t\t");L[G](O);var j=document[Q]("li"),S=document[Q]("a");S[U]="active"===e[Y]?"selected":"",S.href="#/active";var I=document[K]("Active");S[G](I),j[G](S),L[G](j);var J=document[K]("\n\t\t\t\t");L[G](J);var q=document[Q]("li"),D=document[Q]("a");D[U]="completed"===e[Y]?"selected":"",D.href="#/completed";var H=document[K]("Completed");D[G](H),q[G](D),L[G](q),_[G](L);var M=document[K]("\n\n\t\t\t");_[G](M);var W=document[af]("#if numCompleted");_[G](W);var z=e[ac]?a(e,t,_,W):null;return i[G](_),d[P][ad](i,d),{update:function(e,n){l[ak]=n[ac]===n[ai][ae];for(var d=n[ai],o=0;o<d[ae];o+=1)C[o]?C[o].update(e,n,d,d[o],o):C[o]=r(n,d,d[o],o,t,f);for(var o=d[ae];o<C[ae];o+=1)C[o][aa](!0);v[P][ad](f,v),C[ae]=d[ae],x.data=n[ag],k.data=1===n[ag]?"item":"items",F[U]="all"===n[Y]?"selected":"",S[U]="active"===n[Y]?"selected":"",D[U]="completed"===n[Y]?"selected":"",n[ac]?z?z.update(e,n):z=a(n,t,_,W):z&&(z[aa](!0),z=null)},teardown:function(e){e&&i[P][R](i),l[V]("change",o,!1),c[P][R](c),u[P][R](u),s[P][R](s);for(var t=0;t<C[ae];t+=1)C[t][aa](e);e&&v[P][R](v),g[P][R](g),T[P][R](T),b[P][R](b),B[P][R](B),A[P][R](A),O[P][R](O),I[P][R](I),J[P][R](J),H[P][R](H),M[P][R](M),z&&z[aa](e)}}}function a(e,t,n,a){function r(e){t.clearCompleted()}var d=document[Q]("button");d[U]="clear-completed",d[X]("click",r,!1);var o=document[K]("Clear completed");return d[G](o),a[P][ad](d,a),{update:function(e,t){},teardown:function(e){d[V]("click",r,!1),e&&d[P][R](d),o[P][R](o)}}}function r(e,t,n,a,r,o){var i=document[af]("#if filter(item, currentFilter)");o[G](i);var c=l.helpers.filter(n,e[Y])?d(e,t,n,a,r,o,i):null;return{update:function(e,t,n,a,m){var a=n[m];l.helpers.filter(a,t[Y])?c?c.update(e,t,n,a,m):c=d(t,n,a,m,r,o,i):c&&(c[aa](!0),c=null)},teardown:function(e){c&&c[aa](e),e&&i[P][R](i)}}}function d(e,t,n,a,r,d,i){function l(){v=!0;var e=this[Z][$],t=this[Z].index;e[t][ab]=p[ak],r.set({items:r.get("items")}),v=!1}function c(e){var t=this[Z][$],n=this[Z].index;t[n];r.edit(n)}function m(e){var t=this[Z][$],n=this[Z].index;t[n];r.remove(n)}var u=document[Q]("li");u[U]=""+(n[ab]?"completed":"")+" "+(e.editing===a?"editing":"");var s=document[Q]("div");s[U]="view";var p=document[Q]("input");p[U]="toggle",p.type="checkbox";var v=!1;p[X]("change",l,!1),p[ak]=n[ab],p[Z]={eachBlock_0_value:t,index:a},s[G](p);var h=document[K]("\n\t\t\t\t\t\t\t");s[G](h);var f=document[Q]("label");f[X]("dblclick",c,!1),f[Z]={eachBlock_0_value:t,index:a};var C=document[K](n[ah]);f[G](C),s[G](f);var N=document[K]("\n\t\t\t\t\t\t\t");s[G](N);var g=document[Q]("button");g[X]("click",m,!1),g[U]="destroy",g[Z]={eachBlock_0_value:t,index:a},s[G](g),u[G](s);var _=document[K]("\n\n\t\t\t\t\t\t");u[G](_);var w=document[af]("#if editing === index");u[G](w);var E=e.editing===a?o(e,t,n,a,r,u,w):null;return i[P][ad](u,i),{update:function(e,t,n,a,d){u[U]=""+(a[ab]?"completed":"")+" "+(t.editing===d?"editing":""),v||(p[ak]=a[ab]),p[Z][$]=n,p[Z].index=d,f[Z][$]=n,f[Z].index=d,C.data=a[ah],g[Z][$]=n,g[Z].index=d,t.editing===d?E?E.update(e,t,n,a,d):E=o(t,n,a,d,r,u,w):E&&(E[aa](!0),E=null)},teardown:function(e){e&&u[P][R](u),p[V]("change",l,!1),h[P][R](h),f[V]("dblclick",c,!1),N[P][R](N),g[V]("click",m,!1),_[P][R](_),E&&E[aa](e)}}}function o(e,t,n,a,r,d,o){function i(e){r.submit(this.value)}var c=document[Q]("input");c.value=n[ah],c.id="edit",c[U]="edit";var m=l.events.enter.call(r,c,function(e){r.blur(this)});c[X]("blur",i,!1);var u=l.events.escape.call(r,c,function(e){r.cancel()});return c.autofocus=!0,o[P][ad](c,o),c.focus(),{update:function(e,t,n,a,r){c.value=a[ah]},teardown:function(e){m[aa](),c[V]("blur",i,!1),u[aa](),e&&c[P][R](c)}}}function i(n){function a(e,t,n){for(var a in e)if(a in t){var d=t[a],o=n[a];if(d!==o||"object"==typeof d){var i=e[a];if(i)for(var l=0;l<i[ae];l+=1){var c=i[l];c[aj]||(c[aj]=!0,c.call(r,d,o),c[aj]=!1)}}}}var r=this;this.refs={};var d=Object.assign(l.data(),n.data);e(d,d,{});var o={immediate:Object.create(null),deferred:Object.create(null)},i=Object.create(null);this.fire=function(e,t){var n=this,a=e in i&&i[e].slice();if(a)for(var r=0;r<a[ae];r+=1)a[r].call(n,t)},this.get=function(e){return d[e]},this.set=function(t){var n=d;d=Object.assign({},n,t),e(d,t,n),a(o.immediate,t,n),c&&c.update(t,d),a(o.deferred,t,n)},this.observe=function(e,t,n){void 0===n&&(n={});var a=n.defer?o.deferred:o.immediate;return(a[e]||(a[e]=[])).push(t),n.init!==!1&&(t[aj]=!0,t.call(r,d[e]),t[aj]=!1),{cancel:function(){var n=a[e].indexOf(t);~n&&a[e].splice(n,1)}}},this.on=function(e,t){var n=i[e]||(i[e]=[]);return n.push(t),{cancel:function(){var e=n.indexOf(t);~e&&n.splice(e,1)}}},this[aa]=function(e){this.fire("teardown"),c[aa](e!==!1),c=null,d={}};var c=t(d,this,n.target);n.parent?n.parent.__renderHooks.push({fn:l.onrender,context:this}):l.onrender.call(this)}var l=function(){function e(e){return function(t,n){function a(t){t.which===e&&n.call(this,t)}return t[X]("keydown",a,!1),{teardown:function(){t[V]("keydown",a,!1)}}}}var t,n=13,a=27;try{t=JSON.parse(localStorage.getItem("todos-svelte"))||[]}catch(e){t=[]}return{data:function(){return{currentFilter:"all",items:t}},computed:{numActive:function(e){return e.filter(function(e){return!e[ab]})[ae]},numCompleted:function(e){return e.filter(function(e){return e[ab]})[ae]}},helpers:{filter:function(e,t){return"all"===t||("completed"===t?e[ab]:"active"===t?!e[ab]:void 0)}},onrender:function(){var e=this,t=function(){var t="all";"#/active"===window.location.hash?t="active":"#/completed"===window.location.hash&&(t="completed"),e.set({currentFilter:t})};window[X]("hashchange",t),t(),this.observe("items",function(e){try{localStorage.setItem("todos-svelte",JSON.stringify(e))}catch(e){}})},methods:{blur:function(e){e.blur()},cancel:function(){this.set({editing:null})},clearCompleted:function(){var e=this.get("items").filter(function(e){return!e[ab]});this.set({items:e})},edit:function(e){this.set({editing:e})},newTodo:function(e){var t=this.get("items");t.push({description:e,completed:!1}),this.set({items:t}),this.refs[al].value=""},remove:function(e){var t=this.get("items");t.splice(e,1),this.set({items:t})},submit:function(e){var t=this.get("items"),n=this.get("editing");t[n][ah]=e,this.set({items:t,editing:null})},toggleAll:function(e){var t=this.get("items");t.forEach(function(t){t[ab]=e}),this.set({items:t})}},events:{enter:e(n),escape:e(a)}}}();i.prototype=l.methods,window.todomvc=new i({target:document.querySelector(".todoapp")})}();
//# sourceMappingURL=bundle.js.map

The original is 11214b and the adjusted is 9003b, which is a savings of 2211b or roughly 20%.

License

MIT, WTFPL - go nuts