Releases: jaydenseric/apollo-upload-client
Version 18.0.1
Version 18.0.0
Major
-
Updated Node.js support to
^18.15.0 || >=20.4.0
. -
Updated the
@apollo/client
peer dependency to^3.8.0
. -
Updated the
extract-files
dependency to v13.-
React Native is no longer supported out of the box.
The class
ReactNativeFile
is no longer exported, or matched by the functionisExtractableFile
.This class was bloating non React Native environments with an extra module, increasing bundle sizes when building and adding an extra step to ESM loading waterfalls in browsers.
It’s the responsibility of Facebook to adhere to web standards and implement spec-complaint
Blob
,File
, andFormData
globals in the React Native environment.To migrate, React Native projects that are unable to use the standard globals can manually implement a class
ReactNativeFile
and match it with a custom functionisReactNativeFile
for use with the functioncreateUploadLink
optionisExtractableFile
. -
“Plain” objects in the GraphQL operation that aren’t
Object
instances (e.g.Object.create(null)
) are now also deep cloned when searching for extractable files.
-
-
Updated dev dependencies, some of which require newer Node.js versions than previously supported.
-
Use the Node.js test runner API and remove the dev dependency
test-director
. -
Refactored tests to use the standard
AbortController
,AbortSignal
,File
,FormData
, andResponse
APIs available in modern Node.js and removed the dev dependenciesabort-controller
,formdata-node
, andnode-fetch
. -
Public modules are now individually listed in the package
files
andexports
fields. -
Removed the package main index module; deep imports must be used. To migrate:
- import { - createUploadLink, - formDataAppendFile, - isExtractableFile - } from "apollo-upload-client"; + import createUploadLink from "apollo-upload-client/createUploadLink.mjs"; + import formDataAppendFile from "apollo-upload-client/formDataAppendFile.mjs"; + import isExtractableFile from "apollo-upload-client/isExtractableFile.mjs";
-
Shortened public module deep import paths, removing the
/public/
. To migrate:- import createUploadLink from "apollo-upload-client/public/createUploadLink.js"; + import createUploadLink from "apollo-upload-client/createUploadLink.mjs"; - import formDataAppendFile from "apollo-upload-client/public/formDataAppendFile.js"; + import formDataAppendFile from "apollo-upload-client/formDataAppendFile.mjs"; - import isExtractableFile from "apollo-upload-client/public/isExtractableFile.js"; + import isExtractableFile from "apollo-upload-client/isExtractableFile.mjs";
-
The API is now ESM in
.mjs
files instead of CJS in.js
files, accessible viaimport
but notrequire
. -
Implemented TypeScript types via JSDoc comments.
Types published in
@types/apollo-upload-client
should no longer be used.Projects must configure TypeScript to use types from the ECMAScript modules that have a
// @ts-check
comment:compilerOptions.allowJs
should betrue
.compilerOptions.maxNodeModuleJsDepth
should be reasonably large, e.g.10
.compilerOptions.module
should be"node16"
or"nodenext"
.
-
Internally, use the function
selectHttpOptionsAndBodyInternal
that was added in@apollo/client
v3.5.5.
Minor
- Added a new option
print
for the functioncreateUploadLink
, to customize how the GraphQL query or mutation AST prints to a string for transport. It that works like the same option forHttpLink
.
Patch
- Updated dev dependencies.
- Simplified dev dependencies and config for ESLint.
- Integrated the ESLint plugin
eslint-plugin-optimal-modules
. - Check TypeScript types via a new package
types
script. - Removed the
jsdoc-md
dev dependency and the related package scripts, replacing the readme “API” section with a manually written “Exports” section. - Updated the
package.json
fieldrepository
to conform to new npm requirements. - Updated GitHub Actions CI config:
- The workflow still triggers on push, but no longer on pull request.
- The workflow can now be manually triggered.
- Run tests with Node.js v18, v20, v21.
- Updated
actions/checkout
to v4. - Updated
actions/setup-node
to v3.
- Use the
node:
URL scheme for Node.js builtin module imports. - Reorganized the test file structure.
- In tests, for objects with the property
headers
that as of@apollo/client
v3.7.0 is a null-prototype object, use the assertiondeepEqual
instead ofdeepStrictEqual
. - Tweaked code for type safety.
- Updated documentation, including link URLs.
- Refactored example code in the readme.
- Removed the readme badges.
Version 17.0.0
Major
- 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
./package
from the packageexports
field; the fullpackage.json
filename must be used in arequire
path.
Patch
- Also run GitHub Actions CI with Node.js v17.
- Updated the
graphql
peer dependency to14 - 16
. - Refactored tests to remove the
fetch-blob
dev dependency. - Simplified package scripts.
- Use a new
assertBundleSize
function to assert module bundle size in tests:- Failure message contains details about the bundle size and how much the limit was exceeded.
- Errors when the surplus is greater than 25% of the limit, suggesting the limit should be reduced.
- Resolves the minified bundle and its gzipped size for debugging in tests.
- Tweaked the test function
timeLimitPromise
error messages. - Configured Prettier option
singleQuote
to the default,false
. - Documentation tweaks.
- Amended the changelog entry for v16.0.0.
Version 16.0.0
Major
- Updated the
extract-files
dependency to v11.
Patch
- Updated dev dependencies.
- Reverted the more specific package
main
field path. - Renamed imports in the test index module.
- Increased the bundle size test maximum allowed bundle size.
- Updated code examples to use deep imports.
- Amended the changelog entries for v14.0.0 and v15.0.0.
Version 15.0.0
Major
- Updated Node.js support to
^12.20 || >= 14.13
. - Stopped supporting Internet Explorer.
- Changed
@apollo/client
from a dependency to a peer dependency, fixing #251 via #252. - Updated dependencies, some of which require newer Node.js versions than previously supported.
- Replaced the the
package.json
exports
field public subpath folder mapping (deprecated by Node.js) with a subpath pattern. Deeprequire
paths withinapollo-upload-client/public/
must now include the.js
file extension. - Removed Babel related dependencies, config, and scripts. Published modules now contain more modern ES syntax.
- Published modules now contain JSDoc comments, which might affect TypeScript projects.
- The tests are now ESM in
.mjs
files instead of CJS in.js
files.
Patch
- Stop using
hard-rejection
to detect unhandledPromise
rejections in tests, as Node.js v15+ does this natively. - Test the bundle size manually using
esbuild
andgzip-size
, removingsize-limit
related dev dependencies, config, and scripts. - Updated GitHub Actions CI config:
- Run tests with Node.js v12, v14, v16.
- Updated
actions/checkout
to v2. - Updated
actions/setup-node
to v2. - Don’t specify the
CI
environment variable as it’s set by default.
- More specific package
main
field path. - Simplified JSDoc related package scripts now that
jsdoc-md
v10 automatically generates a Prettier formatted readme. - Added a package
test:jsdoc
script that checks the readme API docs are up to date with the source JSDoc. - Use the
.js
file extension in internalrequire
paths. - Clearer package and function
createUploadLink
description, fixing #247. - Fixed function
createUploadLink
optionfetchOptions.signal
bugs:- If the given abort controller signal is already aborted, immediately abort the fetch.
- Use
once: true
when adding theabort
event listener on the given abort controller signal to avoid a possible memory leak.
- Updated a URL in the changelog entry for v14.0.0.
- Documentation updates.
Version 14.1.3
Patch
- Removed the
subscriptions-transport-ws
peer dependency, via #235. - Updated dependencies.
- Also run GitHub Actions with Node.js v15.
- Updated tests to account for the
AbortController
global being defined in Node.js v15+.
Version 14.1.2
Patch
- Updated dependencies.
- Lint fixes for updated Prettier.
- Rewrote the tests to use
execute
fromapollo-link
instead ofApolloClient
query
andmutate
methods. - Ensure the Apollo Link observable terminates with an error when there are both errors and data, fixing #222.
Version 14.1.1
Patch
- Use
revertable-globals
for tests. - Removed no longer necessary
formdata-node
workarounds in tests. - Removed
npm-debug.log
from the.gitignore
file as npm v4.2.0+ doesn’t create it in the current working directory. - Support
clientAwareness
being undefined in Apollo Link context, via #212.
Version 14.1.0
Minor
- Support GET requests, fixing #151.
Patch
- Updated the
extract-files
dependency to v9, updating relevant deep require paths. - Added API tests, fixing #204.
- Properly support the
signal
fetch option, fixing #209. - Updated
createUploadLink
:- Alphabetically sorted destructured imports.
- Removed a redundant fallback value when destructuring
clientAwareness
from context. It was an obstacle to 100% code coverage becauseApolloClient
defaults it to an empty object. - Unnested some code from the
Observable
function scope. - Fixed the JSDoc default value type for
options.uri
. - Improved code comments.
- Replaced references to “Apollo Graph Manager” with “Apollo Studio” and updated related URLs.
- Better npm link in the readme setup instructions.
Version 14.0.1
Patch
- Use deep
@apollo/client
imports to support non React projects, fixing #207.