{"version":3,"names":["TodoistScheme","__SystemJSRewritingHack","lastTokenPromted","todoistData","_export","setters","_srcClientPoidJs","Scheme","PolymorphicIdentifier","default","_srcExternalFocalStorageJs","focalStorage","_utils","parseQuery","getDeepProperty","execute","_recorder_","_src_client_protocols_todoist_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","scheme","todoistToken","token","getItem","Date","now","lively","prompt","setItem","resolve","fetchData","fetch","encodeURI","JSON","stringify","method","then","r","json","getData","renderHTML","result","undefined","GET","options","data","urlObj","URL","url","m","pathname","match","type","id","list","item","find","ea","search","Response","status","itemToFile","name","title","content","slice","parent","OPTIONS","notify","contents","keys","map","register"],"sources":["todoist.js"],"sourcesContent":["import {Scheme}  from \"src/client/poid.js\"\nimport PolymorphicIdentifier  from \"src/client/poid.js\"\nimport focalStorage from \"src/external/focalStorage.js\"\nimport {parseQuery, getDeepProperty} from 'utils'\n\nvar lastTokenPromted\nvar todoistData\n\n\n/*MD\n\n[API documentation](https://developer.todoist.com/sync/v8)\n\nMD*/\n\nexport class TodoistScheme extends Scheme {\n  \n  get scheme() {\n    return \"todoist\"\n  }\n  \n  async todoistToken() {\n    var token = await focalStorage.getItem(\"todoist-token\")\n    if(!token && (!lastTokenPromted || ((Date.now() - lastTokenPromted) > 1000 * 5))) { \n      // don't ask again for 5 seconds...\n      lastTokenPromted = Date.now()\n      token = await lively.prompt(\"todoist token required: \")\n      if (token) {\n        focalStorage.setItem(\"todoist-token\", token)\n      }\n    }\n    return token\n  }\n\n  resolve() {\n    return true\n  }  \n \n  async fetchData() {\n    return await fetch(`https://todoist.com/api/v8/sync`+\n      `?token=${await this.todoistToken()}`+\n      `&sync_token=*`+\n      `&resource_types=${encodeURI(JSON.stringify([\"all\"]))}`, {  \n          method: 'POST',  \n      }).then(r => r.json())\n  }\n\n  async getData() {\n    if (!todoistData)  todoistData = await this.fetchData()\n    return todoistData\n  }\n  \n async renderHTML(result) {\n   return \"<pre>\" + JSON.stringify(result, undefined, 2) + \"</pre>\"\n }\n  \n  async GET(options) {\n    let data = await this.getData()\n    let urlObj = new URL(this.url)\n    let m = urlObj.pathname.match(/^\\/*([^/]+)\\/?([^/]+)?$/)\n    let type = m && m[1]\n    let id = m && m[2]\n     let result;\n    if (!type ) {\n      result =  data   \n    } else {\n      let list = data[type]\n      if (!id) {\n       result =  list\n      } else {\n       let item = list.find(ea => ea.id == id)\n       result =  item\n      }\n    }\n    if (urlObj.search == \"?html\") {\n      return new Response(await this.renderHTML(result), {status: 200})  \n    }\n    return new Response(JSON.stringify(result, undefined, 2), {status: 200})\n  }\n\n  itemToFile(type, item) {\n    return {\n      name: \"\" + item.id, \n      title: item.name || \n        (item.content ? (\"\" + item.content).slice(0, 30) : undefined),\n      parent: this.scheme + \"://\" + type + \"/\",\n      type: \"file\", \n    } \n  }\n  \n  async OPTIONS() {\n    let data = await this.getData()\n    let urlObj = new URL(this.url)\n    let m = urlObj.pathname.match(/^\\/*([^/]+)\\/?([^/]+)?$/)\n    let type = m && m[1]\n    let id = m && m[2]\n    lively.notify(\"path\" +urlObj.pathname+\"type: \" + type + \" id:\" + id)\n    let result;\n    if (!type ) {\n      result =  {\n        name: \"root\", \n        type: \"directory\", \n        parent: this.scheme + \"://\",\n        contents: Object.keys(data).map(ea => ({\n          name: ea,\n          type: data[ea].map ? \"directory\" : \"file\"\n        }))\n      }      \n    } else {\n      let list = data[type]\n      if (!id) {\n       result =  {\n          name: type, \n          type: list.map ? \"directory\" : \"file\", \n          parent: this.scheme + \"://\",\n          contents:  list.map ? list.map(ea => this.itemToFile(type, ea)) : undefined\n       } \n      } else {\n       let item = list.find(ea => ea.id == id)\n       result =  this.itemToFile(type, item)\n      }\n    }\n    return new Response(JSON.stringify(result), {status: 200})\n  }\n}\n\n\n\nPolymorphicIdentifier.register(TodoistScheme)"],"mappings":"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"}