{"id":22731349,"url":"https://github.com/sno2/feign","last_synced_at":"2025-04-14T00:36:10.524Z","repository":{"id":112568987,"uuid":"432834038","full_name":"sno2/feign","owner":"sno2","description":"[WIP] A parser combinator module for Deno with compile-time type parsing support.","archived":false,"fork":false,"pushed_at":"2022-01-19T05:16:53.000Z","size":26,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-27T14:51:54.549Z","etag":null,"topics":["deno","parser-combinators"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","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/sno2.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":"2021-11-28T21:54:30.000Z","updated_at":"2023-09-08T08:22:44.000Z","dependencies_parsed_at":"2023-05-16T08:45:22.218Z","dependency_job_id":null,"html_url":"https://github.com/sno2/feign","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sno2%2Ffeign","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sno2%2Ffeign/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sno2%2Ffeign/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sno2%2Ffeign/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sno2","download_url":"https://codeload.github.com/sno2/feign/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248802868,"owners_count":21163933,"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":["deno","parser-combinators"],"created_at":"2024-12-10T19:21:39.733Z","updated_at":"2025-04-14T00:36:10.518Z","avatar_url":"https://github.com/sno2.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# feign\n\nA parser combinator for Deno with compile-time string type parsing support\ninspired by [Rust's `nom` crate](https://crates.io/crates/nom).\n\n### 🚨 Deno Notice 🚨\n\nYou may get a `type is excessively large or infinite` error when using creating\ncomplex parsers in Deno. This is due to the use of long recursion when utilizing\nstring parsing. However, this error will resolve once Deno updates its\nTypeScript version to 4.5 with the introduction of\n[tail-end elimination in TypeScript conditionals for recursive types](https://devblogs.microsoft.com/typescript/announcing-typescript-4-5-beta/#tailrec-conditional).\nThe TypeScript version upgrade is expected to be released with Deno 1.17. A\npossible workaround is to abstract your parsers out into multiple parsers and\npassing the inputs between each of them.\n\n## Guide\n\n### Usage\n\nImport feign from Deno's Third Party Modules registry:\n\n```ts no-run\nimport {} from \"https://deno.land/x/feign/mod.ts\";\n```\n\n### Examples\n\n- [Identiifer](./examples/identiifer.ts)\n\n## Contributing\n\n### Linting\n\nMake sure you run the linter before pushing your code. We don't care about the\n`no-explicit-any` rule as it is required to cast to `any` to have conditional\nreturn types. Therefore, run the following command to lint the code:\n\n```sh\n$ deno lint --rules-exclude=no-explicit-any\n```\n\n### Building Utilities\n\nMake sure you add proper tests for both valid and invalid inputs along with\nincluding conditions such as when the input is a regular `string` type to ensure\ncorrect behavior.\n\n### Testing\n\nWe use the unstable built-in test nesting API for our tests so make sure you run\n`deno test` with the `--unstable` flag:\n\n```sh\n$ deno test --unstable\n```\n\n### Codebase Notes\n\n- Always return either `never` or an extension of `[string, any]` inside of\n  parser helper types or you will break a lot of code.\n\n## License\n\n[MIT](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsno2%2Ffeign","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsno2%2Ffeign","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsno2%2Ffeign/lists"}