Skip to content

Commit d3465fc

Browse files
danilsomsikovDevtools-frontend LUCI CQ
authored andcommitted
Replace top-level variables with a lit template
Bug: 400353541 Change-Id: Iab1b2a5b596ca7efe4922124253947419d41a2d2 Reviewed-on: https://chromium-review.googlesource.com/c/devtools/devtools-frontend/+/6407493 Reviewed-by: Philip Pfaffe <[email protected]> Commit-Queue: Danil Somsikov <[email protected]>
1 parent f83ed26 commit d3465fc

File tree

3 files changed

+16
-4
lines changed

3 files changed

+16
-4
lines changed

scripts/eslint_rules/lib/no-imperative-dom-api.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,14 +173,23 @@ module.exports = {
173173
node: domFragment.replacementLocation,
174174
messageId: 'preferTemplateLiterals',
175175
fix(fixer) {
176+
const template = 'html`' + domFragment.toTemplateLiteral(sourceCode).join('') + '`';
176177
let replacementLocation = domFragment.replacementLocation;
178+
179+
if (replacementLocation.type === 'VariableDeclarator') {
180+
domFragment.initializer = null;
181+
return [
182+
fixer.replaceText(replacementLocation.init, template),
183+
...getRangesToRemove(domFragment).map(range => fixer.removeRange(range)),
184+
];
185+
}
186+
177187
if (replacementLocation.parent.type === 'ExportNamedDeclaration') {
178188
replacementLocation = replacementLocation.parent;
179189
}
180-
const template = domFragment.toTemplateLiteral(sourceCode).join('');
181190
const text = `
182191
export const DEFAULT_VIEW = (input, _output, target) => {
183-
render(html\`${template}\`,
192+
render(${template},
184193
target, {host: input});
185194
};
186195

scripts/eslint_rules/lib/no-imperative-dom-api/dom-fragment.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ class DomFragment {
5555
result.references = key.references.filter(r => !key.identifiers.includes(r.identifier))
5656
.map(r => ({node: /** @type {EsLintNode} */ (r.identifier)}));
5757
result.initializer = /** @type {EsLintNode} */ (key.identifiers[0]);
58+
result.replacementLocation = result.initializer.parent;
5859
result.expression = key.name;
5960
}
6061
}

scripts/eslint_rules/tests/no-imperative-dom-api.test.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -373,6 +373,7 @@ class SomeWidget extends UI.Widget.Widget {
373373
const filterInput = new UI.Toolbar.ToolbarButton(i18nString(UIStrings.editName), 'edit', undefined, 'edit-name');
374374
toolbar.appendToolbarItem(filterInput);
375375
const anotherElement = document.createElement('div');
376+
anotherElement.className = 'another-element';
376377
this.process(filterInput, anotherElement);
377378
}
378379
}`,
@@ -394,11 +395,12 @@ class SomeWidget extends UI.Widget.Widget {
394395
constructor() {
395396
super();
396397
const filterInput = new UI.Toolbar.ToolbarButton(i18nString(UIStrings.editName), 'edit', undefined, 'edit-name');
397-
const anotherElement = document.createElement('div');
398+
const anotherElement = html\`
399+
<div class="another-element"></div>\`;
398400
this.process(filterInput, anotherElement);
399401
}
400402
}`,
401-
errors: [{messageId: 'preferTemplateLiterals'}],
403+
errors: [{messageId: 'preferTemplateLiterals'}, {messageId: 'preferTemplateLiterals'}],
402404
},
403405
{
404406
filename: 'front_end/ui/components/component/file.ts',

0 commit comments

Comments
 (0)