@apollo/client
Version:
A fully-featured caching GraphQL client.
34 lines (33 loc) • 1.39 kB
JavaScript
;
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