{"version":3,"sources":["jsdelivr-header.js","/npm/buble@0.20.0/src/program/Node.js","/npm/buble@0.20.0/src/program/extractNames.js","/npm/buble@0.20.0/src/utils/reserved.js","/npm/buble@0.20.0/src/program/Scope.js","/npm/buble@0.20.0/src/utils/locate.js","/npm/buble@0.20.0/src/utils/getSnippet.js","/npm/buble@0.20.0/src/utils/CompileError.js","/npm/buble@0.20.0/src/utils/array.js","/npm/buble@0.20.0/src/utils/destructure.js","/npm/buble@0.20.0/src/program/BlockStatement.js","/npm/buble@0.20.0/src/utils/spread.js","/npm/buble@0.20.0/src/program/types/ArrayExpression.js","/npm/buble@0.20.0/src/utils/removeTrailingComma.js","/npm/buble@0.20.0/src/program/types/ArrowFunctionExpression.js","/npm/buble@0.20.0/src/utils/checkConst.js","/npm/buble@0.20.0/src/program/types/AssignmentExpression.js","/npm/buble@0.20.0/src/program/types/AwaitExpression.js","/npm/buble@0.20.0/src/program/types/BinaryExpression.js","/npm/buble@0.20.0/src/utils/patterns.js","/npm/buble@0.20.0/src/program/types/BreakStatement.js","/npm/buble@0.20.0/src/program/types/CallExpression.js","/npm/buble@0.20.0/src/program/types/CatchClause.js","/npm/buble@0.20.0/src/program/types/ClassBody.js","/npm/buble@0.20.0/src/utils/deindent.js","/npm/buble@0.20.0/src/program/types/ClassDeclaration.js","/npm/buble@0.20.0/src/program/types/ClassExpression.js","/npm/buble@0.20.0/src/program/types/ContinueStatement.js","/npm/buble@0.20.0/src/program/types/ExportDefaultDeclaration.js","/npm/buble@0.20.0/src/program/types/ExportNamedDeclaration.js","/npm/buble@0.20.0/src/program/types/shared/LoopStatement.js","/npm/buble@0.20.0/src/program/types/ForStatement.js","/npm/buble@0.20.0/src/program/types/ForInStatement.js","/npm/buble@0.20.0/src/program/types/ForOfStatement.js","/npm/buble@0.20.0/src/program/types/FunctionDeclaration.js","/npm/buble@0.20.0/src/program/types/FunctionExpression.js","/npm/buble@0.20.0/src/utils/isReference.js","/npm/buble@0.20.0/src/program/types/Identifier.js","/npm/buble@0.20.0/src/program/types/IfStatement.js","/npm/buble@0.20.0/src/program/types/Import.js","/npm/buble@0.20.0/src/program/types/ImportDeclaration.js","/npm/buble@0.20.0/src/program/types/ImportDefaultSpecifier.js","/npm/buble@0.20.0/src/program/types/ImportSpecifier.js","/npm/buble@0.20.0/src/program/types/JSXAttribute.js","/npm/buble@0.20.0/src/program/types/JSXClosingElement.js","/npm/buble@0.20.0/src/program/types/JSXClosingFragment.js","/npm/buble@0.20.0/src/program/types/JSXElement.js","/npm/buble@0.20.0/src/program/types/JSXExpressionContainer.js","/npm/buble@0.20.0/src/program/types/JSXFragment.js","/npm/buble@0.20.0/src/program/types/JSXOpeningElement.js","/npm/buble@0.20.0/src/program/types/JSXOpeningFragment.js","/npm/buble@0.20.0/src/program/types/JSXSpreadAttribute.js","/npm/buble@0.20.0/src/program/types/Literal.js","/npm/buble@0.20.0/src/program/types/MemberExpression.js","/npm/buble@0.20.0/src/program/types/NewExpression.js","/npm/buble@0.20.0/src/program/types/ObjectExpression.js","/npm/buble@0.20.0/src/program/types/Property.js","/npm/buble@0.20.0/src/program/types/ReturnStatement.js","/npm/buble@0.20.0/src/program/types/Super.js","/npm/buble@0.20.0/src/program/types/TaggedTemplateExpression.js","/npm/buble@0.20.0/src/program/types/TemplateElement.js","/npm/buble@0.20.0/src/program/types/TemplateLiteral.js","/npm/buble@0.20.0/src/program/types/ThisExpression.js","/npm/buble@0.20.0/src/program/types/UpdateExpression.js","/npm/buble@0.20.0/src/program/types/VariableDeclaration.js","/npm/buble@0.20.0/src/program/types/VariableDeclarator.js","/npm/buble@0.20.0/src/program/types/index.js","/npm/buble@0.20.0/src/program/keys.js","/npm/buble@0.20.0/src/program/wrap.js","/npm/buble@0.20.0/src/program/Program.js","/npm/buble@0.20.0/src/support.js","/npm/buble@0.20.0/src/index.js"],"names":[],"mappings":"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","file":"/npm/buble@0.20.0/dist/buble.cjs.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/buble@0.20.0/dist/buble.cjs.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","// 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"]}