mirror of
https://github.com/rjNemo/federation
synced 2026-06-10 03:56:39 +00:00
20 KiB
20 KiB
graphql-upload changelog
8.1.0
Minor
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.
Patch
- 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.
8.0.7
Patch
- Updated dependencies.
- Handle invalid object paths in
mapmultipart field entries, fixing #154. - Import
WriteStreamfromfs-capacitoras a named rather than default import.
8.0.6
Patch
- 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.
8.0.5
Patch
- 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.
8.0.4
Patch
- Updated the
fs-capacitordependency to v2, fixing #131 via #132.
8.0.3
Patch
- 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.
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 via #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
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.
8.0.0
Major
-
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
Patch
- Updated dependencies.
- New project logo.
7.1.0
Minor
- Support
graphqlv14.
Patch
- Updated dev dependencies.
7.0.0
Major
- 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.
Minor
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.
Patch
- 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.
6.0.0-alpha.1
Big thanks to new collaborator @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, 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
Minor
- Refactored package scripts to use
prepareto 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.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.
5.0.0
Major
graphqlpeer dependency range updated to^0.13.1for 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
package.jsonauthor 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.
4.0.1
Patch
- Correct imports for vanilla Node.js
--experimental-modulesand.mjssupport, fixing #40.
4.0.0
Patch
- Updated dependencies.
- Simplified npm scripts.
- Readme updates:
4.0.0-alpha.3
Minor
- Updated peer dependencies to support
graphql@0.12, via #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, 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
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. 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.
Minor
- Added new
maxFieldSize,maxFileSizeandmaxFilesmiddleware 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.
Patch
- 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.
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 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
2.0.2
Patch
- 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.
2.0.1
Patch
- Updated dependencies.
- Support regular requests from clients other than apollo-upload-client again, fixing #4.
- Removed incorrect commas from example GraphQL input type.
2.0.0
Major
- Support
apollo-upload-clientv3 and query batching.
Patch
- Clearer package description.
- Use Standard Style 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.jsondescription.
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.