Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: apollographql/apollo-server
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: apollo-server@2.9.12
Choose a base ref
...
head repository: apollographql/apollo-server
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: apollo-server@2.14.2
Choose a head ref

Commits on Oct 8, 2018

  1. Copy the full SHA
    5859a57 View commit details
  2. Copy the full SHA
    cbdf403 View commit details
  3. Copy the full SHA
    23903a1 View commit details
  4. Copy the full SHA
    a9429eb View commit details
  5. Implement the per-request manifest-presence test.

    With this commit, the first functioning version of operation registry is in
    place. 🎉
    abernix committed Oct 8, 2018
    Copy the full SHA
    739dea6 View commit details

Commits on Oct 9, 2018

  1. remove private flag from operation-registry

    James Baxley committed Oct 9, 2018
    Copy the full SHA
    81b7542 View commit details

Commits on Oct 11, 2018

  1. Copy the full SHA
    df0604a View commit details
  2. Improve the error handling in the event of fetch failures.

    In particular, the console will be more clear if it's unable to fetch the
    manifest on server startup and errors in the pulsing after the initial fetch
    will be logged until the next successful sync.
    
    Also cleans up some unnecessary catching which was only helpful during
    development.
    abernix committed Oct 11, 2018
    Copy the full SHA
    e995846 View commit details
  3. Enable the configurability of the debug boolean via constructor opt…

    …ions.
    
    The plugin now accepts:
    
    ```
    new ...({
      debug: true
    });
    ```
    
    ...in order to see output about operations being added or removed from the
    known manifest.
    abernix committed Oct 11, 2018
    Copy the full SHA
    62584fd View commit details

Commits on Oct 12, 2018

  1. Copy the full SHA
    f7e8d2a View commit details
  2. (tests) Introduce tests for the operation registry.

    More to come, but something to start with.
    abernix committed Oct 12, 2018
    Copy the full SHA
    5e1ba74 View commit details

Commits on Oct 15, 2018

  1. Cleanup tests and file patterns.

    In terms of not over-exposing and also in terms of not having a test named
    `index.test.js` (which somewhat implies that it will behave the same to an
    `index` file which has special meaning), I've moved the primary class into
    `ApolloServerPluginOperationRegistry.ts`, a file which matches the class's
    name and can be tested as `ApolloServerPluginOperationRegistry.test.ts`.
    abernix committed Oct 15, 2018
    Copy the full SHA
    49e8a3d View commit details

Commits on Oct 16, 2018

  1. (op-reg) Expose an async requestPending method which can be awaited.

    This is most helpful for testing since many elements of the manifest
    fetching, including the fetch itself, happen asynchronously and are
    otherwise difficult to test deterministically.
    
    Internally, this changes the `requestInFlight` from a Boolean to a Promise,
    though that's an implementation detail which should go unnoticed.
    abernix committed Oct 16, 2018
    Copy the full SHA
    7a09ec5 View commit details
  2. (op-reg) Expose a _timesChecked property to assist with testing.

    Knowing, in the most primitive sense possible that the check has been
    attempted is useful for testing.
    abernix committed Oct 16, 2018
    Copy the full SHA
    2e993fe View commit details
  3. (op-reg) Switch to Promise-aware loops, even if unnecessary right now.

    In debugging, it was useful to occasionally `await` the cache operations.
    I don't believe that we should actually await the cache writes, though
    that's certainly debatable, but it seemed worth keeping the `for...of` loop,
    nonetheless.
    abernix committed Oct 16, 2018
    Copy the full SHA
    b193188 View commit details
  4. (op-reg) Generally improve operation registry tests, again!

    This introduces a number of utility functions which should be useful for
    more advanced testing cases and also tests:
    
    * failed initial requests
    * operation purging
    abernix committed Oct 16, 2018
    Copy the full SHA
    111eb0b View commit details

Commits on Oct 22, 2018

  1. (op-reg) Switch to the more common pop and add a comment.

    I could set the length to zero, but I'd rather not create a new array and
    stick to the `const`.
    abernix committed Oct 22, 2018
    Copy the full SHA
    6328f6d View commit details
  2. Copy the full SHA
    acd56d7 View commit details

Commits on Nov 6, 2018

  1. Copy the full SHA
    85359fc View commit details
  2. Copy the full SHA
    310f3b7 View commit details
  3. Copy the full SHA
    53f69b8 View commit details

Commits on Nov 7, 2018

  1. Copy the full SHA
    24ea7c2 View commit details
  2. Copy the full SHA
    8bb5128 View commit details

Commits on Dec 3, 2018

  1. Copy the full SHA
    c67a233 View commit details

