{"version":3,"names":["Issue","Project","Story","Item","Comment","GitHub","__SystemJSRewritingHack","LivelyWebhookService","_export","default","setters","_srcClientAuthGithubJs","authGithub","_srcClientStringsJs","Strings","_srcClientFilesJs","Files","execute","_recorder_","_src_client_github_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","props","ea","toString","project","title","item","comment","current","force","_current","storagePrefix","storeValue","key","value","lively","focalStorage","setItem","loadValue","getItem","githubApi","path","token","fetch","headers","Headers","Authorization","then","r","json","loadCredentials","Promise","resolve","reject","challengeForAuth","Date","now","user","username","login","emails","email","find","primary","repo","loaded","getToken","ensureBranch","name","original","info","getBranch","ref","originalInfo","Error","method","body","JSON","stringify","object","sha","apiFetch","api","options","baseHeaders","baseOptions","composedOptions","assign","getFile","branch","result","listWebhooks","hooks","ensureWebhook","url","found","config","createWebhook","fixPath","replace","setFile","content","message","file","b64EncodeUnicode","deleteFile","getContent","b64DecodeUnicode","issueByTitle","searchInTitle","issues","match","issueByNumber","number","create","patch","issuePatch","parseLinkHeader","header","parts","split","links","i","length","section","trim","getURLAuthorized","_issues","resp","concat","parseMarkdownStories","source","recursive","lines","stories","map","matchDo","isProject","comments","prefix","issue","rest","state","a","labels","tags","b","matchAllDo","tag","label","tagToLabel","includes","push","forEach","RegExp","isStory","parseInt","undefined","items","isItem","isComment","lastProject","lastStory","story","filter","stringifyMarkdownStoriesDebug","join","labelToTag","l","toUpperCaseFirst","toCamelCase","toLowerCase","stringifyMarkdownStories","syncMarkdownStories","projectLabel","notify","updateMarkdownFile","files","loadFile","updateContent","saveFile","getGitMergeBase","serverURL","repositoryName","versionA","versionB","gitversiona","gitversionb","text"],"sources":["github.js"],"sourcesContent":["\nimport authGithub from \"src/client/auth-github.js\"\nimport Strings from \"src/client/strings.js\"\nimport Files from \"src/client/files.js\"\n\nconst LivelyWebhookService = \"https://lively-kernel.org/lively4/_webhook/signal\"\n\nexport class Issue {\n  constructor(props) {\n    for(var ea in props) {\n      this[ea] = props[ea]\n    }\n  }\n}\n\nexport class Project extends Issue {\n  toString() {\n    return \"Project: \" + this.project\n  }\n}\n\nexport class Story extends Issue {\n  toString() {\n    return \"Story: \" + this.title\n  }\n}\n\nexport class Item extends Issue {\n  toString() {\n    return \"Items: \" + this.item\n  }\n}\n\nexport class Comment extends Issue {\n  toString() {\n    return \"Comment: \" + this.comment\n  }\n}\n\nexport default class GitHub {\n   \n  static current(force) {\n    if (!this._current || force) {\n      this._current = new GitHub()\n    }\n    return this._current\n  }\n  \n  get storagePrefix() {\n    return \"LivelySync_\"\n  }\n  \n  \n  async storeValue(key, value) {\n    return  lively.focalStorage.setItem(this.storagePrefix + key, value)\n  }\n  \n  async loadValue(key) {\n    return lively.focalStorage.getItem(this.storagePrefix + key)\n  }\n  \n  githubApi(path, token) {\n    return fetch(\"https://api.github.com\" + path, {\n      headers: new Headers({\n        Authorization: \"token \" + token\n    })}).then(r => r.json());\n  }\n  \n  async loadCredentials() {\n    // this.updateLoginStatus()\n    this.token = await this.loadValue(\"githubToken\")\n    if (!this.token) {\n       this.token = await new Promise((resolve, reject) => {\n          authGithub.challengeForAuth(Date.now(), async (token) => {\n              var user = await this.githubApi(\"/user\", token);\n              var username = user.login;\n              var emails =  await this.githubApi(\"/user/emails\", token);\n              var email = emails.find(ea => ea.primary).email;\n              this.storeValue(\"githubUsername\", username);\n              this.storeValue(\"githubEmail\", email);\n              this.storeValue(\"githubToken\", token);\n              resolve(token);\n        });\n       })\n    }\n    this.username = await this.loadValue(\"githubUsername\");\n    this.email = await this.loadValue(\"githubEmail\");\n  }\n  \n  \n  constructor(user= \"LivelyKernel\", repo= \"lively4-core\") {\n    this.user = user\n    this.repo = repo\n    this.loaded = this.loadCredentials()\n  }\n\n  async getToken() {\n    if (!this.token ) {\n      this.loaded = this.loadCredentials()\n      await this.loaded\n    }\n    return this.token\n  }\n  \n  async ensureBranch(name, original=\"master\") {\n    await this.loaded\n    \n    var info = await this.getBranch(name)\n    if (info.ref) return info\n    \n    var originalInfo = await this.getBranch(original)\n    if (!originalInfo.ref) throw new Error(\"Could not find original branch \" + original)\n    \n    return fetch(`https://api.github.com/repos/${this.user}/${this.repo}/git/refs`, {\n      method: \"POST\",\n      headers: {\n       Authorization: \"token \" + this.token \n      },\n      body: JSON.stringify({\n        \"ref\": `refs/heads/${name}` ,\n        \"sha\": originalInfo.object.sha\n      })\n    }).then(r => r.json())\n  }\n  \n  async apiFetch(api, options={}) {\n    await this.loaded\n    var baseHeaders =  {\n      Authorization: \"token \" + this.token\n    }\n    var baseOptions = {\n      method: \"GET\"\n    }\n    var composedOptions = Object.assign(baseOptions, options)\n    composedOptions.headers = Object.assign(baseHeaders, options.headers || {})\n    return fetch(`https://api.github.com/repos/${this.user}/${this.repo}` + api, composedOptions).then(r => r.json())\n  }\n  \n  \n  async getBranch(name) {\n    return this.apiFetch(`/git/refs/heads/${name}`)\n  }\n\n  async getFile(path, branch) {\n    await this.loaded\n    var result = await fetch(`https://api.github.com/repos/${this.user}/${this.repo}/contents/${path}` \n                 + (branch  ? `?ref=${branch}` : \"\"), {\n      headers: {\n       Authorization: \"token \" + this.token \n      }\n    }).then(r => r.json())\n    return result\n  }\n  \n  async listWebhooks() {\n    var hooks = await this.apiFetch(`/hooks`)\n    return hooks\n  }  \n\n  async ensureWebhook(url=LivelyWebhookService) {\n    var hooks = await this.listWebhooks()\n    if (!hooks || !hooks.find) return\n    var found = hooks.find(ea => ea.config.url == url)\n    if (found) {\n      return found\n    } else {\n      return this.createWebhook(url)\n    }\n  }\n\n  async createWebhook(url=LivelyWebhookService) {\n    return await this.apiFetch(`/hooks`, {\n      method: \"POST\",\n      body: JSON.stringify({\n        \"name\": \"web\",\n        \"active\": true,\n        \"events\": [\n          \"push\"\n        ],\n        \"config\": {\n          \"url\": url,\n          \"content_type\": \"json\",\n          \"insecure_ssl\": \"0\"\n        }\n      })\n    })\n  }\n  \n  fixPath(path) {\n   return path && path.replace(/^\\//,\"\") // do not start with /\n  }\n\n  async setFile(path, branch, content, message=\"LIVELY COMMIT\") {\n    path = this.fixPath(path) \n    await this.loaded\n    var file = await this.getFile(path, branch)\n    var body = {\n        \"message\": message,\n        \"committer\": {\n          \"name\": this.user,\n          \"email\": this.email\n        },\n        \"content\": Files.b64EncodeUnicode(content),\n        \n      }\n    if (file.sha)  body.sha = file.sha\n    if (branch) body.branch = branch\n    return fetch(`https://api.github.com/repos/${this.user}/${this.repo}/contents/${path}`, {\n      method: \"PUT\",\n      headers: {\n       Authorization: \"token \" + this.token \n      }, \n      body: JSON.stringify(body)\n    }).then(r => r.json())\n  }\n  \n  async deleteFile(path, branch, message=\"LIVELY COMMIT DELETE\") {\n    await this.loaded\n    var file = await this.getFile(path, branch)\n    if (!file.sha) throw new Error(\"File not found\")\n    \n    var body = {\n        \"message\": message,\n        \"committer\": {\n          \"name\": this.user,\n          \"email\": this.email\n        },\n      }\n    body.sha = file.sha\n    if (branch) body.branch = branch\n    return fetch(`https://api.github.com/repos/${this.user}/${this.repo}/contents/${path}`, {\n      method: \"DELETE\",\n      headers: {\n       Authorization: \"token \" + this.token \n      }, \n      body: JSON.stringify(body)\n    }).then(r => r.json())\n  }\n\n  async getContent(path, branch) {\n    var file = await this.getFile(path, branch)\n    if (file.content) return Files.b64DecodeUnicode(file.content)\n  }\n\n  async issueByTitle(searchInTitle) {\n    var issues = await this.issues()\n    return issues.find(ea => ea.title.match(searchInTitle))\n  }\n  \n  async issueByNumber(number) {\n    var issues = await this.issues()\n    return issues.find(ea => ea.number == number)\n  }\n  \n  \n  async create(title, body) {\n    await this.loaded\n    if (!title) throw new Error(\"title is missing\") \n    if (!body) throw new Error(\"body is missing\") \n    return fetch(\"https://api.github.com/repos/\" \n        + this.user+ \"/\" + this.repo + \"/issues\", {\n        method: \"POST\",\n        body: JSON.stringify({\n          title: title,\n          body: body\n        }),\n        headers: {\n          Authorization: \"token \" + this.token,\n          'Content-Type': 'application/json'\n        }\n      }).then(r => r.json())\n  }\n  \n  async patch(number, issuePatch) {\n    await this.loaded\n    if (!number) throw new Error(\"number is missing\") \n    if (!issuePatch) throw new Error(\"issuePatch is missing\") \n\n    return fetch(\"https://api.github.com/repos/\" \n        + this.user+ \"/\" + this.repo + \"/issues/\" + number, {\n        method: \"PATCH\",\n        body: JSON.stringify(issuePatch),\n        headers: {\n          Authorization: \"token \" + this.token,\n          'Content-Type': 'application/json'\n        }\n      }).then(r => r.json())\n  }\n\n  \n  parseLinkHeader(header) {\n    var parts = header.split(',');\n    var links = {};\n    for(var i=0; i<parts.length; i++) {\n        var section = parts[i].split(';');\n        if (section.length !== 2) {\n            throw new Error(\"section could not be split on ';'\");\n        }\n        var url = section[0].replace(/<(.*)>/, '$1').trim();\n        var name = section[1].replace(/rel=\"(.*)\"/, '$1').trim();\n        links[name] = url;\n    }\n    return links;\n  }\n  \n\n  async getURLAuthorized(url, force) {\n    // force not used...\n    await this.loaded\n    return fetch(url, {\n        method: \"GET\",\n        headers: {\n          Authorization: \"token \" + this.token\n        }\n      })\n  }\n  \n  \n  async issues(force) {\n    if (!this._issues || force) {\n      this._issues = []\n      \n      var url = \"https://api.github.com/repos/\" \n        + this.user+ \"/\" + this.repo + \"/issues\" + \"?per_page=100&state=all\"\n      \n      // retrieve all pages\n      while(url) {\n        var resp = await this.getURLAuthorized(url, force)\n        var links = this.parseLinkHeader(resp.headers.get(\"link\"))\n        url = links[\"next\"]\n        this._issues = this._issues.concat(await resp.json())\n      }\n\n    }\n    return this._issues\n  }\n  /*\n   * source    ... stories in markdown list item syntax \n   * recursive ... items are only referenced in their parent projects, otherwise it is a flat list\n   */\n  parseMarkdownStories(source, recursive) {\n    var lines = source.split(/\\r?\\n/)\n    var stories = lines.map((ea) => {\n      var result =  Strings.matchDo(/^## +(.*)/, ea, title => \n        new Project({isProject: true, project: title, stories: [], comments: []}))\n      if (!result) result = Strings.matchDo(/^(- )(.*)/, ea, (prefix, issue) => {\n        var title, rest, state;\n        Strings.matchDo(/ ((#|(?:[0-9]+P)|(?:\\?+P)).*)$/, issue, (a) => {\n          rest = a\n        })\n        if (!title) title = issue.replace(rest, \"\")\n        var number;\n        var labels = []\n        var tags = []\n        if (rest) {\n          Strings.matchDo(/(#([0-9]+))/, rest, (a,b) => {\n            rest = rest.replace(a,\"\") \n            number = b\n          })\n          }\n        if (rest) {\n          Strings.matchDo(/(#((open)|(closed)))/, rest, (a,b) => {\n            rest = rest.replace(a,\"\") \n            state = b\n          })\n        }\n        if (rest) {\n          // lively.notify(\"rest \" + rest)\n          Strings.matchAllDo(/(#[A-Za-z]+)/, rest, (tag) => {\n            var label = this.tagToLabel(tag)\n            if (label && !labels.includes(label)) {\n              labels.push(label)\n            }\n            tags.push(tag)\n\n          })\n          tags.forEach(tag => {\n            // lively.notify(\"replace tag \" + tag)\n            rest = rest.replace(new RegExp(\" ?\" + tag, \"g\"),\"\")\n          })\n\n        }\n\n        return   new Story({\n          isStory: true,\n          title: title.replace(/ *$/,\"\"), \n          rest: rest && rest.replace(/ *$/,\"\"),\n          number: number ? parseInt(number) : undefined,\n          state: state,\n          labels: labels,\n          items: []\n        })\n      })\n      if (!result) result = Strings.matchDo(/^ +(- .*)/, ea, item => \n        new Item({isItem: true, item: item}))\n    \n      if (!result) result = new Comment({isComment: true, comment: ea})\n      return result\n    })\n    \n    // now, make sense of the parsing...\n    var lastProject\n    var lastStory\n    \n    stories.forEach(ea => {\n      if (ea.isProject) {\n        lastProject = ea;\n        lastStory = null;\n      }\n      if (ea.isStory) {\n        lastStory = ea\n      }\n      if (ea.isStory && lastProject) {\n        lastProject.stories.push(ea)\n        lastStory.project = lastProject.project\n      }\n      if (ea.isItem && lastStory) {\n        ea.story = lastStory; // it is not a tree any more...\n        lastStory.items.push(ea)\n      }\n      if (ea.isComment && lastProject) {\n        ea.project = lastProject\n        lastProject.comments.push(ea)\n      }\n      if (ea.comment == \"<!--NoProject-->\") {\n        ea.project = undefined;\n        lastProject = undefined\n      }\n    })\n    if (recursive) {\n      stories = stories.filter(ea => \n        ea.isProject ||\n          (ea.isStory && !ea.project) ||\n          (ea.isItem && !ea.story) ||\n          ea.isComment && !ea.project\n      ); // get rid of the global itmes\n    }\n    return stories\n  }\n  \n  stringifyMarkdownStoriesDebug(stories) {\n    return stories.map(ea => JSON.stringify(ea)).join(\"\\n\")\n  }\n  \n  labelToTag(l) {\n    var tag = l\n        .replace(\"type: \", \"\")\n        .replace(/P[0-9]\\: /, \"\")\n        .replace(/effort[0-9]\\: /, \"\")\n        .replace(/ \\(hour\\)/, \"\")\n        .replace(/ \\(day\\)/, \"\")\n        .replace(/ \\(week\\)/, \"\")\n        .replace(\"RFC / discussion / question\", \"discussion\")\n        .replace(/comp\\: /, \"\")\n    if (tag.match(\" \")) {\n      tag = Strings.toUpperCaseFirst(Strings.toCamelCase(tag, \" \"))\n    }\n    return \"#\" + tag\n  }\n  \n  tagToLabel(tag) {\n    if (!tag) return \n    var label = tag.replace(\"#\", \"\")\n    if (label == \"bug\") return \"type: bug\"\n    if (label == \"chore\") return \"type: chore\"\n    if (label == \"feature\") return \"type: feature\"\n    if (label == \"performance\") return \"type: performance\"\n    if (label == \"refactor\") return \"type: refactor\"\n    if (label == \"discussion\") return \"type: RFC / discussion / question\"\n    \n    if (label == \"easy\") return \"effort1: easy (hour)\"\n    if (label == \"medium\") return \"effort2: medium (day)\"\n    if (label == \"hard\") return \"effort3: hard (week)\"\n     \n    if (label == \"critical\") return \"P0: critical\"\n    if (label == \"critical\") return \"P0: critical\"\n    if (label == \"critical\") return \"P0: critical\"\n    if (label == \"critical\") return \"P0: critical\"\n    if (label == \"critical\") return \"P0: critical\"\n    \n    if (label == \"urgent\") return \"P1: urgent\"\n    if (label == \"required\") return \"P2: required\"\n    if (label == \"important\") return \"P3: important\"\n    if (label == \"NiceToHave\") return \"P4: nice to have\"\n\n\n    if (label == \"duplicate\") return \"duplicate\"\n    if (label == \"FollowUp\") return \"follow up\"\n    if (label == \"HelpWanted\") return \"help wanted\"\n\n    if (label.match(/[A-Z][a-z]+[A-Z]/)) \n      return \"comp: \" + label.split(/(?=[A-Z])/).map(ea => ea.toLowerCase()).join(\" \")\n    return label\n  }\n  \n  stringifyMarkdownStories(stories, recursive) {\n    return stories.map(ea => {\n      if (ea.title  !== undefined) \n        return \"- \" + ea.title + \n          (ea.rest ? \" \" + ea.rest : \"\") + \n          (ea.labels ? \" \" +ea.labels\n            .filter(l => l !== (\"comp: \" + ea.project).toLowerCase())\n            .map(l => this.labelToTag(l)).join(\" \")  : \"\") + \n          (ea.state ? \" #\" + ea.state : \"\") + \n          (ea.number ? \" #\" + ea.number : \"\") +\n          (recursive && ea.items && ea.items.length > 0 ? \n            \"\\n\" + this.stringifyMarkdownStories(ea.items, true) : \"\")\n      if (ea.comment !== undefined) return  ea.comment;\n      if (ea.project  !== undefined) \n        return \"## \" + ea.project + \n          (recursive && ea.comments && ea.comments.length > 0 ? \n            \"\\n\" + this.stringifyMarkdownStories(ea.comments, true) : \"\") + \n          (recursive && ea.stories && ea.stories.length > 0 ? \n            \"\\n\" + this.stringifyMarkdownStories(ea.stories, true) : \"\")\n          \n      if (ea.item) return \"  \" + ea.item;\n      throw new Error(\"Could not stringify parsed line: \" + JSON.stringify(ea))\n    }).join(\"\\n\")\n  }\n  \n  async syncMarkdownStories(stories) {\n    var issues = await this.issues(true)\n    // lively.notify(\"found \" + issues.length + \" issues\")\n    for(var ea of stories){\n      var issue = null\n      if (ea.title && ea.number === undefined) {\n        issue = issues.find(issue => ea.title == issue.title)\n        if (!issue) {\n          issue = await this.create(ea.title, ea.body || \"<no description>\")\n        }\n        ea.number = issue.number;\n        // #TODO add maybe github flags too?\n      }\n      if (ea.title) {\n        if (!issue) {\n          issue = issues.find(issue => ea.number == issue.number)\n        }\n        \n        if (issue && issue.state) {\n          ea.state = issue.state\n        }\n        \n        if (ea && issue && issue.labels) {\n          if (!ea.labels) ea.labels = []; \n          issue.labels.forEach(l => {\n            if (!ea.labels.includes(l.name)) {\n              \n              // lively.notify(\"add \" + l.name)\n              ea.labels.push(l.name)\n            }\n          })\n          if (ea.project) {\n            var projectLabel = \"comp: \"+ ea.project.trim().replace(/[^A-Za-z0-9 ]/g,\"\").toLowerCase()\n            if (!issue.labels.find(ea => ea.name.toLowerCase() == projectLabel)) {\n              lively.notify(\"labeled \" + issue.number  + \" as \" + projectLabel )\n              var patch = {labels: issue.labels.map(ea => ea.name).concat([projectLabel])};\n              var result = await this.patch(issue.number, patch)\n              \n            }\n          }\n          \n          // local labels are thrown away... ?\n          // #TODO what about labels that are not in github?\n        }\n        \n      }\n    }\n    for(var issue of issues) {\n      if (issue.state == \"open\" && !stories.find(ea => ea.number == issue.number)) {\n        var story = {title: issue.title, state: issue.state, body: issue.body, number: issue.number}; // Project, Tags?\n        stories.push(story) // just append, #TODO find a proper place in the list? \n      }\n    }\n    return stories\n  }\n  \n  async updateMarkdownFile(url) {\n    var content = await lively.files.loadFile(url)\n    var stories = this.parseMarkdownStories(content)\n    await this.syncMarkdownStories(stories)\n    var updateContent = this.stringifyMarkdownStories(stories)\n    return lively.files.saveFile(url, updateContent)\n  }\n  \n  \n  // Example: AnnotationSet.getGitMergeBase(\"https://lively-kernel.org/lively4\",  \"lively4-dummyA\", \"HEAD\", \"fd956\")\n  async getGitMergeBase(serverURL, repositoryName, versionA, versionB) {\n    var headers = new Headers({\n      \"gitusername\":          this.username,\n      \"gitpassword\":          this.token, \n      \"gitemail\":             this.email,\n      \"gitrepository\":        repositoryName,\n      gitversiona: versionA,\n      gitversionb: versionB,\n    })\n\n    return fetch(serverURL + \"/_git/mergebase\", {\n      headers: headers\n    }).then(r => r.text())    \n  }\n  \n}"],"mappings":"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"}