UNPKG

@graphql-tools/external-fragment-loader

Version:

A GraphQL loader that resolves cross-package fragment dependencies from external packages

28 lines (27 loc) • 1.16 kB
import { concatAST } from 'graphql'; import { resolveExternalFragmentsSyncWithSources, resolveExternalFragmentsWithSources, } from './resolve.js'; function mergeResolvedDocuments(resolvedFiles) { return concatAST(resolvedFiles.flatMap(file => file.sources.map(source => source.document))); } export default function externalFragmentLoader(_pointer, options) { if (options.async === true) { return resolveExternalFragmentsWithSources(options).then(mergeResolvedDocuments); } return mergeResolvedDocuments(resolveExternalFragmentsSyncWithSources(options)); } export class ExternalFragmentLoader { async load(_pointer, options) { const resolvedFiles = await resolveExternalFragmentsWithSources(options); return resolvedFiles.flatMap(file => file.sources.map(source => ({ location: file.filePath, ...source, }))); } loadSync(_pointer, options) { const resolvedFiles = resolveExternalFragmentsSyncWithSources(options); return resolvedFiles.flatMap(file => file.sources.map(source => ({ location: file.filePath, ...source, }))); } }