Skip to content
This repository was archived by the owner on Oct 26, 2021. It is now read-only.

Commit acc634f

Browse files
committed
Remove for-of and spread operator use in arrays to prevent Closure from including / using an iterator polyfill.
1 parent 2ad28b8 commit acc634f

5 files changed

Lines changed: 36 additions & 28 deletions

File tree

src/CustomElementInternals.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,9 @@ export default class CustomElementInternals {
164164
element[CustomElementInternalSymbols.definition] = definition;
165165

166166
if (definition.attributeChangedCallback) {
167-
for (const name of definition.observedAttributes) {
167+
const observedAttributes = definition.observedAttributes;
168+
for (let i = 0; i < observedAttributes.length; i++) {
169+
const name = observedAttributes[i];
168170
const value = element.getAttribute(name);
169171
if (value !== null) {
170172
this.attributeChangedCallback(element, name, null, value, null);

src/DocumentConstructionObserver.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,10 @@ export default class DocumentConstructionObserver {
4848
this._observer.disconnect();
4949
}
5050

51-
for (const mutation of mutations) {
52-
for (const addedNode of mutation.addedNodes) {
53-
this._internals.upgradeTree(addedNode);
51+
for (let i = 0; i < mutations.length; i++) {
52+
const addedNodes = mutations[i].addedNodes;
53+
for (let j = 0; j < addedNodes.length; j++) {
54+
this._internals.upgradeTree(addedNodes[j]);
5455
}
5556
}
5657
}

src/Patch/Interface/ChildNode.js

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,13 @@ export default function(internals, destination, builtIn) {
2828

2929
builtIn.before.apply(this, nodes);
3030

31-
for (const node of connectedBefore) {
32-
internals.disconnectTree(node);
31+
for (let i = 0; i < connectedBefore.length; i++) {
32+
internals.disconnectTree(connectedBefore[i]);
3333
}
3434

3535
if (Utilities.isConnected(this)) {
36-
for (const node of nodes) {
36+
for (let i = 0; i < nodes.length; i++) {
37+
const node = nodes[i];
3738
if (node instanceof Element) {
3839
internals.connectTree(node);
3940
}
@@ -52,12 +53,13 @@ export default function(internals, destination, builtIn) {
5253

5354
builtIn.after.apply(this, nodes);
5455

55-
for (const node of connectedBefore) {
56-
internals.disconnectTree(node);
56+
for (let i = 0; i < connectedBefore.length; i++) {
57+
internals.disconnectTree(connectedBefore[i]);
5758
}
5859

5960
if (Utilities.isConnected(this)) {
60-
for (const node of nodes) {
61+
for (let i = 0; i < nodes.length; i++) {
62+
const node = nodes[i];
6163
if (node instanceof Element) {
6264
internals.connectTree(node);
6365
}
@@ -78,13 +80,14 @@ export default function(internals, destination, builtIn) {
7880

7981
builtIn.replaceWith.apply(this, nodes);
8082

81-
for (const node of connectedBefore) {
82-
internals.disconnectTree(node);
83+
for (let i = 0; i < connectedBefore.length; i++) {
84+
internals.disconnectTree(connectedBefore[i]);
8385
}
8486

8587
if (wasConnected) {
8688
internals.disconnectTree(this);
87-
for (const node of nodes) {
89+
for (let i = 0; i < nodes.length; i++) {
90+
const node = nodes[i];
8891
if (node instanceof Element) {
8992
internals.connectTree(node);
9093
}

src/Patch/Interface/ParentNode.js

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@ export default function(internals, destination, builtIn) {
2626

2727
builtIn.prepend.apply(this, nodes);
2828

29-
for (const node of connectedBefore) {
30-
internals.disconnectTree(node);
29+
for (let i = 0; i < connectedBefore.length; i++) {
30+
internals.disconnectTree(connectedBefore[i]);
3131
}
3232

3333
if (Utilities.isConnected(this)) {
34-
for (const node of nodes) {
34+
for (let i = 0; i < nodes.length; i++) {
35+
const node = nodes[i];
3536
if (node instanceof Element) {
3637
internals.connectTree(node);
3738
}
@@ -50,12 +51,13 @@ export default function(internals, destination, builtIn) {
5051

5152
builtIn.append.apply(this, nodes);
5253

53-
for (const node of connectedBefore) {
54-
internals.disconnectTree(node);
54+
for (let i = 0; i < connectedBefore.length; i++) {
55+
internals.disconnectTree(connectedBefore[i]);
5556
}
5657

5758
if (Utilities.isConnected(this)) {
58-
for (const node of nodes) {
59+
for (let i = 0; i < nodes.length; i++) {
60+
const node = nodes[i];
5961
if (node instanceof Element) {
6062
internals.connectTree(node);
6163
}

src/Patch/Node.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ export default function(internals) {
2020
*/
2121
Node.prototype.insertBefore = function(node, refNode) {
2222
if (node instanceof DocumentFragment) {
23-
const insertedNodes = [...node.childNodes];
23+
const insertedNodes = Array.prototype.slice.apply(node.childNodes);
2424
const nativeResult = BuiltIn.Node_insertBefore.call(this, node, refNode);
2525

2626
// DocumentFragments can't be connected, so `disconnectTree` will never
2727
// need to be called on a DocumentFragment's children after inserting it.
2828

2929
if (Utilities.isConnected(this)) {
30-
for (const node of insertedNodes) {
31-
internals.connectTree(node);
30+
for (let i = 0; i < insertedNodes.length; i++) {
31+
internals.connectTree(insertedNodes[i]);
3232
}
3333
}
3434

@@ -56,15 +56,15 @@ export default function(internals) {
5656
*/
5757
Node.prototype.appendChild = function(node) {
5858
if (node instanceof DocumentFragment) {
59-
const insertedNodes = [...node.childNodes];
59+
const insertedNodes = Array.prototype.slice.apply(node.childNodes);
6060
const nativeResult = BuiltIn.Node_appendChild.call(this, node);
6161

6262
// DocumentFragments can't be connected, so `disconnectTree` will never
6363
// need to be called on a DocumentFragment's children after inserting it.
6464

6565
if (Utilities.isConnected(this)) {
66-
for (const node of insertedNodes) {
67-
internals.connectTree(node);
66+
for (let i = 0; i < insertedNodes.length; i++) {
67+
internals.connectTree(insertedNodes[i]);
6868
}
6969
}
7070

@@ -120,16 +120,16 @@ export default function(internals) {
120120
*/
121121
Node.prototype.replaceChild = function(nodeToInsert, nodeToRemove) {
122122
if (nodeToInsert instanceof DocumentFragment) {
123-
const insertedNodes = [...nodeToInsert.childNodes];
123+
const insertedNodes = Array.prototype.slice.apply(nodeToInsert.childNodes);
124124
const nativeResult = BuiltIn.Node_replaceChild.call(this, nodeToInsert, nodeToRemove);
125125

126126
// DocumentFragments can't be connected, so `disconnectTree` will never
127127
// need to be called on a DocumentFragment's children after inserting it.
128128

129129
if (Utilities.isConnected(this)) {
130130
internals.disconnectTree(nodeToRemove);
131-
for (const node of insertedNodes) {
132-
internals.connectTree(node);
131+
for (let i = 0; i < insertedNodes.length; i++) {
132+
internals.connectTree(insertedNodes[i]);
133133
}
134134
}
135135

0 commit comments

Comments
 (0)