worker-client.cjs 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. "use strict";
  2. function _classPrivateFieldInitSpec(e, t, a) { _checkPrivateRedeclaration(e, t), t.set(e, a); }
  3. function _checkPrivateRedeclaration(e, t) { if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object"); }
  4. function _classPrivateFieldGet(s, a) { return s.get(_assertClassBrand(s, a)); }
  5. function _classPrivateFieldSet(s, a, r) { return s.set(_assertClassBrand(s, a), r), r; }
  6. function _assertClassBrand(e, t, n) { if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n; throw new TypeError("Private element is not present on this object"); }
  7. const path = require("path");
  8. const types = require("./types.cjs");
  9. var ACTIONS = types.ACTIONS;
  10. var _send = new WeakMap();
  11. var _eCache = new WeakMap();
  12. class Client {
  13. constructor(send) {
  14. _classPrivateFieldInitSpec(this, _send, void 0);
  15. _classPrivateFieldInitSpec(this, _eCache, void 0);
  16. _classPrivateFieldSet(_send, this, send);
  17. }
  18. getDefaultExtensions() {
  19. var _classPrivateFieldGet2;
  20. return (_classPrivateFieldGet2 = _classPrivateFieldGet(_eCache, this)) != null ? _classPrivateFieldGet2 : _classPrivateFieldSet(_eCache, this, _classPrivateFieldGet(_send, this).call(this, ACTIONS.GET_DEFAULT_EXTENSIONS, undefined));
  21. }
  22. setOptions(options) {
  23. return _classPrivateFieldGet(_send, this).call(this, ACTIONS.SET_OPTIONS, options);
  24. }
  25. transform(code, filename) {
  26. return _classPrivateFieldGet(_send, this).call(this, ACTIONS.TRANSFORM, {
  27. code,
  28. filename
  29. });
  30. }
  31. }
  32. var _worker = new WeakMap();
  33. var _signal = new WeakMap();
  34. class WorkerClient extends Client {
  35. constructor() {
  36. super((action, payload) => {
  37. _classPrivateFieldGet(_signal, this)[0] = 0;
  38. const subChannel = new (_get_worker_threads(WorkerClient).MessageChannel)();
  39. _classPrivateFieldGet(_worker, this).postMessage({
  40. signal: _classPrivateFieldGet(_signal, this),
  41. port: subChannel.port1,
  42. action,
  43. payload
  44. }, [subChannel.port1]);
  45. Atomics.wait(_classPrivateFieldGet(_signal, this), 0, 0);
  46. const {
  47. message
  48. } = _get_worker_threads(WorkerClient).receiveMessageOnPort(subChannel.port2);
  49. if (message.error) throw Object.assign(message.error, message.errorData);else return message.result;
  50. });
  51. _classPrivateFieldInitSpec(this, _worker, new (_get_worker_threads(WorkerClient).Worker)(path.resolve(__dirname, "./worker/index.cjs"), {
  52. env: _get_markInRegisterWorker(WorkerClient).call(WorkerClient, process.env)
  53. }));
  54. _classPrivateFieldInitSpec(this, _signal, new Int32Array(new SharedArrayBuffer(4)));
  55. _classPrivateFieldGet(_worker, this).unref();
  56. }
  57. }
  58. function _get_worker_threads(_this) {
  59. return require("worker_threads");
  60. }
  61. function _get_markInRegisterWorker(_this2) {
  62. return require("./is-in-register-worker.cjs").markInRegisterWorker;
  63. }
  64. module.exports = {
  65. WorkerClient
  66. };
  67. {
  68. var _LocalClient, _handleMessage;
  69. module.exports.LocalClient = (_LocalClient = class LocalClient extends Client {
  70. constructor() {
  71. var _assertClassBrand$_;
  72. (_assertClassBrand$_ = _assertClassBrand(_LocalClient, LocalClient, _handleMessage)._) != null ? _assertClassBrand$_ : _handleMessage._ = _assertClassBrand(_LocalClient, LocalClient, require("./worker/handle-message.cjs"));
  73. super((action, payload) => {
  74. return _assertClassBrand(_LocalClient, LocalClient, _handleMessage)._.call(LocalClient, action === ACTIONS.TRANSFORM ? ACTIONS.TRANSFORM_SYNC : action, payload);
  75. });
  76. this.isLocalClient = true;
  77. }
  78. }, _handleMessage = {
  79. _: void 0
  80. }, _LocalClient);
  81. }
  82. //# sourceMappingURL=worker-client.cjs.map