UNPKG

@pothos/plugin-federation

Version:

A Pothos plugin for implementing apollo federation subGraphs

83 lines (82 loc) 3.17 kB
"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