{"_id":"web-worker-helper","_rev":"11-06ae45bb77824a61a2b5808c154bcbe9","name":"web-worker-helper","dist-tags":{"latest":"0.0.4","beta":"0.0.4-beta.4"},"versions":{"0.0.1":{"name":"web-worker-helper","version":"0.0.1","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/liuvigongzuoshi/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":false,"scripts":{"prepare":"husky install","lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","build:cjs":"tsc -p tsconfig.json --target ES5 --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --target ES5 --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.ts"},"dependencies":{},"devDependencies":{"@rollup/plugin-typescript":"^8.3.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^2.66.0","rollup-plugin-terser":"^7.0.2","tape":"^5.3.1","tape-promise":"^4.0.0","typedoc":"^0.22.5","typescript":"^4.4.3"},"gitHead":"7c413486f59296ed52d710d817bd82232a1d2906","bugs":{"url":"https://github.com/liuvigongzuoshi/web-worker-helper/issues"},"homepage":"https://github.com/liuvigongzuoshi/web-worker-helper#readme","_id":"web-worker-helper@0.0.1","_nodeVersion":"14.18.1","_npmVersion":"6.14.15","dist":{"integrity":"sha512-weG26snEFIQvOOUJLTzx60HwPr5PZ52kHvm0Vu6NflaAFD2+47KKXpZtC/ksUITVJBNDLeuHL9cPomIFQCkWFw==","shasum":"d2d6c1d0166c158e919f4834a48baf6b33fe84dd","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.1.tgz","fileCount":97,"unpackedSize":331626,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.13\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJh7m0fCRA9TVsSAnZWagAAHCgP/iLS39CK8IzfZiEuHDtl\n73RkVi/Mlsj6bengevIhN8M3kBIn8QU3K1QWzpnTk4hLurB0uaIsp1ASksc8\noKjtN3uQx0NLJxmcQ8lFNDewzQnopcME1zKhdNlszTD//Brhn5TUgcUXc2uz\nqVbkv+3+bTTdXFKXZamx/03nZN9zgtAcl3TEKXdTKJc4P6IIRvjH5Y8gpzeW\n4948eqwet36COKlrFS5hWDbdGQwgmDl42t/i1uSSW3ceX1bC0rS+VNEFmdh+\nRakYqfh3g5kE/jd/z+lRA6mvD2nP1aP0FBfgxH6laWfi3Xl5mF3SRdevlMlI\nZzeLSGLlWHgaGXkrtb3ww1b7uoglTVj8IXmSZlw66J5fTB6zSQx0PYZnXnt2\nOz6fB2TEiR4AdHF2VLDxD0043MSnnvf6dLZZ8wkgwXwgQDiNR9cxxr7yeO1m\nGq8c+G/1HxoRUEqq4cfR8P6xqNtSHeK6TQTxkn98heFqK/PXLoDGOcBHa04V\ndkJP7cW0ZJDVqOfn/qfiUaFpRbYCzBhATUMdjxWGL6rTVQUTkhhgdb1j1/Ps\nIdSZ7y1L5HYW9LP5ugm6dh27rtySSu9Wf4ueCnlVWKdUpW4zazRff6Ys6uV1\nSbBahgHH/DZH2/13xcbSEAhfYXjtUgztrn1QoN5jyjV83Ys0nBUtFu8V1jbv\nHB1T\r\n=PHnb\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQDjVreBYYAYspN3SN2bkeUQO4sbon/sxDaoVI5PkULJfQIgDtCkkFQUhbiqg/Vp/kPTYODaQcjdhyBOK0Ka66IHFa4="}]},"_npmUser":{"name":"lviser","email":"liuvigongzuoshi@gmail.com"},"directories":{},"maintainers":[{"name":"lviser","email":"liuvigongzuoshi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.1_1643015454881_0.5458153951681366"},"_hasShrinkwrap":false},"0.0.2":{"name":"web-worker-helper","version":"0.0.2","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/liuvigongzuoshi/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":false,"scripts":{"prepare":"husky install","lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","build:cjs":"tsc -p tsconfig.json --target ES5 --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --target ES5 --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.ts"},"dependencies":{},"devDependencies":{"@rollup/plugin-typescript":"^8.3.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^2.66.0","rollup-plugin-terser":"^7.0.2","tape":"^5.3.1","tape-promise":"^4.0.0","typedoc":"^0.22.5","typescript":"^4.4.3"},"gitHead":"6e0c5c968fbb94a3c20f040f4cb6d63522576b55","bugs":{"url":"https://github.com/liuvigongzuoshi/web-worker-helper/issues"},"homepage":"https://github.com/liuvigongzuoshi/web-worker-helper#readme","_id":"web-worker-helper@0.0.2","_nodeVersion":"14.15.1","_npmVersion":"6.14.8","dist":{"integrity":"sha512-pdu9listFxSvwkC18sVRz3bMuKxOuxNx7rL1FpQ6wqehv4imxYJ/WPD7sdM+YngvfpJhZSxWah65lOyQjT+K7A==","shasum":"9c1456e123bf283701bb15f35113a7140b4e44df","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.2.tgz","fileCount":96,"unpackedSize":325695,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJiDmbwACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqh4g/6Ai2hXHbRXku4+PxODDa9YutVBJ6PkAR/2E+wgiG3kPyMpRJj\r\nQFO9hb0GUh0Hh8QlSiFjVyBGZJcaAjnWvdybT5ws1Rgp2W4L2oNiEC0dtiJl\r\nduhfJmtJ9tWCG7PocGKkzaYMCrDaKS+a6q/Gw+w/mwdmOULaURWUgNvgEskQ\r\nzfdskUcPxjZfRHc3qYE1eqW0syYmlyKMf+MPeiw3+XAs+Ddu4q6Qp4D8lout\r\nU2ggHXpCFNT/W/9gfUkFMM8uWE1Dfqket0YWUoCJto9E72SwHDl7LtyrF6fH\r\nw20c03Orr2NGHBhIUM1nYj1laJIaHIAODrPo65iLLTree4vbYgRZzePCc2w0\r\nCnHlcTCp6p3XeLKSyVsiweEOUD/Q2tBn7Z/4IbZ7nka9ilui3iIpsxzy025I\r\nWFbsnPub+U+FDj1hyHM3pRdk9sGJ5//yTVQbpTqx3X6DwyPmMew9I/BNOyZG\r\n51kP8XzFhlPVQz08OIVIOxLNV4RzDwRj5dKiRSF3qXMoYQc1IpLA6oxhBi/t\r\njdADaz9NswOLhfzOq+VAPKP1In+p3svsRoSOzV4lFAb9YJQw3MgthlcjKwT6\r\nwMqcYAMHOyZ+pBY2LlV3SGfLS6kda1PbBjeR9t0+J+MnBtZrsCfdoV26WBhW\r\nkzT1enGG5OjOIDRY82z4cZq1NI5NRO+Y4wk=\r\n=q1O+\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGNH7K2TzFsyPVOkIWFwzBLFZ+Drmsznoj0DusmBMlDMAiB8byB9RQcho7UqVI2tfpOlYfWc2ajBtHO28/Zr9ES4hA=="}]},"_npmUser":{"name":"lviser","email":"liuvigongzuoshi@gmail.com"},"directories":{},"maintainers":[{"name":"lviser","email":"liuvigongzuoshi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.2_1645111024139_0.33143145581204325"},"_hasShrinkwrap":false},"0.0.3":{"name":"web-worker-helper","version":"0.0.3","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/lvisei/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":true,"scripts":{"prepare":"husky install","lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"npm run clean && npm run build:cjs && npm run build:esm && npm run build:umd","build:cjs":"tsc -p tsconfig.json --target ES5 --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --target ES5 --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.ts"},"dependencies":{},"devDependencies":{"@rollup/plugin-typescript":"^8.3.0","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^2.66.0","rollup-plugin-terser":"^7.0.2","tape":"^5.3.1","tape-promise":"^4.0.0","typedoc":"^0.22.5","typescript":"^4.4.3"},"gitHead":"1c3d72e41383c3972086cc23774be1ef98dd70af","bugs":{"url":"https://github.com/lvisei/web-worker-helper/issues"},"homepage":"https://github.com/lvisei/web-worker-helper#readme","_id":"web-worker-helper@0.0.3","_nodeVersion":"16.14.2","_npmVersion":"8.5.0","dist":{"integrity":"sha512-/TllNPjGenDwjE67M16TD9ALwuY847/zIoH7r+e5rSeG4kEa3HiMTAsUDj80yzIzhtshkv215KfsnQ/RXR3nVA==","shasum":"9ef60b9c463970dc324c381b9aaf2a22c5d0b77a","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.3.tgz","fileCount":96,"unpackedSize":325766,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHZKreXqUyqxJ7FqyUWkZyVDP7+3GuQ7nxFsJ7CPfc2XAiBwsYNSknIa8jGSnGnj0Oc+8LiQejKkJfJcCEkEzdrvAA=="}],"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJi1S44ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpXIw/8CU6YJmkEQ7kjTAEA1ZaTliNOTIVoSO784YmDUxCnMiPXUuAq\r\nC9cEM1Ry2CfZE7A3DEoQo4+7AQZDV5SLDqmrcolLez5UYrIRIe0KRbhR1z9H\r\n5Yl/gt2BfVWd+bMY1538rqp7gVpXqtbnxjxCaZx9UZKTipzadXoPin61Yn99\r\naES5SUcTRPr2WI6M7soxx3JElP8lzTFCceVK667gpYqBtBvpnVqtsux1Jj1P\r\npMBYs3LnGJBn0wKcEyy7qHYONFSqXXg3+Ul6bztjBmjsVsauofy68CJ8f/GU\r\nQNzQS35vjGdYE8hh1X7THzJ8Jq4EBHudQ44iwjsZt/dLUXOiDF7k/43k7o2V\r\n4bslhMyrD8Ty/y08kIBWQKl78G9SPtrW8NZjp77dPbXMvPVi2wxZa8HIpjzl\r\n/S11Vf3rDafaMNLdMFS9NF8T+s2DVxToe1GXL+PGAVEId6SbertrMPXBW5Hk\r\nth8EYLgOehgcq828TfQYfVH2uABdcbHmsRpHU0ijY34YFykElFXemjEeTzWF\r\ng27U8hkmcsPMKzyebaZdmN/5xaLAlmAaQ6TScbzZkJN9NRFCs/Esg9iN88XZ\r\npQWZPT/UM49+J1x1ecpMEXbsI7XLVdUKIdAoOOwAdGUm0wNdeLzTzzu8y98u\r\n8A1uZLLikYE4dJWDbqseewGnUFIuUYDKtf4=\r\n=41jo\r\n-----END PGP SIGNATURE-----\r\n"},"_npmUser":{"name":"lviser","email":"liuvigongzuoshi@gmail.com"},"directories":{},"maintainers":[{"name":"lviser","email":"liuvigongzuoshi@gmail.com"},{"name":"lvisei","email":"yunji.me@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.3_1658138168068_0.7045032067893555"},"_hasShrinkwrap":false},"0.0.4-beta.0":{"name":"web-worker-helper","version":"0.0.4-beta.0","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/lvisei/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":true,"devDependencies":{"@changesets/changelog-github":"^0.5.0","@changesets/cli":"^2.27.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^4.14.0","tape":"^5.3.1","tape-promise":"^4.0.0","tslib":"^2.6.2","typedoc":"^0.25.12","typescript":"^5.4.4"},"engines":{"node":">=18","pnpm":">=8"},"scripts":{"lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"pnpm clean && pnpm run '/^build:.*/'","build:cjs":"tsc -p tsconfig.json --declaration --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --declaration --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.mjs","changeset":"changeset add","publish-version":"changeset version && node scripts/sync-version.mjs","publish-package":"pnpm build && changeset publish"},"readme":"# web-worker-helper\n\n> Forked from [@loaders.gl/worker-utils](https://github.com/visgl/loaders.gl/blob/master/modules/worker-utils/README.md) implementation\n\n## Time consuming task\n\n```ts\n// fibonacci.js\nexport function fibonacci(n: number) {\n  let n1 = 1,\n    n2 = 1,\n    sum = 1;\n  for (let i = 3; i <= n; i += 1) {\n    sum = n1 + n2;\n    n1 = n2;\n    n2 = sum;\n  }\n  return sum;\n}\n```\n\n## Creating workers for time-consuming task\n\n```ts\n// fibonacci.worker.js\nimport { createWorker } from 'web-worker-helper';\nimport { fibonacci } from './fibonacci';\n\ncreateWorker(async (data: number) => {\n  const result = fibonacci(data);\n  return result;\n});\n```\n\n## Bundle worker\n\n## Main thread call worker\n\n1. parse worker\n\n```ts\nimport { WorkerFarm } from 'web-worker-helper';\n\nexport async function parseWorker(\n  workerName: string,\n  data: any,\n  options?: Record<string, any> = { maxConcurrency: 3, reuseWorkers: true }\n) {\n  const url = getWorkerURL({ name: workerName });\n  // const source = `fibonacci codeString`\n  const workerFarm = WorkerFarm.getWorkerFarm({\n    maxConcurrency: options.maxConcurrency,\n    reuseWorkers: options.reuseWorkers,\n  });\n  const workerPool = workerFarm.getWorkerPool({ name: workerName, url });\n  // const workerPool = workerFarm.getWorkerPool({ name: workerName, source });\n  const job = await workerPool.startJob(workerName, (job, type, data) => job.done(data));\n\n  job.postMessage('process', { input: data });\n\n  const result = await job.result;\n  return result.result;\n}\n```\n\n2. Call time-consuming task\n\n```ts\nimport { parseWorker } from './parse-worker';\nimport { fibonacci } from './fibonacci';\n\nexport async function starFibonacci(iskorker, data) {\n  if (iskorker) {\n    const result = await parseWorker('fibonacci-worker', data, {});\n    return result;\n  }\n\n  const result = await fibonacci(data);\n  return result;\n}\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/lvisei/web-worker-helper/issues"},"homepage":"https://github.com/lvisei/web-worker-helper#readme","_id":"web-worker-helper@0.0.4-beta.0","_integrity":"sha512-FuWarQb0bhrtirCCc2eyacVZ6T9XsEvs6bPIl4nHqkH+A7l0GmH3DvNSsdXmdeHsJx2g/X8Zk2ei0WpoBYHs7g==","_resolved":"/tmp/97e034e07ed66ab3eee69a632ce6f7ff/web-worker-helper-0.0.4-beta.0.tgz","_from":"file:web-worker-helper-0.0.4-beta.0.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"integrity":"sha512-FuWarQb0bhrtirCCc2eyacVZ6T9XsEvs6bPIl4nHqkH+A7l0GmH3DvNSsdXmdeHsJx2g/X8Zk2ei0WpoBYHs7g==","shasum":"ec92f4ddacee676f76ed7246131d61eaeed902bb","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.4-beta.0.tgz","fileCount":101,"unpackedSize":410160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCZf6WRHdJCTEbO12W0pdOMWj+wsQuuiJM0yO+BGpSO3wIgWiOts2MSIRRktyskdBfcrq6cOz7Om/yDpf5ZwhmKDlc="}]},"_npmUser":{"name":"lvisei","email":"yunji.me@outlook.com"},"directories":{},"maintainers":[{"name":"lvisei","email":"yunji.me@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.4-beta.0_1712426334037_0.9097470605556517"},"_hasShrinkwrap":false},"0.0.4-beta.1":{"name":"web-worker-helper","version":"0.0.4-beta.1","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/lvisei/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":true,"devDependencies":{"@changesets/changelog-github":"^0.5.0","@changesets/cli":"^2.27.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^4.14.0","tape":"^5.3.1","tape-promise":"^4.0.0","tslib":"^2.6.2","typedoc":"^0.25.12","typescript":"^5.4.4"},"engines":{"node":">=18","pnpm":">=8"},"scripts":{"lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"pnpm clean && pnpm run '/^build:.*/'","build:cjs":"tsc -p tsconfig.json --declaration --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --declaration --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.mjs","changeset":"changeset add","publish-version":"changeset version && node scripts/sync-version.mjs","publish-package":"pnpm build && changeset publish"},"readme":"# web-worker-helper\n\n> Forked from [@loaders.gl/worker-utils](https://github.com/visgl/loaders.gl/blob/master/modules/worker-utils/README.md) implementation\n\n## Time consuming task\n\n```ts\n// fibonacci.js\nexport function fibonacci(n: number) {\n  let n1 = 1,\n    n2 = 1,\n    sum = 1;\n  for (let i = 3; i <= n; i += 1) {\n    sum = n1 + n2;\n    n1 = n2;\n    n2 = sum;\n  }\n  return sum;\n}\n```\n\n## Creating workers for time-consuming task\n\n```ts\n// fibonacci.worker.js\nimport { createWorker } from 'web-worker-helper';\nimport { fibonacci } from './fibonacci';\n\ncreateWorker(async (data: number) => {\n  const result = fibonacci(data);\n  return result;\n});\n```\n\n## Bundle worker\n\n## Main thread call worker\n\n1. parse worker\n\n```ts\nimport { WorkerFarm } from 'web-worker-helper';\n\nexport async function parseWorker(\n  workerName: string,\n  data: any,\n  options?: Record<string, any> = { maxConcurrency: 3, reuseWorkers: true }\n) {\n  const url = getWorkerURL({ name: workerName });\n  // const source = `fibonacci codeString`\n  const workerFarm = WorkerFarm.getWorkerFarm({\n    maxConcurrency: options.maxConcurrency,\n    reuseWorkers: options.reuseWorkers,\n  });\n  const workerPool = workerFarm.getWorkerPool({ name: workerName, url });\n  // const workerPool = workerFarm.getWorkerPool({ name: workerName, source });\n  const job = await workerPool.startJob(workerName, (job, type, data) => job.done(data));\n\n  job.postMessage('process', { input: data });\n\n  const result = await job.result;\n  return result.result;\n}\n```\n\n2. Call time-consuming task\n\n```ts\nimport { parseWorker } from './parse-worker';\nimport { fibonacci } from './fibonacci';\n\nexport async function starFibonacci(iskorker, data) {\n  if (iskorker) {\n    const result = await parseWorker('fibonacci-worker', data, {});\n    return result;\n  }\n\n  const result = await fibonacci(data);\n  return result;\n}\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/lvisei/web-worker-helper/issues"},"homepage":"https://github.com/lvisei/web-worker-helper#readme","_id":"web-worker-helper@0.0.4-beta.1","_integrity":"sha512-N4NvxRE05lhT5v6Nz1sWtEy2RFLMraDIo3EVK3xogTn+3sPehvSM4iK1B1fsI32WffA3con+o5Z66sA6G0v5hg==","_resolved":"/tmp/efd7d441ef235b178e9d45f36c2868e3/web-worker-helper-0.0.4-beta.1.tgz","_from":"file:web-worker-helper-0.0.4-beta.1.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"integrity":"sha512-N4NvxRE05lhT5v6Nz1sWtEy2RFLMraDIo3EVK3xogTn+3sPehvSM4iK1B1fsI32WffA3con+o5Z66sA6G0v5hg==","shasum":"6a5a0a36aed5e8bb3f3a387acbb60a3960df7f2f","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.4-beta.1.tgz","fileCount":101,"unpackedSize":410160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIEpP/VR2gS9yUK3pBtasiEf/r++z8rjYchWCDCwbUpflAiBF9xFKIP59t6Hqei8WfhhtomkN9MDIJVyENcEvLnldnw=="}]},"_npmUser":{"name":"lvisei","email":"yunji.me@outlook.com"},"directories":{},"maintainers":[{"name":"lvisei","email":"yunji.me@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.4-beta.1_1712426734715_0.658094244313447"},"_hasShrinkwrap":false},"0.0.4-beta.2":{"name":"web-worker-helper","version":"0.0.4-beta.2","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/lvisei/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":true,"devDependencies":{"@changesets/changelog-github":"^0.5.0","@changesets/cli":"^2.27.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^4.14.0","tape":"^5.3.1","tape-promise":"^4.0.0","tslib":"^2.6.2","typedoc":"^0.25.12","typescript":"^5.4.4"},"engines":{"node":">=18","pnpm":">=8"},"scripts":{"lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"pnpm clean && pnpm run '/^build:.*/'","build:cjs":"tsc -p tsconfig.json --declaration --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --declaration --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.mjs","changeset":"changeset add","publish-version":"changeset version && node scripts/sync-version.mjs","publish-package":"pnpm build && changeset publish"},"readme":"# web-worker-helper\n\n> Forked from [@loaders.gl/worker-utils](https://github.com/visgl/loaders.gl/blob/master/modules/worker-utils/README.md) implementation\n\n## Time consuming task\n\n```ts\n// fibonacci.js\nexport function fibonacci(n: number) {\n  let n1 = 1,\n    n2 = 1,\n    sum = 1;\n  for (let i = 3; i <= n; i += 1) {\n    sum = n1 + n2;\n    n1 = n2;\n    n2 = sum;\n  }\n  return sum;\n}\n```\n\n## Creating workers for time-consuming task\n\n```ts\n// fibonacci.worker.js\nimport { createWorker } from 'web-worker-helper';\nimport { fibonacci } from './fibonacci';\n\ncreateWorker(async (data: number) => {\n  const result = fibonacci(data);\n  return result;\n});\n```\n\n## Bundle worker\n\n## Main thread call worker\n\n1. parse worker\n\n```ts\nimport { WorkerFarm } from 'web-worker-helper';\n\nexport async function parseWorker(\n  workerName: string,\n  data: any,\n  options?: Record<string, any> = { maxConcurrency: 3, reuseWorkers: true }\n) {\n  const url = getWorkerURL({ name: workerName });\n  // const source = `fibonacci codeString`\n  const workerFarm = WorkerFarm.getWorkerFarm({\n    maxConcurrency: options.maxConcurrency,\n    reuseWorkers: options.reuseWorkers,\n  });\n  const workerPool = workerFarm.getWorkerPool({ name: workerName, url });\n  // const workerPool = workerFarm.getWorkerPool({ name: workerName, source });\n  const job = await workerPool.startJob(workerName, (job, type, data) => job.done(data));\n\n  job.postMessage('process', { input: data });\n\n  const result = await job.result;\n  return result.result;\n}\n```\n\n2. Call time-consuming task\n\n```ts\nimport { parseWorker } from './parse-worker';\nimport { fibonacci } from './fibonacci';\n\nexport async function starFibonacci(iskorker, data) {\n  if (iskorker) {\n    const result = await parseWorker('fibonacci-worker', data, {});\n    return result;\n  }\n\n  const result = await fibonacci(data);\n  return result;\n}\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/lvisei/web-worker-helper/issues"},"homepage":"https://github.com/lvisei/web-worker-helper#readme","_id":"web-worker-helper@0.0.4-beta.2","_integrity":"sha512-o4rScisYrX2mdIqoSOsAmQagZrTaw1amsxP5pkJmHB945DSxE0h4Pqo2N7yXLVIrKkksKYgoamdS9g6XjpxaRw==","_resolved":"/tmp/e467a7c8378d740111a9a15e5dbe0c9e/web-worker-helper-0.0.4-beta.2.tgz","_from":"file:web-worker-helper-0.0.4-beta.2.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"integrity":"sha512-o4rScisYrX2mdIqoSOsAmQagZrTaw1amsxP5pkJmHB945DSxE0h4Pqo2N7yXLVIrKkksKYgoamdS9g6XjpxaRw==","shasum":"b70ed3c3b1669904295898f8ae48489f786cbd36","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.4-beta.2.tgz","fileCount":101,"unpackedSize":410160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCqEeDCNAM/0khtZyfohGkCnrkOm9tsEl3orLeqh5G6JwIhAIKfGen6DP25nQN1wGYPAt78GZ6TOkHd0dRN6TSWJAGA"}]},"_npmUser":{"name":"lvisei","email":"yunji.me@outlook.com"},"directories":{},"maintainers":[{"name":"lvisei","email":"yunji.me@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.4-beta.2_1712456232545_0.7056942523684389"},"_hasShrinkwrap":false},"0.0.4-beta.3":{"name":"web-worker-helper","version":"0.0.4-beta.3","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/lvisei/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":true,"devDependencies":{"@changesets/changelog-github":"^0.5.0","@changesets/cli":"^2.27.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^4.14.0","tape":"^5.3.1","tape-promise":"^4.0.0","tslib":"^2.6.2","typedoc":"^0.25.12","typescript":"^5.4.4"},"engines":{"node":">=18","pnpm":">=8"},"scripts":{"lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"pnpm clean && pnpm run '/^build:.*/'","build:cjs":"tsc -p tsconfig.json --declaration --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --declaration --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.mjs","changeset":"changeset add","publish-version":"changeset version && node scripts/sync-version.mjs","publish-package":"pnpm build && changeset publish"},"readme":"# web-worker-helper\n\n> Forked from [@loaders.gl/worker-utils](https://github.com/visgl/loaders.gl/blob/master/modules/worker-utils/README.md) implementation\n\n## Time consuming task\n\n```ts\n// fibonacci.js\nexport function fibonacci(n: number) {\n  let n1 = 1,\n    n2 = 1,\n    sum = 1;\n  for (let i = 3; i <= n; i += 1) {\n    sum = n1 + n2;\n    n1 = n2;\n    n2 = sum;\n  }\n  return sum;\n}\n```\n\n## Creating workers for time-consuming task\n\n```ts\n// fibonacci.worker.js\nimport { createWorker } from 'web-worker-helper';\nimport { fibonacci } from './fibonacci';\n\ncreateWorker(async (data: number) => {\n  const result = fibonacci(data);\n  return result;\n});\n```\n\n## Bundle worker\n\n## Main thread call worker\n\n1. parse worker\n\n```ts\nimport { WorkerFarm } from 'web-worker-helper';\n\nexport async function parseWorker(\n  workerName: string,\n  data: any,\n  options?: Record<string, any> = { maxConcurrency: 3, reuseWorkers: true }\n) {\n  const url = getWorkerURL({ name: workerName });\n  // const source = `fibonacci codeString`\n  const workerFarm = WorkerFarm.getWorkerFarm({\n    maxConcurrency: options.maxConcurrency,\n    reuseWorkers: options.reuseWorkers,\n  });\n  const workerPool = workerFarm.getWorkerPool({ name: workerName, url });\n  // const workerPool = workerFarm.getWorkerPool({ name: workerName, source });\n  const job = await workerPool.startJob(workerName, (job, type, data) => job.done(data));\n\n  job.postMessage('process', { input: data });\n\n  const result = await job.result;\n  return result.result;\n}\n```\n\n2. Call time-consuming task\n\n```ts\nimport { parseWorker } from './parse-worker';\nimport { fibonacci } from './fibonacci';\n\nexport async function starFibonacci(iskorker, data) {\n  if (iskorker) {\n    const result = await parseWorker('fibonacci-worker', data, {});\n    return result;\n  }\n\n  const result = await fibonacci(data);\n  return result;\n}\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/lvisei/web-worker-helper/issues"},"homepage":"https://github.com/lvisei/web-worker-helper#readme","_id":"web-worker-helper@0.0.4-beta.3","_integrity":"sha512-ps3UKNKaiitcpKnGdaD2mVTgMM/ql/7ZcrA6OH91VqC7Z54tV+9Vuz0B/15Jw1o/zZ/KOtCsIADxuWN1lg2aDA==","_resolved":"/tmp/ce4366439c7e2561d4529b3dcdfc6baf/web-worker-helper-0.0.4-beta.3.tgz","_from":"file:web-worker-helper-0.0.4-beta.3.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"integrity":"sha512-ps3UKNKaiitcpKnGdaD2mVTgMM/ql/7ZcrA6OH91VqC7Z54tV+9Vuz0B/15Jw1o/zZ/KOtCsIADxuWN1lg2aDA==","shasum":"eeda8413576b6d7ff5c69a6e740aef91a6c6d8e5","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.4-beta.3.tgz","fileCount":101,"unpackedSize":410160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCZMNsi9KESzabi0ADjjBZqG6Jr/8cS7bxxkYkZOKSHOAIhAO2fZZ3KYwNeepdeX/ZC394bQFBRZzKOk6XdBLQfPP44"}]},"_npmUser":{"name":"lvisei","email":"yunji.me@outlook.com"},"directories":{},"maintainers":[{"name":"lvisei","email":"yunji.me@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.4-beta.3_1712457592723_0.97530268101255"},"_hasShrinkwrap":false},"0.0.4-beta.4":{"name":"web-worker-helper","version":"0.0.4-beta.4","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/lvisei/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":true,"devDependencies":{"@changesets/changelog-github":"^0.5.0","@changesets/cli":"^2.27.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^4.14.0","tape":"^5.3.1","tape-promise":"^4.0.0","tslib":"^2.6.2","typedoc":"^0.25.12","typescript":"^5.4.4"},"engines":{"node":">=18","pnpm":">=8"},"scripts":{"lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"pnpm clean && pnpm run '/^build:.*/'","build:cjs":"tsc -p tsconfig.json --declaration --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --declaration --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.mjs","changeset":"changeset add","publish-version":"changeset version && node scripts/sync-version.mjs","publish-package":"pnpm build && changeset publish"},"readme":"# web-worker-helper\n\n> Forked from [@loaders.gl/worker-utils](https://github.com/visgl/loaders.gl/blob/master/modules/worker-utils/README.md) implementation\n\n## Time consuming task\n\n```ts\n// fibonacci.js\nexport function fibonacci(n: number) {\n  let n1 = 1,\n    n2 = 1,\n    sum = 1;\n  for (let i = 3; i <= n; i += 1) {\n    sum = n1 + n2;\n    n1 = n2;\n    n2 = sum;\n  }\n  return sum;\n}\n```\n\n## Creating workers for time-consuming task\n\n```ts\n// fibonacci.worker.js\nimport { createWorker } from 'web-worker-helper';\nimport { fibonacci } from './fibonacci';\n\ncreateWorker(async (data: number) => {\n  const result = fibonacci(data);\n  return result;\n});\n```\n\n## Bundle worker\n\n## Main thread call worker\n\n1. parse worker\n\n```ts\nimport { WorkerFarm } from 'web-worker-helper';\n\nexport async function parseWorker(\n  workerName: string,\n  data: any,\n  options?: Record<string, any> = { maxConcurrency: 3, reuseWorkers: true }\n) {\n  const url = getWorkerURL({ name: workerName });\n  // const source = `fibonacci codeString`\n  const workerFarm = WorkerFarm.getWorkerFarm({\n    maxConcurrency: options.maxConcurrency,\n    reuseWorkers: options.reuseWorkers,\n  });\n  const workerPool = workerFarm.getWorkerPool({ name: workerName, url });\n  // const workerPool = workerFarm.getWorkerPool({ name: workerName, source });\n  const job = await workerPool.startJob(workerName, (job, type, data) => job.done(data));\n\n  job.postMessage('process', { input: data });\n\n  const result = await job.result;\n  return result.result;\n}\n```\n\n2. Call time-consuming task\n\n```ts\nimport { parseWorker } from './parse-worker';\nimport { fibonacci } from './fibonacci';\n\nexport async function starFibonacci(iskorker, data) {\n  if (iskorker) {\n    const result = await parseWorker('fibonacci-worker', data, {});\n    return result;\n  }\n\n  const result = await fibonacci(data);\n  return result;\n}\n```\n","readmeFilename":"README.md","bugs":{"url":"https://github.com/lvisei/web-worker-helper/issues"},"homepage":"https://github.com/lvisei/web-worker-helper#readme","_id":"web-worker-helper@0.0.4-beta.4","_integrity":"sha512-Yi8UoB/BDopRaPtkhHSp07jVL1H4GYDDc8JYzA3V0guIGb2svoaeAJuGnd3VeEtgOp5KAr5CXLLwVcOR6pw4wg==","_resolved":"/tmp/05bd73c4aacd99e960a1e6fa4540850e/web-worker-helper-0.0.4-beta.4.tgz","_from":"file:web-worker-helper-0.0.4-beta.4.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"integrity":"sha512-Yi8UoB/BDopRaPtkhHSp07jVL1H4GYDDc8JYzA3V0guIGb2svoaeAJuGnd3VeEtgOp5KAr5CXLLwVcOR6pw4wg==","shasum":"de12908317778f06daa105aa693937b999b217a8","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.4-beta.4.tgz","fileCount":101,"unpackedSize":410160,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBINiWze39j421pxROAYaqMSYM0B+xQ5KqEKvH7VCoOIAiAtC4iDttzMBiJe0ZymRIxKPYSLAcESuKaszZxagBdbww=="}]},"_npmUser":{"name":"lvisei","email":"yunji.me@outlook.com"},"directories":{},"maintainers":[{"name":"lvisei","email":"yunji.me@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.4-beta.4_1712458883794_0.7178252863489227"},"_hasShrinkwrap":false},"0.0.4":{"name":"web-worker-helper","version":"0.0.4","description":"Utilities for running tasks on worker threads","license":"MIT","repository":{"type":"git","url":"git+https://github.com/lvisei/web-worker-helper.git"},"keywords":["worker","process","thread"],"main":"dist/lib/index.js","types":"dist/lib/index.d.ts","module":"dist/esm/index.js","unpkg":"dist/umd/web-worker-helper.js","sideEffects":true,"devDependencies":{"@changesets/changelog-github":"^0.5.0","@changesets/cli":"^2.27.1","@rollup/plugin-terser":"^0.4.4","@rollup/plugin-typescript":"^11.1.6","@typescript-eslint/eslint-plugin":"^5.0.0","@typescript-eslint/parser":"^5.0.0","eslint":"^8.0.0","eslint-config-prettier":"^8.3.0","eslint-plugin-prettier":"^4.0.0","husky":"^7.0.0","lint-staged":"^11.2.3","prettier":"^2.4.1","rimraf":"^3.0.2","rollup":"^4.14.0","tape":"^5.3.1","tape-promise":"^4.0.0","tslib":"^2.6.2","typedoc":"^0.25.12","typescript":"^5.4.4"},"engines":{"node":">=18","pnpm":">=8"},"scripts":{"lint":"eslint src __tests__ --ext .js,.ts","lint-fix":"eslint src __tests__ --ext .js,.ts --fix","prettier":"prettier src __tests__ -c -w","typedoc":"typedoc","clean":"rimraf dist","build":"pnpm clean && pnpm run '/^build:.*/'","build:cjs":"tsc -p tsconfig.json --declaration --module CommonJS --outDir dist/lib","build:esm":"tsc -p tsconfig.json --declaration --module ESNext --outDir dist/esm","build:umd":"rollup -c scripts/rollup.config.mjs","changeset":"changeset add","publish-version":"changeset version && node scripts/sync-version.mjs","publish-package":"pnpm build && changeset publish"},"bugs":{"url":"https://github.com/lvisei/web-worker-helper/issues"},"homepage":"https://github.com/lvisei/web-worker-helper#readme","_id":"web-worker-helper@0.0.4","_integrity":"sha512-v6gepVyq/UxsO//mZXU4tPPpLEA9eVhP3r9ObrqX/1xwd/AzpUTOox0gQatUBXiZ62t3FPghVENkp0Ju69dn6g==","_resolved":"/tmp/209fa5795fb79ffb577ada14b9d62a30/web-worker-helper-0.0.4.tgz","_from":"file:web-worker-helper-0.0.4.tgz","_nodeVersion":"18.20.0","_npmVersion":"10.5.0","dist":{"integrity":"sha512-v6gepVyq/UxsO//mZXU4tPPpLEA9eVhP3r9ObrqX/1xwd/AzpUTOox0gQatUBXiZ62t3FPghVENkp0Ju69dn6g==","shasum":"27a88527bebf0f4746a03f0fc3b592fbf0668e44","tarball":"https://registry.npmjs.org/web-worker-helper/-/web-worker-helper-0.0.4.tgz","fileCount":101,"unpackedSize":410104,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIBN+2ur0wZbMpQCNjvVZGNFv2mVNTEdK4wlgSWTjE82+AiAshVcdu4JwEnT+v74cIVr7mV3hK8ryx7g5K3SFiF7kYg=="}]},"_npmUser":{"name":"lvisei","email":"yunji.me@outlook.com"},"directories":{},"maintainers":[{"name":"lvisei","email":"yunji.me@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/web-worker-helper_0.0.4_1712461225115_0.7282830832645277"},"_hasShrinkwrap":false}},"time":{"created":"2022-01-24T09:10:54.881Z","0.0.1":"2022-01-24T09:10:55.221Z","modified":"2024-04-07T03:40:25.425Z","0.0.2":"2022-02-17T15:17:04.274Z","0.0.3":"2022-07-18T09:56:08.292Z","0.0.4-beta.0":"2024-04-06T17:58:54.223Z","0.0.4-beta.1":"2024-04-06T18:05:34.856Z","0.0.4-beta.2":"2024-04-07T02:17:12.892Z","0.0.4-beta.3":"2024-04-07T02:39:52.945Z","0.0.4-beta.4":"2024-04-07T03:01:23.968Z","0.0.4":"2024-04-07T03:40:25.262Z"},"maintainers":[{"name":"lvisei","email":"yunji.me@outlook.com"}],"description":"Utilities for running tasks on worker threads","homepage":"https://github.com/lvisei/web-worker-helper#readme","keywords":["worker","process","thread"],"repository":{"type":"git","url":"git+https://github.com/lvisei/web-worker-helper.git"},"bugs":{"url":"https://github.com/lvisei/web-worker-helper/issues"},"license":"MIT","readme":"# web-worker-helper\n\n> Forked from [@loaders.gl/worker-utils](https://github.com/visgl/loaders.gl/blob/master/modules/worker-utils/README.md) implementation\n\n## Time consuming task\n\n```ts\n// fibonacci.js\nexport function fibonacci(n: number) {\n  let n1 = 1,\n    n2 = 1,\n    sum = 1;\n  for (let i = 3; i <= n; i += 1) {\n    sum = n1 + n2;\n    n1 = n2;\n    n2 = sum;\n  }\n  return sum;\n}\n```\n\n## Creating workers for time-consuming task\n\n```ts\n// fibonacci.worker.js\nimport { createWorker } from 'web-worker-helper';\nimport { fibonacci } from './fibonacci';\n\ncreateWorker(async (data: number) => {\n  const result = fibonacci(data);\n  return result;\n});\n```\n\n## Bundle worker\n\n## Main thread call worker\n\n1. parse worker\n\n```ts\nimport { WorkerFarm } from 'web-worker-helper';\n\nexport async function parseWorker(\n  workerName: string,\n  data: any,\n  options?: Record<string, any> = { maxConcurrency: 3, reuseWorkers: true }\n) {\n  const url = getWorkerURL({ name: workerName });\n  // const source = `fibonacci codeString`\n  const workerFarm = WorkerFarm.getWorkerFarm({\n    maxConcurrency: options.maxConcurrency,\n    reuseWorkers: options.reuseWorkers,\n  });\n  const workerPool = workerFarm.getWorkerPool({ name: workerName, url });\n  // const workerPool = workerFarm.getWorkerPool({ name: workerName, source });\n  const job = await workerPool.startJob(workerName, (job, type, data) => job.done(data));\n\n  job.postMessage('process', { input: data });\n\n  const result = await job.result;\n  return result.result;\n}\n```\n\n2. Call time-consuming task\n\n```ts\nimport { parseWorker } from './parse-worker';\nimport { fibonacci } from './fibonacci';\n\nexport async function starFibonacci(iskorker, data) {\n  if (iskorker) {\n    const result = await parseWorker('fibonacci-worker', data, {});\n    return result;\n  }\n\n  const result = await fibonacci(data);\n  return result;\n}\n```\n","readmeFilename":"README.md"}