{"id":13499561,"url":"https://github.com/burner/graphqld","last_synced_at":"2025-07-15T14:30:56.977Z","repository":{"id":44747386,"uuid":"99820784","full_name":"burner/graphqld","owner":"burner","description":"A vibe.d library to handle the GraphQL Protocol written in the D Programming Language","archived":false,"fork":false,"pushed_at":"2025-03-07T10:14:54.000Z","size":1014,"stargazers_count":35,"open_issues_count":7,"forks_count":9,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-09T05:12:14.076Z","etag":null,"topics":["d","dlang","graphql","vibe-d"],"latest_commit_sha":null,"homepage":null,"language":"D","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/burner.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":"2017-08-09T14:58:40.000Z","updated_at":"2025-03-07T10:15:00.000Z","dependencies_parsed_at":"2023-02-09T03:05:17.144Z","dependency_job_id":"bb60df0e-2b55-40f1-9576-6211512fe2d4","html_url":"https://github.com/burner/graphqld","commit_stats":null,"previous_names":[],"tags_count":91,"template":false,"template_full_name":null,"purl":"pkg:github/burner/graphqld","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/burner%2Fgraphqld","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/burner%2Fgraphqld/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/burner%2Fgraphqld/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/burner%2Fgraphqld/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/burner","download_url":"https://codeload.github.com/burner/graphqld/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/burner%2Fgraphqld/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265437841,"owners_count":23765141,"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":["d","dlang","graphql","vibe-d"],"created_at":"2024-07-31T22:00:35.132Z","updated_at":"2025-07-15T14:30:56.654Z","avatar_url":"https://github.com/burner.png","language":"D","readme":"# GraphqlD: A graphql implementation for the D Programming language\n\n![CI](https://github.com/burner/graphqld/workflows/ci/badge.svg)\n\nGraphql is a query language for apis.\nGiven a query like for the schema in folder test.\n\n```\n{\n  shipsselection(ids:[44,45]) {\n    id\n    commander {\n      name\n    }\n  }\n}\n```\n\nYou get back json that looks like:\n```JS\n{\n  \"error\": [],\n  \"data\": {\n    \"shipsselection\": [\n      {\n        \"id\": 44,\n        \"commander\": {\n          \"name\": \"Kathryn Janeway\"\n        }\n      },\n      {\n        \"id\": 45,\n        \"commander\": {\n          \"name\": \"Jonathan Archer\"\n        }\n      }\n    ]\n  }\n}\n```\n\nGraphiql type-ahead works, this makes schema introspection a lot nicer.\n\n## Features\nThis graphql implementation is based on June 2018 spec.\n\n### Operation Execution\n- [x] Scalars\n- [x] Objects\n- [x] Lists of objects/interfaces\n- [x] Interfaces\n- [x] Unions\n- [x] Arguments\n- [x] Variables\n- [x] Fragments\n- [x] Directives\n  - [x] Include\n  - [x] Skip\n  - [?] Custom (Requires changing the graphqld source)\n- [x] Enumerations\n- [x] Input Objects\n- [x] Mutations\n- [ ] Subscriptions (This needs vibe.d websocket integration)\n- [x] Async execution (when used with vibe.d blocking resolver are async by\n  default)\n\n### Validation\n- [ ] Arguments of correct type\n- [ ] Default values of correct type\n- [x] Fields on correct type\n- [x] Fragments on composite types\n- [X] Known argument names\n- [x] Executable Definition\n- [ ] Known directives\n- [x] Known fragment names\n- [x] Known type names\n- [x] Lone anonymous operations\n- [x] No fragment cycles\n- [x] No undefined variables\n- [x] No unused fragments\n- [x] No unused variables\n- [x] Overlapping fields can be merged (this is done during execution)\n- [x] Possible fragment spreads\n- [ ] Provide non-null arguments\n- [x] Scalar leafs\n- [x] Unique argument names\n- [x] Unique directives per location\n- [x] Unique fragment names\n- [x] Unique input field names\n- [x] Unique operation names\n- [x] Unique variable names\n- [ ] Variables are input types (this is actually a strange requirement)\n- [x] Variables in allowed position\n- [x] Single root field\n\n### Schema Introspection\n- [x] __typename\n- [x] __type\n  - [x] name\n  - [x] kind\n  - [x] description\n  - [x] fields\n  - [x] interfaces\n  - [x] possibleTypes\n  - [x] enumValues\n  - [x] inputFields\n  - [x] ofType\n- [x] __schema\n  - [x] types\n  - [x] queryType\n  - [x] mutationType\n  - [x] subscriptionType\n  - [x] directives\n\n### Comfort Features\n- [ ] Query AST cache\n- [ ] Json to resolver argument extractor\n- [ ] SQL query generation from AST\n- [x] Custom Leaf types (e.g. GQLDCustomLeaf!(std.datetime.DateTime))\n\nThank you to [graphql-dot](https://github.com/graphql-dotnet/graphql-dotnet)\nfor the excelent list of features\n\n## Documentation\nThe Documentation is still WIP, please have a look at the vibe.d project in the\ntest folder.\nThis [file](test/source/app.d:430) gives a good overview on how to use graphqld\nwith vibe.d.\n\n## Contributing\nPRs are always welcome!\n\n# About Kaleidic Associates\nWe are a boutique consultancy that advises a small number of hedge fund clients.  We are\nnot accepting new clients currently, but if you are interested in working either remotely\nor locally in London or Hong Kong, and if you are a talented hacker with a moral compass\nwho aspires to excellence then feel free to drop me a line: laeeth at kaleidic.io\n\nWe work with our partner Symmetry Investments, and some background on the firm can be\nfound here:\n\nhttp://symmetryinvestments.com/about-us/\n","funding_links":[],"categories":["Libraries","Implementations"],"sub_categories":["D (dlang) Libraries","D (dlang)"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburner%2Fgraphqld","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fburner%2Fgraphqld","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fburner%2Fgraphqld/lists"}