Apollo Link HTTP Common Utilities

raw JSON →
0.2.16 verified Tue Apr 21 auth: no javascript deprecated

apollo-link-http-common is an internal utility package within the deprecated `apollo-link` ecosystem, specifically designed to provide shared HTTP functionalities for other Apollo Link packages like `apollo-link-http` and `apollo-link-http-batch`. It extracts common logic for handling HTTP requests and responses, but it is not intended for direct consumption by end-user applications. The package, currently at version 0.2.16, explicitly warns that its API is unstable and versions may not adhere to SemVer, reflecting its role as a rapidly evolving internal component. Since Apollo Client 3.0, the entire `apollo-link` library, including this common utilities package, has been largely deprecated. Its core functionalities have been integrated directly into `@apollo/client/link/http`, making direct use of `apollo-link-http-common` obsolete and actively discouraged. Developers should migrate to the equivalent utilities provided by `@apollo/client` for stable HTTP networking.

error Cannot find module 'apollo-link-http-common' or its corresponding type declarations.
cause Attempting to use `apollo-link-http-common` in a modern Apollo Client (v3+) project where it has been deprecated and removed.
fix
Remove the apollo-link-http-common dependency. The functionality is now integrated into @apollo/client/link/http. Adapt your code to use @apollo/client's native HTTP link functionality.
error Error: Cannot find module 'graphql'
cause The `graphql` peer dependency is not installed or its version does not satisfy the specified range (`^0.11.0 || ^0.12.0 || ^0.13.0 || ^14.0.0 || ^15.0.0`).
fix
Install graphql as a dependency: npm install graphql or yarn add graphql. Ensure its version is compatible with the peer dependency range specified.
breaking The `apollo-link` ecosystem, including `apollo-link-http-common`, is deprecated as of Apollo Client 3.0. Its functionalities have been moved directly into `@apollo/client`. Direct usage of this package is strongly discouraged, and existing implementations should migrate.
fix Migrate your application to use `@apollo/client/link/http` and other `@apollo/client` features directly. Remove all `apollo-link`, `apollo-link-http`, and `apollo-link-http-common` dependencies.
breaking The README explicitly states that the API of `apollo-link-http-common` is subject to change and versions may not follow SemVer. This means breaking changes can occur even between minor or patch versions.
fix Avoid direct reliance on this package if possible. If you must use it (e.g., in a legacy `apollo-link` setup), pin exact versions and rigorously test updates. The recommended fix is to migrate to `@apollo/client`.
gotcha This package is primarily an internal utility. It never reached a 1.0 stable release, indicating it was always considered experimental or unstable for external consumption. Direct usage by end-users is not its intended purpose.
fix Recognize this package's internal role. For user-facing HTTP links, use the stable `HttpLink` from `@apollo/client` (since v3) or `apollo-link-http` (for older Apollo Client versions).
npm install apollo-link-http-common
yarn add apollo-link-http-common
pnpm add apollo-link-http-common

This example demonstrates how an internal utility like `parseAndCheckHttpResponse` from `apollo-link-http-common` would process a mock HTTP response into a GraphQL result. It highlights the package's internal, lower-level role in handling network responses, not its direct use in creating an Apollo Link. This package is deprecated; for actual Apollo Client HTTP networking, use `@apollo/client/link/http`.

import { parseAndCheckHttpResponse } from 'apollo-link-http-common';
import { print } from 'graphql';

const mockOperation = {
  query: print(`query GetGreeting { greeting }`),
  variables: {},
  operationName: 'GetGreeting',
  extensions: {}
};

async function handleMockResponse() {
  // This is a simplified example demonstrating an internal utility function.
  // In a real scenario, you'd have a 'Response' object from a fetch call.
  const mockResponse = new Response(JSON.stringify({
    data: { greeting: 'Hello World!' }
  }), {
    status: 200,
    headers: { 'Content-Type': 'application/json' }
  });

  try {
    const result = await parseAndCheckHttpResponse(mockOperation, mockResponse);
    console.log('Parsed GraphQL result:', result);
  } catch (error) {
    console.error('Error parsing response:', error);
  }
}

handleMockResponse();