Commits on Jan 15, 2019

  1. (opreg) Switch to fast-json-stable-stringify, same as #2065 / ccba8c8.

    I've switched this to the same library used by the main repository for
    consistency and licensing purposes.
    
    The local depdendency by the operation registry will actually go away in a
    future update now that it's supported by the core server implementation.
    abernix committed Jan 15, 2019
    Copy the full SHA
    eff44a0 View commit details

Commits on Jan 24, 2019

  1. Copy the full SHA
    ce92dc4 View commit details
  2. (op-reg): Utilize loglevel-debug to implement DEBUG=-like behavior.

    This way we will still be able to easily toggle the debugging on with an
    environment variable, much in the same way that the `DEBUG` environment
    variable behaves in the https://npm.im/debug module.
    abernix committed Jan 24, 2019
    Copy the full SHA
    857e7bd View commit details
  3. (op-reg): Introduce hashForLogging to prefix log msgs with the op. …

    …hash.
    
    The actual operation hash is quite long, so it's helpful to have a shortened
    version for logging purposes.  8 bytes worth should do the trick for _most_
    intents and purposes.
    abernix committed Jan 24, 2019
    Copy the full SHA
    6dfaeb5 View commit details

Commits on Jan 25, 2019

  1. Copy the full SHA
    8299284 View commit details
  2. Copy the full SHA
    92a01d2 View commit details
  3. Copy the full SHA
    b09a01a View commit details
  4. (op-reg): Use our own in-memory store, rather than sharing the APQ ca…

    …che.
    
    Allowing the APQ cache to be used is setting up users for failure since the
    APQ cache can be configured to be distributed.  This is less than ideal
    since a portion of a distributed cache store might go offline rendering
    operations suddenly unable to be executed, despite being previously valid.
    
    Because of the turn over of the manifest checking, it could take a full pass
    in order to re-populate these, and even that would only happen if the
    manifest was actually changed (since we check the ETag).
    abernix committed Jan 25, 2019
    Copy the full SHA
    e8ed40b View commit details
  5. (op-reg): Mandate storage be an InMemoryLRUCache, not any `KeyValue…

    …Cache`.
    
    It's important that the operation registry utilize a store that's not subject
    to ejections, which some distributed cache stores might be.  Therefore, this
    changes the typing requirements of the store to be an `InMemoryLRUCache`,
    which, when unconfigured, has no ejection configured — despite its name.
    abernix committed Jan 25, 2019
    Copy the full SHA
    29f1d51 View commit details
  6. Avoid re-parsing the query by using the document from the request p…

    …ipeline.
    
    Its unfortunate this wasn't already in place, though part of the
    plugin-to-request-pipeline functionality may have crossed wires with the
    building of this plugin.
    
    Either way, this should be a performance win, _especially_ when used with
    the `documentStore` (which saves parsed/validated documents) which was
    introduced in the below-referenced PR.
    
    Ref: #2211
    abernix committed Jan 25, 2019
    Copy the full SHA
    2d660a9 View commit details
  7. Copy the full SHA
    30c0848 View commit details
  8. (op-reg) Only forbid operations if forbidUnregisteredOperations is …

    …set.
    
    Prior to this commit, the mode this variable describes was the default
    operation for the operation registry plugin.  That said, the documentation
    has already been suggesting that this be set in order to enable this
    behavior.
    
    Having the ability to toggle this behavior is certainly interesting and
    useful since it helps ease into a full operation manifest mode.  While we
    intend on enabling functionality in Apollo Engine to help guide this
    transition, for now, the logging facilities (which are improved in recent
    commits) will allow users to observe the overall behavior of their server in
    terms of operation execution approval/denial.
    abernix committed Jan 25, 2019
    Copy the full SHA
    5eb3cf7 View commit details
  9. Copy the full SHA
    48d26ed View commit details

