PageSourceSearch

https://robotframework.org/pyworker/py_worker.js

js robotframework.org collected 2026-09-24 09:33:14 UTC 1,563 bytes, 49 lines download raw bytes

1/* eslint-disable */
2// webworker.js
3
4// Setup your project to serve `py-worker.js`. You should also serve
5// `pyodide.js`, and all its associated `.asm.js`, `.data`, `.json`,
6// and `.wasm` files as well:
7importScripts('https://cdn.jsdelivr.net/pyodide/v0.22.1/full/pyodide.js')
8
9async function loadPyodideAndPackages() {
10  console.log('LOAD Pyodide')
11  const start = Date.now()
12  if (!self.pyodide) {
13    self.pyodide = await loadPyodide({
14      indexURL: 'https://cdn.jsdelivr.net/pyodide/v0.22.1/full/'
15    })
16  }
17  console.log(`LOAD Mircopip after ${Date.now() - start}ms`)
18  const UNVENDORED_STDLIBS = [
19    "ssl",
20    "lzma",
21    "hashlib"
22  ]
23  await self.pyodide.loadPackage('micropip')
24  await self.pyodide.loadPackage(UNVENDORED_STDLIBS)
25  console.log(`DONE after ${Date.now() - start}ms`)
26  self.pyodide.globals.set('init_globals', Array.from(self.pyodide.globals.toJs().keys()))
27}
28const pyodideReadyPromise = loadPyodideAndPackages()
29
30self.onmessage = async (event) => {
31  await pyodideReadyPromise
32  self.pyodide.runPython(`
33import js
34for key in list(globals().keys()):
35    if key not in init_globals and key not in ['init_globals', 'js', 'sys']:
36        del globals()[key]
37`)
38  const { python, ...context } = event.data
39  for (const key of Object.keys(context)) {
40    self.pyodide.globals.set(key, context[key])
41  }
42  try {
43    await self.pyodide.loadPackagesFromImports(python)
44    const results = await self.pyodide.runPythonAsync(python)
45    self.postMessage({ results })
46  } catch (error) {
47    self.postMessage({ error: error.message })
48  }
49}

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.