25 lines
867 B
JavaScript
25 lines
867 B
JavaScript
self.languagePluginUrl = 'https://cdn.jsdelivr.net/pyodide/v0.15.0/full/'
|
|
importScripts('./pyodide.js')
|
|
|
|
var onmessage = function(e) { // eslint-disable-line no-unused-vars
|
|
languagePluginLoader.then(() => {
|
|
const data = e.data;
|
|
const keys = Object.keys(data);
|
|
for (let key of keys) {
|
|
if (key !== 'python') {
|
|
// Keys other than python must be arguments for the python script.
|
|
// Set them on self, so that `from js import key` works.
|
|
self[key] = data[key];
|
|
}
|
|
}
|
|
|
|
self.pyodide.runPythonAsync(data.python, () => {})
|
|
.then((results) => { self.postMessage({results}); })
|
|
.catch((err) => {
|
|
// if you prefer messages with the error
|
|
self.postMessage({error : err.message});
|
|
// if you prefer onerror events
|
|
// setTimeout(() => { throw err; });
|
|
});
|
|
});
|
|
}
|