{"_id":"cluster-vir","_rev":"6-ef3e7dfdbce687b01560a1f6ddf7ee54","name":"cluster-vir","dist-tags":{"latest":"1.0.2"},"versions":{"0.0.0":{"name":"cluster-vir","version":"0.0.0","keywords":[],"author":"","license":"MIT","_id":"cluster-vir@0.0.0","maintainers":[{"name":"electrovir","email":"pithy.gut0a@icloud.com"}],"dist":{"shasum":"9103e0a2a5b65d2212bb16e17b6ed05d45c33dbe","tarball":"https://registry.npmjs.org/cluster-vir/-/cluster-vir-0.0.0.tgz","fileCount":1,"integrity":"sha512-042uFeb107qb/kkj4QaiWkrZi2vmCV11eH3kaeSMqxwBYCarS+4C1Kzm8cJPQyUn2YFhMVHG9iTygfyK/T7iVw==","signatures":[{"sig":"MEUCIB53pOdj7631aujDMIGJY5uU9ELkJkZqra30V2FdqCuLAiEAxi8a2863NqINvdH75PbrgR1vDyxV5tFgfoX/obcRXv8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":247},"main":"index.js","type":"commonjs","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"electrovir","email":"pithy.gut0a@icloud.com"},"_npmVersion":"11.0.0","directories":{},"_nodeVersion":"22.12.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/cluster-vir_0.0.0_1736347542741_0.15013463610195843","host":"s3://npm-registry-packages-npm-production"}},"0.0.1":{"name":"cluster-vir","version":"0.0.1","keywords":["cluster","worker","parallel","vir"],"author":{"url":"https://github.com/electrovir","name":"electrovir"},"license":"(MIT or CC0 1.0)","_id":"cluster-vir@0.0.1","maintainers":[{"name":"electrovir","email":"pithy.gut0a@icloud.com"}],"homepage":"https://github.com/electrovir/cluster-vir","bugs":{"url":"https://github.com/electrovir/cluster-vir/issues"},"dist":{"shasum":"b9890dfa9ec00c56ccbf80f83b7ad974bc610ada","tarball":"https://registry.npmjs.org/cluster-vir/-/cluster-vir-0.0.1.tgz","fileCount":22,"integrity":"sha512-9yt03CrYykEuhAUucFI1OT82mpswmvveIxETv4hLYboo7s0dcu6kZr98gBdJpiDos2QXEyjFRSeUPrV/3pnCDw==","signatures":[{"sig":"MEUCID79KUztyjiZFzepP2VmHnp/27mWTYSKe1L19MnLixMHAiEA3KjXyHPGnETXIXb0VJOxs5HWMYyZSjOMqiBOgCo5bLw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41198},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22"},"gitHead":"9b4cacfa0928bf94db22c2912266292ea465fa39","scripts":{"docs":"virmator docs","lint":"virmator lint fix","test":"virmator test node","start":"tsx src/index.ts","format":"virmator format","compile":"virmator compile","publish":"virmator publish npm run test:all","test:all":"npm run compile && concurrently --colors --kill-others-on-fail -c auto --names tests,spelling,format,docs,deps,lint \"npm run test:coverage\" \"npm run test:spelling\" \"npm run test:format\" \"npm run test:docs\" \"npm run test:deps\" \"npm run test:lint\"","test:deps":"virmator deps check","test:docs":"virmator docs check","test:lint":"virmator lint","test:format":"virmator format check","test:update":"npm run test update","test:coverage":"npm run test coverage","test:spelling":"virmator spellcheck"},"_npmUser":{"name":"electrovir","email":"pithy.gut0a@icloud.com"},"repository":{"url":"git+https://github.com/electrovir/cluster-vir.git","type":"git"},"_npmVersion":"11.0.0","description":"Makes it easy to distribute arbitrary scripts across multiple workers.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"catch-exit":"^2.0.0","typed-event-target":"^4.0.2","@augment-vir/assert":"^31.6.0","@augment-vir/common":"^31.6.0","object-shape-tester":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","tsx":"^4.19.2","cspell":"^8.17.1","eslint":"^9.14.0","esbuild":"^0.24.2","typedoc":"^0.27.6","prettier":"~3.3.3","virmator":"^13.11.2","@eslint/js":"^9.14.0","typescript":"^5.7.3","@types/node":"^22.10.5","@eslint/eslintrc":"^3.2.0","@augment-vir/node":"^31.6.0","@augment-vir/test":"^31.6.0","npm-check-updates":"^17.1.13","typescript-eslint":"^8.19.1","dependency-cruiser":"^16.9.0","eslint-plugin-jsdoc":"^50.6.1","prettier-plugin-toml":"^2.0.1","eslint-plugin-sonarjs":"^3.0.1","eslint-plugin-unicorn":"^56.0.1","prettier-plugin-jsdoc":"^1.3.2","eslint-config-prettier":"^9.1.0","eslint-plugin-prettier":"^5.2.1","@stylistic/eslint-plugin":"^2.12.1","eslint-plugin-playwright":"^2.1.0","prettier-plugin-sort-json":"~4.0.0","eslint-plugin-monorepo-cop":"^1.0.2","@stylistic/eslint-plugin-ts":"^2.12.1","prettier-plugin-packagejson":"^2.5.6","istanbul-smart-text-reporter":"^1.1.5","markdown-code-example-inserter":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.19.1","eslint-plugin-require-extensions":"^0.1.3","prettier-plugin-multiline-arrays":"^4.0.2","prettier-plugin-organize-imports":"^4.1.0","prettier-plugin-interpolated-html-tags":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cluster-vir_0.0.1_1736435849037_0.6466851207716864","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"cluster-vir","version":"0.1.0","keywords":["cluster","worker","parallel","vir"],"author":{"url":"https://github.com/electrovir","name":"electrovir"},"license":"(MIT or CC0 1.0)","_id":"cluster-vir@0.1.0","maintainers":[{"name":"electrovir","email":"pithy.gut0a@icloud.com"}],"homepage":"https://github.com/electrovir/cluster-vir","bugs":{"url":"https://github.com/electrovir/cluster-vir/issues"},"dist":{"shasum":"ee881679caa6709a19c88723dc56ae211583ac7e","tarball":"https://registry.npmjs.org/cluster-vir/-/cluster-vir-0.1.0.tgz","fileCount":22,"integrity":"sha512-oSsXtUIeQ+0WJSFv30vhfsc+6VYuhRjWEWgStof5Lahq7tYCIxZMohjuBUjchT8PU3SMvbbQFfc+L+aZyrVDTQ==","signatures":[{"sig":"MEQCICpGdMQMeFmXBmd5rj3M1vuc7Te1wIE2kY5cqvE5jyLCAiArd4Vs03zelk0vBAkO8pGJwsl7NhPwtenMByGZQMx9KA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":41601},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22"},"gitHead":"40002bad1f13f0ed376f1ee6637c4dfe6b8e5565","scripts":{"docs":"virmator docs","lint":"virmator lint fix","test":"virmator test node","start":"tsx src/index.ts","format":"virmator format","compile":"virmator compile","publish":"virmator publish npm run test:all","test:all":"npm run compile && concurrently --colors --kill-others-on-fail -c auto --names tests,spelling,format,docs,deps,lint \"npm run test:coverage\" \"npm run test:spelling\" \"npm run test:format\" \"npm run test:docs\" \"npm run test:deps\" \"npm run test:lint\"","test:deps":"virmator deps check","test:docs":"virmator docs check","test:lint":"virmator lint","test:format":"virmator format check","test:update":"npm run test update","test:coverage":"npm run test coverage","test:spelling":"virmator spellcheck"},"_npmUser":{"name":"electrovir","email":"pithy.gut0a@icloud.com"},"repository":{"url":"git+https://github.com/electrovir/cluster-vir.git","type":"git"},"_npmVersion":"11.0.0","description":"Makes it easy to distribute arbitrary scripts across multiple workers.","directories":{},"_nodeVersion":"22.12.0","dependencies":{"catch-exit":"^2.0.0","typed-event-target":"^4.0.2","@augment-vir/assert":"^31.7.2","@augment-vir/common":"^31.7.2","object-shape-tester":"^4.1.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","tsx":"^4.19.2","cspell":"^8.17.2","eslint":"^9.14.0","esbuild":"^0.24.2","typedoc":"^0.27.6","prettier":"~3.3.3","virmator":"^13.12.0","@eslint/js":"^9.14.0","typescript":"^5.7.3","@types/node":"^22.10.7","@eslint/eslintrc":"^3.2.0","@augment-vir/node":"^31.7.2","@augment-vir/test":"^31.7.2","npm-check-updates":"^17.1.14","typescript-eslint":"^8.21.0","dependency-cruiser":"^16.9.0","eslint-plugin-jsdoc":"^50.6.2","prettier-plugin-toml":"^2.0.1","eslint-plugin-sonarjs":"^3.0.1","eslint-plugin-unicorn":"^56.0.1","prettier-plugin-jsdoc":"^1.3.2","eslint-config-prettier":"^10.0.1","eslint-plugin-prettier":"^5.2.3","@stylistic/eslint-plugin":"^2.13.0","eslint-plugin-playwright":"^2.1.0","prettier-plugin-sort-json":"~4.1.1","eslint-plugin-monorepo-cop":"^1.0.2","@stylistic/eslint-plugin-ts":"^2.13.0","prettier-plugin-packagejson":"^2.5.8","istanbul-smart-text-reporter":"^1.1.5","markdown-code-example-inserter":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.21.0","eslint-plugin-require-extensions":"^0.1.3","prettier-plugin-multiline-arrays":"^4.0.2","prettier-plugin-organize-imports":"^4.1.0","prettier-plugin-interpolated-html-tags":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/cluster-vir_0.1.0_1737470413422_0.595163322857819","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"cluster-vir","version":"1.0.0","keywords":["cluster","worker","parallel","vir"],"author":{"url":"https://github.com/electrovir","name":"electrovir"},"license":"(MIT or CC0 1.0)","_id":"cluster-vir@1.0.0","maintainers":[{"name":"electrovir","email":"pithy.gut0a@icloud.com"}],"homepage":"https://github.com/electrovir/cluster-vir","bugs":{"url":"https://github.com/electrovir/cluster-vir/issues"},"dist":{"shasum":"12e72c3c8e1b75d13d20e36f759c600eb349dafa","tarball":"https://registry.npmjs.org/cluster-vir/-/cluster-vir-1.0.0.tgz","fileCount":22,"integrity":"sha512-ULeVrrA96McjWGniOwDspGTYX5tf2NNxUWv3Sj2E809yzhkLtzhoMx4oNTJPWUYsxaLbcY0d1ZPXkQ1V7wG+gA==","signatures":[{"sig":"MEUCIEJvFEms23swtYaLiDHghkTWT30Hyvk5f49sbawWn8rOAiEA0724AQZnZy74PZxbxhx8am583yN4+1ZWVXp3L3cAz20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41653},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22"},"gitHead":"4598533247c127ac53586e9806f0cb1b0ca4e0a0","scripts":{"docs":"virmator docs","lint":"virmator lint fix","test":"virmator test node","start":"tsx src/index.ts","format":"virmator format","compile":"virmator compile","publish":"virmator publish npm run test:all","test:all":"npm run compile && concurrently --colors --kill-others-on-fail -c auto --names tests,spelling,format,docs,deps,lint \"npm run test:coverage\" \"npm run test:spelling\" \"npm run test:format\" \"npm run test:docs\" \"npm run test:deps\" \"npm run test:lint\"","test:deps":"virmator deps check","test:docs":"virmator docs check","test:lint":"virmator lint","test:format":"virmator format check","test:update":"npm run test update","test:coverage":"npm run test coverage","test:spelling":"virmator spellcheck"},"_npmUser":{"name":"electrovir","email":"pithy.gut0a@icloud.com"},"repository":{"url":"git+https://github.com/electrovir/cluster-vir.git","type":"git"},"_npmVersion":"11.4.2","description":"Makes it easy to distribute arbitrary scripts across multiple workers.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"catch-exit":"^2.0.0","typed-event-target":"^4.1.0","@augment-vir/assert":"^31.28.0","@augment-vir/common":"^31.28.0","object-shape-tester":"^5.3.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","tsx":"^4.20.3","cspell":"^9.2.0","eslint":"^9.32.0","esbuild":"^0.25.8","typedoc":"^0.28.8","prettier":"~3.3.3","virmator":"^13.15.6","@eslint/js":"^9.32.0","typescript":"^5.8.3","@types/node":"^24.1.0","@eslint/eslintrc":"^3.3.1","@augment-vir/node":"^31.28.0","@augment-vir/test":"^31.28.0","npm-check-updates":"^18.0.2","typescript-eslint":"^8.38.0","dependency-cruiser":"^17.0.0","eslint-plugin-jsdoc":"^52.0.1","prettier-plugin-toml":"^2.0.6","eslint-plugin-sonarjs":"^3.0.4","eslint-plugin-unicorn":"^57.0.0","prettier-plugin-jsdoc":"^1.3.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.3","@stylistic/eslint-plugin":"^5.2.2","eslint-plugin-playwright":"^2.2.2","prettier-plugin-sort-json":"~4.1.1","eslint-plugin-monorepo-cop":"^1.0.2","@stylistic/eslint-plugin-ts":"^4.4.1","prettier-plugin-packagejson":"^2.5.19","istanbul-smart-text-reporter":"^1.1.5","markdown-code-example-inserter":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.38.0","eslint-plugin-require-extensions":"^0.1.3","prettier-plugin-multiline-arrays":"^4.0.3","prettier-plugin-organize-imports":"^4.2.0","prettier-plugin-interpolated-html-tags":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/cluster-vir_1.0.0_1753971786515_0.06190819954978499","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"cluster-vir","version":"1.0.1","keywords":["cluster","worker","parallel","vir"],"author":{"url":"https://github.com/electrovir","name":"electrovir"},"license":"(MIT or CC0 1.0)","_id":"cluster-vir@1.0.1","maintainers":[{"name":"electrovir","email":"pithy.gut0a@icloud.com"}],"homepage":"https://github.com/electrovir/cluster-vir","bugs":{"url":"https://github.com/electrovir/cluster-vir/issues"},"dist":{"shasum":"21afb1a4d0871b3a304b9f6093cdcf05f060f23d","tarball":"https://registry.npmjs.org/cluster-vir/-/cluster-vir-1.0.1.tgz","fileCount":22,"integrity":"sha512-+7bCzE07SYFkJPJOwV2vPt6oh0LzA/LkTOT4zP8fihpwWaJTJbXXCBTfgk3MMoBiGTahWWR3EkDswLb+WKvtug==","signatures":[{"sig":"MEQCICjIV3FtfRQxjuVmXM0YTEI6rUQSR9/zWX1SoXjoKB6xAiBUP5GsLvNZsDIjJiH/k2Vy92Um+6fjH95rzXEPBxF3Bw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41733},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=22"},"gitHead":"10f6085fb8f4818cbb0566200757e8b98b29e104","scripts":{"docs":"virmator docs","lint":"virmator lint fix","test":"virmator test node","start":"tsx src/index.ts","format":"virmator format","compile":"virmator compile","publish":"virmator publish npm run test:all","test:all":"npm run compile && runstorm --names tests,spelling,format,docs,deps,lint \"npm run test:coverage\" \"npm run test:spelling\" \"npm run test:format\" \"npm run test:docs\" \"npm run test:deps\" \"npm run test:lint\"","test:deps":"virmator deps check","test:docs":"virmator docs check","test:lint":"virmator lint","test:format":"virmator format check","test:update":"npm run test update","test:coverage":"npm run test coverage","test:spelling":"virmator spellcheck"},"_npmUser":{"name":"electrovir","email":"pithy.gut0a@icloud.com"},"repository":{"url":"git+https://github.com/electrovir/cluster-vir.git","type":"git"},"_npmVersion":"11.4.2","description":"Makes it easy to distribute arbitrary scripts across multiple workers.","directories":{},"_nodeVersion":"22.18.0","dependencies":{"catch-exit":"^2.0.0","typed-event-target":"^4.1.0","@augment-vir/assert":"^31.33.0","@augment-vir/common":"^31.33.0","object-shape-tester":"^6.2.0"},"_hasShrinkwrap":false,"devDependencies":{"c8":"^10.1.3","tsx":"^4.20.5","cspell":"^9.2.1","eslint":"^9.34.0","esbuild":"^0.25.9","typedoc":"^0.28.12","prettier":"~3.3.3","runstorm":"^0.6.1","virmator":"^14.0.2","@eslint/js":"^9.34.0","typescript":"^5.9.2","@types/node":"^24.3.0","@eslint/eslintrc":"^3.3.1","@augment-vir/node":"^31.33.0","@augment-vir/test":"^31.33.0","npm-check-updates":"^18.0.3","typescript-eslint":"^8.42.0","dependency-cruiser":"^17.0.1","eslint-plugin-jsdoc":"^54.2.1","prettier-plugin-toml":"^2.0.6","eslint-plugin-sonarjs":"^3.0.5","eslint-plugin-unicorn":"^57.0.0","prettier-plugin-jsdoc":"^1.3.3","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@stylistic/eslint-plugin":"^5.3.1","eslint-plugin-playwright":"^2.2.2","prettier-plugin-sort-json":"~4.1.1","eslint-plugin-monorepo-cop":"^1.0.2","@stylistic/eslint-plugin-ts":"^4.4.1","prettier-plugin-packagejson":"^2.5.19","istanbul-smart-text-reporter":"^1.1.5","markdown-code-example-inserter":"^3.0.3","@typescript-eslint/eslint-plugin":"^8.42.0","eslint-plugin-require-extensions":"^0.1.3","prettier-plugin-multiline-arrays":"^4.0.3","prettier-plugin-organize-imports":"^4.2.0","prettier-plugin-interpolated-html-tags":"^2.0.1"},"_npmOperationalInternal":{"tmp":"tmp/cluster-vir_1.0.1_1756818644097_0.10214258830902345","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"cluster-vir","version":"1.0.2","description":"Makes it easy to distribute arbitrary scripts across multiple workers.","keywords":["cluster","worker","parallel","vir"],"homepage":"https://github.com/electrovir/cluster-vir","bugs":{"url":"https://github.com/electrovir/cluster-vir/issues"},"repository":{"type":"git","url":"git+https://github.com/electrovir/cluster-vir.git"},"license":"(MIT OR CC0-1.0)","author":{"name":"electrovir","url":"https://github.com/electrovir"},"sideEffects":false,"type":"module","main":"dist/index.js","module":"dist/index.js","types":"dist/index.d.ts","scripts":{"compile":"virmator compile","docs":"virmator docs","format":"virmator format","lint":"virmator lint fix","publish":"virmator publish npm run test:all","start":"tsx src/index.ts","test":"virmator test node","test:all":"npm run compile && runstorm --names tests,spelling,format,docs,deps,lint \"npm run test:coverage\" \"npm run test:spelling\" \"npm run test:format\" \"npm run test:docs\" \"npm run test:deps\" \"npm run test:lint\"","test:coverage":"npm run test coverage","test:deps":"virmator deps check","test:docs":"virmator docs check","test:format":"virmator format check","test:lint":"virmator lint","test:spelling":"virmator spellcheck","test:update":"npm run test update"},"dependencies":{"@augment-vir/assert":"^32.2.1","@augment-vir/common":"^32.2.1","catch-exit":"^2.0.0","object-shape-tester":"^6.14.1","typed-event-target":"^4.3.2"},"devDependencies":{"@augment-vir/node":"^32.2.1","@augment-vir/test":"^32.2.1","@eslint/eslintrc":"^3.3.6","@eslint/js":"^10.0.1","@stylistic/eslint-plugin":"^5.10.0","@stylistic/eslint-plugin-ts":"^4.4.1","@types/node":"^26.1.1","@typescript-eslint/eslint-plugin":"^8.65.0","c8":"^12.0.0","cspell":"^10.0.1","dependency-cruiser":"^18.1.0","esbuild":"^0.28.1","eslint":"^10.8.0","eslint-config-prettier":"^10.1.8","eslint-plugin-jsdoc":"^63.2.2","eslint-plugin-monorepo-cop":"^1.0.2","eslint-plugin-playwright":"^2.10.5","eslint-plugin-prettier":"^5.5.6","eslint-plugin-require-extensions":"^0.1.3","eslint-plugin-sonarjs":"^4.2.0","eslint-plugin-unicorn":"^72.0.0","istanbul-smart-text-reporter":"^1.1.5","markdown-code-example-inserter":"^3.0.6","npm-check-updates":"^22.2.9","prettier":"~3.3.3","prettier-plugin-interpolated-html-tags":"^2.0.2","prettier-plugin-jsdoc":"^1.8.1","prettier-plugin-multiline-arrays":"^4.1.11","prettier-plugin-organize-imports":"^4.3.0","prettier-plugin-packagejson":"^3.0.2","prettier-plugin-sort-json":"~4.2.0","prettier-plugin-toml":"^2.0.6","runstorm":"^1.0.6","tsx":"^4.23.1","typedoc":"^0.28.20","typescript":"^6.0.3","typescript-eslint":"^8.65.0","virmator":"^14.30.1"},"engines":{"node":">=22"},"gitHead":"3697250cb5c2f35b4d90bf798e9a236da5aba43e","_id":"cluster-vir@1.0.2","_nodeVersion":"22.22.3","_npmVersion":"11.17.0","dist":{"integrity":"sha512-1B3Ysl04nKEWrdxerC01FJL5UO96liguGL92+LmxDb/H/QhlT8hulM4LtEA7L9v3sbQxyavy41Sx4cBez+G6KA==","shasum":"68dae241f145d19b67d59bf0ee549008df514ab4","tarball":"https://registry.npmjs.org/cluster-vir/-/cluster-vir-1.0.2.tgz","fileCount":22,"unpackedSize":42004,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIFwyXIPfiXcdn+kFhO8sdaPYu4k+TKk6KaBgpQRRsQkIAiEA26rkFg3ZZVOm75NXPpuDt5NRiAdsAQDC+3RFelDE+s4="}]},"_npmUser":{"name":"electrovir","email":"pithy.gut0a@icloud.com"},"directories":{},"maintainers":[{"name":"electrovir","email":"pithy.gut0a@icloud.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/cluster-vir_1.0.2_1785417330535_0.16864862614071963"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-08T14:45:42.740Z","modified":"2026-07-30T13:15:31.062Z","0.0.0":"2025-01-08T14:45:42.917Z","0.0.1":"2025-01-09T15:17:29.246Z","0.1.0":"2025-01-21T14:40:13.673Z","1.0.0":"2025-07-31T14:23:06.821Z","1.0.1":"2025-09-02T13:10:44.289Z","1.0.2":"2026-07-30T13:15:30.700Z"},"bugs":{"url":"https://github.com/electrovir/cluster-vir/issues"},"author":{"name":"electrovir","url":"https://github.com/electrovir"},"license":"(MIT OR CC0-1.0)","homepage":"https://github.com/electrovir/cluster-vir","keywords":["cluster","worker","parallel","vir"],"repository":{"type":"git","url":"git+https://github.com/electrovir/cluster-vir.git"},"description":"Makes it easy to distribute arbitrary scripts across multiple workers.","maintainers":[{"name":"electrovir","email":"pithy.gut0a@icloud.com"}],"readme":"# cluster-vir\n\nSimplifies running a script across multiple workers. This only works in Node.js (not in the browser) because it relies on Node.js's built-in [`cluster`](https://nodejs.org/api/cluster.html) module.\n\n## Install\n\n```sh\nnpm i cluster-vir\n```\n\n## Usage\n\nSee full docs here: https://electrovir.github.io/cluster-vir\n\nThe main export from this package is `runInCluster`. Pass it a callback to be executed on each worker. Here's an example of how to use it:\n\n<!-- example-link: ./src/examples/run-script-cluster.example.ts -->\n\n```TypeScript\nimport {createServer} from 'node:http';\nimport {runInCluster} from 'cluster-vir';\n\n/**\n * In the primary thread the output of `runInCluster` gives you an instance of `ClusterManager`\n * which can be used to access all child nodes. In the worker threads it gives you an instance of\n * `WorkerRunner` which can be used to access the worker.\n */\nconst runner = runInCluster(\n    ({worker}) => {\n        /**\n         * Do the worker actions here. In this example, each worker is listening to a port as an\n         * HTTP server.\n         */\n\n        /**\n         * Cluster workers can share a TCP connection, so an HTTP server can be handled by (and will\n         * be load-balanced between) multiple workers (or threads).\n         */\n        const server = createServer((request, response) => {\n            response.writeHead(200);\n            response.end(`hello there ${worker.process.pid}`);\n        }).listen(8000);\n\n        return () => {\n            /**\n             * Do cleanup work in here. In this case, we're closing the HTTP server. Note that a\n             * cleanup callback cannot be async.\n             */\n            server.close();\n        };\n    },\n    {\n        /**\n         * Indicates that all child workers should be started immediately. If set to `false`, you\n         * must call `runner.startWorkers()` to start them, giving you time to attach any listeners\n         * you may need.\n         */\n        startWorkersImmediately: true,\n    },\n);\n```\n\n## Notes\n\n-   Workers will not terminate themselves when the callback you provide to `runInCluster` finishes, you must manually kill them with `worker.kill()` or `process.exit()`.\n-   When all workers have terminated and `respawnWorkers` has not been set to `true`, the cluster manager will automatically terminate itself as well.\n-   The cluster manager and its workers send messages back and forth so if you add your own event listener to the spawned workers, you'll need an `if` or `switch` to focus on your messages.\n","readmeFilename":"README.md"}