@pothos/plugin-federation
Version:
A Pothos plugin for implementing apollo federation subGraphs
94 lines (93 loc) • 2.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: Object.getOwnPropertyDescriptor(all, name).get
});
}
_export(exports, {
get addUsedDirectives () {
return addUsedDirectives;
},
get entityMapping () {
return entityMapping;
},
get getUsedDirectives () {
return getUsedDirectives;
},
get keyDirective () {
return keyDirective;
},
get mergeDirectives () {
return mergeDirectives;
},
get usedDirectives () {
return usedDirectives;
}
});
function keyDirective(key) {
if (Array.isArray(key)) {
return key.map(({ selection, resolvable })=>({
name: 'key',
args: {
fields: selection,
...resolvable === undefined ? {} : {
resolvable
}
}
}));
}
return [
{
name: 'key',
args: {
fields: key.selection,
...key.resolvable === undefined ? {} : {
resolvable: key.resolvable
}
}
}
];
}
function mergeDirectives(existing, add) {
if (!existing) {
return [
...add
];
}
if (Array.isArray(existing)) {
return [
...existing,
...add
];
}
return [
...Object.keys(existing).map((name)=>({
name,
args: existing[name]
})),
...add
];
}
const entityMapping = new WeakMap();
const usedDirectives = new Map();
function getUsedDirectives(builder) {
builder.toSchema();
var _usedDirectives_get;
return [
...(_usedDirectives_get = usedDirectives.get(builder)) !== null && _usedDirectives_get !== void 0 ? _usedDirectives_get : new Set()
].map((d)=>d.startsWith('@') ? d : `@${d}`).sort();
}
function addUsedDirectives(builder, directives) {
if (!usedDirectives.has(builder)) {
usedDirectives.set(builder, new Set());
}
const set = usedDirectives.get(builder);
for (const directive of directives){
set.add(directive);
}
}
//# sourceMappingURL=util.js.map