StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
258 KiB
1 lines
258 KiB
{"version":3,"file":"buble-browser.cjs.js","sources":["../src/program/Node.js","../src/program/extractNames.js","../src/utils/reserved.js","../src/program/Scope.js","../src/utils/locate.js","../src/utils/getSnippet.js","../src/utils/CompileError.js","../src/utils/array.js","../src/utils/destructure.js","../src/program/BlockStatement.js","../src/utils/spread.js","../src/program/types/ArrayExpression.js","../src/utils/removeTrailingComma.js","../src/program/types/ArrowFunctionExpression.js","../src/utils/checkConst.js","../src/program/types/AssignmentExpression.js","../src/program/types/AwaitExpression.js","../src/program/types/BinaryExpression.js","../src/utils/patterns.js","../src/program/types/BreakStatement.js","../src/program/types/CallExpression.js","../src/program/types/ClassBody.js","../src/utils/deindent.js","../src/program/types/ClassDeclaration.js","../src/program/types/ClassExpression.js","../src/program/types/ContinueStatement.js","../src/program/types/ExportDefaultDeclaration.js","../src/program/types/ExportNamedDeclaration.js","../src/program/types/shared/LoopStatement.js","../src/program/types/ForStatement.js","../src/program/types/ForInStatement.js","../src/program/types/ForOfStatement.js","../src/program/types/FunctionDeclaration.js","../src/program/types/FunctionExpression.js","../src/utils/isReference.js","../src/program/types/Identifier.js","../src/program/types/IfStatement.js","../src/program/types/Import.js","../src/program/types/ImportDeclaration.js","../src/program/types/ImportDefaultSpecifier.js","../src/program/types/ImportSpecifier.js","../src/program/types/JSXAttribute.js","../src/program/types/JSXClosingElement.js","../src/program/types/JSXClosingFragment.js","../src/program/types/JSXElement.js","../src/program/types/JSXExpressionContainer.js","../src/program/types/JSXFragment.js","../src/program/types/JSXOpeningElement.js","../src/program/types/JSXOpeningFragment.js","../src/program/types/JSXSpreadAttribute.js","../src/program/types/Literal.js","../src/program/types/MemberExpression.js","../src/program/types/NewExpression.js","../src/program/types/ObjectExpression.js","../src/program/types/Property.js","../src/program/types/ReturnStatement.js","../src/program/types/Super.js","../src/program/types/TaggedTemplateExpression.js","../src/program/types/TemplateElement.js","../src/program/types/TemplateLiteral.js","../src/program/types/ThisExpression.js","../src/program/types/UpdateExpression.js","../src/program/types/VariableDeclaration.js","../src/program/types/VariableDeclarator.js","../src/program/types/index.js","../src/program/keys.js","../src/program/wrap.js","../src/program/Program.js","../src/support.js","../src/index.js"],"sourcesContent":["// used for debugging, without the noise created by\n// circular references\nfunction toJSON(node) {\n\tconst obj = {};\n\n\tObject.keys(node).forEach(key => {\n\t\tif (\n\t\t\tkey === 'parent' ||\n\t\t\tkey === 'program' ||\n\t\t\tkey === 'keys' ||\n\t\t\tkey === '__wrapped'\n\t\t)\n\t\t\treturn;\n\n\t\tif (Array.isArray(node[key])) {\n\t\t\tobj[key] = node[key].map(toJSON);\n\t\t} else if (node[key] && node[key].toJSON) {\n\t\t\tobj[key] = node[key].toJSON();\n\t\t} else {\n\t\t\tobj[key] = node[key];\n\t\t}\n\t});\n\n\treturn obj;\n}\n\nexport default class Node {\n\tancestor(level) {\n\t\tlet node = this;\n\t\twhile (level--) {\n\t\t\tnode = node.parent;\n\t\t\tif (!node) return null;\n\t\t}\n\n\t\treturn node;\n\t}\n\n\tcontains(node) {\n\t\twhile (node) {\n\t\t\tif (node === this) return true;\n\t\t\tnode = node.parent;\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tfindLexicalBoundary() {\n\t\treturn this.parent.findLexicalBoundary();\n\t}\n\n\tfindNearest(type) {\n\t\tif (typeof type === 'string') type = new RegExp(`^${type}$`);\n\t\tif (type.test(this.type)) return this;\n\t\treturn this.parent.findNearest(type);\n\t}\n\n\tunparenthesizedParent() {\n\t\tlet node = this.parent;\n\t\twhile (node && node.type === 'ParenthesizedExpression') {\n\t\t\tnode = node.parent;\n\t\t}\n\t\treturn node;\n\t}\n\n\tunparenthesize() {\n\t\tlet node = this;\n\t\twhile (node.type === 'ParenthesizedExpression') {\n\t\t\tnode = node.expression;\n\t\t}\n\t\treturn node;\n\t}\n\n\tfindScope(functionScope) {\n\t\treturn this.parent.findScope(functionScope);\n\t}\n\n\tgetIndentation() {\n\t\treturn this.parent.getIndentation();\n\t}\n\n\tinitialise(transforms) {\n\t\tfor (const key of this.keys) {\n\t\t\tconst value = this[key];\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tvalue.forEach(node => node && node.initialise(transforms));\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\tvalue.initialise(transforms);\n\t\t\t}\n\t\t}\n\t}\n\n\ttoJSON() {\n\t\treturn toJSON(this);\n\t}\n\n\ttoString() {\n\t\treturn this.program.magicString.original.slice(this.start, this.end);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tfor (const key of this.keys) {\n\t\t\tconst value = this[key];\n\n\t\t\tif (Array.isArray(value)) {\n\t\t\t\tvalue.forEach(node => node && node.transpile(code, transforms));\n\t\t\t} else if (value && typeof value === 'object') {\n\t\t\t\tvalue.transpile(code, transforms);\n\t\t\t}\n\t\t}\n\t}\n}\n","export default function extractNames(node) {\n\tconst names = [];\n\textractors[node.type](names, node);\n\treturn names;\n}\n\nconst extractors = {\n\tIdentifier(names, node) {\n\t\tnames.push(node);\n\t},\n\n\tObjectPattern(names, node) {\n\t\tfor (const prop of node.properties) {\n\t\t\textractors[prop.type](names, prop);\n\t\t}\n\t},\n\n\tProperty(names, node) {\n\t\textractors[node.value.type](names, node.value);\n\t},\n\n\tArrayPattern(names, node) {\n\t\tfor (const element of node.elements) {\n\t\t\tif (element) extractors[element.type](names, element);\n\t\t}\n\t},\n\n\tRestElement(names, node) {\n\t\textractors[node.argument.type](names, node.argument);\n\t},\n\n\tAssignmentPattern(names, node) {\n\t\textractors[node.left.type](names, node.left);\n\t}\n};\n","const reserved = Object.create(null);\n'do if in for let new try var case else enum eval null this true void with await break catch class const false super throw while yield delete export import public return static switch typeof default extends finally package private continue debugger function arguments interface protected implements instanceof'\n\t.split(' ')\n\t.forEach(word => (reserved[word] = true));\n\nexport default reserved;\n","import extractNames from './extractNames.js';\nimport reserved from '../utils/reserved.js';\n\nexport default function Scope(options) {\n\toptions = options || {};\n\n\tthis.parent = options.parent;\n\tthis.isBlockScope = !!options.block;\n\tthis.createDeclarationCallback = options.declare;\n\n\tlet scope = this;\n\twhile (scope.isBlockScope) scope = scope.parent;\n\tthis.functionScope = scope;\n\n\tthis.identifiers = [];\n\tthis.declarations = Object.create(null);\n\tthis.references = Object.create(null);\n\tthis.blockScopedDeclarations = this.isBlockScope ? null : Object.create(null);\n\tthis.aliases = Object.create(null);\n}\n\nScope.prototype = {\n\taddDeclaration(node, kind) {\n\t\tfor (const identifier of extractNames(node)) {\n\t\t\tconst name = identifier.name;\n\n\t\t\tconst declaration = { name, node: identifier, kind, instances: [] };\n\t\t\tthis.declarations[name] = declaration;\n\n\t\t\tif (this.isBlockScope) {\n\t\t\t\tif (!this.functionScope.blockScopedDeclarations[name])\n\t\t\t\t\tthis.functionScope.blockScopedDeclarations[name] = [];\n\t\t\t\tthis.functionScope.blockScopedDeclarations[name].push(declaration);\n\t\t\t}\n\t\t}\n\t},\n\n\taddReference(identifier) {\n\t\tif (this.consolidated) {\n\t\t\tthis.consolidateReference(identifier);\n\t\t} else {\n\t\t\tthis.identifiers.push(identifier);\n\t\t}\n\t},\n\n\tconsolidate() {\n\t\tfor (let i = 0; i < this.identifiers.length; i += 1) {\n\t\t\t// we might push to the array during consolidation, so don't cache length\n\t\t\tconst identifier = this.identifiers[i];\n\t\t\tthis.consolidateReference(identifier);\n\t\t}\n\n\t\tthis.consolidated = true; // TODO understand why this is necessary... seems bad\n\t},\n\n\tconsolidateReference(identifier) {\n\t\tconst declaration = this.declarations[identifier.name];\n\t\tif (declaration) {\n\t\t\tdeclaration.instances.push(identifier);\n\t\t} else {\n\t\t\tthis.references[identifier.name] = true;\n\t\t\tif (this.parent) this.parent.addReference(identifier);\n\t\t}\n\t},\n\n\tcontains(name) {\n\t\treturn (\n\t\t\tthis.declarations[name] ||\n\t\t\t(this.parent ? this.parent.contains(name) : false)\n\t\t);\n\t},\n\n\tcreateIdentifier(base) {\n\t\tif (typeof base === 'number') base = base.toString();\n\n\t\tbase = base\n\t\t\t.replace(/\\s/g, '')\n\t\t\t.replace(/\\[([^\\]]+)\\]/g, '_$1')\n\t\t\t.replace(/[^a-zA-Z0-9_$]/g, '_')\n\t\t\t.replace(/_{2,}/, '_');\n\n\t\tlet name = base;\n\t\tlet counter = 1;\n\n\t\twhile (\n\t\t\tthis.declarations[name] ||\n\t\t\tthis.references[name] ||\n\t\t\tthis.aliases[name] ||\n\t\t\tname in reserved\n\t\t) {\n\t\t\tname = `${base}$${counter++}`;\n\t\t}\n\n\t\tthis.aliases[name] = true;\n\t\treturn name;\n\t},\n\n\tcreateDeclaration(base) {\n\t\tconst id = this.createIdentifier(base);\n\t\tthis.createDeclarationCallback(id);\n\t\treturn id;\n\t},\n\n\tfindDeclaration(name) {\n\t\treturn (\n\t\t\tthis.declarations[name] ||\n\t\t\t(this.parent && this.parent.findDeclaration(name))\n\t\t);\n\t},\n\n\t// Sometimes, block scope declarations change name during transpilation\n\tresolveName(name) {\n\t\tconst declaration = this.findDeclaration(name);\n\t\treturn declaration ? declaration.name : name;\n\t}\n};\n","export default function locate(source, index) {\n\tconst lines = source.split('\\n');\n\tconst len = lines.length;\n\n\tlet lineStart = 0;\n\tlet i;\n\n\tfor (i = 0; i < len; i += 1) {\n\t\tconst line = lines[i];\n\t\tconst lineEnd = lineStart + line.length + 1; // +1 for newline\n\n\t\tif (lineEnd > index) {\n\t\t\treturn { line: i + 1, column: index - lineStart, char: i };\n\t\t}\n\n\t\tlineStart = lineEnd;\n\t}\n\n\tthrow new Error('Could not determine location of character');\n}\n","function pad(num, len) {\n\tconst result = String(num);\n\treturn result + repeat(' ', len - result.length);\n}\n\nfunction repeat(str, times) {\n\tlet result = '';\n\twhile (times--) result += str;\n\treturn result;\n}\n\nexport default function getSnippet(source, loc, length = 1) {\n\tconst first = Math.max(loc.line - 5, 0);\n\tconst last = loc.line;\n\n\tconst numDigits = String(last).length;\n\n\tconst lines = source.split('\\n').slice(first, last);\n\n\tconst lastLine = lines[lines.length - 1];\n\tconst offset = lastLine.slice(0, loc.column).replace(/\\t/g, ' ').length;\n\n\tlet snippet = lines\n\t\t.map((line, i) => `${pad(i + first + 1, numDigits)} : ${line.replace(/\\t/g, ' ')}`)\n\t\t.join('\\n');\n\n\tsnippet += '\\n' + repeat(' ', numDigits + 3 + offset) + repeat('^', length);\n\n\treturn snippet;\n}\n","import locate from './locate.js';\nimport getSnippet from './getSnippet.js';\n\nexport default class CompileError extends Error {\n\tconstructor(message, node) {\n\t\tsuper(message);\n\n\t\tthis.name = 'CompileError';\n\t\tif (!node) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst source = node.program.magicString.original;\n\t\tconst loc = locate(source, node.start);\n\n\t\tthis.message = message + ` (${loc.line}:${loc.column})`;\n\n\t\tthis.stack = new Error().stack.replace(\n\t\t\tnew RegExp(`.+new ${this.name}.+\\\\n`, 'm'),\n\t\t\t''\n\t\t);\n\n\t\tthis.loc = loc;\n\t\tthis.snippet = getSnippet(source, loc, node.end - node.start);\n\t}\n\n\ttoString() {\n\t\treturn `${this.name}: ${this.message}\\n${this.snippet}`;\n\t}\n\n\tstatic missingTransform(feature, transformKey, node, dangerousKey = null) {\n\t\tconst maybeDangerous = dangerousKey ? `, or \\`transforms: { ${dangerousKey}: true }\\` if you know what you're doing` : '';\n\t\tthrow new CompileError(`Transforming ${feature} is not ${dangerousKey ? \"fully supported\" : \"implemented\"}. Use \\`transforms: { ${transformKey}: false }\\` to skip transformation and disable this error${maybeDangerous}.`, node);\n\t}\n}\n","export function findIndex(array, fn) {\n\tfor (let i = 0; i < array.length; i += 1) {\n\t\tif (fn(array[i], i)) return i;\n\t}\n\n\treturn -1;\n}\n\nexport function find(array, fn) {\n\treturn array[findIndex(array, fn)];\n}\n","import CompileError from '../utils/CompileError.js';\nimport { findIndex } from './array.js';\n\nconst handlers = {\n\tIdentifier: destructureIdentifier,\n\tAssignmentPattern: destructureAssignmentPattern,\n\tArrayPattern: destructureArrayPattern,\n\tObjectPattern: destructureObjectPattern\n};\n\nexport default function destructure(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\thandlers[node.type](code, createIdentifier, resolveName, node, ref, inline, statementGenerators);\n}\n\nfunction destructureIdentifier(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tstatementGenerators.push((start, prefix, suffix) => {\n\t\tcode.overwrite(node.start, node.end, (inline ? prefix : `${prefix}var `) + resolveName(node) + ` = ${ref}${suffix}`);\n\t\tcode.move(node.start, node.end, start);\n\t});\n}\n\nfunction destructureMemberExpression(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tstatementGenerators.push((start, prefix, suffix) => {\n\t\tcode.prependRight(node.start, inline ? prefix : `${prefix}var `);\n\t\tcode.appendLeft(node.end, ` = ${ref}${suffix}`);\n\t\tcode.move(node.start, node.end, start);\n\t});\n}\n\nfunction destructureAssignmentPattern(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tconst isIdentifier = node.left.type === 'Identifier';\n\tconst name = isIdentifier ? node.left.name : ref;\n\n\tif (!inline) {\n\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\tcode.prependRight(\n\t\t\t\tnode.left.end,\n\t\t\t\t`${prefix}if ( ${name} === void 0 ) ${name}`\n\t\t\t);\n\t\t\tcode.move(node.left.end, node.right.end, start);\n\t\t\tcode.appendLeft(node.right.end, suffix);\n\t\t});\n\t}\n\n\tif (!isIdentifier) {\n\t\tdestructure(code, createIdentifier, resolveName, node.left, ref, inline, statementGenerators);\n\t}\n}\n\nfunction destructureArrayPattern(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tlet c = node.start;\n\n\tnode.elements.forEach((element, i) => {\n\t\tif (!element) return;\n\n\t\tif (element.type === 'RestElement') {\n\t\t\thandleProperty(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tc,\n\t\t\t\telement.argument,\n\t\t\t\t`${ref}.slice(${i})`,\n\t\t\t\tinline,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\t\t} else {\n\t\t\thandleProperty(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tc,\n\t\t\t\telement,\n\t\t\t\t`${ref}[${i}]`,\n\t\t\t\tinline,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\t\t}\n\t\tc = element.end;\n\t});\n\n\tcode.remove(c, node.end);\n}\n\nfunction destructureObjectPattern(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tnode,\n\tref,\n\tinline,\n\tstatementGenerators\n) {\n\tlet c = node.start;\n\n\tconst nonRestKeys = [];\n\tnode.properties.forEach(prop => {\n\t\tlet value;\n\t\tlet content;\n\t\tif (prop.type === 'Property') {\n\t\t\tcontent = prop.value;\n\t\t\tif (!prop.computed && prop.key.type === 'Identifier') {\n\t\t\t\tvalue = `${ref}.${prop.key.name}`;\n\t\t\t\tnonRestKeys.push(`\"${prop.key.name}\"`);\n\t\t\t} else if (!prop.computed && prop.key.type === 'Literal') {\n\t\t\t\tvalue = `${ref}[${prop.key.raw}]`;\n\t\t\t\tnonRestKeys.push(JSON.stringify(String(prop.key.value)));\n\t\t\t} else {\n\t\t\t\tconst expr = code.slice(prop.key.start, prop.key.end);\n\t\t\t\tvalue = `${ref}[${expr}]`;\n\t\t\t\tnonRestKeys.push(`String(${expr})`);\n\t\t\t}\n\t\t} else if (prop.type === 'RestElement') {\n\t\t\tcontent = prop.argument;\n\t\t\tvalue = createIdentifier('rest');\n\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst helper = prop.program.getObjectWithoutPropertiesHelper(code);\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tprop.start,\n\t\t\t\t\t(c = prop.argument.start),\n\t\t\t\t\t(inline ? prefix : `${prefix}var `) + `${value} = ${helper}( ${ref}, [${nonRestKeys.join(', ')}] )${suffix}`\n\t\t\t\t);\n\t\t\t\tcode.move(prop.start, c, start);\n\t\t\t});\n\t\t} else {\n\t\t\tthrow new CompileError(\n\t\t\t\tthis,\n\t\t\t\t`Unexpected node of type ${prop.type} in object pattern`\n\t\t\t);\n\t\t}\n\t\thandleProperty(code, createIdentifier, resolveName, c, content, value, inline, statementGenerators);\n\t\tc = prop.end;\n\t});\n\n\tcode.remove(c, node.end);\n}\n\nfunction handleProperty(\n\tcode,\n\tcreateIdentifier,\n\tresolveName,\n\tc,\n\tnode,\n\tvalue,\n\tinline,\n\tstatementGenerators\n) {\n\tswitch (node.type) {\n\t\tcase 'Identifier': {\n\t\t\tcode.remove(c, node.start);\n\t\t\tdestructureIdentifier(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tnode,\n\t\t\t\tvalue,\n\t\t\t\tinline,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'MemberExpression':\n\t\t\tcode.remove(c, node.start);\n\t\t\tdestructureMemberExpression(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tnode,\n\t\t\t\tvalue,\n\t\t\t\ttrue,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\t\t\tbreak;\n\n\t\tcase 'AssignmentPattern': {\n\t\t\tlet name;\n\n\t\t\tconst isIdentifier = node.left.type === 'Identifier';\n\n\t\t\tif (isIdentifier) {\n\t\t\t\tname = resolveName(node.left);\n\t\t\t} else {\n\t\t\t\tname = createIdentifier(value);\n\t\t\t}\n\n\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tif (inline) {\n\t\t\t\t\tcode.prependRight(\n\t\t\t\t\t\tnode.right.start,\n\t\t\t\t\t\t`${name} = ${value}, ${name} = ${name} === void 0 ? `\n\t\t\t\t\t);\n\t\t\t\t\tcode.appendLeft(node.right.end, ` : ${name}${suffix}`);\n\t\t\t\t} else {\n\t\t\t\t\tcode.prependRight(\n\t\t\t\t\t\tnode.right.start,\n\t\t\t\t\t\t`${prefix}var ${name} = ${value}; if ( ${name} === void 0 ) ${name} = `\n\t\t\t\t\t);\n\t\t\t\t\tcode.appendLeft(node.right.end, suffix);\n\t\t\t\t}\n\n\t\t\t\tcode.move(node.right.start, node.right.end, start);\n\t\t\t});\n\n\t\t\tif (isIdentifier) {\n\t\t\t\tcode.remove(c, node.right.start);\n\t\t\t} else {\n\t\t\t\tcode.remove(c, node.left.start);\n\t\t\t\tcode.remove(node.left.end, node.right.start);\n\t\t\t\thandleProperty(\n\t\t\t\t\tcode,\n\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\tresolveName,\n\t\t\t\t\tc,\n\t\t\t\t\tnode.left,\n\t\t\t\t\tname,\n\t\t\t\t\tinline,\n\t\t\t\t\tstatementGenerators\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'ObjectPattern': {\n\t\t\tcode.remove(c, (c = node.start));\n\n\t\t\tlet ref = value;\n\t\t\tif (node.properties.length > 1) {\n\t\t\t\tref = createIdentifier(value);\n\n\t\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\t// this feels a tiny bit hacky, but we can't do a\n\t\t\t\t\t// straightforward appendLeft and keep correct order...\n\t\t\t\t\tcode.prependRight(node.start, (inline ? '' : `${prefix}var `) + `${ref} = `);\n\t\t\t\t\tcode.overwrite(node.start, (c = node.start + 1), value);\n\t\t\t\t\tcode.appendLeft(c, suffix);\n\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tnode.start,\n\t\t\t\t\t\t(c = node.start + 1),\n\t\t\t\t\t\t(inline ? '' : `${prefix}var `) + `${ref} = ${value}${suffix}`\n\t\t\t\t\t);\n\t\t\t\t\tcode.move(node.start, c, start);\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tdestructureObjectPattern(\n\t\t\t\tcode,\n\t\t\t\tcreateIdentifier,\n\t\t\t\tresolveName,\n\t\t\t\tnode,\n\t\t\t\tref,\n\t\t\t\tinline,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'ArrayPattern': {\n\t\t\tcode.remove(c, (c = node.start));\n\n\t\t\tif (node.elements.filter(Boolean).length > 1) {\n\t\t\t\tconst ref = createIdentifier(value);\n\n\t\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\tcode.prependRight(node.start, (inline ? '' : `${prefix}var `) + `${ref} = `);\n\t\t\t\t\tcode.overwrite(node.start, (c = node.start + 1), value, {\n\t\t\t\t\t\tcontentOnly: true\n\t\t\t\t\t});\n\t\t\t\t\tcode.appendLeft(c, suffix);\n\n\t\t\t\t\tcode.move(node.start, c, start);\n\t\t\t\t});\n\n\t\t\t\tnode.elements.forEach((element, i) => {\n\t\t\t\t\tif (!element) return;\n\n\t\t\t\t\tif (element.type === 'RestElement') {\n\t\t\t\t\t\thandleProperty(\n\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\t\t\tresolveName,\n\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\telement.argument,\n\t\t\t\t\t\t\t`${ref}.slice(${i})`,\n\t\t\t\t\t\t\tinline,\n\t\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\thandleProperty(\n\t\t\t\t\t\t\tcode,\n\t\t\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\t\t\tresolveName,\n\t\t\t\t\t\t\tc,\n\t\t\t\t\t\t\telement,\n\t\t\t\t\t\t\t`${ref}[${i}]`,\n\t\t\t\t\t\t\tinline,\n\t\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tc = element.end;\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tconst index = findIndex(node.elements, Boolean);\n\t\t\t\tconst element = node.elements[index];\n\t\t\t\tif (element.type === 'RestElement') {\n\t\t\t\t\thandleProperty(\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\t\tresolveName,\n\t\t\t\t\t\tc,\n\t\t\t\t\t\telement.argument,\n\t\t\t\t\t\t`${value}.slice(${index})`,\n\t\t\t\t\t\tinline,\n\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\thandleProperty(\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tcreateIdentifier,\n\t\t\t\t\t\tresolveName,\n\t\t\t\t\t\tc,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\t`${value}[${index}]`,\n\t\t\t\t\t\tinline,\n\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tc = element.end;\n\t\t\t}\n\n\t\t\tcode.remove(c, node.end);\n\t\t\tbreak;\n\t\t}\n\n\t\tdefault: {\n\t\t\tthrow new Error(`Unexpected node type in destructuring (${node.type})`);\n\t\t}\n\t}\n}\n","import Node from './Node.js';\nimport Scope from './Scope.js';\nimport destructure from '../utils/destructure.js';\n\nfunction isUseStrict(node) {\n\tif (!node) return false;\n\tif (node.type !== 'ExpressionStatement') return false;\n\tif (node.expression.type !== 'Literal') return false;\n\treturn node.expression.value === 'use strict';\n}\n\nexport default class BlockStatement extends Node {\n\tcreateScope() {\n\t\tthis.parentIsFunction = /Function/.test(this.parent.type);\n\t\tthis.isFunctionBlock = this.parentIsFunction || this.parent.type === 'Root';\n\t\tthis.scope = new Scope({\n\t\t\tblock: !this.isFunctionBlock,\n\t\t\tparent: this.parent.findScope(false),\n\t\t\tdeclare: id => this.createdDeclarations.push(id)\n\t\t});\n\n\t\tif (this.parentIsFunction) {\n\t\t\tthis.parent.params.forEach(node => {\n\t\t\t\tthis.scope.addDeclaration(node, 'param');\n\t\t\t});\n\t\t}\n\t}\n\n\tinitialise(transforms) {\n\t\tthis.thisAlias = null;\n\t\tthis.argumentsAlias = null;\n\t\tthis.defaultParameters = [];\n\t\tthis.createdDeclarations = [];\n\n\t\t// normally the scope gets created here, during initialisation,\n\t\t// but in some cases (e.g. `for` statements), we need to create\n\t\t// the scope early, as it pertains to both the init block and\n\t\t// the body of the statement\n\t\tif (!this.scope) this.createScope();\n\n\t\tthis.body.forEach(node => node.initialise(transforms));\n\n\t\tthis.scope.consolidate();\n\t}\n\n\tfindLexicalBoundary() {\n\t\tif (this.type === 'Program') return this;\n\t\tif (/^Function/.test(this.parent.type)) return this;\n\n\t\treturn this.parent.findLexicalBoundary();\n\t}\n\n\tfindScope(functionScope) {\n\t\tif (functionScope && !this.isFunctionBlock)\n\t\t\treturn this.parent.findScope(functionScope);\n\t\treturn this.scope;\n\t}\n\n\tgetArgumentsAlias() {\n\t\tif (!this.argumentsAlias) {\n\t\t\tthis.argumentsAlias = this.scope.createIdentifier('arguments');\n\t\t}\n\n\t\treturn this.argumentsAlias;\n\t}\n\n\tgetArgumentsArrayAlias() {\n\t\tif (!this.argumentsArrayAlias) {\n\t\t\tthis.argumentsArrayAlias = this.scope.createIdentifier('argsArray');\n\t\t}\n\n\t\treturn this.argumentsArrayAlias;\n\t}\n\n\tgetThisAlias() {\n\t\tif (!this.thisAlias) {\n\t\t\tthis.thisAlias = this.scope.createIdentifier('this');\n\t\t}\n\n\t\treturn this.thisAlias;\n\t}\n\n\tgetIndentation() {\n\t\tif (this.indentation === undefined) {\n\t\t\tconst source = this.program.magicString.original;\n\n\t\t\tconst useOuter = this.synthetic || !this.body.length;\n\t\t\tlet c = useOuter ? this.start : this.body[0].start;\n\n\t\t\twhile (c && source[c] !== '\\n') c -= 1;\n\n\t\t\tthis.indentation = '';\n\n\t\t\t// eslint-disable-next-line no-constant-condition\n\t\t\twhile (true) {\n\t\t\t\tc += 1;\n\t\t\t\tconst char = source[c];\n\n\t\t\t\tif (char !== ' ' && char !== '\\t') break;\n\n\t\t\t\tthis.indentation += char;\n\t\t\t}\n\n\t\t\tconst indentString = this.program.magicString.getIndentString();\n\n\t\t\t// account for dedented class constructors\n\t\t\tlet parent = this.parent;\n\t\t\twhile (parent) {\n\t\t\t\tif (parent.kind === 'constructor' && !parent.parent.parent.superClass) {\n\t\t\t\t\tthis.indentation = this.indentation.replace(indentString, '');\n\t\t\t\t}\n\n\t\t\t\tparent = parent.parent;\n\t\t\t}\n\n\t\t\tif (useOuter) this.indentation += indentString;\n\t\t}\n\n\t\treturn this.indentation;\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst indentation = this.getIndentation();\n\n\t\tconst introStatementGenerators = [];\n\n\t\tif (this.argumentsAlias) {\n\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.argumentsAlias} = arguments${\n\t\t\t\t\tsuffix\n\t\t\t\t}`;\n\t\t\t\tcode.appendLeft(start, assignment);\n\t\t\t});\n\t\t}\n\n\t\tif (this.thisAlias) {\n\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.thisAlias} = this${suffix}`;\n\t\t\t\tcode.appendLeft(start, assignment);\n\t\t\t});\n\t\t}\n\n\t\tif (this.argumentsArrayAlias) {\n\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst i = this.scope.createIdentifier('i');\n\t\t\t\tconst assignment = `${prefix}var ${i} = arguments.length, ${\n\t\t\t\t\tthis.argumentsArrayAlias\n\t\t\t\t} = Array(${i});\\n${indentation}while ( ${i}-- ) ${\n\t\t\t\t\tthis.argumentsArrayAlias\n\t\t\t\t}[${i}] = arguments[${i}]${suffix}`;\n\t\t\t\tcode.appendLeft(start, assignment);\n\t\t\t});\n\t\t}\n\n\t\tif (/Function/.test(this.parent.type)) {\n\t\t\tthis.transpileParameters(\n\t\t\t\tthis.parent.params,\n\t\t\t\tcode,\n\t\t\t\ttransforms,\n\t\t\t\tindentation,\n\t\t\t\tintroStatementGenerators\n\t\t\t);\n\t\t} else if ('CatchClause' === this.parent.type) {\n\t\t\tthis.transpileParameters(\n\t\t\t\t[this.parent.param],\n\t\t\t\tcode,\n\t\t\t\ttransforms,\n\t\t\t\tindentation,\n\t\t\t\tintroStatementGenerators\n\t\t\t);\n\t\t}\n\n\t\tif (transforms.letConst && this.isFunctionBlock) {\n\t\t\tthis.transpileBlockScopedIdentifiers(code);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (this.createdDeclarations.length) {\n\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\tconst assignment = `${prefix}var ${this.createdDeclarations.join(', ')}${suffix}`;\n\t\t\t\tcode.appendLeft(start, assignment);\n\t\t\t});\n\t\t}\n\n\t\tif (this.synthetic) {\n\t\t\tif (this.parent.type === 'ArrowFunctionExpression') {\n\t\t\t\tconst expr = this.body[0];\n\n\t\t\t\tif (introStatementGenerators.length) {\n\t\t\t\t\tcode\n\t\t\t\t\t\t.appendLeft(this.start, `{`)\n\t\t\t\t\t\t.prependRight(this.end, `${this.parent.getIndentation()}}`);\n\n\t\t\t\t\tcode.prependRight(expr.start, `\\n${indentation}return `);\n\t\t\t\t\tcode.appendLeft(expr.end, `;\\n`);\n\t\t\t\t} else if (transforms.arrow) {\n\t\t\t\t\tcode.prependRight(expr.start, `{ return `);\n\t\t\t\t\tcode.appendLeft(expr.end, `; }`);\n\t\t\t\t}\n\t\t\t} else if (introStatementGenerators.length) {\n\t\t\t\tcode.prependRight(this.start, `{`).appendLeft(this.end, `}`);\n\t\t\t}\n\t\t}\n\n\t\tlet start;\n\t\tif (isUseStrict(this.body[0])) {\n\t\t\tstart = this.body[0].end;\n\t\t} else if (this.synthetic || this.parent.type === 'Root') {\n\t\t\tstart = this.start;\n\t\t} else {\n\t\t\tstart = this.start + 1;\n\t\t}\n\n\t\tconst prefix = `\\n${indentation}`;\n\t\tlet suffix = ';';\n\t\tintroStatementGenerators.forEach((fn, i) => {\n\t\t\tif (i === introStatementGenerators.length - 1) suffix = `;\\n`;\n\t\t\tfn(start, prefix, suffix);\n\t\t});\n\t}\n\n\ttranspileParameters(params, code, transforms, indentation, introStatementGenerators) {\n\t\tparams.forEach(param => {\n\t\t\tif (\n\t\t\t\tparam.type === 'AssignmentPattern' &&\n\t\t\t\tparam.left.type === 'Identifier'\n\t\t\t) {\n\t\t\t\tif (transforms.defaultParameter) {\n\t\t\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\t\tconst lhs = `${prefix}if ( ${param.left.name} === void 0 ) ${\n\t\t\t\t\t\t\tparam.left.name\n\t\t\t\t\t\t}`;\n\n\t\t\t\t\t\tcode\n\t\t\t\t\t\t\t.prependRight(param.left.end, lhs)\n\t\t\t\t\t\t\t.move(param.left.end, param.right.end, start)\n\t\t\t\t\t\t\t.appendLeft(param.right.end, suffix);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (param.type === 'RestElement') {\n\t\t\t\tif (transforms.spreadRest) {\n\t\t\t\t\tintroStatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\t\tconst penultimateParam = params[params.length - 2];\n\n\t\t\t\t\t\tif (penultimateParam) {\n\t\t\t\t\t\t\tcode.remove(\n\t\t\t\t\t\t\t\tpenultimateParam ? penultimateParam.end : param.start,\n\t\t\t\t\t\t\t\tparam.end\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tlet start = param.start,\n\t\t\t\t\t\t\t\tend = param.end; // TODO https://gitlab.com/Rich-Harris/buble/issues/8\n\n\t\t\t\t\t\t\twhile (/\\s/.test(code.original[start - 1])) start -= 1;\n\t\t\t\t\t\t\twhile (/\\s/.test(code.original[end])) end += 1;\n\n\t\t\t\t\t\t\tcode.remove(start, end);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst name = param.argument.name;\n\t\t\t\t\t\tconst len = this.scope.createIdentifier('len');\n\t\t\t\t\t\tconst count = params.length - 1;\n\n\t\t\t\t\t\tif (count) {\n\t\t\t\t\t\t\tcode.prependRight(\n\t\t\t\t\t\t\t\tstart,\n\t\t\t\t\t\t\t\t`${prefix}var ${name} = [], ${len} = arguments.length - ${\n\t\t\t\t\t\t\t\t\tcount\n\t\t\t\t\t\t\t\t};\\n${indentation}while ( ${len}-- > 0 ) ${name}[ ${\n\t\t\t\t\t\t\t\t\tlen\n\t\t\t\t\t\t\t\t} ] = arguments[ ${len} + ${count} ]${suffix}`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.prependRight(\n\t\t\t\t\t\t\t\tstart,\n\t\t\t\t\t\t\t\t`${prefix}var ${name} = [], ${len} = arguments.length;\\n${\n\t\t\t\t\t\t\t\t\tindentation\n\t\t\t\t\t\t\t\t}while ( ${len}-- ) ${name}[ ${len} ] = arguments[ ${len} ]${\n\t\t\t\t\t\t\t\t\tsuffix\n\t\t\t\t\t\t\t\t}`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else if (param.type !== 'Identifier') {\n\t\t\t\tif (transforms.parameterDestructuring) {\n\t\t\t\t\tconst ref = this.scope.createIdentifier('ref');\n\t\t\t\t\tdestructure(\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tid => this.scope.createIdentifier(id),\n\t\t\t\t\t\t({ name }) => this.scope.resolveName(name),\n\t\t\t\t\t\tparam,\n\t\t\t\t\t\tref,\n\t\t\t\t\t\tfalse,\n\t\t\t\t\t\tintroStatementGenerators\n\t\t\t\t\t);\n\t\t\t\t\tcode.prependRight(param.start, ref);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\ttranspileBlockScopedIdentifiers(code) {\n\t\tObject.keys(this.scope.blockScopedDeclarations).forEach(name => {\n\t\t\tconst declarations = this.scope.blockScopedDeclarations[name];\n\n\t\t\tfor (const declaration of declarations) {\n\t\t\t\tlet cont = false; // TODO implement proper continue...\n\n\t\t\t\tif (declaration.kind === 'for.let') {\n\t\t\t\t\t// special case\n\t\t\t\t\tconst forStatement = declaration.node.findNearest('ForStatement');\n\n\t\t\t\t\tif (forStatement.shouldRewriteAsFunction) {\n\t\t\t\t\t\tconst outerAlias = this.scope.createIdentifier(name);\n\t\t\t\t\t\tconst innerAlias = forStatement.reassigned[name]\n\t\t\t\t\t\t\t? this.scope.createIdentifier(name)\n\t\t\t\t\t\t\t: name;\n\n\t\t\t\t\t\tdeclaration.name = outerAlias;\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tdeclaration.node.start,\n\t\t\t\t\t\t\tdeclaration.node.end,\n\t\t\t\t\t\t\touterAlias,\n\t\t\t\t\t\t\t{ storeName: true }\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tforStatement.aliases[name] = {\n\t\t\t\t\t\t\touter: outerAlias,\n\t\t\t\t\t\t\tinner: innerAlias\n\t\t\t\t\t\t};\n\n\t\t\t\t\t\tfor (const identifier of declaration.instances) {\n\t\t\t\t\t\t\tconst alias = forStatement.body.contains(identifier)\n\t\t\t\t\t\t\t\t? innerAlias\n\t\t\t\t\t\t\t\t: outerAlias;\n\n\t\t\t\t\t\t\tif (name !== alias) {\n\t\t\t\t\t\t\t\tcode.overwrite(identifier.start, identifier.end, alias, {\n\t\t\t\t\t\t\t\t\tstoreName: true\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcont = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!cont) {\n\t\t\t\t\tconst alias = this.scope.createIdentifier(name);\n\n\t\t\t\t\tif (name !== alias) {\n\t\t\t\t\t\tdeclaration.name = alias;\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tdeclaration.node.start,\n\t\t\t\t\t\t\tdeclaration.node.end,\n\t\t\t\t\t\t\talias,\n\t\t\t\t\t\t\t{ storeName: true }\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfor (const identifier of declaration.instances) {\n\t\t\t\t\t\t\tidentifier.rewritten = true;\n\t\t\t\t\t\t\tcode.overwrite(identifier.start, identifier.end, alias, {\n\t\t\t\t\t\t\t\tstoreName: true\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n}\n","import CompileError from './CompileError.js';\n\nexport function isArguments(node) {\n\treturn node.type === 'Identifier' && node.name === 'arguments';\n}\n\nexport function inlineSpreads(\n\tcode,\n\tnode,\n\telements\n) {\n\tlet i = elements.length;\n\n\twhile (i--) {\n\t\tconst element = elements[i];\n\t\tif (!element || element.type !== 'SpreadElement') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst argument = element.argument;\n\t\tif (argument.type !== 'ArrayExpression') {\n\t\t\tcontinue;\n\t\t}\n\t\tconst subelements = argument.elements;\n\t\tif (subelements.some(subelement => subelement === null)) {\n\t\t\t// Not even going to try inlining spread arrays with holes.\n\t\t\t// It's a lot of work (got to be VERY careful in comma counting for\n\t\t\t// ArrayExpression, and turn blanks into undefined for\n\t\t\t// CallExpression and NewExpression), and probably literally no one\n\t\t\t// would ever benefit from it.\n\t\t\tcontinue;\n\t\t}\n\t\t// We can inline it: drop the `...[` and `]` and sort out any commas.\n\t\tconst isLast = i === elements.length - 1;\n\t\tif (subelements.length === 0) {\n\t\t\tcode.remove(\n\t\t\t\tisLast && i !== 0\n\t\t\t\t\t? elements[i - 1].end // Take the previous comma too\n\t\t\t\t\t: element.start,\n\t\t\t\tisLast\n\t\t\t\t\t? node.end - 1 // Must remove trailing comma; element.end wouldn’t\n\t\t\t\t\t: elements[i + 1].start);\n\t\t} else {\n\t\t\t// Strip the `...[` and the `]` with a possible trailing comma before it,\n\t\t\t// leaving just the possible trailing comma after it.\n\t\t\tcode.remove(element.start, subelements[0].start);\n\t\t\tcode.remove(\n\t\t\t\t// Strip a possible trailing comma after the last element\n\t\t\t\tsubelements[subelements.length - 1].end,\n\t\t\t\t// And also a possible trailing comma after the spread\n\t\t\t\tisLast\n\t\t\t\t\t? node.end - 1\n\t\t\t\t\t: element.end\n\t\t\t);\n\t\t}\n\t\telements.splice(i, 1, ...subelements);\n\t\ti += subelements.length;\n\t}\n}\n\n// Returns false if it’s safe to simply append a method call to the node,\n// e.g. `a` → `a.concat()`.\n//\n// Returns true if it may not be and so parentheses should be employed,\n// e.g. `a ? b : c` → `a ? b : c.concat()` would be wrong.\n//\n// This test may be overcautious; if desired it can be refined over time.\nexport function needsParentheses(node) {\n\tswitch (node.type) {\n\t\t// Currently whitelisted are all relevant ES5 node types ('Literal' and\n\t\t// 'ObjectExpression' are skipped as irrelevant for array/call spread.)\n\t\tcase 'ArrayExpression':\n\t\tcase 'CallExpression':\n\t\tcase 'Identifier':\n\t\tcase 'ParenthesizedExpression':\n\t\tcase 'ThisExpression':\n\t\t\treturn false;\n\t\tdefault:\n\t\t\treturn true;\n\t}\n}\n\nexport default function spread(\n\tcode,\n\telements,\n\tstart,\n\targumentsArrayAlias,\n\tisNew\n) {\n\tlet i = elements.length;\n\tlet firstSpreadIndex = -1;\n\n\twhile (i--) {\n\t\tconst element = elements[i];\n\t\tif (element && element.type === 'SpreadElement') {\n\t\t\tif (isArguments(element.argument)) {\n\t\t\t\tcode.overwrite(\n\t\t\t\t\telement.argument.start,\n\t\t\t\t\telement.argument.end,\n\t\t\t\t\targumentsArrayAlias\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tfirstSpreadIndex = i;\n\t\t}\n\t}\n\n\tif (firstSpreadIndex === -1) return false; // false indicates no spread elements\n\n\tif (isNew) {\n\t\tfor (i = 0; i < elements.length; i += 1) {\n\t\t\tconst element = elements[i];\n\t\t\tif (element.type === 'SpreadElement') {\n\t\t\t\tcode.remove(element.start, element.argument.start);\n\t\t\t} else {\n\t\t\t\tcode.prependRight(element.start, '[');\n\t\t\t\tcode.prependRight(element.end, ']');\n\t\t\t}\n\t\t}\n\n\t\treturn true; // true indicates some spread elements\n\t}\n\n\tlet element = elements[firstSpreadIndex];\n\tconst previousElement = elements[firstSpreadIndex - 1];\n\n\tif (!previousElement) {\n\t\t// We may need to parenthesize it to handle ternaries like [...a ? b : c].\n\t\tlet addClosingParen;\n\t\tif (start !== element.start) {\n\t\t\tif ((addClosingParen = needsParentheses(element.argument))) {\n\t\t\t\tcode.overwrite(start, element.start, '( ');\n\t\t\t} else {\n\t\t\t\tcode.remove(start, element.start);\n\t\t\t}\n\t\t} else if (element.parent.type === 'CallExpression') {\n\t\t\t// CallExpression inserts `( ` itself, we add the ).\n\t\t\t// (Yeah, CallExpression did the needsParentheses call already,\n\t\t\t// but we don’t have its result handy, so do it again. It’s cheap.)\n\t\t\taddClosingParen = needsParentheses(element.argument);\n\t\t} else {\n\t\t\t// Should be unreachable, but doing this is more robust.\n\t\t\tthrow new CompileError(\n\t\t\t\t'Unsupported spread construct, please raise an issue at https://github.com/bublejs/buble/issues',\n\t\t\t\telement\n\t\t\t);\n\t\t}\n\t\tcode.overwrite(element.end, elements[1].start,\n\t\t\taddClosingParen ? ' ).concat( ' : '.concat( ');\n\t} else {\n\t\tcode.overwrite(previousElement.end, element.start, ' ].concat( ');\n\t}\n\n\tfor (i = firstSpreadIndex; i < elements.length; i += 1) {\n\t\telement = elements[i];\n\n\t\tif (element) {\n\t\t\tif (element.type === 'SpreadElement') {\n\t\t\t\tcode.remove(element.start, element.argument.start);\n\t\t\t} else {\n\t\t\t\tcode.appendLeft(element.start, '[');\n\t\t\t\tcode.appendLeft(element.end, ']');\n\t\t\t}\n\t\t}\n\t}\n\n\treturn true; // true indicates some spread elements\n}\n","import Node from '../Node.js';\nimport spread, { isArguments, inlineSpreads } from '../../utils/spread.js';\n\nexport default class ArrayExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.spreadRest && this.elements.length) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.elements.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst element = this.elements[i];\n\t\t\t\tif (\n\t\t\t\t\telement &&\n\t\t\t\t\telement.type === 'SpreadElement' &&\n\t\t\t\t\tisArguments(element.argument)\n\t\t\t\t) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (transforms.spreadRest) {\n\t\t\tinlineSpreads(code, this, this.elements);\n\t\t\t// erase trailing comma after last array element if not an array hole\n\t\t\tif (this.elements.length) {\n\t\t\t\tconst lastElement = this.elements[this.elements.length - 1];\n\t\t\t\tif (\n\t\t\t\t\tlastElement &&\n\t\t\t\t\t/\\s*,/.test(code.original.slice(lastElement.end, this.end))\n\t\t\t\t) {\n\t\t\t\t\tcode.overwrite(lastElement.end, this.end - 1, ' ');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (this.elements.length === 1) {\n\t\t\t\tconst element = this.elements[0];\n\n\t\t\t\tif (element && element.type === 'SpreadElement') {\n\t\t\t\t\t// special case – [ ...arguments ]\n\t\t\t\t\tif (isArguments(element.argument)) {\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tthis.start,\n\t\t\t\t\t\t\tthis.end,\n\t\t\t\t\t\t\t`[].concat( ${this.argumentsArrayAlias} )`\n\t\t\t\t\t\t); // TODO if this is the only use of argsArray, don't bother concating\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite(this.start, element.argument.start, '[].concat( ');\n\t\t\t\t\t\tcode.overwrite(element.end, this.end, ' )');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst hasSpreadElements = spread(\n\t\t\t\t\tcode,\n\t\t\t\t\tthis.elements,\n\t\t\t\t\tthis.start,\n\t\t\t\t\tthis.argumentsArrayAlias\n\t\t\t\t);\n\n\t\t\t\tif (hasSpreadElements) {\n\t\t\t\t\tcode.overwrite(this.end - 1, this.end, ')');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","export default function removeTrailingComma(code, c) {\n\twhile (code.original[c] !== ')') {\n\t\tif (code.original[c] === ',') {\n\t\t\tcode.remove(c, c + 1);\n\t\t\treturn;\n\t\t}\n\n\t\tif (code.original[c] === '/') {\n\t\t\tif (code.original[c + 1] === '/') {\n\t\t\t\tc = code.original.indexOf('\\n', c);\n\t\t\t} else {\n\t\t\t\tc = code.original.indexOf('*/', c) + 1;\n\t\t\t}\n\t\t}\n\t\tc += 1;\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class ArrowFunctionExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (this.async && transforms.asyncAwait) {\n\t\t\tCompileError.missingTransform(\"async arrow functions\", \"asyncAwait\", this);\n\t\t}\n\t\tthis.body.createScope();\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tlet openParensPos = this.start;\n\t\tfor (let end = (this.body || this.params[0]).start - 1; code.original[openParensPos] !== '(' && openParensPos < end;) {\n\t\t\t++openParensPos;\n\t\t}\n\t\tif (code.original[openParensPos] !== '(') openParensPos = -1;\n\t\tconst naked = openParensPos === -1;\n\n\t\tif (transforms.arrow || this.needsArguments(transforms)) {\n\t\t\t// remove arrow\n\t\t\tlet charIndex = this.body.start;\n\t\t\twhile (code.original[charIndex] !== '=') {\n\t\t\t\tcharIndex -= 1;\n\t\t\t}\n\t\t\tcode.remove(charIndex, this.body.start);\n\n\t\t\tsuper.transpile(code, transforms);\n\n\t\t\t// wrap naked parameter\n\t\t\tif (naked) {\n\t\t\t\tcode.prependRight(this.params[0].start, '(');\n\t\t\t\tcode.appendLeft(this.params[0].end, ')');\n\t\t\t}\n\n\t\t\t// standalone expression statement\n\t\t\tconst standalone = this.parent && this.parent.type === 'ExpressionStatement';\n\t\t\tlet start, text = standalone ? '!' : '';\n\t\t\tif (this.async) text += 'async ';\n\t\t\ttext += 'function';\n\t\t\tif (!standalone) text += ' ';\n\t\t\tif (naked) {\n\t\t\t\tstart = this.params[0].start;\n\t\t\t} else {\n\t\t\t\tstart = openParensPos;\n\t\t\t}\n\t\t\t// add function\n\t\t\tif (start > this.start) {\n\t\t\t\tcode.overwrite(this.start, start, text);\n\t\t\t} else {\n\t\t\t\tcode.prependRight(this.start, text);\n\t\t\t}\n\t\t} else {\n\t\t\tsuper.transpile(code, transforms);\n\t\t}\n\n\t\tif (transforms.trailingFunctionCommas && this.params.length && !naked) {\n\t\t\tremoveTrailingComma(code, this.params[this.params.length - 1].end);\n\t\t}\n\t}\n\n\t// Returns whether any transforms that will happen use `arguments`\n\tneedsArguments(transforms) {\n\t\treturn (\n\t\t\ttransforms.spreadRest &&\n\t\t\tthis.params.filter(param => param.type === 'RestElement').length > 0\n\t\t);\n\t}\n}\n","import CompileError from './CompileError.js';\n\nexport default function checkConst(identifier, scope) {\n\tconst declaration = scope.findDeclaration(identifier.name);\n\tif (declaration && declaration.kind === 'const') {\n\t\tthrow new CompileError(`${identifier.name} is read-only`, identifier);\n\t}\n}\n","import Node from '../Node.js';\nimport checkConst from '../../utils/checkConst.js';\nimport destructure from '../../utils/destructure.js';\n\nexport default class AssignmentExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (this.left.type === 'Identifier') {\n\t\t\tconst declaration = this.findScope(false).findDeclaration(this.left.name);\n\t\t\t// special case – https://gitlab.com/Rich-Harris/buble/issues/11\n\t\t\tconst statement = declaration && declaration.node.ancestor(3);\n\t\t\tif (\n\t\t\t\tstatement &&\n\t\t\t\tstatement.type === 'ForStatement' &&\n\t\t\t\tstatement.body.contains(this)\n\t\t\t) {\n\t\t\t\tstatement.reassigned[this.left.name] = true;\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (this.left.type === 'Identifier') {\n\t\t\t// Do this check after everything has been initialized to find\n\t\t\t// shadowing declarations after this expression\n\t\t\tcheckConst(this.left, this.findScope(false));\n\t\t}\n\n\t\tif (this.operator === '**=' && transforms.exponentiation) {\n\t\t\tthis.transpileExponentiation(code, transforms);\n\t\t} else if (/Pattern/.test(this.left.type) && transforms.destructuring) {\n\t\t\tthis.transpileDestructuring(code);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n\n\ttranspileDestructuring(code) {\n\t\tconst writeScope = this.findScope(true);\n\t\tconst lookupScope = this.findScope(false);\n\t\tconst assign = writeScope.createDeclaration('assign');\n\t\tcode.appendRight(this.left.end, `(${assign}`);\n\n\t\tcode.appendLeft(this.right.end, ', ');\n\t\tconst statementGenerators = [];\n\t\tdestructure(\n\t\t\tcode,\n\t\t\tid => writeScope.createDeclaration(id),\n\t\t\tnode => {\n\t\t\t\tconst name = lookupScope.resolveName(node.name);\n\t\t\t\tcheckConst(node, lookupScope);\n\t\t\t\treturn name;\n\t\t\t},\n\t\t\tthis.left,\n\t\t\tassign,\n\t\t\ttrue,\n\t\t\tstatementGenerators\n\t\t);\n\n\t\tlet suffix = ', ';\n\t\tstatementGenerators.forEach((fn, j) => {\n\t\t\tif (j === statementGenerators.length - 1) {\n\t\t\t\tsuffix = '';\n\t\t\t}\n\n\t\t\tfn(this.end, '', suffix);\n\t\t});\n\n\t\tif (this.unparenthesizedParent().type === 'ExpressionStatement') {\n\t\t\t// no rvalue needed for expression statement\n\t\t\tcode.prependRight(this.end, `)`);\n\t\t} else {\n\t\t\t// destructuring is part of an expression - need an rvalue\n\t\t\tcode.appendRight(this.end, `, ${assign})`);\n\t\t}\n\t}\n\n\ttranspileExponentiation(code) {\n\t\tconst scope = this.findScope(false);\n\n\t\t// first, the easy part – `**=` -> `=`\n\t\tlet charIndex = this.left.end;\n\t\twhile (code.original[charIndex] !== '*') charIndex += 1;\n\t\tcode.remove(charIndex, charIndex + 2);\n\n\t\t// how we do the next part depends on a number of factors – whether\n\t\t// this is a top-level statement, and whether we're updating a\n\t\t// simple or complex reference\n\t\tlet base;\n\n\t\tconst left = this.left.unparenthesize();\n\n\t\tif (left.type === 'Identifier') {\n\t\t\tbase = scope.resolveName(left.name);\n\t\t} else if (left.type === 'MemberExpression') {\n\t\t\tlet object;\n\t\t\tlet needsObjectVar = false;\n\t\t\tlet property;\n\t\t\tlet needsPropertyVar = false;\n\n\t\t\tconst statement = this.findNearest(/(?:Statement|Declaration)$/);\n\t\t\tconst i0 = statement.getIndentation();\n\n\t\t\tif (left.property.type === 'Identifier') {\n\t\t\t\tproperty = left.computed\n\t\t\t\t\t? scope.resolveName(left.property.name)\n\t\t\t\t\t: left.property.name;\n\t\t\t} else {\n\t\t\t\tproperty = scope.createDeclaration('property');\n\t\t\t\tneedsPropertyVar = true;\n\t\t\t}\n\n\t\t\tif (left.object.type === 'Identifier') {\n\t\t\t\tobject = scope.resolveName(left.object.name);\n\t\t\t} else {\n\t\t\t\tobject = scope.createDeclaration('object');\n\t\t\t\tneedsObjectVar = true;\n\t\t\t}\n\n\t\t\tif (left.start === statement.start) {\n\t\t\t\tif (needsObjectVar && needsPropertyVar) {\n\t\t\t\t\tcode.prependRight(statement.start, `${object} = `);\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tleft.object.end,\n\t\t\t\t\t\tleft.property.start,\n\t\t\t\t\t\t`;\\n${i0}${property} = `\n\t\t\t\t\t);\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tleft.property.end,\n\t\t\t\t\t\tleft.end,\n\t\t\t\t\t\t`;\\n${i0}${object}[${property}]`\n\t\t\t\t\t);\n\t\t\t\t} else if (needsObjectVar) {\n\t\t\t\t\tcode.prependRight(statement.start, `${object} = `);\n\t\t\t\t\tcode.appendLeft(left.object.end, `;\\n${i0}`);\n\t\t\t\t\tcode.appendLeft(left.object.end, object);\n\t\t\t\t} else if (needsPropertyVar) {\n\t\t\t\t\tcode.prependRight(left.property.start, `${property} = `);\n\t\t\t\t\tcode.appendLeft(left.property.end, `;\\n${i0}`);\n\t\t\t\t\tcode.move(left.property.start, left.property.end, this.start);\n\n\t\t\t\t\tcode.appendLeft(left.object.end, `[${property}]`);\n\t\t\t\t\tcode.remove(left.object.end, left.property.start);\n\t\t\t\t\tcode.remove(left.property.end, left.end);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (needsObjectVar && needsPropertyVar) {\n\t\t\t\t\tcode.prependRight(left.start, `( ${object} = `);\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tleft.object.end,\n\t\t\t\t\t\tleft.property.start,\n\t\t\t\t\t\t`, ${property} = `\n\t\t\t\t\t);\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tleft.property.end,\n\t\t\t\t\t\tleft.end,\n\t\t\t\t\t\t`, ${object}[${property}]`\n\t\t\t\t\t);\n\t\t\t\t} else if (needsObjectVar) {\n\t\t\t\t\tcode.prependRight(left.start, `( ${object} = `);\n\t\t\t\t\tcode.appendLeft(left.object.end, `, ${object}`);\n\t\t\t\t} else if (needsPropertyVar) {\n\t\t\t\t\tcode.prependRight(left.property.start, `( ${property} = `);\n\t\t\t\t\tcode.appendLeft(left.property.end, `, `);\n\t\t\t\t\tcode.move(left.property.start, left.property.end, left.start);\n\n\t\t\t\t\tcode.overwrite(left.object.end, left.property.start, `[${property}]`);\n\t\t\t\t\tcode.remove(left.property.end, left.end);\n\t\t\t\t}\n\n\t\t\t\tif (needsPropertyVar) {\n\t\t\t\t\tcode.appendLeft(this.end, ` )`);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tbase =\n\t\t\t\tobject +\n\t\t\t\t(left.computed || needsPropertyVar ? `[${property}]` : `.${property}`);\n\t\t}\n\n\t\tcode.prependRight(this.right.start, `Math.pow( ${base}, `);\n\t\tcode.appendLeft(this.right.end, ` )`);\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class AwaitExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.asyncAwait) {\n\t\t\tCompileError.missingTransform(\"await\", \"asyncAwait\", this);\n\t\t}\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class BinaryExpression extends Node {\n\ttranspile(code, transforms) {\n\t\tif (this.operator === '**' && transforms.exponentiation) {\n\t\t\tcode.prependRight(this.start, `Math.pow( `);\n\t\t\tcode.overwrite(this.left.end, this.right.start, `, `);\n\t\t\tcode.appendLeft(this.end, ` )`);\n\t\t}\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","export const loopStatement = /(?:For(?:In|Of)?|While)Statement/;\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class BreakStatement extends Node {\n\tinitialise() {\n\t\tconst loop = this.findNearest(loopStatement);\n\t\tconst switchCase = this.findNearest('SwitchCase');\n\n\t\tif (loop && (!switchCase || loop.depth > switchCase.depth)) {\n\t\t\tloop.canBreak = true;\n\t\t\tthis.loop = loop;\n\t\t}\n\t}\n\n\ttranspile(code) {\n\t\tif (this.loop && this.loop.shouldRewriteAsFunction) {\n\t\t\tif (this.label)\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'Labels are not currently supported in a loop with locally-scoped variables',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\tcode.overwrite(this.start, this.start + 5, `return 'break'`);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport spread, { isArguments, inlineSpreads, needsParentheses } from '../../utils/spread.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class CallExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.spreadRest && this.arguments.length > 1) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.arguments.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst arg = this.arguments[i];\n\t\t\t\tif (arg.type === 'SpreadElement' && isArguments(arg.argument)) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.spreadRest && this.arguments.length) {\n\t\t\tinlineSpreads(code, this, this.arguments);\n\t\t\t// this.arguments.length may have changed, must retest.\n\t\t}\n\n\t\tif (transforms.spreadRest && this.arguments.length) {\n\t\t\tlet hasSpreadElements = false;\n\t\t\tlet context;\n\n\t\t\tconst firstArgument = this.arguments[0];\n\n\t\t\tif (this.arguments.length === 1) {\n\t\t\t\tif (firstArgument.type === 'SpreadElement') {\n\t\t\t\t\tcode.remove(firstArgument.start, firstArgument.argument.start);\n\t\t\t\t\thasSpreadElements = true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\thasSpreadElements = spread(\n\t\t\t\t\tcode,\n\t\t\t\t\tthis.arguments,\n\t\t\t\t\tfirstArgument.start,\n\t\t\t\t\tthis.argumentsArrayAlias\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (hasSpreadElements) {\n\t\t\t\t// we need to handle super() and super.method() differently\n\t\t\t\t// due to its instance\n\t\t\t\tlet _super = null;\n\t\t\t\tif (this.callee.type === 'Super') {\n\t\t\t\t\t_super = this.callee;\n\t\t\t\t} else if (\n\t\t\t\t\tthis.callee.type === 'MemberExpression' &&\n\t\t\t\t\tthis.callee.object.type === 'Super'\n\t\t\t\t) {\n\t\t\t\t\t_super = this.callee.object;\n\t\t\t\t}\n\n\t\t\t\tif (!_super && this.callee.type === 'MemberExpression') {\n\t\t\t\t\tif (this.callee.object.type === 'Identifier') {\n\t\t\t\t\t\tcontext = this.callee.object.name;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcontext = this.findScope(true).createDeclaration('ref');\n\t\t\t\t\t\tconst callExpression = this.callee.object;\n\t\t\t\t\t\tcode.prependRight(callExpression.start, `(${context} = `);\n\t\t\t\t\t\tcode.appendLeft(callExpression.end, `)`);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tcontext = 'void 0';\n\t\t\t\t}\n\n\t\t\t\tcode.appendLeft(this.callee.end, '.apply');\n\n\t\t\t\tif (_super) {\n\t\t\t\t\t_super.noCall = true; // bit hacky...\n\n\t\t\t\t\tif (this.arguments.length > 1) {\n\t\t\t\t\t\tif (firstArgument.type === 'SpreadElement') {\n\t\t\t\t\t\t\tif (needsParentheses(firstArgument.argument)) {\n\t\t\t\t\t\t\t\tcode.prependRight(firstArgument.start, `( `);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.prependRight(firstArgument.start, `[ `);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tcode.appendLeft(\n\t\t\t\t\t\t\tthis.arguments[this.arguments.length - 1].end,\n\t\t\t\t\t\t\t' )'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t} else if (this.arguments.length === 1) {\n\t\t\t\t\tcode.prependRight(firstArgument.start, `${context}, `);\n\t\t\t\t} else {\n\t\t\t\t\tif (firstArgument.type === 'SpreadElement') {\n\t\t\t\t\t\tif (needsParentheses(firstArgument.argument)) {\n\t\t\t\t\t\t\tcode.appendLeft(firstArgument.start, `${context}, ( `);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.appendLeft(firstArgument.start, `${context}, `);\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.appendLeft(firstArgument.start, `${context}, [ `);\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.appendLeft(this.arguments[this.arguments.length - 1].end, ' )');\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (transforms.trailingFunctionCommas && this.arguments.length) {\n\t\t\tremoveTrailingComma(code, this.arguments[this.arguments.length - 1].end);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import CompileError from '../../utils/CompileError.js';\nimport Node from '../Node.js';\nimport { findIndex } from '../../utils/array.js';\nimport reserved from '../../utils/reserved.js';\n\n// TODO this code is pretty wild, tidy it up\nexport default class ClassBody extends Node {\n\ttranspile(code, transforms, inFunctionExpression, superName) {\n\t\tif (transforms.classes) {\n\t\t\tconst name = this.parent.name;\n\n\t\t\tconst indentStr = code.getIndentString();\n\t\t\tconst i0 =\n\t\t\t\tthis.getIndentation() + (inFunctionExpression ? indentStr : '');\n\t\t\tconst i1 = i0 + indentStr;\n\n\t\t\tconst constructorIndex = findIndex(\n\t\t\t\tthis.body,\n\t\t\t\tnode => node.kind === 'constructor'\n\t\t\t);\n\t\t\tconst constructor = this.body[constructorIndex];\n\n\t\t\tlet introBlock = '';\n\t\t\tlet outroBlock = '';\n\n\t\t\tif (this.body.length) {\n\t\t\t\tcode.remove(this.start, this.body[0].start);\n\t\t\t\tcode.remove(this.body[this.body.length - 1].end, this.end);\n\t\t\t} else {\n\t\t\t\tcode.remove(this.start, this.end);\n\t\t\t}\n\n\t\t\tif (constructor) {\n\t\t\t\tconstructor.value.body.isConstructorBody = true;\n\n\t\t\t\tconst previousMethod = this.body[constructorIndex - 1];\n\t\t\t\tconst nextMethod = this.body[constructorIndex + 1];\n\n\t\t\t\t// ensure constructor is first\n\t\t\t\tif (constructorIndex > 0) {\n\t\t\t\t\tcode.remove(previousMethod.end, constructor.start);\n\t\t\t\t\tcode.move(\n\t\t\t\t\t\tconstructor.start,\n\t\t\t\t\t\tnextMethod ? nextMethod.start : this.end - 1,\n\t\t\t\t\t\tthis.body[0].start\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (!inFunctionExpression) code.appendLeft(constructor.end, ';');\n\t\t\t}\n\n\t\t\tconst namedFunctions =\n\t\t\t\tthis.program.options.namedFunctionExpressions !== false;\n\t\t\tconst namedConstructor =\n\t\t\t\tnamedFunctions ||\n\t\t\t\tthis.parent.superClass ||\n\t\t\t\tthis.parent.type !== 'ClassDeclaration';\n\t\t\tif (this.parent.superClass) {\n\t\t\t\tlet inheritanceBlock = `if ( ${superName} ) ${name}.__proto__ = ${\n\t\t\t\t\tsuperName\n\t\t\t\t};\\n${i0}${name}.prototype = Object.create( ${superName} && ${\n\t\t\t\t\tsuperName\n\t\t\t\t}.prototype );\\n${i0}${name}.prototype.constructor = ${name};`;\n\n\t\t\t\tif (constructor) {\n\t\t\t\t\tintroBlock += `\\n\\n${i0}` + inheritanceBlock;\n\t\t\t\t} else {\n\t\t\t\t\tconst fn =\n\t\t\t\t\t\t`function ${name} () {` +\n\t\t\t\t\t\t(superName\n\t\t\t\t\t\t\t? `\\n${i1}${superName}.apply(this, arguments);\\n${i0}}`\n\t\t\t\t\t\t\t: `}`) +\n\t\t\t\t\t\t(inFunctionExpression ? '' : ';') +\n\t\t\t\t\t\t(this.body.length ? `\\n\\n${i0}` : '');\n\n\t\t\t\t\tinheritanceBlock = fn + inheritanceBlock;\n\t\t\t\t\tintroBlock += inheritanceBlock + `\\n\\n${i0}`;\n\t\t\t\t}\n\t\t\t} else if (!constructor) {\n\t\t\t\tlet fn = 'function ' + (namedConstructor ? name + ' ' : '') + '() {}';\n\t\t\t\tif (this.parent.type === 'ClassDeclaration') fn += ';';\n\t\t\t\tif (this.body.length) fn += `\\n\\n${i0}`;\n\n\t\t\t\tintroBlock += fn;\n\t\t\t}\n\n\t\t\tconst scope = this.findScope(false);\n\n\t\t\tconst prototypeGettersAndSetters = [];\n\t\t\tconst staticGettersAndSetters = [];\n\t\t\tlet prototypeAccessors;\n\t\t\tlet staticAccessors;\n\n\t\t\tthis.body.forEach((method, i) => {\n\t\t\t\tif ((method.kind === 'get' || method.kind === 'set') && transforms.getterSetter) {\n\t\t\t\t\tCompileError.missingTransform(\"getters and setters\", \"getterSetter\", method);\n\t\t\t\t}\n\n\t\t\t\tif (method.kind === 'constructor') {\n\t\t\t\t\tconst constructorName = namedConstructor ? ' ' + name : '';\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tmethod.key.start,\n\t\t\t\t\t\tmethod.key.end,\n\t\t\t\t\t\t`function${constructorName}`\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (method.static) {\n\t\t\t\t\tconst len = code.original[method.start + 6] == ' ' ? 7 : 6;\n\t\t\t\t\tcode.remove(method.start, method.start + len);\n\t\t\t\t}\n\n\t\t\t\tconst isAccessor = method.kind !== 'method';\n\t\t\t\tlet lhs;\n\n\t\t\t\tlet methodName = method.key.name;\n\t\t\t\tif (\n\t\t\t\t\treserved[methodName] ||\n\t\t\t\t\tmethod.value.body.scope.references[methodName]\n\t\t\t\t) {\n\t\t\t\t\tmethodName = scope.createIdentifier(methodName);\n\t\t\t\t}\n\n\t\t\t\t// when method name is a string or a number let's pretend it's a computed method\n\n\t\t\t\tlet fake_computed = false;\n\t\t\t\tif (!method.computed && method.key.type === 'Literal') {\n\t\t\t\t\tfake_computed = true;\n\t\t\t\t\tmethod.computed = true;\n\t\t\t\t}\n\n\t\t\t\tif (isAccessor) {\n\t\t\t\t\tif (method.computed) {\n\t\t\t\t\t\tthrow new Error(\n\t\t\t\t\t\t\t'Computed accessor properties are not currently supported'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tcode.remove(method.start, method.key.start);\n\n\t\t\t\t\tif (method.static) {\n\t\t\t\t\t\tif (!~staticGettersAndSetters.indexOf(method.key.name))\n\t\t\t\t\t\t\tstaticGettersAndSetters.push(method.key.name);\n\t\t\t\t\t\tif (!staticAccessors)\n\t\t\t\t\t\t\tstaticAccessors = scope.createIdentifier('staticAccessors');\n\n\t\t\t\t\t\tlhs = `${staticAccessors}`;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (!~prototypeGettersAndSetters.indexOf(method.key.name))\n\t\t\t\t\t\t\tprototypeGettersAndSetters.push(method.key.name);\n\t\t\t\t\t\tif (!prototypeAccessors)\n\t\t\t\t\t\t\tprototypeAccessors = scope.createIdentifier('prototypeAccessors');\n\n\t\t\t\t\t\tlhs = `${prototypeAccessors}`;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tlhs = method.static ? `${name}` : `${name}.prototype`;\n\t\t\t\t}\n\n\t\t\t\tif (!method.computed) lhs += '.';\n\n\t\t\t\tconst insertNewlines =\n\t\t\t\t\t(constructorIndex > 0 && i === constructorIndex + 1) ||\n\t\t\t\t\t(i === 0 && constructorIndex === this.body.length - 1);\n\n\t\t\t\tif (insertNewlines) lhs = `\\n\\n${i0}${lhs}`;\n\n\t\t\t\tlet c = method.key.end;\n\t\t\t\tif (method.computed) {\n\t\t\t\t\tif (fake_computed) {\n\t\t\t\t\t\tcode.prependRight(method.key.start, '[');\n\t\t\t\t\t\tcode.appendLeft(method.key.end, ']');\n\t\t\t\t\t} else {\n\t\t\t\t\t\twhile (code.original[c] !== ']') c += 1;\n\t\t\t\t\t\tc += 1;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst funcName =\n\t\t\t\t\tmethod.computed || isAccessor || !namedFunctions\n\t\t\t\t\t\t? ''\n\t\t\t\t\t\t: `${methodName} `;\n\t\t\t\tconst rhs =\n\t\t\t\t\t(isAccessor ? `.${method.kind}` : '') +\n\t\t\t\t\t` = ${method.value.async ? 'async ' : ''}function` +\n\t\t\t\t\t(method.value.generator ? '* ' : ' ') +\n\t\t\t\t\tfuncName;\n\t\t\t\tcode.remove(c, method.value.start);\n\t\t\t\tcode.prependRight(method.value.start, rhs);\n\t\t\t\tcode.appendLeft(method.end, ';');\n\n\t\t\t\tif (method.value.generator) code.remove(method.start, method.key.start);\n\n\t\t\t\tlet start = method.key.start;\n\t\t\t\tif (method.computed && !fake_computed) {\n\t\t\t\t\twhile (code.original[start] != '[') {\n\t\t\t\t\t\t--start;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (method.start < start) {\n\t\t\t\t\tcode.overwrite(method.start, start, lhs);\n\t\t\t\t} else {\n\t\t\t\t\tcode.prependRight(method.start, lhs);\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tif (prototypeGettersAndSetters.length || staticGettersAndSetters.length) {\n\t\t\t\tconst intro = [];\n\t\t\t\tconst outro = [];\n\n\t\t\t\tif (prototypeGettersAndSetters.length) {\n\t\t\t\t\tintro.push(\n\t\t\t\t\t\t`var ${prototypeAccessors} = { ${prototypeGettersAndSetters\n\t\t\t\t\t\t\t.map(name => `${name}: { configurable: true }`)\n\t\t\t\t\t\t\t.join(',')} };`\n\t\t\t\t\t);\n\t\t\t\t\toutro.push(\n\t\t\t\t\t\t`Object.defineProperties( ${name}.prototype, ${\n\t\t\t\t\t\t\tprototypeAccessors\n\t\t\t\t\t\t} );`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (staticGettersAndSetters.length) {\n\t\t\t\t\tintro.push(\n\t\t\t\t\t\t`var ${staticAccessors} = { ${staticGettersAndSetters\n\t\t\t\t\t\t\t.map(name => `${name}: { configurable: true }`)\n\t\t\t\t\t\t\t.join(',')} };`\n\t\t\t\t\t);\n\t\t\t\t\toutro.push(`Object.defineProperties( ${name}, ${staticAccessors} );`);\n\t\t\t\t}\n\n\t\t\t\tif (constructor) introBlock += `\\n\\n${i0}`;\n\t\t\t\tintroBlock += intro.join(`\\n${i0}`);\n\t\t\t\tif (!constructor) introBlock += `\\n\\n${i0}`;\n\n\t\t\t\toutroBlock += `\\n\\n${i0}` + outro.join(`\\n${i0}`);\n\t\t\t}\n\n\t\t\tif (constructor) {\n\t\t\t\tcode.appendLeft(constructor.end, introBlock);\n\t\t\t} else {\n\t\t\t\tcode.prependRight(this.start, introBlock);\n\t\t\t}\n\n\t\t\tcode.appendLeft(this.end, outroBlock);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","// TODO this function is slightly flawed – it works on the original string,\n// not its current edited state.\n// That's not a problem for the way that it's currently used, but it could\n// be in future...\nexport default function deindent(node, code) {\n\tconst start = node.start;\n\tconst end = node.end;\n\n\tconst indentStr = code.getIndentString();\n\tconst indentStrLen = indentStr.length;\n\tconst indentStart = start - indentStrLen;\n\n\tif (\n\t\t!node.program.indentExclusions[indentStart] &&\n\t\tcode.original.slice(indentStart, start) === indentStr\n\t) {\n\t\tcode.remove(indentStart, start);\n\t}\n\n\tconst pattern = new RegExp(indentStr + '\\\\S', 'g');\n\tconst slice = code.original.slice(start, end);\n\tlet match;\n\n\twhile ((match = pattern.exec(slice))) {\n\t\tconst removeStart = start + match.index;\n\t\tif (!node.program.indentExclusions[removeStart]) {\n\t\t\tcode.remove(removeStart, removeStart + indentStrLen);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport deindent from '../../utils/deindent.js';\n\nexport default class ClassDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (this.id) {\n\t\t\tthis.name = this.id.name;\n\t\t\tthis.findScope(true).addDeclaration(this.id, 'class');\n\t\t} else {\n\t\t\tthis.name = this.findScope(true).createIdentifier(\"defaultExport\");\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.classes) {\n\t\t\tif (!this.superClass) deindent(this.body, code);\n\n\t\t\tconst superName =\n\t\t\t\tthis.superClass && (this.superClass.name || 'superclass');\n\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\t// if this is an export default statement, we have to move the export to\n\t\t\t// after the declaration, because `export default var Foo = ...` is illegal\n\t\t\tconst isExportDefaultDeclaration = this.parent.type === 'ExportDefaultDeclaration';\n\n\t\t\tif (isExportDefaultDeclaration) {\n\t\t\t\tcode.remove(this.parent.start, this.start);\n\t\t\t}\n\n\t\t\tlet c = this.start;\n\t\t\tif (this.id) {\n\t\t\t\tcode.overwrite(c, this.id.start, 'var ');\n\t\t\t\tc = this.id.end;\n\t\t\t} else {\n\t\t\t\tcode.prependLeft(c, `var ${this.name}`);\n\t\t\t}\n\n\t\t\tif (this.superClass) {\n\t\t\t\tif (this.superClass.end === this.body.start) {\n\t\t\t\t\tcode.remove(c, this.superClass.start);\n\t\t\t\t\tcode.appendLeft(c, ` = /*@__PURE__*/(function (${superName}) {\\n${i1}`);\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite(c, this.superClass.start, ' = ');\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tthis.superClass.end,\n\t\t\t\t\t\tthis.body.start,\n\t\t\t\t\t\t`/*@__PURE__*/(function (${superName}) {\\n${i1}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (c === this.body.start) {\n\t\t\t\t\tcode.appendLeft(c, ' = ');\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite(c, this.body.start, ' = ');\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.body.transpile(code, transforms, !!this.superClass, superName);\n\n\t\t\tconst syntheticDefaultExport =\n\t\t\t\tisExportDefaultDeclaration\n\t\t\t\t\t? `\\n\\n${i0}export default ${this.name};`\n\t\t\t\t\t: '';\n\t\t\tif (this.superClass) {\n\t\t\t\tcode.appendLeft(this.end, `\\n\\n${i1}return ${this.name};\\n${i0}}(`);\n\t\t\t\tcode.move(this.superClass.start, this.superClass.end, this.end);\n\t\t\t\tcode.prependRight(this.end, `));${syntheticDefaultExport}`);\n\t\t\t} else if (syntheticDefaultExport) {\n\t\t\t\tcode.prependRight(this.end, syntheticDefaultExport);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.body.transpile(code, transforms, false, null);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ClassExpression extends Node {\n\tinitialise(transforms) {\n\t\tthis.name = (this.id\n\t\t\t? this.id.name\n\t\t\t: this.parent.type === 'VariableDeclarator'\n\t\t\t\t? this.parent.id.name\n\t\t\t\t: this.parent.type !== 'AssignmentExpression'\n\t\t\t\t\t? null\n\t\t\t\t\t: this.parent.left.type === 'Identifier'\n\t\t\t\t\t\t? this.parent.left.name\n\t\t\t\t\t\t: this.parent.left.type === 'MemberExpression'\n\t\t\t\t\t\t\t? this.parent.left.property.name\n\t\t\t\t\t\t\t: null) || this.findScope(true).createIdentifier('anonymous');\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.classes) {\n\t\t\tconst superName =\n\t\t\t\tthis.superClass && (this.superClass.name || 'superclass');\n\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\tif (this.superClass) {\n\t\t\t\tcode.remove(this.start, this.superClass.start);\n\t\t\t\tcode.remove(this.superClass.end, this.body.start);\n\t\t\t\tcode.appendRight(this.start, `/*@__PURE__*/(function (${superName}) {\\n${i1}`);\n\t\t\t} else {\n\t\t\t\tcode.overwrite(this.start, this.body.start, `/*@__PURE__*/(function () {\\n${i1}`);\n\t\t\t}\n\n\t\t\tthis.body.transpile(code, transforms, true, superName);\n\n\t\t\tlet superClass = '';\n\t\t\tif (this.superClass) {\n\t\t\t\tsuperClass = code.slice(this.superClass.start, this.superClass.end);\n\t\t\t\tcode.remove(this.superClass.start, this.superClass.end);\n\t\t\t}\n\t\t\tcode.appendLeft(this.end, `\\n\\n${i1}return ${this.name};\\n${i0}}(${superClass}))`);\n\t\t} else {\n\t\t\tthis.body.transpile(code, transforms, false);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ContinueStatement extends Node {\n\ttranspile(code) {\n\t\tconst loop = this.findNearest(loopStatement);\n\t\tif (loop.shouldRewriteAsFunction) {\n\t\t\tif (this.label)\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'Labels are not currently supported in a loop with locally-scoped variables',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\tcode.overwrite(this.start, this.start + 8, 'return');\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ExportDefaultDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.moduleExport)\n\t\t\tCompileError.missingTransform(\"export\", \"moduleExport\", this);\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ExportNamedDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.moduleExport)\n\t\t\tCompileError.missingTransform(\"export\", \"moduleExport\", this);\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../../Node.js';\n\nexport default class LoopStatement extends Node {\n\tfindScope(functionScope) {\n\t\treturn functionScope || !this.createdScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.body.scope;\n\t}\n\n\tinitialise(transforms) {\n\t\tthis.body.createScope();\n\t\tthis.createdScope = true;\n\n\t\t// this is populated as and when reassignments occur\n\t\tthis.reassigned = Object.create(null);\n\t\tthis.aliases = Object.create(null);\n\n\t\tthis.thisRefs = [];\n\n\t\tsuper.initialise(transforms);\n\n\t\tif (transforms.letConst) {\n\t\t\t// see if any block-scoped declarations are referenced\n\t\t\t// inside function expressions\n\t\t\tconst names = Object.keys(this.body.scope.declarations);\n\n\t\t\tlet i = names.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst name = names[i];\n\t\t\t\tconst declaration = this.body.scope.declarations[name];\n\n\t\t\t\tlet j = declaration.instances.length;\n\t\t\t\twhile (j--) {\n\t\t\t\t\tconst instance = declaration.instances[j];\n\t\t\t\t\tconst nearestFunctionExpression = instance.findNearest(/Function/);\n\n\t\t\t\t\tif (\n\t\t\t\t\t\tnearestFunctionExpression &&\n\t\t\t\t\t\tnearestFunctionExpression.depth > this.depth\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.shouldRewriteAsFunction = true;\n\t\t\t\t\t\tfor (const node of this.thisRefs) {\n\t\t\t\t\t\t\tnode.alias = node.alias || node.findLexicalBoundary().getThisAlias();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.shouldRewriteAsFunction) break;\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst needsBlock =\n\t\t\tthis.type != 'ForOfStatement' &&\n\t\t\t(this.body.type !== 'BlockStatement' ||\n\t\t\t\t(this.body.type === 'BlockStatement' && this.body.synthetic));\n\n\t\tif (this.shouldRewriteAsFunction) {\n\t\t\tconst i0 = this.getIndentation();\n\t\t\tconst i1 = i0 + code.getIndentString();\n\n\t\t\tconst argString = this.args ? ` ${this.args.join(', ')} ` : '';\n\t\t\tconst paramString = this.params ? ` ${this.params.join(', ')} ` : '';\n\n\t\t\tconst functionScope = this.findScope(true);\n\t\t\tconst loop = functionScope.createIdentifier('loop');\n\n\t\t\tconst before =\n\t\t\t\t`var ${loop} = function (${paramString}) ` +\n\t\t\t\t(this.body.synthetic ? `{\\n${i0}${code.getIndentString()}` : '');\n\t\t\tconst after = (this.body.synthetic ? `\\n${i0}}` : '') + `;\\n\\n${i0}`;\n\n\t\t\tcode.prependRight(this.body.start, before);\n\t\t\tcode.appendLeft(this.body.end, after);\n\t\t\tcode.move(this.start, this.body.start, this.body.end);\n\n\t\t\tif (this.canBreak || this.canReturn) {\n\t\t\t\tconst returned = functionScope.createIdentifier('returned');\n\n\t\t\t\tlet insert = `{\\n${i1}var ${returned} = ${loop}(${argString});\\n`;\n\t\t\t\tif (this.canBreak)\n\t\t\t\t\tinsert += `\\n${i1}if ( ${returned} === 'break' ) break;`;\n\t\t\t\tif (this.canReturn)\n\t\t\t\t\tinsert += `\\n${i1}if ( ${returned} ) return ${returned}.v;`;\n\t\t\t\tinsert += `\\n${i0}}`;\n\n\t\t\t\tcode.prependRight(this.body.end, insert);\n\t\t\t} else {\n\t\t\t\tconst callExpression = `${loop}(${argString});`;\n\n\t\t\t\tif (this.type === 'DoWhileStatement') {\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tthis.start,\n\t\t\t\t\t\tthis.body.start,\n\t\t\t\t\t\t`do {\\n${i1}${callExpression}\\n${i0}}`\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tcode.prependRight(this.body.end, callExpression);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (needsBlock) {\n\t\t\tcode.appendLeft(this.body.start, '{ ');\n\t\t\tcode.prependRight(this.body.end, ' }');\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport extractNames from '../extractNames.js';\n\nexport default class ForStatement extends LoopStatement {\n\tfindScope(functionScope) {\n\t\treturn functionScope || !this.createdScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.body.scope;\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst i1 = this.getIndentation() + code.getIndentString();\n\n\t\tif (this.shouldRewriteAsFunction) {\n\t\t\t// which variables are declared in the init statement?\n\t\t\tconst names = this.init.type === 'VariableDeclaration'\n\t\t\t\t? this.init.declarations.map(declarator => extractNames(declarator.id))\n\t\t\t\t: [];\n\n\t\t\tconst aliases = this.aliases;\n\n\t\t\tthis.args = names.map(\n\t\t\t\tname => (name in this.aliases ? this.aliases[name].outer : name)\n\t\t\t);\n\t\t\tthis.params = names.map(\n\t\t\t\tname => (name in this.aliases ? this.aliases[name].inner : name)\n\t\t\t);\n\n\t\t\tconst updates = Object.keys(this.reassigned).map(\n\t\t\t\tname => `${aliases[name].outer} = ${aliases[name].inner};`\n\t\t\t);\n\n\t\t\tif (updates.length) {\n\t\t\t\tif (this.body.synthetic) {\n\t\t\t\t\tcode.appendLeft(this.body.body[0].end, `; ${updates.join(` `)}`);\n\t\t\t\t} else {\n\t\t\t\t\tconst lastStatement = this.body.body[this.body.body.length - 1];\n\t\t\t\t\tcode.appendLeft(\n\t\t\t\t\t\tlastStatement.end,\n\t\t\t\t\t\t`\\n\\n${i1}${updates.join(`\\n${i1}`)}`\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport destructure from '../../utils/destructure.js';\nimport extractNames from '../extractNames.js';\n\nexport default class ForInStatement extends LoopStatement {\n\tfindScope(functionScope) {\n\t\treturn functionScope || !this.createdScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.body.scope;\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst hasDeclaration = this.left.type === 'VariableDeclaration';\n\n\t\tif (this.shouldRewriteAsFunction) {\n\t\t\t// which variables are declared in the init statement?\n\t\t\tconst names = hasDeclaration\n\t\t\t\t? this.left.declarations.map(declarator => extractNames(declarator.id))\n\t\t\t\t: [];\n\n\t\t\tthis.args = names.map(\n\t\t\t\tname => (name in this.aliases ? this.aliases[name].outer : name)\n\t\t\t);\n\t\t\tthis.params = names.map(\n\t\t\t\tname => (name in this.aliases ? this.aliases[name].inner : name)\n\t\t\t);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\n\t\tconst maybePattern = hasDeclaration ? this.left.declarations[0].id : this.left;\n\t\tif (maybePattern.type !== 'Identifier') {\n\t\t\tthis.destructurePattern(code, maybePattern, hasDeclaration);\n\t\t}\n\t}\n\n\tdestructurePattern(code, pattern, isDeclaration) {\n\t\tconst scope = this.findScope(true);\n\t\tconst i0 = this.getIndentation();\n\t\tconst i1 = i0 + code.getIndentString();\n\n\t\tconst ref = scope.createIdentifier('ref');\n\n\t\tconst bodyStart = this.body.body.length ? this.body.body[0].start : this.body.start + 1;\n\n\t\tcode.move(pattern.start, pattern.end, bodyStart);\n\n\t\tcode.prependRight(pattern.end, isDeclaration ? ref : `var ${ref}`);\n\n\t\tconst statementGenerators = [];\n\t\tdestructure(\n\t\t\tcode,\n\t\t\tid => scope.createIdentifier(id),\n\t\t\t({ name }) => scope.resolveName(name),\n\t\t\tpattern,\n\t\t\tref,\n\t\t\tfalse,\n\t\t\tstatementGenerators\n\t\t);\n\n\t\tlet suffix = `;\\n${i1}`;\n\t\tstatementGenerators.forEach((fn, i) => {\n\t\t\tif (i === statementGenerators.length - 1) {\n\t\t\t\tsuffix = `;\\n\\n${i1}`;\n\t\t\t}\n\n\t\t\tfn(bodyStart, '', suffix);\n\t\t});\n\t}\n}\n","import LoopStatement from './shared/LoopStatement.js';\nimport CompileError from '../../utils/CompileError.js';\nimport destructure from '../../utils/destructure.js';\n\nexport default class ForOfStatement extends LoopStatement {\n\tinitialise(transforms) {\n\t\tif (transforms.forOf && !transforms.dangerousForOf)\n\t\t\tCompileError.missingTransform(\"for-of statements\", \"forOf\", this, \"dangerousForOf\");\n\t\tif (this.await && transforms.asyncAwait)\n\t\t\tCompileError.missingTransform(\"for-await-of statements\", \"asyncAwait\", this);\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\t\tif (!transforms.dangerousForOf) return;\n\n\t\t// edge case (#80)\n\t\tif (!this.body.body[0]) {\n\t\t\tif (\n\t\t\t\tthis.left.type === 'VariableDeclaration' &&\n\t\t\t\tthis.left.kind === 'var'\n\t\t\t) {\n\t\t\t\tcode.remove(this.start, this.left.start);\n\t\t\t\tcode.appendLeft(this.left.end, ';');\n\t\t\t\tcode.remove(this.left.end, this.end);\n\t\t\t} else {\n\t\t\t\tcode.remove(this.start, this.end);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tconst scope = this.findScope(true);\n\t\tconst i0 = this.getIndentation();\n\t\tconst i1 = i0 + code.getIndentString();\n\n\t\tconst key = scope.createIdentifier('i');\n\t\tconst list = scope.createIdentifier('list');\n\n\t\tif (this.body.synthetic) {\n\t\t\tcode.prependRight(this.left.start, `{\\n${i1}`);\n\t\t\tcode.appendLeft(this.body.body[0].end, `\\n${i0}}`);\n\t\t}\n\n\t\tconst bodyStart = this.body.body[0].start;\n\n\t\tcode.remove(this.left.end, this.right.start);\n\t\tcode.move(this.left.start, this.left.end, bodyStart);\n\n\t\tcode.prependRight(this.right.start, `var ${key} = 0, ${list} = `);\n\t\tcode.appendLeft(this.right.end, `; ${key} < ${list}.length; ${key} += 1`);\n\n\t\tconst isDeclaration = this.left.type === 'VariableDeclaration';\n\t\tconst maybeDestructuring = isDeclaration ? this.left.declarations[0].id : this.left;\n\t\tif (maybeDestructuring.type !== 'Identifier') {\n\t\t\tconst statementGenerators = [];\n\t\t\tconst ref = scope.createIdentifier('ref');\n\t\t\tdestructure(\n\t\t\t\tcode,\n\t\t\t\tid => scope.createIdentifier(id),\n\t\t\t\t({ name }) => scope.resolveName(name),\n\t\t\t\tmaybeDestructuring,\n\t\t\t\tref,\n\t\t\t\t!isDeclaration,\n\t\t\t\tstatementGenerators\n\t\t\t);\n\n\t\t\tlet suffix = `;\\n${i1}`;\n\t\t\tstatementGenerators.forEach((fn, i) => {\n\t\t\t\tif (i === statementGenerators.length - 1) {\n\t\t\t\t\tsuffix = `;\\n\\n${i1}`;\n\t\t\t\t}\n\n\t\t\t\tfn(bodyStart, '', suffix);\n\t\t\t});\n\n\t\t\tif (isDeclaration) {\n\t\t\t\tcode.appendLeft(this.left.start + this.left.kind.length + 1, ref);\n\t\t\t\tcode.appendLeft(this.left.end, ` = ${list}[${key}];\\n${i1}`);\n\t\t\t} else {\n\t\t\t\tcode.appendLeft(this.left.end, `var ${ref} = ${list}[${key}];\\n${i1}`);\n\t\t\t}\n\t\t} else {\n\t\t\tcode.appendLeft(this.left.end, ` = ${list}[${key}];\\n\\n${i1}`);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class FunctionDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (this.generator && transforms.generator) {\n\t\t\tCompileError.missingTransform(\"generators\", \"generator\", this);\n\t\t}\n\t\tif (this.async && transforms.asyncAwait) {\n\t\t\tCompileError.missingTransform(\"async functions\", \"asyncAwait\", this);\n\t\t}\n\n\t\tthis.body.createScope();\n\n\t\tif (this.id) {\n\t\t\tthis.findScope(true).addDeclaration(this.id, 'function');\n\t\t}\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\t\tif (transforms.trailingFunctionCommas && this.params.length) {\n\t\t\tremoveTrailingComma(code, this.params[this.params.length - 1].end);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class FunctionExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (this.generator && transforms.generator) {\n\t\t\tCompileError.missingTransform(\"generators\", \"generator\", this);\n\t\t}\n\t\tif (this.async && transforms.asyncAwait) {\n\t\t\tCompileError.missingTransform(\"async functions\", \"asyncAwait\", this);\n\t\t}\n\n\t\tthis.body.createScope();\n\n\t\tif (this.id) {\n\t\t\t// function expression IDs belong to the child scope...\n\t\t\tthis.body.scope.addDeclaration(this.id, 'function');\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\n\t\tconst parent = this.parent;\n\t\tlet methodName;\n\n\t\tif (\n\t\t\ttransforms.conciseMethodProperty &&\n\t\t\tparent.type === 'Property' &&\n\t\t\tparent.kind === 'init' &&\n\t\t\tparent.method &&\n\t\t\tparent.key.type === 'Identifier'\n\t\t) {\n\t\t\t// object literal concise method\n\t\t\tmethodName = parent.key.name;\n\t\t} else if (\n\t\t\ttransforms.classes &&\n\t\t\tparent.type === 'MethodDefinition' &&\n\t\t\tparent.kind === 'method' &&\n\t\t\tparent.key.type === 'Identifier'\n\t\t) {\n\t\t\t// method definition in a class\n\t\t\tmethodName = parent.key.name;\n\t\t} else if (this.id && this.id.type === 'Identifier') {\n\t\t\t// naked function expression\n\t\t\tmethodName = this.id.alias || this.id.name;\n\t\t}\n\n\t\tif (methodName) {\n\t\t\tfor (const param of this.params) {\n\t\t\t\tif (param.type === 'Identifier' && methodName === param.name) {\n\t\t\t\t\t// workaround for Safari 9/WebKit bug:\n\t\t\t\t\t// https://gitlab.com/Rich-Harris/buble/issues/154\n\t\t\t\t\t// change parameter name when same as method name\n\n\t\t\t\t\tconst scope = this.body.scope;\n\t\t\t\t\tconst declaration = scope.declarations[methodName];\n\n\t\t\t\t\tconst alias = scope.createIdentifier(methodName);\n\t\t\t\t\tparam.alias = alias;\n\n\t\t\t\t\tfor (const identifier of declaration.instances) {\n\t\t\t\t\t\tidentifier.alias = alias;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\t\tif (transforms.trailingFunctionCommas && this.params.length) {\n\t\t\tremoveTrailingComma(code, this.params[this.params.length - 1].end);\n\t\t}\n\t}\n}\n","export default function isReference(node, parent) {\n\tif (node.type === 'MemberExpression') {\n\t\treturn !node.computed && isReference(node.object, node);\n\t}\n\n\tif (node.type === 'Identifier') {\n\t\t// the only time we could have an identifier node without a parent is\n\t\t// if it's the entire body of a function without a block statement –\n\t\t// i.e. an arrow function expression like `a => a`\n\t\tif (!parent) return true;\n\n\t\tif (/(Function|Class)Expression/.test(parent.type)) return false;\n\n\t\tif (parent.type === 'VariableDeclarator') return node === parent.init;\n\n\t\t// TODO is this right?\n\t\tif (\n\t\t\tparent.type === 'MemberExpression' ||\n\t\t\tparent.type === 'MethodDefinition'\n\t\t) {\n\t\t\treturn parent.computed || node === parent.object;\n\t\t}\n\n\t\tif (parent.type === 'ArrayPattern') return false;\n\n\t\t// disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\t\tif (parent.type === 'Property') {\n\t\t\tif (parent.parent.type === 'ObjectPattern') return false;\n\t\t\treturn parent.computed || node === parent.value;\n\t\t}\n\n\t\t// disregard the `bar` in `class Foo { bar () {...} }`\n\t\tif (parent.type === 'MethodDefinition') return false;\n\n\t\t// disregard the `bar` in `export { foo as bar }`\n\t\tif (parent.type === 'ExportSpecifier' && node !== parent.local)\n\t\t\treturn false;\n\n\t\treturn true;\n\t}\n}\n","import Node from '../Node.js';\nimport isReference from '../../utils/isReference.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class Identifier extends Node {\n\tfindScope(functionScope) {\n\t\tif (this.parent.params && ~this.parent.params.indexOf(this)) {\n\t\t\treturn this.parent.body.scope;\n\t\t}\n\n\t\tif (this.parent.type === 'FunctionExpression' && this === this.parent.id) {\n\t\t\treturn this.parent.body.scope;\n\t\t}\n\n\t\treturn this.parent.findScope(functionScope);\n\t}\n\n\tinitialise(transforms) {\n\t\tif (isReference(this, this.parent)) {\n\t\t\tif (\n\t\t\t\ttransforms.arrow &&\n\t\t\t\tthis.name === 'arguments' &&\n\t\t\t\t!this.findScope(false).contains(this.name)\n\t\t\t) {\n\t\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\t\tconst arrowFunction = this.findNearest('ArrowFunctionExpression');\n\t\t\t\tconst loop = this.findNearest(loopStatement);\n\n\t\t\t\tif (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n\t\t\t\t\tthis.alias = lexicalBoundary.getArgumentsAlias();\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tloop &&\n\t\t\t\t\tloop.body.contains(this) &&\n\t\t\t\t\tloop.depth > lexicalBoundary.depth\n\t\t\t\t) {\n\t\t\t\t\tthis.alias = lexicalBoundary.getArgumentsAlias();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis.findScope(false).addReference(this);\n\t\t}\n\t}\n\n\ttranspile(code) {\n\t\tif (this.alias) {\n\t\t\tcode.overwrite(this.start, this.end, this.alias, {\n\t\t\t\tstoreName: true,\n\t\t\t\tcontentOnly: true\n\t\t\t});\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class IfStatement extends Node {\n\tinitialise(transforms) {\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (\n\t\t\tthis.consequent.type !== 'BlockStatement' ||\n\t\t\t(this.consequent.type === 'BlockStatement' && this.consequent.synthetic)\n\t\t) {\n\t\t\tcode.appendLeft(this.consequent.start, '{ ');\n\t\t\tcode.prependRight(this.consequent.end, ' }');\n\t\t}\n\n\t\tif (\n\t\t\tthis.alternate &&\n\t\t\tthis.alternate.type !== 'IfStatement' &&\n\t\t\t(this.alternate.type !== 'BlockStatement' ||\n\t\t\t\t(this.alternate.type === 'BlockStatement' && this.alternate.synthetic))\n\t\t) {\n\t\t\tcode.appendLeft(this.alternate.start, '{ ');\n\t\t\tcode.prependRight(this.alternate.end, ' }');\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class Import extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.moduleImport) {\n\t\t\tCompileError.missingTransform(\"dynamic import expressions\", \"moduleImport\", this);\n\t\t}\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ImportDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.moduleImport)\n\t\t\tCompileError.missingTransform(\"import\", \"moduleImport\", this);\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ImportDefaultSpecifier extends Node {\n\tinitialise(transforms) {\n\t\tthis.findScope(true).addDeclaration(this.local, 'import');\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class ImportSpecifier extends Node {\n\tinitialise(transforms) {\n\t\tthis.findScope(true).addDeclaration(this.local, 'import');\n\t\tsuper.initialise(transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nconst hasDashes = val => /-/.test(val);\n\nconst formatKey = key => (hasDashes(key) ? `'${key}'` : key);\n\nconst formatVal = val => (val ? '' : 'true');\n\nexport default class JSXAttribute extends Node {\n\ttranspile(code, transforms) {\n\t\tconst { start, name } = this.name;\n\n\t\t// Overwrite equals sign if value is present.\n\t\tconst end = this.value ? this.value.start : this.name.end;\n\n\t\tcode.overwrite(start, end, `${formatKey(name)}: ${formatVal(this.value)}`);\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nfunction containsNewLine(node) {\n\treturn (\n\t\tnode.type === 'JSXText' && !/\\S/.test(node.value) && /\\n/.test(node.value)\n\t);\n}\n\nexport default class JSXClosingElement extends Node {\n\ttranspile(code) {\n\t\tlet spaceBeforeParen = true;\n\n\t\tconst lastChild = this.parent.children[this.parent.children.length - 1];\n\n\t\t// omit space before closing paren if\n\t\t// a) this is on a separate line, or\n\t\t// b) there are no children but there are attributes\n\t\tif (\n\t\t\t(lastChild && containsNewLine(lastChild)) ||\n\t\t\tthis.parent.openingElement.attributes.length\n\t\t) {\n\t\t\tspaceBeforeParen = false;\n\t\t}\n\n\t\tcode.overwrite(this.start, this.end, spaceBeforeParen ? ' )' : ')');\n\t}\n}\n","import Node from '../Node.js';\n\nfunction containsNewLine(node) {\n\treturn (\n\t\tnode.type === 'JSXText' && !/\\S/.test(node.value) && /\\n/.test(node.value)\n\t);\n}\n\nexport default class JSXClosingFragment extends Node {\n\ttranspile(code) {\n\t\tlet spaceBeforeParen = true;\n\n\t\tconst lastChild = this.parent.children[this.parent.children.length - 1];\n\n\t\t// omit space before closing paren if this is on a separate line\n\t\tif (lastChild && containsNewLine(lastChild)) {\n\t\t\tspaceBeforeParen = false;\n\t\t}\n\n\t\tcode.overwrite(this.start, this.end, spaceBeforeParen ? ' )' : ')');\n\t}\n}\n","import Node from '../Node.js';\n\nfunction normalise(str, removeTrailingWhitespace) {\n\n\tstr = str.replace(/\\u00a0/g, ' ');\n\n\tif (removeTrailingWhitespace && /\\n/.test(str)) {\n\t\tstr = str.replace(/\\s+$/, '');\n\t}\n\n\tstr = str\n\t\t.replace(/^\\n\\r?\\s+/, '') // remove leading newline + space\n\t\t.replace(/\\s*\\n\\r?\\s*/gm, ' '); // replace newlines with spaces\n\n\t// TODO prefer single quotes?\n\treturn JSON.stringify(str);\n}\n\nexport default class JSXElement extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tconst children = this.children.filter(child => {\n\t\t\tif (child.type !== 'JSXText') return true;\n\n\t\t\t// remove whitespace-only literals, unless on a single line\n\t\t\treturn /\\S/.test(child.raw) || !/\\n/.test(child.raw);\n\t\t});\n\n\t\tif (children.length) {\n\t\t\tlet c = (this.openingElement || this.openingFragment).end;\n\n\t\t\tlet i;\n\t\t\tfor (i = 0; i < children.length; i += 1) {\n\t\t\t\tconst child = children[i];\n\n\t\t\t\tif (\n\t\t\t\t\tchild.type === 'JSXExpressionContainer' &&\n\t\t\t\t\tchild.expression.type === 'JSXEmptyExpression'\n\t\t\t\t) {\n\t\t\t\t\t// empty block is a no op\n\t\t\t\t} else {\n\t\t\t\t\tconst tail =\n\t\t\t\t\t\tcode.original[c] === '\\n' && child.type !== 'JSXText' ? '' : ' ';\n\t\t\t\t\tcode.appendLeft(c, `,${tail}`);\n\t\t\t\t}\n\n\t\t\t\tif (child.type === 'JSXText') {\n\t\t\t\t\tconst str = normalise(child.value, i === children.length - 1);\n\t\t\t\t\tcode.overwrite(child.start, child.end, str);\n\t\t\t\t}\n\n\t\t\t\tc = child.end;\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXExpressionContainer extends Node {\n\ttranspile(code, transforms) {\n\t\tcode.remove(this.start, this.expression.start);\n\t\tcode.remove(this.expression.end, this.end);\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import JSXElement from './JSXElement.js';\n\nexport default class JSXFragment extends JSXElement {\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class JSXOpeningElement extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tcode.overwrite(this.start, this.name.start, `${this.program.jsx}( `);\n\n\t\tconst html =\n\t\t\tthis.name.type === 'JSXIdentifier' &&\n\t\t\tthis.name.name[0] === this.name.name[0].toLowerCase();\n\t\tif (html) code.prependRight(this.name.start, `'`);\n\n\t\tconst len = this.attributes.length;\n\t\tlet c = this.name.end;\n\n\t\tif (len) {\n\t\t\tlet i;\n\n\t\t\tlet hasSpread = false;\n\t\t\tfor (i = 0; i < len; i += 1) {\n\t\t\t\tif (this.attributes[i].type === 'JSXSpreadAttribute') {\n\t\t\t\t\thasSpread = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc = this.attributes[0].end;\n\n\t\t\tfor (i = 0; i < len; i += 1) {\n\t\t\t\tconst attr = this.attributes[i];\n\n\t\t\t\tif (i > 0) {\n\t\t\t\t\tif (attr.start === c) code.prependRight(c, ', ');\n\t\t\t\t\telse code.overwrite(c, attr.start, ', ');\n\t\t\t\t}\n\n\t\t\t\tif (hasSpread && attr.type !== 'JSXSpreadAttribute') {\n\t\t\t\t\tconst lastAttr = this.attributes[i - 1];\n\t\t\t\t\tconst nextAttr = this.attributes[i + 1];\n\n\t\t\t\t\tif (!lastAttr || lastAttr.type === 'JSXSpreadAttribute') {\n\t\t\t\t\t\tcode.prependRight(attr.start, '{ ');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!nextAttr || nextAttr.type === 'JSXSpreadAttribute') {\n\t\t\t\t\t\tcode.appendLeft(attr.end, ' }');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tc = attr.end;\n\t\t\t}\n\n\t\t\tlet after;\n\t\t\tlet before;\n\t\t\tif (hasSpread) {\n\t\t\t\tif (len === 1) {\n\t\t\t\t\tbefore = html ? `',` : ',';\n\t\t\t\t} else {\n\t\t\t\t\tif (!this.program.options.objectAssign) {\n\t\t\t\t\t\tthrow new CompileError(\n\t\t\t\t\t\t\t\"Mixed JSX attributes ending in spread requires specified objectAssign option with 'Object.assign' or polyfill helper.\",\n\t\t\t\t\t\t\tthis\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t\tbefore = html\n\t\t\t\t\t\t? `', ${this.program.options.objectAssign}({},`\n\t\t\t\t\t\t: `, ${this.program.options.objectAssign}({},`;\n\t\t\t\t\tafter = ')';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tbefore = html ? `', {` : ', {';\n\t\t\t\tafter = ' }';\n\t\t\t}\n\n\t\t\tcode.prependRight(this.name.end, before);\n\n\t\t\tif (after) {\n\t\t\t\tcode.appendLeft(this.attributes[len - 1].end, after);\n\t\t\t}\n\t\t} else {\n\t\t\tcode.appendLeft(this.name.end, html ? `', null` : `, null`);\n\t\t\tc = this.name.end;\n\t\t}\n\n\t\tif (this.selfClosing) {\n\t\t\tcode.overwrite(c, this.end, this.attributes.length ? `)` : ` )`);\n\t\t} else {\n\t\t\tcode.remove(c, this.end);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXOpeningFragment extends Node {\n\ttranspile(code) {\n\t\tcode.overwrite(this.start, this.end, `${this.program.jsx}( ${this.program.jsxFragment}, null`);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class JSXSpreadAttribute extends Node {\n\ttranspile(code, transforms) {\n\t\tcode.remove(this.start, this.argument.start);\n\t\tcode.remove(this.argument.end, this.end);\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport rewritePattern from 'regexpu-core';\n\nconst nonAsciiLsOrPs = /[\\u2028-\\u2029]/g;\n\nexport default class Literal extends Node {\n\tinitialise() {\n\t\tif (typeof this.value === 'string') {\n\t\t\tthis.program.indentExclusionElements.push(this);\n\t\t}\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.numericLiteral) {\n\t\t\tif (this.raw.match(/^0[bo]/i)) {\n\t\t\t\tcode.overwrite(this.start, this.end, String(this.value), {\n\t\t\t\t\tstoreName: true,\n\t\t\t\t\tcontentOnly: true\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tif (this.regex) {\n\t\t\tconst { pattern, flags } = this.regex;\n\n\t\t\tif (transforms.stickyRegExp && /y/.test(flags))\n\t\t\t\tCompileError.missingTransform('the regular expression sticky flag', 'stickyRegExp', this);\n\t\t\tif (transforms.unicodeRegExp && /u/.test(flags)) {\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.start,\n\t\t\t\t\tthis.end,\n\t\t\t\t\t`/${rewritePattern(pattern, flags)}/${flags.replace('u', '')}`,\n\t\t\t\t\t{\n\t\t\t\t\t\tcontentOnly: true\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (typeof this.value === \"string\" && this.value.match(nonAsciiLsOrPs)) {\n\t\t\tcode.overwrite(\n\t\t\t\tthis.start,\n\t\t\t\tthis.end,\n\t\t\t\tthis.raw.replace(nonAsciiLsOrPs, m => m == '\\u2028' ? '\\\\u2028' : '\\\\u2029'),\n\t\t\t\t{\n\t\t\t\t\tcontentOnly: true\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class MemberExpression extends Node {\n\ttranspile(code, transforms) {\n\t\tif (transforms.reservedProperties && reserved[this.property.name]) {\n\t\t\tcode.overwrite(this.object.end, this.property.start, `['`);\n\t\t\tcode.appendLeft(this.property.end, `']`);\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport spread, { isArguments, inlineSpreads } from '../../utils/spread.js';\nimport removeTrailingComma from '../../utils/removeTrailingComma.js';\n\nexport default class NewExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.spreadRest && this.arguments.length) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\t\tlet i = this.arguments.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst arg = this.arguments[i];\n\t\t\t\tif (arg.type === 'SpreadElement' && isArguments(arg.argument)) {\n\t\t\t\t\tthis.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (transforms.spreadRest && this.arguments.length) {\n\t\t\tinlineSpreads(code, this, this.arguments);\n\t\t\t// this.arguments.length may have changed, must retest.\n\t\t}\n\n\t\tif (transforms.spreadRest && this.arguments.length) {\n\t\t\tconst firstArgument = this.arguments[0];\n\t\t\tconst isNew = true;\n\t\t\tconst hasSpreadElements = spread(\n\t\t\t\tcode,\n\t\t\t\tthis.arguments,\n\t\t\t\tfirstArgument.start,\n\t\t\t\tthis.argumentsArrayAlias,\n\t\t\t\tisNew\n\t\t\t);\n\n\t\t\tif (hasSpreadElements) {\n\t\t\t\tcode.prependRight(\n\t\t\t\t\tthis.start + 'new'.length,\n\t\t\t\t\t' (Function.prototype.bind.apply('\n\t\t\t\t);\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.callee.end,\n\t\t\t\t\tfirstArgument.start,\n\t\t\t\t\t', [ null ].concat( '\n\t\t\t\t);\n\t\t\t\tcode.appendLeft(this.end, ' ))');\n\t\t\t}\n\t\t}\n\n\t\tif (this.arguments.length) {\n\t\t\tremoveTrailingComma(code, this.arguments[this.arguments.length - 1].end);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class ObjectExpression extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tlet firstPropertyStart = this.start + 1;\n\t\tlet spreadPropertyCount = 0;\n\t\tlet computedPropertyCount = 0;\n\t\tlet firstSpreadProperty = null;\n\t\tlet firstComputedProperty = null;\n\n\t\tfor (let i = 0; i < this.properties.length; ++i) {\n\t\t\tconst prop = this.properties[i];\n\t\t\tif (prop.type === 'SpreadElement') {\n\t\t\t\t// First see if we can inline the spread, to save needing objectAssign.\n\t\t\t\tconst argument = prop.argument;\n\t\t\t\tif (\n\t\t\t\t\targument.type === 'ObjectExpression' || (\n\t\t\t\t\t\targument.type === 'Literal' &&\n\t\t\t\t\t\ttypeof argument.value !== 'string'\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\tif (argument.type === 'ObjectExpression' && argument.properties.length > 0) {\n\t\t\t\t\t\t// Strip the `...{` and the `}` with a possible trailing comma before it,\n\t\t\t\t\t\t// leaving just the possible trailing comma after it.\n\t\t\t\t\t\tcode.remove(prop.start, argument.properties[0].start);\n\t\t\t\t\t\tcode.remove(argument.properties[argument.properties.length - 1].end, prop.end);\n\t\t\t\t\t\tthis.properties.splice(i, 1, ...argument.properties);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// An empty object, boolean, null, undefined, number or regexp (but NOT\n\t\t\t\t\t\t// string) will spread to nothing, so just remove the element altogether,\n\t\t\t\t\t\t// including a possible trailing comma.\n\t\t\t\t\t\tcode.remove(prop.start, i === this.properties.length - 1\n\t\t\t\t\t\t\t? prop.end\n\t\t\t\t\t\t\t: this.properties[i + 1].start);\n\t\t\t\t\t\tthis.properties.splice(i, 1);\n\t\t\t\t\t\ti--;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tspreadPropertyCount += 1;\n\t\t\t\t\tif (firstSpreadProperty === null) firstSpreadProperty = i;\n\t\t\t\t}\n\t\t\t} else if (prop.computed && transforms.computedProperty) {\n\t\t\t\tcomputedPropertyCount += 1;\n\t\t\t\tif (firstComputedProperty === null) firstComputedProperty = i;\n\t\t\t}\n\t\t}\n\n\t\tif (spreadPropertyCount && !transforms.objectRestSpread && !(computedPropertyCount && transforms.computedProperty)) {\n\t\t\tspreadPropertyCount = 0;\n\t\t\tfirstSpreadProperty = null;\n\t\t} else if (spreadPropertyCount) {\n\t\t\tif (!this.program.options.objectAssign) {\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t\"Object spread operator requires specified objectAssign option with 'Object.assign' or polyfill helper.\",\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\t\t\tlet i = this.properties.length;\n\t\t\twhile (i--) {\n\t\t\t\tconst prop = this.properties[i];\n\n\t\t\t\t// enclose run of non-spread properties in curlies\n\t\t\t\tif (prop.type === 'Property' && !computedPropertyCount) {\n\t\t\t\t\tconst lastProp = this.properties[i - 1];\n\t\t\t\t\tconst nextProp = this.properties[i + 1];\n\n\t\t\t\t\tif (!lastProp || lastProp.type !== 'Property') {\n\t\t\t\t\t\tcode.prependRight(prop.start, '{');\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!nextProp || nextProp.type !== 'Property') {\n\t\t\t\t\t\tcode.appendLeft(prop.end, '}');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Remove ellipsis on spread property\n\t\t\t\tif (prop.type === 'SpreadElement') {\n\t\t\t\t\tcode.remove(prop.start, prop.argument.start);\n\t\t\t\t\tcode.remove(prop.argument.end, prop.end);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// wrap the whole thing in Object.assign\n\t\t\tfirstPropertyStart = this.properties[0].start;\n\t\t\tif (!computedPropertyCount) {\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.start,\n\t\t\t\t\tfirstPropertyStart,\n\t\t\t\t\t`${this.program.options.objectAssign}({}, `\n\t\t\t\t);\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.properties[this.properties.length - 1].end,\n\t\t\t\t\tthis.end,\n\t\t\t\t\t')'\n\t\t\t\t);\n\t\t\t} else if (this.properties[0].type === 'SpreadElement') {\n\t\t\t\tcode.overwrite(\n\t\t\t\t\tthis.start,\n\t\t\t\t\tfirstPropertyStart,\n\t\t\t\t\t`${this.program.options.objectAssign}({}, `\n\t\t\t\t);\n\t\t\t\tcode.remove(this.end - 1, this.end);\n\t\t\t\tcode.appendRight(this.end, ')');\n\t\t\t} else {\n\t\t\t\tcode.prependLeft(this.start, `${this.program.options.objectAssign}(`);\n\t\t\t\tcode.appendRight(this.end, ')');\n\t\t\t}\n\t\t}\n\n\t\tif (computedPropertyCount && transforms.computedProperty) {\n\t\t\tconst i0 = this.getIndentation();\n\n\t\t\tlet isSimpleAssignment;\n\t\t\tlet name;\n\n\t\t\tif (\n\t\t\t\tthis.parent.type === 'VariableDeclarator' &&\n\t\t\t\tthis.parent.parent.declarations.length === 1 &&\n\t\t\t\tthis.parent.id.type === 'Identifier'\n\t\t\t) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.id.alias || this.parent.id.name; // TODO is this right?\n\t\t\t} else if (\n\t\t\t\tthis.parent.type === 'AssignmentExpression' &&\n\t\t\t\tthis.parent.parent.type === 'ExpressionStatement' &&\n\t\t\t\tthis.parent.left.type === 'Identifier'\n\t\t\t) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n\t\t\t} else if (\n\t\t\t\tthis.parent.type === 'AssignmentPattern' &&\n\t\t\t\tthis.parent.left.type === 'Identifier'\n\t\t\t) {\n\t\t\t\tisSimpleAssignment = true;\n\t\t\t\tname = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n\t\t\t}\n\n\t\t\tif (spreadPropertyCount) isSimpleAssignment = false;\n\n\t\t\t// handle block scoping\n\t\t\tname = this.findScope(false).resolveName(name);\n\n\t\t\tconst start = firstPropertyStart;\n\t\t\tconst end = this.end;\n\n\t\t\tif (isSimpleAssignment) {\n\t\t\t\t// ???\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tfirstSpreadProperty === null ||\n\t\t\t\t\tfirstComputedProperty < firstSpreadProperty\n\t\t\t\t) {\n\t\t\t\t\tname = this.findScope(true).createDeclaration('obj');\n\n\t\t\t\t\tcode.prependRight(this.start, `( ${name} = `);\n\t\t\t\t} else name = null; // We don't actually need this variable\n\t\t\t}\n\n\t\t\tconst len = this.properties.length;\n\t\t\tlet lastComputedProp;\n\t\t\tlet sawNonComputedProperty = false;\n\t\t\tlet isFirst = true;\n\n\t\t\tfor (let i = 0; i < len; i += 1) {\n\t\t\t\tconst prop = this.properties[i];\n\t\t\t\tlet moveStart = i > 0 ? this.properties[i - 1].end : start;\n\n\t\t\t\tif (\n\t\t\t\t\tprop.type === 'Property' &&\n\t\t\t\t\t(prop.computed || (lastComputedProp && !spreadPropertyCount))\n\t\t\t\t) {\n\t\t\t\t\tif (i === 0) moveStart = this.start + 1; // Trim leading whitespace\n\t\t\t\t\tlastComputedProp = prop;\n\n\t\t\t\t\tif (!name) {\n\t\t\t\t\t\tname = this.findScope(true).createDeclaration('obj');\n\n\t\t\t\t\t\tconst propId = name + (prop.computed ? '' : '.');\n\t\t\t\t\t\tcode.appendRight(prop.start, `( ${name} = {}, ${propId}`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst propId =\n\t\t\t\t\t\t\t(isSimpleAssignment ? `;\\n${i0}${name}` : `, ${name}`) +\n\t\t\t\t\t\t\t(prop.key.type === 'Literal' || prop.computed ? '' : '.');\n\n\t\t\t\t\t\tif (moveStart < prop.start) {\n\t\t\t\t\t\t\tcode.overwrite(moveStart, prop.start, propId);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcode.prependRight(prop.start, propId);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tlet c = prop.key.end;\n\t\t\t\t\tif (prop.computed) {\n\t\t\t\t\t\twhile (code.original[c] !== ']') c += 1;\n\t\t\t\t\t\tc += 1;\n\t\t\t\t\t}\n\t\t\t\t\tif (prop.key.type === 'Literal' && !prop.computed) {\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tprop.start,\n\t\t\t\t\t\t\tprop.value.start,\n\t\t\t\t\t\t\t'[' + code.slice(prop.start, prop.key.end) + '] = '\n\t\t\t\t\t\t);\n\t\t\t\t\t} else if (prop.shorthand || (prop.method && !prop.computed && transforms.conciseMethodProperty)) {\n\t\t\t\t\t\t// Replace : with = if Property::transpile inserted the :\n\t\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\t\tprop.key.start,\n\t\t\t\t\t\t\tprop.key.end,\n\t\t\t\t\t\t\tcode.slice(prop.key.start, prop.key.end).replace(/:/, ' =')\n\t\t\t\t\t\t);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tif (prop.value.start > c) code.remove(c, prop.value.start);\n\t\t\t\t\t\tcode.prependLeft(c, ' = ');\n\t\t\t\t\t}\n\n\t\t\t\t\t// This duplicates behavior from Property::transpile which is disabled\n\t\t\t\t\t// for computed properties or if conciseMethodProperty is false\n\t\t\t\t\tif (prop.method && (prop.computed || !transforms.conciseMethodProperty)) {\n\t\t\t\t\t\tif (prop.value.generator) code.remove(prop.start, prop.key.start);\n\t\t\t\t\t\tcode.prependRight(prop.value.start, `function${prop.value.generator ? '*' : ''} `);\n\t\t\t\t\t}\n\t\t\t\t} else if (prop.type === 'SpreadElement') {\n\t\t\t\t\tif (name && i > 0) {\n\t\t\t\t\t\tif (!lastComputedProp) {\n\t\t\t\t\t\t\tlastComputedProp = this.properties[i - 1];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tcode.appendLeft(lastComputedProp.end, `, ${name} )`);\n\n\t\t\t\t\t\tlastComputedProp = null;\n\t\t\t\t\t\tname = null;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tif (!isFirst && spreadPropertyCount) {\n\t\t\t\t\t\t// We are in an Object.assign context, so we need to wrap regular properties\n\t\t\t\t\t\tcode.prependRight(prop.start, '{');\n\t\t\t\t\t\tcode.appendLeft(prop.end, '}');\n\t\t\t\t\t}\n\t\t\t\t\tsawNonComputedProperty = true;\n\t\t\t\t}\n\t\t\t\tif (isFirst && (prop.type === 'SpreadElement' || prop.computed)) {\n\t\t\t\t\tlet beginEnd = sawNonComputedProperty\n\t\t\t\t\t\t? this.properties[this.properties.length - 1].end\n\t\t\t\t\t\t: this.end - 1;\n\t\t\t\t\t// Trim trailing comma because it can easily become a leading comma which is illegal\n\t\t\t\t\tif (code.original[beginEnd] == ',') ++beginEnd;\n\t\t\t\t\tconst closing = code.slice(beginEnd, end);\n\t\t\t\t\tcode.prependLeft(moveStart, closing);\n\t\t\t\t\tcode.remove(beginEnd, end);\n\t\t\t\t\tisFirst = false;\n\t\t\t\t}\n\n\t\t\t\t// Clean up some extranous whitespace\n\t\t\t\tlet c = prop.end;\n\t\t\t\tif (i < len - 1 && !sawNonComputedProperty) {\n\t\t\t\t\twhile (code.original[c] !== ',') c += 1;\n\t\t\t\t} else if (i == len - 1) c = this.end;\n\t\t\t\tif (prop.end != c) code.overwrite(prop.end, c, '', {contentOnly: true});\n\t\t\t}\n\n\t\t\tif (!isSimpleAssignment && name) {\n\t\t\t\tcode.appendLeft(lastComputedProp.end, `, ${name} )`);\n\t\t\t}\n\t\t}\n\t}\n}\n","import CompileError from '../../utils/CompileError.js';\nimport Node from '../Node.js';\nimport reserved from '../../utils/reserved.js';\n\nexport default class Property extends Node {\n\tinitialise(transforms) {\n\t\tif ((this.kind === 'get' || this.kind === 'set') && transforms.getterSetter) {\n\t\t\tCompileError.missingTransform(\"getters and setters\", \"getterSetter\", this);\n\t\t}\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (\n\t\t\ttransforms.conciseMethodProperty &&\n\t\t\t!this.computed &&\n\t\t\tthis.parent.type !== 'ObjectPattern'\n\t\t) {\n\t\t\tif (this.shorthand) {\n\t\t\t\tcode.prependRight(this.start, `${this.key.name}: `);\n\t\t\t} else if (this.method) {\n\t\t\t\tlet name = '';\n\t\t\t\tif (this.program.options.namedFunctionExpressions !== false) {\n\t\t\t\t\tif (\n\t\t\t\t\t\tthis.key.type === 'Literal' &&\n\t\t\t\t\t\ttypeof this.key.value === 'number'\n\t\t\t\t\t) {\n\t\t\t\t\t\tname = '';\n\t\t\t\t\t} else if (this.key.type === 'Identifier') {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\treserved[this.key.name] ||\n\t\t\t\t\t\t\t!/^[a-z_$][a-z0-9_$]*$/i.test(this.key.name) ||\n\t\t\t\t\t\t\tthis.value.body.scope.references[this.key.name]\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tname = this.findScope(true).createIdentifier(this.key.name);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tname = this.key.name;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\tname = this.findScope(true).createIdentifier(this.key.value);\n\t\t\t\t\t}\n\t\t\t\t\tname = ' ' + name;\n\t\t\t\t}\n\n\t\t\t\tif (this.start < this.key.start) code.remove(this.start, this.key.start);\n\t\t\t\tcode.appendLeft(\n\t\t\t\t\tthis.key.end,\n\t\t\t\t\t`: ${this.value.async ? 'async ' : ''}function${this.value.generator ? '*' : ''}${name}`\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (transforms.reservedProperties && reserved[this.key.name]) {\n\t\t\tcode.prependRight(this.key.start, `'`);\n\t\t\tcode.appendLeft(this.key.end, `'`);\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ReturnStatement extends Node {\n\tinitialise(transforms) {\n\t\tthis.loop = this.findNearest(loopStatement);\n\t\tthis.nearestFunction = this.findNearest(/Function/);\n\n\t\tif (\n\t\t\tthis.loop &&\n\t\t\t(!this.nearestFunction || this.loop.depth > this.nearestFunction.depth)\n\t\t) {\n\t\t\tthis.loop.canReturn = true;\n\t\t\tthis.shouldWrap = true;\n\t\t}\n\n\t\tif (this.argument) this.argument.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst shouldWrap =\n\t\t\tthis.shouldWrap && this.loop && this.loop.shouldRewriteAsFunction;\n\n\t\tif (this.argument) {\n\t\t\tif (shouldWrap) code.prependRight(this.argument.start, `{ v: `);\n\t\t\tthis.argument.transpile(code, transforms);\n\t\t\tif (shouldWrap) code.appendLeft(this.argument.end, ` }`);\n\t\t} else if (shouldWrap) {\n\t\t\tcode.appendLeft(this.start + 6, ' {}');\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class Super extends Node {\n\tinitialise(transforms) {\n\t\tif (transforms.classes) {\n\t\t\tthis.method = this.findNearest('MethodDefinition');\n\t\t\tif (!this.method)\n\t\t\t\tthrow new CompileError('use of super outside class method', this);\n\n\t\t\tconst parentClass = this.findNearest('ClassBody').parent;\n\t\t\tthis.superClassName =\n\t\t\t\tparentClass.superClass && (parentClass.superClass.name || 'superclass');\n\n\t\t\tif (!this.superClassName)\n\t\t\t\tthrow new CompileError('super used in base class', this);\n\n\t\t\tthis.isCalled =\n\t\t\t\tthis.parent.type === 'CallExpression' && this === this.parent.callee;\n\n\t\t\tif (this.method.kind !== 'constructor' && this.isCalled) {\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'super() not allowed outside class constructor',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.isMember = this.parent.type === 'MemberExpression';\n\n\t\t\tif (!this.isCalled && !this.isMember) {\n\t\t\t\tthrow new CompileError(\n\t\t\t\t\t'Unexpected use of `super` (expected `super(...)` or `super.*`)',\n\t\t\t\t\tthis\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (transforms.arrow) {\n\t\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\t\t\tconst arrowFunction = this.findNearest('ArrowFunctionExpression');\n\t\t\tconst loop = this.findNearest(loopStatement);\n\n\t\t\tif (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n\t\t\t\tthis.thisAlias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tloop &&\n\t\t\t\tloop.body.contains(this) &&\n\t\t\t\tloop.depth > lexicalBoundary.depth\n\t\t\t) {\n\t\t\t\tthis.thisAlias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.classes) {\n\t\t\tconst expression =\n\t\t\t\tthis.isCalled || this.method.static\n\t\t\t\t\t? this.superClassName\n\t\t\t\t\t: `${this.superClassName}.prototype`;\n\n\t\t\tcode.overwrite(this.start, this.end, expression, {\n\t\t\t\tstoreName: true,\n\t\t\t\tcontentOnly: true\n\t\t\t});\n\n\t\t\tconst callExpression = this.isCalled ? this.parent : this.parent.parent;\n\n\t\t\tif (callExpression && callExpression.type === 'CallExpression') {\n\t\t\t\tif (!this.noCall) {\n\t\t\t\t\t// special case – `super( ...args )`\n\t\t\t\t\tcode.appendLeft(callExpression.callee.end, '.call');\n\t\t\t\t}\n\n\t\t\t\tconst thisAlias = this.thisAlias || 'this';\n\n\t\t\t\tif (callExpression.arguments.length) {\n\t\t\t\t\tcode.appendLeft(callExpression.arguments[0].start, `${thisAlias}, `);\n\t\t\t\t} else {\n\t\t\t\t\tcode.appendLeft(callExpression.end - 1, `${thisAlias}`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport CompileError from '../../utils/CompileError.js';\n\nexport default class TaggedTemplateExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (\n\t\t\ttransforms.templateString &&\n\t\t\t!transforms.dangerousTaggedTemplateString\n\t\t) {\n\t\t\tCompileError.missingTransform(\n\t\t\t\t\"tagged template strings\", \"templateString\", this, \"dangerousTaggedTemplateString\"\n\t\t\t);\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (transforms.templateString && transforms.dangerousTaggedTemplateString) {\n\t\t\tconst ordered = this.quasi.expressions\n\t\t\t\t.concat(this.quasi.quasis)\n\t\t\t\t.sort((a, b) => a.start - b.start);\n\n\t\t\tconst program = this.program;\n\t\t\tconst rootScope = program.body.scope;\n\n\t\t\t// insert strings at start\n\t\t\tconst templateStrings = this.quasi.quasis.map(quasi =>\n\t\t\t\tJSON.stringify(quasi.value.cooked)\n\t\t\t).join(', ');\n\n\t\t\tlet templateObject = this.program.templateLiteralQuasis[templateStrings];\n\t\t\tif (!templateObject) {\n\t\t\t\ttemplateObject = rootScope.createIdentifier('templateObject');\n\t\t\t\tcode.prependLeft(this.program.prependAt, `var ${templateObject} = Object.freeze([${templateStrings}]);\\n`);\n\n\t\t\t\tthis.program.templateLiteralQuasis[templateStrings] = templateObject;\n\t\t\t}\n\n\t\t\tcode.overwrite(\n\t\t\t\tthis.tag.end,\n\t\t\t\tordered[0].start,\n\t\t\t\t`(${templateObject}`\n\t\t\t);\n\n\t\t\tlet lastIndex = ordered[0].start;\n\t\t\tordered.forEach(node => {\n\t\t\t\tif (node.type === 'TemplateElement') {\n\t\t\t\t\tcode.remove(lastIndex, node.end);\n\t\t\t\t} else {\n\t\t\t\t\tcode.overwrite(lastIndex, node.start, ', ');\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tcode.overwrite(lastIndex, this.end, ')');\n\t\t}\n\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class TemplateElement extends Node {\n\tinitialise() {\n\t\tthis.program.indentExclusionElements.push(this);\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class TemplateLiteral extends Node {\n\ttranspile(code, transforms) {\n\t\tsuper.transpile(code, transforms);\n\n\t\tif (\n\t\t\ttransforms.templateString &&\n\t\t\tthis.parent.type !== 'TaggedTemplateExpression'\n\t\t) {\n\t\t\tconst ordered = this.expressions\n\t\t\t\t.concat(this.quasis)\n\t\t\t\t.sort((a, b) => a.start - b.start || a.end - b.end)\n\t\t\t\t.filter((node, i) => {\n\t\t\t\t\t// include all expressions\n\t\t\t\t\tif (node.type !== 'TemplateElement') return true;\n\n\t\t\t\t\t// include all non-empty strings\n\t\t\t\t\tif (node.value.raw) return true;\n\n\t\t\t\t\t// exclude all empty strings not at the head\n\t\t\t\t\treturn !i;\n\t\t\t\t});\n\n\t\t\t// special case – we may be able to skip the first element,\n\t\t\t// if it's the empty string, but only if the second and\n\t\t\t// third elements aren't both expressions (since they maybe\n\t\t\t// be numeric, and `1 + 2 + '3' === '33'`)\n\t\t\tif (ordered.length >= 3) {\n\t\t\t\tconst [first, , third] = ordered;\n\t\t\t\tif (\n\t\t\t\t\tfirst.type === 'TemplateElement' &&\n\t\t\t\t\tfirst.value.raw === '' &&\n\t\t\t\t\tthird.type === 'TemplateElement'\n\t\t\t\t) {\n\t\t\t\t\tordered.shift();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst parenthesise =\n\t\t\t\t(this.quasis.length !== 1 || this.expressions.length !== 0) &&\n\t\t\t\tthis.parent.type !== 'TemplateLiteral' &&\n\t\t\t\tthis.parent.type !== 'AssignmentExpression' &&\n\t\t\t\tthis.parent.type !== 'AssignmentPattern' &&\n\t\t\t\tthis.parent.type !== 'VariableDeclarator' &&\n\t\t\t\t(this.parent.type !== 'BinaryExpression' ||\n\t\t\t\t\tthis.parent.operator !== '+');\n\n\t\t\tif (parenthesise) code.appendRight(this.start, '(');\n\n\t\t\tlet lastIndex = this.start;\n\n\t\t\tordered.forEach((node, i) => {\n\t\t\t\tlet prefix = i === 0 ? (parenthesise ? '(' : '') : ' + ';\n\n\t\t\t\tif (node.type === 'TemplateElement') {\n\t\t\t\t\tcode.overwrite(\n\t\t\t\t\t\tlastIndex,\n\t\t\t\t\t\tnode.end,\n\t\t\t\t\t\tprefix + JSON.stringify(node.value.cooked)\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tconst parenthesise = node.type !== 'Identifier'; // TODO other cases where it's safe\n\n\t\t\t\t\tif (parenthesise) prefix += '(';\n\n\t\t\t\t\tcode.remove(lastIndex, node.start);\n\n\t\t\t\t\tif (prefix) code.prependRight(node.start, prefix);\n\t\t\t\t\tif (parenthesise) code.appendLeft(node.end, ')');\n\t\t\t\t}\n\n\t\t\t\tlastIndex = node.end;\n\t\t\t});\n\n\t\t\tif (parenthesise) code.appendLeft(lastIndex, ')');\n\t\t\tcode.overwrite(lastIndex, this.end, \"\", { contentOnly: true });\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class ThisExpression extends Node {\n\tinitialise(transforms) {\n\t\tconst lexicalBoundary = this.findLexicalBoundary();\n\n\t\tif (transforms.letConst) {\n\t\t\t// save all loops up to the lexical boundary in case we need\n\t\t\t// to alias them later for block-scoped declarations\n\t\t\tlet node = this.findNearest(loopStatement);\n\t\t\twhile (node && node.depth > lexicalBoundary.depth) {\n\t\t\t\tnode.thisRefs.push(this);\n\t\t\t\tnode = node.parent.findNearest(loopStatement);\n\t\t\t}\n\t\t}\n\n\t\tif (transforms.arrow) {\n\t\t\tconst arrowFunction = this.findNearest('ArrowFunctionExpression');\n\n\t\t\tif (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n\t\t\t\tthis.alias = lexicalBoundary.getThisAlias();\n\t\t\t}\n\t\t}\n\t}\n\n\ttranspile(code) {\n\t\tif (this.alias) {\n\t\t\tcode.overwrite(this.start, this.end, this.alias, {\n\t\t\t\tstoreName: true,\n\t\t\t\tcontentOnly: true\n\t\t\t});\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\nimport checkConst from '../../utils/checkConst.js';\n\nexport default class UpdateExpression extends Node {\n\tinitialise(transforms) {\n\t\tif (this.argument.type === 'Identifier') {\n\t\t\tconst declaration = this.findScope(false).findDeclaration(\n\t\t\t\tthis.argument.name\n\t\t\t);\n\t\t\t// special case – https://gitlab.com/Rich-Harris/buble/issues/150\n\t\t\tconst statement = declaration && declaration.node.ancestor(3);\n\t\t\tif (\n\t\t\t\tstatement &&\n\t\t\t\tstatement.type === 'ForStatement' &&\n\t\t\t\tstatement.body.contains(this)\n\t\t\t) {\n\t\t\t\tstatement.reassigned[this.argument.name] = true;\n\t\t\t}\n\t\t}\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (this.argument.type === 'Identifier') {\n\t\t\t// Do this check after everything has been initialized to find\n\t\t\t// shadowing declarations after this expression\n\t\t\tcheckConst(this.argument, this.findScope(false));\n\t\t}\n\t\tsuper.transpile(code, transforms);\n\t}\n}\n","import Node from '../Node.js';\nimport destructure from '../../utils/destructure.js';\nimport { loopStatement } from '../../utils/patterns.js';\n\nexport default class VariableDeclaration extends Node {\n\tinitialise(transforms) {\n\t\tthis.scope = this.findScope(this.kind === 'var');\n\t\tthis.declarations.forEach(declarator => declarator.initialise(transforms));\n\t}\n\n\ttranspile(code, transforms) {\n\t\tconst i0 = this.getIndentation();\n\t\tlet kind = this.kind;\n\n\t\tif (transforms.letConst && kind !== 'var') {\n\t\t\tkind = 'var';\n\t\t\tcode.overwrite(this.start, this.start + this.kind.length, kind, {\n\t\t\t\tcontentOnly: true,\n\t\t\t\tstoreName: true\n\t\t\t});\n\t\t}\n\n\t\tif (transforms.destructuring && this.parent.type !== 'ForOfStatement' && this.parent.type !== 'ForInStatement') {\n\t\t\tlet c = this.start;\n\t\t\tlet lastDeclaratorIsPattern;\n\n\t\t\tthis.declarations.forEach((declarator, i) => {\n\t\t\t\tdeclarator.transpile(code, transforms);\n\n\t\t\t\tif (declarator.id.type === 'Identifier') {\n\t\t\t\t\tif (i > 0 && this.declarations[i - 1].id.type !== 'Identifier') {\n\t\t\t\t\t\tcode.overwrite(c, declarator.id.start, `var `);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tconst inline = loopStatement.test(this.parent.type);\n\n\t\t\t\t\tif (i === 0) {\n\t\t\t\t\t\tcode.remove(c, declarator.id.start);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcode.overwrite(c, declarator.id.start, `;\\n${i0}`);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst simple =\n\t\t\t\t\t\tdeclarator.init.type === 'Identifier' && !declarator.init.rewritten;\n\n\t\t\t\t\tconst name = simple\n\t\t\t\t\t\t? (declarator.init.alias || declarator.init.name)\n\t\t\t\t\t\t: declarator.findScope(true).createIdentifier('ref');\n\n\t\t\t\t\tc = declarator.start;\n\n\t\t\t\t\tconst statementGenerators = [];\n\n\t\t\t\t\tif (simple) {\n\t\t\t\t\t\tcode.remove(declarator.id.end, declarator.end);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tstatementGenerators.push((start, prefix, suffix) => {\n\t\t\t\t\t\t\tcode.prependRight(declarator.id.end, `var ${name}`);\n\t\t\t\t\t\t\tcode.appendLeft(declarator.init.end, `${suffix}`);\n\t\t\t\t\t\t\tcode.move(declarator.id.end, declarator.end, start);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\n\t\t\t\t\tconst scope = declarator.findScope(false);\n\t\t\t\t\tdestructure(\n\t\t\t\t\t\tcode,\n\t\t\t\t\t\tid => scope.createIdentifier(id),\n\t\t\t\t\t\t({ name }) => scope.resolveName(name),\n\t\t\t\t\t\tdeclarator.id,\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tinline,\n\t\t\t\t\t\tstatementGenerators\n\t\t\t\t\t);\n\n\t\t\t\t\tconst prefix = inline ? 'var ' : '';\n\t\t\t\t\tlet suffix = inline ? `, ` : `;\\n${i0}`;\n\t\t\t\t\tstatementGenerators.forEach((fn, j) => {\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\ti === this.declarations.length - 1 &&\n\t\t\t\t\t\t\tj === statementGenerators.length - 1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tsuffix = inline ? '' : ';';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfn(declarator.start, j === 0 ? prefix : '', suffix);\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tc = declarator.end;\n\t\t\t\tlastDeclaratorIsPattern = declarator.id.type !== 'Identifier';\n\t\t\t});\n\n\t\t\tif (lastDeclaratorIsPattern && this.end > c) {\n\t\t\t\tcode.overwrite(c, this.end, '', { contentOnly: true });\n\t\t\t}\n\t\t} else {\n\t\t\tthis.declarations.forEach(declarator => {\n\t\t\t\tdeclarator.transpile(code, transforms);\n\t\t\t});\n\t\t}\n\t}\n}\n","import Node from '../Node.js';\n\nexport default class VariableDeclarator extends Node {\n\tinitialise(transforms) {\n\t\tlet kind = this.parent.kind;\n\t\tif (kind === 'let' && this.parent.parent.type === 'ForStatement') {\n\t\t\tkind = 'for.let'; // special case...\n\t\t}\n\n\t\tthis.parent.scope.addDeclaration(this.id, kind);\n\t\tsuper.initialise(transforms);\n\t}\n\n\ttranspile(code, transforms) {\n\t\tif (!this.init && transforms.letConst && this.parent.kind !== 'var') {\n\t\t\tconst inLoop = this.findNearest(\n\t\t\t\t/Function|^For(In|Of)?Statement|^(?:Do)?WhileStatement/\n\t\t\t);\n\t\t\tif (\n\t\t\t\tinLoop &&\n\t\t\t\t!/Function/.test(inLoop.type) &&\n\t\t\t\t!this.isLeftDeclaratorOfLoop()\n\t\t\t) {\n\t\t\t\tcode.appendLeft(this.id.end, ' = (void 0)');\n\t\t\t}\n\t\t}\n\n\t\tif (this.id) this.id.transpile(code, transforms);\n\t\tif (this.init) this.init.transpile(code, transforms);\n\t}\n\n\tisLeftDeclaratorOfLoop() {\n\t\treturn (\n\t\t\tthis.parent &&\n\t\t\tthis.parent.type === 'VariableDeclaration' &&\n\t\t\tthis.parent.parent &&\n\t\t\t(this.parent.parent.type === 'ForInStatement' ||\n\t\t\t\tthis.parent.parent.type === 'ForOfStatement') &&\n\t\t\tthis.parent.parent.left &&\n\t\t\tthis.parent.parent.left.declarations[0] === this\n\t\t);\n\t}\n}\n","import ArrayExpression from './ArrayExpression.js';\nimport ArrowFunctionExpression from './ArrowFunctionExpression.js';\nimport AssignmentExpression from './AssignmentExpression.js';\nimport AwaitExpression from './AwaitExpression.js';\nimport BinaryExpression from './BinaryExpression.js';\nimport BreakStatement from './BreakStatement.js';\nimport CallExpression from './CallExpression.js';\nimport ClassBody from './ClassBody.js';\nimport ClassDeclaration from './ClassDeclaration.js';\nimport ClassExpression from './ClassExpression.js';\nimport ContinueStatement from './ContinueStatement.js';\nimport ExportDefaultDeclaration from './ExportDefaultDeclaration.js';\nimport ExportNamedDeclaration from './ExportNamedDeclaration.js';\nimport ForStatement from './ForStatement.js';\nimport ForInStatement from './ForInStatement.js';\nimport ForOfStatement from './ForOfStatement.js';\nimport FunctionDeclaration from './FunctionDeclaration.js';\nimport FunctionExpression from './FunctionExpression.js';\nimport Identifier from './Identifier.js';\nimport IfStatement from './IfStatement.js';\nimport Import from './Import.js';\nimport ImportDeclaration from './ImportDeclaration.js';\nimport ImportDefaultSpecifier from './ImportDefaultSpecifier.js';\nimport ImportSpecifier from './ImportSpecifier.js';\nimport JSXAttribute from './JSXAttribute.js';\nimport JSXClosingElement from './JSXClosingElement.js';\nimport JSXClosingFragment from './JSXClosingFragment.js';\nimport JSXElement from './JSXElement.js';\nimport JSXExpressionContainer from './JSXExpressionContainer.js';\nimport JSXFragment from './JSXFragment.js';\nimport JSXOpeningElement from './JSXOpeningElement.js';\nimport JSXOpeningFragment from './JSXOpeningFragment.js';\nimport JSXSpreadAttribute from './JSXSpreadAttribute.js';\nimport Literal from './Literal.js';\nimport LoopStatement from './shared/LoopStatement.js';\nimport MemberExpression from './MemberExpression.js';\nimport NewExpression from './NewExpression.js';\nimport ObjectExpression from './ObjectExpression.js';\nimport Property from './Property.js';\nimport ReturnStatement from './ReturnStatement.js';\nimport Super from './Super.js';\nimport TaggedTemplateExpression from './TaggedTemplateExpression.js';\nimport TemplateElement from './TemplateElement.js';\nimport TemplateLiteral from './TemplateLiteral.js';\nimport ThisExpression from './ThisExpression.js';\nimport UpdateExpression from './UpdateExpression.js';\nimport VariableDeclaration from './VariableDeclaration.js';\nimport VariableDeclarator from './VariableDeclarator.js';\n\nexport default {\n\tArrayExpression,\n\tArrowFunctionExpression,\n\tAssignmentExpression,\n\tAwaitExpression,\n\tBinaryExpression,\n\tBreakStatement,\n\tCallExpression,\n\tClassBody,\n\tClassDeclaration,\n\tClassExpression,\n\tContinueStatement,\n\tDoWhileStatement: LoopStatement,\n\tExportNamedDeclaration,\n\tExportDefaultDeclaration,\n\tForStatement,\n\tForInStatement,\n\tForOfStatement,\n\tFunctionDeclaration,\n\tFunctionExpression,\n\tIdentifier,\n\tIfStatement,\n\tImport,\n\tImportDeclaration,\n\tImportDefaultSpecifier,\n\tImportSpecifier,\n\tJSXAttribute,\n\tJSXClosingElement,\n\tJSXClosingFragment,\n\tJSXElement,\n\tJSXExpressionContainer,\n\tJSXFragment,\n\tJSXOpeningElement,\n\tJSXOpeningFragment,\n\tJSXSpreadAttribute,\n\tLiteral,\n\tMemberExpression,\n\tNewExpression,\n\tObjectExpression,\n\tProperty,\n\tReturnStatement,\n\tSuper,\n\tTaggedTemplateExpression,\n\tTemplateElement,\n\tTemplateLiteral,\n\tThisExpression,\n\tUpdateExpression,\n\tVariableDeclaration,\n\tVariableDeclarator,\n\tWhileStatement: LoopStatement\n};\n","export default {\n\tProgram: ['body'],\n\tLiteral: []\n};\n","import types from './types/index.js';\nimport BlockStatement from './BlockStatement.js';\nimport Node from './Node.js';\nimport keys from './keys.js';\n\nconst statementsWithBlocks = {\n\tIfStatement: 'consequent',\n\tForStatement: 'body',\n\tForInStatement: 'body',\n\tForOfStatement: 'body',\n\tWhileStatement: 'body',\n\tDoWhileStatement: 'body',\n\tArrowFunctionExpression: 'body'\n};\n\nexport default function wrap(raw, parent) {\n\tif (!raw) return;\n\n\tif ('length' in raw) {\n\t\tlet i = raw.length;\n\t\twhile (i--) wrap(raw[i], parent);\n\t\treturn;\n\t}\n\n\t// with e.g. shorthand properties, key and value are\n\t// the same node. We don't want to wrap an object twice\n\tif (raw.__wrapped) return;\n\traw.__wrapped = true;\n\n\tif (!keys[raw.type]) {\n\t\tkeys[raw.type] = Object.keys(raw).filter(\n\t\t\tkey => typeof raw[key] === 'object'\n\t\t);\n\t}\n\n\t// special case – body-less if/for/while statements. TODO others?\n\tconst bodyType = statementsWithBlocks[raw.type];\n\tif (bodyType && raw[bodyType].type !== 'BlockStatement') {\n\t\tconst expression = raw[bodyType];\n\n\t\t// create a synthetic block statement, otherwise all hell\n\t\t// breaks loose when it comes to block scoping\n\t\traw[bodyType] = {\n\t\t\tstart: expression.start,\n\t\t\tend: expression.end,\n\t\t\ttype: 'BlockStatement',\n\t\t\tbody: [expression],\n\t\t\tsynthetic: true\n\t\t};\n\t}\n\n\traw.parent = parent;\n\traw.program = parent.program || parent;\n\traw.depth = parent.depth + 1;\n\traw.keys = keys[raw.type];\n\traw.indentation = undefined;\n\n\tfor (const key of keys[raw.type]) {\n\t\twrap(raw[key], raw);\n\t}\n\n\traw.program.magicString.addSourcemapLocation(raw.start);\n\traw.program.magicString.addSourcemapLocation(raw.end);\n\n\tconst type =\n\t\t(raw.type === 'BlockStatement' ? BlockStatement : types[raw.type]) || Node;\n\traw.__proto__ = type.prototype;\n}\n","import MagicString from 'magic-string';\nimport BlockStatement from './BlockStatement.js';\nimport wrap from './wrap.js';\n\nexport default function Program(source, ast, transforms, options) {\n\tthis.type = 'Root';\n\n\t// options\n\tthis.jsx = options.jsx || 'React.createElement';\n\tthis.jsxFragment = options.jsxFragment || 'React.Fragment';\n\tthis.options = options;\n\n\tthis.source = source;\n\tthis.magicString = new MagicString(source);\n\n\tthis.ast = ast;\n\tthis.depth = 0;\n\n\twrap((this.body = ast), this);\n\tthis.body.__proto__ = BlockStatement.prototype;\n\n\tthis.templateLiteralQuasis = Object.create(null);\n\tfor (let i = 0; i < this.body.body.length; ++i) {\n\t\tif (!this.body.body[i].directive) {\n\t\t\tthis.prependAt = this.body.body[i].start;\n\t\t\tbreak;\n\t\t}\n\t}\n\tthis.objectWithoutPropertiesHelper = null;\n\n\tthis.indentExclusionElements = [];\n\tthis.body.initialise(transforms);\n\n\tthis.indentExclusions = Object.create(null);\n\tfor (const node of this.indentExclusionElements) {\n\t\tfor (let i = node.start; i < node.end; i += 1) {\n\t\t\tthis.indentExclusions[i] = true;\n\t\t}\n\t}\n\n\tthis.body.transpile(this.magicString, transforms);\n}\n\nProgram.prototype = {\n\texport(options = {}) {\n\t\treturn {\n\t\t\tcode: this.magicString.toString(),\n\t\t\tmap: this.magicString.generateMap({\n\t\t\t\tfile: options.file,\n\t\t\t\tsource: options.source,\n\t\t\t\tincludeContent: options.includeContent !== false\n\t\t\t})\n\t\t};\n\t},\n\n\tfindNearest() {\n\t\treturn null;\n\t},\n\n\tfindScope() {\n\t\treturn null;\n\t},\n\n\tgetObjectWithoutPropertiesHelper(code) {\n\t\tif (!this.objectWithoutPropertiesHelper) {\n\t\t\tthis.objectWithoutPropertiesHelper = this.body.scope.createIdentifier('objectWithoutProperties');\n\t\t\tcode.prependLeft(this.prependAt, `function ${this.objectWithoutPropertiesHelper} (obj, exclude) { ` +\n\t\t\t\t`var target = {}; for (var k in obj) ` +\n\t\t\t\t`if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) ` +\n\t\t\t\t`target[k] = obj[k]; return target; }\\n`\n\t\t\t);\n\t\t}\n\t\treturn this.objectWithoutPropertiesHelper;\n\t}\n};\n","export const matrix = {\n\tchrome: {\n\t\t 48: 0b00010010101000110011111,\n\t\t 49: 0b00010011111001111111111,\n\t\t 50: 0b00010111111001111111111,\n\t\t 51: 0b00010111111001111111111,\n\t\t 52: 0b00011111111001111111111,\n\t\t 53: 0b00011111111001111111111,\n\t\t 54: 0b00011111111001111111111,\n\t\t 55: 0b01011111111001111111111,\n\t\t 56: 0b01011111111001111111111,\n\t\t 57: 0b01011111111001111111111,\n\t\t 58: 0b01111111111001111111111,\n\t\t 59: 0b01111111111001111111111,\n\t\t 60: 0b11111111111001111111111,\n\t\t 61: 0b11111111111001111111111,\n\t\t 62: 0b11111111111001111111111,\n\t\t 63: 0b11111111111001111111111,\n\t\t 64: 0b11111111111001111111111,\n\t\t 65: 0b11111111111001111111111,\n\t\t 66: 0b11111111111001111111111,\n\t\t 67: 0b11111111111001111111111,\n\t\t 68: 0b11111111111001111111111,\n\t\t 69: 0b11111111111001111111111,\n\t\t 70: 0b11111111111001111111111,\n\t\t 71: 0b11111111111001111111111\n\t},\n\tfirefox: {\n\t\t 43: 0b00010011101000110111011,\n\t\t 44: 0b00010011101000110111011,\n\t\t 45: 0b00010011101000110111111,\n\t\t 46: 0b00010111101000110111111,\n\t\t 47: 0b00010111101000111111111,\n\t\t 48: 0b00010111101000111111111,\n\t\t 49: 0b00010111101000111111111,\n\t\t 50: 0b00010111101000111111111,\n\t\t 51: 0b00010111101001111111111,\n\t\t 52: 0b01111111111001111111111,\n\t\t 53: 0b01111111111001111111111,\n\t\t 54: 0b01111111111001111111111,\n\t\t 55: 0b11111111111001111111111,\n\t\t 56: 0b11111111111001111111111,\n\t\t 57: 0b11111111111001111111111,\n\t\t 58: 0b11111111111001111111111,\n\t\t 59: 0b11111111111001111111111,\n\t\t 60: 0b11111111111001111111111,\n\t\t 61: 0b11111111111001111111111,\n\t\t 62: 0b11111111111001111111111,\n\t\t 63: 0b11111111111001111111111,\n\t\t 64: 0b11111111111001111111111\n\t},\n\tsafari: {\n\t\t 8: 0b00010000000000000001001,\n\t\t 9: 0b00010010001000011011101,\n\t\t 10: 0b00110111111001111111111,\n\t\t'10.1': 0b01111111111001111111111,\n\t\t 11: 0b01111111111001111111111,\n\t\t'11.1': 0b11111111111001111111111,\n\t\t 12: 0b11111111111001111111111\n\t},\n\tie: {\n\t\t 8: 0b00000000000000000000000,\n\t\t 9: 0b00010000000000000000001,\n\t\t 10: 0b00010000000000000000001,\n\t\t 11: 0b00010000000000000000001 // no let/const in for loops\n\t},\n\tedge: {\n\t\t 12: 0b00010010101000010011011,\n\t\t 13: 0b00010111101000110011111,\n\t\t 14: 0b00111111101001111111111,\n\t\t 15: 0b01111111101001111111111,\n\t\t 16: 0b01111111101001111111111,\n\t\t 17: 0b01111111101001111111111,\n\t\t 18: 0b01111111101001111111111,\n\t\t 19: 0b01111111101001111111111\n\t},\n\tnode: {\n\t\t'0.10': 0b00010000000000000000001,\n\t\t'0.12': 0b00010000000000010000001,\n\t\t 4: 0b00010010001000110011111,\n\t\t 5: 0b00010010001000110011111,\n\t\t 6: 0b00010111111001111111111,\n\t\t 8: 0b01111111111001111111111,\n\t\t '8.3': 0b11111111111001111111111,\n\t\t '8.7': 0b11111111111001111111111,\n\t\t'8.10': 0b11111111111001111111111\n\t}\n};\n\nexport const features = [\n\t'getterSetter',\n\t'arrow',\n\t'classes',\n\t'computedProperty',\n\t'conciseMethodProperty',\n\t'defaultParameter',\n\t'destructuring',\n\t'forOf',\n\t'generator',\n\t'letConst',\n\t'moduleExport',\n\t'moduleImport',\n\t'numericLiteral',\n\t'parameterDestructuring',\n\t'spreadRest',\n\t'stickyRegExp',\n\t'templateString',\n\t'unicodeRegExp',\n\n\t// ES2016\n\t'exponentiation',\n\n\t// additional transforms, not from\n\t// https://featuretests.io\n\t'reservedProperties',\n\n\t'trailingFunctionCommas',\n\t'asyncAwait',\n\t'objectRestSpread'\n];\n","import { Parser } from 'acorn';\nimport acornJsx from 'acorn-jsx';\nimport acornDynamicImport from 'acorn-dynamic-import';\nimport Program from './program/Program.js';\nimport { features, matrix } from './support.js';\nimport getSnippet from './utils/getSnippet.js';\n\nconst parser = Parser.extend(acornDynamicImport, acornJsx());\n\nconst dangerousTransforms = ['dangerousTaggedTemplateString', 'dangerousForOf'];\n\nexport function target(target) {\n\tconst targets = Object.keys(target);\n\tlet bitmask = targets.length\n\t\t? 0b11111111111111111111111\n\t\t: 0b00010000000000000000001;\n\n\tObject.keys(target).forEach(environment => {\n\t\tconst versions = matrix[environment];\n\t\tif (!versions)\n\t\t\tthrow new Error(\n\t\t\t\t`Unknown environment '${environment}'. Please raise an issue at https://github.com/bublejs/buble/issues`\n\t\t\t);\n\n\t\tconst targetVersion = target[environment];\n\t\tif (!(targetVersion in versions))\n\t\t\tthrow new Error(\n\t\t\t\t`Support data exists for the following versions of ${environment}: ${Object.keys(\n\t\t\t\t\tversions\n\t\t\t\t).join(\n\t\t\t\t\t', '\n\t\t\t\t)}. Please raise an issue at https://github.com/bublejs/buble/issues`\n\t\t\t);\n\t\tconst support = versions[targetVersion];\n\n\t\tbitmask &= support;\n\t});\n\n\tconst transforms = Object.create(null);\n\tfeatures.forEach((name, i) => {\n\t\ttransforms[name] = !(bitmask & (1 << i));\n\t});\n\n\tdangerousTransforms.forEach(name => {\n\t\ttransforms[name] = false;\n\t});\n\n\treturn transforms;\n}\n\nexport function transform(source, options = {}) {\n\tlet ast;\n\tlet jsx = null;\n\n\ttry {\n\t\tast = parser.parse(source, {\n\t\t\tecmaVersion: 10,\n\t\t\tpreserveParens: true,\n\t\t\tsourceType: 'module',\n\t\t\tallowAwaitOutsideFunction: true,\n\t\t\tallowReturnOutsideFunction: true,\n\t\t\tallowHashBang: true,\n\t\t\tonComment: (block, text) => {\n\t\t\t\tif (!jsx) {\n\t\t\t\t\tconst match = /@jsx\\s+([^\\s]+)/.exec(text);\n\t\t\t\t\tif (match) jsx = match[1];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\toptions.jsx = jsx || options.jsx;\n\t} catch (err) {\n\t\terr.snippet = getSnippet(source, err.loc);\n\t\terr.toString = () => `${err.name}: ${err.message}\\n${err.snippet}`;\n\t\tthrow err;\n\t}\n\n\tconst transforms = target(options.target || {});\n\tObject.keys(options.transforms || {}).forEach(name => {\n\t\tif (name === 'modules') {\n\t\t\tif (!('moduleImport' in options.transforms))\n\t\t\t\ttransforms.moduleImport = options.transforms.modules;\n\t\t\tif (!('moduleExport' in options.transforms))\n\t\t\t\ttransforms.moduleExport = options.transforms.modules;\n\t\t\treturn;\n\t\t}\n\n\t\tif (!(name in transforms)) throw new Error(`Unknown transform '${name}'`);\n\t\ttransforms[name] = options.transforms[name];\n\t});\n\tif (options.objectAssign === true) options.objectAssign = 'Object.assign';\n\treturn new Program(source, ast, transforms, options).export(options);\n}\n\nexport { version as VERSION } from '../package.json';\n"],"names":["const","let","super","this","ref","start","alias","identifier","element","fn","containsNewLine","i","prop","propId","c","parenthesise","0b00010010101000110011111","0b00010011111001111111111","0b00010111111001111111111","0b00011111111001111111111","0b01011111111001111111111","0b01111111111001111111111","0b11111111111001111111111","0b00010011101000110111011","0b00010011101000110111111","0b00010111101000110111111","0b00010111101000111111111","0b00010111101001111111111","0b00010000000000000001001","0b00010010001000011011101","0b00110111111001111111111","0b00000000000000000000000","0b00010000000000000000001","0b00010010101000010011011","0b00010111101000110011111","0b00111111101001111111111","0b01111111101001111111111","0b00010000000000010000001","0b00010010001000110011111","Parser","0b11111111111111111111111"],"mappings":"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"} |