UNPKG

@graphql-hive/federation-gateway-audit

Version:
169 lines (156 loc) 3.02 kB
import { c as createSubgraph, a as createTest, s as serve } from './testkit-BtZjdl4n.js'; import '@apollo/composition'; import 'graphql'; import 'fets'; import '@apollo/subgraph'; import 'graphql-yoga'; var a = createSubgraph("a", { typeDefs: ( /* GraphQL */ ` extend schema @link( url: "https://specs.apollo.dev/federation/v2.3" import: ["@key", "@external", "@shareable"] ) type Product @key(fields: "id") { id: ID @external category: Category @shareable } type Category { details: String } ` ), resolvers: { Product: { __resolveReference(product) { return { id: product.id, category: { details: `Details for Product#${product.id}` } }; } } } }); var b = createSubgraph("b", { typeDefs: ( /* GraphQL */ ` extend schema @link( url: "https://specs.apollo.dev/federation/v2.3" import: ["@key", "@external", "@shareable"] ) type Product @key(fields: "id") { id: ID @external category: Category @shareable } type Category { id: ID @shareable } ` ), resolvers: { Product: { __resolveReference(product) { return { id: product.id, category: { id: 3 } }; } } } }); var c = createSubgraph("c", { typeDefs: ( /* GraphQL */ ` extend schema @link(url: "https://specs.apollo.dev/federation/v2.3", import: ["@key"]) type Category @key(fields: "id") { id: ID name: String } ` ), resolvers: { Category: { __resolveReference(category) { return { id: category.id, name: `Category#${category.id}` }; } } } }); var d = createSubgraph("d", { typeDefs: ( /* GraphQL */ ` extend schema @link(url: "https://specs.apollo.dev/federation/v2.3", import: ["@key"]) type Query { productFromD(id: ID!): Product } type Product @key(fields: "id") { id: ID name: String } ` ), resolvers: { Product: { __resolveReference(product) { return { id: product.id, name: `Product#${product.id}` }; } }, Query: { productFromD(_, { id }) { return { id, name: `Product#${id}` }; } } } }); var test = [ createTest( /* GraphQL */ ` query { productFromD(id: "1") { id name category { id name details } } } `, { data: { productFromD: { id: "1", name: "Product#1", category: { id: "3", name: "Category#3", details: "Details for Product#1" } } } } ) ]; var index = serve("parent-entity-call-complex", [a, b, c, d], test); export { index as default };