From fe5e2989ef573cdd1335d6e9a3998d3569cd747a Mon Sep 17 00:00:00 2001 From: Malte Ubl Date: Fri, 22 Apr 2016 14:58:15 -0700 Subject: [PATCH] Turn on closure compiler collapse properties. Boom. The only apparent problem was related to handling of the default export from PJs, which needed both some local changes and a version bump for PJS. --- build-system/runner/dist/runner.jar | Bin 5884215 -> 5883519 bytes .../org/ampproject/AmpCommandLineRunner.java | 3 +- package.json | 2 +- src/polyfills/promise.js | 13 +++- test/size.txt | 72 +++++++++--------- 5 files changed, 51 insertions(+), 39 deletions(-) diff --git a/build-system/runner/dist/runner.jar b/build-system/runner/dist/runner.jar index 4660f260596f7153a660bcf75335fb55855e094b..b241a974f05aa6b4a9cfde74b7f2f57f7e7c4ac5 100644 GIT binary patch delta 2869 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 L5J*8c23-9cETBr@ delta 3554 zcmZYCbx>5@!@%){rC~vuU8FlCrCX$=YhjfXB_t%IV;=;T2T-Iz@}ZGdI$VQVq>+%8 z?h+|c_#J*T@B7R<@16O~cg~&r&%JZcx%XVXSjTTlTF0j_(uER`K_Da$h=*$;g#d}W zYnnD6wM$r{(k=An4Mst{)y8di60^>av9sCX*))9Kqxo0Z@ccX0!WT;Dupg{bwq<6) zoC3;TP7Gp`>wrGaPmTIXd2i-k;X*h`pp&w4mvR(8jJK?|e=qXyljf;q*AosBb+zxng-Cr<;j0 z-*8|xd4XFVlw|qv`l^iBj>__BPPoOgNxyP^WZJlLpmf9N7Gts+9->YT&zcF}!!
+Pn``nALI{lNej}=huUpCKMMmQW9!4<)Ct?GI zKyDC2AOetd>TVQW`d}A|5uIx0Zpv&<7v`ajN)m~}G^O3wjr-2~$*rLQOE5wgp$Sz> zvM)J~@R_puyo4Q?YfHVPyNZ%0V^LV9I*^fzUl(zSqnY{HF`r(yp1rQPzIu6nx{ro5 zN3cNQm@cCew>_;y3aY5WolLf>XzWmg$5&XV0S&<&1Wv*%d$=hWZU5~kG8D&l_$|?+ zXs07%B{6gmv-mK3XTMD=rzi1mc;y;ASpJv2YSy|-KW3jVc0aJ-mRTytq+c+eMGPH9 zg?eU{w69)cPekqofOk&h4tg}mx-od$Wk`DA6;ja3S3HRM!1qY& z%8CEBdUSA`RqL;LM#u4R-58rEl*Y#Q^wauS-x$Jhgigcb$#0x}fZ+l|LHIN}Kv zZzYZk2J@VeEZ+G}7&I>B@<`nMNOq96kB7D|AZxmqZ%k4YP0?kKN4m)n+v>-I$vpNh zoVKat_Rn25Gi>4ea_p9KyyQVCRK^q#y|~x6m~0t^T{BXlF(}aSx3bNs^~$pU6&709 zV0u;EFz4bX%{n3fasrvPI4{HxJJF$7=&*+RGa+qCiFoIGlmvP9{cHmqH?W*qSBzbr ztHXYqR`5l1-Ta$&oAm?%m0e1V5Hv_mo+>*bXzq`n6q60-`Ud__Z*axS!ues7EC@?mOW`im1cu*J?Gc;ExR#B+&NLkgo?b0;x|g z@&0FZB7t15OZc&6&{-k~WRwyDxrz7RxyXtxM$VYroTRrNutGTAXRw1u(vn-dI}^bs zUJ^WVQ^g@ExH@q-B;CwFzkSJwo_|}L8m>j#n}#nwXXW+pzXZ*{M3g_ITjxkEE!v^d zF<0g=uf}a>Z@PFTMsceQhX(naOb742A5=aXzq-1lg7h3}vD`wmT75`r+R9yT(=9;L zt@UirSJD&6Cm{w?W`nRxt*MzfQIrtU=!d&#zbIjS@cHux42+?!8fW3=3X0epkyvvw zr#W`T{q!gmm+>d$$j$QjdQ83+=lexWmus3#Z-X^0_C-y816}A7oT19-dwA=nN_l<+ z!%SPi9BtQXmqxJp4bRj1X9J?qez(xJbR7N-^t-VRQGM89Pv;}Fp^UO?nrSa%%&M7Y z&qkuMyMmu=iGBM%sn0Y`JKCn>!2)bKU*O*C3b#VC8h#Fu-y#YYgS|YLb`BW)D<0Xh zB|VIJQ5m!Q_h;`=wKK-5D8%-#+-_Rsbo=Ve4+RO{j`9Jry_~RSOUsPv0S~lr$V$1- zQym-zd+Gk{Px)^1J%d7p{f)dKv8z8sly-R->v7Dp*e7g-G2=#Ol!Yv_@Ywc{Ntk2+ zb*Q|}sGTx)9`>_iECI$$Bu<|_deBQN^V5a=$1vA7MX!4Vue%53XvXZCvDR-{DkjeK zs=kE}_}8jqv%cpkPr1)AOB|pj;*CT7JT)s{5QiVAzi!8Hy~aT4J<@uMn;sN*a@p3O*FA)J{B&)5Fjr?K+&p%}XshVrAr zhuDX9dfkfcawW6(qGqZkz21v^kRfwMCpR*KlgPeyExtGuww3)kXHGGN9)S0mYU#Yo zknlvVr8h!#%rfW2JSkO{)?%HFax14BBz$(Z7g|zi?500bkRhf?J?*E;r{Wsc%~(0|x#sdMPTpTI3uW1J=#ef>4=9tR1p z8o$Sxfn#cB{q0xBwkfSlr$X;SCLf)zq3fFC^R~_sTBn|s zGM&N045+e9$H=Vb-&^a$%5JT5UN|$zcf-J z=}K*z3-Om#ZK|@cZRKx>T<~~Jq*?q;Z7r$AL#8q$M~Su>EBY>>*aT=ict(#A{i~jLzIqS*-+9`+7#KojBm_sA3c;HR7uKi$zD0BkVZ)wO zf}dCT;qLH2c4Pc}n;;+Ds1-jtu{#kK{!=y~K0>z0&Ua6~$PP`_S^JgRt^2po2}K6F zBe4n>s#k)Bdh==y+OgjmWM|}{T5^sIiEDc-5Hv8Wv@&Uz(ef!+HjH_<#W(xDde$%H zKmT}JyAhL&-AiyHsbdT*Ie$myF8$Ba@cRJznm5DmnJn^GpFFQ1;B7G|C{{-%$e5%I z+Me-<_lNstqdM%-Sev}wKg@4BS=Npm?Tu~`D-6{ve@2+}D#R#wIr5U?^I3jO-suxq zg4GRiZFKV=$qk6S|B}aC^VTex`JL3Vn|>;n#vrS$$&_Cq^yzXA{|qHJRo3!b0&$@KViWluTZ|RZNsDt$urud`i$OVqS7W}i$wV|SgU_+cS5}`2Fq95NrXhy%>`y_fm4!i1{?N_Z9@SF}S zUNk(ts#Dt>s%V^N|Dvzi-et+=RXMxj@;g9XS=~!nU6A~xE&R9UD%U2P>XLF>)>yvr zprW+QUrzf+c1?E~bWWSL&Pl^cF(s9~ac8%uFhggT>aDxX|9%TKqLZ}6X)1-xVo;C> zVX0_gDLeolfC2;nAwUEW10(<`Kn9Ql6aWmM1gL-;05w1Z&;oP-J-`4k0!#oLKmg3Z zO@IYp1=s*~fCJzJxBzZ|2jB(x0DeFK5Cnt(Vc-@Z0*C@)fH)ulNCLNk>wA(0WB^$} z4v+^F07XCvPzF>0RX`261E>Rc0S!PC&;qmp9pE0I3+Ms*fB|3#7y-tB31AAC0p(=rxyli>O^UI$9-x{@6znd`cBpzd6^wgaVe-HQ&C z@pTP4QQBauk)F|sQn((EccPrHtI~yfK>2_78tG+SC>^%{_tOLU_b3W)PQTHO5`u!a YAzir}#f(2Flm4I^#Y&|22?Z|u5A?!lZ2$lO diff --git a/build-system/runner/src/org/ampproject/AmpCommandLineRunner.java b/build-system/runner/src/org/ampproject/AmpCommandLineRunner.java index 7837a246b653..41fd8cd6b9db 100644 --- a/build-system/runner/src/org/ampproject/AmpCommandLineRunner.java +++ b/build-system/runner/src/org/ampproject/AmpCommandLineRunner.java @@ -13,7 +13,7 @@ public class AmpCommandLineRunner extends CommandLineRunner { /** - * List of string suffixes to eliminate from the AST. + * List of string suffixes to eliminate from the AST. */ ImmutableSet suffixTypes = ImmutableSet.of( "dev.fine"); @@ -24,6 +24,7 @@ protected AmpCommandLineRunner(String[] args) { @Override protected CompilerOptions createOptions() { CompilerOptions options = super.createOptions(); + options.setCollapseProperties(true); AmpPass ampPass = new AmpPass(getCompiler(), suffixTypes); options.addCustomPass(CustomPassExecutionTime.BEFORE_OPTIMIZATIONS, ampPass); return options; diff --git a/package.json b/package.json index af756c423a90..f6c584ad5d52 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "heroku-postbuild": "gulp clean && gulp build --fortesting && gulp dist --fortesting" }, "dependencies": { - "promise-pjs": "0.2.6", + "promise-pjs": "1.0.0", "document-register-element": "0.5.4" }, "devDependencies": { diff --git a/src/polyfills/promise.js b/src/polyfills/promise.js index c93f7002dd22..27a5db24b443 100644 --- a/src/polyfills/promise.js +++ b/src/polyfills/promise.js @@ -15,7 +15,7 @@ */ -import {Promise} from 'promise-pjs/promise'; +import * as Promise from 'promise-pjs/promise'; /** * Sets the Promise polyfill if it does not exist. @@ -24,5 +24,16 @@ import {Promise} from 'promise-pjs/promise'; export function install(win) { if (!win.Promise) { win.Promise = Promise; + // In babel the * export is an Object with a default property. + // In closure compiler it is the Promise function itself. + if (Promise.default) { + win.Promise = Promise.default; + } + // We copy the individual static methods, because closure + // compiler flattens the polyfill namespace. + win.Promise.resolve = Promise.resolve; + win.Promise.reject = Promise.reject; + win.Promise.all = Promise.all; + win.Promise.race = Promise.race; } } diff --git a/test/size.txt b/test/size.txt index 6b4dce53b6a5..77bee6224bd4 100644 --- a/test/size.txt +++ b/test/size.txt @@ -1,38 +1,38 @@ max | min | gzip | file --- | --- | --- | --- -614.24 kB | 173.35 kB | 47.8 kB | v0.js / amp.js -354.36 kB | 86.94 kB | 25.69 kB | v0/amp-access-0.1.js - 27.07 kB | 9.35 kB | 3.63 kB | v0/amp-accordion-0.1.js -382.54 kB | 104.41 kB | 32.81 kB | v0/amp-analytics-0.1.js - 87.25 kB | 14.26 kB | 5.31 kB | v0/amp-anim-0.1.js - 84.09 kB | 13.66 kB | 5.18 kB | v0/amp-audio-0.1.js - 78.94 kB | 12.77 kB | 4.7 kB | v0/amp-brid-player-0.1.js - 94.63 kB | 16.66 kB | 6.08 kB | v0/amp-brightcove-0.1.js -191.09 kB | 38.88 kB | 11.36 kB | v0/amp-carousel-0.1.js - 71.52 kB | 10.68 kB | 4.13 kB | v0/amp-dailymotion-0.1.js - 81.85 kB | 10.84 kB | 4.16 kB | v0/amp-dynamic-css-classes-0.1.js -132.09 kB | 24.34 kB | 8.71 kB | v0/amp-facebook-0.1.js - 34.58 kB | 10.76 kB | 4.07 kB | v0/amp-fit-text-0.1.js - 88.51 kB | 14.11 kB | 4.93 kB | v0/amp-font-0.1.js -123.68 kB | 23.33 kB | 8.19 kB | v0/amp-iframe-0.1.js -216.98 kB | 48.58 kB | 13.8 kB | v0/amp-image-lightbox-0.1.js - 87.44 kB | 14.32 kB | 5.23 kB | v0/amp-instagram-0.1.js - 81.11 kB | 12.78 kB | 4.78 kB | v0/amp-install-serviceworker-0.1.js - 78.37 kB | 12.2 kB | 4.58 kB | v0/amp-jwplayer-0.1.js - 92.36 kB | 16.26 kB | 6.04 kB | v0/amp-kaltura-player-0.1.js -136.78 kB | 21.81 kB | 6.91 kB | v0/amp-lightbox-0.1.js -278.35 kB | 62.36 kB | 18.38 kB | v0/amp-list-0.1.js -143.99 kB | 44.74 kB | 15.55 kB | v0/amp-mustache-0.1.js -120.43 kB | 30.89 kB | 9.5 kB | v0/amp-pinterest-0.1.js - 70.64 kB | 10.24 kB | 3.95 kB | v0/amp-reach-player-0.1.js - 95.3 kB | 17.16 kB | 6.1 kB | v0/amp-sidebar-0.1.js -105.86 kB | 17.94 kB | 6.32 kB | v0/amp-slides-0.1.js -114.12 kB | 25.01 kB | 8.88 kB | v0/amp-social-share-0.1.js - 71.21 kB | 10.43 kB | 4.03 kB | v0/amp-soundcloud-0.1.js - 79.18 kB | 12.93 kB | 4.67 kB | v0/amp-springboard-player-0.1.js -132.56 kB | 24.46 kB | 8.75 kB | v0/amp-twitter-0.1.js -280.28 kB | 63.14 kB | 18.56 kB | v0/amp-user-notification-0.1.js - 71.14 kB | 10.34 kB | 3.99 kB | v0/amp-vimeo-0.1.js - 70.67 kB | 10.21 kB | 3.95 kB | v0/amp-vine-0.1.js - 81.63 kB | 13.23 kB | 4.91 kB | v0/amp-youtube-0.1.js -135.66 kB | 36.85 kB | 12.34 kB | current-min/f.js / current/integration.js \ No newline at end of file +614.81 kB | 157.73 kB | 43.68 kB | v0.js / amp.js +355.06 kB | 49.26 kB | 15.31 kB | v0/amp-access-0.1.js + 27.06 kB | 5.96 kB | 2.35 kB | v0/amp-accordion-0.1.js +383.11 kB | 65.79 kB | 21.79 kB | v0/amp-analytics-0.1.js + 87.72 kB | 9.49 kB | 3.62 kB | v0/amp-anim-0.1.js + 84.56 kB | 7.22 kB | 2.92 kB | v0/amp-audio-0.1.js + 79.41 kB | 8.33 kB | 3.16 kB | v0/amp-brid-player-0.1.js + 95.11 kB | 7.98 kB | 3.05 kB | v0/amp-brightcove-0.1.js +191.56 kB | 33.17 kB | 9.53 kB | v0/amp-carousel-0.1.js + 72 kB | 6.96 kB | 2.78 kB | v0/amp-dailymotion-0.1.js + 82.32 kB | 5.28 kB | 2.27 kB | v0/amp-dynamic-css-classes-0.1.js +132.66 kB | 14.45 kB | 5.7 kB | v0/amp-facebook-0.1.js + 34.57 kB | 6.72 kB | 2.64 kB | v0/amp-fit-text-0.1.js + 88.98 kB | 9.66 kB | 3.5 kB | v0/amp-font-0.1.js +124.25 kB | 14.6 kB | 5.28 kB | v0/amp-iframe-0.1.js +217.45 kB | 40.04 kB | 11.23 kB | v0/amp-image-lightbox-0.1.js + 87.92 kB | 8.12 kB | 3.14 kB | v0/amp-instagram-0.1.js + 81.58 kB | 8.63 kB | 3.49 kB | v0/amp-install-serviceworker-0.1.js + 78.84 kB | 7.79 kB | 3.03 kB | v0/amp-jwplayer-0.1.js + 92.83 kB | 8.66 kB | 3.37 kB | v0/amp-kaltura-player-0.1.js +137.25 kB | 15.35 kB | 4.83 kB | v0/amp-lightbox-0.1.js +278.92 kB | 24.92 kB | 8.05 kB | v0/amp-list-0.1.js +143.99 kB | 40.5 kB | 14.27 kB | v0/amp-mustache-0.1.js +120.91 kB | 24.95 kB | 7.6 kB | v0/amp-pinterest-0.1.js + 71.11 kB | 6.52 kB | 2.61 kB | v0/amp-reach-player-0.1.js + 95.78 kB | 11.6 kB | 4.16 kB | v0/amp-sidebar-0.1.js +106.34 kB | 12.75 kB | 4.54 kB | v0/amp-slides-0.1.js + 114.6 kB | 16.11 kB | 5.82 kB | v0/amp-social-share-0.1.js + 71.69 kB | 6.67 kB | 2.66 kB | v0/amp-soundcloud-0.1.js + 79.66 kB | 8.51 kB | 3.14 kB | v0/amp-springboard-player-0.1.js +133.13 kB | 14.57 kB | 5.74 kB | v0/amp-twitter-0.1.js +280.85 kB | 26 kB | 8.31 kB | v0/amp-user-notification-0.1.js + 71.61 kB | 6.62 kB | 2.65 kB | v0/amp-vimeo-0.1.js + 71.15 kB | 6.49 kB | 2.61 kB | v0/amp-vine-0.1.js + 82.11 kB | 8.8 kB | 3.38 kB | v0/amp-youtube-0.1.js +135.65 kB | 30.41 kB | 10.75 kB | current-min/f.js / current/integration.js \ No newline at end of file