apollo-upload-client

A terminating Apollo Link for Apollo Client that fetches a GraphQL multipart request if the GraphQL variables contain files (by default FileList, File, or Blob instances), or else fetches a regular GraphQL POST or GET request (depending on the config and GraphQL operation).

Downloads
2.7M
Stars
1.5K
Committers
22

Bot releases are hidden (Show)

apollo-upload-client - Version 18.0.1 Latest Release

Published by jaydenseric 12 months ago

Patch

  • Corrected the function createUploadLink option uri type, fixing #316.
  • Prefixed unused parameters with _, fixing #317.
  • Fixed a typo in the changelog entry for v18.0.0.
apollo-upload-client - Version 18.0.0

Published by jaydenseric 12 months ago

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 function isExtractableFile.

      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, and FormData 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 function isReactNativeFile for use with the function createUploadLink option isExtractableFile.

    • “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, and Response APIs available in modern Node.js and removed the dev dependencies abort-controller, formdata-node, and node-fetch.

  • Public modules are now individually listed in the package files and exports 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 via import but not require.

  • 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:

  • Internally, use the function selectHttpOptionsAndBodyInternal that was added in @apollo/client v3.5.5.

Minor

  • Added a new option print for the function createUploadLink, to customize how the GraphQL query or mutation AST prints to a string for transport. It that works like the same option for HttpLink.

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 field repository 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 assertion deepEqual instead of deepStrictEqual.
  • Tweaked code for type safety.
  • Updated documentation, including link URLs.
  • Refactored example code in the readme.
  • Removed the readme badges.
apollo-upload-client - Version 17.0.0

Published by jaydenseric almost 3 years ago

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 package exports field; the full package.json filename must be used in a require path.

Patch

  • Also run GitHub Actions CI with Node.js v17.
  • Updated the graphql peer dependency to 14 - 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.
apollo-upload-client - Version 16.0.0

Published by jaydenseric over 3 years ago

Major

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.
apollo-upload-client - Version 15.0.0

Published by jaydenseric over 3 years ago

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. Deep require paths within apollo-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 unhandled Promise rejections in tests, as Node.js v15+ does this natively.
  • Test the bundle size manually using esbuild and gzip-size, removing size-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 internal require paths.
  • Clearer package and function createUploadLink description, fixing #247.
  • Fixed function createUploadLink option fetchOptions.signal bugs:
    • If the given abort controller signal is already aborted, immediately abort the fetch.
    • Use once: true when adding the abort 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.
apollo-upload-client - Version 14.1.3

Published by jaydenseric almost 4 years ago

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+.
apollo-upload-client - Version 14.1.2

Published by jaydenseric about 4 years ago

Patch

  • Updated dependencies.
  • Lint fixes for updated Prettier.
  • Rewrote the tests to use execute from apollo-link instead of ApolloClient query and mutate methods.
  • Ensure the Apollo Link observable terminates with an error when there are both errors and data, fixing #222.
apollo-upload-client - Version 14.1.1

Published by jaydenseric about 4 years ago

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.
apollo-upload-client - Version 14.1.0

Published by jaydenseric about 4 years ago

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 because ApolloClient 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.
apollo-upload-client - Version 14.0.1

Published by jaydenseric about 4 years ago

Patch

apollo-upload-client - Version 14.0.0

Published by jaydenseric about 4 years ago

Major

  • Updated Node.js support to ^10.17.0 || ^12.0.0 || >= 13.7.0.
  • Updated dependencies, some of which (only dev dependencies) require newer Node.js versions than previously supported.
  • Added a package exports field 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.
  • Support @apollo/client v3, fixing #174 via #175.

Patch

  • Added the graphql peer dependency to support a wider range of package managers, via #196.
  • Removed Node.js v13 and added v14 to the versions tested in GitHub Actions.
  • Simplified the GitHub Actions CI config with the npm install-test command.
  • Use Babel config overrides to ensure .js files are parsed as scripts, eliminating Babel interopRequireDefault helpers from transpilation output.
  • Prettier code examples in source JSDoc.
  • Improved the type ReactNativeFileSubstitute code example.
  • Updated EditorConfig.
  • Improved the documentation about gotchas when inspecting network requests in React Native, via #193.
  • Changed code examples to use import instead of require.
apollo-upload-client - Version 13.0.0

Published by jaydenseric over 4 years ago

Major

  • Updated Node.js support from v8.10+ to v10+.
  • Updated dependencies, some of which require Node.js v10+.

Minor

  • Support uploading files from a server environment, fixing #172 via #179 and #184.
    • Added createUploadLink options:
      • isExtractableFile
      • FormData
      • formDataAppendFile
    • Added exports for the new createUploadLink option defaults:
      • isExtractableFile
      • formDataAppendFile

