gql-generator-node
Version:
Generate queries as simple function of schema.
76 lines (69 loc) • 1.99 kB
JavaScript
/* DOCUMENT INFORMATION
- Author: Dominik Maszczyk
- Email: Skitionek@gmail.com
- Created: 2019-06-06
*/
import { MODULE_NAME } from "./constants";
/* istanbul ignore next */
export const moduleConsole = {
log: (...args) =>
console.log(`[${MODULE_NAME} log]:`, ...args),
warn: (...args) =>
console.log(`[${MODULE_NAME} warning]:`, ...args),
error: (...args) =>
console.log(`[${MODULE_NAME} error]:`, ...args)
};
/**
* Compile arguments dictionary for a field
* @param field current field object
* @param duplicateArgCounts map for deduping argument name collisions
* @param allArgsDict dictionary of all arguments
* @param path to current field
*/
export const getFieldArgsDict = (
field,
duplicateArgCounts,
allArgsDict = {},
path
) =>
field.args.reduce((o, arg) => {
const arg_name = `${path.join('_')}_${field.name}_${arg.name}`;
/* istanbul ignore next */
if (arg_name in duplicateArgCounts) {
moduleConsole.warn(`
I cannot find the case for these duplicates anymore,
please let me know if you are seeing this message.
`);
const index = duplicateArgCounts[arg_name] + 1;
duplicateArgCounts[arg_name] = index;
o[`${arg_name}${index}`] = arg;
} else /* istanbul ignore next */ if (allArgsDict[arg_name]) {
moduleConsole.warn(`
I cannot find the case for these duplicates anymore,
please let me know if you are seeing this message.
`);
duplicateArgCounts[arg_name] = 1;
o[arg_name] = arg;
} else if (!path.length) {
o[arg.name] = arg;
} else {
o[arg_name] = arg;
}
return o;
}, {});
/**
* Generate variables string
* @param dict dictionary of arguments
*/
export const getArgsToVarsStr = dict =>
Object.entries(dict)
.map(([varName, arg]) => `${arg.name}: $${varName}`)
.join(', ');
/**
* Generate types string
* @param dict dictionary of arguments
*/
export const getVarsToTypesStr = dict =>
Object.entries(dict)
.map(([varName, arg]) => `$${varName}: ${arg.type}`)
.join(', ');