Commit graph

2542 commits

Author SHA1 Message Date
Martijn Walraven
87463582ed Fix cacheControl property in Config and GraphQLServerOptions
While cacheControl can take a boolean when passing it in  to ApolloServer as part of a Config, these will be converted to default options before passing them on as options.
2018-10-05 14:33:32 +02:00
Jesse Rosenberger
68f50cd09c Import specifically createHash, rather than * as crypto from crypto.
This silences the deprecation messages which have been showing up in recent
local development on the new request pipeline work.  e.g.:

> ```
> [DEP0010] DeprecationWarning: crypto.createCredentials is deprecated.
>   Use tls.createSecureContext instead.
> [DEP0011] DeprecationWarning:
>   crypto.Credentials is deprecated. Use tls.SecureContext instead.
> ```
2018-10-05 13:12:10 +02:00
Jesse Rosenberger
07a9493996
Merge remote-tracking branch 'origin/abernix/re-new-request-pipeline' into HEAD 2018-10-05 13:51:33 +03:00
Martijn Walraven
d80209e4aa Fix typing of context property in GraphQLServerOptions
The actual resolving of the context happens in ApolloServer#graphQLServerOptions, but errors thrown while doing that are currently converted to a throwing function.
2018-10-05 09:48:58 +02:00
Martijn Walraven
891d62983a Refactor runHttpQuery and extract cache policy computation into CacheControlExtension 2018-10-05 09:08:12 +02:00
Jesse Rosenberger
2479473664
Introduce basic plugin and limited API to apollo-server-core. 2018-10-04 23:25:42 +03:00
Jesse Rosenberger
1ec383db36
Introduce a method to simplify the Engine service identifier. 2018-10-04 23:25:42 +03:00
Jesse Rosenberger
94a146a07e
Introduce a apollo-server-plugin-base as a foundation for plugins. 2018-10-04 23:25:42 +03:00
Jesse Rosenberger
98d4fc3674
Don't ever allow requestOptions to be undefined. 2018-10-04 23:25:42 +03:00
Jesse Rosenberger
f1bc734377
Import specifically createHash, rather than * as crypto from crypto.
This silences the deprecation messages which have been showing up in recent
local development on the new request pipeline work.  e.g.:

