{"id":25474662,"url":"https://github.com/0xjohnnyboy/spider-query-builder","last_synced_at":"2025-09-04T02:37:59.919Z","repository":{"id":37785312,"uuid":"417532506","full_name":"0xJohnnyboy/spider-query-builder","owner":"0xJohnnyboy","description":"Builds a queryparams string for interactions with API Platform based backend","archived":false,"fork":false,"pushed_at":"2022-12-09T14:55:09.000Z","size":252,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-16T07:35:51.799Z","etag":null,"topics":["angular","api-platform","api-rest","javascript","query-builder","queryparams","typescript","typescript-library"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/0xJohnnyboy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-10-15T14:38:24.000Z","updated_at":"2023-03-22T20:31:18.000Z","dependencies_parsed_at":"2023-01-25T14:15:14.456Z","dependency_job_id":null,"html_url":"https://github.com/0xJohnnyboy/spider-query-builder","commit_stats":null,"previous_names":["0xjohnnyboy/spider-query-builder","sonicfury/spider-query-builder"],"tags_count":21,"template":false,"template_full_name":null,"purl":"pkg:github/0xJohnnyboy/spider-query-builder","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xJohnnyboy%2Fspider-query-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xJohnnyboy%2Fspider-query-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xJohnnyboy%2Fspider-query-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xJohnnyboy%2Fspider-query-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/0xJohnnyboy","download_url":"https://codeload.github.com/0xJohnnyboy/spider-query-builder/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/0xJohnnyboy%2Fspider-query-builder/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":273542825,"owners_count":25124223,"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-09-04T02:00:08.968Z","response_time":61,"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":["angular","api-platform","api-rest","javascript","query-builder","queryparams","typescript","typescript-library"],"created_at":"2025-02-18T11:30:50.255Z","updated_at":"2025-09-04T02:37:59.878Z","avatar_url":"https://github.com/0xJohnnyboy.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"```\n           _     _                                       _           _ _     _\n          (_)   | |                                     | |         (_| |   | |\n ___ _ __  _  __| | ___ _ __  __ _ _   _  ___ _ __ _   _| |__  _   _ _| | __| | ___ _ __\n/ __| '_ \\| |/ _` |/ _ | '__ / _` | | | |/ _ | '__| | | | '_ \\| | | | | |/ _` |/ _ | '__|\n\\__ | |_) | | (_| |  __| |  | (_| | |_| |  __| |  | |_| | |_) | |_| | | | (_| |  __| |\n|___| .__/|_|\\__,_|\\___|_|   \\__, |\\__,_|\\___|_|   \\__, |_.__/ \\__,_|_|_|\\__,_|\\___|_|\n    | |                         | |                 __/\n    |_|                         |_|                |___/\n```\n\n\n[![GitHub Release](https://github-basic-badges.herokuapp.com/release/Sonicfury/spider-query-builder.svg)]()\n[![GitHub License](https://github-basic-badges.herokuapp.com/license/Sonicfury/spider-query-builder.svg)]()\n![test](https://github.com/sonicfury/spider-query-builder/actions/workflows/test.yml/badge.svg)\n![publish](https://github.com/sonicfury/spider-query-builder/actions/workflows/publish.yml/badge.svg)\n\n# Installation\n```bash\n$ npm i @sonicfury/spider-query-builder\n```\n\n# What it does\n\nThis typescript library is designed to help you interact between your front end app and your backend based on API Platform. It can\nhelp you build your query from a filters form with typing etc.\n\n# License\nThis project is under AGPL 3 License\n\n[See license](LICENSE)\n\n# How to\n\n[See docs](docs/docs.md)\n## Example\nSay you have a DomainService (`domain.service.ts` file) with the something like:\n\n```typescript\nclass DomainService extends AbstractService{\n    \n    getDomain(query: string): Observable\u003cHttpResponse\u003cDomain[]\u003e\u003e {\n        const url = `${this.baseUrl}/domain?${query}`;\n\n        return this.http.get\u003cDomain[]\u003e(url);\n    }\n}\n```\n\nAPI Platform has specific semantics for the built-in filters.\n\nWith this library, you have to build `SpiderParams` for each filter, like:\n\n```typescript\nimport {SpdrQueryBuilder} from \"./SpdrQueryBuilder\";\n\nconst qb = new SpdrQueryBuilder(); // initialize the builder\n\nqb\n    .exists('username', true) // wether the property 'username' exists\n    .search('firstname', ['john']) // search for a 'john' firstname\n    .search('lastname', ['doe']) // search for a 'doe' lastname\n    .range('rank', 1, 200); // search for a result with rank between 1 and 200\n\n\nthis.domainService.getDomain(qb.query)\n    .subscribe(\n        // ...\n    )\n```\n\n`qb.query` will be formatted as `exists[username]=true\u0026firstname=john\u0026lastname=doe\u0026rank[between]=1..200`;\n\n# Issues\n\nFeel free to submit an issue if you find something wrong or if you feel some important feature is missing. Be sure to note the version you're using, and provide minimum context and information (as if you were on SO). \n# Contributing\n\nYou're welcome to contribute if you want. Just be sure to check [the guidelines](CONTRIBUTING.md)","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xjohnnyboy%2Fspider-query-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F0xjohnnyboy%2Fspider-query-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F0xjohnnyboy%2Fspider-query-builder/lists"}