12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- /*
- MIT License http://www.opensource.org/licenses/mit-license.php
- Author Tobias Koppers @sokra
- */
- "use strict";
- const SAFE_IDENTIFIER = /^[_a-zA-Z$][_a-zA-Z$0-9]*$/;
- const RESERVED_IDENTIFIER = new Set([
- "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",
- "enum",
- // strict mode
- "implements",
- "interface",
- "let",
- "package",
- "private",
- "protected",
- "public",
- "static",
- "yield",
- "yield",
- // module code
- "await",
- // skip future reserved keywords defined under ES1 till ES3
- // additional
- "null",
- "true",
- "false"
- ]);
- /**
- * @summary Returns a valid JS property name for the given property.
- * Certain strings like "default", "null", and names with whitespace are not
- * valid JS property names, so they are returned as strings.
- *
- * @param {string} prop property name to analyze
- * @returns {string} valid JS property name
- */
- const propertyName = prop => {
- if (SAFE_IDENTIFIER.test(prop) && !RESERVED_IDENTIFIER.has(prop)) {
- return prop;
- } else {
- return JSON.stringify(prop);
- }
- };
- module.exports = { SAFE_IDENTIFIER, RESERVED_IDENTIFIER, propertyName };
|