mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-19 16:18:11 +00:00
Bump the TypeScript and Vite targets from ES2020 to ES2022. The frontend already calls ES2022 APIs like `Object.hasOwn` and `Array.prototype.at` without polyfills, so downleveling class syntax only added helpers. JS output shrinks by 36 KB. The only new syntax-level requirement is Safari 16.4 for mermaid, which ships class static blocks. Pale Moon supports all emitted syntax since 32.2. The ES2022 target implies `useDefineForClassFields`, so `noImplicitOverride` is enabled to flag class fields that shadow inherited DOM properties.
80 lines
2.3 KiB
TypeScript
80 lines
2.3 KiB
TypeScript
// MIT license, Copyright (c) GitHub, Inc.
|
|
// https://github.com/github/eslint-plugin-github/blob/main/lib/rules/unescaped-html-literal.js
|
|
/* eslint-disable no-template-curly-in-string -- the fixtures are template literal sources inside plain strings */
|
|
import rule from './unescaped-html-literal.ts';
|
|
import {RuleTester} from 'eslint';
|
|
|
|
const ruleTester = new RuleTester();
|
|
|
|
ruleTester.run('unescaped-html-literal', rule, {
|
|
valid: [
|
|
{
|
|
code: '`Hello World!`;',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
{
|
|
code: "'Hello World!'",
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
{
|
|
code: '"Hello World!"',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
{
|
|
code: 'const helloTemplate = () => html`<div>Hello World!</div>`;',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
{
|
|
code: 'const helloTemplate = (name) => html`<div>Hello ${name}!</div>`;',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
},
|
|
],
|
|
invalid: [
|
|
{
|
|
code: "const helloHTML = '<div>Hello, World!</div>'",
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
code: 'const helloHTML = "<h1>Hello, World!</h1>"',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
code: 'const helloHTML = `<div>Hello ${name}!</div>`',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
code: 'const helloHTML = ` \n\t<div>Hello ${name}!</div>`',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
{
|
|
code: 'const helloHTML = foo`<div>Hello ${name}!</div>`',
|
|
languageOptions: {ecmaVersion: 2017},
|
|
errors: [
|
|
{
|
|
message: 'Unescaped HTML literal. Use html`` tag template literal for secure escaping.',
|
|
},
|
|
],
|
|
},
|
|
],
|
|
});
|