{"version":3,"names":["markMemberToNotBeRewritten","path","FLAG_SHOULD_NOT_REWRITE_MEMBER_EXPRESSION","getSourceLocation","node","state","template","t","fileName","file","opts","filename","startsWith","includes","split","loc","console","error","left","name","right","identifier","sourceLocation","END_COLUMN","numericLiteral","end","column","END_LINE","line","START_COLUMN","start","START_LINE","expression","_export","default","babel","types","traverse","getPropertyFromMemberExpression","computed","property","stringLiteral","GENERATED_FUNCTION","Symbol","isGenerated","findParent","p","isFunctionDeclaration","tNonRewritable","Proxy","get","target","prop","receiver","args","FLAG_SHOULD_NOT_REWRITE_IDENTIFIER","nonRewritableIdentifier","GENERATED_IMPORT_IDENTIFIER","addCustomTemplate","Error","declar","declarations","addNamed","nameHint","checkExpressionAnalysisMode","ifStatement","memberExpression","expressionStatement","isInForLoopIterator","isInForLoop","find","parentPath","isForStatement","parentKey","isForInStatement","isForOfStatement","isInDestructuringAssignment","patternParent","isPattern","inVarDefinition","isVariableDeclarator","inAssignment","isAssignmentExpression","inParams","isFunction","pre","visitor","Program","enter","hasDirective","foundDirective","Directive","value","shouldTransform","proxyDirective","proxyPreference","Preferences","inWorkspace","executedIn","inFile","enableViaDirective","getIdentifierForExplicitScopeObject","parentWithScope","bindings","scope","scopeName","Object","keys","key","id","FLAG_GENERATED_SCOPE_OBJECT","uniqueIdentifier","generateUidIdentifier","push","kind","init","objectExpression","objectProperty","booleanLiteral","rewriteReadGlobal","prependGetGlobal","insertBefore","callExpression","GET_GLOBAL","wrapSetGlobal","valueToReturn","parameters","replaceWith","sequenceExpression","SET_GLOBAL","setClassFilePathStatement","assignmentExpression","thisExpression","isClassFilePathStatement","statement","isExpressionStatement","isMemberExpression","isIdentifier","isCallExpression","arguments","length","maybeWrapInStatement","wrapInReturnStatement","isStatement","isExpression","expressionNode","returnStatement","wrapPropertyOfPath","oldBody","oldBodyNode","isBlockStatement","Array","newBodyNode","blockStatement","isArrowFunctionExpression","hasInitialize","BlockParent","isProgram","isSwitchStatement","body","warn","IfStatement","SwitchCase","ClassMethod","UnaryExpression","operator","argument","DELETE_MEMBER","object","UpdateExpression","prefix","assignment","reverseOperator","binaryExpression","bodyStatements","lastStatement","pushContainer","ClassDeclaration","classBody","some","classElement","isClassMethod","constructorContent","superClass","super","spreadElement","unshiftContainer","classMethod","restElement","Identifier","logIdentifier","msg","log","addAsObjectPropertyAsSecondParameter","functionCallPath","propertyName","any","isSpreadElement","isObjectExpression","assign","assigned","PROPERTY","EXPR","formatCode","source","addOriginalSourceCode","aexprIdentifierPath","expressionPath","sourceCode","getSource","formattedCode","addSourceMetaData","location","isCallee","parent","hasUnboundName","hasBinding","AEXPR_IDENTIFIER_NAME","AEXPR_SHORTHAND_NAME","arrowFunctionExpression","isExportSpecifier","isVariable","isMetaProperty","isAssignmentPattern","isUpdateExpression","isFunctionExpression","isImportDefaultSpecifier","isCatchClause","isContinueStatement","isObjectProperty","isClassDeclaration","isClassExpression","isImportSpecifier","isObjectMethod","isRestElement","isClassProperty","isOptionalMemberExpression","par","hasOwnBinding","trackingCode","GET_LOCAL","isConstant","getBinding","constantViolations","scopeHasEval","CallExpression","callee","objectIdentifier","hasGlobal","isReferencedIdentifier","AssignmentExpression","SET_MEMBER_BY_OPERATORS","FLAG_SHOULD_NOT_REWRITE_ASSIGNMENT_EXPRESSION","valueForAExpr","conditionalExpression","SET_LOCAL","unaryExpression","MemberExpression","isBindExpression","isSuper","GET_MEMBER","FLAG_SHOULD_NOT_REWRITE_CALL_EXPRESSION","methodName","databindingFlag","isBooleanLiteral","lively","notify","isDuplicatableMemberExpression","memberPath","objectPath","isSimpleObject","isThisExpression","isComputedProperty","propertyPath","isSimpleProperty","isStringLiteral","getTraceIdentifierForSimpleObject","buildCodeFrameError","traceIdentifier","TRACE_MEMBER","GET_AND_CALL_MEMBER","arrayExpression","setters","_utilsJs","_srcClientPreferencesJs","_srcExternalBabelBabel7HelpersJs","execute","__SystemJSRewritingHack","_recorder_","_src_client_reactive_babel_plugin_active_expression_rewriting_index_js","defineProperty","set","thisIsVererySecretVariableName","enumerable","configurable","IGNORE_STRING","IGNORE_INDICATOR"],"sources":["index.js"],"sourcesContent":["import { isVariable } from './utils.js';\nimport Preferences from 'src/client/preferences.js';\nimport {addNamed} from 'src/external/babel/babel7-helpers.js';\n\n\n//import 'src/client/js-beautify/beautify.js'\n\nconst AEXPR_IDENTIFIER_NAME = 'aexpr';\nconst AEXPR_SHORTHAND_NAME = 'ae';\n\nconst GET_MEMBER = 'getMember';\nconst GET_AND_CALL_MEMBER = 'getAndCallMember';\n\nconst TRACE_MEMBER = 'traceMember';\n\nconst SET_MEMBER_BY_OPERATORS = {\n  '=': 'setMember',\n  '+=': 'setMemberAddition',\n  '-=': 'setMemberSubtraction',\n  '*=': 'setMemberMultiplication',\n  '/=': 'setMemberDivision',\n  '%=': 'setMemberRemainder',\n  '**=': 'setMemberExponentiation',\n  '<<=': 'setMemberLeftShift',\n  '>>=': 'setMemberRightShift',\n  '>>>=': 'setMemberUnsignedRightShift',\n  '&=': 'setMemberBitwiseAND',\n  '^=': 'setMemberBitwiseXOR',\n  '|=': 'setMemberBitwiseOR'\n};\n\nconst DELETE_MEMBER = 'deleteMember';\n\nconst SET_LOCAL = 'setLocal';\nconst GET_LOCAL = 'getLocal';\n\nconst SET_GLOBAL = 'setGlobal';\nconst GET_GLOBAL = 'getGlobal';\n\nconst IGNORE_STRING = 'aexpr ignore';\nconst IGNORE_INDICATOR = Symbol('aexpr ignore');\n\n// TODO: use multiple flag for indication of generated content, marking explicit scopes, etc.\nexport const FLAG_GENERATED_SCOPE_OBJECT = Symbol('FLAG: generated scope object');\nexport const FLAG_SHOULD_NOT_REWRITE_IDENTIFIER = Symbol('FLAG: should not rewrite identifier');\nexport const FLAG_SHOULD_NOT_REWRITE_MEMBER_EXPRESSION = Symbol('FLAG: should not rewrite member expression');\nexport const FLAG_SHOULD_NOT_REWRITE_CALL_EXPRESSION = Symbol('FLAG: should not rewrite call expression');\nexport const FLAG_SHOULD_NOT_REWRITE_ASSIGNMENT_EXPRESSION = Symbol('FLAG: should not rewrite assignment expression');\n\nfunction markMemberToNotBeRewritten(path) {\n  path[FLAG_SHOULD_NOT_REWRITE_MEMBER_EXPRESSION] = true;\n  return path;\n}\n\nexport function getSourceLocation(node, state, template, t) {\n  let fileName = state && state.file && state.file.opts && state.file.opts.filename || 'no_file_given';\n  if (fileName.startsWith('workspace:') && fileName.includes('unnamed_module_')) {\n    fileName = 'workspace:' + fileName.split('unnamed_module_')[1];\n  }\n  if (!node.loc) {\n\n    console.error(\"Make sure to add loc information manually when inserting an AE or assignment while transforming\" + node.left.name + \" = \" + node.right.name);\n    return t.identifier(\"undefined\");\n  }\n  if (node.loc === \"sourceless\") {\n    return t.identifier(\"undefined\");\n  }\n\n  const sourceLocation = template(`({\n    file: '${fileName}',\n    end: {\n      column: END_COLUMN,\n      line: END_LINE\n    },\n    start: {\n      column: START_COLUMN,\n      line: START_LINE\n    },\n    source: ''\n  })`);\n\n  // let source = babel.transformFromAst(wrapper, {sourceType: 'module'}).code;\n  return sourceLocation({\n    END_COLUMN: t.numericLiteral(node.loc.end.column),\n    END_LINE: t.numericLiteral(node.loc.end.line),\n    START_COLUMN: t.numericLiteral(node.loc.start.column),\n    START_LINE: t.numericLiteral(node.loc.start.line\n    // SOURCE: source\n    ) }).expression;\n}\n\nexport default function (babel) {\n  let { types: t, template, traverse } = babel;\n\n  function getPropertyFromMemberExpression(node) {\n    // We are looking for MemberExpressions, which have two distinct incarnations:\n    // 1. we have a computed MemberExpression like a[b], with the property being an Expression\n    // 2. a non-computed MemberExpression like a.b, with the property being an Identifier\n    return node.computed ?\n    // We can easily deal with the first case by replacing the MemberExpression with a call\n    node.property :\n    // In the second case, we introduce a StringLiteral matching the Identifier\n    t.stringLiteral(node.property.name);\n  }\n\n  const GENERATED_FUNCTION = Symbol(\"generated function\");\n\n  function isGenerated(path) {\n    return path.findParent(p => t.isFunctionDeclaration(p.node) && p.node[GENERATED_FUNCTION]);\n  }\n\n  const tNonRewritable = new Proxy({}, {\n    get(target, prop, receiver) {\n      return (...args) => {\n        const node = t[prop](...args);\n        // --> #TODO: should use a common 'doNotRewriteNode' and 'doNotRewriteSubtree' flags\n        node[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n        return node;\n      };\n    }\n  });\n\n  function nonRewritableIdentifier(name) {\n    return tNonRewritable.identifier(name);\n    const node = t.identifier(name);\n    node[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n    return node;\n  }\n\n  const GENERATED_IMPORT_IDENTIFIER = Symbol(\"generated import identifier\");\n\n  //     let customTemplates = {};\n  //     customTemplates[SET_MEMBER] = template(`\n  //   (function(obj, prop, operator, val) {\n  //     return obj[prop] = val;\n  //   });\n  // `);\n  //\n  //     customTemplates[GET_MEMBER] = template(`\n  //   (function(obj, prop) {\n  //     return obj[prop];\n  //   });\n  // `);\n  //\n  //     customTemplates[GET_AND_CALL_MEMBER] = template(`\n  //   (function(obj, prop, args) {\n  //     return obj[prop](...args)\n  //   });\n  // `);\n  //\n  //     customTemplates[AEXPR_IDENTIFIER_NAME] = template(`\n  //   (function(expr) {\n  //     return { onChange(cb) {}};\n  //   });\n  // `);\n\n  function addCustomTemplate(file, name, path) {\n    // console.log(\"addCustomTemplate \" + name , path)\n    if (!path) {\n      debugger\n      throw new Error(\"path argument missing\")\n    }\n    \n    \n    const declar = file.declarations[name];\n    if (declar) {\n      return declar;\n    }\n\n    // const identifier = file.declarations[name] = file.addImport(\"active-expression-rewriting\", name, name);\n    let identifier = file.declarations[name] = addNamed(path, name, \"active-expression-rewriting\", {nameHint: name});\n    \n    identifier[GENERATED_IMPORT_IDENTIFIER] = true;\n    identifier[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n    return identifier;\n\n    // let ref = customTemplates[name];\n    // console.log(file.addImport(\"active-expression-rewriting\", \"aexpr\"));\n    // let uid = file.declarations[name] = file.scope.generateUidIdentifier(name);\n    //\n    // ref = ref().expression;\n    // ref[GENERATED_FUNCTION] = true;\n    //\n    // if (t.isFunctionExpression(ref) && !ref.id) {\n    //     ref.body._compact = true;\n    //     ref._generated = true;\n    //     ref.id = uid;\n    //     ref.type = \"FunctionDeclaration\";\n    //     file.path.unshiftContainer(\"body\", ref);\n    // } else {\n    //     ref._compact = true;\n    //     file.scope.push({\n    //         id: uid,\n    //         init: ref,\n    //         unique: true\n    //     });\n    // }\n    //\n    // return uid;\n  }\n\n  // #TODO: add global flag for expression analysis mode\n  function checkExpressionAnalysisMode(node) {\n    return t.ifStatement(markMemberToNotBeRewritten(t.memberExpression(nonRewritableIdentifier('self'), nonRewritableIdentifier('__expressionAnalysisMode__'))), t.expressionStatement(node\n    // ,t.unaryExpression(\"void\", t.numericLiteral(0), true)\n    ));\n  }\n\n  function isInForLoopIterator(path) {\n    const isInForLoop = path.find(p => {\n      if (!p.parentPath) return false;\n      if (p.parentPath.isForStatement() && ['init', 'test', 'update'].includes(p.parentKey)) return true;\n      if (p.parentPath.isForInStatement() && p.parentKey === 'left') return true;\n      if (p.parentPath.isForOfStatement() && p.parentKey === 'left') return true;\n      return false;\n    });\n    return !!isInForLoop;\n  }\n\n  function isInDestructuringAssignment(path) {\n\n    \n    const patternParent = path.find(p => {\n      if (!p.isPattern()) {\n        return false;\n      }\n      if (!p.parentPath) {\n        return false;\n      }\n\n      const inVarDefinition = p.parentPath.isVariableDeclarator() && p.parentKey === 'id';\n      const inAssignment = p.parentPath.isAssignmentExpression() && p.parentKey === 'left';\n      const inParams = p.parentPath.isFunction() && p.parentKey === 'params';\n      return inVarDefinition || inAssignment || inParams;\n    });\n    return !!patternParent;\n  }\n\n  return {\n    pre(file) {\n      //console.log(\"fff\", file, traverse);\n    },\n    name: 'active-expression-rewriting',\n    visitor: {\n      Program: {\n        enter(path, state) {\n          function hasDirective(path, name) {\n            let foundDirective = false;\n            path.traverse({\n              Directive(path) {\n                if (path.get(\"value\").node.value === name) {\n                  foundDirective = true;\n                }\n              }\n            });\n            return foundDirective;\n          }\n\n          function shouldTransform() {\n            const proxyDirective = hasDirective(path, 'use proxies for aexprs');\n            const proxyPreference = Preferences.get('UseProxiesForAExprs');\n            const inWorkspace = state.opts.executedIn === 'workspace';\n            const inFile = state.opts.executedIn === 'file';\n\n            if (inWorkspace) {\n              return !proxyPreference;\n            } else if (inFile) {\n              return !proxyDirective;\n            }\n            return true;\n            throw new Error('This should not be possible');\n          }\n\n          if (!shouldTransform()) {\n            return;\n          }\n\n          if (state.opts.enableViaDirective && !hasDirective(path, \"enable aexpr\")) {\n            return;\n          }\n\n          function getIdentifierForExplicitScopeObject(parentWithScope) {\n            let bindings = parentWithScope.scope.bindings;\n            \n\n            let scopeName = Object.keys(bindings).find(key => {\n              return bindings[key].path && bindings[key].path.node && bindings[key].path.node.id && bindings[key].path.node.id[FLAG_GENERATED_SCOPE_OBJECT]; // should actually be IS_EXPLICIT_SCOPE_OBJECT\n            });\n\n            let uniqueIdentifier;\n            if (scopeName) {\n              uniqueIdentifier = t.identifier(scopeName);\n            } else {\n              uniqueIdentifier = parentWithScope.scope.generateUidIdentifier('scope');\n              uniqueIdentifier[FLAG_GENERATED_SCOPE_OBJECT] = true;\n\n              parentWithScope.scope.push({\n                kind: 'let',\n                id: uniqueIdentifier,\n                init: t.objectExpression([t.objectProperty(t.identifier(\"isScope\"), t.booleanLiteral(true))])\n              });\n            }\n            uniqueIdentifier[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n            return uniqueIdentifier;\n          }\n\n          function rewriteReadGlobal(path) {\n            if (path.node.name !== 'eval') {\n              path.node[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n              prependGetGlobal(path);\n            }\n          }\n          function prependGetGlobal(path) {\n            path.insertBefore(checkExpressionAnalysisMode(t.callExpression(addCustomTemplate(state.file, GET_GLOBAL, path), [t.stringLiteral(path.node.name)])));\n          }\n          function wrapSetGlobal(path) {\n            const valueToReturn = t.identifier(path.node.left.name);\n            valueToReturn[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n            \n            const parameters = [t.stringLiteral(path.node.left.name)];\n            if(Preferences.get(\"EnableAEDebugging\")) {\n              parameters.push(getSourceLocation(path.node, state, template, t));\n            }\n            \n            path.replaceWith(t.sequenceExpression([path.node, t.callExpression(addCustomTemplate(state.file, SET_GLOBAL, path), parameters), valueToReturn]));\n          }\n          function setClassFilePathStatement() {\n            let fileName = state && state.file && state.file.opts && state.file.opts.filename || 'no_file_given';\n            if (fileName.startsWith('workspace:') && fileName.includes('unnamed_module_')) {\n              fileName = 'workspace:' + fileName.split('unnamed_module_')[1];\n            }\n            const assignmentExpression = t.assignmentExpression(\"=\", t.memberExpression(t.thisExpression(), t.identifier(\"__classFilePath__\")), t.stringLiteral(fileName));\n            assignmentExpression.loc = \"sourceless\";\n\n            return t.expressionStatement(assignmentExpression);\n          }\n\n          function isClassFilePathStatement(statement) {\n            if (!t.isExpressionStatement(statement)) return false;\n            if (t.isAssignmentExpression(statement.expression)) {\n              return t.isMemberExpression(statement.expression.left) && t.isIdentifier(statement.expression.left.property) && statement.expression.left.property.name === \"__classFilePath__\";\n            } else if (t.isCallExpression(statement.expression)) {\n              return statement.expression.arguments.length >= 2 && statement.expression.arguments[1].value === \"__classFilePath__\";\n            }\n            return false;\n          }\n\n          // ------------- ensureBlock -------------\n          const maybeWrapInStatement = (node, wrapInReturnStatement) => {\n            if (t.isStatement(node)) {\n              return node;\n            } else if (t.isExpression(node)) {\n              // wrap in return statement if we have an arrow function: () => 42 -> () => { return 42; }\n              const expressionNode = wrapInReturnStatement ? t.returnStatement(node) : t.expressionStatement(node);\n              expressionNode.loc = node.loc;\n              return expressionNode;\n            } else {\n              console.error(\"Tried to wrap something unknown:\", node);\n              return node;\n            }\n          };\n          const wrapPropertyOfPath = (path, property) => {\n            const oldBody = path.get(property);\n            const oldBodyNode = path.node[property];\n            if (!oldBodyNode) {\n              return;\n            }\n            if (oldBody.isBlockStatement && oldBody.isBlockStatement()) {\n              // This is already a block\n              return;\n            } else if (oldBody instanceof Array) {\n              const newBodyNode = t.blockStatement(oldBodyNode);\n              path.node[property] = [newBodyNode];\n            } else {\n              const newBodyNode = t.blockStatement([maybeWrapInStatement(oldBodyNode, path.isArrowFunctionExpression())]);\n              oldBody.replaceWith(newBodyNode);\n            }\n            return path;\n          };\n          let hasInitialize = false;\n          path.traverse({\n            BlockParent(path) {\n              if (path.isProgram() || path.isBlockStatement() || path.isSwitchStatement()) {\n                return;\n              }\n              if (!path.node.body) {\n                console.warn(\"A BlockParent without body: \", path);\n              }\n\n              wrapPropertyOfPath(path, \"body\");\n            },\n            IfStatement(path) {\n              for (let property of [\"consequent\", \"alternate\"]) {\n                wrapPropertyOfPath(path, property);\n              }\n            },\n            SwitchCase(path) {\n              wrapPropertyOfPath(path, \"consequent\");\n            },\n            ClassMethod(path) {\n              if (path.node.key.name === \"initialize\") {\n                hasInitialize = true;\n              }\n            }\n          });\n\n          path.traverse({\n\n            UnaryExpression(path) {\n              if (isInForLoopIterator(path)) {\n                return;\n              }\n              if (isInDestructuringAssignment(path)) {\n                return;\n              }\n\n              // handle delete operator\n              if (path.node.operator === 'delete') {\n                const argument = path.get('argument');\n                if (argument.isMemberExpression()) {\n                  path.replaceWith(t.callExpression(addCustomTemplate(state.file, DELETE_MEMBER, path), [argument.node.object, getPropertyFromMemberExpression(argument.node)]));\n                }\n                return;\n              }\n            },\n\n            UpdateExpression(path) {\n              const operator = path.node.operator;\n              const prefix = path.node.prefix;\n              const argument = path.get('argument');\n              if (isInForLoopIterator(path)) {\n                return;\n              }\n              if (isInDestructuringAssignment(path)) {\n                return;\n              }\n\n              if (argument.isMemberExpression() || argument.isIdentifier()) {\n\n                // ++v -> v += 1\n                let assignment = t.assignmentExpression(operator[0] + '=', argument.node, t.numericLiteral(1));\n                assignment.loc = path.node.loc;\n\n                if (!prefix) {\n                  // need to modify result for postfix operators\n                  // v++ -> (v += 1) - 1\n                  const reverseOperator = operator[0] === '+' ? '-' : '+';\n                  assignment = t.binaryExpression(reverseOperator, assignment, t.numericLiteral(1));\n                  assignment.loc = path.node.loc;\n                }\n                path.replaceWith(assignment);\n              }\n            },\n\n            ClassMethod(path) {\n              if (hasInitialize ? path.node.key.name !== \"initialize\" : path.node.kind !== \"constructor\") return;\n              const bodyStatements = path.node.body.body;\n              const lastStatement = bodyStatements[bodyStatements.length - 1];\n              if (bodyStatements.length === 0 || !isClassFilePathStatement(lastStatement)) {\n                path.get('body').pushContainer('body', setClassFilePathStatement());\n              }\n            },\n\n            ClassDeclaration(path) {\n              if (hasInitialize) return;\n              const classBody = path.node.body;\n              if (!classBody.body.some(classElement => t.isClassMethod(classElement) && classElement.kind === \"constructor\")) {\n                // No constructor exists -> Override default constructor\n                const constructorContent = [];\n                if (path.node.superClass) {\n                  constructorContent.push(t.expressionStatement(t.callExpression(t.super(), [t.spreadElement(t.identifier(\"args\"))])));\n                }\n                constructorContent.push(setClassFilePathStatement());\n                path.get(\"body\").unshiftContainer(\"body\", t.classMethod(\"constructor\", t.identifier(\"constructor\"), [t.restElement(t.identifier(\"args\"))], t.blockStatement(constructorContent)));\n              }\n            },\n            /*MD # Identifier MD*/\n            Identifier(path) {\n              //console.log(path.node.name);\n\n              \n              function logIdentifier(msg, path) {\n                console.log(msg, path.node.name, path.node.loc ? path.node.loc.start.line : '');\n              }\n\n              if (path.node[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER]) {\n                return;\n              }\n\n              function addAsObjectPropertyAsSecondParameter(functionCallPath, propertyName, node) {\n                \n                const args = functionCallPath.get('arguments');\n\n                /* #TODO: Support the following cases:\n                 * ae(expr)\n                 * ae(expr, { })\n                 * ae(expr, obj)\n                 * ae(expr, ...arr)\n                 * ae(...arr)\n                 */\n                if (args.some(any => any.isSpreadElement())) {\n                  return;\n                }\n\n                if (args.length === 0) {\n                  return;\n                }\n\n                if (args.length === 1) {\n                  functionCallPath.pushContainer('arguments', t.objectExpression([t.objectProperty(t.identifier(propertyName), node)]));\n                  return;\n                }\n\n                const argument = args[1];\n                if (argument.isObjectExpression()) {\n                  argument.pushContainer('properties', t.objectProperty(t.identifier(propertyName), node));\n                } else {\n                  const assign = template(`Object.assign({${propertyName} : PROPERTY}, EXPR || {})`);\n                \n                  const assigned = assign({ PROPERTY: node, EXPR: argument.node }).expression;\n                  \n                  argument.replaceWith(assigned);\n                }\n              }\n              \n              function formatCode(source) {\n                //Seems like this is too big to import properly\n                //System.import(\"src/client/js-beautify/beautify.js\")\n                //debugger;\n                //return global.js_beautify(source);\n                return source;\n              }\n\n              function addOriginalSourceCode(aexprIdentifierPath) {\n                const args = aexprIdentifierPath.parentPath.get('arguments');\n                if (args.length === 0) {\n                  return;\n                }\n                const expressionPath = args[0];\n                const sourceCode = expressionPath.getSource();\n                \n                const formattedCode = formatCode(sourceCode);\n                \n                if (sourceCode) {\n                  addAsObjectPropertyAsSecondParameter(aexprIdentifierPath.parentPath, 'sourceCode', t.stringLiteral(formattedCode));\n                }\n              }\n\n              function addSourceMetaData(path) {\n                if(!Preferences.get(\"EnableAEDebugging\")) {\n                  return;\n                }\n                const location = getSourceLocation(path.node, state, template, t);\n                addAsObjectPropertyAsSecondParameter(path.parentPath, 'location', location);\n                addOriginalSourceCode(path);\n              }\n\n              const isCallee = t.isCallExpression(path.parent) && path.parentKey === 'callee';\n              function hasUnboundName(name) {\n                // #TODO: in workspaces, this might lead to an issue, as we may override\n                // a module-global variable that was declared in an earlier execution\n                return path.node.name === name && !path.scope.hasBinding(name);\n              }\n\n              // Check for a call to undeclared `aexpr`:\n              if (isCallee && hasUnboundName(AEXPR_IDENTIFIER_NAME)) {\n                addSourceMetaData(path);\n\n                path.replaceWith(addCustomTemplate(state.file, AEXPR_IDENTIFIER_NAME, path));\n                return;\n              }\n\n              // Check for a call to undeclared `ae`:\n              if (isCallee && hasUnboundName(AEXPR_SHORTHAND_NAME)) {\n                addSourceMetaData(path);\n\n                const expressionPath = path.parentPath.get('arguments')[0];\n                if (expressionPath) {\n                  expressionPath.replaceWith(t.arrowFunctionExpression([], expressionPath.node));\n                }\n\n                path.replaceWith(addCustomTemplate(state.file, AEXPR_IDENTIFIER_NAME, path));\n                return;\n              }\n\n              // property local of ExportStatement\n              if (t.isExportSpecifier(path.parent) && path.parentKey === 'local') {\n                return;\n              }\n\n              if (\n              // TODO: is there a general way to exclude non-variables?\n              isVariable(path) && !t.isMetaProperty(path.parent) && !(t.isForInStatement(path.parent) && path.parentKey === 'left') && !(t.isAssignmentPattern(path.parent) && path.parentKey === 'left') && !t.isUpdateExpression(path.parent) && !(t.isFunctionExpression(path.parent) && path.parentKey === 'id') && !(t.isImportDefaultSpecifier(path.parent) && path.parentKey === 'local') && !(t.isCatchClause(path.parent) && path.parentKey === 'param') && !(t.isContinueStatement(path.parent) && path.parentKey === 'label') && !t.isObjectProperty(path.parent) && !t.isClassDeclaration(path.parent) && !t.isClassExpression(path.parent) && !t.isClassMethod(path.parent) && !t.isImportSpecifier(path.parent) && !t.isObjectMethod(path.parent) && !(t.isVariableDeclarator(path.parent) && path.parentKey === 'id') && !t.isFunctionDeclaration(path.parent) && !(t.isArrowFunctionExpression(path.parent) && path.parentKey === 'params') && !(t.isExportSpecifier(path.parent) && path.parentKey === 'exported') && !(t.isFunctionExpression(path.parent) && path.parentKey === 'params') && !t.isRestElement(path.parent) && (!t.isAssignmentExpression(path.parent) || !(path.parentKey === 'left')) && (!t.isClassProperty(path.parent) || !(path.parentKey === 'key')) && (!t.isOptionalMemberExpression(path.parent) || !(path.parentKey === 'property'))) {\n                if (isInForLoopIterator(path)) {\n                  return;\n                }\n                if (isInDestructuringAssignment(path)) {\n                  return;\n                }\n\n                if (path.scope.hasBinding(path.node.name)) {\n                  //logIdentifier('get local var', path)\n                  path.node[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n\n                  let parentWithScope = path.findParent(par => par.scope.hasOwnBinding(path.node.name));\n                  if (parentWithScope) {\n                    //function printParents(path) {\n                    //  let result = [path.type];\n                    //  path.findParent(p => {\n                    //    result.push(p.type);\n                    //    return false;\n                    //  });\n                    //  console.log(result.join('\\n\\r'))\n                    //}\n                    //printParents(path);\n                    //const node = path.parentPath.parentPath;\n                    //                                    const statement = path.getStatementParent();\n                    //                                      console.warn(statement, statement.type);\n                    //node.unshiftContainer('body', t.expressionStatement(t.stringLiteral(\"HELLO!?\")));\n                    // lively.openInspector(statement);\n                    //statement.insertBefore(t.expressionStatement(t.stringLiteral(\"WORLD\")))\n                    //printParents(path.getStatementParent())\n                    //printParents(path.getFunctionParent())\n                    //path.getFunctionParent().ensureBlock();\n                    //path.insertBefore(t.expressionStatement(t.stringLiteral(\"Because I'm easy come, easy go.\")));\n\n                    // #TODO: we cannot ignore non-changing values, as the ae might be configured to e.g. match:shallow\n                    // then, a local might still be considered to have changed w/o \n                    // const varBinding = path.scope.getBinding(path.node.name);\n                    // const isConst = varBinding.kind === \"const\";\n                    // const isNotChanging = varBinding.constantViolations.length === 0;\n                    // if (!isConst && !isNotChanging) {\n                    \n                    \n                    let trackingCode = checkExpressionAnalysisMode(t.callExpression(addCustomTemplate(state.file, GET_LOCAL, path), [getIdentifierForExplicitScopeObject(parentWithScope), t.stringLiteral(path.node.name), nonRewritableIdentifier(path.node.name)]));\n                    const isConstant = path.scope.getBinding(path.node.name).constantViolations.length === 0;\n                    if(isConstant) {\n                      \n                      let scopeHasEval = false;\n                      path.scope.getBinding(path.node.name).scope.path.traverse({\n                        CallExpression(path) {\n                          if (t.isIdentifier(path.node.callee) && path.node.callee.name === \"eval\") {\n                            scopeHasEval = true;\n                          }\n                        }\n                      });\n                      if(!scopeHasEval) {\n                        //If a variable is constant and primitive, we never have to track it, since changing it cannot influence any AEs. So this adds the primitive check at runtime.\n                        const objectIdentifier = t.identifier(\"Object\");\n                        objectIdentifier[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n                        trackingCode = t.ifStatement(t.binaryExpression(\"===\", path.node, t.callExpression(objectIdentifier, [path.node])), trackingCode, t.expressionStatement(path.node));          \n                      }\n                    }\n                    path.insertBefore(trackingCode);\n                    // }\n                  } else if (path.scope.hasGlobal(path.node.name)) {\n                    // #TODO: remove this code duplication\n                    rewriteReadGlobal(path);\n                  } else {\n                    // #TODO: can this be the case? Neither locally scoped nor global.\n                  }\n                } else {\n                  //logIdentifier('get global var', path);\n                  rewriteReadGlobal(path);\n                }\n                return;\n              }\n\n              //logIdentifier('others', path);\n              return;\n\n              if (path.node[GENERATED_IMPORT_IDENTIFIER]) {\n                logIdentifier('Generated Import Identifier', path);\n                return;\n              }\n\n              // global?\n              //if (!path.isReferencedIdentifier()) {\n              //logIdentifier('is no referenced identifier', path);\n              //return;\n              //}\n\n              // The identifier should not reference a variable in current scope\n              if (path.scope.hasBinding(path.node.name)) {\n                logIdentifier('Binding for ', path);\n                return;\n              }\n\n              logIdentifier('Unexpected Case', path);\n\n              return;\n\n              //if(RESERVED_IDENTIFIERS.includes(path.node.name)) { return; }\n\n              if (t.isClassDeclaration(path.parent)) {\n                console.log(\"classDecl\", path.node.name);\n                return;\n              }\n\n              if (t.isClassMethod(path.parent)) {\n                console.log(\"classMethod\", path.node.name);\n                return;\n              }\n\n              if (t.isObjectMethod(path.parent)) {\n                console.log(\"objectMethod\", path.node.name);\n                return;\n              }\n              if (t.isVariableDeclarator(path.parent)) {\n                console.log(\"varDecl\", path.node.name);\n                return;\n              }\n\n              // is this correct here?\n              // TODO: is it correct for the locals plugin?\n              if (!path.isReferencedIdentifier()) {\n                console.log(\"def\", path.node.name);\n                return;\n              }\n\n              // is locally defined variable?\n              if (path.scope.hasBinding(path.node.name)) {\n                console.log(\"local\", path.node.name);\n              } else {\n                // we have a global\n                console.log(\"global\", path.node.name);\n              }\n            },\n            /*MD # AssigmentExpression MD*/\n            AssignmentExpression(path) {\n              if (isInForLoopIterator(path)) {\n                return;\n              }\n              if (isInDestructuringAssignment(path)) {\n                return;\n              }\n              // check, whether we assign to a member (no support for pattern right now)\n              if (t.isMemberExpression(path.node.left) && !isGenerated(path) && SET_MEMBER_BY_OPERATORS[path.node.operator]) {\n                let parameters = [path.node.left.object, getPropertyFromMemberExpression(path.node.left), path.node.right];\n                if(Preferences.get(\"EnableAEDebugging\")) {\n                  parameters.push(getSourceLocation(path.node, state, template, t));\n                }\n                \n                //state.file.addImport\n                path.replaceWith(t.callExpression(addCustomTemplate(state.file, SET_MEMBER_BY_OPERATORS[path.node.operator], path), parameters));\n              }\n\n              if (t.isIdentifier(path.node.left) && !path.node[FLAG_SHOULD_NOT_REWRITE_ASSIGNMENT_EXPRESSION]) {\n                if (path.scope.hasBinding(path.node.left.name)) {\n                  //console.log('set local', path.node.left.name);\n                  path.node[FLAG_SHOULD_NOT_REWRITE_ASSIGNMENT_EXPRESSION] = true;\n\n                  const parentWithScope = path.findParent(par => par.scope.hasOwnBinding(path.node.left.name));\n                  if (parentWithScope) {\n                    let valueToReturn = t.identifier(path.node.left.name);\n                    valueToReturn[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n                    let valueForAExpr = t.identifier(path.node.left.name);\n                    valueForAExpr[FLAG_SHOULD_NOT_REWRITE_IDENTIFIER] = true;\n                    // #TODO: turn into .insertAfter\n                    // caution: doing so automatically inserts a temporary variable (_temp), which is in turn rewritten!\n                    //path.insertAfter(\n                    //t.ifStatement(\n                    //  t.booleanLiteral(true),\n                    //  t.expressionStatement(\n                    //    t.callExpression(\n                    //      addCustomTemplate(state.file, SET_LOCAL),\n                    //      [\n                    //        getIdentifierForExplicitScopeObject(parentWithScope),\n                    //        t.stringLiteral(path.node.left.name)\n                    //      ]\n                    //    )\n                    //  )\n                    //)\n                    //);\n                    const parameters = [getIdentifierForExplicitScopeObject(parentWithScope), t.stringLiteral(path.node.left.name), valueForAExpr];\n                    if(Preferences.get(\"EnableAEDebugging\")) {\n                      parameters.push(getSourceLocation(path.node, state, template, t));\n                    }\n                    path.replaceWith(t.sequenceExpression([path.node, t.conditionalExpression(t.booleanLiteral(true), t.callExpression(addCustomTemplate(state.file, SET_LOCAL, path), parameters), t.unaryExpression('void', t.numericLiteral(0))), valueToReturn]));\n                  } else if (path.get('left').scope.hasGlobal(path.node.left.name)) {\n                    path.node[FLAG_SHOULD_NOT_REWRITE_ASSIGNMENT_EXPRESSION] = true;\n                    wrapSetGlobal(path);\n                  } else {\n                    // #TODO: can this be the case? Neither locally scoped nor global.\n                  }\n                } else {\n                  // global assginment\n                  //console.log('---global---', path.node.left.name);\n                  path.node[FLAG_SHOULD_NOT_REWRITE_ASSIGNMENT_EXPRESSION] = true;\n                  wrapSetGlobal(path);\n                }\n              }\n            },\n\n            /*MD # MemberExpression MD*/\n            MemberExpression(path) {\n              // lval (left values) are ignored for now\n              if (path.parentPath.isCallExpression() && path.parentKey === \"callee\") {\n                return;\n              }\n              // #TODO: BindExpressions are ignored for now; they are static anyway ;)\n              if (path.parentPath.isBindExpression() && path.parentKey === \"callee\") {\n                return;\n              }\n              if (t.isAssignmentExpression(path.parent) && path.key === 'left') {\n                return;\n              }\n              if (t.isUpdateExpression(path.parent) && path.key === 'argument') {\n                return;\n              }\n              if (t.isSuper(path.node.object)) {\n                return;\n              }\n              if (isGenerated(path)) {\n                return;\n              }\n              if (isInForLoopIterator(path)) {\n                return;\n              }\n              if (isInDestructuringAssignment(path)) {\n                return;\n              }\n              if (path.node[FLAG_SHOULD_NOT_REWRITE_MEMBER_EXPRESSION]) {\n                return;\n              }\n\n              path.replaceWith(t.callExpression(addCustomTemplate(state.file, GET_MEMBER, path), [path.node.object, getPropertyFromMemberExpression(path.node)]));\n            },\n\n            /*MD # CallExpression MD*/\n            CallExpression(path) {\n              if (isGenerated(path)) {\n                return;\n              }\n              if (path.node.callee && t.isSuper(path.node.callee.object)) {\n                return;\n              }\n              if (path.node[FLAG_SHOULD_NOT_REWRITE_CALL_EXPRESSION]) {\n                return;\n              }\n              if (isInForLoopIterator(path)) {\n                return;\n              }\n              if (isInDestructuringAssignment(path)) {\n                return;\n              }\n\n              if (t.isMemberExpression(path.node.callee)) {\n                const methodName = path.node.callee.property.name;\n                if (methodName === \"dataflow\" || methodName === \"onChange\" || methodName === \"offChange\") {\n                  const args = path.get('arguments');\n                  if (args.length > 0) {\n                    const expressionPath = args[0];\n                    const sourceCode = expressionPath.getSource();\n                    path.pushContainer('arguments', t.objectExpression([t.objectProperty(t.identifier(\"sourceCode\"), t.stringLiteral(sourceCode))]));\n                    if(args.length > 1) {\n                      const databindingFlag = args[1];\n                      if(t.isBooleanLiteral(databindingFlag.node, {value: true})) {\n                        lively.notify(\"Databinding detected\");\n                        debugger;                        \n                      }\n                    }\n                  }\n                  //addOriginalSourceCode(path);\n                  return;\n                }\n              }\n\n              // check whether we call a MemberExpression\n              if (t.isMemberExpression(path.node.callee)) {\n                function isDuplicatableMemberExpression(memberPath) {\n                  const objectPath = memberPath.get('object');\n                  const isSimpleObject = objectPath.isIdentifier() || objectPath.isThisExpression();\n                  const isComputedProperty = memberPath.node.computed;\n                  const propertyPath = memberPath.get('property');\n                  let isSimpleProperty;\n                  if (isComputedProperty) {\n                    isSimpleProperty = propertyPath.isStringLiteral() || propertyPath.isIdentifier();\n                  } else {\n                    isSimpleProperty = propertyPath.isIdentifier();\n                  }\n                  return isSimpleObject && isSimpleProperty;\n                }\n\n                if (isDuplicatableMemberExpression(path.get(\"callee\"))) {\n                  function getTraceIdentifierForSimpleObject(objectPath) {\n                    if (objectPath.isIdentifier()) {\n                      return nonRewritableIdentifier(objectPath.node.name);\n                    } else if (objectPath.isThisExpression()) {\n                      return t.thisExpression();\n                    } else {\n                      throw objectPath.buildCodeFrameError(\"Tried to trace a simple MemberExpression>object, but it is neither an Identifier nor a ThisExpression\");\n                    }\n                  }\n\n                  const traceIdentifier = getTraceIdentifierForSimpleObject(path.get('callee').get('object'));\n                  // break a recursive call expression when doing `(obj.fn(), obj.fn());`\n                  path.node[FLAG_SHOULD_NOT_REWRITE_CALL_EXPRESSION] = true;\n                  // insert traceMember before actual call\n                  path.insertBefore(checkExpressionAnalysisMode(t.callExpression(addCustomTemplate(state.file, TRACE_MEMBER, path), [traceIdentifier, getPropertyFromMemberExpression(path.node.callee)])));\n                } else {\n                  path.replaceWith(t.callExpression(addCustomTemplate(state.file, GET_AND_CALL_MEMBER, path), [path.node.callee.object, getPropertyFromMemberExpression(path.node.callee), t.arrayExpression(path.node.arguments)]));\n                }\n              } else {\n                // call to a local/global variable is handled elsewhere\n                if (t.isIdentifier(path.node.callee) && true) {}\n              }\n            }\n\n          });\n        }\n      }\n    }\n  };\n}"],"mappings":"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"}