@pyscript/core 0.1.6 → 0.1.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 +41 -0
- package/dist/core.js +2 -0
- package/dist/error-f33e3b18.js +1 -0
- package/package.json +9 -13
- package/src/core.js +69 -66
- package/src/plugins/error.js +40 -0
- package/src/plugins.js +4 -0
- package/src/stdlib/pyscript.js +8 -0
- package/src/stdlib.js +33 -0
- package/src/sync.js +5 -0
- package/src/utils.js +6 -0
- package/types/core.d.ts +1 -0
- package/types/plugins/error.d.ts +1 -0
- package/types/plugins.d.ts +4 -0
- package/types/stdlib/pyscript.d.ts +8 -0
- package/types/stdlib.d.ts +2 -0
- package/types/sync.d.ts +4 -0
- package/types/utils.d.ts +1 -0
- package/core.js +0 -2
- package/src/display.py +0 -140
- package/types/coincident/window.d.ts +0 -10
- package/types/polyscript/esm/custom.d.ts +0 -54
- package/types/polyscript/esm/fetch-utils.d.ts +0 -3
- package/types/polyscript/esm/index.d.ts +0 -3
- package/types/polyscript/esm/interpreter/_python.d.ts +0 -4
- package/types/polyscript/esm/interpreter/_utils.d.ts +0 -15
- package/types/polyscript/esm/interpreter/micropython.d.ts +0 -25
- package/types/polyscript/esm/interpreter/pyodide.d.ts +0 -25
- package/types/polyscript/esm/interpreter/ruby-wasm-wasi.d.ts +0 -16
- package/types/polyscript/esm/interpreter/wasmoon.d.ts +0 -22
- package/types/polyscript/esm/interpreters.d.ts +0 -9
- package/types/polyscript/esm/listeners.d.ts +0 -3
- package/types/polyscript/esm/loader.d.ts +0 -2
- package/types/polyscript/esm/script-handler.d.ts +0 -4
- package/types/polyscript/esm/toml.d.ts +0 -1
- package/types/polyscript/esm/utils.d.ts +0 -29
- package/types/polyscript/esm/worker/class.d.ts +0 -19
- package/types/polyscript/esm/worker/hooks.d.ts +0 -6
- package/types/polyscript/esm/worker/xworker.d.ts +0 -2
- package/types/pyscript/pyscript.core/src/core.d.ts +0 -25
- package/types/pyscript/pyscript.core/src/exceptions.d.ts +0 -27
- package/types/pyscript/pyscript.core/src/fetch.d.ts +0 -10
- /package/{core.css → dist/core.css} +0 -0
package/core.js
DELETED
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
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 e=(e,t=document)=>t.querySelector(e),t=(e,t=document)=>[...t.querySelectorAll(e)],r=(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},n="object"==typeof self?self:globalThis,s=e=>((e,t)=>{const r=(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 r(i,o);case 1:{const e=r([],o);for(const t of i)e.push(s(t));return e}case 2:{const e=r({},o);for(const[t,r]of i)e[s(t)]=s(r);return e}case 3:return r(new Date(i),o);case 4:{const{source:e,flags:t}=i;return r(new RegExp(e,t),o)}case 5:{const e=r(new Map,o);for(const[t,r]of i)e.set(s(t),s(r));return e}case 6:{const e=r(new Set,o);for(const t of i)e.add(s(t));return e}case 7:{const{name:e,message:t}=i;return r(new n[e](t),o)}case 8:return r(BigInt(i),o);case"BigInt":return r(Object(BigInt(i)),o)}return r(new n[a](i),o)};return s})(new Map,e)(0),o="",{toString:a}={},{keys:i}=Object,c=e=>{const t=typeof e;if("object"!==t||!e)return[0,t];const r=a.call(e).slice(8,-1);switch(r){case"Array":return[1,o];case"Object":return[2,o];case"Date":return[3,o];case"RegExp":return[4,o];case"Map":return[5,o];case"Set":return[6,o]}return r.includes("Array")?[1,r]:r.includes("Error")?[7,r]:[2,r]},l=([e,t])=>0===e&&("function"===t||"symbol"===t),u=(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[a,u]=c(n);switch(a){case 0:{let t=n;switch(u){case"bigint":a=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([a,t],n)}case 1:{if(u)return s([u,[...n]],n);const e=[],t=s([a,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=[],p=s([a,r],n);for(const t of i(n))!e&&l(c(n[t]))||r.push([o(t),o(n[t])]);return p}case 3:return s([a,n.toISOString()],n);case 4:{const{source:e,flags:t}=n;return s([a,{source:e,flags:t}],n)}case 5:{const t=[],r=s([a,t],n);for(const[r,s]of n)(e||!l(c(r))&&!l(c(s)))&&t.push([o(r),o(s)]);return r}case 6:{const t=[],r=s([a,t],n);for(const r of n)!e&&l(c(r))||t.push(o(r));return r}}const{message:p}=n;return s([a,{name:u,message:p}],n)};return o})(!(t||r),!!t,new Map,n)(e),n},{parse:p,stringify:f}=JSON,d={json:!0,lossy:!0};var h=Object.freeze({__proto__:null,parse:e=>s(p(e)),stringify:e=>f(u(e,d))});const y="891249cd-eb53-4bc8-ae48-b0a5a277d24a",m="M"+y,g="T"+y;var w=e=>({value:new Promise((t=>{let r=new Worker("data:application/javascript,onmessage%3D(%7Bdata%3Ab%7D)%3D%3E(Atomics.wait(b%2C0)%2CpostMessage(0))");r.onmessage=t,r.postMessage(e)}))})
|
|
2
|
-
/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:b,Map:v,SharedArrayBuffer:_,Uint16Array:A}=globalThis,{BYTES_PER_ELEMENT:E}=b,{BYTES_PER_ELEMENT:k}=A,{isArray:S}=Array,{notify:j,wait:P,waitAsync:x}=Atomics,{fromCharCode:R}=String,$=(e,t)=>e?(x||w)(t,0):(P(t,0),{value:{then:e=>e()}}),M=new WeakSet,W=new WeakMap;let T=0;const O=(e,{parse:t,stringify:r,transform:n}=JSON)=>{if(!W.has(e)){const s=(t,...r)=>e.postMessage({[y]:r},{transfer:t});let o=!1;W.set(e,new Proxy(new v,{has:(e,t)=>"string"==typeof t&&!t.startsWith("_"),get:(r,a)=>"then"===a?null:(...r)=>{const i=T++;let c=new b(new _(E)),l=[];M.has(r.at(-1)||l)&&M.delete(l=r.pop()),s(l,i,c,a,n?r.map(n):r);const u=e!==globalThis;let p=0;return o&&u&&(p=setTimeout(console.warn,1e3,`💀🔒 - Possible deadlock if proxy.${a}(...args) is awaited`)),$(u,c).value.then((()=>{clearTimeout(p);const e=c[0];if(!e)return;const r=k*e;return c=new b(new _(r+r%E)),s([],i,c),$(u,c).value.then((()=>t(R(...new A(c.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new v;e.addEventListener("message",(async e=>{const s=e.data?.[y];if(S(s)){e.stopImmediatePropagation();const[a,i,...c]=s;if(c.length){const[e,s]=c;if(!t.has(e))throw new Error(`Unsupported action: ${e}`);o=!0;try{const o=await t.get(e)(...s);if(void 0!==o){const e=r(o);n.set(a,e),i[0]=e.length}}finally{o=!1}}else{const e=n.get(a);n.delete(a);for(let t=new A(i.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}j(i,0)}}))}return!!t.set(n,s)}}))}return W.get(e)};O.transfer=(...e)=>(M.add(e),e);const F="object",B="function",I="number",L="string",N="undefined",J="symbol",{defineProperty:C,getOwnPropertyDescriptor:H,getPrototypeOf:D,isExtensible:U,ownKeys:z,preventExtensions:q,set:Q,setPrototypeOf:Y}=Reflect,{assign:X,create:G}=Object,K=D(Int8Array),V="isArray",Z=(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},ee=(e,t)=>[e,t],te=e=>t=>{const r=typeof t;switch(r){case F:if(null==t)return ee("null",t);if(t===globalThis)return ee(F,null);case B:return e(r,t);case"boolean":case I:case L:case N:case"bigint":return ee(r,t);case J:if(re.has(t))return ee(r,re.get(t))}throw new Error(`Unable to handle this ${r} type`)},re=new Map(z(Symbol).filter((e=>typeof Symbol[e]===J)).map((e=>[Symbol[e],e]))),ne=e=>{for(const[t,r]of re)if(r===e)return t};function se(){return this}const oe="apply",ae="construct",ie="defineProperty",ce="deleteProperty",le="get",ue="getOwnPropertyDescriptor",pe="getPrototypeOf",fe="has",de="isExtensible",he="ownKeys",ye="preventExtensions",me="set",ge="setPrototypeOf",we="delete";var be=((e,t)=>{const r=t&&new WeakMap;if(t){const{addEventListener:e}=EventTarget.prototype;C(EventTarget.prototype,"addEventListener",{value(t,n,...s){return s.at(0)?.invoke&&(r.has(this)||r.set(this,new Map),r.get(this).set(t,[].concat(s[0].invoke)),delete s[0].invoke),e.call(this,t,n,...s)}})}const n=t&&(e=>{const{currentTarget:t,target:n,type:s}=e;for(const o of r.get(t||n)?.get(s)||[])e[o]()});return(r,s,o,...a)=>{let i=0;const c=new Map,l=new Map,{[o]:u}=r,p=a.length?X(G(globalThis),...a):globalThis,f=te(((e,t)=>{if(!c.has(t)){let e;for(;l.has(e=i++););c.set(t,e),l.set(e,t)}return ee(e,c.get(t))})),d=new FinalizationRegistry((e=>{u(we,ee(L,e))})),h=([e,r])=>{switch(e){case F:if(null==r)return p;if(typeof r===I)return l.get(r);if(!(r instanceof K))for(const e in r)r[e]=h(r[e]);return r;case B:if(typeof r===L){if(!l.has(r)){const e=function(...e){return t&&e.at(0)instanceof Event&&n(...e),u(oe,ee(B,r),f(this),e.map(f))},s=new WeakRef(e);l.set(r,s),d.register(e,r,s)}return l.get(r).deref()}return l.get(r);case J:return ne(r)}return r},y={[oe]:(e,t,r)=>f(e.apply(t,r)),[ae]:(e,t)=>f(new e(...t)),[ie]:(e,t,r)=>f(C(e,t,r)),[ce]:(e,t)=>f(delete e[t]),[pe]:e=>f(D(e)),[le]:(e,t)=>f(e[t]),[ue]:(e,t)=>{const r=H(e,t);return r?ee(F,Z(r,f)):ee(N,r)},[fe]:(e,t)=>f(t in e),[de]:e=>f(U(e)),[he]:e=>ee(F,z(e).map(f)),[ye]:e=>f(q(e)),[me]:(e,t,r)=>f(Q(e,t,r)),[ge]:(e,t)=>f(Y(e,t)),[we](e){c.delete(l.get(e)),l.delete(e)}};return r[s]=(e,t,...r)=>{switch(e){case oe:r[0]=h(r[0]),r[1]=r[1].map(h);break;case ae:r[0]=r[0].map(h);break;case ie:{const[e,t]=r;r[0]=h(e);const{get:n,set:s,value:o}=t;n&&(t.get=h(n)),s&&(t.set=h(s)),o&&(t.value=h(o));break}default:r=r.map(h)}return y[e](h(t),...r)},{proxy:r,[e.toLowerCase()]:p,[`is${e}Proxy`]:()=>!1}}})("Window",!0),ve=(e=>{let t=0;const r=new Map,n=new Map,s=Symbol(),o=e=>typeof e===B?e():e,a=e=>typeof e===F&&!!e&&s in e,i=Array[V],c=te(((e,a)=>{if(s in a)return o(a[s]);if(e===B){if(!n.has(a)){let e;for(;n.has(e=String(t++)););r.set(a,e),n.set(e,a)}return ee(e,r.get(a))}if(!(a instanceof K))for(const e in a)a[e]=c(a[e]);return ee(e,a)}));return(t,l,u)=>{const{[l]:p}=t,f=new Map,d=new FinalizationRegistry((e=>{f.delete(e),p(we,c(e))})),h=e=>{const[t,r]=e;if(!f.has(r)){const n=t===B?se.bind(e):e,s=new Proxy(n,g),o=new WeakRef(s);f.set(r,o),d.register(s,r,o)}return f.get(r).deref()},y=e=>{const[t,r]=e;switch(t){case F:return null===r?globalThis:typeof r===I?h(e):r;case B:return typeof r===L?n.get(r):h(e);case J:return ne(r)}return r},m=(e,t,...r)=>y(p(e,o(t),...r)),g={[oe]:(e,t,r)=>m(oe,e,c(t),r.map(c)),[ae]:(e,t)=>m(ae,e,t.map(c)),[ie]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===B&&(r.get=c(n)),typeof s===B&&(r.set=c(s)),typeof o===B&&(r.value=c(o)),m(ie,e,c(t),r)},[ce]:(e,t)=>m(ce,e,c(t)),[pe]:e=>m(pe,e),[le]:(e,t)=>t===s?e:m(le,e,c(t)),[ue]:(e,t)=>{const r=m(ue,e,c(t));return r&&Z(r,y)},[fe]:(e,t)=>t===s||m(fe,e,c(t)),[de]:e=>m(de,e),[he]:e=>m(he,e).map(y),[ye]:e=>m(ye,e),[me]:(e,t,r)=>m(me,e,c(t),c(r)),[ge]:(e,t)=>m(ge,e,c(t))};t[u]=(e,t,s,o)=>{switch(e){case oe:return y(t).apply(y(s),o.map(y));case we:{const e=y(t);r.delete(n.get(e)),n.delete(e)}}};const w=new Proxy([F,null],g),b=w.Array[V];return C(Array,V,{value:e=>a(e)?b(e):i(e)}),{[e.toLowerCase()]:w,[`is${e}Proxy`]:a,proxy:t}}})("Window"),_e="function"==typeof Worker?Worker:class{};const Ae=new WeakMap,Ee=(e,...t)=>{const r=O(e,...t);if(!Ae.has(r)){const t=e instanceof _e?be:ve;Ae.set(r,t(r,m,g))}return Ae.get(r)};Ee.transfer=O.transfer;const{isArray:ke}=Array,{assign:Se,create:je,defineProperties:Pe,defineProperty:xe,entries:Re}=Object,{all:$e,resolve:Me}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),We=(e,t=location.href)=>new URL(e,t).href,Te=e=>e.arrayBuffer(),Oe=e=>e.json(),Fe=e=>e.text(),Be=[["beforeRun","codeBeforeRunWorker"],["beforeRunAsync","codeBeforeRunWorkerAsync"],["afterRun","codeAfterRunWorker"],["afterRunAsync","codeAfterRunWorkerAsync"]];class Ie{constructor(e,t){this.interpreter=e,this.onWorkerReady=t.onWorkerReady;for(const[e,r]of Be)this[e]=t[r]?.()}get stringHooks(){const e={};for(const[t]of Be)this[t]&&(e[t]=this[t]);return e}}var Le=(...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))});const p="891249cd-eb53-4bc8-ae48-b0a5a277d24a",d="M"+p,y="T"+p;var g=e=>({value:new Promise((t=>{let r=new Worker("data:application/javascript,onmessage%3D(%7Bdata%3Ab%7D)%3D%3E(Atomics.wait(b%2C0)%2CpostMessage(0))");r.onmessage=t,r.postMessage(e)}))})\n/*! (c) Andrea Giammarchi - ISC */;const{Int32Array:w,Map:h,SharedArrayBuffer:m,Uint16Array:b}=globalThis,{BYTES_PER_ELEMENT:v}=w,{BYTES_PER_ELEMENT:S}=b,{isArray:P}=Array,{notify:A,wait:E,waitAsync:M}=Atomics,{fromCharCode:j}=String,$=(e,t)=>e?(M||g)(t,0):(E(t,0),{value:{then:e=>e()}}),_=new WeakSet,k=new WeakMap;let x=0;const T=(e,{parse:t,stringify:r,transform:n}=JSON)=>{if(!k.has(e)){const s=(t,...r)=>e.postMessage({[p]:r},{transfer:t});let o=!1;k.set(e,new Proxy(new h,{has:(e,t)=>"string"==typeof t&&!t.startsWith("_"),get:(r,a)=>"then"===a?null:(...r)=>{const i=x++;let c=new w(new m(v)),l=[];_.has(r.at(-1)||l)&&_.delete(l=r.pop()),s(l,i,c,a,n?r.map(n):r);const u=e!==globalThis;let f=0;return o&&u&&(f=setTimeout(console.warn,1e3,`💀🔒 - Possible deadlock if proxy.${a}(...args) is awaited`)),$(u,c).value.then((()=>{clearTimeout(f);const e=c[0];if(!e)return;const r=S*e;return c=new w(new m(r+r%v)),s([],i,c),$(u,c).value.then((()=>t(j(...new b(c.buffer).slice(0,e)))))}))},set(t,n,s){if(!t.size){const n=new h;e.addEventListener("message",(async e=>{const s=e.data?.[p];if(P(s)){e.stopImmediatePropagation();const[a,i,...c]=s;if(c.length){const[e,s]=c;if(!t.has(e))throw new Error(`Unsupported action: ${e}`);o=!0;try{const o=await t.get(e)(...s);if(void 0!==o){const e=r(o);n.set(a,e),i[0]=e.length}}finally{o=!1}}else{const e=n.get(a);n.delete(a);for(let t=new b(i.buffer),r=0;r<e.length;r++)t[r]=e.charCodeAt(r)}A(i,0)}}))}return!!t.set(n,s)}}))}return k.get(e)};T.transfer=(...e)=>(_.add(e),e);const O="object",F="function",W="number",R="string",B="undefined",J="symbol",{defineProperty:L,getOwnPropertyDescriptor:I,getPrototypeOf:H,isExtensible:C,ownKeys:D,preventExtensions:N,set:U,setPrototypeOf:z}=Reflect,{assign:q,create:K}=Object,Y=H(Int8Array),G="isArray",V=(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],X=e=>t=>{const r=typeof t;switch(r){case O:if(null==t)return Q("null",t);if(t===globalThis)return Q(O,null);case F:return e(r,t);case"boolean":case W:case R:case B:case"bigint":return Q(r,t);case J:if(Z.has(t))return Q(r,Z.get(t))}throw new Error(`Unable to handle this ${r} type`)},Z=new Map(D(Symbol).filter((e=>typeof Symbol[e]===J)).map((e=>[Symbol[e],e]))),ee=e=>{for(const[t,r]of Z)if(r===e)return t};function te(){return this}const re="apply",ne="construct",se="defineProperty",oe="deleteProperty",ae="get",ie="getOwnPropertyDescriptor",ce="getPrototypeOf",le="has",ue="isExtensible",fe="ownKeys",pe="preventExtensions",de="set",ye="setPrototypeOf",ge="delete";var we=((e,t)=>{const r=t&&new WeakMap;if(t){const{addEventListener:e}=EventTarget.prototype;L(EventTarget.prototype,"addEventListener",{value(t,n,...s){return s.at(0)?.invoke&&(r.has(this)||r.set(this,new Map),r.get(this).set(t,[].concat(s[0].invoke)),delete s[0].invoke),e.call(this,t,n,...s)}})}const n=t&&(e=>{const{currentTarget:t,target:n,type:s}=e;for(const o of r.get(t||n)?.get(s)||[])e[o]()});return(r,s,o,...a)=>{let i=0;const c=new Map,l=new Map,{[o]:u}=r,f=a.length?q(K(globalThis),...a):globalThis,p=X(((e,t)=>{if(!c.has(t)){let e;for(;l.has(e=i++););c.set(t,e),l.set(e,t)}return Q(e,c.get(t))})),d=new FinalizationRegistry((e=>{u(ge,Q(R,e))})),y=([e,r])=>{switch(e){case O:if(null==r)return f;if(typeof r===W)return l.get(r);if(!(r instanceof Y))for(const e in r)r[e]=y(r[e]);return r;case F:if(typeof r===R){if(!l.has(r)){const e=function(...e){return t&&e.at(0)instanceof Event&&n(...e),u(re,Q(F,r),p(this),e.map(p))},s=new WeakRef(e);l.set(r,s),d.register(e,r,s)}return l.get(r).deref()}return l.get(r);case J:return ee(r)}return r},g={[re]:(e,t,r)=>p(e.apply(t,r)),[ne]:(e,t)=>p(new e(...t)),[se]:(e,t,r)=>p(L(e,t,r)),[oe]:(e,t)=>p(delete e[t]),[ce]:e=>p(H(e)),[ae]:(e,t)=>p(e[t]),[ie]:(e,t)=>{const r=I(e,t);return r?Q(O,V(r,p)):Q(B,r)},[le]:(e,t)=>p(t in e),[ue]:e=>p(C(e)),[fe]:e=>Q(O,D(e).map(p)),[pe]:e=>p(N(e)),[de]:(e,t,r)=>p(U(e,t,r)),[ye]:(e,t)=>p(z(e,t)),[ge](e){c.delete(l.get(e)),l.delete(e)}};return r[s]=(e,t,...r)=>{switch(e){case re:r[0]=y(r[0]),r[1]=r[1].map(y);break;case ne:r[0]=r[0].map(y);break;case se:{const[e,t]=r;r[0]=y(e);const{get:n,set:s,value:o}=t;n&&(t.get=y(n)),s&&(t.set=y(s)),o&&(t.value=y(o));break}default:r=r.map(y)}return g[e](y(t),...r)},{proxy:r,[e.toLowerCase()]:f,[`is${e}Proxy`]:()=>!1}}})("Window",!0),he=(e=>{let t=0;const r=new Map,n=new Map,s=Symbol(),o=e=>typeof e===F?e():e,a=e=>typeof e===O&&!!e&&s in e,i=Array[G],c=X(((e,a)=>{if(s in a)return o(a[s]);if(e===F){if(!n.has(a)){let e;for(;n.has(e=String(t++)););r.set(a,e),n.set(e,a)}return Q(e,r.get(a))}if(!(a instanceof Y))for(const e in a)a[e]=c(a[e]);return Q(e,a)}));return(t,l,u)=>{const{[l]:f}=t,p=new Map,d=new FinalizationRegistry((e=>{p.delete(e),f(ge,c(e))})),y=e=>{const[t,r]=e;if(!p.has(r)){const n=t===F?te.bind(e):e,s=new Proxy(n,h),o=new WeakRef(s);p.set(r,o),d.register(s,r,o)}return p.get(r).deref()},g=e=>{const[t,r]=e;switch(t){case O:return null===r?globalThis:typeof r===W?y(e):r;case F:return typeof r===R?n.get(r):y(e);case J:return ee(r)}return r},w=(e,t,...r)=>g(f(e,o(t),...r)),h={[re]:(e,t,r)=>w(re,e,c(t),r.map(c)),[ne]:(e,t)=>w(ne,e,t.map(c)),[se]:(e,t,r)=>{const{get:n,set:s,value:o}=r;return typeof n===F&&(r.get=c(n)),typeof s===F&&(r.set=c(s)),typeof o===F&&(r.value=c(o)),w(se,e,c(t),r)},[oe]:(e,t)=>w(oe,e,c(t)),[ce]:e=>w(ce,e),[ae]:(e,t)=>t===s?e:w(ae,e,c(t)),[ie]:(e,t)=>{const r=w(ie,e,c(t));return r&&V(r,g)},[le]:(e,t)=>t===s||w(le,e,c(t)),[ue]:e=>w(ue,e),[fe]:e=>w(fe,e).map(g),[pe]:e=>w(pe,e),[de]:(e,t,r)=>w(de,e,c(t),c(r)),[ye]:(e,t)=>w(ye,e,c(t))};t[u]=(e,t,s,o)=>{switch(e){case re:return g(t).apply(g(s),o.map(g));case ge:{const e=g(t);r.delete(n.get(e)),n.delete(e)}}};const m=new Proxy([O,null],h),b=m.Array[G];return L(Array,G,{value:e=>a(e)?b(e):i(e)}),{[e.toLowerCase()]:m,[`is${e}Proxy`]:a,proxy:t}}})("Window"),me="function"==typeof Worker?Worker:class{};const be=new WeakMap,ve=(e,...t)=>{const r=T(e,...t);if(!be.has(r)){const t=e instanceof me?we:he;be.set(r,t(r,d,y))}return be.get(r)};ve.transfer=T.transfer;const{isArray:Se}=Array,{assign:Pe,create:Ae,defineProperties:Ee,defineProperty:Me,entries:je}=Object,{all:$e,resolve:_e}=new Proxy(Promise,{get:(e,t)=>e[t].bind(e)}),ke=(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 xe=e=>e.arrayBuffer(),Te=e=>e.json(),Oe=e=>e.text(),Fe=e=>e.replace(/^[^\\r\\n]+$/,(e=>e.trim())),We=new WeakMap,Re=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 We.set(t,r),t}}},Be=({FS:e,PATH:t,PATH_FS:r},n,s)=>{const o=r.resolve(n);return e.mkdirTree(t.dirname(o)),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},Je=e=>{const t=e.split("/");return t.pop(),t.join("/")},Le=(e,t)=>{const r=[];for(const n of t.split("/"))"."!==n&&(r.push(n),n&&e.mkdir(r.join("/")))},Ie=(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(/^\\/+/,"/")},He=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},Ce=new WeakMap,De=(e,t,r)=>$e((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(Se(n))return n.map((r=>({url:He([e,r]),path:He([t,r])})));const s=r||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:He([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(ke(t,Ce.get(e))))(r,n).then(xe).then((r=>e.writeFile(t,s,r)))))),Ne=(e,t,r)=>{e.registerJsModule(t,r)},Ue=(e,t,...r)=>{try{return e.runPython(Fe(t),...r)}catch(t){We.get(e).stderr(t)}},ze=async(e,t,...r)=>{try{return await e.runPythonAsync(Fe(t),...r)}catch(t){We.get(e).stderr(t)}},qe=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]];try{await a.call(o,r)}catch(t){We.get(e).stderr(t)}};var Ke={type:"micropython",module:(e="1.20.0-297")=>`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}=Re();r=r.replace(/\\.m?js$/,".wasm");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await De(this,a,t.fetch),a},registerJSModule:Ne,run:Ue,runAsync:ze,runEvent:qe,transform:(e,t)=>t,writeFile:({FS:e,_module:{PATH:t,PATH_FS:r}},n,s)=>Be({FS:e,PATH:t,PATH_FS:r},n,s)};const Ye={dict_converter:Object.fromEntries};var Ge={type:"pyodide",module:(e="0.23.4")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,r){const{stderr:n,stdout:s,get:o}=Re(),a=r.slice(0,r.lastIndexOf("/")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await De(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:Ne,run:Ue,runAsync:ze,runEvent:qe,transform:(e,t)=>t instanceof e.ffi.PyProxy?t.toJs(Ye):t,writeFile:({FS:e,PATH:t,_module:{PATH_FS:r}},n,s)=>Be({FS:e,PATH:t,PATH_FS:r},n,s)};const Ve="ruby-wasm-wasi",Qe=Ve.replace(/\\W+/g,"_");var Xe={type:Ve,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 De(this,o,t.fetch),o},registerJSModule(e,t,r){const n=[\'require "js"\'];for(const[e,t]of je(r)){const r=`__module_${Qe}_${e}`;globalThis[r]=t,n.push(`$${e}=JS.global[:${r}]`)}this.run(e,n.join(";"))},run:(e,t,...r)=>e.eval(Fe(t),...r),runAsync:(e,t,...r)=>e.evalAsync(Fe(t),...r),async runEvent(e,t,r){if(/^xworker\\.(on\\w+)$/.test(t)){const{$1:t}=RegExp,n=`__module_${Qe}_event`;globalThis[n]=r,this.run(e,`require "js";$xworker.call("${t}",JS.global[:${n}])`),delete globalThis[n]}else{const n=this.run(e,`method(:${t})`);await n.call(t,e.wrap(r))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${Ve}`)}};var Ze={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}=Re(),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 De(this,a,r.fetch),a},registerJSModule:(e,t,r)=>{for(const[t,n]of je(r))e.global.set(t,n)},run:(e,t,...r)=>{try{return e.doStringSync(Fe(t),...r)}catch(t){We.get(e).stderr(t)}},runAsync:async(e,t,...r)=>{try{return await e.doString(Fe(t),...r)}catch(t){We.get(e).stderr(t)}},runEvent:async(e,t,r)=>{const[n,...s]=t.split(".");let o,a=e.global.get(n);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,r)}catch(t){We.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(Le(e,Je(t)),t=Ie(e,t),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const et=new Map,tt=new Map,rt=new Proxy(new Map,{get(e,t){if(!e.has(t)){const[r,...n]=t.split("@"),s=et.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=>{tt.set(t,e);const a=e?.fetch;return a&&Ce.set(a,o),s(n,e,r)}))}}),nt=e=>{for(const t of[].concat(e.type))et.set(t,e)};for(const e of[Ke,Ge,Xe,Ze])nt(e);const st=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 ot,at,it;const ct=(e,t)=>{addEventListener(e,t||(async t=>{try{await ot,at(`xworker.on${e}`,t)}catch(e){postMessage(e)}}),!!t&&{once:!0})},{parse:lt,stringify:ut}=f,{proxy:ft,window:pt,isWindowProxy:dt}=ve(self,{parse:lt,stringify:ut,transform:e=>it?it(e):e}),yt={sync:ft,window:pt,isWindowProxy:dt,onmessage:console.info,onerror:console.error,onmessageerror:console.warn,postMessage:postMessage.bind(self)};ct("message",(({data:{options:e,config:t,code:r,hooks:n}})=>{ot=(async()=>{try{const{type:s,version:o,config:a,async:i}=e,c=await((e,t,r={})=>{if(t)if(t.endsWith(".json"))r=fetch(t).then(Te),t=ke(t);else if(t.endsWith(".toml"))r=fetch(t).then(Oe).then(st),t=ke(t);else if(!t.endsWith(".txt")){try{r=JSON.parse(t)}catch(e){r=st(t)}t=ke("./config.txt")}return _e(r).then((r=>rt[e](r,t)))})(((e,t="")=>`${e}@${t}`.replace(/@$/,""))(s,o),t,a),l=Ae(et.get(s)),u="run"+(i?"Async":"");if(n){const{beforeRun:e,beforeRunAsync:t,afterRun:r,afterRunAsync:s}=n,o=r||s,a=e||t;if(o){const e=l[u].bind(l);l[u]=(t,r,...n)=>e(t,`${r}\\n${o}`,...n)}if(a){const e=l[u].bind(l);l[u]=(t,r,...n)=>e(t,`${a}\\n${r}`,...n)}}return l.registerJSModule(c,"polyscript",{xworker:yt}),at=l.runEvent.bind(l,c),it=l.transform.bind(l,c),await l[u](c,r),c}catch(e){postMessage(e)}})(),ct("error"),ct("message"),ct("messageerror")}));\n'],{type:"application/javascript"})),{type:"module"}),{postMessage:s}=n,o=this instanceof Ie;if(e.length){const[t,n]=e;(r=Se({},r||{type:t,version:n})).type||(r.type=t)}const{config:a}=r,i=We(a&&"string"==typeof a?a:"./config.txt"),c=fetch(t).then(Fe).then((e=>{const t=o?this.stringHooks:void 0;s.call(n,{options:r,config:i,code:e,hooks:t})}));return Pe(n,{postMessage:{value:(e,...t)=>c.then((()=>s.call(n,e,...t)))},sync:{value:Ee(n,h).proxy},onerror:{writable:!0,configurable:!0,value:console.error}}),o&&this.onWorkerReady?.(this.interpreter,n),n.addEventListener("message",(e=>{const{data:t}=e;t instanceof Error&&(e.stopImmediatePropagation(),n.onerror(Object.create(e,{type:{value:"error"},error:{value:t}})))})),n};const Ne=e=>e.replace(/^[^\r\n]+$/,(e=>e.trim())),Je=new WeakMap,Ce=e=>{const t=e||console,r={stderr:(t.stderr||console.error).bind(t),stdout:(t.stdout||console.log).bind(t)};return{stderr:(...e)=>r.stderr(...e),stdout:(...e)=>r.stdout(...e),async get(e){const t=await e;return Je.set(t,r),t}}},He=({FS:e,PATH:t,PATH_FS:r},n,s)=>{const o=r.resolve(n);return e.mkdirTree(t.dirname(o)),e.writeFile(o,new Uint8Array(s),{canOwn:!0})},De=e=>{const t=e.split("/");return t.pop(),t.join("/")},Ue=(e,t)=>{const r=[];for(const n of t.split("/"))"."!==n&&(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(/^\/+/,"/")},qe=e=>{const t=e.map((e=>e.trim().replace(/(^[/]*|[/]*$)/g,""))).filter((e=>""!==e&&"."!==e)).join("/");return e[0].startsWith("/")?`/${t}`:t},Qe=new WeakMap,Ye=(e,t,r)=>$e((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(ke(n))return n.map((r=>({url:qe([e,r]),path:qe([t,r])})));const s=r||e.slice(1+e.lastIndexOf("/"));return[{url:e,path:qe([t,s])}]}))})(r).map((({url:n,path:s})=>((e,t)=>fetch(We(t,Qe.get(e))))(r,n).then(Te).then((r=>e.writeFile(t,s,r)))))),Xe=(e,t,r)=>{e.registerJsModule(t,r)},Ge=(e,t,...r)=>{try{return e.runPython(Ne(t),...r)}catch(t){Je.get(e).stderr(t)}},Ke=async(e,t,...r)=>{try{return await e.runPythonAsync(Ne(t),...r)}catch(t){Je.get(e).stderr(t)}},Ve=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]];try{await a.call(o,r)}catch(t){Je.get(e).stderr(t)}};var Ze={type:"micropython",module:(e="1.20.0-297")=>`https://cdn.jsdelivr.net/npm/@micropython/micropython-webassembly-pyscript@${e}/micropython.mjs`,async engine({loadMicroPython:e},t,r){const{stderr:n,stdout:s,get:o}=Ce();r=r.replace(/\.m?js$/,".wasm");const a=await o(e({stderr:n,stdout:s,url:r}));return t.fetch&&await Ye(this,a,t.fetch),a},registerJSModule:Xe,run:Ge,runAsync:Ke,runEvent:Ve,transform:(e,t)=>t,writeFile:({FS:e,_module:{PATH:t,PATH_FS:r}},n,s)=>He({FS:e,PATH:t,PATH_FS:r},n,s)};const et={dict_converter:Object.fromEntries};var tt={type:"pyodide",module:(e="0.23.4")=>`https://cdn.jsdelivr.net/pyodide/v${e}/full/pyodide.mjs`,async engine({loadPyodide:e},t,r){const{stderr:n,stdout:s,get:o}=Ce(),a=r.slice(0,r.lastIndexOf("/")),i=await o(e({stderr:n,stdout:s,indexURL:a}));if(t.fetch&&await Ye(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:Ge,runAsync:Ke,runEvent:Ve,transform:(e,t)=>t instanceof e.ffi.PyProxy?t.toJs(et):t,writeFile:({FS:e,PATH:t,_module:{PATH_FS:r}},n,s)=>He({FS:e,PATH:t,PATH_FS:r},n,s)};const rt="ruby-wasm-wasi",nt=rt.replace(/\W+/g,"_");var st={type:rt,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 Ye(this,o,t.fetch),o},registerJSModule(e,t,r){const n=['require "js"'];for(const[e,t]of Re(r)){const r=`__module_${nt}_${e}`;globalThis[r]=t,n.push(`$${e}=JS.global[:${r}]`)}this.run(e,n.join(";"))},run:(e,t,...r)=>e.eval(Ne(t),...r),runAsync:(e,t,...r)=>e.evalAsync(Ne(t),...r),async runEvent(e,t,r){if(/^xworker\.(on\w+)$/.test(t)){const{$1:t}=RegExp,n=`__module_${nt}_event`;globalThis[n]=r,this.run(e,`require "js";$xworker.call("${t}",JS.global[:${n}])`),delete globalThis[n]}else{const n=this.run(e,`method(:${t})`);await n.call(t,e.wrap(r))}},transform:(e,t)=>t,writeFile:()=>{throw new Error(`writeFile is not supported in ${rt}`)}};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}=Ce(),a=await o((new e).createEngine());return a.global.getTable(t.Base,(e=>{a.global.setField(e,"print",s),a.global.setField(e,"printErr",n)})),r.fetch&&await Ye(this,a,r.fetch),a},registerJSModule:(e,t,r)=>{for(const[t,n]of Re(r))e.global.set(t,n)},run:(e,t,...r)=>{try{return e.doStringSync(Ne(t),...r)}catch(t){Je.get(e).stderr(t)}},runAsync:async(e,t,...r)=>{try{return await e.doString(Ne(t),...r)}catch(t){Je.get(e).stderr(t)}},runEvent:async(e,t,r)=>{const[n,...s]=t.split(".");let o,a=e.global.get(n);for(const e of s)[o,a]=[a,a[e]];try{await a.call(o,r)}catch(t){Je.get(e).stderr(t)}},transform:(e,t)=>t,writeFile:({cmodule:{module:{FS:e}}},t,r)=>((e,t,r)=>(Ue(e,De(t)),t=ze(e,t),e.writeFile(t,new Uint8Array(r),{canOwn:!0})))(e,t,r)};const at=new Map,it=new Map,ct=[],lt=[],ut=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&&Qe.set(a,o),s(n,e,r)}))}}),pt=e=>{for(const t of[].concat(e.type))at.set(t,e),ct.push(`script[type="${t}"]`),lt.push(`${t}-`)};for(const e of[Ze,tt,st,ot])pt(e);const ft=async e=>(await import("https://cdn.jsdelivr.net/npm/basic-toml@0.3.1/es.js")).parse(e),dt=(e,t,r={})=>{if(t)if(t.endsWith(".json"))r=fetch(t).then(Oe),t=We(t);else if(t.endsWith(".toml"))r=fetch(t).then(Fe).then(ft),t=We(t);else if(!t.endsWith(".txt")){try{r=JSON.parse(t)}catch(e){r=ft(t)}t=We("./config.txt")}return Me(r).then((r=>ut[e](r,t)))},ht=(e,t="")=>`${e}@${t}`.replace(/@$/,""),yt=(t,r)=>{const n=(e=>{let t=e;for(;t.parentNode;)t=t.parentNode;return t})(t);return n.getElementById(r)||e(r,n)},mt=new WeakMap,gt={get(){let e=mt.get(this);return e||(e=document.createElement(`${this.type}-script`),mt.set(this,e),At(this)),e},set(e){"string"==typeof e?mt.set(this,yt(this,e)):(mt.set(this,e),At(this))}},wt=new WeakMap,bt=new Map,vt=(e,t)=>{const r=e?.value;return r?t+r:""},_t=(e,t,r,n,s,o=e)=>{if(!bt.has(t)){const a={interpreter:dt(r,s),queue:Me(),XWorker:Le(e,n)};bt.set(t,a),bt.has(e)||bt.set(e,a),bt.has(o)||bt.set(o,a)}return bt.get(t)},At=async e=>{if(wt.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,worker:a},src:i,type:c}=e,l=o?.value,u=ht(c,l);let p=vt(r,"|");const f=vt(n,"")||`${u}${p}`;p=p.slice(1);const d=a?.value;if(d){const r=new(Le(c,l))(d,{async:!!t,config:p});return void wt.set(xe(e,"xworker",{value:r}),{xworker:r})}const h=vt(s,""),y=_t(c,f,u,l,p);wt.set(xe(e,"target",gt),y),h&&mt.set(e,yt(e,h));const m=i?fetch(i).then(Fe):e.textContent;y.queue=y.queue.then((()=>(async(e,t,r,n)=>{const s=at.get(e.type);s.experimental&&console.warn(`The ${e.type} interpreter is experimental`);const[o,a]=await $e([wt.get(e).interpreter,t]);try{return xe(document,"currentScript",{configurable:!0,get:()=>e}),s.registerJSModule(o,"polyscript",{XWorker:r}),s[n?"runAsync":"run"](o,a)}finally{delete document.currentScript}})(e,m,y.XWorker,!!t)))}};new Proxy(je(null),{get:(e,t)=>Et(t)});const Et=async e=>{if(bt.has(e)){const{interpreter:t,queue:r}=bt.get(e);return(await $e([t,r]))[0]}const t=bt.size?`Available interpreters are: ${[...bt.keys()].map((e=>`"${e}"`)).join(", ")}.`:"There are no interpreters in this page.";throw new Error(`The interpreter "${e}" was not found. ${t}`)},kt=async e=>{const{type:t,currentTarget:n}=e;for(let{name:s,value:o,ownerElement:a}of r(`./@*[${lt.map((e=>`name()="${e}${t}"`)).join(" or ")}]`,n)){s=s.slice(0,-(t.length+1));const r=await Et(a.getAttribute(`${s}-env`)||s);at.get(s).runEvent(r,o,e)}},St=e=>{for(let{name:t,ownerElement:n}of r(`.//@*[${lt.map((e=>`starts-with(name(),"${e}")`)).join(" or ")}]`,e))t=t.slice(t.lastIndexOf("-")+1),"env"!==t&&n.addEventListener(t,kt)},jt=[],Pt=new Map,xt=new Map,Rt=e=>{for(const t of jt)if(e.matches(t)){const r=Pt.get(t),{resolve:n}=xt.get(r),{options:s,known:o}=$t.get(r);if(!o.has(e)){o.add(e);const{interpreter:t,config:a,version:i,env:c,onInterpreterReady:l}=s,u=e.attributes.worker?.value||"";if(u){const o=Wt.call(new Ie(null,s),u,{version:i,type:t,config:a||{},async:e.hasAttribute("async")});return xe(e,"xworker",{value:o}),void n({type:r,xworker:o})}const p=ht(t,i),f=c||`${p}${a?`|${a}`:""}`,{interpreter:d,XWorker:h}=_t(r,f,p,i,a,t);d.then((o=>{const a=je(at.get(t)),{onBeforeRun:i,onBeforeRunAsync:c,onAfterRun:u,onAfterRunAsync:f}=s,d=new Ie(o,s),y=function(...e){return h.apply(d,e)};for(const[t,[r,n]]of[["run",[i,u]]]){const s=a[t];a[t]=function(t,o,...a){r&&r.call(this,m,e);const i=s.call(this,t,o,...a);return n&&n.call(this,m,e),i}}for(const[t,[r,n]]of[["runAsync",[c,f]]]){const s=a[t];a[t]=async function(t,o,...a){r&&await r.call(this,m,e);const i=await s.call(this,t,o,...a);return n&&await n.call(this,m,e),i}}a.registerJSModule(o,"polyscript",{XWorker:y});const m={type:r,interpreter:o,XWorker:y,io:Je.get(o),config:structuredClone(it.get(p)),run:a.run.bind(a,o),runAsync:a.runAsync.bind(a,o),runEvent:a.runEvent.bind(a,o)};n(m),l?.(m,e)}))}}},$t=new Map,Mt=e=>(xt.has(e)||xt.set(e,Promise.withResolvers()),xt.get(e).promise),Wt=Le(),Tt=ct.join(","),Ot=new MutationObserver((e=>{for(const{type:r,target:n,attributeName:s,addedNodes:o}of e)if("attributes"!==r){for(const e of o)if(1===e.nodeType)if(St(e),e.matches(Tt))At(e);else{if(t(Tt,e).forEach(At),!jt.length)continue;Rt(e),t(jt.join(","),e).forEach(Rt)}}else{const e=s.lastIndexOf("-")+1;if(e){const t=s.slice(0,e);for(const r of lt)if(t===r){const t=s.slice(e);if("env"!==t){const e=n.hasAttribute(s)?"add":"remove";n[`${e}EventListener`](t,kt)}break}}}})),Ft=e=>(Ot.observe(e,{childList:!0,subtree:!0,attributes:!0}),e),{attachShadow:Bt}=Element.prototype;Se(Element.prototype,{attachShadow(e){return Ft(Bt.call(this,e))}}),St(Ft(document)),t(Tt,document).forEach(At);var It='# ⚠️ WARNING - both `document` and `window` are added at runtime\n\nimport base64\nimport html\nimport io\nimport re\n\n\n_MIME_METHODS = {\n "__repr__": "text/plain",\n "_repr_html_": "text/html",\n "_repr_markdown_": "text/markdown",\n "_repr_svg_": "image/svg+xml",\n "_repr_png_": "image/png",\n "_repr_pdf_": "application/pdf",\n "_repr_jpeg_": "image/jpeg",\n "_repr_latex": "text/latex",\n "_repr_json_": "application/json",\n "_repr_javascript_": "application/javascript",\n "savefig": "image/png",\n}\n\n\ndef _render_image(mime, value, meta):\n # If the image value is using bytes we should convert it to base64\n # otherwise it will return raw bytes and the browser will not be able to\n # render it.\n if isinstance(value, bytes):\n value = base64.b64encode(value).decode("utf-8")\n\n # This is the pattern of base64 strings\n base64_pattern = re.compile(\n r"^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$"\n )\n # If value doesn\'t match the base64 pattern we should encode it to base64\n if len(value) > 0 and not base64_pattern.match(value):\n value = base64.b64encode(value.encode("utf-8")).decode("utf-8")\n\n data = f"data:{mime};charset=utf-8;base64,{value}"\n attrs = " ".join([\'{k}="{v}"\' for k, v in meta.items()])\n return f\'<img src="{data}" {attrs}></img>\'\n\n\ndef _identity(value, meta):\n return value\n\n\n_MIME_RENDERERS = {\n "text/plain": html.escape,\n "text/html": _identity,\n "image/png": lambda value, meta: _render_image("image/png", value, meta),\n "image/jpeg": lambda value, meta: _render_image("image/jpeg", value, meta),\n "image/svg+xml": _identity,\n "application/json": _identity,\n "application/javascript": lambda value, meta: f"<script>{value}<\\\\/script>",\n}\n\n\ndef _eval_formatter(obj, print_method):\n """\n Evaluates a formatter method.\n """\n if print_method == "__repr__":\n return repr(obj)\n elif hasattr(obj, print_method):\n if print_method == "savefig":\n buf = io.BytesIO()\n obj.savefig(buf, format="png")\n buf.seek(0)\n return base64.b64encode(buf.read()).decode("utf-8")\n return getattr(obj, print_method)()\n elif print_method == "_repr_mimebundle_":\n return {}, {}\n return None\n\n\ndef _format_mime(obj):\n """\n Formats object using _repr_x_ methods.\n """\n if isinstance(obj, str):\n return html.escape(obj), "text/plain"\n\n mimebundle = _eval_formatter(obj, "_repr_mimebundle_")\n if isinstance(mimebundle, tuple):\n format_dict, _ = mimebundle\n else:\n format_dict = mimebundle\n\n output, not_available = None, []\n for method, mime_type in reversed(_MIME_METHODS.items()):\n if mime_type in format_dict:\n output = format_dict[mime_type]\n else:\n output = _eval_formatter(obj, method)\n\n if output is None:\n continue\n elif mime_type not in _MIME_RENDERERS:\n not_available.append(mime_type)\n continue\n break\n if output is None:\n if not_available:\n window.console.warn(\n f"Rendered object requested unavailable MIME renderers: {not_available}"\n )\n output = repr(output)\n mime_type = "text/plain"\n elif isinstance(output, tuple):\n output, meta = output\n else:\n meta = {}\n return _MIME_RENDERERS[mime_type](output, meta), mime_type\n\n\ndef _write(element, value, append=False):\n html, mime_type = _format_mime(value)\n if html == "\\\\n":\n return\n\n if append:\n out_element = document.createElement("div")\n element.append(out_element)\n else:\n out_element = element.lastElementChild\n if out_element is None:\n out_element = element\n\n if mime_type in ("application/javascript", "text/html"):\n script_element = document.createRange().createContextualFragment(html)\n out_element.append(script_element)\n else:\n out_element.innerHTML = html\n\n\ndef display(*values, target=None, append=True):\n element = document.getElementById(target)\n for v in values:\n _write(element, v, append=append)\n';const Lt="PY0001",Nt="PY0401",Jt="PY0403",Ct="PY0404",Ht="PY0500",Dt="PY0503";class Ut extends Error{constructor(e,t="",r="text"){super(`(${e}): ${t}`),this.errorCode=e,this.messageType=r,this.name="UserError"}}class zt extends Ut{constructor(e,t){super(e,t),this.name="FetchError"}}async function qt(e,t){let r;try{r=await fetch(e,t)}catch(t){const r=t;let n;throw n=e.startsWith("http")?`Fetching from URL ${e} failed with error '${r.message}'. Are your filename and path correct?`:'Polyscript: Access to local files\n (using [[fetch]] configurations in <py-config>)\n is not available when directly opening a HTML file;\n you must use a webserver to serve the additional files.\n See <a style="text-decoration: underline;" href="https://github.com/pyscript/pyscript/issues/257#issuecomment-1119595062">this reference</a>\n on starting a simple webserver with Python.\n ',new zt(Lt,n)}if(!r.ok){const t=`Fetching from URL ${e} failed with error ${r.status} (${r.statusText}). Are your filename and path correct?`;switch(r.status){case 404:throw new zt(Ct,t);case 401:throw new zt(Nt,t);case 403:throw new zt(Jt,t);case 500:throw new zt(Ht,t);case 503:throw new zt(Dt,t);default:throw new zt(Lt,t)}}return r}const{defineProperty:Qt}=Object,Yt=e=>e.text();let Xt,Gt=0;const Kt=(e="py")=>`${e}-${Gt++}`;let Vt,Zt=e("py-config");Zt?Vt=Zt.getAttribute("src")||Zt.textContent:(Zt=e('script[type="py"]'),Vt=Zt?.getAttribute("config")),/^https?:\/\//.test(Vt)&&(Vt=await qt(Vt).then(Yt));const er=e=>"SCRIPT"===e.tagName,tr=e=>{Qt(document,"currentScript",{configurable:!0,get:()=>e})},rr=()=>{delete document.currentScript},nr=async(e,t)=>{if(e.hasAttribute("src"))try{return await qt(e.getAttribute("src")).then(Yt)}catch(e){t.stderr(e)}return e.textContent},sr=(e,t,r,n)=>{er(t)&&r(t);for(const r of or[n])r(e,t)},or={onBeforeRun:new Set,onBeforeRunAync:new Set,onAfterRun:new Set,onAfterRunAsync:new Set,onInterpreterReady:new Set,codeBeforeRunWorker:new Set,codeBeforeRunWorkerAsync:new Set,codeAfterRunWorker:new Set,codeAfterRunWorkerAsync:new Set},ar=["from pathlib import Path as _Path",`_Path("./pyscript.py").write_text(${JSON.stringify(["from polyscript import xworker as _xworker","window=_xworker.window","document=window.document","sync=_xworker.sync",It].join("\n"))})`,"del _Path"].join("\n"),ir={codeBeforeRunWorker:()=>[ar,...or.codeBeforeRunWorker].join("\n"),codeBeforeRunWorkerAsync:()=>[ar,...or.codeBeforeRunWorkerAsync].join("\n"),codeAfterRunWorker:()=>[...or.codeAfterRunWorker].join("\n"),codeAfterRunWorkerAsync:()=>[...or.codeAfterRunWorkerAsync].join("\n")};((e,r)=>{if(at.has(e)||$t.has(e))throw new Error(`<script type="${e}"> already registered`);if(!at.has(r?.interpreter))throw new Error("Unspecified interpreter");at.set(e,at.get(r?.interpreter)),Mt(e);const n=[`script[type="${e}"]`,`${e}-script`];for(const t of n)Pt.set(t,e);jt.push(...n),lt.push(`${e}-`),$t.set(e,{options:Se({env:e},r),known:new WeakSet}),St(document),t(n.join(",")).forEach(Rt)})("py",{config:Vt,env:"py-script",interpreter:"pyodide",...ir,onBeforeRun(e,t){Xt=t,sr(e,t,tr,"onBeforeRun")},onBeforeRunAync(e,t){Xt=t,sr(e,t,tr,"onBeforeRunAync")},onAfterRun(e,t){sr(e,t,rr,"onAfterRun")},onAfterRunAsync(e,t){sr(e,t,rr,"onAfterRunAsync")},async onInterpreterReady(e,t){(({XWorker:e,interpreter:t,io:r})=>{const n=t.runPython(["import js as window","document=window.document",It,"display"].join("\n"),{globals:t.runPython("{}")});t.registerJsModule("pyscript",{PyWorker:function(...t){const n=e(...t);return n.onerror=({error:e})=>r.stderr(e),n},document:document,window:window,get display(){const e=er(Xt)?Xt.target.id:Xt.id;return(...t)=>{const r=t.at(-1);let s={target:e,append:!1};"object"==typeof r&&r&&("target"in r||"append"in r)&&(s={...s,...t.pop()}),n.callKwargs(...t,s)}}})})(e);for(const r of or.onInterpreterReady)r(e,t);if(er(t)){const{attributes:{async:r,target:n}}=t,s=!!n?.value,o=s?yt(n.value):document.createElement("script-py");s||t.after(o),o.id||(o.id=Kt()),Qt(t,"target",{value:o}),e["run"+(r?"Async":"")](await nr(t,e.io))}else t._pyodide.resolve(e)}});class cr extends HTMLElement{constructor(){super().id||(this.id=Kt()),this._pyodide=Promise.withResolvers(),this.srcCode="",this.executed=!1}async connectedCallback(){if(!this.executed){this.executed=!0;const{io:e,run:t}=await this._pyodide.promise;this.srcCode=await nr(this,e),this.textContent="",t(this.srcCode),this.style.display="block"}}}function lr(e,t){return Wt.call(new Ie(null,ir),e,{...t,type:"pyodide"})}customElements.define("py-script",cr);export{lr as PyWorker,or as hooks};
|
package/src/display.py
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
# ⚠️ WARNING - both `document` and `window` are added at runtime
|
|
2
|
-
|
|
3
|
-
import base64
|
|
4
|
-
import html
|
|
5
|
-
import io
|
|
6
|
-
import re
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
_MIME_METHODS = {
|
|
10
|
-
"__repr__": "text/plain",
|
|
11
|
-
"_repr_html_": "text/html",
|
|
12
|
-
"_repr_markdown_": "text/markdown",
|
|
13
|
-
"_repr_svg_": "image/svg+xml",
|
|
14
|
-
"_repr_png_": "image/png",
|
|
15
|
-
"_repr_pdf_": "application/pdf",
|
|
16
|
-
"_repr_jpeg_": "image/jpeg",
|
|
17
|
-
"_repr_latex": "text/latex",
|
|
18
|
-
"_repr_json_": "application/json",
|
|
19
|
-
"_repr_javascript_": "application/javascript",
|
|
20
|
-
"savefig": "image/png",
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def _render_image(mime, value, meta):
|
|
25
|
-
# If the image value is using bytes we should convert it to base64
|
|
26
|
-
# otherwise it will return raw bytes and the browser will not be able to
|
|
27
|
-
# render it.
|
|
28
|
-
if isinstance(value, bytes):
|
|
29
|
-
value = base64.b64encode(value).decode("utf-8")
|
|
30
|
-
|
|
31
|
-
# This is the pattern of base64 strings
|
|
32
|
-
base64_pattern = re.compile(
|
|
33
|
-
r"^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)?$"
|
|
34
|
-
)
|
|
35
|
-
# If value doesn't match the base64 pattern we should encode it to base64
|
|
36
|
-
if len(value) > 0 and not base64_pattern.match(value):
|
|
37
|
-
value = base64.b64encode(value.encode("utf-8")).decode("utf-8")
|
|
38
|
-
|
|
39
|
-
data = f"data:{mime};charset=utf-8;base64,{value}"
|
|
40
|
-
attrs = " ".join(['{k}="{v}"' for k, v in meta.items()])
|
|
41
|
-
return f'<img src="{data}" {attrs}></img>'
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
def _identity(value, meta):
|
|
45
|
-
return value
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
_MIME_RENDERERS = {
|
|
49
|
-
"text/plain": html.escape,
|
|
50
|
-
"text/html": _identity,
|
|
51
|
-
"image/png": lambda value, meta: _render_image("image/png", value, meta),
|
|
52
|
-
"image/jpeg": lambda value, meta: _render_image("image/jpeg", value, meta),
|
|
53
|
-
"image/svg+xml": _identity,
|
|
54
|
-
"application/json": _identity,
|
|
55
|
-
"application/javascript": lambda value, meta: f"<script>{value}<\\/script>",
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
def _eval_formatter(obj, print_method):
|
|
60
|
-
"""
|
|
61
|
-
Evaluates a formatter method.
|
|
62
|
-
"""
|
|
63
|
-
if print_method == "__repr__":
|
|
64
|
-
return repr(obj)
|
|
65
|
-
elif hasattr(obj, print_method):
|
|
66
|
-
if print_method == "savefig":
|
|
67
|
-
buf = io.BytesIO()
|
|
68
|
-
obj.savefig(buf, format="png")
|
|
69
|
-
buf.seek(0)
|
|
70
|
-
return base64.b64encode(buf.read()).decode("utf-8")
|
|
71
|
-
return getattr(obj, print_method)()
|
|
72
|
-
elif print_method == "_repr_mimebundle_":
|
|
73
|
-
return {}, {}
|
|
74
|
-
return None
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
def _format_mime(obj):
|
|
78
|
-
"""
|
|
79
|
-
Formats object using _repr_x_ methods.
|
|
80
|
-
"""
|
|
81
|
-
if isinstance(obj, str):
|
|
82
|
-
return html.escape(obj), "text/plain"
|
|
83
|
-
|
|
84
|
-
mimebundle = _eval_formatter(obj, "_repr_mimebundle_")
|
|
85
|
-
if isinstance(mimebundle, tuple):
|
|
86
|
-
format_dict, _ = mimebundle
|
|
87
|
-
else:
|
|
88
|
-
format_dict = mimebundle
|
|
89
|
-
|
|
90
|
-
output, not_available = None, []
|
|
91
|
-
for method, mime_type in reversed(_MIME_METHODS.items()):
|
|
92
|
-
if mime_type in format_dict:
|
|
93
|
-
output = format_dict[mime_type]
|
|
94
|
-
else:
|
|
95
|
-
output = _eval_formatter(obj, method)
|
|
96
|
-
|
|
97
|
-
if output is None:
|
|
98
|
-
continue
|
|
99
|
-
elif mime_type not in _MIME_RENDERERS:
|
|
100
|
-
not_available.append(mime_type)
|
|
101
|
-
continue
|
|
102
|
-
break
|
|
103
|
-
if output is None:
|
|
104
|
-
if not_available:
|
|
105
|
-
window.console.warn(
|
|
106
|
-
f"Rendered object requested unavailable MIME renderers: {not_available}"
|
|
107
|
-
)
|
|
108
|
-
output = repr(output)
|
|
109
|
-
mime_type = "text/plain"
|
|
110
|
-
elif isinstance(output, tuple):
|
|
111
|
-
output, meta = output
|
|
112
|
-
else:
|
|
113
|
-
meta = {}
|
|
114
|
-
return _MIME_RENDERERS[mime_type](output, meta), mime_type
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
def _write(element, value, append=False):
|
|
118
|
-
html, mime_type = _format_mime(value)
|
|
119
|
-
if html == "\\n":
|
|
120
|
-
return
|
|
121
|
-
|
|
122
|
-
if append:
|
|
123
|
-
out_element = document.createElement("div")
|
|
124
|
-
element.append(out_element)
|
|
125
|
-
else:
|
|
126
|
-
out_element = element.lastElementChild
|
|
127
|
-
if out_element is None:
|
|
128
|
-
out_element = element
|
|
129
|
-
|
|
130
|
-
if mime_type in ("application/javascript", "text/html"):
|
|
131
|
-
script_element = document.createRange().createContextualFragment(html)
|
|
132
|
-
out_element.append(script_element)
|
|
133
|
-
else:
|
|
134
|
-
out_element.innerHTML = html
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
def display(*values, target=None, append=True):
|
|
138
|
-
element = document.getElementById(target)
|
|
139
|
-
for v in values:
|
|
140
|
-
_write(element, v, append=append)
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export { ie as default };
|
|
2
|
-
declare function ie(e: any, ...r: any[]): any;
|
|
3
|
-
declare namespace ie {
|
|
4
|
-
import transfer = m.transfer;
|
|
5
|
-
export { transfer };
|
|
6
|
-
}
|
|
7
|
-
declare function m(t: any, { parse: n, stringify: r, transform: u }?: JSON): any;
|
|
8
|
-
declare namespace m {
|
|
9
|
-
function transfer(...e: any[]): any[];
|
|
10
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
export const CUSTOM_SELECTORS: any[];
|
|
2
|
-
export function handleCustomType(node: Element): void;
|
|
3
|
-
export function define(type: string, options: CustomOptions): void;
|
|
4
|
-
export function whenDefined(type: string): Promise<object>;
|
|
5
|
-
/**
|
|
6
|
-
* custom configuration
|
|
7
|
-
*/
|
|
8
|
-
export type Runtime = {
|
|
9
|
-
/**
|
|
10
|
-
* the bootstrapped interpreter
|
|
11
|
-
*/
|
|
12
|
-
interpreter: object;
|
|
13
|
-
/**
|
|
14
|
-
* an XWorker constructor that defaults to same interpreter on the Worker.
|
|
15
|
-
*/
|
|
16
|
-
XWorker: (url: string, options?: object) => Worker;
|
|
17
|
-
/**
|
|
18
|
-
* a cloned config used to bootstrap the interpreter
|
|
19
|
-
*/
|
|
20
|
-
config: object;
|
|
21
|
-
/**
|
|
22
|
-
* an utility to run code within the interpreter
|
|
23
|
-
*/
|
|
24
|
-
run: (code: string) => any;
|
|
25
|
-
/**
|
|
26
|
-
* an utility to run code asynchronously within the interpreter
|
|
27
|
-
*/
|
|
28
|
-
runAsync: (code: string) => Promise<any>;
|
|
29
|
-
/**
|
|
30
|
-
* an utility to write a file in the virtual FS, if available
|
|
31
|
-
*/
|
|
32
|
-
writeFile: (path: string, data: ArrayBuffer) => void;
|
|
33
|
-
};
|
|
34
|
-
/**
|
|
35
|
-
* custom configuration
|
|
36
|
-
*/
|
|
37
|
-
export type CustomOptions = {
|
|
38
|
-
/**
|
|
39
|
-
* the interpreter to use
|
|
40
|
-
*/
|
|
41
|
-
interpreter: 'pyodide' | 'micropython' | 'wasmoon' | 'ruby-wasm-wasi';
|
|
42
|
-
/**
|
|
43
|
-
* the optional interpreter version to use
|
|
44
|
-
*/
|
|
45
|
-
version?: string;
|
|
46
|
-
/**
|
|
47
|
-
* the optional config to use within such interpreter
|
|
48
|
-
*/
|
|
49
|
-
config?: string;
|
|
50
|
-
/**
|
|
51
|
-
* the callback that will be invoked once
|
|
52
|
-
*/
|
|
53
|
-
onInterpreterReady?: (environment: object, node: Element) => void;
|
|
54
|
-
};
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export function registerJSModule(interpreter: any, name: any, value: any): void;
|
|
2
|
-
export function run(interpreter: any, code: any): any;
|
|
3
|
-
export function runAsync(interpreter: any, code: any): any;
|
|
4
|
-
export function runEvent(interpreter: any, code: any, event: any): Promise<void>;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export function clean(code: string): string;
|
|
2
|
-
export const io: WeakMap<object, any>;
|
|
3
|
-
export function stdio(init: any): {
|
|
4
|
-
stderr: (...args: any[]) => any;
|
|
5
|
-
stdout: (...args: any[]) => any;
|
|
6
|
-
get(engine: any): Promise<any>;
|
|
7
|
-
};
|
|
8
|
-
export function writeFile({ FS, PATH, PATH_FS }: {
|
|
9
|
-
FS: any;
|
|
10
|
-
PATH: any;
|
|
11
|
-
PATH_FS: any;
|
|
12
|
-
}, path: any, buffer: any): any;
|
|
13
|
-
export function writeFileShim(FS: any, path: any, buffer: any): any;
|
|
14
|
-
export const base: WeakMap<object, any>;
|
|
15
|
-
export function fetchPaths(module: any, interpreter: any, config_fetch: any): Promise<any[]>;
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { type };
|
|
3
|
-
export function module(version?: string): string;
|
|
4
|
-
export function engine({ loadMicroPython }: {
|
|
5
|
-
loadMicroPython: any;
|
|
6
|
-
}, config: any, url: any): Promise<any>;
|
|
7
|
-
export { registerJSModule };
|
|
8
|
-
export { run };
|
|
9
|
-
export { runAsync };
|
|
10
|
-
export { runEvent };
|
|
11
|
-
export function transform(_: any, value: any): any;
|
|
12
|
-
export function writeFile({ FS, _module: { PATH, PATH_FS } }: {
|
|
13
|
-
FS: any;
|
|
14
|
-
_module: {
|
|
15
|
-
PATH: any;
|
|
16
|
-
PATH_FS: any;
|
|
17
|
-
};
|
|
18
|
-
}, path: any, buffer: any): any;
|
|
19
|
-
}
|
|
20
|
-
export default _default;
|
|
21
|
-
declare const type: "micropython";
|
|
22
|
-
import { registerJSModule } from './_python.js';
|
|
23
|
-
import { run } from './_python.js';
|
|
24
|
-
import { runAsync } from './_python.js';
|
|
25
|
-
import { runEvent } from './_python.js';
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { type };
|
|
3
|
-
export function module(version?: string): string;
|
|
4
|
-
export function engine({ loadPyodide }: {
|
|
5
|
-
loadPyodide: any;
|
|
6
|
-
}, config: any, url: any): Promise<any>;
|
|
7
|
-
export { registerJSModule };
|
|
8
|
-
export { run };
|
|
9
|
-
export { runAsync };
|
|
10
|
-
export { runEvent };
|
|
11
|
-
export function transform(interpreter: any, value: any): any;
|
|
12
|
-
export function writeFile({ FS, PATH, _module: { PATH_FS } }: {
|
|
13
|
-
FS: any;
|
|
14
|
-
PATH: any;
|
|
15
|
-
_module: {
|
|
16
|
-
PATH_FS: any;
|
|
17
|
-
};
|
|
18
|
-
}, path: any, buffer: any): any;
|
|
19
|
-
}
|
|
20
|
-
export default _default;
|
|
21
|
-
declare const type: "pyodide";
|
|
22
|
-
import { registerJSModule } from './_python.js';
|
|
23
|
-
import { run } from './_python.js';
|
|
24
|
-
import { runAsync } from './_python.js';
|
|
25
|
-
import { runEvent } from './_python.js';
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { type };
|
|
3
|
-
export let experimental: boolean;
|
|
4
|
-
export function module(version?: string): string;
|
|
5
|
-
export function engine({ DefaultRubyVM }: {
|
|
6
|
-
DefaultRubyVM: any;
|
|
7
|
-
}, config: any, url: any): Promise<any>;
|
|
8
|
-
export function registerJSModule(interpreter: any, _: any, value: any): void;
|
|
9
|
-
export function run(interpreter: any, code: any): any;
|
|
10
|
-
export function runAsync(interpreter: any, code: any): any;
|
|
11
|
-
export function runEvent(interpreter: any, code: any, event: any): Promise<void>;
|
|
12
|
-
export function transform(_: any, value: any): any;
|
|
13
|
-
export function writeFile(): never;
|
|
14
|
-
}
|
|
15
|
-
export default _default;
|
|
16
|
-
declare const type: "ruby-wasm-wasi";
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
declare namespace _default {
|
|
2
|
-
export { type };
|
|
3
|
-
export function module(version?: string): string;
|
|
4
|
-
export function engine({ LuaFactory, LuaLibraries }: {
|
|
5
|
-
LuaFactory: any;
|
|
6
|
-
LuaLibraries: any;
|
|
7
|
-
}, config: any): Promise<any>;
|
|
8
|
-
export function registerJSModule(interpreter: any, _: any, value: any): void;
|
|
9
|
-
export function run(interpreter: any, code: any): any;
|
|
10
|
-
export function runAsync(interpreter: any, code: any): any;
|
|
11
|
-
export function runEvent(interpreter: any, code: any, event: any): Promise<void>;
|
|
12
|
-
export function transform(_: any, value: any): any;
|
|
13
|
-
export function writeFile({ cmodule: { module: { FS }, }, }: {
|
|
14
|
-
cmodule: {
|
|
15
|
-
module: {
|
|
16
|
-
FS: any;
|
|
17
|
-
};
|
|
18
|
-
};
|
|
19
|
-
}, path: any, buffer: any): any;
|
|
20
|
-
}
|
|
21
|
-
export default _default;
|
|
22
|
-
declare const type: "wasmoon";
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/** @type {Map<string, object>} */
|
|
2
|
-
export const registry: Map<string, object>;
|
|
3
|
-
/** @type {Map<string, object>} */
|
|
4
|
-
export const configs: Map<string, object>;
|
|
5
|
-
/** @type {string[]} */
|
|
6
|
-
export const selectors: string[];
|
|
7
|
-
/** @type {string[]} */
|
|
8
|
-
export const prefixes: string[];
|
|
9
|
-
export const interpreter: Map<any, any>;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export function queryTarget(script: any, idOrSelector: any): any;
|
|
2
|
-
export const interpreters: Map<any, any>;
|
|
3
|
-
export function getDetails(type: any, id: any, name: any, version: any, config: any, runtime?: any): any;
|
|
4
|
-
export function handle(script: HTMLScriptElement): Promise<void>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export function parse(text: string): object;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
export const isArray: (arg: any) => arg is any[];
|
|
2
|
-
export const assign: {
|
|
3
|
-
<T extends {}, U>(target: T, source: U): T & U;
|
|
4
|
-
<T_1 extends {}, U_1, V>(target: T_1, source1: U_1, source2: V): T_1 & U_1 & V;
|
|
5
|
-
<T_2 extends {}, U_2, V_1, W>(target: T_2, source1: U_2, source2: V_1, source3: W): T_2 & U_2 & V_1 & W;
|
|
6
|
-
(target: object, ...sources: any[]): any;
|
|
7
|
-
};
|
|
8
|
-
export const create: {
|
|
9
|
-
(o: object): any;
|
|
10
|
-
(o: object, properties: PropertyDescriptorMap & ThisType<any>): any;
|
|
11
|
-
};
|
|
12
|
-
export const defineProperties: <T>(o: T, properties: PropertyDescriptorMap & ThisType<any>) => T;
|
|
13
|
-
export const defineProperty: <T>(o: T, p: PropertyKey, attributes: PropertyDescriptor & ThisType<any>) => T;
|
|
14
|
-
export const entries: {
|
|
15
|
-
<T>(o: {
|
|
16
|
-
[s: string]: T;
|
|
17
|
-
} | ArrayLike<T>): [string, T][];
|
|
18
|
-
(o: {}): [string, any][];
|
|
19
|
-
};
|
|
20
|
-
export const all: {
|
|
21
|
-
<T>(values: Iterable<T | PromiseLike<T>>): Promise<Awaited<T>[]>;
|
|
22
|
-
<T_1 extends [] | readonly unknown[]>(values: T_1): Promise<{ -readonly [P in keyof T_1]: Awaited<T_1[P]>; }>;
|
|
23
|
-
};
|
|
24
|
-
export const resolve: {
|
|
25
|
-
(): Promise<void>;
|
|
26
|
-
<T>(value: T): Promise<Awaited<T>>;
|
|
27
|
-
<T_1>(value: T_1 | PromiseLike<T_1>): Promise<Awaited<T_1>>;
|
|
28
|
-
};
|
|
29
|
-
export function absoluteURL(path: any, base?: string): string;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
declare function _default(...args: any[]): (url: string, options?: WorkerOptions) => Worker;
|
|
2
|
-
export default _default;
|
|
3
|
-
/**
|
|
4
|
-
* custom configuration
|
|
5
|
-
*/
|
|
6
|
-
export type WorkerOptions = {
|
|
7
|
-
/**
|
|
8
|
-
* the interpreter type to use
|
|
9
|
-
*/
|
|
10
|
-
type: string;
|
|
11
|
-
/**
|
|
12
|
-
* the optional interpreter version to use
|
|
13
|
-
*/
|
|
14
|
-
version?: string;
|
|
15
|
-
/**
|
|
16
|
-
* the optional config to use within such interpreter
|
|
17
|
-
*/
|
|
18
|
-
config?: string;
|
|
19
|
-
};
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A `Worker` facade able to bootstrap on the worker thread only a PyScript module.
|
|
3
|
-
* @param {string} file the python file to run ina worker.
|
|
4
|
-
* @param {{config?: string | object, async?: boolean}} [options] optional configuration for the worker.
|
|
5
|
-
* @returns {Worker & {sync: ProxyHandler<object>}}
|
|
6
|
-
*/
|
|
7
|
-
export function PyWorker(file: string, options?: {
|
|
8
|
-
config?: string | object;
|
|
9
|
-
async?: boolean;
|
|
10
|
-
}): Worker & {
|
|
11
|
-
sync: ProxyHandler<object>;
|
|
12
|
-
};
|
|
13
|
-
export namespace hooks {
|
|
14
|
-
let onBeforeRun: Set<Function>;
|
|
15
|
-
let onBeforeRunAync: Set<Function>;
|
|
16
|
-
let onAfterRun: Set<Function>;
|
|
17
|
-
let onAfterRunAsync: Set<Function>;
|
|
18
|
-
let onInterpreterReady: Set<Function>;
|
|
19
|
-
let codeBeforeRunWorker: Set<string>;
|
|
20
|
-
let codeBeforeRunWorkerAsync: Set<string>;
|
|
21
|
-
let codeAfterRunWorker: Set<string>;
|
|
22
|
-
let codeAfterRunWorkerAsync: Set<string>;
|
|
23
|
-
}
|
|
24
|
-
declare let config: any;
|
|
25
|
-
export {};
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
export function _createAlertBanner(message: any, level: any, messageType?: string, logMessage?: boolean): void;
|
|
2
|
-
export namespace ErrorCode {
|
|
3
|
-
let GENERIC: string;
|
|
4
|
-
let FETCH_ERROR: string;
|
|
5
|
-
let FETCH_NAME_ERROR: string;
|
|
6
|
-
let FETCH_UNAUTHORIZED_ERROR: string;
|
|
7
|
-
let FETCH_FORBIDDEN_ERROR: string;
|
|
8
|
-
let FETCH_NOT_FOUND_ERROR: string;
|
|
9
|
-
let FETCH_SERVER_ERROR: string;
|
|
10
|
-
let FETCH_UNAVAILABLE_ERROR: string;
|
|
11
|
-
let BAD_CONFIG: string;
|
|
12
|
-
let MICROPIP_INSTALL_ERROR: string;
|
|
13
|
-
let BAD_PLUGIN_FILE_EXTENSION: string;
|
|
14
|
-
let NO_DEFAULT_EXPORT: string;
|
|
15
|
-
let TOP_LEVEL_AWAIT: string;
|
|
16
|
-
}
|
|
17
|
-
export class UserError extends Error {
|
|
18
|
-
constructor(errorCode: any, message?: string, messageType?: string);
|
|
19
|
-
errorCode: any;
|
|
20
|
-
messageType: string;
|
|
21
|
-
}
|
|
22
|
-
export class FetchError extends UserError {
|
|
23
|
-
constructor(errorCode: any, message: any);
|
|
24
|
-
}
|
|
25
|
-
export class InstallError extends UserError {
|
|
26
|
-
constructor(errorCode: any, message: any);
|
|
27
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* This is a fetch wrapper that handles any non 200 responses and throws a
|
|
3
|
-
* FetchError with the right ErrorCode. This is useful because our FetchError
|
|
4
|
-
* will automatically create an alert banner.
|
|
5
|
-
*
|
|
6
|
-
* @param {string} url - URL to fetch
|
|
7
|
-
* @param {Request} [options] - options to pass to fetch
|
|
8
|
-
* @returns {Promise<Response>}
|
|
9
|
-
*/
|
|
10
|
-
export function robustFetch(url: string, options?: Request): Promise<Response>;
|
|
File without changes
|