UNPKG

pyodide

Version:

The Pyodide JavaScript package

7 lines (6 loc) 18.6 kB
"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(` `).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(` `).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.0";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:"761936574707325565bed16f46bb59050f9a5477dab28ba3db09f3fb41ea89e7"},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);})(); try{Object.assign(exports,loadPyodide)}catch(_){} globalThis.loadPyodide=loadPyodide.loadPyodide; //# sourceMappingURL=pyodide.js.map