{"version":3,"names":["proxyRequest","url","options","self","originalFetch","mode","cache","method","headers","redirect","referrer","credentials","body","installProxyFetch","focalStorage","System","import","default","mounts","getItem","lively4fetchHandlers","filter","ea","isProxyFetch","push","handle","request","toString","m","match","result","Response","JSON","stringify","name","contents","mountPoint","rest","json","newMounts","parse","e","setItem","status","proxy","path","base","Error","installAuthorizedFetch","gh","window","lively4github","isAuthFetch","isWriting","ensureGithubLogin","lively","console","log","GitHub","then","loadCredentials","addUserNameAndPassword","username","password","Headers","get","set","baseUrlsAuthNeeded","find","startsWith","token","baseUrlsAuthNeededForWriting","lively4url","installDebugFetch","isDebugFetch","debugEventId","stack","split","slice","map","replace","lively4session","lively4log","installFetchHandlers"],"sources":["fetch.js"],"sourcesContent":["\nvar baseUrlsAuthNeeded = [ \"https://lively-kernel.org/voices\",\"https://lively-kernel.org/research\"] // #TODO how to detect this?\nvar baseUrlsAuthNeededForWriting = [ \"https://lively-kernel.org/lively4\"]\n\nasync function proxyRequest(url, options={}) {\n  // console.log(\"PROXY reqest: \" + options.method + \" \" + url)\n  return self.originalFetch(url, {\n      mode: options.mode,\n      cache: options.cache,\n      method: options.method,\n      headers: options.headers,\n      redirect: options.redirect,\n      referrer: options.referrer,\n      credentials: options.credentials,\n      body: options.body && await options.body\n    })\n}\n\nexport async function installProxyFetch() {\n  var focalStorage = (await System.import(\"src/external/focalStorage.js\")).default\n  \n  var mounts = await focalStorage.getItem(\"lively4mounts\")\n  \n  if (!mounts) return \n  \n  self.lively4fetchHandlers = self.lively4fetchHandlers.filter(ea => !ea.isProxyFetch);\n  \n  self.lively4fetchHandlers.push({\n    isProxyFetch: true,\n    handle(request, options) {\n      var url = (request.url || request).toString()\n      var method = \"GET\"\n      if (options && options.method) method = options.method;\n      var m = url.match(/^https?:\\/\\/lively4(\\/[^/]*)(\\/.*)?/)\n      if (m) {\n        if (m[1] == \"/\") {\n          return {\n              result: new Response(JSON.stringify({\n                name: \"root\",\n                contents: []\n              }, null, 2))\n          }\n        }\n        \n        // console.log(\"proxy fetch \" + url)\n        var mountPoint = m[1]\n        var rest = m[2]\n       \n        if (mountPoint == \"/sys\" && rest == \"/mounts\") {\n          if (method == \"GET\") {\n            return {\n              result: new Response(JSON.stringify(mounts, null, 2))\n            }            \n          } else if (method == \"PUT\") {\n            \n            return {\n              result: (async () => {\n                try {\n                  var json = options.body\n                  var newMounts = JSON.parse(json)\n                } catch(e) {\n                  // json could not be parsed\n                }\n                if (newMounts) {\n                  mounts = newMounts\n                  await focalStorage.setItem(\"lively4mounts\", mounts)\n                  return new Response(\"updated mounts\", {status: 200})\n                } else {\n                  return new Response(\"could not parse json: \" + json, {status: 500})\n                }\n              })()\n            }\n          }\n        }\n        \n        for (var proxy of mounts.filter(ea => ea.name == \"http\")) {\n          if (mountPoint == proxy.path) {\n            if (!proxy.options || !proxy.options.base) \n              throw new Error(\"options.base is missing in mount config for \" + mountPoint)\n            return {\n              result: proxyRequest(proxy.options.base + rest, options)\n            }  \n          }\n        }\n        // give SWX a chance to handle POID requests...\n        // return  {\n        //   result: new Response(\"Could not handle \" + url)\n        // }          \n      }\n    }\n  })\n}\n\n\nexport async function installAuthorizedFetch() {\n  var gh = window.lively4github  \n  self.lively4fetchHandlers = self.lively4fetchHandlers.filter(ea => !ea.isAuthFetch);\n  self.lively4fetchHandlers.push({\n    isAuthFetch: true,\n    handle(request, options) {\n      var url = (request.url || request).toString()\n      var method = \"GET\"\n      if (options && options.method) method = options.method;\n      \n      var isWriting = method != \"OPTIONS\" && method != \"GET\" && method != \"HEAD\"\n      \n      async function ensureGithubLogin() {\n        if (!gh && window.lively) {\n          console.log(\"Ensure Github Credentials: \" + url)\n          var GitHub = await System.import(\"src/client/github.js\").then( m => m.default)\n          window.lively4github =  new GitHub();\n          gh = window.lively4github\n          await gh.loadCredentials()\n        }\n      }\n      \n      function addUserNameAndPassword(options, username=\"anonymous\", password=\"xxx\") {\n        if (!options) options = {};\n        if (!options.headers) options.headers = {};\n        options.headers = new Headers(options.headers) // ensure headers\n\n        // inject authentification tokens into request\n        if (!options.headers.get(\"gitusername\")) {\n            options.headers.set(\"gitusername\",  username)\n        }\n        if (!options.headers.get(\"gitpassword\")) {\n            options.headers.set(\"gitpassword\", password)\n        }\n        return options\n      }\n      \n      if (baseUrlsAuthNeeded.find( ea => url.startsWith(ea))) {\n        return {\n            result: (async () => {\n              console.log(\"AuthorizedFetch: \" + url)\n              await ensureGithubLogin() \n              options =  addUserNameAndPassword(options, gh.username,   await gh.token)\n              return proxyRequest(url, options)\n            })()\n        }          \n      }\n      \n      if  (isWriting && baseUrlsAuthNeededForWriting.find(\n          ea => url.startsWith(ea) && !url.startsWith(lively4url + \"/.transpiled/\")  )) {\n        return {\n            result: (async () => {\n              console.log(\"AuthorizedFetch Write: \" + url)\n              ensureGithubLogin() // but don't wait... we want to avoid deadlocks... or if there is no login..\n              if (gh) {\n                options = addUserNameAndPassword(options, gh.username,  gh.token)\n              } else {\n                options = addUserNameAndPassword(options)\n              }\n              return proxyRequest(url, options)\n            })()\n        }\n      }\n    }\n  })\n}\n\nexport async function installDebugFetch() {\n  self.lively4fetchHandlers = self.lively4fetchHandlers.filter(ea => !ea.isDebugFetch);\n  self.lively4fetchHandlers.push({\n    isDebugFetch: true,\n    options(request, options, debugEventId) {\n      var url = (request.url || request).toString()\n      if (url.match(/lively4(S2)?\\//)) {\n        // console.log(\"DEBUG FETCH \" + url)\n        if (!options) {\n          options = {\n            method: \"GET\"\n          }\n        }\n        if (!options.headers) {\n          options.headers = new Headers()\n        }\n        if (options.headers.set) {\n          var stack = self.lively ? ''+lively.stack() : \"\";\n          if(!options.headers.get(\"debug-initiator\")) {\n            options.headers.set(\"debug-initiator\", JSON.stringify(stack.split(\"\\n\").slice(4).map(ea => ea.replace(\"    at \",\"\"))))\n            options.headers.set(\"debug-session\", self.lively4session)\n            options.headers.set(\"debug-eventid\", debugEventId)\n            window.lively4log(debugEventId, \"debug-session=\" +self.lively4session)\n          }\n          \n          \n          return options  \n        } else {\n          // convert first?\n        }\n        \n        \n      }\n      \n    }   \n  })\n}\n\n\nexport async function installFetchHandlers() {\n  await installProxyFetch()\n  await installAuthorizedFetch()\n  await installDebugFetch()\n} \n\n\nif (self.lively) {\n  // dev time\n installFetchHandlers()\n}\n"],"mappings":"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"}