@graphql-inspector/action
Version:
GraphQL Inspector functionality for GitHub Actions
91 lines (90 loc) • 4.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.schemaMutationTypeChanged = schemaMutationTypeChanged;
exports.schemaQueryTypeChanged = schemaQueryTypeChanged;
exports.schemaSubscriptionTypeChanged = schemaSubscriptionTypeChanged;
/* eslint-disable unicorn/no-negated-condition */
const graphql_1 = require("graphql");
const errors_js_1 = require("../errors.js");
const node_templates_js_1 = require("../node-templates.js");
function schemaMutationTypeChanged(change, schemaNodes, config, _context) {
for (const schemaNode of schemaNodes) {
const mutation = schemaNode.operationTypes?.find(({ operation }) => operation === graphql_1.OperationTypeNode.MUTATION);
if (!mutation) {
if (change.meta.oldMutationTypeName !== 'unknown') {
config.onError(new errors_js_1.ValueMismatchError(graphql_1.Kind.SCHEMA_DEFINITION, change.meta.oldMutationTypeName, 'unknown'), change);
}
schemaNode.operationTypes = [
...(schemaNode.operationTypes ?? []),
{
kind: graphql_1.Kind.OPERATION_TYPE_DEFINITION,
operation: graphql_1.OperationTypeNode.MUTATION,
type: {
kind: graphql_1.Kind.NAMED_TYPE,
name: (0, node_templates_js_1.nameNode)(change.meta.newMutationTypeName),
},
},
];
}
else {
if (mutation.type.name.value !== change.meta.oldMutationTypeName) {
config.onError(new errors_js_1.ValueMismatchError(graphql_1.Kind.SCHEMA_DEFINITION, change.meta.oldMutationTypeName, mutation?.type.name.value), change);
}
mutation.type.name = (0, node_templates_js_1.nameNode)(change.meta.newMutationTypeName);
}
}
}
function schemaQueryTypeChanged(change, schemaNodes, config, _context) {
for (const schemaNode of schemaNodes) {
const query = schemaNode.operationTypes?.find(({ operation }) => operation === graphql_1.OperationTypeNode.MUTATION);
if (!query) {
if (change.meta.oldQueryTypeName !== 'unknown') {
config.onError(new errors_js_1.ValueMismatchError(graphql_1.Kind.SCHEMA_DEFINITION, change.meta.oldQueryTypeName, 'unknown'), change);
}
schemaNode.operationTypes = [
...(schemaNode.operationTypes ?? []),
{
kind: graphql_1.Kind.OPERATION_TYPE_DEFINITION,
operation: graphql_1.OperationTypeNode.QUERY,
type: {
kind: graphql_1.Kind.NAMED_TYPE,
name: (0, node_templates_js_1.nameNode)(change.meta.newQueryTypeName),
},
},
];
}
else {
if (query.type.name.value !== change.meta.oldQueryTypeName) {
config.onError(new errors_js_1.ValueMismatchError(graphql_1.Kind.SCHEMA_DEFINITION, change.meta.oldQueryTypeName, query?.type.name.value), change);
}
query.type.name = (0, node_templates_js_1.nameNode)(change.meta.newQueryTypeName);
}
}
}
function schemaSubscriptionTypeChanged(change, schemaNodes, config, _context) {
for (const schemaNode of schemaNodes) {
const sub = schemaNode.operationTypes?.find(({ operation }) => operation === graphql_1.OperationTypeNode.SUBSCRIPTION);
if (!sub) {
if (change.meta.oldSubscriptionTypeName !== 'unknown') {
config.onError(new errors_js_1.ValueMismatchError(graphql_1.Kind.SCHEMA_DEFINITION, change.meta.oldSubscriptionTypeName, 'unknown'), change);
}
schemaNode.operationTypes = [
...(schemaNode.operationTypes ?? []),
{
kind: graphql_1.Kind.OPERATION_TYPE_DEFINITION,
operation: graphql_1.OperationTypeNode.QUERY,
type: {
kind: graphql_1.Kind.NAMED_TYPE,
name: (0, node_templates_js_1.nameNode)(change.meta.newSubscriptionTypeName),
},
},
];
}
else {
if (sub.type.name.value !== change.meta.oldSubscriptionTypeName) {
config.onError(new errors_js_1.ValueMismatchError(graphql_1.Kind.SCHEMA_DEFINITION, change.meta.oldSubscriptionTypeName, sub?.type.name.value), change);
}
sub.type.name = (0, node_templates_js_1.nameNode)(change.meta.newSubscriptionTypeName);
}
}
}