{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-stephelm/src/client/dependency-graph/ast-utils.js"],"names":["babelDefault","types","t","template","transformFromAst","traverse","babel","AEXPR_IDENTIFIER_NAME","dependencies","astNode","fullAst","externalState","state","nodeForLoc","loc","leakingBindings","path","bindings","Set","ReferencedIdentifier","id","outerBinding","scope","getBinding","node","name","actualBinding","add","isVariableAccess","identifier","isIdentifier","badKeys","parent","isBinaryExpression","isMemberExpression","computed","isUpdateExpression","includes","key","isAExpr","isCallExpression","callee","hasBinding"],"mappings":";;;;;;AAAOA,kB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACP,YAAM,EAAEC,OAAOC,CAAT,EAAYC,QAAZ,EAAsBC,gBAAtB,EAAwCC,QAAxC,KAAqDL,aAAaM,KAAxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACO,YAAMC,wBAAwB,OAA9B;;;;;;;;;;;;;;;;;;AAEA,eAASC,YAAT,CAAsBC,OAAtB,EAA+BC,OAA/B,EAAwC,CAE9C;;;;AAEM,eAASC,aAAT,CAAuBF,OAAvB,EAAgCC,OAAhC,EAAyC;AAC9C,cAAME,QAAQ,EAAd;AAED;;;;AAEM,eAASC,UAAT,CAAoBC,GAApB,EAAyB,CAE/B;;AAED;;;;AAEO,eAASC,eAAT,CAAyBC,IAAzB,EAA+B;AACpC,cAAMC,WAAW,IAAIC,GAAJ,EAAjB;AACAF,aAAKX,QAAL,CAAc;AACZc,+BAAqBC,EAArB,EAAyB;AACvB,kBAAMC,eAAeL,KAAKM,KAAL,CAAWC,UAAX,CAAsBH,GAAGI,IAAH,CAAQC,IAA9B,CAArB;AACA,gBAAI,CAACJ,YAAL,EAAmB;AACnB,kBAAMK,gBAAgBN,GAAGE,KAAH,CAASC,UAAT,CAAoBH,GAAGI,IAAH,CAAQC,IAA5B,CAAtB;AACA,gBAAIJ,iBAAiBK,aAArB,EAAoC;AAClCT,uBAASU,GAAT,CAAaD,aAAb;AACD;AACF;AARW,SAAd;AAUA,eAAOT,QAAP;AACD;;;;AAEM,eAASW,gBAAT,CAA0BC,UAA1B,EAAsC;AAC3C,YAAI,CAAC3B,EAAE4B,YAAF,CAAeD,UAAf,CAAL,EAAiC,OAAO,KAAP;AACjC,cAAME,UAAU,CAAC,MAAD,EAAS,KAAT,EAAgB,IAAhB,EAAsB,OAAtB,EAA+B,OAA/B,EAAwC,OAAxC,EAAiD,UAAjD,EAA6D,UAA7D,EAAyE,MAAzE,EAAiF,UAAjF,CAAhB;AACA,cAAMC,SAASH,WAAWG,MAA1B;AACA,YAAI9B,EAAE+B,kBAAF,CAAqBD,MAArB,KACI9B,EAAEgC,kBAAF,CAAqBF,MAArB,KAAgCA,OAAOG,QAD/C,EAC0D,OAAO,IAAP;AAC1D,YAAIjC,EAAEkC,kBAAF,CAAqBJ,MAArB,KACGD,QAAQM,QAAR,CAAiBR,WAAWS,GAA5B,CADP,EACyC,OAAO,KAAP;AACzC,eAAO,IAAP;AACD;;;;AAEM,eAASC,OAAT,CAAiBvB,IAAjB,EAAuB;AAC5B,eAAOd,EAAEsC,gBAAF,CAAmBxB,IAAnB,KACId,EAAE4B,YAAF,CAAed,KAAKQ,IAAL,CAAUiB,MAAzB,CADJ,IAEIzB,KAAKQ,IAAL,CAAUiB,MAAV,CAAiBhB,IAAjB,KAA0BlB,qBAF9B,IAGI,CAACS,KAAKM,KAAL,CAAWoB,UAAX,CAAsBnC,qBAAtB,EAA6C,IAA7C,CAHZ;AAID","file":"ast-utils.js","sourcesContent":["import babelDefault from 'systemjs-babel-build';\nconst { types: t, template, transformFromAst, traverse } = babelDefault.babel;\nexport const AEXPR_IDENTIFIER_NAME = 'aexpr';\n\nexport function dependencies(astNode, fullAst) {\n  \n}\n\nexport function externalState(astNode, fullAst) {\n  const state = [];\n  \n}\n\nexport function nodeForLoc(loc) {\n  \n}\n\n/*MD # Traversal Helpers MD*/\n\nexport function leakingBindings(path) {\n  const bindings = new Set;\n  path.traverse({\n    ReferencedIdentifier(id) {\n      const outerBinding = path.scope.getBinding(id.node.name);\n      if (!outerBinding) return;\n      const actualBinding = id.scope.getBinding(id.node.name);\n      if (outerBinding === actualBinding) {\n        bindings.add(actualBinding);\n      }\n    }\n  });\n  return bindings;\n}\n\nexport function isVariableAccess(identifier) {\n  if (!t.isIdentifier(identifier)) return false;\n  const badKeys = ['left', 'key', 'id', 'label', 'param', 'local', 'exported', 'imported', 'meta', 'property'];\n  const parent = identifier.parent;\n  if (t.isBinaryExpression(parent)\n      || (t.isMemberExpression(parent) && parent.computed)) return true;\n  if (t.isUpdateExpression(parent)\n      || badKeys.includes(identifier.key)) return false;\n  return true;\n}\n\nexport function isAExpr(path) {\n  return t.isCallExpression(path)\n          && t.isIdentifier(path.node.callee)\n          && path.node.callee.name === AEXPR_IDENTIFIER_NAME\n          && !path.scope.hasBinding(AEXPR_IDENTIFIER_NAME, true);\n}"]}