UNPKG

@graphql-hive/federation-gateway-audit

Version:
214 lines (205 loc) 3.5 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'; const users = [ { id: "u1", rid: "u1-rid", name: "u1-name", nickname: "u1-nickname" }, { id: "u2", rid: "u2-rid", name: "u2-name", nickname: "u2-nickname" } ]; var a = createSubgraph("a", { typeDefs: ( /* GraphQL */ ` type Query { randomUser: User providedRandomUser: User @provides(fields: "name") } extend type User @key(fields: "id") { id: ID! @external name: String! @external rid: ID } ` ), resolvers: { Query: { randomUser() { return { id: users[0].id, rid: users[0].rid }; }, providedRandomUser() { return { id: users[0].id, rid: users[0].rid, name: users[0].name }; } }, User: { __resolveReference(key) { const user = users.find((u) => u.id === key.id); if (!user) { return null; } return { id: user.id, rid: user.rid }; }, name(user) { return user.name ?? "never"; } } } }); var b = createSubgraph("b", { typeDefs: ( /* GraphQL */ ` type Query { userById(id: ID): User } type User @key(fields: "id") { id: ID! name: String! nickname: String } ` ), resolvers: { Query: { userById: (_, { id }) => { const user = users.find((u) => u.id === id); if (!user) { return null; } return { id: user.id, name: user.name, nickname: user.nickname }; } }, User: { __resolveReference: (key) => { const user = users.find((u) => u.id === key.id); if (!user) { return null; } return { id: user.id, name: user.name, nickname: user.nickname }; } } } }); var test = [ createTest( /* GraphQL */ ` query { randomUser { id name } userById(id: "u2") { id name nickname } } `, { data: { randomUser: { id: "u1", name: "u1-name" }, userById: { id: "u2", name: "u2-name", nickname: "u2-nickname" } } } ), createTest( /* GraphQL */ ` query { randomUser { id rid } } `, { data: { randomUser: { id: "u1", rid: "u1-rid" } } } ), createTest( /* GraphQL */ ` query { randomUser { id rid name } } `, { data: { randomUser: { id: "u1", rid: "u1-rid", name: "u1-name" } } } ), createTest( /* GraphQL */ ` query { providedRandomUser { id rid name } } `, { data: { providedRandomUser: { id: "u1", rid: "u1-rid", name: "u1-name" } } } ) ]; var index = serve("fed1-external-extension", [a, b], test); export { index as default };