UNPKG

astexplorer.app

Version:

https://astexplorer.net with ES Modules support and Hot Reloading

1 lines 596 kB
(window.webpackJsonp=window.webpackJsonp||[]).push([[83],{"./node_modules/babylon7/lib/index.js":function(module,exports,__webpack_require__){"use strict";eval('\n\nvar _interopRequireDefault = __webpack_require__("./node_modules/@babel/runtime/helpers/interopRequireDefault.js");\n\nvar _get17 = _interopRequireDefault(__webpack_require__("./node_modules/@babel/runtime/helpers/get.js"));\n\nvar _inherits2 = _interopRequireDefault(__webpack_require__("./node_modules/@babel/runtime/helpers/inherits.js"));\n\nvar _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__("./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js"));\n\nvar _getPrototypeOf2 = _interopRequireDefault(__webpack_require__("./node_modules/@babel/runtime/helpers/getPrototypeOf.js"));\n\nvar _toConsumableArray2 = _interopRequireDefault(__webpack_require__("./node_modules/@babel/runtime/helpers/toConsumableArray.js"));\n\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__("./node_modules/@babel/runtime/helpers/slicedToArray.js"));\n\nvar _createClass2 = _interopRequireDefault(__webpack_require__("./node_modules/@babel/runtime/helpers/createClass.js"));\n\nvar _classCallCheck2 = _interopRequireDefault(__webpack_require__("./node_modules/@babel/runtime/helpers/classCallCheck.js"));\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nObject.defineProperty(exports, \'__esModule\', {\n value: true\n});\nvar Position = /*#__PURE__*/(0, _createClass2.default)(function Position(line, col, index) {\n (0, _classCallCheck2.default)(this, Position);\n this.line = void 0;\n this.column = void 0;\n this.index = void 0;\n this.line = line;\n this.column = col;\n indexes.set(this, index);\n});\nvar SourceLocation = /*#__PURE__*/(0, _createClass2.default)(function SourceLocation(start, end) {\n (0, _classCallCheck2.default)(this, SourceLocation);\n this.start = void 0;\n this.end = void 0;\n this.filename = void 0;\n this.identifierName = void 0;\n this.start = start;\n this.end = end;\n});\nvar indexes = new WeakMap();\n\nfunction createPositionWithColumnOffset(position, columnOffset) {\n var line = position.line,\n column = position.column;\n return new Position(line, column + columnOffset, indexes.get(position) + columnOffset);\n}\n\nvar BaseParser = /*#__PURE__*/function () {\n function BaseParser() {\n (0, _classCallCheck2.default)(this, BaseParser);\n this.sawUnambiguousESM = false;\n this.ambiguousScriptDifferentAst = false;\n }\n\n (0, _createClass2.default)(BaseParser, [{\n key: "hasPlugin",\n value: function hasPlugin(pluginConfig) {\n if (typeof pluginConfig === "string") {\n return this.plugins.has(pluginConfig);\n } else {\n var _pluginConfig = (0, _slicedToArray2.default)(pluginConfig, 2),\n pluginName = _pluginConfig[0],\n pluginOptions = _pluginConfig[1];\n\n if (!this.hasPlugin(pluginName)) {\n return false;\n }\n\n var actualOptions = this.plugins.get(pluginName);\n\n for (var _i = 0, _Object$keys = Object.keys(pluginOptions); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n\n if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {\n return false;\n }\n }\n\n return true;\n }\n }\n }, {\n key: "getPluginOption",\n value: function getPluginOption(plugin, name) {\n var _this$plugins$get;\n\n return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];\n }\n }]);\n return BaseParser;\n}();\n\nfunction setTrailingComments(node, comments) {\n if (node.trailingComments === undefined) {\n node.trailingComments = comments;\n } else {\n var _node$trailingComment;\n\n (_node$trailingComment = node.trailingComments).unshift.apply(_node$trailingComment, (0, _toConsumableArray2.default)(comments));\n }\n}\n\nfunction setLeadingComments(node, comments) {\n if (node.leadingComments === undefined) {\n node.leadingComments = comments;\n } else {\n var _node$leadingComments;\n\n (_node$leadingComments = node.leadingComments).unshift.apply(_node$leadingComments, (0, _toConsumableArray2.default)(comments));\n }\n}\n\nfunction setInnerComments(node, comments) {\n if (node.innerComments === undefined) {\n node.innerComments = comments;\n } else {\n var _node$innerComments;\n\n (_node$innerComments = node.innerComments).unshift.apply(_node$innerComments, (0, _toConsumableArray2.default)(comments));\n }\n}\n\nfunction adjustInnerComments(node, elements, commentWS) {\n var lastElement = null;\n var i = elements.length;\n\n while (lastElement === null && i > 0) {\n lastElement = elements[--i];\n }\n\n if (lastElement === null || lastElement.start > commentWS.start) {\n setInnerComments(node, commentWS.comments);\n } else {\n setTrailingComments(lastElement, commentWS.comments);\n }\n}\n\nvar CommentsParser = /*#__PURE__*/function (_BaseParser) {\n (0, _inherits2.default)(CommentsParser, _BaseParser);\n\n var _super = _createSuper(CommentsParser);\n\n function CommentsParser() {\n (0, _classCallCheck2.default)(this, CommentsParser);\n return _super.apply(this, arguments);\n }\n\n (0, _createClass2.default)(CommentsParser, [{\n key: "addComment",\n value: function addComment(comment) {\n if (this.filename) comment.loc.filename = this.filename;\n this.state.comments.push(comment);\n }\n }, {\n key: "processComment",\n value: function processComment(node) {\n var commentStack = this.state.commentStack;\n var commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n var i = commentStackLength - 1;\n var lastCommentWS = commentStack[i];\n\n if (lastCommentWS.start === node.end) {\n lastCommentWS.leadingNode = node;\n i--;\n }\n\n var nodeStart = node.start;\n\n for (; i >= 0; i--) {\n var commentWS = commentStack[i];\n var commentEnd = commentWS.end;\n\n if (commentEnd > nodeStart) {\n commentWS.containingNode = node;\n this.finalizeComment(commentWS);\n commentStack.splice(i, 1);\n } else {\n if (commentEnd === nodeStart) {\n commentWS.trailingNode = node;\n }\n\n break;\n }\n }\n }\n }, {\n key: "finalizeComment",\n value: function finalizeComment(commentWS) {\n var comments = commentWS.comments;\n\n if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {\n if (commentWS.leadingNode !== null) {\n setTrailingComments(commentWS.leadingNode, comments);\n }\n\n if (commentWS.trailingNode !== null) {\n setLeadingComments(commentWS.trailingNode, comments);\n }\n } else {\n var node = commentWS.containingNode,\n commentStart = commentWS.start;\n\n if (this.input.charCodeAt(commentStart - 1) === 44) {\n switch (node.type) {\n case "ObjectExpression":\n case "ObjectPattern":\n case "RecordExpression":\n adjustInnerComments(node, node.properties, commentWS);\n break;\n\n case "CallExpression":\n case "OptionalCallExpression":\n adjustInnerComments(node, node.arguments, commentWS);\n break;\n\n case "FunctionDeclaration":\n case "FunctionExpression":\n case "ArrowFunctionExpression":\n case "ObjectMethod":\n case "ClassMethod":\n case "ClassPrivateMethod":\n adjustInnerComments(node, node.params, commentWS);\n break;\n\n case "ArrayExpression":\n case "ArrayPattern":\n case "TupleExpression":\n adjustInnerComments(node, node.elements, commentWS);\n break;\n\n case "ExportNamedDeclaration":\n case "ImportDeclaration":\n adjustInnerComments(node, node.specifiers, commentWS);\n break;\n\n default:\n {\n setInnerComments(node, comments);\n }\n }\n } else {\n setInnerComments(node, comments);\n }\n }\n }\n }, {\n key: "finalizeRemainingComments",\n value: function finalizeRemainingComments() {\n var commentStack = this.state.commentStack;\n\n for (var i = commentStack.length - 1; i >= 0; i--) {\n this.finalizeComment(commentStack[i]);\n }\n\n this.state.commentStack = [];\n }\n }, {\n key: "resetPreviousNodeTrailingComments",\n value: function resetPreviousNodeTrailingComments(node) {\n var commentStack = this.state.commentStack;\n var length = commentStack.length;\n if (length === 0) return;\n var commentWS = commentStack[length - 1];\n\n if (commentWS.leadingNode === node) {\n commentWS.leadingNode = null;\n }\n }\n }, {\n key: "takeSurroundingComments",\n value: function takeSurroundingComments(node, start, end) {\n var commentStack = this.state.commentStack;\n var commentStackLength = commentStack.length;\n if (commentStackLength === 0) return;\n var i = commentStackLength - 1;\n\n for (; i >= 0; i--) {\n var commentWS = commentStack[i];\n var commentEnd = commentWS.end;\n var commentStart = commentWS.start;\n\n if (commentStart === end) {\n commentWS.leadingNode = node;\n } else if (commentEnd === start) {\n commentWS.trailingNode = node;\n } else if (commentEnd < start) {\n break;\n }\n }\n }\n }]);\n return CommentsParser;\n}(BaseParser);\n\nvar ErrorCodes = Object.freeze({\n SyntaxError: "BABEL_PARSER_SYNTAX_ERROR",\n SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"\n});\nvar ErrorMessages = makeErrorTemplates({\n AccessorIsGenerator: "A %0ter cannot be a generator.",\n ArgumentsInClass: "\'arguments\' is only allowed in functions and class methods.",\n AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",\n AwaitBindingIdentifier: "Can not use \'await\' as identifier inside an async function.",\n AwaitBindingIdentifierInStaticBlock: "Can not use \'await\' as identifier inside a static block.",\n AwaitExpressionFormalParameter: "\'await\' is not allowed in async function parameters.",\n AwaitNotInAsyncContext: "\'await\' is only allowed within async functions and at the top levels of modules.",\n AwaitNotInAsyncFunction: "\'await\' is only allowed within async functions.",\n BadGetterArity: "A \'get\' accesor must not have any formal parameters.",\n BadSetterArity: "A \'set\' accesor must have exactly one formal parameter.",\n BadSetterRestParameter: "A \'set\' accesor function argument must not be a rest parameter.",\n ConstructorClassField: "Classes may not have a field named \'constructor\'.",\n ConstructorClassPrivateField: "Classes may not have a private field named \'#constructor\'.",\n ConstructorIsAccessor: "Class constructor may not be an accessor.",\n ConstructorIsAsync: "Constructor can\'t be an async function.",\n ConstructorIsGenerator: "Constructor can\'t be a generator.",\n DeclarationMissingInitializer: "\'%0\' require an initialization value.",\n DecoratorBeforeExport: "Decorators must be placed *before* the \'export\' keyword. You can set the \'decoratorsBeforeExport\' option to false to use the \'export @decorator class {}\' syntax.",\n DecoratorConstructor: "Decorators can\'t be used with a constructor. Did you mean \'@dec class { ... }\'?",\n DecoratorExportClass: "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.",\n DecoratorSemicolon: "Decorators must not be followed by a semicolon.",\n DecoratorStaticBlock: "Decorators can\'t be used with a static block.",\n DeletePrivateField: "Deleting a private field is not allowed.",\n DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",\n DuplicateConstructor: "Duplicate constructor in the same class.",\n DuplicateDefaultExport: "Only one default export allowed per module.",\n DuplicateExport: "`%0` has already been exported. Exported identifiers must be unique.",\n DuplicateProto: "Redefinition of __proto__ property.",\n DuplicateRegExpFlags: "Duplicate regular expression flag.",\n ElementAfterRest: "Rest element must be last element.",\n EscapedCharNotAnIdentifier: "Invalid Unicode escape.",\n ExportBindingIsString: "A string literal cannot be used as an exported binding without `from`.\\n- Did you mean `export { \'%0\' as \'%1\' } from \'some-module\'`?",\n ExportDefaultFromAsIdentifier: "\'from\' is not allowed as an identifier after \'export default\'.",\n ForInOfLoopInitializer: "\'%0\' loop variable declaration may not have an initializer.",\n ForOfAsync: "The left-hand side of a for-of loop may not be \'async\'.",\n ForOfLet: "The left-hand side of a for-of loop may not start with \'let\'.",\n GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",\n IllegalBreakContinue: "Unsyntactic %0.",\n IllegalLanguageModeDirective: "Illegal \'use strict\' directive in function with non-simple parameter list.",\n IllegalReturn: "\'return\' outside of function.",\n ImportBindingIsString: \'A string literal cannot be used as an imported binding.\\n- Did you mean `import { "%0" as foo }`?\',\n ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.",\n ImportCallArity: "`import()` requires exactly %0.",\n ImportCallNotNewExpression: "Cannot use new with import(...).",\n ImportCallSpreadArgument: "`...` is not allowed in `import()`.",\n InvalidBigIntLiteral: "Invalid BigIntLiteral.",\n InvalidCodePoint: "Code point out of bounds.",\n InvalidCoverInitializedName: "Invalid shorthand property initializer.",\n InvalidDecimal: "Invalid decimal.",\n InvalidDigit: "Expected number in radix %0.",\n InvalidEscapeSequence: "Bad character escape sequence.",\n InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",\n InvalidEscapedReservedWord: "Escape sequence in keyword %0.",\n InvalidIdentifier: "Invalid identifier %0.",\n InvalidLhs: "Invalid left-hand side in %0.",\n InvalidLhsBinding: "Binding invalid left-hand side in %0.",\n InvalidNumber: "Invalid number.",\n InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the \'e\'.",\n InvalidOrUnexpectedToken: "Unexpected character \'%0\'.",\n InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",\n InvalidPrivateFieldResolution: "Private name #%0 is not defined.",\n InvalidPropertyBindingPattern: "Binding member expression.",\n InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",\n InvalidRestAssignmentPattern: "Invalid rest operator\'s argument.",\n LabelRedeclaration: "Label \'%0\' is already declared.",\n LetInLexicalBinding: "\'let\' is not allowed to be used as a name in \'let\' or \'const\' declarations.",\n LineTerminatorBeforeArrow: "No line break is allowed before \'=>\'.",\n MalformedRegExpFlags: "Invalid regular expression flag.",\n MissingClassName: "A class name is required.",\n MissingEqInAssignment: "Only \'=\' operator can be used for specifying default value.",\n MissingSemicolon: "Missing semicolon.",\n MissingUnicodeEscape: "Expecting Unicode escape sequence \\\\uXXXX.",\n MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",\n ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",\n ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",\n ModuleAttributesWithDuplicateKeys: \'Duplicate key "%0" is not allowed in module attributes.\',\n ModuleExportNameHasLoneSurrogate: "An export name cannot include a lone surrogate, found \'\\\\u%0\'.",\n ModuleExportUndefined: "Export \'%0\' is not defined.",\n MultipleDefaultsInSwitch: "Multiple default clauses.",\n NewlineAfterThrow: "Illegal newline after throw.",\n NoCatchOrFinally: "Missing catch or finally clause.",\n NumberIdentifier: "Identifier directly after number.",\n NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",\n ObsoleteAwaitStar: "\'await*\' has been removed from the async functions proposal. Use Promise.all() instead.",\n OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",\n OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",\n OverrideOnConstructor: "\'override\' modifier cannot appear on a constructor declaration.",\n ParamDupe: "Argument name clash.",\n PatternHasAccessor: "Object pattern can\'t contain getter or setter.",\n PatternHasMethod: "Object pattern can\'t contain methods.",\n PipeBodyIsTighter: "Unexpected %0 after pipeline body; any %0 expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",\n PipeTopicRequiresHackPipes: \'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.\',\n PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",\n PipeTopicUnconfiguredToken: \'Invalid topic token %0. In order to use %0 as a topic reference, the pipelineOperator plugin must be configured with { "proposal": "hack", "topicToken": "%0" }.\',\n PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",\n PipeUnparenthesizedBody: "Hack-style pipe body cannot be an unparenthesized %0 expression; please wrap it in parentheses.",\n PipelineBodyNoArrow: \'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.\',\n PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",\n PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",\n PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",\n PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",\n PrimaryTopicRequiresSmartPipeline: \'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.\',\n PrivateInExpectedIn: "Private names are only allowed in property accesses (`obj.#%0`) or in `in` expressions (`#%0 in obj`).",\n PrivateNameRedeclaration: "Duplicate private name #%0.",\n RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with \'|}\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'bar\'.",\n RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with \'{|\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'bar\'.",\n RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with \'#{\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'hash\'.",\n RecordNoProto: "\'__proto__\' is not allowed in Record expressions.",\n RestTrailingComma: "Unexpected trailing comma after rest element.",\n SloppyFunction: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",\n StaticPrototype: "Classes may not have static property named prototype.",\n StrictDelete: "Deleting local variable in strict mode.",\n StrictEvalArguments: "Assigning to \'%0\' in strict mode.",\n StrictEvalArgumentsBinding: "Binding \'%0\' in strict mode.",\n StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",\n StrictNumericEscape: "The only valid numeric escape in strict mode is \'\\\\0\'.",\n StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",\n StrictWith: "\'with\' in strict mode.",\n SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name (\'constructor\') or not extending another class?",\n SuperPrivateField: "Private fields can\'t be accessed on super.",\n TrailingDecorator: "Decorators must be attached to a class element.",\n TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with \'|]\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'bar\'.",\n TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with \'[|\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'bar\'.",\n TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with \'#[\' are only allowed when the \'syntaxType\' option of the \'recordAndTuple\' plugin is set to \'hash\'.",\n UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",\n UnexpectedAwaitAfterPipelineBody: \'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.\',\n UnexpectedDigitAfterHash: "Unexpected digit after hash token.",\n UnexpectedImportExport: "\'import\' and \'export\' may only appear at the top level.",\n UnexpectedKeyword: "Unexpected keyword \'%0\'.",\n UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",\n UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",\n UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",\n UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",\n UnexpectedPrivateField: "Unexpected private name.",\n UnexpectedReservedWord: "Unexpected reserved word \'%0\'.",\n UnexpectedSuper: "\'super\' is only allowed in object methods and classes.",\n UnexpectedToken: "Unexpected token \'%0\'.",\n UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",\n UnsupportedBind: "Binding should be performed on object property.",\n UnsupportedDecoratorExport: "A decorated export must export a class declaration.",\n UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",\n UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",\n UnsupportedMetaProperty: "The only valid meta property for %0 is %0.%1.",\n UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",\n UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",\n UnsupportedSuper: "\'super\' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",\n UnterminatedComment: "Unterminated comment.",\n UnterminatedRegExp: "Unterminated regular expression.",\n UnterminatedString: "Unterminated string constant.",\n UnterminatedTemplate: "Unterminated template.",\n VarRedeclaration: "Identifier \'%0\' has already been declared.",\n YieldBindingIdentifier: "Can not use \'yield\' as identifier inside a generator.",\n YieldInParameter: "Yield expression is not allowed in formal parameters.",\n ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."\n}, ErrorCodes.SyntaxError);\nvar SourceTypeModuleErrorMessages = makeErrorTemplates({\n ImportMetaOutsideModule: "import.meta may appear only with \'sourceType: \\"module\\"\'",\n ImportOutsideModule: "\'import\' and \'export\' may appear only with \'sourceType: \\"module\\"\'"\n}, ErrorCodes.SourceTypeModuleError);\n\nfunction keepReasonCodeCompat(reasonCode, syntaxPlugin) {\n {\n if (syntaxPlugin === "flow" && reasonCode === "PatternIsOptional") {\n return "OptionalBindingPattern";\n }\n }\n return reasonCode;\n}\n\nfunction makeErrorTemplates(messages, code, syntaxPlugin) {\n var templates = {};\n Object.keys(messages).forEach(function (reasonCode) {\n templates[reasonCode] = Object.freeze({\n code: code,\n reasonCode: keepReasonCodeCompat(reasonCode, syntaxPlugin),\n template: messages[reasonCode]\n });\n });\n return Object.freeze(templates);\n}\n\nvar ParserError = /*#__PURE__*/function (_CommentsParser) {\n (0, _inherits2.default)(ParserError, _CommentsParser);\n\n var _super2 = _createSuper(ParserError);\n\n function ParserError() {\n (0, _classCallCheck2.default)(this, ParserError);\n return _super2.apply(this, arguments);\n }\n\n (0, _createClass2.default)(ParserError, [{\n key: "raise",\n value: function raise(_ref, origin) {\n var code = _ref.code,\n reasonCode = _ref.reasonCode,\n template = _ref.template;\n\n for (var _len = arguments.length, params = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n params[_key - 2] = arguments[_key];\n }\n\n return this.raiseWithData.apply(this, [origin.node ? origin.node.loc.start : origin.at, {\n code: code,\n reasonCode: reasonCode\n }, template].concat(params));\n }\n }, {\n key: "raiseOverwrite",\n value: function raiseOverwrite(loc, _ref2) {\n var code = _ref2.code,\n template = _ref2.template;\n\n for (var _len2 = arguments.length, params = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n params[_key2 - 2] = arguments[_key2];\n }\n\n var pos = indexes.get(loc);\n var message = template.replace(/%(\\d+)/g, function (_, i) {\n return params[i];\n }) + " (".concat(loc.line, ":").concat(loc.column, ")");\n\n if (this.options.errorRecovery) {\n var errors = this.state.errors;\n\n for (var i = errors.length - 1; i >= 0; i--) {\n var error = errors[i];\n\n if (error.pos === pos) {\n return Object.assign(error, {\n message: message\n });\n } else if (error.pos < pos) {\n break;\n }\n }\n }\n\n return this._raise({\n code: code,\n loc: loc,\n pos: pos\n }, message);\n }\n }, {\n key: "raiseWithData",\n value: function raiseWithData(loc, data, errorTemplate) {\n for (var _len3 = arguments.length, params = new Array(_len3 > 3 ? _len3 - 3 : 0), _key3 = 3; _key3 < _len3; _key3++) {\n params[_key3 - 3] = arguments[_key3];\n }\n\n var pos = indexes.get(loc);\n var message = errorTemplate.replace(/%(\\d+)/g, function (_, i) {\n return params[i];\n }) + " (".concat(loc.line, ":").concat(loc.column, ")");\n return this._raise(Object.assign({\n loc: loc,\n pos: pos\n }, data), message);\n }\n }, {\n key: "_raise",\n value: function _raise(errorContext, message) {\n var err = new SyntaxError(message);\n Object.assign(err, errorContext);\n\n if (this.options.errorRecovery) {\n if (!this.isLookahead) this.state.errors.push(err);\n return err;\n } else {\n throw err;\n }\n }\n }]);\n return ParserError;\n}(CommentsParser);\n\nvar estree = function estree(superClass) {\n return /*#__PURE__*/function (_superClass) {\n (0, _inherits2.default)(_class, _superClass);\n\n var _super3 = _createSuper(_class);\n\n function _class() {\n (0, _classCallCheck2.default)(this, _class);\n return _super3.apply(this, arguments);\n }\n\n (0, _createClass2.default)(_class, [{\n key: "parseRegExpLiteral",\n value: function parseRegExpLiteral(_ref3) {\n var pattern = _ref3.pattern,\n flags = _ref3.flags;\n var regex = null;\n\n try {\n regex = new RegExp(pattern, flags);\n } catch (e) {}\n\n var node = this.estreeParseLiteral(regex);\n node.regex = {\n pattern: pattern,\n flags: flags\n };\n return node;\n }\n }, {\n key: "parseBigIntLiteral",\n value: function parseBigIntLiteral(value) {\n var bigInt;\n\n try {\n bigInt = BigInt(value);\n } catch (_unused) {\n bigInt = null;\n }\n\n var node = this.estreeParseLiteral(bigInt);\n node.bigint = String(node.value || value);\n return node;\n }\n }, {\n key: "parseDecimalLiteral",\n value: function parseDecimalLiteral(value) {\n var decimal = null;\n var node = this.estreeParseLiteral(decimal);\n node.decimal = String(node.value || value);\n return node;\n }\n }, {\n key: "estreeParseLiteral",\n value: function estreeParseLiteral(value) {\n return this.parseLiteral(value, "Literal");\n }\n }, {\n key: "parseStringLiteral",\n value: function parseStringLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n }, {\n key: "parseNumericLiteral",\n value: function parseNumericLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n }, {\n key: "parseNullLiteral",\n value: function parseNullLiteral() {\n return this.estreeParseLiteral(null);\n }\n }, {\n key: "parseBooleanLiteral",\n value: function parseBooleanLiteral(value) {\n return this.estreeParseLiteral(value);\n }\n }, {\n key: "directiveToStmt",\n value: function directiveToStmt(directive) {\n var directiveLiteral = directive.value;\n var stmt = this.startNodeAt(directive.start, directive.loc.start);\n var expression = this.startNodeAt(directiveLiteral.start, directiveLiteral.loc.start);\n expression.value = directiveLiteral.extra.expressionValue;\n expression.raw = directiveLiteral.extra.raw;\n stmt.expression = this.finishNodeAt(expression, "Literal", directiveLiteral.loc.end);\n stmt.directive = directiveLiteral.extra.raw.slice(1, -1);\n return this.finishNodeAt(stmt, "ExpressionStatement", directive.loc.end);\n }\n }, {\n key: "initFunction",\n value: function initFunction(node, isAsync) {\n (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "initFunction", this).call(this, node, isAsync);\n node.expression = false;\n }\n }, {\n key: "checkDeclaration",\n value: function checkDeclaration(node) {\n if (node != null && this.isObjectProperty(node)) {\n this.checkDeclaration(node.value);\n } else {\n (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "checkDeclaration", this).call(this, node);\n }\n }\n }, {\n key: "getObjectOrClassMethodParams",\n value: function getObjectOrClassMethodParams(method) {\n return method.value.params;\n }\n }, {\n key: "isValidDirective",\n value: function isValidDirective(stmt) {\n var _stmt$expression$extr;\n\n return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);\n }\n }, {\n key: "parseBlockBody",\n value: function parseBlockBody(node) {\n var _get2,\n _this2 = this;\n\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n (_get2 = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseBlockBody", this)).call.apply(_get2, [this, node].concat(args));\n\n var directiveStatements = node.directives.map(function (d) {\n return _this2.directiveToStmt(d);\n });\n node.body = directiveStatements.concat(node.body);\n delete node.directives;\n }\n }, {\n key: "pushClassMethod",\n value: function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {\n this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);\n\n if (method.typeParameters) {\n method.value.typeParameters = method.typeParameters;\n delete method.typeParameters;\n }\n\n classBody.body.push(method);\n }\n }, {\n key: "parsePrivateName",\n value: function parsePrivateName() {\n var node = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parsePrivateName", this).call(this);\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return node;\n }\n }\n return this.convertPrivateNameToPrivateIdentifier(node);\n }\n }, {\n key: "convertPrivateNameToPrivateIdentifier",\n value: function convertPrivateNameToPrivateIdentifier(node) {\n var name = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "getPrivateNameSV", this).call(this, node);\n node = node;\n delete node.id;\n node.name = name;\n node.type = "PrivateIdentifier";\n return node;\n }\n }, {\n key: "isPrivateName",\n value: function isPrivateName(node) {\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "isPrivateName", this).call(this, node);\n }\n }\n return node.type === "PrivateIdentifier";\n }\n }, {\n key: "getPrivateNameSV",\n value: function getPrivateNameSV(node) {\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "getPrivateNameSV", this).call(this, node);\n }\n }\n return node.name;\n }\n }, {\n key: "parseLiteral",\n value: function parseLiteral(value, type) {\n var node = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseLiteral", this).call(this, value, type);\n node.raw = node.extra.raw;\n delete node.extra;\n return node;\n }\n }, {\n key: "parseFunctionBody",\n value: function parseFunctionBody(node, allowExpression) {\n var isMethod = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseFunctionBody", this).call(this, node, allowExpression, isMethod);\n node.expression = node.body.type !== "BlockStatement";\n }\n }, {\n key: "parseMethod",\n value: function parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type) {\n var inClassScope = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;\n var funcNode = this.startNode();\n funcNode.kind = node.kind;\n funcNode = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseMethod", this).call(this, funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);\n funcNode.type = "FunctionExpression";\n delete funcNode.kind;\n node.value = funcNode;\n\n if (type === "ClassPrivateMethod") {\n node.computed = false;\n }\n\n type = "MethodDefinition";\n return this.finishNode(node, type);\n }\n }, {\n key: "parseClassProperty",\n value: function parseClassProperty() {\n var _get3;\n\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n var propertyNode = (_get3 = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseClassProperty", this)).call.apply(_get3, [this].concat(args));\n\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return propertyNode;\n }\n }\n propertyNode.type = "PropertyDefinition";\n return propertyNode;\n }\n }, {\n key: "parseClassPrivateProperty",\n value: function parseClassPrivateProperty() {\n var _get4;\n\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n var propertyNode = (_get4 = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseClassPrivateProperty", this)).call.apply(_get4, [this].concat(args));\n\n {\n if (!this.getPluginOption("estree", "classFeatures")) {\n return propertyNode;\n }\n }\n propertyNode.type = "PropertyDefinition";\n propertyNode.computed = false;\n return propertyNode;\n }\n }, {\n key: "parseObjectMethod",\n value: function parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {\n var node = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseObjectMethod", this).call(this, prop, isGenerator, isAsync, isPattern, isAccessor);\n\n if (node) {\n node.type = "Property";\n if (node.kind === "method") node.kind = "init";\n node.shorthand = false;\n }\n\n return node;\n }\n }, {\n key: "parseObjectProperty",\n value: function parseObjectProperty(prop, startPos, startLoc, isPattern, refExpressionErrors) {\n var node = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseObjectProperty", this).call(this, prop, startPos, startLoc, isPattern, refExpressionErrors);\n\n if (node) {\n node.kind = "init";\n node.type = "Property";\n }\n\n return node;\n }\n }, {\n key: "isAssignable",\n value: function isAssignable(node, isBinding) {\n if (node != null && this.isObjectProperty(node)) {\n return this.isAssignable(node.value, isBinding);\n }\n\n return (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "isAssignable", this).call(this, node, isBinding);\n }\n }, {\n key: "toAssignable",\n value: function toAssignable(node) {\n var isLHS = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (node != null && this.isObjectProperty(node)) {\n this.toAssignable(node.value, isLHS);\n return node;\n }\n\n return (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "toAssignable", this).call(this, node, isLHS);\n }\n }, {\n key: "toAssignableObjectExpressionProp",\n value: function toAssignableObjectExpressionProp(prop) {\n if (prop.kind === "get" || prop.kind === "set") {\n this.raise(ErrorMessages.PatternHasAccessor, {\n node: prop.key\n });\n } else if (prop.method) {\n this.raise(ErrorMessages.PatternHasMethod, {\n node: prop.key\n });\n } else {\n var _get5;\n\n for (var _len7 = arguments.length, args = new Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n args[_key7 - 1] = arguments[_key7];\n }\n\n (_get5 = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "toAssignableObjectExpressionProp", this)).call.apply(_get5, [this, prop].concat(args));\n }\n }\n }, {\n key: "finishCallExpression",\n value: function finishCallExpression(node, optional) {\n (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "finishCallExpression", this).call(this, node, optional);\n\n if (node.callee.type === "Import") {\n node.type = "ImportExpression";\n node.source = node.arguments[0];\n\n if (this.hasPlugin("importAssertions")) {\n var _node$arguments$;\n\n node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;\n }\n\n delete node.arguments;\n delete node.callee;\n }\n\n return node;\n }\n }, {\n key: "toReferencedArguments",\n value: function toReferencedArguments(node) {\n if (node.type === "ImportExpression") {\n return;\n }\n\n (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "toReferencedArguments", this).call(this, node);\n }\n }, {\n key: "parseExport",\n value: function parseExport(node) {\n (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseExport", this).call(this, node);\n\n switch (node.type) {\n case "ExportAllDeclaration":\n node.exported = null;\n break;\n\n case "ExportNamedDeclaration":\n if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {\n node.type = "ExportAllDeclaration";\n node.exported = node.specifiers[0].exported;\n delete node.specifiers;\n }\n\n break;\n }\n\n return node;\n }\n }, {\n key: "parseSubscript",\n value: function parseSubscript(base, startPos, startLoc, noCalls, state) {\n var node = (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "parseSubscript", this).call(this, base, startPos, startLoc, noCalls, state);\n\n if (state.optionalChainMember) {\n if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") {\n node.type = node.type.substring(8);\n }\n\n if (state.stop) {\n var chain = this.startNodeAtNode(node);\n chain.expression = node;\n return this.finishNode(chain, "ChainExpression");\n }\n } else if (node.type === "MemberExpression" || node.type === "CallExpression") {\n node.optional = false;\n }\n\n return node;\n }\n }, {\n key: "hasPropertyAsPrivateName",\n value: function hasPropertyAsPrivateName(node) {\n if (node.type === "ChainExpression") {\n node = node.expression;\n }\n\n return (0, _get17.default)((0, _getPrototypeOf2.default)(_class.prototype), "hasPropertyAsPrivateName", this).call(this, node);\n }\n }, {\n key: "isOptionalChain",\n value: function isOptionalChain(node) {\n return node.type === "ChainExpression";\n }\n }, {\n key: "isObjectProperty",\n value: function isObjectProperty(node) {\n return node.type === "Property" && node.kind === "init" && !node.method;\n }\n }, {\n key: "isObjectMethod",\n value: function isObjectMethod(node) {\n return node.method || node.kind === "get" || node.kind === "set";\n }\n }]);\n return _class;\n }(superClass);\n};\n\nvar TokContext = /*#__PURE__*/(0, _createClass2.default)(function TokContext(token, preserveSpace) {\n (0, _classCallCheck2.default)(this, TokContext);\n this.token = void 0;\n this.preserveSpace = void 0;\n this.token = token;\n this.preserveSpace = !!preserveSpace;\n});\nvar types = {\n brace: new TokContext("{"),\n j_oTag: new TokContext("<tag"),\n j_cTag: new TokContext("</tag"),\n j_expr: new TokContext("<tag>...</tag>", true)\n};\n{\n types.template = new TokContext("`", true);\n}\nvar beforeExpr = true;\nvar startsExpr = true;\nvar isLoop = true;\nvar isAssign = true;\nvar prefix = true;\nvar postfix = true;\nvar ExportedTokenType = /*#__PURE__*/(0, _createClass2.default)(function ExportedTokenType(label) {\n var conf = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n (0, _classCallCheck2.default)(this, ExportedTokenType);\n this.label = void 0;\n this.keyword = void 0;\n this.beforeExpr = void 0;\n this.startsExpr = void 0;\n this.rightAssociative = void 0;\n this.isLoop = void 0;\n this.isAssign = void 0;\n this.prefix = void 0;\n this.postfix = void 0;\n this.binop = void 0;\n this.label = label;\n this.keyword = conf.keyword;\n this.beforeExpr = !!conf.beforeExpr;\n this.startsExpr = !!conf.startsExpr;\n this.rightAssociative = !!conf.rightAssociative;\n this.isLoop = !!conf.isLoop;\n this.isAssign = !!conf.isAssign;\n this.prefix = !!conf.prefix;\n this.postfix = !!conf.postfix;\n this.binop = conf.binop != null ? conf.binop : null;\n {\n this.updateContext = null;\n }\n});\nvar keywords$1 = new Map();\n\nfunction createKeyword(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options.keyword = name;\n var token = createToken(name, options);\n keywords$1.set(name, token);\n return token;\n}\n\nfunction createBinop(name, binop) {\n return createToken(name, {\n beforeExpr: beforeExpr,\n binop: binop\n });\n}\n\nvar tokenTypeCounter = -1;\nvar tokenTypes = [];\nvar tokenLabels = [];\nvar tokenBinops = [];\nvar tokenBeforeExprs = [];\nvar tokenStartsExprs = [];\nvar tokenPrefixes = [];\n\nfunction createToken(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;\n\n ++tokenTypeCounter;\n tokenLabels.push(name);\n tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);\n tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);\n tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);\n tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);\n tokenTypes.push(new ExportedTokenType(name, options));\n return tokenTypeCounter;\n}\n\nfunction createKeywordLike(name) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;\n\n ++tokenTypeCounter;\n keywords$1.set(name, tokenTypeCounter);\n tokenLabels.push(name);\n tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);\n tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);\n tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);\n tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);\n tokenTypes.push(new ExportedTokenType("name", options));\n return tokenTypeCounter;\n}\n\nvar tt = {\n bracketL: createToken("[", {\n beforeExpr: beforeExpr,\n startsExpr: startsExpr\n }),\n bracketHashL: createToken("#[", {\n beforeExpr: beforeExpr,\n startsExpr: startsExpr\n }),\n bracketBarL: createToken("[|", {\n beforeExpr: beforeExpr,\n startsExpr: startsExpr\n }),\n bracketR: createToken("]"),\n bracketBarR: createToken("|]"),\n braceL: createToken("{", {