UNPKG

@o3r/eslint-plugin

Version:

The module provides in-house eslint plugins to use in your own eslint configuration.

57 lines (56 loc) 2.22 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.name = void 0; const utils_1 = require("../../utils"); const utils_2 = require("../utils"); /** Rule Name */ exports.name = 'no-inner-html'; exports.default = (0, utils_1.createRule)({ name: exports.name, defaultOptions: [], meta: { type: 'problem', hasSuggestions: true, docs: { description: 'Ensures that your template does not use innerHTML' }, schema: [], messages: { error: 'Unexpected use of innerHTML', fix: 'Replace innerHTML by innerText' }, fixable: 'code' }, create: (context) => { // To throw error if use without @angular-eslint/template-parser (0, utils_2.getTemplateParserServices)(context); const rule = (node) => { const innerHTMLAttribute = node.attributes.find((a) => /innerhtml/i.test(a.name)); if (innerHTMLAttribute && innerHTMLAttribute.keySpan) { context.report({ messageId: 'error', loc: { column: innerHTMLAttribute.keySpan.start.col, line: innerHTMLAttribute.keySpan.start.line, end: { column: innerHTMLAttribute.keySpan.end.col, line: innerHTMLAttribute.keySpan.end.line }, start: { column: innerHTMLAttribute.keySpan.start.col, line: innerHTMLAttribute.keySpan.start.line } }, fix: (fixer) => fixer.replaceTextRange([innerHTMLAttribute.keySpan.start.offset, innerHTMLAttribute.keySpan.end.offset], 'innerText'), suggest: [{ messageId: 'fix', fix: (fixer) => fixer.replaceTextRange([innerHTMLAttribute.keySpan.start.offset, innerHTMLAttribute.keySpan.end.offset], 'innerText') }] }); } }; return { Element: rule }; } });