Commit graph

157 commits

Author SHA1 Message Date
Jesse Rosenberger
aae212f869 Triggers for newly introduced serverWillStart lifecycle hooks.
This commit follows-up on #1795, which introduced the new request pipeline, and
implements the triggers for its new life-cycle hooks within the various
integration packages.  Previously, the only implementation was within the
`apollo-server` package and didn't get triggered for those invoking the
`applyMiddleware` method on integrations (e.g. `apollo-server-express`,
`...-hapi` and `...-koa`).

While in an ideal world, ALL existing `applyMiddleware` functions would be
marked as `async` functions and allow us to `await ApolloServer#willStart`,
in practice the only `applyMiddleware` which is currently `async` is the one
within the Hapi implementation.  Therefore, we'll instead kick off the
`willStart` lifecycle hook as soon as `applyMiddleware` is started, return
as quickly as we have before and then (essentially) yield the completion of
Apollo Server's `willStart` prior to serving the first request — thus
ensuring the completion of server-startup activities.

Similarly, we'll do the same for `createHandler` methods on integrations
which don't utilize Node.js server frameworks but don't have `async`
handlers (e.g. AWS, Lambda, etc.).
2018-10-26 15:07:13 +03:00
Jesse Rosenberger
9a69ad3f3a
Merge branch 'master' into testing-improvements 2018-10-12 14:58:04 +03:00
Martijn Walraven
4fac07b8f1 Consistently leave out explicit tsconfig.json when referring to TypeScript project 2018-10-12 13:34:07 +02:00
Martijn Walraven
ad3562a335 Replace {} with Object.create(null) in jest.config.js 2018-10-12 13:00:13 +02:00
Martijn Walraven
fd34771841 Fix typing issues in handler arguments and introduce generic type
These issues became apparent because `typescript@next` correctly types `Function#bind` instead of returning `any`.
2018-10-12 10:46:07 +02:00
Martijn Walraven
68b2c691f8 Move test tsconfig.json files under __tests__ to support editors
The TypeScript language server looks for `tsconfig.json` and doesn't take project references into account when resolving the config for a file.

See https://github.com/Microsoft/TypeScript/issues/27372.
2018-10-11 23:10:45 +02:00
Martijn Walraven
0491af858d Avoid use of object spread in Jest config files to support Node 6 2018-10-11 23:10:09 +02:00
Martijn Walraven
cef701e6c1 Remove test dependencies from non-test tsconfig.json files 2018-10-11 12:58:03 +02:00
Martijn Walraven
f5d5981ffc Add TypeScript and Jest projects for tests in individual packages 2018-10-11 04:33:23 +02:00
Jesse Rosenberger
dec2b94a0e
Publish
- apollo-cache-control@0.3.0-alpha.0
 - apollo-datasource-rest@0.2.0-alpha.0
 - apollo-datasource@0.2.0-alpha.0
 - apollo-engine-reporting-protobuf@0.1.0-alpha.0
 - apollo-engine-reporting@0.1.0-alpha.0
 - apollo-server-cache-memcached@0.2.0-alpha.0
 - apollo-server-cache-redis@0.2.0-alpha.0
 - apollo-server-caching@0.2.0-alpha.0
 - apollo-server-cloud-functions@2.2.0-alpha.0
 - apollo-server-cloudflare@2.2.0-alpha.0
 - apollo-server-core@2.2.0-alpha.0
 - apollo-server-env@2.1.0-alpha.0
 - apollo-server-errors@2.1.0-alpha.0
 - apollo-server-express@2.2.0-alpha.0
 - apollo-server-hapi@2.2.0-alpha.0
 - apollo-server-integration-testsuite@2.2.0-alpha.0
 - apollo-server-koa@2.2.0-alpha.0
 - apollo-server-lambda@2.2.0-alpha.0
 - apollo-server-micro@2.2.0-alpha.0
 - apollo-server-plugin-base@0.1.0-alpha.0
 - apollo-server@2.2.0-alpha.0
 - apollo-tracing@0.3.0-alpha.0
 - graphql-extensions@0.3.0-alpha.0