> ```
> [DEP0010] DeprecationWarning: crypto.createCredentials is deprecated.
>   Use tls.createSecureContext instead.
> [DEP0011] DeprecationWarning:
>   crypto.Credentials is deprecated. Use tls.SecureContext instead.
> ```
2018-10-04 23:25:07 +03:00
Renovate Bot
60f39eb713 chore(deps): update dependency lerna to v3.4.1 2018-10-04 19:51:26 +00:00
Renovate Bot
bb0537b360 chore(deps): update dependency @types/node to v10.11.4 2018-10-04 18:04:16 +00:00
Renovate Bot
097cae5bdc chore(deps): update dependency @types/jest to v23.3.3 2018-10-04 13:49:17 +00:00
Renovate Bot
00a829ebb6 chore(deps): update dependency @types/hapi to v17.6.1 2018-10-04 11:47:33 +00:00
Martijn Walraven
7493077f18 Fix context and rootValue types in GraphQLServerOptions
The ability to pass in functions or promises shouldn't affect the type variable.
2018-10-02 14:00:34 +02:00
Renovate Bot
d626a7f130 chore(deps): update dependency jest-junit to v5.2.0 2018-10-02 12:00:33 +00:00
Martijn Walraven
ba0066edf8 Extract processHTTPRequest from runHttpQuery 2018-10-02 13:59:33 +02:00
Renovate Bot
ade92038a8 chore(deps): update dependency graphql-tag to v2.10.0 2018-10-02 10:14:43 +00:00
renovate[bot]
6fae839afa chore(deps): pin dependencies (#1740)
This PR contains the following updates:

| Package | Type | Update | Change | References |
|---|---|---|---|---|
| codecov | devDependencies | pin | `^3.1.0` -> `3.1.0` | [source](https://renovatebot.com/gh/codecov/codecov-node) |
| jest-junit | devDependencies | pin | `^5.1.0` -> `5.1.0` | [source](https://renovatebot.com/gh/jest-community/jest-junit) |

📌 **Important**: Renovate will wait until you have merged this Pin PR before creating any *upgrade* PRs for the affected packages. Add the preset `:preserveSemverRanges` your config if you instead don't wish to pin dependencies.

---

### Renovate configuration

📅 **Schedule**: PR created on schedule "after 6pm every weekday,before 8am every weekday" in timezone America/Los_Angeles

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻️ **Rebasing**: Whenever PR is stale, or if you modify the PR title to begin with "`rebase!`".

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://renovatebot.com/gh/renovatebot/config-help/issues) if that's undesired.

---

This PR has been generated by [Renovate Bot](https://renovatebot.com/gh/marketplace/renovate). View repository job log [here](https://renovatebot.com/dashboard#apollographql/apollo-server).
2018-10-02 12:28:05 +03:00
Jesse Rosenberger
7c2fa2d136
Remove posttest npm script from package.json to avoid linting on tests.
The linting will happen in CircleCI.  Additionally, we already have
post-commit hooks so doing linting on every test run seems to just be
generally slowing down development since any linting problems are
automatically fixed when I do a commit.
2018-10-02 12:24:33 +03:00
Miguel Dorta
a61413a190 Fix typo (#1745) 2018-10-02 09:29:17 +02:00
Loc Nguyen
32db56169c Use gql tag in typeDef examples that were missing it. Also fix a type in a require statement. (#1756) 2018-10-02 09:28:37 +02:00
Renovate Bot
d2b1e3f9f0 chore(deps): update dependency @types/node to v10.11.3 2018-09-29 06:21:44 +00:00
Martijn Walraven
e2a22b23b5 Remove leftover debug output 2018-09-28 15:45:22 +02:00
Renovate Bot
5f89702d9a chore(deps): update dependency @types/node to v10.11.2 2018-09-27 19:00:08 +00:00
Renovate Bot
577e620678 chore(deps): update dependency @types/hapi to v17.6.0 2018-09-27 17:42:06 +00:00
Jesse Rosenberger
b90ccc2e8b
Make it more clear that generateClientInfo is an experimental API.
The `generateClientInfo` API, used to set client identification attributes
within traces, is an experimental API and is subject to removal or change in
a future (major) Apollo Server release.

Ref: #1631
2018-09-27 18:40:05 +03:00
Evans Hauser
81c46421a9
Provide ability to specify client info in traces (#1631)
* Provide ability to specify client info in traces

Adds the createClientInfo to apollo-engine-reporting, which enables the
differentiation of clients based on the request, operation, and
variables. This could be extended to include the response. However for
the first release. It doesn't quite make sense.

* Use extensions and context in createClientInfo

* Remove support for clientAddress

The frontend will not support it in the near future

* create -> generate and make default generator

createClientInfo -> generateClientInfo

* Clarify default values
2018-09-27 17:26:12 +03:00
Tim Griesser
261994ca7c
Allow an optional function to resolve the rootValue (#1555)
* Allow an optional function to resolve the rootValue

Passes the parsed DocumentNode AST to determine the root value,
useful when providing a different rootValue for query vs mutation

* Add API docs for rootValue
2018-09-27 16:57:46 +03:00
Martijn Walraven
7fbf35cc1c
Remove hash.js dependency and re-enable noUnusedLocals 2018-09-27 16:46:45 +03:00
Martijn Walraven
49248329ca
Move persisted query processing to GraphQLRequestProcessor 2018-09-27 16:46:45 +03:00
Martijn Walraven
faf1494a7f
Remove runQuery.ts and fix tests to use GraphQLRequestProcessor 2018-09-27 16:46:45 +03:00
Martijn Walraven
358b348677
Fix full lifecycle test with Engine reporting 2018-09-27 16:46:45 +03:00
Martijn Walraven
a09d514e59
Refactor runQuery into GraphQLRequestProcessor 2018-09-27 16:46:45 +03:00
Jesse Rosenberger
38e7b6a5b6
Revert "Allow an optional function to resolve the rootValue (#1555)"
This reverts commit 4175f1b9cd.
2018-09-27 16:46:39 +03:00
Jesse Rosenberger
2b470e1c11
Revert "Pass the context request and response extension methods (#1547)"
This reverts commit 408198e5ac.
2018-09-27 16:36:28 +03:00
Jesse Rosenberger
68c82e63c6
Revert "Provide ability to specify client info in traces (#1631)"
This reverts commit 96af44e41a.
2018-09-27 16:35:00 +03:00
Jesse Rosenberger
03a894de1a
Revert "Make it more clear that generateClientInfo is an experimental API."
This reverts commit 6d6c9ff268.
2018-09-27 16:33:30 +03:00
Jesse Rosenberger
0b4e36bede
Update ISSUE_TEMPLATE.md 2018-09-27 14:36:26 +03:00
Jesse Rosenberger
aa9325fe90
Update ISSUE_TEMPLATE.md 2018-09-27 14:33:44 +03:00
Jesse Rosenberger
dc66ed4419
Merge pull request #1730 from apollographql/abernix/test-infra
Adjust testing infrastructure and add code coverage.
2018-09-27 12:45:40 +03:00
Renovate Bot
9e3eeae259 chore(deps): update dependency multer to v1.4.0 2018-09-27 04:40:03 +00:00
Jesse Rosenberger
549a64eec6
Add support for Jest JUnit test output for consumption by CircleCI.
This should hopefully make it easier to quickly identify failing tests
within the CircleCI interface since CircleCI will be able to
programmatically consume the test results.
2018-09-26 22:47:58 +03:00
Jesse Rosenberger
74ca606c8a
Add warning to .circleci/config.yml about Node.js version specific tests.
Hopefully this will act as reminder for the future.  I've used `NODE` here
as a sort of `TODO` so other references in the codebase might be more easily
located.
2018-09-26 22:47:57 +03:00
Jesse Rosenberger
0d6ef264da
Stop using ts-jest's skipBabel option to fix Jest coverage source mapping.
Not only did removing this configuration reveal invalid JavaScript code, it
also fixes the source mapping for the coverage reports so that they report
the coverage details based on the original file rather than the `tsc`
compiled output (JavaScript).

Ref: c9375c405b (invalid top-level `return`)
2018-09-26 22:47:46 +03:00
Jesse Rosenberger
126dac7d3c
prettier: The tragic reformatting associated with c9375c40.
Some changes are easier to mentally consume before they've been prettier'd.

While I'll certainly allow Prettier to do what it wants to do, I've confined
it's changes to this commit for easier reviewability.

Note to the reviewer: this commit is exactly the result of running the
`npm run lint-fix` command on a clean Git working tree.

Ref: c9375c405b
2018-09-26 22:46:49 +03:00
Jesse Rosenberger
c9375c405b
Adjust tests which are Node.js version specific to use describe.skip.
The techniques previously used to skip particular tests for particular
Node.js versions (for example, file uploads, Hapi, etc.) were problematic in
a couple ways:

1. `return`-ing outside a function (say, at the top level of a module) is
   not valid ECMAScript.  While it works in this current state, it only works
   because of Babel's wrapping scope.  As we move toward less and less
   transpiled modules, this would become problematic anyway, but it's a
   short-term blocker for me since I intend on dropping the `skipBabel` option
   we currently pass to` `ts-jest` in its current (`package.json`)
   configuration. (My editor also dislikes top-level `return`, expectedly.)

2. By `return`-ing from a test which we wish to skip conditionally, we avoid
   the awareness which is provided by Jest (automatically) when using its
   built-in `.skip` helpers.  By switching to technique I've employed here,
   we're able to see `<num> skipped` in Jest's output and (rightfully) be able
   to question why something is being skipped.

By using the `atLeastMajorNodeVersion` helper, we'll also be able to more
easily find where this pattern is used in test-cases, to more easily
re-evaluate their use-cases when we add support newer Node.js versions.
2018-09-26 22:44:32 +03:00
Jesse Rosenberger
3c28bcf9d2
Switch all package-lock.json resolutions to use https:// links.
I'm hopeful that the outstanding `http://` links were all artifacts of older
installs which can safely go away.
2018-09-26 14:32:52 +03:00
Jesse Rosenberger
22b0cc2c9e
Reduce the scope of the .gitignore file to be specifically what we need. 2018-09-26 14:32:52 +03:00
Jesse Rosenberger
c07c7921c2
Reimplement Jest coverage tests and reporting via codecov.
This adds the `--coverage` flag to the `test:ci` (Jest) script, in addition to
adding two new commands (mirroring the pattern used in Apollo Client's
repository): `npm run coverage` and `npm run coverage:upload`.

CircleCI has been configured with the appropriate `CODECOV_TOKEN`.
2018-09-26 14:32:52 +03:00