mirror of https://github.com/sveltejs/svelte
chore: runtime linting (#12314)
- check that the runtime doesn't use methods that are too new - add linting rule to prevent references to the compiler in the runtime (this is important for the first check, else the ambient node typings would be included, which includes a definition for `at()`, which means we no longer would get errors when violating the "don't use new methods" rule in the runtime) - fix code as a result of these new checks closes #10438pull/12329/head
parent
ed6084806d
commit
5eff68f63d
@ -1,74 +0,0 @@
|
|||||||
export const reserved = [
|
|
||||||
'arguments',
|
|
||||||
'await',
|
|
||||||
'break',
|
|
||||||
'case',
|
|
||||||
'catch',
|
|
||||||
'class',
|
|
||||||
'const',
|
|
||||||
'continue',
|
|
||||||
'debugger',
|
|
||||||
'default',
|
|
||||||
'delete',
|
|
||||||
'do',
|
|
||||||
'else',
|
|
||||||
'enum',
|
|
||||||
'eval',
|
|
||||||
'export',
|
|
||||||
'extends',
|
|
||||||
'false',
|
|
||||||
'finally',
|
|
||||||
'for',
|
|
||||||
'function',
|
|
||||||
'if',
|
|
||||||
'implements',
|
|
||||||
'import',
|
|
||||||
'in',
|
|
||||||
'instanceof',
|
|
||||||
'interface',
|
|
||||||
'let',
|
|
||||||
'new',
|
|
||||||
'null',
|
|
||||||
'package',
|
|
||||||
'private',
|
|
||||||
'protected',
|
|
||||||
'public',
|
|
||||||
'return',
|
|
||||||
'static',
|
|
||||||
'super',
|
|
||||||
'switch',
|
|
||||||
'this',
|
|
||||||
'throw',
|
|
||||||
'true',
|
|
||||||
'try',
|
|
||||||
'typeof',
|
|
||||||
'var',
|
|
||||||
'void',
|
|
||||||
'while',
|
|
||||||
'with',
|
|
||||||
'yield'
|
|
||||||
];
|
|
||||||
|
|
||||||
const void_element_names = [
|
|
||||||
'area',
|
|
||||||
'base',
|
|
||||||
'br',
|
|
||||||
'col',
|
|
||||||
'command',
|
|
||||||
'embed',
|
|
||||||
'hr',
|
|
||||||
'img',
|
|
||||||
'input',
|
|
||||||
'keygen',
|
|
||||||
'link',
|
|
||||||
'meta',
|
|
||||||
'param',
|
|
||||||
'source',
|
|
||||||
'track',
|
|
||||||
'wbr'
|
|
||||||
];
|
|
||||||
|
|
||||||
/** @param {string} name */
|
|
||||||
export function is_void(name) {
|
|
||||||
return void_element_names.includes(name) || name.toLowerCase() === '!doctype';
|
|
||||||
}
|
|
@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"extends": "./tsconfig.json",
|
||||||
|
"compilerOptions": {
|
||||||
|
// Ensure we don't use any methods that are not available in all browser for a long period of time
|
||||||
|
// so that people don't need to polyfill them. Example array.at(...) was introduced to Safari only in 2022
|
||||||
|
"target": "es2021",
|
||||||
|
"lib": ["es2021", "DOM", "DOM.Iterable"],
|
||||||
|
"types": [] // prevent automatic inclusion of @types/node
|
||||||
|
},
|
||||||
|
"include": ["./src/"],
|
||||||
|
// Compiler is allowed to use more recent methods; people using it in the browser are expected to know
|
||||||
|
// how to polyfill missing methods. Also make sure to not include test files as these include Vitest
|
||||||
|
// which then loads node globals.
|
||||||
|
"exclude": ["./src/compiler/**/*", "./src/**/*.test.ts"]
|
||||||
|
}
|
Loading…
Reference in new issue