Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add graphql-ws protocol support #2168

Merged
merged 21 commits into from
Feb 25, 2022
Merged

Conversation

calvincestari
Copy link
Member

@calvincestari calvincestari commented Feb 19, 2022

This introduces support for the graphql-transport-ws WebSocket sub-protocol implemented in the graphql-ws library. This is a modern, actively maintained successor to the graphql-ws sub-protocol implemented in the subscriptions-transport-ws library.

Notable changes:

  1. Provides the user with a number of ways to select which WebSocket protocol is used. but defaults to using the graphql_ws protocol. This is a breaking change that requires the user to select a protocol when initializing a WebSocket instance.
  2. Adds a new target (SubscriptionAPI) which is built with a single test to validate the implementation of the graphql-transport-ws protocol in an end-to-end test using an Apollo Server documentation example.
  3. Adds the required Apollo Server documentation example service to the chain of servers used in CI integration tests.
  4. Switches to a default of node v16 to be used for integration test services, while node v12 is still used for SimpleUploadServer.

How to configure which WebSocket protocol is used:

  1. Providing a URLRequest with the Sec-WebSocket-Protocol header preconfigured. WebSocket will respect this value if preset otherwise will default to using the graphql_ws protocol.
  2. Use one of the initializers WebSocket(request:webSocketProtocol:), WebSocket(url:webSocketProtocol:) or WebSocket(url:writeQueueQOS:webSocketProtocol:)

Protocol differences and how we support them

All protocol messages are defined in OperationMessage and the behavior logic is in WebSocketTransport. The way this is implemented now effectively means there is no segmentation of protocol behaviour and an active web socket could receive a message from any protocol and it would process it; not ideal.

Future changes

This is an aged implementation that has served us well so far, and I've added tests where we had none before but is not scalable nor ideal. Major version 2.0 will focus on the networking stack and at that time we can completely overhaul how we support GraphQL over WebSocket protocols.

Closes #1622

@alexdavid
Copy link

Thank you for implementing this.

Quick question though: the new graphql-transport-ws protocol specifies that clients must send a Pong event to Ping messages. Is this handled in this implementation?

@calvincestari
Copy link
Member Author

That's a good question @alexdavid. We do have ping/pong as WebSocket infrastructure, i.e.: transport level, but nothing at the protocol level. I'm going to change this to a draft PR until I'm 100% certain about the requirement. Thanks for the heads-up!

@calvincestari calvincestari marked this pull request as draft February 19, 2022 00:43
@@ -43,18 +45,29 @@ commands:
name: Start StarWars Server
background: true
- run:
command: cd SimpleUploadServer && npm install && npm start
command: cd SimpleUploadServer && nvm use && npm install && npm start
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Required to tell nvm to actually use the .nvmrc file created to lock SimpleUploadServer to node v12.

}
},
{
"package": "Nimble",
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Adding Nimble to main, currently it only exists in the 1.0 branches.

@@ -64,6 +64,8 @@ const server = new ApolloServer({
}
});

