pyodide 0.23.4 → 0.24.0-alpha.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/pyodide.js.map CHANGED
@@ -1 +1,7 @@
1
- {"version":3,"file":"pyodide.js","sources":["../src/js/node_modules/stackframe/stackframe.js","../src/js/node_modules/error-stack-parser/error-stack-parser.js","../src/js/compat.ts","../src/js/node_modules/tslib/tslib.es6.js","../src/js/nativefs.ts","../src/js/module.ts","../src/js/pyodide.ts","../src/js/version.ts","../src/js/pyodide.umd.ts"],"sourcesContent":["(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","// Detect if we're in node\ndeclare var process: any;\n\nexport const IN_NODE =\n typeof process === \"object\" &&\n typeof process.versions === \"object\" &&\n typeof process.versions.node === \"string\" &&\n typeof process.browser ===\n \"undefined\"; /* This last condition checks if we run the browser shim of process */\n\nlet nodeUrlMod: any;\nlet nodeFetch: any;\nlet nodePath: any;\nlet nodeVmMod: any;\n/** @private */\nexport let nodeFsPromisesMod: any;\n\ndeclare var globalThis: {\n importScripts: (url: string) => void;\n document?: any;\n fetch?: any;\n};\n\n/**\n * If we're in node, it's most convenient to import various node modules on\n * initialization. Otherwise, this does nothing.\n * @private\n */\nexport async function initNodeModules() {\n if (!IN_NODE) {\n return;\n }\n // @ts-ignore\n nodeUrlMod = (await import(\"url\")).default;\n nodeFsPromisesMod = await import(\"fs/promises\");\n if (globalThis.fetch) {\n nodeFetch = fetch;\n } else {\n // @ts-ignore\n nodeFetch = (await import(\"node-fetch\")).default;\n }\n // @ts-ignore\n nodeVmMod = (await import(\"vm\")).default;\n nodePath = await import(\"path\");\n pathSep = nodePath.sep;\n\n // Emscripten uses `require`, so if it's missing (because we were imported as\n // an ES6 module) we need to polyfill `require` with `import`. `import` is\n // async and `require` is synchronous, so we import all packages that might be\n // required up front and define require to look them up in this table.\n\n if (typeof require !== \"undefined\") {\n return;\n }\n // These are all the packages required in pyodide.asm.js. You can get this\n // list with:\n // $ grep -o 'require(\"[a-z]*\")' pyodide.asm.js | sort -u\n const fs = await import(\"fs\");\n const crypto = await import(\"crypto\");\n const ws = await import(\"ws\");\n const child_process = await import(\"child_process\");\n const node_modules: { [mode: string]: any } = {\n fs,\n crypto,\n ws,\n child_process,\n };\n // Since we're in an ES6 module, this is only modifying the module namespace,\n // it's still private to Pyodide.\n (globalThis as any).require = function (mod: string): any {\n return node_modules[mod];\n };\n}\n\nfunction node_resolvePath(path: string, base?: string): string {\n return nodePath.resolve(base || \".\", path);\n}\n\nfunction browser_resolvePath(path: string, base?: string): string {\n if (base === undefined) {\n // @ts-ignore\n base = location;\n }\n return new URL(path, base).toString();\n}\n\nexport let resolvePath: (rest: string, base?: string) => string;\nif (IN_NODE) {\n resolvePath = node_resolvePath;\n} else {\n resolvePath = browser_resolvePath;\n}\n\n/**\n * Get the path separator. If we are on Linux or in the browser, it's /.\n * In Windows, it's \\.\n * @private\n */\nexport let pathSep: string;\n\nif (!IN_NODE) {\n pathSep = \"/\";\n}\n\n/**\n * Load a binary file, only for use in Node. If the path explicitly is a URL,\n * then fetch from a URL, else load from the file system.\n * @param indexURL base path to resolve relative paths\n * @param path the path to load\n * @param checksum sha-256 checksum of the package\n * @returns An ArrayBuffer containing the binary data\n * @private\n */\nasync function node_loadBinaryFile(\n path: string,\n _file_sub_resource_hash?: string | undefined, // Ignoring sub resource hash. See issue-2431.\n): Promise<Uint8Array> {\n if (path.startsWith(\"file://\")) {\n // handle file:// with filesystem operations rather than with fetch.\n path = path.slice(\"file://\".length);\n }\n if (path.includes(\"://\")) {\n // If it has a protocol, make a fetch request\n let response = await nodeFetch(path);\n if (!response.ok) {\n throw new Error(`Failed to load '${path}': request failed.`);\n }\n return new Uint8Array(await response.arrayBuffer());\n } else {\n // Otherwise get it from the file system\n const data = await nodeFsPromisesMod.readFile(path);\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\n\n/**\n * Load a binary file, only for use in browser. Resolves relative paths against\n * indexURL.\n *\n * @param path the path to load\n * @param subResourceHash the sub resource hash for fetch() integrity check\n * @returns A Uint8Array containing the binary data\n * @private\n */\nasync function browser_loadBinaryFile(\n path: string,\n subResourceHash: string | undefined,\n): Promise<Uint8Array> {\n // @ts-ignore\n const url = new URL(path, location);\n let options = subResourceHash ? { integrity: subResourceHash } : {};\n // @ts-ignore\n let response = await fetch(url, options);\n if (!response.ok) {\n throw new Error(`Failed to load '${url}': request failed.`);\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n\n/** @private */\nexport let loadBinaryFile: (\n path: string,\n file_sub_resource_hash?: string | undefined,\n) => Promise<Uint8Array>;\nif (IN_NODE) {\n loadBinaryFile = node_loadBinaryFile;\n} else {\n loadBinaryFile = browser_loadBinaryFile;\n}\n\n/**\n * Currently loadScript is only used once to load `pyodide.asm.js`.\n * @param url\n * @async\n * @private\n */\nexport let loadScript: (url: string) => Promise<void>;\n\nif (globalThis.document) {\n // browser\n loadScript = async (url) => await import(/* webpackIgnore: true */ url);\n} else if (globalThis.importScripts) {\n // webworker\n loadScript = async (url) => {\n try {\n // use importScripts in classic web worker\n globalThis.importScripts(url);\n } catch (e) {\n // importScripts throws TypeError in a module type web worker, use import instead\n if (e instanceof TypeError) {\n await import(/* webpackIgnore: true */ url);\n } else {\n throw e;\n }\n }\n };\n} else if (IN_NODE) {\n loadScript = nodeLoadScript;\n} else {\n throw new Error(\"Cannot determine runtime environment\");\n}\n\n/**\n * Load a text file and executes it as Javascript\n * @param url The path to load. May be a url or a relative file system path.\n * @private\n */\nasync function nodeLoadScript(url: string) {\n if (url.startsWith(\"file://\")) {\n // handle file:// with filesystem operations rather than with fetch.\n url = url.slice(\"file://\".length);\n }\n if (url.includes(\"://\")) {\n // If it's a url, load it with fetch then eval it.\n nodeVmMod.runInThisContext(await (await nodeFetch(url)).text());\n } else {\n // Otherwise, hopefully it is a relative path we can load from the file\n // system.\n await import(/* webpackIgnore: true */ nodeUrlMod.pathToFileURL(url).href);\n }\n}\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","import { Module } from \"./module\";\n\n/**\n * @private\n */\nexport function initializeNativeFS(module: Module) {\n const FS = module.FS;\n const MEMFS = module.FS.filesystems.MEMFS;\n const PATH = module.PATH;\n\n const nativeFSAsync = {\n // DIR_MODE: {{{ cDefine('S_IFDIR') }}} | 511 /* 0777 */,\n // FILE_MODE: {{{ cDefine('S_IFREG') }}} | 511 /* 0777 */,\n DIR_MODE: 16384 | 511,\n FILE_MODE: 32768 | 511,\n mount: function (mount: any) {\n if (!mount.opts.fileSystemHandle) {\n throw new Error(\"opts.fileSystemHandle is required\");\n }\n\n // reuse all of the core MEMFS functionality\n return MEMFS.mount.apply(null, arguments);\n },\n syncfs: async (mount: any, populate: Boolean, callback: Function) => {\n try {\n const local = nativeFSAsync.getLocalSet(mount);\n const remote = await nativeFSAsync.getRemoteSet(mount);\n const src = populate ? remote : local;\n const dst = populate ? local : remote;\n await nativeFSAsync.reconcile(mount, src, dst);\n callback(null);\n } catch (e) {\n callback(e);\n }\n },\n // Returns file set of emscripten's filesystem at the mountpoint.\n getLocalSet: (mount: any) => {\n let entries = Object.create(null);\n\n function isRealDir(p: string) {\n return p !== \".\" && p !== \"..\";\n }\n\n function toAbsolute(root: string) {\n return (p: string) => {\n return PATH.join2(root, p);\n };\n }\n\n let check = FS.readdir(mount.mountpoint)\n .filter(isRealDir)\n .map(toAbsolute(mount.mountpoint));\n\n while (check.length) {\n let path = check.pop();\n let stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n check.push.apply(\n check,\n FS.readdir(path).filter(isRealDir).map(toAbsolute(path)),\n );\n }\n\n entries[path] = { timestamp: stat.mtime, mode: stat.mode };\n }\n\n return { type: \"local\", entries: entries };\n },\n // Returns file set of the real, on-disk filesystem at the mountpoint.\n getRemoteSet: async (mount: any) => {\n // TODO: this should be a map.\n const entries = Object.create(null);\n\n const handles = await getFsHandles(mount.opts.fileSystemHandle);\n for (const [path, handle] of handles) {\n if (path === \".\") continue;\n\n entries[PATH.join2(mount.mountpoint, path)] = {\n timestamp:\n handle.kind === \"file\"\n ? (await handle.getFile()).lastModifiedDate\n : new Date(),\n mode:\n handle.kind === \"file\"\n ? nativeFSAsync.FILE_MODE\n : nativeFSAsync.DIR_MODE,\n };\n }\n\n return { type: \"remote\", entries, handles };\n },\n loadLocalEntry: (path: string) => {\n const lookup = FS.lookupPath(path);\n const node = lookup.node;\n const stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n return { timestamp: stat.mtime, mode: stat.mode };\n } else if (FS.isFile(stat.mode)) {\n node.contents = MEMFS.getFileDataAsTypedArray(node);\n return {\n timestamp: stat.mtime,\n mode: stat.mode,\n contents: node.contents,\n };\n } else {\n throw new Error(\"node type not supported\");\n }\n },\n storeLocalEntry: (path: string, entry: any) => {\n if (FS.isDir(entry[\"mode\"])) {\n FS.mkdirTree(path, entry[\"mode\"]);\n } else if (FS.isFile(entry[\"mode\"])) {\n FS.writeFile(path, entry[\"contents\"], { canOwn: true });\n } else {\n throw new Error(\"node type not supported\");\n }\n\n FS.chmod(path, entry[\"mode\"]);\n FS.utime(path, entry[\"timestamp\"], entry[\"timestamp\"]);\n },\n removeLocalEntry: (path: string) => {\n var stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n FS.rmdir(path);\n } else if (FS.isFile(stat.mode)) {\n FS.unlink(path);\n }\n },\n loadRemoteEntry: async (handle: any) => {\n if (handle.kind === \"file\") {\n const file = await handle.getFile();\n return {\n contents: new Uint8Array(await file.arrayBuffer()),\n mode: nativeFSAsync.FILE_MODE,\n timestamp: file.lastModifiedDate,\n };\n } else if (handle.kind === \"directory\") {\n return {\n mode: nativeFSAsync.DIR_MODE,\n timestamp: new Date(),\n };\n } else {\n throw new Error(\"unknown kind: \" + handle.kind);\n }\n },\n storeRemoteEntry: async (handles: any, path: string, entry: any) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n const handle = FS.isFile(entry.mode)\n ? await parentDirHandle.getFileHandle(PATH.basename(path), {\n create: true,\n })\n : await parentDirHandle.getDirectoryHandle(PATH.basename(path), {\n create: true,\n });\n if (handle.kind === \"file\") {\n const writable = await handle.createWritable();\n await writable.write(entry.contents);\n await writable.close();\n }\n handles.set(path, handle);\n },\n removeRemoteEntry: async (handles: any, path: string) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n await parentDirHandle.removeEntry(PATH.basename(path));\n handles.delete(path);\n },\n reconcile: async (mount: any, src: any, dst: any) => {\n let total = 0;\n\n const create: Array<string> = [];\n Object.keys(src.entries).forEach(function (key) {\n const e = src.entries[key];\n const e2 = dst.entries[key];\n if (\n !e2 ||\n (FS.isFile(e.mode) &&\n e[\"timestamp\"].getTime() > e2[\"timestamp\"].getTime())\n ) {\n create.push(key);\n total++;\n }\n });\n // sort paths in ascending order so directory entries are created\n // before the files inside them\n create.sort();\n\n const remove: Array<string> = [];\n Object.keys(dst.entries).forEach(function (key) {\n if (!src.entries[key]) {\n remove.push(key);\n total++;\n }\n });\n // sort paths in descending order so files are deleted before their\n // parent directories\n remove.sort().reverse();\n\n if (!total) {\n return;\n }\n\n const handles = src.type === \"remote\" ? src.handles : dst.handles;\n\n for (const path of create) {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, \"/\"),\n ).substring(1);\n if (dst.type === \"local\") {\n const handle = handles.get(relPath);\n const entry = await nativeFSAsync.loadRemoteEntry(handle);\n nativeFSAsync.storeLocalEntry(path, entry);\n } else {\n const entry = nativeFSAsync.loadLocalEntry(path);\n await nativeFSAsync.storeRemoteEntry(handles, relPath, entry);\n }\n }\n\n for (const path of remove) {\n if (dst.type === \"local\") {\n nativeFSAsync.removeLocalEntry(path);\n } else {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, \"/\"),\n ).substring(1);\n await nativeFSAsync.removeRemoteEntry(handles, relPath);\n }\n }\n },\n };\n\n module.FS.filesystems.NATIVEFS_ASYNC = nativeFSAsync;\n}\n\nconst getFsHandles = async (dirHandle: any) => {\n const handles: any = [];\n\n async function collect(curDirHandle: any) {\n for await (const entry of curDirHandle.values()) {\n handles.push(entry);\n if (entry.kind === \"directory\") {\n await collect(entry);\n }\n }\n }\n\n await collect(dirHandle);\n\n const result = new Map();\n result.set(\".\", dirHandle);\n for (const handle of handles) {\n const relativePath = (await dirHandle.resolve(handle)).join(\"/\");\n result.set(relativePath, handle);\n }\n return result;\n};\n","/** @private */\n\nimport { ConfigType } from \"./pyodide\";\nimport { initializeNativeFS } from \"./nativefs\";\nimport { loadBinaryFile } from \"./compat\";\n\ntype FSNode = any;\ntype FSStream = any;\n\nexport interface FS {\n unlink: (path: string) => void;\n mkdirTree: (path: string, mode?: number) => void;\n chdir: (path: string) => void;\n symlink: (target: string, src: string) => FSNode;\n createDevice: (\n parent: string,\n name: string,\n input?: (() => number | null) | null,\n output?: ((code: number) => void) | null,\n ) => FSNode;\n closeStream: (fd: number) => void;\n open: (path: string, flags: string | number, mode?: number) => FSStream;\n makedev: (major: number, minor: number) => number;\n mkdev: (path: string, dev: number) => FSNode;\n filesystems: any;\n stat: (path: string, dontFollow?: boolean) => any;\n readdir: (node: FSNode) => string[];\n isDir: (mode: number) => boolean;\n lookupPath: (path: string) => FSNode;\n isFile: (mode: number) => boolean;\n writeFile: (path: string, contents: any, o?: { canOwn?: boolean }) => void;\n chmod: (path: string, mode: number) => void;\n utime: (path: string, atime: number, mtime: number) => void;\n rmdir: (path: string) => void;\n mount: (type: any, opts: any, mountpoint: string) => any;\n write: (\n stream: FSStream,\n buffer: any,\n offset: number,\n length: number,\n position?: number,\n ) => number;\n close: (stream: FSStream) => void;\n}\n\nexport interface Module {\n noImageDecoding: boolean;\n noAudioDecoding: boolean;\n noWasmDecoding: boolean;\n quit: (status: number, toThrow: Error) => void;\n preRun: { (): void }[];\n print: (a: string) => void;\n printErr: (a: string) => void;\n ENV: { [key: string]: string };\n PATH: any;\n TTY: any;\n FS: FS;\n canvas?: HTMLCanvasElement;\n addRunDependency: (id: string) => void;\n removeRunDependency: (id: string) => void;\n}\n\n/**\n * The Emscripten Module.\n *\n * @private\n */\nexport function createModule(): any {\n let Module: any = {};\n Module.noImageDecoding = true;\n Module.noAudioDecoding = true;\n Module.noWasmDecoding = false; // we preload wasm using the built in plugin now\n Module.preRun = [];\n Module.quit = (status: number, toThrow: Error) => {\n Module.exited = { status, toThrow };\n throw toThrow;\n };\n return Module;\n}\n\n/**\n * Make the home directory inside the virtual file system,\n * then change the working directory to it.\n *\n * @param Module The Emscripten Module.\n * @param path The path to the home directory.\n * @private\n */\nfunction setHomeDirectory(Module: Module, path: string) {\n Module.preRun.push(function () {\n const fallbackPath = \"/\";\n try {\n Module.FS.mkdirTree(path);\n } catch (e) {\n console.error(`Error occurred while making a home directory '${path}':`);\n console.error(e);\n console.error(`Using '${fallbackPath}' for a home directory instead`);\n path = fallbackPath;\n }\n Module.ENV.HOME = path;\n Module.FS.chdir(path);\n });\n}\n\n/**\n * Mount local directories to the virtual file system. Only for Node.js.\n * @param module The Emscripten Module.\n * @param mounts The list of paths to mount.\n */\nfunction mountLocalDirectories(Module: Module, mounts: string[]) {\n Module.preRun.push(() => {\n for (const mount of mounts) {\n Module.FS.mkdirTree(mount);\n Module.FS.mount(Module.FS.filesystems.NODEFS, { root: mount }, mount);\n }\n });\n}\n\n/**\n * Install the Python standard library to the virtual file system.\n *\n * Previously, this was handled by Emscripten's file packager (pyodide.asm.data).\n * However, using the file packager means that we have only one version\n * of the standard library available. We want to be able to use different\n * versions of the standard library, for example:\n *\n * - Use compiled(.pyc) or uncompiled(.py) standard library.\n * - Remove unused modules or add additional modules using bundlers like pyodide-pack.\n *\n * @param Module The Emscripten Module.\n * @param stdlibPromise A promise that resolves to the standard library.\n */\nfunction installStdlib(Module: Module, stdlibURL: string) {\n const stdlibPromise: Promise<Uint8Array> = loadBinaryFile(stdlibURL);\n\n Module.preRun.push(() => {\n /* @ts-ignore */\n const pymajor = Module._py_version_major();\n /* @ts-ignore */\n const pyminor = Module._py_version_minor();\n\n Module.FS.mkdirTree(\"/lib\");\n Module.FS.mkdirTree(`/lib/python${pymajor}.${pyminor}/site-packages`);\n\n Module.addRunDependency(\"install-stdlib\");\n\n stdlibPromise\n .then((stdlib: Uint8Array) => {\n Module.FS.writeFile(`/lib/python${pymajor}${pyminor}.zip`, stdlib);\n })\n .catch((e) => {\n console.error(\"Error occurred while installing the standard library:\");\n console.error(e);\n })\n .finally(() => {\n Module.removeRunDependency(\"install-stdlib\");\n });\n });\n}\n\n/**\n * Initialize the virtual file system, before loading Python interpreter.\n * @private\n */\nexport function initializeFileSystem(Module: Module, config: ConfigType) {\n let stdLibURL;\n if (config.stdLibURL != undefined) {\n stdLibURL = config.stdLibURL;\n } else {\n stdLibURL = config.indexURL + \"python_stdlib.zip\";\n }\n\n installStdlib(Module, stdLibURL);\n setHomeDirectory(Module, config.homedir);\n mountLocalDirectories(Module, config._node_mounts);\n Module.preRun.push(() => initializeNativeFS(Module));\n}\n","/**\n * The main bootstrap code for loading pyodide.\n */\nimport ErrorStackParser from \"error-stack-parser\";\nimport { loadScript, initNodeModules, pathSep, resolvePath } from \"./compat\";\n\nimport { createModule, initializeFileSystem } from \"./module\";\nimport { version } from \"./version\";\n\nimport type { PyodideInterface } from \"./api.js\";\nimport type { PyProxy, PyDict } from \"./pyproxy.gen\";\nexport type { PyodideInterface };\n\nexport type {\n PyProxy,\n PyProxyWithLength,\n PyProxyWithGet,\n PyProxyWithSet,\n PyProxyWithHas,\n PyProxyDict,\n PyProxyIterable,\n PyProxyIterator,\n PyProxyAwaitable,\n PyProxyCallable,\n TypedArray,\n PyBuffer as PyProxyBuffer,\n PyBufferView as PyBuffer,\n} from \"./pyproxy.gen\";\n\nexport type Py2JsResult = any;\n\nexport { version };\n\n/**\n * A proxy around globals that falls back to checking for a builtin if has or\n * get fails to find a global with the given key. Note that this proxy is\n * transparent to js2python: it won't notice that this wrapper exists at all and\n * will translate this proxy to the globals dictionary.\n * @private\n */\nfunction wrapPythonGlobals(globals_dict: PyDict, builtins_dict: PyDict) {\n return new Proxy(globals_dict, {\n get(target, symbol) {\n if (symbol === \"get\") {\n return (key: any) => {\n let result = target.get(key);\n if (result === undefined) {\n result = builtins_dict.get(key);\n }\n return result;\n };\n }\n if (symbol === \"has\") {\n return (key: any) => target.has(key) || builtins_dict.has(key);\n }\n return Reflect.get(target, symbol);\n },\n });\n}\n\n/**\n * This function is called after the emscripten module is finished initializing,\n * so eval_code is newly available.\n * It finishes the bootstrap so that once it is complete, it is possible to use\n * the core `pyodide` apis. (But package loading is not ready quite yet.)\n * @private\n */\nfunction finalizeBootstrap(API: any, config: ConfigType) {\n // First make internal dict so that we can use runPythonInternal.\n // runPythonInternal uses a separate namespace, so we don't pollute the main\n // environment with variables from our setup.\n API.runPythonInternal_dict = API._pyodide._base.eval_code(\"{}\") as PyProxy;\n API.importlib = API.runPythonInternal(\"import importlib; importlib\");\n let import_module = API.importlib.import_module;\n\n API.sys = import_module(\"sys\");\n API.sys.path.insert(0, config.homedir);\n API.os = import_module(\"os\");\n\n // Set up globals\n let globals = API.runPythonInternal(\n \"import __main__; __main__.__dict__\",\n ) as PyDict;\n let builtins = API.runPythonInternal(\n \"import builtins; builtins.__dict__\",\n ) as PyDict;\n API.globals = wrapPythonGlobals(globals, builtins);\n\n // Set up key Javascript modules.\n let importhook = API._pyodide._importhook;\n function jsFinderHook(o: object) {\n if (\"__all__\" in o) {\n return;\n }\n Object.defineProperty(o, \"__all__\", {\n get: () =>\n pyodide.toPy(\n Object.getOwnPropertyNames(o).filter((name) => name !== \"__all__\"),\n ),\n enumerable: false,\n configurable: true,\n });\n }\n importhook.register_js_finder.callKwargs({ hook: jsFinderHook });\n importhook.register_js_module(\"js\", config.jsglobals);\n\n let pyodide = API.makePublicAPI();\n importhook.register_js_module(\"pyodide_js\", pyodide);\n\n // import pyodide_py. We want to ensure that as much stuff as possible is\n // already set up before importing pyodide_py to simplify development of\n // pyodide_py code (Otherwise it's very hard to keep track of which things\n // aren't set up yet.)\n API.pyodide_py = import_module(\"pyodide\");\n API.pyodide_code = import_module(\"pyodide.code\");\n API.pyodide_ffi = import_module(\"pyodide.ffi\");\n API.package_loader = import_module(\"pyodide._package_loader\");\n\n API.sitepackages = API.package_loader.SITE_PACKAGES.__str__();\n API.dsodir = API.package_loader.DSO_DIR.__str__();\n API.defaultLdLibraryPath = [API.dsodir, API.sitepackages];\n\n API.os.environ.__setitem__(\n \"LD_LIBRARY_PATH\",\n API.defaultLdLibraryPath.join(\":\"),\n );\n\n // copy some last constants onto public API.\n pyodide.pyodide_py = API.pyodide_py;\n pyodide.globals = API.globals;\n return pyodide;\n}\n\ndeclare function _createPyodideModule(Module: any): Promise<void>;\n\n/**\n * If indexURL isn't provided, throw an error and catch it and then parse our\n * file name out from the stack trace.\n *\n * Question: But getting the URL from error stack trace is well... really\n * hacky. Can't we use\n * [`document.currentScript`](https://developer.mozilla.org/en-US/docs/Web/API/Document/currentScript)\n * or\n * [`import.meta.url`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import.meta)\n * instead?\n *\n * Answer: `document.currentScript` works for the browser main thread.\n * `import.meta` works for es6 modules. In a classic webworker, I think there\n * is no approach that works. Also we would need some third approach for node\n * when loading a commonjs module using `require`. On the other hand, this\n * stack trace approach works for every case without any feature detection\n * code.\n */\nfunction calculateIndexURL(): string {\n if (typeof __dirname === \"string\") {\n return __dirname;\n }\n let err: Error;\n try {\n throw new Error();\n } catch (e) {\n err = e as Error;\n }\n let fileName = ErrorStackParser.parse(err)[0].fileName!;\n const indexOfLastSlash = fileName.lastIndexOf(pathSep);\n if (indexOfLastSlash === -1) {\n throw new Error(\n \"Could not extract indexURL path from pyodide module location\",\n );\n }\n return fileName.slice(0, indexOfLastSlash);\n}\n\n/**\n * See documentation for loadPyodide.\n * @private\n */\nexport type ConfigType = {\n indexURL: string;\n packageCacheDir: string;\n lockFileURL: string;\n homedir: string;\n fullStdLib?: boolean;\n stdLibURL?: string;\n stdin?: () => string;\n stdout?: (msg: string) => void;\n stderr?: (msg: string) => void;\n jsglobals?: object;\n args: string[];\n _node_mounts: string[];\n};\n\n/**\n * Load the main Pyodide wasm module and initialize it.\n *\n * @returns The :ref:`js-api-pyodide` module.\n * @memberof globalThis\n * @async\n */\nexport async function loadPyodide(\n options: {\n /**\n * The URL from which Pyodide will load the main Pyodide runtime and\n * packages. It is recommended that you leave this unchanged, providing an\n * incorrect value can cause broken behavior.\n *\n * Default: The url that Pyodide is loaded from with the file name\n * (``pyodide.js`` or ``pyodide.mjs``) removed.\n */\n indexURL?: string;\n\n /**\n * file. You can produce custom lock files with :py:func:`micropip.freeze`.\n * Default: ```${indexURL}/repodata.json```\n */\n lockFileURL?: string;\n\n /**\n * The home directory which Pyodide will use inside virtual file system.\n * Default: ``\"/home/pyodide\"``\n */\n homedir?: string;\n /**\n * Load the full Python standard library. Setting this to false excludes\n * unvendored modules from the standard library.\n * Default: ``false``\n */\n fullStdLib?: boolean;\n /**\n * The URL from which to load the standard library ``python_stdlib.zip``\n * file. This URL includes the most of the Python stadard library. Some\n * stdlib modules were unvendored, and can be loaded separately\n * with ``fullStdLib=true`` option or by their package name.\n * Default: ```${indexURL}/python_stdlib.zip```\n */\n stdLibURL?: string;\n /**\n * Override the standard input callback. Should ask the user for one line of\n * input.\n */\n stdin?: () => string;\n /**\n * Override the standard output callback.\n */\n stdout?: (msg: string) => void;\n /**\n * Override the standard error output callback.\n */\n stderr?: (msg: string) => void;\n /**\n * The object that Pyodide will use for the ``js`` module.\n * Default: ``globalThis``\n */\n jsglobals?: object;\n /**\n * Command line arguments to pass to Python on startup. See `Python command\n * line interface options\n * <https://docs.python.org/3.10/using/cmdline.html#interface-options>`_ for\n * more details. Default: ``[]``\n */\n args?: string[];\n /**\n * @ignore\n */\n _node_mounts?: string[];\n } = {},\n): Promise<PyodideInterface> {\n await initNodeModules();\n let indexURL = options.indexURL || calculateIndexURL();\n indexURL = resolvePath(indexURL); // A relative indexURL causes havoc.\n if (!indexURL.endsWith(\"/\")) {\n indexURL += \"/\";\n }\n options.indexURL = indexURL;\n\n const default_config = {\n fullStdLib: false,\n jsglobals: globalThis,\n stdin: globalThis.prompt ? globalThis.prompt : undefined,\n homedir: \"/home/pyodide\",\n lockFileURL: indexURL! + \"repodata.json\",\n args: [],\n _node_mounts: [],\n packageCacheDir: indexURL,\n };\n const config = Object.assign(default_config, options) as ConfigType;\n\n const Module = createModule();\n Module.print = config.stdout;\n Module.printErr = config.stderr;\n Module.arguments = config.args;\n const API: any = { config };\n Module.API = API;\n\n initializeFileSystem(Module, config);\n\n const moduleLoaded = new Promise((r) => (Module.postRun = r));\n\n // locateFile tells Emscripten where to find the data files that initialize\n // the file system.\n Module.locateFile = (path: string) => config.indexURL + path;\n\n // If the pyodide.asm.js script has been imported, we can skip the dynamic import\n // Users can then do a static import of the script in environments where\n // dynamic importing is not allowed or not desirable, like module-type service workers\n if (typeof _createPyodideModule !== \"function\") {\n const scriptSrc = `${config.indexURL}pyodide.asm.js`;\n await loadScript(scriptSrc);\n }\n\n // _createPyodideModule is specified in the Makefile by the linker flag:\n // `-s EXPORT_NAME=\"'_createPyodideModule'\"`\n await _createPyodideModule(Module);\n\n // There is some work to be done between the module being \"ready\" and postRun\n // being called.\n await moduleLoaded;\n // Handle early exit\n if (Module.exited) {\n throw Module.exited.toThrow;\n }\n\n if (API.version !== version) {\n throw new Error(\n `\\\nPyodide version does not match: '${version}' <==> '${API.version}'. \\\nIf you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.\\\n`,\n );\n }\n // Disable further loading of Emscripten file_packager stuff.\n Module.locateFile = (path: string) => {\n throw new Error(\"Didn't expect to load any more file_packager files!\");\n };\n\n let [err, captured_stderr] = API.rawRun(\"import _pyodide_core\");\n if (err) {\n Module.API.fatal_loading_error(\n \"Failed to import _pyodide_core\\n\",\n captured_stderr,\n );\n }\n\n const pyodide = finalizeBootstrap(API, config);\n\n // runPython works starting here.\n if (!pyodide.version.includes(\"dev\")) {\n // Currently only used in Node to download packages the first time they are\n // loaded. But in other cases it's harmless.\n API.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${pyodide.version}/full/`);\n }\n await API.packageIndexReady;\n\n let importhook = API._pyodide._importhook;\n importhook.register_module_not_found_hook(\n API._import_name_to_package_name,\n API.repodata_unvendored_stdlibs_and_test,\n );\n\n if (API.repodata_info.version !== version) {\n throw new Error(\"Lock file version doesn't match Pyodide version\");\n }\n API.package_loader.init_loaded_packages();\n if (config.fullStdLib) {\n await pyodide.loadPackage(API.repodata_unvendored_stdlibs);\n }\n API.initializeStreams(config.stdin, config.stdout, config.stderr);\n return pyodide;\n}\n","/**\n *\n * The Pyodide version.\n *\n * The version here is a Python version, following :pep:`440`. This is different\n * from the version in ``package.json`` which follows the node package manager\n * version convention.\n */\nexport const version: string = \"0.23.4\";\n","import { loadPyodide, version } from \"./pyodide\";\nexport { loadPyodide, version };\n(globalThis as any).loadPyodide = loadPyodide;\n"],"names":["module","_isNumber","n","isNaN","parseFloat","isFinite","_capitalize","str","charAt","toUpperCase","substring","_getter","p","this","booleanProps","numericProps","stringProps","arrayProps","objectProps","props","concat","StackFrame","obj","i","length","undefined","prototype","getArgs","args","setArgs","v","Object","toString","call","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","fileName","getFileName","lineNumber","getLineNumber","columnNumber","getColumnNumber","functionName","getFunctionName","getIsEval","fromString","argsStartIndex","indexOf","argsEndIndex","lastIndexOf","split","locationString","parts","exec","Boolean","j","Number","k","String","factory","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","require$$0","parse","error","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","replace","filter","line","map","sanitizedLine","location","locationParts","source","functionNameRegex","matches","e","message","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","result","len","push","argsRaw","tokens","pop","functionCall","shift","IN_NODE","process","versions","node","browser","nodeUrlMod","nodeFetch","nodePath","nodeVmMod","nodeFsPromisesMod","resolvePath","pathSep","loadBinaryFile","loadScript","path","base","resolve","URL","async","_file_sub_resource_hash","startsWith","slice","includes","response","ok","Uint8Array","arrayBuffer","data","readFile","buffer","byteOffset","byteLength","subResourceHash","url","options","integrity","fetch","globalThis","document","import","importScripts","runInThisContext","text","pathToFileURL","href","__values","o","s","Symbol","iterator","m","next","value","done","__asyncValues","asyncIterator","verb","Promise","reject","d","then","settle","getFsHandles","dirHandle","handles","collect","curDirHandle","_b","values","entry","kind","Map","set","handle","relativePath","join","initializeFileSystem","Module","config","stdLibURL","indexURL","stdlibURL","stdlibPromise","preRun","pymajor","_py_version_major","pyminor","_py_version_minor","FS","mkdirTree","addRunDependency","stdlib","writeFile","catch","console","finally","removeRunDependency","installStdlib","ENV","HOME","chdir","setHomeDirectory","homedir","mounts","mount","filesystems","NODEFS","root","mountLocalDirectories","_node_mounts","MEMFS","PATH","nativeFSAsync","DIR_MODE","FILE_MODE","opts","fileSystemHandle","apply","arguments","syncfs","populate","callback","local","getLocalSet","remote","getRemoteSet","src","dst","reconcile","entries","create","isRealDir","toAbsolute","join2","check","readdir","mountpoint","stat","isDir","mode","timestamp","mtime","type","getFile","lastModifiedDate","Date","loadLocalEntry","lookupPath","isFile","contents","getFileDataAsTypedArray","storeLocalEntry","canOwn","chmod","utime","removeLocalEntry","rmdir","unlink","loadRemoteEntry","file","storeRemoteEntry","parentDirHandle","get","dirname","getFileHandle","basename","getDirectoryHandle","writable","createWritable","write","close","removeRemoteEntry","removeEntry","delete","total","keys","forEach","key","e2","getTime","sort","remove","reverse","relPath","normalize","NATIVEFS_ASYNC","initializeNativeFS","finalizeBootstrap","API","runPythonInternal_dict","_pyodide","_base","eval_code","importlib","runPythonInternal","import_module","sys","insert","os","globals","builtins","builtins_dict","Proxy","target","symbol","has","Reflect","importhook","_importhook","register_js_finder","callKwargs","hook","defineProperty","pyodide","toPy","getOwnPropertyNames","name","enumerable","configurable","register_js_module","jsglobals","makePublicAPI","pyodide_py","pyodide_code","pyodide_ffi","package_loader","sitepackages","SITE_PACKAGES","__str__","dsodir","DSO_DIR","defaultLdLibraryPath","environ","__setitem__","loadPyodide","default","sep","require","node_modules","fs","crypto","ws","child_process","mod","initNodeModules","__dirname","err","ErrorStackParser","indexOfLastSlash","calculateIndexURL","endsWith","default_config","fullStdLib","stdin","prompt","lockFileURL","packageCacheDir","assign","status","toThrow","exited","createModule","print","stdout","printErr","stderr","moduleLoaded","r","postRun","locateFile","_createPyodideModule","scriptSrc","version","captured_stderr","rawRun","fatal_loading_error","setCdnUrl","packageIndexReady","register_module_not_found_hook","_import_name_to_package_name","repodata_unvendored_stdlibs_and_test","repodata_info","init_loaded_packages","loadPackage","repodata_unvendored_stdlibs","initializeStreams"],"mappings":"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"}
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/js/node_modules/stackframe/stackframe.js", "../src/js/node_modules/error-stack-parser/error-stack-parser.js", "../src/js/pyodide.umd.ts", "../src/js/pyodide.ts", "../src/js/compat.ts", "../src/js/nativefs.ts", "../src/js/module.ts", "../src/js/version.ts"],
4
+ "sourcesContent": ["(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n var objectProps = ['evalOrigin'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps, objectProps);\n\n function StackFrame(obj) {\n if (!obj) return;\n for (var i = 0; i < props.length; i++) {\n if (obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var fileName = this.getFileName() || '';\n var lineNumber = this.getLineNumber() || '';\n var columnNumber = this.getColumnNumber() || '';\n var functionName = this.getFunctionName() || '';\n if (this.getIsEval()) {\n if (fileName) {\n return '[eval] (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return '[eval]:' + lineNumber + ':' + columnNumber;\n }\n if (functionName) {\n return functionName + ' (' + fileName + ':' + lineNumber + ':' + columnNumber + ')';\n }\n return fileName + ':' + lineNumber + ':' + columnNumber;\n }\n };\n\n StackFrame.fromString = function StackFrame$$fromString(str) {\n var argsStartIndex = str.indexOf('(');\n var argsEndIndex = str.lastIndexOf(')');\n\n var functionName = str.substring(0, argsStartIndex);\n var args = str.substring(argsStartIndex + 1, argsEndIndex).split(',');\n var locationString = str.substring(argsEndIndex + 1);\n\n if (locationString.indexOf('@') === 0) {\n var parts = /@(.+?)(?::(\\d+))?(?::(\\d+))?$/.exec(locationString, '');\n var fileName = parts[1];\n var lineNumber = parts[2];\n var columnNumber = parts[3];\n }\n\n return new StackFrame({\n functionName: functionName,\n args: args || undefined,\n fileName: fileName,\n lineNumber: lineNumber || undefined,\n columnNumber: columnNumber || undefined\n });\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n", "(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[()]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^()]*)|(,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(').replace(/^.*?\\s+/, '');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\(.+\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n // if a location was matched, pass it to extractLocation() otherwise pass all sanitizedLine\n // because this line doesn't have function name\n var locationParts = this.extractLocation(location ? location[1] : sanitizedLine);\n var functionName = location && sanitizedLine || undefined;\n var fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\n .replace(/\\([^)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^(]+\\(([^)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n", "import { loadPyodide, version } from \"./pyodide\";\nexport { loadPyodide, version };\n(globalThis as any).loadPyodide = loadPyodide;\n", "/**\n * The main bootstrap code for loading pyodide.\n */\nimport ErrorStackParser from \"error-stack-parser\";\nimport { loadScript, initNodeModules, pathSep, resolvePath } from \"./compat\";\n\nimport { createModule, initializeFileSystem } from \"./module\";\nimport { version } from \"./version\";\n\nimport type { PyodideInterface } from \"./api.js\";\nimport type { PyProxy, PyDict } from \"./pyproxy.gen\";\nexport type { PyodideInterface };\n\nexport type {\n PyProxy,\n PyProxyWithLength,\n PyProxyWithGet,\n PyProxyWithSet,\n PyProxyWithHas,\n PyProxyDict,\n PyProxyIterable,\n PyProxyIterator,\n PyProxyAwaitable,\n PyProxyCallable,\n TypedArray,\n PyBuffer as PyProxyBuffer,\n PyBufferView as PyBuffer,\n} from \"./pyproxy.gen\";\n\nexport type Py2JsResult = any;\n\nexport { version };\n\n/**\n * A proxy around globals that falls back to checking for a builtin if has or\n * get fails to find a global with the given key. Note that this proxy is\n * transparent to js2python: it won't notice that this wrapper exists at all and\n * will translate this proxy to the globals dictionary.\n * @private\n */\nfunction wrapPythonGlobals(globals_dict: PyDict, builtins_dict: PyDict) {\n return new Proxy(globals_dict, {\n get(target, symbol) {\n if (symbol === \"get\") {\n return (key: any) => {\n let result = target.get(key);\n if (result === undefined) {\n result = builtins_dict.get(key);\n }\n return result;\n };\n }\n if (symbol === \"has\") {\n return (key: any) => target.has(key) || builtins_dict.has(key);\n }\n return Reflect.get(target, symbol);\n },\n });\n}\n\n/**\n * This function is called after the emscripten module is finished initializing,\n * so eval_code is newly available.\n * It finishes the bootstrap so that once it is complete, it is possible to use\n * the core `pyodide` apis. (But package loading is not ready quite yet.)\n * @private\n */\nfunction finalizeBootstrap(API: any, config: ConfigType) {\n // First make internal dict so that we can use runPythonInternal.\n // runPythonInternal uses a separate namespace, so we don't pollute the main\n // environment with variables from our setup.\n API.runPythonInternal_dict = API._pyodide._base.eval_code(\"{}\") as PyProxy;\n API.importlib = API.runPythonInternal(\"import importlib; importlib\");\n let import_module = API.importlib.import_module;\n\n API.sys = import_module(\"sys\");\n API.sys.path.insert(0, config.env.HOME);\n API.os = import_module(\"os\");\n\n // Set up globals\n let globals = API.runPythonInternal(\n \"import __main__; __main__.__dict__\",\n ) as PyDict;\n let builtins = API.runPythonInternal(\n \"import builtins; builtins.__dict__\",\n ) as PyDict;\n API.globals = wrapPythonGlobals(globals, builtins);\n\n // Set up key Javascript modules.\n let importhook = API._pyodide._importhook;\n function jsFinderHook(o: object) {\n if (\"__all__\" in o) {\n return;\n }\n Object.defineProperty(o, \"__all__\", {\n get: () =>\n pyodide.toPy(\n Object.getOwnPropertyNames(o).filter((name) => name !== \"__all__\"),\n ),\n enumerable: false,\n configurable: true,\n });\n }\n importhook.register_js_finder.callKwargs({ hook: jsFinderHook });\n importhook.register_js_module(\"js\", config.jsglobals);\n\n let pyodide = API.makePublicAPI();\n importhook.register_js_module(\"pyodide_js\", pyodide);\n\n // import pyodide_py. We want to ensure that as much stuff as possible is\n // already set up before importing pyodide_py to simplify development of\n // pyodide_py code (Otherwise it's very hard to keep track of which things\n // aren't set up yet.)\n API.pyodide_py = import_module(\"pyodide\");\n API.pyodide_code = import_module(\"pyodide.code\");\n API.pyodide_ffi = import_module(\"pyodide.ffi\");\n API.package_loader = import_module(\"pyodide._package_loader\");\n\n API.sitepackages = API.package_loader.SITE_PACKAGES.__str__();\n API.dsodir = API.package_loader.DSO_DIR.__str__();\n API.defaultLdLibraryPath = [API.dsodir, API.sitepackages];\n\n API.os.environ.__setitem__(\n \"LD_LIBRARY_PATH\",\n API.defaultLdLibraryPath.join(\":\"),\n );\n\n // copy some last constants onto public API.\n pyodide.pyodide_py = API.pyodide_py;\n pyodide.globals = API.globals;\n return pyodide;\n}\n\ndeclare function _createPyodideModule(Module: any): Promise<void>;\n\n/**\n * If indexURL isn't provided, throw an error and catch it and then parse our\n * file name out from the stack trace.\n *\n * Question: But getting the URL from error stack trace is well... really\n * hacky. Can't we use\n * [`document.currentScript`](https://developer.mozilla.org/en-US/docs/Web/API/Document/currentScript)\n * or\n * [`import.meta.url`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import.meta)\n * instead?\n *\n * Answer: `document.currentScript` works for the browser main thread.\n * `import.meta` works for es6 modules. In a classic webworker, I think there\n * is no approach that works. Also we would need some third approach for node\n * when loading a commonjs module using `require`. On the other hand, this\n * stack trace approach works for every case without any feature detection\n * code.\n */\nfunction calculateIndexURL(): string {\n if (typeof __dirname === \"string\") {\n return __dirname;\n }\n let err: Error;\n try {\n throw new Error();\n } catch (e) {\n err = e as Error;\n }\n let fileName = ErrorStackParser.parse(err)[0].fileName!;\n const indexOfLastSlash = fileName.lastIndexOf(pathSep);\n if (indexOfLastSlash === -1) {\n throw new Error(\n \"Could not extract indexURL path from pyodide module location\",\n );\n }\n return fileName.slice(0, indexOfLastSlash);\n}\n\n/**\n * See documentation for loadPyodide.\n * @private\n */\nexport type ConfigType = {\n indexURL: string;\n packageCacheDir: string;\n lockFileURL: string;\n homedir: string;\n fullStdLib?: boolean;\n stdLibURL?: string;\n stdin?: () => string;\n stdout?: (msg: string) => void;\n stderr?: (msg: string) => void;\n jsglobals?: object;\n args: string[];\n _node_mounts: string[];\n env: { [key: string]: string };\n};\n\n/**\n * Load the main Pyodide wasm module and initialize it.\n *\n * @returns The :ref:`js-api-pyodide` module.\n * @memberof globalThis\n * @async\n * @example\n * async function main() {\n * const pyodide = await loadPyodide({\n * fullStdLib: true,\n * homedir: \"/pyodide\",\n * stdout: (msg) => console.log(`Pyodide: ${msg}`),\n * });\n * console.log(\"Loaded Pyodide\");\n * }\n * main();\n */\nexport async function loadPyodide(\n options: {\n /**\n * The URL from which Pyodide will load the main Pyodide runtime and\n * packages. It is recommended that you leave this unchanged, providing an\n * incorrect value can cause broken behavior.\n *\n * Default: The url that Pyodide is loaded from with the file name\n * (``pyodide.js`` or ``pyodide.mjs``) removed.\n */\n indexURL?: string;\n\n /**\n * The file path where packages will be cached in `node.js`. If a package\n * exists in `packageCacheDir` it is loaded from there, otherwise it is\n * downloaded from the JsDelivr CDN and then cached into `packageCacheDir`.\n * Only applies when running in node.js. Ignored in browsers.\n *\n * Default: same as indexURL\n */\n packageCacheDir?: string;\n\n /**\n * The URL from which Pyodide will load the Pyodide ``pyodide-lock.json`` lock\n * file. You can produce custom lock files with :py:func:`micropip.freeze`.\n * Default: ```${indexURL}/pyodide-lock.json```\n */\n lockFileURL?: string;\n\n /**\n * The home directory which Pyodide will use inside virtual file system.\n * This is deprecated, use ``{env: {HOME : some_dir}}`` instead.\n */\n homedir?: string;\n /**\n * Load the full Python standard library. Setting this to false excludes\n * unvendored modules from the standard library.\n * Default: ``false``\n */\n fullStdLib?: boolean;\n /**\n * The URL from which to load the standard library ``python_stdlib.zip``\n * file. This URL includes the most of the Python stadard library. Some\n * stdlib modules were unvendored, and can be loaded separately\n * with ``fullStdLib=true`` option or by their package name.\n * Default: ```${indexURL}/python_stdlib.zip```\n */\n stdLibURL?: string;\n /**\n * Override the standard input callback. Should ask the user for one line of\n * input.\n */\n stdin?: () => string;\n /**\n * Override the standard output callback.\n */\n stdout?: (msg: string) => void;\n /**\n * Override the standard error output callback.\n */\n stderr?: (msg: string) => void;\n /**\n * The object that Pyodide will use for the ``js`` module.\n * Default: ``globalThis``\n */\n jsglobals?: object;\n /**\n * Command line arguments to pass to Python on startup. See `Python command\n * line interface options\n * <https://docs.python.org/3.10/using/cmdline.html#interface-options>`_ for\n * more details. Default: ``[]``\n */\n args?: string[];\n /**\n * Environment variables to pass to Python. This can be accessed inside of\n * Python at runtime via `os.environ`. Certain environment variables change\n * the way that Python loads:\n * https://docs.python.org/3.10/using/cmdline.html#environment-variables\n * Default: {}\n * If `env.HOME` is undefined, it will be set to a default value of\n * `\"/home/pyodide\"`\n */\n env?: { [key: string]: string };\n\n /**\n * @ignore\n */\n _node_mounts?: string[];\n } = {},\n): Promise<PyodideInterface> {\n await initNodeModules();\n let indexURL = options.indexURL || calculateIndexURL();\n indexURL = resolvePath(indexURL); // A relative indexURL causes havoc.\n if (!indexURL.endsWith(\"/\")) {\n indexURL += \"/\";\n }\n options.indexURL = indexURL;\n\n const default_config = {\n fullStdLib: false,\n jsglobals: globalThis,\n stdin: globalThis.prompt ? globalThis.prompt : undefined,\n lockFileURL: indexURL! + \"pyodide-lock.json\",\n args: [],\n _node_mounts: [],\n env: {},\n packageCacheDir: indexURL,\n };\n const config = Object.assign(default_config, options) as ConfigType;\n if (options.homedir) {\n console.warn(\n \"The homedir argument to loadPyodide is deprecated. \" +\n \"Use 'env: { HOME: value }' instead of 'homedir: value'.\",\n );\n if (options.env && options.env.HOME) {\n throw new Error(\"Set both env.HOME and homedir arguments\");\n }\n config.env.HOME = config.homedir;\n }\n if (!config.env.HOME) {\n config.env.HOME = \"/home/pyodide\";\n }\n\n const Module = createModule();\n Module.print = config.stdout;\n Module.printErr = config.stderr;\n Module.arguments = config.args;\n const API: any = { config };\n Module.API = API;\n\n initializeFileSystem(Module, config);\n\n const moduleLoaded = new Promise((r) => (Module.postRun = r));\n\n // locateFile tells Emscripten where to find the data files that initialize\n // the file system.\n Module.locateFile = (path: string) => config.indexURL + path;\n\n // If the pyodide.asm.js script has been imported, we can skip the dynamic import\n // Users can then do a static import of the script in environments where\n // dynamic importing is not allowed or not desirable, like module-type service workers\n if (typeof _createPyodideModule !== \"function\") {\n const scriptSrc = `${config.indexURL}pyodide.asm.js`;\n await loadScript(scriptSrc);\n }\n\n // _createPyodideModule is specified in the Makefile by the linker flag:\n // `-s EXPORT_NAME=\"'_createPyodideModule'\"`\n await _createPyodideModule(Module);\n\n // There is some work to be done between the module being \"ready\" and postRun\n // being called.\n await moduleLoaded;\n // Handle early exit\n if (Module.exited) {\n throw Module.exited.toThrow;\n }\n\n if (API.version !== version) {\n throw new Error(\n `\\\nPyodide version does not match: '${version}' <==> '${API.version}'. \\\nIf you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.\\\n`,\n );\n }\n // Disable further loading of Emscripten file_packager stuff.\n Module.locateFile = (path: string) => {\n throw new Error(\"Didn't expect to load any more file_packager files!\");\n };\n\n let [err, captured_stderr] = API.rawRun(\"import _pyodide_core\");\n if (err) {\n Module.API.fatal_loading_error(\n \"Failed to import _pyodide_core\\n\",\n captured_stderr,\n );\n }\n\n const pyodide = finalizeBootstrap(API, config);\n\n // runPython works starting here.\n if (!pyodide.version.includes(\"dev\")) {\n // Currently only used in Node to download packages the first time they are\n // loaded. But in other cases it's harmless.\n API.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${pyodide.version}/full/`);\n }\n await API.packageIndexReady;\n\n let importhook = API._pyodide._importhook;\n importhook.register_module_not_found_hook(\n API._import_name_to_package_name,\n API.lockfile_unvendored_stdlibs_and_test,\n );\n\n if (API.lockfile_info.version !== version) {\n throw new Error(\"Lock file version doesn't match Pyodide version\");\n }\n API.package_loader.init_loaded_packages();\n if (config.fullStdLib) {\n await pyodide.loadPackage(API.lockfile_unvendored_stdlibs);\n }\n API.initializeStreams(config.stdin, config.stdout, config.stderr);\n return pyodide;\n}\n", "// Detect if we're in node\ndeclare var process: any;\n\nexport const IN_NODE =\n typeof process === \"object\" &&\n typeof process.versions === \"object\" &&\n typeof process.versions.node === \"string\" &&\n typeof process.browser ===\n \"undefined\"; /* This last condition checks if we run the browser shim of process */\n\nlet nodeUrlMod: any;\nlet nodeFetch: any;\nlet nodePath: any;\nlet nodeVmMod: any;\n/** @private */\nexport let nodeFsPromisesMod: any;\n\ndeclare var globalThis: {\n importScripts: (url: string) => void;\n document?: any;\n fetch?: any;\n};\n\n/**\n * If we're in node, it's most convenient to import various node modules on\n * initialization. Otherwise, this does nothing.\n * @private\n */\nexport async function initNodeModules() {\n if (!IN_NODE) {\n return;\n }\n // @ts-ignore\n nodeUrlMod = (await import(\"url\")).default;\n nodeFsPromisesMod = await import(\"fs/promises\");\n if (globalThis.fetch) {\n nodeFetch = fetch;\n } else {\n // @ts-ignore\n nodeFetch = (await import(\"node-fetch\")).default;\n }\n // @ts-ignore\n nodeVmMod = (await import(\"vm\")).default;\n nodePath = await import(\"path\");\n pathSep = nodePath.sep;\n\n // Emscripten uses `require`, so if it's missing (because we were imported as\n // an ES6 module) we need to polyfill `require` with `import`. `import` is\n // async and `require` is synchronous, so we import all packages that might be\n // required up front and define require to look them up in this table.\n\n if (typeof require !== \"undefined\") {\n return;\n }\n // These are all the packages required in pyodide.asm.js. You can get this\n // list with:\n // $ grep -o 'require(\"[a-z]*\")' pyodide.asm.js | sort -u\n const fs = await import(\"fs\");\n const crypto = await import(\"crypto\");\n const ws = await import(\"ws\");\n const child_process = await import(\"child_process\");\n const node_modules: { [mode: string]: any } = {\n fs,\n crypto,\n ws,\n child_process,\n };\n // Since we're in an ES6 module, this is only modifying the module namespace,\n // it's still private to Pyodide.\n (globalThis as any).require = function (mod: string): any {\n return node_modules[mod];\n };\n}\n\nfunction node_resolvePath(path: string, base?: string): string {\n return nodePath.resolve(base || \".\", path);\n}\n\nfunction browser_resolvePath(path: string, base?: string): string {\n if (base === undefined) {\n // @ts-ignore\n base = location;\n }\n return new URL(path, base).toString();\n}\n\nexport let resolvePath: (rest: string, base?: string) => string;\nif (IN_NODE) {\n resolvePath = node_resolvePath;\n} else {\n resolvePath = browser_resolvePath;\n}\n\n/**\n * Get the path separator. If we are on Linux or in the browser, it's /.\n * In Windows, it's \\.\n * @private\n */\nexport let pathSep: string;\n\nif (!IN_NODE) {\n pathSep = \"/\";\n}\n\n/**\n * Load a binary file, only for use in Node. If the path explicitly is a URL,\n * then fetch from a URL, else load from the file system.\n * @param indexURL base path to resolve relative paths\n * @param path the path to load\n * @param checksum sha-256 checksum of the package\n * @returns An ArrayBuffer containing the binary data\n * @private\n */\nasync function node_loadBinaryFile(\n path: string,\n _file_sub_resource_hash?: string | undefined, // Ignoring sub resource hash. See issue-2431.\n): Promise<Uint8Array> {\n if (path.startsWith(\"file://\")) {\n // handle file:// with filesystem operations rather than with fetch.\n path = path.slice(\"file://\".length);\n }\n if (path.includes(\"://\")) {\n // If it has a protocol, make a fetch request\n let response = await nodeFetch(path);\n if (!response.ok) {\n throw new Error(`Failed to load '${path}': request failed.`);\n }\n return new Uint8Array(await response.arrayBuffer());\n } else {\n // Otherwise get it from the file system\n const data = await nodeFsPromisesMod.readFile(path);\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength);\n }\n}\n\n/**\n * Load a binary file, only for use in browser. Resolves relative paths against\n * indexURL.\n *\n * @param path the path to load\n * @param subResourceHash the sub resource hash for fetch() integrity check\n * @returns A Uint8Array containing the binary data\n * @private\n */\nasync function browser_loadBinaryFile(\n path: string,\n subResourceHash: string | undefined,\n): Promise<Uint8Array> {\n // @ts-ignore\n const url = new URL(path, location);\n let options = subResourceHash ? { integrity: subResourceHash } : {};\n // @ts-ignore\n let response = await fetch(url, options);\n if (!response.ok) {\n throw new Error(`Failed to load '${url}': request failed.`);\n }\n return new Uint8Array(await response.arrayBuffer());\n}\n\n/** @private */\nexport let loadBinaryFile: (\n path: string,\n file_sub_resource_hash?: string | undefined,\n) => Promise<Uint8Array>;\nif (IN_NODE) {\n loadBinaryFile = node_loadBinaryFile;\n} else {\n loadBinaryFile = browser_loadBinaryFile;\n}\n\n/**\n * Currently loadScript is only used once to load `pyodide.asm.js`.\n * @param url\n * @async\n * @private\n */\nexport let loadScript: (url: string) => Promise<void>;\n\nif (globalThis.document) {\n // browser\n loadScript = async (url) => await import(/* webpackIgnore: true */ url);\n} else if (globalThis.importScripts) {\n // webworker\n loadScript = async (url) => {\n try {\n // use importScripts in classic web worker\n globalThis.importScripts(url);\n } catch (e) {\n // importScripts throws TypeError in a module type web worker, use import instead\n if (e instanceof TypeError) {\n await import(/* webpackIgnore: true */ url);\n } else {\n throw e;\n }\n }\n };\n} else if (IN_NODE) {\n loadScript = nodeLoadScript;\n} else {\n throw new Error(\"Cannot determine runtime environment\");\n}\n\n/**\n * Load a text file and executes it as Javascript\n * @param url The path to load. May be a url or a relative file system path.\n * @private\n */\nasync function nodeLoadScript(url: string) {\n if (url.startsWith(\"file://\")) {\n // handle file:// with filesystem operations rather than with fetch.\n url = url.slice(\"file://\".length);\n }\n if (url.includes(\"://\")) {\n // If it's a url, load it with fetch then eval it.\n nodeVmMod.runInThisContext(await (await nodeFetch(url)).text());\n } else {\n // Otherwise, hopefully it is a relative path we can load from the file\n // system.\n await import(/* webpackIgnore: true */ nodeUrlMod.pathToFileURL(url).href);\n }\n}\n", "import { Module } from \"./module\";\n\n/**\n * @private\n */\nexport function initializeNativeFS(module: Module) {\n const FS = module.FS;\n const MEMFS = module.FS.filesystems.MEMFS;\n const PATH = module.PATH;\n\n const nativeFSAsync = {\n // DIR_MODE: {{{ cDefine('S_IFDIR') }}} | 511 /* 0777 */,\n // FILE_MODE: {{{ cDefine('S_IFREG') }}} | 511 /* 0777 */,\n DIR_MODE: 16384 | 511,\n FILE_MODE: 32768 | 511,\n mount: function (mount: any) {\n if (!mount.opts.fileSystemHandle) {\n throw new Error(\"opts.fileSystemHandle is required\");\n }\n\n // reuse all of the core MEMFS functionality\n return MEMFS.mount.apply(null, arguments);\n },\n syncfs: async (mount: any, populate: Boolean, callback: Function) => {\n try {\n const local = nativeFSAsync.getLocalSet(mount);\n const remote = await nativeFSAsync.getRemoteSet(mount);\n const src = populate ? remote : local;\n const dst = populate ? local : remote;\n await nativeFSAsync.reconcile(mount, src, dst);\n callback(null);\n } catch (e) {\n callback(e);\n }\n },\n // Returns file set of emscripten's filesystem at the mountpoint.\n getLocalSet: (mount: any) => {\n let entries = Object.create(null);\n\n function isRealDir(p: string) {\n return p !== \".\" && p !== \"..\";\n }\n\n function toAbsolute(root: string) {\n return (p: string) => {\n return PATH.join2(root, p);\n };\n }\n\n let check = FS.readdir(mount.mountpoint)\n .filter(isRealDir)\n .map(toAbsolute(mount.mountpoint));\n\n while (check.length) {\n let path = check.pop();\n let stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n check.push.apply(\n check,\n FS.readdir(path).filter(isRealDir).map(toAbsolute(path)),\n );\n }\n\n entries[path] = { timestamp: stat.mtime, mode: stat.mode };\n }\n\n return { type: \"local\", entries: entries };\n },\n // Returns file set of the real, on-disk filesystem at the mountpoint.\n getRemoteSet: async (mount: any) => {\n // TODO: this should be a map.\n const entries = Object.create(null);\n\n const handles = await getFsHandles(mount.opts.fileSystemHandle);\n for (const [path, handle] of handles) {\n if (path === \".\") continue;\n\n entries[PATH.join2(mount.mountpoint, path)] = {\n timestamp:\n handle.kind === \"file\"\n ? (await handle.getFile()).lastModifiedDate\n : new Date(),\n mode:\n handle.kind === \"file\"\n ? nativeFSAsync.FILE_MODE\n : nativeFSAsync.DIR_MODE,\n };\n }\n\n return { type: \"remote\", entries, handles };\n },\n loadLocalEntry: (path: string) => {\n const lookup = FS.lookupPath(path);\n const node = lookup.node;\n const stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n return { timestamp: stat.mtime, mode: stat.mode };\n } else if (FS.isFile(stat.mode)) {\n node.contents = MEMFS.getFileDataAsTypedArray(node);\n return {\n timestamp: stat.mtime,\n mode: stat.mode,\n contents: node.contents,\n };\n } else {\n throw new Error(\"node type not supported\");\n }\n },\n storeLocalEntry: (path: string, entry: any) => {\n if (FS.isDir(entry[\"mode\"])) {\n FS.mkdirTree(path, entry[\"mode\"]);\n } else if (FS.isFile(entry[\"mode\"])) {\n FS.writeFile(path, entry[\"contents\"], { canOwn: true });\n } else {\n throw new Error(\"node type not supported\");\n }\n\n FS.chmod(path, entry[\"mode\"]);\n FS.utime(path, entry[\"timestamp\"], entry[\"timestamp\"]);\n },\n removeLocalEntry: (path: string) => {\n var stat = FS.stat(path);\n\n if (FS.isDir(stat.mode)) {\n FS.rmdir(path);\n } else if (FS.isFile(stat.mode)) {\n FS.unlink(path);\n }\n },\n loadRemoteEntry: async (handle: any) => {\n if (handle.kind === \"file\") {\n const file = await handle.getFile();\n return {\n contents: new Uint8Array(await file.arrayBuffer()),\n mode: nativeFSAsync.FILE_MODE,\n timestamp: file.lastModifiedDate,\n };\n } else if (handle.kind === \"directory\") {\n return {\n mode: nativeFSAsync.DIR_MODE,\n timestamp: new Date(),\n };\n } else {\n throw new Error(\"unknown kind: \" + handle.kind);\n }\n },\n storeRemoteEntry: async (handles: any, path: string, entry: any) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n const handle = FS.isFile(entry.mode)\n ? await parentDirHandle.getFileHandle(PATH.basename(path), {\n create: true,\n })\n : await parentDirHandle.getDirectoryHandle(PATH.basename(path), {\n create: true,\n });\n if (handle.kind === \"file\") {\n const writable = await handle.createWritable();\n await writable.write(entry.contents);\n await writable.close();\n }\n handles.set(path, handle);\n },\n removeRemoteEntry: async (handles: any, path: string) => {\n const parentDirHandle = handles.get(PATH.dirname(path));\n await parentDirHandle.removeEntry(PATH.basename(path));\n handles.delete(path);\n },\n reconcile: async (mount: any, src: any, dst: any) => {\n let total = 0;\n\n const create: Array<string> = [];\n Object.keys(src.entries).forEach(function (key) {\n const e = src.entries[key];\n const e2 = dst.entries[key];\n if (\n !e2 ||\n (FS.isFile(e.mode) &&\n e[\"timestamp\"].getTime() > e2[\"timestamp\"].getTime())\n ) {\n create.push(key);\n total++;\n }\n });\n // sort paths in ascending order so directory entries are created\n // before the files inside them\n create.sort();\n\n const remove: Array<string> = [];\n Object.keys(dst.entries).forEach(function (key) {\n if (!src.entries[key]) {\n remove.push(key);\n total++;\n }\n });\n // sort paths in descending order so files are deleted before their\n // parent directories\n remove.sort().reverse();\n\n if (!total) {\n return;\n }\n\n const handles = src.type === \"remote\" ? src.handles : dst.handles;\n\n for (const path of create) {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, \"/\"),\n ).substring(1);\n if (dst.type === \"local\") {\n const handle = handles.get(relPath);\n const entry = await nativeFSAsync.loadRemoteEntry(handle);\n nativeFSAsync.storeLocalEntry(path, entry);\n } else {\n const entry = nativeFSAsync.loadLocalEntry(path);\n await nativeFSAsync.storeRemoteEntry(handles, relPath, entry);\n }\n }\n\n for (const path of remove) {\n if (dst.type === \"local\") {\n nativeFSAsync.removeLocalEntry(path);\n } else {\n const relPath = PATH.normalize(\n path.replace(mount.mountpoint, \"/\"),\n ).substring(1);\n await nativeFSAsync.removeRemoteEntry(handles, relPath);\n }\n }\n },\n };\n\n module.FS.filesystems.NATIVEFS_ASYNC = nativeFSAsync;\n}\n\nconst getFsHandles = async (dirHandle: any) => {\n const handles: any = [];\n\n async function collect(curDirHandle: any) {\n for await (const entry of curDirHandle.values()) {\n handles.push(entry);\n if (entry.kind === \"directory\") {\n await collect(entry);\n }\n }\n }\n\n await collect(dirHandle);\n\n const result = new Map();\n result.set(\".\", dirHandle);\n for (const handle of handles) {\n const relativePath = (await dirHandle.resolve(handle)).join(\"/\");\n result.set(relativePath, handle);\n }\n return result;\n};\n", "/** @private */\n\nimport { ConfigType } from \"./pyodide\";\nimport { initializeNativeFS } from \"./nativefs\";\nimport { loadBinaryFile } from \"./compat\";\n\nexport type FSNode = {\n timestamp: number;\n rdev: number;\n contents: Uint8Array;\n};\n\nexport type FSStream = {\n tty?: boolean;\n seekable?: boolean;\n stream_ops: FSStreamOps;\n node: FSNode;\n};\n\nexport type FSStreamOps = FSStreamOpsGen<FSStream>;\n\nexport type FSStreamOpsGen<T> = {\n open: (a: T) => void;\n close: (a: T) => void;\n fsync: (a: T) => void;\n read: (\n a: T,\n b: Uint8Array,\n offset: number,\n length: number,\n pos: number,\n ) => number;\n write: (\n a: T,\n b: Uint8Array,\n offset: number,\n length: number,\n pos: number,\n ) => number;\n};\n\nexport interface FS {\n unlink: (path: string) => void;\n mkdirTree: (path: string, mode?: number) => void;\n chdir: (path: string) => void;\n symlink: (target: string, src: string) => FSNode;\n createDevice: ((\n parent: string,\n name: string,\n input?: (() => number | null) | null,\n output?: ((code: number) => void) | null,\n ) => FSNode) & {\n major: number;\n };\n closeStream: (fd: number) => void;\n open: (path: string, flags: string | number, mode?: number) => FSStream;\n makedev: (major: number, minor: number) => number;\n mkdev: (path: string, dev: number) => FSNode;\n filesystems: any;\n stat: (path: string, dontFollow?: boolean) => any;\n readdir: (node: FSNode) => string[];\n isDir: (mode: number) => boolean;\n lookupPath: (path: string) => { node: FSNode };\n isFile: (mode: number) => boolean;\n writeFile: (path: string, contents: any, o?: { canOwn?: boolean }) => void;\n chmod: (path: string, mode: number) => void;\n utime: (path: string, atime: number, mtime: number) => void;\n rmdir: (path: string) => void;\n mount: (type: any, opts: any, mountpoint: string) => any;\n write: (\n stream: FSStream,\n buffer: any,\n offset: number,\n length: number,\n position?: number,\n ) => number;\n close: (stream: FSStream) => void;\n ErrnoError: { new (errno: number): Error };\n registerDevice<T>(dev: number, ops: FSStreamOpsGen<T>): void;\n}\n\nexport interface Module {\n noImageDecoding: boolean;\n noAudioDecoding: boolean;\n noWasmDecoding: boolean;\n quit: (status: number, toThrow: Error) => void;\n preRun: { (): void }[];\n print: (a: string) => void;\n printErr: (a: string) => void;\n ENV: { [key: string]: string };\n PATH: any;\n TTY: any;\n FS: FS;\n canvas?: HTMLCanvasElement;\n addRunDependency: (id: string) => void;\n removeRunDependency: (id: string) => void;\n reportUndefinedSymbols: () => void;\n ERRNO_CODES: { [k: string]: number };\n}\n\n/**\n * The Emscripten Module.\n *\n * @private\n */\nexport function createModule(): any {\n let Module: any = {};\n Module.noImageDecoding = true;\n Module.noAudioDecoding = true;\n Module.noWasmDecoding = false; // we preload wasm using the built in plugin now\n Module.preRun = [];\n Module.quit = (status: number, toThrow: Error) => {\n Module.exited = { status, toThrow };\n throw toThrow;\n };\n return Module;\n}\n\n/**\n * Make the home directory inside the virtual file system,\n * then change the working directory to it.\n *\n * @param Module The Emscripten Module.\n * @param path The path to the home directory.\n * @private\n */\nfunction createHomeDirectory(Module: Module, path: string) {\n Module.preRun.push(function () {\n const fallbackPath = \"/\";\n try {\n Module.FS.mkdirTree(path);\n } catch (e) {\n console.error(`Error occurred while making a home directory '${path}':`);\n console.error(e);\n console.error(`Using '${fallbackPath}' for a home directory instead`);\n path = fallbackPath;\n }\n Module.FS.chdir(path);\n });\n}\n\nfunction setEnvironment(Module: Module, env: { [key: string]: string }) {\n Module.preRun.push(function () {\n Object.assign(Module.ENV, env);\n });\n}\n\n/**\n * Mount local directories to the virtual file system. Only for Node.js.\n * @param module The Emscripten Module.\n * @param mounts The list of paths to mount.\n */\nfunction mountLocalDirectories(Module: Module, mounts: string[]) {\n Module.preRun.push(() => {\n for (const mount of mounts) {\n Module.FS.mkdirTree(mount);\n Module.FS.mount(Module.FS.filesystems.NODEFS, { root: mount }, mount);\n }\n });\n}\n\n/**\n * Install the Python standard library to the virtual file system.\n *\n * Previously, this was handled by Emscripten's file packager (pyodide.asm.data).\n * However, using the file packager means that we have only one version\n * of the standard library available. We want to be able to use different\n * versions of the standard library, for example:\n *\n * - Use compiled(.pyc) or uncompiled(.py) standard library.\n * - Remove unused modules or add additional modules using bundlers like pyodide-pack.\n *\n * @param Module The Emscripten Module.\n * @param stdlibPromise A promise that resolves to the standard library.\n */\nfunction installStdlib(Module: Module, stdlibURL: string) {\n const stdlibPromise: Promise<Uint8Array> = loadBinaryFile(stdlibURL);\n\n Module.preRun.push(() => {\n /* @ts-ignore */\n const pymajor = Module._py_version_major();\n /* @ts-ignore */\n const pyminor = Module._py_version_minor();\n\n Module.FS.mkdirTree(\"/lib\");\n Module.FS.mkdirTree(`/lib/python${pymajor}.${pyminor}/site-packages`);\n\n Module.addRunDependency(\"install-stdlib\");\n\n stdlibPromise\n .then((stdlib: Uint8Array) => {\n Module.FS.writeFile(`/lib/python${pymajor}${pyminor}.zip`, stdlib);\n })\n .catch((e) => {\n console.error(\"Error occurred while installing the standard library:\");\n console.error(e);\n })\n .finally(() => {\n Module.removeRunDependency(\"install-stdlib\");\n });\n });\n}\n\n/**\n * Initialize the virtual file system, before loading Python interpreter.\n * @private\n */\nexport function initializeFileSystem(Module: Module, config: ConfigType) {\n let stdLibURL;\n if (config.stdLibURL != undefined) {\n stdLibURL = config.stdLibURL;\n } else {\n stdLibURL = config.indexURL + \"python_stdlib.zip\";\n }\n\n installStdlib(Module, stdLibURL);\n createHomeDirectory(Module, config.env.HOME);\n setEnvironment(Module, config.env);\n mountLocalDirectories(Module, config._node_mounts);\n Module.preRun.push(() => initializeNativeFS(Module));\n}\n", "/**\n *\n * The Pyodide version.\n *\n * The version here is a Python version, following :pep:`440`. This is different\n * from the version in ``package.json`` which follows the node package manager\n * version convention.\n */\nexport const version: string = \"0.24.0a1\";\n"],
5
+ "mappings": "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",
6
+ "names": ["require_stackframe", "__commonJSMin", "exports", "module", "root", "factory", "_isNumber", "n", "__name", "_capitalize", "str", "_getter", "p", "booleanProps", "numericProps", "stringProps", "arrayProps", "objectProps", "props", "StackFrame", "obj", "i", "v", "fileName", "lineNumber", "columnNumber", "functionName", "argsStartIndex", "argsEndIndex", "args", "locationString", "parts", "j", "k", "require_error_stack_parser", "__commonJSMin", "exports", "module", "root", "factory", "__name", "StackFrame", "FIREFOX_SAFARI_STACK_REGEXP", "CHROME_IE_STACK_REGEXP", "SAFARI_NATIVE_CODE_REGEXP", "error", "urlLike", "regExp", "parts", "filtered", "line", "sanitizedLine", "location", "locationParts", "functionName", "fileName", "functionNameRegex", "matches", "e", "lineRE", "lines", "result", "i", "len", "match", "tokens", "functionCall", "argsRaw", "args", "pyodide_umd_exports", "__export", "loadPyodide", "version", "import_error_stack_parser", "IN_NODE", "nodeUrlMod", "nodeFetch", "nodePath", "nodeVmMod", "nodeFsPromisesMod", "initNodeModules", "pathSep", "__require", "fs", "crypto", "ws", "child_process", "node_modules", "mod", "__name", "node_resolvePath", "path", "base", "browser_resolvePath", "resolvePath", "node_loadBinaryFile", "_file_sub_resource_hash", "response", "data", "browser_loadBinaryFile", "subResourceHash", "url", "loadBinaryFile", "loadScript", "e", "nodeLoadScript", "initializeNativeFS", "module", "FS", "MEMFS", "PATH", "nativeFSAsync", "mount", "populate", "callback", "local", "remote", "src", "dst", "e", "entries", "isRealDir", "p", "__name", "toAbsolute", "root", "check", "path", "stat", "handles", "getFsHandles", "handle", "node", "entry", "file", "parentDirHandle", "writable", "total", "create", "key", "e2", "remove", "relPath", "dirHandle", "collect", "curDirHandle", "result", "relativePath", "createModule", "Module", "status", "toThrow", "__name", "createHomeDirectory", "path", "fallbackPath", "e", "setEnvironment", "env", "mountLocalDirectories", "mounts", "mount", "installStdlib", "stdlibURL", "stdlibPromise", "loadBinaryFile", "pymajor", "pyminor", "stdlib", "initializeFileSystem", "config", "stdLibURL", "initializeNativeFS", "version", "wrapPythonGlobals", "globals_dict", "builtins_dict", "target", "symbol", "key", "result", "__name", "finalizeBootstrap", "API", "config", "import_module", "globals", "builtins", "importhook", "jsFinderHook", "o", "pyodide", "name", "calculateIndexURL", "err", "e", "fileName", "ErrorStackParser", "indexOfLastSlash", "pathSep", "loadPyodide", "options", "initNodeModules", "indexURL", "resolvePath", "default_config", "Module", "createModule", "initializeFileSystem", "moduleLoaded", "r", "path", "scriptSrc", "loadScript", "version", "captured_stderr", "loadPyodide"]
7
+ }
package/pyodide.mjs CHANGED
@@ -1,2 +1,11 @@
1
- "undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self&&self;var StackFrame,FIREFOX_SAFARI_STACK_REGEXP,CHROME_IE_STACK_REGEXP,SAFARI_NATIVE_CODE_REGEXP,errorStackParser={exports:{}},stackframe={exports:{}};stackframe.exports=function(){function _isNumber(n){return!isNaN(parseFloat(n))&&isFinite(n)}function _capitalize(str){return str.charAt(0).toUpperCase()+str.substring(1)}function _getter(p){return function(){return this[p]}}var booleanProps=["isConstructor","isEval","isNative","isToplevel"],numericProps=["columnNumber","lineNumber"],stringProps=["fileName","functionName","source"],arrayProps=["args"],objectProps=["evalOrigin"],props=booleanProps.concat(numericProps,stringProps,arrayProps,objectProps);function StackFrame(obj){if(obj)for(var i=0;i<props.length;i++)void 0!==obj[props[i]]&&this["set"+_capitalize(props[i])](obj[props[i]])}StackFrame.prototype={getArgs:function(){return this.args},setArgs:function(v){if("[object Array]"!==Object.prototype.toString.call(v))throw new TypeError("Args must be an Array");this.args=v},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(v){if(v instanceof StackFrame)this.evalOrigin=v;else{if(!(v instanceof Object))throw new TypeError("Eval Origin must be an Object or StackFrame");this.evalOrigin=new StackFrame(v)}},toString:function(){var fileName=this.getFileName()||"",lineNumber=this.getLineNumber()||"",columnNumber=this.getColumnNumber()||"",functionName=this.getFunctionName()||"";return this.getIsEval()?fileName?"[eval] ("+fileName+":"+lineNumber+":"+columnNumber+")":"[eval]:"+lineNumber+":"+columnNumber:functionName?functionName+" ("+fileName+":"+lineNumber+":"+columnNumber+")":fileName+":"+lineNumber+":"+columnNumber}},StackFrame.fromString=function(str){var argsStartIndex=str.indexOf("("),argsEndIndex=str.lastIndexOf(")"),functionName=str.substring(0,argsStartIndex),args=str.substring(argsStartIndex+1,argsEndIndex).split(","),locationString=str.substring(argsEndIndex+1);if(0===locationString.indexOf("@"))var parts=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(locationString,""),fileName=parts[1],lineNumber=parts[2],columnNumber=parts[3];return new StackFrame({functionName:functionName,args:args||void 0,fileName:fileName,lineNumber:lineNumber||void 0,columnNumber:columnNumber||void 0})};for(var i=0;i<booleanProps.length;i++)StackFrame.prototype["get"+_capitalize(booleanProps[i])]=_getter(booleanProps[i]),StackFrame.prototype["set"+_capitalize(booleanProps[i])]=function(p){return function(v){this[p]=Boolean(v)}}(booleanProps[i]);for(var j=0;j<numericProps.length;j++)StackFrame.prototype["get"+_capitalize(numericProps[j])]=_getter(numericProps[j]),StackFrame.prototype["set"+_capitalize(numericProps[j])]=function(p){return function(v){if(!_isNumber(v))throw new TypeError(p+" must be a Number");this[p]=Number(v)}}(numericProps[j]);for(var k=0;k<stringProps.length;k++)StackFrame.prototype["get"+_capitalize(stringProps[k])]=_getter(stringProps[k]),StackFrame.prototype["set"+_capitalize(stringProps[k])]=function(p){return function(v){this[p]=String(v)}}(stringProps[k]);return StackFrame}();var ErrorStackParser=errorStackParser.exports=(StackFrame=stackframe.exports,FIREFOX_SAFARI_STACK_REGEXP=/(^|@)\S+:\d+/,CHROME_IE_STACK_REGEXP=/^\s*at .*(\S+:\d+|\(native\))/m,SAFARI_NATIVE_CODE_REGEXP=/^(eval@)?(\[native code])?$/,{parse:function(error){if(void 0!==error.stacktrace||void 0!==error["opera#sourceloc"])return this.parseOpera(error);if(error.stack&&error.stack.match(CHROME_IE_STACK_REGEXP))return this.parseV8OrIE(error);if(error.stack)return this.parseFFOrSafari(error);throw new Error("Cannot parse given Error object")},extractLocation:function(urlLike){if(-1===urlLike.indexOf(":"))return[urlLike];var parts=/(.+?)(?::(\d+))?(?::(\d+))?$/.exec(urlLike.replace(/[()]/g,""));return[parts[1],parts[2]||void 0,parts[3]||void 0]},parseV8OrIE:function(error){return error.stack.split("\n").filter((function(line){return!!line.match(CHROME_IE_STACK_REGEXP)}),this).map((function(line){line.indexOf("(eval ")>-1&&(line=line.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var sanitizedLine=line.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),location=sanitizedLine.match(/ (\(.+\)$)/);sanitizedLine=location?sanitizedLine.replace(location[0],""):sanitizedLine;var locationParts=this.extractLocation(location?location[1]:sanitizedLine),functionName=location&&sanitizedLine||void 0,fileName=["eval","<anonymous>"].indexOf(locationParts[0])>-1?void 0:locationParts[0];return new StackFrame({functionName:functionName,fileName:fileName,lineNumber:locationParts[1],columnNumber:locationParts[2],source:line})}),this)},parseFFOrSafari:function(error){return error.stack.split("\n").filter((function(line){return!line.match(SAFARI_NATIVE_CODE_REGEXP)}),this).map((function(line){if(line.indexOf(" > eval")>-1&&(line=line.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),-1===line.indexOf("@")&&-1===line.indexOf(":"))return new StackFrame({functionName:line});var functionNameRegex=/((.*".+"[^@]*)?[^@]*)(?:@)/,matches=line.match(functionNameRegex),functionName=matches&&matches[1]?matches[1]:void 0,locationParts=this.extractLocation(line.replace(functionNameRegex,""));return new StackFrame({functionName:functionName,fileName:locationParts[0],lineNumber:locationParts[1],columnNumber:locationParts[2],source:line})}),this)},parseOpera:function(e){return!e.stacktrace||e.message.indexOf("\n")>-1&&e.message.split("\n").length>e.stacktrace.split("\n").length?this.parseOpera9(e):e.stack?this.parseOpera11(e):this.parseOpera10(e)},parseOpera9:function(e){for(var lineRE=/Line (\d+).*script (?:in )?(\S+)/i,lines=e.message.split("\n"),result=[],i=2,len=lines.length;i<len;i+=2){var match=lineRE.exec(lines[i]);match&&result.push(new StackFrame({fileName:match[2],lineNumber:match[1],source:lines[i]}))}return result},parseOpera10:function(e){for(var lineRE=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,lines=e.stacktrace.split("\n"),result=[],i=0,len=lines.length;i<len;i+=2){var match=lineRE.exec(lines[i]);match&&result.push(new StackFrame({functionName:match[3]||void 0,fileName:match[2],lineNumber:match[1],source:lines[i]}))}return result},parseOpera11:function(error){return error.stack.split("\n").filter((function(line){return!!line.match(FIREFOX_SAFARI_STACK_REGEXP)&&!line.match(/^Error created at/)}),this).map((function(line){var argsRaw,tokens=line.split("@"),locationParts=this.extractLocation(tokens.pop()),functionCall=tokens.shift()||"",functionName=functionCall.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^)]*\)/g,"")||void 0;functionCall.match(/\(([^)]*)\)/)&&(argsRaw=functionCall.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var args=void 0===argsRaw||"[arguments not available]"===argsRaw?void 0:argsRaw.split(",");return new StackFrame({functionName:functionName,args:args,fileName:locationParts[0],lineNumber:locationParts[1],columnNumber:locationParts[2],source:line})}),this)}});const IN_NODE="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node&&void 0===process.browser;let nodeUrlMod,nodeFetch,nodePath,nodeVmMod,nodeFsPromisesMod,resolvePath,pathSep,loadBinaryFile,loadScript;if(resolvePath=IN_NODE?function(path,base){return nodePath.resolve(base||".",path)}:function(path,base){return void 0===base&&(base=location),new URL(path,base).toString()},IN_NODE||(pathSep="/"),loadBinaryFile=IN_NODE?async function(path,_file_sub_resource_hash){if(path.startsWith("file://")&&(path=path.slice("file://".length)),path.includes("://")){let response=await nodeFetch(path);if(!response.ok)throw new Error(`Failed to load '${path}': request failed.`);return new Uint8Array(await response.arrayBuffer())}{const data=await nodeFsPromisesMod.readFile(path);return new Uint8Array(data.buffer,data.byteOffset,data.byteLength)}}:async function(path,subResourceHash){const url=new URL(path,location);let options=subResourceHash?{integrity:subResourceHash}:{},response=await fetch(url,options);if(!response.ok)throw new Error(`Failed to load '${url}': request failed.`);return new Uint8Array(await response.arrayBuffer())},globalThis.document)loadScript=async url=>await import(/* webpackIgnore: true */url);else if(globalThis.importScripts)loadScript=async url=>{try{globalThis.importScripts(url)}catch(e){if(!(e instanceof TypeError))throw e;await import(/* webpackIgnore: true */url)}};else{if(!IN_NODE)throw new Error("Cannot determine runtime environment");loadScript=async function(url){url.startsWith("file://")&&(url=url.slice("file://".length));url.includes("://")?nodeVmMod.runInThisContext(await(await nodeFetch(url)).text()):await import(/* webpackIgnore: true */nodeUrlMod.pathToFileURL(url).href)}}function __values(o){var s="function"==typeof Symbol&&Symbol.iterator,m=s&&o[s],i=0;if(m)return m.call(o);if(o&&"number"==typeof o.length)return{next:function(){return o&&i>=o.length&&(o=void 0),{value:o&&o[i++],done:!o}}};throw new TypeError(s?"Object is not iterable.":"Symbol.iterator is not defined.")}function __asyncValues(o){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var i,m=o[Symbol.asyncIterator];return m?m.call(o):(o=__values(o),i={},verb("next"),verb("throw"),verb("return"),i[Symbol.asyncIterator]=function(){return this},i);function verb(n){i[n]=o[n]&&function(v){return new Promise((function(resolve,reject){(function(resolve,reject,d,v){Promise.resolve(v).then((function(v){resolve({value:v,done:d})}),reject)})(resolve,reject,(v=o[n](v)).done,v.value)}))}}}const getFsHandles=async dirHandle=>{const handles=[];await async function collect(curDirHandle){var e_1,_a;try{for(var _c,_b=__asyncValues(curDirHandle.values());!(_c=await _b.next()).done;){const entry=_c.value;handles.push(entry),"directory"===entry.kind&&await collect(entry)}}catch(e_1_1){e_1={error:e_1_1}}finally{try{_c&&!_c.done&&(_a=_b.return)&&await _a.call(_b)}finally{if(e_1)throw e_1.error}}}(dirHandle);const result=new Map;result.set(".",dirHandle);for(const handle of handles){const relativePath=(await dirHandle.resolve(handle)).join("/");result.set(relativePath,handle)}return result};function initializeFileSystem(Module,config){let stdLibURL;stdLibURL=null!=config.stdLibURL?config.stdLibURL:config.indexURL+"python_stdlib.zip",function(Module,stdlibURL){const stdlibPromise=loadBinaryFile(stdlibURL);Module.preRun.push((()=>{const pymajor=Module._py_version_major(),pyminor=Module._py_version_minor();Module.FS.mkdirTree("/lib"),Module.FS.mkdirTree(`/lib/python${pymajor}.${pyminor}/site-packages`),Module.addRunDependency("install-stdlib"),stdlibPromise.then((stdlib=>{Module.FS.writeFile(`/lib/python${pymajor}${pyminor}.zip`,stdlib)})).catch((e=>{console.error("Error occurred while installing the standard library:"),console.error(e)})).finally((()=>{Module.removeRunDependency("install-stdlib")}))}))}(Module,stdLibURL),function(Module,path){Module.preRun.push((function(){try{Module.FS.mkdirTree(path)}catch(e){console.error(`Error occurred while making a home directory '${path}':`),console.error(e),console.error("Using '/' for a home directory instead"),path="/"}Module.ENV.HOME=path,Module.FS.chdir(path)}))}(Module,config.homedir),function(Module,mounts){Module.preRun.push((()=>{for(const mount of mounts)Module.FS.mkdirTree(mount),Module.FS.mount(Module.FS.filesystems.NODEFS,{root:mount},mount)}))}(Module,config._node_mounts),Module.preRun.push((()=>function(module){const FS=module.FS,MEMFS=module.FS.filesystems.MEMFS,PATH=module.PATH,nativeFSAsync={DIR_MODE:16895,FILE_MODE:33279,mount:function(mount){if(!mount.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return MEMFS.mount.apply(null,arguments)},syncfs:async(mount,populate,callback)=>{try{const local=nativeFSAsync.getLocalSet(mount),remote=await nativeFSAsync.getRemoteSet(mount),src=populate?remote:local,dst=populate?local:remote;await nativeFSAsync.reconcile(mount,src,dst),callback(null)}catch(e){callback(e)}},getLocalSet:mount=>{let entries=Object.create(null);function isRealDir(p){return"."!==p&&".."!==p}function toAbsolute(root){return p=>PATH.join2(root,p)}let check=FS.readdir(mount.mountpoint).filter(isRealDir).map(toAbsolute(mount.mountpoint));for(;check.length;){let path=check.pop(),stat=FS.stat(path);FS.isDir(stat.mode)&&check.push.apply(check,FS.readdir(path).filter(isRealDir).map(toAbsolute(path))),entries[path]={timestamp:stat.mtime,mode:stat.mode}}return{type:"local",entries:entries}},getRemoteSet:async mount=>{const entries=Object.create(null),handles=await getFsHandles(mount.opts.fileSystemHandle);for(const[path,handle]of handles)"."!==path&&(entries[PATH.join2(mount.mountpoint,path)]={timestamp:"file"===handle.kind?(await handle.getFile()).lastModifiedDate:new Date,mode:"file"===handle.kind?nativeFSAsync.FILE_MODE:nativeFSAsync.DIR_MODE});return{type:"remote",entries:entries,handles:handles}},loadLocalEntry:path=>{const node=FS.lookupPath(path).node,stat=FS.stat(path);if(FS.isDir(stat.mode))return{timestamp:stat.mtime,mode:stat.mode};if(FS.isFile(stat.mode))return node.contents=MEMFS.getFileDataAsTypedArray(node),{timestamp:stat.mtime,mode:stat.mode,contents:node.contents};throw new Error("node type not supported")},storeLocalEntry:(path,entry)=>{if(FS.isDir(entry.mode))FS.mkdirTree(path,entry.mode);else{if(!FS.isFile(entry.mode))throw new Error("node type not supported");FS.writeFile(path,entry.contents,{canOwn:!0})}FS.chmod(path,entry.mode),FS.utime(path,entry.timestamp,entry.timestamp)},removeLocalEntry:path=>{var stat=FS.stat(path);FS.isDir(stat.mode)?FS.rmdir(path):FS.isFile(stat.mode)&&FS.unlink(path)},loadRemoteEntry:async handle=>{if("file"===handle.kind){const file=await handle.getFile();return{contents:new Uint8Array(await file.arrayBuffer()),mode:nativeFSAsync.FILE_MODE,timestamp:file.lastModifiedDate}}if("directory"===handle.kind)return{mode:nativeFSAsync.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+handle.kind)},storeRemoteEntry:async(handles,path,entry)=>{const parentDirHandle=handles.get(PATH.dirname(path)),handle=FS.isFile(entry.mode)?await parentDirHandle.getFileHandle(PATH.basename(path),{create:!0}):await parentDirHandle.getDirectoryHandle(PATH.basename(path),{create:!0});if("file"===handle.kind){const writable=await handle.createWritable();await writable.write(entry.contents),await writable.close()}handles.set(path,handle)},removeRemoteEntry:async(handles,path)=>{const parentDirHandle=handles.get(PATH.dirname(path));await parentDirHandle.removeEntry(PATH.basename(path)),handles.delete(path)},reconcile:async(mount,src,dst)=>{let total=0;const create=[];Object.keys(src.entries).forEach((function(key){const e=src.entries[key],e2=dst.entries[key];(!e2||FS.isFile(e.mode)&&e.timestamp.getTime()>e2.timestamp.getTime())&&(create.push(key),total++)})),create.sort();const remove=[];if(Object.keys(dst.entries).forEach((function(key){src.entries[key]||(remove.push(key),total++)})),remove.sort().reverse(),!total)return;const handles="remote"===src.type?src.handles:dst.handles;for(const path of create){const relPath=PATH.normalize(path.replace(mount.mountpoint,"/")).substring(1);if("local"===dst.type){const handle=handles.get(relPath),entry=await nativeFSAsync.loadRemoteEntry(handle);nativeFSAsync.storeLocalEntry(path,entry)}else{const entry=nativeFSAsync.loadLocalEntry(path);await nativeFSAsync.storeRemoteEntry(handles,relPath,entry)}}for(const path of remove)if("local"===dst.type)nativeFSAsync.removeLocalEntry(path);else{const relPath=PATH.normalize(path.replace(mount.mountpoint,"/")).substring(1);await nativeFSAsync.removeRemoteEntry(handles,relPath)}}};module.FS.filesystems.NATIVEFS_ASYNC=nativeFSAsync}(Module)))}const version="0.23.4";function finalizeBootstrap(API,config){API.runPythonInternal_dict=API._pyodide._base.eval_code("{}"),API.importlib=API.runPythonInternal("import importlib; importlib");let import_module=API.importlib.import_module;API.sys=import_module("sys"),API.sys.path.insert(0,config.homedir),API.os=import_module("os");let globals=API.runPythonInternal("import __main__; __main__.__dict__"),builtins=API.runPythonInternal("import builtins; builtins.__dict__");var builtins_dict;API.globals=(builtins_dict=builtins,new Proxy(globals,{get:(target,symbol)=>"get"===symbol?key=>{let result=target.get(key);return void 0===result&&(result=builtins_dict.get(key)),result}:"has"===symbol?key=>target.has(key)||builtins_dict.has(key):Reflect.get(target,symbol)}));let importhook=API._pyodide._importhook;importhook.register_js_finder.callKwargs({hook:function(o){"__all__"in o||Object.defineProperty(o,"__all__",{get:()=>pyodide.toPy(Object.getOwnPropertyNames(o).filter((name=>"__all__"!==name))),enumerable:!1,configurable:!0})}}),importhook.register_js_module("js",config.jsglobals);let pyodide=API.makePublicAPI();return importhook.register_js_module("pyodide_js",pyodide),API.pyodide_py=import_module("pyodide"),API.pyodide_code=import_module("pyodide.code"),API.pyodide_ffi=import_module("pyodide.ffi"),API.package_loader=import_module("pyodide._package_loader"),API.sitepackages=API.package_loader.SITE_PACKAGES.__str__(),API.dsodir=API.package_loader.DSO_DIR.__str__(),API.defaultLdLibraryPath=[API.dsodir,API.sitepackages],API.os.environ.__setitem__("LD_LIBRARY_PATH",API.defaultLdLibraryPath.join(":")),pyodide.pyodide_py=API.pyodide_py,pyodide.globals=API.globals,pyodide}async function loadPyodide(options={}){await async function(){if(!IN_NODE)return;if(nodeUrlMod=(await import("url")).default,nodeFsPromisesMod=await import("fs/promises"),nodeFetch=globalThis.fetch?fetch:(await import("node-fetch")).default,nodeVmMod=(await import("vm")).default,nodePath=await import("path"),pathSep=nodePath.sep,"undefined"!=typeof require)return;const node_modules={fs:await import("fs"),crypto:await import("crypto"),ws:await import("ws"),child_process:await import("child_process")};globalThis.require=function(mod){return node_modules[mod]}}();let indexURL=options.indexURL||function(){if("string"==typeof __dirname)return __dirname;let err;try{throw new Error}catch(e){err=e}let fileName=ErrorStackParser.parse(err)[0].fileName;const indexOfLastSlash=fileName.lastIndexOf(pathSep);if(-1===indexOfLastSlash)throw new Error("Could not extract indexURL path from pyodide module location");return fileName.slice(0,indexOfLastSlash)}();indexURL=resolvePath(indexURL),indexURL.endsWith("/")||(indexURL+="/"),options.indexURL=indexURL;const default_config={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?globalThis.prompt:void 0,homedir:"/home/pyodide",lockFileURL:indexURL+"repodata.json",args:[],_node_mounts:[],packageCacheDir:indexURL},config=Object.assign(default_config,options),Module=function(){let Module={noImageDecoding:!0,noAudioDecoding:!0,noWasmDecoding:!1,preRun:[],quit:(status,toThrow)=>{throw Module.exited={status:status,toThrow:toThrow},toThrow}};return Module}();Module.print=config.stdout,Module.printErr=config.stderr,Module.arguments=config.args;const API={config:config};Module.API=API,initializeFileSystem(Module,config);const moduleLoaded=new Promise((r=>Module.postRun=r));if(Module.locateFile=path=>config.indexURL+path,"function"!=typeof _createPyodideModule){const scriptSrc=`${config.indexURL}pyodide.asm.js`;await loadScript(scriptSrc)}if(await _createPyodideModule(Module),await moduleLoaded,Module.exited)throw Module.exited.toThrow;if("0.23.4"!==API.version)throw new Error(`Pyodide version does not match: '0.23.4' <==> '${API.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);Module.locateFile=path=>{throw new Error("Didn't expect to load any more file_packager files!")};let[err,captured_stderr]=API.rawRun("import _pyodide_core");err&&Module.API.fatal_loading_error("Failed to import _pyodide_core\n",captured_stderr);const pyodide=finalizeBootstrap(API,config);if(pyodide.version.includes("dev")||API.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${pyodide.version}/full/`),await API.packageIndexReady,API._pyodide._importhook.register_module_not_found_hook(API._import_name_to_package_name,API.repodata_unvendored_stdlibs_and_test),"0.23.4"!==API.repodata_info.version)throw new Error("Lock file version doesn't match Pyodide version");return API.package_loader.init_loaded_packages(),config.fullStdLib&&await pyodide.loadPackage(API.repodata_unvendored_stdlibs),API.initializeStreams(config.stdin,config.stdout,config.stderr),pyodide}export{loadPyodide,version};
1
+ var Y=Object.create;var P=Object.defineProperty;var J=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var Z=Object.getPrototypeOf,ee=Object.prototype.hasOwnProperty;var f=(e,t)=>P(e,"name",{value:t,configurable:!0}),R=(e=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(e,{get:(t,o)=>(typeof require<"u"?require:t)[o]}):e)(function(e){if(typeof require<"u")return require.apply(this,arguments);throw new Error('Dynamic require of "'+e+'" is not supported')});var D=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var te=(e,t,o,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let a of Q(t))!ee.call(e,a)&&a!==o&&P(e,a,{get:()=>t[a],enumerable:!(s=J(t,a))||s.enumerable});return e};var re=(e,t,o)=>(o=e!=null?Y(Z(e)):{},te(t||!e||!e.__esModule?P(o,"default",{value:e,enumerable:!0}):o,e));var U=D((x,T)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define("stackframe",[],t):typeof x=="object"?T.exports=t():e.StackFrame=t()})(x,function(){"use strict";function e(c){return!isNaN(parseFloat(c))&&isFinite(c)}f(e,"_isNumber");function t(c){return c.charAt(0).toUpperCase()+c.substring(1)}f(t,"_capitalize");function o(c){return function(){return this[c]}}f(o,"_getter");var s=["isConstructor","isEval","isNative","isToplevel"],a=["columnNumber","lineNumber"],r=["fileName","functionName","source"],n=["args"],u=["evalOrigin"],i=s.concat(a,r,n,u);function l(c){if(c)for(var y=0;y<i.length;y++)c[i[y]]!==void 0&&this["set"+t(i[y])](c[i[y]])}f(l,"StackFrame"),l.prototype={getArgs:function(){return this.args},setArgs:function(c){if(Object.prototype.toString.call(c)!=="[object Array]")throw new TypeError("Args must be an Array");this.args=c},getEvalOrigin:function(){return this.evalOrigin},setEvalOrigin:function(c){if(c instanceof l)this.evalOrigin=c;else if(c instanceof Object)this.evalOrigin=new l(c);else throw new TypeError("Eval Origin must be an Object or StackFrame")},toString:function(){var c=this.getFileName()||"",y=this.getLineNumber()||"",g=this.getColumnNumber()||"",h=this.getFunctionName()||"";return this.getIsEval()?c?"[eval] ("+c+":"+y+":"+g+")":"[eval]:"+y+":"+g:h?h+" ("+c+":"+y+":"+g+")":c+":"+y+":"+g}},l.fromString=f(function(y){var g=y.indexOf("("),h=y.lastIndexOf(")"),G=y.substring(0,g),V=y.substring(g+1,h).split(","),L=y.substring(h+1);if(L.indexOf("@")===0)var k=/@(.+?)(?::(\d+))?(?::(\d+))?$/.exec(L,""),q=k[1],K=k[2],X=k[3];return new l({functionName:G,args:V||void 0,fileName:q,lineNumber:K||void 0,columnNumber:X||void 0})},"StackFrame$$fromString");for(var d=0;d<s.length;d++)l.prototype["get"+t(s[d])]=o(s[d]),l.prototype["set"+t(s[d])]=function(c){return function(y){this[c]=!!y}}(s[d]);for(var p=0;p<a.length;p++)l.prototype["get"+t(a[p])]=o(a[p]),l.prototype["set"+t(a[p])]=function(c){return function(y){if(!e(y))throw new TypeError(c+" must be a Number");this[c]=Number(y)}}(a[p]);for(var m=0;m<r.length;m++)l.prototype["get"+t(r[m])]=o(r[m]),l.prototype["set"+t(r[m])]=function(c){return function(y){this[c]=String(y)}}(r[m]);return l})});var j=D((O,$)=>{(function(e,t){"use strict";typeof define=="function"&&define.amd?define("error-stack-parser",["stackframe"],t):typeof O=="object"?$.exports=t(U()):e.ErrorStackParser=t(e.StackFrame)})(O,f(function(t){"use strict";var o=/(^|@)\S+:\d+/,s=/^\s*at .*(\S+:\d+|\(native\))/m,a=/^(eval@)?(\[native code])?$/;return{parse:f(function(n){if(typeof n.stacktrace<"u"||typeof n["opera#sourceloc"]<"u")return this.parseOpera(n);if(n.stack&&n.stack.match(s))return this.parseV8OrIE(n);if(n.stack)return this.parseFFOrSafari(n);throw new Error("Cannot parse given Error object")},"ErrorStackParser$$parse"),extractLocation:f(function(n){if(n.indexOf(":")===-1)return[n];var u=/(.+?)(?::(\d+))?(?::(\d+))?$/,i=u.exec(n.replace(/[()]/g,""));return[i[1],i[2]||void 0,i[3]||void 0]},"ErrorStackParser$$extractLocation"),parseV8OrIE:f(function(n){var u=n.stack.split(`
2
+ `).filter(function(i){return!!i.match(s)},this);return u.map(function(i){i.indexOf("(eval ")>-1&&(i=i.replace(/eval code/g,"eval").replace(/(\(eval at [^()]*)|(,.*$)/g,""));var l=i.replace(/^\s+/,"").replace(/\(eval code/g,"(").replace(/^.*?\s+/,""),d=l.match(/ (\(.+\)$)/);l=d?l.replace(d[0],""):l;var p=this.extractLocation(d?d[1]:l),m=d&&l||void 0,c=["eval","<anonymous>"].indexOf(p[0])>-1?void 0:p[0];return new t({functionName:m,fileName:c,lineNumber:p[1],columnNumber:p[2],source:i})},this)},"ErrorStackParser$$parseV8OrIE"),parseFFOrSafari:f(function(n){var u=n.stack.split(`
3
+ `).filter(function(i){return!i.match(a)},this);return u.map(function(i){if(i.indexOf(" > eval")>-1&&(i=i.replace(/ line (\d+)(?: > eval line \d+)* > eval:\d+:\d+/g,":$1")),i.indexOf("@")===-1&&i.indexOf(":")===-1)return new t({functionName:i});var l=/((.*".+"[^@]*)?[^@]*)(?:@)/,d=i.match(l),p=d&&d[1]?d[1]:void 0,m=this.extractLocation(i.replace(l,""));return new t({functionName:p,fileName:m[0],lineNumber:m[1],columnNumber:m[2],source:i})},this)},"ErrorStackParser$$parseFFOrSafari"),parseOpera:f(function(n){return!n.stacktrace||n.message.indexOf(`
4
+ `)>-1&&n.message.split(`
5
+ `).length>n.stacktrace.split(`
6
+ `).length?this.parseOpera9(n):n.stack?this.parseOpera11(n):this.parseOpera10(n)},"ErrorStackParser$$parseOpera"),parseOpera9:f(function(n){for(var u=/Line (\d+).*script (?:in )?(\S+)/i,i=n.message.split(`
7
+ `),l=[],d=2,p=i.length;d<p;d+=2){var m=u.exec(i[d]);m&&l.push(new t({fileName:m[2],lineNumber:m[1],source:i[d]}))}return l},"ErrorStackParser$$parseOpera9"),parseOpera10:f(function(n){for(var u=/Line (\d+).*script (?:in )?(\S+)(?:: In function (\S+))?$/i,i=n.stacktrace.split(`
8
+ `),l=[],d=0,p=i.length;d<p;d+=2){var m=u.exec(i[d]);m&&l.push(new t({functionName:m[3]||void 0,fileName:m[2],lineNumber:m[1],source:i[d]}))}return l},"ErrorStackParser$$parseOpera10"),parseOpera11:f(function(n){var u=n.stack.split(`
9
+ `).filter(function(i){return!!i.match(o)&&!i.match(/^Error created at/)},this);return u.map(function(i){var l=i.split("@"),d=this.extractLocation(l.pop()),p=l.shift()||"",m=p.replace(/<anonymous function(: (\w+))?>/,"$2").replace(/\([^)]*\)/g,"")||void 0,c;p.match(/\(([^)]*)\)/)&&(c=p.replace(/^[^(]+\(([^)]*)\)$/,"$1"));var y=c===void 0||c==="[arguments not available]"?void 0:c.split(",");return new t({functionName:m,args:y,fileName:d[0],lineNumber:d[1],columnNumber:d[2],source:i})},this)},"ErrorStackParser$$parseOpera11")}},"ErrorStackParser"))});var W=re(j());var b=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string"&&typeof process.browser=="undefined",C,_,N,M,H;async function A(){if(!b||(C=(await import("url")).default,H=await import("fs/promises"),globalThis.fetch?_=fetch:_=(await import("node-fetch")).default,M=(await import("vm")).default,N=await import("path"),E=N.sep,typeof R!="undefined"))return;let e=await import("fs"),t=await import("crypto"),o=await import("ws"),s=await import("child_process"),a={fs:e,crypto:t,ws:o,child_process:s};globalThis.require=function(r){return a[r]}}f(A,"initNodeModules");function ne(e,t){return N.resolve(t||".",e)}f(ne,"node_resolvePath");function ie(e,t){return t===void 0&&(t=location),new URL(e,t).toString()}f(ie,"browser_resolvePath");var w;b?w=ne:w=ie;var E;b||(E="/");async function oe(e,t){if(e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")){let o=await _(e);if(!o.ok)throw new Error(`Failed to load '${e}': request failed.`);return new Uint8Array(await o.arrayBuffer())}else{let o=await H.readFile(e);return new Uint8Array(o.buffer,o.byteOffset,o.byteLength)}}f(oe,"node_loadBinaryFile");async function ae(e,t){let o=new URL(e,location),a=await fetch(o,t?{integrity:t}:{});if(!a.ok)throw new Error(`Failed to load '${o}': request failed.`);return new Uint8Array(await a.arrayBuffer())}f(ae,"browser_loadBinaryFile");var S;b?S=oe:S=ae;var v;if(globalThis.document)v=f(async e=>await import(e),"loadScript");else if(globalThis.importScripts)v=f(async e=>{try{globalThis.importScripts(e)}catch(t){if(t instanceof TypeError)await import(e);else throw t}},"loadScript");else if(b)v=se;else throw new Error("Cannot determine runtime environment");async function se(e){e.startsWith("file://")&&(e=e.slice(7)),e.includes("://")?M.runInThisContext(await(await _(e)).text()):await import(C.pathToFileURL(e).href)}f(se,"nodeLoadScript");function I(e){let t=e.FS,o=e.FS.filesystems.MEMFS,s=e.PATH,a={DIR_MODE:16895,FILE_MODE:33279,mount:function(r){if(!r.opts.fileSystemHandle)throw new Error("opts.fileSystemHandle is required");return o.mount.apply(null,arguments)},syncfs:async(r,n,u)=>{try{let i=a.getLocalSet(r),l=await a.getRemoteSet(r),d=n?l:i,p=n?i:l;await a.reconcile(r,d,p),u(null)}catch(i){u(i)}},getLocalSet:r=>{let n=Object.create(null);function u(d){return d!=="."&&d!==".."}f(u,"isRealDir");function i(d){return p=>s.join2(d,p)}f(i,"toAbsolute");let l=t.readdir(r.mountpoint).filter(u).map(i(r.mountpoint));for(;l.length;){let d=l.pop(),p=t.stat(d);t.isDir(p.mode)&&l.push.apply(l,t.readdir(d).filter(u).map(i(d))),n[d]={timestamp:p.mtime,mode:p.mode}}return{type:"local",entries:n}},getRemoteSet:async r=>{let n=Object.create(null),u=await le(r.opts.fileSystemHandle);for(let[i,l]of u)i!=="."&&(n[s.join2(r.mountpoint,i)]={timestamp:l.kind==="file"?(await l.getFile()).lastModifiedDate:new Date,mode:l.kind==="file"?a.FILE_MODE:a.DIR_MODE});return{type:"remote",entries:n,handles:u}},loadLocalEntry:r=>{let u=t.lookupPath(r).node,i=t.stat(r);if(t.isDir(i.mode))return{timestamp:i.mtime,mode:i.mode};if(t.isFile(i.mode))return u.contents=o.getFileDataAsTypedArray(u),{timestamp:i.mtime,mode:i.mode,contents:u.contents};throw new Error("node type not supported")},storeLocalEntry:(r,n)=>{if(t.isDir(n.mode))t.mkdirTree(r,n.mode);else if(t.isFile(n.mode))t.writeFile(r,n.contents,{canOwn:!0});else throw new Error("node type not supported");t.chmod(r,n.mode),t.utime(r,n.timestamp,n.timestamp)},removeLocalEntry:r=>{var n=t.stat(r);t.isDir(n.mode)?t.rmdir(r):t.isFile(n.mode)&&t.unlink(r)},loadRemoteEntry:async r=>{if(r.kind==="file"){let n=await r.getFile();return{contents:new Uint8Array(await n.arrayBuffer()),mode:a.FILE_MODE,timestamp:n.lastModifiedDate}}else{if(r.kind==="directory")return{mode:a.DIR_MODE,timestamp:new Date};throw new Error("unknown kind: "+r.kind)}},storeRemoteEntry:async(r,n,u)=>{let i=r.get(s.dirname(n)),l=t.isFile(u.mode)?await i.getFileHandle(s.basename(n),{create:!0}):await i.getDirectoryHandle(s.basename(n),{create:!0});if(l.kind==="file"){let d=await l.createWritable();await d.write(u.contents),await d.close()}r.set(n,l)},removeRemoteEntry:async(r,n)=>{await r.get(s.dirname(n)).removeEntry(s.basename(n)),r.delete(n)},reconcile:async(r,n,u)=>{let i=0,l=[];Object.keys(n.entries).forEach(function(m){let c=n.entries[m],y=u.entries[m];(!y||t.isFile(c.mode)&&c.timestamp.getTime()>y.timestamp.getTime())&&(l.push(m),i++)}),l.sort();let d=[];if(Object.keys(u.entries).forEach(function(m){n.entries[m]||(d.push(m),i++)}),d.sort().reverse(),!i)return;let p=n.type==="remote"?n.handles:u.handles;for(let m of l){let c=s.normalize(m.replace(r.mountpoint,"/")).substring(1);if(u.type==="local"){let y=p.get(c),g=await a.loadRemoteEntry(y);a.storeLocalEntry(m,g)}else{let y=a.loadLocalEntry(m);await a.storeRemoteEntry(p,c,y)}}for(let m of d)if(u.type==="local")a.removeLocalEntry(m);else{let c=s.normalize(m.replace(r.mountpoint,"/")).substring(1);await a.removeRemoteEntry(p,c)}}};e.FS.filesystems.NATIVEFS_ASYNC=a}f(I,"initializeNativeFS");var le=f(async e=>{let t=[];async function o(a){for await(let r of a.values())t.push(r),r.kind==="directory"&&await o(r)}f(o,"collect"),await o(e);let s=new Map;s.set(".",e);for(let a of t){let r=(await e.resolve(a)).join("/");s.set(r,a)}return s},"getFsHandles");function B(){let e={};return e.noImageDecoding=!0,e.noAudioDecoding=!0,e.noWasmDecoding=!1,e.preRun=[],e.quit=(t,o)=>{throw e.exited={status:t,toThrow:o},o},e}f(B,"createModule");function de(e,t){e.preRun.push(function(){let o="/";try{e.FS.mkdirTree(t)}catch(s){console.error(`Error occurred while making a home directory '${t}':`),console.error(s),console.error(`Using '${o}' for a home directory instead`),t=o}e.FS.chdir(t)})}f(de,"createHomeDirectory");function ce(e,t){e.preRun.push(function(){Object.assign(e.ENV,t)})}f(ce,"setEnvironment");function ue(e,t){e.preRun.push(()=>{for(let o of t)e.FS.mkdirTree(o),e.FS.mount(e.FS.filesystems.NODEFS,{root:o},o)})}f(ue,"mountLocalDirectories");function fe(e,t){let o=S(t);e.preRun.push(()=>{let s=e._py_version_major(),a=e._py_version_minor();e.FS.mkdirTree("/lib"),e.FS.mkdirTree(`/lib/python${s}.${a}/site-packages`),e.addRunDependency("install-stdlib"),o.then(r=>{e.FS.writeFile(`/lib/python${s}${a}.zip`,r)}).catch(r=>{console.error("Error occurred while installing the standard library:"),console.error(r)}).finally(()=>{e.removeRunDependency("install-stdlib")})})}f(fe,"installStdlib");function z(e,t){let o;t.stdLibURL!=null?o=t.stdLibURL:o=t.indexURL+"python_stdlib.zip",fe(e,o),de(e,t.env.HOME),ce(e,t.env),ue(e,t._node_mounts),e.preRun.push(()=>I(e))}f(z,"initializeFileSystem");var F="0.24.0a1";function pe(e,t){return new Proxy(e,{get(o,s){return s==="get"?a=>{let r=o.get(a);return r===void 0&&(r=t.get(a)),r}:s==="has"?a=>o.has(a)||t.has(a):Reflect.get(o,s)}})}f(pe,"wrapPythonGlobals");function me(e,t){e.runPythonInternal_dict=e._pyodide._base.eval_code("{}"),e.importlib=e.runPythonInternal("import importlib; importlib");let o=e.importlib.import_module;e.sys=o("sys"),e.sys.path.insert(0,t.env.HOME),e.os=o("os");let s=e.runPythonInternal("import __main__; __main__.__dict__"),a=e.runPythonInternal("import builtins; builtins.__dict__");e.globals=pe(s,a);let r=e._pyodide._importhook;function n(i){"__all__"in i||Object.defineProperty(i,"__all__",{get:()=>u.toPy(Object.getOwnPropertyNames(i).filter(l=>l!=="__all__")),enumerable:!1,configurable:!0})}f(n,"jsFinderHook"),r.register_js_finder.callKwargs({hook:n}),r.register_js_module("js",t.jsglobals);let u=e.makePublicAPI();return r.register_js_module("pyodide_js",u),e.pyodide_py=o("pyodide"),e.pyodide_code=o("pyodide.code"),e.pyodide_ffi=o("pyodide.ffi"),e.package_loader=o("pyodide._package_loader"),e.sitepackages=e.package_loader.SITE_PACKAGES.__str__(),e.dsodir=e.package_loader.DSO_DIR.__str__(),e.defaultLdLibraryPath=[e.dsodir,e.sitepackages],e.os.environ.__setitem__("LD_LIBRARY_PATH",e.defaultLdLibraryPath.join(":")),u.pyodide_py=e.pyodide_py,u.globals=e.globals,u}f(me,"finalizeBootstrap");function ye(){if(typeof __dirname=="string")return __dirname;let e;try{throw new Error}catch(s){e=s}let t=W.default.parse(e)[0].fileName,o=t.lastIndexOf(E);if(o===-1)throw new Error("Could not extract indexURL path from pyodide module location");return t.slice(0,o)}f(ye,"calculateIndexURL");async function Re(e={}){await A();let t=e.indexURL||ye();t=w(t),t.endsWith("/")||(t+="/"),e.indexURL=t;let o={fullStdLib:!1,jsglobals:globalThis,stdin:globalThis.prompt?globalThis.prompt:void 0,lockFileURL:t+"pyodide-lock.json",args:[],_node_mounts:[],env:{},packageCacheDir:t},s=Object.assign(o,e);if(e.homedir){if(console.warn("The homedir argument to loadPyodide is deprecated. Use 'env: { HOME: value }' instead of 'homedir: value'."),e.env&&e.env.HOME)throw new Error("Set both env.HOME and homedir arguments");s.env.HOME=s.homedir}s.env.HOME||(s.env.HOME="/home/pyodide");let a=B();a.print=s.stdout,a.printErr=s.stderr,a.arguments=s.args;let r={config:s};a.API=r,z(a,s);let n=new Promise(p=>a.postRun=p);if(a.locateFile=p=>s.indexURL+p,typeof _createPyodideModule!="function"){let p=`${s.indexURL}pyodide.asm.js`;await v(p)}if(await _createPyodideModule(a),await n,a.exited)throw a.exited.toThrow;if(r.version!==F)throw new Error(`Pyodide version does not match: '${F}' <==> '${r.version}'. If you updated the Pyodide version, make sure you also updated the 'indexURL' parameter passed to loadPyodide.`);a.locateFile=p=>{throw new Error("Didn't expect to load any more file_packager files!")};let[u,i]=r.rawRun("import _pyodide_core");u&&a.API.fatal_loading_error(`Failed to import _pyodide_core
10
+ `,i);let l=me(r,s);if(l.version.includes("dev")||r.setCdnUrl(`https://cdn.jsdelivr.net/pyodide/v${l.version}/full/`),await r.packageIndexReady,r._pyodide._importhook.register_module_not_found_hook(r._import_name_to_package_name,r.lockfile_unvendored_stdlibs_and_test),r.lockfile_info.version!==F)throw new Error("Lock file version doesn't match Pyodide version");return r.package_loader.init_loaded_packages(),s.fullStdLib&&await l.loadPackage(r.lockfile_unvendored_stdlibs),r.initializeStreams(s.stdin,s.stdout,s.stderr),l}f(Re,"loadPyodide");export{Re as loadPyodide,F as version};
2
11
  //# sourceMappingURL=pyodide.mjs.map