{"id":16777044,"url":"https://github.com/fb55/binopsy","last_synced_at":"2025-03-17T02:31:36.787Z","repository":{"id":42627009,"uuid":"53796127","full_name":"fb55/binopsy","owner":"fb55","description":"Reimplementation of binary-parser supporting serialization and streaming","archived":false,"fork":false,"pushed_at":"2024-06-16T22:47:26.000Z","size":368,"stargazers_count":10,"open_issues_count":4,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-02-27T16:48:53.032Z","etag":null,"topics":["binary-data","binary-parser","serialization","stream"],"latest_commit_sha":null,"homepage":"https://feedic.com/binopsy/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/fb55.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2016-03-13T16:49:54.000Z","updated_at":"2024-05-27T06:48:23.000Z","dependencies_parsed_at":"2024-10-27T11:53:41.959Z","dependency_job_id":"aba199e0-fd99-422b-8aeb-96deca7a8191","html_url":"https://github.com/fb55/binopsy","commit_stats":{"total_commits":84,"total_committers":5,"mean_commits":16.8,"dds":"0.11904761904761907","last_synced_commit":"d1ea2c0a6614e7e5a9fc6abfbf4e713152e013d0"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fb55%2Fbinopsy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fb55%2Fbinopsy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fb55%2Fbinopsy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/fb55%2Fbinopsy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/fb55","download_url":"https://codeload.github.com/fb55/binopsy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243841125,"owners_count":20356440,"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":["binary-data","binary-parser","serialization","stream"],"created_at":"2024-10-13T07:11:45.532Z","updated_at":"2025-03-17T02:31:36.380Z","avatar_url":"https://github.com/fb55.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `binopsy`\n\nReimplementation of [keichi/binary-parser](https://github.com/keichi/binary-parser), supporting both streams and serialization.\n\nThe API is mainly the same as `binary-parser`'s, with a couple of additions and one removed method.\n\n## Dropped support for `.skip`\n\nDue to undefined behavior, `.skip` is not supported.\nAs a workaround the `.buffer` method can be used.\n\n## `.stream`\n\nThe `.stream` method returns a transform stream that reads incoming data and emits parser results.\nThe parser instance is looped until the end of the input is reached.\n\n## `.serialize`\n\nAs a counterpart to `binary-parser`'s `.parse` method, `.serialize` takes an object and returns a buffer representation of it.\nOptionally, an already allowcated buffer can be passed as a second argument.\n\n## `.fixedSizeNest`\n\n`.fixedSizeNest` is a variation of `nest` that ensures the nested parser reads a specific amount of bytes.\nFixed-size nested parsers are the only source of ambiguity remaining while serializing, as missing bytes are simply skipped.\nAnd error is thrown during serialization if the nested parser attempts to write more bytes than the size permits.\n\n## `formatter`s require a `deformatter`\n\nProperties with a specified formatting function need to also provide a `deformatter` function that restores the original value.\n\n## `flatten` option\n\nAs a very simple extension, the `flatten` option allows nested parsers to write to the current object.\nIts motivation is the aim for a flat output structure after `.choice` calls.\n\n## Bitfields can be (almost) infinitely long\n\nA relaxation from the 32 bit limit of `binary-parser`.\nAlso, a bug of the original project that leads to the `bit32` method always parsing [a value of `0`](https://github.com/keichi/binary-parser/issues/35) is not present.\n\n__License: MIT__\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffb55%2Fbinopsy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffb55%2Fbinopsy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffb55%2Fbinopsy/lists"}