{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-livelyenergy/src/client/paths.js"],"names":["Paths","normalizePath","path","base","root","lively4url","replace","normalized","match","normalizeURL","urlString","url","URL","pathname","normalize","source","split","target","token","pop","push","charAt","join","a","b"],"mappings":"AAAA;;;;;;;;;;AAEe,YAAMA,KAAN,CAAY;;AAGzB;AACA,eAAOC,aAAP,CAAqBC,IAArB,EAA2BC,IAA3B,EAAiCC,OAAKC,UAAtC,EAAkD;AAChDF,iBAAOA,KAAKG,OAAL,CAAa,QAAb,EAAsB,EAAtB,CAA0B;AAA1B,WAAP,CACA,IAAIC,aAAaL,IAAjB;AACA,cAAIA,KAAKM,KAAL,CAAW,aAAX,CAAJ,EAA+B;AAC7B;AACD,WAFD,MAEO,IAAIN,KAAKM,KAAL,CAAW,KAAX,CAAJ,EAAuB;AAC5BD,yBAAaL,KAAKI,OAAL,CAAa,KAAb,EAAoBF,OAAO,GAA3B,CAAb;AACD,WAFM,MAEA;AACLG,yBAAcJ,OAAOD,IAArB;AACD;AACD,iBAAOF,MAAMS,YAAN,CAAmBF,UAAnB,CAAP;AACD;;AAEA,eAAOE,YAAP,CAAoBC,SAApB,EAA+B;AAC9B,cAAIC,MAAM,IAAIC,GAAJ,CAAQF,SAAR,CAAV;AACAC,cAAIE,QAAJ,GAAe,KAAKC,SAAL,CAAeH,IAAIE,QAAnB,CAAf;AACA,iBAAQ,KAAKF,GAAb;AACD;;AAGD;AACA,eAAOG,SAAP,CAAiBZ,IAAjB,EAAuB;AACnB,cAAIa,SAASb,KAAKc,KAAL,CAAW,KAAX,CAAb;AACA,cAAIC,SAAS,EAAb;;AAEA,eAAI,IAAIC,KAAR,IAAiBH,MAAjB,EAAyB;AACvB,gBAAGG,UAAU,IAAb,EAAmB;AACjBD,qBAAOE,GAAP;AACD,aAFD,MAEO,IAAGD,UAAU,EAAV,IAAgBA,UAAU,GAA7B,EAAkC;AACvCD,qBAAOG,IAAP,CAAYF,KAAZ;AACD;AACF;;AAED,cAAGhB,KAAKmB,MAAL,CAAY,CAAZ,MAAmB,GAAtB,EACI,OAAO,MAAMJ,OAAOK,IAAP,CAAY,GAAZ,CAAb,CADJ,KAGI,OAAOL,OAAOK,IAAP,CAAY,GAAZ,CAAP;AACP;;AAED,eAAOA,IAAP,CAAYC,CAAZ,EAAeC,CAAf,EAAkB;AAChB,cAAGA,EAAE,CAAF,MAAS,GAAZ,EAAiB;AACf,mBAAO,KAAKV,SAAL,CAAeU,CAAf,CAAP;AACD,WAFD,MAEO;AACL,mBAAO,KAAKV,SAAL,CAAeS,IAAI,GAAJ,GAAUC,CAAzB,CAAP;AACD;AACF;AAjDwB;;yBAANxB,K","file":"paths.js","sourcesContent":["'use strict';\n\nexport default class Paths {\n  \n  \n  /* url, path, relative path... anything */\n  static normalizePath(path, base, root=lively4url) {\n    base = base.replace(/[^/]*$/,\"\") // if it is not a dir\n    var normalized = path\n    if (path.match(/^[A-Za-z]+:/)) {\n      // do nothing\n    } else if (path.match(/^\\//)) {\n      normalized = path.replace(/^\\//, root + \"/\")\n    } else {\n      normalized =  base + path\n    }\n    return Paths.normalizeURL(normalized)\n  }\n  \n   static normalizeURL(urlString) {\n    var url = new URL(urlString);\n    url.pathname = this.normalize(url.pathname);\n    return  \"\" + url;\n  }\n  \n  \n  /* normalize only the \"path\" part of an URL */\n  static normalize(path) {\n      let source = path.split(/\\/+/)\n      let target = []\n\n      for(let token of source) {\n        if(token === '..') {\n          target.pop()\n        } else if(token !== '' && token !== '.') {\n          target.push(token)\n        }\n      }\n\n      if(path.charAt(0) === '/')\n          return '/' + target.join('/')\n      else\n          return target.join('/')\n  }\n\n  static join(a, b) {\n    if(b[0] === '/') {\n      return this.normalize(b)\n    } else {\n      return this.normalize(a + '/' + b)\n    }\n  }\n}\n"]}