UNPKG

@graphql-eslint/eslint-plugin

Version:
45 lines (44 loc) 1.66 kB
import { resolve } from 'path'; import debugFactory from 'debug'; import fg from 'fast-glob'; import { ModuleCache } from './cache.js'; const debug = debugFactory('graphql-eslint:operations'); const operationsCache = new ModuleCache(); const handleVirtualPath = (documents) => { const filepathMap = Object.create(null); return documents.map(source => { var _a; const location = source.location; if (['.gql', '.graphql'].some(extension => location.endsWith(extension))) { return source; } (_a = filepathMap[location]) !== null && _a !== void 0 ? _a : (filepathMap[location] = -1); const index = (filepathMap[location] += 1); return { ...source, location: resolve(location, `${index}_document.graphql`), }; }); }; export const getDocuments = (project) => { const documentsKey = project.documents; if (!documentsKey) { return []; } let siblings = operationsCache.get(documentsKey); if (!siblings) { debug('Loading operations from %o', project.documents); const documents = project.loadDocumentsSync(project.documents, { skipGraphQLImport: true, pluckConfig: project.extensions.pluckConfig, }); if (debug.enabled) { debug('Loaded %d operations', documents.length); const operationsPaths = fg.sync(project.documents, { absolute: true }); debug('Operations pointers %O', operationsPaths); } siblings = handleVirtualPath(documents); operationsCache.set(documentsKey, siblings); } return siblings; };