@graphql-tools/external-fragment-loader
Version:
A GraphQL loader that resolves cross-package fragment dependencies from external packages
33 lines (32 loc) • 1.38 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ExternalFragmentLoader = void 0;
exports.default = externalFragmentLoader;
const graphql_1 = require("graphql");
const resolve_js_1 = require("./resolve.js");
function mergeResolvedDocuments(resolvedFiles) {
return (0, graphql_1.concatAST)(resolvedFiles.flatMap(file => file.sources.map(source => source.document)));
}
function externalFragmentLoader(_pointer, options) {
if (options.async === true) {
return (0, resolve_js_1.resolveExternalFragmentsWithSources)(options).then(mergeResolvedDocuments);
}
return mergeResolvedDocuments((0, resolve_js_1.resolveExternalFragmentsSyncWithSources)(options));
}
class ExternalFragmentLoader {
async load(_pointer, options) {
const resolvedFiles = await (0, resolve_js_1.resolveExternalFragmentsWithSources)(options);
return resolvedFiles.flatMap(file => file.sources.map(source => ({
location: file.filePath,
...source,
})));
}
loadSync(_pointer, options) {
const resolvedFiles = (0, resolve_js_1.resolveExternalFragmentsSyncWithSources)(options);
return resolvedFiles.flatMap(file => file.sources.map(source => ({
location: file.filePath,
...source,
})));
}
}
exports.ExternalFragmentLoader = ExternalFragmentLoader;