UNPKG

2.15 kBJavaScriptView Raw
1var e=e=>{var t=0,r="("+function(e){e.onmessage=function(t){switch(t.data.type){case"init":e.importScripts(t.data._hyperscript),e.importScripts.apply(e,t.data.extraScripts);const s=e._hyperscript;var r=s.internals.lexer.makeTokensObject(t.data.tokens,[],t.data.source),a=s.internals.parser.parseElement("hyperscript",r);a.apply(e,e),postMessage({type:"didInit"});break;case"call":try{var n=e._hyperscript.internals.runtime.getHyperscriptFeatures(e)[t.data.function].apply(e,t.data.args);Promise.resolve(n).then(function(e){postMessage({type:"resolve",id:t.data.id,value:e})}).catch(function(e){postMessage({type:"reject",id:t.data.id,error:e.toString()})})}catch(e){postMessage({type:"reject",id:t.data.id,error:e.toString()})}}}}.toString()+")(self)",a=new Blob([r],{type:"text/javascript"}),n=URL.createObjectURL(a);e.addFeature("worker",function(e,r,a){if(a.matchToken("worker")){var s=e.requireElement("dotOrColonPath",a).evaluate().split("."),o=s.pop(),i=[];if(a.matchOpToken("("))if(a.matchOpToken(")"));else{do{var c=a.requireTokenType("STRING").value,p=new URL(c,location.href).href;i.push(p)}while(a.matchOpToken(","));a.requireOpToken(")")}var d=[],u=a.consumed.length,l=a.consumed.length;do{var f=e.parseAnyOf(["defFeature","jsFeature"],a);if(!f)break;if("defFeature"===f.type)d.push(f.name),l=a.consumed.length;else if(a.hasMore())continue}while(a.matchToken("end")&&a.hasMore());var h=a.consumed.slice(u,l+1),m=new Worker(n);m.postMessage({type:"init",_hyperscript:r.hyperscriptUrl,extraScripts:i,tokens:h,source:a.source});var y=new Promise(function(e,t){m.addEventListener("message",function(t){"didInit"===t.data.type&&e()},{once:!0})}),v={};return d.forEach(function(e){console.log(e),v[e]=function(){var r=arguments;return new Promise(function(a,n){var s=t++;m.addEventListener("message",function e(t){t.data.id===s&&(m.removeEventListener("message",e),"resolve"===t.data.type?a(t.data.value):n(t.data.error))}),y.then(function(){m.postMessage({type:"call",function:e,args:Array.from(r),id:s})})})}}),{name:o,worker:m,install:function(e){r.assignToNamespace(e,s,o,v)}}}})};export{e as default};
2//# sourceMappingURL=worker.modern.js.map