graphql-mocks
Version:
Tools for setting up graphql test resolvers
40 lines (38 loc) • 2.04 kB
JavaScript
function extractAllDependencies(context) {
var _context$pack$depende, _context$pack;
const packedDependencies = (_context$pack$depende = context === null || context === void 0 ? void 0 : (_context$pack = context.pack) === null || _context$pack === void 0 ? void 0 : _context$pack.dependencies) !== null && _context$pack$depende !== void 0 ? _context$pack$depende : {};
return packedDependencies;
}
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
function extractDependencies(context, requestedDependencies, options = {
required: true
}) {
const packedDependencies = extractAllDependencies(context);
if (!Array.isArray(requestedDependencies) || requestedDependencies.length === 0) {
return packedDependencies;
}
options = typeof options !== 'object' ? {
required: true
} : options;
options.required = 'required' in options ? options.required : true;
// eslint-disable-next-line @typescript-eslint/no-explicit-any
const extracted = {};
const missingRequiredDependencies = [];
requestedDependencies.forEach(dependencyName => {
var _options;
const dependency = packedDependencies[dependencyName];
if ((_options = options) !== null && _options !== void 0 && _options.required && dependency == null) {
missingRequiredDependencies.push(dependencyName.toString());
}
extracted[dependencyName] = dependency;
});
if (missingRequiredDependencies.length > 0) {
const missingKeys = missingRequiredDependencies.map(key => `"${key}"`).join(', ');
throw new Error(`Expected to find dependencies with keys: ${missingKeys}\n` + 'Either:\n' + ' * Add these to `dependencies` to your `GraphQLHandler` class or `pack` function\n' + ' * Use { required : false } as the third argument to `extractDependencies` and allow for these to be optional dependencies');
}
return extracted;
}
exports.extractAllDependencies = extractAllDependencies;
exports.extractDependencies = extractDependencies;
//# sourceMappingURL=extract-dependencies.js.map
;