mirror of
https://github.com/go-gitea/gitea.git
synced 2026-10-19 16:18:11 +00:00
chore(frontend): target ES2022 (#39420)
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.
This commit is contained in:
@@ -4,13 +4,7 @@
|
|||||||
import rule from './unescaped-html-literal.ts';
|
import rule from './unescaped-html-literal.ts';
|
||||||
import {RuleTester} from 'eslint';
|
import {RuleTester} from 'eslint';
|
||||||
|
|
||||||
class VitestRuleTester extends RuleTester {
|
const ruleTester = new RuleTester();
|
||||||
static describe = describe;
|
|
||||||
static it = it;
|
|
||||||
static itOnly = it.only;
|
|
||||||
}
|
|
||||||
|
|
||||||
const ruleTester = new VitestRuleTester();
|
|
||||||
|
|
||||||
ruleTester.run('unescaped-html-literal', rule, {
|
ruleTester.run('unescaped-html-literal', rule, {
|
||||||
valid: [
|
valid: [
|
||||||
|
|||||||
+2
-1
@@ -10,7 +10,7 @@
|
|||||||
"${configDir}/web_src/js/**/.*",
|
"${configDir}/web_src/js/**/.*",
|
||||||
],
|
],
|
||||||
"compilerOptions": {
|
"compilerOptions": {
|
||||||
"target": "es2020",
|
"target": "es2022",
|
||||||
"module": "esnext",
|
"module": "esnext",
|
||||||
"moduleResolution": "bundler",
|
"moduleResolution": "bundler",
|
||||||
"lib": ["dom", "esnext", "webworker"],
|
"lib": ["dom", "esnext", "webworker"],
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
"libReplacement": false,
|
"libReplacement": false,
|
||||||
"noEmit": true,
|
"noEmit": true,
|
||||||
"noFallthroughCasesInSwitch": true,
|
"noFallthroughCasesInSwitch": true,
|
||||||
|
"noImplicitOverride": true,
|
||||||
"noImplicitReturns": true,
|
"noImplicitReturns": true,
|
||||||
"noUncheckedSideEffectImports": true,
|
"noUncheckedSideEffectImports": true,
|
||||||
"noPropertyAccessFromIndexSignature": false,
|
"noPropertyAccessFromIndexSignature": false,
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,7 @@ function commonViteOpts({build, ...other}: InlineConfig): InlineConfig {
|
|||||||
outDir,
|
outDir,
|
||||||
emptyOutDir: false,
|
emptyOutDir: false,
|
||||||
sourcemap: enableSourcemap !== 'false',
|
sourcemap: enableSourcemap !== 'false',
|
||||||
target: 'es2020',
|
target: 'es2022',
|
||||||
minify: isProduction ? 'oxc' : false,
|
minify: isProduction ? 'oxc' : false,
|
||||||
cssMinify: isProduction ? 'esbuild' : false,
|
cssMinify: isProduction ? 'esbuild' : false,
|
||||||
chunkSizeWarningLimit: Infinity,
|
chunkSizeWarningLimit: Infinity,
|
||||||
|
|||||||
@@ -319,11 +319,11 @@ class RelativeTime extends HTMLElement {
|
|||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
|
||||||
get prefix(): string {
|
override get prefix(): string {
|
||||||
return this.getAttribute('prefix') ?? (this.format === 'datetime' ? '' : 'on');
|
return this.getAttribute('prefix') ?? (this.format === 'datetime' ? '' : 'on');
|
||||||
}
|
}
|
||||||
|
|
||||||
set prefix(v: string) {
|
override set prefix(v: string) {
|
||||||
this.setAttribute('prefix', v);
|
this.setAttribute('prefix', v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user