{"id":21497319,"url":"https://github.com/jazzfool/sinq","last_synced_at":"2025-08-02T09:33:00.097Z","repository":{"id":137122537,"uuid":"253396866","full_name":"jazzfool/sinq","owner":"jazzfool","description":"Multi-queue synchronizer","archived":false,"fork":false,"pushed_at":"2020-04-25T06:41:28.000Z","size":18,"stargazers_count":4,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-17T12:26:19.580Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jazzfool.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":"2020-04-06T04:45:43.000Z","updated_at":"2021-12-23T08:38:54.000Z","dependencies_parsed_at":null,"dependency_job_id":"dcf7393e-d720-4c93-89bc-4b71a68712b0","html_url":"https://github.com/jazzfool/sinq","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/jazzfool/sinq","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzfool%2Fsinq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzfool%2Fsinq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzfool%2Fsinq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzfool%2Fsinq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jazzfool","download_url":"https://codeload.github.com/jazzfool/sinq/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jazzfool%2Fsinq/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268362942,"owners_count":24238543,"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","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":[],"created_at":"2024-11-23T16:23:11.183Z","updated_at":"2025-08-02T09:33:00.066Z","avatar_url":"https://github.com/jazzfool.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sinq\n\n## Synchronised event queues\n\nBased upon `reclutch`, this library introduces a master record of the order of which events were emitted. This can then be used to update event listeners in the correct order.\n\n## What does it do?\n\nSuppose you have 3 objects containing an event queue and event listener; A, B and C.\n\nB and C both listen to A and in response push an event into their respective queues.\nAssume that B only responds to event X and C only responds to event Y.\n\nIf A emits two events, X and Y, in that order, the expected order is for B and C to emit *their* events, in that order.\n\nWhat if, however, C checks for events from A before B? C doesn't know about B or event X, it only cares about event Y, and as such has no concept that Y comes after X and therefore must wait it's turn before responding.\n\nThis is what leads to out-of-order events - a problem that occurs due to having a multi-queue system.\n\nSinq makes the aforementioned scenario impossible simply by keeping track of the order of events and using it to update the correct instances in the correct order.\n\nFor example, using the scenario already mentioned, instead of the application manually updating B and C, B and C are given to Sinq and Sinq will find the correct order and invoke updates accordingly.\n\n## License\n\nSinq is licensed under either\n\n- [Apache 2.0](https://www.apache.org/licenses/LICENSE-2.0)\n- [MIT](http://opensource.org/licenses/MIT)\n\nat your choosing.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjazzfool%2Fsinq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjazzfool%2Fsinq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjazzfool%2Fsinq/lists"}