@graphql-hive/federation-gateway-audit
Version:
Audit tool for Apollo Federation Gateway
169 lines (156 loc) • 3.02 kB
JavaScript
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 };