{"id":13493540,"url":"https://github.com/metarhia/noroutine","last_synced_at":"2025-05-07T18:09:21.387Z","repository":{"id":42527664,"uuid":"420490752","full_name":"metarhia/noroutine","owner":"metarhia","description":"Goroutine analogue for Node.js, spreads I/O-bound routine calls to utilize thread pool (worker_threads) using balancer with event loop utilization. 🌱","archived":false,"fork":false,"pushed_at":"2024-01-11T16:13:47.000Z","size":152,"stargazers_count":121,"open_issues_count":9,"forks_count":11,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-05-07T18:08:25.672Z","etag":null,"topics":["balancer","concurrency","goroutine","metarhia","multithreading","parallel","routine","threads","workers"],"latest_commit_sha":null,"homepage":"https://metarhia.com","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/metarhia.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS"},"funding":{"patreon":"tshemsedinov"}},"created_at":"2021-10-23T18:22:33.000Z","updated_at":"2025-04-11T22:36:33.000Z","dependencies_parsed_at":"2023-12-19T01:01:16.015Z","dependency_job_id":"e8476b6f-96c5-418a-a8a1-66718d30f67e","html_url":"https://github.com/metarhia/noroutine","commit_stats":{"total_commits":36,"total_committers":5,"mean_commits":7.2,"dds":0.2222222222222222,"last_synced_commit":"614a6ab7ba0a6d311ec9bf34ed767166651266b5"},"previous_names":[],"tags_count":7,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metarhia%2Fnoroutine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metarhia%2Fnoroutine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metarhia%2Fnoroutine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/metarhia%2Fnoroutine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/metarhia","download_url":"https://codeload.github.com/metarhia/noroutine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252931536,"owners_count":21827111,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["balancer","concurrency","goroutine","metarhia","multithreading","parallel","routine","threads","workers"],"created_at":"2024-07-31T19:01:16.288Z","updated_at":"2025-05-07T18:09:21.345Z","avatar_url":"https://github.com/metarhia.png","language":"JavaScript","readme":"# Node Routine (noroutine)\n\n[![ci status](https://github.com/metarhia/noroutine/workflows/Testing%20CI/badge.svg)](https://github.com/metarhia/noroutine/actions?query=workflow%3A%22Testing+CI%22+branch%3Amaster)\n[![snyk](https://snyk.io/test/github/metarhia/noroutine/badge.svg)](https://snyk.io/test/github/metarhia/noroutine)\n[![npm version](https://badge.fury.io/js/noroutine.svg)](https://badge.fury.io/js/noroutine)\n[![npm downloads/month](https://img.shields.io/npm/dm/noroutine.svg)](https://www.npmjs.com/package/noroutine)\n[![npm downloads](https://img.shields.io/npm/dt/noroutine.svg)](https://www.npmjs.com/package/noroutine)\n[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/metarhia/noroutine/blob/master/LICENSE)\n\nGoroutine analogue for Node.js, spreads I/O-bound routine (tasks) to utilize\nthread pool with `worker_threads` using balancer with event loop utilization\n(see `perf_hooks` API).\n\n## Usage\n\nInstall: `npm install noroutine`\n\n```js\nconst noroutine = require('noroutine');\nconst module1 = require('./module1.js');\nconst module2 = require('./module2.js');\nnoroutine.init({ modules: [module1, module2] });\n\n(async () =\u003e {\n  const res1 = await module1.method1('value1');\n  const res2 = await module2.method2('value2');\n  console.log({ res1, res2 });\n})();\n```\n\n## Initialization options\n\n```js\nnoroutine.init({\n  modules: [module1, module2],\n  pool: 5, // number of workers in thread pool\n  wait: 2000, // maximum delay to wait for a free thread\n  timeout: 5000, // maximum timeout for executing a functions\n  monitoring: 5000, // event loop utilization monitoring interval\n});\n```\n\n## License \u0026 Contributors\n\nCopyright (c) 2021-2024 [Metarhia contributors](https://github.com/metarhia/noroutine/graphs/contributors).\nNoroutine is [MIT licensed](./LICENSE).\\\nNoroutine is a part of [Metarhia](https://github.com/metarhia) technology stack.\n","funding_links":["https://patreon.com/tshemsedinov"],"categories":["JavaScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetarhia%2Fnoroutine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmetarhia%2Fnoroutine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmetarhia%2Fnoroutine/lists"}