UNPKG

@apollo/client

Version:

A fully-featured caching GraphQL client.

34 lines (33 loc) 1.39 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.addDeferFragmentLabels = addDeferFragmentLabels; const graphql_1 = require("graphql"); const getDirectiveArgValue_js_1 = require("./getDirectiveArgValue.cjs"); const RESERVED_PREFIX = "ac_"; function addDeferFragmentLabels(document) { let count = 0; return (0, graphql_1.visit)(document, { Directive(node) { if (node.name.value !== "defer") return; // Keep user defined labels const label = (0, getDirectiveArgValue_js_1.getDirectiveArgValue)(node, "label", graphql_1.Kind.STRING); if (label && !label.startsWith(RESERVED_PREFIX)) return; const args = node.arguments ?? []; const index = args.findIndex((arg) => arg.name.value === "label"); const labelArg = { kind: graphql_1.Kind.ARGUMENT, name: { kind: graphql_1.Kind.NAME, value: "label" }, value: { kind: graphql_1.Kind.STRING, value: RESERVED_PREFIX + count++ }, }; return { ...node, arguments: index === -1 ? [...args, labelArg] : args.map((arg, i) => (i === index ? labelArg : arg)), }; }, }); } //# sourceMappingURL=addDeferFragmentLabels.cjs.map