> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GraphQL

export const VersionRequirements = ({versions = []}) => {
  if (!Array.isArray(versions) || versions.length === 0) {
    return null;
  }
  const boundaries = {
    upper: " or lower",
    exact: "",
    lower: " or higher"
  };
  const containerStyle = {
    marginTop: "0.5rem",
    marginBottom: "1.5rem"
  };
  const lineStyle = {
    display: "block",
    margin: "0 0 0.35rem 0",
    fontSize: "0.875rem",
    lineHeight: "1.4"
  };
  const pillBaseStyle = {
    display: "inline-block",
    padding: "0.1em 0.4em",
    borderRadius: "0.25rem",
    border: "1px solid",
    fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
    fontSize: "0.85em",
    fontWeight: 500
  };
  const pillColors = {
    "AppSignal for Elixir": {
      background: "#f3e8ff",
      borderColor: "#e9d5ff",
      color: "#9333ea"
    },
    "AppSignal for Front-end": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Go": {
      background: "#ccfbf1",
      borderColor: "#99f6e4",
      color: "#0d9488"
    },
    "AppSignal for JavaScript": {
      background: "#fef9c3",
      borderColor: "#fde68a",
      color: "#ca8a04"
    },
    "AppSignal for Node.js": {
      background: "#dcfce7",
      borderColor: "#bbf7d0",
      color: "#16a34a"
    },
    "AppSignal for Python": {
      background: "#dbeafe",
      borderColor: "#bfdbfe",
      color: "#2563eb"
    },
    "AppSignal for Ruby": {
      background: "#fee2e2",
      borderColor: "#fecaca",
      color: "#dc2626"
    },
    "AppSignal for Rust": {
      background: "#ffedd5",
      borderColor: "#fed7aa",
      color: "#ea580c"
    }
  };
  const defaultPillColor = {
    background: "#f4f4f5",
    borderColor: "#e4e4e7",
    color: "#52525b"
  };
  const getPillStyle = name => ({
    ...pillBaseStyle,
    ...pillColors[name] || defaultPillColor
  });
  const getBoundText = bound => {
    return boundaries[bound] || boundaries.lower;
  };
  return <div style={containerStyle}>
      {versions.map((v, i) => <p key={`${v.name}-${v.version}-${v.bound || "lower"}-${i}`} style={lineStyle}>
          This feature requires{" "}
          <code style={getPillStyle(v.name)}>{v.name}</code> version {v.version}
          {getBoundText(v.bound)}.
        </p>)}
    </div>;
};

<VersionRequirements
  versions={[
{ name: "AppSignal for Node.js", version: "3.0.0" },
{ name: "GraphQL", version: "14" }
]}
/>

<Note>
  Les instrumentations par défaut peuvent être désactivées via l'option de configuration `disableDefaultInstrumentations`. Vous pouvez en savoir plus sur la façon de la configurer dans notre [documentation des options de configuration](/nodejs/3.x/configuration/options#option-disabledefaultinstrumentations).
</Note>

L'intégration AppSignal pour Node.js pour GraphQL, utilisant le package [`graphql`](https://www.npmjs.com/package/graphql).

Cette instrumentation fonctionnera également avec toute bibliothèque qui dépend du package `graphql`, telle que [Apollo Server](https://www.apollographql.com/) ou [Yoga](https://www.the-guild.dev/graphql/yoga-server).

## Installation et utilisation

GraphQL est instrumenté automatiquement par le package AppSignal pour Node.js. Aucune configuration supplémentaire n'est nécessaire pour instrumenter GraphQL dans votre application.

## Fonctionnalités

L'intégration GraphQL enverra à AppSignal des spans enfants représentant l'analyse, la validation, l'exécution et la résolution de la requête. Le span pour l'étape d'exécution contiendra la requête GraphQL.

Toutes les erreurs survenant lors de la validation de la requête seront signalées à AppSignal.
