UNPKG

@theguild/federation-composition

Version:
48 lines (47 loc) 2.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SatisfiabilityError = void 0; class SatisfiabilityError extends Error { kind; sourceGraphName; typeName; fieldName; static forKey(sourceGraphName, targetGraphName, typeName, keyFields) { return new SatisfiabilityError('KEY', sourceGraphName, typeName, null, `cannot move to subgraph "${targetGraphName}" using @key(fields: "${keyFields}") of "${typeName}", the key field(s) cannot be resolved from subgraph "${sourceGraphName}".`); } static forRequire(sourceGraphName, typeName, fieldName) { return new SatisfiabilityError('REQUIRE', sourceGraphName, typeName, fieldName, `cannot satisfy @require conditions on field "${typeName}.${fieldName}".`); } static forExternal(sourceGraphName, typeName, fieldName) { return new SatisfiabilityError('EXTERNAL', sourceGraphName, typeName, fieldName, `field "${typeName}.${fieldName}" is not resolvable because marked @external.`); } static forMissingField(sourceGraphName, typeName, fieldName) { return new SatisfiabilityError('MISSING_FIELD', sourceGraphName, typeName, fieldName, `cannot find field "${typeName}.${fieldName}".`); } static forNoKey(sourceGraphName, targetGraphName, typeName, fieldName) { return new SatisfiabilityError('NO_KEY', sourceGraphName, typeName, fieldName, `cannot move to subgraph "${targetGraphName}", which has field "${typeName}.${fieldName}", because type "${typeName}" has no @key defined in subgraph "${targetGraphName}".`); } static forNoImplementation(sourceGraphName, typeName) { return new SatisfiabilityError('NO_IMPLEMENTATION', sourceGraphName, typeName, null, `no subgraph can be reached to resolve the implementation type of @interfaceObject type "${typeName}".`); } constructor(kind, sourceGraphName, typeName, fieldName, message) { super(message); this.kind = kind; this.sourceGraphName = sourceGraphName; this.typeName = typeName; this.fieldName = fieldName; } isMatchingField(typeName, fieldName) { if (this.typeName !== typeName) { return false; } if (this.fieldName) { return this.fieldName === fieldName; } return true; } toString() { return this.message; } } exports.SatisfiabilityError = SatisfiabilityError;