2018-10-10 22:30:54 +03:00
renovate[bot]
ebe8b39d3b chore(deps): update dependency graphql-tools to v4 (#1771) 2018-10-09 11:27:59 +02:00
Martijn Walraven
11a13cd3dd Remove apollo-server-env as a project reference
We can't use `apollo-server-env` as a project reference because that requires `composite: true`, and that implies `declaration: true`, which doesn't work for `apollo-server-env` because we need to write our own declaration files for re-exported imports.

This commit also removes `apollo-engine-reporting-protobuf` as a reference, which errored out because it doesn't actually contain any TypeScript code.
2018-10-05 23:05:49 +02:00
Martijn Walraven
8932091e67 Add root level tsconfig.json as entry point 2018-10-05 21:48:49 +02:00
Martijn Walraven
1aee215e68 Switch to tsc --build and remove run scripts from packages 2018-10-05 17:48:34 +02:00
Martijn Walraven
fcaa6ad79d Enable TypeScript project references 2018-10-05 17:47:29 +02:00
Jesse Rosenberger
8e594d47f5
Revert #1698 renovate/graphql tools 4.x (#1716)
I'm reverting apollographql/apollo-server#1698 not because it's been problematic in any way, but because I'd like to give it a bit more thought and don't want this to accidentally get cut into a release prior to that consideration.

More specifically: The `graphql-tools` update on its own shouldn't really cause any problems, but the [4.x version of `graphql-tools`](https://github.com/apollographql/graphql-tools/releases/tag/4.0.0) is intended to support and enable the latest `graphql@14` which contains [breaking changes](https://github.com/graphql/graphql-js/releases/tag/v14.0.0).

I believe most of those breaking changes would be show-stoppers and the failures would surface immediately (meaning that servers would completely fail to start, rather than being a surprise in other, more delayed scenarios), but it's still worth pausing and carefully considering versioning to avoid any surprises.

That said, the 14.x version of `graphql` has been an acceptable range in the `peerDependencies` of `apollo-server-*` since before its final release came out, and I don't believe we've caught wind of anything that a major version bump would have prevented or made more clear.  In the end, `graphql` is a peer dependency and any problems should only surface if consumers also update their `graphql` dependency — a clear major version bump, which deserves review by the upgrader — so perhaps we can avoid bumping the major version after all?

Input welcomed, but again, merging this now to give this a bit more thought first.

cc @hwillson
2018-09-24 20:47:18 +03:00
Hugh Willson
dd86fa8a29 Re-enable Typescript esModuleInterop (#1699)
`esModuleInterop` was enabled in
e4164c8892
to help with importing from packages that use default exports.
Those changes were reverted in
https://github.com/apollographql/apollo-server/pull/1210
to work around a few reported issues. Those issues are no longer
relevant, so this commit re-enables `esModuleInterop`, and
updates all default imports to use the more common (standard)
import syntax.
2018-09-21 16:43:33 +03:00
renovate[bot]
f2a4673006 chore(deps): update dependency graphql-tools to v4 (#1698) 2018-09-20 17:13:03 +03:00
Evans Hauser
86dd95e223
Publish
- apollo-cache-control@0.2.5
 - apollo-engine-reporting@0.0.6
 - apollo-server-cloud-functions@2.1.0
 - apollo-server-cloudflare@2.1.0
 - apollo-server-core@2.1.0
 - apollo-server-express@2.1.0
 - apollo-server-hapi@2.1.0
 - apollo-server-integration-testsuite@2.1.0
 - apollo-server-koa@2.1.0
 - apollo-server-lambda@2.1.0
 - apollo-server-micro@2.1.0
 - apollo-server@2.1.0
 - apollo-tracing@0.2.5
 - graphql-extensions@0.2.1
2018-09-18 15:26:48 -07:00
Evans Hauser
5adae649e3
Publish
- apollo-cache-control@0.2.4
 - apollo-engine-reporting@0.0.5
 - apollo-server-cloud-functions@2.0.4
 - apollo-server-cloudflare@2.0.5
 - apollo-server-core@2.0.7
 - apollo-server-express@2.0.7
 - apollo-server-hapi@2.0.7
 - apollo-server-integration-testsuite@2.0.7
 - apollo-server-koa@2.0.7
 - apollo-server-lambda@2.0.7
 - apollo-server-micro@2.0.7
 - apollo-server@2.0.8
 - apollo-tracing@0.2.4
 - graphql-extensions@0.2.0
2018-09-14 10:35:33 -07:00
Martijn Walraven
996c73063a Publish
- apollo-engine-reporting@0.0.4
 - apollo-server-cloud-functions@2.0.3
 - apollo-server-cloudflare@2.0.4
 - apollo-server-core@2.0.6
 - apollo-server-express@2.0.6
 - apollo-server-hapi@2.0.6
 - apollo-server-integration-testsuite@2.0.6
 - apollo-server-koa@2.0.6
 - apollo-server-lambda@2.0.6
 - apollo-server-micro@2.0.6
 - apollo-server@2.0.7
2018-09-05 17:33:16 +02:00
Martijn Walraven
b80a8f050c Publish
- apollo-cache-control@0.2.3
 - apollo-datasource-rest@0.1.5
 - apollo-datasource@0.1.3
 - apollo-engine-reporting@0.0.3
 - apollo-server-cache-memcached@0.1.3
 - apollo-server-cache-redis@0.1.3
 - apollo-server-cloud-functions@2.0.2
 - apollo-server-cloudflare@2.0.3
 - apollo-server-core@2.0.5
 - apollo-server-env@2.0.3
 - apollo-server-express@2.0.5
 - apollo-server-hapi@2.0.5
 - apollo-server-integration-testsuite@2.0.5
 - apollo-server-koa@2.0.5
 - apollo-server-lambda@2.0.5
 - apollo-server-micro@2.0.5
 - apollo-server@2.0.6
 - apollo-tracing@0.2.3
 - graphql-extensions@0.1.3
2018-09-03 15:06:00 +02:00
Martijn Walraven
94ff82c636 Add apollo-server-integration-testsuite as devDependency to integration packages
This fixes ordering of tasks invoked through `lerna run`.
2018-09-03 14:47:25 +02:00
Evans Hauser
2657e9b25b
Publish
- apollo-server-cloud-functions@2.0.1
 - apollo-server-cloudflare@2.0.2
 - apollo-server-core@2.0.4
 - apollo-server-express@2.0.4
 - apollo-server-hapi@2.0.4
 - apollo-server-integration-testsuite@2.0.4
 - apollo-server-koa@2.0.4
 - apollo-server-lambda@2.0.4
 - apollo-server-micro@2.0.4
 - apollo-server@2.0.5
2018-08-20 14:17:37 -07:00
Evans Hauser
3e54e60ced
Publish
- apollo-server-cloudflare@2.0.1
 - apollo-server-core@2.0.3
 - apollo-server-express@2.0.3
 - apollo-server-hapi@2.0.3
 - apollo-server-integration-testsuite@2.0.3
 - apollo-server-koa@2.0.3
 - apollo-server-lambda@2.0.3
 - apollo-server-micro@2.0.3
 - apollo-server@2.0.3
2018-08-16 11:40:49 -07:00
Evans Hauser
f7b5d63d03
Publish
- apollo-cache-control@0.2.2
 - apollo-datasource-rest@0.1.3
 - apollo-datasource@0.1.2
 - apollo-engine-reporting-protobuf@0.0.1
 - apollo-engine-reporting@0.0.2
 - apollo-server-cache-memcached@0.1.2
 - apollo-server-cache-redis@0.1.2
 - apollo-server-caching@0.1.2
 - apollo-server-cloudflare@2.0.0-rc.14
 - apollo-server-core@2.0.2
 - apollo-server-env@2.0.2
 - apollo-server-errors@2.0.2
 - apollo-server-express@2.0.2
 - apollo-server-hapi@2.0.2
 - apollo-server-integration-testsuite@2.0.2
 - apollo-server-koa@2.0.2
 - apollo-server-lambda@2.0.2
 - apollo-server-micro@2.0.2
 - apollo-server@2.0.2
 - apollo-tracing@0.2.2
 - graphql-extensions@0.1.2
2018-08-14 11:49:10 -07:00
Evans Hauser
ef82add05b
Publish
- apollo-cache-control@0.2.1
 - apollo-datasource-rest@0.1.2
 - apollo-datasource@0.1.1
 - apollo-engine-reporting-protobuf@0.0.0
 - apollo-engine-reporting@0.0.1
 - apollo-server-cache-memcached@0.1.1
 - apollo-server-cache-redis@0.1.1
 - apollo-server-caching@0.1.1
 - apollo-server-cloudflare@2.0.0-rc.13
 - apollo-server-core@2.0.1
 - apollo-server-env@2.0.1
 - apollo-server-errors@2.0.1
 - apollo-server-express@2.0.1
 - apollo-server-hapi@2.0.1
 - apollo-server-integration-testsuite@2.0.1
 - apollo-server-koa@2.0.1
 - apollo-server-lambda@2.0.1
 - apollo-server-micro@2.0.1
 - apollo-server@2.0.1
 - apollo-tracing@0.2.1
 - graphql-extensions@0.1.1
2018-08-14 11:05:31 -07:00
Sashko Stubailo
8ca7380347 Look in event.path first when selecting endpoint for GraphQL Playground on Lambda, and check for null (#1527)
* Look in event.path first, and check for null

See here: https://docs.aws.amazon.com/lambda/latest/dg/eventsources.html#eventsources-api-gateway-request

* Add to changelog
2018-08-13 15:58:23 -04:00
Martijn Walraven
2369b06be2 Use strict top-level tsconfig and fix type issues or override per-package 2018-08-11 16:45:03 +02:00
Martijn Walraven
40bc73f61f Remove per-package Jest config and replace with single top-level config 2018-08-11 16:45:03 +02:00
Martijn Walraven
0d89fa7cde Make sure package.json includes clean script 2018-08-11 16:45:03 +02:00
Martijn Walraven
ef4d5e4f95 Switch to using file specifiers and root level dev dependencies only 2018-08-11 16:45:03 +02:00
Martijn Walraven
ea6faf770a Replace prepublish scripts with prepare 2018-08-11 16:45:03 +02:00
Martijn Walraven
06e31c3249 Remove per-package test, coverage and circle scripts 2018-08-11 16:45:03 +02:00
Renovate Bot
cac8cc87d6 chore(deps): update dependency @types/aws-lambda to v8.10.11 2018-08-10 05:52:15 +00:00
Renovate Bot
4a16c461f4 chore(deps): update dependency @types/aws-lambda to v8.10.10 2018-08-02 06:15:53 +00:00
Evans Hauser
9dd1fec766
Mocha to Jest Test Conversion (#1453)
* import jest

* remove mocha, chai, sinon

* fix JSON parsing for package.json

* replace import mocha, chai, sinon with jest

* add jest as test npm script

* remove dependency on mocha types

* errors: remove unused jest tests

* move tests to __tests__ folders

* add jest types to root tsconfig

* fix tsconfig include excludes

* .to.equal -> toEqual

* .true -> .toBe(true)

* .to.deep.equal -> .toEqual

* .to.exist -> .toBeDefined()

* .to.contain -> .toMatch

* .to.match -> .toMatch

* to.be.undefined -> .toBeUndefined()

* not.toBeDefined -> .toBeUndefined

* bring integration test up to date with past changes

* remove message from expect

* .null -> .toBe(null)

* expect.fail -> done.fail

* callsFake -> jest.fn

* mocha mock calls -> jest

* .not.to.exist -> .toBeUndefined()

* callCount -> mocks.calls.length

* returns -> jest.fn()

* .equals -> .toEqual

* fix relative imports

* remove string in expects and place as comment

* remove Fibers from runQuery

* restore -> mockRestore

* before -> beforeAll

* after -> afterAll

* fix async_hooks test and Promise await

* remove jest from testsuite package json

* remove unnecessary apollo-server-env setup

* add start of cloudflare tests

* this.timeout -> timeout argument

* express: fix relative require

* import gql tag properly

* .to.throw -> .toThrow

* .to.be.instanceof -> .toBeInstanceOf

* remove console log check test

* done(Error) -> done.fail(Error)

* done -> done.fail

* change port numbers, since jest runs in parallel

* fix toBeUndefined for null checks

* make engine port unique in testsuite

* make data source rest endpoint port unique

* add coverage scripts

* travis npm script -> cricle script

* make engine port random

* change ports to not conflict across integrations

* increase node version for apollo-server-hapi

* add node versioning to prevent hapi tests from running

* move jest dependencies to the root package.json

* make hapi port unique

* fix port reference in hapi tests
2018-07-31 15:40:03 -07:00
Renovate Bot
9cdc42ea76 chore(deps): update dependency @types/aws-lambda to v8.10.9 2018-07-28 06:22:17 +00:00
Renovate Bot
385f3ffb0b chore(deps): update dependency @types/aws-lambda to v8.10.8 2018-07-21 05:30:59 +00:00
Evans Hauser
04e0d5bce0
Publish
- apollo-cache-control@0.2.0
 - apollo-datasource-rest@0.1.0
 - apollo-datasource@0.1.0
 - apollo-engine-reporting@0.0.0
 - apollo-server-cache-memcached@0.1.0
 - apollo-server-cache-redis@0.1.0
 - apollo-server-caching@0.1.0
 - apollo-server-cloudflare@2.0.0-rc.12
 - apollo-server-core@2.0.0
 - apollo-server-env@2.0.0
 - apollo-server-errors@2.0.0
 - apollo-server-express@2.0.0
 - apollo-server-hapi@2.0.0
 - apollo-server-integration-testsuite@2.0.0
 - apollo-server-koa@2.0.0
 - apollo-server-lambda@2.0.0
 - apollo-server-micro@2.0.0
 - apollo-server@2.0.0
 - apollo-tracing@0.2.0
 - graphql-extensions@0.1.0
2018-07-19 12:49:55 -07:00
Martijn Walraven
eeeea09ce5 Publish
- apollo-cache-control@0.2.0-rc.4
 - apollo-datasource-rest@0.1.0-rc.11
 - apollo-datasource@0.1.0-rc.11
 - apollo-engine-reporting@0.0.0-rc.5
 - apollo-server-caching@0.1.0-rc.11
 - apollo-server-cloudflare@2.0.0-rc.11
 - apollo-server-core@2.0.0-rc.11
 - apollo-server-env@2.0.0-rc.11
 - apollo-server-errors@2.0.0-rc.11
 - apollo-server-express@2.0.0-rc.11
 - apollo-server-hapi@2.0.0-rc.11
 - apollo-server-integration-testsuite@2.0.0-rc.11
 - apollo-server-koa@2.0.0-rc.11
 - apollo-server-lambda@2.0.0-xrc.11
 - apollo-server-memcached@0.1.0-rc.11
 - apollo-server-micro@2.0.0-rc.11
 - apollo-server-redis@0.1.0-rc.11
 - apollo-server@2.0.0-rc.11
 - apollo-tracing@0.2.0-rc.4
 - graphql-extensions@0.1.0-rc.5
2018-07-17 16:11:33 -07:00
Martijn Walraven
6470b61037 Set callbackWaitsForEmptyEventLoop = false for Lambda 2018-07-17 16:01:26 -07:00
Evans Hauser
337d66252c
lambda: fix cors documentation and default allowed headers (#1367) 2018-07-17 15:37:34 -07:00
Evans Hauser
9518c0ff1a
Publish
- apollo-cache-control@0.2.0-rc.3
 - apollo-datasource-rest@0.1.0-rc.10
 - apollo-datasource@0.1.0-rc.10
 - apollo-engine-reporting@0.0.0-rc.4
 - apollo-server-caching@0.1.0-rc.10
 - apollo-server-cloudflare@2.0.0-rc.10
 - apollo-server-core@2.0.0-rc.10
 - apollo-server-env@2.0.0-rc.10
 - apollo-server-errors@2.0.0-rc.10
 - apollo-server-express@2.0.0-rc.10
 - apollo-server-hapi@2.0.0-rc.10
 - apollo-server-integration-testsuite@2.0.0-rc.10
 - apollo-server-koa@2.0.0-rc.10
 - apollo-server-lambda@2.0.0-xrc.10
 - apollo-server-memcached@0.1.0-rc.10
 - apollo-server-micro@2.0.0-rc.10
 - apollo-server-redis@0.1.0-rc.10
 - apollo-server@2.0.0-rc.10
 - apollo-tracing@0.2.0-rc.3
 - graphql-extensions@0.1.0-rc.4
2018-07-17 10:55:45 -07:00
Evans Hauser
0144d4b2db
Publish
- apollo-cache-control@0.2.0-rc.2
 - apollo-datasource-rest@0.1.0-rc.9
 - apollo-datasource@0.1.0-rc.9
 - apollo-engine-reporting@0.0.0-rc.3
 - apollo-server-caching@0.1.0-rc.9
 - apollo-server-cloudflare@2.0.0-rc.9
 - apollo-server-core@2.0.0-rc.9
 - apollo-server-env@2.0.0-rc.9
 - apollo-server-errors@2.0.0-rc.9
 - apollo-server-express@2.0.0-rc.9
 - apollo-server-hapi@2.0.0-rc.9
 - apollo-server-integration-testsuite@2.0.0-rc.9
 - apollo-server-koa@2.0.0-rc.9
 - apollo-server-lambda@2.0.0-xrc.9
 - apollo-server-memcached@0.1.0-rc.9
 - apollo-server-micro@2.0.0-rc.9
 - apollo-server-redis@0.1.0-rc.9
 - apollo-server@2.0.0-rc.9
 - apollo-tracing@0.2.0-rc.2
 - graphql-extensions@0.1.0-rc.3
2018-07-17 10:44:15 -07:00
Evans Hauser
e04a570f7e
pin internal dependencies (#1361) 2018-07-16 16:15:10 -07:00
Evans Hauser
fa6c973f36
Fix and Export Extension and Playground Types (#1360)
* export playground types

* make playground configuration recursively partial
2018-07-16 15:49:20 -07:00
renovate[bot]
3b3c50a1ab chore(deps): pin dependencies (#1346) 2018-07-16 09:56:51 -07:00
Evans Hauser
db6fdd32f1
Publish
- apollo-cache-control@0.2.0-rc.1
 - apollo-datasource-rest@2.0.0-rc.8
 - apollo-datasource@2.0.0-rc.8
 - apollo-engine-reporting@0.0.0-rc.2
 - apollo-server-caching@2.0.0-rc.8
 - apollo-server-cloudflare@2.0.0-rc.8
 - apollo-server-core@2.0.0-rc.8
 - apollo-server-env@2.0.0-rc.8
 - apollo-server-errors@2.0.0-rc.8
 - apollo-server-express@2.0.0-rc.8
 - apollo-server-hapi@2.0.0-rc.8
 - apollo-server-integration-testsuite@2.0.0-rc.8
 - apollo-server-koa@2.0.0-rc.8
 - apollo-server-lambda@2.0.0-xrc.8
 - apollo-server-memcached@2.0.0-rc.8
 - apollo-server-micro@2.0.0-rc.8
 - apollo-server-redis@2.0.0-rc.8
 - apollo-server@2.0.0-rc.8
 - apollo-tracing@0.2.0-rc.1
 - graphql-extensions@0.1.0-rc.2
2018-07-13 17:49:39 -07:00
Alessio Dionisi
3ba5d0a89f Apollo Server 2.0: AWS Lambda, handle OPTIONS method (#1344)
* handle OPTIONS http method

* readme updated

* remove endpoint from playground options

* lambda fix cors for playground and readme typo

* Revert "remove endpoint from playground options"

This reverts commit d5799846b0d99148f201e532e6eb9d408ab618e1.
2018-07-13 17:45:17 -07:00