7 lines
13 KiB
JavaScript
7 lines
13 KiB
JavaScript
"use strict";(self.webpackChunk_mixly_python_pyodide=self.webpackChunk_mixly_python_pyodide||[]).push([[738,357],{1838:(e,t,n)=>{n.d(t,{E:()=>s,J:()=>o});class s extends Error{constructor(e){super(`Function ${e} not implemented!`),this.name="NotImplementedError"}}const r=async(e,t)=>{const n=e,s=t.slice(n.length);let r=null;const a={status:200,statusText:"OK",headers:new Headers};try{r=self.Basthon.getFile(s);const e=await(async e=>await new Promise(((t,n)=>{const s=new FileReader;s.onloadend=()=>{t(s.result)},s.onerror=n,s.readAsDataURL(new Blob([e]))})))(r),t=e.substring(e.indexOf(":")+1,e.indexOf(";"));r=r.buffer,a.headers.append("Content-Type",t),a.headers.append("Content-Length",r.byteLength)}catch(e){a.status=404,a.statusText="Not Found"}return new Response(r,a)},a=e=>new URL(e).origin,o=()=>{if("mockedFetch"===self.fetch.name)return;const e=self.fetch;self.fetch=async function(t,n){if(null==self.importScripts||null==self._assetsURL)return Response.error();t instanceof Request&&(n={...t,...n}),n={...n,credentials:"omit"};const s=t.url??t.toString(),o="filesystem:/";try{if(s.startsWith(o))return await r(o,s);if(a(s)===a(self._assetsURL)){if((e=>{const t=new URL(e).href;return t.substring(0,t.lastIndexOf("/"))})(s).startsWith(self._assetsURL)){const e=self._remoteProxy,{body:t,options:r}=await e.fetch(s,n);return new Response(t,r)}throw new Error("Ressource is outside the proxy' scope")}return await e(s,n)}catch(e){return console.error(`security proxy: request to ${s} throw error: ${e.toString()}`),Response.error()}}}},6358:(e,t,n)=>{n.d(t,{z:()=>o});var s=n(9610);var r=n(1838);class a extends Event{constructor(e,t){super(e),this.detail=t}}class o{constructor(e){this._isReady=!1,this._ready=new s.D,this._stopped=Promise.resolve(),this._execution_count=0,this._pendingInput=void 0,this._listeners=new Map,this._files=new Map,this._modules=new Map,this._options=this.clone(e),this._rootPath=e.rootPath,this.safeKernel()||console.warn(`%c⚠ DANGER ⚠: kernel ${this.language()} not safe! Please consider using a safe kernel.`,"color: red; font-size: 20px;")}safeKernel(){return!1}version(){return"0.62.22"}language(){throw new r.E("language")}languageName(){throw new r.E("languageName")}moduleExts(){throw new r.E("moduleExts")}get execution_count(){return this._execution_count}evalAsync(e,t,n,s=null){throw new r.E("evalAsync")}async putFile(e,t){this._files.set(e,t)}async putModule(e,t){this._modules.set(e,t)}userModules(){return[]}getFile(e){throw new r.E("getFile")}getUserModuleFile(e){throw new r.E("getUserModuleFile")}async more(e){throw new r.E("more")}async complete(e){return[]}banner(){return`Welcome to the ${this.languageName()} REPL!`}ps1(){return">>> "}ps2(){return"... "}async _init(){}async init(){try{await this._init()}catch(e){return void this._ready.reject(e)}this.addEventListener("eval.request",this.evalFromEvent.bind(this)),await this.start()}async _start(){}async start(){await this._stopped,this._execution_count=0;try{await this._start()}catch(e){return void this._ready.reject(e)}this._files.forEach(((e,t)=>this.putFile(t,e))),this._modules.forEach(((e,t)=>this.putModule(t,e))),this._isReady=!0,this._ready.resolve()}async _stop(){}stop(){this._isReady=!1,this._ready=new s.D,this._stopped=this._stop()}restart(){this.stop(),this.start()}get isReady(){return this._isReady}async ready(){return this._ready.promise}basthonRoot(e=!1){let t=this._rootPath+"/"+this.version()+"/"+this.language();if(e&&!t.startsWith("http")){const e=window.location.origin+window.location.pathname;t=e.substring(0,e.lastIndexOf("/"))+"/"+t}return t}download(e,t){if(!("string"==typeof e||e instanceof String)){const t=new Blob([e],{type:"application/octet-stream"});e=window.URL.createObjectURL(t)}const n=document.createElement("a");n.download=t,n.href=e,n.target="_blank",n.style.display="none",document.body.appendChild(n),n.click(),document.body.removeChild(n)}static loadScript(e){return new Promise((function(t,n){let s=document.createElement("script");s.onload=t,s.onerror=n,s.src=e,document.head.appendChild(s)}))}dispatchEvent(e,t){document.dispatchEvent(new a(`basthon.${e}`,t))}addEventListener(e,t){const n=e=>t(e.detail);document.addEventListener(`basthon.${e}`,n);let s=this._listeners.get(e);null==s&&(s=new Map,this._listeners.set(e,s)),s.set(t,n)}removeEventListener(e,t){const n=this._listeners.get(e);document.removeEventListener(`basthon.${e}`,n?.get(t))}async inputAsync(e,t=!1,n=void 0){(n=this.clone(n)).content={prompt:e,password:t};const r=new s.D;n.resolve=r.resolve.bind(r),n.reject=r.reject.bind(r),this._pendingInput=r,this.dispatchEvent("eval.input",n);const a=await r.promise;return this._pendingInput=void 0,a}resolvePendingInput(){this._pendingInput?.resolve("")}clone(e){return JSON.parse(JSON.stringify(e))}async putRessource(e,t){const n=e.split(".").pop()??"";return this.moduleExts().includes(n)?await this.putModule(e,t):await this.putFile(e,t)}pendingInput(){return null!=this._pendingInput}async evalFromEvent(e){const t=t=>n=>{let s=this.clone(e);s.stream=t,s.content=n,this.dispatchEvent("eval.output",s)},n=t("stdout"),s=t("stderr");let r;try{r=await this.evalAsync(e.code,n,s,e)}catch(t){s(t.toString());const n=this.clone(e);return n.error=t,n.execution_count=this.execution_count,void this.dispatchEvent("eval.error",n)}if(null==r)return;const a=r[0],o=r[1];let i=this.clone(e);i.execution_count=o,null!=a&&(i.result=a),this.dispatchEvent("eval.finished",i)}}},7738:(e,t,n)=>{n.d(t,{f:()=>i});var s=n(4590),r=n(1838),a=n(6358);if("SandboxedWorker"!==globalThis.Worker.name){class e extends Worker{constructor(e,t){if(t.sandboxed){const t=new URL(e).href,n=`self._assetsURL = "${t.substring(0,t.lastIndexOf("/"))}";\n globalThis = {importScripts: self.importScripts, location: "${e}"};\n importScripts("${e}");\n globalThis = self;`.replace(/\s/g,"");super(`data:text/javascript;base64,${btoa(n)}`)}else super(e,t)}}globalThis.Worker=e}a.z;var o=n(9610);class i{constructor(e){this._ready=new o.D,(0,r.J)(),self.basthon=this,null==self._prompt&&(self._prompt=globalThis.prompt),globalThis.prompt=e=>this.input(e)}async _init(){}async init(){try{await this._init(),this._ready.resolve()}catch(e){this._ready.reject(e)}}ready(){return this._ready.promise}setProxyPort(e){self._remoteProxy=(0,s.LV)(e)}sendStream(e,t,n){globalThis.postMessage({data:e,type:"stream",content:{stream:t,text:n}})}sendStdoutStream(e,t){this.sendStream(e,"stdout",t)}sendStderrStream(e,t){this.sendStream(e,"stderr",t)}async blobToDataURL(e){return await new Promise((t=>{const n=new FileReader;n.onloadend=()=>t(n.result),n.readAsDataURL(e)}))}async displayBlob(e,t){null==t&&(t=this.clone(this.__eval_data__));const n=await this.blobToDataURL(e),s="data:image/png;base64,";if(n.startsWith(s)){{const e=n.slice(22);t.display_type="multiple",t.content={"image/png":e}}globalThis.postMessage({data:t,type:"display"})}}display(e){const t=this.clone(this.__eval_data__);null!=globalThis.OffscreenCanvas&&e instanceof OffscreenCanvas?e.convertToBlob().then((e=>this.displayBlob(e,t))):(t.display_type="multiple",t.content=e,globalThis.postMessage({data:t,type:"display"}))}async _eval(e,t){throw new r.E("_eval")}async eval(e,t){this.__eval_data__=e;try{return{data:e,status:"ok",result:await this._eval(e,t)}}catch(t){const{name:n,stack:s,message:r}=t;return this.sendStderrStream(e,t.toString()),{data:e,status:"error",error:{name:n,value:r,traceback:s?.toString()}}}}putFile(e,t){throw new r.E("putFile")}putModule(e,t){throw new r.E("putModule")}async complete(e){return[]}async more(e){throw new r.E("more")}download(e,t){globalThis.postMessage({type:"download",content:{content:e,filename:t}})}clone(e){return JSON.parse(JSON.stringify(e))}sleep(e){if(e*=1e3,globalThis.crossOriginIsolated){const t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)}else{const t=Date.now();for(;Date.now()-t<e;);}}decodeSharedArrayBuffer(e){const t=new Uint8Array(e);let n=t.length;for(;n>0&&0===t[n-1];n--);if(0===n)return"";const s=new Uint8Array(n);s.set(t.subarray(0,n));try{return(new TextDecoder).decode(s)}catch(e){if(t.length===n)throw new Error("String too long, can't decode");throw e}}input(e,t=!1){if(globalThis.crossOriginIsolated){const n=this.clone(this.__eval_data__),s=new SharedArrayBuffer(1024);return globalThis.postMessage({type:"input",content:{data:n,prompt:e,password:t,sab:s}}),Atomics.wait(new Int32Array(s),0,0),this.decodeSharedArrayBuffer(s)}return self._prompt(e??"")??""}}},9610:(e,t,n)=>{n.d(t,{D:()=>s});var s=function(){function e(e){var t=this;void 0===e&&(e=!1),this.ignoreMultipleSettles=e,this.isSettled=!1,this.promise=new Promise((function(e,n){t.resolveCallback=e,t.rejectCallback=n}))}return e.prototype.markAsSettled=function(){var e=this.isSettled;if(e&&!this.ignoreMultipleSettles)throw new Error("PromiseDelegate is already settled!");return this.isSettled=!0,!e},Object.defineProperty(e.prototype,"settled",{get:function(){return this.isSettled},enumerable:!1,configurable:!0}),e.prototype.resolve=function(e){this.markAsSettled()&&this.resolveCallback(e)},e.prototype.reject=function(e){this.markAsSettled()&&this.rejectCallback(e)},e}()},4590:(e,t,n)=>{n.d(t,{LV:()=>h,UD:()=>r,k0:()=>v,p:()=>u});
|
||
/**
|
||
* @license
|
||
* Copyright 2019 Google LLC
|
||
* SPDX-License-Identifier: Apache-2.0
|
||
*/
|
||
const s=Symbol("Comlink.proxy"),r=Symbol("Comlink.endpoint"),a=Symbol("Comlink.releaseProxy"),o=Symbol("Comlink.finalizer"),i=Symbol("Comlink.thrown"),l=e=>"object"==typeof e&&null!==e||"function"==typeof e,c=new Map([["proxy",{canHandle:e=>l(e)&&e[s],serialize(e){const{port1:t,port2:n}=new MessageChannel;return u(e,t),[n,[n]]},deserialize:e=>(e.start(),h(e))}],["throw",{canHandle:e=>l(e)&&i in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){if(e.isError)throw Object.assign(new Error(e.value.message),e.value);throw e.value}}]]);function u(e,t=globalThis,n=["*"]){t.addEventListener("message",(function r(a){if(!a||!a.data)return;if(!function(e,t){for(const n of e){if(t===n||"*"===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}return!1}(n,a.origin))return void console.warn(`Invalid origin '${a.origin}' for comlink proxy`);const{id:l,type:c,path:h}=Object.assign({path:[]},a.data),p=(a.data.argumentList||[]).map(E);let f;try{const t=h.slice(0,-1).reduce(((e,t)=>e[t]),e),n=h.reduce(((e,t)=>e[t]),e);switch(c){case"GET":f=n;break;case"SET":t[h.slice(-1)[0]]=E(a.data.value),f=!0;break;case"APPLY":f=n.apply(t,p);break;case"CONSTRUCT":f=function(e){return Object.assign(e,{[s]:!0})}(new n(...p));break;case"ENDPOINT":{const{port1:t,port2:n}=new MessageChannel;u(e,n),f=v(t,[t])}break;case"RELEASE":f=void 0;break;default:return}}catch(e){f={value:e,[i]:0}}Promise.resolve(f).catch((e=>({value:e,[i]:0}))).then((n=>{const[s,a]=b(n);t.postMessage(Object.assign(Object.assign({},s),{id:l}),a),"RELEASE"===c&&(t.removeEventListener("message",r),d(t),o in e&&"function"==typeof e[o]&&e[o]())})).catch((e=>{const[n,s]=b({value:new TypeError("Unserializable return value"),[i]:0});t.postMessage(Object.assign(Object.assign({},n),{id:l}),s)}))})),t.start&&t.start()}function d(e){(function(e){return"MessagePort"===e.constructor.name})(e)&&e.close()}function h(e,t){return m(e,[],t)}function p(e){if(e)throw new Error("Proxy has been released and is not useable")}function f(e){return S(e,{type:"RELEASE"}).then((()=>{d(e)}))}const y=new WeakMap,g="FinalizationRegistry"in globalThis&&new FinalizationRegistry((e=>{const t=(y.get(e)||0)-1;y.set(e,t),0===t&&f(e)}));function m(e,t=[],n=function(){}){let s=!1;const o=new Proxy(n,{get(n,r){if(p(s),r===a)return()=>{!function(e){g&&g.unregister(e)}(o),f(e),s=!0};if("then"===r){if(0===t.length)return{then:()=>o};const n=S(e,{type:"GET",path:t.map((e=>e.toString()))}).then(E);return n.then.bind(n)}return m(e,[...t,r])},set(n,r,a){p(s);const[o,i]=b(a);return S(e,{type:"SET",path:[...t,r].map((e=>e.toString())),value:o},i).then(E)},apply(n,a,o){p(s);const i=t[t.length-1];if(i===r)return S(e,{type:"ENDPOINT"}).then(E);if("bind"===i)return m(e,t.slice(0,-1));const[l,c]=w(o);return S(e,{type:"APPLY",path:t.map((e=>e.toString())),argumentList:l},c).then(E)},construct(n,r){p(s);const[a,o]=w(r);return S(e,{type:"CONSTRUCT",path:t.map((e=>e.toString())),argumentList:a},o).then(E)}});return function(e,t){const n=(y.get(t)||0)+1;y.set(t,n),g&&g.register(e,t,e)}(o,e),o}function w(e){const t=e.map(b);return[t.map((e=>e[0])),(n=t.map((e=>e[1])),Array.prototype.concat.apply([],n))];var n}const _=new WeakMap;function v(e,t){return _.set(e,t),e}function b(e){for(const[t,n]of c)if(n.canHandle(e)){const[s,r]=n.serialize(e);return[{type:"HANDLER",name:t,value:s},r]}return[{type:"RAW",value:e},_.get(e)||[]]}function E(e){switch(e.type){case"HANDLER":return c.get(e.name).deserialize(e.value);case"RAW":return e.value}}function S(e,t,n){return new Promise((s=>{const r=new Array(4).fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");e.addEventListener("message",(function t(n){n.data&&n.data.id&&n.data.id===r&&(e.removeEventListener("message",t),s(n.data))})),e.start&&e.start(),e.postMessage(Object.assign({id:r},t),n)}))}}}]); |