@graphql-hive/cli
Version:
A CLI util to manage and control your GraphQL Hive
47 lines • 2.12 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.minifySchema = exports.loadSchema = exports.renderChanges = exports.renderErrors = void 0;
const tslib_1 = require("tslib");
const colors_1 = tslib_1.__importDefault(require("colors"));
const graphql_1 = require("graphql");
const code_file_loader_1 = require("@graphql-tools/code-file-loader");
const graphql_file_loader_1 = require("@graphql-tools/graphql-file-loader");
const json_file_loader_1 = require("@graphql-tools/json-file-loader");
const load_1 = require("@graphql-tools/load");
const url_loader_1 = require("@graphql-tools/url-loader");
const sdk_1 = require("../sdk");
const indent = ' ';
const criticalityMap = {
[sdk_1.CriticalityLevel.Breaking]: colors_1.default.red('-'),
[sdk_1.CriticalityLevel.Safe]: colors_1.default.green('-'),
[sdk_1.CriticalityLevel.Dangerous]: colors_1.default.yellow('-'),
};
function renderErrors(errors) {
this.fail(`Detected ${errors.total} error${errors.total > 1 ? 's' : ''}`);
this.log('');
errors.nodes.forEach(error => {
this.log(String(indent), colors_1.default.red('-'), this.bolderize(error.message));
});
}
exports.renderErrors = renderErrors;
function renderChanges(changes) {
this.info(`Detected ${changes.total} change${changes.total > 1 ? 's' : ''}`);
this.log('');
changes.nodes.forEach(change => {
this.log(indent, criticalityMap[change.criticality], this.bolderize(change.message));
});
}
exports.renderChanges = renderChanges;
async function loadSchema(file) {
const sources = await (0, load_1.loadTypedefs)(file, {
cwd: process.cwd(),
loaders: [new code_file_loader_1.CodeFileLoader(), new graphql_file_loader_1.GraphQLFileLoader(), new json_file_loader_1.JsonFileLoader(), new url_loader_1.UrlLoader()],
});
return (0, graphql_1.print)((0, graphql_1.concatAST)(sources.map(s => s.document)));
}
exports.loadSchema = loadSchema;
function minifySchema(schema) {
return schema.replace(/\s+/g, ' ').trim();
}
exports.minifySchema = minifySchema;
//# sourceMappingURL=schema.js.map