UNPKG

@theguild/federation-composition

Version:

Open Source Composition library for Apollo Federation

65 lines (64 loc) 2.19 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Edge = exports.assertFieldEdge = exports.isFieldEdge = exports.assertAbstractEdge = exports.isAbstractEdge = exports.assertEntityEdge = exports.isEntityEdge = void 0; const helpers_js_1 = require("./helpers.js"); const moves_js_1 = require("./moves.js"); function isEntityEdge(edge) { return edge.move instanceof moves_js_1.EntityMove; } exports.isEntityEdge = isEntityEdge; function assertEntityEdge(edge) { if (!isEntityEdge(edge)) { throw new Error(`Expected edge to be Edge<EntityMove>, but got ${edge}`); } } exports.assertEntityEdge = assertEntityEdge; function isAbstractEdge(edge) { return edge.move instanceof moves_js_1.AbstractMove; } exports.isAbstractEdge = isAbstractEdge; function assertAbstractEdge(edge) { if (!isAbstractEdge(edge)) { throw new Error(`Expected edge to be Edge<AbstractMove>, but got ${edge}`); } } exports.assertAbstractEdge = assertAbstractEdge; function isFieldEdge(edge) { return edge.move instanceof moves_js_1.FieldMove; } exports.isFieldEdge = isFieldEdge; function assertFieldEdge(edge) { if (!isFieldEdge(edge)) { throw new Error(`Expected edge to be Edge<FieldMove>, but got ${edge}`); } } exports.assertFieldEdge = assertFieldEdge; class Edge { head; move; tail; resolvable = []; _toString = (0, helpers_js_1.lazy)(() => `${this.head} -(${this.move})-> ${this.tail}`); constructor(head, move, tail) { this.head = head; this.move = move; this.tail = tail; } isCrossGraphEdge() { return this.head.graphId !== this.tail.graphId; } toString() { return this._toString.get(); } getResolvability(graphNames) { return this.resolvable.find(([checkedGraphNames]) => { return checkedGraphNames.every(name => graphNames.includes(name)); })?.[1]; } setResolvable(success, graphNames, error) { const result = success ? { success, error: undefined } : { success, error: error }; this.resolvable.push([graphNames, result]); return result; } } exports.Edge = Edge;