## Find all Files
<script>
import babelDefault from 'systemjs-babel-build'
const babel = babelDefault.babel
import FileIndex from "src/client/fileindex.js"
import files from "src/client/files.js"
import d3 from "src/external/d3.v5.js"


(async () => {
 
  var url = lively4url + "/src/client/"
  var fileUrlsMap = new Map()

  console.log("find all")
  await FileIndex.current().db.files.each(element => {
      console.log("element")
      console.log(element)
    })
  console.log("ready find all")
  
  // find all js files
  await FileIndex.current().db.files.where("type").equals("file")
    .filter(function(file) {
      return file.name.endsWith(".js") && file.url.includes(url)
    }).each(element => {
      console.log("element")
      console.log(element)
      fileUrlsMap.set(element.url, element)
      console.log(element.size)
      //console.log(FileIndex.current().parseSource(element.url, element.content))
    })
  console.log("FileMap")
  console.log(fileUrlsMap)
  
  
  var filename = "https://lively-kernel.org/lively4/lively4-core/src/client/fileindex.js"
  var file = fileUrlsMap.get(filename)
  var options  = {
          babelrc: false,
          plugins: [],
          presets: [],
          filename: filename,
          sourceFileName: filename,
          sourceType: "module",
          retainLines : true,
          moduleIds: true,
          sourceMaps: true,
          compact: false,
          comments: false,
          code: false,
          ast: true,
          resolveModuleSource: undefined
      }
      
  
  
  //var ast =  babel.transform(file.content, options).ast
  //console.log(ast)
  
  //var results = parse(ast)
  //console.log(results)
  
  function parse(ast) {
    var functions = []
    var classes = []
    babel.traverse(ast,{
      Function(path) {
        if (path.node.key) {
          functions.push(path.node.key.name)
        } else if (path.node.id) {
          functions.push(path.node.id.name)
        }
      },
      ClassDeclaration(path) {
        if (path.node.id) {
          classes.push(path.node.id.name)
        }
      }
    })
    return {functions, classes}
  }

  
})()


</script>