import { FetchProjectGraphService } from './fetch-project-graph-service'; import { LocalProjectGraphService } from './local-project-graph-service'; import { MockProjectGraphService } from './mock-project-graph-service'; import { NxConsoleProjectGraphService } from './nx-console-project-graph-service'; /* eslint-disable @nx/enforce-module-boundaries */ // nx-ignore-next-line import type { ProjectGraphClientResponse, TaskGraphClientResponse, } from 'nx/src/command-line/graph/graph'; let projectGraphService: ProjectGraphService; export interface ProjectGraphService { getHash: () => Promise; getProjectGraph: (url: string) => Promise; getTaskGraph: (url: string) => Promise; setTaskInputsUrl?: (url: string) => void; getExpandedTaskInputs?: (taskId: string) => Promise>; getSourceMaps?: ( url: string ) => Promise>>; } export function getProjectGraphDataService() { if (projectGraphService === undefined) { if (window.environment === 'dev') { projectGraphService = new FetchProjectGraphService(); } else if (window.environment === 'watch') { projectGraphService = new MockProjectGraphService(); } else if (window.environment === 'nx-console') { projectGraphService = new NxConsoleProjectGraphService(); } else if (window.environment === 'release') { if (window.localMode === 'build') { projectGraphService = new LocalProjectGraphService(); } else { projectGraphService = new FetchProjectGraphService(); } } } return projectGraphService; }