-
Notifications
You must be signed in to change notification settings - Fork 2k
Comparing changes
Open a pull request
base repository: apollographql/apollo-server
base: apollo-server@2.21.2
head repository: apollographql/apollo-server
compare: apollo-server@2.22.0
- 14 commits
- 72 files changed
- 6 contributors
Commits on Mar 18, 2021
-
Merge pull request #5037 from apollographql/release-2.21.2
Release 2.21.2
Configuration menu - View commit details
-
Copy full SHA for fe1bac4 - Browse repository at this point
Copy the full SHA fe1bac4View commit details
Commits on Mar 19, 2021
-
docs: built-in uploads don't support Node 14, consider not using it (#…
…5039) Also actually document the uploads option. Co-authored-by: Stephen Barlow <stephen@apollographql.com>
Configuration menu - View commit details
-
Copy full SHA for ecdca62 - Browse repository at this point
Copy the full SHA ecdca62View commit details -
Remove an old link and improve language some
Stephen Barlow authored and Stephen Barlow committedMar 19, 2021 Configuration menu - View commit details
-
Copy full SHA for ea9e4a8 - Browse repository at this point
Copy the full SHA ea9e4a8View commit details -
Stephen Barlow authored and Stephen Barlow committed
Mar 19, 2021 Configuration menu - View commit details
-
Copy full SHA for c0008d6 - Browse repository at this point
Copy the full SHA c0008d6View commit details -
Merge pull request #5043 from apollographql/sb/auth-tweaks
Remove an old link and improve language some
Stephen Barlow authoredMar 19, 2021 Configuration menu - View commit details
-
Copy full SHA for 0b83fd2 - Browse repository at this point
Copy the full SHA 0b83fd2View commit details
Commits on Mar 20, 2021
-
chore(deps): update dependency @types/express-serve-static-core to v4…
….17.19 (#5045) Co-authored-by: Renovate Bot <bot@renovateapp.com>
Configuration menu - View commit details
-
Copy full SHA for b081cd0 - Browse repository at this point
Copy the full SHA b081cd0View commit details -
chore(deps): update dependency @types/micro to v7.3.4 (#5046)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Configuration menu - View commit details
-
Copy full SHA for 99ade0f - Browse repository at this point
Copy the full SHA 99ade0fView commit details -
chore(deps): update dependency ts-jest to v26.5.4 (#5047)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Configuration menu - View commit details
-
Copy full SHA for bbb5d3c - Browse repository at this point
Copy the full SHA bbb5d3cView commit details
Commits on Mar 21, 2021
-
chore(deps): update dependency @types/ioredis to v4.22.1 (#5048)
Co-authored-by: Renovate Bot <bot@renovateapp.com>
Configuration menu - View commit details
-
Copy full SHA for dfb8672 - Browse repository at this point
Copy the full SHA dfb8672View commit details -
Configuration menu - View commit details
-
Copy full SHA for 91d779a - Browse repository at this point
Copy the full SHA 91d779aView commit details
Commits on Mar 22, 2021
-
Add async server.start() function (#4981)
Previously, server startup worked like this: - `new ApolloServer` - If no gateway, calculate schema and schema derived data immediately - If gateway, kick off gateway.load from the end of the constructor, and if it async-throws, log an error once and make the server kinda broken forever - At various spots in the framework integration code, call (but don't await) the protected `willStart` function, which is an async function that first waits for the gateway to load the schema if necessary and then runs serverWillStart plugin functions; save the Promise returned by calling this. - At request time in the framework integration code, await that Promise. And also, if there's no schema, fail with an error. Now server startup works like this: - ApolloServer represents its state explicitly with a new ServerState - `new ApolloServer` - If no gateway, initialize all the schema-derived state directly like before (though the state now lives inside ServerState) - If gateway, the constructor DOES NOT KICK OFF `gateway.load()` - You can now call `await server.start()` yourself, which will first await `gateway.load` if necessary, and then await all serverWillStart calls. - If you're using `apollo-server` rather than an integration, `server.listen()` will just transparently do this for you; explicit `start()` is just for integrations! - Serverless frameworks also call it automatically for you in the background (kicked off by the constructor) because their startup has to be synchronous; if it fails then future requests will all fail (and log) as before. - The integration places that used to call willStart now call `server.ensureStarting()` instead which will kick off server.start in the background if you didn't (and log any errors thrown). - The places that used to await promiseWillStart no longer do so; generally right after that code we end up calling `graphqlServerOptions` - `graphqlServerOptions` now awaits `server.ensureStarted` which will start the server if necessary and throw if it threw. The overall change to user experience: - If you're using `apollo-server`, startup errors will cause `listen` to reject; no code changes are necessary. - If you're using a serverless integration, the behavior will be relatively similar, except that the startup error will be logged on all requests instead of just the first one. - If you're using an integration you are encouraged to call `await server.start()` yourself immediately after the constructor, which will let you detect startup errors. - But if you don't do that, the server will call `start` itself eventually. When you try to execute your first GraphQL request, `start` will happen if it hasn't already. Also an integration call like `server.applyMiddleware` will initiate a background `start`. If startup fails, the startup error will be logged on *every* failed graphql request, not just the first time like happened before. - If you have your own ApolloServer subclass that calls the protected `willStart` method, it will still work (the method isn't deleted) but you should rewrite it to either `await this.start()` or `this.ensureStarting()` instead. This is close enough to backwards-compatible to be appropriate for a v2 minor release. We are likely to make `start()` required in Apollo Server 3 for non-serverless integrations. Also: - Previously we used the deprecated `ApolloServer.schema` field to determine whether to install ApolloServerPluginInlineTrace, which we want to have active by default for federated schemas only. If you're using a gateway, this field isn't actually set at the time that ensurePluginInstantiation reads it. That's basically OK because we don't want to turn on the plugin automatically in the gateway, but in the interest of avoiding use of the deprecated field, I refactored it so that `ApolloServerPluginInlineTrace` is installed by default (ie, if you don't install your own version or install `ApolloServerPluginInlineTraceDisabled`) without checking the schema, and then (if it's installed automatically) it decides whether or not to be active by checking the schema at `serverWillStart` time. - Similarly, schema reporting now throws in its `serverWillStart` if the schema is federated, instead of in `ensurePluginInstantiation`. (This does mean that if you're not using the new `start()` or `apollo-server`, that failure won't make your app fail as fast as if the `ApolloServer` constructor threw.) - Fix some fastify tests that used a fixed listen port to not do that. - I am doing my best to never accidentally run `prettier` on whole files and instead to very carefully select specific blocks of the file to format them several times per minute. Apparently I screwed up once and ran it once on `packages/apollo-server-core/src/ApolloServer.ts`. The ratio of "prettier changes" to "actual changes" in that file is low enough that I'd rather just leave the changes in this PR rather than spending time carefully reverting them. (It's one of the files I work on the most and being able to keep it prettier-clean will be helpful anyway.) - Replace a hacky workaround for the lack of `start` in the op reg tests! - Replace a use of a `Barrier` class I added recently in tests with the `@josephg/resolvable` npm package, which does basically the same thing. Use that package in new tests and in the core state machine itself. - While running tests I found that some test files hung if run separately due to lack of cleanup. I ended up refactoring the cache tests to: - make who is responsible for calling cache.close more consistent - make the Redis client mocks self-contained mocks of the ioredis API instead of starting with an actual ioredis implementation and mocking out some internals - clean up Jest fake timers when a certain test is done I'm not super certain exactly which of these changes fixed the hangs but it does seem better this way. (Specifically I think the fake timer fix, which I did last, is what actually fixed it, but the other changes made it easier for me to reason about what was going on.) Can factor out into another PR if helpful. Fixes #4921. Fixes apollographql/federation#335. Co-authored-by: Stephen Barlow <stephen@apollographql.com>
Configuration menu - View commit details
-
Copy full SHA for a3282a2 - Browse repository at this point
Copy the full SHA a3282a2View commit details -
Configuration menu - View commit details
-
Copy full SHA for ce449b7 - Browse repository at this point
Copy the full SHA ce449b7View commit details -
- apollo-cache-control@0.12.0-alpha.0 - apollo-datasource-rest@0.11.0-alpha.0 - apollo-datasource@0.8.0-alpha.0 - apollo-server-azure-functions@2.22.0-alpha.0 - apollo-server-cache-memcached@0.7.0-alpha.0 - apollo-server-cache-redis@1.3.0-alpha.0 - apollo-server-caching@0.6.0-alpha.0 - apollo-server-cloud-functions@2.22.0-alpha.0 - apollo-server-cloudflare@2.22.0-alpha.0 - apollo-server-core@2.22.0-alpha.0 - apollo-server-express@2.22.0-alpha.0 - apollo-server-fastify@2.22.0-alpha.0 - apollo-server-hapi@2.22.0-alpha.0 - apollo-server-integration-testsuite@2.22.0-alpha.0 - apollo-server-koa@2.22.0-alpha.0 - apollo-server-lambda@2.22.0-alpha.0 - apollo-server-micro@2.22.0-alpha.0 - apollo-server-plugin-base@0.11.0-alpha.0 - apollo-server-plugin-operation-registry@0.8.0-alpha.0 - apollo-server-plugin-response-cache@0.7.0-alpha.0 - apollo-server-testing@2.22.0-alpha.0 - apollo-server-types@0.7.0-alpha.0 - apollo-server@2.22.0-alpha.0 - apollo-tracing@0.13.0-alpha.0 - graphql-extensions@0.13.0-alpha.0
Configuration menu - View commit details
-
Copy full SHA for 1682a25 - Browse repository at this point
Copy the full SHA 1682a25View commit details
Commits on Mar 25, 2021
-
- apollo-cache-control@0.12.0 - apollo-datasource-rest@0.11.0 - apollo-datasource@0.8.0 - apollo-server-azure-functions@2.22.0 - apollo-server-cache-memcached@0.7.0 - apollo-server-cache-redis@1.3.0 - apollo-server-caching@0.6.0 - apollo-server-cloud-functions@2.22.0 - apollo-server-cloudflare@2.22.0 - apollo-server-core@2.22.0 - apollo-server-express@2.22.0 - apollo-server-fastify@2.22.0 - apollo-server-hapi@2.22.0 - apollo-server-integration-testsuite@2.22.0 - apollo-server-koa@2.22.0 - apollo-server-lambda@2.22.0 - apollo-server-micro@2.22.0 - apollo-server-plugin-base@0.11.0 - apollo-server-plugin-operation-registry@0.8.0 - apollo-server-plugin-response-cache@0.7.0 - apollo-server-testing@2.22.0 - apollo-server-types@0.7.0 - apollo-server@2.22.0 - apollo-tracing@0.13.0 - graphql-extensions@0.13.0
Configuration menu - View commit details
-
Copy full SHA for 93499e7 - Browse repository at this point
Copy the full SHA 93499e7View commit details
There are no files selected for viewing