@graphql-inspector/commands
Version:
Plugin system for commands in GraphQL Inspector
56 lines (55 loc) • 1.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.useCommands = useCommands;
exports.createCommand = createCommand;
exports.ensureAbsolute = ensureAbsolute;
exports.parseGlobalArgs = parseGlobalArgs;
exports.mockCommand = mockCommand;
const tslib_1 = require("tslib");
const path_1 = require("path");
const yargs_1 = tslib_1.__importDefault(require("yargs"));
const helpers_1 = require("yargs/helpers");
function useCommands(api) {
return api.config.commands.map(name => loadCommand(name)(api));
}
function createCommand(factory) {
return factory;
}
function loadCommand(name) {
const mod = require(`@graphql-inspector/${name}-command`);
return mod.default || mod;
}
function ensureAbsolute(filepath, basepath = process.cwd()) {
return (0, path_1.isAbsolute)(filepath) ? filepath : (0, path_1.resolve)(basepath, filepath);
}
function parseGlobalArgs(args) {
const headers = {};
const leftHeaders = {};
const rightHeaders = {};
if (args.header) {
for (const header of args.header) {
const [name, ...values] = header.split(':');
headers[name] = values.join('');
}
}
if (args.leftHeader) {
for (const leftHeader of args.leftHeader) {
const [lname, ...lvalues] = leftHeader.split(':');
leftHeaders[lname] = lvalues.join('');
}
}
if (args.rightHeader) {
for (const rightHeader of args.rightHeader) {
const [rname, ...rvalues] = rightHeader.split(':');
rightHeaders[rname] = rvalues.join('');
}
}
if (args.require) {
for (const mod of args.require)
require(mod);
}
return { headers, leftHeaders, rightHeaders, token: args.token };
}
function mockCommand(mod, cmd) {
return (0, yargs_1.default)((0, helpers_1.hideBin)(process.argv)).command(mod).exitProcess(false).parseAsync(cmd);
}