diff --git a/Apollo.podspec b/Apollo.podspec index ec4d6eda2a..e21fc3c82f 100644 --- a/Apollo.podspec +++ b/Apollo.podspec @@ -29,7 +29,7 @@ Pod::Spec.new do |s| s.subspec 'SQLite' do |ss| ss.source_files = 'Sources/ApolloSQLite/*.swift' ss.dependency 'Apollo/Core' - ss.dependency 'SQLite.swift', '~>0.12.2' + ss.dependency 'SQLite.swift', '~>0.13.1' end # Websocket and subscription support based on Starscream diff --git a/Apollo.xcodeproj/project.pbxproj b/Apollo.xcodeproj/project.pbxproj index e0b9ce6c26..e03b719b6d 100644 --- a/Apollo.xcodeproj/project.pbxproj +++ b/Apollo.xcodeproj/project.pbxproj @@ -3838,7 +3838,7 @@ repositoryURL = "https://github.com/stephencelis/SQLite.swift.git"; requirement = { kind = upToNextMinorVersion; - minimumVersion = 0.12.2; + minimumVersion = 0.13.1; }; }; DE5EB9C326EFD4D10004176A /* XCRemoteSwiftPackageReference "Nimble" */ = { diff --git a/Apollo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved b/Apollo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved index f589f8256e..4dbccbb521 100644 --- a/Apollo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved +++ b/Apollo.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved @@ -42,8 +42,8 @@ "repositoryURL": "https://github.com/stephencelis/SQLite.swift.git", "state": { "branch": null, - "revision": "0a9893ec030501a3956bee572d6b4fdd3ae158a1", - "version": "0.12.2" + "revision": "60a65015f6402b7c34b9a924f755ca0a73afeeaa", + "version": "0.13.1" } }, { diff --git a/CHANGELOG.md b/CHANGELOG.md index ee7703a2e5..79a31277e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Change log +## v0.50.0 +- **Dropped SPM support for Swift 5.2**: The minimum version of the Swift tools and language compatibilty required to process the SPM manifest is Swift 5.3. This means a minimum of Xcode version 12 is required for Swift Package Manager support. [#1992](https://github.com/apollographql/apollo-ios/pull/1992) +- **Removed unnecessary assertion failure**: The completion handler on `returnResultAsyncIfNeeded` is defined as optional but if not included would cause debug builds to crash with an `assertionFailure` in the case of a `failure` of the `Result`. [#2005](https://github.com/apollographql/apollo-ios/pull/2005) - _Thank you to [Richard Topchii](https://github.com/richardtop) for raising this issue!_ +- **`CachePolicy.default` is now a stored property**: It is now easier to configure a different default value for the `CachePolicy` property on any `ApolloClient` instance instead of having to override it in a subclass. [#1998](https://github.com/apollographql/apollo-ios/pull/1998) - _Thank you to [Tiziano Coroneo](https://github.com/TizianoCoroneo) for the contribution!_ +- **Exposed `cacheKey` function as `public`**: The access modifier of this function on `GraphQLField` has changed from `internal` to `public`. It is not recommended to rely on internal behaviour of the cache, and this is subject to change in future major versions. [#2014](https://github.com/apollographql/apollo-ios/pull/2014) - _Thank you to [Peter Potrebic](https://github.com/potrebic) for the discussion!_ +- **GET method support for `ApolloSchemaDownloader`**: Introspection-based schema downloads can now be queried using a GET request. [#2010](https://github.com/apollographql/apollo-ios/pull/2010) - _Thank you to [Mike Pitre](https://github.com/mikepitre) for the contribution!_ +- **Updated to version 2.33.9 of the Apollo CLI**: This update will add `__typename` fields to inline fragments in operations to match the output from the `client:push` CLI command which used for operation safelisting. This should not affect the behaviour of your operations. [#2028](https://github.com/apollographql/apollo-ios/pull/2028). +- **Updated to version 0.13.1 of SQLite.swift**: This update brings in some iOS 14 fixes and new table functionality such as `upsert` and `insertMany`. [#2015](https://github.com/apollographql/apollo-ios/pull/2015) - _Thank you to [Hesham Salman](https://github.com/Iron-Ham) for the contribution._ + ## v0.49.1 - **`ApolloSchemaDownloadConfiguration.HTTPHeader` initializer was not public**: The struct initializer that Swift automatically generates is marked with the `internal` access level, which meant that custom HTTP headers could not be added to an instance of `ApolloSchemaDownloadConfiguration`. [#1962](https://github.com/apollographql/apollo-ios/pull/1962) - _Thank you to [Nikolai Sivertsen](https://github.com/nsivertsen) for the contribution!_ - **Documentation update**: Fixed an inline code block that had specified language where such specification is not supported. [#1954](https://github.com/apollographql/apollo-ios/pull/1954) - _Thank you to [Kim Røen](https://github.com/kimroen) for the contribution!_ diff --git a/Configuration/Shared/Project-Version.xcconfig b/Configuration/Shared/Project-Version.xcconfig index b7d90a3d3c..dbbea639e9 100644 --- a/Configuration/Shared/Project-Version.xcconfig +++ b/Configuration/Shared/Project-Version.xcconfig @@ -1 +1 @@ -CURRENT_PROJECT_VERSION = 0.49.1 +CURRENT_PROJECT_VERSION = 0.50.0 diff --git a/Package.resolved b/Package.resolved index dddf4f0119..f35dd7c229 100644 --- a/Package.resolved +++ b/Package.resolved @@ -15,8 +15,8 @@ "repositoryURL": "https://github.com/stephencelis/SQLite.swift.git", "state": { "branch": null, - "revision": "0a9893ec030501a3956bee572d6b4fdd3ae158a1", - "version": "0.12.2" + "revision": "60a65015f6402b7c34b9a924f755ca0a73afeeaa", + "version": "0.13.1" } }, { diff --git a/Package.swift b/Package.swift index 45b0755234..ea16aa702b 100644 --- a/Package.swift +++ b/Package.swift @@ -38,7 +38,7 @@ let package = Package( dependencies: [ .package( url: "https://github.com/stephencelis/SQLite.swift.git", - .upToNextMinor(from: "0.12.2")), + .upToNextMinor(from: "0.13.1")) .package( url: "https://github.com/mattt/InflectorKit", .upToNextMinor(from: "1.0.0")), diff --git a/README.md b/README.md index dbdbd4e49f..0122765aed 100644 --- a/README.md +++ b/README.md @@ -78,7 +78,7 @@ If you'd like to contribute, please refer to the [Apollo Contributor Guide](http [Apollo](https://apollographql.com/) builds open-source software and a graph platform to unify GraphQL across your apps and services. We help you ship faster with: * [Apollo Studio](https://www.apollographql.com/studio/develop/) – A free, end-to-end platform for managing your GraphQL lifecycle. Track your GraphQL schemas in a hosted registry to create a source of truth for everything in your graph. Studio provides an IDE (Apollo Explorer) so you can explore data, collaborate on queries, observe usage, and safely make schema changes. -* [Apollo Federation](https://www.apollographql.com/apollo-federation) – The industry-standard open architecture for building a distributed graph. Use Apollo’s open-source gateway to compose a unified graph from multiple subgraphs, determine a query plan, and route requests across your services. +* [Apollo Federation](https://www.apollographql.com/apollo-federation) – The industry-standard open architecture for building a distributed graph. Use Apollo’s gateway to compose a unified graph from multiple subgraphs, determine a query plan, and route requests across your services. * [Apollo Client](https://www.apollographql.com/apollo-client/) – The most popular GraphQL client for the web. Apollo also builds and maintains [Apollo iOS](https://github.com/apollographql/apollo-ios) and [Apollo Android](https://github.com/apollographql/apollo-android). * [Apollo Server](https://www.apollographql.com/docs/apollo-server/) – A production-ready JavaScript GraphQL server that connects to any microservice, API, or database. Compatible with all popular JavaScript frameworks and deployable in serverless environments. diff --git a/SimpleUploadServer/package-lock.json b/SimpleUploadServer/package-lock.json index 598553e99d..5ff63377b1 100644 --- a/SimpleUploadServer/package-lock.json +++ b/SimpleUploadServer/package-lock.json @@ -5,9 +5,9 @@ "requires": true, "dependencies": { "@apollo/protobufjs": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.0.4.tgz", - "integrity": "sha512-EE3zx+/D/wur/JiLp6VCiw1iYdyy1lCJMf8CGPkLeDt5QJrN4N8tKFx33Ah4V30AUQzMk7Uz4IXKZ1LOj124gA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@apollo/protobufjs/-/protobufjs-1.2.2.tgz", + "integrity": "sha512-vF+zxhPiLtkwxONs6YanSt1EpwpGilThpneExUN5K3tCymuxNnVq2yojTvnpRjv2QfsEIt/n7ozPIIzBLwGIDQ==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -25,28 +25,44 @@ }, "dependencies": { "@types/node": { - "version": "10.17.28", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.28.tgz", - "integrity": "sha512-dzjES1Egb4c1a89C7lKwQh8pwjYmlOAG9dW1pBgxEk57tMrLnssOfEthz8kdkNaBd7lIqQx7APm5+mZ619IiCQ==" + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" } } }, "@apollographql/apollo-tools": { - "version": "0.4.8", - "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.4.8.tgz", - "integrity": "sha512-W2+HB8Y7ifowcf3YyPHgDI05izyRtOeZ4MqIr7LbTArtmJ0ZHULWpn84SGMW7NAvTV1tFExpHlveHhnXuJfuGA==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@apollographql/apollo-tools/-/apollo-tools-0.5.2.tgz", + "integrity": "sha512-KxZiw0Us3k1d0YkJDhOpVH5rJ+mBfjXcgoRoCcslbgirjgLotKMzOcx4PZ7YTEvvEROmvG7X3Aon41GvMmyGsw==" + }, + "@apollographql/graphql-playground-html": { + "version": "1.6.27", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.27.tgz", + "integrity": "sha512-tea2LweZvn6y6xFV11K0KC8ETjmm52mQrW+ezgB2O/aTQf8JGyFmMcRPFgUaQZeHbWdm8iisDC6EjOKsXu0nfw==", "requires": { - "apollo-env": "^0.6.5" + "xss": "^1.0.8" } }, - "@apollographql/graphql-playground-html": { - "version": "1.6.26", - "resolved": "https://registry.npmjs.org/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.26.tgz", - "integrity": "sha512-XAwXOIab51QyhBxnxySdK3nuMEUohhDsHQ5Rbco/V1vjlP75zZ0ZLHD9dTpXTN8uxKxopb2lUvJTq+M4g2Q0HQ==", + "@apollographql/graphql-upload-8-fork": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@apollographql/graphql-upload-8-fork/-/graphql-upload-8-fork-8.1.3.tgz", + "integrity": "sha512-ssOPUT7euLqDXcdVv3Qs4LoL4BPtfermW1IOouaqEmj36TpHYDmYDIbKoSQxikd9vtMumFnP87OybH7sC9fJ6g==", "requires": { - "xss": "^1.0.6" + "@types/express": "*", + "@types/fs-capacitor": "*", + "@types/koa": "*", + "busboy": "^0.3.1", + "fs-capacitor": "^2.0.4", + "http-errors": "^1.7.3", + "object-path": "^0.11.4" } }, + "@josephg/resolvable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@josephg/resolvable/-/resolvable-1.0.1.tgz", + "integrity": "sha512-CtzORUwWTTOTqfVtHaKRJ0I1kNQd1bpn3sUh8I3nJDVY+5/M/Oe1DnEWzPQvqq/xPIIkzzzIP7mfCoAjFRvDhg==" + }, "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -110,31 +126,31 @@ } }, "@types/body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.1.tgz", + "integrity": "sha512-a6bTJ21vFOGIkwM0kzh9Yr89ziVxq4vYH2fQ6N8AeipEzai/cFK6aGMArIkUeIdRIgpwQa+2bXiLuUJCpSf2Cg==", "requires": { "@types/connect": "*", "@types/node": "*" } }, "@types/connect": { - "version": "3.4.33", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.33.tgz", - "integrity": "sha512-2+FrkXY4zllzTNfJth7jOqEHC+enpLeGslEhpnTAkg21GkRrWV4SsAtqchtT4YS9/nODBU2/ZfsBY2X4J/dX7A==", + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", "requires": { "@types/node": "*" } }, "@types/content-disposition": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.3.tgz", - "integrity": "sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg==" + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@types/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-0mPF08jn9zYI0n0Q/Pnz7C4kThdSt+6LD4amsrYDDpgBfrVWa3TcCOxKX1zkGgYniGagRv8heN2cbh+CAn+uuQ==" }, "@types/cookies": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.4.tgz", - "integrity": "sha512-oTGtMzZZAVuEjTwCjIh8T8FrC8n/uwy+PG0yTvQcdZ7etoel7C7/3MSd7qrukENTgQtotG7gvBlBojuVs7X5rw==", + "version": "0.7.7", + "resolved": "https://registry.npmjs.org/@types/cookies/-/cookies-0.7.7.tgz", + "integrity": "sha512-h7BcvPUogWbKCzBR2lY4oqaZbO3jXZksexYJVFvkrFeLgbZjQkU4x8pRq6eg2MHXQhY0McQdqmmsxRWlVAHooA==", "requires": { "@types/connect": "*", "@types/express": "*", @@ -143,28 +159,25 @@ } }, "@types/cors": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.7.tgz", - "integrity": "sha512-sOdDRU3oRS7LBNTIqwDkPJyq0lpHYcbMTt0TrjzsXbk/e37hcLTH6eZX7CdbDeN0yJJvzw9hFBZkbtCSbk/jAQ==", - "requires": { - "@types/express": "*" - } + "version": "2.8.10", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.10.tgz", + "integrity": "sha512-C7srjHiVG3Ey1nR6d511dtDkCEjxuN9W1HWAEjGq8kpcwmNM6JJkpC0xvabM7BXTG2wDq8Eu33iH9aQKa7IvLQ==" }, "@types/express": { - "version": "4.17.7", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.7.tgz", - "integrity": "sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ==", + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", "requires": { "@types/body-parser": "*", - "@types/express-serve-static-core": "*", + "@types/express-serve-static-core": "^4.17.18", "@types/qs": "*", "@types/serve-static": "*" } }, "@types/express-serve-static-core": { - "version": "4.17.9", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz", - "integrity": "sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA==", + "version": "4.17.24", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.24.tgz", + "integrity": "sha512-3UJuW+Qxhzwjq3xhwXm2onQcFHn76frIYVbTu+kn24LFxI+dEhdfISDFovPB8VpEgW8oQCTpRuCe+0zJxB7NEA==", "requires": { "@types/node": "*", "@types/qs": "*", @@ -179,21 +192,15 @@ "@types/node": "*" } }, - "@types/graphql-upload": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/@types/graphql-upload/-/graphql-upload-8.0.3.tgz", - "integrity": "sha512-hmLg9pCU/GmxBscg8GCr1vmSoEmbItNNxdD5YH2TJkXm//8atjwuprB+xJBK714JG1dkxbbhp5RHX+Pz1KsCMA==", - "requires": { - "@types/express": "*", - "@types/fs-capacitor": "*", - "@types/koa": "*", - "graphql": "^14.5.3" - } - }, "@types/http-assert": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.1.tgz", - "integrity": "sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ==" + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/@types/http-assert/-/http-assert-1.5.3.tgz", + "integrity": "sha512-FyAOrDuQmBi8/or3ns4rwPno7/9tJTijVW6aQQjK02+kOQ8zmoNg2XJtAuQhvQcy1ASJq38wirX5//9J1EqoUA==" + }, + "@types/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-e+2rjEwK6KDaNOm5Aa9wNGgyS9oSZU/4pfSMMPYNOfjvFI0WVXm29+ITRFr6aKDvvKo7uU1jV68MW4ScsfDi7Q==" }, "@types/keygrip": { "version": "1.0.2", @@ -201,14 +208,15 @@ "integrity": "sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw==" }, "@types/koa": { - "version": "2.11.3", - "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.11.3.tgz", - "integrity": "sha512-ABxVkrNWa4O/Jp24EYI/hRNqEVRlhB9g09p48neQp4m3xL1TJtdWk2NyNQSMCU45ejeELMQZBYyfstyVvO2H3Q==", + "version": "2.13.4", + "resolved": "https://registry.npmjs.org/@types/koa/-/koa-2.13.4.tgz", + "integrity": "sha512-dfHYMfU+z/vKtQB7NUrthdAEiSvnLebvBjwHtfFmpZmB7em2N3WVQdHgnFq+xvyVgxW5jKDmjWfLD3lw4g4uTw==", "requires": { "@types/accepts": "*", "@types/content-disposition": "*", "@types/cookies": "*", "@types/http-assert": "*", + "@types/http-errors": "*", "@types/keygrip": "*", "@types/koa-compose": "*", "@types/node": "*" @@ -228,47 +236,38 @@ "integrity": "sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w==" }, "@types/mime": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-2.0.3.tgz", - "integrity": "sha512-Jus9s4CDbqwocc5pOAnh8ShfrnMcPHuJYzVcSUU7lrh8Ni5HuIqX3oilL86p3dlTrk0LzHRCgA/GQ7uNCw6l2Q==" + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==" }, "@types/node": { - "version": "14.0.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.0.27.tgz", - "integrity": "sha512-kVrqXhbclHNHGu9ztnAwSncIgJv/FaxmzXJvGXNdcCpV1b8u1/Mi6z6m0vwy0LzKeXFTPLH0NzwmoJ3fNCIq0g==" - }, - "@types/node-fetch": { - "version": "2.5.7", - "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.7.tgz", - "integrity": "sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw==", - "requires": { - "@types/node": "*", - "form-data": "^3.0.0" - } + "version": "16.11.6", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.6.tgz", + "integrity": "sha512-ua7PgUoeQFjmWPcoo9khiPum3Pd60k4/2ZGXt18sm2Slk0W0xZTqt5Y0Ny1NyBiN1EVQ/+FaF9NcY4Qe6rwk5w==" }, "@types/qs": { - "version": "6.9.4", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.4.tgz", - "integrity": "sha512-+wYo+L6ZF6BMoEjtf8zB2esQsqdV6WsjRK/GP9WOgLPrq87PbNWgIxS76dS5uvl/QXtHGakZmwTznIfcPXcKlQ==" + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" }, "@types/range-parser": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.3.tgz", - "integrity": "sha512-ewFXqrQHlFsgc09MK5jP5iR7vumV/BYayNC6PgJO2LPe8vrnNFyjQjSppfEngITi0qvfKtzFvgKymGheFM9UOA==" + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==" }, "@types/serve-static": { - "version": "1.13.5", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.5.tgz", - "integrity": "sha512-6M64P58N+OXjU432WoLLBQxbA0LRGBCRm7aAGQJ+SMC1IMl0dgRVi9EFfoDcS2a7Xogygk/eGN94CfwU9UF7UQ==", + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", "requires": { - "@types/express-serve-static-core": "*", - "@types/mime": "*" + "@types/mime": "^1", + "@types/node": "*" } }, "@types/ws": { - "version": "7.2.6", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.2.6.tgz", - "integrity": "sha512-Q07IrQUSNpr+cXU4E4LtkSIBPie5GLZyyMC1QtQYRLWz701+XcoVygGUZgvLqElq1nU4ICldMYPnexlBsg3dqQ==", + "version": "7.4.7", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-7.4.7.tgz", + "integrity": "sha512-JQbbmxZTZehdc2iszGKs5oC3NFnjeay7mtAWrdt7qNtAVK0g19muApzAy4bm9byz79xa2ZnO/BOBC2R8RC5Lww==", "requires": { "@types/node": "*" } @@ -279,6 +278,13 @@ "integrity": "sha512-mwEVBDUVODlsQQ5dfuLUS5/Tf7jqUKyhKYHmVi4fPB6bDMOfWvUPJmKgS1Z7Za/sOI3vzWt4+O7yCiL/70MogA==", "requires": { "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "accepts": { @@ -291,65 +297,31 @@ } }, "apollo-cache-control": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.11.1.tgz", - "integrity": "sha512-6iHa8TkcKt4rx5SKRzDNjUIpCQX+7/FlZwD7vRh9JDnM4VH8SWhpj8fUR3CiEY8Kuc4ChXnOY8bCcMju5KPnIQ==", + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/apollo-cache-control/-/apollo-cache-control-0.14.0.tgz", + "integrity": "sha512-qN4BCq90egQrgNnTRMUHikLZZAprf3gbm8rC5Vwmc6ZdLolQ7bFsa769Hqi6Tq/lS31KLsXBLTOsRbfPHph12w==", "requires": { - "apollo-server-env": "^2.4.5", - "apollo-server-plugin-base": "^0.9.1" + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" } }, "apollo-datasource": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.7.2.tgz", - "integrity": "sha512-ibnW+s4BMp4K2AgzLEtvzkjg7dJgCaw9M5b5N0YKNmeRZRnl/I/qBTQae648FsRKgMwTbRQIvBhQ0URUFAqFOw==", - "requires": { - "apollo-server-caching": "^0.5.2", - "apollo-server-env": "^2.4.5" - } - }, - "apollo-engine-reporting": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/apollo-engine-reporting/-/apollo-engine-reporting-2.3.0.tgz", - "integrity": "sha512-SbcPLFuUZcRqDEZ6mSs8uHM9Ftr8yyt2IEu0JA8c3LNBmYXSLM7MHqFe80SVcosYSTBgtMz8mLJO8orhYoSYZw==", - "requires": { - "apollo-engine-reporting-protobuf": "^0.5.2", - "apollo-graphql": "^0.5.0", - "apollo-server-caching": "^0.5.2", - "apollo-server-env": "^2.4.5", - "apollo-server-errors": "^2.4.2", - "apollo-server-plugin-base": "^0.9.1", - "apollo-server-types": "^0.5.1", - "async-retry": "^1.2.1", - "uuid": "^8.0.0" - } - }, - "apollo-engine-reporting-protobuf": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.5.2.tgz", - "integrity": "sha512-4wm9FR3B7UvJxcK/69rOiS5CAJPEYKufeRWb257ZLfX7NGFTMqvbc1hu4q8Ch7swB26rTpkzfsftLED9DqH9qg==", - "requires": { - "@apollo/protobufjs": "^1.0.3" - } - }, - "apollo-env": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/apollo-env/-/apollo-env-0.6.5.tgz", - "integrity": "sha512-jeBUVsGymeTHYWp3me0R2CZRZrFeuSZeICZHCeRflHTfnQtlmbSXdy5E0pOyRM9CU4JfQkKDC98S1YglQj7Bzg==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-datasource/-/apollo-datasource-0.9.0.tgz", + "integrity": "sha512-y8H99NExU1Sk4TvcaUxTdzfq2SZo6uSj5dyh75XSQvbpH6gdAXIW9MaBcvlNC7n0cVPsidHmOcHOWxJ/pTXGjA==", "requires": { - "@types/node-fetch": "2.5.7", - "core-js": "^3.0.1", - "node-fetch": "^2.2.0", - "sha.js": "^2.4.11" + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" } }, "apollo-graphql": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.5.0.tgz", - "integrity": "sha512-YSdF/BKPbsnQpxWpmCE53pBJX44aaoif31Y22I/qKpB6ZSGzYijV5YBoCL5Q15H2oA/v/02Oazh9lbp4ek3eig==", + "version": "0.9.5", + "resolved": "https://registry.npmjs.org/apollo-graphql/-/apollo-graphql-0.9.5.tgz", + "integrity": "sha512-RGt5k2JeBqrmnwRM0VOgWFiGKlGJMfmiif/4JvdaEqhMJ+xqe/9cfDYzXfn33ke2eWixsAbjEbRfy8XbaN9nTw==", "requires": { - "apollo-env": "^0.6.5", - "lodash.sortby": "^4.7.0" + "core-js-pure": "^3.10.2", + "lodash.sortby": "^4.7.0", + "sha.js": "^2.4.11" } }, "apollo-link": { @@ -361,119 +333,150 @@ "ts-invariant": "^0.4.0", "tslib": "^1.9.3", "zen-observable-ts": "^0.8.21" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } + } + }, + "apollo-reporting-protobuf": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.8.0.tgz", + "integrity": "sha512-B3XmnkH6Y458iV6OsA7AhfwvTgeZnFq9nPVjbxmLKnvfkEl8hYADtz724uPa0WeBiD7DSFcnLtqg9yGmCkBohg==", + "requires": { + "@apollo/protobufjs": "1.2.2" } }, "apollo-server": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.16.1.tgz", - "integrity": "sha512-oy9NVRzGwlpQ+W1DwLKRH+KASmodSYpvYIRY5DMAZtGqNmT2zOCpbIZVjBt23SuPB5NhIhhE4ROzoObRv3zy5w==", + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/apollo-server/-/apollo-server-2.25.3.tgz", + "integrity": "sha512-+eUY2//DLkU7RkJLn6CTl1P89/ZMHuUQnWqv8La2iJ2hLT7Me+nMx+hgHl3LqlT/qDstQ8qA45T85FuCayplmQ==", "requires": { - "apollo-server-core": "^2.16.1", - "apollo-server-express": "^2.16.1", + "apollo-server-core": "^2.25.3", + "apollo-server-express": "^2.25.3", "express": "^4.0.0", "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.0" + "graphql-tools": "^4.0.8", + "stoppable": "^1.1.0" } }, "apollo-server-caching": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.5.2.tgz", - "integrity": "sha512-HUcP3TlgRsuGgeTOn8QMbkdx0hLPXyEJehZIPrcof0ATz7j7aTPA4at7gaiFHCo8gk07DaWYGB3PFgjboXRcWQ==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/apollo-server-caching/-/apollo-server-caching-0.7.0.tgz", + "integrity": "sha512-MsVCuf/2FxuTFVhGLK13B+TZH9tBd2qkyoXKKILIiGcZ5CDUEBO14vIV63aNkMkS1xxvK2U4wBcuuNj/VH2Mkw==", "requires": { - "lru-cache": "^5.0.0" + "lru-cache": "^6.0.0" } }, "apollo-server-core": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.16.1.tgz", - "integrity": "sha512-nuwn5ZBbmzPwDetb3FgiFFJlNK7ZBFg8kis/raymrjd3eBGdNcOyMTJDl6J9673X9Xqp+dXQmFYDW/G3G8S1YA==", - "requires": { - "@apollographql/apollo-tools": "^0.4.3", - "@apollographql/graphql-playground-html": "1.6.26", - "@types/graphql-upload": "^8.0.0", + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/apollo-server-core/-/apollo-server-core-2.25.3.tgz", + "integrity": "sha512-Midow3uZoJ9TjFNeCNSiWElTVZlvmB7G7tG6PPoxIR9Px90/v16Q6EzunDIO0rTJHRC3+yCwZkwtf8w2AcP0sA==", + "requires": { + "@apollographql/apollo-tools": "^0.5.0", + "@apollographql/graphql-playground-html": "1.6.27", + "@apollographql/graphql-upload-8-fork": "^8.1.3", + "@josephg/resolvable": "^1.0.0", "@types/ws": "^7.0.0", - "apollo-cache-control": "^0.11.1", - "apollo-datasource": "^0.7.2", - "apollo-engine-reporting": "^2.3.0", - "apollo-server-caching": "^0.5.2", - "apollo-server-env": "^2.4.5", - "apollo-server-errors": "^2.4.2", - "apollo-server-plugin-base": "^0.9.1", - "apollo-server-types": "^0.5.1", - "apollo-tracing": "^0.11.1", + "apollo-cache-control": "^0.14.0", + "apollo-datasource": "^0.9.0", + "apollo-graphql": "^0.9.0", + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0", + "apollo-server-errors": "^2.5.0", + "apollo-server-plugin-base": "^0.13.0", + "apollo-server-types": "^0.9.0", + "apollo-tracing": "^0.15.0", + "async-retry": "^1.2.1", "fast-json-stable-stringify": "^2.0.0", - "graphql-extensions": "^0.12.4", - "graphql-tag": "^2.9.2", - "graphql-tools": "^4.0.0", - "graphql-upload": "^8.0.2", + "graphql-extensions": "^0.15.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^4.0.8", "loglevel": "^1.6.7", + "lru-cache": "^6.0.0", "sha.js": "^2.4.11", - "subscriptions-transport-ws": "^0.9.11", - "ws": "^6.0.0" + "subscriptions-transport-ws": "^0.9.19", + "uuid": "^8.0.0" } }, "apollo-server-env": { - "version": "2.4.5", - "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-2.4.5.tgz", - "integrity": "sha512-nfNhmGPzbq3xCEWT8eRpoHXIPNcNy3QcEoBlzVMjeglrBGryLG2LXwBSPnVmTRRrzUYugX0ULBtgE3rBFNoUgA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/apollo-server-env/-/apollo-server-env-3.1.0.tgz", + "integrity": "sha512-iGdZgEOAuVop3vb0F2J3+kaBVi4caMoxefHosxmgzAbbSpvWehB8Y1QiSyyMeouYC38XNVk5wnZl+jdGSsWsIQ==", "requires": { - "node-fetch": "^2.1.2", + "node-fetch": "^2.6.1", "util.promisify": "^1.0.0" } }, "apollo-server-errors": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.4.2.tgz", - "integrity": "sha512-FeGxW3Batn6sUtX3OVVUm7o56EgjxDlmgpTLNyWcLb0j6P8mw9oLNyAm3B+deHA4KNdNHO5BmHS2g1SJYjqPCQ==" + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/apollo-server-errors/-/apollo-server-errors-2.5.0.tgz", + "integrity": "sha512-lO5oTjgiC3vlVg2RKr3RiXIIQ5pGXBFxYGGUkKDhTud3jMIhs+gel8L8zsEjKaKxkjHhCQAA/bcEfYiKkGQIvA==" }, "apollo-server-express": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.16.1.tgz", - "integrity": "sha512-Oq5YNcaMYnRk6jDmA9LWf8oSd2KHDVe7jQ4wtooAvG9FVUD+FaFBgSkytXHMvtifQh2wdF07Ri8uDLMz6IQjTw==", + "version": "2.25.3", + "resolved": "https://registry.npmjs.org/apollo-server-express/-/apollo-server-express-2.25.3.tgz", + "integrity": "sha512-tTFYn0oKH2qqLwVj7Ez2+MiKleXACODiGh5IxsB7VuYCPMAi9Yl8iUSlwTjQUvgCWfReZjnf0vFL2k5YhDlrtQ==", "requires": { - "@apollographql/graphql-playground-html": "1.6.26", + "@apollographql/graphql-playground-html": "1.6.27", "@types/accepts": "^1.3.5", "@types/body-parser": "1.19.0", - "@types/cors": "^2.8.4", - "@types/express": "4.17.7", + "@types/cors": "2.8.10", + "@types/express": "^4.17.12", + "@types/express-serve-static-core": "^4.17.21", "accepts": "^1.3.5", - "apollo-server-core": "^2.16.1", - "apollo-server-types": "^0.5.1", + "apollo-server-core": "^2.25.3", + "apollo-server-types": "^0.9.0", "body-parser": "^1.18.3", - "cors": "^2.8.4", + "cors": "^2.8.5", "express": "^4.17.1", "graphql-subscriptions": "^1.0.0", - "graphql-tools": "^4.0.0", + "graphql-tools": "^4.0.8", "parseurl": "^1.3.2", - "subscriptions-transport-ws": "^0.9.16", + "subscriptions-transport-ws": "^0.9.19", "type-is": "^1.6.16" + }, + "dependencies": { + "@types/body-parser": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.0.tgz", + "integrity": "sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ==", + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + } } }, "apollo-server-plugin-base": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.9.1.tgz", - "integrity": "sha512-kvrX4Z3FdpjrZdHkyl5iY2A1Wvp4b6KQp00DeZqss7GyyKNUBKr80/7RQgBLEw7EWM7WB19j459xM/TjvW0FKQ==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/apollo-server-plugin-base/-/apollo-server-plugin-base-0.13.0.tgz", + "integrity": "sha512-L3TMmq2YE6BU6I4Tmgygmd0W55L+6XfD9137k+cWEBFu50vRY4Re+d+fL5WuPkk5xSPKd/PIaqzidu5V/zz8Kg==", "requires": { - "apollo-server-types": "^0.5.1" + "apollo-server-types": "^0.9.0" } }, "apollo-server-types": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.5.1.tgz", - "integrity": "sha512-my2cPw+DAb2qVnIuBcsRKGyS28uIc2vjFxa1NpRoJZe9gK0BWUBk7wzXnIzWy3HZ5Er11e/40MPTUesNfMYNVA==", + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/apollo-server-types/-/apollo-server-types-0.9.0.tgz", + "integrity": "sha512-qk9tg4Imwpk732JJHBkhW0jzfG0nFsLqK2DY6UhvJf7jLnRePYsPxWfPiNkxni27pLE2tiNlCwoDFSeWqpZyBg==", "requires": { - "apollo-engine-reporting-protobuf": "^0.5.2", - "apollo-server-caching": "^0.5.2", - "apollo-server-env": "^2.4.5" + "apollo-reporting-protobuf": "^0.8.0", + "apollo-server-caching": "^0.7.0", + "apollo-server-env": "^3.1.0" } }, "apollo-tracing": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.11.1.tgz", - "integrity": "sha512-l7g+uILw7v32GA46IRXIx5XXbZhFI96BhSqrGK9yyvfq+NMcvVZrj3kIhRImPGhAjMdV+5biA/jztabElAbDjg==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/apollo-tracing/-/apollo-tracing-0.15.0.tgz", + "integrity": "sha512-UP0fztFvaZPHDhIB/J+qGuy6hWO4If069MGC98qVs0I8FICIGu4/8ykpX3X3K6RtaQ56EDAWKykCxFv4ScxMeA==", "requires": { - "apollo-server-env": "^2.4.5", - "apollo-server-plugin-base": "^0.9.1" + "apollo-server-env": "^3.1.0", + "apollo-server-plugin-base": "^0.13.0" } }, "apollo-utilities": { @@ -485,6 +488,13 @@ "fast-json-stable-stringify": "^2.0.0", "ts-invariant": "^0.4.0", "tslib": "^1.10.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "array-flatten": { @@ -492,24 +502,14 @@ "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=" }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" - }, "async-retry": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.1.tgz", - "integrity": "sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", "requires": { - "retry": "0.12.0" + "retry": "0.13.1" } }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "backo2": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/backo2/-/backo2-1.0.2.tgz", @@ -574,12 +574,13 @@ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==" }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", "requires": { - "delayed-stream": "~1.0.0" + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" } }, "commander": { @@ -617,10 +618,10 @@ "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" }, - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==" + "core-js-pure": { + "version": "3.19.1", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.19.1.tgz", + "integrity": "sha512-Q0Knr8Es84vtv62ei6/6jXH/7izKmOrtrxH9WJTHLCMAVeU+8TF8z8Nr08CsH4Ot0oJKzBzJJL9SJBYIv7WlfQ==" }, "cors": { "version": "2.8.5", @@ -652,11 +653,6 @@ "object-keys": "^1.0.12" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" - }, "depd": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", @@ -691,21 +687,30 @@ "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" }, "es-abstract": { - "version": "1.17.6", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz", - "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.1.tgz", + "integrity": "sha512-2vJ6tjA/UfqLm2MPs7jxVybLoB8i1t1Jd9R3kISld20sIxPcTbLuggQOUxeWeAvIUkduv/CfMjuh4WmiXr2v9w==", "requires": { + "call-bind": "^1.0.2", "es-to-primitive": "^1.2.1", "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.2.0", - "is-regex": "^1.1.0", - "object-inspect": "^1.7.0", + "has-symbols": "^1.0.2", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.1", + "is-string": "^1.0.7", + "is-weakref": "^1.0.1", + "object-inspect": "^1.11.0", "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimend": "^1.0.1", - "string.prototype.trimstart": "^1.0.1" + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" } }, "es-to-primitive": { @@ -801,20 +806,18 @@ "unpipe": "~1.0.0" } }, - "form-data": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.0.tgz", - "integrity": "sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg==", + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" + "is-callable": "^1.1.3" } }, "forwarded": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.1.2.tgz", - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=" + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" }, "fresh": { "version": "0.5.2", @@ -831,6 +834,25 @@ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, "graceful-fs": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz", @@ -845,27 +867,30 @@ } }, "graphql-extensions": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.12.4.tgz", - "integrity": "sha512-GnR4LiWk3s2bGOqIh6V1JgnSXw2RCH4NOgbCFEWvB6JqWHXTlXnLZ8bRSkCiD4pltv7RHUPWqN/sGh8R6Ae/ag==", + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/graphql-extensions/-/graphql-extensions-0.15.0.tgz", + "integrity": "sha512-bVddVO8YFJPwuACn+3pgmrEg6I8iBuYLuwvxiE+lcQQ7POotVZxm2rgGw0PvVYmWWf3DT7nTVDZ5ROh/ALp8mA==", "requires": { - "@apollographql/apollo-tools": "^0.4.3", - "apollo-server-env": "^2.4.5", - "apollo-server-types": "^0.5.1" + "@apollographql/apollo-tools": "^0.5.0", + "apollo-server-env": "^3.1.0", + "apollo-server-types": "^0.9.0" } }, "graphql-subscriptions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz", - "integrity": "sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/graphql-subscriptions/-/graphql-subscriptions-1.2.1.tgz", + "integrity": "sha512-95yD/tKi24q8xYa7Q9rhQN16AYj5wPbrb8tmHGM3WRc9EBmWrG/0kkMl+tQG8wcEuE9ibR4zyOM31p5Sdr2v4g==", "requires": { - "iterall": "^1.2.1" + "iterall": "^1.3.0" } }, "graphql-tag": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.11.0.tgz", - "integrity": "sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA==" + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/graphql-tag/-/graphql-tag-2.12.6.tgz", + "integrity": "sha512-FdSNcu2QQcWnM2VNvSCCDCVS5PpPqpzgFT8+GXzqJuoDd0CBncxCY278u4mhRO7tMgo2JjgJA5aZ+nWSQ/Z+xg==", + "requires": { + "tslib": "^2.1.0" + } }, "graphql-tools": { "version": "4.0.8", @@ -886,17 +911,6 @@ } } }, - "graphql-upload": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/graphql-upload/-/graphql-upload-8.1.0.tgz", - "integrity": "sha512-U2OiDI5VxYmzRKw0Z2dmfk0zkqMRaecH9Smh1U277gVgVe9Qn+18xqf4skwr4YJszGIh7iQDZ57+5ygOK9sM/Q==", - "requires": { - "busboy": "^0.3.1", - "fs-capacitor": "^2.0.4", - "http-errors": "^1.7.3", - "object-path": "^0.11.4" - } - }, "has": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", @@ -905,10 +919,23 @@ "function-bind": "^1.1.1" } }, - "has-symbols": { + "has-bigints": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==" + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==" + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } }, "http-errors": { "version": "1.8.0", @@ -935,20 +962,63 @@ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, "ipaddr.js": { "version": "1.9.1", "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, "is-callable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz", - "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==" + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" }, "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==" + }, + "is-number-object": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.6.tgz", + "integrity": "sha512-bEVOqiRcvo3zO1+G2lVMy+gkkEm9Yh7cDMRusKKu5ZJKPUYSJwICTKZrNKHA2EbSP0Tu0+6B/emsYNHZyn6K8g==", + "requires": { + "has-tostringtag": "^1.0.0" + } }, "is-promise": { "version": "2.1.0", @@ -956,19 +1026,41 @@ "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=" }, "is-regex": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", - "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "requires": { - "has-symbols": "^1.0.1" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.1.tgz", + "integrity": "sha512-IU0NmyknYZN0rChcKhRO1X8LYz5Isj/Fsqh8NJOSf+N/hCOTwy29F32Ik7a+QszE63IdvmwdTPDd6cZ5pg4cwA==" + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "requires": { + "has-tostringtag": "^1.0.0" } }, "is-symbol": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", - "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "requires": { - "has-symbols": "^1.0.1" + "has-symbols": "^1.0.2" + } + }, + "is-weakref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.1.tgz", + "integrity": "sha512-b2jKc2pQZjaeFYWEf7ScFj+Be1I+PXmlu572Q8coTXZ+LD/QQZ7ShPMst8h16riVgyXTQwUsFEl74mDvc/3MHQ==", + "requires": { + "call-bind": "^1.0.0" } }, "iterall": { @@ -987,9 +1079,9 @@ "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=" }, "loglevel": { - "version": "1.6.8", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.6.8.tgz", - "integrity": "sha512-bsU7+gc9AJ2SqpzxwU3+1fedl8zAntbtC5XYlt3s2j1hJcn2PsXSmgN8TaLG/J1/2mod4+cE/3vNL70/c1RNCA==" + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", + "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==" }, "long": { "version": "4.0.0", @@ -1009,11 +1101,11 @@ } }, "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "requires": { - "yallist": "^3.0.2" + "yallist": "^4.0.0" } }, "media-typer": { @@ -1037,16 +1129,16 @@ "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" }, "mime-db": { - "version": "1.44.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", - "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==" + "version": "1.50.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.50.0.tgz", + "integrity": "sha512-9tMZCDlYHqeERXEHO9f/hKfNXhre5dK2eE/krIvUjZbS2KPcqGDfNShIWS1uW9XOTKQKqK6qbeOci18rbfW77A==" }, "mime-types": { - "version": "2.1.27", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", - "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "version": "2.1.33", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.33.tgz", + "integrity": "sha512-plLElXp7pRDd0bNZHw+nMd52vRYjLwQjygaNg7ddJ2uJtTlmnTCjWuPKxVu6//AdaRuME84SvLW91sIkBqGT0g==", "requires": { - "mime-db": "1.44.0" + "mime-db": "1.50.0" } }, "minimist": { @@ -1078,9 +1170,12 @@ "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" }, "node-fetch": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", - "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==" + "version": "2.6.6", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.6.tgz", + "integrity": "sha512-Z8/6vRlTUChSdIgMa51jxQ4lrw/Jy5SOW10ObaA47/RElsAN2c5Pn8bTgFGWn/ibwzXTE8qwr1Yzx28vsecXEA==", + "requires": { + "whatwg-url": "^5.0.0" + } }, "object-assign": { "version": "4.1.1", @@ -1088,9 +1183,9 @@ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" }, "object-inspect": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", - "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==" + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", + "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" }, "object-keys": { "version": "1.1.1", @@ -1103,23 +1198,24 @@ "integrity": "sha512-YJjNZrlXJFM42wTBn6zgOJVar9KFJvzx6sTWDte8sWZF//cnjl0BxHNpfZx+ZffXX63A9q0b1zsFiBX4g4X5KA==" }, "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" } }, "object.getownpropertydescriptors": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", - "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", "requires": { + "call-bind": "^1.0.2", "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" + "es-abstract": "^1.19.1" } }, "on-finished": { @@ -1154,11 +1250,11 @@ } }, "proxy-addr": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz", - "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "requires": { - "forwarded": "~0.1.2", + "forwarded": "0.2.0", "ipaddr.js": "1.9.1" } }, @@ -1208,9 +1304,9 @@ } }, "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=" + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==" }, "safe-buffer": { "version": "5.2.1", @@ -1299,6 +1395,16 @@ "nanoid": "^2.1.0" } }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, "statuses": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", @@ -1312,49 +1418,44 @@ "graceful-fs": "^4.1.3" } }, + "stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==" + }, "streamsearch": { "version": "0.1.2", "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-0.1.2.tgz", "integrity": "sha1-gIudDlb8Jz2Am6VzOOkpkZoanxo=" }, "string.prototype.trimend": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", - "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "string.prototype.trimstart": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz", - "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.5" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" } }, "subscriptions-transport-ws": { - "version": "0.9.17", - "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.17.tgz", - "integrity": "sha512-hNHi2N80PBz4T0V0QhnnsMGvG3XDFDS9mS6BhZ3R12T6EBywC8d/uJscsga0cVO4DKtXCkCRrWm2sOYrbOdhEA==", + "version": "0.9.19", + "resolved": "https://registry.npmjs.org/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.19.tgz", + "integrity": "sha512-dxdemxFFB0ppCLg10FTtRqH/31FNRL1y1BQv8209MK5I4CwALb7iihQg+7p65lFcIl8MHatINWBLOqpgU4Kyyw==", "requires": { "backo2": "^1.0.2", "eventemitter3": "^3.1.0", "iterall": "^1.2.1", "symbol-observable": "^1.0.4", - "ws": "^5.2.0" - }, - "dependencies": { - "ws": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", - "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", - "requires": { - "async-limiter": "~1.0.0" - } - } + "ws": "^5.2.0 || ^6.0.0 || ^7.0.0" } }, "symbol-observable": { @@ -1367,18 +1468,30 @@ "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==" }, + "tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=" + }, "ts-invariant": { "version": "0.4.4", "resolved": "https://registry.npmjs.org/ts-invariant/-/ts-invariant-0.4.4.tgz", "integrity": "sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA==", "requires": { "tslib": "^1.9.3" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } }, "tslib": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.13.0.tgz", - "integrity": "sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q==" + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, "type-is": { "version": "1.6.18", @@ -1389,20 +1502,32 @@ "mime-types": "~2.1.24" } }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, "unpipe": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" }, "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", "requires": { + "call-bind": "^1.0.0", "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", + "for-each": "^0.3.3", "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" + "object.getownpropertydescriptors": "^2.1.1" } }, "utils-merge": { @@ -1411,36 +1536,59 @@ "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=" }, "uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-fX6Z5o4m6XsXBdli9g7DtWgAx+osMsRRZFKma1mIUsLCz6vRvv+pz5VNbyu9UEDzpMWulZfvpgb/cmDXVulYFQ==" + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" }, "vary": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", + "webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=" + }, + "whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=", + "requires": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "requires": { - "async-limiter": "~1.0.0" + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" } }, + "ws": { + "version": "7.5.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.5.tgz", + "integrity": "sha512-BAkMFcAzl8as1G/hArkxOxq3G7pjUqQ3gzYbLL0/5zNkph70e+lCoxBGnm6AW1+/aiNeV4fnKqZ8m4GZewmH2w==" + }, "xss": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.8.tgz", - "integrity": "sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.10.tgz", + "integrity": "sha512-qmoqrRksmzqSKvgqzN0055UFWY7OKx1/9JWeRswwEVX9fCG5jcYRxa/A2DHcmZX6VJvjzHRQ2STeeVcQkrmLSw==", "requires": { "commander": "^2.20.3", "cssfilter": "0.0.10" } }, "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "zen-observable": { "version": "0.8.15", @@ -1454,6 +1602,13 @@ "requires": { "tslib": "^1.9.3", "zen-observable": "^0.8.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" + } } } } diff --git a/Sources/Apollo/InputValue+Evaluation.swift b/Sources/Apollo/InputValue+Evaluation.swift index f233c837b2..59e64d5bbe 100644 --- a/Sources/Apollo/InputValue+Evaluation.swift +++ b/Sources/Apollo/InputValue+Evaluation.swift @@ -4,7 +4,7 @@ import ApolloAPI import Foundation extension Selection.Field { - func cacheKey(with variables: GraphQLOperation.Variables?) throws -> String { + public func cacheKey(with variables: GraphQLOperation.Variables?) throws -> String { if let arguments = arguments, case let argumentValues = try InputValue.evaluate(arguments, with: variables), argumentValues.apollo.isNotEmpty { diff --git a/Sources/ApolloCodegenLib/ApolloSchemaDownloadConfiguration.swift b/Sources/ApolloCodegenLib/ApolloSchemaDownloadConfiguration.swift index 1f822253b0..db27ea36fe 100644 --- a/Sources/ApolloCodegenLib/ApolloSchemaDownloadConfiguration.swift +++ b/Sources/ApolloCodegenLib/ApolloSchemaDownloadConfiguration.swift @@ -9,7 +9,7 @@ public struct ApolloSchemaDownloadConfiguration { /// The Apollo Schema Registry, which serves as a central hub for managing your graph. case apolloRegistry(_ settings: ApolloRegistrySettings) /// GraphQL Introspection connecting to the specified URL. - case introspection(endpointURL: URL) + case introspection(endpointURL: URL, httpMethod: HTTPMethod = .POST) public struct ApolloRegistrySettings: Equatable { /// The API key to use when retrieving your schema from the Apollo Registry. @@ -33,11 +33,30 @@ public struct ApolloSchemaDownloadConfiguration { self.variant = variant } } + + /// The HTTP request method. This is an option on Introspection schema downloads only. Apollo Registry downloads are always + /// POST requests. + public enum HTTPMethod: Equatable, CustomStringConvertible { + /// Use POST for HTTP requests. This is the default for GraphQL. + case POST + /// Use GET for HTTP requests with the GraphQL query being sent in the query string parameter named in + /// `queryParameterName`. + case GET(queryParameterName: String) + + public var description: String { + switch self { + case .POST: + return "POST" + case .GET: + return "GET" + } + } + } public static func == (lhs: DownloadMethod, rhs: DownloadMethod) -> Bool { switch (lhs, rhs) { - case (.introspection(let lhsURL), introspection(let rhsURL)): - return lhsURL == rhsURL + case (.introspection(let lhsURL, let lhsHTTPMethod), .introspection(let rhsURL, let rhsHTTPMethod)): + return lhsURL == rhsURL && lhsHTTPMethod == rhsHTTPMethod case (.apolloRegistry(let lhsSettings), .apolloRegistry(let rhsSettings)): return lhsSettings == rhsSettings default: diff --git a/Sources/ApolloCodegenLib/ApolloSchemaDownloader.swift b/Sources/ApolloCodegenLib/ApolloSchemaDownloader.swift index 124232b137..7aa61da9b2 100644 --- a/Sources/ApolloCodegenLib/ApolloSchemaDownloader.swift +++ b/Sources/ApolloCodegenLib/ApolloSchemaDownloader.swift @@ -13,6 +13,8 @@ public struct ApolloSchemaDownloader { case couldNotExtractSDLFromRegistryJSON case couldNotCreateSDLDataToWrite(schema: String) case couldNotConvertIntrospectionJSONToSDL(underlying: Error) + case couldNotCreateURLComponentsFromEndpointURL(url: URL) + case couldNotGetURLFromURLComponents(components: URLComponents) public var errorDescription: String? { switch self { @@ -29,7 +31,11 @@ public struct ApolloSchemaDownloader { case .couldNotCreateSDLDataToWrite(let schema): return "Could not convert SDL schema into data to write to the filesystem. Schema: \(schema)" case .couldNotConvertIntrospectionJSONToSDL(let underlying): - return "Could not convert downloaded introspection JSON into SDL format. Underlying error: \(underlying)" + return "Could not convert downloaded introspection JSON into SDL format. Underlying error: \(underlying)" + case .couldNotCreateURLComponentsFromEndpointURL(let url): + return "Could not create URLComponents from \(url) for Introspection." + case .couldNotGetURLFromURLComponents(let components): + return "Could not get URL from \(components)." } } } @@ -43,18 +49,36 @@ public struct ApolloSchemaDownloader { try FileManager.default.apollo.createContainingDirectoryIfNeeded(forPath: configuration.outputURL.path) switch configuration.downloadMethod { - case .introspection(let endpointURL): - try self.downloadViaIntrospection(from: endpointURL, configuration: configuration) + case .introspection(let endpointURL, let httpMethod): + try self.downloadViaIntrospection(from: endpointURL, httpMethod: httpMethod, configuration: configuration) case .apolloRegistry(let settings): try self.downloadFromRegistry(with: settings, configuration: configuration) } } + private static func request(url: URL, + httpMethod: ApolloSchemaDownloadConfiguration.DownloadMethod.HTTPMethod, + headers: [ApolloSchemaDownloadConfiguration.HTTPHeader], + bodyData: Data? = nil) -> URLRequest { + + var request = URLRequest(url: url) + + request.addValue("application/json", forHTTPHeaderField: "Content-Type") + for header in headers { + request.addValue(header.value, forHTTPHeaderField: header.key) + } + + request.httpMethod = String(describing: httpMethod) + request.httpBody = bodyData + + return request + } + // MARK: - Schema Registry static let RegistryEndpoint = URL(string: "https://graphql.api.apollographql.com/api/graphql")! - private static let RegistryDownloadQuery = """ + static let RegistryDownloadQuery = """ query DownloadSchema($graphID: ID!, $variant: String!) { service(id: $graphID) { variant(name: $variant) { @@ -74,27 +98,9 @@ public struct ApolloSchemaDownloader { CodegenLogger.log("Downloading schema from registry", logLevel: .debug) - var variables = [String: String]() - variables["graphID"] = settings.graphID - - if let variant = settings.variant { - variables["variant"] = variant - } - - let body = UntypedGraphQLRequestBodyCreator.requestBody(for: self.RegistryDownloadQuery, - variables: variables, - operationName: "DownloadSchema") - - var urlRequest = URLRequest(url: self.RegistryEndpoint) - urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type") - urlRequest.addValue(settings.apiKey, forHTTPHeaderField: "x-api-key") - for header in configuration.headers { - urlRequest.addValue(header.value, forHTTPHeaderField: header.key) - } - urlRequest.httpMethod = "POST" - urlRequest.httpBody = try JSONSerialization.data(withJSONObject: body, options: [.sortedKeys]) + let urlRequest = try registryRequest(with: settings, headers: configuration.headers) let jsonOutputURL = configuration.outputURL.apollo.parentFolderURL().appendingPathComponent("registry_response.json") - + try URLDownloader().downloadSynchronously(with: urlRequest, to: jsonOutputURL, timeout: configuration.downloadTimeout) @@ -104,6 +110,31 @@ public struct ApolloSchemaDownloader { CodegenLogger.log("Successfully downloaded schema from registry", logLevel: .debug) } + static func registryRequest(with settings: ApolloSchemaDownloadConfiguration.DownloadMethod.ApolloRegistrySettings, + headers: [ApolloSchemaDownloadConfiguration.HTTPHeader]) throws -> URLRequest { + + var variables = [String: String]() + variables["graphID"] = settings.graphID + if let variant = settings.variant { + variables["variant"] = variant + } + + let requestBody = UntypedGraphQLRequestBodyCreator.requestBody(for: self.RegistryDownloadQuery, + variables: variables, + operationName: "DownloadSchema") + let bodyData = try JSONSerialization.data(withJSONObject: requestBody, options: [.sortedKeys]) + + var allHeaders = headers + allHeaders.append(ApolloSchemaDownloadConfiguration.HTTPHeader(key: "x-api-key", value: settings.apiKey)) + + let urlRequest = request(url: self.RegistryEndpoint, + httpMethod: .POST, + headers: allHeaders, + bodyData: bodyData) + + return urlRequest + } + static func convertFromRegistryJSONToSDLFile(jsonFileURL: URL, configuration: ApolloSchemaDownloadConfiguration) throws { let jsonData: Data @@ -143,7 +174,7 @@ public struct ApolloSchemaDownloader { // MARK: - Schema Introspection - private static let IntrospectionQuery = """ + static let IntrospectionQuery = """ query IntrospectionQuery { __schema { queryType { name } @@ -235,21 +266,13 @@ public struct ApolloSchemaDownloader { """ - static func downloadViaIntrospection(from endpointURL: URL, configuration: ApolloSchemaDownloadConfiguration) throws { + static func downloadViaIntrospection(from endpointURL: URL, + httpMethod: ApolloSchemaDownloadConfiguration.DownloadMethod.HTTPMethod, + configuration: ApolloSchemaDownloadConfiguration) throws { + CodegenLogger.log("Downloading schema via introspection from \(endpointURL)", logLevel: .debug) - - var urlRequest = URLRequest(url: endpointURL) - urlRequest.addValue("application/json", forHTTPHeaderField: "Content-Type") - for header in configuration.headers { - urlRequest.addValue(header.value, forHTTPHeaderField: header.key) - } - - let body = UntypedGraphQLRequestBodyCreator.requestBody(for: self.IntrospectionQuery, - variables: nil, - operationName: "IntrospectionQuery") - urlRequest.httpMethod = "POST" - urlRequest.httpBody = try JSONSerialization.data(withJSONObject: body, options: [.sortedKeys]) + let urlRequest = try introspectionRequest(from: endpointURL, httpMethod: httpMethod, headers: configuration.headers) let jsonOutputURL = configuration.outputURL.apollo.parentFolderURL().appendingPathComponent("introspection_response.json") try URLDownloader().downloadSynchronously(with: urlRequest, @@ -260,7 +283,38 @@ public struct ApolloSchemaDownloader { CodegenLogger.log("Successfully downloaded schema via introspection", logLevel: .debug) } - + + static func introspectionRequest(from endpointURL: URL, + httpMethod: ApolloSchemaDownloadConfiguration.DownloadMethod.HTTPMethod, + headers: [ApolloSchemaDownloadConfiguration.HTTPHeader]) throws -> URLRequest { + let urlRequest: URLRequest + + switch httpMethod { + case .POST: + let requestBody = UntypedGraphQLRequestBodyCreator.requestBody(for: self.IntrospectionQuery, + variables: nil, + operationName: "IntrospectionQuery") + let bodyData = try JSONSerialization.data(withJSONObject: requestBody, options: [.sortedKeys]) + urlRequest = request(url: endpointURL, + httpMethod: httpMethod, + headers: headers, + bodyData: bodyData) + + case .GET(let queryParameterName): + guard var components = URLComponents(url: endpointURL, resolvingAgainstBaseURL: true) else { + throw SchemaDownloadError.couldNotCreateURLComponentsFromEndpointURL(url: endpointURL) + } + components.queryItems = [URLQueryItem(name: queryParameterName, value: IntrospectionQuery)] + + guard let url = components.url else { + throw SchemaDownloadError.couldNotGetURLFromURLComponents(components: components) + } + urlRequest = request(url: url, httpMethod: httpMethod, headers: headers) + } + + return urlRequest + } + static func convertFromIntrospectionJSONToSDLFile(jsonFileURL: URL, configuration: ApolloSchemaDownloadConfiguration) throws { let frontend = try ApolloCodegenFrontend() let schema: GraphQLSchema diff --git a/Sources/ApolloCodegenLib/CLIDownloader.swift b/Sources/ApolloCodegenLib/CLIDownloader.swift index 3a512a2181..e68d8d5f9c 100644 --- a/Sources/ApolloCodegenLib/CLIDownloader.swift +++ b/Sources/ApolloCodegenLib/CLIDownloader.swift @@ -6,7 +6,7 @@ import Foundation /// Helper for downloading the CLI Zip file so we don't have to include it in the repo. struct CLIDownloader { /// The URL string for getting the current version of the CLI - static let downloadURLString = "https://install.apollographql.com/legacy-cli/darwin/2.33.6" + static let downloadURLString = "https://install.apollographql.com/legacy-cli/darwin/2.33.9" /// Downloads the appropriate Apollo CLI in a zip file. /// diff --git a/Sources/ApolloCodegenLib/CLIExtractor.swift b/Sources/ApolloCodegenLib/CLIExtractor.swift index b759f1be44..4e9aaa324a 100644 --- a/Sources/ApolloCodegenLib/CLIExtractor.swift +++ b/Sources/ApolloCodegenLib/CLIExtractor.swift @@ -25,7 +25,7 @@ struct CLIExtractor { } } - static let expectedSHASUM = "496b4de6a4a1f5a1c4a093c8d2378054ebf0dc19361a7dad847f82feeccad2be" + static let expectedSHASUM = "cb73089deb2a720a7d2f5a39ad449e1cfbdc22771130cd6e2a405aaa887c343e" /// Checks to see if the CLI has already been extracted and is the correct version, and extracts or re-extracts as necessary /// diff --git a/Sources/ApolloWebSocket/WebSocketTransport.swift b/Sources/ApolloWebSocket/WebSocketTransport.swift index d89383305b..5963df6237 100644 --- a/Sources/ApolloWebSocket/WebSocketTransport.swift +++ b/Sources/ApolloWebSocket/WebSocketTransport.swift @@ -52,7 +52,7 @@ public class WebSocketTransport { private var subscribers = [String: (Result) -> Void]() private var subscriptions : [String: String] = [:] - private let processingQueue = DispatchQueue(label: "com.apollographql.WebSocketTransport") + let processingQueue = DispatchQueue(label: "com.apollographql.WebSocketTransport") fileprivate var reconnected = false diff --git a/Sources/StarWarsAPI/API.swift b/Sources/StarWarsAPI/API.swift index 7816b99a91..ed2bc23eb8 100644 --- a/Sources/StarWarsAPI/API.swift +++ b/Sources/StarWarsAPI/API.swift @@ -1333,6 +1333,7 @@ public final class HeroAndFriendsNamesWithFragmentTwiceQuery: GraphQLQuery { ...CharacterName } ... on Droid { + __typename friends { __typename ...CharacterName @@ -1344,7 +1345,7 @@ public final class HeroAndFriendsNamesWithFragmentTwiceQuery: GraphQLQuery { public let operationName: String = "HeroAndFriendsNamesWithFragmentTwice" - public let operationIdentifier: String? = "e02ef22e116ad1ca35f0298ed3badb60eeb986203f0088575a5f137768c322fc" + public let operationIdentifier: String? = "b5f4eca712a136f0d5d9f96203ef7d03cd119d8388f093f4b78ae124acb904cb" public var queryDocument: String { var document: String = operationDefinition @@ -1527,6 +1528,7 @@ public final class HeroAndFriendsNamesWithFragmentTwiceQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("friends", type: .list(.object(Friend.selections))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("friends", type: .list(.object(Friend.selections))), ] } @@ -2288,6 +2290,7 @@ public final class HeroDetailsInlineConditionalInclusionQuery: GraphQLQuery { hero { __typename ... @include(if: $includeDetails) { + __typename name appearsIn } @@ -2297,7 +2300,7 @@ public final class HeroDetailsInlineConditionalInclusionQuery: GraphQLQuery { public let operationName: String = "HeroDetailsInlineConditionalInclusion" - public let operationIdentifier: String? = "fcd9d7acb4e7c97e3ae5ad3cbf4e83556626149de589f0c2fce2f8ede31b0d90" + public let operationIdentifier: String? = "3091d9d3f1d2374e2f835ce05d332e50b3fe61502d73213b9aa511f0f94f091c" public var includeDetails: Bool @@ -2344,6 +2347,7 @@ public final class HeroDetailsInlineConditionalInclusionQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLBooleanCondition(variableName: "includeDetails", inverted: false, selections: [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("appearsIn", type: .nonNull(.list(.scalar(Episode.self)))), ]), @@ -2410,7 +2414,7 @@ public final class HeroDetailsFragmentConditionalInclusionQuery: GraphQLQuery { public let operationName: String = "HeroDetailsFragmentConditionalInclusion" - public let operationIdentifier: String? = "b31aec7d977249e185922e4cc90318fd2c7197631470904bf937b0626de54b4f" + public let operationIdentifier: String? = "b0fa7927ff93b4a579c3460fb04d093072d34c8018e41197c7e080aeeec5e19b" public var queryDocument: String { var document: String = operationDefinition @@ -2559,6 +2563,7 @@ public final class HeroDetailsFragmentConditionalInclusionQuery: GraphQLQuery { GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("height", type: .scalar(Double.self)), ]), ] @@ -2656,6 +2661,7 @@ public final class HeroDetailsFragmentConditionalInclusionQuery: GraphQLQuery { GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("primaryFunction", type: .scalar(String.self)), ]), ] @@ -2739,6 +2745,7 @@ public final class HeroNameTypeSpecificConditionalInclusionQuery: GraphQLQuery { __typename name @include(if: $includeName) ... on Droid { + __typename name } } @@ -2747,7 +2754,7 @@ public final class HeroNameTypeSpecificConditionalInclusionQuery: GraphQLQuery { public let operationName: String = "HeroNameTypeSpecificConditionalInclusion" - public let operationIdentifier: String? = "4d465fbc6e3731d011025048502f16278307d73300ea9329a709d7e2b6815e40" + public let operationIdentifier: String? = "76aecc75265295818d3990000b17e32d5524ca85a4bc159ae8a3f8ec7ce91cc3" public var episode: Episode? public var includeName: Bool @@ -2859,6 +2866,7 @@ public final class HeroNameTypeSpecificConditionalInclusionQuery: GraphQLQuery { GraphQLBooleanCondition(variableName: "includeName", inverted: false, selections: [ GraphQLField("name", type: .nonNull(.scalar(String.self))), ]), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), ] } @@ -2907,6 +2915,7 @@ public final class HeroFriendsDetailsConditionalInclusionQuery: GraphQLQuery { __typename name ... on Droid { + __typename primaryFunction } } @@ -2916,7 +2925,7 @@ public final class HeroFriendsDetailsConditionalInclusionQuery: GraphQLQuery { public let operationName: String = "HeroFriendsDetailsConditionalInclusion" - public let operationIdentifier: String? = "9bdfeee789c1d22123402a9c3e3edefeb66799b3436289751be8f47905e3babd" + public let operationIdentifier: String? = "8cada231691ff2f5a0a07c54b7332114588f11b947795da345c5b054211fbcfd" public var includeFriendsDetails: Bool @@ -3067,6 +3076,7 @@ public final class HeroFriendsDetailsConditionalInclusionQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("primaryFunction", type: .scalar(String.self)), ] } @@ -3130,6 +3140,7 @@ public final class HeroFriendsDetailsUnconditionalAndConditionalInclusionQuery: __typename name ... on Droid { + __typename primaryFunction } } @@ -3139,7 +3150,7 @@ public final class HeroFriendsDetailsUnconditionalAndConditionalInclusionQuery: public let operationName: String = "HeroFriendsDetailsUnconditionalAndConditionalInclusion" - public let operationIdentifier: String? = "501fcb710e5ffeeab2c65b7935fbded394ffea92e7b5dd904d05d5deab6f39c6" + public let operationIdentifier: String? = "65381a20574db4b458a0821328252deb0da1a107f9ab77c99fb2467e66a5f12d" public var includeFriendsDetails: Bool @@ -3302,6 +3313,7 @@ public final class HeroFriendsDetailsUnconditionalAndConditionalInclusionQuery: GraphQLBooleanCondition(variableName: "includeFriendsDetails", inverted: false, selections: [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("primaryFunction", type: .scalar(String.self)), ]), ] @@ -3360,9 +3372,11 @@ public final class HeroDetailsQuery: GraphQLQuery { __typename name ... on Human { + __typename height } ... on Droid { + __typename primaryFunction } } @@ -3371,7 +3385,7 @@ public final class HeroDetailsQuery: GraphQLQuery { public let operationName: String = "HeroDetails" - public let operationIdentifier: String? = "2b67111fd3a1c6b2ac7d1ef7764e5cefa41d3f4218e1d60cb67c22feafbd43ec" + public let operationIdentifier: String? = "207d29944f5822bff08a07db4a55274ea14035bacfe20699da41a47454f1181e" public var episode: Episode? @@ -3477,6 +3491,7 @@ public final class HeroDetailsQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("height", type: .scalar(Double.self)), ] } @@ -3539,6 +3554,7 @@ public final class HeroDetailsQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("primaryFunction", type: .scalar(String.self)), ] } @@ -3600,7 +3616,7 @@ public final class HeroDetailsWithFragmentQuery: GraphQLQuery { public let operationName: String = "HeroDetailsWithFragment" - public let operationIdentifier: String? = "d20fa2f460058b8eec3d227f2f6088a708cf35dfa2b5ebf1414e34f9674ecfce" + public let operationIdentifier: String? = "b55bd9d56d1b5972345412b6adb88ceb64d6086c8051d2588d8ab701f0ee7c2f" public var queryDocument: String { var document: String = operationDefinition @@ -3742,6 +3758,7 @@ public final class HeroDetailsWithFragmentQuery: GraphQLQuery { GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("height", type: .scalar(Double.self)), ] } @@ -3833,6 +3850,7 @@ public final class HeroDetailsWithFragmentQuery: GraphQLQuery { GraphQLField("name", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("primaryFunction", type: .scalar(String.self)), ] } @@ -5084,19 +5102,23 @@ public final class HeroParentTypeDependentFieldQuery: GraphQLQuery { __typename name ... on Human { + __typename friends { __typename name ... on Human { + __typename height(unit: FOOT) } } } ... on Droid { + __typename friends { __typename name ... on Human { + __typename height(unit: METER) } } @@ -5107,7 +5129,7 @@ public final class HeroParentTypeDependentFieldQuery: GraphQLQuery { public let operationName: String = "HeroParentTypeDependentField" - public let operationIdentifier: String? = "561e22ac4da5209f254779b70e01557fb2fc57916b9914088429ec809e166cad" + public let operationIdentifier: String? = "39eb41b5a9477c36fa529c23d6f0de6ebcc0312daf5bdcfe208d5baec752dc5b" public var episode: Episode? @@ -5213,6 +5235,7 @@ public final class HeroParentTypeDependentFieldQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("friends", type: .list(.object(Friend.selections))), ] } @@ -5322,6 +5345,7 @@ public final class HeroParentTypeDependentFieldQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("height", arguments: ["unit": "FOOT"], type: .scalar(Double.self)), ] } @@ -5386,6 +5410,7 @@ public final class HeroParentTypeDependentFieldQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("friends", type: .list(.object(Friend.selections))), ] } @@ -5495,6 +5520,7 @@ public final class HeroParentTypeDependentFieldQuery: GraphQLQuery { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("height", arguments: ["unit": "METER"], type: .scalar(Double.self)), ] } @@ -5552,9 +5578,11 @@ public final class HeroTypeDependentAliasedFieldQuery: GraphQLQuery { hero(episode: $episode) { __typename ... on Human { + __typename property: homePlanet } ... on Droid { + __typename property: primaryFunction } } @@ -5563,7 +5591,7 @@ public final class HeroTypeDependentAliasedFieldQuery: GraphQLQuery { public let operationName: String = "HeroTypeDependentAliasedField" - public let operationIdentifier: String? = "b5838c22bac1c5626023dac4412ca9b86bebfe16608991fb632a37c44e12811e" + public let operationIdentifier: String? = "eac5a52f9020fc2e9b5dc5facfd6a6295683b8d57ea62ee84254069fcd5e504c" public var episode: Episode? @@ -5656,6 +5684,7 @@ public final class HeroTypeDependentAliasedFieldQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("homePlanet", alias: "property", type: .scalar(String.self)), ] @@ -5707,6 +5736,7 @@ public final class HeroTypeDependentAliasedFieldQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("primaryFunction", alias: "property", type: .scalar(String.self)), ] @@ -5904,14 +5934,17 @@ public final class SearchQuery: GraphQLQuery { search(text: $term) { __typename ... on Human { + __typename id name } ... on Droid { + __typename id name } ... on Starship { + __typename id name } @@ -5921,7 +5954,7 @@ public final class SearchQuery: GraphQLQuery { public let operationName: String = "Search" - public let operationIdentifier: String? = "73536da2eec4d83e6e1003e674cb2299d9da2798f7bd310e57339a6bcd713b77" + public let operationIdentifier: String? = "477b77c476899915498a56ae7bb835667b1e875cb94f6daa7f75e05018be2c3a" public var term: String? @@ -6018,6 +6051,7 @@ public final class SearchQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), @@ -6080,6 +6114,7 @@ public final class SearchQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), @@ -6142,6 +6177,7 @@ public final class SearchQuery: GraphQLQuery { public static var selections: [GraphQLSelection] { return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("id", type: .nonNull(.scalar(GraphQLID.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), @@ -7091,6 +7127,7 @@ public struct CharacterNameAndDroidAppearsIn: GraphQLFragment { __typename name ... on Droid { + __typename appearsIn } } @@ -7161,6 +7198,7 @@ public struct CharacterNameAndDroidAppearsIn: GraphQLFragment { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("appearsIn", type: .nonNull(.list(.scalar(Episode.self)))), ] } @@ -7553,12 +7591,14 @@ public struct CharacterNameWithInlineFragment: GraphQLFragment { fragment CharacterNameWithInlineFragment on Character { __typename ... on Human { + __typename friends { __typename appearsIn } } ... on Droid { + __typename ...CharacterName ...FriendsNames } @@ -7617,6 +7657,7 @@ public struct CharacterNameWithInlineFragment: GraphQLFragment { public static var selections: [GraphQLSelection] { return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("friends", type: .list(.object(Friend.selections))), ] @@ -7712,6 +7753,7 @@ public struct CharacterNameWithInlineFragment: GraphQLFragment { public static var selections: [GraphQLSelection] { return [ + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), @@ -8001,9 +8043,11 @@ public struct HeroDetails: GraphQLFragment { __typename name ... on Human { + __typename height } ... on Droid { + __typename primaryFunction } } @@ -8074,6 +8118,7 @@ public struct HeroDetails: GraphQLFragment { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("height", type: .scalar(Double.self)), ] } @@ -8136,6 +8181,7 @@ public struct HeroDetails: GraphQLFragment { return [ GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("name", type: .nonNull(.scalar(String.self))), + GraphQLField("__typename", type: .nonNull(.scalar(String.self))), GraphQLField("primaryFunction", type: .scalar(String.self)), ] } diff --git a/Sources/StarWarsAPI/graphql/operationIDs.json b/Sources/StarWarsAPI/graphql/operationIDs.json index d08b724f0b..29d4000bce 100644 --- a/Sources/StarWarsAPI/graphql/operationIDs.json +++ b/Sources/StarWarsAPI/graphql/operationIDs.json @@ -31,9 +31,9 @@ "name": "HeroAndFriendsNamesWithFragment", "source": "query HeroAndFriendsNamesWithFragment($episode: Episode) {\n hero(episode: $episode) {\n __typename\n name\n ...FriendsNames\n }\n}\nfragment FriendsNames on Character {\n __typename\n friends {\n __typename\n name\n }\n}" }, - "e02ef22e116ad1ca35f0298ed3badb60eeb986203f0088575a5f137768c322fc": { + "b5f4eca712a136f0d5d9f96203ef7d03cd119d8388f093f4b78ae124acb904cb": { "name": "HeroAndFriendsNamesWithFragmentTwice", - "source": "query HeroAndFriendsNamesWithFragmentTwice($episode: Episode) {\n hero(episode: $episode) {\n __typename\n friends {\n __typename\n ...CharacterName\n }\n ... on Droid {\n friends {\n __typename\n ...CharacterName\n }\n }\n }\n}\nfragment CharacterName on Character {\n __typename\n name\n}" + "source": "query HeroAndFriendsNamesWithFragmentTwice($episode: Episode) {\n hero(episode: $episode) {\n __typename\n friends {\n __typename\n ...CharacterName\n }\n ... on Droid {\n __typename\n friends {\n __typename\n ...CharacterName\n }\n }\n }\n}\nfragment CharacterName on Character {\n __typename\n name\n}" }, "22d772c0fc813281705e8f0a55fc70e71eeff6e98f3f9ef96cf67fb896914522": { "name": "HeroAppearsIn", @@ -59,33 +59,33 @@ "name": "HeroNameConditionalBothSeparate", "source": "query HeroNameConditionalBothSeparate($skipName: Boolean!, $includeName: Boolean!) {\n hero {\n __typename\n name @skip(if: $skipName)\n name @include(if: $includeName)\n }\n}" }, - "fcd9d7acb4e7c97e3ae5ad3cbf4e83556626149de589f0c2fce2f8ede31b0d90": { + "3091d9d3f1d2374e2f835ce05d332e50b3fe61502d73213b9aa511f0f94f091c": { "name": "HeroDetailsInlineConditionalInclusion", - "source": "query HeroDetailsInlineConditionalInclusion($includeDetails: Boolean!) {\n hero {\n __typename\n ... @include(if: $includeDetails) {\n name\n appearsIn\n }\n }\n}" + "source": "query HeroDetailsInlineConditionalInclusion($includeDetails: Boolean!) {\n hero {\n __typename\n ... @include(if: $includeDetails) {\n __typename\n name\n appearsIn\n }\n }\n}" }, - "b31aec7d977249e185922e4cc90318fd2c7197631470904bf937b0626de54b4f": { + "b0fa7927ff93b4a579c3460fb04d093072d34c8018e41197c7e080aeeec5e19b": { "name": "HeroDetailsFragmentConditionalInclusion", - "source": "query HeroDetailsFragmentConditionalInclusion($includeDetails: Boolean!) {\n hero {\n __typename\n ...HeroDetails @include(if: $includeDetails)\n }\n}\nfragment HeroDetails on Character {\n __typename\n name\n ... on Human {\n height\n }\n ... on Droid {\n primaryFunction\n }\n}" + "source": "query HeroDetailsFragmentConditionalInclusion($includeDetails: Boolean!) {\n hero {\n __typename\n ...HeroDetails @include(if: $includeDetails)\n }\n}\nfragment HeroDetails on Character {\n __typename\n name\n ... on Human {\n __typename\n height\n }\n ... on Droid {\n __typename\n primaryFunction\n }\n}" }, - "4d465fbc6e3731d011025048502f16278307d73300ea9329a709d7e2b6815e40": { + "76aecc75265295818d3990000b17e32d5524ca85a4bc159ae8a3f8ec7ce91cc3": { "name": "HeroNameTypeSpecificConditionalInclusion", - "source": "query HeroNameTypeSpecificConditionalInclusion($episode: Episode, $includeName: Boolean!) {\n hero(episode: $episode) {\n __typename\n name @include(if: $includeName)\n ... on Droid {\n name\n }\n }\n}" + "source": "query HeroNameTypeSpecificConditionalInclusion($episode: Episode, $includeName: Boolean!) {\n hero(episode: $episode) {\n __typename\n name @include(if: $includeName)\n ... on Droid {\n __typename\n name\n }\n }\n}" }, - "9bdfeee789c1d22123402a9c3e3edefeb66799b3436289751be8f47905e3babd": { + "8cada231691ff2f5a0a07c54b7332114588f11b947795da345c5b054211fbcfd": { "name": "HeroFriendsDetailsConditionalInclusion", - "source": "query HeroFriendsDetailsConditionalInclusion($includeFriendsDetails: Boolean!) {\n hero {\n __typename\n friends @include(if: $includeFriendsDetails) {\n __typename\n name\n ... on Droid {\n primaryFunction\n }\n }\n }\n}" + "source": "query HeroFriendsDetailsConditionalInclusion($includeFriendsDetails: Boolean!) {\n hero {\n __typename\n friends @include(if: $includeFriendsDetails) {\n __typename\n name\n ... on Droid {\n __typename\n primaryFunction\n }\n }\n }\n}" }, - "501fcb710e5ffeeab2c65b7935fbded394ffea92e7b5dd904d05d5deab6f39c6": { + "65381a20574db4b458a0821328252deb0da1a107f9ab77c99fb2467e66a5f12d": { "name": "HeroFriendsDetailsUnconditionalAndConditionalInclusion", - "source": "query HeroFriendsDetailsUnconditionalAndConditionalInclusion($includeFriendsDetails: Boolean!) {\n hero {\n __typename\n friends {\n __typename\n name\n }\n friends @include(if: $includeFriendsDetails) {\n __typename\n name\n ... on Droid {\n primaryFunction\n }\n }\n }\n}" + "source": "query HeroFriendsDetailsUnconditionalAndConditionalInclusion($includeFriendsDetails: Boolean!) {\n hero {\n __typename\n friends {\n __typename\n name\n }\n friends @include(if: $includeFriendsDetails) {\n __typename\n name\n ... on Droid {\n __typename\n primaryFunction\n }\n }\n }\n}" }, - "2b67111fd3a1c6b2ac7d1ef7764e5cefa41d3f4218e1d60cb67c22feafbd43ec": { + "207d29944f5822bff08a07db4a55274ea14035bacfe20699da41a47454f1181e": { "name": "HeroDetails", - "source": "query HeroDetails($episode: Episode) {\n hero(episode: $episode) {\n __typename\n name\n ... on Human {\n height\n }\n ... on Droid {\n primaryFunction\n }\n }\n}" + "source": "query HeroDetails($episode: Episode) {\n hero(episode: $episode) {\n __typename\n name\n ... on Human {\n __typename\n height\n }\n ... on Droid {\n __typename\n primaryFunction\n }\n }\n}" }, - "d20fa2f460058b8eec3d227f2f6088a708cf35dfa2b5ebf1414e34f9674ecfce": { + "b55bd9d56d1b5972345412b6adb88ceb64d6086c8051d2588d8ab701f0ee7c2f": { "name": "HeroDetailsWithFragment", - "source": "query HeroDetailsWithFragment($episode: Episode) {\n hero(episode: $episode) {\n __typename\n ...HeroDetails\n }\n}\nfragment HeroDetails on Character {\n __typename\n name\n ... on Human {\n height\n }\n ... on Droid {\n primaryFunction\n }\n}" + "source": "query HeroDetailsWithFragment($episode: Episode) {\n hero(episode: $episode) {\n __typename\n ...HeroDetails\n }\n}\nfragment HeroDetails on Character {\n __typename\n name\n ... on Human {\n __typename\n height\n }\n ... on Droid {\n __typename\n primaryFunction\n }\n}" }, "7277e97563e911ac8f5c91d401028d218aae41f38df014d7fa0b037bb2a2e739": { "name": "DroidDetailsWithFragment", @@ -119,21 +119,21 @@ "name": "HeroNameAndAppearsInWithFragment", "source": "query HeroNameAndAppearsInWithFragment($episode: Episode) {\n hero(episode: $episode) {\n __typename\n ...CharacterNameAndAppearsIn\n }\n}\nfragment CharacterNameAndAppearsIn on Character {\n __typename\n name\n appearsIn\n}" }, - "561e22ac4da5209f254779b70e01557fb2fc57916b9914088429ec809e166cad": { + "39eb41b5a9477c36fa529c23d6f0de6ebcc0312daf5bdcfe208d5baec752dc5b": { "name": "HeroParentTypeDependentField", - "source": "query HeroParentTypeDependentField($episode: Episode) {\n hero(episode: $episode) {\n __typename\n name\n ... on Human {\n friends {\n __typename\n name\n ... on Human {\n height(unit: FOOT)\n }\n }\n }\n ... on Droid {\n friends {\n __typename\n name\n ... on Human {\n height(unit: METER)\n }\n }\n }\n }\n}" + "source": "query HeroParentTypeDependentField($episode: Episode) {\n hero(episode: $episode) {\n __typename\n name\n ... on Human {\n __typename\n friends {\n __typename\n name\n ... on Human {\n __typename\n height(unit: FOOT)\n }\n }\n }\n ... on Droid {\n __typename\n friends {\n __typename\n name\n ... on Human {\n __typename\n height(unit: METER)\n }\n }\n }\n }\n}" }, - "b5838c22bac1c5626023dac4412ca9b86bebfe16608991fb632a37c44e12811e": { + "eac5a52f9020fc2e9b5dc5facfd6a6295683b8d57ea62ee84254069fcd5e504c": { "name": "HeroTypeDependentAliasedField", - "source": "query HeroTypeDependentAliasedField($episode: Episode) {\n hero(episode: $episode) {\n __typename\n ... on Human {\n property: homePlanet\n }\n ... on Droid {\n property: primaryFunction\n }\n }\n}" + "source": "query HeroTypeDependentAliasedField($episode: Episode) {\n hero(episode: $episode) {\n __typename\n ... on Human {\n __typename\n property: homePlanet\n }\n ... on Droid {\n __typename\n property: primaryFunction\n }\n }\n}" }, "2a8ad85a703add7d64622aaf6be76b58a1134caf28e4ff6b34dd00ba89541364": { "name": "SameHeroTwice", "source": "query SameHeroTwice {\n hero {\n __typename\n name\n }\n r2: hero {\n __typename\n appearsIn\n }\n}" }, - "73536da2eec4d83e6e1003e674cb2299d9da2798f7bd310e57339a6bcd713b77": { + "477b77c476899915498a56ae7bb835667b1e875cb94f6daa7f75e05018be2c3a": { "name": "Search", - "source": "query Search($term: String) {\n search(text: $term) {\n __typename\n ... on Human {\n id\n name\n }\n ... on Droid {\n id\n name\n }\n ... on Starship {\n id\n name\n }\n }\n}" + "source": "query Search($term: String) {\n search(text: $term) {\n __typename\n ... on Human {\n __typename\n id\n name\n }\n ... on Droid {\n __typename\n id\n name\n }\n ... on Starship {\n __typename\n id\n name\n }\n }\n}" }, "a3734516185da9919e3e66d74fe92b60d65292a1943dc54913f7332637dfdd2a": { "name": "Starship", diff --git a/SwiftScripts/Package.resolved b/SwiftScripts/Package.resolved index 3821721d3b..86d54b0237 100644 --- a/SwiftScripts/Package.resolved +++ b/SwiftScripts/Package.resolved @@ -87,8 +87,8 @@ "repositoryURL": "https://github.com/stephencelis/SQLite.swift.git", "state": { "branch": null, - "revision": "0a9893ec030501a3956bee572d6b4fdd3ae158a1", - "version": "0.12.2" + "revision": "60a65015f6402b7c34b9a924f755ca0a73afeeaa", + "version": "0.13.1" } }, { diff --git a/Tests/ApolloCodegenTests/ApolloSchemaInternalTests.swift b/Tests/ApolloCodegenTests/ApolloSchemaInternalTests.swift index fb3e684ca7..f311c87626 100644 --- a/Tests/ApolloCodegenTests/ApolloSchemaInternalTests.swift +++ b/Tests/ApolloCodegenTests/ApolloSchemaInternalTests.swift @@ -27,5 +27,92 @@ class ApolloSchemaInternalTests: XCTestCase { let postType = try schema.getType(named: "Post") XCTAssertEqual(postType?.name, "Post") } + + func testRequest_givenIntrospectionGETDownload_shouldOutputGETRequest() throws { + let url = ApolloTestSupport.TestURL.mockServer.url + let queryParameterName = "customParam" + let headers: [ApolloSchemaDownloadConfiguration.HTTPHeader] = [ + .init(key: "key1", value: "value1"), + .init(key: "key2", value: "value2") + ] + + let request = try ApolloSchemaDownloader.introspectionRequest(from: url, + httpMethod: .GET(queryParameterName: queryParameterName), + headers: headers) + + XCTAssertEqual(request.httpMethod, "GET") + XCTAssertNil(request.httpBody) + + XCTAssertEqual(request.allHTTPHeaderFields?["Content-Type"], "application/json") + for header in headers { + XCTAssertEqual(request.allHTTPHeaderFields?[header.key], header.value) + } + + var components = URLComponents(url: url, resolvingAgainstBaseURL: true) + components?.queryItems = [URLQueryItem(name: queryParameterName, value: ApolloSchemaDownloader.IntrospectionQuery)] + + XCTAssertNotNil(components?.url) + XCTAssertEqual(request.url, components?.url) + } + + func testRequest_givenIntrospectionPOSTDownload_shouldOutputPOSTRequest() throws { + let url = ApolloTestSupport.TestURL.mockServer.url + let headers: [ApolloSchemaDownloadConfiguration.HTTPHeader] = [ + .init(key: "key1", value: "value1"), + .init(key: "key2", value: "value2") + ] + + let request = try ApolloSchemaDownloader.introspectionRequest(from: url, httpMethod: .POST, headers: headers) + + XCTAssertEqual(request.httpMethod, "POST") + XCTAssertEqual(request.url, url) + + XCTAssertEqual(request.allHTTPHeaderFields?["Content-Type"], "application/json") + for header in headers { + XCTAssertEqual(request.allHTTPHeaderFields?[header.key], header.value) + } + + let requestBody = UntypedGraphQLRequestBodyCreator.requestBody(for: ApolloSchemaDownloader.IntrospectionQuery, + variables: nil, + operationName: "IntrospectionQuery") + let bodyData = try JSONSerialization.data(withJSONObject: requestBody, options: [.sortedKeys]) + + XCTAssertEqual(request.httpBody, bodyData) + } + + func testRequest_givenRegistryDownload_shouldOutputPOSTRequest() throws { + let apiKey = "custom-api-key" + let graphID = "graph-id" + let variant = "a-variant" + let headers: [ApolloSchemaDownloadConfiguration.HTTPHeader] = [ + .init(key: "key1", value: "value1"), + .init(key: "key2", value: "value2"), + ] + + let request = try ApolloSchemaDownloader.registryRequest(with: .init(apiKey: apiKey, + graphID: graphID, + variant: variant), + headers: headers) + + XCTAssertEqual(request.httpMethod, "POST") + XCTAssertEqual(request.url, ApolloSchemaDownloader.RegistryEndpoint) + + XCTAssertEqual(request.allHTTPHeaderFields?["Content-Type"], "application/json") + XCTAssertEqual(request.allHTTPHeaderFields?["x-api-key"], apiKey) + for header in headers { + XCTAssertEqual(request.allHTTPHeaderFields?[header.key], header.value) + } + + let variables: [String: String] = [ + "graphID": graphID, + "variant": variant + ] + let requestBody = UntypedGraphQLRequestBodyCreator.requestBody(for: ApolloSchemaDownloader.RegistryDownloadQuery, + variables: variables, + operationName: "DownloadSchema") + let bodyData = try JSONSerialization.data(withJSONObject: requestBody, options: [.sortedKeys]) + + XCTAssertEqual(request.httpBody, bodyData) + } } diff --git a/Tests/ApolloServerIntegrationTests/StarWarsSubscriptionTests.swift b/Tests/ApolloServerIntegrationTests/StarWarsSubscriptionTests.swift index 54842108a9..8da86d0f78 100644 --- a/Tests/ApolloServerIntegrationTests/StarWarsSubscriptionTests.swift +++ b/Tests/ApolloServerIntegrationTests/StarWarsSubscriptionTests.swift @@ -334,9 +334,9 @@ class StarWarsSubscriptionTests: XCTestCase { // dispatched with a barrier flag to make sure // this is performed after subscription calls concurrentQueue.sync(flags: .barrier) { - // dispatched on the processing queue to make sure + // dispatched on the processing queue with barrier flag to make sure // this is performed after subscribers are processed - self.webSocketTransport.websocket.callbackQueue.async { + self.webSocketTransport.processingQueue.async(flags: .barrier) { _ = self.client.perform(mutation: CreateReviewForEpisodeMutation(episode: .empire, review: ReviewInput(stars: 5, commentary: "The greatest movie ever!"))) } } diff --git a/Tests/ApolloTests/CacheKeyForFieldTests.swift b/Tests/ApolloTests/CacheKeyForFieldTests.swift index ecb62f6d1b..2842fed3e0 100644 --- a/Tests/ApolloTests/CacheKeyForFieldTests.swift +++ b/Tests/ApolloTests/CacheKeyForFieldTests.swift @@ -1,5 +1,5 @@ import XCTest -@testable import Apollo +import Apollo import ApolloAPI import ApolloTestSupport import StarWarsAPI diff --git a/docs/package-lock.json b/docs/package-lock.json index 2b20060198..9164a59320 100644 --- a/docs/package-lock.json +++ b/docs/package-lock.json @@ -22,45 +22,45 @@ } }, "@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.4.0.tgz", - "integrity": "sha512-egi5tL2XbMpPIL4pO8UsnFyJFhBOceknL0qMKus7F0PivxXOFp8cRX9TXkU1beOUG88E5x/AVjCaTH8qvPLvow==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.5.0.tgz", + "integrity": "sha512-0+1mkV4rCYUL+fM3UsPiRHy9HJpbZyXLjWCBE4Ymj/pgEKDuMJ2GlY6IvCY/8Q5hamySp0EMzIpzYP43P/aiUQ==", "requires": { - "@algolia/autocomplete-js": "1.4.0", - "@algolia/autocomplete-shared": "1.4.0" + "@algolia/autocomplete-js": "1.5.0", + "@algolia/autocomplete-shared": "1.5.0" }, "dependencies": { "@algolia/autocomplete-core": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.4.0.tgz", - "integrity": "sha512-8xeQcoFJ8XcfWK8DY1Gzc60LqgpPv/qFSyQoq8i96i6ETs00ILU8U8jm5NADXUdsmh2h0RSzdMFavEq4Q6XVTA==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.5.0.tgz", + "integrity": "sha512-E7+VJwcvwMM8vPeaVn7fNUgix8WHV8A1WUeHDi2KHemCaaGc8lvUnP3QnvhMxiDhTe7OpMEv4o2TBUMyDgThaw==", "requires": { - "@algolia/autocomplete-shared": "1.4.0" + "@algolia/autocomplete-shared": "1.5.0" } }, "@algolia/autocomplete-js": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-js/-/autocomplete-js-1.4.0.tgz", - "integrity": "sha512-BEhby3KfEoKDWKGEJO0ZY1zMdpWbIT1bfH29I8MbUh2CQvLIDjyKkjg7beQ8n9kL7Ml+ySUP70gb9Ndh7pn7dQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-js/-/autocomplete-js-1.5.0.tgz", + "integrity": "sha512-1w2AhDuXuWM/65gjok1/0oGr7DIHk/pQW2pdcnnOpc2bSNcvN0v1+VVX54PtcKTJpwwFNGPCTGnM9PHuWBvRsQ==", "requires": { - "@algolia/autocomplete-core": "1.4.0", - "@algolia/autocomplete-preset-algolia": "1.4.0", - "@algolia/autocomplete-shared": "1.4.0", + "@algolia/autocomplete-core": "1.5.0", + "@algolia/autocomplete-preset-algolia": "1.5.0", + "@algolia/autocomplete-shared": "1.5.0", "preact": "^10.0.0" } }, "@algolia/autocomplete-preset-algolia": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.4.0.tgz", - "integrity": "sha512-dCB8SPVECPOe5pxfJoi779o1OAomar/ZW4teYuzw2oGLR9p9rIG5gnObO+jL8WzDDXZrQtlLZUlLKoH+pqWiRQ==", + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.5.0.tgz", + "integrity": "sha512-iiFxKERGHkvkiupmrFJbvESpP/zv5jSgH714XRiP5LDvUHaYOo4GLAwZCFf2ef/L5tdtPBARvekn6k1Xf33gjA==", "requires": { - "@algolia/autocomplete-shared": "1.4.0" + "@algolia/autocomplete-shared": "1.5.0" } }, "@algolia/autocomplete-shared": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.4.0.tgz", - "integrity": "sha512-r5SBDwJ/nMWyJKu09BEGLQz47GKfXkIxnaJiG8WGCePX34cY/7TdlGq5zqIpfzPtpdjieMJnUigZw5QCfr5TrQ==" + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.5.0.tgz", + "integrity": "sha512-bRSkqHHHSwZYbFY3w9hgMyQRm86Wz27bRaGCbNldLfbk0zUjApmE4ajx+ZCVSLqxvcUEjMqZFJzDsder12eKsg==" } } }, @@ -1050,9 +1050,9 @@ } }, "@babel/plugin-transform-react-constant-elements": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.14.5.tgz", - "integrity": "sha512-NBqLEx1GxllIOXJInJAQbrnwwYJsV3WaMHIcOwD8rhYS0AabTWn7kHdHgPgu5RmHLU0q4DMxhAMu8ue/KampgQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.16.0.tgz", + "integrity": "sha512-OgtklS+p9t1X37eWA4XdvvbZG/3gqzX569gqmo3q4/Ui6qjfTQmOs5UTSrfdD9nVByHhX6Gbm/Pyc4KbwUXGWA==", "requires": { "@babel/helper-plugin-utils": "^7.14.5" } @@ -2480,9 +2480,9 @@ } }, "@tippyjs/react": { - "version": "4.2.5", - "resolved": "https://registry.npmjs.org/@tippyjs/react/-/react-4.2.5.tgz", - "integrity": "sha512-YBLgy+1zznBNbx4JOoOdFXWMLXjBh9hLPwRtq3s8RRdrez2l3tPBRt2m2909wZd9S1KUeKjOOYYsnitccI9I3A==", + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/@tippyjs/react/-/react-4.2.6.tgz", + "integrity": "sha512-91RicDR+H7oDSyPycI13q3b7o4O60wa2oRbjlz2fyRLmHImc4vyDwuUP8NtZaN0VARJY5hybvDYrFzhY9+Lbyw==", "requires": { "tippy.js": "^6.3.1" } @@ -3189,9 +3189,9 @@ } }, "apollo-algolia-autocomplete": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/apollo-algolia-autocomplete/-/apollo-algolia-autocomplete-1.2.1.tgz", - "integrity": "sha512-QE3rTnx2PsQXsLlqdjLDKzOth+pCmYNTvhrV+1yn6wRhHDqE+UEuZsszC8lOTRAIzs+w3vLk2qFC6NPzKwswbw==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/apollo-algolia-autocomplete/-/apollo-algolia-autocomplete-1.3.1.tgz", + "integrity": "sha512-dA7M7MChlApO/lCvGIjj+4voeY4V0LpDy5isoagPuQYtu2A4ZEP3w8oHRrdjnIMReujwDjup3Ml+/uHO9IiZRw==", "requires": { "@algolia/autocomplete-js": "1.1.0", "@algolia/autocomplete-plugin-algolia-insights": "^1.3.0", @@ -3199,9 +3199,9 @@ } }, "apollo-algolia-transform": { - "version": "1.0.36", - "resolved": "https://registry.npmjs.org/apollo-algolia-transform/-/apollo-algolia-transform-1.0.36.tgz", - "integrity": "sha512-CaCEO+d9ylcsmibCeZW9iINyeGoek/kLE+pnCnkesM+BI6Rkd+HTrVFQVzq5bgJP0qeL1mUO6crn7FSdgDq+Vw==", + "version": "1.0.37", + "resolved": "https://registry.npmjs.org/apollo-algolia-transform/-/apollo-algolia-transform-1.0.37.tgz", + "integrity": "sha512-DCCurZDEzZZNRjsUobj8LU1g+6Cxbm3fMvmEz1CK2jCyGZwrG60cBCJO54t7jnKVTeNaKgbmb5BPHKKXZlblKA==", "requires": { "googleapis": "^72.0.0", "lodash": "^4.17.21", @@ -5771,9 +5771,9 @@ } }, "d3": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.1.0.tgz", - "integrity": "sha512-gfc489DnwSwd6Bh+BMhR7lzfFj+Mw+HCXn4OFQwCVQFz6H8jbEt/vWqR5oClpj4uxehJsA7ecRKEVUiKHNL1bg==", + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.1.1.tgz", + "integrity": "sha512-8zkLMwSvUAnfN9pcJDfkuxU0Nvg4RLUD0A4BZN1KxJPtlnCGzMx3xM5cRl4m8fym/Vy8rlq52tl90UF3m91OnA==", "requires": { "d3-array": "3", "d3-axis": "3", @@ -5808,9 +5808,9 @@ } }, "d3-array": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.0.tgz", - "integrity": "sha512-XsImOCdTgRJoP3CIdgqw69++Nau4kPeNkD73HE5GrpKxL6WlUi+QHhQAO19vlMOuJiEMgN97ZC4zyc0dcaqEhQ==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.1.1.tgz", + "integrity": "sha512-33qQ+ZoZlli19IFiQx4QEpf2CBEayMRzhlisJHSCsSUbDXv6ZishqS1x7uFVClKG4Wr7rZVHvaAttoLow6GqdQ==", "requires": { "internmap": "1 - 2" } @@ -6760,9 +6760,9 @@ } }, "dompurify": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.1.tgz", - "integrity": "sha512-xGWt+NHAQS+4tpgbOAI08yxW0Pr256Gu/FNE2frZVTbgrBUn8M7tz7/ktS/LZ2MHeGqz6topj0/xY+y8R5FBFw==" + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.3.3.tgz", + "integrity": "sha512-dqnqRkPMAjOZE0FogZ+ceJNM2dZ3V/yNOuFB7+39qpO93hHhfRpHw3heYQC7DPK9FqbQTfBKUJhiSfz4MvXYwg==" }, "domutils": { "version": "2.8.0", @@ -8191,9 +8191,9 @@ } }, "fbjs": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.17.tgz", - "integrity": "sha1-xNWY6taUkRJlPWWIsBpc3Nn5D90=", + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", + "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", "requires": { "core-js": "^1.0.0", "isomorphic-fetch": "^2.1.1", @@ -8201,7 +8201,7 @@ "object-assign": "^4.1.0", "promise": "^7.1.1", "setimmediate": "^1.0.5", - "ua-parser-js": "^0.7.18" + "ua-parser-js": "^0.7.30" }, "dependencies": { "core-js": { @@ -9865,9 +9865,9 @@ } }, "gatsby-theme-apollo-core": { - "version": "3.0.35", - "resolved": "https://registry.npmjs.org/gatsby-theme-apollo-core/-/gatsby-theme-apollo-core-3.0.35.tgz", - "integrity": "sha512-xVIEqzUDJ63UPz7GCLjxQ7OXpvgpOp8MA8c++o8nwuAfqTpm4vLVGvmPA+CxZsAigMBXn8KrJ7ktYAYb9AaZ5g==", + "version": "3.0.37", + "resolved": "https://registry.npmjs.org/gatsby-theme-apollo-core/-/gatsby-theme-apollo-core-3.0.37.tgz", + "integrity": "sha512-AaNLVXYYR85IxuSD1fe1rigkml0F6Ma2QHyHtvzR+h30hok477dY469RrITPXTkV4MKzZiNRwSFATV7uN4h2Qw==", "requires": { "@apollo/space-kit": "^5.6.0", "@emotion/core": "^10.0.7", @@ -9886,15 +9886,15 @@ } }, "gatsby-theme-apollo-docs": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/gatsby-theme-apollo-docs/-/gatsby-theme-apollo-docs-5.1.0.tgz", - "integrity": "sha512-q6154i7JVWDwiirs1hSQ2ApmZYL78qtmogW0rjg6kaeqM/NjH9UOI09u8VbFhnnnK4sx4OJnrfi+dx77aC6KsA==", + "version": "5.3.8", + "resolved": "https://registry.npmjs.org/gatsby-theme-apollo-docs/-/gatsby-theme-apollo-docs-5.3.8.tgz", + "integrity": "sha512-GB1wDN9bwSPE4Q0jcn8XP0N33SIklhbfsD367nq97I8jj3EIaDzLyzpGQcirspeX3L0mQFSELeLfjJYeJL90Jg==", "requires": { "@jlengstorf/get-share-image": "^0.8.0", "@mdx-js/mdx": "^1.1.0", "@mdx-js/react": "^1.0.27", - "apollo-algolia-autocomplete": "^1.2.0", - "apollo-algolia-transform": "^1.0.36", + "apollo-algolia-autocomplete": "^1.2.1", + "apollo-algolia-transform": "^1.0.37", "classnames": "^2.2.6", "gatsby-plugin-algolia": "^0.20.1", "gatsby-plugin-apollo-onetrust": "github:apollographql/gatsby-plugin-apollo-onetrust", @@ -9911,7 +9911,7 @@ "gatsby-remark-rewrite-relative-links": "^1.0.8", "gatsby-source-filesystem": "^2.0.29", "gatsby-source-git": "^1.0.1", - "gatsby-theme-apollo-core": "^3.0.35", + "gatsby-theme-apollo-core": "^3.0.37", "gatsby-transformer-remark": "^2.6.30", "js-yaml": "^3.13.1", "lodash": "^4.17.21", @@ -9920,7 +9920,7 @@ "rehype-react": "^3.1.0", "remark": "^10.0.1", "remark-react": "^5.0.1", - "remark-typescript": "^0.3.0", + "remark-typescript": "^0.4.0", "simple-git": "^2.7.0", "source-sans-pro": "^3.6.0", "striptags": "^3.1.1", @@ -10454,9 +10454,9 @@ } }, "google-auth-library": { - "version": "7.10.0", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.10.0.tgz", - "integrity": "sha512-ICsqaU+lxMHVlDUzMrfVIEqnARw2AwBiZ/2KnNM6BcTf9Nott+Af87DTIzmlnW865p3REUP2MVL0xkPC3a61aQ==", + "version": "7.10.2", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-7.10.2.tgz", + "integrity": "sha512-M37o9Kxa/TLvOLgF71SXvLeVEP5sbSTmKl1zlIgl72SFy5PtsU3pOdu8G8MIHHpQ3/NZabDI8rQkA9DvQVKkPA==", "requires": { "arrify": "^2.0.0", "base64-js": "^1.3.0", @@ -12196,93 +12196,6 @@ "es-abstract": "^1.18.5", "foreach": "^2.0.5", "has-tostringtag": "^1.0.0" - }, - "dependencies": { - "es-abstract": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.0.tgz", - "integrity": "sha512-oWPrF+7P1nGv/rw9oIInwdkmI1qediEJSvVfHFryBd8mWllCKB5tke3aKyf51J6chgyKmi6mODqdnin2yb88Nw==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } } }, "is-typedarray": { @@ -13431,15 +13344,15 @@ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "mermaid": { - "version": "8.13.2", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.13.2.tgz", - "integrity": "sha512-qTFI7MfC2d+x0Hft5gx063EH9tZg36lERG8o7Zq0Ag+MnO8CgVaMZEU6oA8gzTtTn9upMdy4UlYSLVmavu27cQ==", + "version": "8.13.3", + "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-8.13.3.tgz", + "integrity": "sha512-w6KmDtSzkk856WUVqlBsyLZX0q4Jr35IlxiHTPTaWwMgWHFpI8rEJzcxWoyrpxeT/Rac/vvvSFOZymDTeA0iiA==", "requires": { "@braintree/sanitize-url": "^3.1.0", "d3": "^7.0.0", "dagre": "^0.8.5", "dagre-d3": "^0.6.4", - "dompurify": "2.3.1", + "dompurify": "2.3.3", "graphlib": "^2.1.8", "khroma": "^1.4.1", "moment-mini": "^2.24.0", @@ -15711,9 +15624,9 @@ "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==" }, "preact": { - "version": "10.5.14", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.14.tgz", - "integrity": "sha512-KojoltCrshZ099ksUZ2OQKfbH66uquFoxHSbnwKbTJHeQNvx42EmC7wQVWNuDt6vC5s3nudRHFtKbpY4ijKlaQ==" + "version": "10.5.15", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.5.15.tgz", + "integrity": "sha512-5chK29n6QcJc3m1lVrKQSQ+V7K1Gb8HeQY6FViQ5AxCAEGu3DaHffWNDkC9+miZgsLvbvU9rxbV1qinGHMHzqA==" }, "prelude-ls": { "version": "1.1.2", @@ -17230,9 +17143,9 @@ } }, "remark-typescript": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/remark-typescript/-/remark-typescript-0.3.1.tgz", - "integrity": "sha512-UH3VrAD6HB3JBrPrdKDHmhSb2frDT0OfDTE4P8MI807KWNHkhuA+dKjld9+mYbq+PViy86nUZstpGkHWp5Y6gA==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/remark-typescript/-/remark-typescript-0.4.0.tgz", + "integrity": "sha512-JjMyaZCe1AgAGSgcTUW8vqHcJcWteSAAkEKB+xf7VqefiJfdFgCTjXe7zgYy/nu+78yk8BPIgT0Z51AdFiWRJQ==", "requires": { "@babel/core": "^7.5.5", "@babel/preset-typescript": "^7.3.3", @@ -17457,9 +17370,9 @@ "integrity": "sha512-ndEIpszUHiG4HtDsQLeIuMvRsDnn8c8rYStabochtUeCvfuvNptb5TUbVD68LRAILPX7p9nqQGh4xJgn3EHS/g==" }, "rtl-css-js": { - "version": "1.14.2", - "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.2.tgz", - "integrity": "sha512-t6Wc/wpqm8s3kuXAV6tL/T7VS6n0XszzX58CgCsLj3O2xi9ITSLfzYhtl+GKyxCi/3QEqVctOJQwCiDzb2vteQ==", + "version": "1.14.5", + "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.14.5.tgz", + "integrity": "sha512-+ng7LWVvPjQUdgDVviR6vKi2X4JiBtlw5rdY0UM5/Cj39c2/KDUsY/VxEzGE25m4KR5g0dvuKfrDq7DaoDooIA==", "requires": { "@babel/runtime": "^7.1.2" } @@ -17916,13 +17829,13 @@ "integrity": "sha512-KWcOiKeQj6ZyXx7zq4YxSMgHRlod4czeBQZrPb8OKcohcqAXShm7E20kEMle9WBt26hFcAf0qLOcp5zmY7kOqQ==" }, "simple-git": { - "version": "2.46.0", - "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.46.0.tgz", - "integrity": "sha512-6eumII1vfP4NpRqxZcVWCcIT5xHH6dRyvBZSjkH4dJRDRpv+0f75hrN5ysp++y23Mfr3AbRC/dO2NDbfj1lJpQ==", + "version": "2.47.0", + "resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.47.0.tgz", + "integrity": "sha512-+HfCpqPBEZTPWiW9fPdbiPJDslM22MLqrktfzNKyI2pWaJa6DhfNVx4Mds04KZzVv5vjC9/ksw3y5gVf8ECWDg==", "requires": { "@kwsites/file-exists": "^1.1.1", "@kwsites/promise-deferred": "^1.1.1", - "debug": "^4.3.1" + "debug": "^4.3.2" }, "dependencies": { "debug": { @@ -19275,9 +19188,9 @@ "integrity": "sha512-vJhccZPs965sV/L2sU4oRQVAos0pQXwsvTLkWYdqJ+a8Q5kPFzJTuOFwy7UniPli44NKQGAglksjvOcpo95aZA==" }, "tippy.js": { - "version": "6.3.2", - "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.2.tgz", - "integrity": "sha512-35XVQI7Zl/jHZ51+8eHu/vVRXBjWYGobPm5G9FxOchj4r5dWhghKGS0nm0ARUKZTF96V7pPn7EbXS191NTwldw==", + "version": "6.3.7", + "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", + "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", "requires": { "@popperjs/core": "^2.9.0" } @@ -19528,9 +19441,9 @@ } }, "ua-parser-js": { - "version": "0.7.28", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.28.tgz", - "integrity": "sha512-6Gurc1n//gjp9eQNXjD9O3M/sMwVtN5S8Lv9bvOYBfKfDNiIIhqiyi01vMBO45u4zkDE420w/e0se7Vs+sIg+g==" + "version": "0.7.31", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.31.tgz", + "integrity": "sha512-qLK/Xe9E2uzmYI3qLeOmI0tEOt+TBBQyUIAh4aAgU05FVYzeZrKUdkAZfBNVGRaHVgV0TDkdEngJSw/SyQchkQ==" }, "unbox-primitive": { "version": "1.0.1", @@ -21437,93 +21350,6 @@ "foreach": "^2.0.5", "has-tostringtag": "^1.0.0", "is-typed-array": "^1.1.7" - }, - "dependencies": { - "es-abstract": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.0.tgz", - "integrity": "sha512-oWPrF+7P1nGv/rw9oIInwdkmI1qediEJSvVfHFryBd8mWllCKB5tke3aKyf51J6chgyKmi6mODqdnin2yb88Nw==", - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.2", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.1", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.1", - "object-inspect": "^1.11.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==" - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==" - }, - "is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", - "requires": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - } - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "object-inspect": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.11.0.tgz", - "integrity": "sha512-jp7ikS6Sd3GxQfZJPyH3cjcbJF6GZPClgdV+EFygjFLQ5FmW/dRUnTd9PQ9k0JhoNDabWFbpF1yCdSWCC6gexg==" - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - } } }, "widest-line": { diff --git a/docs/package.json b/docs/package.json index ccc211ca25..b15425e328 100644 --- a/docs/package.json +++ b/docs/package.json @@ -8,7 +8,7 @@ "dependencies": { "gatsby": "2.32.13", "gatsby-plugin-react-svg": "3.1.0", - "gatsby-theme-apollo-docs": "5.1.0", + "gatsby-theme-apollo-docs": "5.3.8", "react": "17.0.2", "react-dom": "17.0.2" } diff --git a/docs/source/api/Apollo/structs/GraphQLField.md b/docs/source/api/Apollo/structs/GraphQLField.md index 568d755b85..5100270cfd 100644 --- a/docs/source/api/Apollo/structs/GraphQLField.md +++ b/docs/source/api/Apollo/structs/GraphQLField.md @@ -15,3 +15,9 @@ public init(_ name: String, arguments: FieldArguments? = nil, type: GraphQLOutputType) ``` + +### `cacheKey(with:)` + +```swift +public func cacheKey(with variables: [String: JSONEncodable]?) throws -> String +``` diff --git a/docs/source/api/ApolloCodegenLib/README.md b/docs/source/api/ApolloCodegenLib/README.md index 8e913b03fe..f8da293d44 100644 --- a/docs/source/api/ApolloCodegenLib/README.md +++ b/docs/source/api/ApolloCodegenLib/README.md @@ -61,6 +61,7 @@ - [CodegenLogger.LogLevel](enums/CodegenLogger.LogLevel/) - [CompilationResult.OperationType](enums/CompilationResult.OperationType/) - [CompilationResult.Selection](enums/CompilationResult.Selection/) +- [DownloadMethod.HTTPMethod](enums/DownloadMethod.HTTPMethod/) - [GraphQLType](enums/GraphQLType/) ## Extensions diff --git a/docs/source/api/ApolloCodegenLib/enums/ApolloSchemaDownloadConfiguration.DownloadMethod.md b/docs/source/api/ApolloCodegenLib/enums/ApolloSchemaDownloadConfiguration.DownloadMethod.md index 76ff4da989..9a315519d2 100644 --- a/docs/source/api/ApolloCodegenLib/enums/ApolloSchemaDownloadConfiguration.DownloadMethod.md +++ b/docs/source/api/ApolloCodegenLib/enums/ApolloSchemaDownloadConfiguration.DownloadMethod.md @@ -17,10 +17,10 @@ case apolloRegistry(_ settings: ApolloRegistrySettings) The Apollo Schema Registry, which serves as a central hub for managing your graph. -### `introspection(endpointURL:)` +### `introspection(endpointURL:httpMethod:)` ```swift -case introspection(endpointURL: URL) +case introspection(endpointURL: URL, httpMethod: HTTPMethod = .POST) ``` GraphQL Introspection connecting to the specified URL. diff --git a/docs/source/api/ApolloCodegenLib/enums/ApolloSchemaDownloader.SchemaDownloadError.md b/docs/source/api/ApolloCodegenLib/enums/ApolloSchemaDownloader.SchemaDownloadError.md index 6c7286994e..5d2d7800e7 100644 --- a/docs/source/api/ApolloCodegenLib/enums/ApolloSchemaDownloader.SchemaDownloadError.md +++ b/docs/source/api/ApolloCodegenLib/enums/ApolloSchemaDownloader.SchemaDownloadError.md @@ -49,6 +49,18 @@ case couldNotCreateSDLDataToWrite(schema: String) case couldNotConvertIntrospectionJSONToSDL(underlying: Error) ``` +### `couldNotCreateURLComponentsFromEndpointURL(url:)` + +```swift +case couldNotCreateURLComponentsFromEndpointURL(url: URL) +``` + +### `couldNotGetURLFromURLComponents(components:)` + +```swift +case couldNotGetURLFromURLComponents(components: URLComponents) +``` + ## Properties ### `errorDescription` diff --git a/docs/source/api/ApolloCodegenLib/enums/DownloadMethod.HTTPMethod.md b/docs/source/api/ApolloCodegenLib/enums/DownloadMethod.HTTPMethod.md new file mode 100644 index 0000000000..349233d7a9 --- /dev/null +++ b/docs/source/api/ApolloCodegenLib/enums/DownloadMethod.HTTPMethod.md @@ -0,0 +1,35 @@ +**ENUM** + +# `DownloadMethod.HTTPMethod` + +```swift +public enum HTTPMethod: Equatable, CustomStringConvertible +``` + +The HTTP request method. This is an option on Introspection schema downloads only. Apollo Registry downloads are always +POST requests. + +## Cases +### `POST` + +```swift +case POST +``` + +Use POST for HTTP requests. This is the default for GraphQL. + +### `GET(queryParameterName:)` + +```swift +case GET(queryParameterName: String) +``` + +Use GET for HTTP requests with the GraphQL query being sent in the query string parameter named in +`queryParameterName`. + +## Properties +### `description` + +```swift +public var description: String +```