Patch

  • Removed the now redundant eslint-plugin-import-order-alphabetical dev dependency.
  • Added a size-limit dev dependency.
  • Stop using husky and lint-staged.
  • Ensure GitHub Actions CI runs for pull requests.
  • Use strict mode for scripts.
  • Move Babel config from babel.config.js to src/.babelrc.json.
  • Improved the package prepare:prettier and test:prettier scripts.
  • Configured Prettier option semi to the default, true.
  • Removed package-lock.json from .gitignore and .prettierignore as it’s disabled in .npmrc anyway.
  • Updated external documentation link URLs.
  • Replaced “Apollo Engine” with “Apollo Graph Manager” in comments.
  • Improved the examples in the readme.
apollo-upload-client - Version 12.1.0

Published by jaydenseric almost 5 years ago

Minor

  • Setup GitHub Sponsors funding:
    • Added .github/funding.yml to display a sponsor button in GitHub.
    • Added a package.json funding field to enable npm CLI funding features.
apollo-upload-client - Version 12.0.0

Published by jaydenseric almost 5 years ago

Major

  • Updated Node.js support from v8.5+ to v8.10+, to match what the eslint dev dependency now supports. This is unlikely to be a breaking change for the published package.

Patch

  • Updated dev dependencies.
  • Added the eslint-plugin-jsdoc dev dependency.
  • Replaced the size-limit dev dependency with @size-limit/preset-small-lib.
  • Only create a default AbortController instance if signal is not already set in fetch options, fixing #162 via #169.
  • Use GitHub Actions instead of Travis for CI.
  • Clarified that Opera Mini isn’t supported in the Browserslist queries and readme “Support” section.
  • Documented polyfills to consider in the readme “Support” section.
  • Updated examples to use @apollo/react-hooks.
apollo-upload-client - Version 11.0.0

Published by jaydenseric over 5 years ago

Major

  • Updated Node.js support from v6+ to v8.5+.

Minor

Patch

apollo-upload-client - Version 10.0.1

Published by jaydenseric over 5 years ago

Patch

  • Updated dependencies.
  • 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.
  • Simplified the prepublishOnly script.
  • Add tips for React Native gotchas, via #135.
  • Updated the package description to mention that the upload link is terminating and clarified in the setup instructions that there can only be 1 terminating Apollo Link, via #147.
  • Improve setup instructions for Apollo Boost.
apollo-upload-client - Version 10.0.0

Published by jaydenseric almost 6 years ago

Major

  • Updated the extract-files dependency to v5:
    • The original operation object is no longer modified when it contains files, fixing #81.
    • If the same file is used in multiple locations of an operation it is only uploaded once.

Patch

  • Updated dependencies.
  • Updated package scripts and config for the new husky version.
  • Updated Node.js and browser support documentation in the readme.
  • Use jsDelivr for the readme logo instead of RawGit as they are shutting down.
apollo-upload-client - Version 9.1.0

Published by jaydenseric almost 6 years ago

Minor

Patch

apollo-upload-client - Version 9.0.0

Published by jaydenseric about 6 years ago

Major

  • Made apollo-link a dependency, instead of a peer dependency.
  • Removed the package module entry and the "ESM" build, which was .js and not proper native ESM for Node.js via .mjs as Apollo dependencies don’t support it.

Minor

Patch

  • Updated dependencies.
  • Use the new extract-files API.
  • Use jsdoc-md to generate readme API docs from source JSDoc, which has been improved.
  • Readme examples updated to use the react-apollo Mutation component instead of the graphql decorator.
  • Readme examples use CJS instead of ESM as this project does not support native ESM (due to a lack of support in Apollo dependencies) and we shouldn’t assume everyone uses Babel.
  • Updated package description.
  • Added package tags.
  • Added a package test:size script, using size-limit to guarantee < 1 KB CJS bundle sizes.
  • Lint .yml files.
  • Refactored package scripts and removed the npm-run-all dev dependency.
  • Removed a temporary workaround for a fixed Babel CLI bug.
  • Ensure the readme Travis build status badge only tracks master branch.
  • Use Badgen for the readme npm version badge.
apollo-upload-client - Version 8.1.0

Published by jaydenseric over 6 years ago

  • Updated dependencies.
  • Use .prettierignore to defer package.json formatting to npm.
  • Renamed .babelrc.js to babel.config.js and simplified ESLint ignore config.
  • Improved linting with eslint-config-env.
  • Use the .mjs extension for source.
  • Added JSDoc comments to source.
  • Refactored package scripts:
    • Use prepare to support installation via Git (e.g. npm install jaydenseric/apollo-upload-client).
    • Remove rimraf and cross-env dev dependencies. Only *nix environments will be supported for contributing.
    • Removed watch and fix scripts.
  • Compact package repository field.
  • Setup Travis CI.
  • Readme badge changes to deal with shields.io unreliability:
    • 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.
    • Added the more reliable build status badge provided by Travis and placed it first as it loads the quickest.
Package Rankings
Top 0.87% on Npmjs.org
Top 6.67% on Proxy.golang.org
Related Projects