{"id":15015926,"url":"https://github.com/josemarluedke/glimmer-apollo","last_synced_at":"2025-04-05T21:05:53.413Z","repository":{"id":39028548,"uuid":"348898097","full_name":"josemarluedke/glimmer-apollo","owner":"josemarluedke","description":"Ember and Glimmer integration for Apollo Client.","archived":false,"fork":false,"pushed_at":"2025-01-20T16:45:16.000Z","size":3480,"stargazers_count":40,"open_issues_count":16,"forks_count":15,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-29T20:03:21.839Z","etag":null,"topics":["apollo-client","apollographql","ember","ember-addon","emberjs","glimmer","graphql","hacktoberfest"],"latest_commit_sha":null,"homepage":"https://glimmer-apollo.com","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/josemarluedke.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","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-03-18T01:03:01.000Z","updated_at":"2025-03-17T22:32:42.000Z","dependencies_parsed_at":"2024-06-21T07:12:29.412Z","dependency_job_id":"a289e72d-6ffc-4e0f-93a8-4bc01ef5f92f","html_url":"https://github.com/josemarluedke/glimmer-apollo","commit_stats":{"total_commits":257,"total_committers":12,"mean_commits":"21.416666666666668","dds":"0.12840466926070038","last_synced_commit":"602074ed6fe6b911cedc6f57c6428cffddbc0d5e"},"previous_names":[],"tags_count":20,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josemarluedke%2Fglimmer-apollo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josemarluedke%2Fglimmer-apollo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josemarluedke%2Fglimmer-apollo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/josemarluedke%2Fglimmer-apollo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/josemarluedke","download_url":"https://codeload.github.com/josemarluedke/glimmer-apollo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247399871,"owners_count":20932876,"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":["apollo-client","apollographql","ember","ember-addon","emberjs","glimmer","graphql","hacktoberfest"],"created_at":"2024-09-24T19:48:09.624Z","updated_at":"2025-04-05T21:05:53.375Z","avatar_url":"https://github.com/josemarluedke.png","language":"TypeScript","funding_links":[],"categories":["Libraries"],"sub_categories":["Data Management"],"readme":"\u003cimg width=\"978\" alt=\"github-readme\" src=\"https://user-images.githubusercontent.com/230476/123694510-442eed80-d80e-11eb-8e8b-7ff3d8a0597a.jpg\"\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/josemarluedke/glimmer-apollo/actions?query=workflow%3ACI\"\u003e\u003cimg src=\"https://github.com/josemarluedke/glimmer-apollo/workflows/CI/badge.svg\" alt=\"Build Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/josemarluedke/glimmer-apollo/blob/main/LICENSE.md\"\u003e\u003cimg src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"GitHub license\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\nGlimmer Apollo: Ember and Glimmer integration for Apollo Client.\n\n## Documentation\n\nVisit [glimmer-apollo.com](https://glimmer-apollo.com/) to read the docs.\n\n\n## Compatibility\n\n- Apollo Client v3.0 or above\n- GlimmerX v0.6 or above\n- Node.js v12 or above\n- FastBoot 1.0+\n\n## Ember Requirements\n\n- Embroider or ember-auto-import v2.\n- Ember.js v3.27 or above\n- Ember CLI v2.13 or above\n\n## API\n\n\n### useQuery(ctx, args)\n\n```js\nimport Component, { hbs, tracked } from '@glimmerx/component';\nimport { on, action } from '@glimmerx/modifier';\nimport { useQuery, gql } from 'glimmer-apollo';\nimport Todo from './todo';\n\nexport default class Todos extends Component {\n  @tracked isDone = false;\n\n  todos = useQuery(this, () =\u003e [\n    gql`\n      query($isDone: Boolean) {\n        todos(isDone: $isDone) {\n          id\n          description\n        }\n      }\n    `,\n    {\n      variables: { isDone: this.isDone }\n    }\n  ]);\n\n  @action toggleDone() {\n    this.isDone = !this.isDone;\n  }\n\n  static template = hbs`\n    \u003cbutton {{on \"click\" this.toggleDone}}\u003eToggle completed todos\u003c/button\u003e\n\n    {{#if this.todos.loading}}\n      Loading...\n    {{/if}}\n\n    {{#each this.todos.data as |todo|}}\n      \u003cTodo @todo={{todo}} /\u003e\n    {{/each}}\n  `;\n}\n```\n\n### useMutation(ctx, args)\n\n```js\nimport Component, { hbs } from '@glimmerx/component';\nimport { on } from '@glimmerx/modifier';\nimport { useMutation, gql } from 'glimmer-apollo';\n\nexport default class Todo extends Component {\n  deleteTodo = useMutation(this, () =\u003e [\n    gql`\n      mutation($id: ID!) {\n        deleteTodo(id: $id) {\n          id\n        }\n      }\n    `,\n    { variables: { id: this.args.todo.id } }\n  ]);\n\n  static template = hbs`\n    \u003cdiv\u003e\n      {{@todo.description}}\n      \u003cbutton\n        {{on \"click\" this.deleteTodo.mutate}}\n        disabled={{this.deleteTodo.loading}}\n      \u003e\n        {{#if this.deleteTodo.loading}}\n          Deleting...\n        {{else}}\n          Delete\n        {{/if}}\n      \u003c/button\u003e\n    \u003c/div\u003e\n  `;\n}\n```\n\n### useSubscription(ctx, args)\n\n```js\nimport Component, { hbs, tracked } from '@glimmerx/component';\nimport { on } from '@glimmerx/modifier';\nimport { useSubscription, gql } from 'glimmer-apollo';\n\nexport default class Messages extends Component {\n  @tracked receivedMessages = [];\n\n  messageAdded = useSubscription(this, () =\u003e [\n    gql`\n      subscription ($channel: String!) {\n        messageAdded(channel: $channel) {\n          id\n          message\n        }\n      }\n    `,\n    {\n      variables: { channel: this.args.channel },\n      onData: (data) =\u003e {\n        this.receivedMessages = [\n          ...this.receivedMessages,\n          data.messageAdded\n        ]\n      }\n    }\n  ]);\n\n  static template = hbs`\n    \u003cdiv\u003e\n      {{#if this.messageAdded.loading}}\n        Connecting...\n      {{/if}}\n\n      {{#each this.receivedMessages as |item|}}\n        {{item.message}}\n      {{/each}}\n    \u003c/div\u003e\n  `;\n}\n```\n\n### setClient(ctx, client[, clientId])\n\nWhere `ctx` is an object with owner.\n\n```js\nimport { setClient } from 'glimmer-apollo';\nimport { ApolloClient } from '@apollo/client/core';\n\nclass App extends Component {\n  constructor() {\n    super(...arguments);\n\n    setClient(this, new ApolloClient({ ... });\n  }\n\n  // ...\n}\n```\n\n### getClient(ctx[,clientId])\n\nWhere `ctx` is an object with owner.\n\n```js\nimport { getClient } from 'glimmer-apollo';\n\nclass MyComponent extends Component {\n  constructor() {\n    super(...arguments);\n\n    const client = getClient(this);\n  }\n\n  // ...\n}\n```\n\n## License\n\nThis project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosemarluedke%2Fglimmer-apollo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjosemarluedke%2Fglimmer-apollo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjosemarluedke%2Fglimmer-apollo/lists"}