{"version":3,"names":["SemanticScholarScheme","__SystemJSRewritingHack","semanticScholarSubscriptionKeyId","_export","setters","_srcClientPoidJs","Scheme","PolymorphicIdentifier","default","_srcExternalFocalStorageJs","focalStorage","_srcClientLiteratureJs","Author","Paper","MicrosoftAcademicEntities","_srcExternalLodashLodashJs","_","execute","_recorder_","_src_client_protocols_scholar_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","scheme","resolve","setSubscriptionKey","key","setItem","getSubscriptionKey","getItem","ensureSubscriptionKey","lively","prompt","response","content","contentType","Response","headers","status","notfound","baseURL","GET","options","m","url","match","RegExp","mode","query","length","search","decodeURIComponent","replace","id","authorId","Headers","fetch","method","then","r","text","POST","body","OPTIONS","JSON","stringify","undefined","register"],"sources":["scholar.js"],"sourcesContent":["import { Scheme } from \"src/client/poid.js\";\nimport PolymorphicIdentifier from \"src/client/poid.js\";\nimport focalStorage from \"src/external/focalStorage.js\";\n\nimport {Author, Paper, MicrosoftAcademicEntities} from \"src/client/literature.js\"\n\n\nimport _ from 'src/external/lodash/lodash.js';\n/*MD \n# Semantic Scholar API \n\nExamples: \n```\nfetch(\"scholar://paper/search?query=literature+graph\").then(r => r.json())\n\nvar fields = \"externalIds,url,title,abstract,venue,year,referenceCount,citationCount,influentialCitationCount,isOpenAccess,fieldsOfStudy,s2FieldsOfStudy,authors\"\nfetch(`scholar://paper/649def34f8be52c8b66281af98ae884c09aef38b?fields=${fields}`).then(r => r.json())\n\n\nfetch(\"scholar://data/paper/DOI:10.1145/2384592.2384611\").then(r => r.json())\n\nfetch(\"scholar://data/paper/MAG:2087784813\").then(r => r.json())\n```\n<script>\n  <div>\n    <button click={() => {\n     lively.openBrowser(\"scholar://data/paper/DOI:10.1145/2384592.2384611\")     \n        }}>DOI example</button>\n    <button click={() => {\n     lively.openBrowser(\"scholar://data/paper/MAG:2087784813\")     \n    }}>Microsoft Academic Graph example</button>\n    <button click={() => {\n     lively.openBrowser(\"scholar://browse/paper/MAG:2087784813\")     \n    }}>Browse example</button>\n  </div>\n</script>\n\nMD*/\n\nconst semanticScholarSubscriptionKeyId = \"semantic-scholar-key\";\n\n\nexport default class SemanticScholarScheme extends Scheme {\n\n  get scheme() {\n    return \"scholar\";\n  }\n\n  resolve() {\n    return true;\n  }\n\n  static async setSubscriptionKey(key) {\n      return focalStorage.setItem(semanticScholarSubscriptionKeyId, key);\n  }\n  \n  static async getSubscriptionKey() {\n    var key = await focalStorage.getItem(semanticScholarSubscriptionKeyId);\n    return key\n  }\n  \n  static async ensureSubscriptionKey() {\n    var key = await this.getSubscriptionKey()\n    if (!key) {\n      key = await lively.prompt(`Enter your Semantic Scholar key`, \"\");\n      await this.setSubscriptionKey(key);\n    }\n    return key\n  }\n\n  response(content, contentType = \"text/html\") {\n    return new Response(content, {\n      headers: {\n        \"content-type\": contentType\n      },\n      status: 200\n    });\n  }\n\n  notfound(content, contentType = \"text/html\") {\n    return new Response(content, {\n      headers: {\n        \"content-type\": contentType\n      },\n      status: 303\n    });\n  }\n\n\n  get baseURL() {\n    return \"https://api.semanticscholar.org/graph/v1/\"\n  }\n  \n  \n  async GET(options) {\n    var m = this.url.match(new RegExp(this.scheme + \"\\:\\/\\/([^/]*)/(.*)\"))\n    var mode = m[1]\n    var query = m[2];\n    if (query.length < 2) return this.response(`{\"error\": \"query to short\"}`);\n    \n    if (mode === \"browse\") {\n      if (query.match(/author\\/search\\?query=/)) {\n        let search = decodeURIComponent(query.replace(/.*\\?query=/,\"\"))\n        return this.response(`<literature-paper authorsearch=\"${search}\"><literature-paper>`);\n      } else if (query.match(/search\\?query=/)) {\n        let search = decodeURIComponent(query.replace(/.*\\?query=/,\"\"))\n        return this.response(`<literature-paper search=\"${search}\"><literature-paper>`);\n        \n      } else if (query.match(\"paper/\")) {\n        let id = query.replace(/.*\\?query=/,\"\").replace(/paper\\//,\"\")\n        return this.response(`<literature-paper scholarid=\"${id}\"><literature-paper>`);\n        \n      } else if (query.match(\"author/\")) {\n        var authorId = query.replace(/.*author\\//,\"\")\n        return this.response(`<literature-paper authorid=\"${authorId}\"><literature-paper>`);\n      } else {\n        return this.response(`query not supported: ` + query);\n      }\n      \n      \n    }\n  \n    var url = this.baseURL + query\n    \n    var key = await SemanticScholarScheme.ensureSubscriptionKey() // maybe only get... ?\n    var headers = new Headers({})\n    if (key) {\n      headers.set(\"x-api-key\", key)\n    }\n    \n    var content = await fetch(url, {\n      method: \"GET\",\n      headers: headers\n    }).then(r => r.text())\n   \n    return this.response(content);\n  }\n  \n  /*MD ## Example\n\n```javascript {.snippet}\nfetch(\"scholar://data/paper/batch?fields=referenceCount,citationCount,title\", {\n  method: \"POST\",\n  body: JSON.stringify({\"ids\": [\"649def34f8be52c8b66281af98ae884c09aef38b\", \"ARXIV:2106.15928\"]})\n}).then(r => r.text())  \n  \n```\n  \n  \n  MD*/\n  async POST(options) {\n    // #TODO get rid of duplication with GET\n    var m = this.url.match(new RegExp(this.scheme + \"\\:\\/\\/([^/]*)/(.*)\"))\n    var mode = m[1]\n    var query = m[2];\n    if (query.length < 2) return this.response(`{\"error\": \"query to short\"}`);\n  \n    var url = this.baseURL + query\n    \n    var key = await SemanticScholarScheme.ensureSubscriptionKey() // maybe only get... ?\n    var headers = new Headers({})\n    if (key) {\n      headers.set(\"x-api-key\", key)\n    }\n    \n    var content = await fetch(url, {\n      method: \"POST\",\n      headers: headers,\n      body: options.body\n    }).then(r => r.text())\n   \n    return this.response(content);\n  }\n\n\n  async OPTIONS(options) {\n    var content = JSON.stringify({}, undefined, 2);\n    return new Response(content, {\n      headers: {\n        \"content-type\": \"application/json\"\n      },\n      status: 200\n    });\n  }\n\n}\n\nPolymorphicIdentifier.register(SemanticScholarScheme);\n\n// import Tracing from \"src/client/tracing.js\"\n// Tracing.traceClass(Paper)\n"],"mappings":"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"}