Commits on Jan 28, 2019

  1. Merge pull request #11 from apollographql/abernix/op-reg-forbid-unreg…

    …istered
    
    op-reg: Only forbid operations if `forbidUnregisteredOperations` is set.
    abernix authored Jan 28, 2019
    Copy the full SHA
    9ec7d04 View commit details
  2. Copy the full SHA
    63e0aad View commit details
  3. (op-reg) Forbid operations when forbidUnregisteredOperations is ena…

    …bled.
    
    This re-lands 956c8f02bc913afe355f40e9179041167a9b8267 which was a
    work-in-progress commit which added logging at the correct places, but
    stopped short of actual enforcement.
    
    Prior to this new functionality, unregistered operations were forbidden by
    default, even if the `forbidUnregisteredOperations` variable which this
    commit (now) implements was `true` or not.
    
    The documentation for the operation registry plugin has always stated that
    this parameter must be set in order to enable this behavior, so this shouldn't
    be interpreted as a breaking change - particularly since the previous
    behavior was an `alpha` release on a pre-1.x version.
    
    This commit makes the implementation more flexible by allowing incremental
    adoption of operation safe-listing since it allows the plugin to be
    installed and the enforcement operation to be observed via logging
    (immediately) and hopefully soon via Apollo Engine.
    
    Finally, for servers that need to selectively enable enforcement, the
    `forbidUnregisteredOperations` parameter accepts a predicate function which
    receives the request's `GraphQLRequestContext` as the first parameter.  This
    will allow implementers to selectively disable the enforcement when, for
    example, a header is present that identifies the requester as a "super-user"
    (or other authorized user who is not subject to operation safe-listing).
    
    For example:
    
    ```
        require("apollo-server-plugin-operation-registry")({
          // De-structure the request context to get the `headers` map.
          forbidUnregisteredOperations({ request: { http: { headers } } }) {
            // If the magic header is in place, allow any unregistered operation.
            // Of course, additional validation is possible!
            if (headers.get('x-let-me-in')) {
              return false;
            }
            // Otherwise, enforce it.
            return true;
          }
        })
    ```
    abernix committed Jan 28, 2019
    Copy the full SHA
    543f230 View commit details

Commits on Jan 29, 2019

  1. Copy the full SHA
    3a948a8 View commit details
  2. op-reg: My own editorial on my own debug message.

    For whatever reason, this sounds better to me now.
    abernix committed Jan 29, 2019
    Copy the full SHA
    3e856c6 View commit details
  3. Apply typing suggestions from @martijnwalraven's feedback.

    I haven't been able to confirm whether this was a win or not though as I'm
    somewhat suspect that the typing was already inferred in other magical ways.
    
    Requesting help! :man-golfing:
    abernix committed Jan 29, 2019
    Copy the full SHA
    9d6b82a View commit details

Commits on Jan 30, 2019

  1. Revert "Apply typing suggestions from @martijnwalraven's feedback." (…

    …for now).
    
    This reverts commit a4e88998636b7e5dd0c3301ea73d6a40016f109d, which we
    haven't been able to concretely prove has any positive typing benefit (both
    @martijnwalraven and I are a bit surprised).
    
    That said, we don't want to introduce additional typing complexities
    unnecessarily, but hopefully this commit will serve as an easy reversion (of
    the reversion!) target if we go in that direction.
    abernix committed Jan 30, 2019
    Copy the full SHA
    0831e69 View commit details

Commits on Feb 12, 2019

  1. Accommodate apollo-server-plugin-operation-registry with necessary …

    …tweaks.
    
    The `apollo-server-plugin-operation-registry` was previously a part of a
    monorepo which was a fork of the `apollo-server` repository which shared all
    the common packages of that repository, in addition to hosting its own
    `apollo-server-plugin-operation-registry` and the types which support that
    package.
    
    Its commit history has been preserved by virtue of a `git filter-branch`
    command, but since that monorepo's root `package.json` hosted the
    `devDependencies` (as is the setup we have with Lerna), and the root's
    `types/` directory hosted some hand-crafted typings, there are some
    additional `devDependencies` and `types` which have brought over from that
    repository manually to support `apollo-server-plugin-operation-registry`.
    
    Finally, the `tsconfig.json`s have been modified to avoid references to
    packages which are no longer a part of the shared repository and are instead
    relied on directly from npm.
    abernix committed Feb 12, 2019
    Copy the full SHA
    7e50c24 View commit details

Commits on Feb 15, 2019

  1. Switch to apollo-graphql for providing the signature transformations.

    As of #2259, the signature
    normalization transformations no longer live in `apollo-engine-reporting`.
    
    They now live in `apollo-graphql` which allows us to drop a large portion of
    the dependency tree since `apollo-engine-reporting` currently depends on
    `apollo-server-core` for its type definitions.
    
    We'll use path-based imports at the moment because not everything is
    exported from the main module of `apollo-graphql` (intentionally).
    abernix committed Feb 15, 2019
    Copy the full SHA
    2046c11 View commit details
  2. Update LICENSE.md for new fast-json-stable-stringify.

    As of #2065, we no longer
    use `json-stable-stringify`, which pulled in `jsonify` — a dependency which
    is licensed under a public-domain license which is not agreeable with some
    organizations.  The `fast-json-stable-stringify` license does not rely on
    `jsonify`.
    
    This swaps the package being licensed, but the license itself is the same
    (MIT).
    abernix committed Feb 15, 2019
    Copy the full SHA
    ecac482 View commit details
  3. Copy the full SHA
    4d4b5d7 View commit details
  4. Copy the full SHA
    f3f50bc View commit details
  5. Switch to non-exact versions of dependencies.

    Since these are no longer packages which are controlled under lerna's exact
    versioning, we don't need to be exact pinning these anymore.
    
    In fact, we should embrace the fact that these can be moved forward on their
    own!
    abernix committed Feb 15, 2019
    Copy the full SHA
    a4a1921 View commit details
