Skip to content

Commit 38abc76

Browse files
committed
TypeScript Tagged template literals compiled incorrectly
As discussed in bug microsoft/TypeScript#17956 TypeScript does a bad job compared to Babel when it comes to transform tagget template literals. Apparently users are ignoring this issue #99 so this version of hyperHTML should fix it.
1 parent 529fec6 commit 38abc76

File tree

7 files changed

+775
-754
lines changed

7 files changed

+775
-754
lines changed

coverage/coverage.json

+1-1
Large diffs are not rendered by default.

coverage/lcov-report/hyperHTML/hyperhtml.js.html

+40-25
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@ <h1>
2222
<div class='fl pad1y space-right2'>
2323
<span class="strong">100% </span>
2424
<span class="quiet">Statements</span>
25-
<span class='fraction'>567/567</span>
25+
<span class='fraction'>568/568</span>
2626
</div>
2727
<div class='fl pad1y space-right2'>
2828
<span class="strong">100% </span>
2929
<span class="quiet">Branches</span>
30-
<span class='fraction'>332/332</span>
30+
<span class='fraction'>326/326</span>
3131
</div>
3232
<div class='fl pad1y space-right2'>
3333
<span class="strong">100% </span>
3434
<span class="quiet">Functions</span>
35-
<span class='fraction'>92/92</span>
35+
<span class='fraction'>94/94</span>
3636
</div>
3737
<div class='fl pad1y space-right2'>
3838
<span class="strong">100% </span>
3939
<span class="quiet">Lines</span>
40-
<span class='fraction'>548/548</span>
40+
<span class='fraction'>550/550</span>
4141
</div>
4242
</div>
4343
</div>
@@ -1314,7 +1314,12 @@ <h1>
13141314
1269
13151315
1270
13161316
1271
1317-
1272</td><td class="line-coverage quiet"><span class="cline-any cline-yes"></span>
1317+
1272
1318+
1273
1319+
1274
1320+
1275
1321+
1276
1322+
1277</td><td class="line-coverage quiet"><span class="cline-any cline-yes"></span>
13181323
<span class="cline-any cline-neutral">&nbsp;</span>
13191324
<span class="cline-any cline-neutral">&nbsp;</span>
13201325
<span class="cline-any cline-neutral">&nbsp;</span>
@@ -1840,6 +1845,15 @@ <h1>
18401845
<span class="cline-any cline-neutral">&nbsp;</span>
18411846
<span class="cline-any cline-neutral">&nbsp;</span>
18421847
<span class="cline-any cline-neutral">&nbsp;</span>
1848+
<span class="cline-any cline-yes"></span>
1849+
<span class="cline-any cline-yes"></span>
1850+
<span class="cline-any cline-yes">203×</span>
1851+
<span class="cline-any cline-yes"></span>
1852+
<span class="cline-any cline-neutral">&nbsp;</span>
1853+
<span class="cline-any cline-neutral">&nbsp;</span>
1854+
<span class="cline-any cline-neutral">&nbsp;</span>
1855+
<span class="cline-any cline-neutral">&nbsp;</span>
1856+
<span class="cline-any cline-neutral">&nbsp;</span>
18431857
<span class="cline-any cline-neutral">&nbsp;</span>
18441858
<span class="cline-any cline-neutral">&nbsp;</span>
18451859
<span class="cline-any cline-yes"></span>
@@ -2245,16 +2259,13 @@ <h1>
22452259
<span class="cline-any cline-neutral">&nbsp;</span>
22462260
<span class="cline-any cline-neutral">&nbsp;</span>
22472261
<span class="cline-any cline-yes"></span>
2248-
<span class="cline-any cline-yes"></span>
2249-
<span class="cline-any cline-yes"></span>
22502262
<span class="cline-any cline-yes"></span>
22512263
<span class="cline-any cline-yes">203×</span>
22522264
<span class="cline-any cline-yes">203×</span>
22532265
<span class="cline-any cline-neutral">&nbsp;</span>
22542266
<span class="cline-any cline-neutral">&nbsp;</span>
22552267
<span class="cline-any cline-neutral">&nbsp;</span>
22562268
<span class="cline-any cline-neutral">&nbsp;</span>
2257-
<span class="cline-any cline-neutral">&nbsp;</span>
22582269
<span class="cline-any cline-yes"></span>
22592270
<span class="cline-any cline-neutral">&nbsp;</span>
22602271
<span class="cline-any cline-yes">76×</span>
@@ -2584,8 +2595,7 @@ <h1>
25842595
<span class="cline-any cline-neutral">&nbsp;</span>
25852596
<span class="cline-any cline-neutral">&nbsp;</span>
25862597
<span class="cline-any cline-neutral">&nbsp;</span>
2587-
<span class="cline-any cline-yes"></span>
2588-
<span class="cline-any cline-neutral">&nbsp;</span></td><td class="text"><pre class="prettyprint lang-js">var hyperHTML = (function (globalDocument) {'use strict';
2598+
<span class="cline-any cline-yes"></span></td><td class="text"><pre class="prettyprint lang-js">var hyperHTML = (function (globalDocument) {'use strict';
25892599
&nbsp;
25902600
/*! (c) 2017 Andrea Giammarchi @WebReflection, (ISC) */
25912601
&nbsp;
@@ -2801,7 +2811,7 @@ <h1>
28012811
var hyper = hypers.get(this);
28022812
if (
28032813
!hyper ||
2804-
hyper.template !== (FF ? unique(template) : template)
2814+
hyper.template !== TL(template)
28052815
) {
28062816
hyper = upgrade.apply(this, arguments);
28072817
hypers.set(this, hyper);
@@ -3107,6 +3117,15 @@ <h1>
31073117
&nbsp;
31083118
// beside IE, old WebKit browsers don't have `children` in DocumentFragment
31093119
var WK = !('children' in featureFragment);
3120+
&nbsp;
3121+
// both Firefox &lt; 55 and TypeScript have issues with template literals
3122+
// this lazy defined callback should spot issues right away
3123+
// and in the best case scenario become a no-op
3124+
var TL = function (template) {
3125+
if (template.propertyIsEnumerable('raw') || FF) TL = unique;
3126+
else TL = function (t) { return t; };
3127+
return TL(template);
3128+
};
31103129
&nbsp;
31113130
// ---------------------------------------------
31123131
// Helpers
@@ -3515,14 +3534,11 @@ <h1>
35153534
var transformers = {};
35163535
&nbsp;
35173536
// normalize Firefox issue with template literals
3518-
var templateObjects, unique;
3519-
if (FF) {
3520-
templateObjects = {};
3521-
unique = function (template) {
3522-
var key = '_' + template.join(UIDC);
3523-
return templateObjects[key] ||
3524-
(templateObjects[key] = template);
3525-
};
3537+
var templateObjects = {}, unique;
3538+
function unique(template) {
3539+
var key = '_' + template.join(UIDC);
3540+
return templateObjects[key] ||
3541+
(templateObjects[key] = template);
35263542
}
35273543
&nbsp;
35283544
// use native .append(...childNodes) where available
@@ -3750,7 +3766,7 @@ <h1>
37503766
// create a template, if unknown
37513767
// upgrade a node to use such template for future updates
37523768
function upgrade(template) {
3753-
if (FF) template = unique(template);
3769+
template = TL(template);
37543770
var updates;
37553771
var info = templates.get(template) ||
37563772
createTemplate.call(this, template);
@@ -3794,7 +3810,7 @@ <h1>
37943810
return type === 'adopt' ?
37953811
function adopt(statics) {
37963812
var args = arguments;
3797-
if (FF) statics = unique(statics);
3813+
statics = TL(statics);
37983814
if (template !== statics) {
37993815
setup = true;
38003816
template = statics;
@@ -3820,7 +3836,7 @@ <h1>
38203836
return adopter;
38213837
} :
38223838
function update(statics) {
3823-
if (FF) statics = unique(statics);
3839+
statics = TL(statics);
38243840
if (template !== statics) {
38253841
setup = true;
38263842
template = statics;
@@ -3855,14 +3871,13 @@ <h1>
38553871
}(document));
38563872
&nbsp;
38573873
// umd.KISS
3858-
try { module.exports = hyperHTML; } catch(o_O) {}
3859-
&nbsp;</pre></td></tr>
3874+
try { module.exports = hyperHTML; } catch(o_O) {}</pre></td></tr>
38603875
</table></pre>
38613876
<div class='push'></div><!-- for sticky footer -->
38623877
</div><!-- /wrapper -->
38633878
<div class='footer quiet pad2 space-top1 center small'>
38643879
Code coverage
3865-
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Sep 03 2017 10:41:35 GMT+0100 (BST)
3880+
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Thu Sep 07 2017 09:41:12 GMT+0100 (BST)
38663881
</div>
38673882
</div>
38683883
<script src="../prettify.js"></script>

coverage/lcov-report/hyperHTML/index.html

+9-9
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@ <h1>
2222
<div class='fl pad1y space-right2'>
2323
<span class="strong">100% </span>
2424
<span class="quiet">Statements</span>
25-
<span class='fraction'>567/567</span>
25+
<span class='fraction'>568/568</span>
2626
</div>
2727
<div class='fl pad1y space-right2'>
2828
<span class="strong">100% </span>
2929
<span class="quiet">Branches</span>
30-
<span class='fraction'>332/332</span>
30+
<span class='fraction'>326/326</span>
3131
</div>
3232
<div class='fl pad1y space-right2'>
3333
<span class="strong">100% </span>
3434
<span class="quiet">Functions</span>
35-
<span class='fraction'>92/92</span>
35+
<span class='fraction'>94/94</span>
3636
</div>
3737
<div class='fl pad1y space-right2'>
3838
<span class="strong">100% </span>
3939
<span class="quiet">Lines</span>
40-
<span class='fraction'>548/548</span>
40+
<span class='fraction'>550/550</span>
4141
</div>
4242
</div>
4343
</div>
@@ -62,13 +62,13 @@ <h1>
6262
<td class="file high" data-value="hyperhtml.js"><a href="hyperhtml.js.html">hyperhtml.js</a></td>
6363
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td>
6464
<td data-value="100" class="pct high">100%</td>
65-
<td data-value="567" class="abs high">567/567</td>
65+
<td data-value="568" class="abs high">568/568</td>
6666
<td data-value="100" class="pct high">100%</td>
67-
<td data-value="332" class="abs high">332/332</td>
67+
<td data-value="326" class="abs high">326/326</td>
6868
<td data-value="100" class="pct high">100%</td>
69-
<td data-value="92" class="abs high">92/92</td>
69+
<td data-value="94" class="abs high">94/94</td>
7070
<td data-value="100" class="pct high">100%</td>
71-
<td data-value="548" class="abs high">548/548</td>
71+
<td data-value="550" class="abs high">550/550</td>
7272
</tr>
7373

7474
</tbody>
@@ -77,7 +77,7 @@ <h1>
7777
</div><!-- /wrapper -->
7878
<div class='footer quiet pad2 space-top1 center small'>
7979
Code coverage
80-
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Sep 03 2017 10:41:35 GMT+0100 (BST)
80+
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Thu Sep 07 2017 09:41:12 GMT+0100 (BST)
8181
</div>
8282
</div>
8383
<script src="../prettify.js"></script>

coverage/lcov-report/index.html

+9-9
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@ <h1>
2222
<div class='fl pad1y space-right2'>
2323
<span class="strong">100% </span>
2424
<span class="quiet">Statements</span>
25-
<span class='fraction'>567/567</span>
25+
<span class='fraction'>568/568</span>
2626
</div>
2727
<div class='fl pad1y space-right2'>
2828
<span class="strong">100% </span>
2929
<span class="quiet">Branches</span>
30-
<span class='fraction'>332/332</span>
30+
<span class='fraction'>326/326</span>
3131
</div>
3232
<div class='fl pad1y space-right2'>
3333
<span class="strong">100% </span>
3434
<span class="quiet">Functions</span>
35-
<span class='fraction'>92/92</span>
35+
<span class='fraction'>94/94</span>
3636
</div>
3737
<div class='fl pad1y space-right2'>
3838
<span class="strong">100% </span>
3939
<span class="quiet">Lines</span>
40-
<span class='fraction'>548/548</span>
40+
<span class='fraction'>550/550</span>
4141
</div>
4242
</div>
4343
</div>
@@ -62,13 +62,13 @@ <h1>
6262
<td class="file high" data-value="hyperHTML/"><a href="hyperHTML/index.html">hyperHTML/</a></td>
6363
<td data-value="100" class="pic high"><div class="chart"><div class="cover-fill cover-full" style="width: 100%;"></div><div class="cover-empty" style="width:0%;"></div></div></td>
6464
<td data-value="100" class="pct high">100%</td>
65-
<td data-value="567" class="abs high">567/567</td>
65+
<td data-value="568" class="abs high">568/568</td>
6666
<td data-value="100" class="pct high">100%</td>
67-
<td data-value="332" class="abs high">332/332</td>
67+
<td data-value="326" class="abs high">326/326</td>
6868
<td data-value="100" class="pct high">100%</td>
69-
<td data-value="92" class="abs high">92/92</td>
69+
<td data-value="94" class="abs high">94/94</td>
7070
<td data-value="100" class="pct high">100%</td>
71-
<td data-value="548" class="abs high">548/548</td>
71+
<td data-value="550" class="abs high">550/550</td>
7272
</tr>
7373

7474
</tbody>
@@ -77,7 +77,7 @@ <h1>
7777
</div><!-- /wrapper -->
7878
<div class='footer quiet pad2 space-top1 center small'>
7979
Code coverage
80-
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Sun Sep 03 2017 10:41:35 GMT+0100 (BST)
80+
generated by <a href="http://istanbul-js.org/" target="_blank">istanbul</a> at Thu Sep 07 2017 09:41:12 GMT+0100 (BST)
8181
</div>
8282
</div>
8383
<script src="prettify.js"></script>

0 commit comments

Comments
 (0)