UNPKG

295 kBSource Map (JSON)View Raw
1{"version":3,"file":"buble.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/CatchClause.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\tconst declarationParent = declaration.node.parent;\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\t\t\t\t\t\tif (declarationParent.type === 'Property' && declarationParent.shorthand) {\n\t\t\t\t\t\t\tdeclarationParent.shorthand = false;\n\t\t\t\t\t\t\tcode.prependLeft(declaration.node.start, `${name}: `);\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\tconst identifierParent = identifier.parent;\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\tif (identifierParent.type === 'Property' && identifierParent.shorthand) {\n\t\t\t\t\t\t\t\tidentifierParent.shorthand = false;\n\t\t\t\t\t\t\t\tcode.prependLeft(identifier.start, `${name}: `);\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 Node from '../Node.js';\nimport Scope from '../Scope.js';\n\nexport default class CatchClause extends Node {\n\tinitialise(transforms) {\n\t\tthis.createdDeclarations = [];\n\t\tthis.scope = new Scope({\n\t\t\tblock: true,\n\t\t\tparent: this.parent.findScope(false),\n\t\t\tdeclare: id => this.createdDeclarations.push(id)\n\t\t});\n\n\t\tthis.scope.addDeclaration(this.param, 'catch');\n\n\t\tsuper.initialise(transforms);\n\t\tthis.scope.consolidate();\n\t}\n\n\tfindScope(functionScope) {\n\t\treturn functionScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.scope;\n\t}\n}\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\tlet superName = this.superClass && (this.superClass.name || 'superclass');\n\t\t\tif (superName === this.name) {\n\t\t\t\tsuperName = this.findScope(true).createIdentifier(this.name);\n\t\t\t}\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\t\tif (this.scope) {\n\t\t\tthis.scope.consolidate();\n\t\t}\n\n\t\tconst declarations = Object.assign({}, this.body.scope.declarations);\n\t\tif (this.scope) {\n\t\t\tObject.assign(declarations, this.scope.declarations);\n\t\t}\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(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 = 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';\nimport Scope from '../Scope.js';\n\nexport default class ForStatement extends LoopStatement {\n\tinitialise(transforms) {\n\t\tthis.createdDeclarations = [];\n\n\t\tthis.scope = new Scope({\n\t\t\tblock: true,\n\t\t\tparent: this.parent.findScope(false),\n\t\t\tdeclare: id => this.createdDeclarations.push(id)\n\t\t});\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\tfindScope(functionScope) {\n\t\treturn functionScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.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 && 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';\nimport Scope from '../Scope.js';\n\nexport default class ForInStatement extends LoopStatement {\n\tinitialise(transforms) {\n\t\tthis.createdDeclarations = [];\n\n\t\tthis.scope = new Scope({\n\t\t\tblock: true,\n\t\t\tparent: this.parent.findScope(false),\n\t\t\tdeclare: id => this.createdDeclarations.push(id)\n\t\t});\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\tfindScope(functionScope) {\n\t\treturn functionScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.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' && maybePattern.type !== 'MemberExpression') {\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';\nimport Scope from '../Scope.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\n\t\tthis.createdDeclarations = [];\n\n\t\tthis.scope = new Scope({\n\t\t\tblock: true,\n\t\t\tparent: this.parent.findScope(false),\n\t\t\tdeclare: id => this.createdDeclarations.push(id)\n\t\t});\n\n\t\tsuper.initialise(transforms);\n\t}\n\n\tfindScope(functionScope) {\n\t\treturn functionScope\n\t\t\t? this.parent.findScope(functionScope)\n\t\t\t: this.scope;\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 (this.isLabel()) {\n\t\t\treturn;\n\t\t}\n\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\tisLabel() {\n\t\tswitch (this.parent.type) {\n\t\t\tcase 'BreakStatement': return true;\n\t\t\tcase 'ContinueStatement': return true;\n\t\t\tcase 'LabeledStatement': return true;\n\t\t\tdefault: return false;\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\tif (removeTrailingWhitespace && /\\n/.test(str)) {\n\t\tstr = str.replace(/[ \\f\\n\\r\\t\\v]+$/, '');\n\t}\n\n\tstr = str\n\t\t.replace(/^\\n\\r?[ \\f\\n\\r\\t\\v]+/, '') // remove leading newline + space\n\t\t.replace(/[ \\f\\n\\r\\t\\v]*\\n\\r?[ \\f\\n\\r\\t\\v]*/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 /[^ \\f\\n\\r\\t\\v]/.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 CatchClause from './CatchClause.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\tCatchClause,\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","ref","start","alias","identifier","element","fn","containsNewLine","i","prop","propId","c","parenthesise","Parser"],"mappings":"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"}
\No newline at end of file