Showing with 38,960 additions and 16,955 deletions.
  1. +10 −10 .circleci/config.yml
  2. +11 −0 .github/APOLLO_RELEASE_TEMPLATE.md
  3. +4 −1 .github/CODEOWNERS
  4. +3 −0 .gitignore
  5. +159 −25 CHANGELOG.md
  6. +2 −2 CONTRIBUTING.md
  7. +101 −0 DEVELOPMENT.md
  8. +1 −1 LICENSE
  9. +10 −9 docs/gatsby-config.js
  10. +15,222 −7,917 docs/package-lock.json
  11. +4 −4 docs/package.json
  12. +12 −0 docs/shared/diagrams/federation-architecture.mdx
  13. +1 −0 docs/source/api/apollo-federation.mdx
  14. +99 −12 docs/source/api/apollo-gateway.mdx
  15. +31 −2 docs/source/api/apollo-server.md
  16. +2 −2 docs/source/api/graphql-tools.md
  17. +0 −263 docs/source/data/data.md
  18. +1 −1 docs/source/data/file-uploads.md
  19. +459 −0 docs/source/data/resolvers.mdx
  20. +5 −1 docs/source/data/subscriptions.md
  21. +1 −1 docs/source/deployment/azure-functions.md
  22. +21 −1 docs/source/deployment/lambda.md
  23. +0 −123 docs/source/federation/advanced-features.md
  24. +0 −20 docs/source/federation/concerns.mdx
  25. +0 −237 docs/source/federation/core-concepts.md
  26. +288 −0 docs/source/federation/entities.md
  27. +70 −44 docs/source/federation/errors.md
  28. +4 −3 docs/source/federation/federation-spec.md
  29. +269 −0 docs/source/federation/gateway.mdx
  30. +230 −0 docs/source/federation/implementing-services.mdx
  31. +0 −375 docs/source/federation/implementing.md
  32. +68 −30 docs/source/federation/introduction.mdx
  33. +3 −3 docs/source/federation/metrics.md
  34. +1 −7 docs/source/federation/migrating-from-stitching.md
  35. +22 −0 docs/source/federation/other-servers.md
  36. +71 −0 docs/source/federation/value-types.md
  37. +1 −1 docs/source/getting-started.md
  38. +16 −12 docs/source/index.mdx
  39. +4 −1 docs/source/integrations/middleware.md
  40. +148 −23 docs/source/integrations/plugins.md
  41. +32 −24 docs/source/monitoring/metrics.md
  42. +175 −31 docs/source/performance/apq.md
  43. +3 −3 docs/source/proxy-configuration.md
  44. +2 −2 docs/source/schema/scalars-enums.md
  45. +17 −18 docs/source/schema/schema.md
  46. +1 −1 docs/source/schema/unions-interfaces.md
  47. +11 −3 docs/source/security/authentication.md
  48. +1 −1 docs/source/testing/graphql-playground.md
  49. +3 −3 docs/source/testing/mocking.md
  50. +2 −2 docs/source/why-apollo-server.md
  51. +13 −1 docs/static/_redirects
  52. +8,707 −4,014 package-lock.json
  53. +41 −33 package.json
  54. +3 −3 packages/apollo-cache-control/package.json
  55. +0 −117 packages/apollo-cache-control/src/__tests__/cacheControlExtension.test.ts
  56. +171 −0 packages/apollo-cache-control/src/__tests__/cacheControlPlugin.test.ts
  57. +18 −15 packages/apollo-cache-control/src/__tests__/collectCacheControlHints.ts
  58. +169 −145 packages/apollo-cache-control/src/index.ts
  59. +1 −1 packages/apollo-cache-control/tsconfig.json
  60. +1 −1 packages/apollo-datasource-rest/package.json
  61. +1 −1 packages/apollo-datasource/package.json
  62. +1 −1 packages/apollo-datasource/src/index.ts
  63. +1 −1 packages/apollo-engine-reporting-protobuf/README.md
  64. +97 −0 packages/apollo-engine-reporting-protobuf/package-lock.json
  65. +8 −4 packages/apollo-engine-reporting-protobuf/package.json
  66. +3 −3 packages/apollo-engine-reporting-protobuf/src/index.js
  67. +33 −140 packages/apollo-engine-reporting-protobuf/src/reports.proto
  68. +8 −3 packages/apollo-engine-reporting/package.json
  69. +56 −1 packages/apollo-engine-reporting/src/__tests__/agent.test.ts
  70. +102 −0 packages/apollo-engine-reporting/src/__tests__/durationHistogram.test.ts
  71. +208 −48 packages/apollo-engine-reporting/src/__tests__/{extension.test.ts → plugin.test.ts}
  72. +173 −0 packages/apollo-engine-reporting/src/__tests__/schemaReporter.test.ts
  73. +404 −90 packages/apollo-engine-reporting/src/agent.ts
  74. +80 −0 packages/apollo-engine-reporting/src/durationHistogram.ts
  75. +0 −366 packages/apollo-engine-reporting/src/extension.ts
  76. +0 −85 packages/apollo-engine-reporting/src/federatedExtension.ts
  77. +69 −0 packages/apollo-engine-reporting/src/federatedPlugin.ts
  78. +1 −1 packages/apollo-engine-reporting/src/index.ts
  79. +420 −0 packages/apollo-engine-reporting/src/plugin.ts
  80. +64 −0 packages/apollo-engine-reporting/src/reportingOperationTypes.ts
  81. +190 −0 packages/apollo-engine-reporting/src/schemaReporter.ts
  82. +19 −13 packages/apollo-engine-reporting/src/treeBuilder.ts
  83. +2 −1 packages/apollo-engine-reporting/tsconfig.json
  84. +76 −23 packages/apollo-federation/CHANGELOG.md
  85. +13 −2 packages/apollo-federation/jest.config.js
  86. +4 −4 packages/apollo-federation/package.json
  87. +120 −19 packages/apollo-federation/src/composition/__tests__/composeAndValidate.test.ts
  88. +9 −1 packages/apollo-federation/src/composition/compose.ts
  89. +1 −0 packages/apollo-federation/src/composition/index.ts
  90. +9 −9 packages/apollo-federation/src/composition/normalize.ts
  91. +3 −3 packages/apollo-federation/src/composition/rules.ts
  92. +17 −0 packages/apollo-federation/src/composition/utils.ts
  93. +0 −8 packages/apollo-federation/src/directives.ts
  94. +1 −1 packages/apollo-federation/src/service/printFederatedSchema.ts
  95. +0 −1 packages/apollo-federation/src/types.ts
  96. +127 −36 packages/apollo-gateway/CHANGELOG.md
  97. +11 −1 packages/apollo-gateway/jest.config.js
  98. +10 −8 packages/apollo-gateway/package.json
  99. +35 −21 packages/apollo-gateway/src/FieldSet.ts
  100. +2 −0 packages/apollo-gateway/src/QueryPlan.ts
  101. +8 −3 packages/apollo-gateway/src/__tests__/__fixtures__/schemas/accounts.ts
  102. +34 −0 packages/apollo-gateway/src/__tests__/__fixtures__/schemas/documents.ts
  103. +33 −0 packages/apollo-gateway/src/__tests__/__fixtures__/schemas/index.ts
  104. +54 −3 packages/apollo-gateway/src/__tests__/__fixtures__/schemas/product.ts
  105. +16 −1 packages/apollo-gateway/src/__tests__/__fixtures__/schemas/reviews.ts
  106. +537 −26 packages/apollo-gateway/src/__tests__/buildQueryPlan.test.ts
  107. +136 −19 packages/apollo-gateway/src/__tests__/executeQueryPlan.test.ts
  108. +98 −94 packages/apollo-gateway/src/__tests__/execution-utils.ts
  109. +14 −22 packages/apollo-gateway/src/__tests__/gateway/buildService.test.ts
  110. +23 −7 packages/apollo-gateway/src/__tests__/gateway/executor.test.ts
  111. +62 −22 packages/apollo-gateway/src/__tests__/gateway/lifecycle-hooks.test.ts
  112. +3 −7 packages/apollo-gateway/src/__tests__/gateway/queryPlanCache.test.ts
  113. +5 −9 packages/apollo-gateway/src/__tests__/gateway/reporting.test.ts
  114. +830 −316 packages/apollo-gateway/src/__tests__/integration/abstract-types.test.ts
  115. +19 −33 packages/apollo-gateway/src/__tests__/integration/aliases.test.ts
  116. +36 −68 packages/apollo-gateway/src/__tests__/integration/boolean.test.ts
  117. +7 −5 packages/apollo-gateway/src/__tests__/integration/complex-key.test.ts
  118. +25 −28 packages/apollo-gateway/src/__tests__/integration/custom-directives.test.ts
  119. +5 −19 packages/apollo-gateway/src/__tests__/integration/execution-style.test.ts
  120. +30 −56 packages/apollo-gateway/src/__tests__/integration/fragments.test.ts
  121. +7 −4 packages/apollo-gateway/src/__tests__/integration/list-key.test.ts
  122. +125 −0 packages/apollo-gateway/src/__tests__/integration/logger.test.ts
  123. +5 −19 packages/apollo-gateway/src/__tests__/integration/merge-arrays.test.ts
  124. +4 −4 packages/apollo-gateway/src/__tests__/integration/multiple-key.test.ts
  125. +21 −39 packages/apollo-gateway/src/__tests__/integration/mutations.test.ts
  126. +406 −232 packages/apollo-gateway/src/__tests__/integration/networkRequests.test.ts
  127. +96 −42 packages/apollo-gateway/src/__tests__/integration/nockMocks.ts
  128. +9 −16 packages/apollo-gateway/src/__tests__/integration/provides.test.ts
  129. +230 −12 packages/apollo-gateway/src/__tests__/integration/requires.test.ts
  130. +119 −107 packages/apollo-gateway/src/__tests__/integration/single-service.test.ts
  131. +79 −0 packages/apollo-gateway/src/__tests__/integration/unions.test.ts
  132. +6 −16 packages/apollo-gateway/src/__tests__/integration/value-types.test.ts
  133. +19 −35 packages/apollo-gateway/src/__tests__/integration/variables.test.ts
  134. +38 −0 packages/apollo-gateway/src/__tests__/loadServicesFromRemoteEndpoint.test.ts
  135. +105 −105 packages/apollo-gateway/src/__tests__/matchers/toCallService.ts
  136. +40 −40 packages/apollo-gateway/src/__tests__/matchers/toHaveBeenCalledBefore.ts
  137. +37 −8 packages/apollo-gateway/src/__tests__/matchers/toHaveFetched.ts
  138. +1 −1 packages/apollo-gateway/src/__tests__/matchers/toMatchAST.ts
  139. +307 −36 packages/apollo-gateway/src/buildQueryPlan.ts
  140. +55 −0 packages/apollo-gateway/src/cache.ts
  141. +0 −69 packages/apollo-gateway/src/cachedFetcher.ts
  142. +2 −2 packages/apollo-gateway/src/datasources/LocalGraphQLDataSource.ts
  143. +116 −32 packages/apollo-gateway/src/datasources/RemoteGraphQLDataSource.ts
  144. +308 −30 packages/apollo-gateway/src/datasources/__tests__/RemoteGraphQLDataSource.test.ts
  145. +7 −0 packages/apollo-gateway/src/datasources/__tests__/tsconfig.json
  146. +7 −7 packages/apollo-gateway/src/datasources/types.ts
  147. +25 −90 packages/apollo-gateway/src/executeQueryPlan.ts
  148. +240 −81 packages/apollo-gateway/src/index.ts
  149. +41 −47 packages/apollo-gateway/src/loadServicesFromRemoteEndpoint.ts
  150. +85 −60 packages/apollo-gateway/src/loadServicesFromStorage.ts
  151. +53 −0 packages/apollo-gateway/src/make-fetch-happen.d.ts
  152. +17 −0 packages/apollo-gateway/src/snapshotSerializers/queryPlanSerializer.ts
  153. +27 −0 packages/apollo-gateway/src/utilities/array.ts
  154. +1 −0 packages/apollo-gateway/tsconfig.json
  155. +3 −3 packages/apollo-server-azure-functions/package.json
  156. +1 −1 packages/apollo-server-cache-memcached/package.json
  157. +13 −4 packages/apollo-server-cache-memcached/src/index.ts
  158. +2 −2 packages/apollo-server-cache-redis/package.json
  159. +15 −6 packages/apollo-server-cache-redis/src/RedisCache.ts
  160. +13 −7 packages/apollo-server-cache-redis/src/RedisClusterCache.ts
  161. +5 −3 packages/apollo-server-cache-redis/src/__mocks__/ioredis.ts
  162. +2 −0 packages/apollo-server-caching/README.md
  163. +1 −1 packages/apollo-server-caching/package.json
  164. +10 −4 packages/apollo-server-caching/src/KeyValueCache.ts
  165. +2 −2 packages/apollo-server-caching/src/PrefixingKeyValueCache.ts
  166. +11 −0 packages/apollo-server-caching/src/__tests__/testsuite.ts
  167. +5 −1 packages/apollo-server-caching/src/index.ts
  168. +2 −2 packages/apollo-server-cloud-functions/package.json
  169. +2 −2 packages/apollo-server-cloud-functions/src/ApolloServer.ts
  170. +1 −1 packages/apollo-server-cloud-functions/src/__tests__/googleCloudApollo.test.ts
  171. +2 −2 packages/apollo-server-cloudflare/package.json
  172. +5 −4 packages/apollo-server-core/package.json
  173. +235 −140 packages/apollo-server-core/src/ApolloServer.ts
  174. +93 −0 packages/apollo-server-core/src/__tests__/ApolloServerBase.test.ts
  175. +105 −0 packages/apollo-server-core/src/__tests__/dataSources.test.ts
  176. +137 −0 packages/apollo-server-core/src/__tests__/logger.test.ts
  177. +1 −1 packages/apollo-server-core/src/__tests__/runHttpQuery.test.ts
  178. +681 −11 packages/apollo-server-core/src/__tests__/runQuery.test.ts
  179. +14 −1 packages/apollo-server-core/src/graphqlOptions.ts
  180. +1 −1 packages/apollo-server-core/src/playground.ts
  181. +246 −102 packages/apollo-server-core/src/requestPipeline.ts
  182. +11 −9 packages/apollo-server-core/src/runHttpQuery.ts
  183. +13 −1 packages/apollo-server-core/src/types.ts
  184. +35 −23 packages/apollo-server-core/src/utils/dispatcher.ts
  185. +186 −0 packages/apollo-server-core/src/utils/pluginTestHarness.ts
  186. +3 −2 packages/apollo-server-core/src/utils/schemaHash.ts
  187. +172 −0 packages/apollo-server-core/src/utils/schemaInstrumentation.ts
  188. +2 −2 packages/apollo-server-env/package.json
  189. +2 −2 packages/apollo-server-errors/package.json
  190. +4 −4 packages/apollo-server-express/package.json
  191. +1 −1 packages/apollo-server-express/src/ApolloServer.ts
  192. +19 −12 packages/apollo-server-express/src/__tests__/datasource.test.ts
  193. +3 −3 packages/apollo-server-fastify/package.json
  194. +2 −2 packages/apollo-server-hapi/package.json
  195. +0 −1 packages/apollo-server-hapi/src/__tests__/hapiApollo.test.ts
  196. +1 −1 packages/apollo-server-integration-testsuite/package.json
  197. +397 −71 packages/apollo-server-integration-testsuite/src/ApolloServer.ts
  198. +300 −16 packages/apollo-server-integration-testsuite/src/index.ts
  199. +3 −3 packages/apollo-server-koa/package.json
  200. +16 −9 packages/apollo-server-koa/src/__tests__/datasource.test.ts
  201. +1 −1 packages/apollo-server-lambda/README.md
  202. +2 −2 packages/apollo-server-lambda/package.json
  203. +61 −6 packages/apollo-server-lambda/src/ApolloServer.ts
  204. +162 −6 packages/apollo-server-lambda/src/__tests__/lambdaApollo.test.ts
  205. +15 −4 packages/apollo-server-lambda/src/lambdaApollo.ts
  206. +3 −2 packages/apollo-server-micro/README.md
  207. +1 −1 packages/apollo-server-micro/package.json
  208. +2 −2 packages/apollo-server-plugin-base/package.json
  209. +77 −34 packages/apollo-server-plugin-base/src/index.ts
  210. +30 −0 packages/apollo-server-plugin-operation-registry/CHANGELOG.md
  211. +86 −0 packages/apollo-server-plugin-operation-registry/README.md
  212. BIN packages/apollo-server-plugin-operation-registry/img/clients-page.png
  213. +10 −0 packages/apollo-server-plugin-operation-registry/jest.config.js
  214. +31 −0 packages/apollo-server-plugin-operation-registry/package.json
  215. +317 −0 packages/apollo-server-plugin-operation-registry/src/ApolloServerPluginOperationRegistry.ts
  216. +304 −0 ...apollo-server-plugin-operation-registry/src/__tests__/ApolloServerPluginOperationRegistry.test.ts
  217. +473 −0 packages/apollo-server-plugin-operation-registry/src/__tests__/agent.test.ts
  218. +15 −0 packages/apollo-server-plugin-operation-registry/src/__tests__/common.test.ts
  219. +119 −0 packages/apollo-server-plugin-operation-registry/src/__tests__/helpers.test-helpers.ts
  220. +12 −0 packages/apollo-server-plugin-operation-registry/src/__tests__/jestSetup.ts
  221. +7 −0 packages/apollo-server-plugin-operation-registry/src/__tests__/tsconfig.json
  222. +342 −0 packages/apollo-server-plugin-operation-registry/src/agent.ts
  223. +74 −0 packages/apollo-server-plugin-operation-registry/src/common.ts
  224. +21 −0 packages/apollo-server-plugin-operation-registry/src/fetchIfNoneMatch.ts
  225. +3 −0 packages/apollo-server-plugin-operation-registry/src/index.ts
  226. +32 −0 packages/apollo-server-plugin-operation-registry/src/schema.ts
  227. +14 −0 packages/apollo-server-plugin-operation-registry/tsconfig.json
  228. +2 −2 packages/apollo-server-plugin-response-cache/package.json
  229. +4 −2 packages/apollo-server-plugin-response-cache/src/ApolloServerPluginResponseCache.ts
  230. +2 −2 packages/apollo-server-testing/package.json
  231. +2 −2 packages/apollo-server-types/package.json
  232. +117 −8 packages/apollo-server-types/src/index.ts
  233. +2 −2 packages/apollo-server/package.json
  234. +2 −0 packages/apollo-server/src/index.ts
  235. +5 −6 packages/apollo-tracing/README.md
  236. +3 −3 packages/apollo-tracing/package.json
  237. +96 −86 packages/apollo-tracing/src/index.ts
  238. +1 −1 packages/apollo-tracing/tsconfig.json
  239. +5 −4 packages/graphql-extensions/package.json
  240. +9 −0 renovate.json5
  241. +1 −0 tsconfig.build.json
  242. +1 −0 tsconfig.test.json
