UNPKG

reserved-identifiers

Version:

Provides a list of reserved identifiers for JavaScript

93 lines (86 loc) 1.4 kB
// https://262.ecma-international.org/14.0/#sec-keywords-and-reserved-words // 14 is ES2023 const identifiers = [ // Keywords 'await', 'break', 'case', 'catch', 'class', 'const', 'continue', 'debugger', 'default', 'delete', 'do', 'else', 'enum', 'export', 'extends', 'false', 'finally', 'for', 'function', 'if', 'import', 'in', 'instanceof', 'new', 'null', 'return', 'super', 'switch', 'this', 'throw', 'true', 'try', 'typeof', 'var', 'void', 'while', 'with', 'yield', // Future reserved keywords (strict mode) 'implements', 'interface', 'let', 'package', 'private', 'protected', 'public', 'static', // Not keywords, but still restricted 'arguments', 'eval', ]; // https://262.ecma-international.org/14.0/#sec-value-properties-of-the-global-object const globalProperties = [ 'globalThis', 'Infinity', 'NaN', 'undefined', ]; // These are TypeScript's built-in types that are reserved and cannot be used for type names const typeScriptTypes = [ 'any', 'bigint', 'boolean', 'never', 'null', 'number', 'object', 'string', 'symbol', 'undefined', 'unknown', 'void', ]; export default function reservedIdentifiers({includeGlobalProperties = false} = {}) { return new Set([ ...identifiers, ...(includeGlobalProperties ? globalProperties : []), ]); } export function typeScriptReservedTypes() { return new Set(typeScriptTypes); }