graphql-upload
Version:
Middleware and an Upload scalar to add support for GraphQL multipart requests (file uploads via queries and mutations) to various Node.js GraphQL servers.
494 lines (354 loc) • 26.6 kB
Markdown
# graphql-upload changelog
## 11.0.0
### Major
- Updated Node.js support to `^10.13.0 || ^12.0.0 || >= 13.7.0`.
- Added a [package `exports` field](https://nodejs.org/api/esm.html#esm_package_entry_points) with [conditional exports](https://nodejs.org/api/esm.html#esm_conditional_exports) to support native ESM in Node.js and keep internal code private, [whilst avoiding the dual package hazard](https://nodejs.org/api/esm.html#esm_approach_1_use_an_es_module_wrapper). Published files have been reorganized, so previously undocumented deep imports will need to be rewritten according to the newly documented paths.
- Updated dev dependencies, some of which require newer Node.js versions than previously supported.
### Patch
- Updated the [`graphql`](https://npm.im/graphql) peer dependency to `0.13.1 - 15`, fixing [#200](https://github.com/jaydenseric/graphql-upload/issues/200) via [#201](https://github.com/jaydenseric/graphql-upload/pull/201).
- Updated Prettier related package scripts.
- Configured Prettier option `semi` to the default, `true`.
- Ensure GitHub Actions run on pull request.
- Also run GitHub Actions with Node.js v14.
- Fixed the `ignoreStream` function tests for Node.js v14 with a new `CountReadableStream` test helper, fixing [#209](https://github.com/jaydenseric/graphql-upload/issues/209).
- Minor JSDoc wording tweak for consistency.
- Mention [`Promise.allSettled`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled) in the readme “Tips” section.
- Updated MDN Web Docs links.
## 10.0.0
### Major
- Updated Node.js support from v8.10+ to v10+, as earlier versions have reached end-of-life.
- Updated the [`fs-capacitor`](https://npm.im/fs-capacitor) dependency to v6, which now requires Node.js v10+, via [#179](https://github.com/jaydenseric/graphql-upload/pull/179).
- Updated dev dependencies, some of which now require Node.js v10+.
- Replaced the [`tap`](https://npm.im/tap) dev dependency with [`test-director`](https://npm.im/test-director), [`coverage-node`](https://npm.im/coverage-node), and [`hard-rejection`](https://npm.im/hard-rejection) to improve the dev experience and reduce the dev install size by ~75.7 MB. These new dev dependencies require Node.js v10+.
- Reorganized files. This is only a breaking change for projects using undocumented deep imports.
- Removed now redundant Node.js version compatibility logic in the `processRequest` function.
- The `processRequest` function now places references to instances of the now exported and documented `Upload` class in the GraphQL operation for the `GraphQLUpload` scalar to derive its value, and the `GraphQLUpload` scalar now throws a `GraphQLError` when it parses an invalid value, fixing [#175](https://github.com/jaydenseric/graphql-upload/issues/175) via [#181](https://github.com/jaydenseric/graphql-upload/pull/181).
- The `GraphQLUpload` scalar `parseLiteral` and `serialize` methods now throw `GraphQLError` (instead of `Error`) instances, with tweaked messages.
### Minor
- The `createReadStream` function in resolved file uploads now accepts options to configure the encoding and high water mark, fixing [#177](https://github.com/jaydenseric/graphql-upload/issues/177) via [#179](https://github.com/jaydenseric/graphql-upload/pull/179).
### Patch
- Removed the now redundant [`eslint-plugin-import-order-alphabetical`](https://npm.im/eslint-plugin-import-order-alphabetical) and [`express-async-handler`](https://npm.im/express-async-handler) dev dependencies.
- Stop using [`husky`](https://npm.im/husky) and [`lint-staged`](https://npm.im/lint-staged).
- Use [`isobject`](https://npm.im/isobject) for checking if values are enumerable, non-array objects.
- Tests have been massively reorganized, refactored, and improved.
- Test the `GraphQLUpload` scalar.
- Test the `ignoreStream` function.
- Moved the `Upload` class to its own file.
- Added JSDoc for the `Upload` class instance property `file`.
- Test the `Upload` class.
- Improved JSDoc `FileUpload` typedef description.
- Removed now redundant `eslint-disable-next-line` comments.
- Use strict mode for scripts.
## 9.0.0
### Major
- Updated Node.js support from v8.5+ to v8.10+, to match what the [`eslint`](https://npm.im/eslint) dev dependency now supports. This is unlikely to be a breaking change for the published package.
- Removed the `Upload` scalar promise resolved `stream` property that has been deprecated since v7, along with associated tests.
- ESM is no longer published, due to CJS/ESM compatibility issues across recent Node.js versions, via [#169](https://github.com/jaydenseric/graphql-upload/pull/169).
- The file structure and non-index file exports have changed. This should only affect projects using undocumented deep imports.
### Minor
- Updated the [`fs-capacitor`](https://npm.im/fs-capacitor) dependency to v4 to support Node.js v13, making required changes to the source and tests, via [#166](https://github.com/jaydenseric/graphql-upload/pull/166).
- JSDoc comments are now included in the published code.
- Several anonymous functions have been named, for better error stack traces.
- Setup [GitHub Sponsors funding](https://github.com/sponsors/jaydenseric):
- Added `.github/funding.yml` to display a sponsor button in GitHub.
- Added a `package.json` `funding` field to enable npm CLI funding features.
### Patch
- Updated dev dependencies.
- Removed the `.nycrc.json` file:
- [`tap`](https://npm.im/tap) now ignores test files by default.
- The `lib/test-helpers` directory is now ignored using [`tap`](https://npm.im/tap) CLI arguments due to [tapjs/node-tap#612](https://github.com/tapjs/node-tap/issues/612).
- Removed the `esm` and `mjs` package tags; they will be added back once native ESM is properly supported.
- Updated JSDoc code examples to use CJS instead of ESM, as native ESM is not yet properly supported.
- No longer test [`fs-capacitor`](https://npm.im/fs-capacitor) implementation details such as temp file creation and cleanup.
- Commented the reasons for several `istanbul ignore next` comments.
## 8.1.0
### Minor
- `processRequest` now throws an appropriate error when a multipart field value exceeds the configured size limit, fixing [#159](https://github.com/jaydenseric/graphql-upload/issues/159).
- When the file size limit is exceeded, mention how many bytes the limit is in the stream error message.
- Added a new `processRequest` option to the `graphqlUploadExpress` and `graphqlUploadKoa` middleware, for improved testing without mocks or spies which are difficult to achieve with ESM.
### Patch
- Updated dependencies.
- Due to updated dependencies: Lint fixes, removed redundant `eslint-disable-next-line` comments, and regenerated the readme.
- Documented [`koa-graphql`](https://npm.im/koa-graphql) as known to be compatible, via [#156](https://github.com/jaydenseric/graphql-upload/pull/156).
- Fixed a readme typo, via [#161](https://github.com/jaydenseric/graphql-upload/pull/161).
- Use GitHub Actions instead of Travis for CI.
- Removed `package-lock.json` from `.gitignore` and `.prettierignore`, as it’s disabled in `.npmrc` anyway.
- New file structure.
- Explicitly defined main exports (instead of using `export * from`) to prevent accidental public exposure of internal APIs.
- Moved JSDoc typedefs into the index main entry file, alphabetically sorted.
- Nicer Browserslist query syntax.
- Replaced the `isObject` helper with a smarter and tested `isEnumerableObject`.
- Removed the `isString` helper.
- Enforced 100% code coverage for tests, and improved `processRequest` internals and tests (including a new test using vanilla Node.js HTTP), fixing [#130](https://github.com/jaydenseric/graphql-upload/issues/130) via [#162](https://github.com/jaydenseric/graphql-upload/pull/162).
- Removed a workaround from the `startServer` test helper.
- Added a new `ProcessRequestFunction` JSDoc type, and applied it to `processRequest`.
- Renamed the `UploadOptions` JSDoc type to `ProcessRequestOptions`.
- Misc. documentation improvements.
## 8.0.7
### Patch
- Updated dependencies.
- Handle invalid object paths in `map` multipart field entries, fixing [#154](https://github.com/jaydenseric/graphql-upload/issues/154).
- Import `WriteStream` from [`fs-capacitor`](https://npm.im/fs-capacitor) as a named rather than default import.
## 8.0.6
### Patch
- Updated dependencies.
- Allow batched operations again, fixing [#142](https://github.com/jaydenseric/graphql-upload/issues/142).
- Simplify tests by writing JSON as strings instead of using `JSON.stringify`.
- Use async middleware with [`express-async-handler`](https://npm.im/express-async-handler) for Express tests.
- Removed unintended `maxFiles` config in certain tests.
- Added the Open Graph image design to the logo Sketch file.
## 8.0.5
### Patch
- Updated dependencies.
- Handle invalid types in multipart fields and respond with meaningful HTTP 400 errors, via [#139](https://github.com/jaydenseric/graphql-upload/pull/139):
- Invalid `operations` type.
- Invalid `map` type.
- Invalid `map` entry type.
- Invalid `map` entry array item type.
- Additionally test current Node.js v8 and v10 versions with Travis.
- Reduced the size of the published `package.json` by moving dev tool config to files. This also prevents editor extensions such as Prettier and ESLint from detecting config and attempting to operate when opening package files installed in `node_modules`.
- Removed the [`watch`](https://npm.im/watch) dev dependency and `watch` script.
- Simplified the `prepublishOnly` script.
- Change to the `classic` TAP reporter for tests.
- Add [`apollo-server-koa`](https://npm.im/apollo-server-koa) and [`apollo-server-express`](https://npm.im/apollo-server-express) back to the compatible environments list in the readme, now that they use the current version of this package.
## 8.0.4
### Patch
- Updated the [`fs-capacitor`](https://npm.im/fs-capacitor) dependency to v2, fixing [#131](https://github.com/jaydenseric/graphql-upload/issues/131) via [#132](https://github.com/jaydenseric/graphql-upload/pull/132).
## 8.0.3
### Patch
- Updated dependencies. The `busboy` update contains [a bug fix for `.pipe()` on file streams](https://github.com/mscdex/busboy/issues/188).
- Use [jsDelivr](https://jsdelivr.com) for the readme logo instead of [RawGit](https://rawgit.com) as they are shutting down.
## 8.0.2
### Patch
- Updated dev dependencies.
- Fixed hanging when a request with a large payload has an “immediate” error, such as a malformed request, fixing [#123](https://github.com/jaydenseric/graphql-upload/issues/123) via [#124](https://github.com/jaydenseric/graphql-upload/pull/124).
- Moved JSDoc type definitions to the end of files to make it easier to open to the code.
## 8.0.1
### Patch
- Updated dev dependencies.
- Removed the package `module` field. Webpack by default resolves extensionless paths the same way Node.js in `--experimental-modules` mode does; `.mjs` files are preferred. Tools misconfigured or unable to resolve `.mjs` can get confused when `module` points to an `.mjs` ESM file and they attempt to resolve named imports from `.js` CJS files.
- Updated package scripts and config for the new [`husky`](https://npm.im/husky) version.
- Added a package `browserslist` field with the target Node.js version for [`@babel/preset-env`](https://npm.im/@babel/preset-env) and removed related config from `babel.config.js`.
- Tests now log if the environment is CJS or ESM (`--experimental-modules`) and the `NODE_ENV`.
- Fixed broken readme API documentation links.
## 8.0.0
### Major
- New naming that drops “apollo” to reflect the independent and universal nature of the project, fixing [#68](https://github.com/jaydenseric/apollo-upload-server/issues/68):
- Changed the package name from [`apollo-upload-server`](https://npm.im/apollo-upload-server) to [`graphql-upload`](https://npm.im/graphql-upload).
- Renamed `apolloUploadKoa` to `graphqlUploadKoa`.
- Renamed `apolloUploadExpress` to `graphqlUploadExpress`.
To migrate you project from `apollo-upload-server@7.1.0` to `graphql-upload@8.0.0`:
1. Run `npm uninstall apollo-upload-server`.
2. Run `npm install graphql-upload`.
3. Find and replace:
- `apolloUploadKoa` → `graphqlUploadKoa`.
- `apolloUploadExpress` → `graphqlUploadExpress`.
### Patch
- Updated dependencies.
- New project logo.
## 7.1.0
### Minor
- Support [`graphql`](https://npm.im/graphql) v14.
### Patch
- Updated dev dependencies.
## 7.0.0
### Major
- The `processRequest` function now requires a [`http.ServerResponse`](https://nodejs.org/api/http.html#http_class_http_serverresponse) instance as its second argument.
- Replaced the previously exported error classes with [`http-errors`](https://npm.im/http-errors) and snapshot tested error details, via [#105](https://github.com/jaydenseric/apollo-upload-server/pull/105).
- No longer exporting the `SPEC_URL` constant.
### Minor
- `Upload` scalar promises now resolve with a `createReadStream` method instead of a `stream` property, via [#92](https://github.com/jaydenseric/apollo-upload-server/pull/92).
- Accessing an `Upload` scalar promise resolved `stream` property results in a deprecation warning that recommends using `createReadStream` instead. It will be removed in a future release. Via [#107](https://github.com/jaydenseric/apollo-upload-server/pull/107).
- An `Upload` scalar variable can now be used by multiple resolvers, via [#92](https://github.com/jaydenseric/apollo-upload-server/pull/92).
- Multiple `Upload` scalar variables can now use the same multipart data, via [#92](https://github.com/jaydenseric/apollo-upload-server/pull/92).
- Malformed requests containing invalid JSON for `operations` or `map` multipart fields cause an appropriate error with a `400` status instead of crashing the process, relating to [#81](https://github.com/jaydenseric/apollo-upload-server/pull/81) and [#95](https://github.com/jaydenseric/apollo-upload-server/issues/95).
- Malformed requests missing `operations`, `map` and files, or just `map` and files, cause an appropriate error with a `400` status instead of hanging, fixing [#96](https://github.com/jaydenseric/apollo-upload-server/issues/96).
- Tweaked `GraphQLUpload` scalar description to remove details about how it resolves on the server as they are irrelevant to API users.
- Tweaked `GraphQLUpload` scalar error messages.
### Patch
- Updated dev dependencies.
- Removed the [`npm-run-all`](https://npm.im/npm-run-all) dev dependency and made scripts and tests sync for easier debugging, at the cost of slightly longer build times.
- Explicitly set `processRequest` default options instead of relying on [`busboy`](https://npm.im/busboy) defaults.
- Better organized project file structure.
- Configured Prettier to lint `.yml` files.
- Ensure the readme Travis build status badge only tracks `master` branch.
## 6.0.0-alpha.1
Big thanks to new collaborator [@mike-marcacci](https://github.com/mike-marcacci) for his help solving tricky bugs and edge-cases!
### Major
- Updated Node.js support from v6.10+ to v8.5+ for [native ESM](https://github.com/nodejs/node/blob/master/doc/changelogs/CHANGELOG_V8.md#8.5.0), [object rest/spread properties](https://node.green#ES2018-features-object-rest-spread-properties), and [async functions](https://node.green#ES2017-features-async-functions).
- Removed the [`@babel/runtime`](https://npm.im/@babel/runtime) dependency and config.
- Fixed [#45](https://github.com/jaydenseric/apollo-upload-server/issues/45), [#77](https://github.com/jaydenseric/apollo-upload-server/issues/77) and [#83](https://github.com/jaydenseric/apollo-upload-server/issues/83) via [#81](https://github.com/jaydenseric/apollo-upload-server/pull/81):
- Add `error` event listeners to file streams to prevent server crashes on aborted requests or parser errors.
- Use [`fs-capacitor`](https://npm.im/fs-capacitor) to ensure the server doesn’t hang if an upload `await` is out of order, or is never consumed.
### Minor
- Refactored package scripts to use `prepare` to support installation via Git (e.g. `npm install jaydenseric/apollo-upload-server`).
### Patch
- Updated dependencies.
- Use single instead of double typographic quotes in error messages.
- Use `babel.config.js` instead of `.babelrc.js`.
- Enabled `shippedProposals` in [`@babel/preset-env`](https://npm.im/@babel/preset-env) config.
- Improved testing:
- Use [`tap`](https://npm.im/tap) instead of [`ava`](https://npm.im/ava). Tests no longer transpile on the fly, are faster and AVA no longer dictates the Babel version.
- Tests run against the actual dist `.mjs` and `.js` files in native ESM (`--experimental-modules`) and CJS environments.
- Removed `get-port` dev dependency.
- Added Express tests.
- Test middleware error response status codes.
- Test behavior of aborted HTTP requests.
- Test that the app can respond if an upload is not handled.
- Test files to upload are created in context, rather than using arbitrary project files, via [#89](https://github.com/jaydenseric/apollo-upload-server/pull/89).
- Improved `package.json` scripts:
- Leveraged `npm-run-all` more for parallelism and reduced noise.
- Removed the clean script `rimraf` dev dependency in favour of native `rm -rf`. Leaner and faster; we only support \*nix now for contributing anyway.
- No longer use `cross-env`; contributors with Windows may setup and use a Bash shell.
- Renamed the `ESM` environment variable to `BABEL_ESM` to be more specific.
- Removed linting fix scripts.
- Linting included in the test script; Travis CI will fail PR's with lint errors.
- Custom watch script.
- Improved ESLint config:
- Simplified ESLint config with [`eslint-config-env`](https://npm.im/eslint-config-env).
- Removed redundant [`eslint-plugin-ava`](https://npm.im/eslint-plugin-ava) dev dependency and config.
- Undo overriding ESLint ignoring dotfiles by default as there are none now.
- Use `.prettierignore` to leave `package.json` formatting to npm.
- Tweaked package `description` and `keywords`.
- Compact package `repository` field.
- Improved documentation.
- Readme badge changes to deal with [shields.io](https://shields.io) unreliability:
- Use the official Travis build status badge.
- Use [Badgen](https://badgen.net) for the npm version badge.
- Removed the licence badge. The licence can be found in `package.json` and rarely changes.
- Removed the Github issues and stars badges. The readme is most viewed on Github anyway.
- Changelog version entries now have “Major”, “Minor” and “Patch” subheadings.
## 5.0.0
### Major
- [`graphql`](https://npm.im/graphql) peer dependency range updated to `^0.13.1` for native ESM support via `.mjs`. It’s a breaking change despite being a semver patch.
### Patch
- Updated dependencies.
- More robust npm scripts, with the ability to watch builds and tests together.
- Fixed missing dev dependency for fetching in tests.
- Use [`eslint-plugin-ava`](https://github.com/avajs/eslint-plugin-ava).
- HTTPS `package.json` author URL.
- New readme logo URL that doesn’t need to be updated every version.
## 4.0.2
### Patch
- Temporary solution for importing CommonJS in `.mjs`, fixing reopened [#40](https://github.com/jaydenseric/apollo-upload-server/issues/40).
## 4.0.1
### Patch
- Correct imports for vanilla Node.js `--experimental-modules` and `.mjs` support, fixing [#40](https://github.com/jaydenseric/apollo-upload-server/issues/40).
## 4.0.0
### Patch
- Updated dependencies.
- Simplified npm scripts.
- Readme updates:
- Documented [`Blob`](https://developer.mozilla.org/en-US/docs/Web/API/Blob) types, via [#39](https://github.com/jaydenseric/apollo-upload-server/pull/39).
- Explained how to use `processRequest` for custom middleware.
- Improved usage instructions.
- Display oldest supported Node.js version.
- Misc. tweaks including a simpler heading structure.
## 4.0.0-alpha.3
### Minor
- Updated peer dependencies to support `graphql@0.12`, via [#36](https://github.com/jaydenseric/apollo-upload-server/pull/36).
### Patch
- Updated dependencies.
## 4.0.0-alpha.2
### Minor
- Transpile and polyfill for Node.js v6.10+ (down from v7.6+) to [support AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html), fixing [#33](https://github.com/jaydenseric/apollo-upload-server/issues/33).
- Modular project structure that works better for native ESM.
- Added tests.
- Set up Travis to test using the latest stable Node.js version and the oldest supported in `package.json` `engines` (v6.10).
- Added a Travis readme badge.
- Improved error handling, fixing [#26](https://github.com/jaydenseric/apollo-upload-server/issues/26):
- Custom errors are thrown or emitted with meaningful messages that are exported so consumers can use `instanceof` with them.
- Where it makes sense, errors cause relevant HTTP status codes to be set in middleware.
- [Misordered multipart fields](https://github.com/jaydenseric/graphql-multipart-request-spec) cause `processRequest` to throw `MapBeforeOperationsUploadError` and `FilesBeforeMapUploadError` errors in middleware.
- The `map` field provided by the client is used to naively check the `maxFiles` option is not exceeded for a speedy `MaxFilesUploadError` error in middleware. The real number of files parsed is checked too, incase the request is malformed.
- If files are missing from the request the `scalar Upload` promises reject with a `FileMissingUploadError` error.
- Already if a file exceeds the `maxFileSize` option the file is truncated, the stream emits a `limit` event and `stream.truncated === true`. Now an `error` event is also emitted with a `MaxFileSizeUploadError`.
- Aborting requests from the client causes `scalar Upload` promises to reject with a `UploadPromiseDisconnectUploadError` error for file upload streams that have not yet been parsed. For streams being parsed an `error` event is emitted with an `FileStreamDisconnectUploadError` error and `stream.truncated === true`. It is up to consumers to cleanup aborted streams in their resolvers.
### Patch
- Updated dependencies.
- Smarter Babel config with `.babelrc.js`.
- Refactor to use fewer Busboy event listeners.
## 4.0.0-alpha.1
### Major
- New API to support the [GraphQL multipart request spec v2.0.0-alpha.2](https://github.com/jaydenseric/graphql-multipart-request-spec/releases/tag/v2.0.0-alpha.2). Files no longer upload to the filesystem; [readable streams](https://nodejs.org/api/stream.html#stream_readable_streams) are used in resolvers instead. Fixes [#13](https://github.com/jaydenseric/apollo-upload-server/issues/13) via [#22](https://github.com/jaydenseric/apollo-upload-server/pull/22).
- Export a new `Upload` scalar type to use in place of the old `Upload` input type. It represents a file upload promise that resolves an object containing `stream`, `filename`, `mimetype` and `encoding`.
- Deprecated the `uploadDir` middleware option.
- `graphql` is now a peer dependency.
### Minor
- Added new `maxFieldSize`, `maxFileSize` and `maxFiles` middleware options.
### Patch
- Middleware are now arrow functions.
## 3.0.0
### Major
- Updated Node.js support from v6.4+ to v7.6+.
- Express middleware now passes on errors instead of blocking, via [#20](https://github.com/jaydenseric/apollo-upload-server/pull/20).
### Patch
- Using Babel directly, dropping Rollup.
- New directory structure for compiled files.
- Module files now have `.mjs` extension.
- No longer publish the `src` directory.
- No more sourcemaps.
- Use an arrow function for the Koa middleware, to match the Express middleware.
- Compiled code is now prettier.
- Prettier markdown files.
- Updated package keywords.
- Updated an Apollo documentation link in the changelog.
- Readme improvements:
- Added links to badges.
- Removed the inspiration links; they are less relevant to the evolved codebase.
- Fixed an Apollo link.
- Replaced example resolver code with a link to the [Apollo upload examples](https://github.com/jaydenseric/apollo-upload-examples).
## 2.0.4
### Patch
- Updated dependencies.
- Readme tweaks including a new license badge.
## 2.0.3
### Patch
- Updated dependencies.
- Removed `package-lock.json`. Lockfiles are [not recommended](https://github.com/sindresorhus/ama/issues/479#issuecomment-310661514) for packages.
- Moved Babel config out of `package.json` to prevent issues when consumers run Babel over `node_modules`.
- Readme tweaks and fixes:
- Renamed the `File` input type `Upload` for clarity.
- Wording and formatting improvements.
- Covered React Native.
- Documented custom middleware.
## 2.0.2
### Patch
- Updated dependencies.
- Added a changelog.
- Dropped Yarn in favor of npm@5. Removed `yarn.lock` and updated install instructions.
- Set targeted Node version as a string for `babel-preset-env`.
- New ESLint config. Dropped [Standard Style](https://standardjs.com) and began using [Prettier](https://github.com/prettier/eslint-plugin-prettier).
- Using [lint-staged](https://github.com/okonet/lint-staged) to ensure contributors don't commit lint errors.
- Removed `build:watch` script. Use `npm run build -- --watch` directly.
## 2.0.1
### Patch
- Updated dependencies.
- Support regular requests from clients other than apollo-upload-client again, fixing [#4](https://github.com/jaydenseric/apollo-upload-server/issues/4).
- Removed incorrect commas from example GraphQL input type.
## 2.0.0
### Major
- Support `apollo-upload-client` v3 and [query batching](https://apollographql.com/docs/apollo-server/requests#batching).
### Patch
- Clearer package description.
- Use [Standard Style](https://standardjs.com) instead of ESLint directly.
## 1.1.0
### Minor
- Exporting a new helper function for processing requests. It can be used to create custom middleware, or middleware for unsupported routers.
- Exporting new Koa middleware.
- Upload directory is ensured on every request now. While slightly less efficient, it prevents major errors when if it is deleted while the server is running.
### Patch
- Updated dependencies.
- Documented npm install as well as Yarn.
- Typo fix in the readme.
## 1.0.2
### Patch
- Fixed broken Github deep links in the readme.
- Readme rewording.
- Simplified `package.json` description.
## 1.0.1
### Patch
- Added missing metadata to `package.json`.
- Added a link to apollographql/graphql-server in the readme.
## 1.0.0
Initial release.