20 changes: 10 additions & 10 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
@@ -4,7 +4,7 @@ version: 2.1
# across projects. See https://circleci.com/orbs/ for more information.
orbs:
# `oss` is a local reference to the package. The source for Apollo Orbs can
# be found at http://github.com/apollographql/CircleCI-Orbs.
# be found at http://github.com/apollographql/CircleCI-Orbs/.
oss: apollo/oss-ci-cd-tooling@0.0.5

commands:
@@ -22,7 +22,7 @@ commands:
- run:
command: npm run test:ci
environment:
JEST_JUNIT_OUTPUT: "reports/junit/js-test-results.xml"
JEST_JUNIT_OUTPUT_DIR: "reports/junit/"
- run: npm run coverage:upload
- store_test_results:
path: reports/junit
@@ -37,10 +37,10 @@ jobs:
# at https://hub.docker.com/r/circleci/node/.

# NODE: Note certain tests are currently being skipped for Node.js 6.
NodeJS 6:
executor: { name: oss/node, tag: '6' }
steps:
- common_test_steps
# NodeJS 6:
# executor: { name: oss/node, tag: '6' }
# steps:
# - common_test_steps

NodeJS 8:
executor: { name: oss/node, tag: '8' }
@@ -92,8 +92,8 @@ workflows:
version: 2
Build:
jobs:
- NodeJS 6:
<<: *common_non_publish_filters
# - NodeJS 6:
# <<: *common_non_publish_filters
- NodeJS 8:
<<: *common_non_publish_filters
- NodeJS 10:
@@ -104,15 +104,15 @@ workflows:
name: Package tarballs
<<: *common_non_publish_filters
requires:
- NodeJS 6
# - NodeJS 6
- NodeJS 8
- NodeJS 10
- NodeJS 12
- oss/dry_run:
name: Dry-run
<<: *common_publish_filters
requires:
- NodeJS 6
# - NodeJS 6
- NodeJS 8
- NodeJS 10
- NodeJS 12
11 changes: 11 additions & 0 deletions .github/APOLLO_RELEASE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Release X.Y.Z

