{"id":23703590,"url":"https://github.com/mrshoenel/orchestration-tools","last_synced_at":"2025-09-03T08:32:23.296Z","repository":{"id":31492503,"uuid":"127942981","full_name":"MrShoenel/orchestration-tools","owner":"MrShoenel","description":"Common tools that help building an infrastructure or to orchestrate resources.","archived":false,"fork":false,"pushed_at":"2024-06-16T14:43:30.000Z","size":2136,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-12-23T15:40:48.920Z","etag":null,"topics":["cache","calendar","cronjob","dictionary","generic","infrastructure","job-scheduler","jsdoc","observable","orchestrate-resources","orchestration","parallel-computing","parallelism","process","process-pipelining","progress","queue","queue-tasks","stack"],"latest_commit_sha":null,"homepage":"","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/MrShoenel.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-04-03T17:19:35.000Z","updated_at":"2024-06-16T14:43:31.000Z","dependencies_parsed_at":"2024-06-21T04:10:40.099Z","dependency_job_id":null,"html_url":"https://github.com/MrShoenel/orchestration-tools","commit_stats":{"total_commits":352,"total_committers":5,"mean_commits":70.4,"dds":"0.27840909090909094","last_synced_commit":"047931d73c0dd43f476071f56a512d67d600f6da"},"previous_names":[],"tags_count":80,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrShoenel%2Forchestration-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrShoenel%2Forchestration-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrShoenel%2Forchestration-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MrShoenel%2Forchestration-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MrShoenel","download_url":"https://codeload.github.com/MrShoenel/orchestration-tools/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":231861255,"owners_count":18437346,"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":["cache","calendar","cronjob","dictionary","generic","infrastructure","job-scheduler","jsdoc","observable","orchestrate-resources","orchestration","parallel-computing","parallelism","process","process-pipelining","progress","queue","queue-tasks","stack"],"created_at":"2024-12-30T13:06:51.408Z","updated_at":"2024-12-30T13:06:52.174Z","avatar_url":"https://github.com/MrShoenel.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# OrchestrationTools\nCollection of `orchestration-tools` that help building an infrastructure or to orchestrate resources through NodeJS. Also comes with universal tools such as collections.\n\n|Version|Coverage|Master|Vulnerabilities|\n|:-|:-|:-|:-|\n|[![Current Version](https://img.shields.io/npm/v/sh.orchestration-tools.svg)](https://www.npmjs.com/package/sh.orchestration-tools) [![Weekly Downloads](https://img.shields.io/npm/dt/sh.orchestration-tools)](https://www.npmjs.com/package/sh.orchestration-tools)|[![Coverage Status](https://coveralls.io/repos/github/MrShoenel/orchestration-tools/badge.svg?branch=master)](https://coveralls.io/github/MrShoenel/orchestration-tools?branch=master)|[![Build Status](https://github.com/MrShoenel/orchestration-tools/workflows/Node.js%20CI/badge.svg?branch=master)](https://github.com/MrShoenel/orchestration-tools/actions?query=workflow%3A%22Node.js+CI%22)|[![Vulnerabilities](https://snyk.io/test/github/MrShoenel/orchestration-tools/badge.svg)](https://snyk.io/test/github/MrShoenel/orchestration-tools)|\n\n\n\n## Install from npm\nThis package can be installed using the following command: `npm install sh.orchestration-tools`.\n\n## JSDoc\n\nThe tools come fully typed in JSDoc, and the documentation for all released versions can also be found here: \u003chttps://mrshoenel.github.io/rchestration-tools/\u003e.\n\n## Current list of included tools\n* __Job__ - a class that can encapsulate and represent any (asynchronous) work. Supports `Promise`-based work, enhanced states, simple eventing and progress. As of `v2.1.0`, __JobWithCost__ has been removed and cost is now supported by Job.\n* __JobQueue__ - a queue that supports parallel jobs with free degree of parallelism.\n* __JobQueueCapabilities__ - an extension to the `JobQueue` that can manage and run jobs based on their cost, rather than on plain parallelism.\n* __Progress__ - a class used to report any kind of (generic) progress. Supports callbacks, events and `Observables` through `RxJS`.\n* __ProgressNumeric__ - an extension (and simplification) of `Progress` especially for numeric progress.\n* __IntervalScheduler__ and __Interval__ provide a scheduling mechanism to schedule using timeouts or intervals (new in `v1.6.0`). Also, the schedulers now have a common base-class (`Scheduler`) and their schedules have one, too (`Schedule`).\n* __ProcessWrapper__ and related classes (such as `ProcessResult` and `ProcessOutput`) to encapsulate child processes and let them run as `Promises` or `Obervable`s (since `v1.8.0`).\n* __Resolve__ - a class containing helpers to determine types of variables and to resolve functions and `Promise`s to values of any type (since `v2.6.0`).\n* __ManualScheduler__ and __ManualSchedule__ provide mechanisms that align with the scheduler-concept and allow to trigger events manually (since `v2.7.0`).\n* __Collection__, __Queue__, __ConstrainedQueue__ (a queue with limited size), __ProducerConsumerQueue__ (a queue where producers add (defer if full) and consumers obtain items (defer if empty), since `v2.30.0`), __Stack__, __ConstrainedStack__ (a stack with limited size, since `v2.28.0`) and __LinkedList__\\*/__LinkedListNode__\\* provide fully tested collections that are often needed in JavaScript (since `v2.9.0`/\\*`v2.10.0`)\n* __Dictionary__ and __Cache__ (which extends it) are fully generic dictionaries that support strings and `Symbol`s as keys. __Cache__ is a capacity-constrained dictionary that supports eviction-policies such as `LRU/MRU`, `LFU/MFU`, `FIFO/LIFO` etc. Also, it supports eviction based on an optional timeout per value (like a weak map) (since `v2.21.0`; both are deprecated, use __DictionaryMapBased__ and __CacheMapBased__ instead as of `v2.22.0`)\n* __CacheWithLoad__, an extension of __CacheMapBased__ that introduces a second concept of size constrainment based on a load (since `v2.22.0`).\n* __EqualityComparer__ and __DefaultEqualityComparer__ are used within the *collections* to provide default- and custom-capabilities for comparing items (since `v2.9.0`)\n* __Comparer__ and __DefaultComparer__ to equate items in terms of size (e.g. for sorting) (since `v2.10.0`)\n* __formatValue__, __formatError__, __wrapError__ and __throwError__ are the first of new tools for values and Errors (since `v2.19.0`)\n* __Resource__ and __ResourceSelector__ are used to build pools of resources and to select from them using a strategy, such as least recently used, or Round Robin etc. (since `v3.3.0`)\n* ~~__CalendarScheduler__ and __Calendar__ provide mechanism to schedule jobs based on `iCal`-calendars from any source (new in `v1.4.0`).~~ These were __removed beginning with `v3.0.0`__ and are now to be found in the package __`sh.misc-tools`__.\n\n\n## Breaking changes \n\n* Between `v1.8.0` and `v2.0.0` there were breaking changes regarding `Progress` itself and how it is handled in conjunction with `Job`. If you therefore need to stick with `v1.x.x`, please use the latest stable from the `master-pre-v2.0.0`-branch.\n* Calendar-related tools and its Scheduler were removed in version `v3.0.0` and have been moved into the package `sh.misc-tools` (available via npm [![npm install sh.misc-tools](https://img.shields.io/npm/v/sh.misc-tools.svg)](https://www.npmjs.com/package/sh.misc-tools)).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrshoenel%2Forchestration-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmrshoenel%2Forchestration-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmrshoenel%2Forchestration-tools/lists"}