FIN INIT
This commit is contained in:
81
node_modules/sucrase/dist/util/isIdentifier.js
generated
vendored
Normal file
81
node_modules/sucrase/dist/util/isIdentifier.js
generated
vendored
Normal file
@ -0,0 +1,81 @@
|
||||
"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;
|
Reference in New Issue
Block a user