{"_id":"@apacheli/web-workers","_rev":"4-997c9d66ae244b2f8db28cc59ee728e8","name":"@apacheli/web-workers","dist-tags":{"latest":"2.0.1"},"versions":{"1.0.0":{"name":"@apacheli/web-workers","version":"1.0.0","_id":"@apacheli/web-workers@1.0.0","maintainers":[{"name":"apacheli","email":"Idevtanm@gmail.com"}],"dist":{"shasum":"85b61cfd07948fca00300e02d3a2cb22f7c0c48b","tarball":"https://registry.npmjs.org/@apacheli/web-workers/-/web-workers-1.0.0.tgz","fileCount":5,"integrity":"sha512-UNAoNSskI1A9BlGGEtsjDCdtdvoathOzvcL5/zEQVjMTXBbKllPBmNkdPPSZ05JjilD1Hm9vd6hJ3/ud2FbCvQ==","signatures":[{"sig":"MEUCIGVR/YL0wqQnTdaTnt2P89PwYifz8QzvyDL1WBfdkCMDAiEAiJwBoeAU2BPqUuVt0J0PX7XybLrjqDz8BJPiNFXyd2c=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14502,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUbbOACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq77Q/9GXH9BlnZr2OWYZrvIi9RgOFh3XBdk7+G+Aq0NeRQ7/WIiGPN\r\nP/SUNsWHchVy5Dx5LtFEngdSNjXPdjxGmuPsRU1FAYvR1V8+QLzIC0B4Q48p\r\nr8J7jEW8dT09ldklXiuVlL1lPTX6FC77NnRRucwqiG4fJbpX3rn96QEjYwqU\r\ndk4X9P6u9rd8nGtWgzvCoUJKdQfoYGn4SdNT0OXURI4T28JlATIFqjpiBNNS\r\n84vSxQZ6zaMnoObQ/E73t7lshNAQzQxDA8cHJRK8tX/8UMD4BgxMcfkRMoJW\r\n+ifVPGHqJ4j5tQH8ueSWT2oPhHC4gaDBFwKzTJLKrefh5zuaSkHsE6VLZPpy\r\nFk9O5Yv4vIwVOdxFgDpTIY3SReHU5XwtVgTU/yQs64lxl71/gkEIjSt0kMU8\r\niIID+2eoJAjCh2USiP+HrbYzFANYbXOFplb8NwY4sctTEtAgYn6bi/EfSy04\r\nirhvDId4xVJvenTZAkirftIggYhJ+aOab4Sin8qtsgaR/pqYT3kZlrMiysvZ\r\nhP8hhNgTB7Yf3J5R8bn6bSm/i1aUPs4GOrRe/Vf++thvEi4/2mYW4/SMyDLB\r\nU9KDLFQU/GGwuaYXxdP7Bkdy0tYZwXA20fxbmU9wPt3Tg7ZuP3pfCrurPmav\r\nOqActkflgLyA0Q+qfnNQYvUdXNjn3KnJrd4=\r\n=9I3e\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./worker.js","gitHead":"17a30c953c8991bfd959806e2c979930cf6659ae","_npmUser":{"name":"apacheli","email":"Idevtanm@gmail.com"},"_npmVersion":"8.15.0","description":"Web Workers polyfill for Node.js.","directories":{},"_nodeVersion":"18.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/web-workers_1.0.0_1666299598408_0.26577750015485635","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@apacheli/web-workers","version":"1.0.1","keywords":["worker","workers","web-workers"],"_id":"@apacheli/web-workers@1.0.1","maintainers":[{"name":"apacheli","email":"Idevtanm@gmail.com"}],"homepage":"https://github.com/apacheli/web-workers-polyfill#readme","bugs":{"url":"https://github.com/apacheli/web-workers-polyfill/issues"},"dist":{"shasum":"831710fe5f306a697c1557527e157923bc32e7e5","tarball":"https://registry.npmjs.org/@apacheli/web-workers/-/web-workers-1.0.1.tgz","fileCount":5,"integrity":"sha512-Yv3kOewH/45LOWVGoTmcryUrSYxH6nUku3IsfJQg7iJJPGvTJrBOg1LxPfjXtmY+adK6GAfje0dB6LEJ4FYIeA==","signatures":[{"sig":"MEYCIQCbd3v2bA3hv9b3rlMg4kLcENmXDSvcne0S1LLMDUs/EwIhAI4TxeKf8tOY/FFPzhLRGvnjxz/ocXTYMeVVPVAMEtbZ","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":14754,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJjUblFACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrJOw//Q2tUHJ+WaQM2E0Wk0rxIEHqhrzjGlcl12ughS8awyvZppsi6\r\nk+tR/7QXWlBl84Pco/XQOTFxVsJ7a6QgYb9a+QDCnWOIMG4/+Hc3fF1aLO9o\r\nXm6YPoicgJK6FkuwRyST2Wlo/D7zy4binuIHxOQYiJbIpA1xvCmhyuy8w24q\r\nIUXq70FcxvzVLXPhNKQU6yaM1WIQMSLErioTPrTm5AKdp5pmF6ecw3UUI4FQ\r\nbGUYLawWqm+9oyAF8MMzRSN4xu5msaE9M+741mztHfFqutgLduRnMrNAoFyc\r\ndPC5hTaxmYFhQRFCwZFR31Z/Bp3Mjc2MDvHkdE+1uxa4cZnWG3OCMPRZWwHF\r\ne60UXYW8Zz7HPY4GrhVWesCM06cPk6ANmtD57eyISh/1V2KmfL2lvXHB17ZK\r\nAlMRuesUiaGARmeTtzJp5M3yw2d2ZGRhOiDcYT7cPobRDa3VxCKdXIZ4uf0J\r\npXTTy1Xp5sO6HWx9igzFgbFOqWsVmh9qzWg5mW46qlzJh5gtQRsfbGaU4kAk\r\nY63VX37jn4d0bGjNiOxAAW4rJNzMcLFRt2cCYNlxGB0BStwfMj8nl1TEVd63\r\n9jKoKkkFym3uqmrm+oOrXGW35gX6meWteo703bTos81BqIAIZbVTAUpoygTq\r\nykCr6wZUaXFAmAm3NkpQazCjHWL1DJbW9CI=\r\n=OM+h\r\n-----END PGP SIGNATURE-----\r\n"},"main":"./worker.js","gitHead":"60d059ef285a68545bfa082bf0674a143429b409","_npmUser":{"name":"apacheli","email":"Idevtanm@gmail.com"},"repository":{"url":"git+https://github.com/apacheli/web-workers-polyfill.git","type":"git"},"_npmVersion":"8.15.0","description":"Web Workers polyfill for Node.js.","directories":{},"_nodeVersion":"18.7.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/web-workers_1.0.1_1666300229354_0.788839652182799","host":"s3://npm-registry-packages"}},"2.0.0":{"name":"@apacheli/web-workers","version":"2.0.0","keywords":["node","npm","polyfill","web","web-workers","worker","workers"],"license":"MIT","_id":"@apacheli/web-workers@2.0.0","maintainers":[{"name":"apacheli","email":"Idevtanm@gmail.com"}],"homepage":"https://github.com/apacheli/web-workers-polyfill#readme","bugs":{"url":"https://github.com/apacheli/web-workers-polyfill/issues"},"dist":{"shasum":"b9223a32f376258f3cc07d5cdde700b068f71a5d","tarball":"https://registry.npmjs.org/@apacheli/web-workers/-/web-workers-2.0.0.tgz","fileCount":10,"integrity":"sha512-we156R+GAZodBz4By9jcRmhJdg+fkr9tZ58ptP0m98yhi64p6lqtM5Nc1P81A/cblWaD52mWJOSI8XKZF4Q6yQ==","signatures":[{"sig":"MEQCIE6Iw89Js55r5mI6dBGI4/pUWaCYOPb0Ma3so1KmKhcGAiAzK5EfL07X3HcDNie0ZdMiRpr/ZeSnCBEtpPvPgDm0EA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":8355},"types":"./index.d.ts","gitHead":"d0c701a5f53d371091e2e8f871520f5e1a35cb38","_npmUser":{"name":"apacheli","email":"Idevtanm@gmail.com"},"repository":{"url":"git+https://github.com/apacheli/web-workers-polyfill.git","type":"git"},"_npmVersion":"10.8.1","description":"Web Workers polyfill for Node.js.","directories":{},"_nodeVersion":"22.4.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/web-workers_2.0.0_1720217543744_0.1122964979469403","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@apacheli/web-workers","version":"2.0.1","description":"Web Workers polyfill for Node.js.","repository":{"type":"git","url":"git+https://github.com/apacheli/web-workers-polyfill.git"},"keywords":["node","npm","polyfill","web","web-workers","worker","workers"],"publishConfig":{"access":"public"},"license":"MIT","gitHead":"b1ce4e2eb1f7eed4bf087e930efd4b9c48b5cbc5","types":"./index.d.ts","_id":"@apacheli/web-workers@2.0.1","bugs":{"url":"https://github.com/apacheli/web-workers-polyfill/issues"},"homepage":"https://github.com/apacheli/web-workers-polyfill#readme","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-bFuVT+C0PKzQY1QM3HVtij0ifxkIAHneKkE/+6BPvM+aRdukPTW5O3xG55cPGB/SYjMISgzg/j23yF581u9TPw==","shasum":"00fc7b3d2152d82927d38a823373263a72667d18","tarball":"https://registry.npmjs.org/@apacheli/web-workers/-/web-workers-2.0.1.tgz","fileCount":9,"unpackedSize":8769,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDgmIZDzFfqeQcvedBhsJmmOvuRc7K3gtwgaz4CDWy8JwIgYQj7jfbL3AUJ4Yt/JzS/HofHfqbJJ8j/hfidzCr4ewc="}]},"_npmUser":{"name":"apacheli","email":"Idevtanm@gmail.com"},"directories":{},"maintainers":[{"name":"apacheli","email":"Idevtanm@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/web-workers_2.0.1_1764463786912_0.9614066138071538"},"_hasShrinkwrap":false}},"time":{"created":"2022-10-20T20:59:58.344Z","modified":"2025-11-30T00:49:47.374Z","1.0.0":"2022-10-20T20:59:58.605Z","1.0.1":"2022-10-20T21:10:29.533Z","2.0.0":"2024-07-05T22:12:23.881Z","2.0.1":"2025-11-30T00:49:47.124Z"},"bugs":{"url":"https://github.com/apacheli/web-workers-polyfill/issues"},"license":"MIT","homepage":"https://github.com/apacheli/web-workers-polyfill#readme","keywords":["node","npm","polyfill","web","web-workers","worker","workers"],"repository":{"type":"git","url":"git+https://github.com/apacheli/web-workers-polyfill.git"},"description":"Web Workers polyfill for Node.js.","maintainers":[{"name":"apacheli","email":"Idevtanm@gmail.com"}],"readme":"# Web Workers Polyfill for Node.js\n\nA polyfill for Web Workers for Node.js.\n\n- Adds `ErrorEvent`\n- Adds `Worker`\n- Adds `globalThis.self`\n\n> [!NOTE]\\\n> Web Workers are currently not supported natively in **Node.js v25.2.1** and\n> below. Please 👍 [this issue](https://github.com/nodejs/node/issues/43583) to\n> show your support!\n\n## Installing\n\nUsing npm:\n\n```sh\n$ npm i @apacheli/web-workers\n```\n\nUsing Deno:\n\n```sh\n$ deno add npm:@apacheli/web-workers\n```\n\nUsing Bun:\n\n```sh\n$ bun install @apacheli/web-workers\n```\n\n## Useful Links\n\n- [Node.js ESM Modules](https://nodejs.org/api/esm.html)\n- [Node.js `worker_threads`](https://nodejs.org/api/worker_threads.html)\n- [Web Workers Documentation on MDN](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers)\n\n## Examples\n\n### Using CommonJS\n\nWhile I recommend using ESM instead of CommonJS, the focus of this module is to\nadd Web Workers support to Node.js.\n\nHere is a simple example:\n\n`main.js`\n\n```js\nconst { Worker } = require(\"@apacheli/web-workers\");\n\nconst worker = new Worker(\"./worker.js\");\n\nworker.addEventListener(\"message\", (event) => {\n  console.log(\"message from worker.js:\", event.data);\n  worker.terminate();\n});\n\nworker.postMessage(\"Hello, World!\");\n```\n\n`worker.js`\n\n```js\nconst { self } = require(\"@apacheli/web-workers\");\n\nself.addEventListener(\"message\", (event) => {\n  console.log(\"message from main:\", event.data);\n});\n\nself.postMessage(\"hi\");\n```\n\nYields the following:\n\n```\n$ node main.js\nmessage from worker.js: hi\nmessage from main: Hello, World!\n```\n\nRegularly importing the module does not modify the global namespace. Instead,\nyou can import `@apacheli/web-workers/global` script to modify the global\nnamespace:\n\n`main.js`\n\n```js\nrequire(\"@apacheli/web-workers/global\");\n\nconst worker = new Worker(\"./worker.js\");\n\nworker.addEventListener(\"message\", (event) => {\n  console.log(\"message from worker.js:\", event.data);\n  worker.terminate();\n});\n\nworker.postMessage(\"Hello, World!\");\n```\n\n`worker.js`\n\n```js\nrequire(\"@apacheli/web-workers/global\");\n\nself.addEventListener(\"message\", (event) => {\n  console.log(\"message from main:\", event.data);\n});\n\nself.postMessage(\"hi\");\n```\n\n## Using ESM\n\n> [!NOTE]\\\n> You may have to append `.js` to the import.\n\n`main.js`\n\n```js\nimport \"@apacheli/web-workers/global.js\";\n\nconst worker = new Worker(new URL(\"./worker.js\", import.meta.url), {\n  type: \"module\",\n});\n\nworker.addEventListener(\"message\", (event) => {\n  console.log(\"message from worker:\", event.data);\n  worker.terminate();\n});\n\nworker.postMessage(\"Hello, World!\");\n```\n\n`worker.js`\n\n```js\nimport \"@apacheli/web-workers/global.js\";\n\nself.addEventListener(\"message\", (event) => {\n  console.log(\"message from main:\", event.data);\n});\n\nself.postMessage(\"hi\");\n```\n\nFor maximum cross-platform compatibility, you should use `URL` to specify your\nworker. `new Worker(\"./worker.js\")` will still work in Node.js though.\n\nIf you use platforms such as Deno and Bun, the global namespace will not be\ntampered. It will just reexport the already existing implementations.\n\n```js\nimport { Worker } from \"@apacheli/web-workers\";\n// ^ Reexports `Worker` if it already exists\n\nconsole.log(Worker === globalThis.Worker);\n// => Node: false - because globalThis.Worker does not exist\n// => Deno: true\n// => Bun: true\n```\n\n```js\nimport \"@apacheli/web-workers/global.js\";\n// ^ Does nothing in Deno and Bun\n\nconsole.log(Worker === globalThis.Worker);\n// => Node: true\n// => Deno: true\n// => Bun: true\n```\n\n```js\nconsole.log(Worker === globalThis.Worker);\n// => Node: Uncaught ReferenceError: Worker is not defined\n// => Deno: true\n// => Bun: true\n```\n\n## Browser\n\nIn the event you need this package for the browser for some reason, imports from\n`esm.sh` are available.\n\n```html\n<script\n  src=\"https://esm.sh/@apacheli/web-workers/global.js\"\n  type=\"module\"\n></script>\n```\n\n## Bugs\n\nIf you encounter any bugs, feel free to open an issue.\n\nhttps://github.com/apacheli/web-workers-polyfill/issues\n\n## License\n\n[MIT License](LICENSE.txt)\n","readmeFilename":"README.md"}