{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-markus/src/client/webhook.js"],"names":["GitHub","WebhookURL","Webhook","constructor","owner","repo","callback","repositoryname","register","fetch","Date","now","method","headers","then","r","json","create","gh","ensureWebhook","signal","body","JSON","stringify","repository","text","start","running","observeWebhook","stop","change"],"mappings":";;;;;;AAAOA,Y;;;;;;;;;;;AAAAA,iD;;;;;;;;;AAEP;AACA;AACA,YAAMC,aAAa,4CAAnB;;;;;;;;AAAMA,qD;;;;;;;AAGS,YAAMC,OAAN,CAAc;;AAE3BC,oBAAYC,KAAZ,EAAmBC,IAAnB,EAAyBC,QAAzB,EAAmC;AACjC,eAAKF,KAAL,GAAaA,KAAb;AACA,eAAKC,IAAL,GAAYA,IAAZ;AACA,eAAKC,QAAL,GAAgBA,QAAhB;AACD;;AAED,YAAIC,cAAJ,GAAqB;AACnB,iBAAO,KAAKH,KAAL,GAAa,GAAb,GAAmB,KAAKC,IAA/B;AACD;;AAED,cAAMG,QAAN,GAAiB;AACf,iBAAOC,MAAMR,aAAa,YAAb,GAA4BS,KAAKC,GAAL,EAAlC,EAA8C;AACnDC,oBAAQ,KAD2C;AAEnDC,qBAAS;AACPN,8BAAgB,KAAKA;AADd;AAF0C,WAA9C,EAKJO,IALI,CAKCC,KAAKA,EAAEC,IAAF,EALN,CAAP;AAMD;;AAEDC,iBAAS;AACP,cAAIC,KAAK,IAAIlB,MAAJ,CAAW,KAAKI,KAAhB,EAAuB,KAAKC,IAA5B,CAAT;AACA,iBAAOa,GAAGC,aAAH,EAAP;AACD;;AAED;AACAC,iBAAS;AACP,iBAAOX,MAAMR,aAAa,SAAnB,EAA8B;AACnCW,oBAAQ,MAD2B;AAEjCC,qBAAS;AACP,8BAAgB;AADT,aAFwB;AAKnCQ,kBAAMC,KAAKC,SAAL,CAAe;AACnBC,0BAAY;AACV,6BAAa,KAAKjB;AADR;AADO,aAAf;AAL6B,WAA9B,EAUJO,IAVI,CAUCC,KAAKA,EAAEU,IAAF,EAVN,CAAP;AAWD;;AAEDC,gBAAQ;AACN,cAAI,CAAC,KAAKC,OAAV,EAAmB;AACjB,iBAAKA,OAAL,GAAe,IAAf;AACA,iBAAKC,cAAL;AACD;AACF;;AAEDC,eAAO;AACL,eAAKF,OAAL,GAAe,KAAf;AACD;;AAEDC,yBAAiB;AACf,cAAI,CAAC,KAAKD,OAAV,EAAmB;AACnB,eAAKnB,QAAL,GAAgBM,IAAhB,CAAqBgB,UAAU;AAC7B,iBAAKH,OAAL,IAAgB,KAAKrB,QAArB,IAAiC,KAAKA,QAAL,CAAcwB,MAAd,CAAjC;AACA,iBAAKF,cAAL;AACD,WAHD;AAID;AA1D0B;;yBAAR1B,O;;;;;;;;6BAAAA,wC","file":"webhook.js","sourcesContent":["import GitHub from \"src/client/github.js\"\n\n// this can not be your local lively server, because it has to be reachable by the Internet\n// a \"localhost\" server might be not....\nconst WebhookURL = \"https://lively-kernel.org/lively4/_webhook\"\n\n\nexport default class Webhook {\n\n  constructor(owner, repo, callback) {\n    this.owner = owner\n    this.repo = repo\n    this.callback = callback\n  }\n  \n  get repositoryname() {\n    return this.owner + \"/\" + this.repo\n  }\n  \n  async register() {\n    return fetch(WebhookURL + \"/register?\" + Date.now(), {\n      method: \"GET\",\n      headers: {\n        repositoryname: this.repositoryname\n      }\n    }).then(r => r.json())\n  }\n\n  create() {\n    var gh = new GitHub(this.owner, this.repo)\n    return gh.ensureWebhook()\n  }\n  \n  // for testing...\n  signal() {\n    return fetch(WebhookURL + \"/signal\", {\n      method: \"POST\",\n        headers: {\n          'content-type': 'application/json',\n      },\n      body: JSON.stringify({\n        repository: {\n          \"full_name\": this.repositoryname\n        }\n      })\n    }).then(r => r.text())\n  }\n\n  start() {\n    if (!this.running) {\n      this.running = true\n      this.observeWebhook()      \n    }\n  }\n  \n  stop() {\n    this.running = false\n  }\n  \n  observeWebhook() {\n    if (!this.running) return\n    this.register().then(change => {\n      this.running && this.callback && this.callback(change)\n      this.observeWebhook()\n    })\n  }\n}\n\n"]}