@pothos/plugin-federation
Version:
A Pothos plugin for implementing apollo federation subGraphs
83 lines (82 loc) • 3.17 kB
JavaScript
"use strict";
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 ExternalEntityRef () {
return ExternalEntityRef;
},
get providesMap () {
return providesMap;
}
});
const _core = require("@pothos/core");
const _util = require("./util");
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
const providesMap = new WeakMap();
class ExternalEntityRef extends _core.ObjectRef {
implement({ fields, externalFields, directives, ...options }) {
var _options_extensions, _options_extensions_apollo, _options_extensions1;
(0, _util.addUsedDirectives)(this.builder, [
'extends',
'key'
]);
this.builder.objectType(this, {
...options,
name: this.name,
directives: (0, _util.mergeDirectives)(directives, [
...this.key ? (0, _util.keyDirective)(this.key) : [],
{
name: 'extends',
args: {}
}
]),
fields: ()=>({
...externalFields === null || externalFields === void 0 ? void 0 : externalFields(new _core.RootFieldBuilder(this.builder, 'ExternalEntity', 'Object')),
...fields === null || fields === void 0 ? void 0 : fields(new _core.FieldBuilder(this.builder, 'ExtendedEntity', 'Object'))
}),
extensions: {
...options.extensions,
apollo: {
...(_options_extensions = options.extensions) === null || _options_extensions === void 0 ? void 0 : _options_extensions.apollo,
subgraph: {
...(_options_extensions1 = options.extensions) === null || _options_extensions1 === void 0 ? void 0 : (_options_extensions_apollo = _options_extensions1.apollo) === null || _options_extensions_apollo === void 0 ? void 0 : _options_extensions_apollo.subgraph,
resolveReference: this.resolveReference
}
}
}
});
return this;
}
provides(selection) {
const ref = Object.create(this);
providesMap.set(ref, selection);
this.builder.configStore.associateParamWithRef(ref, this);
return ref;
}
constructor(builder, name, { key, resolveReference }){
super(name), _define_property(this, "kind", 'Object'), _define_property(this, "builder", void 0), _define_property(this, "key", void 0), _define_property(this, "resolveReference", void 0);
this.builder = builder;
this.key = key;
this.resolveReference = resolveReference;
}
}
//# sourceMappingURL=external-ref.js.map