server.listen().then(({ url }) => {
server.listen({
port: 4001
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The Apollo Server documentation example defaults to port 4000. Since it's maintained by other teams and serves as a documentation example it's easier for us to move the SimpleUploadServer service to port 4001.

@@ -7,6 +7,7 @@ final class OperationMessage {
enum Types : String {
case connectionInit = "connection_init" // Client -> Server
case connectionTerminate = "connection_terminate" // Client -> Server
case subscribe = "subscribe" // Client -> Server
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Messages that are additive so that we can continue to support both protocols.

@calvincestari
Copy link
Member Author

Thank you for implementing this.

Quick question though: the new graphql-transport-ws protocol specifies that clients must send a Pong event to Ping messages. Is this handled in this implementation?

@alexdavid I've added message support for ping/pong in 348dcf0 and it's tested in 6edea9b. Thanks for calling that out.

@@ -0,0 +1 @@
v12.22.10
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SimpleUploadServer needs to be upgraded to the latest Apollo Server at some point but for now we have to do this. ☹️

import SubscriptionAPI

class GraphqlTransportWsProtocolTests: XCTestCase {
private let asyncTimeout: DispatchTimeInterval = .seconds(3)
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A longer async wait interval for slower environments such as CI.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tests look great, but I'm really confused why CI would need a 3 second time out. If we are mocking the Socket and the Transport, it shouldn't need all that time. These are unit tests, not integration tests, right?

If it's taking that long, I'm wondering if there is something going wrong with a locking thread or something?

Copy link
Member Author

@calvincestari calvincestari Feb 24, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The longer timeout is my 'easy' fix attempt at resolving failed CI test. It's not that though, still working on resolving the failed tests. Yes these are unit tests with mocking.

@calvincestari calvincestari marked this pull request as ready for review February 24, 2022 22:43
Copy link
Contributor

@AnthonyMDev AnthonyMDev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All protocol messages are defined in OperationMessage and the behavior logic is in WebSocketTransport. The way this is implemented now effectively means there is no segmentation of protocol behaviour and an active web socket could receive a message from any protocol and it would process it; not ideal.

Yeah, we should separate our concerns better when we refactor all of this in 2.0. But this behavior shouldn't be likely to cause any tangible problems for the time being, right? Are you just calling this out to be thorough, or are you concerned about this?

import SubscriptionAPI

class GraphqlTransportWsProtocolTests: XCTestCase {
private let asyncTimeout: DispatchTimeInterval = .seconds(3)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These tests look great, but I'm really confused why CI would need a 3 second time out. If we are mocking the Socket and the Transport, it shouldn't need all that time. These are unit tests, not integration tests, right?

If it's taking that long, I'm wondering if there is something going wrong with a locking thread or something?

@calvincestari
Copy link
Member Author

Yeah, we should separate our concerns better when we refactor all of this in 2.0. But this behavior shouldn't be likely to cause any tangible problems for the time being, right? Are you just calling this out to be thorough, or are you concerned about this?

Not concerned since servers implement a single protocol. Calling it out as behaviour we should not carry forward into 2.0.

Copy link
Contributor

@AnthonyMDev AnthonyMDev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome job!

@calvincestari calvincestari merged commit bf86e01 into main Feb 25, 2022
@calvincestari calvincestari deleted the update/graphql-ws-protocol branch February 25, 2022 21:08
calvincestari added a commit that referenced this pull request Feb 25, 2022
@calvincestari calvincestari mentioned this pull request Feb 25, 2022
13 tasks
calvincestari added a commit that referenced this pull request Feb 25, 2022
calvincestari added a commit that referenced this pull request Feb 28, 2022
* Update version number
* Update changelog
* Update SourceDocsLib dependecy
* Update generated documentation
* Update changelog with cache key caveat
* Update changelog for merging of #2147
* Update changelog for #2177 and #2168
* Update documentation
GlobakMaxim pushed a commit to scorebet/apollo-ios that referenced this pull request Jun 1, 2022
* Implement graphql-transport-ws protocol support
* Add graphql-transport-ws integration test based on Apollo Server docs-examples
* Add CI step for Apollo Server graphql-transport-ws tests
* After installing node v12 switch to use v16
* Instruct nvm to use version in .nvmrc
* Update documentation and tutorial
* Change WSProtocol cases to closer match library names
* Remove initializer defaults and require web socket protocol on designated initializer.
* Update Subscriptions documentation
* Add WSProtocol option for AWS AppSync
* Add ping/pong message support required by graphql-ws
* Update documentation and tutorial
* Add tests for subscriptionWsProtocol
* Add tests for graphqlWSProtocol
* Revert to naming aligned with the protocols and not the implementation libraries
* Use longer async timeout for slower environments like CI
* Fix test names
* Fix project configuration
* Rename protocol parameter on WebSocket initializers
* Revert "Use longer async timeout for slower environments like CI"
* Fix async timing bug and refactor websocket protocol tests
GlobakMaxim pushed a commit to scorebet/apollo-ios that referenced this pull request Jun 1, 2022
* Update version number
* Update changelog
* Update SourceDocsLib dependecy
* Update generated documentation
* Update changelog with cache key caveat
* Update changelog for merging of apollographql#2147
* Update changelog for apollographql#2177 and apollographql#2168
* Update documentation
adamayoung added a commit to Flutter-International-Sports-Platforms/apollo-ios that referenced this pull request Aug 18, 2022
* Attempted fix for integration test failing on CI (apollographql#2024)

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.6 (apollographql#2026)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update apollo-tooling to v2.33.9 (apollographql#2028)

* Update to v2.33.9 of the CLI tooling
* Update StarWarsAPI output generated by updated tooling
* Update test with expected output
* Keep the parameter spacing

* Gateway clarification based on license change

* Update SQLite.swift to version 13.0 (apollographql#2015)

* Update Package.swift and podspec
* Updated XcodeProj
* Bump SQLite.swift minimum required version to 0.13.1

Co-authored-by: Calvin Cestari <calvin.cestari@gmail.com>

* Release `0.50.0` (apollographql#2031)

* Update version number for release
* Updated changelog for release
* Update documentation for release changes
* Update changelog for apollographql#2015

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.8 (apollographql#2038)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update caching.mdx (apollographql#2042)

fixed typo

* Update ROADMAP.md (apollographql#2053)

* Clean up Github API for performance tests

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.9 (apollographql#2062)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Make filesystem diagram a bit easier to understand (apollographql#2063)

* Update ASCII art for filesystem, clarify where Apollo Codegen folder goes

* update spacing to make comments clearer, fix missing file emoji

* Allow periods in arguments to be ignored when parsing cacheKeys (apollographql#2057)

* Allow commas in arguments to be ignored when parsing cacheKeys

* Update

* More tests

* No-split case

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.11 (apollographql#2068)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.12 (apollographql#2074)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Add tutorial on subscriptions to match Android (apollographql#2072)

* Remove bits from under construction that are going to be handled with blog posts, update versions

* Get rid of fragments and cache, bring over android subscriptions stuff

* this is actually part 9 on iOS

* bring over screenshots from Android tutorial

* Correct link

* Update everything for iOS

* update index and link from prior step to include subscriptions

* Fix link to subscriptions

* add missing image

* fix borked link

* be clearer about replacing the print statement

* remove "unnecessary" quotation marks

* add missing sentence, make image less ginormous

* Fix direction

I definitely know my left from my right! :woman-facepaming:

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* add missing word

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* Bump mermaid from 8.13.6 to 8.13.8 in /docs (apollographql#2083)

Bumps [mermaid](https://github.com/knsv/mermaid) from 8.13.6 to 8.13.8.
- [Release notes](https://github.com/knsv/mermaid/releases)
- [Changelog](https://github.com/mermaid-js/mermaid/blob/develop/docs/CHANGELOG.md)
- [Commits](mermaid-js/mermaid@8.13.6...8.13.8)

---
updated-dependencies:
- dependency-name: mermaid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): update dependency engine.io to 4.1.2 [security] (apollographql#2094)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* chore(deps): update dependency follow-redirects to 1.14.7 [security] (apollographql#2092)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* chore(deps): update dependency node-forge to 1.0.0 [security] (apollographql#2095)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Add note about acceptable extensions for types of schema file. (apollographql#2059)

* Docs: Bump to Gatsby v3 (apollographql#2104)

* Bump gatsby to v3, bump docs theme to version that supports v3

* Bump docs theme to latest prerelease for gatsby v3

* Bump docs theme to new major version

* fix(deps): pin dependency gatsby-theme-apollo-docs to 6.0.0 (apollographql#2113)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* fix(deps): pin dependency gatsby to 3.14.6 (apollographql#2123)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Edits to intro and installation docs (apollographql#2125)

* Edits to intro and installation docs

* Fix broken links

* Edits from @designatednerd plus new screenshots

* Fix tutorial URL and tweak downloading a schema article (apollographql#2133)

* Split advanced "Creating a client" content into separate article (apollographql#2143)

* WIP on revamp to Creating a client article

* Break request chain content into separate article

* Fix broken links

* Incorporate feedback

* Disable flaky integration test

Will go back and fix this during WebSocket updates after 1.0 alpha

* Update gatsby config to deploy 1.0 alpha docs

* Update roadmap after 1.0.0-alpha.1 release (apollographql#2145)

* [v1.0.0 Alpha 1] JavascriptError @unchecked Sendable (apollographql#2147)

* fix: added unchecked sendable to JavascriptError to be able to compile with Swift 5.6
* Update CircleCI to use latest images
* Change JavaScriptError properties to read-only
* Fix typo in header doc

Co-authored-by: TizianoCoroneo <tizianocoroneo@me.com>
Co-authored-by: Calvin Cestari <calvin.cestari@gmail.com>

* Update documentation to clarify schema download format and filename (apollographql#2160)

* Update documentation to clarify schema download format and filename
* Fix documentation link

* chore(deps): update dependency follow-redirects to 1.14.8 [security] (apollographql#2161)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update license copyright notice

* Delete Jazzy config - not supported

* Update list of active maintainers

* [Fix apollographql#2170] Do not refetch query watcher from server after cache miss when cache policy is cache only (apollographql#2177)

* [Fix apollographql#2170] Do not refetch query watcher from server after cache miss when cache policy is cache only

* Revert test broken test infra change

* Add `graphql-ws` protocol support (apollographql#2168)

* Implement graphql-transport-ws protocol support
* Add graphql-transport-ws integration test based on Apollo Server docs-examples
* Add CI step for Apollo Server graphql-transport-ws tests
* After installing node v12 switch to use v16
* Instruct nvm to use version in .nvmrc
* Update documentation and tutorial
* Change WSProtocol cases to closer match library names
* Remove initializer defaults and require web socket protocol on designated initializer.
* Update Subscriptions documentation
* Add WSProtocol option for AWS AppSync
* Add ping/pong message support required by graphql-ws
* Update documentation and tutorial
* Add tests for subscriptionWsProtocol
* Add tests for graphqlWSProtocol
* Revert to naming aligned with the protocols and not the implementation libraries
* Use longer async timeout for slower environments like CI
* Fix test names
* Fix project configuration
* Rename protocol parameter on WebSocket initializers
* Revert "Use longer async timeout for slower environments like CI"
* Fix async timing bug and refactor websocket protocol tests

* chore(deps): update dependency prismjs to 1.27.0 [security] (apollographql#2179)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Release 0.51.0 (apollographql#2086)

* Update version number
* Update changelog
* Update SourceDocsLib dependecy
* Update generated documentation
* Update changelog with cache key caveat
* Update changelog for merging of apollographql#2147
* Update changelog for apollographql#2177 and apollographql#2168
* Update documentation

* Enable lazy access to the request body creation for leverage in custom built interceptors (apollographql#2184)

* Release `0.51.1` (apollographql#2188)

* Update project version
* Update changelog for apollographql#2184
* Update documentation

* Updates for new docs infra (apollographql#2197)

* Prepare ios docs for new infra

* Add sidebar config

* Update ExpansionPanelList components

* Update code fences

* Move _redirects file

* Fix links

* Update docset title

* Update sidebar config

* Add version to ios docs config

* Remove imports and fix links

* Remove mb from homepage button

* Add algolia filters

* Remove files from old Gatsby docs theme (apollographql#2202)

* Remove files from old Gatsby docs theme

* Remove netlify.toml

* Clear body on APQ retry in JSONRequest (apollographql#2206)

* Release 0.51.2 (apollographql#2207)

* Release 0.51.2

* Fix Package file

* Fix changelog version.

* Add netlify config for deploy previews (apollographql#2208)

* Add netlify config for deploy previews

* Trigger deploy

* Remove circle config

* Update docs repo branch

* Use buttonlink component

* Add codegen option for excludes (apollographql#2205)

* Add exclude options
* Add test case

* Fix typo (apollographql#2212)

* Start a docs production deploy when docs changes get merged (apollographql#2211)

* Create docs-publish.yml

* Tweak ignore command

* Bump minimist from 1.2.5 to 1.2.6 in /SimpleUploadServer (apollographql#2214)

Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump node-fetch from 2.6.6 to 2.6.7 in /SimpleUploadServer (apollographql#2215)

Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.6 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](node-fetch/node-fetch@v2.6.6...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add note to tutorial about the `graphql-ws` subscription library (apollographql#2219)

* Add note to tutorial about new subscription library
* tweak spacing
* tweak phrasing
* Add links and clarify which library is not maintained

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* Update tutorial-obtain-schema.md (apollographql#2225)

Change extension of the downloaded schema file.

* Update tutorial-execute-query.md (apollographql#2228)

* Update tutorial-execute-query.md
* Change the schema file type to json.

* chore: Update Xcode build tool versions on CircleCI (apollographql#2242)

* chose: update xcode build environment versions
* fix: update Node version to match CircleCI image

* chore: Update roadmap

* fix: Sandbox documentation links (apollographql#2254)

* ci: Update xcode image to fix Node version mismatch

* ci: Update Node version to match what is installed with Xcode 13.3.1 image

* chore: updates roadmap (apollographql#2258)

* chore: updates roadmap

* Update ROADMAP.md

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* Update ROADMAP.md

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* Update build phases example to propagate errors to Xcode (apollographql#2260)

Without the explicit propagation I wasn't seeing errors in Xcode.

Build phase shell env: `/bin/sh`
Xcode version: `Version 13.2.1 (13C100)`

* Add a comment about a new use of the X-APOLLO-OPERATION-NAME header (apollographql#2267)

* Set permissions for GitHub actions (apollographql#2248)

* updates roadmap for june 2022 (apollographql#2295)

* Update CircleCI tool versions (apollographql#2304)

* ci: Update Xcode and iOS simulator versions
* ci: Update Node version

* fix: `graphql_transport_ws` protocol should send 'complete' to end subscription (apollographql#2320)

* fix: graphql_transport_ws protocol should send 'complete' to end subscription
* fix: Require MockWebSocket to be initialized with a graphql subscriptions protocol
* tests: Fix StarWarsSubscriptionTests to use updated MockWebSocket initializer

* Replace print statement with CodegenLogger.log (apollographql#2348)

* Fix buttons on docs root (apollographql#2369)

* Expose GraphQLResultError Path String (apollographql#2361)

* Expose the path as a String
* tests: Add unit tests for ResponsePath

Co-authored-by: Calvin Cestari <calvin.cestari@gmail.com>

* Revert "Fix buttons on docs root (apollographql#2369)" (apollographql#2371)

This reverts commit d26751a.

* release: 0.52.0 (apollographql#2370)

* chore: Update release version number
* chore: Update changelog
* dep: Update packages
* docs: Update API reference

* Fix typo (apollographql#2379)

Removed duplicate "the"

* Fix incorrect parameter name (apollographql#2380)

`id` was set as a parameter, but the query expects `launchId`.

* chore: Update ROADMAP for Beta release cycle (apollographql#2393)

* Remove all instances of bitcode as not supported in Xcode 14 (apollographql#2398)

https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes

* Release 0.53.0 (apollographql#2406)

* chore: Update version number
* chore: Update CHANGELOG

* fix: checkout at tag with legacy optionals behavior (apollographql#2412)

* Update version in Swift Scripting docs (apollographql#2416)

* Re-added support for iOS 11

Co-authored-by: Anthony Miller <anthonymdev@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>
Co-authored-by: hwillson <hugh@octonary.com>
Co-authored-by: Hesham Salman <iron-ham@github.com>
Co-authored-by: Calvin Cestari <calvin.cestari@gmail.com>
Co-authored-by: bogdanbeczkowski <bogdanbeczkowski@gmail.com>
Co-authored-by: Ellen Shapiro <designatednerd@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Janessa Garrow <janessa@apollographql.com>
Co-authored-by: Stephen Barlow <stephen@apollographql.com>
Co-authored-by: TizianoCoroneo <tizianocoroneo@me.com>
Co-authored-by: Calvin Cestari <calvin.cestari@apollographql.com>
Co-authored-by: Rick Fast <rfast@expediagroup.com>
Co-authored-by: Trevor Blades <tdblades@gmail.com>
Co-authored-by: bannzai <kingkong999yhirose@gmail.com>
Co-authored-by: Ayden Lee <lcmini6528@gmail.com>
Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com>
Co-authored-by: Carrione <miroslav.tourek@gmail.com>
Co-authored-by: Martin Bonnin <martin@mbonnin.net>
Co-authored-by: JV <jvajda@apollographql.com>
Co-authored-by: Adam Zethraeus <adam@zethrae.us>
Co-authored-by: David Glasser <glasser@apollographql.com>
Co-authored-by: neilnaveen <42328488+neilnaveen@users.noreply.github.com>
Co-authored-by: Hilton Campbell <github@crosswaterbridge.com>
Co-authored-by: Joshua Shroyer <98055534+joshuashroyer-toast@users.noreply.github.com>
Co-authored-by: Mischa Hildebrand <web@mischa-hildebrand.de>
Co-authored-by: stareque-atlassian <46062249+stareque-atlassian@users.noreply.github.com>
Co-authored-by: Yuki Yamamoto <yymmt3.waste@gmail.com>
adamayoung added a commit to Flutter-International-Sports-Platforms/apollo-ios that referenced this pull request Aug 18, 2022
* Attempted fix for integration test failing on CI (apollographql#2024)

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.6 (apollographql#2026)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update apollo-tooling to v2.33.9 (apollographql#2028)

* Update to v2.33.9 of the CLI tooling
* Update StarWarsAPI output generated by updated tooling
* Update test with expected output
* Keep the parameter spacing

* Gateway clarification based on license change

* Update SQLite.swift to version 13.0 (apollographql#2015)

* Update Package.swift and podspec
* Updated XcodeProj
* Bump SQLite.swift minimum required version to 0.13.1

Co-authored-by: Calvin Cestari <calvin.cestari@gmail.com>

* Release `0.50.0` (apollographql#2031)

* Update version number for release
* Updated changelog for release
* Update documentation for release changes
* Update changelog for apollographql#2015

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.8 (apollographql#2038)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update caching.mdx (apollographql#2042)

fixed typo

* Update ROADMAP.md (apollographql#2053)

* Clean up Github API for performance tests

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.9 (apollographql#2062)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Make filesystem diagram a bit easier to understand (apollographql#2063)

* Update ASCII art for filesystem, clarify where Apollo Codegen folder goes

* update spacing to make comments clearer, fix missing file emoji

* Allow periods in arguments to be ignored when parsing cacheKeys (apollographql#2057)

* Allow commas in arguments to be ignored when parsing cacheKeys

* Update

* More tests

* No-split case

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.11 (apollographql#2068)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* fix(deps): update dependency gatsby-theme-apollo-docs to v5.3.12 (apollographql#2074)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Add tutorial on subscriptions to match Android (apollographql#2072)

* Remove bits from under construction that are going to be handled with blog posts, update versions

* Get rid of fragments and cache, bring over android subscriptions stuff

* this is actually part 9 on iOS

* bring over screenshots from Android tutorial

* Correct link

* Update everything for iOS

* update index and link from prior step to include subscriptions

* Fix link to subscriptions

* add missing image

* fix borked link

* be clearer about replacing the print statement

* remove "unnecessary" quotation marks

* add missing sentence, make image less ginormous

* Fix direction

I definitely know my left from my right! :woman-facepaming:

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* add missing word

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* Bump mermaid from 8.13.6 to 8.13.8 in /docs (apollographql#2083)

Bumps [mermaid](https://github.com/knsv/mermaid) from 8.13.6 to 8.13.8.
- [Release notes](https://github.com/knsv/mermaid/releases)
- [Changelog](https://github.com/mermaid-js/mermaid/blob/develop/docs/CHANGELOG.md)
- [Commits](mermaid-js/mermaid@8.13.6...8.13.8)

---
updated-dependencies:
- dependency-name: mermaid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* chore(deps): update dependency engine.io to 4.1.2 [security] (apollographql#2094)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* chore(deps): update dependency follow-redirects to 1.14.7 [security] (apollographql#2092)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* chore(deps): update dependency node-forge to 1.0.0 [security] (apollographql#2095)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Add note about acceptable extensions for types of schema file. (apollographql#2059)

* Docs: Bump to Gatsby v3 (apollographql#2104)

* Bump gatsby to v3, bump docs theme to version that supports v3

* Bump docs theme to latest prerelease for gatsby v3

* Bump docs theme to new major version

* fix(deps): pin dependency gatsby-theme-apollo-docs to 6.0.0 (apollographql#2113)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* fix(deps): pin dependency gatsby to 3.14.6 (apollographql#2123)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Edits to intro and installation docs (apollographql#2125)

* Edits to intro and installation docs

* Fix broken links

* Edits from @designatednerd plus new screenshots

* Fix tutorial URL and tweak downloading a schema article (apollographql#2133)

* Split advanced "Creating a client" content into separate article (apollographql#2143)

* WIP on revamp to Creating a client article

* Break request chain content into separate article

* Fix broken links

* Incorporate feedback

* Disable flaky integration test

Will go back and fix this during WebSocket updates after 1.0 alpha

* Update gatsby config to deploy 1.0 alpha docs

* Update roadmap after 1.0.0-alpha.1 release (apollographql#2145)

* [v1.0.0 Alpha 1] JavascriptError @unchecked Sendable (apollographql#2147)

* fix: added unchecked sendable to JavascriptError to be able to compile with Swift 5.6
* Update CircleCI to use latest images
* Change JavaScriptError properties to read-only
* Fix typo in header doc

Co-authored-by: TizianoCoroneo <tizianocoroneo@me.com>
Co-authored-by: Calvin Cestari <calvin.cestari@gmail.com>

* Update documentation to clarify schema download format and filename (apollographql#2160)

* Update documentation to clarify schema download format and filename
* Fix documentation link

* chore(deps): update dependency follow-redirects to 1.14.8 [security] (apollographql#2161)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Update license copyright notice

* Delete Jazzy config - not supported

* Update list of active maintainers

* [Fix apollographql#2170] Do not refetch query watcher from server after cache miss when cache policy is cache only (apollographql#2177)

* [Fix apollographql#2170] Do not refetch query watcher from server after cache miss when cache policy is cache only

* Revert test broken test infra change

* Add `graphql-ws` protocol support (apollographql#2168)

* Implement graphql-transport-ws protocol support
* Add graphql-transport-ws integration test based on Apollo Server docs-examples
* Add CI step for Apollo Server graphql-transport-ws tests
* After installing node v12 switch to use v16
* Instruct nvm to use version in .nvmrc
* Update documentation and tutorial
* Change WSProtocol cases to closer match library names
* Remove initializer defaults and require web socket protocol on designated initializer.
* Update Subscriptions documentation
* Add WSProtocol option for AWS AppSync
* Add ping/pong message support required by graphql-ws
* Update documentation and tutorial
* Add tests for subscriptionWsProtocol
* Add tests for graphqlWSProtocol
* Revert to naming aligned with the protocols and not the implementation libraries
* Use longer async timeout for slower environments like CI
* Fix test names
* Fix project configuration
* Rename protocol parameter on WebSocket initializers
* Revert "Use longer async timeout for slower environments like CI"
* Fix async timing bug and refactor websocket protocol tests

* chore(deps): update dependency prismjs to 1.27.0 [security] (apollographql#2179)

Co-authored-by: Renovate Bot <bot@renovateapp.com>

* Release 0.51.0 (apollographql#2086)

* Update version number
* Update changelog
* Update SourceDocsLib dependecy
* Update generated documentation
* Update changelog with cache key caveat
* Update changelog for merging of apollographql#2147
* Update changelog for apollographql#2177 and apollographql#2168
* Update documentation

* Enable lazy access to the request body creation for leverage in custom built interceptors (apollographql#2184)

* Release `0.51.1` (apollographql#2188)

* Update project version
* Update changelog for apollographql#2184
* Update documentation

* Updates for new docs infra (apollographql#2197)

* Prepare ios docs for new infra

* Add sidebar config

* Update ExpansionPanelList components

* Update code fences

* Move _redirects file

* Fix links

* Update docset title

* Update sidebar config

* Add version to ios docs config

* Remove imports and fix links

* Remove mb from homepage button

* Add algolia filters

* Remove files from old Gatsby docs theme (apollographql#2202)

* Remove files from old Gatsby docs theme

* Remove netlify.toml

* Clear body on APQ retry in JSONRequest (apollographql#2206)

* Release 0.51.2 (apollographql#2207)

* Release 0.51.2

* Fix Package file

* Fix changelog version.

* Add netlify config for deploy previews (apollographql#2208)

* Add netlify config for deploy previews

* Trigger deploy

* Remove circle config

* Update docs repo branch

* Use buttonlink component

* Add codegen option for excludes (apollographql#2205)

* Add exclude options
* Add test case

* Fix typo (apollographql#2212)

* Start a docs production deploy when docs changes get merged (apollographql#2211)

* Create docs-publish.yml

* Tweak ignore command

* Bump minimist from 1.2.5 to 1.2.6 in /SimpleUploadServer (apollographql#2214)

Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump node-fetch from 2.6.6 to 2.6.7 in /SimpleUploadServer (apollographql#2215)

Bumps [node-fetch](https://github.com/node-fetch/node-fetch) from 2.6.6 to 2.6.7.
- [Release notes](https://github.com/node-fetch/node-fetch/releases)
- [Commits](node-fetch/node-fetch@v2.6.6...v2.6.7)

---
updated-dependencies:
- dependency-name: node-fetch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Add note to tutorial about the `graphql-ws` subscription library (apollographql#2219)

* Add note to tutorial about new subscription library
* tweak spacing
* tweak phrasing
* Add links and clarify which library is not maintained

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* Update tutorial-obtain-schema.md (apollographql#2225)

Change extension of the downloaded schema file.

* Update tutorial-execute-query.md (apollographql#2228)

* Update tutorial-execute-query.md
* Change the schema file type to json.

* chore: Update Xcode build tool versions on CircleCI (apollographql#2242)

* chose: update xcode build environment versions
* fix: update Node version to match CircleCI image

* chore: Update roadmap

* fix: Sandbox documentation links (apollographql#2254)

* ci: Update xcode image to fix Node version mismatch

* ci: Update Node version to match what is installed with Xcode 13.3.1 image

* chore: updates roadmap (apollographql#2258)

* chore: updates roadmap

* Update ROADMAP.md

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* Update ROADMAP.md

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>

* Update build phases example to propagate errors to Xcode (apollographql#2260)

Without the explicit propagation I wasn't seeing errors in Xcode.

Build phase shell env: `/bin/sh`
Xcode version: `Version 13.2.1 (13C100)`

* Add a comment about a new use of the X-APOLLO-OPERATION-NAME header (apollographql#2267)

* Set permissions for GitHub actions (apollographql#2248)

* updates roadmap for june 2022 (apollographql#2295)

* Update CircleCI tool versions (apollographql#2304)

* ci: Update Xcode and iOS simulator versions
* ci: Update Node version

* fix: `graphql_transport_ws` protocol should send 'complete' to end subscription (apollographql#2320)

* fix: graphql_transport_ws protocol should send 'complete' to end subscription
* fix: Require MockWebSocket to be initialized with a graphql subscriptions protocol
* tests: Fix StarWarsSubscriptionTests to use updated MockWebSocket initializer

* Replace print statement with CodegenLogger.log (apollographql#2348)

* Fix buttons on docs root (apollographql#2369)

* Expose GraphQLResultError Path String (apollographql#2361)

* Expose the path as a String
* tests: Add unit tests for ResponsePath

Co-authored-by: Calvin Cestari <calvin.cestari@gmail.com>

* Revert "Fix buttons on docs root (apollographql#2369)" (apollographql#2371)

This reverts commit d26751a.

* release: 0.52.0 (apollographql#2370)

* chore: Update release version number
* chore: Update changelog
* dep: Update packages
* docs: Update API reference

* Fix typo (apollographql#2379)

Removed duplicate "the"

* Fix incorrect parameter name (apollographql#2380)

`id` was set as a parameter, but the query expects `launchId`.

* chore: Update ROADMAP for Beta release cycle (apollographql#2393)

* Remove all instances of bitcode as not supported in Xcode 14 (apollographql#2398)

https://developer.apple.com/documentation/xcode-release-notes/xcode-14-release-notes

* Release 0.53.0 (apollographql#2406)

* chore: Update version number
* chore: Update CHANGELOG

* fix: checkout at tag with legacy optionals behavior (apollographql#2412)

* Update version in Swift Scripting docs (apollographql#2416)

* Re-added support for iOS 11

* Update to 0.53.0

Co-authored-by: Anthony Miller <anthonymdev@gmail.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Co-authored-by: Calvin Cestari <calvincestari@users.noreply.github.com>
Co-authored-by: hwillson <hugh@octonary.com>
Co-authored-by: Hesham Salman <iron-ham@github.com>
Co-authored-by: Calvin Cestari <calvin.cestari@gmail.com>
Co-authored-by: bogdanbeczkowski <bogdanbeczkowski@gmail.com>
Co-authored-by: Ellen Shapiro <designatednerd@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Janessa Garrow <janessa@apollographql.com>
Co-authored-by: Stephen Barlow <stephen@apollographql.com>
Co-authored-by: TizianoCoroneo <tizianocoroneo@me.com>
Co-authored-by: Calvin Cestari <calvin.cestari@apollographql.com>
Co-authored-by: Rick Fast <rfast@expediagroup.com>
Co-authored-by: Trevor Blades <tdblades@gmail.com>
Co-authored-by: bannzai <kingkong999yhirose@gmail.com>
Co-authored-by: Ayden Lee <lcmini6528@gmail.com>
Co-authored-by: Rose M Koron <32436232+rkoron007@users.noreply.github.com>
Co-authored-by: Carrione <miroslav.tourek@gmail.com>
Co-authored-by: Martin Bonnin <martin@mbonnin.net>
Co-authored-by: JV <jvajda@apollographql.com>
Co-authored-by: Adam Zethraeus <adam@zethrae.us>
Co-authored-by: David Glasser <glasser@apollographql.com>
Co-authored-by: neilnaveen <42328488+neilnaveen@users.noreply.github.com>
Co-authored-by: Hilton Campbell <github@crosswaterbridge.com>
Co-authored-by: Joshua Shroyer <98055534+joshuashroyer-toast@users.noreply.github.com>
Co-authored-by: Mischa Hildebrand <web@mischa-hildebrand.de>
Co-authored-by: stareque-atlassian <46062249+stareque-atlassian@users.noreply.github.com>
Co-authored-by: Yuki Yamamoto <yymmt3.waste@gmail.com>
jamesonwilliams pushed a commit to Whatnot-Inc/legacy-apollo-ios that referenced this pull request Nov 16, 2024
* Implement graphql-transport-ws protocol support
* Add graphql-transport-ws integration test based on Apollo Server docs-examples
* Add CI step for Apollo Server graphql-transport-ws tests
* After installing node v12 switch to use v16
* Instruct nvm to use version in .nvmrc
* Update documentation and tutorial
* Change WSProtocol cases to closer match library names
* Remove initializer defaults and require web socket protocol on designated initializer.
* Update Subscriptions documentation
* Add WSProtocol option for AWS AppSync
* Add ping/pong message support required by graphql-ws
* Update documentation and tutorial
* Add tests for subscriptionWsProtocol
* Add tests for graphqlWSProtocol
* Revert to naming aligned with the protocols and not the implementation libraries
* Use longer async timeout for slower environments like CI
* Fix test names
* Fix project configuration
* Rename protocol parameter on WebSocket initializers
* Revert "Use longer async timeout for slower environments like CI"
* Fix async timing bug and refactor websocket protocol tests
jamesonwilliams pushed a commit to Whatnot-Inc/legacy-apollo-ios that referenced this pull request Nov 16, 2024
* Update version number
* Update changelog
* Update SourceDocsLib dependecy
* Update generated documentation
* Update changelog with cache key caveat
* Update changelog for merging of apollographql#2147
* Update changelog for apollographql#2177 and apollographql#2168
* Update documentation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

graphql-ws Protocol Support
4 participants