As with [release PRs in the past](https://github.com/apollographql/apollo-server/issues?q=label%3A%22%F0%9F%8F%97+release%22+is%3Aclosed), this is a PR tracking a `release-x.y.z` branch for an upcoming release of Apollo Server. 🙌 The version in the title of this PR should correspond to the appropriate branch.

Check the appropriate milestone (to the right) for more details on what we hope to get into this release!

The intention of these release branches is to gather changes which are intended to land in a specific version (again, indiciated by the subject of this PR). Release branches allow additional clarity into what is being staged, provide a forum for comments from the community pertaining to the release's stability, and to facilitate the creation of pre-releases (e.g. `alpha`, `beta`, `rc`) without affecting the `master` branch.

PRs for new features might be opened against or re-targeted to this branch by the project maintainers. The `master` branch may be periodically merged into this branch up until the point in time that this branch is being prepared for release. Depending on the size of the release, this may be once it reaches RC (release candidate) stage with an `-rc.x` release suffix. Some less substantial releases may be short-lived and may never have pre-release versions.

When this version is officially released onto the `latest` npm tag, this PR will be merged into `master`.
5 changes: 4 additions & 1 deletion .github/CODEOWNERS
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
/docs/ @stephenbarlow @abernix @trevor-scheer
# The renovate-approve bot is allowed to merge its own PRs. As it's not
# a regular GitHub user (but rather, an app!), its username is indicated
# as such, using the `app/` prefix. https://github.com/apps/renovate-approve
/docs/ app/renovate-approve @stephenbarlow @abernix @trevor-scheer

# Changes to the federation specification should be further reviewed.
# Most importantly because they require messaging and awareness to
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -23,3 +23,6 @@ node_modules/

# Mac OS
.DS_Store

# Intellij Configuration Files
.idea/
Loading