123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- "use strict";Object.defineProperty(exports, "__esModule", {value: true});var _identifier = require('../parser/util/identifier');
- // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar
- // Hard-code a list of reserved words rather than trying to use keywords or contextual keywords
- // from the parser, since currently there are various exceptions, like `package` being reserved
- // but unused and various contextual keywords being reserved. Note that we assume that all code
- // compiled by Sucrase is in a module, so strict mode words and await are all considered reserved
- // here.
- const RESERVED_WORDS = new Set([
- // Reserved keywords as of ECMAScript 2015
- "break",
- "case",
- "catch",
- "class",
- "const",
- "continue",
- "debugger",
- "default",
- "delete",
- "do",
- "else",
- "export",
- "extends",
- "finally",
- "for",
- "function",
- "if",
- "import",
- "in",
- "instanceof",
- "new",
- "return",
- "super",
- "switch",
- "this",
- "throw",
- "try",
- "typeof",
- "var",
- "void",
- "while",
- "with",
- "yield",
- // Future reserved keywords
- "enum",
- "implements",
- "interface",
- "let",
- "package",
- "private",
- "protected",
- "public",
- "static",
- "await",
- // Literals that cannot be used as identifiers
- "false",
- "null",
- "true",
- ]);
- /**
- * Determine if the given name is a legal variable name.
- *
- * This is needed when transforming TypeScript enums; if an enum key is a valid
- * variable name, it might be referenced later in the enum, so we need to
- * declare a variable.
- */
- function isIdentifier(name) {
- if (name.length === 0) {
- return false;
- }
- if (!_identifier.IS_IDENTIFIER_START[name.charCodeAt(0)]) {
- return false;
- }
- for (let i = 1; i < name.length; i++) {
- if (!_identifier.IS_IDENTIFIER_CHAR[name.charCodeAt(i)]) {
- return false;
- }
- }
- return !RESERVED_WORDS.has(name);
- } exports.default = isIdentifier;
|