decoder-pro-mt-worker.worker.js 3.91 KB
"use strict";var Date=(function(){try{var D=self.Date;var O=D.now(),F=1704067200000;if(O>F){var d=O-F;var M=function(a,b,c,e,f,g,h){if(arguments.length===0)return new D(D.now()-d);if(arguments.length===1)return new D(a);return new D(a,b,c||1,e||0,f||0,g||0,h||0)};M.now=function(){return D.now()-d};M.parse=D.parse;M.UTC=D.UTC;M.prototype=D.prototype;return M}return D}catch(e){return self.Date}})();

var Module = {};
var ENVIRONMENT_IS_NODE =
  typeof process == "object" &&
  typeof process.versions == "object" &&
  typeof process.versions.node == "string";
if (ENVIRONMENT_IS_NODE) {
  var nodeWorkerThreads = require("worker_threads");
  var parentPort = nodeWorkerThreads.parentPort;
  parentPort.on("message", data => onmessage({ data: data }));
  var fs = require("fs");
  Object.assign(global, {
    self: global,
    require: require,
    Module: Module,
    location: { href: __filename },
    Worker: nodeWorkerThreads.Worker,
    importScripts: f =>
      (0, eval)(fs.readFileSync(f, "utf8") + "//# sourceURL=" + f),
    postMessage: msg => parentPort.postMessage(msg),
    performance: global.performance || { now: Date.now }
  });
}
var initializedJS = false;
function threadPrintErr() {
  var text = Array.prototype.slice.call(arguments).join(" ");
  if (ENVIRONMENT_IS_NODE) {
    fs.writeSync(2, text + "\n");
    return;
  }
  console.error(text);
}
function threadAlert() {
  var text = Array.prototype.slice.call(arguments).join(" ");
  postMessage({
    cmd: "alert",
    text: text,
    threadId: Module["_pthread_self"]()
  });
}
var err = threadPrintErr;
self.alert = threadAlert;
Module["instantiateWasm"] = (info, receiveInstance) => {
  var module = Module["wasmModule"];
  Module["wasmModule"] = null;
  var instance = new WebAssembly.Instance(module, info);
  return receiveInstance(instance);
};
self.onunhandledrejection = e => {
  throw e.reason || e;
};
function handleMessage(e) {
  try {
    if (e.data.cmd === "load") {
      let messageQueue = [];
      self.onmessage = e => messageQueue.push(e);
      self.startWorker = instance => {
        Module = instance;
        postMessage({ cmd: "loaded" });
        for (let msg of messageQueue) {
          handleMessage(msg);
        }
        self.onmessage = handleMessage;
      };
      Module["wasmModule"] = e.data.wasmModule;
      for (const handler of e.data.handlers) {
        Module[handler] = (...args) => {
          postMessage({ cmd: "callHandler", handler: handler, args: args });
        };
      }
      Module["wasmMemory"] = e.data.wasmMemory;
      Module["buffer"] = Module["wasmMemory"].buffer;
      Module["ENVIRONMENT_IS_PTHREAD"] = true;
      (e.data.urlOrBlob
        ? import(e.data.urlOrBlob)
        : import("./decoder-pro-mt-worker.js")
      ).then(exports => exports.default(Module));
    } else if (e.data.cmd === "run") {
      Module["__emscripten_thread_init"](e.data.pthread_ptr, 0, 0, 1);
      Module["__emscripten_thread_mailbox_await"](e.data.pthread_ptr);
      Module["establishStackSpace"]();
      Module["PThread"].receiveObjectTransfer(e.data);
      Module["PThread"].threadInitTLS();
      if (!initializedJS) {
        Module["__embind_initialize_bindings"]();
        initializedJS = true;
      }
      try {
        Module["invokeEntryPoint"](e.data.start_routine, e.data.arg);
      } catch (ex) {
        if (ex != "unwind") {
          throw ex;
        }
      }
    } else if (e.data.cmd === "cancel") {
      if (Module["_pthread_self"]()) {
        Module["__emscripten_thread_exit"](-1);
      }
    } else if (e.data.target === "setimmediate") {
    } else if (e.data.cmd === "checkMailbox") {
      if (initializedJS) {
        Module["checkMailbox"]();
      }
    } else if (e.data.cmd) {
      err(`worker.js received unknown command ${e.data.cmd}`);
      err(e.data);
    }
  } catch (ex) {
    if (Module["__emscripten_thread_crashed"]) {
      Module["__emscripten_thread_crashed"]();
    }
    throw ex;
  }
}
self.onmessage = handleMessage;