{"version":3,"names":["ValueResponse","Scheme","LivelyFile","LivelySearch","LivelyOpen","LivelyBrowse","LivelyWikipedia","LivelyEdit","CachedRequest","ElementQuery","ElementQueryAll","InnerHTMLElementQuery","StringScheme","NumberScheme","DateScheme","BooleanScheme","Lively4URLScheme","GSScheme_Stub","loadJSON","saveJSON","hasItem","LocalStorageFileSystem","LocalStorageFileSystemScheme","DelegationScheme","PolymorphicIdentifier","__SystemJSRewritingHack","FileCache","_export","default","setters","_reactiveJsx","_addSourceLocation","addSourceLocation","_srcClientFileindexJs","FileIndex","_srcClientUtilsLocalStorageJs","execute","_recorder_","_src_client_poid_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","value","status","_value","object","text","json","jsonString","JSON","stringify","parse","blob","Error","url","scheme","GET","Response","PUT","OPTIONS","POST","DELETE","MKCOL","handle","options","resolve","method","error","PATCH","HEAD","ok","message","fail","response","content","contentType","headers","undefined","pathToFile","fileURL","selector","replace","decodeURI","element","document","body","subSelector","split","parentElement","querySelector","e","console","warn","log","tagName","fetch","newfile","filename","parentURL","parent","siblings","Array","from","querySelectorAll","sort","a","b","aPos","lively","getPosition","bPos","y","x","create","file","end","column","line","start","name","setPosition","pt","length","lastSibling","last","pos","addPt","getExtent","showElement","setContent","fileToStat","withChildren","fileToURI","type","contents","childNodes","filter","ea","classList","contains","map","generateResult","dbQuery","result","count","each","title","searchString","toString","match","current","db","files","where","equals","root","lively4url","roots","concat","preferences","find","eaRoot","startsWith","m","openString","openComponentInWindow","livelyExample","donotfollowpath","openBrowser","lang","term","setExtent","setAttribute","setURL","hideMenubar","realURL","RegExp","cacheURL","asCacheURL","promisedCache","_promisedCache","self","caches","open","cache","request","put","clone","delete","invalidateCache","me","lively4fetchHandlers","isPolymorphicIdentifierCacheHandler","push","finsihed","pathToElement","elementURL","elementToURI","id","elementIdQuery","elementToStat","pathToElements","elements","innerHTML","string","URL","pathname","parseFloat","Date","parseInt","_fetch","filePath","delegatee","_delegatee","_delegateePromise","Promise","_delegateeResolve","delegateTo","holdOff","methodName","args","NewScheme","migrateTo","key","_key","init","localStorage","setItem","remove","removeItem","exists","_context2","call","_context3","fs","_context4","getFile","path","remainingPath","part","entry","currentPath","shift","setFile","fileName","pop","folder","existFile","deleteFile","deleteEntry","existFolder","createFolder","folderName","deleteFolder","emtryName","statEntry","entries","lsfsKey","initFS","_context5","config","defaultConfig","_context6","resetFS","sub","endsWith","stats","delegatedURL","isPolymorphicIdentifierHandler","load","forEach","register","schemaFor","schemas","schema","handler","navigator","serviceWorker","removeEventListener","addEventListener","evt","data","ports","postMessage","then","r","event","err"],"sources":["poid.js"],"sourcesContent":["/*MD # Polymorphic Identifier \n[architecture](browse://doc/architecture/polymorphic-identifiers.md)\nMD*/\n\nimport FileIndex from 'src/client/fileindex.js'\nvar FileCache = FileIndex;\n\nexport class ValueResponse {\n \n  constructor(value, { status = 200 } = {}) {\n    this._value = value;\n    this.status = status;\n  }\n  \n  async object() {\n    return this._value;\n  }\n  \n  async value() {\n    return this._value;\n  }\n  \n  async text() {\n    return '' + this._value;\n  }\n\n  async json() {\n    const jsonString = JSON.stringify(await this.value());\n    return JSON.parse(jsonString);\n  }\n\n  async blob() {\n    throw new Error(\"blob not supported\")\n  }\n}\n\nexport class Scheme {  \n  constructor(url) {\n    this.url = url\n  }\n  \n  get scheme() {\n    throw new Error(\"subcluss responsibility\")\n  }\n\n  static get scheme() {\n    return (new this()).scheme\n  } \n  \n  GET() {\n    return new Response(\"not supported yet\", {status: 300})\n  }\n\n  PUT() {\n    return new Response(\"not supported yet\", {status: 300})\n  }\n\n  OPTIONS() {\n    return new Response(\"not supported yet\", {status: 300})\n  }\n\n  POST() {\n    return new Response(\"not supported yet\", {status: 300})\n  }\n\n  DELETE() {\n    return new Response(\"not supported yet\", {status: 300})\n  }\n\n  MKCOL() {\n    return new Response(\"not supported yet\", {status: 300})\n  }\n\n  async handle(options) {\n    if (!this.resolve()) {\n      if (this.PUT && options && options.method == \"PUT\") {\n        return this.PUT(options, true)  \n      }\n      \n      if (options && options.method == \"OPTIONS\") {\n        return new Response(JSON.stringify({error: \"Could not resolve \" + this.url}), {status: 404})  \n      }\n      return new Response(\"Could not resolve \" + this.url, {status: 404})\n    }  \n    if (this.GET && (!options || !options.method  || options.method == \"GET\")) { // GET is default\n      return this.GET(options)\n    } else if (this.PUT && options.method == \"PUT\") {\n      return this.PUT(options)\n    } else if (this.OPTIONS && options.method == \"OPTIONS\") {\n      return this.OPTIONS(options)\n    } else if (this.PATCH && options.method == \"PATCH\") {\n      return this.PATCH(options)\n    } else if (this.POST && options.method == \"POST\") {\n      return this.POST(options)\n    } else if (this.DELETE && options.method == \"DELETE\") {\n      return this.DELETE(options)\n    } else if (this.HEAD && options.method == \"HEAD\") {\n      return this.HEAD(options)\n    } else if (this.MKCOL && options.method == \"MKCOL\") {\n      return this.MKCOL(options)\n    }\n    \n    return new Response(\"Request not supported\", {status: 400})    \n  }     \n\n  /*MD ## response utils \n  intended as convenience functions for subclasses\n  MD*/\n\n  ok(message) {\n    return new Response(message, {status: 200});\n  }\n  \n  fail(message) {\n    return new Response(message, {status: 400});\n  }\n\n  response(content, contentType) {\n    return new Response(content, {\n      headers: {\n        \"content-type\": contentType\n      },\n      status: 200\n    });\n  }\n\n  json(json) {\n    var content = JSON.stringify(json, undefined, 2);\n    return this.response(content, \"application/json\");\n  }\n  \n  text(text, contentType = \"text\") {\n    return this.response(text, contentType);\n  }\n\n}\n\n/* \n  EXAMPLES:\n    fetch(\"livelyfile://#README.md\").then(t => t.text())\n    fetch(\"livelyfile://#README2.md\", {method: \"PUT\", body: \"heyho\"})\n*/\n\nexport class LivelyFile extends Scheme {\n  \n  get scheme() {\n    return \"livelyfile\"\n  }\n\n  static pathToFile(fileURL) {\n    var selector = fileURL.replace(/^[a-zA-Z]+:\\/\\//,\"\") // .replace(/\\./,\"\\\\.\")\n    selector = decodeURI(selector)\n    var element = document.body\n    for(var subSelector of selector.split(\"/\")) {\n      if (subSelector == \"\") {\n        // nothing\n      } else if (subSelector == \"..\") {\n        if (element) {\n          element = element.parentElement          \n        }\n      } else {\n        try {\n          element = element.querySelector(`:scope > [name=\"${subSelector.replace(/\\./,\"\\\\.\")}\"]`)\n        } catch(e) {\n          console.warn(\"query error \" + e)\n          return undefined\n        }              \n      }\n    }\n    return element\n  }\n  \n  \n  resolve() {\n    this.element = LivelyFile.pathToFile(this.url)\n    console.log(\"found \" + this.element, this.url)\n    // lively.showElement(this.element) // very funny to see which file is asked...\n    return this.element \n  }  \n\n  GET(options) {\n    console.log(\"LivelyFile GET \" + this.url)\n    var element = this.element\n    if (element.tagName == \"LIVELY-FILE\") {\n      if (!element.url) {\n         return new Response(`lively-file found, but url attribute is missing...`, {status: 500})\n      }\n      return fetch(element.url)\n    }\n    return super.GET(options)\n  }\n\n  async PUT(options, newfile) {\n    if (newfile) {\n      \n      var filename = this.url.replace(/.*\\//,\"\")\n      var parentURL = this.url.replace(/\\/[^/]*$/,\"\")\n      var parent = LivelyFile.pathToFile(parentURL) \n      if (!parent) {\n        return new Response(`Could not create ${filename}, because parent element not found: ${parentURL}`, {status: 404})\n      } \n      var siblings = Array.from(parent.querySelectorAll(\":scope > lively-file\")).sort((a,b) => {\n        var aPos = lively.getPosition(a),\n          bPos =  lively.getPosition(b)\n        if (aPos.y == bPos.y ) {\n          return aPos.x - bPos.x\n        }\n        return aPos.y - bPos.y\n      })\n      this.element = await lively.create(\"lively-file\", parent)\n      this.element.name = filename\n      lively.setPosition(this.element, lively.pt(0,0))\n      if (siblings.length > 0 ) {\n        var lastSibling = siblings.last\n        var pos = lively.getPosition(lastSibling)\n        pos = pos.addPt(lively.pt(80,0))\n        if (pos.x + 50 > lively.getExtent(parent).x) {\n          pos = lively.pt(0, pos.y + 80)\n        } \n        \n        lively.setPosition(this.element, pos)\n        \n      }\n      \n      lively.showElement(this.element)\n      \n    }\n    \n    var element = this.element\n    if (element.tagName == \"LIVELY-FILE\") {\n        if (element.setContent && options) {\n          element.setContent(options.body, options.headers && options.headers['Content-Type'])\n          return new Response(\"\")\n        } else {\n          return new Response(\"Hmm... I don't know.\", {status: 500})      \n        }\n      }\n    return super.PUT(options)\n  }\n  \n  fileToStat(element, withChildren) {\n    return {\n      name: element.name,\n      parent: LivelyFile.fileToURI(element.parentElement),\n      type: element.tagName == \"LIVELY-FILE\" ? \"file\" : \"directory\",\n      contents: withChildren ? (Array.from(element.childNodes)\n        .filter(ea => ea.name && ea.classList && ea.classList.contains(\"lively-content\"))\n        .map(ea => this.fileToStat(ea, false))) : undefined\n    }\n  }\n  \n  static fileToURI(file) {\n    if (!file.parentElement) {\n      return this.scheme + \"://\"\n    }\n    var url = this.fileToURI(file.parentElement) \n    if (file.name) {\n      url += \"/\" + file.name\n    } else {\n      // we should not allow this?\n    }\n    return url\n  }\n  \n  OPTIONS() {\n    var element = this.element\n    if (element) {\n      return new Response(JSON.stringify(this.fileToStat(element, true)))\n    }\n    return new Response(\"We cannot do that\", {status: 400})\n  }\n}\n\n\nexport class LivelySearch extends Scheme {\n  \n  get scheme() {\n    return \"search\"\n  }\n\n  resolve() {\n    return true\n  }  \n\n  async generateResult(dbQuery) {\n    var result = \"\"\n    var count = 0\n    await dbQuery.each(ea => {\n        result += `<li>${++count}. <a href=\"${ea.url}\">${ea.name}: ${\n          ea.title.replace(/</g,\"&lt;\")}</a></li>`\n    })\n    if (count == 0) {\n      result += \"<b>no files found</b>\"\n    }\n    return result\n  }\n  \n  async GET(options) {\n    var searchString = this.url.toString().replace(/^search:\\/\\//,\"\") \n    var result = \"\"\n    if (searchString.match(\"name=\")) {\n      var filename = searchString.replace(/name=/g,\"\")\n      result += await this.generateResult(\n        FileCache.current().db.files.where(\"name\").equals(filename))\n    // } else if (searchString.match(/^#/)) {\n    //   var tag = searchString\n    //   result += await this.generateResult(\n    //     FileCache.current().db.files.where(\"tags\").notEqual([]).filter(ea => ea.tags.indexOf(tag) != -1))\n    } else {\n      var root = lively4url \n      var roots = [root].concat(lively.preferences.get(\"ExtraSearchRoots\"))\n      var count = 0\n      await FileIndex.current().db.files.each(file => {\n        if (roots.find(eaRoot => file.url.startsWith(eaRoot)) && file.content) {\n          var m = file.content.match(searchString)\n          if (m) {\n             result += `<li>${++count}. <a href=\"${file.url}\">${file.name}: ${\n                file.title.replace(/</g,\"&lt;\")}</a></li>`\n          }\n        }\n      })\n    }\n    // result = \"<b>nothing found</b>\"  \n    \n    // #Hack, if we are in a \"browser\" just... go forward\n    result += `\n<div>\n<script data-name=\"livelyLoad\" type=\"lively4script\">\nfunction livelyLoad() {\nvar links = this.parentElement.querySelectorAll(\"a\")\n\nif (links.length == 1) {\n\n  if (lively.lastBackButtonClicked && (Date.now() - lively.lastBackButtonClicked < 2000)) {\n    lively.notify(\"Prevent auto navigation... we just clicked back...\")\n    return\n  } \n  lively.notify(\"only one link? Click on it!\")\n  links[0].dispatchEvent( new MouseEvent('click', {\n     view: window,\n     bubbles: true,\n     cancelable: true\n  }))\n}\n}\n</script>\n</div>\n`\n    return new Response(`<h1>Search: ${searchString}</h1>\\n${result}`, {status: 200})\n    \n    \n    // return new Response(\"<h1>Nothing found</h1>\", {status: 200})\n  }\n\n  PUT(options) {\n    return new Response(\"Does not make sense, to PUT a search...\", {status: 400})\n  }\n    \n  OPTIONS() {\n    var result = {\n      name: \"Search\",\n      type: \"directory\",\n      contents: []\n    }\n    return new Response(JSON.stringify(result), {status: 200})\n  }\n}\n\nexport class LivelyOpen extends Scheme {\n  \n  get scheme() {\n    return \"open\"\n  }\n\n  resolve() {\n    return true\n  }  \n  \n  async GET(options) {\n    var openString = this.url.toString().replace(/^open:\\/\\//,\"\") \n    var result\n    try {\n      result = await lively.openComponentInWindow(openString)\n      if (result.livelyExample) result.livelyExample(); // fill in with example content}\n    } catch(e) {\n      return new Response(\"failed to open \" + openString, {status: 400})\n    }\n    \n    return new ValueResponse(result, {status: 200});\n    \n  }\n\n  PUT(options) {\n    return new Response(\"Does not make sense, to PUT a search...\", {status: 400})\n  }\n    \n  OPTIONS() {\n    var result = {\n      name: \"open \",\n      type: \"file\",\n      donotfollowpath: true,\n      contents: []\n    }\n    return new Response(JSON.stringify(result), {status: 200})\n  }\n}\n\n\nexport class LivelyBrowse extends Scheme {\n  \n  get scheme() {\n    return \"browse\"\n  }\n\n  resolve() {\n    return true\n  }  \n  \n  async GET(options) {\n    var openString = this.url.toString().replace(/^browse:\\/\\//,\"\") \n    var result\n    try {\n      \n      result = await lively.openBrowser(lively4url + \"/\" + openString )\n    } catch(e) {\n      return new Response(\"failed to open \" + openString, {status: 400})\n    }\n    \n    return new ValueResponse(result, {status: 200});\n    \n  }\n\n  PUT(options) {\n    return new Response(\"Does not make sense, to PUT a search...\", {status: 400})\n  }\n    \n  OPTIONS() {\n    var result = {\n      name: \"open \",\n      type: \"file\",\n      donotfollowpath: true,\n      contents: []\n    }\n    return new Response(JSON.stringify(result), {status: 200})\n  }\n}\n\n// #TODO conflict with src/client/protocols/wikipedia.js\nexport class LivelyWikipedia extends Scheme {\n  \n  get scheme() {\n    return \"xwikipedia\"\n  }\n\n  resolve() {\n    return true\n  }  \n  \n  async GET(options) {\n\n    var result\n    try {\n      var m = this.url.toString().match(/^wikipedia:\\/?\\/?([a-z]*)\\/?(.*)/,\"\") \n      var lang = m[1] || \"en\"\n      var term = m[2] || \"\"\n      result = await lively.openComponentInWindow(\"lively-iframe\")\n      lively.setExtent(result.parentElement, lively.pt(800, 600))\n      result.parentElement.setAttribute(\"title\",\"Wikipedia: \" + term)\n      \n      result.setURL(`https://${lang}.wikipedia.org/wiki/${term}`)\n      result.hideMenubar()\n    } catch(e) {\n      return new Response(\"failed to open \" + term, {status: 400})\n    }\n    return new ValueResponse(result, {status: 200});\n  }\n\n  PUT(options) {\n    return new Response(\"Does not make sense, to PUT a search...\", {status: 400})\n  }\n    \n  OPTIONS() {\n    var result = {\n      name: \"open \",\n      type: \"file\",\n      donotfollowpath: true,\n      contents: []\n    }\n    return new Response(JSON.stringify(result), {status: 200})\n  }\n}\n\n\n\n\nexport class LivelyEdit extends LivelyBrowse {\n  \n  get scheme() {\n    return \"edit\"\n  }\n\n  async GET(options) {\n    var openString = this.url.toString().replace(/^edit:\\/\\//,\"\") \n    var result\n    try {\n      \n      result = await lively.openBrowser(lively4url + \"/\" + openString, true )\n    } catch(e) {\n      return new Response(\"failed to open \" + openString, {status: 400})\n    }\n    \n    return new ValueResponse(result, {status: 200});\n    \n  }\n\n}\n\n/*MD ## Cache Scheme\n\nExplicit caching API of requests through the browser cache API on some \n\nThe cache fill be cleared:\n\n1. when PUT/DELETE through cache API\n2. when PUT/DELETE through any other fetch request\n3. when calling invalidate caches\n\n### Open Issues:\n\n- we should clear them on reload/boot any way.... #TODO \n- or be more clever an ask the server if they changed....? #TODO\n\n<style>\n  pre {\n    margin: 10px;\n    padding: 10px;\n    background-color: lightgray  \n  }\n</style>\n\n\n```javascript\nfetch(\"cached:https://lively-kernel.org/lively4/lively4-dummy/foo.js\").then(r => r.text())\n\n\nfetch(\"cached:https://lively-kernel.org/lively4/lively4-dummy/foo.js\", {\n  method: \"PUT\",\n  body: `\nexport function bar() {\n  return 9\n}`\n}).then(r => r.text())\n\n\nfetch(\"https://lively-kernel.org/lively4/lively4-dummy/foo.js\", {\n  method: \"PUT\",\n  body: `\nexport function bar() {\n  return 8\n}`\n}).then(r => r.text())\n```\n\nMD*/\n\n\n/*MD # Cache\n\n - #TODO does not handle mime type!\n\nMD*/\nexport class CachedRequest extends Scheme {\n  \n  get scheme() {\n    return \"cached\"\n  }\n\n  resolve() {\n    this.realURL = this.url.replace(new RegExp(\"^\" + this.scheme + \":/?/?\"),\"\") // #Hack\n    return true\n  }  \n  \n  get cacheURL() {\n    return this.asCacheURL(this.realURL) \n  }\n  \n  asCacheURL(url) {\n    return \"https://\" + url.replace(/:/ig, '__') // Hack, to convice the CACHE API \n  }\n  \n  get promisedCache() {\n    if (!this._promisedCache) {\n      this._promisedCache = self.caches.open(\"PoidCachesScheme\")\n    }\n    return this._promisedCache\n  }\n  \n  async GET(options) {\n    var cache = await this.promisedCache;\n    var request = this.cacheURL  \n    var result = await cache.match(request)\n    if (!result) {\n      result = await fetch(this.realURL)\n      if (!result.ok) {\n        console.error(\"Bad Response Status for: \" + this.realURL)\n      }\n      cache.put(request, result.clone())\n    }\n    return result\n  }\n\n  async PUT(options) {\n    var cache = await this.promisedCache;\n    cache.delete(this.cacheURL)\n    return fetch(this.realURL, options)\n  }\n\n  async DELETE(options) {\n    var cache = await this.promisedCache;\n    cache.delete(this.cacheURL)\n    return fetch(this.realURL, options)\n  }\n\n  static async invalidateCache(url) {\n    try {\n      var me = new CachedRequest()\n      var cache = await me.promisedCache;\n      cache.delete(me.asCacheURL(url))      \n    } catch(e) {\n      console.log(\"CachePoindError: \", e)\n    }\n  }\n  \n  async OPTIONS(options) {\n    return fetch(this.realURL, options)\n  }\n}\n\n\nif (self.lively4fetchHandlers) {\n  \n  // get rid of old mes?\n  self.lively4fetchHandlers = self.lively4fetchHandlers\n    .filter(ea => !ea.isPolymorphicIdentifierCacheHandler)\n  \n  self.lively4fetchHandlers.push({\n    isPolymorphicIdentifierCacheHandler: true,\n    finsihed(url, options={}) {\n      if (options.method == \"PUT\" || options.method == \"DELETE\") {\n        CachedRequest.invalidateCache(url) \n      }\n      \n    }\n  })  \n}\n\n\n/* \n  EXAMPLES:\n    // fetch(\"query://#haha\", {method: \"PUT\", body: \"<h1>foo</h1>heyho\"})\n    fetch(\"query://#haha\")\n*/\nexport class ElementQuery extends Scheme {\n  \n  get scheme() {\n    return \"query\"\n  }\n  \n  static pathToElement(elementURL) {\n    var selector = elementURL.replace(/^[a-zA-Z]+:\\/\\//,\"\") // .replace(/\\./,\"\\\\.\")\n    selector = decodeURI(selector)\n    var element = document.body\n    for(var subSelector of selector.split(\"/\")) {\n      if (subSelector == \"\") {\n        // nothing\n      } else if (subSelector == \"..\") {\n        if (element) {\n          element = element.parentElement          \n        }\n      } else {\n        try {\n          element = element.querySelector(subSelector)\n        } catch(e) {\n          console.warn(\"query error \" + e)\n          return undefined\n        }              \n      }\n    }\n    return element\n  }\n  \n  resolve() {\n    this.element = ElementQuery.pathToElement(this.url)\n    return this.element\n  }\n  \n  GET(options) {\n    var element = this.element\n    if (element) {\n      return new ValueResponse(element, {status: 200});\n    }\n    return super.GET(options)\n  }\n  \n  elementToURI(element) {\n    if (!element.parentElement) {\n      return this.scheme + \"://\"\n    }\n    var url = this.elementToURI(element.parentElement) \n    if (element.id) {\n      url += \"/\" + this.elementIdQuery(element) \n    }\n    return url\n  }\n  \n  elementIdQuery(element) {\n    return \"#\" + element.id.replace(/\\./g, \"\\\\.\")\n  }\n  \n  elementToStat(element, withChildren) {\n    return {\n      name: element.id ? this.elementIdQuery(element) : element.tagName, // quote points, because they are SYNTAX\n      type: \"element\",\n      parent: this.elementToURI(element.parentElement), // URI to parent element / file / for navigation...\n      contents: withChildren ? (Array.from(element.childNodes)\n        .filter(ea => ea.id)\n        .map(ea => this.elementToStat(ea, false))) : undefined\n    }\n  }\n  \n  OPTIONS() {\n    if (this.element) {\n      return new Response(JSON.stringify(this.elementToStat(this.element, true)))\n    }\n    return new Response(\"We cannot do that\", {status: 400})\n  }\n}\n\n\n/* \n  EXAMPLES:\n    fetch(\"queryall://div\")\n*/\nexport class ElementQueryAll extends Scheme {\n  \n  get scheme() {\n    return \"queryall\"\n  }\n\n  \n  static pathToElements(elementURL) {\n    var selector = elementURL.replace(/^[a-zA-Z]+:\\/\\//,\"\").replace(/\\./,\"\\\\.\")\n    selector = decodeURI(selector)\n    if (selector  == \"\") return document\n    try {\n      var elements = Array.from(document.querySelectorAll(selector))\n    } catch(e) {\n      console.warn(\"query error \" + e)\n      return undefined\n    }\n    return elements\n  }\n  \n  resolve() {\n    this.elements = ElementQueryAll.pathToElements(this.url)\n    return this.elements\n  }\n  \n  GET(options) {\n    if (this.elements) {\n      return new ValueResponse(this.elements, {status: 200});\n    }\n    return super.GET(options)\n  }\n  \n}\n\n/* \n  EXAMPLES:\n    fetch(\"innerhtml://#haha\", {method: \"PUT\", body: \"<h1>foo</h1>heyho\"})\n    fetch(\"innerhtml://#haha\").then(t => t.text())\n*/\nexport class InnerHTMLElementQuery extends ElementQuery {\n  get scheme() {\n    return \"innerhtml\"\n  }\n\n  GET(options) {\n    var element = this.element\n    if (element) {\n      return new Response(element.innerHTML, {status: 200})      \n\n    }\n    return super.GET(options)\n  }\n\n  PUT(options) {\n    var element = this.element\n    if (element) {\n      element.innerHTML = options && options.body ? options.body : \"\" \n      return new Response(\"\")\n    }\n    return super.PUT(options)\n  }\n  \n \n}\n\nexport class StringScheme extends Scheme {\n\n  get scheme() { return \"string\"; }\n  resolve() { return true; }\n\n  GET(options) {\n    const string = new URL(this.url).pathname;\n    return new ValueResponse(string, {status: 200})      \n  }\n\n}\n\nexport class NumberScheme extends Scheme {\n\n  get scheme() { return \"number\"; }\n  resolve() { return true; }\n\n  GET(options) {\n    const content = new URL(this.url).pathname;\n    return new ValueResponse(parseFloat(content), {status: 200})      \n  }\n\n}\n\nexport class DateScheme extends Scheme {\n\n  get scheme() { return \"date\"; }\n  resolve() { return true; }\n\n  GET(options) {\n    const content = new URL(this.url).pathname;\n    return new ValueResponse(new Date(parseInt(content)), {status: 200})      \n  }\n\n}\n\nexport class BooleanScheme extends Scheme {\n\n  get scheme() { return \"bool\"; }\n  resolve() { return true; }\n\n  GET(options) {\n    const content = new URL(this.url).pathname;\n    return new ValueResponse(content === 'true' ? true : false, {status: 200})\n  }\n\n}\n\nexport class Lively4URLScheme extends Scheme {\n  \n  get scheme() {\n    return \"lively4url\";\n  }\n\n  resolve() {\n    return true;\n  }  \n  \n  _fetch(options) {\n    const filePath = lively4url + \"/\" + new URL(this.url).pathname;\n    lively.warn(filePath, options && options.method)\n    return fetch(lively4url + \"/\" + new URL(this.url).pathname, options);\n  }\n  \n  async GET(options) {\n    return this._fetch(options);\n  }\n\n  PUT(options) {\n    return this._fetch(options);\n  }\n    \n  OPTIONS(options) {\n    return this._fetch(options);\n  }\n}\n\nexport class GSScheme_Stub extends Scheme {\n  \n  get scheme() {\n    return \"gs\";\n  }\n\n  resolve() {\n    return true\n  }\n\n  static async delegatee() {\n    if (this._delegatee) {\n      return this._delegatee;\n    } else {\n      return this._delegateePromise = this._delegateePromise || new Promise(resolve => this._delegateeResolve = resolve);\n    }\n  }\n\n  static delegateTo(Scheme) {\n    this._delegatee = Scheme;\n    this._delegateeResolve && this._delegateeResolve(this._delegatee);\n  }\n\n  async holdOff(methodName, ...args) {\n    const NewScheme = await GSScheme_Stub.delegatee();\n    this.migrateTo(NewScheme);\n    return this[methodName](...args);\n  }\n\n  async GET(...args) { return this.holdOff('GET', ...args); }\n  async PUT(...args) { return this.holdOff('PUT', ...args); }\n  async OPTIONS(...args) { return this.holdOff('OPTIONS', ...args); }\n  async POST(...args) { return this.holdOff('POST', ...args); }\n  async DELETE(...args) { return this.holdOff('DELETE', ...args); }\n}\n\nimport { loadJSON, saveJSON, hasItem} from 'src/client/utils/local-storage.js'\n\nexport class LocalStorageFileSystem {\n\n  constructor(key) {\n    this._key = key\n  }\n  \n  create(init = {}) {\n    localStorage.setItem(this._key, JSON.stringify(init))\n  }\n  remove() {\n    localStorage.removeItem(this._key)\n  }\n  \n  exists() {\n    return localStorage::hasItem(this._key)\n  }\n  get root() {\n    return localStorage::loadJSON(this._key)\n  }\n  set root(fs) {\n    return localStorage::saveJSON(this._key, fs)\n  }\n\n  getFile(path) {\n    const remainingPath = path.split('/').filter(part => part !== '')\n    \n    let entry = this.root;\n    while (remainingPath.length > 0) {\n      let currentPath = remainingPath.shift();\n      entry = entry[currentPath];\n      if (!entry) {\n        throw new Error(`no file found at ${path}.`)\n      }\n    }\n    return entry;\n  }\n\n  setFile(path, text) {\n    const remainingPath = path.split('/').filter(part => part !== '')\n    const fileName = remainingPath.pop()\n\n    const root = this.root\n    let folder = root;\n    while (remainingPath.length > 0) {\n      let currentPath = remainingPath.shift();\n      if (typeof folder !== 'object') {\n        throw new Error(`${currentPath} is no folder`)\n      }\n      folder = folder[currentPath];\n    }\n\n    folder[fileName] = text;\n    this.root = root;\n  }\n\n  existFile(path) {\n    const remainingPath = path.split('/').filter(part => part !== '')\n\n    let file = this.root;\n    while (remainingPath.length > 0) {\n      let currentPath = remainingPath.shift();\n      if (typeof file !== 'object') {\n        return false\n      }\n      file = file[currentPath];\n    }\n\n    return typeof file === 'string';\n  }\n  \n  deleteFile(path) {\n    this.deleteEntry(path);\n  }\n\n  existFolder(path) {\n    const remainingPath = path.split('/').filter(part => part !== '')\n\n    let folder = this.root;\n    while (remainingPath.length > 0) {\n      let currentPath = remainingPath.shift();\n      if (typeof folder !== 'object') {\n        return false\n      }\n      folder = folder[currentPath];\n    }\n\n    return typeof folder === 'object';\n  }\n\n  createFolder(path) {\n    const remainingPath = path.split('/').filter(part => part !== '')\n    const folderName = remainingPath.pop()\n\n    if (!folderName) {\n      throw new Error('cannot create root');\n    }\n\n    const root = this.root\n    let folder = root;\n    while (remainingPath.length > 0) {\n      let currentPath = remainingPath.shift();\n      if (typeof folder[currentPath] !== 'object') {\n        throw new Error(`${currentPath} is no folder`)\n      }\n      folder = folder[currentPath];\n    }\n    folder[folderName] = {}\n\n    this.root = root;\n  }\n  \n  deleteFolder(path) {\n    this.deleteEntry(path);\n  }\n\n  deleteEntry(path) {\n    const remainingPath = path.split('/').filter(part => part !== '')\n    const emtryName = remainingPath.pop()\n\n    const root = this.root\n    let folder = root;\n    while (remainingPath.length > 0) {\n      let currentPath = remainingPath.shift();\n      if (typeof folder !== 'object') {\n        throw new Error(`${currentPath} is no folder`)\n      }\n      folder = folder[currentPath];\n    }\n\n    delete folder[emtryName];\n    this.root = root;\n  }\n\n\n\n  statEntry(path) {\n    const remainingPath = path.split('/').filter(part => part !== '')\n\n    const root = this.root\n    let entry = root;\n    let currentPath;\n    while (remainingPath.length > 0) {\n      currentPath = remainingPath.shift();\n      if (typeof entry !== 'object') {\n        throw new Error(`${currentPath} is not applied on a folder`)\n      }\n      entry = entry[currentPath];\n    }\n    \n    const parent = path.replace(/[^/]+\\/?$/, '')\n    \n    if (typeof entry === 'string') {\n      return {\n        type: 'file',\n        name: currentPath,\n        parent\n      }\n    }\n\n    if (typeof entry === 'object') {\n      return {\n        type: 'directory',\n        contents: Object.entries(entry).map(([key, value]) => {\n          return {\n            name: key,\n            type: typeof value === 'object' ? 'directory' : 'file'\n          };\n        }),\n        parent\n      }\n    }\n\n    throw new Error(`${entry} is neither a file nor a folder`)\n  }\n\n}\n\nexport class LocalStorageFileSystemScheme extends Scheme {\n\n  resolve() {\n    this.fs = new LocalStorageFileSystem(this.lsfsKey)\n    this.initFS();\n\n    return true\n  }  \n\n  /*MD ## constants MD*/\n\n  get scheme() {\n    return \"lsfs\"\n  }\n  \n  get lsfsKey() {\n    return 'LocalStorageFileSystem';\n  }\n  \n  /*MD ## root access MD*/\n  get root() {\n    const config = localStorage::loadJSON(this.lsfsKey);\n    if (config) {\n      return config;\n    }\n    return this.defaultConfig();\n  }\n  set root(fs) {\n    this.initFS();\n\n    return localStorage::saveJSON(this.lsfsKey, fs);\n  }\n  resetFS() {\n    return localStorage.removeItem(this.lsfsKey);\n  }\n  initFS() {\n    if (this.fs.exists()) {\n      return;\n    }\n\n    this.fs.create({\n      sub: {\n        'bar.js': 'lively.notify(\"bar\");'\n      },\n      'foo.js': 'lively.notify(\"foo\");'\n    });\n  }\n\n  get path() {\n    return this.url.replace(/^lsfs:\\/\\//gi, '');\n  }\n\n  /*MD ## operations MD*/\n  GET(options) {\n    if (!this.url.startsWith('lsfs://')) {\n      return this.fail(`invalid path given. paths start with \"${this.lsfsKey}\"`);\n    }\n\n    // this is a file\n    if (!this.url.endsWith('/')) {\n      try {\n        const content = this.fs.getFile(this.path)\n        return this.text(content)\n      } catch (e) {\n        return this.fail(`Error in GET ${this.url}: ${e.message}`)\n      }\n    }\n\n    return this.fail(`getting folders not supported yet (${this.url})`);\n  }\n\n  async PUT(options, newfile) {\n    if (!this.url.startsWith('lsfs://')) {\n      return this.fail(`invalid path given. paths start with \"${this.lsfsKey}\"`);\n    }\n    \n    // this is a file\n    if (!this.url.endsWith('/')) {\n      try {\n        const content = this.fs.setFile(this.path, (options && options.body) ? options.body : '')\n        return this.text('works!')\n      } catch (e) {\n        return this.fail(`Error in PUT ${this.url}: ${e.message}`)\n      }\n    }\n\n    return this.fail(`putting folders not supported yet (${this.url})`);\n  }\n  \n  OPTIONS() {\n    // lively.notify(this.url)\n    if (!this.url.startsWith('lsfs://')) {\n      return this.fail(`invalid path given. paths start with \"${this.lsfsKey}\"`);\n    }\n    \n    try {\n      const stats = this.fs.statEntry(this.path)\n      stats.parent = 'lsfs://' + stats.parent//.replace(/\\/$/ig, '')\n      // delete stats.parent\n      // lively.notify(stats.parent)\n      // delete stats.parent\n      return this.json(stats)\n    } catch (e) {\n      return this.fail(`Error in OPTIONS ${this.url}: ${e.message}`)\n    }\n  }\n  \n  MKCOL() {\n    if (!this.url.startsWith('lsfs://')) {\n      return this.fail(`invalid path given. paths start with \"${this.lsfsKey}\"`);\n    }\n    \n    try {\n      this.fs.createFolder(this.path)\n      return this.ok('works!')\n    } catch (e) {\n      return this.fail(`Error in MKCOL ${this.url}: ${e.message}`)\n    }\n  }\n  \n  DELETE() {\n    if (!this.url.startsWith('lsfs://')) {\n      return this.fail(`invalid path given. paths start with \"${this.lsfsKey}\"`);\n    }\n    \n    try {\n      this.fs.deleteEntry(this.path)\n      return this.ok('works!')\n    } catch (e) {\n      return this.fail(`Error in DELETE ${this.url}: ${e.message}`)\n    }\n  }\n}\n\n/*MD # DelegationScheme\n\n- simply delegates the request to the url given as its path\n- useful to, for example, break the dependency between two files tracked by SystemJS (using this scheme, you can update the imported file without triggering a rerun of the dependent file)\n\n#### Example\n<button onclick='System.import(\"src/client/bound-eval.js\").then(m => m.default(lively.query(this, \"#example\").innerText))'>run example</button>\n\n<code id='example'>lively.openBrowser('delegate:https://lively-kernel.org/lively4/aexpr/README.md')</code>\n\n MD*/\nexport class DelegationScheme extends Scheme {\n\n  get scheme() {\n    return \"delegate\"\n  }\n  \n  get delegatedURL() {\n    return new URL(this.url).pathname \n  }\n\n  async handle(options) {\n    return fetch(this.delegatedURL, options);\n  }\n  \n}\n\nexport default class PolymorphicIdentifier {\n  \n  get isPolymorphicIdentifierHandler() {\n    return true;\n  } \n  \n  static get isPolymorphicIdentifierHandler() {\n    return true;\n  } \n  \n  static load() {\n    [\n      LivelyFile, \n      ElementQuery, \n      ElementQueryAll, \n      InnerHTMLElementQuery, \n      LivelySearch,\n      LivelyOpen,\n      LivelyBrowse,\n      LivelyWikipedia,\n      LivelyEdit,\n      CachedRequest,\n      StringScheme,\n      NumberScheme,\n      DateScheme,\n      BooleanScheme,\n      Lively4URLScheme,\n      GSScheme_Stub,\n      LocalStorageFileSystemScheme,\n      DelegationScheme,\n    ].forEach(scheme => this.register(scheme));\n  }\n  \n  static url(request) {\n    if (request && request.url) {\n      return request.url.toString()\n    } else {\n      return request.toString()\n    }\n  }\n  \n  // #Refactor schemeFor\n  static schemaFor(url) {\n    var m = url.match(/^([A-Za-z0-9]+):\\/?\\/?/) // \n    if (!m || !this.schemas) return\n    return this.schemas[m[1]]  \n  }\n  \n  static register(scheme) {\n    if (!this.schemas) this.schemas = {};\n    this.schemas[scheme.scheme] = scheme\n  }\n  \n  static handle(request, options) {\n    var url = this.url(request)\n    var schema = PolymorphicIdentifier.schemaFor(url)\n    if (!schema) return\n    var handler = new schema(url)\n    handler.result = handler.handle(options)\n    return handler\n  }  \n}\n\n\n// overwriting \"fetch\" instead doing it in the service worker has the advantage \n// of havving access to the browser, which we would have to implement through an additional \n// channel back... \n// And we do it because we can support arbitrary URLs that way and don't have to missuse HTTP // requests to https://lively4/\n\n// ContextJS seems to have a problem with this.. so we do it manaally\n\n\nif (self.lively4fetchHandlers) {\n  \n  // get rid of old mes?\n  self.lively4fetchHandlers = self.lively4fetchHandlers\n    .filter(ea => !ea.isPolymorphicIdentifierHandler)\n  \n  self.lively4fetchHandlers.push(PolymorphicIdentifier)  \n\n}\n\n// if (!window.originalFetch) window.originalFetch = window.fetch\n// window.fetch = async function(request, options, ...rest) {\n//   var handler = PolymorphicIdentifier.handle(request, options)\n//   if (handler) return handler.result;\n//   // #TODO: lazy loading of schemes should go here\n//   return window.originalFetch.apply(window, [request, options, ...rest])\n// }\n\n\n\n\nif (!navigator.serviceWorker) {\n  console.warn(\"POID... could not register message handler with no-existing service worker\")\n} else {\n  lively.removeEventListener(\"poid\", navigator.serviceWorker)\n  lively.addEventListener(\"poid\", navigator.serviceWorker, \"message\", async (evt) => {\n    try {\n      if(!evt.data.name || !evt.data.name.match('swx:pi:')) return; // not for me\n        \n      let m = evt.data.path.match(/^\\/([a-zA-Z0-9]+)(?:\\/(.*))?$/)\n      if (!m) {\n        debugger\n        throw new Error(\"Requested path does not fit a scheme! path='\" + evt.data.path +\"'\")        \n      }\n      let url= m[1] + \"://\" + m[2]    \n      if (!evt.ports[0]) {\n        console.log(\"poid.js got message... but could not answer\")\n        return \n      }\n      if(evt.data.name == 'swx:pi:GET') {\n        evt.ports[0].postMessage({content: await fetch(url).then(r => r.blob())}); \n      } else if(evt.data.name == 'swx:pi:PUT') {\n        evt.ports[0].postMessage({\n          content: await fetch(url, {\n            method: \"PUT\", \n            body: event.data.content\n          }).then(r => r.blob())}); \n      } else if(evt.data.name == 'swx:pi:OPTIONS') {\n        evt.ports[0].postMessage({content: await fetch(url, {\n          method: \"OPTIONS\"\n        }).then(r => r.blob())}); \n      }\n    } catch(err) {\n      evt.ports[0].postMessage({error: err});\n    }\n  });\n}\n\n\nPolymorphicIdentifier.load()\n\n// window.fetch  = window.originalFetch\n// fetch(\"https://lively-kernel.org/lively4/lively4-jens/README.md\")t\n\n\n\n\n"],"mappings":"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"}