{"version":3,"sources":["https://lively-kernel.org/lively4/composed-offset/src/client/javascript.js"],"names":["babelDefault","babelPluginSyntaxJSX","babelPluginSyntaxDoExpressions","babelPluginSyntaxFunctionBind","babelPluginSyntaxGenerators","classProperties","objectRestSpread","hasASTBinding","getFirstSelectedIdentifierWithName","getBindingDeclarationIdentifierPath","parseModuleSemantics","parseModuleSemanticsFromSource","parseSource","babel","t","types","syntaxPlugins","filename","source","transform","babelrc","plugins","presets","sourceFileName","moduleIds","sourceMaps","compact","comments","code","ast","resolveModuleSource","undefined","e","console","log","classes","dependencies","importDeclarations","Map","functionExports","classExports","unboundIdentifiers","traverse","ImportDeclaration","path","node","value","specifierNames","moduleUrl","specifiers","forEach","item","type","push","set","local","name","dependency","url","names","ClassDeclaration","superClassName","superClassUrl","id","clazz","start","end","loc","line","superClass","get","methods","body","method","key","kind","static","leadingComments","ExportNamedDeclaration","isFunctionDeclaration","declaration","isClassDeclaration","Identifier","binding","identifier","startPath","isIdentifier","first","stop","scope","hasBinding","getBinding","identifierPaths","Set","referencePaths","constantViolations","map","cv","includes"],"mappings":"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","file":"javascript.js","sourcesContent":["\"enable examples\"\n\"disable deepeval\"\n\nimport babelDefault from 'systemjs-babel-build';\nconst babel = babelDefault.babel;\nconst t = babel.types;\n\nimport babelPluginSyntaxJSX from 'babel-plugin-syntax-jsx'\nimport babelPluginSyntaxDoExpressions from  'babel-plugin-syntax-do-expressions'\nimport babelPluginSyntaxFunctionBind from 'babel-plugin-syntax-function-bind'\nimport babelPluginSyntaxGenerators from 'babel-plugin-syntax-async-generators'\nimport classProperties from 'babel-plugin-syntax-class-properties';\nimport objectRestSpread from 'babel-plugin-syntax-object-rest-spread';\n\nconst syntaxPlugins = [babelPluginSyntaxJSX, babelPluginSyntaxDoExpressions, babelPluginSyntaxFunctionBind, babelPluginSyntaxGenerators, classProperties, objectRestSpread]\n\n\n\nexport function /*example:*/parseSource/*{\"id\":\"d471_7474_cb07\",\"name\":{\"mode\":\"input\",\"value\":\"\"},\"color\":\"hsl(120, 30%, 70%)\",\"values\":{\"filename\":{\"mode\":\"input\",\"value\":\"\\\"f1\\\"\"},\"source\":{\"mode\":\"select\",\"value\":\"2025_8b45_d12e\"}},\"instanceId\":{\"mode\":\"input\",\"value\":\"\"},\"prescript\":\"\",\"postscript\":\"\"}*/(filename, source) {\n  try {\n    return babel.transform(/*probe:*/source/*{}*/, {\n        babelrc: false,\n        plugins: [...syntaxPlugins],\n        presets: [],\n        filename: filename,\n        sourceFileName: filename,\n        moduleIds: false,\n        sourceMaps: true,\n        compact: false,\n        comments: true,\n        code: true,\n        ast: true,\n        resolveModuleSource: undefined\n    }).ast\n  } catch(e) {\n    console.log('FileIndex, could not parse: ' + filename, e)\n    return undefined\n  }\n}\n\nexport function parseModuleSemanticsFromSource(filename, source) {\n   return parseModuleSemantics(parseSource(filename, source))\n}\n\nexport function  parseModuleSemantics(ast) {\n  let classes = [];\n  let dependencies = [];\n  let importDeclarations = new Map();\n  let functionExports = [];\n  let classExports = [];\n  let unboundIdentifiers = [];\n  babel.traverse(/*probe:*/ast/*{}*/,{\n    ImportDeclaration(path) {\n      if (path.node.source && path.node.source.value) {\n        let specifierNames = []\n        let moduleUrl = path.node.source.value\n        if (path.node.specifiers) { \n          path.node.specifiers.forEach(function(item) {\n            if (item.type === \"ImportNamespaceSpecifier\") {\n              specifierNames.push('*')\n              importDeclarations.set('*', moduleUrl)\n            } else {\n              specifierNames.push(item.local.name)\n              importDeclarations.set(item.local.name, moduleUrl)\n            }\n          })\n        }\n        let dependency = {\n          url: path.node.source.value,\n          names: specifierNames\n        }\n         dependencies.push(dependency)\n      }\n    },\n    ClassDeclaration(path) {\n      let superClassName = ''\n      let superClassUrl = ''\n      if (path.node.id) {\n        let clazz = {\n          name: path.node.id.name,\n          start: path.node.start, // start byte \n          end: path.node.end,     // end byte\n          loc: path.node.loc.end.line - path.node.loc.start.line + 1\n        }\n        superClassName = (path.node.superClass) ? path.node.superClass.name : ''\n        superClassUrl = importDeclarations.get(superClassName)\n        let methods = []\n\n        if (path.node.body.body) {\n          path.node.body.body.forEach(function(item) {\n            if(item.type === \"ClassMethod\") {\n              let method = {\n                name: item.key.name,\n                loc: item.loc.end.line - item.loc.start.line + 1,\n                start: item.start,\n                kind: item.kind,\n                static: item.static,\n                end: item.end,\n                leadingComments: item.leadingComments\n              }\n              methods.push(method)\n            }              \n          })\n        }\n        clazz.methods = methods\n        clazz.superClassName = superClassName\n        clazz.superClassUrl = superClassUrl\n        classes.push(clazz)\n      } \n    },\n    ExportNamedDeclaration(path) {\n      if(t.isFunctionDeclaration(path.node.declaration)) {\n        functionExports.push(path.node.declaration.id.name)\n      }\n      if(t.isClassDeclaration(path.node.declaration)) {\n        classExports.push(path.node.declaration.id.name)\n      }\n    },\n    Identifier(path) {\n      if (!(hasASTBinding(path))) {\n        unboundIdentifiers.push(path.node.name);\n      }\n    }\n  })\n  return {classes, dependencies, functionExports, classExports, unboundIdentifiers}\n}\n\nfunction getBindingDeclarationIdentifierPath(binding) {\n  return getFirstSelectedIdentifierWithName(binding.path, binding.identifier.name);\n}\n\nfunction getFirstSelectedIdentifierWithName(startPath, name) {\n  if (t.isIdentifier(startPath.node, { name: name })) {\n    return startPath;\n  }\n  var first;\n  startPath.traverse({\n    Identifier(path) {\n      if (!first && t.isIdentifier(path.node, { name: name })) {\n        first = path;\n        path.stop();\n      }\n    }\n  });\n  return first;\n}\n\nfunction hasASTBinding(identifier) {\n  if (!identifier.scope.hasBinding(identifier.node.name)) return false;\n\n  const binding = identifier.scope.getBinding(identifier.node.name);\n  if (!binding) return false;\n\n  const identifierPaths = [...new Set([getBindingDeclarationIdentifierPath(binding), ...binding.referencePaths, ...binding.constantViolations.map(cv => getFirstSelectedIdentifierWithName(cv, binding.identifier.name))])];\n  return identifierPaths.includes(identifier);\n}/* Context: {\"context\":{\"prescript\":\"\",\"postscript\":\"\"},\"customInstances\":[{\"id\":\"2025_8b45_d12e\",\"name\":\"source_f1\",\"code\":\"return `\\n\\nfunction f1() {\\n  return 3 + 4\\n}\\n\\n`;\"}]} */"]}