@graphql-hive/federation-gateway-audit
Version:
Audit tool for Apollo Federation Gateway
228 lines (210 loc) • 4.07 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';
const products = [
{
id: "p-1",
name: "Product 1",
price: 10
},
{
id: "p-2",
name: "Product 2",
price: 20
}
];
const categories = [
{
id: "pc-1",
name: "Category 1"
},
{
id: "c-2",
name: "Category 2"
}
];
var node = createSubgraph("node", {
typeDefs: (
/* GraphQL */
`
extend schema
type Query {
productNode: Node
categoryNode: Node
}
interface Node {
id: ID!
}
type Product implements Node {
id: ID!
}
type Category implements Node {
id: ID!
}
`
),
resolvers: {
Query: {
productNode() {
return {
__typename: "Product",
id: products[0].id
};
},
categoryNode() {
return {
__typename: "Category",
id: categories[0].id
};
}
},
Product: {
__resolveReference(key) {
const product = products.find((p) => p.id === key.id);
if (!product) {
return null;
}
return {
id: product.id
};
}
},
Category: {
__resolveReference(key) {
const cat = categories.find((c) => c.id === key.id);
if (!cat) {
return null;
}
return {
id: cat.id
};
}
}
}
});
var nodeTwo = createSubgraph("node-two", {
typeDefs: (
/* GraphQL */
`
extend schema
interface Node {
id: ID!
}
type Product implements Node {
id: ID!
}
type Category implements Node {
id: ID!
}
`
),
resolvers: {
Product: {
__resolveReference(key) {
const product = products.find((p) => p.id === key.id);
if (!product) {
return null;
}
return {
id: product.id
};
}
},
Category: {
__resolveReference(key) {
const cat = categories.find((c) => c.id === key.id);
if (!cat) {
return null;
}
return {
id: cat.id
};
}
}
}
});
var types = createSubgraph("types", {
typeDefs: (
/* GraphQL */
`
extend schema
interface Node {
id: ID!
}
type Product implements Node {
id: ID!
name: String!
price: Float!
}
type Category implements Node {
id: ID!
name: String!
}
`
),
resolvers: {
Product: {
__resolveReference(key) {
const product = products.find((p) => p.id === key.id);
if (!product) {
return null;
}
return {
id: product.id,
name: product.name,
price: product.price
};
}
},
Category: {
__resolveReference(key) {
const cat = categories.find((c) => c.id === key.id);
if (!cat) {
return null;
}
return {
id: cat.id,
name: cat.name
};
}
}
}
});
var tests = [
createTest(
/* GraphQL */
`
{
productNode {
... on Product {
id
name
__typename
price
}
}
}
`,
{
data: {
productNode: {
id: "p-1",
name: "Product 1",
__typename: "Product",
price: 10
}
}
}
)
];
var index = serve("node", [node, nodeTwo, types], tests);
export { index as default };