@pyscript/core 0.0.6 → 0.0.8
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/README.md +4 -0
- package/cjs/custom.js +4 -1
- package/cjs/interpreter/_python.js +14 -8
- package/cjs/interpreter/_utils.js +1 -0
- package/cjs/interpreter/micropython.js +10 -8
- package/cjs/interpreter/pyodide.js +4 -4
- package/cjs/interpreter/ruby-wasm-wasi.js +28 -9
- package/cjs/interpreter/wasmoon.js +17 -5
- package/cjs/listeners.js +1 -6
- package/cjs/script-handler.js +1 -2
- package/cjs/utils.js +2 -1
- package/cjs/worker/xworker.js +1 -1
- package/core.js +1 -1
- package/dev.cjs +33 -0
- package/docs/README.md +17 -37
- package/esm/custom.js +4 -1
- package/esm/interpreter/_python.js +12 -6
- package/esm/interpreter/_utils.js +1 -0
- package/esm/interpreter/micropython.js +10 -8
- package/esm/interpreter/pyodide.js +4 -4
- package/esm/interpreter/ruby-wasm-wasi.js +28 -9
- package/esm/interpreter/wasmoon.js +17 -5
- package/esm/listeners.js +1 -6
- package/esm/script-handler.js +1 -2
- package/esm/utils.js +2 -1
- package/esm/worker/xworker.js +1 -1
- package/package.json +4 -2
- package/pyscript.js +1 -1
- package/types/coincident/window.d.ts +6 -6
- package/types/pyscript/pyscript.core/esm/interpreter/_python.d.ts +2 -2
- package/types/pyscript/pyscript.core/esm/interpreter/micropython.d.ts +6 -5
- package/types/pyscript/pyscript.core/esm/interpreter/pyodide.d.ts +4 -4
- package/types/pyscript/pyscript.core/esm/interpreter/ruby-wasm-wasi.d.ts +2 -2
- package/types/pyscript/pyscript.core/esm/interpreter/wasmoon.d.ts +2 -2
- package/types/pyscript/pyscript.core/esm/utils.d.ts +6 -0
package/README.md
CHANGED
@@ -43,3 +43,7 @@ NO_MIN=1 npm run build
|
|
43
43
|
|
44
44
|
npm run server
|
45
45
|
```
|
46
|
+
|
47
|
+
### Dev Build
|
48
|
+
|
49
|
+
Beside spinning the _localhost_ server via `npm run server`, the `npm run dev` will watch changes in the `./esm` folder and it will build automatically non optimized artifacts out of the box.
|
package/cjs/custom.js
CHANGED
@@ -109,7 +109,9 @@ const handleCustomType = (node) => {
|
|
109
109
|
};
|
110
110
|
}
|
111
111
|
|
112
|
-
module.
|
112
|
+
module.registerJSModule(interpreter, "xworker", {
|
113
|
+
XWorker,
|
114
|
+
});
|
113
115
|
|
114
116
|
const resolved = {
|
115
117
|
type,
|
@@ -119,6 +121,7 @@ const handleCustomType = (node) => {
|
|
119
121
|
config: structuredClone(configs.get(name)),
|
120
122
|
run: module.run.bind(module, interpreter),
|
121
123
|
runAsync: module.runAsync.bind(module, interpreter),
|
124
|
+
runEvent: module.runEvent.bind(module, interpreter),
|
122
125
|
};
|
123
126
|
|
124
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,15 +15,16 @@ const runAsync = (interpreter, code) =>
|
|
10
15
|
interpreter.runPythonAsync(clean(code));
|
11
16
|
exports.runAsync = runAsync;
|
12
17
|
|
13
|
-
const
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
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
|
+
target.call(context, event);
|
20
26
|
};
|
21
|
-
exports.
|
27
|
+
exports.runEvent = runEvent;
|
22
28
|
|
23
29
|
const writeFile = ({ FS }, path, buffer) =>
|
24
30
|
writeFileUtil(FS, path, buffer);
|
@@ -1,6 +1,12 @@
|
|
1
1
|
'use strict';
|
2
2
|
const { fetchPaths, stdio } = require("./_utils.js");
|
3
|
-
const {
|
3
|
+
const {
|
4
|
+
registerJSModule,
|
5
|
+
run,
|
6
|
+
runAsync,
|
7
|
+
runEvent,
|
8
|
+
writeFile
|
9
|
+
} = require("./_python.js");
|
4
10
|
|
5
11
|
const type = "micropython";
|
6
12
|
|
@@ -17,14 +23,10 @@ module.exports = {
|
|
17
23
|
if (config.fetch) await fetchPaths(this, interpreter, config.fetch);
|
18
24
|
return interpreter;
|
19
25
|
},
|
20
|
-
|
21
|
-
deleteGlobal,
|
26
|
+
registerJSModule,
|
22
27
|
run,
|
23
|
-
|
24
|
-
|
25
|
-
async runAsync(...args) {
|
26
|
-
return this.run(...args);
|
27
|
-
},
|
28
|
+
runAsync,
|
29
|
+
runEvent,
|
28
30
|
writeFile,
|
29
31
|
};
|
30
32
|
/* c8 ignore stop */
|
@@ -1,10 +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
|
-
deleteGlobal,
|
7
|
+
runEvent,
|
8
8
|
writeFile
|
9
9
|
} = require("./_python.js");
|
10
10
|
|
@@ -31,10 +31,10 @@ module.exports = {
|
|
31
31
|
}
|
32
32
|
return interpreter;
|
33
33
|
},
|
34
|
-
|
35
|
-
deleteGlobal,
|
34
|
+
registerJSModule,
|
36
35
|
run,
|
37
36
|
runAsync,
|
37
|
+
runEvent,
|
38
38
|
writeFile,
|
39
39
|
};
|
40
40
|
/* c8 ignore stop */
|
@@ -1,7 +1,9 @@
|
|
1
1
|
'use strict';
|
2
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,18 +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
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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}]`);
|
36
|
+
}
|
37
|
+
this.run(interpreter, code.join(";"));
|
36
38
|
},
|
37
39
|
run: (interpreter, code) => interpreter.eval(clean(code)),
|
38
40
|
runAsync: (interpreter, code) => interpreter.evalAsync(clean(code)),
|
41
|
+
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
|
+
method.call(code, interpreter.wrap(event));
|
56
|
+
}
|
57
|
+
},
|
39
58
|
writeFile: () => {
|
40
59
|
throw new Error(`writeFile is not supported in ${type}`);
|
41
60
|
},
|
@@ -1,8 +1,13 @@
|
|
1
1
|
'use strict';
|
2
2
|
const { clean, fetchPaths, stdio, writeFileShim } = require("./_utils.js");
|
3
3
|
|
4
|
+
const { entries } = require("../utils.js");
|
5
|
+
|
4
6
|
const type = "wasmoon";
|
5
7
|
|
8
|
+
// MISSING:
|
9
|
+
// * I've no idea how to import packages
|
10
|
+
|
6
11
|
// REQUIRES INTEGRATION TEST
|
7
12
|
/* c8 ignore start */
|
8
13
|
module.exports = {
|
@@ -19,14 +24,21 @@ module.exports = {
|
|
19
24
|
if (config.fetch) await fetchPaths(this, interpreter, config.fetch);
|
20
25
|
return interpreter;
|
21
26
|
},
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
deleteGlobal(interpreter, name) {
|
26
|
-
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);
|
27
30
|
},
|
28
31
|
run: (interpreter, code) => interpreter.doStringSync(clean(code)),
|
29
32
|
runAsync: (interpreter, code) => interpreter.doString(clean(code)),
|
33
|
+
runEvent: (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
|
+
target.call(context, event);
|
41
|
+
},
|
30
42
|
writeFile: (
|
31
43
|
{
|
32
44
|
cmodule: {
|
package/cjs/listeners.js
CHANGED
@@ -42,12 +42,7 @@ const listener = async (event) => {
|
|
42
42
|
el.getAttribute(`${name}-env`) || name,
|
43
43
|
);
|
44
44
|
const handler = registry.get(name);
|
45
|
-
|
46
|
-
handler.setGlobal(interpreter, "event", event);
|
47
|
-
handler.run(interpreter, value);
|
48
|
-
} finally {
|
49
|
-
handler.deleteGlobal(interpreter, "event");
|
50
|
-
}
|
45
|
+
handler.runEvent(interpreter, value, event);
|
51
46
|
}
|
52
47
|
};
|
53
48
|
exports.listener = listener;
|
package/cjs/script-handler.js
CHANGED
@@ -61,11 +61,10 @@ const execute = async (script, source, XWorker, isAsync) => {
|
|
61
61
|
configurable: true,
|
62
62
|
get: () => script,
|
63
63
|
});
|
64
|
-
module.
|
64
|
+
module.registerJSModule(interpreter, "xworker", { XWorker });
|
65
65
|
return module[isAsync ? "runAsync" : "run"](interpreter, content);
|
66
66
|
} finally {
|
67
67
|
delete document.currentScript;
|
68
|
-
module.deleteGlobal(interpreter, "XWorker");
|
69
68
|
}
|
70
69
|
};
|
71
70
|
|
package/cjs/utils.js
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
'use strict';
|
2
2
|
const { isArray } = Array;
|
3
3
|
|
4
|
-
const { assign, create, defineProperties, defineProperty } = Object;
|
4
|
+
const { assign, create, defineProperties, defineProperty, entries } = Object;
|
5
5
|
|
6
6
|
const { all, resolve } = new Proxy(Promise, {
|
7
7
|
get: ($, name) => $[name].bind($),
|
@@ -14,6 +14,7 @@ exports.assign = assign;
|
|
14
14
|
exports.create = create;
|
15
15
|
exports.defineProperties = defineProperties;
|
16
16
|
exports.defineProperty = defineProperty;
|
17
|
+
exports.entries = entries;
|
17
18
|
exports.all = all;
|
18
19
|
exports.resolve = resolve;
|
19
20
|
exports.absoluteURL = absoluteURL;
|
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:y,SharedArrayBuffer:h,Uint16Array:g}=globalThis,{BYTES_PER_ELEMENT:m}=w,{BYTES_PER_ELEMENT:b}=g,{isArray:v}=Array,{notify:P,wait:E,waitAsync:S}=Atomics,{fromCharCode:j}=String,A=(e,t)=>e?(S||d)(t,0):(E(t,0),{value:{then:e=>e()}}),M=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 y,{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=[];M.has(r.at(-1)||i)&&M.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=b*e;return a=new w(new h(r+r%m)),n([],o,a),A(c,a).value.then((()=>t(j(...new g(a.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new y;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 g(a.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}P(a,0)}}))}return!!t.set(n,s)}}))}return k.get(e)};_.transfer=(...e)=>(M.add(e),e);const $=\"object\",O=\"function\",W=\"number\",R=\"string\",T=\"undefined\",F=\"symbol\",{defineProperty:B,getOwnPropertyDescriptor:I,getPrototypeOf:G,isExtensible:L,ownKeys:U,preventExtensions:N,set:z,setPrototypeOf:D}=Reflect,J=G(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(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 q(e,fe.get(t))}));var ye=(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 J))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(B(e,t,r)),[Z]:(e,t)=>we(delete e[t]),[re]:e=>we(G(e)),[ee]:(e,t)=>we(e[t]),[te]:(e,t)=>{const r=I(e,t);return r?q($,C(r,we)):q(T,r)},[ne]:(e,t)=>we(t in e),[se]:e=>we(L(e)),[oe]:e=>q($,U(e).map(we)),[ae]:e=>we(N(e)),[ie]:(e,t,r)=>we(z(e,t,r)),[ce]:(e,t)=>we(D(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 ge=new Map,me=new Map,be=Symbol(),ve=e=>typeof e===O?e():e,Pe=e=>typeof e===$&&!!e&&be in e,Ee=\"isArray\",Se=Array[Ee],je=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++)););ge.set(t,e),me.set(e,t)}return q(e,ge.get(t))}if(!(t instanceof J))for(const e in t)t[e]=je(t[e]);return q(e,t)}));var Ae=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(le,je(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===O?Me.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,je(t),r.map(je)),[Q]:(e,t)=>c(Q,e,t.map(je)),[X]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===O&&(r.get=je(n)),typeof s===O&&(r.set=je(s)),typeof o===O&&(r.value=je(o)),c(X,e,je(t),r)},[Z]:(e,t)=>c(Z,e,je(t)),[re]:e=>c(re,e),[ee]:(e,t)=>t===be?e:c(ee,e,je(t)),[te]:(e,t)=>{const r=c(te,e,je(t));return r&&C(r,i)},[ne]:(e,t)=>t===be||c(ne,e,je(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,je(t),je(r)),[ce]:(e,t)=>c(ce,e,je(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);ge.delete(me.get(e)),me.delete(e)}}};const u=new Proxy([$,null],l),f=u.Array[Ee];return B(Array,Ee,{value:e=>Pe(e)?f(e):Se(e)}),{window:u,isWindowProxy:Pe,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 Me(){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?ye:Ae;_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}=Object,{all:Be,resolve:Ie}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ge=(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,Je=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}}},Ce=e=>{const t=e.split(\"/\");return t.pop(),t.join(\"/\")},qe=(e,t)=>{const r=[];for(const n of t.split(\"/\"))r.push(n),n&&e.mkdir(r.join(\"/\"))},Ke=(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(/^\\/+/,\"/\")},Ye=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,\"\"))).filter((e=>\"\"!==e&&\".\"!==e)).join(\"/\");return e[0].startsWith(\"/\")?`/${t}`:t},Ve=new WeakMap,He=(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:Ye([e,r]),path:Ye([t,r])})));const s=r||e.slice(1+e.lastIndexOf(\"/\"));return[{url:e,path:Ye([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Ge(t,Ve.get(e))))(r,n).then(Le).then((r=>e.writeFile(t,s,r)))))),Qe=(e,t)=>e.runPython(ze(t)),Xe=(e,t,r)=>{e.globals.set(t,r)},Ze=(e,t)=>{e.globals.delete(t)},et=({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 tt={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}=Je();r=r.replace(/\\.m?js$/,\".wasm\");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await He(this,a,t.fetch),a},setGlobal:Xe,deleteGlobal:Ze,run:Qe,async runAsync(...e){return this.run(...e)},writeFile:et};var rt={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}=Je(),a=r.slice(0,r.lastIndexOf(\"/\")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await He(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},setGlobal:Xe,deleteGlobal:Ze,run:Qe,runAsync:(e,t)=>e.runPythonAsync(ze(t)),writeFile:et};const nt=\"ruby-wasm-wasi\";var st={type:nt,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 He(this,o,t.fetch),o},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 ${nt}`)}};var ot={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}=Je(),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 He(this,a,r.fetch),a},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=Ke(e,t),qe(e,Ce(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const at=new Map,it=new Map,ct=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split(\"@\"),s=at.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=>{it.set(t,e);const a=e?.fetch;return a&&Ve.set(a,o),s(n,e,r)}))}}),lt=e=>{for(const t of[].concat(e.type))at.set(t,e)};for(const e of[tt,rt,st,ot])lt(e);const ut=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 ft,pt,dt;const wt=(e,t)=>{addEventListener(e,t||(async t=>{await ft,dt=t,pt(`xworker.on${e}(xworker.event);`,mt)}),!!t&&{once:!0})},{proxy:yt,window:ht,isWindowProxy:gt}=$e(self,f),mt={sync:yt,window:ht,isWindowProxy:gt,onerror(){},onmessage(){},onmessageerror(){},postMessage:postMessage.bind(self),get event(){const e=dt;if(!e)throw new Error(\"Unauthorized event access\");return dt=void 0,e}};wt(\"message\",(({data:{options:e,code:t,hooks:r}})=>{ft=(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(ut);else{try{r=JSON.parse(t)}catch(e){r=ut(t)}t=Ge(\"./config.txt\")}return Ie(r).then((r=>ct[e](r,t)))})(((e,t=\"\")=>`${e}@${t}`.replace(/@$/,\"\"))(n,s),o),c=Re(at.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.setGlobal(i,\"xworker\",mt),pt=c[l].bind(c,i),pt(t),i})(),wt(\"error\"),wt(\"message\"),wt(\"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:h,Uint16Array:y}=globalThis,{BYTES_PER_ELEMENT:m}=w,{BYTES_PER_ELEMENT:b}=y,{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 h(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 h(r+r%m)),n([],o,a),j(c,a).value.then((()=>t(P(...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 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 he=0;const ye=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(he++)););ye.set(t,e),me.set(e,t)}return G(e,ye.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);ye.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]];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)),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{this.run(e,`method(:${t})`).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:(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]];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 ht=(e,t)=>{addEventListener(e,t||(async t=>{await wt,gt(`xworker.on${e}`,t)}),!!t&&{once:!0})},{proxy:yt,window:mt,isWindowProxy:bt}=_e(self,f),vt={sync:yt,window:mt,isWindowProxy:bt,onerror(){},onmessage(){},onmessageerror(){},postMessage:postMessage.bind(self)};ht(\"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})(),ht(\"error\"),ht(\"message\"),ht(\"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:j}=Array,{notify:k,wait:$,waitAsync:A}=Atomics,{fromCharCode:P}=String,S=(e,t)=>e?(A||w)(t,0):($(t,0),{value:{then:e=>e()}}),M=new WeakSet,W=new WeakMap;let x=0;const O=(e,{parse:t,stringify:r}=JSON)=>{if(!W.has(e)){const n=(t,...r)=>e.postMessage({[h]:r},{transfer:t});W.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 y(new m(v)),i=[];M.has(r.at(-1)||i)&&M.delete(i=r.pop()),n(i,o,a,s,r);const c=e instanceof Worker;return S(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),S(c,a).value.then((()=>t(P(...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(j(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 W.get(e)};O.transfer=(...e)=>(M.add(e),e);const _="object",R="function",T="number",B="string",F="undefined",I="symbol",{defineProperty:G,getOwnPropertyDescriptor:L,getPrototypeOf:N,isExtensible:U,ownKeys:q,preventExtensions:z,set:D,setPrototypeOf:C}=Reflect,J=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 R:return e(r,t);case"boolean":case T:case B:case F:case"bigint":return H(r,t);case I:if(K.has(t))return H(r,K.get(t))}throw new Error(`Unable to handle this ${r} type`)},K=new Map(q(Symbol).filter((e=>typeof Symbol[e]===I)).map((e=>[Symbol[e],e]))),Q=e=>{for(const[t,r]of K)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;G(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 J))for(const e in t)t[e]=o(t[e]);return t;case R: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(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 I:return Q(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(G(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(_,q(e).map(ye)),[ce]:e=>ye(z(e)),[le]:(e,t,r)=>ye(D(e,t,r)),[ue]:(e,t)=>ye(C(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(),je=e=>typeof e===R?e():e,ke=e=>typeof e===_&&!!e&&Ee in e,$e="isArray",Ae=Array[$e],Pe=Y(((e,t)=>{if(Ee in t)return je(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 J))for(const e in t)t[e]=Pe(t[e]);return H(e,t)}));var Se=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(fe,Pe(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===R?Me.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 R:return typeof r===B?ve.get(r):a(e);case I:return Q(r)}return r},c=(e,t,...r)=>i(n(e,je(t),...r)),l={[V]:(e,t,r)=>c(V,e,Pe(t),r.map(Pe)),[Z]:(e,t)=>c(Z,e,t.map(Pe)),[ee]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===R&&(r.get=Pe(n)),typeof s===R&&(r.set=Pe(s)),typeof o===R&&(r.value=Pe(o)),c(ee,e,Pe(t),r)},[te]:(e,t)=>c(te,e,Pe(t)),[se]:e=>c(se,e),[re]:(e,t)=>t===Ee?e:c(re,e,Pe(t)),[ne]:(e,t)=>{const r=c(ne,e,Pe(t));return r&&X(r,i)},[oe]:(e,t)=>t===Ee||c(oe,e,Pe(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,Pe(t),Pe(r)),[ue]:(e,t)=>c(ue,e,Pe(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 G(Array,$e,{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 Me(){return this}const We=h+"M",xe=h+"T",Oe=new WeakMap,_e=(e,...t)=>{const r=O(e,...t);if(!Oe.has(r)){const t=e instanceof Worker?ge:Se;Oe.set(r,t(r,We,xe))}return Oe.get(r)};_e.transfer=O.transfer;const{isArray:Re}=Array,{assign:Te,create:Be,defineProperties:Fe,defineProperty:Ie}=Object,{all:Ge,resolve:Le}=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 Je=(...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:y,SharedArrayBuffer:h,Uint16Array:g}=globalThis,{BYTES_PER_ELEMENT:m}=w,{BYTES_PER_ELEMENT:b}=g,{isArray:v}=Array,{notify:P,wait:E,waitAsync:S}=Atomics,{fromCharCode:j}=String,A=(e,t)=>e?(S||d)(t,0):(E(t,0),{value:{then:e=>e()}}),M=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 y,{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=[];M.has(r.at(-1)||i)&&M.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=b*e;return a=new w(new h(r+r%m)),n([],o,a),A(c,a).value.then((()=>t(j(...new g(a.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new y;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 g(a.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}P(a,0)}}))}return!!t.set(n,s)}}))}return k.get(e)};_.transfer=(...e)=>(M.add(e),e);const $="object",O="function",W="number",R="string",T="undefined",F="symbol",{defineProperty:B,getOwnPropertyDescriptor:I,getPrototypeOf:G,isExtensible:L,ownKeys:U,preventExtensions:N,set:z,setPrototypeOf:D}=Reflect,J=G(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(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 q(e,fe.get(t))}));var ye=(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 J))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(B(e,t,r)),[Z]:(e,t)=>we(delete e[t]),[re]:e=>we(G(e)),[ee]:(e,t)=>we(e[t]),[te]:(e,t)=>{const r=I(e,t);return r?q($,C(r,we)):q(T,r)},[ne]:(e,t)=>we(t in e),[se]:e=>we(L(e)),[oe]:e=>q($,U(e).map(we)),[ae]:e=>we(N(e)),[ie]:(e,t,r)=>we(z(e,t,r)),[ce]:(e,t)=>we(D(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 ge=new Map,me=new Map,be=Symbol(),ve=e=>typeof e===O?e():e,Pe=e=>typeof e===$&&!!e&&be in e,Ee="isArray",Se=Array[Ee],je=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++)););ge.set(t,e),me.set(e,t)}return q(e,ge.get(t))}if(!(t instanceof J))for(const e in t)t[e]=je(t[e]);return q(e,t)}));var Ae=(e,t,r)=>{const{[t]:n}=e,s=new Map,o=new FinalizationRegistry((e=>{s.delete(e),n(le,je(e))})),a=e=>{const[t,r]=e;if(!s.has(r)){const n=t===O?Me.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,je(t),r.map(je)),[Q]:(e,t)=>c(Q,e,t.map(je)),[X]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===O&&(r.get=je(n)),typeof s===O&&(r.set=je(s)),typeof o===O&&(r.value=je(o)),c(X,e,je(t),r)},[Z]:(e,t)=>c(Z,e,je(t)),[re]:e=>c(re,e),[ee]:(e,t)=>t===be?e:c(ee,e,je(t)),[te]:(e,t)=>{const r=c(te,e,je(t));return r&&C(r,i)},[ne]:(e,t)=>t===be||c(ne,e,je(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,je(t),je(r)),[ce]:(e,t)=>c(ce,e,je(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);ge.delete(me.get(e)),me.delete(e)}}};const u=new Proxy([$,null],l),f=u.Array[Ee];return B(Array,Ee,{value:e=>Pe(e)?f(e):Se(e)}),{window:u,isWindowProxy:Pe,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 Me(){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?ye:Ae;_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}=Object,{all:Be,resolve:Ie}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),Ge=(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,Je=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}}},Ce=e=>{const t=e.split("/");return t.pop(),t.join("/")},qe=(e,t)=>{const r=[];for(const n of t.split("/"))r.push(n),n&&e.mkdir(r.join("/"))},Ke=(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(/^\\/+/,"/")},Ye=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},Ve=new WeakMap,He=(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:Ye([e,r]),path:Ye([t,r])})));const s=r||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:Ye([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Ge(t,Ve.get(e))))(r,n).then(Le).then((r=>e.writeFile(t,s,r)))))),Qe=(e,t)=>e.runPython(ze(t)),Xe=(e,t,r)=>{e.globals.set(t,r)},Ze=(e,t)=>{e.globals.delete(t)},et=({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 tt={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}=Je();r=r.replace(/\\.m?js$/,".wasm");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await He(this,a,t.fetch),a},setGlobal:Xe,deleteGlobal:Ze,run:Qe,async runAsync(...e){return this.run(...e)},writeFile:et};var rt={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}=Je(),a=r.slice(0,r.lastIndexOf("/")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await He(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},setGlobal:Xe,deleteGlobal:Ze,run:Qe,runAsync:(e,t)=>e.runPythonAsync(ze(t)),writeFile:et};const nt="ruby-wasm-wasi";var st={type:nt,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 He(this,o,t.fetch),o},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 ${nt}`)}};var ot={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}=Je(),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 He(this,a,r.fetch),a},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=Ke(e,t),qe(e,Ce(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const at=new Map,it=new Map,ct=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split("@"),s=at.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=>{it.set(t,e);const a=e?.fetch;return a&&Ve.set(a,o),s(n,e,r)}))}}),lt=e=>{for(const t of[].concat(e.type))at.set(t,e)};for(const e of[tt,rt,st,ot])lt(e);const ut=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 ft,pt,dt;const wt=(e,t)=>{addEventListener(e,t||(async t=>{await ft,dt=t,pt(`xworker.on${e}(xworker.event);`,mt)}),!!t&&{once:!0})},{proxy:yt,window:ht,isWindowProxy:gt}=$e(self,f),mt={sync:yt,window:ht,isWindowProxy:gt,onerror(){},onmessage(){},onmessageerror(){},postMessage:postMessage.bind(self),get event(){const e=dt;if(!e)throw new Error("Unauthorized event access");return dt=void 0,e}};wt("message",(({data:{options:e,code:t,hooks:r}})=>{ft=(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(ut);else{try{r=JSON.parse(t)}catch(e){r=ut(t)}t=Ge("./config.txt")}return Ie(r).then((r=>ct[e](r,t)))})(((e,t="")=>`${e}@${t}`.replace(/@$/,""))(n,s),o),c=Re(at.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.setGlobal(i,"xworker",mt),pt=c[l].bind(c,i),pt(t),i})(),wt("error"),wt("message"),wt("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:_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 Xe=e=>e.replace(/^[^\r\n]+$/,(e=>e.trim())),He=new WeakMap,Ye=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 He.set(t,r),t}}},Ke=e=>{const t=e.split("/");return t.pop(),t.join("/")},Qe=(e,t)=>{const r=[];for(const n of t.split("/"))r.push(n),n&&e.mkdir(r.join("/"))},Ve=(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(/^\/+/,"/")},Ze=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},et=new WeakMap,tt=(e,t,r)=>Ge((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:Ze([e,r]),path:Ze([t,r])})));const s=r||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:Ze([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(Ne(t,et.get(e))))(r,n).then(Ue).then((r=>e.writeFile(t,s,r)))))),rt=(e,t)=>e.runPython(Xe(t)),nt=(e,t,r)=>{e.globals.set(t,r)},st=(e,t)=>{e.globals.delete(t)},ot=({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 at={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}=Ye();r=r.replace(/\.m?js$/,".wasm");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await tt(this,a,t.fetch),a},setGlobal:nt,deleteGlobal:st,run:rt,async runAsync(...e){return this.run(...e)},writeFile:ot};var it={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}=Ye(),a=r.slice(0,r.lastIndexOf("/")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await tt(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},setGlobal:nt,deleteGlobal:st,run:rt,runAsync:(e,t)=>e.runPythonAsync(Xe(t)),writeFile:ot};const ct="ruby-wasm-wasi";var lt={type:ct,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 tt(this,o,t.fetch),o},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(Xe(t)),runAsync:(e,t)=>e.evalAsync(Xe(t)),writeFile:()=>{throw new Error(`writeFile is not supported in ${ct}`)}};var ut={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}=Ye(),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 tt(this,a,r.fetch),a},setGlobal(e,t,r){e.global.set(t,r)},deleteGlobal(e,t){e.global.set(t,void 0)},run:(e,t)=>e.doStringSync(Xe(t)),runAsync:(e,t)=>e.doString(Xe(t)),writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(t=Ve(e,t),Qe(e,Ke(t)),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const ft=new Map,pt=new Map,dt=[],ht=[],wt=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split("@"),s=ft.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=>{pt.set(t,e);const a=e?.fetch;return a&&et.set(a,o),s(n,e,r)}))}}),yt=e=>{for(const t of[].concat(e.type))ft.set(t,e),dt.push(`script[type="${t}"]`),ht.push(`${t}-`)};for(const e of[at,it,lt,ut])yt(e);const gt=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(gt);else{try{r=JSON.parse(t)}catch(e){r=gt(t)}t=Ne("./config.txt")}return Le(r).then((r=>wt[e](r,t)))},bt=(e,t="")=>`${e}@${t}`.replace(/@$/,""),vt=(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)},Et=new WeakMap,jt={get(){let e=Et.get(this);return e||(e=document.createElement(`${this.type}-script`),Et.set(this,e),St(this)),e},set(e){"string"==typeof e?Et.set(this,vt(this,e)):(Et.set(this,e),St(this))}},kt=new WeakMap,$t=new Map,At=(e,t)=>{const r=e?.value;return r?t+r:""},Pt=(e,t,r,n,s)=>{if(!$t.has(t)){const o={interpreter:mt(r,s),queue:Le(),XWorker:Je(e,n)};$t.set(t,o),$t.has(e)||$t.set(e,o)}return $t.get(t)},St=async e=>{if(kt.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=bt(i,c),u=At(s,"");let f=At(r,"|");const p=At(n,"")||`${l}${f}`;f=f.slice(1),f&&(f=Ne(f));const d=Pt(i,p,l,c,f);kt.set(Ie(e,"target",jt),d),u&&Et.set(e,vt(e,u));const h=a?fetch(a).then(ze):e.textContent;d.queue=d.queue.then((()=>(async(e,t,r,n)=>{const s=ft.get(e.type);s.experimental&&console.warn(`The ${e.type} interpreter is experimental`);const[o,a]=await Ge([kt.get(e).interpreter,t]);try{return Ie(document,"currentScript",{configurable:!0,get:()=>e}),s.setGlobal(o,"XWorker",r),s[n?"runAsync":"run"](o,a)}finally{delete document.currentScript,s.deleteGlobal(o,"XWorker")}})(e,h,d.XWorker,!!t)))}};Ie(globalThis,"pyscript",{value:{env:new Proxy(Be(null),{get:(e,t)=>Mt(t)})}});const Mt=async e=>{if($t.has(e)){const{interpreter:t,queue:r}=$t.get(e);return(await Ge([t,r]))[0]}const t=$t.size?`Available interpreters are: ${[...$t.keys()].map((e=>`"${e}"`)).join(", ")}.`:"There are no interpreters in this page.";throw new Error(`The interpreter "${e}" was not found. ${t}`)},Wt=async e=>{const{type:r,currentTarget:n}=e;for(let{name:s,value:o,ownerElement:a}of t(`./@*[${ht.map((e=>`name()="${e}${r}"`)).join(" or ")}]`,n)){s=s.slice(0,-(r.length+1));const t=await Mt(a.getAttribute(`${s}-env`)||s),n=ft.get(s);try{n.setGlobal(t,"event",e),n.run(t,o)}finally{n.deleteGlobal(t,"event")}}},xt=e=>{for(let{name:r,ownerElement:n}of t(`.//@*[${ht.map((e=>`starts-with(name(),"${e}")`)).join(" or ")}]`,e))r=r.slice(r.lastIndexOf("-")+1),"env"!==r&&n.addEventListener(r,Wt)},Ot=[],_t=new Map,Rt=new Map,Tt=e=>{for(const t of Ot)if(e.matches(t)){const r=_t.get(t),{resolve:n}=Rt.get(r),{options:s,known:o}=Bt.get(r);if(!o.has(e)){o.add(e);const{interpreter:t,version:a,config:i,env:c,onInterpreterReady:l}=s,u=bt(t,a),f=c||`${u}${i?`|${i}`:""}`,{interpreter:p,XWorker:d}=Pt(t,f,u,a,i);p.then((o=>{const a=Be(ft.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.setGlobal(o,"XWorker",w);const y={type:r,interpreter:o,XWorker:w,io:He.get(o),config:structuredClone(pt.get(u)),run:a.run.bind(a,o),runAsync:a.runAsync.bind(a,o)};n(y),l?.(y,e)}))}}},Bt=new Map,Ft=(t,r)=>{if(ft.has(t)||Bt.has(t))throw new Error(`<script type="${t}"> already registered`);if(!ft.has(r?.interpreter))throw new Error("Unspecified interpreter");ft.set(t,ft.get(r?.interpreter)),It(t);const n=[`script[type="${t}"]`,`${t}-script`];for(const e of n)_t.set(e,t);Ot.push(...n),ht.push(`${t}-`),Bt.set(t,{options:Te({env:t},r),known:new WeakSet}),xt(document),e(n.join(",")).forEach(Tt)},It=e=>(Rt.has(e)||Rt.set(e,Promise.withResolvers()),Rt.get(e).promise),Gt=Je(),Lt=dt.join(","),Nt=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(xt(t),t.matches(Lt))St(t);else{if(e(Lt,t).forEach(St),!Ot.length)continue;Tt(t),e(Ot.join(","),t).forEach(Tt)}}else{const e=s.lastIndexOf("-")+1;if(e){const t=s.slice(0,e);for(const r of ht)if(t===r){const t=s.slice(e);if("env"!==t){const e=n.hasAttribute(s)?"add":"remove";n[`${e}EventListener`](t,Wt)}break}}}})),Ut=e=>(Nt.observe(e,{childList:!0,subtree:!0,attributes:!0}),e),{attachShadow:qt}=Element.prototype;Te(Element.prototype,{attachShadow(e){return Ut(qt.call(this,e))}}),xt(Ut(document)),e(Lt,document).forEach(St);export{Gt as XWorker,Ft as define,It as whenDefined};
|
2
|
+
/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:g,Map:y,SharedArrayBuffer:m,Uint16Array:b}=globalThis,{BYTES_PER_ELEMENT:v}=g,{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 y,{has:(e,t)=>"string"==typeof t&&!t.startsWith("_"),get:(r,s)=>"then"===s?null:(...r)=>{const o=W++;let a=new g(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 g(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 y;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 ge=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 ye=(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),ge(this),e.map(ge))},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)=>ge(e.apply(t,r)),[Z]:(e,t)=>ge(new e(...t)),[ee]:(e,t,r)=>ge(J(e,t,r)),[te]:(e,t)=>ge(delete e[t]),[se]:e=>ge(N(e)),[re]:(e,t)=>ge(e[t]),[ne]:(e,t)=>{const r=L(e,t);return r?H(_,X(r,ge)):H(F,r)},[oe]:(e,t)=>ge(t in e),[ae]:e=>ge(U(e)),[ie]:e=>H(_,z(e).map(ge)),[ce]:e=>ge(D(e)),[le]:(e,t,r)=>ge(C(e,t,r)),[ue]:(e,t)=>ge(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?ye: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:h,Uint16Array:y}=globalThis,{BYTES_PER_ELEMENT:m}=w,{BYTES_PER_ELEMENT:b}=y,{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 h(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 h(r+r%m)),n([],o,a),j(c,a).value.then((()=>t(P(...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 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 he=0;const ye=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(he++)););ye.set(t,e),me.set(e,t)}return G(e,ye.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);ye.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]];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)),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{this.run(e,`method(:${t})`).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:(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]];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 ht=(e,t)=>{addEventListener(e,t||(async t=>{await wt,gt(`xworker.on${e}`,t)}),!!t&&{once:!0})},{proxy:yt,window:mt,isWindowProxy:bt}=_e(self,f),vt={sync:yt,window:mt,isWindowProxy:bt,onerror(){},onmessage(){},onmessageerror(){},postMessage:postMessage.bind(self)};ht("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})(),ht("error"),ht("message"),ht("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]];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)),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{this.run(e,`method(:${t})`).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:(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]];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,gt=[],yt=[],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),gt.push(`script[type="${t}"]`),yt.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(`./@*[${yt.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(`.//@*[${yt.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,g,e);const a=s.call(this,t,o);return n&&n.call(this,g,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,g,e);const a=await s.call(this,t,o);return n&&await n.call(this,g,e),a}}a.registerJSModule(o,"xworker",{XWorker:w});const g={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(g),l?.(g,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),yt.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=gt.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 yt)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/dev.cjs
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
let queue = Promise.resolve();
|
2
|
+
|
3
|
+
const { exec } = require("node:child_process");
|
4
|
+
|
5
|
+
const build = (fileName) => {
|
6
|
+
if (fileName) console.log(fileName, "changed");
|
7
|
+
else console.log("building without optimizations");
|
8
|
+
queue = queue.then(
|
9
|
+
() =>
|
10
|
+
new Promise((resolve, reject) => {
|
11
|
+
exec(
|
12
|
+
"npm run rollup:xworker && npm run rollup:core && npm run rollup:pyscript",
|
13
|
+
{ cwd: __dirname, env: { ...process.env, NO_MIN: true } },
|
14
|
+
(error) => {
|
15
|
+
if (error) reject(error);
|
16
|
+
else
|
17
|
+
resolve(
|
18
|
+
console.log(fileName || "", "build completed"),
|
19
|
+
);
|
20
|
+
},
|
21
|
+
);
|
22
|
+
}),
|
23
|
+
);
|
24
|
+
};
|
25
|
+
|
26
|
+
const options = {
|
27
|
+
ignored: /\/(?:__template|interpreters|xworker)\.[mc]?js$/,
|
28
|
+
persistent: true,
|
29
|
+
};
|
30
|
+
|
31
|
+
require("chokidar").watch("./esm", options).on("change", build);
|
32
|
+
|
33
|
+
build();
|