@pyscript/core 0.0.7 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cjs/custom.js +1 -0
- package/cjs/interpreter/_python.js +14 -16
- package/cjs/interpreter/_utils.js +1 -10
- package/cjs/interpreter/micropython.js +5 -12
- package/cjs/interpreter/pyodide.js +3 -7
- package/cjs/interpreter/ruby-wasm-wasi.js +28 -19
- package/cjs/interpreter/wasmoon.js +15 -14
- package/cjs/listeners.js +1 -2
- package/cjs/worker/xworker.js +1 -1
- package/core.js +1 -1
- package/docs/README.md +2 -1
- package/esm/custom.js +1 -0
- package/esm/interpreter/_python.js +12 -12
- package/esm/interpreter/_utils.js +1 -9
- package/esm/interpreter/micropython.js +5 -12
- package/esm/interpreter/pyodide.js +3 -7
- package/esm/interpreter/ruby-wasm-wasi.js +28 -22
- package/esm/interpreter/wasmoon.js +15 -14
- package/esm/listeners.js +1 -2
- package/esm/worker/xworker.js +1 -1
- package/package.json +2 -2
- package/pyscript.js +1 -1
- package/types/coincident/window.d.ts +3 -3
- package/types/pyscript/pyscript.core/esm/interpreter/_python.d.ts +2 -4
- package/types/pyscript/pyscript.core/esm/interpreter/_utils.d.ts +0 -1
- package/types/pyscript/pyscript.core/esm/interpreter/micropython.d.ts +4 -7
- package/types/pyscript/pyscript.core/esm/interpreter/pyodide.d.ts +2 -6
- package/types/pyscript/pyscript.core/esm/interpreter/ruby-wasm-wasi.d.ts +2 -5
- package/types/pyscript/pyscript.core/esm/interpreter/wasmoon.d.ts +2 -5
package/cjs/custom.js
CHANGED
@@ -121,6 +121,7 @@ const handleCustomType = (node) => {
|
|
121
121
|
config: structuredClone(configs.get(name)),
|
122
122
|
run: module.run.bind(module, interpreter),
|
123
123
|
runAsync: module.runAsync.bind(module, interpreter),
|
124
|
+
runEvent: module.runEvent.bind(module, interpreter),
|
124
125
|
};
|
125
126
|
|
126
127
|
resolve(resolved);
|
@@ -3,6 +3,11 @@ const { clean, writeFile: writeFileUtil } = require("./_utils.js");
|
|
3
3
|
|
4
4
|
// REQUIRES INTEGRATION TEST
|
5
5
|
/* c8 ignore start */
|
6
|
+
const registerJSModule = (interpreter, name, value) => {
|
7
|
+
interpreter.registerJsModule(name, value);
|
8
|
+
};
|
9
|
+
exports.registerJSModule = registerJSModule;
|
10
|
+
|
6
11
|
const run = (interpreter, code) => interpreter.runPython(clean(code));
|
7
12
|
exports.run = run;
|
8
13
|
|
@@ -10,23 +15,16 @@ const runAsync = (interpreter, code) =>
|
|
10
15
|
interpreter.runPythonAsync(clean(code));
|
11
16
|
exports.runAsync = runAsync;
|
12
17
|
|
13
|
-
const
|
14
|
-
|
15
|
-
|
16
|
-
const
|
17
|
-
interpreter.globals.
|
18
|
+
const runEvent = async (interpreter, code, event) => {
|
19
|
+
// allows method(event) as well as namespace.method(event)
|
20
|
+
// it does not allow fancy brackets names for now
|
21
|
+
const [name, ...keys] = code.split(".");
|
22
|
+
let target = interpreter.globals.get(name);
|
23
|
+
let context;
|
24
|
+
for (const key of keys) [context, target] = [target, target[key]];
|
25
|
+
await target.call(context, event);
|
18
26
|
};
|
19
|
-
exports.
|
20
|
-
|
21
|
-
const deleteGlobal = (interpreter, name) => {
|
22
|
-
interpreter.globals.delete(name);
|
23
|
-
};
|
24
|
-
exports.deleteGlobal = deleteGlobal;
|
25
|
-
|
26
|
-
const registerJSModule = (interpreter, name, value) => {
|
27
|
-
interpreter.registerJsModule(name, value);
|
28
|
-
};
|
29
|
-
exports.registerJSModule = registerJSModule;
|
27
|
+
exports.runEvent = runEvent;
|
30
28
|
|
31
29
|
const writeFile = ({ FS }, path, buffer) =>
|
32
30
|
writeFileUtil(FS, path, buffer);
|
@@ -2,7 +2,7 @@
|
|
2
2
|
require("@ungap/with-resolvers");
|
3
3
|
|
4
4
|
const { getBuffer } = require("../fetch-utils.js");
|
5
|
-
const { absoluteURL
|
5
|
+
const { absoluteURL } = require("../utils.js");
|
6
6
|
|
7
7
|
/**
|
8
8
|
* Trim code only if it's a single line that prettier or other tools might have modified.
|
@@ -139,13 +139,4 @@ const fetchPaths = (module, interpreter, config_fetch) =>
|
|
139
139
|
),
|
140
140
|
);
|
141
141
|
exports.fetchPaths = fetchPaths;
|
142
|
-
|
143
|
-
// this is a fallback for interpreters unable to register JS modules
|
144
|
-
// all defined keys will end up as globally available references
|
145
|
-
// REQUIRES INTEGRATION TEST
|
146
|
-
/* c8 ignore start */
|
147
|
-
function registerJSModule(interpreter, _, value) {
|
148
|
-
for (const [k, v] of entries(value)) this.setGlobal(interpreter, k, v);
|
149
|
-
}
|
150
|
-
exports.registerJSModule = registerJSModule
|
151
142
|
/* c8 ignore stop */
|
@@ -1,11 +1,10 @@
|
|
1
1
|
'use strict';
|
2
2
|
const { fetchPaths, stdio } = require("./_utils.js");
|
3
3
|
const {
|
4
|
-
run,
|
5
|
-
getGlobal,
|
6
|
-
setGlobal,
|
7
|
-
deleteGlobal,
|
8
4
|
registerJSModule,
|
5
|
+
run,
|
6
|
+
runAsync,
|
7
|
+
runEvent,
|
9
8
|
writeFile
|
10
9
|
} = require("./_python.js");
|
11
10
|
|
@@ -24,16 +23,10 @@ module.exports = {
|
|
24
23
|
if (config.fetch) await fetchPaths(this, interpreter, config.fetch);
|
25
24
|
return interpreter;
|
26
25
|
},
|
27
|
-
getGlobal,
|
28
|
-
setGlobal,
|
29
|
-
deleteGlobal,
|
30
26
|
registerJSModule,
|
31
27
|
run,
|
32
|
-
|
33
|
-
|
34
|
-
async runAsync(...args) {
|
35
|
-
return this.run(...args);
|
36
|
-
},
|
28
|
+
runAsync,
|
29
|
+
runEvent,
|
37
30
|
writeFile,
|
38
31
|
};
|
39
32
|
/* c8 ignore stop */
|
@@ -1,12 +1,10 @@
|
|
1
1
|
'use strict';
|
2
2
|
const { fetchPaths, stdio } = require("./_utils.js");
|
3
3
|
const {
|
4
|
+
registerJSModule,
|
4
5
|
run,
|
5
6
|
runAsync,
|
6
|
-
|
7
|
-
setGlobal,
|
8
|
-
deleteGlobal,
|
9
|
-
registerJSModule,
|
7
|
+
runEvent,
|
10
8
|
writeFile
|
11
9
|
} = require("./_python.js");
|
12
10
|
|
@@ -33,12 +31,10 @@ module.exports = {
|
|
33
31
|
}
|
34
32
|
return interpreter;
|
35
33
|
},
|
36
|
-
getGlobal,
|
37
|
-
setGlobal,
|
38
|
-
deleteGlobal,
|
39
34
|
registerJSModule,
|
40
35
|
run,
|
41
36
|
runAsync,
|
37
|
+
runEvent,
|
42
38
|
writeFile,
|
43
39
|
};
|
44
40
|
/* c8 ignore stop */
|
@@ -1,7 +1,9 @@
|
|
1
1
|
'use strict';
|
2
|
-
const { clean, fetchPaths
|
2
|
+
const { clean, fetchPaths } = require("./_utils.js");
|
3
|
+
const { entries } = require("../utils.js");
|
3
4
|
|
4
5
|
const type = "ruby-wasm-wasi";
|
6
|
+
const jsType = type.replace(/\W+/g, "_");
|
5
7
|
|
6
8
|
// MISSING:
|
7
9
|
// * there is no VFS apparently or I couldn't reach any
|
@@ -24,28 +26,35 @@ module.exports = {
|
|
24
26
|
if (config.fetch) await fetchPaths(this, interpreter, config.fetch);
|
25
27
|
return interpreter;
|
26
28
|
},
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
29
|
+
// Fallback to globally defined module fields (i.e. $xworker)
|
30
|
+
registerJSModule(interpreter, _, value) {
|
31
|
+
const code = ['require "js"'];
|
32
|
+
for (const [k, v] of entries(value)) {
|
33
|
+
const id = `__module_${jsType}_${k}`;
|
34
|
+
globalThis[id] = v;
|
35
|
+
code.push(`$${k}=JS.global[:${id}]`);
|
31
36
|
}
|
32
|
-
|
33
|
-
const method = this.run(interpreter, `method(:${name})`);
|
34
|
-
return (...args) => method.call(name, ...args.map(value => interpreter.wrap(value)));
|
35
|
-
}
|
36
|
-
},
|
37
|
-
setGlobal(interpreter, name, value) {
|
38
|
-
const id = `__pyscript_ruby_wasm_wasi_${name}`;
|
39
|
-
globalThis[id] = value;
|
40
|
-
this.run(interpreter, `require "js";$${name}=JS::eval("return ${id}")`);
|
41
|
-
},
|
42
|
-
deleteGlobal(interpreter, name) {
|
43
|
-
const id = `__pyscript_ruby_wasm_wasi_${name}`;
|
44
|
-
this.run(interpreter, `$${name}=nil`);
|
45
|
-
delete globalThis[id];
|
37
|
+
this.run(interpreter, code.join(";"));
|
46
38
|
},
|
47
39
|
run: (interpreter, code) => interpreter.eval(clean(code)),
|
48
40
|
runAsync: (interpreter, code) => interpreter.evalAsync(clean(code)),
|
41
|
+
async runEvent(interpreter, code, event) {
|
42
|
+
// patch common xworker.onmessage/onerror cases
|
43
|
+
if (/^xworker\.(on\w+)$/.test(code)) {
|
44
|
+
const { $1: name } = RegExp;
|
45
|
+
const id = `__module_${jsType}_event`;
|
46
|
+
globalThis[id] = event;
|
47
|
+
this.run(
|
48
|
+
interpreter,
|
49
|
+
`require "js";$xworker.call("${name}",JS.global[:${id}])`,
|
50
|
+
);
|
51
|
+
delete globalThis[id];
|
52
|
+
} else {
|
53
|
+
// Experimental: allows only events by fully qualified method name
|
54
|
+
const method = this.run(interpreter, `method(:${code})`);
|
55
|
+
await method.call(code, interpreter.wrap(event));
|
56
|
+
}
|
57
|
+
},
|
49
58
|
writeFile: () => {
|
50
59
|
throw new Error(`writeFile is not supported in ${type}`);
|
51
60
|
},
|
@@ -1,11 +1,7 @@
|
|
1
1
|
'use strict';
|
2
|
-
const {
|
3
|
-
|
4
|
-
|
5
|
-
stdio,
|
6
|
-
registerJSModule,
|
7
|
-
writeFileShim
|
8
|
-
} = require("./_utils.js");
|
2
|
+
const { clean, fetchPaths, stdio, writeFileShim } = require("./_utils.js");
|
3
|
+
|
4
|
+
const { entries } = require("../utils.js");
|
9
5
|
|
10
6
|
const type = "wasmoon";
|
11
7
|
|
@@ -28,16 +24,21 @@ module.exports = {
|
|
28
24
|
if (config.fetch) await fetchPaths(this, interpreter, config.fetch);
|
29
25
|
return interpreter;
|
30
26
|
},
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
interpreter.global.set(name, value);
|
35
|
-
},
|
36
|
-
deleteGlobal(interpreter, name) {
|
37
|
-
interpreter.global.set(name, void 0);
|
27
|
+
// Fallback to globally defined module fields
|
28
|
+
registerJSModule: (interpreter, _, value) => {
|
29
|
+
for (const [k, v] of entries(value)) interpreter.global.set(k, v);
|
38
30
|
},
|
39
31
|
run: (interpreter, code) => interpreter.doStringSync(clean(code)),
|
40
32
|
runAsync: (interpreter, code) => interpreter.doString(clean(code)),
|
33
|
+
runEvent: async (interpreter, code, event) => {
|
34
|
+
// allows method(event) as well as namespace.method(event)
|
35
|
+
// it does not allow fancy brackets names for now
|
36
|
+
const [name, ...keys] = code.split(".");
|
37
|
+
let target = interpreter.global.get(name);
|
38
|
+
let context;
|
39
|
+
for (const key of keys) [context, target] = [target, target[key]];
|
40
|
+
await target.call(context, event);
|
41
|
+
},
|
41
42
|
writeFile: (
|
42
43
|
{
|
43
44
|
cmodule: {
|
package/cjs/listeners.js
CHANGED
@@ -42,8 +42,7 @@ const listener = async (event) => {
|
|
42
42
|
el.getAttribute(`${name}-env`) || name,
|
43
43
|
);
|
44
44
|
const handler = registry.get(name);
|
45
|
-
|
46
|
-
callback(event);
|
45
|
+
handler.runEvent(interpreter, value, event);
|
47
46
|
}
|
48
47
|
};
|
49
48
|
exports.listener = listener;
|
package/cjs/worker/xworker.js
CHANGED
@@ -1,3 +1,3 @@
|
|
1
1
|
'use strict';
|
2
2
|
/* c8 ignore next */
|
3
|
-
module.exports = () => new Worker(URL.createObjectURL(new Blob(["const e=\"object\"==typeof self?self:globalThis,t=t=>((t,r)=>{const n=(e,r)=>(t.set(r,e),e),s=o=>{if(t.has(o))return t.get(o);const[a,i]=r[o];switch(a){case 0:case-1:return n(i,o);case 1:{const e=n([],o);for(const t of i)e.push(s(t));return e}case 2:{const e=n({},o);for(const[t,r]of i)e[s(t)]=s(r);return e}case 3:return n(new Date(i),o);case 4:{const{source:e,flags:t}=i;return n(new RegExp(e,t),o)}case 5:{const e=n(new Map,o);for(const[t,r]of i)e.set(s(t),s(r));return e}case 6:{const e=n(new Set,o);for(const t of i)e.add(s(t));return e}case 7:{const{name:t,message:r}=i;return n(new e[t](r),o)}case 8:return n(BigInt(i),o);case\"BigInt\":return n(Object(BigInt(i)),o)}return n(new e[a](i),o)};return s})(new Map,t)(0),r=\"\",{toString:n}={},{keys:s}=Object,o=e=>{const t=typeof e;if(\"object\"!==t||!e)return[0,t];const s=n.call(e).slice(8,-1);switch(s){case\"Array\":return[1,r];case\"Object\":return[2,r];case\"Date\":return[3,r];case\"RegExp\":return[4,r];case\"Map\":return[5,r];case\"Set\":return[6,r]}return s.includes(\"Array\")?[1,s]:s.includes(\"Error\")?[7,s]:[2,s]},a=([e,t])=>0===e&&(\"function\"===t||\"symbol\"===t),i=(e,{json:t,lossy:r}={})=>{const n=[];return((e,t,r,n)=>{const i=(e,t)=>{const s=n.push(e)-1;return r.set(t,s),s},c=n=>{if(r.has(n))return r.get(n);let[l,u]=o(n);switch(l){case 0:{let t=n;switch(u){case\"bigint\":l=8,t=n.toString();break;case\"function\":case\"symbol\":if(e)throw new TypeError(\"unable to serialize \"+u);t=null;break;case\"undefined\":return i([-1],n)}return i([l,t],n)}case 1:{if(u)return i([u,[...n]],n);const e=[],t=i([l,e],n);for(const t of n)e.push(c(t));return t}case 2:{if(u)switch(u){case\"BigInt\":return i([u,n.toString()],n);case\"Boolean\":case\"Number\":case\"String\":return i([u,n.valueOf()],n)}if(t&&\"toJSON\"in n)return c(n.toJSON());const r=[],f=i([l,r],n);for(const t of s(n))!e&&a(o(n[t]))||r.push([c(t),c(n[t])]);return f}case 3:return i([l,n.toISOString()],n);case 4:{const{source:e,flags:t}=n;return i([l,{source:e,flags:t}],n)}case 5:{const t=[],r=i([l,t],n);for(const[r,s]of n)(e||!a(o(r))&&!a(o(s)))&&t.push([c(r),c(s)]);return r}case 6:{const t=[],r=i([l,t],n);for(const r of n)!e&&a(o(r))||t.push(c(r));return r}}const{message:f}=n;return i([l,{name:u,message:f}],n)};return c})(!(t||r),!!t,new Map,n)(e),n},{parse:c,stringify:l}=JSON,u={json:!0,lossy:!0};var f=Object.freeze({__proto__:null,parse:e=>t(c(e)),stringify:e=>l(i(e,u))}),p=\"2f6fe6d4-8ba8-424a-83c5-8fadca1ea103\",d=e=>({value:new Promise((t=>{let r=new Worker(\"data:application/javascript,\"+encodeURIComponent(\"onmessage=({data:b})=>(Atomics.wait(b,0),postMessage(0))\"));r.onmessage=t,r.postMessage(e)}))})\n/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:w,Map:g,SharedArrayBuffer:h,Uint16Array:y}=globalThis,{BYTES_PER_ELEMENT:m}=w,{BYTES_PER_ELEMENT:b}=y,{isArray:v}=Array,{notify:S,wait:M,waitAsync:P}=Atomics,{fromCharCode:E}=String,j=(e,t)=>e?(P||d)(t,0):(M(t,0),{value:{then:e=>e()}}),A=new WeakSet,k=new WeakMap;let x=0;const $=(e,{parse:t,stringify:r}=JSON)=>{if(!k.has(e)){const n=(t,...r)=>e.postMessage({[p]:r},{transfer:t});k.set(e,new Proxy(new g,{has:(e,t)=>\"string\"==typeof t&&!t.startsWith(\"_\"),get:(r,s)=>\"then\"===s?null:(...r)=>{const o=x++;let a=new w(new h(m)),i=[];A.has(r.at(-1)||i)&&A.delete(i=r.pop()),n(i,o,a,s,r);const c=e instanceof Worker;return j(c,a).value.then((()=>{const e=a[0];if(!e)return;const r=b*e;return a=new w(new h(r+r%m)),n([],o,a),j(c,a).value.then((()=>t(E(...new y(a.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new g;e.addEventListener(\"message\",(async e=>{const s=e.data?.[p];if(v(s)){e.stopImmediatePropagation();const[o,a,...i]=s;if(i.length){const[e,s]=i;if(!t.has(e))throw new Error(`Unsupported action: ${e}`);{const i=r(await t.get(e)(...s));i&&(n.set(o,i),a[0]=i.length)}}else{const e=n.get(o);n.delete(o);for(let t=new y(a.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}S(a,0)}}))}return!!t.set(n,s)}}))}return k.get(e)};$.transfer=(...e)=>(A.add(e),e);const _=\"object\",O=\"function\",W=\"number\",R=\"string\",T=\"undefined\",F=\"symbol\",{defineProperty:G,getOwnPropertyDescriptor:B,getPrototypeOf:J,isExtensible:I,ownKeys:L,preventExtensions:U,set:N,setPrototypeOf:z}=Reflect,D=J(Int8Array),C=(e,t)=>{const{get:r,set:n,value:s}=e;return r&&(e.get=t(r)),n&&(e.set=t(n)),s&&(e.value=t(s)),e},q=(e,t)=>[e,t],K=e=>t=>{const r=typeof t;switch(r){case _:if(null==t)return q(\"null\",t);case O:return e(r,t);case\"boolean\":case W:case R:case T:case\"bigint\":return q(r,t);case F:if(Y.has(t))return q(r,Y.get(t))}throw new Error(`Unable to handle this ${r} type`)},Y=new Map(L(Symbol).filter((e=>typeof Symbol[e]===F)).map((e=>[Symbol[e],e]))),V=e=>{for(const[t,r]of Y)if(r===e)return t},H=\"apply\",Q=\"construct\",X=\"defineProperty\",Z=\"deleteProperty\",ee=\"get\",te=\"getOwnPropertyDescriptor\",re=\"getPrototypeOf\",ne=\"has\",se=\"isExtensible\",oe=\"ownKeys\",ae=\"preventExtensions\",ie=\"set\",ce=\"setPrototypeOf\",le=\"delete\";let ue=0;const fe=new Map,pe=new Map,de=new WeakMap;if(globalThis.window===globalThis){const{addEventListener:e}=EventTarget.prototype;G(EventTarget.prototype,\"addEventListener\",{value(t,r,...n){return n.at(0)?.invoke&&(de.has(this)||de.set(this,new Map),de.get(this).set(t,[].concat(n[0].invoke)),delete n[0].invoke),e.call(this,t,r,...n)}})}const we=K(((e,t)=>{if(!fe.has(t)){let e;for(;pe.has(e=ue++););fe.set(t,e),pe.set(e,t)}return q(e,fe.get(t))}));var ge=(e,t,r)=>{const{[r]:n}=e,s=new FinalizationRegistry((e=>{n(le,q(R,e))})),o=([e,t])=>{switch(e){case _:if(null==t)return globalThis;if(typeof t===W)return pe.get(t);if(!(t instanceof D))for(const e in t)t[e]=o(t[e]);return t;case O:if(typeof t===R){if(!pe.has(t)){const e=function(...e){return e.at(0)instanceof Event&&(e=>{const{currentTarget:t,target:r,type:n}=e;for(const s of de.get(t||r)?.get(n)||[])e[s]()})(...e),n(H,q(O,t),we(this),e.map(we))},r=new WeakRef(e);pe.set(t,r),s.register(e,t,r)}return pe.get(t).deref()}return pe.get(t);case F:return V(t)}return t},a={[H]:(e,t,r)=>we(e.apply(t,r)),[Q]:(e,t)=>we(new e(...t)),[X]:(e,t,r)=>we(G(e,t,r)),[Z]:(e,t)=>we(delete e[t]),[re]:e=>we(J(e)),[ee]:(e,t)=>we(e[t]),[te]:(e,t)=>{const r=B(e,t);return r?q(_,C(r,we)):q(T,r)},[ne]:(e,t)=>we(t in e),[se]:e=>we(I(e)),[oe]:e=>q(_,L(e).map(we)),[ae]:e=>we(U(e)),[ie]:(e,t,r)=>we(N(e,t,r)),[ce]:(e,t)=>we(z(e,t)),[le](e){fe.delete(pe.get(e)),pe.delete(e)}};return e[t]=(e,t,...r)=>{switch(e){case H:r[0]=o(r[0]),r[1]=r[1].map(o);break;case Q:r[0]=r[0].map(o);break;case X:{const[e,t]=r;r[0]=o(e);const{get:n,set:s,value:a}=t;n&&(t.get=o(n)),s&&(t.set=o(s)),a&&(t.value=o(a));break}default:r=r.map(o)}return a[e](o(t),...r)},{proxy:e,window:globalThis,isWindowProxy:()=>!1}};let he=0;const ye=new Map,me=new Map,be=Symbol(),ve=e=>typeof e===O?e():e,Se=e=>typeof e===_&&!!e&&be in e,Me=\"isArray\",Pe=Array[Me],Ee=K(((e,t)=>{if(be in t)return ve(t[be]);if(e===O){if(!me.has(t)){let e;for(;me.has(e=String(he++)););ye.set(t,e),me.set(e,t)}return q(e,ye.get(t))}if(!(t instanceof D))for(const e in t)t[e]=Ee(t[e]);return q(e,t)}));var je=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(le,Ee(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===O?Ae.bind(e):e,a=new Proxy(n,l),i=new WeakRef(a);s.set(r,i),o.register(a,r,i)}return s.get(r).deref()},i=e=>{const[t,r]=e;switch(t){case _:return typeof r===W?a(e):r;case O:return typeof r===R?me.get(r):a(e);case F:return V(r)}return r},c=(e,t,...r)=>i(n(e,ve(t),...r)),l={[H]:(e,t,r)=>c(H,e,Ee(t),r.map(Ee)),[Q]:(e,t)=>c(Q,e,t.map(Ee)),[X]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===O&&(r.get=Ee(n)),typeof s===O&&(r.set=Ee(s)),typeof o===O&&(r.value=Ee(o)),c(X,e,Ee(t),r)},[Z]:(e,t)=>c(Z,e,Ee(t)),[re]:e=>c(re,e),[ee]:(e,t)=>t===be?e:c(ee,e,Ee(t)),[te]:(e,t)=>{const r=c(te,e,Ee(t));return r&&C(r,i)},[ne]:(e,t)=>t===be||c(ne,e,Ee(t)),[se]:e=>c(se,e),[oe]:e=>c(oe,e).map(i),[ae]:e=>c(ae,e),[ie]:(e,t,r)=>c(ie,e,Ee(t),Ee(r)),[ce]:(e,t)=>c(ce,e,Ee(t))};e[r]=(e,t,r,n)=>{switch(e){case H:return i(t).apply(i(r),n.map(i));case le:{const e=i(t);ye.delete(me.get(e)),me.delete(e)}}};const u=new Proxy([_,null],l),f=u.Array[Me];return G(Array,Me,{value:e=>Se(e)?f(e):Pe(e)}),{window:u,isWindowProxy:Se,proxy:e,get global(){return console.warn(\"Deprecated: please access `window` field instead\"),this.window},get isGlobal(){return function(e){return console.warn(\"Deprecated: please access `isWindowProxy` field instead\"),this.isWindowProxy(e)}.bind(this)}}};function Ae(){return this}const ke=p+\"M\",xe=p+\"T\",$e=new WeakMap,_e=(e,...t)=>{const r=$(e,...t);if(!$e.has(r)){const t=e instanceof Worker?ge:je;$e.set(r,t(r,ke,xe))}return $e.get(r)};_e.transfer=$.transfer;const{isArray:Oe}=Array,{assign:We,create:Re,defineProperties:Te,defineProperty:Fe,entries:Ge}=Object,{all:Be,resolve:Je}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ie=(e,t=location.href)=>new URL(e,t).href;Promise.withResolvers||(Promise.withResolvers=function(){var e,t,r=new this((function(r,n){e=r,t=n}));return{resolve:e,reject:t,promise:r}});const Le=e=>e.arrayBuffer(),Ue=e=>e.json(),Ne=e=>e.text(),ze=e=>e.replace(/^[^\\r\\n]+$/,(e=>e.trim())),De=new WeakMap,Ce=e=>{const t=e||console,r={stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>r.stderr(...e),stdout:(...e)=>r.stdout(...e),async get(e){const t=await e;return De.set(t,r),t}}},qe=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},Ke=(e,t)=>{const r=[];for(const n of t.split(\"/\"))r.push(n),n&&e.mkdir(r.join(\"/\"))},Ye=(e,t)=>{const r=[];for(const e of t.split(\"/\"))switch(e){case\"\":case\".\":break;case\"..\":r.pop();break;default:r.push(e)}return[e.cwd()].concat(r).join(\"/\").replace(/^\\/+/,\"/\")},Ve=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\"))).filter((e=>\"\"!==e&&\".\"!==e)).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},He=new WeakMap,Qe=(e,t,r)=>Be((e=>{for(const{files:t,to_file:r,from:n=\"\"}of e){if(void 0!==t&&void 0!==r)throw new Error(\"Cannot use 'to_file' and 'files' parameters together!\");if(void 0===t&&void 0===r&&n.endsWith(\"/\"))throw new Error(`Couldn't determine the filename from the path ${n}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e=\"\",to_folder:t=\".\",to_file:r,files:n})=>{if(Oe(n))return n.map((r=>({url:Ve([e,r]),path:Ve([t,r])})));const s=r||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:Ve([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Ie(t,He.get(e))))(r,n).then(Le).then((r=>e.writeFile(t,s,r))))));function Xe(e,t,r){for(const[t,n]of Ge(r))this.setGlobal(e,t,n)}const Ze=(e,t)=>e.runPython(ze(t)),et=(e,t)=>e.globals.get(t),tt=(e,t,r)=>{e.globals.set(t,r)},rt=(e,t)=>{e.globals.delete(t)},nt=(e,t,r)=>{e.registerJsModule(t,r)},st=({FS:e},t,r)=>((e,t,r)=>{const{parentPath:n,name:s}=e.analyzePath(t,!0);return e.mkdirTree(n),e.writeFile([n,s].join(\"/\"),new Uint8Array(r),{canOwn:!0})})(e,t,r);var ot={type:\"micropython\",module:(e=\"1.20.0-268\")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,r){const{stderr:n,stdout:s,get:o}=Ce();r=r.replace(/\\.m?js$/,\".wasm\");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await Qe(this,a,t.fetch),a},getGlobal:et,setGlobal:tt,deleteGlobal:rt,registerJSModule:nt,run:Ze,async runAsync(...e){return this.run(...e)},writeFile:st};var at={type:\"pyodide\",module:(e=\"0.23.2\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,r){const{stderr:n,stdout:s,get:o}=Ce(),a=r.slice(0,r.lastIndexOf(\"/\")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await Qe(this,i,t.fetch),t.packages){await i.loadPackage(\"micropip\");const e=await i.pyimport(\"micropip\");await e.install(t.packages),e.destroy()}return i},getGlobal:et,setGlobal:tt,deleteGlobal:rt,registerJSModule:nt,run:Ze,runAsync:(e,t)=>e.runPythonAsync(ze(t)),writeFile:st};const it=\"ruby-wasm-wasi\";var ct={type:it,experimental:!0,module:(e=\"2.0.0\")=>`https://cdn.jsdelivr.net/npm/ruby-3_2-wasm-wasi@${e}/dist/browser.esm.js`,async engine({DefaultRubyVM:e},t,r){const n=await fetch(`${r.slice(0,r.lastIndexOf(\"/\"))}/ruby.wasm`),s=await WebAssembly.compile(await n.arrayBuffer()),{vm:o}=await e(s);return t.fetch&&await Qe(this,o,t.fetch),o},registerJSModule:Xe,getGlobal(e,t){try{return this.run(e,t)}catch(r){const n=this.run(e,`method(:${t})`);return(...r)=>n.call(t,...r.map((t=>e.wrap(t))))}},setGlobal(e,t,r){const n=`__pyscript_ruby_wasm_wasi_${t}`;globalThis[n]=r,this.run(e,`require \"js\";$${t}=JS::eval(\"return ${n}\")`)},deleteGlobal(e,t){const r=`__pyscript_ruby_wasm_wasi_${t}`;this.run(e,`$${t}=nil`),delete globalThis[r]},run:(e,t)=>e.eval(ze(t)),runAsync:(e,t)=>e.evalAsync(ze(t)),writeFile:()=>{throw new Error(`writeFile is not supported in ${it}`)}};var lt={type:\"wasmoon\",module:(e=\"1.15.0\")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},r){const{stderr:n,stdout:s,get:o}=Ce(),a=await o((new e).createEngine());return a.global.getTable(t.Base,(e=>{a.global.setField(e,\"print\",s),a.global.setField(e,\"printErr\",n)})),r.fetch&&await Qe(this,a,r.fetch),a},registerJSModule:Xe,getGlobal:(e,t)=>e.global.get(t),setGlobal(e,t,r){e.global.set(t,r)},deleteGlobal(e,t){e.global.set(t,void 0)},run:(e,t)=>e.doStringSync(ze(t)),runAsync:(e,t)=>e.doString(ze(t)),writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(t=Ye(e,t),Ke(e,qe(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const ut=new Map,ft=new Map,pt=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split(\"@\"),s=ut.get(r),o=/^https?:\\/\\//i.test(n)?n.join(\"@\"):s.module(...n);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:r,module:n,engine:s}=e.get(t);return(e,o)=>n.then((n=>{ft.set(t,e);const a=e?.fetch;return a&&He.set(a,o),s(n,e,r)}))}}),dt=e=>{for(const t of[].concat(e.type))ut.set(t,e)};for(const e of[ot,at,ct,lt])dt(e);const wt=async e=>(await import(\"https://cdn.jsdelivr.net/npm/basic-toml@0.3.1/es.js\")).parse(e);try{new SharedArrayBuffer(4)}catch(e){throw new Error([\"Unable to use SharedArrayBuffer due insecure environment.\",\"Please read requirements in MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements\"].join(\"\\n\"))}let gt,ht,yt;const mt=(e,t)=>{addEventListener(e,t||(async t=>{await gt,yt=t,ht(`xworker.on${e}(xworker.event);`,Mt)}),!!t&&{once:!0})},{proxy:bt,window:vt,isWindowProxy:St}=_e(self,f),Mt={sync:bt,window:vt,isWindowProxy:St,onerror(){},onmessage(){},onmessageerror(){},postMessage:postMessage.bind(self),get event(){const e=yt;if(!e)throw new Error(\"Unauthorized event access\");return yt=void 0,e}};mt(\"message\",(({data:{options:e,code:t,hooks:r}})=>{gt=(async()=>{const{type:n,version:s,config:o,async:a}=e,i=await((e,t)=>{let r={};if(t)if(t.endsWith(\".json\"))r=fetch(t).then(Ue);else if(t.endsWith(\".toml\"))r=fetch(t).then(Ne).then(wt);else{try{r=JSON.parse(t)}catch(e){r=wt(t)}t=Ie(\"./config.txt\")}return Je(r).then((r=>pt[e](r,t)))})(((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(n,s),o),c=Re(ut.get(n)),l=\"run\"+(a?\"Async\":\"\");if(r){const{beforeRun:e,beforeRunAsync:t,afterRun:n,afterRunAsync:s}=r,o=n||s,a=e||t;if(o){const e=c[l].bind(c);c[l]=(t,r)=>e(t,`${r}\\n${o}`)}if(a){const e=c[l].bind(c);c[l]=(t,r)=>e(t,`${a}\\n${r}`)}}return c.registerJSModule(i,\"xworker\",{xworker:Mt}),ht=c[l].bind(c,i),ht(t),i})(),mt(\"error\"),mt(\"message\"),mt(\"messageerror\")}));\n"],{type:'application/javascript'})),{type:'module'});
|
3
|
+
module.exports = () => new Worker(URL.createObjectURL(new Blob(["const e=\"object\"==typeof self?self:globalThis,t=t=>((t,r)=>{const n=(e,r)=>(t.set(r,e),e),s=o=>{if(t.has(o))return t.get(o);const[a,i]=r[o];switch(a){case 0:case-1:return n(i,o);case 1:{const e=n([],o);for(const t of i)e.push(s(t));return e}case 2:{const e=n({},o);for(const[t,r]of i)e[s(t)]=s(r);return e}case 3:return n(new Date(i),o);case 4:{const{source:e,flags:t}=i;return n(new RegExp(e,t),o)}case 5:{const e=n(new Map,o);for(const[t,r]of i)e.set(s(t),s(r));return e}case 6:{const e=n(new Set,o);for(const t of i)e.add(s(t));return e}case 7:{const{name:t,message:r}=i;return n(new e[t](r),o)}case 8:return n(BigInt(i),o);case\"BigInt\":return n(Object(BigInt(i)),o)}return n(new e[a](i),o)};return s})(new Map,t)(0),r=\"\",{toString:n}={},{keys:s}=Object,o=e=>{const t=typeof e;if(\"object\"!==t||!e)return[0,t];const s=n.call(e).slice(8,-1);switch(s){case\"Array\":return[1,r];case\"Object\":return[2,r];case\"Date\":return[3,r];case\"RegExp\":return[4,r];case\"Map\":return[5,r];case\"Set\":return[6,r]}return s.includes(\"Array\")?[1,s]:s.includes(\"Error\")?[7,s]:[2,s]},a=([e,t])=>0===e&&(\"function\"===t||\"symbol\"===t),i=(e,{json:t,lossy:r}={})=>{const n=[];return((e,t,r,n)=>{const i=(e,t)=>{const s=n.push(e)-1;return r.set(t,s),s},c=n=>{if(r.has(n))return r.get(n);let[l,u]=o(n);switch(l){case 0:{let t=n;switch(u){case\"bigint\":l=8,t=n.toString();break;case\"function\":case\"symbol\":if(e)throw new TypeError(\"unable to serialize \"+u);t=null;break;case\"undefined\":return i([-1],n)}return i([l,t],n)}case 1:{if(u)return i([u,[...n]],n);const e=[],t=i([l,e],n);for(const t of n)e.push(c(t));return t}case 2:{if(u)switch(u){case\"BigInt\":return i([u,n.toString()],n);case\"Boolean\":case\"Number\":case\"String\":return i([u,n.valueOf()],n)}if(t&&\"toJSON\"in n)return c(n.toJSON());const r=[],f=i([l,r],n);for(const t of s(n))!e&&a(o(n[t]))||r.push([c(t),c(n[t])]);return f}case 3:return i([l,n.toISOString()],n);case 4:{const{source:e,flags:t}=n;return i([l,{source:e,flags:t}],n)}case 5:{const t=[],r=i([l,t],n);for(const[r,s]of n)(e||!a(o(r))&&!a(o(s)))&&t.push([c(r),c(s)]);return r}case 6:{const t=[],r=i([l,t],n);for(const r of n)!e&&a(o(r))||t.push(c(r));return r}}const{message:f}=n;return i([l,{name:u,message:f}],n)};return c})(!(t||r),!!t,new Map,n)(e),n},{parse:c,stringify:l}=JSON,u={json:!0,lossy:!0};var f=Object.freeze({__proto__:null,parse:e=>t(c(e)),stringify:e=>l(i(e,u))}),p=\"2f6fe6d4-8ba8-424a-83c5-8fadca1ea103\",d=e=>({value:new Promise((t=>{let r=new Worker(\"data:application/javascript,\"+encodeURIComponent(\"onmessage=({data:b})=>(Atomics.wait(b,0),postMessage(0))\"));r.onmessage=t,r.postMessage(e)}))})\n/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:w,Map:g,SharedArrayBuffer:y,Uint16Array:h}=globalThis,{BYTES_PER_ELEMENT:m}=w,{BYTES_PER_ELEMENT:b}=h,{isArray:v}=Array,{notify:S,wait:E,waitAsync:M}=Atomics,{fromCharCode:P}=String,j=(e,t)=>e?(M||d)(t,0):(E(t,0),{value:{then:e=>e()}}),k=new WeakSet,x=new WeakMap;let A=0;const $=(e,{parse:t,stringify:r}=JSON)=>{if(!x.has(e)){const n=(t,...r)=>e.postMessage({[p]:r},{transfer:t});x.set(e,new Proxy(new g,{has:(e,t)=>\"string\"==typeof t&&!t.startsWith(\"_\"),get:(r,s)=>\"then\"===s?null:(...r)=>{const o=A++;let a=new w(new y(m)),i=[];k.has(r.at(-1)||i)&&k.delete(i=r.pop()),n(i,o,a,s,r);const c=e instanceof Worker;return j(c,a).value.then((()=>{const e=a[0];if(!e)return;const r=b*e;return a=new w(new y(r+r%m)),n([],o,a),j(c,a).value.then((()=>t(P(...new h(a.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new g;e.addEventListener(\"message\",(async e=>{const s=e.data?.[p];if(v(s)){e.stopImmediatePropagation();const[o,a,...i]=s;if(i.length){const[e,s]=i;if(!t.has(e))throw new Error(`Unsupported action: ${e}`);{const i=r(await t.get(e)(...s));i&&(n.set(o,i),a[0]=i.length)}}else{const e=n.get(o);n.delete(o);for(let t=new h(a.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}S(a,0)}}))}return!!t.set(n,s)}}))}return x.get(e)};$.transfer=(...e)=>(k.add(e),e);const _=\"object\",W=\"function\",O=\"number\",R=\"string\",T=\"undefined\",F=\"symbol\",{defineProperty:B,getOwnPropertyDescriptor:J,getPrototypeOf:I,isExtensible:L,ownKeys:U,preventExtensions:N,set:D,setPrototypeOf:z}=Reflect,C=I(Int8Array),q=(e,t)=>{const{get:r,set:n,value:s}=e;return r&&(e.get=t(r)),n&&(e.set=t(n)),s&&(e.value=t(s)),e},G=(e,t)=>[e,t],K=e=>t=>{const r=typeof t;switch(r){case _:if(null==t)return G(\"null\",t);case W:return e(r,t);case\"boolean\":case O:case R:case T:case\"bigint\":return G(r,t);case F:if(Y.has(t))return G(r,Y.get(t))}throw new Error(`Unable to handle this ${r} type`)},Y=new Map(U(Symbol).filter((e=>typeof Symbol[e]===F)).map((e=>[Symbol[e],e]))),V=e=>{for(const[t,r]of Y)if(r===e)return t},H=\"apply\",Q=\"construct\",X=\"defineProperty\",Z=\"deleteProperty\",ee=\"get\",te=\"getOwnPropertyDescriptor\",re=\"getPrototypeOf\",ne=\"has\",se=\"isExtensible\",oe=\"ownKeys\",ae=\"preventExtensions\",ie=\"set\",ce=\"setPrototypeOf\",le=\"delete\";let ue=0;const fe=new Map,pe=new Map,de=new WeakMap;if(globalThis.window===globalThis){const{addEventListener:e}=EventTarget.prototype;B(EventTarget.prototype,\"addEventListener\",{value(t,r,...n){return n.at(0)?.invoke&&(de.has(this)||de.set(this,new Map),de.get(this).set(t,[].concat(n[0].invoke)),delete n[0].invoke),e.call(this,t,r,...n)}})}const we=K(((e,t)=>{if(!fe.has(t)){let e;for(;pe.has(e=ue++););fe.set(t,e),pe.set(e,t)}return G(e,fe.get(t))}));var ge=(e,t,r)=>{const{[r]:n}=e,s=new FinalizationRegistry((e=>{n(le,G(R,e))})),o=([e,t])=>{switch(e){case _:if(null==t)return globalThis;if(typeof t===O)return pe.get(t);if(!(t instanceof C))for(const e in t)t[e]=o(t[e]);return t;case W:if(typeof t===R){if(!pe.has(t)){const e=function(...e){return e.at(0)instanceof Event&&(e=>{const{currentTarget:t,target:r,type:n}=e;for(const s of de.get(t||r)?.get(n)||[])e[s]()})(...e),n(H,G(W,t),we(this),e.map(we))},r=new WeakRef(e);pe.set(t,r),s.register(e,t,r)}return pe.get(t).deref()}return pe.get(t);case F:return V(t)}return t},a={[H]:(e,t,r)=>we(e.apply(t,r)),[Q]:(e,t)=>we(new e(...t)),[X]:(e,t,r)=>we(B(e,t,r)),[Z]:(e,t)=>we(delete e[t]),[re]:e=>we(I(e)),[ee]:(e,t)=>we(e[t]),[te]:(e,t)=>{const r=J(e,t);return r?G(_,q(r,we)):G(T,r)},[ne]:(e,t)=>we(t in e),[se]:e=>we(L(e)),[oe]:e=>G(_,U(e).map(we)),[ae]:e=>we(N(e)),[ie]:(e,t,r)=>we(D(e,t,r)),[ce]:(e,t)=>we(z(e,t)),[le](e){fe.delete(pe.get(e)),pe.delete(e)}};return e[t]=(e,t,...r)=>{switch(e){case H:r[0]=o(r[0]),r[1]=r[1].map(o);break;case Q:r[0]=r[0].map(o);break;case X:{const[e,t]=r;r[0]=o(e);const{get:n,set:s,value:a}=t;n&&(t.get=o(n)),s&&(t.set=o(s)),a&&(t.value=o(a));break}default:r=r.map(o)}return a[e](o(t),...r)},{proxy:e,window:globalThis,isWindowProxy:()=>!1}};let ye=0;const he=new Map,me=new Map,be=Symbol(),ve=e=>typeof e===W?e():e,Se=e=>typeof e===_&&!!e&&be in e,Ee=\"isArray\",Me=Array[Ee],Pe=K(((e,t)=>{if(be in t)return ve(t[be]);if(e===W){if(!me.has(t)){let e;for(;me.has(e=String(ye++)););he.set(t,e),me.set(e,t)}return G(e,he.get(t))}if(!(t instanceof C))for(const e in t)t[e]=Pe(t[e]);return G(e,t)}));var je=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(le,Pe(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===W?ke.bind(e):e,a=new Proxy(n,l),i=new WeakRef(a);s.set(r,i),o.register(a,r,i)}return s.get(r).deref()},i=e=>{const[t,r]=e;switch(t){case _:return typeof r===O?a(e):r;case W:return typeof r===R?me.get(r):a(e);case F:return V(r)}return r},c=(e,t,...r)=>i(n(e,ve(t),...r)),l={[H]:(e,t,r)=>c(H,e,Pe(t),r.map(Pe)),[Q]:(e,t)=>c(Q,e,t.map(Pe)),[X]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===W&&(r.get=Pe(n)),typeof s===W&&(r.set=Pe(s)),typeof o===W&&(r.value=Pe(o)),c(X,e,Pe(t),r)},[Z]:(e,t)=>c(Z,e,Pe(t)),[re]:e=>c(re,e),[ee]:(e,t)=>t===be?e:c(ee,e,Pe(t)),[te]:(e,t)=>{const r=c(te,e,Pe(t));return r&&q(r,i)},[ne]:(e,t)=>t===be||c(ne,e,Pe(t)),[se]:e=>c(se,e),[oe]:e=>c(oe,e).map(i),[ae]:e=>c(ae,e),[ie]:(e,t,r)=>c(ie,e,Pe(t),Pe(r)),[ce]:(e,t)=>c(ce,e,Pe(t))};e[r]=(e,t,r,n)=>{switch(e){case H:return i(t).apply(i(r),n.map(i));case le:{const e=i(t);he.delete(me.get(e)),me.delete(e)}}};const u=new Proxy([_,null],l),f=u.Array[Ee];return B(Array,Ee,{value:e=>Se(e)?f(e):Me(e)}),{window:u,isWindowProxy:Se,proxy:e,get global(){return console.warn(\"Deprecated: please access `window` field instead\"),this.window},get isGlobal(){return function(e){return console.warn(\"Deprecated: please access `isWindowProxy` field instead\"),this.isWindowProxy(e)}.bind(this)}}};function ke(){return this}const xe=p+\"M\",Ae=p+\"T\",$e=new WeakMap,_e=(e,...t)=>{const r=$(e,...t);if(!$e.has(r)){const t=e instanceof Worker?ge:je;$e.set(r,t(r,xe,Ae))}return $e.get(r)};_e.transfer=$.transfer;const{isArray:We}=Array,{assign:Oe,create:Re,defineProperties:Te,defineProperty:Fe,entries:Be}=Object,{all:Je,resolve:Ie}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Le=(e,t=location.href)=>new URL(e,t).href;Promise.withResolvers||(Promise.withResolvers=function(){var e,t,r=new this((function(r,n){e=r,t=n}));return{resolve:e,reject:t,promise:r}});const Ue=e=>e.arrayBuffer(),Ne=e=>e.json(),De=e=>e.text(),ze=e=>e.replace(/^[^\\r\\n]+$/,(e=>e.trim())),Ce=new WeakMap,qe=e=>{const t=e||console,r={stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>r.stderr(...e),stdout:(...e)=>r.stdout(...e),async get(e){const t=await e;return Ce.set(t,r),t}}},Ge=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},Ke=(e,t)=>{const r=[];for(const n of t.split(\"/\"))r.push(n),n&&e.mkdir(r.join(\"/\"))},Ye=(e,t)=>{const r=[];for(const e of t.split(\"/\"))switch(e){case\"\":case\".\":break;case\"..\":r.pop();break;default:r.push(e)}return[e.cwd()].concat(r).join(\"/\").replace(/^\\/+/,\"/\")},Ve=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\"))).filter((e=>\"\"!==e&&\".\"!==e)).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},He=new WeakMap,Qe=(e,t,r)=>Je((e=>{for(const{files:t,to_file:r,from:n=\"\"}of e){if(void 0!==t&&void 0!==r)throw new Error(\"Cannot use 'to_file' and 'files' parameters together!\");if(void 0===t&&void 0===r&&n.endsWith(\"/\"))throw new Error(`Couldn't determine the filename from the path ${n}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e=\"\",to_folder:t=\".\",to_file:r,files:n})=>{if(We(n))return n.map((r=>({url:Ve([e,r]),path:Ve([t,r])})));const s=r||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:Ve([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Le(t,He.get(e))))(r,n).then(Ue).then((r=>e.writeFile(t,s,r)))))),Xe=(e,t,r)=>{e.registerJsModule(t,r)},Ze=(e,t)=>e.runPython(ze(t)),et=(e,t)=>e.runPythonAsync(ze(t)),tt=async(e,t,r)=>{const[n,...s]=t.split(\".\");let o,a=e.globals.get(n);for(const e of s)[o,a]=[a,a[e]];await a.call(o,r)},rt=({FS:e},t,r)=>((e,t,r)=>{const{parentPath:n,name:s}=e.analyzePath(t,!0);return e.mkdirTree(n),e.writeFile([n,s].join(\"/\"),new Uint8Array(r),{canOwn:!0})})(e,t,r);var nt={type:\"micropython\",module:(e=\"1.20.0-268\")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,r){const{stderr:n,stdout:s,get:o}=qe();r=r.replace(/\\.m?js$/,\".wasm\");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await Qe(this,a,t.fetch),a},registerJSModule:Xe,run:Ze,runAsync:et,runEvent:tt,writeFile:rt};var st={type:\"pyodide\",module:(e=\"0.23.2\")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,r){const{stderr:n,stdout:s,get:o}=qe(),a=r.slice(0,r.lastIndexOf(\"/\")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await Qe(this,i,t.fetch),t.packages){await i.loadPackage(\"micropip\");const e=await i.pyimport(\"micropip\");await e.install(t.packages),e.destroy()}return i},registerJSModule:Xe,run:Ze,runAsync:et,runEvent:tt,writeFile:rt};const ot=\"ruby-wasm-wasi\",at=ot.replace(/\\W+/g,\"_\");var it={type:ot,experimental:!0,module:(e=\"2.0.0\")=>`https://cdn.jsdelivr.net/npm/ruby-3_2-wasm-wasi@${e}/dist/browser.esm.js`,async engine({DefaultRubyVM:e},t,r){const n=await fetch(`${r.slice(0,r.lastIndexOf(\"/\"))}/ruby.wasm`),s=await WebAssembly.compile(await n.arrayBuffer()),{vm:o}=await e(s);return t.fetch&&await Qe(this,o,t.fetch),o},registerJSModule(e,t,r){const n=['require \"js\"'];for(const[e,t]of Be(r)){const r=`__module_${at}_${e}`;globalThis[r]=t,n.push(`$${e}=JS.global[:${r}]`)}this.run(e,n.join(\";\"))},run:(e,t)=>e.eval(ze(t)),runAsync:(e,t)=>e.evalAsync(ze(t)),async runEvent(e,t,r){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,n=`__module_${at}_event`;globalThis[n]=r,this.run(e,`require \"js\";$xworker.call(\"${t}\",JS.global[:${n}])`),delete globalThis[n]}else{const n=this.run(e,`method(:${t})`);await n.call(t,e.wrap(r))}},writeFile:()=>{throw new Error(`writeFile is not supported in ${ot}`)}};var ct={type:\"wasmoon\",module:(e=\"1.15.0\")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},r){const{stderr:n,stdout:s,get:o}=qe(),a=await o((new e).createEngine());return a.global.getTable(t.Base,(e=>{a.global.setField(e,\"print\",s),a.global.setField(e,\"printErr\",n)})),r.fetch&&await Qe(this,a,r.fetch),a},registerJSModule:(e,t,r)=>{for(const[t,n]of Be(r))e.global.set(t,n)},run:(e,t)=>e.doStringSync(ze(t)),runAsync:(e,t)=>e.doString(ze(t)),runEvent:async(e,t,r)=>{const[n,...s]=t.split(\".\");let o,a=e.global.get(n);for(const e of s)[o,a]=[a,a[e]];await a.call(o,r)},writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(t=Ye(e,t),Ke(e,Ge(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const lt=new Map,ut=new Map,ft=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split(\"@\"),s=lt.get(r),o=/^https?:\\/\\//i.test(n)?n.join(\"@\"):s.module(...n);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:r,module:n,engine:s}=e.get(t);return(e,o)=>n.then((n=>{ut.set(t,e);const a=e?.fetch;return a&&He.set(a,o),s(n,e,r)}))}}),pt=e=>{for(const t of[].concat(e.type))lt.set(t,e)};for(const e of[nt,st,it,ct])pt(e);const dt=async e=>(await import(\"https://cdn.jsdelivr.net/npm/basic-toml@0.3.1/es.js\")).parse(e);try{new SharedArrayBuffer(4)}catch(e){throw new Error([\"Unable to use SharedArrayBuffer due insecure environment.\",\"Please read requirements in MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements\"].join(\"\\n\"))}let wt,gt;const yt=(e,t)=>{addEventListener(e,t||(async t=>{await wt,gt(`xworker.on${e}`,t)}),!!t&&{once:!0})},{proxy:ht,window:mt,isWindowProxy:bt}=_e(self,f),vt={sync:ht,window:mt,isWindowProxy:bt,onerror(){},onmessage(){},onmessageerror(){},postMessage:postMessage.bind(self)};yt(\"message\",(({data:{options:e,code:t,hooks:r}})=>{wt=(async()=>{const{type:n,version:s,config:o,async:a}=e,i=await((e,t)=>{let r={};if(t)if(t.endsWith(\".json\"))r=fetch(t).then(Ne);else if(t.endsWith(\".toml\"))r=fetch(t).then(De).then(dt);else{try{r=JSON.parse(t)}catch(e){r=dt(t)}t=Le(\"./config.txt\")}return Ie(r).then((r=>ft[e](r,t)))})(((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(n,s),o),c=Re(lt.get(n)),l=\"run\"+(a?\"Async\":\"\");if(r){const{beforeRun:e,beforeRunAsync:t,afterRun:n,afterRunAsync:s}=r,o=n||s,a=e||t;if(o){const e=c[l].bind(c);c[l]=(t,r)=>e(t,`${r}\\n${o}`)}if(a){const e=c[l].bind(c);c[l]=(t,r)=>e(t,`${a}\\n${r}`)}}return c.registerJSModule(i,\"xworker\",{xworker:vt}),gt=c.runEvent.bind(c,i),await c[l](i,t),i})(),yt(\"error\"),yt(\"message\"),yt(\"messageerror\")}));\n"],{type:'application/javascript'})),{type:'module'});
|
package/core.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
const e=(e,t=document)=>[...t.querySelectorAll(e)],t=(e,t=document)=>{const r=(new XPathEvaluator).createExpression(e).evaluate(t,XPathResult.ORDERED_NODE_SNAPSHOT_TYPE),n=[];for(let e=0,{snapshotLength:t}=r;e<t;e++)n.push(r.snapshotItem(e));return n},r="object"==typeof self?self:globalThis,n=e=>((e,t)=>{const n=(t,r)=>(e.set(r,t),t),s=o=>{if(e.has(o))return e.get(o);const[a,i]=t[o];switch(a){case 0:case-1:return n(i,o);case 1:{const e=n([],o);for(const t of i)e.push(s(t));return e}case 2:{const e=n({},o);for(const[t,r]of i)e[s(t)]=s(r);return e}case 3:return n(new Date(i),o);case 4:{const{source:e,flags:t}=i;return n(new RegExp(e,t),o)}case 5:{const e=n(new Map,o);for(const[t,r]of i)e.set(s(t),s(r));return e}case 6:{const e=n(new Set,o);for(const t of i)e.add(s(t));return e}case 7:{const{name:e,message:t}=i;return n(new r[e](t),o)}case 8:return n(BigInt(i),o);case"BigInt":return n(Object(BigInt(i)),o)}return n(new r[a](i),o)};return s})(new Map,e)(0),s="",{toString:o}={},{keys:a}=Object,i=e=>{const t=typeof e;if("object"!==t||!e)return[0,t];const r=o.call(e).slice(8,-1);switch(r){case"Array":return[1,s];case"Object":return[2,s];case"Date":return[3,s];case"RegExp":return[4,s];case"Map":return[5,s];case"Set":return[6,s]}return r.includes("Array")?[1,r]:r.includes("Error")?[7,r]:[2,r]},c=([e,t])=>0===e&&("function"===t||"symbol"===t),l=(e,{json:t,lossy:r}={})=>{const n=[];return((e,t,r,n)=>{const s=(e,t)=>{const s=n.push(e)-1;return r.set(t,s),s},o=n=>{if(r.has(n))return r.get(n);let[l,u]=i(n);switch(l){case 0:{let t=n;switch(u){case"bigint":l=8,t=n.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+u);t=null;break;case"undefined":return s([-1],n)}return s([l,t],n)}case 1:{if(u)return s([u,[...n]],n);const e=[],t=s([l,e],n);for(const t of n)e.push(o(t));return t}case 2:{if(u)switch(u){case"BigInt":return s([u,n.toString()],n);case"Boolean":case"Number":case"String":return s([u,n.valueOf()],n)}if(t&&"toJSON"in n)return o(n.toJSON());const r=[],f=s([l,r],n);for(const t of a(n))!e&&c(i(n[t]))||r.push([o(t),o(n[t])]);return f}case 3:return s([l,n.toISOString()],n);case 4:{const{source:e,flags:t}=n;return s([l,{source:e,flags:t}],n)}case 5:{const t=[],r=s([l,t],n);for(const[r,s]of n)(e||!c(i(r))&&!c(i(s)))&&t.push([o(r),o(s)]);return r}case 6:{const t=[],r=s([l,t],n);for(const r of n)!e&&c(i(r))||t.push(o(r));return r}}const{message:f}=n;return s([l,{name:u,message:f}],n)};return o})(!(t||r),!!t,new Map,n)(e),n},{parse:u,stringify:f}=JSON,p={json:!0,lossy:!0};var d=Object.freeze({__proto__:null,parse:e=>n(u(e)),stringify:e=>f(l(e,p))}),h="2f6fe6d4-8ba8-424a-83c5-8fadca1ea103",w=e=>({value:new Promise((t=>{let r=new Worker("data:application/javascript,"+encodeURIComponent("onmessage=({data:b})=>(Atomics.wait(b,0),postMessage(0))"));r.onmessage=t,r.postMessage(e)}))})
|
2
|
-
/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:y,Map:g,SharedArrayBuffer:m,Uint16Array:b}=globalThis,{BYTES_PER_ELEMENT:v}=y,{BYTES_PER_ELEMENT:E}=b,{isArray:M}=Array,{notify:k,wait:S,waitAsync:A}=Atomics,{fromCharCode:$}=String,P=(e,t)=>e?(A||w)(t,0):(S(t,0),{value:{then:e=>e()}}),j=new WeakSet,x=new WeakMap;let _=0;const O=(e,{parse:t,stringify:r}=JSON)=>{if(!x.has(e)){const n=(t,...r)=>e.postMessage({[h]:r},{transfer:t});x.set(e,new Proxy(new g,{has:(e,t)=>"string"==typeof t&&!t.startsWith("_"),get:(r,s)=>"then"===s?null:(...r)=>{const o=_++;let a=new y(new m(v)),i=[];j.has(r.at(-1)||i)&&j.delete(i=r.pop()),n(i,o,a,s,r);const c=e instanceof Worker;return P(c,a).value.then((()=>{const e=a[0];if(!e)return;const r=E*e;return a=new y(new m(r+r%v)),n([],o,a),P(c,a).value.then((()=>t($(...new b(a.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new g;e.addEventListener("message",(async e=>{const s=e.data?.[h];if(M(s)){e.stopImmediatePropagation();const[o,a,...i]=s;if(i.length){const[e,s]=i;if(!t.has(e))throw new Error(`Unsupported action: ${e}`);{const i=r(await t.get(e)(...s));i&&(n.set(o,i),a[0]=i.length)}}else{const e=n.get(o);n.delete(o);for(let t=new b(a.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}k(a,0)}}))}return!!t.set(n,s)}}))}return x.get(e)};O.transfer=(...e)=>(j.add(e),e);const W="object",R="function",T="number",G="string",F="undefined",B="symbol",{defineProperty:I,getOwnPropertyDescriptor:L,getPrototypeOf:J,isExtensible:N,ownKeys:U,preventExtensions:q,set:z,setPrototypeOf:D}=Reflect,C=J(Int8Array),X=(e,t)=>{const{get:r,set:n,value:s}=e;return r&&(e.get=t(r)),n&&(e.set=t(n)),s&&(e.value=t(s)),e},H=(e,t)=>[e,t],Y=e=>t=>{const r=typeof t;switch(r){case W:if(null==t)return H("null",t);case R:return e(r,t);case"boolean":case T:case G:case F:case"bigint":return H(r,t);case B:if(Q.has(t))return H(r,Q.get(t))}throw new Error(`Unable to handle this ${r} type`)},Q=new Map(U(Symbol).filter((e=>typeof Symbol[e]===B)).map((e=>[Symbol[e],e]))),K=e=>{for(const[t,r]of Q)if(r===e)return t},V="apply",Z="construct",ee="defineProperty",te="deleteProperty",re="get",ne="getOwnPropertyDescriptor",se="getPrototypeOf",oe="has",ae="isExtensible",ie="ownKeys",ce="preventExtensions",le="set",ue="setPrototypeOf",fe="delete";let pe=0;const de=new Map,he=new Map,we=new WeakMap;if(globalThis.window===globalThis){const{addEventListener:e}=EventTarget.prototype;I(EventTarget.prototype,"addEventListener",{value(t,r,...n){return n.at(0)?.invoke&&(we.has(this)||we.set(this,new Map),we.get(this).set(t,[].concat(n[0].invoke)),delete n[0].invoke),e.call(this,t,r,...n)}})}const ye=Y(((e,t)=>{if(!de.has(t)){let e;for(;he.has(e=pe++););de.set(t,e),he.set(e,t)}return H(e,de.get(t))}));var ge=(e,t,r)=>{const{[r]:n}=e,s=new FinalizationRegistry((e=>{n(fe,H(G,e))})),o=([e,t])=>{switch(e){case W:if(null==t)return globalThis;if(typeof t===T)return he.get(t);if(!(t instanceof C))for(const e in t)t[e]=o(t[e]);return t;case R:if(typeof t===G){if(!he.has(t)){const e=function(...e){return e.at(0)instanceof Event&&(e=>{const{currentTarget:t,target:r,type:n}=e;for(const s of we.get(t||r)?.get(n)||[])e[s]()})(...e),n(V,H(R,t),ye(this),e.map(ye))},r=new WeakRef(e);he.set(t,r),s.register(e,t,r)}return he.get(t).deref()}return he.get(t);case B:return K(t)}return t},a={[V]:(e,t,r)=>ye(e.apply(t,r)),[Z]:(e,t)=>ye(new e(...t)),[ee]:(e,t,r)=>ye(I(e,t,r)),[te]:(e,t)=>ye(delete e[t]),[se]:e=>ye(J(e)),[re]:(e,t)=>ye(e[t]),[ne]:(e,t)=>{const r=L(e,t);return r?H(W,X(r,ye)):H(F,r)},[oe]:(e,t)=>ye(t in e),[ae]:e=>ye(N(e)),[ie]:e=>H(W,U(e).map(ye)),[ce]:e=>ye(q(e)),[le]:(e,t,r)=>ye(z(e,t,r)),[ue]:(e,t)=>ye(D(e,t)),[fe](e){de.delete(he.get(e)),he.delete(e)}};return e[t]=(e,t,...r)=>{switch(e){case V:r[0]=o(r[0]),r[1]=r[1].map(o);break;case Z:r[0]=r[0].map(o);break;case ee:{const[e,t]=r;r[0]=o(e);const{get:n,set:s,value:a}=t;n&&(t.get=o(n)),s&&(t.set=o(s)),a&&(t.value=o(a));break}default:r=r.map(o)}return a[e](o(t),...r)},{proxy:e,window:globalThis,isWindowProxy:()=>!1}};let me=0;const be=new Map,ve=new Map,Ee=Symbol(),Me=e=>typeof e===R?e():e,ke=e=>typeof e===W&&!!e&&Ee in e,Se="isArray",Ae=Array[Se],$e=Y(((e,t)=>{if(Ee in t)return Me(t[Ee]);if(e===R){if(!ve.has(t)){let e;for(;ve.has(e=String(me++)););be.set(t,e),ve.set(e,t)}return H(e,be.get(t))}if(!(t instanceof C))for(const e in t)t[e]=$e(t[e]);return H(e,t)}));var Pe=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(fe,$e(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===R?je.bind(e):e,a=new Proxy(n,l),i=new WeakRef(a);s.set(r,i),o.register(a,r,i)}return s.get(r).deref()},i=e=>{const[t,r]=e;switch(t){case W:return typeof r===T?a(e):r;case R:return typeof r===G?ve.get(r):a(e);case B:return K(r)}return r},c=(e,t,...r)=>i(n(e,Me(t),...r)),l={[V]:(e,t,r)=>c(V,e,$e(t),r.map($e)),[Z]:(e,t)=>c(Z,e,t.map($e)),[ee]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===R&&(r.get=$e(n)),typeof s===R&&(r.set=$e(s)),typeof o===R&&(r.value=$e(o)),c(ee,e,$e(t),r)},[te]:(e,t)=>c(te,e,$e(t)),[se]:e=>c(se,e),[re]:(e,t)=>t===Ee?e:c(re,e,$e(t)),[ne]:(e,t)=>{const r=c(ne,e,$e(t));return r&&X(r,i)},[oe]:(e,t)=>t===Ee||c(oe,e,$e(t)),[ae]:e=>c(ae,e),[ie]:e=>c(ie,e).map(i),[ce]:e=>c(ce,e),[le]:(e,t,r)=>c(le,e,$e(t),$e(r)),[ue]:(e,t)=>c(ue,e,$e(t))};e[r]=(e,t,r,n)=>{switch(e){case V:return i(t).apply(i(r),n.map(i));case fe:{const e=i(t);be.delete(ve.get(e)),ve.delete(e)}}};const u=new Proxy([W,null],l),f=u.Array[Se];return I(Array,Se,{value:e=>ke(e)?f(e):Ae(e)}),{window:u,isWindowProxy:ke,proxy:e,get global(){return console.warn("Deprecated: please access `window` field instead"),this.window},get isGlobal(){return function(e){return console.warn("Deprecated: please access `isWindowProxy` field instead"),this.isWindowProxy(e)}.bind(this)}}};function je(){return this}const xe=h+"M",_e=h+"T",Oe=new WeakMap,We=(e,...t)=>{const r=O(e,...t);if(!Oe.has(r)){const t=e instanceof Worker?ge:Pe;Oe.set(r,t(r,xe,_e))}return Oe.get(r)};We.transfer=O.transfer;const{isArray:Re}=Array,{assign:Te,create:Ge,defineProperties:Fe,defineProperty:Be,entries:Ie}=Object,{all:Le,resolve:Je}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ne=(e,t=location.href)=>new URL(e,t).href,Ue=e=>e.arrayBuffer(),qe=e=>e.json(),ze=e=>e.text(),De=[["beforeRun","codeBeforeRunWorker"],["beforeRunAsync","codeBeforeRunWorkerAsync"],["afterRun","codeAfterRunWorker"],["afterRunAsync","codeAfterRunWorkerAsync"]];class Ce{constructor(e,t){this.interpreter=e,this.onWorkerReady=t.onWorkerReady;for(const[e,r]of De)this[e]=t[r]?.()}get stringHooks(){const e={};for(const[t]of De)this[t]&&(e[t]=this[t]);return e}}var Xe=(...e)=>function(t,r){const n=new Worker(URL.createObjectURL(new Blob(['const e="object"==typeof self?self:globalThis,t=t=>((t,r)=>{const n=(e,r)=>(t.set(r,e),e),s=o=>{if(t.has(o))return t.get(o);const[a,i]=r[o];switch(a){case 0:case-1:return n(i,o);case 1:{const e=n([],o);for(const t of i)e.push(s(t));return e}case 2:{const e=n({},o);for(const[t,r]of i)e[s(t)]=s(r);return e}case 3:return n(new Date(i),o);case 4:{const{source:e,flags:t}=i;return n(new RegExp(e,t),o)}case 5:{const e=n(new Map,o);for(const[t,r]of i)e.set(s(t),s(r));return e}case 6:{const e=n(new Set,o);for(const t of i)e.add(s(t));return e}case 7:{const{name:t,message:r}=i;return n(new e[t](r),o)}case 8:return n(BigInt(i),o);case"BigInt":return n(Object(BigInt(i)),o)}return n(new e[a](i),o)};return s})(new Map,t)(0),r="",{toString:n}={},{keys:s}=Object,o=e=>{const t=typeof e;if("object"!==t||!e)return[0,t];const s=n.call(e).slice(8,-1);switch(s){case"Array":return[1,r];case"Object":return[2,r];case"Date":return[3,r];case"RegExp":return[4,r];case"Map":return[5,r];case"Set":return[6,r]}return s.includes("Array")?[1,s]:s.includes("Error")?[7,s]:[2,s]},a=([e,t])=>0===e&&("function"===t||"symbol"===t),i=(e,{json:t,lossy:r}={})=>{const n=[];return((e,t,r,n)=>{const i=(e,t)=>{const s=n.push(e)-1;return r.set(t,s),s},c=n=>{if(r.has(n))return r.get(n);let[l,u]=o(n);switch(l){case 0:{let t=n;switch(u){case"bigint":l=8,t=n.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+u);t=null;break;case"undefined":return i([-1],n)}return i([l,t],n)}case 1:{if(u)return i([u,[...n]],n);const e=[],t=i([l,e],n);for(const t of n)e.push(c(t));return t}case 2:{if(u)switch(u){case"BigInt":return i([u,n.toString()],n);case"Boolean":case"Number":case"String":return i([u,n.valueOf()],n)}if(t&&"toJSON"in n)return c(n.toJSON());const r=[],f=i([l,r],n);for(const t of s(n))!e&&a(o(n[t]))||r.push([c(t),c(n[t])]);return f}case 3:return i([l,n.toISOString()],n);case 4:{const{source:e,flags:t}=n;return i([l,{source:e,flags:t}],n)}case 5:{const t=[],r=i([l,t],n);for(const[r,s]of n)(e||!a(o(r))&&!a(o(s)))&&t.push([c(r),c(s)]);return r}case 6:{const t=[],r=i([l,t],n);for(const r of n)!e&&a(o(r))||t.push(c(r));return r}}const{message:f}=n;return i([l,{name:u,message:f}],n)};return c})(!(t||r),!!t,new Map,n)(e),n},{parse:c,stringify:l}=JSON,u={json:!0,lossy:!0};var f=Object.freeze({__proto__:null,parse:e=>t(c(e)),stringify:e=>l(i(e,u))}),p="2f6fe6d4-8ba8-424a-83c5-8fadca1ea103",d=e=>({value:new Promise((t=>{let r=new Worker("data:application/javascript,"+encodeURIComponent("onmessage=({data:b})=>(Atomics.wait(b,0),postMessage(0))"));r.onmessage=t,r.postMessage(e)}))})\n/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:w,Map:g,SharedArrayBuffer:h,Uint16Array:y}=globalThis,{BYTES_PER_ELEMENT:m}=w,{BYTES_PER_ELEMENT:b}=y,{isArray:v}=Array,{notify:S,wait:M,waitAsync:P}=Atomics,{fromCharCode:E}=String,j=(e,t)=>e?(P||d)(t,0):(M(t,0),{value:{then:e=>e()}}),A=new WeakSet,k=new WeakMap;let x=0;const $=(e,{parse:t,stringify:r}=JSON)=>{if(!k.has(e)){const n=(t,...r)=>e.postMessage({[p]:r},{transfer:t});k.set(e,new Proxy(new g,{has:(e,t)=>"string"==typeof t&&!t.startsWith("_"),get:(r,s)=>"then"===s?null:(...r)=>{const o=x++;let a=new w(new h(m)),i=[];A.has(r.at(-1)||i)&&A.delete(i=r.pop()),n(i,o,a,s,r);const c=e instanceof Worker;return j(c,a).value.then((()=>{const e=a[0];if(!e)return;const r=b*e;return a=new w(new h(r+r%m)),n([],o,a),j(c,a).value.then((()=>t(E(...new y(a.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new g;e.addEventListener("message",(async e=>{const s=e.data?.[p];if(v(s)){e.stopImmediatePropagation();const[o,a,...i]=s;if(i.length){const[e,s]=i;if(!t.has(e))throw new Error(`Unsupported action: ${e}`);{const i=r(await t.get(e)(...s));i&&(n.set(o,i),a[0]=i.length)}}else{const e=n.get(o);n.delete(o);for(let t=new y(a.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}S(a,0)}}))}return!!t.set(n,s)}}))}return k.get(e)};$.transfer=(...e)=>(A.add(e),e);const _="object",O="function",W="number",R="string",T="undefined",F="symbol",{defineProperty:G,getOwnPropertyDescriptor:B,getPrototypeOf:J,isExtensible:I,ownKeys:L,preventExtensions:U,set:N,setPrototypeOf:z}=Reflect,D=J(Int8Array),C=(e,t)=>{const{get:r,set:n,value:s}=e;return r&&(e.get=t(r)),n&&(e.set=t(n)),s&&(e.value=t(s)),e},q=(e,t)=>[e,t],K=e=>t=>{const r=typeof t;switch(r){case _:if(null==t)return q("null",t);case O:return e(r,t);case"boolean":case W:case R:case T:case"bigint":return q(r,t);case F:if(Y.has(t))return q(r,Y.get(t))}throw new Error(`Unable to handle this ${r} type`)},Y=new Map(L(Symbol).filter((e=>typeof Symbol[e]===F)).map((e=>[Symbol[e],e]))),V=e=>{for(const[t,r]of Y)if(r===e)return t},H="apply",Q="construct",X="defineProperty",Z="deleteProperty",ee="get",te="getOwnPropertyDescriptor",re="getPrototypeOf",ne="has",se="isExtensible",oe="ownKeys",ae="preventExtensions",ie="set",ce="setPrototypeOf",le="delete";let ue=0;const fe=new Map,pe=new Map,de=new WeakMap;if(globalThis.window===globalThis){const{addEventListener:e}=EventTarget.prototype;G(EventTarget.prototype,"addEventListener",{value(t,r,...n){return n.at(0)?.invoke&&(de.has(this)||de.set(this,new Map),de.get(this).set(t,[].concat(n[0].invoke)),delete n[0].invoke),e.call(this,t,r,...n)}})}const we=K(((e,t)=>{if(!fe.has(t)){let e;for(;pe.has(e=ue++););fe.set(t,e),pe.set(e,t)}return q(e,fe.get(t))}));var ge=(e,t,r)=>{const{[r]:n}=e,s=new FinalizationRegistry((e=>{n(le,q(R,e))})),o=([e,t])=>{switch(e){case _:if(null==t)return globalThis;if(typeof t===W)return pe.get(t);if(!(t instanceof D))for(const e in t)t[e]=o(t[e]);return t;case O:if(typeof t===R){if(!pe.has(t)){const e=function(...e){return e.at(0)instanceof Event&&(e=>{const{currentTarget:t,target:r,type:n}=e;for(const s of de.get(t||r)?.get(n)||[])e[s]()})(...e),n(H,q(O,t),we(this),e.map(we))},r=new WeakRef(e);pe.set(t,r),s.register(e,t,r)}return pe.get(t).deref()}return pe.get(t);case F:return V(t)}return t},a={[H]:(e,t,r)=>we(e.apply(t,r)),[Q]:(e,t)=>we(new e(...t)),[X]:(e,t,r)=>we(G(e,t,r)),[Z]:(e,t)=>we(delete e[t]),[re]:e=>we(J(e)),[ee]:(e,t)=>we(e[t]),[te]:(e,t)=>{const r=B(e,t);return r?q(_,C(r,we)):q(T,r)},[ne]:(e,t)=>we(t in e),[se]:e=>we(I(e)),[oe]:e=>q(_,L(e).map(we)),[ae]:e=>we(U(e)),[ie]:(e,t,r)=>we(N(e,t,r)),[ce]:(e,t)=>we(z(e,t)),[le](e){fe.delete(pe.get(e)),pe.delete(e)}};return e[t]=(e,t,...r)=>{switch(e){case H:r[0]=o(r[0]),r[1]=r[1].map(o);break;case Q:r[0]=r[0].map(o);break;case X:{const[e,t]=r;r[0]=o(e);const{get:n,set:s,value:a}=t;n&&(t.get=o(n)),s&&(t.set=o(s)),a&&(t.value=o(a));break}default:r=r.map(o)}return a[e](o(t),...r)},{proxy:e,window:globalThis,isWindowProxy:()=>!1}};let he=0;const ye=new Map,me=new Map,be=Symbol(),ve=e=>typeof e===O?e():e,Se=e=>typeof e===_&&!!e&&be in e,Me="isArray",Pe=Array[Me],Ee=K(((e,t)=>{if(be in t)return ve(t[be]);if(e===O){if(!me.has(t)){let e;for(;me.has(e=String(he++)););ye.set(t,e),me.set(e,t)}return q(e,ye.get(t))}if(!(t instanceof D))for(const e in t)t[e]=Ee(t[e]);return q(e,t)}));var je=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(le,Ee(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===O?Ae.bind(e):e,a=new Proxy(n,l),i=new WeakRef(a);s.set(r,i),o.register(a,r,i)}return s.get(r).deref()},i=e=>{const[t,r]=e;switch(t){case _:return typeof r===W?a(e):r;case O:return typeof r===R?me.get(r):a(e);case F:return V(r)}return r},c=(e,t,...r)=>i(n(e,ve(t),...r)),l={[H]:(e,t,r)=>c(H,e,Ee(t),r.map(Ee)),[Q]:(e,t)=>c(Q,e,t.map(Ee)),[X]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===O&&(r.get=Ee(n)),typeof s===O&&(r.set=Ee(s)),typeof o===O&&(r.value=Ee(o)),c(X,e,Ee(t),r)},[Z]:(e,t)=>c(Z,e,Ee(t)),[re]:e=>c(re,e),[ee]:(e,t)=>t===be?e:c(ee,e,Ee(t)),[te]:(e,t)=>{const r=c(te,e,Ee(t));return r&&C(r,i)},[ne]:(e,t)=>t===be||c(ne,e,Ee(t)),[se]:e=>c(se,e),[oe]:e=>c(oe,e).map(i),[ae]:e=>c(ae,e),[ie]:(e,t,r)=>c(ie,e,Ee(t),Ee(r)),[ce]:(e,t)=>c(ce,e,Ee(t))};e[r]=(e,t,r,n)=>{switch(e){case H:return i(t).apply(i(r),n.map(i));case le:{const e=i(t);ye.delete(me.get(e)),me.delete(e)}}};const u=new Proxy([_,null],l),f=u.Array[Me];return G(Array,Me,{value:e=>Se(e)?f(e):Pe(e)}),{window:u,isWindowProxy:Se,proxy:e,get global(){return console.warn("Deprecated: please access `window` field instead"),this.window},get isGlobal(){return function(e){return console.warn("Deprecated: please access `isWindowProxy` field instead"),this.isWindowProxy(e)}.bind(this)}}};function Ae(){return this}const ke=p+"M",xe=p+"T",$e=new WeakMap,_e=(e,...t)=>{const r=$(e,...t);if(!$e.has(r)){const t=e instanceof Worker?ge:je;$e.set(r,t(r,ke,xe))}return $e.get(r)};_e.transfer=$.transfer;const{isArray:Oe}=Array,{assign:We,create:Re,defineProperties:Te,defineProperty:Fe,entries:Ge}=Object,{all:Be,resolve:Je}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ie=(e,t=location.href)=>new URL(e,t).href;Promise.withResolvers||(Promise.withResolvers=function(){var e,t,r=new this((function(r,n){e=r,t=n}));return{resolve:e,reject:t,promise:r}});const Le=e=>e.arrayBuffer(),Ue=e=>e.json(),Ne=e=>e.text(),ze=e=>e.replace(/^[^\\r\\n]+$/,(e=>e.trim())),De=new WeakMap,Ce=e=>{const t=e||console,r={stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>r.stderr(...e),stdout:(...e)=>r.stdout(...e),async get(e){const t=await e;return De.set(t,r),t}}},qe=e=>{const t=e.split("/");return t.pop(),t.join("/")},Ke=(e,t)=>{const r=[];for(const n of t.split("/"))r.push(n),n&&e.mkdir(r.join("/"))},Ye=(e,t)=>{const r=[];for(const e of t.split("/"))switch(e){case"":case".":break;case"..":r.pop();break;default:r.push(e)}return[e.cwd()].concat(r).join("/").replace(/^\\/+/,"/")},Ve=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},He=new WeakMap,Qe=(e,t,r)=>Be((e=>{for(const{files:t,to_file:r,from:n=""}of e){if(void 0!==t&&void 0!==r)throw new Error("Cannot use \'to_file\' and \'files\' parameters together!");if(void 0===t&&void 0===r&&n.endsWith("/"))throw new Error(`Couldn\'t determine the filename from the path ${n}, please supply \'to_file\' parameter.`)}return e.flatMap((({from:e="",to_folder:t=".",to_file:r,files:n})=>{if(Oe(n))return n.map((r=>({url:Ve([e,r]),path:Ve([t,r])})));const s=r||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:Ve([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Ie(t,He.get(e))))(r,n).then(Le).then((r=>e.writeFile(t,s,r))))));function Xe(e,t,r){for(const[t,n]of Ge(r))this.setGlobal(e,t,n)}const Ze=(e,t)=>e.runPython(ze(t)),et=(e,t)=>e.globals.get(t),tt=(e,t,r)=>{e.globals.set(t,r)},rt=(e,t)=>{e.globals.delete(t)},nt=(e,t,r)=>{e.registerJsModule(t,r)},st=({FS:e},t,r)=>((e,t,r)=>{const{parentPath:n,name:s}=e.analyzePath(t,!0);return e.mkdirTree(n),e.writeFile([n,s].join("/"),new Uint8Array(r),{canOwn:!0})})(e,t,r);var ot={type:"micropython",module:(e="1.20.0-268")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,r){const{stderr:n,stdout:s,get:o}=Ce();r=r.replace(/\\.m?js$/,".wasm");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await Qe(this,a,t.fetch),a},getGlobal:et,setGlobal:tt,deleteGlobal:rt,registerJSModule:nt,run:Ze,async runAsync(...e){return this.run(...e)},writeFile:st};var at={type:"pyodide",module:(e="0.23.2")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,r){const{stderr:n,stdout:s,get:o}=Ce(),a=r.slice(0,r.lastIndexOf("/")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await Qe(this,i,t.fetch),t.packages){await i.loadPackage("micropip");const e=await i.pyimport("micropip");await e.install(t.packages),e.destroy()}return i},getGlobal:et,setGlobal:tt,deleteGlobal:rt,registerJSModule:nt,run:Ze,runAsync:(e,t)=>e.runPythonAsync(ze(t)),writeFile:st};const it="ruby-wasm-wasi";var ct={type:it,experimental:!0,module:(e="2.0.0")=>`https://cdn.jsdelivr.net/npm/ruby-3_2-wasm-wasi@${e}/dist/browser.esm.js`,async engine({DefaultRubyVM:e},t,r){const n=await fetch(`${r.slice(0,r.lastIndexOf("/"))}/ruby.wasm`),s=await WebAssembly.compile(await n.arrayBuffer()),{vm:o}=await e(s);return t.fetch&&await Qe(this,o,t.fetch),o},registerJSModule:Xe,getGlobal(e,t){try{return this.run(e,t)}catch(r){const n=this.run(e,`method(:${t})`);return(...r)=>n.call(t,...r.map((t=>e.wrap(t))))}},setGlobal(e,t,r){const n=`__pyscript_ruby_wasm_wasi_${t}`;globalThis[n]=r,this.run(e,`require "js";$${t}=JS::eval("return ${n}")`)},deleteGlobal(e,t){const r=`__pyscript_ruby_wasm_wasi_${t}`;this.run(e,`$${t}=nil`),delete globalThis[r]},run:(e,t)=>e.eval(ze(t)),runAsync:(e,t)=>e.evalAsync(ze(t)),writeFile:()=>{throw new Error(`writeFile is not supported in ${it}`)}};var lt={type:"wasmoon",module:(e="1.15.0")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},r){const{stderr:n,stdout:s,get:o}=Ce(),a=await o((new e).createEngine());return a.global.getTable(t.Base,(e=>{a.global.setField(e,"print",s),a.global.setField(e,"printErr",n)})),r.fetch&&await Qe(this,a,r.fetch),a},registerJSModule:Xe,getGlobal:(e,t)=>e.global.get(t),setGlobal(e,t,r){e.global.set(t,r)},deleteGlobal(e,t){e.global.set(t,void 0)},run:(e,t)=>e.doStringSync(ze(t)),runAsync:(e,t)=>e.doString(ze(t)),writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(t=Ye(e,t),Ke(e,qe(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const ut=new Map,ft=new Map,pt=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split("@"),s=ut.get(r),o=/^https?:\\/\\//i.test(n)?n.join("@"):s.module(...n);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:r,module:n,engine:s}=e.get(t);return(e,o)=>n.then((n=>{ft.set(t,e);const a=e?.fetch;return a&&He.set(a,o),s(n,e,r)}))}}),dt=e=>{for(const t of[].concat(e.type))ut.set(t,e)};for(const e of[ot,at,ct,lt])dt(e);const wt=async e=>(await import("https://cdn.jsdelivr.net/npm/basic-toml@0.3.1/es.js")).parse(e);try{new SharedArrayBuffer(4)}catch(e){throw new Error(["Unable to use SharedArrayBuffer due insecure environment.","Please read requirements in MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements"].join("\\n"))}let gt,ht,yt;const mt=(e,t)=>{addEventListener(e,t||(async t=>{await gt,yt=t,ht(`xworker.on${e}(xworker.event);`,Mt)}),!!t&&{once:!0})},{proxy:bt,window:vt,isWindowProxy:St}=_e(self,f),Mt={sync:bt,window:vt,isWindowProxy:St,onerror(){},onmessage(){},onmessageerror(){},postMessage:postMessage.bind(self),get event(){const e=yt;if(!e)throw new Error("Unauthorized event access");return yt=void 0,e}};mt("message",(({data:{options:e,code:t,hooks:r}})=>{gt=(async()=>{const{type:n,version:s,config:o,async:a}=e,i=await((e,t)=>{let r={};if(t)if(t.endsWith(".json"))r=fetch(t).then(Ue);else if(t.endsWith(".toml"))r=fetch(t).then(Ne).then(wt);else{try{r=JSON.parse(t)}catch(e){r=wt(t)}t=Ie("./config.txt")}return Je(r).then((r=>pt[e](r,t)))})(((e,t="")=>`${e}@${t}`.replace(/@$/,""))(n,s),o),c=Re(ut.get(n)),l="run"+(a?"Async":"");if(r){const{beforeRun:e,beforeRunAsync:t,afterRun:n,afterRunAsync:s}=r,o=n||s,a=e||t;if(o){const e=c[l].bind(c);c[l]=(t,r)=>e(t,`${r}\\n${o}`)}if(a){const e=c[l].bind(c);c[l]=(t,r)=>e(t,`${a}\\n${r}`)}}return c.registerJSModule(i,"xworker",{xworker:Mt}),ht=c[l].bind(c,i),ht(t),i})(),mt("error"),mt("message"),mt("messageerror")}));\n'],{type:"application/javascript"})),{type:"module"}),{postMessage:s}=n,o=this instanceof Ce;if(e.length){const[t,n]=e;(r=Te({},r||{type:t,version:n})).type||(r.type=t)}r?.config&&(r.config=Ne(r.config));const a=fetch(t).then(ze).then((e=>{const t=o?this.stringHooks:void 0;s.call(n,{options:r,code:e,hooks:t})}));return Fe(n,{postMessage:{value:(e,...t)=>a.then((()=>s.call(n,e,...t)))},sync:{value:We(n,d).proxy}}),o&&this.onWorkerReady?.(this.interpreter,n),n};Promise.withResolvers||(Promise.withResolvers=function(){var e,t,r=new this((function(r,n){e=r,t=n}));return{resolve:e,reject:t,promise:r}});const He=e=>e.replace(/^[^\r\n]+$/,(e=>e.trim())),Ye=new WeakMap,Qe=e=>{const t=e||console,r={stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>r.stderr(...e),stdout:(...e)=>r.stdout(...e),async get(e){const t=await e;return Ye.set(t,r),t}}},Ke=e=>{const t=e.split("/");return t.pop(),t.join("/")},Ve=(e,t)=>{const r=[];for(const n of t.split("/"))r.push(n),n&&e.mkdir(r.join("/"))},Ze=(e,t)=>{const r=[];for(const e of t.split("/"))switch(e){case"":case".":break;case"..":r.pop();break;default:r.push(e)}return[e.cwd()].concat(r).join("/").replace(/^\/+/,"/")},et=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},tt=new WeakMap,rt=(e,t,r)=>Le((e=>{for(const{files:t,to_file:r,from:n=""}of e){if(void 0!==t&&void 0!==r)throw new Error("Cannot use 'to_file' and 'files' parameters together!");if(void 0===t&&void 0===r&&n.endsWith("/"))throw new Error(`Couldn't determine the filename from the path ${n}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e="",to_folder:t=".",to_file:r,files:n})=>{if(Re(n))return n.map((r=>({url:et([e,r]),path:et([t,r])})));const s=r||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:et([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Ne(t,tt.get(e))))(r,n).then(Ue).then((r=>e.writeFile(t,s,r))))));function nt(e,t,r){for(const[t,n]of Ie(r))this.setGlobal(e,t,n)}const st=(e,t)=>e.runPython(He(t)),ot=(e,t)=>e.globals.get(t),at=(e,t,r)=>{e.globals.set(t,r)},it=(e,t)=>{e.globals.delete(t)},ct=(e,t,r)=>{e.registerJsModule(t,r)},lt=({FS:e},t,r)=>((e,t,r)=>{const{parentPath:n,name:s}=e.analyzePath(t,!0);return e.mkdirTree(n),e.writeFile([n,s].join("/"),new Uint8Array(r),{canOwn:!0})})(e,t,r);var ut={type:"micropython",module:(e="1.20.0-268")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,r){const{stderr:n,stdout:s,get:o}=Qe();r=r.replace(/\.m?js$/,".wasm");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await rt(this,a,t.fetch),a},getGlobal:ot,setGlobal:at,deleteGlobal:it,registerJSModule:ct,run:st,async runAsync(...e){return this.run(...e)},writeFile:lt};var ft={type:"pyodide",module:(e="0.23.2")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,r){const{stderr:n,stdout:s,get:o}=Qe(),a=r.slice(0,r.lastIndexOf("/")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await rt(this,i,t.fetch),t.packages){await i.loadPackage("micropip");const e=await i.pyimport("micropip");await e.install(t.packages),e.destroy()}return i},getGlobal:ot,setGlobal:at,deleteGlobal:it,registerJSModule:ct,run:st,runAsync:(e,t)=>e.runPythonAsync(He(t)),writeFile:lt};const pt="ruby-wasm-wasi";var dt={type:pt,experimental:!0,module:(e="2.0.0")=>`https://cdn.jsdelivr.net/npm/ruby-3_2-wasm-wasi@${e}/dist/browser.esm.js`,async engine({DefaultRubyVM:e},t,r){const n=await fetch(`${r.slice(0,r.lastIndexOf("/"))}/ruby.wasm`),s=await WebAssembly.compile(await n.arrayBuffer()),{vm:o}=await e(s);return t.fetch&&await rt(this,o,t.fetch),o},registerJSModule:nt,getGlobal(e,t){try{return this.run(e,t)}catch(r){const n=this.run(e,`method(:${t})`);return(...r)=>n.call(t,...r.map((t=>e.wrap(t))))}},setGlobal(e,t,r){const n=`__pyscript_ruby_wasm_wasi_${t}`;globalThis[n]=r,this.run(e,`require "js";$${t}=JS::eval("return ${n}")`)},deleteGlobal(e,t){const r=`__pyscript_ruby_wasm_wasi_${t}`;this.run(e,`$${t}=nil`),delete globalThis[r]},run:(e,t)=>e.eval(He(t)),runAsync:(e,t)=>e.evalAsync(He(t)),writeFile:()=>{throw new Error(`writeFile is not supported in ${pt}`)}};var ht={type:"wasmoon",module:(e="1.15.0")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},r){const{stderr:n,stdout:s,get:o}=Qe(),a=await o((new e).createEngine());return a.global.getTable(t.Base,(e=>{a.global.setField(e,"print",s),a.global.setField(e,"printErr",n)})),r.fetch&&await rt(this,a,r.fetch),a},registerJSModule:nt,getGlobal:(e,t)=>e.global.get(t),setGlobal(e,t,r){e.global.set(t,r)},deleteGlobal(e,t){e.global.set(t,void 0)},run:(e,t)=>e.doStringSync(He(t)),runAsync:(e,t)=>e.doString(He(t)),writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(t=Ze(e,t),Ve(e,Ke(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const wt=new Map,yt=new Map,gt=[],mt=[],bt=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split("@"),s=wt.get(r),o=/^https?:\/\//i.test(n)?n.join("@"):s.module(...n);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:r,module:n,engine:s}=e.get(t);return(e,o)=>n.then((n=>{yt.set(t,e);const a=e?.fetch;return a&&tt.set(a,o),s(n,e,r)}))}}),vt=e=>{for(const t of[].concat(e.type))wt.set(t,e),gt.push(`script[type="${t}"]`),mt.push(`${t}-`)};for(const e of[ut,ft,dt,ht])vt(e);const Et=async e=>(await import("https://cdn.jsdelivr.net/npm/basic-toml@0.3.1/es.js")).parse(e),Mt=(e,t)=>{let r={};if(t)if(t.endsWith(".json"))r=fetch(t).then(qe);else if(t.endsWith(".toml"))r=fetch(t).then(ze).then(Et);else{try{r=JSON.parse(t)}catch(e){r=Et(t)}t=Ne("./config.txt")}return Je(r).then((r=>bt[e](r,t)))},kt=(e,t="")=>`${e}@${t}`.replace(/@$/,""),St=(e,t)=>{const r=(e=>{let t=e;for(;t.parentNode;)t=t.parentNode;return t})(e);return r.getElementById(t)||((e,t=document)=>t.querySelector(e))(t,r)},At=new WeakMap,$t={get(){let e=At.get(this);return e||(e=document.createElement(`${this.type}-script`),At.set(this,e),Ot(this)),e},set(e){"string"==typeof e?At.set(this,St(this,e)):(At.set(this,e),Ot(this))}},Pt=new WeakMap,jt=new Map,xt=(e,t)=>{const r=e?.value;return r?t+r:""},_t=(e,t,r,n,s)=>{if(!jt.has(t)){const o={interpreter:Mt(r,s),queue:Je(),XWorker:Xe(e,n)};jt.set(t,o),jt.has(e)||jt.set(e,o)}return jt.get(t)},Ot=async e=>{if(Pt.has(e)){const{target:t}=e;t&&(e.closest("head")?document.body.append(t):e.after(t))}else{const{attributes:{async:t,config:r,env:n,target:s,version:o},src:a,type:i}=e,c=o?.value,l=kt(i,c),u=xt(s,"");let f=xt(r,"|");const p=xt(n,"")||`${l}${f}`;f=f.slice(1),f&&(f=Ne(f));const d=_t(i,p,l,c,f);Pt.set(Be(e,"target",$t),d),u&&At.set(e,St(e,u));const h=a?fetch(a).then(ze):e.textContent;d.queue=d.queue.then((()=>(async(e,t,r,n)=>{const s=wt.get(e.type);s.experimental&&console.warn(`The ${e.type} interpreter is experimental`);const[o,a]=await Le([Pt.get(e).interpreter,t]);try{return Be(document,"currentScript",{configurable:!0,get:()=>e}),s.registerJSModule(o,"xworker",{XWorker:r}),s[n?"runAsync":"run"](o,a)}finally{delete document.currentScript}})(e,h,d.XWorker,!!t)))}};Be(globalThis,"pyscript",{value:{env:new Proxy(Ge(null),{get:(e,t)=>Wt(t)})}});const Wt=async e=>{if(jt.has(e)){const{interpreter:t,queue:r}=jt.get(e);return(await Le([t,r]))[0]}const t=jt.size?`Available interpreters are: ${[...jt.keys()].map((e=>`"${e}"`)).join(", ")}.`:"There are no interpreters in this page.";throw new Error(`The interpreter "${e}" was not found. ${t}`)},Rt=async e=>{const{type:r,currentTarget:n}=e;for(let{name:s,value:o,ownerElement:a}of t(`./@*[${mt.map((e=>`name()="${e}${r}"`)).join(" or ")}]`,n)){s=s.slice(0,-(r.length+1));const t=await Wt(a.getAttribute(`${s}-env`)||s);wt.get(s).getGlobal(t,o)(e)}},Tt=e=>{for(let{name:r,ownerElement:n}of t(`.//@*[${mt.map((e=>`starts-with(name(),"${e}")`)).join(" or ")}]`,e))r=r.slice(r.lastIndexOf("-")+1),"env"!==r&&n.addEventListener(r,Rt)},Gt=[],Ft=new Map,Bt=new Map,It=e=>{for(const t of Gt)if(e.matches(t)){const r=Ft.get(t),{resolve:n}=Bt.get(r),{options:s,known:o}=Lt.get(r);if(!o.has(e)){o.add(e);const{interpreter:t,version:a,config:i,env:c,onInterpreterReady:l}=s,u=kt(t,a),f=c||`${u}${i?`|${i}`:""}`,{interpreter:p,XWorker:d}=_t(t,f,u,a,i);p.then((o=>{const a=Ge(wt.get(t)),{onBeforeRun:i,onBeforeRunAsync:c,onAfterRun:f,onAfterRunAsync:p}=s,h=new Ce(o,s),w=function(...e){return d.apply(h,e)};for(const[t,[r,n]]of[["run",[i,f]]]){const s=a[t];a[t]=function(t,o){r&&r.call(this,y,e);const a=s.call(this,t,o);return n&&n.call(this,y,e),a}}for(const[t,[r,n]]of[["runAsync",[c,p]]]){const s=a[t];a[t]=async function(t,o){r&&await r.call(this,y,e);const a=await s.call(this,t,o);return n&&await n.call(this,y,e),a}}a.registerJSModule(o,"xworker",{XWorker:w});const y={type:r,interpreter:o,XWorker:w,io:Ye.get(o),config:structuredClone(yt.get(u)),run:a.run.bind(a,o),runAsync:a.runAsync.bind(a,o)};n(y),l?.(y,e)}))}}},Lt=new Map,Jt=(t,r)=>{if(wt.has(t)||Lt.has(t))throw new Error(`<script type="${t}"> already registered`);if(!wt.has(r?.interpreter))throw new Error("Unspecified interpreter");wt.set(t,wt.get(r?.interpreter)),Nt(t);const n=[`script[type="${t}"]`,`${t}-script`];for(const e of n)Ft.set(e,t);Gt.push(...n),mt.push(`${t}-`),Lt.set(t,{options:Te({env:t},r),known:new WeakSet}),Tt(document),e(n.join(",")).forEach(It)},Nt=e=>(Bt.has(e)||Bt.set(e,Promise.withResolvers()),Bt.get(e).promise),Ut=Xe(),qt=gt.join(","),zt=new MutationObserver((t=>{for(const{type:r,target:n,attributeName:s,addedNodes:o}of t)if("attributes"!==r){for(const t of o)if(1===t.nodeType)if(Tt(t),t.matches(qt))Ot(t);else{if(e(qt,t).forEach(Ot),!Gt.length)continue;It(t),e(Gt.join(","),t).forEach(It)}}else{const e=s.lastIndexOf("-")+1;if(e){const t=s.slice(0,e);for(const r of mt)if(t===r){const t=s.slice(e);if("env"!==t){const e=n.hasAttribute(s)?"add":"remove";n[`${e}EventListener`](t,Rt)}break}}}})),Dt=e=>(zt.observe(e,{childList:!0,subtree:!0,attributes:!0}),e),{attachShadow:Ct}=Element.prototype;Te(Element.prototype,{attachShadow(e){return Dt(Ct.call(this,e))}}),Tt(Dt(document)),e(qt,document).forEach(Ot);export{Ut as XWorker,Jt as define,Nt as whenDefined};
|
2
|
+
/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:y,Map:g,SharedArrayBuffer:m,Uint16Array:b}=globalThis,{BYTES_PER_ELEMENT:v}=y,{BYTES_PER_ELEMENT:E}=b,{isArray:P}=Array,{notify:k,wait:$,waitAsync:S}=Atomics,{fromCharCode:M}=String,A=(e,t)=>e?(S||w)(t,0):($(t,0),{value:{then:e=>e()}}),j=new WeakSet,x=new WeakMap;let W=0;const R=(e,{parse:t,stringify:r}=JSON)=>{if(!x.has(e)){const n=(t,...r)=>e.postMessage({[h]:r},{transfer:t});x.set(e,new Proxy(new g,{has:(e,t)=>"string"==typeof t&&!t.startsWith("_"),get:(r,s)=>"then"===s?null:(...r)=>{const o=W++;let a=new y(new m(v)),i=[];j.has(r.at(-1)||i)&&j.delete(i=r.pop()),n(i,o,a,s,r);const c=e instanceof Worker;return A(c,a).value.then((()=>{const e=a[0];if(!e)return;const r=E*e;return a=new y(new m(r+r%v)),n([],o,a),A(c,a).value.then((()=>t(M(...new b(a.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new g;e.addEventListener("message",(async e=>{const s=e.data?.[h];if(P(s)){e.stopImmediatePropagation();const[o,a,...i]=s;if(i.length){const[e,s]=i;if(!t.has(e))throw new Error(`Unsupported action: ${e}`);{const i=r(await t.get(e)(...s));i&&(n.set(o,i),a[0]=i.length)}}else{const e=n.get(o);n.delete(o);for(let t=new b(a.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}k(a,0)}}))}return!!t.set(n,s)}}))}return x.get(e)};R.transfer=(...e)=>(j.add(e),e);const _="object",O="function",T="number",B="string",F="undefined",I="symbol",{defineProperty:J,getOwnPropertyDescriptor:L,getPrototypeOf:N,isExtensible:U,ownKeys:z,preventExtensions:D,set:C,setPrototypeOf:q}=Reflect,G=N(Int8Array),X=(e,t)=>{const{get:r,set:n,value:s}=e;return r&&(e.get=t(r)),n&&(e.set=t(n)),s&&(e.value=t(s)),e},H=(e,t)=>[e,t],Y=e=>t=>{const r=typeof t;switch(r){case _:if(null==t)return H("null",t);case O:return e(r,t);case"boolean":case T:case B:case F:case"bigint":return H(r,t);case I:if(Q.has(t))return H(r,Q.get(t))}throw new Error(`Unable to handle this ${r} type`)},Q=new Map(z(Symbol).filter((e=>typeof Symbol[e]===I)).map((e=>[Symbol[e],e]))),K=e=>{for(const[t,r]of Q)if(r===e)return t},V="apply",Z="construct",ee="defineProperty",te="deleteProperty",re="get",ne="getOwnPropertyDescriptor",se="getPrototypeOf",oe="has",ae="isExtensible",ie="ownKeys",ce="preventExtensions",le="set",ue="setPrototypeOf",fe="delete";let pe=0;const de=new Map,he=new Map,we=new WeakMap;if(globalThis.window===globalThis){const{addEventListener:e}=EventTarget.prototype;J(EventTarget.prototype,"addEventListener",{value(t,r,...n){return n.at(0)?.invoke&&(we.has(this)||we.set(this,new Map),we.get(this).set(t,[].concat(n[0].invoke)),delete n[0].invoke),e.call(this,t,r,...n)}})}const ye=Y(((e,t)=>{if(!de.has(t)){let e;for(;he.has(e=pe++););de.set(t,e),he.set(e,t)}return H(e,de.get(t))}));var ge=(e,t,r)=>{const{[r]:n}=e,s=new FinalizationRegistry((e=>{n(fe,H(B,e))})),o=([e,t])=>{switch(e){case _:if(null==t)return globalThis;if(typeof t===T)return he.get(t);if(!(t instanceof G))for(const e in t)t[e]=o(t[e]);return t;case O:if(typeof t===B){if(!he.has(t)){const e=function(...e){return e.at(0)instanceof Event&&(e=>{const{currentTarget:t,target:r,type:n}=e;for(const s of we.get(t||r)?.get(n)||[])e[s]()})(...e),n(V,H(O,t),ye(this),e.map(ye))},r=new WeakRef(e);he.set(t,r),s.register(e,t,r)}return he.get(t).deref()}return he.get(t);case I:return K(t)}return t},a={[V]:(e,t,r)=>ye(e.apply(t,r)),[Z]:(e,t)=>ye(new e(...t)),[ee]:(e,t,r)=>ye(J(e,t,r)),[te]:(e,t)=>ye(delete e[t]),[se]:e=>ye(N(e)),[re]:(e,t)=>ye(e[t]),[ne]:(e,t)=>{const r=L(e,t);return r?H(_,X(r,ye)):H(F,r)},[oe]:(e,t)=>ye(t in e),[ae]:e=>ye(U(e)),[ie]:e=>H(_,z(e).map(ye)),[ce]:e=>ye(D(e)),[le]:(e,t,r)=>ye(C(e,t,r)),[ue]:(e,t)=>ye(q(e,t)),[fe](e){de.delete(he.get(e)),he.delete(e)}};return e[t]=(e,t,...r)=>{switch(e){case V:r[0]=o(r[0]),r[1]=r[1].map(o);break;case Z:r[0]=r[0].map(o);break;case ee:{const[e,t]=r;r[0]=o(e);const{get:n,set:s,value:a}=t;n&&(t.get=o(n)),s&&(t.set=o(s)),a&&(t.value=o(a));break}default:r=r.map(o)}return a[e](o(t),...r)},{proxy:e,window:globalThis,isWindowProxy:()=>!1}};let me=0;const be=new Map,ve=new Map,Ee=Symbol(),Pe=e=>typeof e===O?e():e,ke=e=>typeof e===_&&!!e&&Ee in e,$e="isArray",Se=Array[$e],Me=Y(((e,t)=>{if(Ee in t)return Pe(t[Ee]);if(e===O){if(!ve.has(t)){let e;for(;ve.has(e=String(me++)););be.set(t,e),ve.set(e,t)}return H(e,be.get(t))}if(!(t instanceof G))for(const e in t)t[e]=Me(t[e]);return H(e,t)}));var Ae=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(fe,Me(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===O?je.bind(e):e,a=new Proxy(n,l),i=new WeakRef(a);s.set(r,i),o.register(a,r,i)}return s.get(r).deref()},i=e=>{const[t,r]=e;switch(t){case _:return typeof r===T?a(e):r;case O:return typeof r===B?ve.get(r):a(e);case I:return K(r)}return r},c=(e,t,...r)=>i(n(e,Pe(t),...r)),l={[V]:(e,t,r)=>c(V,e,Me(t),r.map(Me)),[Z]:(e,t)=>c(Z,e,t.map(Me)),[ee]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===O&&(r.get=Me(n)),typeof s===O&&(r.set=Me(s)),typeof o===O&&(r.value=Me(o)),c(ee,e,Me(t),r)},[te]:(e,t)=>c(te,e,Me(t)),[se]:e=>c(se,e),[re]:(e,t)=>t===Ee?e:c(re,e,Me(t)),[ne]:(e,t)=>{const r=c(ne,e,Me(t));return r&&X(r,i)},[oe]:(e,t)=>t===Ee||c(oe,e,Me(t)),[ae]:e=>c(ae,e),[ie]:e=>c(ie,e).map(i),[ce]:e=>c(ce,e),[le]:(e,t,r)=>c(le,e,Me(t),Me(r)),[ue]:(e,t)=>c(ue,e,Me(t))};e[r]=(e,t,r,n)=>{switch(e){case V:return i(t).apply(i(r),n.map(i));case fe:{const e=i(t);be.delete(ve.get(e)),ve.delete(e)}}};const u=new Proxy([_,null],l),f=u.Array[$e];return J(Array,$e,{value:e=>ke(e)?f(e):Se(e)}),{window:u,isWindowProxy:ke,proxy:e,get global(){return console.warn("Deprecated: please access `window` field instead"),this.window},get isGlobal(){return function(e){return console.warn("Deprecated: please access `isWindowProxy` field instead"),this.isWindowProxy(e)}.bind(this)}}};function je(){return this}const xe=h+"M",We=h+"T",Re=new WeakMap,_e=(e,...t)=>{const r=R(e,...t);if(!Re.has(r)){const t=e instanceof Worker?ge:Ae;Re.set(r,t(r,xe,We))}return Re.get(r)};_e.transfer=R.transfer;const{isArray:Oe}=Array,{assign:Te,create:Be,defineProperties:Fe,defineProperty:Ie,entries:Je}=Object,{all:Le,resolve:Ne}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ue=(e,t=location.href)=>new URL(e,t).href,ze=e=>e.arrayBuffer(),De=e=>e.json(),Ce=e=>e.text(),qe=[["beforeRun","codeBeforeRunWorker"],["beforeRunAsync","codeBeforeRunWorkerAsync"],["afterRun","codeAfterRunWorker"],["afterRunAsync","codeAfterRunWorkerAsync"]];class Ge{constructor(e,t){this.interpreter=e,this.onWorkerReady=t.onWorkerReady;for(const[e,r]of qe)this[e]=t[r]?.()}get stringHooks(){const e={};for(const[t]of qe)this[t]&&(e[t]=this[t]);return e}}var Xe=(...e)=>function(t,r){const n=new Worker(URL.createObjectURL(new Blob(['const e="object"==typeof self?self:globalThis,t=t=>((t,r)=>{const n=(e,r)=>(t.set(r,e),e),s=o=>{if(t.has(o))return t.get(o);const[a,i]=r[o];switch(a){case 0:case-1:return n(i,o);case 1:{const e=n([],o);for(const t of i)e.push(s(t));return e}case 2:{const e=n({},o);for(const[t,r]of i)e[s(t)]=s(r);return e}case 3:return n(new Date(i),o);case 4:{const{source:e,flags:t}=i;return n(new RegExp(e,t),o)}case 5:{const e=n(new Map,o);for(const[t,r]of i)e.set(s(t),s(r));return e}case 6:{const e=n(new Set,o);for(const t of i)e.add(s(t));return e}case 7:{const{name:t,message:r}=i;return n(new e[t](r),o)}case 8:return n(BigInt(i),o);case"BigInt":return n(Object(BigInt(i)),o)}return n(new e[a](i),o)};return s})(new Map,t)(0),r="",{toString:n}={},{keys:s}=Object,o=e=>{const t=typeof e;if("object"!==t||!e)return[0,t];const s=n.call(e).slice(8,-1);switch(s){case"Array":return[1,r];case"Object":return[2,r];case"Date":return[3,r];case"RegExp":return[4,r];case"Map":return[5,r];case"Set":return[6,r]}return s.includes("Array")?[1,s]:s.includes("Error")?[7,s]:[2,s]},a=([e,t])=>0===e&&("function"===t||"symbol"===t),i=(e,{json:t,lossy:r}={})=>{const n=[];return((e,t,r,n)=>{const i=(e,t)=>{const s=n.push(e)-1;return r.set(t,s),s},c=n=>{if(r.has(n))return r.get(n);let[l,u]=o(n);switch(l){case 0:{let t=n;switch(u){case"bigint":l=8,t=n.toString();break;case"function":case"symbol":if(e)throw new TypeError("unable to serialize "+u);t=null;break;case"undefined":return i([-1],n)}return i([l,t],n)}case 1:{if(u)return i([u,[...n]],n);const e=[],t=i([l,e],n);for(const t of n)e.push(c(t));return t}case 2:{if(u)switch(u){case"BigInt":return i([u,n.toString()],n);case"Boolean":case"Number":case"String":return i([u,n.valueOf()],n)}if(t&&"toJSON"in n)return c(n.toJSON());const r=[],f=i([l,r],n);for(const t of s(n))!e&&a(o(n[t]))||r.push([c(t),c(n[t])]);return f}case 3:return i([l,n.toISOString()],n);case 4:{const{source:e,flags:t}=n;return i([l,{source:e,flags:t}],n)}case 5:{const t=[],r=i([l,t],n);for(const[r,s]of n)(e||!a(o(r))&&!a(o(s)))&&t.push([c(r),c(s)]);return r}case 6:{const t=[],r=i([l,t],n);for(const r of n)!e&&a(o(r))||t.push(c(r));return r}}const{message:f}=n;return i([l,{name:u,message:f}],n)};return c})(!(t||r),!!t,new Map,n)(e),n},{parse:c,stringify:l}=JSON,u={json:!0,lossy:!0};var f=Object.freeze({__proto__:null,parse:e=>t(c(e)),stringify:e=>l(i(e,u))}),p="2f6fe6d4-8ba8-424a-83c5-8fadca1ea103",d=e=>({value:new Promise((t=>{let r=new Worker("data:application/javascript,"+encodeURIComponent("onmessage=({data:b})=>(Atomics.wait(b,0),postMessage(0))"));r.onmessage=t,r.postMessage(e)}))})\n/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:w,Map:g,SharedArrayBuffer:y,Uint16Array:h}=globalThis,{BYTES_PER_ELEMENT:m}=w,{BYTES_PER_ELEMENT:b}=h,{isArray:v}=Array,{notify:S,wait:E,waitAsync:M}=Atomics,{fromCharCode:P}=String,j=(e,t)=>e?(M||d)(t,0):(E(t,0),{value:{then:e=>e()}}),k=new WeakSet,x=new WeakMap;let A=0;const $=(e,{parse:t,stringify:r}=JSON)=>{if(!x.has(e)){const n=(t,...r)=>e.postMessage({[p]:r},{transfer:t});x.set(e,new Proxy(new g,{has:(e,t)=>"string"==typeof t&&!t.startsWith("_"),get:(r,s)=>"then"===s?null:(...r)=>{const o=A++;let a=new w(new y(m)),i=[];k.has(r.at(-1)||i)&&k.delete(i=r.pop()),n(i,o,a,s,r);const c=e instanceof Worker;return j(c,a).value.then((()=>{const e=a[0];if(!e)return;const r=b*e;return a=new w(new y(r+r%m)),n([],o,a),j(c,a).value.then((()=>t(P(...new h(a.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new g;e.addEventListener("message",(async e=>{const s=e.data?.[p];if(v(s)){e.stopImmediatePropagation();const[o,a,...i]=s;if(i.length){const[e,s]=i;if(!t.has(e))throw new Error(`Unsupported action: ${e}`);{const i=r(await t.get(e)(...s));i&&(n.set(o,i),a[0]=i.length)}}else{const e=n.get(o);n.delete(o);for(let t=new h(a.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}S(a,0)}}))}return!!t.set(n,s)}}))}return x.get(e)};$.transfer=(...e)=>(k.add(e),e);const _="object",W="function",O="number",R="string",T="undefined",F="symbol",{defineProperty:B,getOwnPropertyDescriptor:J,getPrototypeOf:I,isExtensible:L,ownKeys:U,preventExtensions:N,set:D,setPrototypeOf:z}=Reflect,C=I(Int8Array),q=(e,t)=>{const{get:r,set:n,value:s}=e;return r&&(e.get=t(r)),n&&(e.set=t(n)),s&&(e.value=t(s)),e},G=(e,t)=>[e,t],K=e=>t=>{const r=typeof t;switch(r){case _:if(null==t)return G("null",t);case W:return e(r,t);case"boolean":case O:case R:case T:case"bigint":return G(r,t);case F:if(Y.has(t))return G(r,Y.get(t))}throw new Error(`Unable to handle this ${r} type`)},Y=new Map(U(Symbol).filter((e=>typeof Symbol[e]===F)).map((e=>[Symbol[e],e]))),V=e=>{for(const[t,r]of Y)if(r===e)return t},H="apply",Q="construct",X="defineProperty",Z="deleteProperty",ee="get",te="getOwnPropertyDescriptor",re="getPrototypeOf",ne="has",se="isExtensible",oe="ownKeys",ae="preventExtensions",ie="set",ce="setPrototypeOf",le="delete";let ue=0;const fe=new Map,pe=new Map,de=new WeakMap;if(globalThis.window===globalThis){const{addEventListener:e}=EventTarget.prototype;B(EventTarget.prototype,"addEventListener",{value(t,r,...n){return n.at(0)?.invoke&&(de.has(this)||de.set(this,new Map),de.get(this).set(t,[].concat(n[0].invoke)),delete n[0].invoke),e.call(this,t,r,...n)}})}const we=K(((e,t)=>{if(!fe.has(t)){let e;for(;pe.has(e=ue++););fe.set(t,e),pe.set(e,t)}return G(e,fe.get(t))}));var ge=(e,t,r)=>{const{[r]:n}=e,s=new FinalizationRegistry((e=>{n(le,G(R,e))})),o=([e,t])=>{switch(e){case _:if(null==t)return globalThis;if(typeof t===O)return pe.get(t);if(!(t instanceof C))for(const e in t)t[e]=o(t[e]);return t;case W:if(typeof t===R){if(!pe.has(t)){const e=function(...e){return e.at(0)instanceof Event&&(e=>{const{currentTarget:t,target:r,type:n}=e;for(const s of de.get(t||r)?.get(n)||[])e[s]()})(...e),n(H,G(W,t),we(this),e.map(we))},r=new WeakRef(e);pe.set(t,r),s.register(e,t,r)}return pe.get(t).deref()}return pe.get(t);case F:return V(t)}return t},a={[H]:(e,t,r)=>we(e.apply(t,r)),[Q]:(e,t)=>we(new e(...t)),[X]:(e,t,r)=>we(B(e,t,r)),[Z]:(e,t)=>we(delete e[t]),[re]:e=>we(I(e)),[ee]:(e,t)=>we(e[t]),[te]:(e,t)=>{const r=J(e,t);return r?G(_,q(r,we)):G(T,r)},[ne]:(e,t)=>we(t in e),[se]:e=>we(L(e)),[oe]:e=>G(_,U(e).map(we)),[ae]:e=>we(N(e)),[ie]:(e,t,r)=>we(D(e,t,r)),[ce]:(e,t)=>we(z(e,t)),[le](e){fe.delete(pe.get(e)),pe.delete(e)}};return e[t]=(e,t,...r)=>{switch(e){case H:r[0]=o(r[0]),r[1]=r[1].map(o);break;case Q:r[0]=r[0].map(o);break;case X:{const[e,t]=r;r[0]=o(e);const{get:n,set:s,value:a}=t;n&&(t.get=o(n)),s&&(t.set=o(s)),a&&(t.value=o(a));break}default:r=r.map(o)}return a[e](o(t),...r)},{proxy:e,window:globalThis,isWindowProxy:()=>!1}};let ye=0;const he=new Map,me=new Map,be=Symbol(),ve=e=>typeof e===W?e():e,Se=e=>typeof e===_&&!!e&&be in e,Ee="isArray",Me=Array[Ee],Pe=K(((e,t)=>{if(be in t)return ve(t[be]);if(e===W){if(!me.has(t)){let e;for(;me.has(e=String(ye++)););he.set(t,e),me.set(e,t)}return G(e,he.get(t))}if(!(t instanceof C))for(const e in t)t[e]=Pe(t[e]);return G(e,t)}));var je=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(le,Pe(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===W?ke.bind(e):e,a=new Proxy(n,l),i=new WeakRef(a);s.set(r,i),o.register(a,r,i)}return s.get(r).deref()},i=e=>{const[t,r]=e;switch(t){case _:return typeof r===O?a(e):r;case W:return typeof r===R?me.get(r):a(e);case F:return V(r)}return r},c=(e,t,...r)=>i(n(e,ve(t),...r)),l={[H]:(e,t,r)=>c(H,e,Pe(t),r.map(Pe)),[Q]:(e,t)=>c(Q,e,t.map(Pe)),[X]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===W&&(r.get=Pe(n)),typeof s===W&&(r.set=Pe(s)),typeof o===W&&(r.value=Pe(o)),c(X,e,Pe(t),r)},[Z]:(e,t)=>c(Z,e,Pe(t)),[re]:e=>c(re,e),[ee]:(e,t)=>t===be?e:c(ee,e,Pe(t)),[te]:(e,t)=>{const r=c(te,e,Pe(t));return r&&q(r,i)},[ne]:(e,t)=>t===be||c(ne,e,Pe(t)),[se]:e=>c(se,e),[oe]:e=>c(oe,e).map(i),[ae]:e=>c(ae,e),[ie]:(e,t,r)=>c(ie,e,Pe(t),Pe(r)),[ce]:(e,t)=>c(ce,e,Pe(t))};e[r]=(e,t,r,n)=>{switch(e){case H:return i(t).apply(i(r),n.map(i));case le:{const e=i(t);he.delete(me.get(e)),me.delete(e)}}};const u=new Proxy([_,null],l),f=u.Array[Ee];return B(Array,Ee,{value:e=>Se(e)?f(e):Me(e)}),{window:u,isWindowProxy:Se,proxy:e,get global(){return console.warn("Deprecated: please access `window` field instead"),this.window},get isGlobal(){return function(e){return console.warn("Deprecated: please access `isWindowProxy` field instead"),this.isWindowProxy(e)}.bind(this)}}};function ke(){return this}const xe=p+"M",Ae=p+"T",$e=new WeakMap,_e=(e,...t)=>{const r=$(e,...t);if(!$e.has(r)){const t=e instanceof Worker?ge:je;$e.set(r,t(r,xe,Ae))}return $e.get(r)};_e.transfer=$.transfer;const{isArray:We}=Array,{assign:Oe,create:Re,defineProperties:Te,defineProperty:Fe,entries:Be}=Object,{all:Je,resolve:Ie}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Le=(e,t=location.href)=>new URL(e,t).href;Promise.withResolvers||(Promise.withResolvers=function(){var e,t,r=new this((function(r,n){e=r,t=n}));return{resolve:e,reject:t,promise:r}});const Ue=e=>e.arrayBuffer(),Ne=e=>e.json(),De=e=>e.text(),ze=e=>e.replace(/^[^\\r\\n]+$/,(e=>e.trim())),Ce=new WeakMap,qe=e=>{const t=e||console,r={stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>r.stderr(...e),stdout:(...e)=>r.stdout(...e),async get(e){const t=await e;return Ce.set(t,r),t}}},Ge=e=>{const t=e.split("/");return t.pop(),t.join("/")},Ke=(e,t)=>{const r=[];for(const n of t.split("/"))r.push(n),n&&e.mkdir(r.join("/"))},Ye=(e,t)=>{const r=[];for(const e of t.split("/"))switch(e){case"":case".":break;case"..":r.pop();break;default:r.push(e)}return[e.cwd()].concat(r).join("/").replace(/^\\/+/,"/")},Ve=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},He=new WeakMap,Qe=(e,t,r)=>Je((e=>{for(const{files:t,to_file:r,from:n=""}of e){if(void 0!==t&&void 0!==r)throw new Error("Cannot use \'to_file\' and \'files\' parameters together!");if(void 0===t&&void 0===r&&n.endsWith("/"))throw new Error(`Couldn\'t determine the filename from the path ${n}, please supply \'to_file\' parameter.`)}return e.flatMap((({from:e="",to_folder:t=".",to_file:r,files:n})=>{if(We(n))return n.map((r=>({url:Ve([e,r]),path:Ve([t,r])})));const s=r||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:Ve([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Le(t,He.get(e))))(r,n).then(Ue).then((r=>e.writeFile(t,s,r)))))),Xe=(e,t,r)=>{e.registerJsModule(t,r)},Ze=(e,t)=>e.runPython(ze(t)),et=(e,t)=>e.runPythonAsync(ze(t)),tt=async(e,t,r)=>{const[n,...s]=t.split(".");let o,a=e.globals.get(n);for(const e of s)[o,a]=[a,a[e]];await a.call(o,r)},rt=({FS:e},t,r)=>((e,t,r)=>{const{parentPath:n,name:s}=e.analyzePath(t,!0);return e.mkdirTree(n),e.writeFile([n,s].join("/"),new Uint8Array(r),{canOwn:!0})})(e,t,r);var nt={type:"micropython",module:(e="1.20.0-268")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,r){const{stderr:n,stdout:s,get:o}=qe();r=r.replace(/\\.m?js$/,".wasm");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await Qe(this,a,t.fetch),a},registerJSModule:Xe,run:Ze,runAsync:et,runEvent:tt,writeFile:rt};var st={type:"pyodide",module:(e="0.23.2")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,r){const{stderr:n,stdout:s,get:o}=qe(),a=r.slice(0,r.lastIndexOf("/")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await Qe(this,i,t.fetch),t.packages){await i.loadPackage("micropip");const e=await i.pyimport("micropip");await e.install(t.packages),e.destroy()}return i},registerJSModule:Xe,run:Ze,runAsync:et,runEvent:tt,writeFile:rt};const ot="ruby-wasm-wasi",at=ot.replace(/\\W+/g,"_");var it={type:ot,experimental:!0,module:(e="2.0.0")=>`https://cdn.jsdelivr.net/npm/ruby-3_2-wasm-wasi@${e}/dist/browser.esm.js`,async engine({DefaultRubyVM:e},t,r){const n=await fetch(`${r.slice(0,r.lastIndexOf("/"))}/ruby.wasm`),s=await WebAssembly.compile(await n.arrayBuffer()),{vm:o}=await e(s);return t.fetch&&await Qe(this,o,t.fetch),o},registerJSModule(e,t,r){const n=[\'require "js"\'];for(const[e,t]of Be(r)){const r=`__module_${at}_${e}`;globalThis[r]=t,n.push(`$${e}=JS.global[:${r}]`)}this.run(e,n.join(";"))},run:(e,t)=>e.eval(ze(t)),runAsync:(e,t)=>e.evalAsync(ze(t)),async runEvent(e,t,r){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,n=`__module_${at}_event`;globalThis[n]=r,this.run(e,`require "js";$xworker.call("${t}",JS.global[:${n}])`),delete globalThis[n]}else{const n=this.run(e,`method(:${t})`);await n.call(t,e.wrap(r))}},writeFile:()=>{throw new Error(`writeFile is not supported in ${ot}`)}};var ct={type:"wasmoon",module:(e="1.15.0")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},r){const{stderr:n,stdout:s,get:o}=qe(),a=await o((new e).createEngine());return a.global.getTable(t.Base,(e=>{a.global.setField(e,"print",s),a.global.setField(e,"printErr",n)})),r.fetch&&await Qe(this,a,r.fetch),a},registerJSModule:(e,t,r)=>{for(const[t,n]of Be(r))e.global.set(t,n)},run:(e,t)=>e.doStringSync(ze(t)),runAsync:(e,t)=>e.doString(ze(t)),runEvent:async(e,t,r)=>{const[n,...s]=t.split(".");let o,a=e.global.get(n);for(const e of s)[o,a]=[a,a[e]];await a.call(o,r)},writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(t=Ye(e,t),Ke(e,Ge(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const lt=new Map,ut=new Map,ft=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split("@"),s=lt.get(r),o=/^https?:\\/\\//i.test(n)?n.join("@"):s.module(...n);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:r,module:n,engine:s}=e.get(t);return(e,o)=>n.then((n=>{ut.set(t,e);const a=e?.fetch;return a&&He.set(a,o),s(n,e,r)}))}}),pt=e=>{for(const t of[].concat(e.type))lt.set(t,e)};for(const e of[nt,st,it,ct])pt(e);const dt=async e=>(await import("https://cdn.jsdelivr.net/npm/basic-toml@0.3.1/es.js")).parse(e);try{new SharedArrayBuffer(4)}catch(e){throw new Error(["Unable to use SharedArrayBuffer due insecure environment.","Please read requirements in MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/SharedArrayBuffer#security_requirements"].join("\\n"))}let wt,gt;const yt=(e,t)=>{addEventListener(e,t||(async t=>{await wt,gt(`xworker.on${e}`,t)}),!!t&&{once:!0})},{proxy:ht,window:mt,isWindowProxy:bt}=_e(self,f),vt={sync:ht,window:mt,isWindowProxy:bt,onerror(){},onmessage(){},onmessageerror(){},postMessage:postMessage.bind(self)};yt("message",(({data:{options:e,code:t,hooks:r}})=>{wt=(async()=>{const{type:n,version:s,config:o,async:a}=e,i=await((e,t)=>{let r={};if(t)if(t.endsWith(".json"))r=fetch(t).then(Ne);else if(t.endsWith(".toml"))r=fetch(t).then(De).then(dt);else{try{r=JSON.parse(t)}catch(e){r=dt(t)}t=Le("./config.txt")}return Ie(r).then((r=>ft[e](r,t)))})(((e,t="")=>`${e}@${t}`.replace(/@$/,""))(n,s),o),c=Re(lt.get(n)),l="run"+(a?"Async":"");if(r){const{beforeRun:e,beforeRunAsync:t,afterRun:n,afterRunAsync:s}=r,o=n||s,a=e||t;if(o){const e=c[l].bind(c);c[l]=(t,r)=>e(t,`${r}\\n${o}`)}if(a){const e=c[l].bind(c);c[l]=(t,r)=>e(t,`${a}\\n${r}`)}}return c.registerJSModule(i,"xworker",{xworker:vt}),gt=c.runEvent.bind(c,i),await c[l](i,t),i})(),yt("error"),yt("message"),yt("messageerror")}));\n'],{type:"application/javascript"})),{type:"module"}),{postMessage:s}=n,o=this instanceof Ge;if(e.length){const[t,n]=e;(r=Te({},r||{type:t,version:n})).type||(r.type=t)}r?.config&&(r.config=Ue(r.config));const a=fetch(t).then(Ce).then((e=>{const t=o?this.stringHooks:void 0;s.call(n,{options:r,code:e,hooks:t})}));return Fe(n,{postMessage:{value:(e,...t)=>a.then((()=>s.call(n,e,...t)))},sync:{value:_e(n,d).proxy}}),o&&this.onWorkerReady?.(this.interpreter,n),n};Promise.withResolvers||(Promise.withResolvers=function(){var e,t,r=new this((function(r,n){e=r,t=n}));return{resolve:e,reject:t,promise:r}});const He=e=>e.replace(/^[^\r\n]+$/,(e=>e.trim())),Ye=new WeakMap,Qe=e=>{const t=e||console,r={stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>r.stderr(...e),stdout:(...e)=>r.stdout(...e),async get(e){const t=await e;return Ye.set(t,r),t}}},Ke=e=>{const t=e.split("/");return t.pop(),t.join("/")},Ve=(e,t)=>{const r=[];for(const n of t.split("/"))r.push(n),n&&e.mkdir(r.join("/"))},Ze=(e,t)=>{const r=[];for(const e of t.split("/"))switch(e){case"":case".":break;case"..":r.pop();break;default:r.push(e)}return[e.cwd()].concat(r).join("/").replace(/^\/+/,"/")},et=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},tt=new WeakMap,rt=(e,t,r)=>Le((e=>{for(const{files:t,to_file:r,from:n=""}of e){if(void 0!==t&&void 0!==r)throw new Error("Cannot use 'to_file' and 'files' parameters together!");if(void 0===t&&void 0===r&&n.endsWith("/"))throw new Error(`Couldn't determine the filename from the path ${n}, please supply 'to_file' parameter.`)}return e.flatMap((({from:e="",to_folder:t=".",to_file:r,files:n})=>{if(Oe(n))return n.map((r=>({url:et([e,r]),path:et([t,r])})));const s=r||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:et([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Ue(t,tt.get(e))))(r,n).then(ze).then((r=>e.writeFile(t,s,r)))))),nt=(e,t,r)=>{e.registerJsModule(t,r)},st=(e,t)=>e.runPython(He(t)),ot=(e,t)=>e.runPythonAsync(He(t)),at=async(e,t,r)=>{const[n,...s]=t.split(".");let o,a=e.globals.get(n);for(const e of s)[o,a]=[a,a[e]];await a.call(o,r)},it=({FS:e},t,r)=>((e,t,r)=>{const{parentPath:n,name:s}=e.analyzePath(t,!0);return e.mkdirTree(n),e.writeFile([n,s].join("/"),new Uint8Array(r),{canOwn:!0})})(e,t,r);var ct={type:"micropython",module:(e="1.20.0-268")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,r){const{stderr:n,stdout:s,get:o}=Qe();r=r.replace(/\.m?js$/,".wasm");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await rt(this,a,t.fetch),a},registerJSModule:nt,run:st,runAsync:ot,runEvent:at,writeFile:it};var lt={type:"pyodide",module:(e="0.23.2")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,r){const{stderr:n,stdout:s,get:o}=Qe(),a=r.slice(0,r.lastIndexOf("/")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await rt(this,i,t.fetch),t.packages){await i.loadPackage("micropip");const e=await i.pyimport("micropip");await e.install(t.packages),e.destroy()}return i},registerJSModule:nt,run:st,runAsync:ot,runEvent:at,writeFile:it};const ut="ruby-wasm-wasi",ft=ut.replace(/\W+/g,"_");var pt={type:ut,experimental:!0,module:(e="2.0.0")=>`https://cdn.jsdelivr.net/npm/ruby-3_2-wasm-wasi@${e}/dist/browser.esm.js`,async engine({DefaultRubyVM:e},t,r){const n=await fetch(`${r.slice(0,r.lastIndexOf("/"))}/ruby.wasm`),s=await WebAssembly.compile(await n.arrayBuffer()),{vm:o}=await e(s);return t.fetch&&await rt(this,o,t.fetch),o},registerJSModule(e,t,r){const n=['require "js"'];for(const[e,t]of Je(r)){const r=`__module_${ft}_${e}`;globalThis[r]=t,n.push(`$${e}=JS.global[:${r}]`)}this.run(e,n.join(";"))},run:(e,t)=>e.eval(He(t)),runAsync:(e,t)=>e.evalAsync(He(t)),async runEvent(e,t,r){if(/^xworker\.(on\w+)$/.test(t)){const{$1:t}=RegExp,n=`__module_${ft}_event`;globalThis[n]=r,this.run(e,`require "js";$xworker.call("${t}",JS.global[:${n}])`),delete globalThis[n]}else{const n=this.run(e,`method(:${t})`);await n.call(t,e.wrap(r))}},writeFile:()=>{throw new Error(`writeFile is not supported in ${ut}`)}};var dt={type:"wasmoon",module:(e="1.15.0")=>`https://cdn.jsdelivr.net/npm/wasmoon@${e}/+esm`,async engine({LuaFactory:e,LuaLibraries:t},r){const{stderr:n,stdout:s,get:o}=Qe(),a=await o((new e).createEngine());return a.global.getTable(t.Base,(e=>{a.global.setField(e,"print",s),a.global.setField(e,"printErr",n)})),r.fetch&&await rt(this,a,r.fetch),a},registerJSModule:(e,t,r)=>{for(const[t,n]of Je(r))e.global.set(t,n)},run:(e,t)=>e.doStringSync(He(t)),runAsync:(e,t)=>e.doString(He(t)),runEvent:async(e,t,r)=>{const[n,...s]=t.split(".");let o,a=e.global.get(n);for(const e of s)[o,a]=[a,a[e]];await a.call(o,r)},writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(t=Ze(e,t),Ve(e,Ke(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const ht=new Map,wt=new Map,yt=[],gt=[],mt=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split("@"),s=ht.get(r),o=/^https?:\/\//i.test(n)?n.join("@"):s.module(...n);e.set(t,{url:o,module:import(o),engine:s.engine.bind(s)})}const{url:r,module:n,engine:s}=e.get(t);return(e,o)=>n.then((n=>{wt.set(t,e);const a=e?.fetch;return a&&tt.set(a,o),s(n,e,r)}))}}),bt=e=>{for(const t of[].concat(e.type))ht.set(t,e),yt.push(`script[type="${t}"]`),gt.push(`${t}-`)};for(const e of[ct,lt,pt,dt])bt(e);const vt=async e=>(await import("https://cdn.jsdelivr.net/npm/basic-toml@0.3.1/es.js")).parse(e),Et=(e,t)=>{let r={};if(t)if(t.endsWith(".json"))r=fetch(t).then(De);else if(t.endsWith(".toml"))r=fetch(t).then(Ce).then(vt);else{try{r=JSON.parse(t)}catch(e){r=vt(t)}t=Ue("./config.txt")}return Ne(r).then((r=>mt[e](r,t)))},Pt=(e,t="")=>`${e}@${t}`.replace(/@$/,""),kt=(e,t)=>{const r=(e=>{let t=e;for(;t.parentNode;)t=t.parentNode;return t})(e);return r.getElementById(t)||((e,t=document)=>t.querySelector(e))(t,r)},$t=new WeakMap,St={get(){let e=$t.get(this);return e||(e=document.createElement(`${this.type}-script`),$t.set(this,e),Wt(this)),e},set(e){"string"==typeof e?$t.set(this,kt(this,e)):($t.set(this,e),Wt(this))}},Mt=new WeakMap,At=new Map,jt=(e,t)=>{const r=e?.value;return r?t+r:""},xt=(e,t,r,n,s)=>{if(!At.has(t)){const o={interpreter:Et(r,s),queue:Ne(),XWorker:Xe(e,n)};At.set(t,o),At.has(e)||At.set(e,o)}return At.get(t)},Wt=async e=>{if(Mt.has(e)){const{target:t}=e;t&&(e.closest("head")?document.body.append(t):e.after(t))}else{const{attributes:{async:t,config:r,env:n,target:s,version:o},src:a,type:i}=e,c=o?.value,l=Pt(i,c),u=jt(s,"");let f=jt(r,"|");const p=jt(n,"")||`${l}${f}`;f=f.slice(1),f&&(f=Ue(f));const d=xt(i,p,l,c,f);Mt.set(Ie(e,"target",St),d),u&&$t.set(e,kt(e,u));const h=a?fetch(a).then(Ce):e.textContent;d.queue=d.queue.then((()=>(async(e,t,r,n)=>{const s=ht.get(e.type);s.experimental&&console.warn(`The ${e.type} interpreter is experimental`);const[o,a]=await Le([Mt.get(e).interpreter,t]);try{return Ie(document,"currentScript",{configurable:!0,get:()=>e}),s.registerJSModule(o,"xworker",{XWorker:r}),s[n?"runAsync":"run"](o,a)}finally{delete document.currentScript}})(e,h,d.XWorker,!!t)))}};Ie(globalThis,"pyscript",{value:{env:new Proxy(Be(null),{get:(e,t)=>Rt(t)})}});const Rt=async e=>{if(At.has(e)){const{interpreter:t,queue:r}=At.get(e);return(await Le([t,r]))[0]}const t=At.size?`Available interpreters are: ${[...At.keys()].map((e=>`"${e}"`)).join(", ")}.`:"There are no interpreters in this page.";throw new Error(`The interpreter "${e}" was not found. ${t}`)},_t=async e=>{const{type:r,currentTarget:n}=e;for(let{name:s,value:o,ownerElement:a}of t(`./@*[${gt.map((e=>`name()="${e}${r}"`)).join(" or ")}]`,n)){s=s.slice(0,-(r.length+1));const t=await Rt(a.getAttribute(`${s}-env`)||s);ht.get(s).runEvent(t,o,e)}},Ot=e=>{for(let{name:r,ownerElement:n}of t(`.//@*[${gt.map((e=>`starts-with(name(),"${e}")`)).join(" or ")}]`,e))r=r.slice(r.lastIndexOf("-")+1),"env"!==r&&n.addEventListener(r,_t)},Tt=[],Bt=new Map,Ft=new Map,It=e=>{for(const t of Tt)if(e.matches(t)){const r=Bt.get(t),{resolve:n}=Ft.get(r),{options:s,known:o}=Jt.get(r);if(!o.has(e)){o.add(e);const{interpreter:t,version:a,config:i,env:c,onInterpreterReady:l}=s,u=Pt(t,a),f=c||`${u}${i?`|${i}`:""}`,{interpreter:p,XWorker:d}=xt(t,f,u,a,i);p.then((o=>{const a=Be(ht.get(t)),{onBeforeRun:i,onBeforeRunAsync:c,onAfterRun:f,onAfterRunAsync:p}=s,h=new Ge(o,s),w=function(...e){return d.apply(h,e)};for(const[t,[r,n]]of[["run",[i,f]]]){const s=a[t];a[t]=function(t,o){r&&r.call(this,y,e);const a=s.call(this,t,o);return n&&n.call(this,y,e),a}}for(const[t,[r,n]]of[["runAsync",[c,p]]]){const s=a[t];a[t]=async function(t,o){r&&await r.call(this,y,e);const a=await s.call(this,t,o);return n&&await n.call(this,y,e),a}}a.registerJSModule(o,"xworker",{XWorker:w});const y={type:r,interpreter:o,XWorker:w,io:Ye.get(o),config:structuredClone(wt.get(u)),run:a.run.bind(a,o),runAsync:a.runAsync.bind(a,o),runEvent:a.runEvent.bind(a,o)};n(y),l?.(y,e)}))}}},Jt=new Map,Lt=(t,r)=>{if(ht.has(t)||Jt.has(t))throw new Error(`<script type="${t}"> already registered`);if(!ht.has(r?.interpreter))throw new Error("Unspecified interpreter");ht.set(t,ht.get(r?.interpreter)),Nt(t);const n=[`script[type="${t}"]`,`${t}-script`];for(const e of n)Bt.set(e,t);Tt.push(...n),gt.push(`${t}-`),Jt.set(t,{options:Te({env:t},r),known:new WeakSet}),Ot(document),e(n.join(",")).forEach(It)},Nt=e=>(Ft.has(e)||Ft.set(e,Promise.withResolvers()),Ft.get(e).promise),Ut=Xe(),zt=yt.join(","),Dt=new MutationObserver((t=>{for(const{type:r,target:n,attributeName:s,addedNodes:o}of t)if("attributes"!==r){for(const t of o)if(1===t.nodeType)if(Ot(t),t.matches(zt))Wt(t);else{if(e(zt,t).forEach(Wt),!Tt.length)continue;It(t),e(Tt.join(","),t).forEach(It)}}else{const e=s.lastIndexOf("-")+1;if(e){const t=s.slice(0,e);for(const r of gt)if(t===r){const t=s.slice(e);if("env"!==t){const e=n.hasAttribute(s)?"add":"remove";n[`${e}EventListener`](t,_t)}break}}}})),Ct=e=>(Dt.observe(e,{childList:!0,subtree:!0,attributes:!0}),e),{attachShadow:qt}=Element.prototype;Te(Element.prototype,{attachShadow(e){return Ct(qt.call(this,e))}}),Ot(Ct(document)),e(zt,document).forEach(Wt);export{Ut as XWorker,Lt as define,Nt as whenDefined};
|
package/docs/README.md
CHANGED
@@ -455,7 +455,8 @@ In few words, while every *interpreter* is literally passed along to unlock its
|
|
455
455
|
| io | `wrap.io` | Allow to lazily define different `stdout` or `stderr` via the running *interpreter*. This `io` field can be lazily defined and restored back for any element currently running the code. |
|
456
456
|
| config | `wrap.config` | It is the resolved *JSON* config and it is an own clone per each element running the code, usable also as "_state_" reference for the specific element, as changing it at run time will never affect any other element. |
|
457
457
|
| run | `wrap.run(code)` | It abstracts away the need to know the exact method name used to run code synchronously, whenever the *interpreter* allows such operation, facilitating future migrations from an interpreter to another. |
|
458
|
-
| runAsync | `wrap.
|
458
|
+
| runAsync | `wrap.runAsync(code)` | It abstracts away the need to know the exact method name used to run code asynchronously, whenever the *interpreter* allows such operation, facilitating future migrations from an interpreter to another. |
|
459
|
+
| runEvent | `wrap.runEvent(code, event)` | It abstracts away the need to know how an *interpreter* retrieves paths to execute an event handler. |
|
459
460
|
|
460
461
|
This is the `wrap` mentioned with most hooks and initializers previously described, and we're more than happy to learn if we are not passing along some extra helper.
|
461
462
|
|
package/esm/custom.js
CHANGED
@@ -119,6 +119,7 @@ export const handleCustomType = (node) => {
|
|
119
119
|
config: structuredClone(configs.get(name)),
|
120
120
|
run: module.run.bind(module, interpreter),
|
121
121
|
runAsync: module.runAsync.bind(module, interpreter),
|
122
|
+
runEvent: module.runEvent.bind(module, interpreter),
|
122
123
|
};
|
123
124
|
|
124
125
|
resolve(resolved);
|
@@ -2,23 +2,23 @@ import { clean, writeFile as writeFileUtil } from "./_utils.js";
|
|
2
2
|
|
3
3
|
// REQUIRES INTEGRATION TEST
|
4
4
|
/* c8 ignore start */
|
5
|
+
export const registerJSModule = (interpreter, name, value) => {
|
6
|
+
interpreter.registerJsModule(name, value);
|
7
|
+
};
|
8
|
+
|
5
9
|
export const run = (interpreter, code) => interpreter.runPython(clean(code));
|
6
10
|
|
7
11
|
export const runAsync = (interpreter, code) =>
|
8
12
|
interpreter.runPythonAsync(clean(code));
|
9
13
|
|
10
|
-
export const
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
};
|
19
|
-
|
20
|
-
export const registerJSModule = (interpreter, name, value) => {
|
21
|
-
interpreter.registerJsModule(name, value);
|
14
|
+
export const runEvent = async (interpreter, code, event) => {
|
15
|
+
// allows method(event) as well as namespace.method(event)
|
16
|
+
// it does not allow fancy brackets names for now
|
17
|
+
const [name, ...keys] = code.split(".");
|
18
|
+
let target = interpreter.globals.get(name);
|
19
|
+
let context;
|
20
|
+
for (const key of keys) [context, target] = [target, target[key]];
|
21
|
+
await target.call(context, event);
|
22
22
|
};
|
23
23
|
|
24
24
|
export const writeFile = ({ FS }, path, buffer) =>
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import "@ungap/with-resolvers";
|
2
2
|
|
3
3
|
import { getBuffer } from "../fetch-utils.js";
|
4
|
-
import { absoluteURL
|
4
|
+
import { absoluteURL } from "../utils.js";
|
5
5
|
|
6
6
|
/**
|
7
7
|
* Trim code only if it's a single line that prettier or other tools might have modified.
|
@@ -131,12 +131,4 @@ export const fetchPaths = (module, interpreter, config_fetch) =>
|
|
131
131
|
.then((buffer) => module.writeFile(interpreter, path, buffer)),
|
132
132
|
),
|
133
133
|
);
|
134
|
-
|
135
|
-
// this is a fallback for interpreters unable to register JS modules
|
136
|
-
// all defined keys will end up as globally available references
|
137
|
-
// REQUIRES INTEGRATION TEST
|
138
|
-
/* c8 ignore start */
|
139
|
-
export function registerJSModule(interpreter, _, value) {
|
140
|
-
for (const [k, v] of entries(value)) this.setGlobal(interpreter, k, v);
|
141
|
-
}
|
142
134
|
/* c8 ignore stop */
|