this repo has no description
at main 46 lines 1.2 kB view raw
1 2function getWorkerURL( url ) { 3 const content = `globalThis.__global_rel_url="${ url }"\nimportScripts( "${ url }/worker.js" );`; 4 return URL.createObjectURL( new Blob( [ content ], { type: "text/javascript" } ) ); 5} 6 7const worker = new Worker(getWorkerURL("https://jon-test.ludl.am/_opam")) 8 9var promises = new Map() 10var id = 1 11 12worker.onmessage = function (e) { 13 j = JSON.parse(e.data) 14 if (j.id) { 15 promise = promises[j.id] 16 promises.delete(j.id) 17 promise(j.result) 18 } 19} 20 21function rpc(method, params) { 22 const localid = id++; 23 return new Promise(function (resolve, reject) { 24 worker.postMessage(JSON.stringify({ id:localid, method, params })); 25 promises[localid] = resolve 26 }) 27} 28 29function init(cmas,cmi_urls) { 30 return rpc("init",[{init_libs: {execute: true, findlib_requires:[]}}]) 31} 32 33function setup() { 34 return rpc("setup",[null]) 35} 36 37function exec(phrase) { 38 return rpc("exec",[phrase]) 39} 40 41function dump(result) { 42 console.log(result.stdout) 43} 44 45init([],[]).then(() => setup()).then(function(result) { dump(result); exec("let _ = Mime_printer.push \"text/text\" \"hello, world\";;").then((result) => dump(result))}) 46