Commit graph

358 commits

Author SHA1 Message Date
Jesse Rosenberger
dc20485bd5
Prettier updates from the prettier bump.
Ah yes, the subtle side-effects of an opinionated linter evolving over time.
2018-11-09 15:44:41 -08:00
Martijn Walraven
40f3660e23 Fix relative import to use the proper apollo-tools package 2018-11-09 09:23:29 -08:00
Martijn Walraven
8c9666d4d7 Update apollo-tools dependency 2018-11-09 09:12:51 -08:00
Martijn Walraven
8f6481e60f Add modules option to ApolloServer 2018-11-09 05:07:08 -08:00
Martijn Walraven
6bd73b175f Publish
- apollo-cache-control@0.3.0
 - apollo-datasource-rest@0.2.0
 - apollo-datasource@0.2.0
 - apollo-engine-reporting-protobuf@0.1.0
 - apollo-engine-reporting@0.1.0
 - apollo-server-azure-functions@2.2.0
 - apollo-server-cache-memcached@0.2.0
 - apollo-server-cache-redis@0.2.0
 - apollo-server-caching@0.2.0
 - apollo-server-cloud-functions@2.2.0
 - apollo-server-cloudflare@2.2.0
 - apollo-server-core@2.2.0
 - apollo-server-env@2.2.0
 - apollo-server-errors@2.2.0
 - apollo-server-express@2.2.0
 - apollo-server-hapi@2.2.0
 - apollo-server-integration-testsuite@2.2.0
 - apollo-server-koa@2.2.0
 - apollo-server-lambda@2.2.0
 - apollo-server-micro@2.2.0
 - apollo-server-plugin-base@0.1.0
 - apollo-server-testing@2.2.0
 - apollo-server@2.2.0
 - apollo-tracing@0.3.0
 - graphql-extensions@0.3.0
2018-11-07 08:17:21 -08:00
Jesse Rosenberger
79fe6bf0bf
Publish
- apollo-server-azure-function@2.2.0-alpha.4
 - apollo-server-cloud-functions@2.2.0-alpha.4
 - apollo-server-cloudflare@2.2.0-alpha.4
 - apollo-server-core@2.2.0-alpha.4
 - apollo-server-express@2.2.0-alpha.4
 - apollo-server-hapi@2.2.0-alpha.4
 - apollo-server-integration-testsuite@2.2.0-alpha.4
 - apollo-server-koa@2.2.0-alpha.4
 - apollo-server-lambda@2.2.0-alpha.4
 - apollo-server-micro@2.2.0-alpha.4
 - apollo-server-plugin-base@0.1.0-alpha.4
 - apollo-server-testing@2.2.0-alpha.4
 - apollo-server@2.2.0-alpha.4
 - graphql-extensions@0.3.0-alpha.4
2018-11-06 11:33:35 -08:00
Jesse Rosenberger
25cbd3ad61
Don't require a plugin to subclass ApolloServerPlugin.
To avoid problems frequently associated with subclassing, and the possible
versioning ergonomics of subclassing the wrong version, this changes the
plugin infrastructure to no longer require subclassing the abstract class.
2018-11-06 10:01:52 -08:00
Jesse Rosenberger
5ca4c07bd5
Publish
- apollo-cache-control@0.3.0-alpha.3
 - apollo-engine-reporting-protobuf@0.1.0-alpha.3
 - apollo-engine-reporting@0.1.0-alpha.3
 - apollo-server-cloud-functions@2.2.0-alpha.3
 - apollo-server-cloudflare@2.2.0-alpha.3
 - apollo-server-core@2.2.0-alpha.3
 - apollo-server-express@2.2.0-alpha.3
 - apollo-server-hapi@2.2.0-alpha.3
 - apollo-server-integration-testsuite@2.2.0-alpha.3
 - apollo-server-koa@2.2.0-alpha.3
 - apollo-server-lambda@2.2.0-alpha.3
 - apollo-server-micro@2.2.0-alpha.3
 - apollo-server-plugin-base@0.1.0-alpha.3
 - apollo-server-testing@2.2.0-alpha.3
 - apollo-server@2.2.0-alpha.3
 - apollo-tracing@0.3.0-alpha.3
 - graphql-extensions@0.3.0-alpha.3
2018-11-05 21:36:39 -08:00
Jesse Rosenberger
a6872c2f6c
Publish
- apollo-cache-control@0.3.0-alpha.2
 - apollo-datasource-rest@0.2.0-alpha.2
 - apollo-datasource@0.2.0-alpha.2
 - apollo-engine-reporting@0.1.0-alpha.2
 - apollo-server-cache-memcached@0.2.0-alpha.2
 - apollo-server-cache-redis@0.2.0-alpha.2
 - apollo-server-caching@0.2.0-alpha.2
 - apollo-server-cloud-functions@2.2.0-alpha.2
 - apollo-server-cloudflare@2.2.0-alpha.2
 - apollo-server-core@2.2.0-alpha.2
 - apollo-server-express@2.2.0-alpha.2
 - apollo-server-hapi@2.2.0-alpha.2
 - apollo-server-integration-testsuite@2.2.0-alpha.2
 - apollo-server-koa@2.2.0-alpha.2
 - apollo-server-lambda@2.2.0-alpha.2
 - apollo-server-micro@2.2.0-alpha.2
 - apollo-server-plugin-base@0.1.0-alpha.2
 - apollo-server-testing@2.2.0-alpha.2
 - apollo-server@2.2.0-alpha.2
 - apollo-tracing@0.3.0-alpha.2
 - graphql-extensions@0.3.0-alpha.2
