-
Updated Node.js support to
^18.18.0 || ^20.9.0 || >=22.0.0. -
Updated dev dependencies, some of which require newer Node.js versions than previously supported.
-
Use the TypeScript v5.5+ JSDoc tag
@importto import types in modules. -
Removed JSDoc tag
@typedefthat were unintentionally re-exporting types; to migrate import TypeScript types from the correct module:- import type { GraphQLUpload } from "graphql-upload/Upload.mjs"; + import type GraphQLUpload from "graphql-upload/GraphQLUpload.mjs";
- import type { processRequest } from "graphql-upload/Upload.mjs"; + import type processRequest from "graphql-upload/processRequest.mjs";
- import type { GraphQLUpload } from "graphql-upload/processRequest.mjs"; + import type GraphQLUpload from "graphql-upload/GraphQLUpload.mjs";
-
Refactored tests to use the standard
AbortController,fetch,File, andFormDataAPIs available in modern Node.js and removed the dev dependenciesnode-abort-controllerandnode-fetch. -
Replaced the test utility function
streamToStringwith the functiontextfromnode:stream/consumersthat’s available in modern Node.js. -
Use the Node.js test runner API and remove the dev dependency
test-director.
- Support Express v5 by updating the optional peer dependency
@types/expressto4.0.29 - 5and the dev dependencyexpressto v5, via #389.
- Tweaked the package description.
- Updated the
package.jsonfieldrepositoryto conform to new npm requirements. - Updated the package scripts:
- Reordered the scripts.
- Replaced
npm runwithnode --run.
- Updated GitHub Actions CI config:
- No longer run the workflow on pull request.
- Enable manual workflow dispatching.
- Run checks in seperate jobs.
- Removed custom step names.
- Replaced
npm runwithnode --run. - Updated the tested Node.js versions to v18, v20, v22.
- Updated
actions/checkoutto v4. - Updated
actions/setup-nodeto v4.
- Migrated to the ESLint v9 CLI and “flat” config.
- Integrated a new dev dependency
eslint-plugin-jsdocand revised types. - Removed the Node.js CLI option
--unhandled-rejections=throwin the package scripttestsas it’s now the default for all supported Node.js versions. - Avoid hardcoding a default value in the type
FileUploadCreateReadStreamOptionspropertyhighWaterMarkdescription and use the functiongetDefaultHighWaterMarkfromnode:streamin tests. - Replaced the test helper class
Deferredwith polyfilledPromise.withResolvers. - Removed an unnecessary
awaitin tests. - Omit unused catch bindings in the function
processRequest. - Corrected the JSDoc type
FileUploadCreateReadStreamOptionsin the moduleprocessRequest.mjs. - Avoid using
returnin the middleware. - Added a new dev dependency
async-listento replace the test utility functionlisten. - Enabled the TypeScript compiler options
noUnusedLocalsandnoUnusedParametersand used the prefix_for purposefully unused function parameters in tests. - Updated the GitHub Markdown syntax for alerts in the readme.
- Tweaked wording in the readme and JSDoc descriptions.
- Updated dev dependencies.
- Use the
node:URL scheme for Node.js builtin module imports. - Improved JSDoc in the module
GraphQLUpload.mjs. - Revamped the readme:
- Removed the badges.
- More detailed installation instructions.
- Added information about TypeScript config and optimal JavaScript module design.
- Support non
latin1characters in file names by setting thebusboyoptiondefParamCharsettoutf8, fixing #328. - Removed a redundant
@ts-ignorecomment.
-
Updated the
fs-capacitordependency to v8, fixing #318. -
The type
FileUploadCreateReadStreamOptionsfrom theprocessRequest.mjsmodule now uses types fromfs-capacitorthat are slightly more specific. -
The API is now ESM in
.mjsfiles instead of CJS in.jsfiles, accessible viaimportbut notrequire. To migrate imports:- import GraphQLUpload from "graphql-upload/GraphQLUpload.js"; + import GraphQLUpload from "graphql-upload/GraphQLUpload.mjs";
- import graphqlUploadExpress from "graphql-upload/graphqlUploadExpress.js"; + import graphqlUploadExpress from "graphql-upload/graphqlUploadExpress.mjs";
- import graphqlUploadKoa from "graphql-upload/graphqlUploadKoa.js"; + import graphqlUploadKoa from "graphql-upload/graphqlUploadKoa.mjs";
- import processRequest from "graphql-upload/processRequest.js"; + import processRequest from "graphql-upload/processRequest.mjs";
- import Upload from "graphql-upload/Upload.js"; + import Upload from "graphql-upload/Upload.mjs";
- Updated dev dependencies.
- Updated examples in JSDoc comments.
- Updated the changelog entry for v14.0.0 to show how to migrate imports.
- Updated dev dependencies.
- Corrected the TypeScript type for the Koa context
ctxparameter for the Koa middleware created by the functiongraphqlUploadKoa, fromimport("koa").Contexttoimport("koa").ParameterizedContext.
- Don’t import and link types from the middlware modules
graphqlUploadExpress.jsandgraphqlUploadKoa.jswithin the moduleprocessRequest.js, fixing #314.
- Updated the
busboydependency to v1, fixing #311.- This important update addresses the vulnerability CVE-2022-24434 (GHSA-wm7h-9275-46v2).
- Some error messages have changed.
- Temporarily until mscdex/busboy#297 is fixed upstream, for the function
processRequestand the middlewaregraphqlUploadExpressandgraphqlUploadKoathe optionmaxFileSizeis actually 1 byte less than the amount specified.
- Updated the
typescriptdev dependency. - In the function
processRequestuse theonmethod instead ofonceto listen forerrorevents on thebusboyparser, as in edge cases the same parser could have multipleerrorevents and all must be handled to prevent the Node.js process exiting with an error. - Simplified error handling within the function
processRequest. - Added a test for the function
processRequestwith a maliciously malformed multipart request.
-
Updated Node.js support to
^14.17.0 || ^16.0.0 || >= 18.0.0. -
Updated the
graphqlpeer dependency to^16.3.0. -
Updated the
http-errorsdependency to v2. -
Public modules are now individually listed in the package
filesandexportsfields. -
Removed the package main index module; deep imports must be used. To migrate imports:
- import { GraphQLUpload } from "graphql-upload"; + import GraphQLUpload from "graphql-upload/GraphQLUpload.js";
- import { graphqlUploadExpress } from "graphql-upload"; + import graphqlUploadExpress from "graphql-upload/graphqlUploadExpress.js";
- import { graphqlUploadKoa } from "graphql-upload"; + import graphqlUploadKoa from "graphql-upload/graphqlUploadKoa.js";
- import { processRequest } from "graphql-upload"; + import processRequest from "graphql-upload/processRequest.js";
- import { Upload } from "graphql-upload"; + import Upload from "graphql-upload/Upload.js";
-
Shortened public module deep import paths, removing the
/public/. To migrate imports:- import GraphQLUpload from "graphql-upload/public/GraphQLUpload.js"; + import GraphQLUpload from "graphql-upload/GraphQLUpload.js";
- import graphqlUploadExpress from "graphql-upload/public/graphqlUploadExpress.js"; + import graphqlUploadExpress from "graphql-upload/graphqlUploadExpress.js";
- import graphqlUploadKoa from "graphql-upload/public/graphqlUploadKoa.js"; + import graphqlUploadKoa from "graphql-upload/graphqlUploadKoa.js";
- import processRequest from "graphql-upload/public/processRequest.js"; + import processRequest from "graphql-upload/processRequest.js";
- import Upload from "graphql-upload/public/Upload.js"; + import Upload from "graphql-upload/Upload.js";
-
Implemented TypeScript types via JSDoc comments, closing #282.
-
The
GraphQLUploadscalar no longer uses deprecatedGraphQLErrorconstructor parameters.
- Updated dev dependencies.
- Simplified dev dependencies and config for ESLint.
- Check TypeScript types via a new package
typesscript. - Removed the
jsdoc-mddev dependency and the related package scripts, replacing the readme “API” section with a manually written “Exports” section. - Removed the
hard-rejectiondev dependency. Instead, tests are run with the Node.js CLI flag--unhandled-rejections=throwto make Node.js v14 behave like newer versions. - Removed the
formdata-nodedev dependency. Instead,FileandFormDataare imported fromnode-fetch. - Updated GitHub Actions CI config:
- Run tests with Node.js v14, v16, v18.
- Updated
actions/checkoutto v3. - Updated
actions/setup-nodeto v3.
- Reorganized the test file structure.
- Use the
.jsfile extension inrequirepaths. - Use the Node.js
ReadablepropertyreadableEncodinginstead of_readableState.encodingin tests. - Use
substringinstead of the deprecated string methodsubstrin tests. - Fixed a typo in a code comment.
- Updated documentation.
- Added a
license.mdMIT License file, closing #86.
- Updated Node.js support to
^12.22.0 || ^14.17.0 || >= 16.0.0. - Updated dev dependencies, some of which require newer Node.js versions than previously supported.
- Removed
./packagefrom the packageexportsfield; the fullpackage.jsonfilename must be used in arequirepath.
- Updated the
graphqlpeer dependency to0.13.1 - 16. - Updated dependencies.
- Also run GitHub Actions CI with Node.js v17.
- Simplified package scripts.
- Renamed imports in the test index module.
- Test the
processRequestfunction with a GraphQL multipart request that has no files. - Test the
processRequestfunction with an unparsable multipart request. - Replaced the
form-datadev dependency withformdata-node,formdata-node, andnode-abort-controllerand refactored tests to align with web standards. - Refactored the
processRequestfunction to remove theisobjectdependency. - Improved the
processRequestfunction, via #273:- Fixed ending requests from being handled incorrectly as aborting in edge cases, closing #272.
- Fixed read streams created via the resolved
Uploadscalar valuecreateReadStreammethod:- Not emitting the
errorevent when the multipart request is aborted certain ways while the file is uploading. - Emitting incorrect
errorevent details for multipart request file field parse errors.
- Not emitting the
- Configured Prettier option
singleQuoteto the default,false. - Documentation tweaks.
- Updated Node.js support to
^12.20 || >= 14.13. - Updated dev dependencies, some of which require newer Node.js versions than previously supported.
- The tests are now ESM in
.mjsfiles instead of CJS in.jsfiles. - Replaced the the
package.jsonexportsfield public subpath folder mapping (deprecated by Node.js) with a subpath pattern. Deeprequirepaths must now include the.jsfile extension.
- Added a package
sideEffectsfield.
- Updated dependencies.
- Lint fixes for the updated Prettier version.
- Updated GitHub Actions CI config:
- Updated the tested Node.js versions to v12, v14, v16.
- Updated
actions/checkoutto v2. - Updated
actions/setup-nodeto v2. - Simplify config with the
npm install-testcommand. - Don’t specify the
CIenvironment variable as it’s set by default.
- Removed
npm-debug.logfrom the.gitignorefile as npm v4.2.0+ doesn’t create it in the current working directory. - Updated the EditorConfig URL.
- Updated the package
keywordsfield. - More specific package
mainfield path. - Simplified JSDoc related package scripts now that
jsdoc-mdv10 automatically generates a Prettier formatted readme. - Added a package
test:jsdocscript that checks the readme API docs are up to date with the source JSDoc. - Refactored private constants from exports of a single module to individual modules.
- Fixed test name and comment typos.
- Updated external URLs in docs.
- Prettier format for a JSDoc code example.
- Updated a
GraphQLUploadcode example to use@graphql-tools/schemainstead ofgraphql-tools. - Removed from the readme the notice that the package was previously published as
apollo-upload-server. - Simplified the readme “Setup” and “Support” sections.
- Updated Node.js support to
^10.13.0 || ^12.0.0 || >= 13.7.0. - Added a package
exportsfield with conditional exports to support native ESM in Node.js and keep internal code private, whilst avoiding the dual package hazard. 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.
- Updated the
graphqlpeer dependency to0.13.1 - 15, fixing #200 via #201. - Updated Prettier related package scripts.
- Configured Prettier option
semito the default,true. - Ensure GitHub Actions run on pull request.
- Also run GitHub Actions with Node.js v14.
- Fixed the
ignoreStreamfunction tests for Node.js v14 with a newCountReadableStreamtest helper, fixing #209. - Minor JSDoc wording tweak for consistency.
- Mention
Promise.allSettledin the readme “Tips” section. - Updated MDN Web Docs links.
- Updated Node.js support from v8.10+ to v10+, as earlier versions have reached end-of-life.
- Updated the
fs-capacitordependency to v6, which now requires Node.js v10+, via #179. - Updated dev dependencies, some of which now require Node.js v10+.
- Replaced the
tapdev dependency withtest-director,coverage-node, andhard-rejectionto 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
processRequestfunction. - The
processRequestfunction now places references to instances of the now exported and documentedUploadclass in the GraphQL operation for theGraphQLUploadscalar to derive its value, and theGraphQLUploadscalar now throws aGraphQLErrorwhen it parses an invalid value, fixing #175 via #181. - The
GraphQLUploadscalarparseLiteralandserializemethods now throwGraphQLError(instead ofError) instances, with tweaked messages.
- The
createReadStreamfunction in resolved file uploads now accepts options to configure the encoding and high water mark, fixing #177 via #179.
- Removed the now redundant
eslint-plugin-import-order-alphabeticalandexpress-async-handlerdev dependencies. - Stop using
huskyandlint-staged. - Use
isobjectfor checking if values are enumerable, non-array objects. - Tests have been massively reorganized, refactored, and improved.
- Test the
GraphQLUploadscalar. - Test the
ignoreStreamfunction. - Moved the
Uploadclass to its own file. - Added JSDoc for the
Uploadclass instance propertyfile. - Test the
Uploadclass. - Improved JSDoc
FileUploadtypedef description. - Removed now redundant
eslint-disable-next-linecomments. - Use strict mode for scripts.
- Updated Node.js support from v8.5+ to v8.10+, to match what the
eslintdev dependency now supports. This is unlikely to be a breaking change for the published package. - Removed the
Uploadscalar promise resolvedstreamproperty 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.
- The file structure and non-index file exports have changed. This should only affect projects using undocumented deep imports.
- Updated the
fs-capacitordependency to v4 to support Node.js v13, making required changes to the source and tests, via #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:
- Added
.github/funding.ymlto display a sponsor button in GitHub. - Added a
package.jsonfundingfield to enable npm CLI funding features.
- Added
- Updated dev dependencies.
- Removed the
.nycrc.jsonfile:tapnow ignores test files by default.- The
lib/test-helpersdirectory is now ignored usingtapCLI arguments due to tapjs/node-tap#612.
- Removed the
esmandmjspackage 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-capacitorimplementation details such as temp file creation and cleanup. - Commented the reasons for several
istanbul ignore nextcomments.
processRequestnow throws an appropriate error when a multipart field value exceeds the configured size limit, fixing #159.- When the file size limit is exceeded, mention how many bytes the limit is in the stream error message.
- Added a new
processRequestoption to thegraphqlUploadExpressandgraphqlUploadKoamiddleware, for improved testing without mocks or spies which are difficult to achieve with ESM.
- Updated dependencies.
- Due to updated dependencies: Lint fixes, removed redundant
eslint-disable-next-linecomments, and regenerated the readme. - Documented
koa-graphqlas known to be compatible, via #156. - Fixed a readme typo, via #161.
- Use GitHub Actions instead of Travis for CI.
- Removed
package-lock.jsonfrom.gitignoreand.prettierignore, as it’s disabled in.npmrcanyway. - 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
isObjecthelper with a smarter and testedisEnumerableObject. - Removed the
isStringhelper. - Enforced 100% code coverage for tests, and improved
processRequestinternals and tests (including a new test using vanilla Node.js HTTP), fixing #130 via #162. - Removed a workaround from the
startServertest helper. - Added a new
ProcessRequestFunctionJSDoc type, and applied it toprocessRequest. - Renamed the
UploadOptionsJSDoc type toProcessRequestOptions. - Misc. documentation improvements.
- Updated dependencies.
- Handle invalid object paths in
mapmultipart field entries, fixing #154. - Import
WriteStreamfromfs-capacitoras a named rather than default import.
- Updated dependencies.
- Allow batched operations again, fixing #142.
- Simplify tests by writing JSON as strings instead of using
JSON.stringify. - Use async middleware with
express-async-handlerfor Express tests. - Removed unintended
maxFilesconfig in certain tests. - Added the Open Graph image design to the logo Sketch file.
- Updated dependencies.
- Handle invalid types in multipart fields and respond with meaningful HTTP 400 errors, via #139:
- Invalid
operationstype. - Invalid
maptype. - Invalid
mapentry type. - Invalid
mapentry array item type.
- Invalid
- Additionally test current Node.js v8 and v10 versions with Travis.
- Reduced the size of the published
package.jsonby 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 innode_modules. - Removed the
watchdev dependency andwatchscript. - Simplified the
prepublishOnlyscript. - Change to the
classicTAP reporter for tests. - Add
apollo-server-koaandapollo-server-expressback to the compatible environments list in the readme, now that they use the current version of this package.
- Updated the
fs-capacitordependency to v2, fixing #131 via #132.
- Updated dependencies. The
busboyupdate contains a bug fix for.pipe()on file streams. - Use jsDelivr for the readme logo instead of RawGit as they are shutting down.
- Updated dev dependencies.
- Fixed hanging when a request with a large payload has an “immediate” error, such as a malformed request, fixing #123 via #124.
- Moved JSDoc type definitions to the end of files to make it easier to open to the code.
- Updated dev dependencies.
- Removed the package
modulefield. Webpack by default resolves extensionless paths the same way Node.js in--experimental-modulesmode does;.mjsfiles are preferred. Tools misconfigured or unable to resolve.mjscan get confused whenmodulepoints to an.mjsESM file and they attempt to resolve named imports from.jsCJS files. - Updated package scripts and config for the new
huskyversion. - Added a package
browserslistfield with the target Node.js version for@babel/preset-envand removed related config frombabel.config.js. - Tests now log if the environment is CJS or ESM (
--experimental-modules) and theNODE_ENV. - Fixed broken readme API documentation links.
-
New naming that drops “apollo” to reflect the independent and universal nature of the project, fixing #68:
- Changed the package name from
apollo-upload-servertographql-upload. - Renamed
apolloUploadKoatographqlUploadKoa. - Renamed
apolloUploadExpresstographqlUploadExpress.
To migrate you project from
apollo-upload-server@7.1.0tographql-upload@8.0.0:- Run
npm uninstall apollo-upload-server. - Run
npm install graphql-upload. - Find and replace:
apolloUploadKoa→graphqlUploadKoa.apolloUploadExpress→graphqlUploadExpress.
- Changed the package name from
- Updated dependencies.
- New project logo.
- Support
graphqlv14.
- Updated dev dependencies.
- The
processRequestfunction now requires ahttp.ServerResponseinstance as its second argument. - Replaced the previously exported error classes with
http-errorsand snapshot tested error details, via #105. - No longer exporting the
SPEC_URLconstant.
Uploadscalar promises now resolve with acreateReadStreammethod instead of astreamproperty, via #92.- Accessing an
Uploadscalar promise resolvedstreamproperty results in a deprecation warning that recommends usingcreateReadStreaminstead. It will be removed in a future release. Via #107. - An
Uploadscalar variable can now be used by multiple resolvers, via #92. - Multiple
Uploadscalar variables can now use the same multipart data, via #92. - Malformed requests containing invalid JSON for
operationsormapmultipart fields cause an appropriate error with a400status instead of crashing the process, relating to #81 and #95. - Malformed requests missing
operations,mapand files, or justmapand files, cause an appropriate error with a400status instead of hanging, fixing #96. - Tweaked
GraphQLUploadscalar description to remove details about how it resolves on the server as they are irrelevant to API users. - Tweaked
GraphQLUploadscalar error messages.
- Updated dev dependencies.
- Removed the
npm-run-alldev dependency and made scripts and tests sync for easier debugging, at the cost of slightly longer build times. - Explicitly set
processRequestdefault options instead of relying onbusboydefaults. - Better organized project file structure.
- Configured Prettier to lint
.ymlfiles. - Ensure the readme Travis build status badge only tracks
masterbranch.
Big thanks to new collaborator @mike-marcacci for his help solving tricky bugs and edge-cases!
- Updated Node.js support from v6.10+ to v8.5+ for native ESM, object rest/spread properties, and async functions.
- Removed the
@babel/runtimedependency and config. - Fixed #45, #77 and #83 via #81:
- Add
errorevent listeners to file streams to prevent server crashes on aborted requests or parser errors. - Use
fs-capacitorto ensure the server doesn’t hang if an uploadawaitis out of order, or is never consumed.
- Add
- Refactored package scripts to use
prepareto support installation via Git (e.g.npm install jaydenseric/apollo-upload-server).
- Updated dependencies.
- Use single instead of double typographic quotes in error messages.
- Use
babel.config.jsinstead of.babelrc.js. - Enabled
shippedProposalsin@babel/preset-envconfig. - Improved testing:
- Use
tapinstead ofava. Tests no longer transpile on the fly, are faster and AVA no longer dictates the Babel version. - Tests run against the actual dist
.mjsand.jsfiles in native ESM (--experimental-modules) and CJS environments. - Removed
get-portdev 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.
- Use
- Improved
package.jsonscripts:- Leveraged
npm-run-allmore for parallelism and reduced noise. - Removed the clean script
rimrafdev dependency in favour of nativerm -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
ESMenvironment variable toBABEL_ESMto 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.
- Leveraged
- Improved ESLint config:
- Simplified ESLint config with
eslint-config-env. - Removed redundant
eslint-plugin-avadev dependency and config. - Undo overriding ESLint ignoring dotfiles by default as there are none now.
- Simplified ESLint config with
- Use
.prettierignoreto leavepackage.jsonformatting to npm. - Tweaked package
descriptionandkeywords. - Compact package
repositoryfield. - Improved documentation.
- Readme badge changes to deal with shields.io unreliability:
- Use the official Travis build status badge.
- Use Badgen for the npm version badge.
- Removed the licence badge. The licence can be found in
package.jsonand 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.
graphqlpeer dependency range updated to^0.13.1for native ESM support via.mjs. It’s a breaking change despite being a semver 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
package.jsonauthor URL. - New readme logo URL that doesn’t need to be updated every version.
- Temporary solution for importing CommonJS in
.mjs, fixing reopened #40.
- Correct imports for vanilla Node.js
--experimental-modulesand.mjssupport, fixing #40.
- Updated dependencies.
- Simplified npm scripts.
- Readme updates:
- Updated peer dependencies to support
graphql@0.12, via #36.
- Updated dependencies.
- Transpile and polyfill for Node.js v6.10+ (down from v7.6+) to support AWS Lambda, fixing #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.jsonengines(v6.10). - Added a Travis readme badge.
- Improved error handling, fixing #26:
- Custom errors are thrown or emitted with meaningful messages that are exported so consumers can use
instanceofwith them. - Where it makes sense, errors cause relevant HTTP status codes to be set in middleware.
- Misordered multipart fields cause
processRequestto throwMapBeforeOperationsUploadErrorandFilesBeforeMapUploadErrorerrors in middleware. - The
mapfield provided by the client is used to naively check themaxFilesoption is not exceeded for a speedyMaxFilesUploadErrorerror 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 Uploadpromises reject with aFileMissingUploadErrorerror. - Already if a file exceeds the
maxFileSizeoption the file is truncated, the stream emits alimitevent andstream.truncated === true. Now anerrorevent is also emitted with aMaxFileSizeUploadError. - Aborting requests from the client causes
scalar Uploadpromises to reject with aUploadPromiseDisconnectUploadErrorerror for file upload streams that have not yet been parsed. For streams being parsed anerrorevent is emitted with anFileStreamDisconnectUploadErrorerror andstream.truncated === true. It is up to consumers to cleanup aborted streams in their resolvers.
- Custom errors are thrown or emitted with meaningful messages that are exported so consumers can use
- Updated dependencies.
- Smarter Babel config with
.babelrc.js. - Refactor to use fewer Busboy event listeners.
- New API to support the GraphQL multipart request spec v2.0.0-alpha.2. Files no longer upload to the filesystem; readable streams are used in resolvers instead. Fixes #13 via #22.
- Export a new
Uploadscalar type to use in place of the oldUploadinput type. It represents a file upload promise that resolves an object containingstream,filename,mimetypeandencoding. - Deprecated the
uploadDirmiddleware option. graphqlis now a peer dependency.
- Added new
maxFieldSize,maxFileSizeandmaxFilesmiddleware options.
- Middleware are now arrow functions.
- Updated Node.js support from v6.4+ to v7.6+.
- Express middleware now passes on errors instead of blocking, via #20.
- Using Babel directly, dropping Rollup.
- New directory structure for compiled files.
- Module files now have
.mjsextension. - No longer publish the
srcdirectory. - 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.
- Updated dependencies.
- Readme tweaks including a new license badge.
- Updated dependencies.
- Removed
package-lock.json. Lockfiles are not recommended for packages. - Moved Babel config out of
package.jsonto prevent issues when consumers run Babel overnode_modules. - Readme tweaks and fixes:
- Renamed the
Fileinput typeUploadfor clarity. - Wording and formatting improvements.
- Covered React Native.
- Documented custom middleware.
- Renamed the
- Updated dependencies.
- Added a changelog.
- Dropped Yarn in favor of npm@5. Removed
yarn.lockand updated install instructions. - Set targeted Node version as a string for
babel-preset-env. - New ESLint config. Dropped Standard Style and began using Prettier.
- Using lint-staged to ensure contributors don't commit lint errors.
- Removed
build:watchscript. Usenpm run build -- --watchdirectly.
- Updated dependencies.
- Support regular requests from clients other than apollo-upload-client again, fixing #4.
- Removed incorrect commas from example GraphQL input type.
- Support
apollo-upload-clientv3 and query batching.
- Clearer package description.
- Use Standard Style instead of ESLint directly.
- 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.
- Updated dependencies.
- Documented npm install as well as Yarn.
- Typo fix in the readme.
- Fixed broken Github deep links in the readme.
- Readme rewording.
- Simplified
package.jsondescription.
- Added missing metadata to
package.json. - Added a link to apollographql/graphql-server in the readme.
Initial release.