@mayflowergmbh/wasmsh-pyodide 0.5.0 → 0.5.1
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/assets/pyodide.asm.wasm +0 -0
- package/assets/pyodide.js +1 -1
- package/assets/pyodide.mjs +1 -1
- package/assets/python_stdlib.zip +0 -0
- package/lib/allowlist.mjs +51 -0
- package/lib/runtime-bridge.mjs +52 -0
- package/package.json +1 -1
package/assets/pyodide.asm.wasm
CHANGED
|
Binary file
|
package/assets/pyodide.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";var loadPyodide=(()=>{var re=Object.create;var F=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var oe=Object.getOwnPropertyNames;var ae=Object.getPrototypeOf,se=Object.prototype.hasOwnProperty;var o=(e,t)=>F(e,"name",{value:t,configurable:!0}),m=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var le=(e,t)=>{for(var n in t)F(e,n,{get:t[n],enumerable:!0})},$=(e,t,n,i)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of oe(t))!se.call(e,a)&&a!==n&&F(e,a,{get:()=>t[a],enumerable:!(i=ie(t,a))||i.enumerable});return e};var b=(e,t,n)=>(n=e!=null?re(ae(e)):{},$(t||!e||!e.__esModule?F(n,"default",{value:e,enumerable:!0}):n,e)),ce=e=>$(F({},"__esModule",{value:!0}),e);var H=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return n=>{for(var i=n.length,a=new Uint8Array((i-(n[i-1]=="=")-(n[i-2]=="="))*3/4|0),r=0,s=0;r<i;){var l=e[n.charCodeAt(r++)],c=e[n.charCodeAt(r++)],d=e[n.charCodeAt(r++)],u=e[n.charCodeAt(r++)];a[s++]=l<<2|c>>4,a[s++]=c<<4|d>>2,a[s++]=d<<6|u}return a}})();var $e={};le($e,{loadPyodide:()=>B,version:()=>x});function de(e){return!isNaN(parseFloat(e))&&isFinite(e)}o(de,"_isNumber");function N(e){return e.charAt(0).toUpperCase()+e.substring(1)}o(N,"_capitalize");function T(e){return function(){return this[e]}}o(T,"_getter");var I=["isConstructor","isEval","isNative","isToplevel"],w=["columnNumber","lineNumber"],_=["fileName","functionName","source"],ue=["args"],fe=["evalOrigin"],D=I.concat(w,_,ue,fe);function y(e){if(e)for(var t=0;t<D.length;t++)e[D[t]]!==void 0&&this["set"+N(D[t])](e[D[t]])}o(y,"StackFrame");y.prototype={getArgs:o(function(){return this.args},"getArgs"),setArgs:o(function(e){if(Object.prototype.toString.call(e)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=e},"setArgs"),getEvalOrigin:o(function(){return this.evalOrigin},"getEvalOrigin"),setEvalOrigin:o(function(e){if(e instanceof y)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new y(e);else throw new TypeError("Eval Origin must be an Object or StackFrame")},"setEvalOrigin"),toString:o(function(){var e=this.getFileName()||"",t=this.getLineNumber()||"",n=this.getColumnNumber()||"",i=this.getFunctionName()||"";return this.getIsEval()?e?"[eval] ("+e+":"+t+":"+n+")":"[eval]:"+t+":"+n:i?i+" ("+e+":"+t+":"+n+")":e+":"+t+":"+n},"toString")};y.fromString=o(function(t){var n=t.indexOf("("),i=t.lastIndexOf(")"),a=t.substring(0,n),r=t.substring(n+1,i).split(","),s=t.substring(i+1);if(s.indexOf("@")===0)var l=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(s,""),c=l[1],d=l[2],u=l[3];return new y({functionName:a,args:r||void 0,fileName:c,lineNumber:d||void 0,columnNumber:u||void 0})},"StackFrame$$fromString");for(P=0;P<I.length;P++)y.prototype["get"+N(I[P])]=T(I[P]),y.prototype["set"+N(I[P])]=function(e){return function(t){this[e]=!!t}}(I[P]);var P;for(E=0;E<w.length;E++)y.prototype["get"+N(w[E])]=T(w[E]),y.prototype["set"+N(w[E])]=function(e){return function(t){if(!de(t))throw new TypeError(e+" must be a Number");this[e]=Number(t)}}(w[E]);var E;for(h=0;h<_.length;h++)y.prototype["get"+N(_[h])]=T(_[h]),y.prototype["set"+N(_[h])]=function(e){return function(t){this[e]=String(t)}}(_[h]);var h,L=y;function me(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:o(function(i){if(i.stack&&i.stack.match(e))return this.parseV8OrIE(i);if(i.stack)return this.parseFFOrSafari(i);throw new Error("Cannot parse given Error object")},"ErrorStackParser$$parse"),extractLocation:o(function(i){if(i.indexOf(":")===-1)return[i];var a=/(.+?)(?::(\d+))?(?::(\d+))?$/,r=a.exec(i.replace(/[()]/g,""));return[r[1],r[2]||void 0,r[3]||void 0]},"ErrorStackParser$$extractLocation"),parseV8OrIE:o(function(i){var a=i.stack.split(`
|
|
2
2
|
`).filter(function(r){return!!r.match(e)},this);return a.map(function(r){r.indexOf("(eval ")>-1&&(r=r.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var s=r.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),l=s.match(/ (\(.+\)$)/);s=l?s.replace(l[0],""):s;var c=this.extractLocation(l?l[1]:s),d=l&&s||void 0,u=["eval","<anonymous>"].indexOf(c[0])>-1?void 0:c[0];return new L({functionName:d,fileName:u,lineNumber:c[1],columnNumber:c[2],source:r})},this)},"ErrorStackParser$$parseV8OrIE"),parseFFOrSafari:o(function(i){var a=i.stack.split(`
|
|
3
|
-
`).filter(function(r){return!r.match(t)},this);return a.map(function(r){if(r.indexOf(" > eval")>-1&&(r=r.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),r.indexOf("@")===-1&&r.indexOf(":")===-1)return new L({functionName:r});var s=/((.*".+"[^@]*)?[^@]*)(?:@)/,l=r.match(s),c=l&&l[1]?l[1]:void 0,d=this.extractLocation(r.replace(s,""));return new L({functionName:c,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:r})},this)},"ErrorStackParser$$parseFFOrSafari")}}o(me,"ErrorStackParser");var pe=new me;var j=pe;function ye(){if(typeof API<"u"&&API!==globalThis.API)return API.runtimeEnv;let e=typeof Bun<"u",t=typeof Deno<"u",n=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,i=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")===-1&&navigator.userAgent.indexOf("Safari")>-1;return ge({IN_BUN:e,IN_DENO:t,IN_NODE:n,IN_SAFARI:i,IN_SHELL:typeof read=="function"&&typeof load=="function"})}o(ye,"getGlobalRuntimeEnv");var f=ye();function ge(e){let t=e.IN_NODE&&typeof module<"u"&&module.exports&&typeof m=="function"&&typeof __dirname=="string",n=e.IN_NODE&&!t,i=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,a=i&&typeof window<"u"&&typeof window.document<"u"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof globalThis.importScripts!="function",r=i&&typeof globalThis.WorkerGlobalScope<"u"&&typeof globalThis.self<"u"&&globalThis.self instanceof globalThis.WorkerGlobalScope;return{...e,IN_BROWSER:i,IN_BROWSER_MAIN_THREAD:a,IN_BROWSER_WEB_WORKER:r,IN_NODE_COMMONJS:t,IN_NODE_ESM:n}}o(ge,"calculateDerivedFlags");var z,C,J,V,U;async function W(){if(!f.IN_NODE||(z=(await import(/* webpackIgnore */"node:url")).default,V=await import(/* webpackIgnore */"node:fs"),U=await import(/* webpackIgnore */"node:fs/promises"),J=(await import(/* webpackIgnore */"node:vm")).default,C=await import(/* webpackIgnore */"node:path"),M=C.sep,typeof m<"u"))return;let e=V,t=await import(/* webpackIgnore */"node:crypto"),n=await import(/* webpackIgnore */"ws"),i=await import(/* webpackIgnore */"node:child_process"),a={fs:e,crypto:t,ws:n,child_process:i};globalThis.require=function(r){return a[r]}}o(W,"initNodeModules");function be(e,t){return C.resolve(t||".",e)}o(be,"node_resolvePath");function ve(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}o(ve,"browser_resolvePath");var R;f.IN_NODE?R=be:f.IN_SHELL?R=o(e=>e,"resolvePath"):R=ve;var M;f.IN_NODE||(M="/");function Pe(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:U.readFile(e).then(n=>new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}}o(Pe,"node_getBinaryResponse");function Ee(e,t){if(e.startsWith("file://")&&(e=e.slice(7)),e.includes("://"))throw new Error("Shell cannot fetch urls");return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}o(Ee,"shell_getBinaryResponse");function he(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}o(he,"browser_getBinaryResponse");var A;f.IN_NODE?A=Pe:f.IN_SHELL?A=Ee:A=he;async function q(e,t){let{response:n,binary:i}=A(e,t);if(i)return i;let a=await n;if(!a.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await a.arrayBuffer())}o(q,"loadBinaryFile");var k;if(f.IN_BROWSER_MAIN_THREAD)k=o(async e=>await import(/* webpackIgnore */e),"loadScript");else if(f.IN_BROWSER_WEB_WORKER)k=o(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(/* webpackIgnore */e);else throw t}},"loadScript");else if(f.IN_NODE)k=Ne;else if(f.IN_SHELL)k=load;else throw new Error("Cannot determine runtime environment");async function Ne(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?J.runInThisContext(await(await fetch(e)).text()):await import(/* webpackIgnore */z.pathToFileURL(e).href)}o(Ne,"nodeLoadScript");async function G(e){if(f.IN_NODE){await W();let t=await U.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else if(f.IN_SHELL){let t=read(e);return JSON.parse(t)}else return await(await fetch(e)).json()}o(G,"loadLockFile");async function K(){if(f.IN_NODE_COMMONJS)return __dirname;let e;try{throw new Error}catch(i){e=i}let t=j.parse(e)[0].fileName;if(f.IN_NODE&&!t.startsWith("file://")&&(t=`file://${t}`),f.IN_NODE_ESM){let i=await import(/* webpackIgnore */"node:path");return(await import(/* webpackIgnore */"node:url")).fileURLToPath(i.dirname(t))}let n=t.lastIndexOf(M);if(n===-1)throw new Error("Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.");return t.slice(0,n)}o(K,"calculateDirname");function Y(e){return e.substring(0,e.lastIndexOf("/")+1)||globalThis.location?.toString()||"."}o(Y,"calculateInstallBaseUrl");function X(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:o(function(r){if(!r.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return n.mount.apply(null,arguments)},"mount"),syncfs:o(async(r,s,l)=>{try{let c=a.getLocalSet(r),d=await a.getRemoteSet(r),u=s?d:c,g=s?c:d;await a.reconcile(r,u,g),l(null)}catch(c){l(c)}},"syncfs"),getLocalSet:o(r=>{let s=Object.create(null);function l(u){return u!=="."&&u!==".."}o(l,"isRealDir");function c(u){return g=>i.join2(u,g)}o(c,"toAbsolute");let d=t.readdir(r.mountpoint).filter(l).map(c(r.mountpoint));for(;d.length;){let u=d.pop(),g=t.stat(u);t.isDir(g.mode)&&d.push.apply(d,t.readdir(u).filter(l).map(c(u))),s[u]={timestamp:g.mtime,mode:g.mode}}return{type:"local",entries:s}},"getLocalSet"),getRemoteSet:o(async r=>{let s=Object.create(null),l=await Se(r.opts.fileSystemHandle);for(let[c,d]of l)c!=="."&&(s[i.join2(r.mountpoint,c)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?a.FILE_MODE:a.DIR_MODE});return{type:"remote",entries:s,handles:l}},"getRemoteSet"),loadLocalEntry:o(r=>{let l=t.lookupPath(r,{}).node,c=t.stat(r);if(t.isDir(c.mode))return{timestamp:c.mtime,mode:c.mode};if(t.isFile(c.mode))return l.contents=n.getFileDataAsTypedArray(l),{timestamp:c.mtime,mode:c.mode,contents:l.contents};throw new Error("node type not supported")},"loadLocalEntry"),storeLocalEntry:o((r,s)=>{if(t.isDir(s.mode))t.mkdirTree(r,s.mode);else if(t.isFile(s.mode))t.writeFile(r,s.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(r,s.mode),t.utime(r,s.timestamp,s.timestamp)},"storeLocalEntry"),removeLocalEntry:o(r=>{var s=t.stat(r);t.isDir(s.mode)?t.rmdir(r):t.isFile(s.mode)&&t.unlink(r)},"removeLocalEntry"),loadRemoteEntry:o(async r=>{if(r.kind==="file"){let s=await r.getFile();return{contents:new Uint8Array(await s.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(s.lastModified)}}else{if(r.kind==="directory")return{mode:a.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+r.kind)}},"loadRemoteEntry"),storeRemoteEntry:o(async(r,s,l)=>{let c=r.get(i.dirname(s)),d=t.isFile(l.mode)?await c.getFileHandle(i.basename(s),{create:!0}):await c.getDirectoryHandle(i.basename(s),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(l.contents),await u.close()}r.set(s,d)},"storeRemoteEntry"),removeRemoteEntry:o(async(r,s)=>{await r.get(i.dirname(s)).removeEntry(i.basename(s)),r.delete(s)},"removeRemoteEntry"),reconcile:o(async(r,s,l)=>{let c=0,d=[];Object.keys(s.entries).forEach(function(p){let v=s.entries[p],S=l.entries[p];(!S||t.isFile(v.mode)&&v.timestamp.getTime()>S.timestamp.getTime())&&(d.push(p),c++)}),d.sort();let u=[];if(Object.keys(l.entries).forEach(function(p){s.entries[p]||(u.push(p),c++)}),u.sort().reverse(),!c)return;let g=s.type==="remote"?s.handles:l.handles;for(let p of d){let v=i.normalize(p.replace(r.mountpoint,"/")).substring(1);if(l.type==="local"){let S=g.get(v),ne=await a.loadRemoteEntry(S);a.storeLocalEntry(p,ne)}else{let S=a.loadLocalEntry(p);await a.storeRemoteEntry(g,v,S)}}for(let p of u)if(l.type==="local")a.removeLocalEntry(p);else{let v=i.normalize(p.replace(r.mountpoint,"/")).substring(1);await a.removeRemoteEntry(g,v)}},"reconcile")};e.FS.filesystems.NATIVEFS_ASYNC=a}o(X,"initializeNativeFS");var Se=o(async e=>{let t=[];async function n(a){for await(let r of a.values())t.push(r),r.kind==="directory"&&await n(r)}o(n,"collect"),await n(e);let i=new Map;i.set(".",e);for(let a of t){let r=(await e.resolve(a)).join("/");i.set(r,a)}return i},"getFsHandles");var Q=H("AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECByECD2NyZWF0ZV9zZW50aW5lbAAAC2lzX3NlbnRpbmVsAAEKEwIHAPsBAPsbCwkAIAD7GvsUAAs=");var we=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&typeof navigator.maxTouchPoints<"u"&&navigator.maxTouchPoints>1)))try{let t=await WebAssembly.compile(Q);return await WebAssembly.instantiate(t)}catch(t){if(t instanceof WebAssembly.CompileError)return;throw t}}();async function Z(){let e=await we;if(e)return e.exports;let t=Symbol("error marker");return{create_sentinel:o(()=>t,"create_sentinel"),is_sentinel:o(n=>n===t,"is_sentinel")}}o(Z,"getSentinelImport");function ee(e){let t={config:e,runtimeEnv:f},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:Oe(e),print:e.stdout,printErr:e.stderr,onExit(i){n.exitCode=i},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:o(i=>e.indexURL+i,"locateFile"),instantiateWasm:xe(e.indexURL)};return n}o(ee,"createSettings");function _e(e){return function(t){let n="/";try{t.FS.mkdirTree(e)}catch(i){console.error(`Error occurred while making a home directory '${e}':`),console.error(i),console.error(`Using '${n}' for a home directory instead`),e=n}t.FS.chdir(e)}}o(_e,"createHomeDirectory");function ke(e){return function(t){Object.assign(t.ENV,e)}}o(ke,"setEnvironment");function Re(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}o(Re,"callFsInitHook");function Ae(e){let t=e.HEAPU32[e._Py_Version>>>2],n=t>>>24&255,i=t>>>16&255,a=t>>>8&255;return[n,i,a]}o(Ae,"computeVersionTuple");function Fe(e){let t=q(e);return async n=>{n.API.pyVersionTuple=Ae(n);let[i,a]=n.API.pyVersionTuple;n.FS.mkdirTree("/lib"),n.API.sitePackages=`/lib/python${i}.${a}/site-packages`,n.FS.mkdirTree(n.API.sitePackages),n.addRunDependency("install-stdlib");try{let r=await t;n.FS.writeFile(`/lib/python${i}${a}.zip`,r)}catch(r){console.error("Error occurred while installing the standard library:"),console.error(r)}finally{n.removeRunDependency("install-stdlib")}}}o(Fe,"installStdlib");function Oe(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[Fe(t),_e(e.env.HOME),ke(e.env),X,...Re(e.fsInit)]}o(Oe,"getFileSystemInitializationFuncs");function xe(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:n}=A(e+"pyodide.asm.wasm"),i=Z();return function(a,r){return async function(){a.sentinel=await i;try{let s;n?s=await WebAssembly.instantiateStreaming(n,a):s=await WebAssembly.instantiate(await t,a);let{instance:l,module:c}=s;r(l,c)}catch(s){console.warn("wasm instantiation failed!"),console.warn(s)}}(),{}}}o(xe,"getInstantiateWasmFunc");var te="0.29.3";function O(e){return e===void 0||e.endsWith("/")?e:e+"/"}o(O,"withTrailingSlash");var x=te;async function De(e={}){if(await W(),e.lockFileContents&&e.lockFileURL)throw new Error("Can't pass both lockFileContents and lockFileURL");let t=e.indexURL||await K();if(t=O(R(t)),e.packageBaseUrl=O(e.packageBaseUrl),e.cdnUrl=O(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v${x}/full/`),!e.lockFileContents){let a=e.lockFileURL??t+"pyodide-lock.json";e.lockFileContents=G(a),e.packageBaseUrl??=Y(a)}e.indexURL=t,e.packageCacheDir&&(e.packageCacheDir=O(R(e.packageCacheDir)));let n={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:"eefa1d2783f038b405f6fdbd885e200ffcbb89b7ab2a71d0037d14682574e855"},i=Object.assign(n,e);return i.env.HOME??="/home/pyodide",i.env.PYTHONINSPECT??="1",i}o(De,"initializeConfiguration");function Le(e){let t=ee(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}o(Le,"createEmscriptenSettings");async function Te(e){if(typeof _createPyodideModule!="function"){let t=`${e.indexURL}pyodide.asm.js`;await k(t)}}o(Te,"loadWasmScript");async function Ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,i=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=i.length,i}o(Ce,"prepareSnapshot");async function Ue(e){let t=await _createPyodideModule(e);if(e.exitCode!==void 0)throw new t.ExitStatus(e.exitCode);return t}o(Ue,"createPyodideModule");function We(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==x&&t.checkAPIVersion)throw new Error(`Pyodide version does not match: '${x}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=i=>{throw i.endsWith(".so")?new Error(`Failed to find dynamic library "${i}"`):new Error(`Unexpected call to locateFile("${i}")`)}}o(We,"configureAPI");function Me(e,t,n){let i=e.API,a;return t&&(a=i.restoreSnapshot(t)),i.finalizeBootstrap(a,n._snapshotDeserializer)}o(Me,"bootstrapPyodide");async function Be(e,t){let n=e._api;return n.sys.path.insert(0,""),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}o(Be,"finalizeSetup");async function B(e={}){let t=await De(e),n=Le(t);await Te(t);let i=await Ce(t,n),a=await Ue(n);We(a,t);let r=Me(a,i,t);return await Be(r,t)}o(B,"loadPyodide");globalThis.loadPyodide=B;return ce($e);})();
|
|
3
|
+
`).filter(function(r){return!r.match(t)},this);return a.map(function(r){if(r.indexOf(" > eval")>-1&&(r=r.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),r.indexOf("@")===-1&&r.indexOf(":")===-1)return new L({functionName:r});var s=/((.*".+"[^@]*)?[^@]*)(?:@)/,l=r.match(s),c=l&&l[1]?l[1]:void 0,d=this.extractLocation(r.replace(s,""));return new L({functionName:c,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:r})},this)},"ErrorStackParser$$parseFFOrSafari")}}o(me,"ErrorStackParser");var pe=new me;var j=pe;function ye(){if(typeof API<"u"&&API!==globalThis.API)return API.runtimeEnv;let e=typeof Bun<"u",t=typeof Deno<"u",n=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,i=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")===-1&&navigator.userAgent.indexOf("Safari")>-1;return ge({IN_BUN:e,IN_DENO:t,IN_NODE:n,IN_SAFARI:i,IN_SHELL:typeof read=="function"&&typeof load=="function"})}o(ye,"getGlobalRuntimeEnv");var f=ye();function ge(e){let t=e.IN_NODE&&typeof module<"u"&&module.exports&&typeof m=="function"&&typeof __dirname=="string",n=e.IN_NODE&&!t,i=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,a=i&&typeof window<"u"&&typeof window.document<"u"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof globalThis.importScripts!="function",r=i&&typeof globalThis.WorkerGlobalScope<"u"&&typeof globalThis.self<"u"&&globalThis.self instanceof globalThis.WorkerGlobalScope;return{...e,IN_BROWSER:i,IN_BROWSER_MAIN_THREAD:a,IN_BROWSER_WEB_WORKER:r,IN_NODE_COMMONJS:t,IN_NODE_ESM:n}}o(ge,"calculateDerivedFlags");var z,C,J,V,U;async function W(){if(!f.IN_NODE||(z=(await import(/* webpackIgnore */"node:url")).default,V=await import(/* webpackIgnore */"node:fs"),U=await import(/* webpackIgnore */"node:fs/promises"),J=(await import(/* webpackIgnore */"node:vm")).default,C=await import(/* webpackIgnore */"node:path"),M=C.sep,typeof m<"u"))return;let e=V,t=await import(/* webpackIgnore */"node:crypto"),n=await import(/* webpackIgnore */"ws"),i=await import(/* webpackIgnore */"node:child_process"),a={fs:e,crypto:t,ws:n,child_process:i};globalThis.require=function(r){return a[r]}}o(W,"initNodeModules");function be(e,t){return C.resolve(t||".",e)}o(be,"node_resolvePath");function ve(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}o(ve,"browser_resolvePath");var R;f.IN_NODE?R=be:f.IN_SHELL?R=o(e=>e,"resolvePath"):R=ve;var M;f.IN_NODE||(M="/");function Pe(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:U.readFile(e).then(n=>new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}}o(Pe,"node_getBinaryResponse");function Ee(e,t){if(e.startsWith("file://")&&(e=e.slice(7)),e.includes("://"))throw new Error("Shell cannot fetch urls");return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}o(Ee,"shell_getBinaryResponse");function he(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}o(he,"browser_getBinaryResponse");var A;f.IN_NODE?A=Pe:f.IN_SHELL?A=Ee:A=he;async function q(e,t){let{response:n,binary:i}=A(e,t);if(i)return i;let a=await n;if(!a.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await a.arrayBuffer())}o(q,"loadBinaryFile");var k;if(f.IN_BROWSER_MAIN_THREAD)k=o(async e=>await import(/* webpackIgnore */e),"loadScript");else if(f.IN_BROWSER_WEB_WORKER)k=o(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(/* webpackIgnore */e);else throw t}},"loadScript");else if(f.IN_NODE)k=Ne;else if(f.IN_SHELL)k=load;else throw new Error("Cannot determine runtime environment");async function Ne(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?J.runInThisContext(await(await fetch(e)).text()):await import(/* webpackIgnore */z.pathToFileURL(e).href)}o(Ne,"nodeLoadScript");async function G(e){if(f.IN_NODE){await W();let t=await U.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else if(f.IN_SHELL){let t=read(e);return JSON.parse(t)}else return await(await fetch(e)).json()}o(G,"loadLockFile");async function K(){if(f.IN_NODE_COMMONJS)return __dirname;let e;try{throw new Error}catch(i){e=i}let t=j.parse(e)[0].fileName;if(f.IN_NODE&&!t.startsWith("file://")&&(t=`file://${t}`),f.IN_NODE_ESM){let i=await import(/* webpackIgnore */"node:path");return(await import(/* webpackIgnore */"node:url")).fileURLToPath(i.dirname(t))}let n=t.lastIndexOf(M);if(n===-1)throw new Error("Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.");return t.slice(0,n)}o(K,"calculateDirname");function Y(e){return e.substring(0,e.lastIndexOf("/")+1)||globalThis.location?.toString()||"."}o(Y,"calculateInstallBaseUrl");function X(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:o(function(r){if(!r.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return n.mount.apply(null,arguments)},"mount"),syncfs:o(async(r,s,l)=>{try{let c=a.getLocalSet(r),d=await a.getRemoteSet(r),u=s?d:c,g=s?c:d;await a.reconcile(r,u,g),l(null)}catch(c){l(c)}},"syncfs"),getLocalSet:o(r=>{let s=Object.create(null);function l(u){return u!=="."&&u!==".."}o(l,"isRealDir");function c(u){return g=>i.join2(u,g)}o(c,"toAbsolute");let d=t.readdir(r.mountpoint).filter(l).map(c(r.mountpoint));for(;d.length;){let u=d.pop(),g=t.stat(u);t.isDir(g.mode)&&d.push.apply(d,t.readdir(u).filter(l).map(c(u))),s[u]={timestamp:g.mtime,mode:g.mode}}return{type:"local",entries:s}},"getLocalSet"),getRemoteSet:o(async r=>{let s=Object.create(null),l=await Se(r.opts.fileSystemHandle);for(let[c,d]of l)c!=="."&&(s[i.join2(r.mountpoint,c)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?a.FILE_MODE:a.DIR_MODE});return{type:"remote",entries:s,handles:l}},"getRemoteSet"),loadLocalEntry:o(r=>{let l=t.lookupPath(r,{}).node,c=t.stat(r);if(t.isDir(c.mode))return{timestamp:c.mtime,mode:c.mode};if(t.isFile(c.mode))return l.contents=n.getFileDataAsTypedArray(l),{timestamp:c.mtime,mode:c.mode,contents:l.contents};throw new Error("node type not supported")},"loadLocalEntry"),storeLocalEntry:o((r,s)=>{if(t.isDir(s.mode))t.mkdirTree(r,s.mode);else if(t.isFile(s.mode))t.writeFile(r,s.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(r,s.mode),t.utime(r,s.timestamp,s.timestamp)},"storeLocalEntry"),removeLocalEntry:o(r=>{var s=t.stat(r);t.isDir(s.mode)?t.rmdir(r):t.isFile(s.mode)&&t.unlink(r)},"removeLocalEntry"),loadRemoteEntry:o(async r=>{if(r.kind==="file"){let s=await r.getFile();return{contents:new Uint8Array(await s.arrayBuffer()),mode:a.FILE_MODE,timestamp:new Date(s.lastModified)}}else{if(r.kind==="directory")return{mode:a.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+r.kind)}},"loadRemoteEntry"),storeRemoteEntry:o(async(r,s,l)=>{let c=r.get(i.dirname(s)),d=t.isFile(l.mode)?await c.getFileHandle(i.basename(s),{create:!0}):await c.getDirectoryHandle(i.basename(s),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(l.contents),await u.close()}r.set(s,d)},"storeRemoteEntry"),removeRemoteEntry:o(async(r,s)=>{await r.get(i.dirname(s)).removeEntry(i.basename(s)),r.delete(s)},"removeRemoteEntry"),reconcile:o(async(r,s,l)=>{let c=0,d=[];Object.keys(s.entries).forEach(function(p){let v=s.entries[p],S=l.entries[p];(!S||t.isFile(v.mode)&&v.timestamp.getTime()>S.timestamp.getTime())&&(d.push(p),c++)}),d.sort();let u=[];if(Object.keys(l.entries).forEach(function(p){s.entries[p]||(u.push(p),c++)}),u.sort().reverse(),!c)return;let g=s.type==="remote"?s.handles:l.handles;for(let p of d){let v=i.normalize(p.replace(r.mountpoint,"/")).substring(1);if(l.type==="local"){let S=g.get(v),ne=await a.loadRemoteEntry(S);a.storeLocalEntry(p,ne)}else{let S=a.loadLocalEntry(p);await a.storeRemoteEntry(g,v,S)}}for(let p of u)if(l.type==="local")a.removeLocalEntry(p);else{let v=i.normalize(p.replace(r.mountpoint,"/")).substring(1);await a.removeRemoteEntry(g,v)}},"reconcile")};e.FS.filesystems.NATIVEFS_ASYNC=a}o(X,"initializeNativeFS");var Se=o(async e=>{let t=[];async function n(a){for await(let r of a.values())t.push(r),r.kind==="directory"&&await n(r)}o(n,"collect"),await n(e);let i=new Map;i.set(".",e);for(let a of t){let r=(await e.resolve(a)).join("/");i.set(r,a)}return i},"getFsHandles");var Q=H("AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECByECD2NyZWF0ZV9zZW50aW5lbAAAC2lzX3NlbnRpbmVsAAEKEwIHAPsBAPsbCwkAIAD7GvsUAAs=");var we=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&typeof navigator.maxTouchPoints<"u"&&navigator.maxTouchPoints>1)))try{let t=await WebAssembly.compile(Q);return await WebAssembly.instantiate(t)}catch(t){if(t instanceof WebAssembly.CompileError)return;throw t}}();async function Z(){let e=await we;if(e)return e.exports;let t=Symbol("error marker");return{create_sentinel:o(()=>t,"create_sentinel"),is_sentinel:o(n=>n===t,"is_sentinel")}}o(Z,"getSentinelImport");function ee(e){let t={config:e,runtimeEnv:f},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:Oe(e),print:e.stdout,printErr:e.stderr,onExit(i){n.exitCode=i},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:o(i=>e.indexURL+i,"locateFile"),instantiateWasm:xe(e.indexURL)};return n}o(ee,"createSettings");function _e(e){return function(t){let n="/";try{t.FS.mkdirTree(e)}catch(i){console.error(`Error occurred while making a home directory '${e}':`),console.error(i),console.error(`Using '${n}' for a home directory instead`),e=n}t.FS.chdir(e)}}o(_e,"createHomeDirectory");function ke(e){return function(t){Object.assign(t.ENV,e)}}o(ke,"setEnvironment");function Re(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}o(Re,"callFsInitHook");function Ae(e){let t=e.HEAPU32[e._Py_Version>>>2],n=t>>>24&255,i=t>>>16&255,a=t>>>8&255;return[n,i,a]}o(Ae,"computeVersionTuple");function Fe(e){let t=q(e);return async n=>{n.API.pyVersionTuple=Ae(n);let[i,a]=n.API.pyVersionTuple;n.FS.mkdirTree("/lib"),n.API.sitePackages=`/lib/python${i}.${a}/site-packages`,n.FS.mkdirTree(n.API.sitePackages),n.addRunDependency("install-stdlib");try{let r=await t;n.FS.writeFile(`/lib/python${i}${a}.zip`,r)}catch(r){console.error("Error occurred while installing the standard library:"),console.error(r)}finally{n.removeRunDependency("install-stdlib")}}}o(Fe,"installStdlib");function Oe(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[Fe(t),_e(e.env.HOME),ke(e.env),X,...Re(e.fsInit)]}o(Oe,"getFileSystemInitializationFuncs");function xe(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:n}=A(e+"pyodide.asm.wasm"),i=Z();return function(a,r){return async function(){a.sentinel=await i;try{let s;n?s=await WebAssembly.instantiateStreaming(n,a):s=await WebAssembly.instantiate(await t,a);let{instance:l,module:c}=s;r(l,c)}catch(s){console.warn("wasm instantiation failed!"),console.warn(s)}}(),{}}}o(xe,"getInstantiateWasmFunc");var te="0.29.3";function O(e){return e===void 0||e.endsWith("/")?e:e+"/"}o(O,"withTrailingSlash");var x=te;async function De(e={}){if(await W(),e.lockFileContents&&e.lockFileURL)throw new Error("Can't pass both lockFileContents and lockFileURL");let t=e.indexURL||await K();if(t=O(R(t)),e.packageBaseUrl=O(e.packageBaseUrl),e.cdnUrl=O(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v${x}/full/`),!e.lockFileContents){let a=e.lockFileURL??t+"pyodide-lock.json";e.lockFileContents=G(a),e.packageBaseUrl??=Y(a)}e.indexURL=t,e.packageCacheDir&&(e.packageCacheDir=O(R(e.packageCacheDir)));let n={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:"c659d99857fe46599de739184b6b542fbcc4ce2e18f75e97d9cd7e6fde2f33b3"},i=Object.assign(n,e);return i.env.HOME??="/home/pyodide",i.env.PYTHONINSPECT??="1",i}o(De,"initializeConfiguration");function Le(e){let t=ee(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}o(Le,"createEmscriptenSettings");async function Te(e){if(typeof _createPyodideModule!="function"){let t=`${e.indexURL}pyodide.asm.js`;await k(t)}}o(Te,"loadWasmScript");async function Ce(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,i=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=i.length,i}o(Ce,"prepareSnapshot");async function Ue(e){let t=await _createPyodideModule(e);if(e.exitCode!==void 0)throw new t.ExitStatus(e.exitCode);return t}o(Ue,"createPyodideModule");function We(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==x&&t.checkAPIVersion)throw new Error(`Pyodide version does not match: '${x}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=i=>{throw i.endsWith(".so")?new Error(`Failed to find dynamic library "${i}"`):new Error(`Unexpected call to locateFile("${i}")`)}}o(We,"configureAPI");function Me(e,t,n){let i=e.API,a;return t&&(a=i.restoreSnapshot(t)),i.finalizeBootstrap(a,n._snapshotDeserializer)}o(Me,"bootstrapPyodide");async function Be(e,t){let n=e._api;return n.sys.path.insert(0,""),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}o(Be,"finalizeSetup");async function B(e={}){let t=await De(e),n=Le(t);await Te(t);let i=await Ce(t,n),a=await Ue(n);We(a,t);let r=Me(a,i,t);return await Be(r,t)}o(B,"loadPyodide");globalThis.loadPyodide=B;return ce($e);})();
|
|
4
4
|
try{Object.assign(exports,loadPyodide)}catch(_){}
|
|
5
5
|
globalThis.loadPyodide=loadPyodide.loadPyodide;
|
|
6
6
|
//# sourceMappingURL=pyodide.js.map
|
package/assets/pyodide.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
var Z=Object.defineProperty;var o=(e,t)=>Z(e,"name",{value:t,configurable:!0}),A=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,n)=>(typeof require<"u"?require:t)[n]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+e+'" is not supported')});var W=(()=>{for(var e=new Uint8Array(128),t=0;t<64;t++)e[t<26?t+65:t<52?t+71:t<62?t-4:t*4-205]=t;return n=>{for(var i=n.length,s=new Uint8Array((i-(n[i-1]=="=")-(n[i-2]=="="))*3/4|0),r=0,a=0;r<i;){var l=e[n.charCodeAt(r++)],c=e[n.charCodeAt(r++)],d=e[n.charCodeAt(r++)],u=e[n.charCodeAt(r++)];s[a++]=l<<2|c>>4,s[a++]=c<<4|d>>2,s[a++]=d<<6|u}return s}})();function ee(e){return!isNaN(parseFloat(e))&&isFinite(e)}o(ee,"_isNumber");function P(e){return e.charAt(0).toUpperCase()+e.substring(1)}o(P,"_capitalize");function x(e){return function(){return this[e]}}o(x,"_getter");var N=["isConstructor","isEval","isNative","isToplevel"],S=["columnNumber","lineNumber"],I=["fileName","functionName","source"],te=["args"],ne=["evalOrigin"],F=N.concat(S,I,te,ne);function p(e){if(e)for(var t=0;t<F.length;t++)e[F[t]]!==void 0&&this["set"+P(F[t])](e[F[t]])}o(p,"StackFrame");p.prototype={getArgs:o(function(){return this.args},"getArgs"),setArgs:o(function(e){if(Object.prototype.toString.call(e)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=e},"setArgs"),getEvalOrigin:o(function(){return this.evalOrigin},"getEvalOrigin"),setEvalOrigin:o(function(e){if(e instanceof p)this.evalOrigin=e;else if(e instanceof Object)this.evalOrigin=new p(e);else throw new TypeError("Eval Origin must be an Object or StackFrame")},"setEvalOrigin"),toString:o(function(){var e=this.getFileName()||"",t=this.getLineNumber()||"",n=this.getColumnNumber()||"",i=this.getFunctionName()||"";return this.getIsEval()?e?"[eval] ("+e+":"+t+":"+n+")":"[eval]:"+t+":"+n:i?i+" ("+e+":"+t+":"+n+")":e+":"+t+":"+n},"toString")};p.fromString=o(function(t){var n=t.indexOf("("),i=t.lastIndexOf(")"),s=t.substring(0,n),r=t.substring(n+1,i).split(","),a=t.substring(i+1);if(a.indexOf("@")===0)var l=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(a,""),c=l[1],d=l[2],u=l[3];return new p({functionName:s,args:r||void 0,fileName:c,lineNumber:d||void 0,columnNumber:u||void 0})},"StackFrame$$fromString");for(b=0;b<N.length;b++)p.prototype["get"+P(N[b])]=x(N[b]),p.prototype["set"+P(N[b])]=function(e){return function(t){this[e]=!!t}}(N[b]);var b;for(v=0;v<S.length;v++)p.prototype["get"+P(S[v])]=x(S[v]),p.prototype["set"+P(S[v])]=function(e){return function(t){if(!ee(t))throw new TypeError(e+" must be a Number");this[e]=Number(t)}}(S[v]);var v;for(E=0;E<I.length;E++)p.prototype["get"+P(I[E])]=x(I[E]),p.prototype["set"+P(I[E])]=function(e){return function(t){this[e]=String(t)}}(I[E]);var E,O=p;function re(){var e=/^\s*at .*(\S+:\d+|\(native\))/m,t=/^(eval@)?(\[native code])?$/;return{parse:o(function(i){if(i.stack&&i.stack.match(e))return this.parseV8OrIE(i);if(i.stack)return this.parseFFOrSafari(i);throw new Error("Cannot parse given Error object")},"ErrorStackParser$$parse"),extractLocation:o(function(i){if(i.indexOf(":")===-1)return[i];var s=/(.+?)(?::(\d+))?(?::(\d+))?$/,r=s.exec(i.replace(/[()]/g,""));return[r[1],r[2]||void 0,r[3]||void 0]},"ErrorStackParser$$extractLocation"),parseV8OrIE:o(function(i){var s=i.stack.split(`
|
|
2
2
|
`).filter(function(r){return!!r.match(e)},this);return s.map(function(r){r.indexOf("(eval ")>-1&&(r=r.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var a=r.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),l=a.match(/ (\(.+\)$)/);a=l?a.replace(l[0],""):a;var c=this.extractLocation(l?l[1]:a),d=l&&a||void 0,u=["eval","<anonymous>"].indexOf(c[0])>-1?void 0:c[0];return new O({functionName:d,fileName:u,lineNumber:c[1],columnNumber:c[2],source:r})},this)},"ErrorStackParser$$parseV8OrIE"),parseFFOrSafari:o(function(i){var s=i.stack.split(`
|
|
3
|
-
`).filter(function(r){return!r.match(t)},this);return s.map(function(r){if(r.indexOf(" > eval")>-1&&(r=r.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),r.indexOf("@")===-1&&r.indexOf(":")===-1)return new O({functionName:r});var a=/((.*".+"[^@]*)?[^@]*)(?:@)/,l=r.match(a),c=l&&l[1]?l[1]:void 0,d=this.extractLocation(r.replace(a,""));return new O({functionName:c,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:r})},this)},"ErrorStackParser$$parseFFOrSafari")}}o(re,"ErrorStackParser");var ie=new re;var M=ie;function oe(){if(typeof API<"u"&&API!==globalThis.API)return API.runtimeEnv;let e=typeof Bun<"u",t=typeof Deno<"u",n=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,i=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")===-1&&navigator.userAgent.indexOf("Safari")>-1;return ae({IN_BUN:e,IN_DENO:t,IN_NODE:n,IN_SAFARI:i,IN_SHELL:typeof read=="function"&&typeof load=="function"})}o(oe,"getGlobalRuntimeEnv");var f=oe();function ae(e){let t=e.IN_NODE&&typeof module<"u"&&module.exports&&typeof A=="function"&&typeof __dirname=="string",n=e.IN_NODE&&!t,i=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,s=i&&typeof window<"u"&&typeof window.document<"u"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof globalThis.importScripts!="function",r=i&&typeof globalThis.WorkerGlobalScope<"u"&&typeof globalThis.self<"u"&&globalThis.self instanceof globalThis.WorkerGlobalScope;return{...e,IN_BROWSER:i,IN_BROWSER_MAIN_THREAD:s,IN_BROWSER_WEB_WORKER:r,IN_NODE_COMMONJS:t,IN_NODE_ESM:n}}o(ae,"calculateDerivedFlags");var $,D,H,B,L;async function T(){if(!f.IN_NODE||($=(await import("node:url")).default,B=await import("node:fs"),L=await import("node:fs/promises"),H=(await import("node:vm")).default,D=await import("node:path"),C=D.sep,typeof A<"u"))return;let e=B,t=await import("node:crypto"),n=await import("ws"),i=await import("node:child_process"),s={fs:e,crypto:t,ws:n,child_process:i};globalThis.require=function(r){return s[r]}}o(T,"initNodeModules");function se(e,t){return D.resolve(t||".",e)}o(se,"node_resolvePath");function le(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}o(le,"browser_resolvePath");var _;f.IN_NODE?_=se:f.IN_SHELL?_=o(e=>e,"resolvePath"):_=le;var C;f.IN_NODE||(C="/");function ce(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:L.readFile(e).then(n=>new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}}o(ce,"node_getBinaryResponse");function de(e,t){if(e.startsWith("file://")&&(e=e.slice(7)),e.includes("://"))throw new Error("Shell cannot fetch urls");return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}o(de,"shell_getBinaryResponse");function ue(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}o(ue,"browser_getBinaryResponse");var R;f.IN_NODE?R=ce:f.IN_SHELL?R=de:R=ue;async function j(e,t){let{response:n,binary:i}=R(e,t);if(i)return i;let s=await n;if(!s.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await s.arrayBuffer())}o(j,"loadBinaryFile");var w;if(f.IN_BROWSER_MAIN_THREAD)w=o(async e=>await import(e),"loadScript");else if(f.IN_BROWSER_WEB_WORKER)w=o(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(e);else throw t}},"loadScript");else if(f.IN_NODE)w=fe;else if(f.IN_SHELL)w=load;else throw new Error("Cannot determine runtime environment");async function fe(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?H.runInThisContext(await(await fetch(e)).text()):await import($.pathToFileURL(e).href)}o(fe,"nodeLoadScript");async function V(e){if(f.IN_NODE){await T();let t=await L.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else if(f.IN_SHELL){let t=read(e);return JSON.parse(t)}else return await(await fetch(e)).json()}o(V,"loadLockFile");async function z(){if(f.IN_NODE_COMMONJS)return __dirname;let e;try{throw new Error}catch(i){e=i}let t=M.parse(e)[0].fileName;if(f.IN_NODE&&!t.startsWith("file://")&&(t=`file://${t}`),f.IN_NODE_ESM){let i=await import("node:path");return(await import("node:url")).fileURLToPath(i.dirname(t))}let n=t.lastIndexOf(C);if(n===-1)throw new Error("Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.");return t.slice(0,n)}o(z,"calculateDirname");function J(e){return e.substring(0,e.lastIndexOf("/")+1)||globalThis.location?.toString()||"."}o(J,"calculateInstallBaseUrl");function q(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:o(function(r){if(!r.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return n.mount.apply(null,arguments)},"mount"),syncfs:o(async(r,a,l)=>{try{let c=s.getLocalSet(r),d=await s.getRemoteSet(r),u=a?d:c,y=a?c:d;await s.reconcile(r,u,y),l(null)}catch(c){l(c)}},"syncfs"),getLocalSet:o(r=>{let a=Object.create(null);function l(u){return u!=="."&&u!==".."}o(l,"isRealDir");function c(u){return y=>i.join2(u,y)}o(c,"toAbsolute");let d=t.readdir(r.mountpoint).filter(l).map(c(r.mountpoint));for(;d.length;){let u=d.pop(),y=t.stat(u);t.isDir(y.mode)&&d.push.apply(d,t.readdir(u).filter(l).map(c(u))),a[u]={timestamp:y.mtime,mode:y.mode}}return{type:"local",entries:a}},"getLocalSet"),getRemoteSet:o(async r=>{let a=Object.create(null),l=await me(r.opts.fileSystemHandle);for(let[c,d]of l)c!=="."&&(a[i.join2(r.mountpoint,c)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?s.FILE_MODE:s.DIR_MODE});return{type:"remote",entries:a,handles:l}},"getRemoteSet"),loadLocalEntry:o(r=>{let l=t.lookupPath(r,{}).node,c=t.stat(r);if(t.isDir(c.mode))return{timestamp:c.mtime,mode:c.mode};if(t.isFile(c.mode))return l.contents=n.getFileDataAsTypedArray(l),{timestamp:c.mtime,mode:c.mode,contents:l.contents};throw new Error("node type not supported")},"loadLocalEntry"),storeLocalEntry:o((r,a)=>{if(t.isDir(a.mode))t.mkdirTree(r,a.mode);else if(t.isFile(a.mode))t.writeFile(r,a.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(r,a.mode),t.utime(r,a.timestamp,a.timestamp)},"storeLocalEntry"),removeLocalEntry:o(r=>{var a=t.stat(r);t.isDir(a.mode)?t.rmdir(r):t.isFile(a.mode)&&t.unlink(r)},"removeLocalEntry"),loadRemoteEntry:o(async r=>{if(r.kind==="file"){let a=await r.getFile();return{contents:new Uint8Array(await a.arrayBuffer()),mode:s.FILE_MODE,timestamp:new Date(a.lastModified)}}else{if(r.kind==="directory")return{mode:s.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+r.kind)}},"loadRemoteEntry"),storeRemoteEntry:o(async(r,a,l)=>{let c=r.get(i.dirname(a)),d=t.isFile(l.mode)?await c.getFileHandle(i.basename(a),{create:!0}):await c.getDirectoryHandle(i.basename(a),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(l.contents),await u.close()}r.set(a,d)},"storeRemoteEntry"),removeRemoteEntry:o(async(r,a)=>{await r.get(i.dirname(a)).removeEntry(i.basename(a)),r.delete(a)},"removeRemoteEntry"),reconcile:o(async(r,a,l)=>{let c=0,d=[];Object.keys(a.entries).forEach(function(m){let g=a.entries[m],h=l.entries[m];(!h||t.isFile(g.mode)&&g.timestamp.getTime()>h.timestamp.getTime())&&(d.push(m),c++)}),d.sort();let u=[];if(Object.keys(l.entries).forEach(function(m){a.entries[m]||(u.push(m),c++)}),u.sort().reverse(),!c)return;let y=a.type==="remote"?a.handles:l.handles;for(let m of d){let g=i.normalize(m.replace(r.mountpoint,"/")).substring(1);if(l.type==="local"){let h=y.get(g),Q=await s.loadRemoteEntry(h);s.storeLocalEntry(m,Q)}else{let h=s.loadLocalEntry(m);await s.storeRemoteEntry(y,g,h)}}for(let m of u)if(l.type==="local")s.removeLocalEntry(m);else{let g=i.normalize(m.replace(r.mountpoint,"/")).substring(1);await s.removeRemoteEntry(y,g)}},"reconcile")};e.FS.filesystems.NATIVEFS_ASYNC=s}o(q,"initializeNativeFS");var me=o(async e=>{let t=[];async function n(s){for await(let r of s.values())t.push(r),r.kind==="directory"&&await n(r)}o(n,"collect"),await n(e);let i=new Map;i.set(".",e);for(let s of t){let r=(await e.resolve(s)).join("/");i.set(r,s)}return i},"getFsHandles");var G=W("AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECByECD2NyZWF0ZV9zZW50aW5lbAAAC2lzX3NlbnRpbmVsAAEKEwIHAPsBAPsbCwkAIAD7GvsUAAs=");var ye=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&typeof navigator.maxTouchPoints<"u"&&navigator.maxTouchPoints>1)))try{let t=await WebAssembly.compile(G);return await WebAssembly.instantiate(t)}catch(t){if(t instanceof WebAssembly.CompileError)return;throw t}}();async function K(){let e=await ye;if(e)return e.exports;let t=Symbol("error marker");return{create_sentinel:o(()=>t,"create_sentinel"),is_sentinel:o(n=>n===t,"is_sentinel")}}o(K,"getSentinelImport");function Y(e){let t={config:e,runtimeEnv:f},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:he(e),print:e.stdout,printErr:e.stderr,onExit(i){n.exitCode=i},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:o(i=>e.indexURL+i,"locateFile"),instantiateWasm:Ne(e.indexURL)};return n}o(Y,"createSettings");function ge(e){return function(t){let n="/";try{t.FS.mkdirTree(e)}catch(i){console.error(`Error occurred while making a home directory '${e}':`),console.error(i),console.error(`Using '${n}' for a home directory instead`),e=n}t.FS.chdir(e)}}o(ge,"createHomeDirectory");function be(e){return function(t){Object.assign(t.ENV,e)}}o(be,"setEnvironment");function ve(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}o(ve,"callFsInitHook");function Ee(e){let t=e.HEAPU32[e._Py_Version>>>2],n=t>>>24&255,i=t>>>16&255,s=t>>>8&255;return[n,i,s]}o(Ee,"computeVersionTuple");function Pe(e){let t=j(e);return async n=>{n.API.pyVersionTuple=Ee(n);let[i,s]=n.API.pyVersionTuple;n.FS.mkdirTree("/lib"),n.API.sitePackages=`/lib/python${i}.${s}/site-packages`,n.FS.mkdirTree(n.API.sitePackages),n.addRunDependency("install-stdlib");try{let r=await t;n.FS.writeFile(`/lib/python${i}${s}.zip`,r)}catch(r){console.error("Error occurred while installing the standard library:"),console.error(r)}finally{n.removeRunDependency("install-stdlib")}}}o(Pe,"installStdlib");function he(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[Pe(t),ge(e.env.HOME),be(e.env),q,...ve(e.fsInit)]}o(he,"getFileSystemInitializationFuncs");function Ne(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:n}=R(e+"pyodide.asm.wasm"),i=K();return function(s,r){return async function(){s.sentinel=await i;try{let a;n?a=await WebAssembly.instantiateStreaming(n,s):a=await WebAssembly.instantiate(await t,s);let{instance:l,module:c}=a;r(l,c)}catch(a){console.warn("wasm instantiation failed!"),console.warn(a)}}(),{}}}o(Ne,"getInstantiateWasmFunc");var X="0.29.3";function k(e){return e===void 0||e.endsWith("/")?e:e+"/"}o(k,"withTrailingSlash");var U=X;async function Se(e={}){if(await T(),e.lockFileContents&&e.lockFileURL)throw new Error("Can't pass both lockFileContents and lockFileURL");let t=e.indexURL||await z();if(t=k(_(t)),e.packageBaseUrl=k(e.packageBaseUrl),e.cdnUrl=k(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v${U}/full/`),!e.lockFileContents){let s=e.lockFileURL??t+"pyodide-lock.json";e.lockFileContents=V(s),e.packageBaseUrl??=J(s)}e.indexURL=t,e.packageCacheDir&&(e.packageCacheDir=k(_(e.packageCacheDir)));let n={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:"eefa1d2783f038b405f6fdbd885e200ffcbb89b7ab2a71d0037d14682574e855"},i=Object.assign(n,e);return i.env.HOME??="/home/pyodide",i.env.PYTHONINSPECT??="1",i}o(Se,"initializeConfiguration");function Ie(e){let t=Y(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}o(Ie,"createEmscriptenSettings");async function we(e){if(typeof _createPyodideModule!="function"){let t=`${e.indexURL}pyodide.asm.js`;await w(t)}}o(we,"loadWasmScript");async function _e(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,i=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=i.length,i}o(_e,"prepareSnapshot");async function Re(e){let t=await _createPyodideModule(e);if(e.exitCode!==void 0)throw new t.ExitStatus(e.exitCode);return t}o(Re,"createPyodideModule");function ke(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==U&&t.checkAPIVersion)throw new Error(`Pyodide version does not match: '${U}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=i=>{throw i.endsWith(".so")?new Error(`Failed to find dynamic library "${i}"`):new Error(`Unexpected call to locateFile("${i}")`)}}o(ke,"configureAPI");function Ae(e,t,n){let i=e.API,s;return t&&(s=i.restoreSnapshot(t)),i.finalizeBootstrap(s,n._snapshotDeserializer)}o(Ae,"bootstrapPyodide");async function Fe(e,t){let n=e._api;return n.sys.path.insert(0,""),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}o(Fe,"finalizeSetup");async function ct(e={}){let t=await Se(e),n=Ie(t);await we(t);let i=await _e(t,n),s=await Re(n);ke(s,t);let r=Ae(s,i,t);return await Fe(r,t)}o(ct,"loadPyodide");export{ct as loadPyodide,U as version};
|
|
3
|
+
`).filter(function(r){return!r.match(t)},this);return s.map(function(r){if(r.indexOf(" > eval")>-1&&(r=r.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),r.indexOf("@")===-1&&r.indexOf(":")===-1)return new O({functionName:r});var a=/((.*".+"[^@]*)?[^@]*)(?:@)/,l=r.match(a),c=l&&l[1]?l[1]:void 0,d=this.extractLocation(r.replace(a,""));return new O({functionName:c,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:r})},this)},"ErrorStackParser$$parseFFOrSafari")}}o(re,"ErrorStackParser");var ie=new re;var M=ie;function oe(){if(typeof API<"u"&&API!==globalThis.API)return API.runtimeEnv;let e=typeof Bun<"u",t=typeof Deno<"u",n=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&!process.browser,i=typeof navigator=="object"&&typeof navigator.userAgent=="string"&&navigator.userAgent.indexOf("Chrome")===-1&&navigator.userAgent.indexOf("Safari")>-1;return ae({IN_BUN:e,IN_DENO:t,IN_NODE:n,IN_SAFARI:i,IN_SHELL:typeof read=="function"&&typeof load=="function"})}o(oe,"getGlobalRuntimeEnv");var f=oe();function ae(e){let t=e.IN_NODE&&typeof module<"u"&&module.exports&&typeof A=="function"&&typeof __dirname=="string",n=e.IN_NODE&&!t,i=!e.IN_NODE&&!e.IN_DENO&&!e.IN_BUN,s=i&&typeof window<"u"&&typeof window.document<"u"&&typeof document.createElement=="function"&&"sessionStorage"in window&&typeof globalThis.importScripts!="function",r=i&&typeof globalThis.WorkerGlobalScope<"u"&&typeof globalThis.self<"u"&&globalThis.self instanceof globalThis.WorkerGlobalScope;return{...e,IN_BROWSER:i,IN_BROWSER_MAIN_THREAD:s,IN_BROWSER_WEB_WORKER:r,IN_NODE_COMMONJS:t,IN_NODE_ESM:n}}o(ae,"calculateDerivedFlags");var $,D,H,B,L;async function T(){if(!f.IN_NODE||($=(await import("node:url")).default,B=await import("node:fs"),L=await import("node:fs/promises"),H=(await import("node:vm")).default,D=await import("node:path"),C=D.sep,typeof A<"u"))return;let e=B,t=await import("node:crypto"),n=await import("ws"),i=await import("node:child_process"),s={fs:e,crypto:t,ws:n,child_process:i};globalThis.require=function(r){return s[r]}}o(T,"initNodeModules");function se(e,t){return D.resolve(t||".",e)}o(se,"node_resolvePath");function le(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}o(le,"browser_resolvePath");var _;f.IN_NODE?_=se:f.IN_SHELL?_=o(e=>e,"resolvePath"):_=le;var C;f.IN_NODE||(C="/");function ce(e,t){return e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?{response:fetch(e)}:{binary:L.readFile(e).then(n=>new Uint8Array(n.buffer,n.byteOffset,n.byteLength))}}o(ce,"node_getBinaryResponse");function de(e,t){if(e.startsWith("file://")&&(e=e.slice(7)),e.includes("://"))throw new Error("Shell cannot fetch urls");return{binary:Promise.resolve(new Uint8Array(readbuffer(e)))}}o(de,"shell_getBinaryResponse");function ue(e,t){let n=new URL(e,location);return{response:fetch(n,t?{integrity:t}:{})}}o(ue,"browser_getBinaryResponse");var R;f.IN_NODE?R=ce:f.IN_SHELL?R=de:R=ue;async function j(e,t){let{response:n,binary:i}=R(e,t);if(i)return i;let s=await n;if(!s.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await s.arrayBuffer())}o(j,"loadBinaryFile");var w;if(f.IN_BROWSER_MAIN_THREAD)w=o(async e=>await import(e),"loadScript");else if(f.IN_BROWSER_WEB_WORKER)w=o(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(e);else throw t}},"loadScript");else if(f.IN_NODE)w=fe;else if(f.IN_SHELL)w=load;else throw new Error("Cannot determine runtime environment");async function fe(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?H.runInThisContext(await(await fetch(e)).text()):await import($.pathToFileURL(e).href)}o(fe,"nodeLoadScript");async function V(e){if(f.IN_NODE){await T();let t=await L.readFile(e,{encoding:"utf8"});return JSON.parse(t)}else if(f.IN_SHELL){let t=read(e);return JSON.parse(t)}else return await(await fetch(e)).json()}o(V,"loadLockFile");async function z(){if(f.IN_NODE_COMMONJS)return __dirname;let e;try{throw new Error}catch(i){e=i}let t=M.parse(e)[0].fileName;if(f.IN_NODE&&!t.startsWith("file://")&&(t=`file://${t}`),f.IN_NODE_ESM){let i=await import("node:path");return(await import("node:url")).fileURLToPath(i.dirname(t))}let n=t.lastIndexOf(C);if(n===-1)throw new Error("Could not extract indexURL path from pyodide module location. Please pass the indexURL explicitly to loadPyodide.");return t.slice(0,n)}o(z,"calculateDirname");function J(e){return e.substring(0,e.lastIndexOf("/")+1)||globalThis.location?.toString()||"."}o(J,"calculateInstallBaseUrl");function q(e){let t=e.FS,n=e.FS.filesystems.MEMFS,i=e.PATH,s={DIR_MODE:16895,FILE_MODE:33279,mount:o(function(r){if(!r.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return n.mount.apply(null,arguments)},"mount"),syncfs:o(async(r,a,l)=>{try{let c=s.getLocalSet(r),d=await s.getRemoteSet(r),u=a?d:c,y=a?c:d;await s.reconcile(r,u,y),l(null)}catch(c){l(c)}},"syncfs"),getLocalSet:o(r=>{let a=Object.create(null);function l(u){return u!=="."&&u!==".."}o(l,"isRealDir");function c(u){return y=>i.join2(u,y)}o(c,"toAbsolute");let d=t.readdir(r.mountpoint).filter(l).map(c(r.mountpoint));for(;d.length;){let u=d.pop(),y=t.stat(u);t.isDir(y.mode)&&d.push.apply(d,t.readdir(u).filter(l).map(c(u))),a[u]={timestamp:y.mtime,mode:y.mode}}return{type:"local",entries:a}},"getLocalSet"),getRemoteSet:o(async r=>{let a=Object.create(null),l=await me(r.opts.fileSystemHandle);for(let[c,d]of l)c!=="."&&(a[i.join2(r.mountpoint,c)]={timestamp:d.kind==="file"?new Date((await d.getFile()).lastModified):new Date,mode:d.kind==="file"?s.FILE_MODE:s.DIR_MODE});return{type:"remote",entries:a,handles:l}},"getRemoteSet"),loadLocalEntry:o(r=>{let l=t.lookupPath(r,{}).node,c=t.stat(r);if(t.isDir(c.mode))return{timestamp:c.mtime,mode:c.mode};if(t.isFile(c.mode))return l.contents=n.getFileDataAsTypedArray(l),{timestamp:c.mtime,mode:c.mode,contents:l.contents};throw new Error("node type not supported")},"loadLocalEntry"),storeLocalEntry:o((r,a)=>{if(t.isDir(a.mode))t.mkdirTree(r,a.mode);else if(t.isFile(a.mode))t.writeFile(r,a.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(r,a.mode),t.utime(r,a.timestamp,a.timestamp)},"storeLocalEntry"),removeLocalEntry:o(r=>{var a=t.stat(r);t.isDir(a.mode)?t.rmdir(r):t.isFile(a.mode)&&t.unlink(r)},"removeLocalEntry"),loadRemoteEntry:o(async r=>{if(r.kind==="file"){let a=await r.getFile();return{contents:new Uint8Array(await a.arrayBuffer()),mode:s.FILE_MODE,timestamp:new Date(a.lastModified)}}else{if(r.kind==="directory")return{mode:s.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+r.kind)}},"loadRemoteEntry"),storeRemoteEntry:o(async(r,a,l)=>{let c=r.get(i.dirname(a)),d=t.isFile(l.mode)?await c.getFileHandle(i.basename(a),{create:!0}):await c.getDirectoryHandle(i.basename(a),{create:!0});if(d.kind==="file"){let u=await d.createWritable();await u.write(l.contents),await u.close()}r.set(a,d)},"storeRemoteEntry"),removeRemoteEntry:o(async(r,a)=>{await r.get(i.dirname(a)).removeEntry(i.basename(a)),r.delete(a)},"removeRemoteEntry"),reconcile:o(async(r,a,l)=>{let c=0,d=[];Object.keys(a.entries).forEach(function(m){let g=a.entries[m],h=l.entries[m];(!h||t.isFile(g.mode)&&g.timestamp.getTime()>h.timestamp.getTime())&&(d.push(m),c++)}),d.sort();let u=[];if(Object.keys(l.entries).forEach(function(m){a.entries[m]||(u.push(m),c++)}),u.sort().reverse(),!c)return;let y=a.type==="remote"?a.handles:l.handles;for(let m of d){let g=i.normalize(m.replace(r.mountpoint,"/")).substring(1);if(l.type==="local"){let h=y.get(g),Q=await s.loadRemoteEntry(h);s.storeLocalEntry(m,Q)}else{let h=s.loadLocalEntry(m);await s.storeRemoteEntry(y,g,h)}}for(let m of u)if(l.type==="local")s.removeLocalEntry(m);else{let g=i.normalize(m.replace(r.mountpoint,"/")).substring(1);await s.removeRemoteEntry(y,g)}},"reconcile")};e.FS.filesystems.NATIVEFS_ASYNC=s}o(q,"initializeNativeFS");var me=o(async e=>{let t=[];async function n(s){for await(let r of s.values())t.push(r),r.kind==="directory"&&await n(r)}o(n,"collect"),await n(e);let i=new Map;i.set(".",e);for(let s of t){let r=(await e.resolve(s)).join("/");i.set(r,s)}return i},"getFsHandles");var G=W("AGFzbQEAAAABDANfAGAAAW9gAW8BfwMDAgECByECD2NyZWF0ZV9zZW50aW5lbAAAC2lzX3NlbnRpbmVsAAEKEwIHAPsBAPsbCwkAIAD7GvsUAAs=");var ye=async function(){if(!(globalThis.navigator&&(/iPad|iPhone|iPod/.test(navigator.userAgent)||navigator.platform==="MacIntel"&&typeof navigator.maxTouchPoints<"u"&&navigator.maxTouchPoints>1)))try{let t=await WebAssembly.compile(G);return await WebAssembly.instantiate(t)}catch(t){if(t instanceof WebAssembly.CompileError)return;throw t}}();async function K(){let e=await ye;if(e)return e.exports;let t=Symbol("error marker");return{create_sentinel:o(()=>t,"create_sentinel"),is_sentinel:o(n=>n===t,"is_sentinel")}}o(K,"getSentinelImport");function Y(e){let t={config:e,runtimeEnv:f},n={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:he(e),print:e.stdout,printErr:e.stderr,onExit(i){n.exitCode=i},thisProgram:e._sysExecutable,arguments:e.args,API:t,locateFile:o(i=>e.indexURL+i,"locateFile"),instantiateWasm:Ne(e.indexURL)};return n}o(Y,"createSettings");function ge(e){return function(t){let n="/";try{t.FS.mkdirTree(e)}catch(i){console.error(`Error occurred while making a home directory '${e}':`),console.error(i),console.error(`Using '${n}' for a home directory instead`),e=n}t.FS.chdir(e)}}o(ge,"createHomeDirectory");function be(e){return function(t){Object.assign(t.ENV,e)}}o(be,"setEnvironment");function ve(e){return e?[async t=>{t.addRunDependency("fsInitHook");try{await e(t.FS,{sitePackages:t.API.sitePackages})}finally{t.removeRunDependency("fsInitHook")}}]:[]}o(ve,"callFsInitHook");function Ee(e){let t=e.HEAPU32[e._Py_Version>>>2],n=t>>>24&255,i=t>>>16&255,s=t>>>8&255;return[n,i,s]}o(Ee,"computeVersionTuple");function Pe(e){let t=j(e);return async n=>{n.API.pyVersionTuple=Ee(n);let[i,s]=n.API.pyVersionTuple;n.FS.mkdirTree("/lib"),n.API.sitePackages=`/lib/python${i}.${s}/site-packages`,n.FS.mkdirTree(n.API.sitePackages),n.addRunDependency("install-stdlib");try{let r=await t;n.FS.writeFile(`/lib/python${i}${s}.zip`,r)}catch(r){console.error("Error occurred while installing the standard library:"),console.error(r)}finally{n.removeRunDependency("install-stdlib")}}}o(Pe,"installStdlib");function he(e){let t;return e.stdLibURL!=null?t=e.stdLibURL:t=e.indexURL+"python_stdlib.zip",[Pe(t),ge(e.env.HOME),be(e.env),q,...ve(e.fsInit)]}o(he,"getFileSystemInitializationFuncs");function Ne(e){if(typeof WasmOffsetConverter<"u")return;let{binary:t,response:n}=R(e+"pyodide.asm.wasm"),i=K();return function(s,r){return async function(){s.sentinel=await i;try{let a;n?a=await WebAssembly.instantiateStreaming(n,s):a=await WebAssembly.instantiate(await t,s);let{instance:l,module:c}=a;r(l,c)}catch(a){console.warn("wasm instantiation failed!"),console.warn(a)}}(),{}}}o(Ne,"getInstantiateWasmFunc");var X="0.29.3";function k(e){return e===void 0||e.endsWith("/")?e:e+"/"}o(k,"withTrailingSlash");var U=X;async function Se(e={}){if(await T(),e.lockFileContents&&e.lockFileURL)throw new Error("Can't pass both lockFileContents and lockFileURL");let t=e.indexURL||await z();if(t=k(_(t)),e.packageBaseUrl=k(e.packageBaseUrl),e.cdnUrl=k(e.packageBaseUrl??`https://cdn.jsdelivr.net/pyodide/v${U}/full/`),!e.lockFileContents){let s=e.lockFileURL??t+"pyodide-lock.json";e.lockFileContents=V(s),e.packageBaseUrl??=J(s)}e.indexURL=t,e.packageCacheDir&&(e.packageCacheDir=k(_(e.packageCacheDir)));let n={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?()=>globalThis.prompt():void 0,args:[],env:{},packages:[],packageCacheDir:e.packageBaseUrl,enableRunUntilComplete:!0,checkAPIVersion:!0,BUILD_ID:"c659d99857fe46599de739184b6b542fbcc4ce2e18f75e97d9cd7e6fde2f33b3"},i=Object.assign(n,e);return i.env.HOME??="/home/pyodide",i.env.PYTHONINSPECT??="1",i}o(Se,"initializeConfiguration");function Ie(e){let t=Y(e),n=t.API;return n.lockFilePromise=Promise.resolve(e.lockFileContents),t}o(Ie,"createEmscriptenSettings");async function we(e){if(typeof _createPyodideModule!="function"){let t=`${e.indexURL}pyodide.asm.js`;await w(t)}}o(we,"loadWasmScript");async function _e(e,t){if(!e._loadSnapshot)return;let n=await e._loadSnapshot,i=ArrayBuffer.isView(n)?n:new Uint8Array(n);return t.noInitialRun=!0,t.INITIAL_MEMORY=i.length,i}o(_e,"prepareSnapshot");async function Re(e){let t=await _createPyodideModule(e);if(e.exitCode!==void 0)throw new t.ExitStatus(e.exitCode);return t}o(Re,"createPyodideModule");function ke(e,t){let n=e.API;if(t.pyproxyToStringRepr&&n.setPyProxyToStringMethod(!0),t.convertNullToNone&&n.setCompatNullToNone(!0),t.toJsLiteralMap&&n.setCompatToJsLiteralMap(!0),n.version!==U&&t.checkAPIVersion)throw new Error(`Pyodide version does not match: '${U}' <==> '${n.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);e.locateFile=i=>{throw i.endsWith(".so")?new Error(`Failed to find dynamic library "${i}"`):new Error(`Unexpected call to locateFile("${i}")`)}}o(ke,"configureAPI");function Ae(e,t,n){let i=e.API,s;return t&&(s=i.restoreSnapshot(t)),i.finalizeBootstrap(s,n._snapshotDeserializer)}o(Ae,"bootstrapPyodide");async function Fe(e,t){let n=e._api;return n.sys.path.insert(0,""),n._pyodide.set_excepthook(),await n.packageIndexReady,n.initializeStreams(t.stdin,t.stdout,t.stderr),e}o(Fe,"finalizeSetup");async function ct(e={}){let t=await Se(e),n=Ie(t);await we(t);let i=await _e(t,n),s=await Re(n);ke(s,t);let r=Ae(s,i,t);return await Fe(r,t)}o(ct,"loadPyodide");export{ct as loadPyodide,U as version};
|
|
4
4
|
//# sourceMappingURL=pyodide.mjs.map
|
package/assets/python_stdlib.zip
CHANGED
|
Binary file
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a URL's host is in the allowlist.
|
|
3
|
+
* Mirrors the Rust HostAllowlist semantics: exact host, wildcard subdomain
|
|
4
|
+
* (*.example.com), and host:port. Empty list denies all.
|
|
5
|
+
*/
|
|
6
|
+
export function isHostAllowed(url, allowedHosts) {
|
|
7
|
+
if (!allowedHosts || allowedHosts.length === 0) {
|
|
8
|
+
return false;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
let parsed;
|
|
12
|
+
try {
|
|
13
|
+
parsed = new URL(url);
|
|
14
|
+
} catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
const host = parsed.hostname.toLowerCase();
|
|
19
|
+
const port = parsed.port ? Number(parsed.port) : null;
|
|
20
|
+
|
|
21
|
+
for (const pattern of allowedHosts) {
|
|
22
|
+
const colonIdx = pattern.lastIndexOf(":");
|
|
23
|
+
let patHost;
|
|
24
|
+
let patPort;
|
|
25
|
+
if (colonIdx > 0 && /^\d+$/.test(pattern.slice(colonIdx + 1))) {
|
|
26
|
+
patHost = pattern.slice(0, colonIdx).toLowerCase();
|
|
27
|
+
patPort = Number(pattern.slice(colonIdx + 1));
|
|
28
|
+
} else {
|
|
29
|
+
patHost = pattern.toLowerCase();
|
|
30
|
+
patPort = null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (patPort !== null && port !== patPort) {
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (patHost.startsWith("*.")) {
|
|
38
|
+
const suffix = patHost.slice(2);
|
|
39
|
+
if (host === suffix || host.endsWith(`.${suffix}`)) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (host === patHost) {
|
|
46
|
+
return true;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
function parseHostCommandResult(module, resultPtr) {
|
|
2
|
+
const resultStr = module.UTF8ToString(resultPtr);
|
|
3
|
+
module.ccall("wasmsh_runtime_free_string", null, ["number"], [resultPtr]);
|
|
4
|
+
return JSON.parse(resultStr);
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export function createRuntimeBridge(module) {
|
|
8
|
+
if (module._wasmshRuntimeBridge) {
|
|
9
|
+
return module._wasmshRuntimeBridge;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
let handle = module.ccall("wasmsh_runtime_new", "number", [], []);
|
|
13
|
+
if (handle === 0) {
|
|
14
|
+
throw new Error("wasmsh_runtime_new returned null");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
const bridge = {
|
|
18
|
+
get handle() {
|
|
19
|
+
return handle;
|
|
20
|
+
},
|
|
21
|
+
sendHostCommand(command) {
|
|
22
|
+
if (handle === null) {
|
|
23
|
+
throw new Error("runtime not initialized");
|
|
24
|
+
}
|
|
25
|
+
const jsonPtr = module.stringToNewUTF8(JSON.stringify(command));
|
|
26
|
+
try {
|
|
27
|
+
const resultPtr = module.ccall(
|
|
28
|
+
"wasmsh_runtime_handle_json",
|
|
29
|
+
"number",
|
|
30
|
+
["number", "number"],
|
|
31
|
+
[handle, jsonPtr],
|
|
32
|
+
);
|
|
33
|
+
return parseHostCommandResult(module, resultPtr);
|
|
34
|
+
} finally {
|
|
35
|
+
module._free(jsonPtr);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
close() {
|
|
39
|
+
if (handle === null) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
module.ccall("wasmsh_runtime_free", null, ["number"], [handle]);
|
|
43
|
+
handle = null;
|
|
44
|
+
if (module._wasmshRuntimeBridge === bridge) {
|
|
45
|
+
delete module._wasmshRuntimeBridge;
|
|
46
|
+
}
|
|
47
|
+
},
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
module._wasmshRuntimeBridge = bridge;
|
|
51
|
+
return bridge;
|
|
52
|
+
}
|