{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-portal/src/client/workspace-loader.js"],"names":["babelTranslate","translate","workspaces","fetch","locate","isWorkspace","parseId","WORKSPACE_REGEX","load","decodeURI","name","replace","match","id","m","baseId","targetModule","URL","lively4url","protocol","code","getCode","address","call","Error","Promise","resolve","endsWith","args","result","apply"],"mappings":";;;;;;AAAsBA,oB,gBAAbC,S;;AAEGC,gB;;;;;;;;;;;+BA6DID,0C;;;;;;;;;;;;;;2BA7BME,sC;;;;;;;;;;;;;;4BApBAC,uC;;;;;;;;;;;;;;AAJbC,sD;;;;;;;;;;;;;AAJAC,kD;;;;;;;;;;;;;AANaN,yD;;;;;;;;;;;;;AAEVE,qD;;;;;;;;;AAEZ,YAAMK,kBAAkB,0BAAxB;;;;;;;;AAAMA,0D;;;;;;;AAEN,eAASD,OAAT,CAAiBE,IAAjB,EAAuB;AACrB,eAAOC,UAAUD,KAAKE,IAAL,CAAUC,OAAV,CAAkBJ,eAAlB,EAAmC,EAAnC,CAAV,CAAP;AACD;;AAED,eAASF,WAAT,CAAqBG,IAArB,EAA2B;AACzB,eAAOA,KAAKE,IAAL,CAAUE,KAAV,CAAgBL,eAAhB,CAAP;AACD;;AAEM,qBAAeH,MAAf,CAAsBI,IAAtB,EAA4B;AACjC;AACA;;AAEE;;AAED,YAAGH,YAAYG,IAAZ,CAAH,EAAsB;AACnB,cAAIK,KAAKP,QAAQE,IAAR,CAAT;AACA,cAAIM,IAAID,GAAGD,KAAH,CAAS,iBAAT,CAAR;AACA,cAAIG,SAASD,EAAE,CAAF,CAAb;AACA,cAAIE,eAAeF,EAAE,CAAF,CAAnB;;AAEA,cAAIE,aAAaJ,KAAb,CAAmB,OAAnB,CAAJ,EAAiC;AAC/B,mBAAO,IAAIK,GAAJ,CAAQC,UAAR,EAAoBC,QAApB,GAA+B,IAA/B,GAAsCH,YAA7C,CAD+B,CAC2B;AAC3D;AACF;AACH;AACD;;;;AAGM,qBAAeb,KAAf,CAAqBK,IAArB,EAA2BL,KAA3B,EAAkC;AACvC;AACA,YAAGE,YAAYG,IAAZ,CAAH,EAAsB;AACpB,cAAIK,KAAKP,QAAQE,IAAR,CAAT;AACA;AACA,cAAIY,OAAOlB,WAAWmB,OAAX,CAAmBb,KAAKE,IAAxB,CAAX;;AAEA,cAAI,CAACU,IAAL,EAAW;AACT;;;AAGA,gBAAI,CAACZ,KAAKc,OAAL,CAAaV,KAAb,CAAmBL,eAAnB,CAAL,EAA0C;AACxC,qBAAOJ,MAAMoB,IAAN,CAAW,IAAX,EAAiBf,IAAjB,CAAP;AACD;AACF;;AAED,cAAI,CAACY,IAAL,EAAW;AACT,kBAAM,IAAII,KAAJ,CAAU,mCAAmCX,EAA7C,CAAN;AACD;;AAED;AACA,iBAAOY,QAAQC,OAAR,CAAgBN,IAAhB,CAAP;AACD,SApBD,MAoBO,IAAGZ,KAAKE,IAAL,CAAUiB,QAAV,CAAmB,KAAnB,CAAH,EAA8B;AACnC,iBAAOxB,MAAMoB,IAAN,CAAW,IAAX,EAAiBf,IAAjB,CAAP;AACD,SAFM,MAEA;AACL,gBAAM,IAAIgB,KAAJ,CAAU,sCAAsChB,KAAKE,IAArD,CAAN;AACD;AACF;;;;AAEM,eAAST,SAAT,CAAmB,GAAG2B,IAAtB,EAA4B;AACjC;AACA,YAAIC,SAAS7B,eAAe8B,KAAf,CAAqB,IAArB,EAA2BF,IAA3B,CAAb;AACA,eAAOC,MAAP;AACD","file":"workspace-loader.js","sourcesContent":["import { translate as babelTranslate } from 'plugin-babel';\n\nimport * as workspaces from './workspaces.js';\n\nconst WORKSPACE_REGEX = /^workspace(async)?(js)?:/\n\nfunction parseId(load) {\n  return decodeURI(load.name.replace(WORKSPACE_REGEX, ''));\n}\n\nfunction isWorkspace(load) {\n  return load.name.match(WORKSPACE_REGEX)\n}\n\nexport async function locate(load) {\n  // does the resolving relative workspace urls belong here? \n  // it does not seem to work, but we have to do it here... because of transitive relative urls... etc... and we do want to get the same reference of existing modules...\n \n    // console.log('WORKSPACE LOADER locate', load.address);\n  \n   if(isWorkspace(load)) {\n      var id = parseId(load);\n      var m = id.match(/^([^/]+\\/)(.*)$/)\n      var baseId = m[1]\n      var targetModule = m[2]\n\n      if (targetModule.match(/\\.js$/)) {\n        return new URL(lively4url).protocol + \"//\" + targetModule // we stripped the HTTP(S) earlier...\n      }\n    }\n  return \n}\n\n\nexport async function fetch(load, fetch) {\n  // console.log('WORKSPACE LOADER fetch', load.address);\n  if(isWorkspace(load)) {\n    var id = parseId(load);\n    // console.log(`fetch workspace code for id: ${id}`);\n    var code = workspaces.getCode(load.name);\n    \n    if (!code) {\n      // we have a relative url that resolved to a real url...\n      \n      \n      if (!load.address.match(WORKSPACE_REGEX)) {\n        return fetch.call(this, load);        \n      }\n    }\n  \n    if (!code) {\n      throw new Error(\"workspace loader: no code for \" + id)\n    }\n    \n    // console.log('Found code', code)\n    return Promise.resolve(code);\n  } else if(load.name.endsWith('.js')) {\n    return fetch.call(this, load);\n  } else {\n    throw new Error('unknown type of code evaluation: ' + load.name);\n  }\n}\n\nexport function translate(...args) {\n  // console.log('translate', ...args);\n  var result = babelTranslate.apply(this, args);\n  return result;\n}\n"]}