2018-11-05 11:45:46 -08:00
Jesse Rosenberger
d7d4495b7b
(perf) Stop adding the checkOperationPlugin on every request.
This was causing the `checkOperationPlugin` to be added to the list of
plugins to be executed, thus resulting in an additional plugin pass (of the
same plugin) for each request.

1st request = 1 plugin
2nd request = 2 of the same plugin
3rd request = 3 of the same plugin

Obviously, this was not intended.
2018-11-05 11:23:26 -08:00
Jake Dawkins
e3d5be954f Introduce apollo-server-testing package. (#1909) 2018-11-05 11:22:30 -08:00
Jesse Rosenberger
422609e621
Merge pull request #1900 from apollographql/abernix/preserve-typescript-2-compat
Preserve TypeScript 2 Backwards compatibility until Semver Major
2018-11-05 07:14:45 -08:00
Jesse Rosenberger
0dfa8ed39b
(compat) Avoid TypeScript 3.x features to maintain backwards compatibility.
This mostly reverts fd34771841 along with a
number of slight adjustments to avoid other typing luxuries which were
introduced with TypeScript 3.x.

While the generic `ServerOptionFunction` types and `HandlerArguments`
generic rest argument type were certainly welcome additions to the codebase,
they present a backwards compatibility problem for consumers of Apollo
Server who have not yet made the jump to TypeScript 3.x.

With any luck, when we bump the major version of Apollo Server to 3.x, and
in accordance with semantic versioning, we'll be in the position to
straight-up revert this commit.
2018-11-05 05:24:32 -08:00
Tomáš Szabo
abbe382785 Make mocking configuration less confusing. (#1835)
* Make mocking configuration less confusing.
Setting mocks to false will always disable mocking.

* Updated CHANGELOG
2018-10-30 09:14:12 -07:00
Jesse Rosenberger
5b83883233
Publish
- apollo-cache-control@0.3.0-alpha.1
 - apollo-datasource-rest@0.2.0-alpha.1
 - apollo-datasource@0.2.0-alpha.1
 - apollo-engine-reporting-protobuf@0.1.0-alpha.1
 - apollo-engine-reporting@0.1.0-alpha.1
 - apollo-server-cache-memcached@0.2.0-alpha.1
 - apollo-server-cache-redis@0.2.0-alpha.1
 - apollo-server-caching@0.2.0-alpha.1
 - apollo-server-cloud-functions@2.2.0-alpha.1
 - apollo-server-cloudflare@2.2.0-alpha.1
 - apollo-server-core@2.2.0-alpha.1
 - apollo-server-env@2.1.0-alpha.1
 - apollo-server-express@2.2.0-alpha.1
 - apollo-server-hapi@2.2.0-alpha.1
 - apollo-server-integration-testsuite@2.2.0-alpha.1
 - apollo-server-koa@2.2.0-alpha.1
 - apollo-server-lambda@2.2.0-alpha.1
 - apollo-server-micro@2.2.0-alpha.1
 - apollo-server-plugin-base@0.1.0-alpha.1
 - apollo-server@2.2.0-alpha.1
 - apollo-tracing@0.3.0-alpha.1
 - graphql-extensions@0.3.0-alpha.1
2018-10-26 21:28:15 +03:00
Jesse Rosenberger
bcfd76ceed
Add missing dependency on graphql-playground-html to apollo-server-core. 2018-10-26 20:39:23 +03:00
James Baxley
49052b81d9 move @types/json-stable-stringify up to root 2018-10-26 20:19:30 +03:00
James Baxley
a729831d03 Support new protobuf fields in reporting
This commit supports two new concepts for reporting:

1. Client identity
2. Schema awareness

Client identity allows the GraphQLRequestContext to be mapped into
`clientId`, `clientName`, and `clientVersion` which can be used to
filter and view requests and metrics by client information.

Schema awareness introduces schema branches which allow arbitrary
strings to generate new "branches" (or variants) of a schema.
2018-10-26 20:19:30 +03:00
James Baxley
2ece27d82e Pass requestContext to GraphQLExtension requestDidStart 2018-10-26 20:19:30 +03:00
James Baxley
d10f961646 Generate schemaHash from schema
This commit adds a new field to the GraphQLServiceContext which is
a hashed representation of the schema. This is useful as a key value
to represent the schema and is sent as part of reporting to engine
when enabled
2018-10-26 20:19:30 +03:00
Jesse Rosenberger
c229b93f59 Fix incorrect comment about which graphql-playground- version this is.
It's actually the version of `graphql-playground-react` which is getting
served by `graphql-playground-html`.
2018-10-26 20:02:04 +03:00
Jesse Rosenberger
517264d579 Update to GraphQL Playground 1.7.8.
In addition to updating the `@apollographql/graphql-playground-html` fork,
which is necessary to avoid bundling `graphql-config` which had been
problematic in serverless environments, this updates the version number
which is served from the CDN.

I've just published `@apollographql/graphql-playground-html@1.6.4`.

Ref: https://github.com/apollographql/apollo-server/issues/1746
Ref: https://github.com/apollographql/graphql-playground/pull/2
Ref: https://github.com/apollographql/graphql-playground/pull/1

Thanks for @javlund for kicking off some of this work!
2018-10-26 20:02:04 +03:00
Martijn Walraven
6dd71d3824 Replace GraphQLRequestPipeline with function 2018-10-16 13:59:30 +02: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
d6b222da91 Depend on output of requestPipelineAPI project instead of source 2018-10-12 09:46:49 +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
3cf067349b Fix some dependencies in tsconfig.test.json files 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
renovate[bot]
73cbd03be0 chore(deps): update dependency @types/ws to v6 (#1609) 2018-10-11 12:05:19 +03: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
Jesse Rosenberger
9089cc5c94
Follow-up un-reverted work to maintain support in the new request pipeline.
Prior to embarking on the request pipeline work, and to facilitate
development on the new request pipeline, @martijnwalraven and myself
intentionally reverted some commits that had been recently introduced but
conflicted with the request pipeline branch that was already in-flight.

Rather than dealing with an incredibly difficult merge conflict, it was
easier to revert them an re-apply them later.

Original commits, reversions, and reintroductions:

* 6d6c9ff, 03a894d, b90ccc2
* 96af44e, 68c82e6, 81c4642
* 408198e, 2b470e1, 84bc834
* 4175f1b, 38e7b6a, 261994c

As is demonstrated by this short follow-up commit, this was all that was
necessary to make it work in the new model - once that model was finished.

While we're certain that the new request pipeline and its plugin model will
actually better support some of the behavior that required these initial
commits in the name of not introducing breaking changes, we feel it's
necessary to maintain their support.

I will point out, if you are at all affected by the above commits, we may
consider deprecating portions of those APIs in the not too distant future,
but we hope that the new model will help support those needs even better.
2018-10-10 20:20:27 +03:00
C.J. Winslow
84bc8346cc
Pass the context request and response extension methods (#1547)
* Pass the context along to all the extension methods

Addresses #1343

With this change you should now be able to implement an extension like so:

```javascript
class MyErrorTrackingExtension extends GraphQLExtension {
    willSendResponse(o) {
        const { context, graphqlResponse } = o

        context.trackErrors(graphqlResponse.errors)

        return o
    }
}
```

Edit by @evans :
fixes #1343
fixes #614 as the request object can be taken from context or from requestDidStart
fixes #631 ""

* Remove context from extra extension functions

The context shouldn't be necessary for format, parse, validation, and
execute. Format generally outputs the state of the extension. Parse and
validate don't depend on the context. Execution includes the context
argument as contextValue

* Move change entry under vNext
2018-10-10 19:25:37 +03:00
Martijn Walraven
17ed84d720 Add queryHash to request context 2018-10-10 16:20:45 +02:00
Martijn Walraven
f4400ac8af Rename dispatcher methods to clarify they invoke hooks 2018-10-10 16:17:10 +02:00
Martijn Walraven
b4863f65e9 Compute query hash for non-APQ queries to use as a cache key 2018-10-10 16:05:04 +02:00
Martijn Walraven
3fab039c1c Add didResolveOperation hook to request pipeline API 2018-10-10 15:19:11 +02:00
Martijn Walraven
f942af77b2 Clean up APQ code a little bit 2018-10-10 14:13:52 +02:00
Martijn Walraven
cea6404e92 Improve type safety of request pipeline API 2018-10-10 08:20:27 +02:00
Martijn Walraven
0f6594ae8e Don't skip APQs if no query is passed in 2018-10-09 21:37:29 +02:00
Martijn Walraven
59bc1c9318 Fix some request pipeline types 2018-10-09 21:35:51 +02:00
Martijn Walraven
e40f4a2b9b Add additional lifecycle hooks and allow returning didEnd handlers 2018-10-09 17:29:21 +02:00
Martijn Walraven
5b1760d78a Update graphql-subscriptions dependency to 1.0.0 in all packages 2018-10-09 12:18:25 +02:00
Martijn Walraven
b5715410fb Merge remote-tracking branch 'origin/master' into abernix/re-new-request-pipeline 2018-10-09 11:30:16 +02:00
renovate[bot]
ebe8b39d3b chore(deps): update dependency graphql-tools to v4 (#1771) 2018-10-09 11:27:59 +02:00
Martijn Walraven
00e9838c66 Move shared type definitions to top-level types directory 2018-10-08 21:15:55 +02:00