mirror of
https://github.com/n8n-io/n8n.git
synced 2024-12-24 04:04:06 -08:00
refactor: Lint for no interpolation in regular string (#5060) (no-changelog)
* ✨ Create rule `no-interpolation-in-regular-string` * 👕 Enable rule * ⚡ Run rule (no issues) and add exception * ⚡ Simplify regex To account for expressions and to make it less expensive
This commit is contained in:
parent
ba0fd8a310
commit
0b47f9ce4e
|
@ -341,6 +341,8 @@ const config = (module.exports = {
|
||||||
|
|
||||||
'n8n-local-rules/no-unneeded-backticks': 'error',
|
'n8n-local-rules/no-unneeded-backticks': 'error',
|
||||||
|
|
||||||
|
'n8n-local-rules/no-interpolation-in-regular-string': 'error',
|
||||||
|
|
||||||
// ******************************************************************
|
// ******************************************************************
|
||||||
// overrides to base ruleset
|
// overrides to base ruleset
|
||||||
// ******************************************************************
|
// ******************************************************************
|
||||||
|
|
|
@ -139,6 +139,36 @@ module.exports = {
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'no-interpolation-in-regular-string': {
|
||||||
|
meta: {
|
||||||
|
type: 'problem',
|
||||||
|
docs: {
|
||||||
|
description:
|
||||||
|
'String interpolation `${...}` requires backticks, not single or double quotes.',
|
||||||
|
recommended: 'error',
|
||||||
|
},
|
||||||
|
messages: {
|
||||||
|
useBackticks: 'Use backticks to interpolate',
|
||||||
|
},
|
||||||
|
fixable: 'code',
|
||||||
|
},
|
||||||
|
create(context) {
|
||||||
|
return {
|
||||||
|
Literal(node) {
|
||||||
|
if (typeof node.value !== 'string') return;
|
||||||
|
|
||||||
|
if (/\$\{/.test(node.value)) {
|
||||||
|
context.report({
|
||||||
|
messageId: 'useBackticks',
|
||||||
|
node,
|
||||||
|
fix: (fixer) => fixer.replaceText(node, `\`${node.value}\``),
|
||||||
|
});
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
|
},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const isJsonParseCall = (node) =>
|
const isJsonParseCall = (node) =>
|
||||||
|
|
|
@ -6,6 +6,7 @@ import { completeFromList, snippetCompletion } from '@codemirror/autocomplete';
|
||||||
*/
|
*/
|
||||||
export const jsSnippets = completeFromList([
|
export const jsSnippets = completeFromList([
|
||||||
...snippets.filter((snippet) => snippet.label !== 'class'),
|
...snippets.filter((snippet) => snippet.label !== 'class'),
|
||||||
|
// eslint-disable-next-line n8n-local-rules/no-interpolation-in-regular-string
|
||||||
snippetCompletion('console.log(${arg})', { label: 'console.log()' }),
|
snippetCompletion('console.log(${arg})', { label: 'console.log()' }),
|
||||||
snippetCompletion('DateTime', { label: 'DateTime' }),
|
snippetCompletion('DateTime', { label: 'DateTime' }),
|
||||||
snippetCompletion('Interval', { label: 'Interval' }),
|
snippetCompletion('Interval', { label: 'Interval' }),
|
||||||
|
|
Loading…
Reference in a new issue